You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@juddi.apache.org by al...@apache.org on 2014/01/12 17:46:23 UTC

svn commit: r1557556 - in /juddi/trunk: juddi-core/src/main/resources/ juddi-examples/more-uddi-samples/src/main/java/org/apache/juddi/samples/ juddi-examples/more-uddi-samples/src/main/resources/META-INF/

Author: alexoree
Date: Sun Jan 12 16:46:23 2014
New Revision: 1557556

URL: http://svn.apache.org/r1557556
Log:
JUDDI-717 finishing more-uddi-samples/

Removed:
    juddi/trunk/juddi-examples/more-uddi-samples/src/main/java/org/apache/juddi/samples/ClientSubscriptionCallback.java
    juddi/trunk/juddi-examples/more-uddi-samples/src/main/java/org/apache/juddi/samples/SubscriptionCallbackExample.java
Modified:
    juddi/trunk/juddi-core/src/main/resources/messages.properties
    juddi/trunk/juddi-examples/more-uddi-samples/src/main/java/org/apache/juddi/samples/UddiSubscribe.java
    juddi/trunk/juddi-examples/more-uddi-samples/src/main/resources/META-INF/simple-publish-uddi.xml

Modified: juddi/trunk/juddi-core/src/main/resources/messages.properties
URL: http://svn.apache.org/viewvc/juddi/trunk/juddi-core/src/main/resources/messages.properties?rev=1557556&r1=1557555&r2=1557556&view=diff
==============================================================================
--- juddi/trunk/juddi-core/src/main/resources/messages.properties (original)
+++ juddi/trunk/juddi-core/src/main/resources/messages.properties Sun Jan 12 16:46:23 2014
@@ -67,7 +67,7 @@ errors.Unsupported.findQualifier=Invalid
 errors.configuration.Retrieval=An error occurred attempting to retrieve configuration information
 errors.install.AlreadyInstalled=It appears that the application is already installed.  Please un-install before proceeding.
 errors.NullInput=No input was provided for this API call
-errors.keyunavailable.BadPartition=The proposed key is not within the partition defined by owning publisher. If you're tring to create a new tModel in a new partition, try creating a tModel that ends in :keyGenerator
+errors.keyunavailable.BadPartition=The proposed key is not within the partition defined by owning publisher. If you're tring to create a new tModel in a new partition, try creating a tModel that ends in :keygenerator
 errors.keyunavailable.KeyExists=The key used for the save operation already exists.  Another key must be chosen
 errors.invalidkey.NullKey=The key cannot be null
 errors.invalidkey.MalformedKey=The passed key does not conform to UDDI v3 rules

Modified: juddi/trunk/juddi-examples/more-uddi-samples/src/main/java/org/apache/juddi/samples/UddiSubscribe.java
URL: http://svn.apache.org/viewvc/juddi/trunk/juddi-examples/more-uddi-samples/src/main/java/org/apache/juddi/samples/UddiSubscribe.java?rev=1557556&r1=1557555&r2=1557556&view=diff
==============================================================================
--- juddi/trunk/juddi-examples/more-uddi-samples/src/main/java/org/apache/juddi/samples/UddiSubscribe.java (original)
+++ juddi/trunk/juddi-examples/more-uddi-samples/src/main/java/org/apache/juddi/samples/UddiSubscribe.java Sun Jan 12 16:46:23 2014
@@ -16,21 +16,19 @@
  */
 package org.apache.juddi.samples;
 
-import java.util.ArrayList;
-import java.util.GregorianCalendar;
-import java.util.List;
 import javax.xml.datatype.DatatypeFactory;
-import javax.xml.datatype.XMLGregorianCalendar;
-import javax.xml.ws.Endpoint;
-import javax.xml.ws.Holder;
+import org.apache.juddi.jaxb.PrintUDDI;
+import org.apache.juddi.v3.client.UDDIConstants;
+import org.apache.juddi.v3.client.config.UDDIClerk;
 import org.apache.juddi.v3.client.config.UDDIClient;
-import org.apache.juddi.v3.client.config.UDDIClientContainer;
+import org.apache.juddi.v3.client.subscription.ISubscriptionCallback;
+import org.apache.juddi.v3.client.subscription.SubscriptionCallbackListener;
 import org.apache.juddi.v3.client.transport.Transport;
 import org.apache.juddi.v3_service.JUDDIApiPortType;
 import org.uddi.api_v3.*;
-import org.uddi.sub_v3.DeleteSubscription;
 import org.uddi.sub_v3.Subscription;
 import org.uddi.sub_v3.SubscriptionFilter;
