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 2015/03/27 12:40:36 UTC

[2/5] juddi git commit: JUDDI-931 CLI client

http://git-wip-us.apache.org/repos/asf/juddi/blob/9dafe4e8/juddi-client-cli/src/main/java/org/apache/juddi/v3/client/cli/UddiDigitalSignatureTmodel.java
----------------------------------------------------------------------
diff --git a/juddi-client-cli/src/main/java/org/apache/juddi/v3/client/cli/UddiDigitalSignatureTmodel.java b/juddi-client-cli/src/main/java/org/apache/juddi/v3/client/cli/UddiDigitalSignatureTmodel.java
new file mode 100644
index 0000000..608e8f4
--- /dev/null
+++ b/juddi-client-cli/src/main/java/org/apache/juddi/v3/client/cli/UddiDigitalSignatureTmodel.java
@@ -0,0 +1,173 @@
+/*
+ * Copyright 2001-2013 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.v3.client.cli;
+
+import java.util.concurrent.atomic.AtomicReference;
+import org.apache.juddi.v3.client.config.UDDIClient;
+import org.apache.juddi.v3.client.config.UDDIClientContainer;
+import org.apache.juddi.v3.client.cryptor.DigSigUtil;
+import org.apache.juddi.v3.client.transport.Transport;
+import org.uddi.api_v3.*;
+import org.uddi.v3_service.UDDIInquiryPortType;
+import org.uddi.v3_service.UDDIPublicationPortType;
+import org.uddi.v3_service.UDDISecurityPortType;
+
+/**
+ * This class shows you how to digitally sign a tmodel and verify the signature
+ *
+ * @author <a href="mailto:alexoree@apache.org">Alex O'Ree</a>
+ */
+public class UddiDigitalSignatureTmodel {
+
+        private static UDDISecurityPortType security = null;
+        private static UDDIInquiryPortType inquiry = null;
+        private static UDDIPublicationPortType publish = null;
+        private static UDDIClient clerkManager = null;
+
+        /**
+         * This sets up the ws proxies using uddi.xml in META-INF
+         */
+        public UddiDigitalSignatureTmodel() {
+                try {
+                        // create a manager and read the config in the archive; 
+                        // you can use your config file name
+                        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();
+                        inquiry = transport.getUDDIInquiryService();
+                        publish = transport.getUDDIPublishService();
+                } catch (Exception e) {
+                        e.printStackTrace();
+                }
+        }
+
+        /**
+         * Main entry point
+         *
+         * @param args
+         */
+        public static void main(String args[]) {
+                UddiDigitalSignatureTmodel sp = new UddiDigitalSignatureTmodel();
+                sp.Fire(null, null);
+        }
+
+        public void Fire(String token, String key) {
+                try {
+                        DigSigUtil ds = null;
+
+                        //option 1), set everything manually
+                        ds = new DigSigUtil();
+                        ds.put(DigSigUtil.SIGNATURE_KEYSTORE_FILE, "keystore.jks");
+                        ds.put(DigSigUtil.SIGNATURE_KEYSTORE_FILETYPE, "JKS");
+                        ds.put(DigSigUtil.SIGNATURE_KEYSTORE_FILE_PASSWORD, "Test");
+                        ds.put(DigSigUtil.SIGNATURE_KEYSTORE_KEY_ALIAS, "Test");
+                        ds.put(DigSigUtil.SIGNATURE_OPTION_CERT_INCLUSION_BASE64, "true");
+
+                        ds.put(DigSigUtil.SIGNATURE_OPTION_CERT_INCLUSION_SERIAL, "true");
+                        ds.put(DigSigUtil.SIGNATURE_OPTION_CERT_INCLUSION_SUBJECTDN, "true");
+                        ds.put(DigSigUtil.TRUSTSTORE_FILE, "truststore.jks");
+                        ds.put(DigSigUtil.TRUSTSTORE_FILETYPE, "JKS");
+                        ds.put(DigSigUtil.TRUSTSTORE_FILE_PASSWORD, "Test");
+
+                        //option 2), load it from the juddi config file
+                        //ds = new DigSigUtil(clerkManager.getClientConfig().getDigitalSignatureConfiguration());
+                        //login
+                        if (token == null) //option, load from juddi config
+                        {
+                                token = GetAuthKey(clerkManager.getClerk("default").getPublisher(),
+                                        clerkManager.getClerk("default").getPassword());
+                        }
+                        if (key==null){
+                                SaveTModel stm = new SaveTModel();
+                                stm.setAuthInfo(token);
+                                TModel tm = new TModel();
+                                tm.setName(new Name("my cool signed tmodel", null));
+                                stm.getTModel().add(tm);
+                                TModelDetail saveTModel = publish.saveTModel(stm);
+                                key = saveTModel.getTModel().get(0).getTModelKey();
+                        }
+
+                        TModel be = GetTmodelDetails(key);
+                        if (!be.getSignature().isEmpty())
+                        {
+                                System.out.println("WARN, the entity with the key " + key + " is already signed! aborting");
+                                return;
+                        }
+                        
+                        //DigSigUtil.JAXB_ToStdOut(be);
+                        System.out.println("signing");
+                        TModel signUDDI_JAXBObject = ds.signUddiEntity(be);
+                        DigSigUtil.JAXB_ToStdOut(signUDDI_JAXBObject);
+                        System.out.println("signed, saving");
+
+                        SaveTModel sb = new SaveTModel();
+                        sb.setAuthInfo(token);
+                        sb.getTModel().add(signUDDI_JAXBObject);
+                        publish.saveTModel(sb);
+                        System.out.println("saved, fetching");
+
+                        be = GetTmodelDetails(key);
+                        DigSigUtil.JAXB_ToStdOut(be);
+                        System.out.println("verifing");
+                        AtomicReference<String> msg = new AtomicReference<String>();
+                        boolean verifySigned_UDDI_JAXB_Object = ds.verifySignedUddiEntity(be, msg);
+                        if (verifySigned_UDDI_JAXB_Object) {
+                                System.out.println("signature validation passed (expected)");
+                        } else {
+                                System.out.println("signature validation failed (not expected)");
+                        }
+                        System.out.println(msg.get());
+
+                } catch (Exception e) {
+                        e.printStackTrace();
+                }
+        }
+
+        private TModel GetTmodelDetails(String key) throws Exception {
+                //   BusinessInfo get
+                GetTModelDetail r = new GetTModelDetail();
+                r.getTModelKey().add(key);
+                return inquiry.getTModelDetail(r).getTModel().get(0);
+        }
+
+        /**
+         * 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) {
+                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 = " + "don't log auth tokens!");
+                        return rootAuthToken.getAuthInfo();
+                } catch (Exception ex) {
+                        System.out.println("Could not authenticate with the provided credentials " + ex.getMessage());
+                }
+                return null;
+        }
+}

http://git-wip-us.apache.org/repos/asf/juddi/blob/9dafe4e8/juddi-client-cli/src/main/java/org/apache/juddi/v3/client/cli/UddiFindBinding.java
----------------------------------------------------------------------
diff --git a/juddi-client-cli/src/main/java/org/apache/juddi/v3/client/cli/UddiFindBinding.java b/juddi-client-cli/src/main/java/org/apache/juddi/v3/client/cli/UddiFindBinding.java
new file mode 100644
index 0000000..e257499
--- /dev/null
+++ b/juddi-client-cli/src/main/java/org/apache/juddi/v3/client/cli/UddiFindBinding.java
@@ -0,0 +1,106 @@
+/*
+ * Copyright 2001-2013 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.v3.client.cli;
+
+import org.apache.juddi.v3.client.UDDIConstants;
+import org.apache.juddi.v3.client.config.UDDIClient;
+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.*;
+import org.uddi.v3_service.UDDIInquiryPortType;
+import org.uddi.v3_service.UDDIPublicationPortType;
+import org.uddi.v3_service.UDDISecurityPortType;
+
+/**
+ * This class shows you how to find an endpoint by searching through all
+ * services
+ *
+ * @author <a href="mailto:alexoree@apache.org">Alex O'Ree</a>
+ */
+public class UddiFindBinding {
+
+        private static UDDISecurityPortType security = null;
+        private static JUDDIApiPortType juddiApi = null;
+        private static UDDIPublicationPortType publish = null;
+        private static UDDIInquiryPortType inquiry = null;
+
+        public UddiFindBinding() {
+                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();
+                        inquiry = transport.getUDDIInquiryService();
+                } catch (Exception e) {
+                        e.printStackTrace();
+                }
+        }
+
+        public void Fire(String token) {
+                try {
+                        // Setting up the values to get an authentication token for the 'root' user ('root' user has admin privileges
+                        // and can save other publishers).
+                        GetAuthToken getAuthTokenRoot = new GetAuthToken();
+                        getAuthTokenRoot.setUserID("root");
+                        getAuthTokenRoot.setCred("root");
+
+                        if (token == null) {
+                                // Making API call that retrieves the authentication token for the 'root' user.
+                                AuthToken rootAuthToken = security.getAuthToken(getAuthTokenRoot);
+                                System.out.println("root AUTHTOKEN = " + "don't log auth tokens!");
+                                token = rootAuthToken.getAuthInfo();
+                        }
+                        FindService fs = new FindService();
+                        fs.setAuthInfo(token);
+                        fs.getName().add(new Name());
+                        fs.getName().get(0).setValue("%");
+                        fs.setFindQualifiers(new FindQualifiers());
+                        fs.getFindQualifiers().getFindQualifier().add(UDDIConstants.APPROXIMATE_MATCH);
+
+                        ServiceList findService = inquiry.findService(fs);
+                        System.out.println(findService.getServiceInfos().getServiceInfo().size());
+                        GetServiceDetail gs = new GetServiceDetail();
+                        for (int i = 0; i < findService.getServiceInfos().getServiceInfo().size(); i++) {
+                                gs.getServiceKey().add(findService.getServiceInfos().getServiceInfo().get(i).getServiceKey());
+                        }
+
+                        ServiceDetail serviceDetail = inquiry.getServiceDetail(gs);
+                        for (int i = 0; i < serviceDetail.getBusinessService().size(); i++) {
+                                //System.out.println(serviceDetail.getBusinessService().get(i).getBindingTemplates().getBindingTemplate().size());
+                                if (serviceDetail.getBusinessService().get(i).getBindingTemplates() != null) {
+                                        for (int k = 0; k < serviceDetail.getBusinessService().get(i).getBindingTemplates().getBindingTemplate().size(); k++) {
+                                                if (serviceDetail.getBusinessService().get(i).getBindingTemplates().getBindingTemplate().get(k).getAccessPoint() != null) {
+                                                        System.out.println(serviceDetail.getBusinessService().get(i).getBindingTemplates().getBindingTemplate().get(k).getAccessPoint().getValue());
+                                                }
+                                        }
+                                }
+                        }
+                } catch (Exception e) {
+                        e.printStackTrace();
+                }
+        }
+
+        public static void main(String args[]) {
+                UddiFindBinding sp = new UddiFindBinding();
+                sp.Fire(null);
+        }
+}

