JUDDI-241 working change journal NOJIRA removing a number of unnecessary TODO statements
Project: http://git-wip-us.apache.org/repos/asf/juddi/repo Commit: http://git-wip-us.apache.org/repos/asf/juddi/commit/8b95902b Tree: http://git-wip-us.apache.org/repos/asf/juddi/tree/8b95902b Diff: http://git-wip-us.apache.org/repos/asf/juddi/diff/8b95902b Branch: refs/heads/JUDDI-241 Commit: 8b95902bbf54751cc0d8891cebfae12d2b211660 Parents: fd1ac2c Author: alexoree <[email protected]> Authored: Thu Nov 13 21:36:18 2014 -0500 Committer: alexoree <[email protected]> Committed: Thu Nov 13 21:36:20 2014 -0500 ---------------------------------------------------------------------- .../juddi/v3/client/config/ClientConfig.java | 4 +- .../juddi/v3/client/config/UDDIClerk.java | 1 - .../apache/juddi/v3/client/config/UDDINode.java | 2 +- .../juddi/v3/client/mapping/ServiceLocator.java | 2 +- .../apache/juddi/v3/client/UDDIClientTest.java | 4 - .../juddi/api/impl/AuthenticatedService.java | 14 +- .../org/apache/juddi/api/impl/JUDDIApiImpl.java | 186 +- .../juddi/api/impl/UDDICustodyTransferImpl.java | 469 ++-- .../juddi/api/impl/UDDIPublicationImpl.java | 2047 +++++++++++------- .../juddi/api/impl/UDDIReplicationImpl.java | 501 ++++- .../java/org/apache/juddi/config/Install.java | 12 +- .../apache/juddi/mapping/MappingApiToModel.java | 468 ++-- .../apache/juddi/mapping/MappingModelToApi.java | 54 +- .../org/apache/juddi/model/ChangeRecord.java | 65 +- .../main/java/org/apache/juddi/model/Clerk.java | 2 +- .../apache/juddi/model/CommunicationGraph.java | 10 + .../java/org/apache/juddi/model/Contact.java | 2 +- .../org/apache/juddi/model/ControlMessage.java | 4 + .../main/java/org/apache/juddi/model/Edge.java | 24 +- .../apache/juddi/model/PublisherAssertion.java | 20 +- .../juddi/model/ReplicationConfiguration.java | 18 +- .../apache/juddi/model/ReplicationMessage.java | 51 - .../apache/juddi/replication/ChangeList.java | 26 - .../juddi/replication/ReplicationNotifier.java | 149 +- .../subscription/SubscriptionNotifier.java | 18 +- .../juddi/validation/ValidateReplication.java | 95 +- .../src/main/resources/messages.properties | 11 + .../java/org/apache/juddi/util/JPAUtil.java | 3 +- .../org/apache/juddi/samples/EntryPoint.java | 160 +- .../apache/juddi/samples/JuddiAdminService.java | 182 +- .../apache/juddi/samples/UddiFindEndpoints.java | 1 - .../apache/juddi/samples/UddiReplication.java | 126 ++ juddi-gui/src/main/webapp/ajax/assertions.jsp | 1 - juddi-gui/src/main/webapp/ajax/copyitem.jsp | 2 +- juddi-tomcat/juddiv3Node2.xml | 15 +- .../src/main/webapp/WEB-INF/classes/juddiv3.xml | 5 +- ..._RMISubscriptionListenerIntegrationTest.java | 1 - ...090_SubscriptionListenerIntegrationBase.java | 6 +- .../org/uddi/repl_v3/ChangeRecordDelete.java | 5 + .../repl_v3/ChangeRecordDeleteAssertion.java | 28 + .../java/org/uddi/repl_v3/ChangeRecordHide.java | 3 + .../org/uddi/repl_v3/ChangeRecordIDType.java | 13 + .../org/uddi/repl_v3/ChangeRecordNewData.java | 6 + .../v3_service/UDDIReplicationPortType.java | 19 + 44 files changed, 3281 insertions(+), 1554 deletions(-) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/juddi/blob/8b95902b/juddi-client/src/main/java/org/apache/juddi/v3/client/config/ClientConfig.java ---------------------------------------------------------------------- diff --git a/juddi-client/src/main/java/org/apache/juddi/v3/client/config/ClientConfig.java b/juddi-client/src/main/java/org/apache/juddi/v3/client/config/ClientConfig.java index 2bb4a3d..10a63be 100644 --- a/juddi-client/src/main/java/org/apache/juddi/v3/client/config/ClientConfig.java +++ b/juddi-client/src/main/java/org/apache/juddi/v3/client/config/ClientConfig.java @@ -107,6 +107,8 @@ public class ClientConfig { saveConfiguration.setRootElementName("uddi"); + + cc.addProperty("client(0).selection.policy", config.getProperty("client.selection.policy")); cc.addProperty("reloadDelay", config.getProperty("reloadDelay")); addCurrentNodeConfig(cc); addCurrentClerks(cc); @@ -605,8 +607,6 @@ public class ClientConfig { if (this.uddiNodes.containsKey(name)) { this.uddiNodes.remove(name); } - - //TODO to configuration xml structure } /** http://git-wip-us.apache.org/repos/asf/juddi/blob/8b95902b/juddi-client/src/main/java/org/apache/juddi/v3/client/config/UDDIClerk.java ---------------------------------------------------------------------- diff --git a/juddi-client/src/main/java/org/apache/juddi/v3/client/config/UDDIClerk.java b/juddi-client/src/main/java/org/apache/juddi/v3/client/config/UDDIClerk.java index ce6fc97..3c8b26b 100644 --- a/juddi-client/src/main/java/org/apache/juddi/v3/client/config/UDDIClerk.java +++ b/juddi-client/src/main/java/org/apache/juddi/v3/client/config/UDDIClerk.java @@ -150,7 +150,6 @@ public class UDDIClerk implements Serializable { */ public UDDIClerk() { super(); - // TODO Auto-generated constructor stub } public UDDIClerk(Clerk clerk) { http://git-wip-us.apache.org/repos/asf/juddi/blob/8b95902b/juddi-client/src/main/java/org/apache/juddi/v3/client/config/UDDINode.java ---------------------------------------------------------------------- diff --git a/juddi-client/src/main/java/org/apache/juddi/v3/client/config/UDDINode.java b/juddi-client/src/main/java/org/apache/juddi/v3/client/config/UDDINode.java index 490ebb2..ade25c5 100644 --- a/juddi-client/src/main/java/org/apache/juddi/v3/client/config/UDDINode.java +++ b/juddi-client/src/main/java/org/apache/juddi/v3/client/config/UDDINode.java @@ -66,7 +66,7 @@ public class UDDINode implements Serializable { description = node.getDescription(); custodyTransferUrl = node.getCustodyTransferUrl(); inquiryUrl = node.getInquiryUrl(); - //TODO inquiryRESTUrl = node.getInquiryRESTUrl(); + //TODO need juddi schema updat inquiryRESTUrl = node.getInquiryRESTUrl() publishUrl = node.getPublishUrl(); securityUrl = node.getSecurityUrl(); subscriptionUrl = node.getSubscriptionUrl(); http://git-wip-us.apache.org/repos/asf/juddi/blob/8b95902b/juddi-client/src/main/java/org/apache/juddi/v3/client/mapping/ServiceLocator.java ---------------------------------------------------------------------- diff --git a/juddi-client/src/main/java/org/apache/juddi/v3/client/mapping/ServiceLocator.java b/juddi-client/src/main/java/org/apache/juddi/v3/client/mapping/ServiceLocator.java index 72645c3..b8a6ac1 100644 --- a/juddi-client/src/main/java/org/apache/juddi/v3/client/mapping/ServiceLocator.java +++ b/juddi-client/src/main/java/org/apache/juddi/v3/client/mapping/ServiceLocator.java @@ -140,7 +140,7 @@ public class ServiceLocator { try { if (selectionPolicy==null) { if (policy==null) { - //TODO move this constant to Property.class + //TODO update .NET schema file to support this policy = properties.getProperty("juddi.client.selection.policy", "org.apache.juddi.v3.client.mapping.PolicyLocalFirst"); } @SuppressWarnings("unchecked") http://git-wip-us.apache.org/repos/asf/juddi/blob/8b95902b/juddi-client/src/test/java/org/apache/juddi/v3/client/UDDIClientTest.java ---------------------------------------------------------------------- diff --git a/juddi-client/src/test/java/org/apache/juddi/v3/client/UDDIClientTest.java b/juddi-client/src/test/java/org/apache/juddi/v3/client/UDDIClientTest.java index f287d07..fd9a140 100644 --- a/juddi-client/src/test/java/org/apache/juddi/v3/client/UDDIClientTest.java +++ b/juddi-client/src/test/java/org/apache/juddi/v3/client/UDDIClientTest.java @@ -63,7 +63,6 @@ public class UDDIClientTest { client2.stop(); } catch (Exception e) { - // TODO Auto-generated catch block e.printStackTrace(); Assert.fail("No exceptions are expected"); } @@ -81,7 +80,6 @@ public class UDDIClientTest { client.stop(); } catch (Exception e) { - // TODO Auto-generated catch block e.printStackTrace(); Assert.fail("No exceptions are expected"); } @@ -102,7 +100,6 @@ public class UDDIClientTest { client.stop(); } catch (Exception e) { - // TODO Auto-generated catch block e.printStackTrace(); Assert.fail("No exceptions are expected"); } @@ -162,7 +159,6 @@ public class UDDIClientTest { client.stop(); } catch (Exception e) { - // TODO Auto-generated catch block e.printStackTrace(); Assert.fail("No exceptions are expected"); } http://git-wip-us.apache.org/repos/asf/juddi/blob/8b95902b/juddi-core/src/main/java/org/apache/juddi/api/impl/AuthenticatedService.java ---------------------------------------------------------------------- diff --git a/juddi-core/src/main/java/org/apache/juddi/api/impl/AuthenticatedService.java b/juddi-core/src/main/java/org/apache/juddi/api/impl/AuthenticatedService.java index 38665b6..d69afbf 100644 --- a/juddi-core/src/main/java/org/apache/juddi/api/impl/AuthenticatedService.java +++ b/juddi-core/src/main/java/org/apache/juddi/api/impl/AuthenticatedService.java @@ -18,6 +18,8 @@ package org.apache.juddi.api.impl; import java.util.Date; +import java.util.logging.Level; +import java.util.logging.Logger; import javax.annotation.Resource; import javax.persistence.EntityManager; @@ -47,7 +49,17 @@ public abstract class AuthenticatedService { public static final int AUTHTOKEN_ACTIVE = 1; public static final int AUTHTOKEN_RETIRED = 0; static final Log logger = LogFactory.getLog(AuthenticatedService.class); - + protected String node = "UNDEFINED_NODE_NAME"; + + public AuthenticatedService(){ + try { + node = AppConfig.getConfiguration().getString(Property.JUDDI_NODE_ID, "UNDEFINED_NODE_NAME"); + } catch (ConfigurationException ex) { + logger.fatal(null, ex); + } + } + + @Resource protected WebServiceContext ctx; public UddiEntityPublisher getEntityPublisher(EntityManager em, String authInfo) throws DispositionReportFaultMessage { http://git-wip-us.apache.org/repos/asf/juddi/blob/8b95902b/juddi-core/src/main/java/org/apache/juddi/api/impl/JUDDIApiImpl.java ---------------------------------------------------------------------- diff --git a/juddi-core/src/main/java/org/apache/juddi/api/impl/JUDDIApiImpl.java b/juddi-core/src/main/java/org/apache/juddi/api/impl/JUDDIApiImpl.java index a52a66e..de98fa0 100644 --- a/juddi-core/src/main/java/org/apache/juddi/api/impl/JUDDIApiImpl.java +++ b/juddi-core/src/main/java/org/apache/juddi/api/impl/JUDDIApiImpl.java @@ -70,6 +70,7 @@ import org.apache.juddi.mapping.MappingApiToModel; import org.apache.juddi.mapping.MappingModelToApi; import org.apache.juddi.model.ClientSubscriptionInfo; import org.apache.juddi.model.Publisher; +import org.apache.juddi.model.ReplicationConfiguration; import org.apache.juddi.model.SubscriptionMatch; import org.apache.juddi.model.Tmodel; import org.apache.juddi.model.UddiEntityPublisher; @@ -114,8 +115,8 @@ import org.uddi.v3_service.UDDISubscriptionPortType; * @author <a href="mailto:[email protected]">Alex O'Ree</a> */ @WebService(serviceName = "JUDDIApiService", - endpointInterface = "org.apache.juddi.v3_service.JUDDIApiPortType", - targetNamespace = "urn:juddi-apache-org:v3_service") + endpointInterface = "org.apache.juddi.v3_service.JUDDIApiPortType", + targetNamespace = "urn:juddi-apache-org:v3_service") public class JUDDIApiImpl extends AuthenticatedService implements JUDDIApiPortType { private Log log = LogFactory.getLog(this.getClass()); @@ -130,7 +131,7 @@ public class JUDDIApiImpl extends AuthenticatedService implements JUDDIApiPortTy * @throws DispositionReportFaultMessage */ public PublisherDetail savePublisher(SavePublisher body) - throws DispositionReportFaultMessage { + throws DispositionReportFaultMessage { long startTime = System.currentTimeMillis(); EntityManager em = PersistenceManager.getEntityManager(); EntityTransaction tx = em.getTransaction(); @@ -163,12 +164,12 @@ public class JUDDIApiImpl extends AuthenticatedService implements JUDDIApiPortTy tx.commit(); long procTime = System.currentTimeMillis() - startTime; serviceCounter.update(JUDDIQuery.SAVE_PUBLISHER, - QueryStatus.SUCCESS, procTime); + QueryStatus.SUCCESS, procTime); return result; } catch (DispositionReportFaultMessage drfm) { long procTime = System.currentTimeMillis() - startTime; serviceCounter.update(JUDDIQuery.SAVE_PUBLISHER, - QueryStatus.FAILED, procTime); + QueryStatus.FAILED, procTime); throw drfm; } finally { if (tx.isActive()) { @@ -186,7 +187,7 @@ public class JUDDIApiImpl extends AuthenticatedService implements JUDDIApiPortTy * @throws DispositionReportFaultMessage */ public void deletePublisher(DeletePublisher body) - throws DispositionReportFaultMessage { + throws DispositionReportFaultMessage { long startTime = System.currentTimeMillis(); EntityManager em = PersistenceManager.getEntityManager(); EntityTransaction tx = em.getTransaction(); @@ -245,11 +246,11 @@ public class JUDDIApiImpl extends AuthenticatedService implements JUDDIApiPortTy tx.commit(); long procTime = System.currentTimeMillis() - startTime; serviceCounter.update(JUDDIQuery.DELETE_PUBLISHER, - QueryStatus.SUCCESS, procTime); + QueryStatus.SUCCESS, procTime); } catch (DispositionReportFaultMessage drfm) { long procTime = System.currentTimeMillis() - startTime; serviceCounter.update(JUDDIQuery.DELETE_PUBLISHER, - QueryStatus.FAILED, procTime); + QueryStatus.FAILED, procTime); throw drfm; } finally { if (tx.isActive()) { @@ -268,7 +269,7 @@ public class JUDDIApiImpl extends AuthenticatedService implements JUDDIApiPortTy * @throws DispositionReportFaultMessage */ public PublisherDetail getPublisherDetail(GetPublisherDetail body) - throws DispositionReportFaultMessage { + throws DispositionReportFaultMessage { long startTime = System.currentTimeMillis(); new ValidatePublisher(null).validateGetPublisherDetail(body); @@ -302,12 +303,12 @@ public class JUDDIApiImpl extends AuthenticatedService implements JUDDIApiPortTy tx.commit(); long procTime = System.currentTimeMillis() - startTime; serviceCounter.update(JUDDIQuery.GET_PUBLISHER_DETAIL, - QueryStatus.SUCCESS, procTime); + QueryStatus.SUCCESS, procTime); return result; } catch (DispositionReportFaultMessage drfm) { long procTime = System.currentTimeMillis() - startTime; serviceCounter.update(JUDDIQuery.GET_PUBLISHER_DETAIL, - QueryStatus.FAILED, procTime); + QueryStatus.FAILED, procTime); throw drfm; } finally { if (tx.isActive()) { @@ -331,7 +332,7 @@ public class JUDDIApiImpl extends AuthenticatedService implements JUDDIApiPortTy */ @SuppressWarnings("unchecked") public PublisherDetail getAllPublisherDetail(GetAllPublisherDetail body) - throws DispositionReportFaultMessage, RemoteException { + throws DispositionReportFaultMessage, RemoteException { long startTime = System.currentTimeMillis(); new ValidatePublisher(null).validateGetAllPublisherDetail(body); @@ -359,12 +360,12 @@ public class JUDDIApiImpl extends AuthenticatedService implements JUDDIApiPortTy tx.commit(); long procTime = System.currentTimeMillis() - startTime; serviceCounter.update(JUDDIQuery.GET_ALL_PUBLISHER_DETAIL, - QueryStatus.SUCCESS, procTime); + QueryStatus.SUCCESS, procTime); return result; } catch (DispositionReportFaultMessage drfm) { long procTime = System.currentTimeMillis() - startTime; serviceCounter.update(JUDDIQuery.GET_ALL_PUBLISHER_DETAIL, - QueryStatus.FAILED, procTime); + QueryStatus.FAILED, procTime); throw drfm; } finally { if (tx.isActive()) { @@ -386,7 +387,7 @@ public class JUDDIApiImpl extends AuthenticatedService implements JUDDIApiPortTy * @throws DispositionReportFaultMessage */ public void adminDeleteTModel(DeleteTModel body) - throws DispositionReportFaultMessage { + throws DispositionReportFaultMessage { long startTime = System.currentTimeMillis(); EntityManager em = PersistenceManager.getEntityManager(); EntityTransaction tx = em.getTransaction(); @@ -406,11 +407,11 @@ public class JUDDIApiImpl extends AuthenticatedService implements JUDDIApiPortTy tx.commit(); long procTime = System.currentTimeMillis() - startTime; serviceCounter.update(JUDDIQuery.ADMIN_DELETE_TMODEL, - QueryStatus.SUCCESS, procTime); + QueryStatus.SUCCESS, procTime); } catch (DispositionReportFaultMessage drfm) { long procTime = System.currentTimeMillis() - startTime; serviceCounter.update(JUDDIQuery.ADMIN_DELETE_TMODEL, - QueryStatus.FAILED, procTime); + QueryStatus.FAILED, procTime); throw drfm; } finally { if (tx.isActive()) { @@ -429,7 +430,7 @@ public class JUDDIApiImpl extends AuthenticatedService implements JUDDIApiPortTy * @throws RemoteException */ public void deleteClientSubscriptionInfo(DeleteClientSubscriptionInfo body) - throws DispositionReportFaultMessage, RemoteException { + throws DispositionReportFaultMessage, RemoteException { long startTime = System.currentTimeMillis(); EntityManager em = PersistenceManager.getEntityManager(); EntityTransaction tx = em.getTransaction(); @@ -449,11 +450,11 @@ public class JUDDIApiImpl extends AuthenticatedService implements JUDDIApiPortTy tx.commit(); long procTime = System.currentTimeMillis() - startTime; serviceCounter.update(JUDDIQuery.DELETE_CLIENT_SUB, - QueryStatus.SUCCESS, procTime); + QueryStatus.SUCCESS, procTime); } catch (DispositionReportFaultMessage drfm) { long procTime = System.currentTimeMillis() - startTime; serviceCounter.update(JUDDIQuery.DELETE_CLIENT_SUB, - QueryStatus.FAILED, procTime); + QueryStatus.FAILED, procTime); throw drfm; } finally { @@ -475,7 +476,7 @@ public class JUDDIApiImpl extends AuthenticatedService implements JUDDIApiPortTy * @throws RemoteException */ public ClientSubscriptionInfoDetail saveClientSubscriptionInfo(SaveClientSubscriptionInfo body) - throws DispositionReportFaultMessage, RemoteException { + throws DispositionReportFaultMessage, RemoteException { long startTime = System.currentTimeMillis(); EntityManager em = PersistenceManager.getEntityManager(); EntityTransaction tx = em.getTransaction(); @@ -509,12 +510,12 @@ public class JUDDIApiImpl extends AuthenticatedService implements JUDDIApiPortTy long procTime = System.currentTimeMillis() - startTime; serviceCounter.update(JUDDIQuery.SAVE_CLIENT_SUB, - QueryStatus.SUCCESS, procTime); + QueryStatus.SUCCESS, procTime); return result; } catch (DispositionReportFaultMessage drfm) { long procTime = System.currentTimeMillis() - startTime; serviceCounter.update(JUDDIQuery.SAVE_CLIENT_SUB, - QueryStatus.FAILED, procTime); + QueryStatus.FAILED, procTime); throw drfm; } finally { @@ -535,7 +536,7 @@ public class JUDDIApiImpl extends AuthenticatedService implements JUDDIApiPortTy */ @SuppressWarnings("unchecked") public ClientSubscriptionInfoDetail getAllClientSubscriptionInfoDetail(GetAllClientSubscriptionInfoDetail body) - throws DispositionReportFaultMessage { + throws DispositionReportFaultMessage { long startTime = System.currentTimeMillis(); new ValidateClientSubscriptionInfo(null).validateGetAllClientSubscriptionDetail(body); @@ -563,12 +564,12 @@ public class JUDDIApiImpl extends AuthenticatedService implements JUDDIApiPortTy tx.commit(); long procTime = System.currentTimeMillis() - startTime; serviceCounter.update(JUDDIQuery.GET_ALL_CLIENT_SUB, - QueryStatus.SUCCESS, procTime); + QueryStatus.SUCCESS, procTime); return result; } catch (DispositionReportFaultMessage drfm) { long procTime = System.currentTimeMillis() - startTime; serviceCounter.update(JUDDIQuery.GET_ALL_CLIENT_SUB, - QueryStatus.FAILED, procTime); + QueryStatus.FAILED, procTime); throw drfm; } finally { @@ -590,7 +591,7 @@ public class JUDDIApiImpl extends AuthenticatedService implements JUDDIApiPortTy * @throws DispositionReportFaultMessage */ public ClientSubscriptionInfoDetail getClientSubscriptionInfoDetail(GetClientSubscriptionInfoDetail body) - throws DispositionReportFaultMessage { + throws DispositionReportFaultMessage { long startTime = System.currentTimeMillis(); new ValidateClientSubscriptionInfo(null).validateGetClientSubscriptionInfoDetail(body); @@ -627,12 +628,12 @@ public class JUDDIApiImpl extends AuthenticatedService implements JUDDIApiPortTy long procTime = System.currentTimeMillis() - startTime; serviceCounter.update(JUDDIQuery.GET_CLIENT_SUB, - QueryStatus.SUCCESS, procTime); + QueryStatus.SUCCESS, procTime); return result; } catch (DispositionReportFaultMessage drfm) { long procTime = System.currentTimeMillis() - startTime; serviceCounter.update(JUDDIQuery.GET_CLIENT_SUB, - QueryStatus.FAILED, procTime); + QueryStatus.FAILED, procTime); throw drfm; } finally { if (tx.isActive()) { @@ -653,7 +654,7 @@ public class JUDDIApiImpl extends AuthenticatedService implements JUDDIApiPortTy * @throws DispositionReportFaultMessage */ public ClerkDetail saveClerk(SaveClerk body) - throws DispositionReportFaultMessage { + throws DispositionReportFaultMessage { long startTime = System.currentTimeMillis(); EntityManager em = PersistenceManager.getEntityManager(); EntityTransaction tx = em.getTransaction(); @@ -672,9 +673,14 @@ public class JUDDIApiImpl extends AuthenticatedService implements JUDDIApiPortTy org.apache.juddi.model.Clerk modelClerk = new org.apache.juddi.model.Clerk(); MappingApiToModel.mapClerk(apiClerk, modelClerk); + org.apache.juddi.model.Node node = em.find(org.apache.juddi.model.Node.class, apiClerk.getNode().getName()); + if (node==null) + MappingApiToModel.mapNode(apiClerk.getNode(), node); + modelClerk.setNode(node); Object existingUddiEntity = em.find(modelClerk.getClass(), modelClerk.getClerkName()); if (existingUddiEntity != null) { + em.merge(modelClerk); } else { em.persist(modelClerk); @@ -686,12 +692,12 @@ public class JUDDIApiImpl extends AuthenticatedService implements JUDDIApiPortTy tx.commit(); long procTime = System.currentTimeMillis() - startTime; serviceCounter.update(JUDDIQuery.SAVE_CLERK, - QueryStatus.SUCCESS, procTime); + QueryStatus.SUCCESS, procTime); return result; } catch (DispositionReportFaultMessage drfm) { long procTime = System.currentTimeMillis() - startTime; serviceCounter.update(JUDDIQuery.SAVE_CLERK, - QueryStatus.FAILED, procTime); + QueryStatus.FAILED, procTime); throw drfm; } finally { @@ -713,7 +719,7 @@ public class JUDDIApiImpl extends AuthenticatedService implements JUDDIApiPortTy * @throws DispositionReportFaultMessage */ public NodeDetail saveNode(SaveNode body) - throws DispositionReportFaultMessage { + throws DispositionReportFaultMessage { long startTime = System.currentTimeMillis(); EntityManager em = PersistenceManager.getEntityManager(); EntityTransaction tx = em.getTransaction(); @@ -746,12 +752,12 @@ public class JUDDIApiImpl extends AuthenticatedService implements JUDDIApiPortTy tx.commit(); long procTime = System.currentTimeMillis() - startTime; serviceCounter.update(JUDDIQuery.SAVE_NODE, - QueryStatus.SUCCESS, procTime); + QueryStatus.SUCCESS, procTime); return result; } catch (DispositionReportFaultMessage drfm) { long procTime = System.currentTimeMillis() - startTime; serviceCounter.update(JUDDIQuery.SAVE_NODE, - QueryStatus.FAILED, procTime); + QueryStatus.FAILED, procTime); throw drfm; } finally { @@ -773,14 +779,14 @@ public class JUDDIApiImpl extends AuthenticatedService implements JUDDIApiPortTy */ @SuppressWarnings("unchecked") public SyncSubscriptionDetail invokeSyncSubscription( - SyncSubscription body) throws DispositionReportFaultMessage, - RemoteException { + SyncSubscription body) throws DispositionReportFaultMessage, + RemoteException { long startTime = System.currentTimeMillis(); //validate SyncSubscriptionDetail syncSubscriptionDetail = new SyncSubscriptionDetail(); Map<String, org.apache.juddi.api_v3.ClientSubscriptionInfo> clientSubscriptionInfoMap - = new HashMap<String, org.apache.juddi.api_v3.ClientSubscriptionInfo>(); + = new HashMap<String, org.apache.juddi.api_v3.ClientSubscriptionInfo>(); //find the clerks to go with these subscriptions EntityManager em = PersistenceManager.getEntityManager(); EntityTransaction tx = em.getTransaction(); @@ -808,7 +814,7 @@ public class JUDDIApiImpl extends AuthenticatedService implements JUDDIApiPortTy } catch (DispositionReportFaultMessage drfm) { long procTime = System.currentTimeMillis() - startTime; serviceCounter.update(JUDDIQuery.INVOKE_SYNCSUB, - QueryStatus.FAILED, procTime); + QueryStatus.FAILED, procTime); throw drfm; } finally { @@ -837,23 +843,23 @@ public class JUDDIApiImpl extends AuthenticatedService implements JUDDIApiPortTy marshaller.marshal(list, sw); log.info( - "Notification received by UDDISubscriptionListenerService : " + sw.toString()); + "Notification received by UDDISubscriptionListenerService : " + sw.toString()); NotificationList<String> nl = NotificationList.getInstance(); nl.getNotifications() - .add(sw.toString()); + .add(sw.toString()); //update the registry with the notification list. XRegisterHelper.handle(fromClerk, toClerk, list); syncSubscriptionDetail.getSubscriptionResultsList() - .add(list); + .add(list); } catch (Exception ce) { log.error(ce.getMessage(), ce); long procTime = System.currentTimeMillis() - startTime; serviceCounter.update(JUDDIQuery.SAVE_NODE, - QueryStatus.FAILED, procTime); + QueryStatus.FAILED, procTime); if (ce instanceof DispositionReportFaultMessage) { throw (DispositionReportFaultMessage) ce; } @@ -867,7 +873,7 @@ public class JUDDIApiImpl extends AuthenticatedService implements JUDDIApiPortTy long procTime = System.currentTimeMillis() - startTime; serviceCounter.update(JUDDIQuery.INVOKE_SYNCSUB, - QueryStatus.SUCCESS, procTime); + QueryStatus.SUCCESS, procTime); return syncSubscriptionDetail; } @@ -900,11 +906,11 @@ public class JUDDIApiImpl extends AuthenticatedService implements JUDDIApiPortTy tx.commit(); long procTime = System.currentTimeMillis() - startTime; serviceCounter.update(JUDDIQuery.GET_ALL_NODES, - QueryStatus.SUCCESS, procTime); + QueryStatus.SUCCESS, procTime); } catch (DispositionReportFaultMessage drfm) { long procTime = System.currentTimeMillis() - startTime; serviceCounter.update(JUDDIQuery.GET_ALL_NODES, - QueryStatus.FAILED, procTime); + QueryStatus.FAILED, procTime); throw drfm; } finally { if (tx.isActive()) { @@ -943,11 +949,11 @@ public class JUDDIApiImpl extends AuthenticatedService implements JUDDIApiPortTy tx.commit(); long procTime = System.currentTimeMillis() - startTime; serviceCounter.update(JUDDIQuery.GET_ALL_CLERKS, - QueryStatus.SUCCESS, procTime); + QueryStatus.SUCCESS, procTime); } catch (DispositionReportFaultMessage drfm) { long procTime = System.currentTimeMillis() - startTime; serviceCounter.update(JUDDIQuery.GET_ALL_CLERKS, - QueryStatus.FAILED, procTime); + QueryStatus.FAILED, procTime); throw drfm; } finally { @@ -975,7 +981,7 @@ public class JUDDIApiImpl extends AuthenticatedService implements JUDDIApiPortTy org.apache.juddi.model.Node existingUddiEntity = em.find(org.apache.juddi.model.Node.class, req.getNodeID()); if (existingUddiEntity - != null) { + != null) { //TODO cascade delete all clerks tied to this node em.remove(existingUddiEntity); @@ -985,11 +991,11 @@ public class JUDDIApiImpl extends AuthenticatedService implements JUDDIApiPortTy tx.commit(); long procTime = System.currentTimeMillis() - startTime; serviceCounter.update(JUDDIQuery.DELETE_NODE, - QueryStatus.SUCCESS, procTime); + QueryStatus.SUCCESS, procTime); } catch (DispositionReportFaultMessage drfm) { long procTime = System.currentTimeMillis() - startTime; serviceCounter.update(JUDDIQuery.DELETE_NODE, - QueryStatus.FAILED, procTime); + QueryStatus.FAILED, procTime); throw drfm; } finally { @@ -1020,7 +1026,7 @@ public class JUDDIApiImpl extends AuthenticatedService implements JUDDIApiPortTy org.apache.juddi.model.Clerk existingUddiEntity = em.find(org.apache.juddi.model.Clerk.class, req.getClerkID()); if (existingUddiEntity - != null) { + != null) { em.remove(existingUddiEntity); found = true; } @@ -1028,11 +1034,11 @@ public class JUDDIApiImpl extends AuthenticatedService implements JUDDIApiPortTy tx.commit(); long procTime = System.currentTimeMillis() - startTime; serviceCounter.update(JUDDIQuery.DELETE_CLERK, - QueryStatus.SUCCESS, procTime); + QueryStatus.SUCCESS, procTime); } catch (DispositionReportFaultMessage drfm) { long procTime = System.currentTimeMillis() - startTime; serviceCounter.update(JUDDIQuery.DELETE_CLERK, - QueryStatus.FAILED, procTime); + QueryStatus.FAILED, procTime); throw drfm; } finally { @@ -1050,7 +1056,7 @@ public class JUDDIApiImpl extends AuthenticatedService implements JUDDIApiPortTy /* * enables tmodel owners to setup valid values for tmodel instance infos - * to use, TODO + * to use? * * @param authInfo * @param values @@ -1068,7 +1074,7 @@ public class JUDDIApiImpl extends AuthenticatedService implements JUDDIApiPortTy EntityTransaction tx = em.getTransaction(); try { - //TODO is this tModel used anywhere?, if so, validate all instances against the new rule? + // is this tModel used anywhere?, if so, validate all instances against the new rule? tx.begin(); //each tmodel/value set @@ -1126,11 +1132,11 @@ public class JUDDIApiImpl extends AuthenticatedService implements JUDDIApiPortTy tx.commit(); long procTime = System.currentTimeMillis() - startTime; serviceCounter.update(SubscriptionQuery.DELETE_SUBSCRIPTION, - QueryStatus.SUCCESS, procTime); + QueryStatus.SUCCESS, procTime); } catch (DispositionReportFaultMessage drfm) { long procTime = System.currentTimeMillis() - startTime; serviceCounter.update(SubscriptionQuery.DELETE_SUBSCRIPTION, - QueryStatus.FAILED, procTime); + QueryStatus.FAILED, procTime); throw drfm; } finally { if (tx.isActive()) { @@ -1146,7 +1152,7 @@ public class JUDDIApiImpl extends AuthenticatedService implements JUDDIApiPortTy long startTime = System.currentTimeMillis(); long procTime = System.currentTimeMillis() - startTime; serviceCounter.update(JUDDIQuery.ADMIN_SAVE_BUSINESS, - QueryStatus.SUCCESS, procTime); + QueryStatus.SUCCESS, procTime); ValidatePublish.unsupportedAPICall(); return null; } @@ -1174,11 +1180,11 @@ public class JUDDIApiImpl extends AuthenticatedService implements JUDDIApiPortTy tx.commit(); long procTime = System.currentTimeMillis() - startTime; serviceCounter.update(JUDDIQuery.ADMIN_SAVE_TMODEL, - QueryStatus.SUCCESS, procTime); + QueryStatus.SUCCESS, procTime); } catch (DispositionReportFaultMessage drfm) { long procTime = System.currentTimeMillis() - startTime; serviceCounter.update(JUDDIQuery.ADMIN_SAVE_TMODEL, - QueryStatus.FAILED, procTime); + QueryStatus.FAILED, procTime); throw drfm; } finally { @@ -1221,16 +1227,15 @@ public class JUDDIApiImpl extends AuthenticatedService implements JUDDIApiPortTy x.setPublisherIdOrUsername(resultList.get(i).getAuthorizedName()); r.add(x); } - - + tx.commit(); long procTime = System.currentTimeMillis() - startTime; serviceCounter.update(JUDDIQuery.GET_ALL_CLIENT_SUB, - QueryStatus.SUCCESS, procTime); + QueryStatus.SUCCESS, procTime); } catch (DispositionReportFaultMessage drfm) { long procTime = System.currentTimeMillis() - startTime; serviceCounter.update(JUDDIQuery.GET_ALL_CLIENT_SUB, - QueryStatus.FAILED, procTime); + QueryStatus.FAILED, procTime); throw drfm; } finally { if (tx.isActive()) { @@ -1245,11 +1250,39 @@ public class JUDDIApiImpl extends AuthenticatedService implements JUDDIApiPortTy @Override public DispositionReport setReplicationNodes(String authInfo, org.uddi.repl_v3.ReplicationConfiguration replicationConfiguration) throws DispositionReportFaultMessage, RemoteException { long startTime = System.currentTimeMillis(); - long procTime = System.currentTimeMillis() - startTime; - serviceCounter.update(JUDDIQuery.SET_REPLICATION_NODES, - QueryStatus.SUCCESS, procTime); - ValidatePublish.unsupportedAPICall(); - return null; + + EntityManager em = PersistenceManager.getEntityManager(); + EntityTransaction tx = em.getTransaction(); + try { + tx.begin(); + + UddiEntityPublisher publisher = this.getEntityPublisher(em, authInfo); + if (!((Publisher) publisher).isAdmin()) { + throw new UserMismatchException(new ErrorMessage("errors.AdminReqd")); + } + + //TODO validate inbound request + org.apache.juddi.model.ReplicationConfiguration model = new ReplicationConfiguration(); + MappingApiToModel.mapReplicationConfiguration(replicationConfiguration, model, em); + em.persist(model); + + tx.commit(); + long procTime = System.currentTimeMillis() - startTime; + serviceCounter.update(JUDDIQuery.SET_REPLICATION_NODES, + QueryStatus.SUCCESS, procTime); + } catch (DispositionReportFaultMessage drfm) { + long procTime = System.currentTimeMillis() - startTime; + serviceCounter.update(JUDDIQuery.SET_REPLICATION_NODES, + QueryStatus.FAILED, procTime); + throw drfm; + } finally { + if (tx.isActive()) { + tx.rollback(); + } + em.close(); + } + + return new DispositionReport(); } @Override @@ -1268,22 +1301,21 @@ public class JUDDIApiImpl extends AuthenticatedService implements JUDDIApiPortTy } StringBuilder sql = new StringBuilder(); - sql.append("select distinct c from ReplicationConfiguration c "); + sql.append("select c from ReplicationConfiguration c order by c.SerialNumber desc"); sql.toString(); Query qry = em.createQuery(sql.toString()); + qry.setMaxResults(1); org.apache.juddi.model.ReplicationConfiguration resultList = (org.apache.juddi.model.ReplicationConfiguration) qry.getSingleResult(); - //for (int i = 0; i < resultList.size(); i++) { MappingModelToApi.mapReplicationConfiguration(resultList, r); - //} tx.commit(); long procTime = System.currentTimeMillis() - startTime; serviceCounter.update(JUDDIQuery.GET_ALL_NODES, - QueryStatus.SUCCESS, procTime); + QueryStatus.SUCCESS, procTime); } catch (DispositionReportFaultMessage drfm) { long procTime = System.currentTimeMillis() - startTime; serviceCounter.update(JUDDIQuery.GET_ALL_NODES, - QueryStatus.FAILED, procTime); + QueryStatus.FAILED, procTime); throw drfm; } finally { if (tx.isActive()) { @@ -1316,11 +1348,11 @@ public class JUDDIApiImpl extends AuthenticatedService implements JUDDIApiPortTy tx.commit(); long procTime = System.currentTimeMillis() - startTime; serviceCounter.update(JUDDIQuery.ADMIN_SAVE_SUB, - QueryStatus.SUCCESS, procTime); + QueryStatus.SUCCESS, procTime); } catch (DispositionReportFaultMessage drfm) { long procTime = System.currentTimeMillis() - startTime; serviceCounter.update(JUDDIQuery.ADMIN_SAVE_SUB, - QueryStatus.FAILED, procTime); + QueryStatus.FAILED, procTime); throw drfm; } finally { http://git-wip-us.apache.org/repos/asf/juddi/blob/8b95902b/juddi-core/src/main/java/org/apache/juddi/api/impl/UDDICustodyTransferImpl.java ---------------------------------------------------------------------- diff --git a/juddi-core/src/main/java/org/apache/juddi/api/impl/UDDICustodyTransferImpl.java b/juddi-core/src/main/java/org/apache/juddi/api/impl/UDDICustodyTransferImpl.java index 02d62dd..2bb21f2 100644 --- a/juddi-core/src/main/java/org/apache/juddi/api/impl/UDDICustodyTransferImpl.java +++ b/juddi-core/src/main/java/org/apache/juddi/api/impl/UDDICustodyTransferImpl.java @@ -14,13 +14,15 @@ * limitations under the License. * */ - package org.apache.juddi.api.impl; +import java.util.ArrayList; import java.util.GregorianCalendar; import java.util.List; import java.util.UUID; import java.util.Vector; +import java.util.logging.Level; +import java.util.logging.Logger; import javax.jws.WebService; import javax.persistence.EntityManager; @@ -47,211 +49,290 @@ import org.apache.juddi.model.TransferTokenKey; import org.apache.juddi.model.UddiEntity; import org.apache.juddi.model.UddiEntityPublisher; import org.apache.juddi.query.util.DynamicQuery; +import org.apache.juddi.replication.ReplicationNotifier; import org.apache.juddi.v3.error.ErrorMessage; import org.apache.juddi.v3.error.FatalErrorException; import org.apache.juddi.validation.ValidateCustodyTransfer; +import org.uddi.api_v3.OperationalInfo; import org.uddi.custody_v3.DiscardTransferToken; import org.uddi.custody_v3.KeyBag; import org.uddi.custody_v3.TransferEntities; import org.uddi.v3_service.DispositionReportFaultMessage; import org.uddi.v3_service.UDDICustodyTransferPortType; + /** * This implements the UDDI v3 Custody Transfer API web service - * + * */ -@WebService(serviceName="UDDICustodyTransferService", - endpointInterface="org.uddi.v3_service.UDDICustodyTransferPortType", - targetNamespace = "urn:uddi-org:v3_service") +@WebService(serviceName = "UDDICustodyTransferService", + endpointInterface = "org.uddi.v3_service.UDDICustodyTransferPortType", + targetNamespace = "urn:uddi-org:v3_service") public class UDDICustodyTransferImpl extends AuthenticatedService implements UDDICustodyTransferPortType { - public static final String TRANSFER_TOKEN_PREFIX = "transfertoken:"; - public static final int DEFAULT_TRANSFEREXPIRATION_DAYS = 3; - + public static final String TRANSFER_TOKEN_PREFIX = "transfertoken:"; + public static final int DEFAULT_TRANSFEREXPIRATION_DAYS = 3; + private static Log logger = LogFactory.getLog(UDDICustodyTransferImpl.class); - - private UDDIServiceCounter serviceCounter; - - public UDDICustodyTransferImpl() { - super(); - serviceCounter = ServiceCounterLifecycleResource.getServiceCounter(this.getClass()); - } - - @SuppressWarnings("unchecked") - public void discardTransferToken(DiscardTransferToken body) - throws DispositionReportFaultMessage { - long startTime = System.currentTimeMillis(); - - EntityManager em = PersistenceManager.getEntityManager(); - EntityTransaction tx = em.getTransaction(); - try { - tx.begin(); - - UddiEntityPublisher publisher = this.getEntityPublisher(em, body.getAuthInfo()); - - new ValidateCustodyTransfer(publisher).validateDiscardTransferToken(em, body); - - org.uddi.custody_v3.TransferToken apiTransferToken = body.getTransferToken(); - if (apiTransferToken != null) { - String transferTokenId = new String(apiTransferToken.getOpaqueToken()); - org.apache.juddi.model.TransferToken modelTransferToken = em.find(org.apache.juddi.model.TransferToken.class, transferTokenId); - if (modelTransferToken != null) - em.remove(modelTransferToken); - } - - KeyBag keyBag = body.getKeyBag(); - if (keyBag != null) { - List<String> keyList = keyBag.getKey(); - Vector<DynamicQuery.Parameter> params = new Vector<DynamicQuery.Parameter>(0); - for (String key : keyList) { - // Creating parameters for key-checking query - DynamicQuery.Parameter param = new DynamicQuery.Parameter("UPPER(ttk.entityKey)", - key.toUpperCase(), - DynamicQuery.PREDICATE_EQUALS); - - params.add(param); - } - - // Find the associated transfer tokens and remove them. - DynamicQuery getTokensQry = new DynamicQuery(); - getTokensQry.append("select distinct ttk.transferToken from TransferTokenKey ttk").pad(); - getTokensQry.WHERE().pad().appendGroupedOr(params.toArray(new DynamicQuery.Parameter[0])); - - Query qry = getTokensQry.buildJPAQuery(em); - List<org.apache.juddi.model.TransferToken> tokensToDelete = qry.getResultList(); - if (tokensToDelete != null && tokensToDelete.size() > 0) { - for (org.apache.juddi.model.TransferToken tt : tokensToDelete) - em.remove(tt); - } - } - - tx.commit(); - long procTime = System.currentTimeMillis() - startTime; - serviceCounter.update(CustodyTransferQuery.DISCARD_TRANSFERTOKEN, - QueryStatus.SUCCESS, procTime); - - } finally { - if (tx.isActive()) { - tx.rollback(); - } - em.close(); - } - } - - public void getTransferToken(String authInfo, KeyBag keyBag, - Holder<String> nodeID, Holder<XMLGregorianCalendar> expirationTime, - Holder<byte[]> opaqueToken) throws DispositionReportFaultMessage { - long startTime = System.currentTimeMillis(); - - EntityManager em = PersistenceManager.getEntityManager(); - EntityTransaction tx = em.getTransaction(); - try { - tx.begin(); - - UddiEntityPublisher publisher = this.getEntityPublisher(em, authInfo); - - new ValidateCustodyTransfer(publisher).validateGetTransferToken(em, keyBag); - - int transferExpirationDays = DEFAULT_TRANSFEREXPIRATION_DAYS; - try { - transferExpirationDays = AppConfig.getConfiguration().getInt(Property.JUDDI_TRANSFER_EXPIRATION_DAYS); - // For output - nodeID.value = AppConfig.getConfiguration().getString(Property.JUDDI_NODE_ID); - } - catch(ConfigurationException ce) - { throw new FatalErrorException(new ErrorMessage("errors.configuration.Retrieval"));} - - String transferKey = TRANSFER_TOKEN_PREFIX + UUID.randomUUID(); - org.apache.juddi.model.TransferToken transferToken = new org.apache.juddi.model.TransferToken(); - transferToken.setTransferToken(transferKey); - // For output - opaqueToken.value = transferKey.getBytes(); - - GregorianCalendar gc = new GregorianCalendar(); - gc.add(GregorianCalendar.DAY_OF_MONTH, transferExpirationDays); - - transferToken.setExpirationDate(gc.getTime()); - - try { - DatatypeFactory df = DatatypeFactory.newInstance(); - // For output - expirationTime.value = df.newXMLGregorianCalendar(gc); - } - catch(DatatypeConfigurationException ce) - { throw new FatalErrorException(new ErrorMessage("errors.Unspecified"));} - - List<String> keyList = keyBag.getKey(); - for (String key : keyList) { - TransferTokenKey tokenKey = new TransferTokenKey(transferToken, key); - transferToken.getTransferKeys().add(tokenKey); - } - - em.persist(transferToken); - - tx.commit(); - - long procTime = System.currentTimeMillis() - startTime; - serviceCounter.update(CustodyTransferQuery.GET_TRANSFERTOKEN, - QueryStatus.SUCCESS, procTime); - - } finally { - if (tx.isActive()) { - tx.rollback(); - } - em.close(); - } - } - - public void transferEntities(TransferEntities body) - throws DispositionReportFaultMessage { - long startTime = System.currentTimeMillis(); - - EntityManager em = PersistenceManager.getEntityManager(); - EntityTransaction tx = em.getTransaction(); - try { - tx.begin(); - - UddiEntityPublisher publisher = this.getEntityPublisher(em, body.getAuthInfo()); - - new ValidateCustodyTransfer(publisher).validateTransferEntities(em, body); - - // Once validated, the ownership transfer is as simple as switching the publisher - KeyBag keyBag = body.getKeyBag(); - List<String> keyList = keyBag.getKey(); - for (String key : keyList) { - UddiEntity uddiEntity = em.find(UddiEntity.class, key); - uddiEntity.setAuthorizedName(publisher.getAuthorizedName()); - - if (uddiEntity instanceof BusinessEntity) { - BusinessEntity be = (BusinessEntity)uddiEntity; - - List<BusinessService> bsList = be.getBusinessServices(); - for (BusinessService bs : bsList) { - bs.setAuthorizedName(publisher.getAuthorizedName()); - - List<BindingTemplate> btList = bs.getBindingTemplates(); - for (BindingTemplate bt : btList) - bt.setAuthorizedName(publisher.getAuthorizedName()); - } - } - } - - // After transfer is finished, the token can be removed - org.uddi.custody_v3.TransferToken apiTransferToken = body.getTransferToken(); - String transferTokenId = new String(apiTransferToken.getOpaqueToken()); - org.apache.juddi.model.TransferToken modelTransferToken = em.find(org.apache.juddi.model.TransferToken.class, transferTokenId); - em.remove(modelTransferToken); - - tx.commit(); - long procTime = System.currentTimeMillis() - startTime; - serviceCounter.update(CustodyTransferQuery.TRANSFER_ENTITIES, - QueryStatus.SUCCESS, procTime); - - } finally { - if (tx.isActive()) { - tx.rollback(); - } - em.close(); - } - - } + + private static DatatypeFactory df = null; + private UDDIServiceCounter serviceCounter; + + public UDDICustodyTransferImpl() { + super(); + serviceCounter = ServiceCounterLifecycleResource.getServiceCounter(this.getClass()); + if (df == null) { + try { + df = DatatypeFactory.newInstance(); + } catch (DatatypeConfigurationException ex) { + Logger.getLogger(UDDICustodyTransferImpl.class.getName()).log(Level.SEVERE, null, ex); + } + } + } + + @SuppressWarnings("unchecked") + public void discardTransferToken(DiscardTransferToken body) + throws DispositionReportFaultMessage { + long startTime = System.currentTimeMillis(); + + EntityManager em = PersistenceManager.getEntityManager(); + EntityTransaction tx = em.getTransaction(); + try { + tx.begin(); + + UddiEntityPublisher publisher = this.getEntityPublisher(em, body.getAuthInfo()); + + new ValidateCustodyTransfer(publisher).validateDiscardTransferToken(em, body); + + org.uddi.custody_v3.TransferToken apiTransferToken = body.getTransferToken(); + if (apiTransferToken != null) { + String transferTokenId = new String(apiTransferToken.getOpaqueToken()); + org.apache.juddi.model.TransferToken modelTransferToken = em.find(org.apache.juddi.model.TransferToken.class, transferTokenId); + if (modelTransferToken != null) { + em.remove(modelTransferToken); + } + } + + KeyBag keyBag = body.getKeyBag(); + if (keyBag != null) { + List<String> keyList = keyBag.getKey(); + Vector<DynamicQuery.Parameter> params = new Vector<DynamicQuery.Parameter>(0); + for (String key : keyList) { + // Creating parameters for key-checking query + DynamicQuery.Parameter param = new DynamicQuery.Parameter("UPPER(ttk.entityKey)", + key.toUpperCase(), + DynamicQuery.PREDICATE_EQUALS); + + params.add(param); + } + + // Find the associated transfer tokens and remove them. + DynamicQuery getTokensQry = new DynamicQuery(); + getTokensQry.append("select distinct ttk.transferToken from TransferTokenKey ttk").pad(); + getTokensQry.WHERE().pad().appendGroupedOr(params.toArray(new DynamicQuery.Parameter[0])); + + Query qry = getTokensQry.buildJPAQuery(em); + List<org.apache.juddi.model.TransferToken> tokensToDelete = qry.getResultList(); + if (tokensToDelete != null && tokensToDelete.size() > 0) { + for (org.apache.juddi.model.TransferToken tt : tokensToDelete) { + em.remove(tt); + } + } + } + + tx.commit(); + long procTime = System.currentTimeMillis() - startTime; + serviceCounter.update(CustodyTransferQuery.DISCARD_TRANSFERTOKEN, + QueryStatus.SUCCESS, procTime); + + } finally { + if (tx.isActive()) { + tx.rollback(); + } + em.close(); + } + } + + public void getTransferToken(String authInfo, KeyBag keyBag, + Holder<String> nodeID, Holder<XMLGregorianCalendar> expirationTime, + Holder<byte[]> opaqueToken) throws DispositionReportFaultMessage { + long startTime = System.currentTimeMillis(); + + EntityManager em = PersistenceManager.getEntityManager(); + EntityTransaction tx = em.getTransaction(); + try { + tx.begin(); + + UddiEntityPublisher publisher = this.getEntityPublisher(em, authInfo); + + new ValidateCustodyTransfer(publisher).validateGetTransferToken(em, keyBag); + + int transferExpirationDays = DEFAULT_TRANSFEREXPIRATION_DAYS; + try { + transferExpirationDays = AppConfig.getConfiguration().getInt(Property.JUDDI_TRANSFER_EXPIRATION_DAYS); + // For output + nodeID.value = AppConfig.getConfiguration().getString(Property.JUDDI_NODE_ID); + } catch (ConfigurationException ce) { + throw new FatalErrorException(new ErrorMessage("errors.configuration.Retrieval")); + } + + String transferKey = TRANSFER_TOKEN_PREFIX + UUID.randomUUID(); + org.apache.juddi.model.TransferToken transferToken = new org.apache.juddi.model.TransferToken(); + transferToken.setTransferToken(transferKey); + // For output + opaqueToken.value = transferKey.getBytes(); + + GregorianCalendar gc = new GregorianCalendar(); + gc.add(GregorianCalendar.DAY_OF_MONTH, transferExpirationDays); + + transferToken.setExpirationDate(gc.getTime()); + + try { + DatatypeFactory df = DatatypeFactory.newInstance(); + // For output + expirationTime.value = df.newXMLGregorianCalendar(gc); + } catch (DatatypeConfigurationException ce) { + throw new FatalErrorException(new ErrorMessage("errors.Unspecified")); + } + + List<String> keyList = keyBag.getKey(); + for (String key : keyList) { + TransferTokenKey tokenKey = new TransferTokenKey(transferToken, key); + transferToken.getTransferKeys().add(tokenKey); + } + + em.persist(transferToken); + + tx.commit(); + + long procTime = System.currentTimeMillis() - startTime; + serviceCounter.update(CustodyTransferQuery.GET_TRANSFERTOKEN, + QueryStatus.SUCCESS, procTime); + + } finally { + if (tx.isActive()) { + tx.rollback(); + } + em.close(); + } + } + + public void transferEntities(TransferEntities body) + throws DispositionReportFaultMessage { + long startTime = System.currentTimeMillis(); + + EntityManager em = PersistenceManager.getEntityManager(); + EntityTransaction tx = em.getTransaction(); + try { + tx.begin(); + + UddiEntityPublisher publisher = this.getEntityPublisher(em, body.getAuthInfo()); + + new ValidateCustodyTransfer(publisher).validateTransferEntities(em, body); + + // Once validated, the ownership transfer is as simple as switching the publisher + KeyBag keyBag = body.getKeyBag(); + List<String> keyList = keyBag.getKey(); + //used for the change journal + List<OperationalInfo> op_info = new ArrayList<OperationalInfo>(); + for (String key : keyList) { + UddiEntity uddiEntity = em.find(UddiEntity.class, key); + uddiEntity.setAuthorizedName(publisher.getAuthorizedName()); + OperationalInfo o = new OperationalInfo(); + o.setAuthorizedName(publisher.getAuthorizedName()); + + GregorianCalendar gcal = new GregorianCalendar(); + gcal.setTime(uddiEntity.getCreated()); + o.setCreated(df.newXMLGregorianCalendar(gcal)); + + o.setEntityKey(uddiEntity.getEntityKey()); + + gcal = new GregorianCalendar(); + gcal.setTime(uddiEntity.getModified()); + o.setModified(df.newXMLGregorianCalendar(gcal)); + + gcal = new GregorianCalendar(); + gcal.setTime(uddiEntity.getModifiedIncludingChildren()); + o.setModifiedIncludingChildren(df.newXMLGregorianCalendar(gcal)); + o.setNodeID(uddiEntity.getNodeId()); + op_info.add(o); + + if (uddiEntity instanceof BusinessEntity) { + BusinessEntity be = (BusinessEntity) uddiEntity; + + List<BusinessService> bsList = be.getBusinessServices(); + for (BusinessService bs : bsList) { + bs.setAuthorizedName(publisher.getAuthorizedName()); + OperationalInfo o2 = new OperationalInfo(); + o2.setAuthorizedName(bs.getAuthorizedName()); + + gcal = new GregorianCalendar(); + gcal.setTime(bs.getCreated()); + o2.setCreated(df.newXMLGregorianCalendar(gcal)); + + o2.setEntityKey(bs.getEntityKey()); + + gcal = new GregorianCalendar(); + gcal.setTime(bs.getModified()); + o2.setModified(df.newXMLGregorianCalendar(gcal)); + + gcal = new GregorianCalendar(); + gcal.setTime(bs.getModifiedIncludingChildren()); + o2.setModifiedIncludingChildren(df.newXMLGregorianCalendar(gcal)); + o2.setNodeID(bs.getNodeId()); + op_info.add(o2); + + List<BindingTemplate> btList = bs.getBindingTemplates(); + for (BindingTemplate bt : btList) { + bt.setAuthorizedName(publisher.getAuthorizedName()); + OperationalInfo o3 = new OperationalInfo(); + o3.setAuthorizedName(bt.getAuthorizedName()); + + gcal = new GregorianCalendar(); + gcal.setTime(bt.getCreated()); + o3.setCreated(df.newXMLGregorianCalendar(gcal)); + + o3.setEntityKey(bt.getEntityKey()); + + gcal = new GregorianCalendar(); + gcal.setTime(bt.getModified()); + o3.setModified(df.newXMLGregorianCalendar(gcal)); + + gcal = new GregorianCalendar(); + gcal.setTime(bt.getModifiedIncludingChildren()); + o3.setModifiedIncludingChildren(df.newXMLGregorianCalendar(gcal)); + o3.setNodeID(bt.getNodeId()); + op_info.add(o3); + } + } + } + } + + // After transfer is finished, the token can be removed + org.uddi.custody_v3.TransferToken apiTransferToken = body.getTransferToken(); + String transferTokenId = new String(apiTransferToken.getOpaqueToken()); + org.apache.juddi.model.TransferToken modelTransferToken = em.find(org.apache.juddi.model.TransferToken.class, transferTokenId); + em.remove(modelTransferToken); + + tx.commit(); + //TODO do we need to do something for replication purposes here? + //OperationalInfoWrapper t = new OperationalInfoWrapper(); + //t.data = op_info; + //ReplicationNotifier.Enqueue(UDDIPublicationImpl.); + long procTime = System.currentTimeMillis() - startTime; + serviceCounter.update(CustodyTransferQuery.TRANSFER_ENTITIES, + QueryStatus.SUCCESS, procTime); + + } finally { + if (tx.isActive()) { + tx.rollback(); + } + em.close(); + } + + } + + public class OperationalInfoWrapper { + + public List<OperationalInfo> data; + } } --------------------------------------------------------------------- To unsubscribe, e-mail: [email protected] For additional commands, e-mail: [email protected]