+import org.uddi.sub_v3.SubscriptionResultsList;
 import org.uddi.v3_service.UDDIInquiryPortType;
 import org.uddi.v3_service.UDDIPublicationPortType;
 import org.uddi.v3_service.UDDISecurityPortType;
@@ -42,194 +40,139 @@ import org.uddi.v3_service.UDDISubscript
  *
  * @author <a href="mailto:alexoree@apache.org">Alex O'Ree</a>
  */
-public class UddiSubscribe {
+public class UddiSubscribe implements ISubscriptionCallback, Runnable {
 
-    private static UDDISecurityPortType security = null;
-    private static JUDDIApiPortType juddiApi = null;
-    private static UDDIPublicationPortType publish = null;
-    private static UDDIInquiryPortType uddiInquiryService = null;
-    private static UDDISubscriptionPortType uddiSubscriptionService = null;
-    boolean callbackRecieved = false;
-
-    public UddiSubscribe() {
-        try {
-            // create a manager and read the config in the archive; 
-            // you can use your config file name
-            UDDIClient clerkManager = new UDDIClient("META-INF/simple-publish-uddi.xml");
-            Transport transport = clerkManager.getTransport();
-            // Now you create a reference to the UDDI API
-            security = transport.getUDDISecurityService();
-            juddiApi = transport.getJUDDIApiService();
-            publish = transport.getUDDIPublishService();
-            uddiInquiryService = transport.getUDDIInquiryService();
-            uddiSubscriptionService = transport.getUDDISubscriptionService();
-        } catch (Exception e) {
-            e.printStackTrace();
-        }
-    }
-
-    public static void main(String args[]) throws Exception {
-        UddiSubscribe sp = new UddiSubscribe();
-        sp.SetupAndRegisterCallback();
-    }
-
-    private void SetupAndRegisterCallback() throws Exception {
-        String url = "http://localhost:7777/uddi_subscription_back";
-        Endpoint ep = Endpoint.publish(url, new ClientSubscriptionCallback(this));
-
-
-        DatatypeFactory df = DatatypeFactory.newInstance();
-        GregorianCalendar gcal = new GregorianCalendar();
-        gcal.setTimeInMillis(System.currentTimeMillis());
-        XMLGregorianCalendar xcal = df.newXMLGregorianCalendar(gcal);
-
-        //?? note, you won't get subscription updates if you own the entity, at least with juddi
-
-
-        //in this case, the user "root" is subscribing to a business entity published by the user "uddi"
-        //"uddi" then updates the item and then logically "root" should be notified
-        //before this happens "root" needs to publish a business, service and binding template that is used for the 
-        //subscription callback
-
-        /*
-         * so the order of operation is
-         * 1) uddi publisher's an entity 
-         * 2) root wants updates on uddi's entity
-         * 3) root starts a subscription listener service to process updates
-         * 4) root creates a business and service with a bindingtemplate with the access point value = the the subscription listener's address
-         * 5) root creates a subscription
-         * 6) uddi updates the entity
-         * 7) root's sub listener is notified (hopefully)
-         * 
-         */
-
-
-        GetAuthToken getAuthTokenRoot = new GetAuthToken();
-        getAuthTokenRoot.setUserID("root");
-        getAuthTokenRoot.setCred("root");
-
-        // Making API call that retrieves the authentication token for the 'root' user.
-        AuthToken rootAuthToken = security.getAuthToken(getAuthTokenRoot);
-        System.out.println("root AUTHTOKEN = " + rootAuthToken.getAuthInfo());
-
-
-        getAuthTokenRoot = new GetAuthToken();
-        getAuthTokenRoot.setUserID("uddi");
-        getAuthTokenRoot.setCred("uddi");
-
-        // Making API call that retrieves the authentication token for the 'root' user.
-        AuthToken uddiAuthToken = security.getAuthToken(getAuthTokenRoot);
-        System.out.println("uddi AUTHTOKEN = " + rootAuthToken.getAuthInfo());
-
-        //first publish a business user the user uddi
-        BusinessEntity myBusEntity = new BusinessEntity();
-        Name myBusName = new Name();
-        myBusName.setLang("en");
-        myBusName.setValue("User UDDI's Business" + " " + xcal.toString());
-        myBusEntity.getName().add(myBusName);
-        SaveBusiness sb = new SaveBusiness();
-        sb.getBusinessEntity().add(myBusEntity);
-        sb.setAuthInfo(uddiAuthToken.getAuthInfo());
-        BusinessDetail bd = publish.saveBusiness(sb);
-
-        String keyRootSubscribesTo = bd.getBusinessEntity().get(0).getBusinessKey();
-        System.out.println("UDDI's business saved as biz key " + keyRootSubscribesTo);
-        BusinessEntity uddisBusiness = bd.getBusinessEntity().get(0);
-
-        //reset
-        List<Subscription> subscriptions = uddiSubscriptionService.getSubscriptions(rootAuthToken.getAuthInfo());
-        DeleteSubscription ds = new DeleteSubscription();
-        ds.setAuthInfo(rootAuthToken.getAuthInfo());
-        for (int i = 0; i < subscriptions.size(); i++) {
-            ds.getSubscriptionKey().add(subscriptions.get(i).getSubscriptionKey());
-        }
-        if (!ds.getSubscriptionKey().isEmpty()) {
-            System.out.println("removing " + ds.getSubscriptionKey().size() + " old subscriptions");
-            uddiSubscriptionService.deleteSubscription(ds);
-        }
-
-        // Creating the parent business entity that will contain our service.
-        myBusEntity = new BusinessEntity();
-        myBusName = new Name();
-        myBusName.setLang("en");
-        myBusName.setValue("My Business Dept 1" + " " + xcal.toString());
-        myBusEntity.getName().add(myBusName);
-        myBusEntity.setBusinessServices(new BusinessServices());
-        BusinessService bs = new BusinessService();
-        bs.getName().add(new Name());
-        bs.getName().get(0).setValue("my callback endpoint");
-
-        bs.setBindingTemplates(new BindingTemplates());
-        BindingTemplate bt = new BindingTemplate();
-        //bt.setCategoryBag(new CategoryBag());
-        //   KeyedReference kr = new KeyedReference();
-        //         kr.setTModelKey(UDDIConstants.);
-        // bt.getCategoryBag().getKeyedReference().add(kr);
-        bt.setAccessPoint(new AccessPoint());
-        bt.getAccessPoint().setValue(url);
-        bt.getAccessPoint().setUseType("endPoint");
-        //Added per Kurt
-        TModelInstanceInfo instanceInfo = new TModelInstanceInfo();
-        instanceInfo.setTModelKey("uddi:uddi.org:transport:http");
-        bt.setTModelInstanceDetails(new TModelInstanceDetails());
-        bt.getTModelInstanceDetails().getTModelInstanceInfo().add(instanceInfo);
-
-        bt = UDDIClient.addSOAPtModels(bt);
-        bs.getBindingTemplates().getBindingTemplate().add(bt);
-
-
-        myBusEntity.getBusinessServices().getBusinessService().add(bs);
-        // Adding the business entity to the "save" structure, using our publisher's authentication info and saving away.
-        sb = new SaveBusiness();
-        sb.getBusinessEntity().add(myBusEntity);
-        sb.setAuthInfo(rootAuthToken.getAuthInfo());
-        bd = publish.saveBusiness(sb);
-
-        String callbackBindingTemplate = bd.getBusinessEntity().get(0).getBusinessServices().getBusinessService().get(0).getBindingTemplates().getBindingTemplate().get(0).getBindingKey();
-        System.out.println("myBusiness key:  " + bd.getBusinessEntity().get(0).getBusinessKey());
-        System.out.println("callback binding template key:  " + callbackBindingTemplate);
-
-        System.out.println("i'll stay awake until someone kills me");
-
-        Holder<List<Subscription>> subscription = new Holder<List<Subscription>>();
-        subscription.value = new ArrayList<Subscription>();
-        Subscription sub = new Subscription();
-
-        //this is required
-        sub.setBindingKey(callbackBindingTemplate);
-
-        sub.setBrief(true);
-        sub.setNotificationInterval(df.newDuration(0));
-        sub.setSubscriptionFilter(new SubscriptionFilter());
-        sub.getSubscriptionFilter().setGetBusinessDetail(new GetBusinessDetail());
-        sub.getSubscriptionFilter().getGetBusinessDetail().setAuthInfo(rootAuthToken.getAuthInfo());
-        sub.getSubscriptionFilter().getGetBusinessDetail().getBusinessKey().add(keyRootSubscribesTo);
-        subscription.value.add(sub);
-        uddiSubscriptionService.saveSubscription(rootAuthToken.getAuthInfo(), subscription);
-
-
-        //ok now we're ready to mess around with the user's "uddi" business
-        //in this case, we're just setting the lang
-        uddisBusiness.getName().get(0).setLang("en");
-        sb = new SaveBusiness();
-        sb.setAuthInfo(uddiAuthToken.getAuthInfo());
-        sb.getBusinessEntity().add(uddisBusiness);
-        publish.saveBusiness(sb);
-
-        long timer = 310000;
-        while (timer > 0 && !callbackRecieved) {
-            Thread.sleep(5000);
-            timer = timer - 5000;
-        }
-        ep.stop();
-        if (callbackRecieved) {
-            System.out.println("Callback recieved successfully");
-            System.exit(0);
-        } else {
-            System.out.println("Callback NOT recieved!");
-            System.exit(1);
+        private static UDDISecurityPortType security = null;
+        private static JUDDIApiPortType juddiApi = null;
+        private static UDDIPublicationPortType publish = null;
+        private static UDDIInquiryPortType uddiInquiryService = null;
+        private static UDDISubscriptionPortType uddiSubscriptionService = null;
+        boolean callbackRecieved = false;
+        private UDDIClerk clerk = null;
+        private UDDIClient client = null;
+
+        public UddiSubscribe() {
+                try {
+                        // create a manager and read the config in the archive; 
+                        // you can use your config file name
+                        client = new UDDIClient("META-INF/simple-publish-uddi.xml");
+                        clerk = client.getClerk("default");
+                        Transport transport = client.getTransport();
+                        // Now you create a reference to the UDDI API
+                        security = transport.getUDDISecurityService();
+                        juddiApi = transport.getJUDDIApiService();
+                        publish = transport.getUDDIPublishService();
+                        uddiInquiryService = transport.getUDDIInquiryService();
+                        uddiSubscriptionService = transport.getUDDISubscriptionService();
+                } catch (Exception e) {
+                        e.printStackTrace();
+                }
         }
 
-        //TODO clean up all the crap we just made
-    }
+        public static void main(String args[]) throws Exception {
+                UddiSubscribe sp = new UddiSubscribe();
+                sp.Fire();
+        }
+
+        public void Fire() throws Exception {
+
+                TModel createKeyGenator = UDDIClerk.createKeyGenator("somebusiness", "A test key domain SubscriptionCallbackTest1", "SubscriptionCallbackTest1");
+
+                clerk.register(createKeyGenator);
+                System.out.println("Registered tModel keygen: " + createKeyGenator.getTModelKey());
+
+                //setup the business to attach to
+                BusinessEntity be = new BusinessEntity();
+                be.setBusinessKey("uddi:somebusiness:somebusinesskey");
+                be.getName().add(new Name("somebusiness SubscriptionCallbackTest1", null));
+                be.setBusinessServices(new BusinessServices());
+                BusinessService bs = new BusinessService();
+                bs.setBusinessKey("uddi:somebusiness:somebusinesskey");
+                bs.setServiceKey("uddi:somebusiness:someservicekey");
+                bs.getName().add(new Name("service SubscriptionCallbackTest1", null));
+                be.getBusinessServices().getBusinessService().add(bs);
+                BusinessEntity register = clerk.register(be);
+                System.out.println("Registered business keygen: " + register.getBusinessKey());
+
+                //start up our listener
+                BindingTemplate start = SubscriptionCallbackListener.start(client, "default");
+
+                //register for callbacks
+                SubscriptionCallbackListener.registerCallback(this);
+
+                Subscription sub = new Subscription();
+                sub.setNotificationInterval(DatatypeFactory.newInstance().newDuration(1000));
+                sub.setBindingKey(start.getBindingKey());
+                sub.setSubscriptionFilter(new SubscriptionFilter());
+                sub.getSubscriptionFilter().setFindBusiness(new FindBusiness());
+                sub.getSubscriptionFilter().getFindBusiness().setFindQualifiers(new FindQualifiers());
+                sub.getSubscriptionFilter().getFindBusiness().getFindQualifiers().getFindQualifier().add(UDDIConstants.APPROXIMATE_MATCH);
+                sub.getSubscriptionFilter().getFindBusiness().getName().add(new Name(UDDIConstants.WILDCARD, null));
+
+                Subscription subscriptionBiz = clerk.register(sub, clerk.getUDDINode().getApiNode());
+
+                System.out.println("Registered FindBusiness subscription key: " + (subscriptionBiz.getSubscriptionKey()) + " bindingkey: " + subscriptionBiz.getBindingKey());
+
+                sub = new Subscription();
+                sub.setNotificationInterval(DatatypeFactory.newInstance().newDuration(1000));
+                sub.setBindingKey(start.getBindingKey());
+                sub.setSubscriptionFilter(new SubscriptionFilter());
+                sub.getSubscriptionFilter().setFindService(new FindService());
+                sub.getSubscriptionFilter().getFindService().setFindQualifiers(new FindQualifiers());
+                sub.getSubscriptionFilter().getFindService().getFindQualifiers().getFindQualifier().add(UDDIConstants.APPROXIMATE_MATCH);
+                sub.getSubscriptionFilter().getFindService().getName().add(new Name(UDDIConstants.WILDCARD, null));
+
+                Subscription subscriptionSvc = clerk.register(sub, clerk.getUDDINode().getApiNode());
+
+                System.out.println("Registered FindService subscription key: " + (subscriptionSvc.getSubscriptionKey()) + " bindingkey: " + subscriptionSvc.getBindingKey());
+
+                sub = new Subscription();
+                sub.setNotificationInterval(DatatypeFactory.newInstance().newDuration(1000));
+                sub.setBindingKey(start.getBindingKey());
+                sub.setSubscriptionFilter(new SubscriptionFilter());
+                sub.getSubscriptionFilter().setFindTModel(new FindTModel());
+                sub.getSubscriptionFilter().getFindTModel().setFindQualifiers(new FindQualifiers());
+                sub.getSubscriptionFilter().getFindTModel().getFindQualifiers().getFindQualifier().add(UDDIConstants.APPROXIMATE_MATCH);
+                sub.getSubscriptionFilter().getFindTModel().setName(new Name(UDDIConstants.WILDCARD, null));
+
+                Subscription subscriptionTM = clerk.register(sub, clerk.getUDDINode().getApiNode());
+
+                System.out.println("Registered FindTModel subscription key: " + (subscriptionTM.getSubscriptionKey()) + " bindingkey: " + subscriptionTM.getBindingKey());
+
+                System.out.println("Waiting for callbacks. Now would be a good time to launch either another program or juddi-gui to make some changes. Press any key to stop!");
+                //Thread hook = new Thread(this);
+              //  Runtime.getRuntime().addShutdownHook(hook);
+                
+                        System.in.read();
+                
+                SubscriptionCallbackListener.stop(client, "default", start.getBindingKey());
+                clerk.unRegisterSubscription(subscriptionBiz.getSubscriptionKey());
+                clerk.unRegisterSubscription(subscriptionSvc.getSubscriptionKey());
+                clerk.unRegisterSubscription(subscriptionTM.getSubscriptionKey());
+
+                clerk.unRegisterTModel(createKeyGenator.getTModelKey());
+
+                clerk.unRegisterBusiness("uddi:somebusiness:somebusinesskey");
+
+                //Runtime.getRuntime().removeShutdownHook(hook);
+        }
+
+        private boolean running = true;
+        PrintUDDI<SubscriptionResultsList> p = new PrintUDDI<SubscriptionResultsList>();
+
+        @Override
+        public void HandleCallback(SubscriptionResultsList body) {
+                System.out.println("Callback received!");
+                System.out.println(p.print(body));
+        }
+
+        @Override
+        public void NotifyEndpointStopped() {
+                System.out.println("The endpoint was stopped!");
+        }
+
+        @Override
+        public void run() {
+                running = false;
+        }
 }

Modified: juddi/trunk/juddi-examples/more-uddi-samples/src/main/resources/META-INF/simple-publish-uddi.xml
URL: http://svn.apache.org/viewvc/juddi/trunk/juddi-examples/more-uddi-samples/src/main/resources/META-INF/simple-publish-uddi.xml?rev=1557556&r1=1557555&r2=1557556&view=diff
==============================================================================
--- juddi/trunk/juddi-examples/more-uddi-samples/src/main/resources/META-INF/simple-publish-uddi.xml (original)
+++ juddi/trunk/juddi-examples/more-uddi-samples/src/main/resources/META-INF/simple-publish-uddi.xml Sun Jan 12 16:46:23 2014
@@ -67,10 +67,10 @@
                 </signature>
         
                 <subscriptionCallbacks>
-                        <keyDomain>uddi:org.apache.juddi:test</keyDomain>
-                        <listenUrl>http://localhost:4789/callback</listenUrl>
+                        <keyDomain>uddi:somebusiness</keyDomain>
+                        <listenUrl></listenUrl> <!-- this is to override the generated values -->
                         <autoRegisterBindingTemplate>true</autoRegisterBindingTemplate>
-                        <autoRegisterBusinessServiceKey>uddi:org.apache.juddi:test:callbacktest</autoRegisterBusinessServiceKey>
+                        <autoRegisterBusinessServiceKey>uddi:somebusiness:someservicekey</autoRegisterBusinessServiceKey>
                         <signatureBehavior>DoNothing</signatureBehavior>
                 </subscriptionCallbacks>
         </client>



---------------------------------------------------------------------
To unsubscribe, e-mail: commits-unsubscribe@juddi.apache.org
For additional commands, e-mail: commits-help@juddi.apache.org