http://git-wip-us.apache.org/repos/asf/juddi/blob/9dafe4e8/juddi-client-cli/src/main/java/org/apache/juddi/v3/client/cli/UddiFindEndpoints.java
----------------------------------------------------------------------
diff --git a/juddi-client-cli/src/main/java/org/apache/juddi/v3/client/cli/UddiFindEndpoints.java b/juddi-client-cli/src/main/java/org/apache/juddi/v3/client/cli/UddiFindEndpoints.java
new file mode 100644
index 0000000..41fe7f9
--- /dev/null
+++ b/juddi-client-cli/src/main/java/org/apache/juddi/v3/client/cli/UddiFindEndpoints.java
@@ -0,0 +1,78 @@
+/*
+ * Copyright 2001-2013 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.v3.client.cli;
+
+import java.util.List;
+import org.apache.juddi.v3.client.config.UDDIClerk;
+import org.apache.juddi.v3.client.config.UDDIClient;
+import org.apache.juddi.v3.client.transport.Transport;
+import org.uddi.v3_service.UDDIInquiryPortType;
+import org.uddi.v3_service.UDDISecurityPortType;
+
+/**
+ * This class show you how get all available Access Points/Endpoints for a
+ * service. This is harder than it sounds due to the complexity of UDDI's data
+ * structure. The output is the list of URLs given a service's key
+ *
+ * @author <a href="mailto:alexoree@apache.org">Alex O'Ree</a>
+ */
+public class UddiFindEndpoints {
+
+        private static UDDISecurityPortType security = null;
+        private static UDDIInquiryPortType inquiry = null;
+        static UDDIClerk clerk = null;
+
+        public UddiFindEndpoints() {
+                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");
+                        clerk = clerkManager.getClerk("default");
+            // a ClerkManager can be a client to multiple UDDI nodes, so 
+                        // supply the nodeName (defined in your uddi.xml.
+                        // The transport can be WS, inVM, RMI etc which is defined in the uddi.xml
+                        Transport transport = clerkManager.getTransport();
+                        // Now you create a reference to the UDDI API
+                        security = transport.getUDDISecurityService();
+                        inquiry = transport.getUDDIInquiryService();
+                } catch (Exception e) {
+                        e.printStackTrace();
+                }
+        }
+
+        public void Fire(String authtoken, String key) {
+                try {
+                        if (key == null) {
+                                key = "uddi:juddi.apache.org:services-inquiry";
+                        }
+
+                        List<String> endpoints = clerk.getEndpoints(key);
+                        System.out.println("Endpoints returned: " + endpoints.size());
+                        for (int i = 0; i < endpoints.size(); i++) {
+                                System.out.println(endpoints.get(i));
+                        }
+
+                } catch (Exception e) {
+                        e.printStackTrace();
+                }
+        }
+
+        public static void main(String args[]) {
+                UddiFindEndpoints sp = new UddiFindEndpoints();
+                sp.Fire(null, null);
+        }
+}

