Index: simple-browser/pom.xml
===================================================================
--- simple-browser/pom.xml (revision 0)
+++ simple-browser/pom.xml (working copy)
@@ -0,0 +1,66 @@
+
+ 4.0.0
+ org.apache.juddi
+ simple-browse
+ Simple Browser Example
+ 0.0.1-SNAPSHOT
+ Demonstrates the steps taken to Browse a UDDI directory
+
+
+
+
+
+ org.apache.maven.plugins
+ maven-compiler-plugin
+
+ 1.5
+ 1.5
+
+
+
+
+
+
+ org.codehaus.mojo
+ exec-maven-plugin
+ 1.1.1
+
+
+ test
+
+ java
+
+
+ org.apache.juddi.example.browse.SimpleBrowse
+
+
+
+
+
+
+
+
+
+
+ org.apache.juddi
+ uddi-ws
+ 3.1.5-SNAPSHOT
+
+
+ org.apache.juddi
+ juddi-core
+ 3.1.5-SNAPSHOT
+
+
+ org.apache.juddi
+ juddi-client
+ 3.1.5-SNAPSHOT
+
+
+
+
+
Index: simple-browser/README.txt
===================================================================
--- simple-browser/README.txt (revision 0)
+++ simple-browser/README.txt (working copy)
@@ -0,0 +1,18 @@
+This example contains one class: the SimplePublish.java. When
+executed it will obtain an AuthToken and use it to publish
+a Publisher, a Business and a Service.
+
+The easiest way to run execute the main of this class in from
+your IDE. If your IDE has maven integration it should set up
+the project class path for you, and you can simple run it from
+there.
+
+You should see the following output being written to the console:
+
+root AUTHTOKEN = authtoken:0494e382-1ad3-4c52-8806-ae70a0ed37ad
+myPub AUTHTOKEN = authtoken:bf973e5f-7361-4c57-92f7-7b499b886b6d
+myBusiness key: uddi:juddi.apache.org:6f3e4e62-e483-48ff-a1b3-6855310505c6
+myService key: uddi:juddi.apache.org:549a9580-cd7b-4969-9b77-527ab9f8f261
+
+However since the keys are being generated in this case your keys will differ.
+
Index: simple-browser/src/main/java/org/apache/juddi/example/browse/SimpleBrowse.java
===================================================================
--- simple-browser/src/main/java/org/apache/juddi/example/browse/SimpleBrowse.java (revision 0)
+++ simple-browser/src/main/java/org/apache/juddi/example/browse/SimpleBrowse.java (working copy)
@@ -0,0 +1,376 @@
+/*
+ * Copyright 2001-2010 The Apache Software Foundation.
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ *
+ */
+package org.apache.juddi.example.browse;
+
+
+import java.util.List;
+import java.util.Properties;
+import org.apache.juddi.ClassUtil;
+import org.apache.juddi.query.util.FindQualifiers;
+import org.apache.juddi.v3.client.config.UDDIClientContainer;
+import org.apache.juddi.v3.client.transport.Transport;
+import org.apache.juddi.v3_service.JUDDIApiPortType;
+import org.uddi.api_v3.AuthToken;
+import org.uddi.api_v3.BindingTemplates;
+import org.uddi.api_v3.BusinessDetail;
+import org.uddi.api_v3.BusinessInfos;
+import org.uddi.api_v3.BusinessList;
+import org.uddi.api_v3.BusinessService;
+import org.uddi.api_v3.CategoryBag;
+import org.uddi.api_v3.Contacts;
+import org.uddi.api_v3.Description;
+import org.uddi.api_v3.FindBusiness;
+import org.uddi.api_v3.GetAuthToken;
+import org.uddi.api_v3.GetBusinessDetail;
+import org.uddi.api_v3.GetServiceDetail;
+import org.uddi.api_v3.KeyedReference;
+import org.uddi.api_v3.Name;
+import org.uddi.api_v3.ServiceDetail;
+import org.uddi.api_v3.ServiceInfos;
+import org.uddi.v3_service.UDDIInquiryPortType;
+import org.uddi.v3_service.UDDISecurityPortType;
+
+/**
+ * A Simple UDDI Browser that dumps basic information to console
+ *
+ * @author Alex O'Ree
+ */
+public class SimpleBrowse {
+
+ private static UDDISecurityPortType security = null;
+ private static UDDIInquiryPortType inquiry = null;
+
+ /**
+ * This sets up the ws proxies using uddi.xml in META-INF
+ */
+ public SimpleBrowse() {
+ try {
+ String clazz = UDDIClientContainer.getUDDIClerkManager(null).
+ getClientConfig().getUDDINode("default").getProxyTransport();
+ Class> transportClass = ClassUtil.forName(clazz, Transport.class);
+ if (transportClass != null) {
+ Transport transport = (Transport) transportClass.
+ getConstructor(String.class).newInstance("default");
+
+ security = transport.getUDDISecurityService();
+ inquiry = transport.getUDDIInquiryService();
+ }
+ } catch (Exception e) {
+ e.printStackTrace();
+ }
+ }
+
+ private static void DisplayHelp() {
+ //TODO
+ }
+
+ /**
+ * Main entry point
+ *
+ * @param args
+ */
+ public static void main(String args[]) {
+ if (args.length == 1 && args[0].equalsIgnoreCase("help")) {
+ DisplayHelp();
+ return;
+ }
+ SimpleBrowse sp = new SimpleBrowse();
+ sp.Browse(args);
+ }
+
+ public void Browse(String[] args) {
+ try {
+ Properties prop = ParseArgs(args);
+ if (prop.containsKey("AuthStyle")) {
+ //TODO, determine a way to pass parameters from the command line, hardcoded for now
+ //UDDI Token
+ //HTTP Username/Password (basic or digest)
+ //HTTP Client Cert
+ }
+
+ String token = GetAuthKey("uddi", "uddi", AuthStyle.UDDI_AUTH);
+ BusinessList findBusiness = GetBusinessList(token);
+ PrintBusinessInfo(findBusiness.getBusinessInfos());
+ PrintBusinessDetails(findBusiness.getBusinessInfos(), token);
+ PrintServiceDetailsByBusiness(findBusiness.getBusinessInfos(), token);
+
+ } catch (Exception e) {
+ e.printStackTrace();
+ }
+ }
+
+ /**
+ * Find all of the registered businesses. This list may be filtered based on
+ * access control rules
+ *
+ * @param token
+ * @return
+ * @throws Exception
+ */
+ private BusinessList GetBusinessList(String token) throws Exception {
+ FindBusiness fb = new FindBusiness();
+ fb.setAuthInfo(token);
+ org.uddi.api_v3.FindQualifiers fq = new org.uddi.api_v3.FindQualifiers();
+ fq.getFindQualifier().add(FindQualifiers.APPROXIMATE_MATCH);
+
+ fb.setFindQualifiers(fq);
+ Name searchname = new Name();
+ searchname.setValue(org.apache.juddi.query.util.DynamicQuery.WILDCARD);
+ fb.getName().add(searchname);
+ BusinessList findBusiness = inquiry.findBusiness(fb);
+ return findBusiness;
+
+ }
+
+ /**
+ * Converts category bags of tmodels to a readable string
+ * @param categoryBag
+ * @return
+ */
+ private String CatBagToString(CategoryBag categoryBag) {
+ StringBuilder sb = new StringBuilder();
+ if (categoryBag == null) {
+ return "no data";
+ }
+ for (int i = 0; i < categoryBag.getKeyedReference().size(); i++) {
+ sb.append(KeyedReferenceToString(categoryBag.getKeyedReference().get(i)));
+ }
+ for (int i = 0; i < categoryBag.getKeyedReferenceGroup().size(); i++) {
+ sb.append("Key Ref Grp: TModelKey=");
+ for (int k = 0; k < categoryBag.getKeyedReferenceGroup().get(i).getKeyedReference().size(); k++) {
+ sb.append(KeyedReferenceToString(categoryBag.getKeyedReferenceGroup().get(i).getKeyedReference().get(k)));
+ }
+ }
+ return sb.toString();
+ }
+
+
+ private String KeyedReferenceToString(KeyedReference item) {
+ StringBuilder sb = new StringBuilder();
+ sb.append("Key Ref: Name=").
+ append(item.getKeyName()).
+ append(" Value=").
+ append(item.getKeyValue()).
+ append(" tModel=").
+ append(item.getTModelKey()).
+ append(System.getProperty("line.separator"));
+ return sb.toString();
+ }
+
+
+ private void PrintContacts(Contacts contacts) {
+ if (contacts == null) {
+ return;
+ }
+ for (int i = 0; i < contacts.getContact().size(); i++) {
+ System.out.println("Contact " + i + " type:" + contacts.getContact().get(i).getUseType());
+ for (int k = 0; k < contacts.getContact().get(i).getPersonName().size(); k++) {
+ System.out.println("Name: " + contacts.getContact().get(i).getPersonName().get(k).getValue());
+ }
+ for (int k = 0; k < contacts.getContact().get(i).getEmail().size(); k++) {
+ System.out.println("Email: " + contacts.getContact().get(i).getEmail().get(k).getValue());
+ }
+ for (int k = 0; k < contacts.getContact().get(i).getAddress().size(); k++) {
+ System.out.println("Address sort code " + contacts.getContact().get(i).getAddress().get(k).getSortCode());
+ System.out.println("Address use type " + contacts.getContact().get(i).getAddress().get(k).getUseType());
+ System.out.println("Address tmodel key " + contacts.getContact().get(i).getAddress().get(k).getTModelKey());
+ for (int x = 0; x < contacts.getContact().get(i).getAddress().get(k).getAddressLine().size(); x++) {
+ System.out.println("Address line value " + contacts.getContact().get(i).getAddress().get(k).getAddressLine().get(x).getValue());
+ System.out.println("Address line key name " + contacts.getContact().get(i).getAddress().get(k).getAddressLine().get(x).getKeyName());
+ System.out.println("Address line key value " + contacts.getContact().get(i).getAddress().get(k).getAddressLine().get(x).getKeyValue());
+ }
+ }
+ for (int k = 0; k < contacts.getContact().get(i).getDescription().size(); k++) {
+ System.out.println("Desc: " + contacts.getContact().get(i).getDescription().get(k).getValue());
+ }
+ for (int k = 0; k < contacts.getContact().get(i).getPhone().size(); k++) {
+ System.out.println("Phone: " + contacts.getContact().get(i).getPhone().get(k).getValue());
+ }
+ }
+
+ }
+
+ private void PrintServiceDetail(BusinessService get) {
+ if (get == null) {
+ return;
+ }
+ System.out.println("Name " + ListToString(get.getName()));
+ System.out.println("Desc " + ListToDescString(get.getDescription()));
+ System.out.println("Key " + (get.getServiceKey()));
+ System.out.println("Cat bag " + CatBagToString(get.getCategoryBag()));
+ if (!get.getSignature().isEmpty()) {
+ System.out.println("Item is digitally signed");
+ } else {
+ System.out.println("Item is not digitally signed");
+ }
+ PrintBindingTemplates(get.getBindingTemplates());
+ }
+
+ /**
+ * This function is useful for translating UDDI's somewhat complex data format to something that is more useful.
+ * @param bindingTemplates
+ */
+ private void PrintBindingTemplates(BindingTemplates bindingTemplates) {
+ if (bindingTemplates == null) {
+ return;
+ }
+ for (int i = 0; i < bindingTemplates.getBindingTemplate().size(); i++) {
+ System.out.println("Binding Key: " + bindingTemplates.getBindingTemplate().get(i).getBindingKey());
+ //TODO The UDDI spec is kind of strange at this point.
+ //An access point could be a URL, a reference to another UDDI binding key, a hosting redirector (which is
+ //esscentially a pointer to another UDDI registry) or a WSDL Deployment
+ //From an end client's perspective, all you really want is the endpoint.
+
+ //So if you have a wsdlDeployment useType, fetch the wsdl and parse for the invocation URL
+ //If its hosting director, you'll have to fetch that data from uddi recursively until the leaf node is found
+ //Consult the UDDI specification for more information
+
+ if (bindingTemplates.getBindingTemplate().get(i).getAccessPoint() != null) {
+ System.out.println("Access Point: " + bindingTemplates.getBindingTemplate().get(i).getAccessPoint().getValue() + " type " + bindingTemplates.getBindingTemplate().get(i).getAccessPoint().getUseType());
+ }
+
+ }
+ }
+
+ private enum AuthStyle {
+
+ HTTP_BASIC,
+ HTTP_DIGEST,
+ HTTP_NTLM,
+ UDDI_AUTH,
+ HTTP_CLIENT_CERT
+ }
+
+ /**
+ * Gets a UDDI style auth token, otherwise, appends credentials to the ws
+ * proxies (not yet implemented)
+ *
+ * @param username
+ * @param password
+ * @param style
+ * @return
+ */
+ private String GetAuthKey(String username, String password, AuthStyle style) {
+ try {
+
+ GetAuthToken getAuthTokenRoot = new GetAuthToken();
+ getAuthTokenRoot.setUserID(username);
+ getAuthTokenRoot.setCred(password);
+
+ // Making API call that retrieves the authentication token for the 'root' user.
+ AuthToken rootAuthToken = security.getAuthToken(getAuthTokenRoot);
+ System.out.println("root AUTHTOKEN = " + rootAuthToken.getAuthInfo());
+ return rootAuthToken.getAuthInfo();
+ } catch (Exception ex) {
+ System.out.println("Could not authenticate with the provided credentials " + ex.getMessage());
+ }
+ return null;
+ }
+
+ /**
+ * Converts command line args into a simple property structure
+ *
+ * @param args
+ * @return
+ */
+ private Properties ParseArgs(String[] args) {
+
+ Properties p = new Properties();
+ if (args == null) {
+ return p;
+ }
+ for (int i = 0; i < args.length; i++) {
+ if (args[i] != null && args[i].length() >= 3) {
+ p.put(args[i].split("=")[0], args[i].split("=")[1]);
+ }
+ }
+ return p;
+ }
+
+ private void PrintBusinessInfo(BusinessInfos businessInfos) {
+ if (businessInfos == null) {
+ System.out.println("No data returned");
+ } else {
+ for (int i = 0; i < businessInfos.getBusinessInfo().size(); i++) {
+ System.out.println("===============================================");
+ System.out.println("Business Key: " + businessInfos.getBusinessInfo().get(i).getBusinessKey());
+ System.out.println("Name: " + ListToString(businessInfos.getBusinessInfo().get(i).getName()));
+
+ System.out.println("Name: " + ListToDescString(businessInfos.getBusinessInfo().get(i).getDescription()));
+ System.out.println("Services:");
+ PrintServiceInfo(businessInfos.getBusinessInfo().get(i).getServiceInfos());
+ }
+ }
+ }
+
+ private String ListToString(List name) {
+ StringBuilder sb = new StringBuilder();
+ for (int i = 0; i < name.size(); i++) {
+ sb.append(name.get(i).getValue()).append(" ");
+ }
+ return sb.toString();
+ }
+
+ private String ListToDescString(List name) {
+ StringBuilder sb = new StringBuilder();
+ for (int i = 0; i < name.size(); i++) {
+ sb.append(name.get(i).getValue()).append(" ");
+ }
+ return sb.toString();
+ }
+
+ private void PrintServiceInfo(ServiceInfos serviceInfos) {
+ for (int i = 0; i < serviceInfos.getServiceInfo().size(); i++) {
+ System.out.println("-------------------------------------------");
+ System.out.println("Service Key: " + serviceInfos.getServiceInfo().get(i).getServiceKey());
+ System.out.println("Owning Business Key: " + serviceInfos.getServiceInfo().get(i).getBusinessKey());
+ System.out.println("Name: " + ListToString(serviceInfos.getServiceInfo().get(i).getName()));
+ }
+ }
+
+ private void PrintBusinessDetails(BusinessInfos businessInfos, String token) throws Exception {
+ GetBusinessDetail gbd = new GetBusinessDetail();
+ gbd.setAuthInfo(token);
+ for (int i = 0; i < businessInfos.getBusinessInfo().size(); i++) {
+ gbd.getBusinessKey().add(businessInfos.getBusinessInfo().get(i).getBusinessKey());
+ }
+ BusinessDetail businessDetail = inquiry.getBusinessDetail(gbd);
+ for (int i = 0; i < businessDetail.getBusinessEntity().size(); i++) {
+ System.out.println("Business Detail - key: " + businessDetail.getBusinessEntity().get(i).getBusinessKey());
+ System.out.println("Name: " + ListToString(businessDetail.getBusinessEntity().get(i).getName()));
+ System.out.println("CategoryBag: " + CatBagToString(businessDetail.getBusinessEntity().get(i).getCategoryBag()));
+ PrintContacts(businessDetail.getBusinessEntity().get(i).getContacts());
+ }
+ }
+
+ private void PrintServiceDetailsByBusiness(BusinessInfos businessInfos, String token) throws Exception {
+ for (int i = 0; i < businessInfos.getBusinessInfo().size(); i++) {
+ GetServiceDetail gsd = new GetServiceDetail();
+ for (int k = 0; k < businessInfos.getBusinessInfo().get(i).getServiceInfos().getServiceInfo().size(); k++) {
+ gsd.getServiceKey().add(businessInfos.getBusinessInfo().get(i).getServiceInfos().getServiceInfo().get(k).getServiceKey());
+ }
+ gsd.setAuthInfo(token);
+ System.out.println("Fetching data for business " + businessInfos.getBusinessInfo().get(i).getBusinessKey());
+ ServiceDetail serviceDetail = inquiry.getServiceDetail(gsd);
+ for (int k = 0; k < serviceDetail.getBusinessService().size(); k++) {
+ PrintServiceDetail(serviceDetail.getBusinessService().get(k));
+ }
+ System.out.println("................");
+
+ }
+ }
+}
Index: simple-browser/src/main/resources/META-INF/uddi.xml
===================================================================
--- simple-browser/src/main/resources/META-INF/uddi.xml (revision 0)
+++ simple-browser/src/main/resources/META-INF/uddi.xml (working copy)
@@ -0,0 +1,27 @@
+
+
+
+ 5000
+
+
+
+
+ default
+
+
+
+
+ Main jUDDI node
+
+ org.apache.juddi.v3.client.transport.JAXWSTransport
+ http://${serverName}:${serverPort}/juddiv3/services/custody-transfer
+ http://${serverName}:${serverPort}/juddiv3/services/inquiry
+ http://${serverName}:${serverPort}/juddiv3/services/publish
+ http://${serverName}:${serverPort}/juddiv3/services/security
+ http://${serverName}:${serverPort}/juddiv3/services/subscription
+ http://${serverName}:${serverPort}/juddiv3/services/subscription-listener
+ http://${serverName}:${serverPort}/juddiv3/services/juddi-api
+
+
+
+