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