http://git-wip-us.apache.org/repos/asf/juddi/blob/9dafe4e8/juddi-client-cli/src/main/java/org/apache/juddi/v3/client/cli/UddiGetServiceDetails.java
----------------------------------------------------------------------
diff --git a/juddi-client-cli/src/main/java/org/apache/juddi/v3/client/cli/UddiGetServiceDetails.java b/juddi-client-cli/src/main/java/org/apache/juddi/v3/client/cli/UddiGetServiceDetails.java
new file mode 100644
index 0000000..fccb9be
--- /dev/null
+++ b/juddi-client-cli/src/main/java/org/apache/juddi/v3/client/cli/UddiGetServiceDetails.java
@@ -0,0 +1,95 @@
+/*
+ * Copyright 2001-2013 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.v3.client.cli;
+
+import javax.xml.bind.JAXB;
+import org.apache.juddi.v3.client.config.UDDIClient;
+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.*;
+import org.uddi.v3_service.UDDIInquiryPortType;
+import org.uddi.v3_service.UDDIPublicationPortType;
+import org.uddi.v3_service.UDDISecurityPortType;
+
+/**
+ * This class show you how to get all available information for service
+ * (excluding OperationalInfo)
+ *
+ * @author <a href="mailto:alexoree@apache.org">Alex O'Ree</a>
+ */
+public class UddiGetServiceDetails {
+
+        private static UDDISecurityPortType security = null;
+        private static JUDDIApiPortType juddiApi = null;
+        private static UDDIPublicationPortType publish = null;
+        private static UDDIInquiryPortType inquiry = null;
+
+        public UddiGetServiceDetails() {
+                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();
+                        inquiry = transport.getUDDIInquiryService();
+                } catch (Exception e) {
+                        e.printStackTrace();
+                }
+        }
+
+        public void Fire(String token, String key) {
+                if (key == null) {
+                        System.out.println("No key provided!");
+                        return;
+                }
+                try {
+                        // Setting up the values to get an authentication token for the 'root' user ('root' user has admin privileges
+                        // and can save other publishers).
+                        if (token == null) {
+
+                                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 = " + "don't log auth tokens!");
+                                token = rootAuthToken.getAuthInfo();
+                        }
+                        GetServiceDetail fs = new GetServiceDetail();
+                        fs.setAuthInfo(token);
+                        fs.getServiceKey().add(key);
+                        ServiceDetail serviceDetail = inquiry.getServiceDetail(fs);
+                        if (serviceDetail == null || serviceDetail.getBusinessService().isEmpty()) {
+                                System.out.println("mykey is not registered");
+                        } else {
+                                JAXB.marshal(serviceDetail, System.out);
+                        }
+                } catch (Exception e) {
+                        e.printStackTrace();
+                }
+        }
+
+        public static void main(String args[]) {
+                UddiGetServiceDetails sp = new UddiGetServiceDetails();
+                sp.Fire(null, "uddi:juddi.apache.org:services-inquiry");
+        }
+}

