Java tutorial
/* * Copyright 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.io.File; import java.io.FileInputStream; import java.math.BigInteger; import java.rmi.RemoteException; import java.security.KeyStore; import java.util.List; import javax.net.ssl.KeyManagerFactory; import javax.net.ssl.SSLContext; import javax.xml.bind.JAXB; import javax.xml.ws.BindingProvider; import org.apache.commons.configuration.ConfigurationException; import org.apache.juddi.api_v3.DeleteNode; import org.apache.juddi.api_v3.GetFailedReplicationChangeRecordsMessageRequest; import org.apache.juddi.api_v3.GetFailedReplicationChangeRecordsMessageResponse; import org.apache.juddi.api_v3.Node; import org.apache.juddi.api_v3.NodeDetail; import org.apache.juddi.api_v3.NodeList; import org.apache.juddi.api_v3.SaveNode; import org.apache.juddi.jaxb.PrintJUDDI; import org.apache.juddi.v3.client.UDDIService; import org.apache.juddi.v3.client.config.UDDIClient; import org.apache.juddi.v3.client.config.UDDINode; import org.apache.juddi.v3.client.cryptor.TransportSecurityHelper; import org.apache.juddi.v3.client.transport.Transport; import org.apache.juddi.v3.client.transport.TransportException; import org.apache.juddi.v3_service.JUDDIApiPortType; import org.uddi.api_v3.Contact; import org.uddi.api_v3.Description; import org.uddi.api_v3.DispositionReport; import org.uddi.api_v3.Email; import org.uddi.api_v3.GetAuthToken; import org.uddi.api_v3.PersonName; import org.uddi.api_v3.Phone; import org.uddi.repl_v3.ChangeRecordIDType; import org.uddi.repl_v3.CommunicationGraph; import org.uddi.repl_v3.CommunicationGraph.Edge; import org.uddi.repl_v3.DoPing; import org.uddi.repl_v3.Operator; import org.uddi.repl_v3.OperatorStatusType; import org.uddi.repl_v3.ReplicationConfiguration; import org.uddi.v3_service.UDDIReplicationPortType; import org.uddi.v3_service.UDDISecurityPortType; /** * * @author Alex O'Ree */ public class JuddiAdminService { // private static UDDISecurityPortType security = null; // private static UDDIPublicationPortType publish = null; static JUDDIApiPortType juddi = null; // static UDDIClerk clerk = null; static UDDIClient clerkManager = null; public JuddiAdminService(UDDIClient client, Transport transport) { try { clerkManager = client; if (transport != null) // 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"); //clerk = clerkManager.getClerk("default"); // The transport can be WS, inVM, RMI etc which is defined in the uddi.xml { transport = clerkManager.getTransport(); juddi = transport.getJUDDIApiService(); } // Now you create a reference to the UDDI API //security = transport.getUDDISecurityService(); //publish = transport.getUDDIPublishService(); } catch (Exception e) { e.printStackTrace(); } } static Node getCloudInstance() { Node n = new Node(); n.setClientName("juddicloud"); n.setName("juddicloud"); n.setCustodyTransferUrl("http://uddi-jbossoverlord.rhcloud.com/services/custody-transfer"); n.setDescription("juddicloud"); n.setProxyTransport("org.apache.juddi.v3.client.transport.JAXWSTransport"); n.setInquiryUrl("http://uddi-jbossoverlord.rhcloud.com/services/inquiry"); n.setJuddiApiUrl("http://uddi-jbossoverlord.rhcloud.com/services/juddi-api"); n.setPublishUrl("http://uddi-jbossoverlord.rhcloud.com/services/publish"); n.setSecurityUrl("http://uddi-jbossoverlord.rhcloud.com/services/security"); n.setSubscriptionListenerUrl("http://uddi-jbossoverlord.rhcloud.com/services/subscription-listener"); n.setSubscriptionUrl("http://uddi-jbossoverlord.rhcloud.com/services/subscription"); n.setReplicationUrl("uddi-jbossoverlord.rhcloud.com/services/replication"); return n; } JuddiAdminService(UDDIClient client, Transport transport, String currentNode) { curentnode = currentNode; try { clerkManager = client; if (transport == null) // 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"); //clerk = clerkManager.getClerk("default"); // The transport can be WS, inVM, RMI etc which is defined in the uddi.xml { transport = clerkManager.getTransport(); } // Now you create a reference to the UDDI API //security = transport.getUDDISecurityService(); //publish = transport.getUDDIPublishService(); juddi = transport.getJUDDIApiService(); } catch (Exception e) { e.printStackTrace(); } } String curentnode = "default"; /** * registers juddi's cloud node at another node * @param token */ public void quickRegisterRemoteCloud(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). SaveNode node = new SaveNode(); node.setAuthInfo(token); node.getNode().add(getCloudInstance()); PrintJUDDI<SaveNode> p = new PrintJUDDI<SaveNode>(); System.out.println("Before sending"); System.out.println(p.print(node)); juddi.saveNode(node); System.out.println("Saved"); } catch (Exception e) { e.printStackTrace(); } } void setupReplication() { throw new UnsupportedOperationException("Not supported yet."); //To change body of generated methods, choose Tools | Templates. } void viewRemoteNodes(String authtoken) throws ConfigurationException, TransportException, RemoteException { List<Node> uddiNodeList = clerkManager.getClientConfig().getUDDINodeList(); System.out.println(); System.out.println("Select a node (from *this config)"); for (int i = 0; i < uddiNodeList.size(); i++) { System.out.print(i + 1); System.out.println(") " + uddiNodeList.get(i).getName() + uddiNodeList.get(i).getDescription()); } System.out.println("Node #: "); int index = Integer.parseInt(System.console().readLine()) - 1; String node = uddiNodeList.get(index).getName(); Transport transport = clerkManager.getTransport(node); JUDDIApiPortType juddiApiService = transport.getJUDDIApiService(); NodeList allNodes = juddiApiService.getAllNodes(authtoken); if (allNodes == null || allNodes.getNode().isEmpty()) { System.out.println("No nodes registered!"); } else { for (int i = 0; i < allNodes.getNode().size(); i++) { System.out .println("_______________________________________________________________________________"); System.out.println("Name :" + allNodes.getNode().get(i).getName()); System.out.println("Inquiry :" + allNodes.getNode().get(i).getInquiryUrl()); System.out.println("Publish :" + allNodes.getNode().get(i).getPublishUrl()); System.out.println("Securit :" + allNodes.getNode().get(i).getSecurityUrl()); System.out.println("Replication :" + allNodes.getNode().get(i).getReplicationUrl()); System.out.println("Subscription :" + allNodes.getNode().get(i).getSubscriptionUrl()); System.out.println("Custody Xfer :" + allNodes.getNode().get(i).getCustodyTransferUrl()); } } } void quickRegisterLocalCloud() throws ConfigurationException { UDDINode node = new UDDINode(getCloudInstance()); clerkManager.getClientConfig().addUDDINode(node); clerkManager.getClientConfig().saveConfig(); System.out.println(); System.out.println("Added and saved."); } void registerLocalNodeToRemoteNode(String authtoken, Node cfg, Node publishTo) throws Exception { Transport transport = clerkManager.getTransport(publishTo.getName()); UDDISecurityPortType security2 = transport.getUDDISecurityService(); System.out.print("username: "); String uname = System.console().readLine(); char passwordArray[] = System.console().readPassword("password: "); GetAuthToken getAuthTokenRoot = new GetAuthToken(); getAuthTokenRoot.setUserID(uname); getAuthTokenRoot.setCred(new String(passwordArray)); authtoken = security2.getAuthToken(getAuthTokenRoot).getAuthInfo(); System.out.println("Success!"); JUDDIApiPortType juddiApiService = transport.getJUDDIApiService(); SaveNode sn = new SaveNode(); sn.setAuthInfo(authtoken); sn.getNode().add(cfg); NodeDetail saveNode = juddiApiService.saveNode(sn); JAXB.marshal(saveNode, System.out); System.out.println("Success."); } void viewReplicationConfig(String authtoken, String node) throws Exception { Transport transport = clerkManager.getTransport(node); JUDDIApiPortType juddiApiService = transport.getJUDDIApiService(); ReplicationConfiguration replicationNodes = juddiApiService.getReplicationNodes(authtoken); System.out.println("Current Config:"); JAXB.marshal(replicationNodes, System.out); } void setReplicationConfig(String authtoken) throws Exception { List<Node> uddiNodeList = clerkManager.getClientConfig().getUDDINodeList(); System.out.println(); System.out.println("Select a node (from *this config)"); for (int i = 0; i < uddiNodeList.size(); i++) { System.out.print(i + 1); System.out.println(") " + uddiNodeList.get(i).getName() + uddiNodeList.get(i).getDescription()); } System.out.println("Node #: "); int index = Integer.parseInt(System.console().readLine()) - 1; String node = uddiNodeList.get(index).getName(); Transport transport = clerkManager.getTransport(node); JUDDIApiPortType juddiApiService = transport.getJUDDIApiService(); System.out.println("fetching..."); //NodeList allNodes = juddiApiService.getAllNodes(authtoken); ReplicationConfiguration replicationNodes = null; try { replicationNodes = juddiApiService.getReplicationNodes(authtoken); } catch (Exception ex) { System.out.println("Error getting replication config"); ex.printStackTrace(); replicationNodes = new ReplicationConfiguration(); } String input = ""; while (!"d".equalsIgnoreCase(input) && !"q".equalsIgnoreCase(input)) { System.out.println("Current Config:"); JAXB.marshal(replicationNodes, System.out); System.out.println("1) Remove a replication node"); System.out.println("2) Add a replication node"); System.out.println("3) Remove an Edge"); System.out.println("4) Add an Edge"); System.out.println("5) Set Registry Contact"); System.out.println("6) Add Operator info"); System.out.println("7) Remove Operator info"); System.out.println("d) Done, save changes"); System.out.println("q) Quit and abandon changes"); input = System.console().readLine(); if (input.equalsIgnoreCase("1")) { menu_RemoveReplicationNode(replicationNodes); } else if (input.equalsIgnoreCase("2")) { menu_AddReplicationNode(replicationNodes, juddiApiService, authtoken); } else if (input.equalsIgnoreCase("d")) { if (replicationNodes.getCommunicationGraph() == null) { replicationNodes.setCommunicationGraph(new CommunicationGraph()); } if (replicationNodes.getRegistryContact() == null) { replicationNodes.setRegistryContact(new ReplicationConfiguration.RegistryContact()); } if (replicationNodes.getRegistryContact().getContact() == null) { replicationNodes.getRegistryContact().setContact(new Contact()); replicationNodes.getRegistryContact().getContact().getPersonName() .add(new PersonName("unknown", null)); } replicationNodes.setSerialNumber(0L); replicationNodes.setTimeOfConfigurationUpdate(""); replicationNodes.setMaximumTimeToGetChanges(BigInteger.ONE); replicationNodes.setMaximumTimeToSyncRegistry(BigInteger.ONE); JAXB.marshal(replicationNodes, System.out); juddiApiService.setReplicationNodes(authtoken, replicationNodes); } } if (input.equalsIgnoreCase("d")) { //save the changes DispositionReport setReplicationNodes = juddiApiService.setReplicationNodes(authtoken, replicationNodes); System.out.println("Saved!, dumping config from the server"); replicationNodes = juddiApiService.getReplicationNodes(authtoken); JAXB.marshal(replicationNodes, System.out); } else { //quit this sub menu System.out.println("aborting!"); } } void viewRemoveRemoteNode(String authtoken) throws Exception { List<Node> uddiNodeList = clerkManager.getClientConfig().getUDDINodeList(); System.out.println(); System.out.println("Select a node (from *this config)"); for (int i = 0; i < uddiNodeList.size(); i++) { System.out.print(i + 1); System.out.println(") " + uddiNodeList.get(i).getName() + uddiNodeList.get(i).getDescription()); } System.out.println("Node #: "); int index = Integer.parseInt(System.console().readLine()) - 1; String node = uddiNodeList.get(index).getName(); Transport transport = clerkManager.getTransport(node); JUDDIApiPortType juddiApiService = transport.getJUDDIApiService(); NodeList allNodes = juddiApiService.getAllNodes(authtoken); if (allNodes == null || allNodes.getNode().isEmpty()) { System.out.println("No nodes registered!"); } else { for (int i = 0; i < allNodes.getNode().size(); i++) { System.out .println("_______________________________________________________________________________"); System.out.println("(" + i + ") Name :" + allNodes.getNode().get(i).getName()); System.out.println("(" + i + ") Inquiry :" + allNodes.getNode().get(i).getInquiryUrl()); } System.out.println("Node to remove from : "); int nodenum = Integer.parseInt(System.console().readLine()); juddiApiService.deleteNode(new DeleteNode(authtoken, allNodes.getNode().get(nodenum).getName())); } } private void menu_RemoveReplicationNode(ReplicationConfiguration replicationNodes) { if (replicationNodes.getCommunicationGraph() == null) { replicationNodes.setCommunicationGraph(new CommunicationGraph()); } for (int i = 0; i < replicationNodes.getCommunicationGraph().getNode().size(); i++) { System.out.println((i + 1) + ") " + replicationNodes.getCommunicationGraph().getNode().get(i)); } System.out.println("Node #: "); int index = Integer.parseInt(System.console().readLine()) - 1; replicationNodes.getCommunicationGraph().getNode().remove(index); } private void menu_AddReplicationNode(ReplicationConfiguration replicationNodes, JUDDIApiPortType juddiApiService, String authtoken) throws Exception { if (replicationNodes.getCommunicationGraph() == null) { replicationNodes.setCommunicationGraph(new CommunicationGraph()); } Operator op = new Operator(); System.out.println( "The Operator Node id should be the UDDI Node ID of the new node to replicate with. It should also match the root business key in" + " the new registry."); System.out.print("Operator Node id: "); op.setOperatorNodeID(System.console().readLine().trim()); System.out.print("Replication URL: "); op.setSoapReplicationURL(System.console().readLine().trim()); op.setOperatorStatus(OperatorStatusType.NEW); System.out.println("The replication node requires at least one point of contact"); System.out.print("Number of contacts: "); int index = Integer.parseInt(System.console().readLine()); for (int i = 0; i < index; i++) { System.out.println("_______________________"); System.out.println("Info for contact # " + (i + 1)); op.getContact().add(getContactInfo()); } System.out.println("_______________________"); System.out.println("Current Operator:"); System.out.println("_______________________"); JAXB.marshal(op, System.out); System.out.print("Confirm adding? (y/n) :"); if (System.console().readLine().trim().equalsIgnoreCase("y")) { replicationNodes.getOperator().add(op); replicationNodes.getCommunicationGraph().getNode().add(op.getOperatorNodeID()); } } private Contact getContactInfo() { Contact c = new Contact(); System.out.print("Use Type (i.e. primary): "); c.setUseType(System.console().readLine().trim()); if (c.getUseType().trim().equalsIgnoreCase("")) { c.setUseType("primary"); } c.getPersonName().add(getPersonName()); while (true) { System.out.println("Thus far:"); JAXB.marshal(c, System.out); System.out.println("Options:"); System.out.println("\t1) Add PersonName"); System.out.println("\t2) Add Email address"); System.out.println("\t3) Add Phone number"); System.out.println("\t4) Add Description"); System.out.println("\t<enter> Finish and return"); System.out.print("> "); String input = System.console().readLine(); if (input.trim().equalsIgnoreCase("")) { break; } else if (input.trim().equalsIgnoreCase("1")) { c.getPersonName().add(getPersonName()); } else if (input.trim().equalsIgnoreCase("2")) { c.getEmail().add(getEmail()); } else if (input.trim().equalsIgnoreCase("3")) { c.getPhone().add(getPhoneNumber()); } else if (input.trim().equalsIgnoreCase("4")) { c.getDescription().add(getDescription()); } } return c; } private PersonName getPersonName() { PersonName pn = new PersonName(); System.out.print("Name: "); pn.setValue(System.console().readLine().trim()); System.out.print("Language (en): "); pn.setLang(System.console().readLine().trim()); if (pn.getLang().equalsIgnoreCase("")) { pn.setLang("en"); } return pn; } private Email getEmail() { Email pn = new Email(); System.out.print("Email address Value: "); pn.setValue(System.console().readLine().trim()); System.out.print("Use type (i.e. primary): "); pn.setUseType(System.console().readLine().trim()); return pn; } private Phone getPhoneNumber() { Phone pn = new Phone(); System.out.print("Phone Value: "); pn.setValue(System.console().readLine().trim()); System.out.print("Use type (i.e. primary): "); pn.setUseType(System.console().readLine().trim()); return pn; } private Description getDescription() { Description pn = new Description(); System.out.print("Value: "); pn.setValue(System.console().readLine().trim()); System.out.print("Language (en): "); pn.setLang(System.console().readLine().trim()); if (pn.getLang().equalsIgnoreCase("")) { pn.setLang("en"); } return pn; } void autoMagic123() throws Exception { //1 > 2 >3 >1 List<Node> uddiNodeList = clerkManager.getClientConfig().getUDDINodeList(); Transport transport = clerkManager.getTransport("default"); String authtoken = transport.getUDDISecurityService().getAuthToken(new GetAuthToken("root", "root")) .getAuthInfo(); JUDDIApiPortType juddiApiService = transport.getJUDDIApiService(); System.out.println("fetching..."); ReplicationConfiguration replicationNodes = null; try { replicationNodes = juddiApiService.getReplicationNodes(authtoken); } catch (Exception ex) { System.out.println("Error getting replication config"); ex.printStackTrace(); replicationNodes = new ReplicationConfiguration(); } if (replicationNodes.getCommunicationGraph() == null) { replicationNodes.setCommunicationGraph(new CommunicationGraph()); } Operator op = new Operator(); op.setOperatorNodeID("uddi:juddi.apache.org:node1"); op.setSoapReplicationURL(clerkManager.getClientConfig().getUDDINode("default").getReplicationUrl()); op.setOperatorStatus(OperatorStatusType.NORMAL); op.getContact().add(new Contact()); op.getContact().get(0).getPersonName().add(new PersonName("bob", "en")); op.getContact().get(0).setUseType("admin"); replicationNodes.getOperator().clear(); replicationNodes.getOperator().add(op); op = new Operator(); op.setOperatorNodeID("uddi:another.juddi.apache.org:node2"); op.setSoapReplicationURL(clerkManager.getClientConfig().getUDDINode("uddi:another.juddi.apache.org:node2") .getReplicationUrl()); op.setOperatorStatus(OperatorStatusType.NORMAL); op.getContact().add(new Contact()); op.getContact().get(0).getPersonName().add(new PersonName("mary", "en")); op.getContact().get(0).setUseType("admin"); replicationNodes.getOperator().add(op); op = new Operator(); op.setOperatorNodeID("uddi:yet.another.juddi.apache.org:node3"); op.setSoapReplicationURL(clerkManager.getClientConfig() .getUDDINode("uddi:yet.another.juddi.apache.org:node3").getReplicationUrl()); op.setOperatorStatus(OperatorStatusType.NORMAL); op.getContact().add(new Contact()); op.getContact().get(0).getPersonName().add(new PersonName("mary", "en")); op.getContact().get(0).setUseType("admin"); replicationNodes.getOperator().add(op); replicationNodes.getCommunicationGraph().getNode().add("uddi:another.juddi.apache.org:node2"); replicationNodes.getCommunicationGraph().getNode().add("uddi:juddi.apache.org:node1"); replicationNodes.getCommunicationGraph().getNode().add("uddi:yet.another.juddi.apache.org:node3"); replicationNodes.setSerialNumber(0L); replicationNodes.setTimeOfConfigurationUpdate(""); replicationNodes.setMaximumTimeToGetChanges(BigInteger.ONE); replicationNodes.setMaximumTimeToSyncRegistry(BigInteger.ONE); if (replicationNodes.getRegistryContact().getContact() == null) { replicationNodes.getRegistryContact().setContact(new Contact()); replicationNodes.getRegistryContact().getContact().getPersonName().add(new PersonName("unknown", null)); } JAXB.marshal(replicationNodes, System.out); juddiApiService.setReplicationNodes(authtoken, replicationNodes); transport = clerkManager.getTransport("uddi:another.juddi.apache.org:node2"); authtoken = transport.getUDDISecurityService().getAuthToken(new GetAuthToken("root", "root")).getAuthInfo(); juddiApiService = transport.getJUDDIApiService(); juddiApiService.setReplicationNodes(authtoken, replicationNodes); transport = clerkManager.getTransport("uddi:yet.another.juddi.apache.org:node3"); authtoken = transport.getUDDISecurityService().getAuthToken(new GetAuthToken("root", "root")).getAuthInfo(); juddiApiService = transport.getJUDDIApiService(); juddiApiService.setReplicationNodes(authtoken, replicationNodes); } void autoMagicDirected() throws Exception { //1 > 2 >3 >1 List<Node> uddiNodeList = clerkManager.getClientConfig().getUDDINodeList(); Transport transport = clerkManager.getTransport("default"); String authtoken = transport.getUDDISecurityService().getAuthToken(new GetAuthToken("root", "root")) .getAuthInfo(); JUDDIApiPortType juddiApiService = transport.getJUDDIApiService(); System.out.println("fetching..."); ReplicationConfiguration replicationNodes = null; try { replicationNodes = juddiApiService.getReplicationNodes(authtoken); } catch (Exception ex) { System.out.println("Error getting replication config"); ex.printStackTrace(); replicationNodes = new ReplicationConfiguration(); } if (replicationNodes.getCommunicationGraph() == null) { replicationNodes.setCommunicationGraph(new CommunicationGraph()); } Operator op = new Operator(); op.setOperatorNodeID("uddi:juddi.apache.org:node1"); op.setSoapReplicationURL(clerkManager.getClientConfig().getUDDINode("default").getReplicationUrl()); op.setOperatorStatus(OperatorStatusType.NORMAL); op.getContact().add(new Contact()); op.getContact().get(0).getPersonName().add(new PersonName("bob", "en")); op.getContact().get(0).setUseType("admin"); replicationNodes.getOperator().clear(); replicationNodes.getOperator().add(op); op = new Operator(); op.setOperatorNodeID("uddi:another.juddi.apache.org:node2"); op.setSoapReplicationURL(clerkManager.getClientConfig().getUDDINode("uddi:another.juddi.apache.org:node2") .getReplicationUrl()); op.setOperatorStatus(OperatorStatusType.NORMAL); op.getContact().add(new Contact()); op.getContact().get(0).getPersonName().add(new PersonName("mary", "en")); op.getContact().get(0).setUseType("admin"); replicationNodes.getOperator().add(op); op = new Operator(); op.setOperatorNodeID("uddi:yet.another.juddi.apache.org:node3"); op.setSoapReplicationURL(clerkManager.getClientConfig() .getUDDINode("uddi:yet.another.juddi.apache.org:node3").getReplicationUrl()); op.setOperatorStatus(OperatorStatusType.NORMAL); op.getContact().add(new Contact()); op.getContact().get(0).getPersonName().add(new PersonName("mary", "en")); op.getContact().get(0).setUseType("admin"); replicationNodes.getOperator().add(op); replicationNodes.getCommunicationGraph().getNode().clear(); replicationNodes.getCommunicationGraph().getNode().add("uddi:another.juddi.apache.org:node2"); replicationNodes.getCommunicationGraph().getNode().add("uddi:juddi.apache.org:node1"); replicationNodes.getCommunicationGraph().getNode().add("uddi:yet.another.juddi.apache.org:node3"); replicationNodes.getCommunicationGraph().getEdge().clear(); Edge e = new CommunicationGraph.Edge(); e.setMessageSender("uddi:juddi.apache.org:node1"); e.setMessageReceiver("uddi:another.juddi.apache.org:node2"); replicationNodes.getCommunicationGraph().getEdge().add(e); e = new CommunicationGraph.Edge(); e.setMessageSender("uddi:another.juddi.apache.org:node2"); e.setMessageReceiver("uddi:yet.another.juddi.apache.org:node3"); replicationNodes.getCommunicationGraph().getEdge().add(e); e = new CommunicationGraph.Edge(); e.setMessageSender("uddi:yet.another.juddi.apache.org:node3"); e.setMessageReceiver("uddi:juddi.apache.org:node1"); replicationNodes.getCommunicationGraph().getEdge().add(e); replicationNodes.setSerialNumber(0L); replicationNodes.setTimeOfConfigurationUpdate(""); replicationNodes.setMaximumTimeToGetChanges(BigInteger.ONE); replicationNodes.setMaximumTimeToSyncRegistry(BigInteger.ONE); if (replicationNodes.getRegistryContact().getContact() == null) { replicationNodes.getRegistryContact().setContact(new Contact()); replicationNodes.getRegistryContact().getContact().getPersonName().add(new PersonName("unknown", null)); } JAXB.marshal(replicationNodes, System.out); juddiApiService.setReplicationNodes(authtoken, replicationNodes); System.out.println("Saved to node1"); TestEquals(replicationNodes, juddiApiService.getReplicationNodes(authtoken)); transport = clerkManager.getTransport("uddi:another.juddi.apache.org:node2"); authtoken = transport.getUDDISecurityService().getAuthToken(new GetAuthToken("root", "root")).getAuthInfo(); juddiApiService = transport.getJUDDIApiService(); juddiApiService.setReplicationNodes(authtoken, replicationNodes); System.out.println("Saved to node2"); TestEquals(replicationNodes, juddiApiService.getReplicationNodes(authtoken)); transport = clerkManager.getTransport("uddi:yet.another.juddi.apache.org:node3"); authtoken = transport.getUDDISecurityService().getAuthToken(new GetAuthToken("root", "root")).getAuthInfo(); juddiApiService = transport.getJUDDIApiService(); juddiApiService.setReplicationNodes(authtoken, replicationNodes); System.out.println("Saved to node3"); TestEquals(replicationNodes, juddiApiService.getReplicationNodes(authtoken)); } void autoMagic() throws Exception { List<Node> uddiNodeList = clerkManager.getClientConfig().getUDDINodeList(); Transport transport = clerkManager.getTransport("default"); String authtoken = transport.getUDDISecurityService().getAuthToken(new GetAuthToken("root", "root")) .getAuthInfo(); JUDDIApiPortType juddiApiService = transport.getJUDDIApiService(); System.out.println("fetching..."); ReplicationConfiguration replicationNodes = null; try { replicationNodes = juddiApiService.getReplicationNodes(authtoken); } catch (Exception ex) { System.out.println("Error getting replication config"); ex.printStackTrace(); replicationNodes = new ReplicationConfiguration(); } //if (replicationNodes.getCommunicationGraph() == null) { replicationNodes.setCommunicationGraph(new CommunicationGraph()); //} Operator op = new Operator(); op.setOperatorNodeID("uddi:juddi.apache.org:node1"); op.setSoapReplicationURL(clerkManager.getClientConfig().getUDDINode("default").getReplicationUrl()); op.setOperatorStatus(OperatorStatusType.NORMAL); op.getContact().add(new Contact()); op.getContact().get(0).getPersonName().add(new PersonName("bob", "en")); op.getContact().get(0).setUseType("admin"); replicationNodes.getOperator().clear(); replicationNodes.getOperator().add(op); op = new Operator(); op.setOperatorNodeID("uddi:another.juddi.apache.org:node2"); op.setSoapReplicationURL(clerkManager.getClientConfig().getUDDINode("uddi:another.juddi.apache.org:node2") .getReplicationUrl()); op.setOperatorStatus(OperatorStatusType.NORMAL); op.getContact().add(new Contact()); op.getContact().get(0).getPersonName().add(new PersonName("mary", "en")); op.getContact().get(0).setUseType("admin"); replicationNodes.getOperator().add(op); replicationNodes.getCommunicationGraph().getNode().add("uddi:another.juddi.apache.org:node2"); replicationNodes.getCommunicationGraph().getNode().add("uddi:juddi.apache.org:node1"); replicationNodes.setSerialNumber(0L); replicationNodes.setTimeOfConfigurationUpdate(""); replicationNodes.setMaximumTimeToGetChanges(BigInteger.ONE); replicationNodes.setMaximumTimeToSyncRegistry(BigInteger.ONE); if (replicationNodes.getRegistryContact().getContact() == null) { replicationNodes.getRegistryContact().setContact(new Contact()); replicationNodes.getRegistryContact().getContact().getPersonName().add(new PersonName("unknown", null)); } JAXB.marshal(replicationNodes, System.out); juddiApiService.setReplicationNodes(authtoken, replicationNodes); transport = clerkManager.getTransport("uddi:another.juddi.apache.org:node2"); authtoken = transport.getUDDISecurityService().getAuthToken(new GetAuthToken("root", "root")).getAuthInfo(); juddiApiService = transport.getJUDDIApiService(); juddiApiService.setReplicationNodes(authtoken, replicationNodes); } void autoMagic3() throws Exception { List<Node> uddiNodeList = clerkManager.getClientConfig().getUDDINodeList(); Transport transport = clerkManager.getTransport("default"); String authtoken = transport.getUDDISecurityService().getAuthToken(new GetAuthToken("root", "root")) .getAuthInfo(); JUDDIApiPortType juddiApiService = transport.getJUDDIApiService(); System.out.println("fetching..."); ReplicationConfiguration replicationNodes = null; try { replicationNodes = juddiApiService.getReplicationNodes(authtoken); } catch (Exception ex) { System.out.println("Error getting replication config"); ex.printStackTrace(); replicationNodes = new ReplicationConfiguration(); } if (replicationNodes.getCommunicationGraph() == null) { replicationNodes.setCommunicationGraph(new CommunicationGraph()); } Operator op = new Operator(); op.setOperatorNodeID("uddi:juddi.apache.org:node1"); op.setSoapReplicationURL(clerkManager.getClientConfig().getUDDINode("default").getReplicationUrl()); op.setOperatorStatus(OperatorStatusType.NORMAL); op.getContact().add(new Contact()); op.getContact().get(0).getPersonName().add(new PersonName("bob", "en")); op.getContact().get(0).setUseType("admin"); replicationNodes.getOperator().clear(); replicationNodes.getOperator().add(op); op = new Operator(); op.setOperatorNodeID("uddi:another.juddi.apache.org:node2"); op.setSoapReplicationURL(clerkManager.getClientConfig().getUDDINode("uddi:another.juddi.apache.org:node2") .getReplicationUrl()); op.setOperatorStatus(OperatorStatusType.NORMAL); op.getContact().add(new Contact()); op.getContact().get(0).getPersonName().add(new PersonName("mary", "en")); op.getContact().get(0).setUseType("admin"); replicationNodes.getOperator().add(op); op = new Operator(); op.setOperatorNodeID("uddi:yet.another.juddi.apache.org:node3"); op.setSoapReplicationURL(clerkManager.getClientConfig() .getUDDINode("uddi:yet.another.juddi.apache.org:node3").getReplicationUrl()); op.setOperatorStatus(OperatorStatusType.NORMAL); op.getContact().add(new Contact()); op.getContact().get(0).getPersonName().add(new PersonName("mary", "en")); op.getContact().get(0).setUseType("admin"); replicationNodes.getOperator().add(op); replicationNodes.getCommunicationGraph().getNode().add("uddi:another.juddi.apache.org:node2"); replicationNodes.getCommunicationGraph().getNode().add("uddi:yet.another.juddi.apache.org:node3"); replicationNodes.getCommunicationGraph().getNode().add("uddi:juddi.apache.org:node1"); replicationNodes.setSerialNumber(0L); replicationNodes.setTimeOfConfigurationUpdate(""); replicationNodes.setMaximumTimeToGetChanges(BigInteger.ONE); replicationNodes.setMaximumTimeToSyncRegistry(BigInteger.ONE); if (replicationNodes.getRegistryContact().getContact() == null) { replicationNodes.getRegistryContact().setContact(new Contact()); replicationNodes.getRegistryContact().getContact().getPersonName().add(new PersonName("unknown", null)); } JAXB.marshal(replicationNodes, System.out); juddiApiService.setReplicationNodes(authtoken, replicationNodes); transport = clerkManager.getTransport("uddi:another.juddi.apache.org:node2"); authtoken = transport.getUDDISecurityService().getAuthToken(new GetAuthToken("root", "root")).getAuthInfo(); juddiApiService = transport.getJUDDIApiService(); juddiApiService.setReplicationNodes(authtoken, replicationNodes); transport = clerkManager.getTransport("uddi:yet.another.juddi.apache.org:node3"); authtoken = transport.getUDDISecurityService().getAuthToken(new GetAuthToken("root", "root")).getAuthInfo(); juddiApiService = transport.getJUDDIApiService(); juddiApiService.setReplicationNodes(authtoken, replicationNodes); } /** * gets replication high water mark values * @param transport * @param authtoken * @throws Exception */ void printStatus(Transport transport, String authtoken) throws Exception { JUDDIApiPortType juddiApiService = transport.getJUDDIApiService(); System.out.println("fetching..."); ReplicationConfiguration replicationNodes = null; try { replicationNodes = juddiApiService.getReplicationNodes(authtoken); } catch (Exception ex) { System.out.println("Error getting replication config"); ex.printStackTrace(); replicationNodes = new ReplicationConfiguration(); } UDDIReplicationPortType uddiReplicationPort = new UDDIService().getUDDIReplicationPort(); for (Operator o : replicationNodes.getOperator()) { System.out.println("*******************\n\rstats for node " + o.getOperatorNodeID()); ((BindingProvider) uddiReplicationPort).getRequestContext() .put(BindingProvider.ENDPOINT_ADDRESS_PROPERTY, o.getSoapReplicationURL()); List<ChangeRecordIDType> highWaterMarks = uddiReplicationPort.getHighWaterMarks(); for (ChangeRecordIDType cr : highWaterMarks) { JAXB.marshal(cr, System.out); } } } void printStatus() throws Exception { //List<Node> uddiNodeList = clerkManager.getClientConfig().getUDDINodeList(); Transport transport = clerkManager.getTransport("default"); String authtoken = transport.getUDDISecurityService().getAuthToken(new GetAuthToken("root", "root")) .getAuthInfo(); JUDDIApiPortType juddiApiService = transport.getJUDDIApiService(); System.out.println("fetching..."); ReplicationConfiguration replicationNodes = null; try { replicationNodes = juddiApiService.getReplicationNodes(authtoken); } catch (Exception ex) { System.out.println("Error getting replication config"); ex.printStackTrace(); replicationNodes = new ReplicationConfiguration(); } UDDIReplicationPortType uddiReplicationPort = new UDDIService().getUDDIReplicationPort(); for (Operator o : replicationNodes.getOperator()) { System.out.println("*******************\n\rstats for node " + o.getOperatorNodeID()); ((BindingProvider) uddiReplicationPort).getRequestContext() .put(BindingProvider.ENDPOINT_ADDRESS_PROPERTY, o.getSoapReplicationURL()); List<ChangeRecordIDType> highWaterMarks = uddiReplicationPort.getHighWaterMarks(); for (ChangeRecordIDType cr : highWaterMarks) { JAXB.marshal(cr, System.out); } } } private void TestEquals(ReplicationConfiguration setter, ReplicationConfiguration getter) { if (getter == null) { l("null getter"); return; } if (setter == null) { l("null setter"); return; } if (getter.getOperator().size() != setter.getOperator().size()) { l("operator size mismatch"); return; } if (getter.getCommunicationGraph().getNode().size() != setter.getCommunicationGraph().getNode().size()) { l("comm/node size mismatch"); return; } if (getter.getCommunicationGraph().getEdge().size() != setter.getCommunicationGraph().getEdge().size()) { l("comm/node size mismatch"); return; } } private void l(String msg) { System.out.println(msg); } void dumpFailedReplicationRecords(String authtoken) throws Exception { GetFailedReplicationChangeRecordsMessageRequest req = new GetFailedReplicationChangeRecordsMessageRequest(); req.setAuthInfo(authtoken); req.setMaxRecords(20); req.setOffset(0); GetFailedReplicationChangeRecordsMessageResponse failedReplicationChangeRecords = juddi .getFailedReplicationChangeRecords(req); while (failedReplicationChangeRecords != null && failedReplicationChangeRecords.getChangeRecords() != null && !failedReplicationChangeRecords.getChangeRecords().getChangeRecord().isEmpty()) { for (int i = 0; i < failedReplicationChangeRecords.getChangeRecords().getChangeRecord().size(); i++) { JAXB.marshal(failedReplicationChangeRecords.getChangeRecords().getChangeRecord().get(i), System.out); } req.setOffset( req.getOffset() + failedReplicationChangeRecords.getChangeRecords().getChangeRecord().size()); failedReplicationChangeRecords = juddi.getFailedReplicationChangeRecords(req); } } void printStatusSingleNode(Transport transport, String authtoken) throws Exception { String replicationUrl = clerkManager.getClientConfig().getUDDINode(curentnode).getReplicationUrl(); SSLContext sc = SSLContext.getInstance("SSLv3"); KeyManagerFactory kmf = KeyManagerFactory.getInstance(KeyManagerFactory.getDefaultAlgorithm()); KeyStore ks = KeyStore.getInstance(KeyStore.getDefaultType()); ks.load(new FileInputStream(System.getProperty("javax.net.ssl.keyStore")), System.getProperty("javax.net.ssl.keyStorePassword").toCharArray()); kmf.init(ks, System.getProperty("javax.net.ssl.keyStorePassword").toCharArray()); sc.init(kmf.getKeyManagers(), null, null); UDDIReplicationPortType uddiReplicationPort = new UDDIService().getUDDIReplicationPort(); ((BindingProvider) uddiReplicationPort).getRequestContext().put(BindingProvider.ENDPOINT_ADDRESS_PROPERTY, replicationUrl); ((BindingProvider) uddiReplicationPort).getRequestContext() .put("com.sun.xml.internal.ws.transport.https.client.SSLSocketFactory", sc.getSocketFactory()); /*((BindingProvider) uddiReplicationPort).getRequestContext() .put( JAXWSProperties.SSL_SOCKET_FACTORY, sc.getSocketFactory());*/ String doPing = uddiReplicationPort.doPing(new DoPing()); System.out.println(doPing + ".., success"); } void autoMagicDirectedSSL() throws Exception { //1 > 2 >3 >1 List<Node> uddiNodeList = clerkManager.getClientConfig().getUDDINodeList(); Transport transport = clerkManager.getTransport("default"); String authtoken = transport.getUDDISecurityService().getAuthToken(new GetAuthToken("root", "root")) .getAuthInfo(); JUDDIApiPortType juddiApiService = transport.getJUDDIApiService(); System.out.println("fetching..."); ReplicationConfiguration replicationNodes = null; try { replicationNodes = juddiApiService.getReplicationNodes(authtoken); } catch (Exception ex) { System.out.println("Error getting replication config"); ex.printStackTrace(); replicationNodes = new ReplicationConfiguration(); } //if (replicationNodes.getCommunicationGraph() == null) { replicationNodes.setCommunicationGraph(new CommunicationGraph()); //} Operator op = new Operator(); op.setOperatorNodeID("uddi:juddi.apache.org:node1"); op.setSoapReplicationURL(clerkManager.getClientConfig().getUDDINode("default").getReplicationUrl()); op.setOperatorStatus(OperatorStatusType.NORMAL); op.getContact().add(new Contact()); op.getContact().get(0).getPersonName().add(new PersonName("bob", "en")); op.getContact().get(0).setUseType("admin"); replicationNodes.getOperator().clear(); replicationNodes.getOperator().add(op); op = new Operator(); op.setOperatorNodeID("uddi:another.juddi.apache.org:node2"); op.setSoapReplicationURL(clerkManager.getClientConfig().getUDDINode("uddi:another.juddi.apache.org:node2") .getReplicationUrl()); op.setOperatorStatus(OperatorStatusType.NORMAL); op.getContact().add(new Contact()); op.getContact().get(0).getPersonName().add(new PersonName("mary", "en")); op.getContact().get(0).setUseType("admin"); replicationNodes.getOperator().add(op); op = new Operator(); op.setOperatorNodeID("uddi:yet.another.juddi.apache.org:node3"); op.setSoapReplicationURL(clerkManager.getClientConfig() .getUDDINode("uddi:yet.another.juddi.apache.org:node3").getReplicationUrl()); op.setOperatorStatus(OperatorStatusType.NORMAL); op.getContact().add(new Contact()); op.getContact().get(0).getPersonName().add(new PersonName("mary", "en")); op.getContact().get(0).setUseType("admin"); replicationNodes.getOperator().add(op); replicationNodes.getCommunicationGraph().getNode().clear(); replicationNodes.getCommunicationGraph().getNode().add("uddi:another.juddi.apache.org:node2"); replicationNodes.getCommunicationGraph().getNode().add("uddi:juddi.apache.org:node1"); replicationNodes.getCommunicationGraph().getNode().add("uddi:yet.another.juddi.apache.org:node3"); replicationNodes.getCommunicationGraph().getEdge().clear(); Edge e = new CommunicationGraph.Edge(); e.setMessageSender("uddi:juddi.apache.org:node1"); e.setMessageReceiver("uddi:another.juddi.apache.org:node2"); replicationNodes.getCommunicationGraph().getEdge().add(e); e = new CommunicationGraph.Edge(); e.setMessageSender("uddi:another.juddi.apache.org:node2"); e.setMessageReceiver("uddi:yet.another.juddi.apache.org:node3"); replicationNodes.getCommunicationGraph().getEdge().add(e); e = new CommunicationGraph.Edge(); e.setMessageSender("uddi:yet.another.juddi.apache.org:node3"); e.setMessageReceiver("uddi:juddi.apache.org:node1"); replicationNodes.getCommunicationGraph().getEdge().add(e); replicationNodes.setSerialNumber(0L); replicationNodes.setTimeOfConfigurationUpdate(""); replicationNodes.setMaximumTimeToGetChanges(BigInteger.ONE); replicationNodes.setMaximumTimeToSyncRegistry(BigInteger.ONE); if (replicationNodes.getRegistryContact().getContact() == null) { replicationNodes.getRegistryContact().setContact(new Contact()); replicationNodes.getRegistryContact().getContact().getPersonName().add(new PersonName("unknown", null)); } JAXB.marshal(replicationNodes, System.out); juddiApiService.setReplicationNodes(authtoken, replicationNodes); System.out.println("Saved to node1"); TestEquals(replicationNodes, juddiApiService.getReplicationNodes(authtoken)); transport = clerkManager.getTransport("uddi:another.juddi.apache.org:node2"); authtoken = transport.getUDDISecurityService().getAuthToken(new GetAuthToken("root", "root")).getAuthInfo(); juddiApiService = transport.getJUDDIApiService(); juddiApiService.setReplicationNodes(authtoken, replicationNodes); System.out.println("Saved to node2"); TestEquals(replicationNodes, juddiApiService.getReplicationNodes(authtoken)); transport = clerkManager.getTransport("uddi:yet.another.juddi.apache.org:node3"); authtoken = transport.getUDDISecurityService().getAuthToken(new GetAuthToken("root", "root")).getAuthInfo(); juddiApiService = transport.getJUDDIApiService(); juddiApiService.setReplicationNodes(authtoken, replicationNodes); System.out.println("Saved to node3"); TestEquals(replicationNodes, juddiApiService.getReplicationNodes(authtoken)); } void pingAll() throws Exception { List<Node> uddiNodeList = clerkManager.getClientConfig().getUDDINodeList(); UDDIReplicationPortType uddiReplicationPort = new UDDIService().getUDDIReplicationPort(); TransportSecurityHelper.applyTransportSecurity((BindingProvider) uddiReplicationPort); for (Node currenteNode : uddiNodeList) { try { String replicationUrl = clerkManager.getClientConfig().getUDDINode(currenteNode.getName()) .getReplicationUrl(); ((BindingProvider) uddiReplicationPort).getRequestContext() .put(BindingProvider.ENDPOINT_ADDRESS_PROPERTY, replicationUrl); long now = System.currentTimeMillis(); String doPing = uddiReplicationPort.doPing(new DoPing()); System.out.println(replicationUrl + " " + currenteNode.getName() + " says it's node id is " + doPing + " (took " + (System.currentTimeMillis() - now) + "ms)"); } catch (Exception ex) { System.out.println("Error! " + currenteNode.getName() + " " + currenteNode.getReplicationUrl()); ex.printStackTrace(); } } } }