http://git-wip-us.apache.org/repos/asf/juddi/blob/9dafe4e8/juddi-client-cli/src/main/java/org/apache/juddi/v3/client/cli/UddiKeyGenerator.java
----------------------------------------------------------------------
diff --git a/juddi-client-cli/src/main/java/org/apache/juddi/v3/client/cli/UddiKeyGenerator.java b/juddi-client-cli/src/main/java/org/apache/juddi/v3/client/cli/UddiKeyGenerator.java
new file mode 100644
index 0000000..9350e0b
--- /dev/null
+++ b/juddi-client-cli/src/main/java/org/apache/juddi/v3/client/cli/UddiKeyGenerator.java
@@ -0,0 +1,104 @@
+/*
+ * Copyright 2001-2013 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.v3.client.cli;
+
+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.transport.Transport;
+import org.apache.juddi.v3_service.JUDDIApiPortType;
+import org.uddi.api_v3.*;
+import org.uddi.v3_service.UDDIInquiryPortType;
+import org.uddi.v3_service.UDDIPublicationPortType;
+import org.uddi.v3_service.UDDISecurityPortType;
+
+/**
+ * This is an example how to make a UDDI key generator, which will enable you to
+ * make UDDI v3 keys with (almost) whatever pattern you want
+ *
+ * @author <a href="mailto:alexoree@apache.org">Alex O'Ree</a>
+ */
+public class UddiKeyGenerator {
+
+        private static UDDISecurityPortType security = null;
+        private static JUDDIApiPortType juddiApi = null;
+        private static UDDIPublicationPortType publish = null;
+        private static UDDIInquiryPortType inquiry = null;
+
+        public UddiKeyGenerator() {
+                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();
+                        inquiry = transport.getUDDIInquiryService();
+                } catch (Exception e) {
+                        e.printStackTrace();
+                }
+        }
+
+        public void Fire(String token, String domain) {
+                try {
+            // Setting up the values to get an authentication token for the 'root' user ('root' user has admin privileges
+                        // and can save other publishers).
+                        if (token == null) {
+                                GetAuthToken getAuthTokenRoot = new GetAuthToken();
+                                getAuthTokenRoot.setUserID("uddi");
+                                getAuthTokenRoot.setCred("uddi");
+
+                                // Making API call that retrieves the authentication token for the 'root' user.
+                                AuthToken rootAuthToken = security.getAuthToken(getAuthTokenRoot);
+                                System.out.println("uddi AUTHTOKEN = " + "don't log auth tokens!");
+                                token = rootAuthToken.getAuthInfo();
+                        }
+                        SaveTModel st = new SaveTModel();
+                        st.setAuthInfo(token);
+                        st.getTModel().add(UDDIClerk.createKeyGenator(domain, domain, "en"));
+                        TModelDetail saveTModel = publish.saveTModel(st);
+
+                        System.out.println("Saved!  key = " + saveTModel.getTModel().get(0).getTModelKey());
+                        /*
+            //Hey! tModel Key Generators can be nested too!
+                        st = new SaveTModel();
+                        st.setAuthInfo(rootAuthToken.getAuthInfo());
+                        st.getTModel().add(UDDIClerk.createKeyGenator("uddi:bea.com:servicebus.default:keygenerator", "bea.com:servicebus.default", "en"));
+                        publish.saveTModel(st);
+
+                        // This code block proves that you can create tModels based on a nested keygen
+                        st = new SaveTModel();
+                        TModel m = new TModel();
+                        m.setTModelKey("uddi:bea.com:servicebus.default.proxytest2");
+                        m.setName(new Name("name", "lang"));
+                        st.setAuthInfo(rootAuthToken.getAuthInfo());
+                        st.getTModel().add(m);
+                        publish.saveTModel(st);
+
+                                */
+                } catch (Exception e) {
+                        e.printStackTrace();
+                }
+        }
+
+        public static void main(String args[]) {
+                UddiKeyGenerator sp = new UddiKeyGenerator();
+                sp.Fire(null, "www.juddi.is.cool.org");
+        }
+}

http://git-wip-us.apache.org/repos/asf/juddi/blob/9dafe4e8/juddi-client-cli/src/main/java/org/apache/juddi/v3/client/cli/UddiRelatedBusinesses.java
----------------------------------------------------------------------
diff --git a/juddi-client-cli/src/main/java/org/apache/juddi/v3/client/cli/UddiRelatedBusinesses.java b/juddi-client-cli/src/main/java/org/apache/juddi/v3/client/cli/UddiRelatedBusinesses.java
new file mode 100644
index 0000000..a1ca4d5
--- /dev/null
+++ b/juddi-client-cli/src/main/java/org/apache/juddi/v3/client/cli/UddiRelatedBusinesses.java
@@ -0,0 +1,154 @@
+/*
+ * Copyright 2001-2013 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.v3.client.cli;
+
+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.Holder;
+import org.apache.juddi.v3.client.config.UDDIClient;
+import org.apache.juddi.v3.client.transport.Transport;
+import org.apache.juddi.v3_service.JUDDIApiPortType;
+import org.uddi.api_v3.*;
+import org.uddi.v3_service.UDDIPublicationPortType;
+import org.uddi.v3_service.UDDISecurityPortType;
+
+/**
+ * This will create two businesses under different users, then setup a
+ * relationship between the two
+ *
+ * @author <a href="mailto:alexoree@apache.org">Alex O'Ree</a>
+ */
+public class UddiRelatedBusinesses {
+
+        private static UDDISecurityPortType security = null;
+        private static JUDDIApiPortType juddiApi = null;
+        private static UDDIPublicationPortType publish = null;
+
+        public UddiRelatedBusinesses() {
+                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();
+                } catch (Exception e) {
+                        e.printStackTrace();
+                }
+        }
+
+        public void Fire(String businessKey, String authInfo, String businessKey1, String authInfo1, String relationship) throws Exception {
+                try {
+
+                        DatatypeFactory df = DatatypeFactory.newInstance();
+                        GregorianCalendar gcal = new GregorianCalendar();
+                        gcal.setTimeInMillis(System.currentTimeMillis());
+                        XMLGregorianCalendar xcal = df.newXMLGregorianCalendar(gcal);
+
+                                //ROOT creates half of the relationship
+                        //create a business relationship (publisher assertion)
+                        Holder<List<PublisherAssertion>> x = new Holder<List<PublisherAssertion>>();
+                        PublisherAssertion pa = new PublisherAssertion();
+                        pa.setFromKey(businessKey);
+                        pa.setToKey(businessKey1);
+                        pa.setKeyedReference(new KeyedReference());
+                        pa.getKeyedReference().setKeyName("Subsidiary");
+                        pa.getKeyedReference().setKeyValue(relationship);
+
+                        pa.getKeyedReference().setTModelKey("uddi:uddi.org:relationships");
+                        x.value = new ArrayList<PublisherAssertion>();
+                        x.value.add(pa);
+                        publish.setPublisherAssertions(authInfo, x);
+
+                        //now "UDDI" the user, creates the other half. It has to be mirrored exactly
+                        x = new Holder<List<PublisherAssertion>>();
+                        pa = new PublisherAssertion();
+                        pa.setFromKey(businessKey);
+                        pa.setToKey(businessKey1);
+                        pa.setKeyedReference(new KeyedReference());
+                        pa.getKeyedReference().setKeyName("Subsidiary");
+                        pa.getKeyedReference().setKeyValue(relationship);
+
+                        pa.getKeyedReference().setTModelKey("uddi:uddi.org:relationships");
+                        x.value = new ArrayList<PublisherAssertion>();
+                        x.value.add(pa);
+                        publish.setPublisherAssertions(authInfo1, x);
+
+                        System.out.println("Success!");
+                        /*
+                         * Here's some notes:
+                         * You can use
+                         * List<AssertionStatusItem> assertionStatusReport = publish.getAssertionStatusReport(UDDIAuthToken.getAuthInfo(), CompletionStatus.STATUS_FROM_KEY_INCOMPLETE);
+                         * to determine if there's any assertions/relationships requests that are pending
+                         * this should have one item it in, the relationship that's incomplete
+                         * 
+                         * There's also publish.deletePublisherAssertions();
+                         */
+                } catch (Exception e) {
+                        e.printStackTrace();
+                }
+        }
+
+        public static void main(String args[]) throws Exception {
+                UddiRelatedBusinesses sp = new UddiRelatedBusinesses();
+
+                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 = " + "don't log auth tokens!");
+                BusinessEntity rootbiz = sp.CreateBusiness("root");
+
+                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 = " + "don't log auth tokens!");
+                BusinessEntity uddibiz = sp.CreateBusiness("uddi");
+
+                //save user uddi's business
+                SaveBusiness sb = new SaveBusiness();
+                sb.setAuthInfo(uddiAuthToken.getAuthInfo());
+                sb.getBusinessEntity().add(uddibiz);
+                BusinessDetail uddibize = publish.saveBusiness(sb);
+
+                sb = new SaveBusiness();
+                sb.setAuthInfo(rootAuthToken.getAuthInfo());
+                sb.getBusinessEntity().add(rootbiz);
+                BusinessDetail rootbize = publish.saveBusiness(sb);
+
+                sp.Fire(rootbize.getBusinessEntity().get(0).getBusinessKey(), rootAuthToken.getAuthInfo(),
+                        uddibize.getBusinessEntity().get(0).getBusinessKey(), uddiAuthToken.getAuthInfo(),
+                        "parent-child");
+        }
+
+        private BusinessEntity CreateBusiness(String user) {
+                BusinessEntity be = new BusinessEntity();
+                be.getName().add(new Name(user + "'s business", null));
+                return be;
+        }
+
+}

http://git-wip-us.apache.org/repos/asf/juddi/blob/9dafe4e8/juddi-client-cli/src/main/java/org/apache/juddi/v3/client/cli/UddiReplication.java
----------------------------------------------------------------------
diff --git a/juddi-client-cli/src/main/java/org/apache/juddi/v3/client/cli/UddiReplication.java b/juddi-client-cli/src/main/java/org/apache/juddi/v3/client/cli/UddiReplication.java
new file mode 100644
index 0000000..3e5175c
--- /dev/null
+++ b/juddi-client-cli/src/main/java/org/apache/juddi/v3/client/cli/UddiReplication.java
@@ -0,0 +1,134 @@
+/*
+ * Copyright 2014 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.v3.client.cli;
+
+import java.math.BigInteger;
+import java.util.List;
+import java.util.logging.Level;
+import java.util.logging.Logger;
+import javax.xml.bind.JAXB;
+import javax.xml.ws.BindingProvider;
+import org.apache.commons.configuration.ConfigurationException;
+import org.apache.juddi.v3.client.UDDIService;
+import org.apache.juddi.v3.client.config.UDDIClient;
+import org.uddi.repl_v3.ChangeRecord;
+import org.uddi.repl_v3.ChangeRecordIDType;
+import org.uddi.repl_v3.ChangeRecords;
+import org.uddi.repl_v3.DoPing;
+import org.uddi.repl_v3.GetChangeRecords;
+import org.uddi.repl_v3.HighWaterMarkVectorType;
+import org.uddi.v3_service.UDDIReplicationPortType;
+
+/**
+ *
+ * @author Alex O'Ree
+ */
+class UddiReplication {
+
+        public UddiReplication(UDDIClient client, String nodename) throws ConfigurationException {
+
+                 uddiReplicationPort = new UDDIService().getUDDIReplicationPort();
+                ((BindingProvider) uddiReplicationPort).getRequestContext().put(BindingProvider.ENDPOINT_ADDRESS_PROPERTY, client.getClientConfig().getUDDINode(nodename).getReplicationUrl());
+        }
+
+        UDDIReplicationPortType uddiReplicationPort = null;
+
+        String DoPing() {
+                try {
+                        String doPing = uddiReplicationPort.doPing(new DoPing());
+                        System.out.println("Ping Success, remote node's id is " + doPing);
+                        return doPing;
+                } catch (Exception ex) {
+                        Logger.getLogger(UddiReplication.class.getName()).log(Level.SEVERE, null, ex);
+                }
+                return null;
+        }
+
+        void GetHighWatermarks() {
+                try {
+                           List<ChangeRecordIDType> highWaterMarks = uddiReplicationPort.getHighWaterMarks();
+                        System.out.println("Success....");
+                        System.out.println("Node, USN");
+                        for (int i = 0; i < highWaterMarks.size(); i++) {
+                                System.out.println(
+                                        highWaterMarks.get(i).getNodeID() + ", "
+                                        + highWaterMarks.get(i).getOriginatingUSN());
+                        }
+                } catch (Exception ex) {
+                        Logger.getLogger(UddiReplication.class.getName()).log(Level.SEVERE, null, ex);
+                }
+        }
+
+        void GetChangeRecords(Long record, String sourcenode) {
+                try {
+                        HighWaterMarkVectorType highWaterMarkVectorType = new HighWaterMarkVectorType();
+
+                        highWaterMarkVectorType.getHighWaterMark().add(new ChangeRecordIDType(DoPing(), record));
+                        GetChangeRecords req = new GetChangeRecords();
+                        req.setRequestingNode(sourcenode);
+                        req.setChangesAlreadySeen(highWaterMarkVectorType);
+                        req.setResponseLimitCount(BigInteger.valueOf(100));
+                        ChangeRecords res = uddiReplicationPort.getChangeRecords(req);
+                        List<ChangeRecord> changeRecords = res.getChangeRecord();
+                        System.out.println("Success...." + changeRecords.size() + " records returned");
+                        System.out.println("Node, USN, type");
+                        for (int i = 0; i < changeRecords.size(); i++) {
+                                System.out.println(
+                                        changeRecords.get(i).getChangeID().getNodeID() + ", "
+                                        + changeRecords.get(i).getChangeID().getOriginatingUSN() + ": "
+                                        + GetChangeType(changeRecords.get(i)));
+                                JAXB.marshal(changeRecords.get(i), System.out);
+                        }
+                } catch (Exception ex) {
+                        Logger.getLogger(UddiReplication.class.getName()).log(Level.SEVERE, null, ex);
+                }
+        }
+
+        private String GetChangeType(ChangeRecord get) {
+                if (get.getChangeRecordAcknowledgement() != null) {
+                        return "ACK";
+                }
+                if (get.getChangeRecordConditionFailed() != null) {
+                        return "ConditionFailed";
+                }
+                if (get.getChangeRecordCorrection() != null) {
+                        return "Correction";
+                }
+                if (get.getChangeRecordDelete() != null) {
+                        return "Deletion";
+                }
+                if (get.getChangeRecordDeleteAssertion() != null) {
+                        return "Delete Assertion";
+                }
+                if (get.getChangeRecordHide() != null) {
+                        return "Hide tmodel";
+                }
+                if (get.getChangeRecordNewData() != null) {
+                        return "New Data";
+                }
+                if (get.getChangeRecordNewDataConditional() != null) {
+                        return "New data conditional";
+                }
+                if (get.getChangeRecordNull() != null) {
+                        return "Null";
+                }
+                if (get.getChangeRecordPublisherAssertion() != null) {
+                        return "New publisher assertion";
+                }
+                return null;
+        }
+
+}

http://git-wip-us.apache.org/repos/asf/juddi/blob/9dafe4e8/juddi-client-cli/src/main/java/org/apache/juddi/v3/client/cli/UddiSubscribe.java
----------------------------------------------------------------------
diff --git a/juddi-client-cli/src/main/java/org/apache/juddi/v3/client/cli/UddiSubscribe.java b/juddi-client-cli/src/main/java/org/apache/juddi/v3/client/cli/UddiSubscribe.java
new file mode 100644
index 0000000..20d2907
--- /dev/null
+++ b/juddi-client-cli/src/main/java/org/apache/juddi/v3/client/cli/UddiSubscribe.java
@@ -0,0 +1,244 @@
+/*
+ * Copyright 2001-2013 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.v3.client.cli;
+
+import javax.xml.datatype.DatatypeFactory;
+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.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.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;
+import org.uddi.v3_service.UDDISubscriptionPortType;
+
+/**
+ * Thie class shows you how to create a business and a subscription using UDDI
+ * Subscription asynchronous callbacks
+ *
+ * @author <a href="mailto:alexoree@apache.org">Alex O'Ree</a>
+ */
+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;
+        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();
+                }
+        }
+        String nodename = "default";
+        public UddiSubscribe(UDDIClient client, String nodename, Transport transport) {
+                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(nodename);
+                        this.nodename = nodename;
+                        // 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.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, nodename);
+
+                //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());
+
+                sub = new Subscription();
+                sub.setNotificationInterval(DatatypeFactory.newInstance().newDuration(1000));
+                sub.setBindingKey(start.getBindingKey());
+                sub.setSubscriptionFilter(new SubscriptionFilter());
+                sub.getSubscriptionFilter().setGetAssertionStatusReport(new GetAssertionStatusReport());
+                sub.getSubscriptionFilter().getGetAssertionStatusReport().setCompletionStatus(CompletionStatus.STATUS_COMPLETE);
+
+                Subscription subscriptionPA = clerk.register(sub, clerk.getUDDINode().getApiNode());
+
+                System.out.println("Registered Completed PublisherAssertion subscription key: " + (subscriptionPA.getSubscriptionKey()) + " bindingkey: " + subscriptionTM.getBindingKey());
+
+                sub = new Subscription();
+                sub.setNotificationInterval(DatatypeFactory.newInstance().newDuration(1000));
+                sub.setBindingKey(start.getBindingKey());
+                sub.setSubscriptionFilter(new SubscriptionFilter());
+                sub.getSubscriptionFilter().setGetAssertionStatusReport(new GetAssertionStatusReport());
+                sub.getSubscriptionFilter().getGetAssertionStatusReport().setCompletionStatus(CompletionStatus.STATUS_FROM_KEY_INCOMPLETE);
+
+                Subscription subscriptionPA2 = clerk.register(sub, clerk.getUDDINode().getApiNode());
+
+                System.out.println("Registered FROM incomplete PublisherAssertion subscription key: " + (subscriptionPA2.getSubscriptionKey()) + " bindingkey: " + subscriptionTM.getBindingKey());
+
+                sub = new Subscription();
+                sub.setNotificationInterval(DatatypeFactory.newInstance().newDuration(1000));
+                sub.setBindingKey(start.getBindingKey());
+                sub.setSubscriptionFilter(new SubscriptionFilter());
+                sub.getSubscriptionFilter().setGetAssertionStatusReport(new GetAssertionStatusReport());
+                sub.getSubscriptionFilter().getGetAssertionStatusReport().setCompletionStatus(CompletionStatus.STATUS_TO_KEY_INCOMPLETE);
+
+                Subscription subscriptionPA3 = clerk.register(sub, clerk.getUDDINode().getApiNode());
+
+                System.out.println("Registered TO incomplete PublisherAssertion subscription key: " + (subscriptionPA3.getSubscriptionKey()) + " bindingkey: " + subscriptionTM.getBindingKey());
+
+                sub = new Subscription();
+                sub.setNotificationInterval(DatatypeFactory.newInstance().newDuration(1000));
+                sub.setBindingKey(start.getBindingKey());
+                sub.setSubscriptionFilter(new SubscriptionFilter());
+                sub.getSubscriptionFilter().setGetAssertionStatusReport(new GetAssertionStatusReport());
+                sub.getSubscriptionFilter().getGetAssertionStatusReport().setCompletionStatus(CompletionStatus.STATUS_BOTH_INCOMPLETE);
+
+                Subscription subscriptionPA4 = clerk.register(sub, clerk.getUDDINode().getApiNode());
+
+                System.out.println("Registered recently deleted PublisherAssertion subscription key: " + (subscriptionPA4.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, nodename, start.getBindingKey());
+                clerk.unRegisterSubscription(subscriptionBiz.getSubscriptionKey());
+                clerk.unRegisterSubscription(subscriptionSvc.getSubscriptionKey());
+                clerk.unRegisterSubscription(subscriptionTM.getSubscriptionKey());
+                clerk.unRegisterSubscription(subscriptionPA.getSubscriptionKey());
+                clerk.unRegisterSubscription(subscriptionPA2.getSubscriptionKey());
+                clerk.unRegisterSubscription(subscriptionPA3.getSubscriptionKey());
+                clerk.unRegisterSubscription(subscriptionPA4.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;
+        }
+}

http://git-wip-us.apache.org/repos/asf/juddi/blob/9dafe4e8/juddi-client-cli/src/main/java/org/apache/juddi/v3/client/cli/UddiSubscribeAssertionStatus.java
----------------------------------------------------------------------
diff --git a/juddi-client-cli/src/main/java/org/apache/juddi/v3/client/cli/UddiSubscribeAssertionStatus.java b/juddi-client-cli/src/main/java/org/apache/juddi/v3/client/cli/UddiSubscribeAssertionStatus.java
new file mode 100644
index 0000000..7440876
--- /dev/null
+++ b/juddi-client-cli/src/main/java/org/apache/juddi/v3/client/cli/UddiSubscribeAssertionStatus.java
@@ -0,0 +1,163 @@
+/*
+ * Copyright 2001-2013 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.v3.client.cli;
+
+import javax.xml.datatype.DatatypeFactory;
+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.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.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;
+import org.uddi.v3_service.UDDISubscriptionPortType;
+
+/**
+ * Thie class shows you how to create a business and a subscription using UDDI
+ * Subscription asynchronous callbacks for Assertion Status Reports
+ *
+ * @author <a href="mailto:alexoree@apache.org">Alex O'Ree</a>
+ */
+public class UddiSubscribeAssertionStatus 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;
+        private UDDIClerk clerk = null;
+        private UDDIClient client = null;
+
+        public UddiSubscribeAssertionStatus() {
+                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();
+                }
+        }
+
+         public UddiSubscribeAssertionStatus(Transport transport) {
+                try {
+                        // 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 {
+                UddiSubscribeAssertionStatus sp = new UddiSubscribeAssertionStatus();
+                sp.Fire("default");
+        }
+
+        public void Fire(String nodename) 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, nodename);
+
+                //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().setGetAssertionStatusReport(new GetAssertionStatusReport());
+                //it's optional
+                
+                //sub.getSubscriptionFilter().getGetAssertionStatusReport().setCompletionStatus(CompletionStatus.STATUS_COMPLETE);
+                Subscription subscriptionBiz = clerk.register(sub, clerk.getUDDINode().getApiNode());
+
+                System.out.println("Registered GetAssertionStatus subscription key: " + (subscriptionBiz.getSubscriptionKey()) + " bindingkey: " + subscriptionBiz.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, nodename, start.getBindingKey());
+                clerk.unRegisterSubscription(subscriptionBiz.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;
+        }
+}

http://git-wip-us.apache.org/repos/asf/juddi/blob/9dafe4e8/juddi-client-cli/src/main/java/org/apache/juddi/v3/client/cli/UddiSubscribeValidate.java
----------------------------------------------------------------------
diff --git a/juddi-client-cli/src/main/java/org/apache/juddi/v3/client/cli/UddiSubscribeValidate.java b/juddi-client-cli/src/main/java/org/apache/juddi/v3/client/cli/UddiSubscribeValidate.java
new file mode 100644
index 0000000..5afb0e5
--- /dev/null
+++ b/juddi-client-cli/src/main/java/org/apache/juddi/v3/client/cli/UddiSubscribeValidate.java
@@ -0,0 +1,137 @@
+/*
+ * Copyright 2001-2013 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.v3.client.cli;
+
+import java.util.Calendar;
+import java.util.GregorianCalendar;
+import javax.xml.datatype.DatatypeFactory;
+import javax.xml.datatype.XMLGregorianCalendar;
+import org.apache.juddi.v3.client.config.UDDIClient;
+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.CoveragePeriod;
+import org.uddi.sub_v3.GetSubscriptionResults;
+import org.uddi.sub_v3.SubscriptionResultsList;
+import org.uddi.v3_service.UDDIInquiryPortType;
+import org.uddi.v3_service.UDDIPublicationPortType;
+import org.uddi.v3_service.UDDISecurityPortType;
+import org.uddi.v3_service.UDDISubscriptionListenerPortType;
+import org.uddi.v3_service.UDDISubscriptionPortType;
+
+/**
+ * This class shows you how to get the results of an existing subscription in
+ * UDDI.
+ *
+ * @author <a href="mailto:alexoree@apache.org">Alex O'Ree</a>
+ */
+public class UddiSubscribeValidate {
+
+        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;
+        private static UDDISubscriptionListenerPortType uddiSubscriptionListenerService = null;
+
+        public UddiSubscribeValidate() {
+                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();
+                        uddiSubscriptionListenerService = transport.getUDDISubscriptionListenerService();
+                } catch (Exception e) {
+                        e.printStackTrace();
+                }
+        }
+        
+          public UddiSubscribeValidate(Transport transport) {
+                try {
+                        // Now you create a reference to the UDDI API
+                        security = transport.getUDDISecurityService();
+                        juddiApi = transport.getJUDDIApiService();
+                        publish = transport.getUDDIPublishService();
+                        uddiInquiryService = transport.getUDDIInquiryService();
+                        uddiSubscriptionService = transport.getUDDISubscriptionService();
+                        uddiSubscriptionListenerService = transport.getUDDISubscriptionListenerService();
+                } catch (Exception e) {
+                        e.printStackTrace();
+                }
+        }
+
+        /**
+         * gets subscription results synchronously
+         *
+         * @param authtoken
+         * @param key
+         */
+        public void go(String authtoken, String key) {
+                if (key == null) {
+                        System.out.println("No key was specified!");
+                        return;
+                }
+                try {
+
+                        // Setting up the values to get an authentication token for the 'root' user ('root' user has admin privileges
+                        // and can save other publishers).
+                        if (authtoken == null) {
+                                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 = " + "don't log 'em");
+                                authtoken = rootAuthToken.getAuthInfo();
+                        }
+                        DatatypeFactory df = DatatypeFactory.newInstance();
+                        GregorianCalendar gcal = new GregorianCalendar();
+                        gcal.setTimeInMillis(System.currentTimeMillis());
+                        XMLGregorianCalendar xcal = df.newXMLGregorianCalendar(gcal);
+
+                        //
+                        GetSubscriptionResults req = new GetSubscriptionResults();
+                        req.setAuthInfo(authtoken);
+                        //TODO insert your subscription key values here
+                        req.setSubscriptionKey(key);
+                        req.setCoveragePeriod(new CoveragePeriod());
+                        req.getCoveragePeriod().setEndPoint(xcal);
+
+                        gcal = new GregorianCalendar();
+                        //Time range that we want change logs on
+                        gcal.add(Calendar.MONTH, -1);
+                        req.getCoveragePeriod().setStartPoint(df.newXMLGregorianCalendar(gcal));
+                        SubscriptionResultsList subscriptionResults = uddiSubscriptionService.getSubscriptionResults(req);
+                        System.out.println("items modified: " + subscriptionResults.getBusinessDetail().getBusinessEntity().size());
+
+                } catch (Exception e) {
+                        e.printStackTrace();
+                }
+        }
+
+        public static void main(String args[]) {
+                UddiSubscribeValidate sp = new UddiSubscribeValidate();
+                sp.go(null, null);
+        }
+}

http://git-wip-us.apache.org/repos/asf/juddi/blob/9dafe4e8/juddi-client-cli/src/main/java/org/apache/juddi/v3/client/cli/UddiSubscriptionManagement.java
----------------------------------------------------------------------
diff --git a/juddi-client-cli/src/main/java/org/apache/juddi/v3/client/cli/UddiSubscriptionManagement.java b/juddi-client-cli/src/main/java/org/apache/juddi/v3/client/cli/UddiSubscriptionManagement.java
new file mode 100644
index 0000000..6068c14
--- /dev/null
+++ b/juddi-client-cli/src/main/java/org/apache/juddi/v3/client/cli/UddiSubscriptionManagement.java
@@ -0,0 +1,149 @@
+/*
+ * Copyright 2014 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.v3.client.cli;
+
+import java.util.List;
+import javax.xml.datatype.DatatypeFactory;
+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.subscription.SubscriptionCallbackListener;
+import org.apache.juddi.v3.client.transport.Transport;
+import org.apache.juddi.v3_service.JUDDIApiPortType;
+import org.uddi.api_v3.BindingTemplate;
+import org.uddi.api_v3.BusinessEntity;
+import org.uddi.api_v3.BusinessService;
+import org.uddi.api_v3.BusinessServices;
+import org.uddi.api_v3.FindBusiness;
+import org.uddi.api_v3.FindQualifiers;
+import org.uddi.api_v3.FindService;
+import org.uddi.api_v3.FindTModel;
+import org.uddi.api_v3.Name;
+import org.uddi.api_v3.TModel;
+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;
+import org.uddi.v3_service.UDDISubscriptionPortType;
+
+/**
+ *
+ * @author Alex O'Ree
+ */
+public class UddiSubscriptionManagement {
+
+        private static UDDISecurityPortType security = null;
+
+        private static UDDIPublicationPortType publish = null;
+        private static UDDIInquiryPortType uddiInquiryService = null;
+        private static UDDISubscriptionPortType uddiSubscriptionService = null;
+
+        private UDDIClerk clerk = null;
+        private UDDIClient client = null;
+
+        public UddiSubscriptionManagement() {
+                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();
+                        publish = transport.getUDDIPublishService();
+                        uddiInquiryService = transport.getUDDIInquiryService();
+                        uddiSubscriptionService = transport.getUDDISubscriptionService();
+                } catch (Exception e) {
+                        e.printStackTrace();
+                }
+        }
+        
+         public UddiSubscriptionManagement(Transport transport) {
+                try {
+                       
+                        // Now you create a reference to the UDDI API
+                        security = transport.getUDDISecurityService();
+                        publish = transport.getUDDIPublishService();
+                        uddiInquiryService = transport.getUDDIInquiryService();
+                        uddiSubscriptionService = transport.getUDDISubscriptionService();
+                } catch (Exception e) {
+                        e.printStackTrace();
+                }
+        }
+
+        public static void main(String args[]) throws Exception {
+                UddiSubscriptionManagement sp = new UddiSubscriptionManagement();
+                sp.PrintSubscriptions(null);
+        }
+
+        public void PrintSubscriptions(String authtoken) throws Exception {
+
+                if (authtoken == null) {
+                        authtoken = clerk.getAuthToken();
+                }
+                List<Subscription> subscriptions = uddiSubscriptionService.getSubscriptions(authtoken);
+                System.out.println(subscriptions.size() + " subscriptions found");
+                for (int i = 0; i < subscriptions.size(); i++) {
+                        System.out.println("_____________________________________");
+                        
+                        System.out.println(p.print(subscriptions.get(i)));
+                }
+        }
+
+        public void DeleteSubscription(String authtoken, String key) throws Exception {
+
+                if (authtoken == null) {
+                        authtoken = clerk.getAuthToken();
+                }
+                if (key == null) {
+                        System.out.println("No key specified!");
+                        return;
+                }
+                DeleteSubscription ds = new DeleteSubscription();
+                ds.setAuthInfo(authtoken);
+                ds.getSubscriptionKey().add(key);
+                uddiSubscriptionService.deleteSubscription(ds);
+                System.out.println("Deleted!");
+
+        }
+
+        public void DeleteAllSubscriptions(String authtoken) throws Exception {
+
+                if (authtoken == null) {
+                        authtoken = clerk.getAuthToken();
+                }
+                List<Subscription> subscriptions = uddiSubscriptionService.getSubscriptions(authtoken);
+                System.out.println(subscriptions.size() + " subscriptions found");
+                for (int i = 0; i < subscriptions.size(); i++) {
+                        System.out.println("_____________________________________");
+                        System.out.println(subscriptions.get(i).getSubscriptionKey());
+                        DeleteSubscription ds = new DeleteSubscription();
+                        ds.setAuthInfo(authtoken);
+                        ds.getSubscriptionKey().add(subscriptions.get(i).getSubscriptionKey());
+                        uddiSubscriptionService.deleteSubscription(ds);
+                        System.out.println("Deleted!");
+                }
+
+        }
+
+        private boolean running = true;
+        PrintUDDI<Subscription> p = new PrintUDDI<Subscription>();
+
+}


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