JUDDI-241 adjusting database configuration. get/setReplicationConfig now function as expected
Project: http://git-wip-us.apache.org/repos/asf/juddi/repo Commit: http://git-wip-us.apache.org/repos/asf/juddi/commit/a975954b Tree: http://git-wip-us.apache.org/repos/asf/juddi/tree/a975954b Diff: http://git-wip-us.apache.org/repos/asf/juddi/diff/a975954b Branch: refs/heads/JUDDI-241 Commit: a975954b140694096ac3f81cd5bf77da19922cbb Parents: 7aa78f6 Author: Alex <[email protected]> Authored: Sat Nov 15 21:45:07 2014 -0500 Committer: Alex <[email protected]> Committed: Sat Nov 15 21:45:07 2014 -0500 ---------------------------------------------------------------------- .../org/apache/juddi/api/impl/JUDDIApiImpl.java | 194 +++++++++-------- .../apache/juddi/mapping/MappingApiToModel.java | 123 ++++++----- .../apache/juddi/mapping/MappingModelToApi.java | 4 +- .../apache/juddi/model/CommunicationGraph.java | 99 --------- .../main/java/org/apache/juddi/model/Edge.java | 21 +- .../juddi/model/ReplicationConfiguration.java | 70 +++--- .../juddi/validation/ValidateReplication.java | 43 +++- .../src/main/resources/messages.properties | 2 +- .../juddi/api/impl/API_160_ReplicationTest.java | 20 ++ .../src/test/resources/META-INF/persistence.xml | 212 +++++++++---------- 10 files changed, 371 insertions(+), 417 deletions(-) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/juddi/blob/a975954b/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 1f7ca77..e2b9dc5 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 @@ -118,8 +118,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()); @@ -134,7 +134,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(); @@ -167,12 +167,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()) { @@ -190,7 +190,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(); @@ -249,11 +249,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()) { @@ -272,7 +272,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); @@ -306,12 +306,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()) { @@ -335,7 +335,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); @@ -363,12 +363,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()) { @@ -390,7 +390,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(); @@ -410,11 +410,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()) { @@ -433,7 +433,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(); @@ -453,11 +453,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 { @@ -479,7 +479,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(); @@ -513,12 +513,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 { @@ -539,7 +539,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); @@ -559,7 +559,7 @@ public class JUDDIApiImpl extends AuthenticatedService implements JUDDIApiPortTy org.apache.juddi.api_v3.ClientSubscriptionInfo apiClientSubscriptionInfo = new org.apache.juddi.api_v3.ClientSubscriptionInfo(); - MappingModelToApi.mapClientSubscriptionInfo(modelClientSubscriptionInfo, apiClientSubscriptionInfo,em); + MappingModelToApi.mapClientSubscriptionInfo(modelClientSubscriptionInfo, apiClientSubscriptionInfo, em); result.getClientSubscriptionInfo().add(apiClientSubscriptionInfo); } @@ -567,12 +567,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 { @@ -594,7 +594,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); @@ -622,7 +622,7 @@ public class JUDDIApiImpl extends AuthenticatedService implements JUDDIApiPortTy org.apache.juddi.api_v3.ClientSubscriptionInfo apiClientSubscriptionInfo = new org.apache.juddi.api_v3.ClientSubscriptionInfo(); - MappingModelToApi.mapClientSubscriptionInfo(modelClientSubscriptionInfo, apiClientSubscriptionInfo,em); + MappingModelToApi.mapClientSubscriptionInfo(modelClientSubscriptionInfo, apiClientSubscriptionInfo, em); result.getClientSubscriptionInfo().add(apiClientSubscriptionInfo); } @@ -631,12 +631,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()) { @@ -658,7 +658,7 @@ public class JUDDIApiImpl extends AuthenticatedService implements JUDDIApiPortTy */ @Override public ClerkDetail saveClerk(SaveClerk body) - throws DispositionReportFaultMessage { + throws DispositionReportFaultMessage { long startTime = System.currentTimeMillis(); EntityManager em = PersistenceManager.getEntityManager(); EntityTransaction tx = em.getTransaction(); @@ -678,35 +678,34 @@ public class JUDDIApiImpl extends AuthenticatedService implements JUDDIApiPortTy MappingApiToModel.mapClerk(apiClerk, modelClerk); org.apache.juddi.model.Node node2 = em.find(org.apache.juddi.model.Node.class, apiClerk.getNode().getName()); - if (node2==null) - { + if (node2 == null) { //it doesn't exist yet node2 = new Node(); MappingApiToModel.mapNode(apiClerk.getNode(), node2); em.persist(node2); } - + modelClerk.setNode(node2.getName()); Object existingUddiEntity = em.find(modelClerk.getClass(), modelClerk.getClerkName()); if (existingUddiEntity != null) { - + em.merge(modelClerk); } else { em.persist(modelClerk); } - + result.getClerk().add(apiClerk); } 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 { @@ -728,7 +727,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(); @@ -761,12 +760,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 { @@ -788,14 +787,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(); @@ -815,7 +814,7 @@ public class JUDDIApiImpl extends AuthenticatedService implements JUDDIApiPortTy throw new InvalidKeyPassedException(new ErrorMessage("errors.invalidkey.SubscripKeyNotFound", subscriptionKey)); } org.apache.juddi.api_v3.ClientSubscriptionInfo apiClientSubscriptionInfo = new org.apache.juddi.api_v3.ClientSubscriptionInfo(); - MappingModelToApi.mapClientSubscriptionInfo(modelClientSubscriptionInfo, apiClientSubscriptionInfo,em); + MappingModelToApi.mapClientSubscriptionInfo(modelClientSubscriptionInfo, apiClientSubscriptionInfo, em); clientSubscriptionInfoMap.put(apiClientSubscriptionInfo.getSubscriptionKey(), apiClientSubscriptionInfo); } @@ -823,7 +822,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 { @@ -852,23 +851,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; } @@ -882,7 +881,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; } @@ -915,11 +914,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()) { @@ -951,18 +950,18 @@ public class JUDDIApiImpl extends AuthenticatedService implements JUDDIApiPortTy List<org.apache.juddi.model.Clerk> resultList = qry.getResultList(); for (int i = 0; i < resultList.size(); i++) { Clerk api = new Clerk(); - MappingModelToApi.mapClerk(resultList.get(i), api,em); + MappingModelToApi.mapClerk(resultList.get(i), api, em); ret.getClerk().add(api); } 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 { @@ -991,27 +990,25 @@ 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) { - //cascade delete all clerks tied to this node, confirm that it works - - Query createQuery = em.createQuery("delete from Clerk c where c.node = :nodename"); - createQuery.setParameter("nodename", req.getNodeID()); - createQuery.executeUpdate(); - - em.remove(existingUddiEntity); - found=true; + Query createQuery = em.createQuery("delete from Clerk c where c.node = :nodename"); + createQuery.setParameter("nodename", req.getNodeID()); + createQuery.executeUpdate(); + + em.remove(existingUddiEntity); + found = true; + } else { + throw new InvalidKeyPassedException(new ErrorMessage("errors.deleteNode.NotFound")); } - else - throw new InvalidKeyPassedException(new ErrorMessage("errors.deleteNode.NotFound")); 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 { @@ -1042,7 +1039,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; } @@ -1050,11 +1047,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 { @@ -1148,11 +1145,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()) { @@ -1168,7 +1165,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; } @@ -1196,11 +1193,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 { @@ -1247,11 +1244,11 @@ 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); } 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()) { @@ -1264,7 +1261,7 @@ public class JUDDIApiImpl extends AuthenticatedService implements JUDDIApiPortTy } @Override - public DispositionReport setReplicationNodes(String authInfo, org.uddi.repl_v3.ReplicationConfiguration replicationConfiguration) throws DispositionReportFaultMessage, RemoteException { + public synchronized DispositionReport setReplicationNodes(String authInfo, org.uddi.repl_v3.ReplicationConfiguration replicationConfiguration) throws DispositionReportFaultMessage, RemoteException { long startTime = System.currentTimeMillis(); EntityManager em = PersistenceManager.getEntityManager(); @@ -1276,20 +1273,37 @@ public class JUDDIApiImpl extends AuthenticatedService implements JUDDIApiPortTy if (!((Publisher) publisher).isAdmin()) { throw new UserMismatchException(new ErrorMessage("errors.AdminReqd")); } - new ValidateReplication(publisher).validateSetReplicationNodes(replicationConfiguration); + new ValidateReplication(publisher).validateSetReplicationNodes(replicationConfiguration,em); - org.apache.juddi.model.ReplicationConfiguration model = new ReplicationConfiguration(); - MappingApiToModel.mapReplicationConfiguration(replicationConfiguration, model, em); - em.persist(model); + org.apache.juddi.model.ReplicationConfiguration model = null; + try { + model = (ReplicationConfiguration) em.createQuery("select c FROM ReplicationConfiguration c order by c.serialNumber desc").getSingleResult(); + } catch (Exception ex) { + } + if (model == null) { + model = new ReplicationConfiguration(); + MappingApiToModel.mapReplicationConfiguration(replicationConfiguration, model, em); + model.setSerialNumber(System.currentTimeMillis()); + em.persist(model); + + } else { + //long oldid = model.getSerialNumber(); + em.remove(model); + model = new ReplicationConfiguration(); + MappingApiToModel.mapReplicationConfiguration(replicationConfiguration, model, em); + model.setSerialNumber(System.currentTimeMillis()); + em.persist(model); + + } tx.commit(); long procTime = System.currentTimeMillis() - startTime; serviceCounter.update(JUDDIQuery.SET_REPLICATION_NODES, - QueryStatus.SUCCESS, procTime); + QueryStatus.SUCCESS, procTime); } catch (DispositionReportFaultMessage drfm) { long procTime = System.currentTimeMillis() - startTime; serviceCounter.update(JUDDIQuery.SET_REPLICATION_NODES, - QueryStatus.FAILED, procTime); + QueryStatus.FAILED, procTime); throw drfm; } finally { if (tx.isActive()) { @@ -1327,11 +1341,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()) { @@ -1366,11 +1380,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/a975954b/juddi-core/src/main/java/org/apache/juddi/mapping/MappingApiToModel.java ---------------------------------------------------------------------- diff --git a/juddi-core/src/main/java/org/apache/juddi/mapping/MappingApiToModel.java b/juddi-core/src/main/java/org/apache/juddi/mapping/MappingApiToModel.java index 65739a4..b42cf81 100644 --- a/juddi-core/src/main/java/org/apache/juddi/mapping/MappingApiToModel.java +++ b/juddi-core/src/main/java/org/apache/juddi/mapping/MappingApiToModel.java @@ -35,7 +35,6 @@ import org.apache.juddi.model.Address; import org.apache.juddi.model.BindingTemplate; import org.apache.juddi.model.BusinessService; import org.apache.juddi.model.CanonicalizationMethod; -import org.apache.juddi.model.CommunicationGraph; import org.apache.juddi.model.Contact; import org.apache.juddi.model.ControlMessage; import org.apache.juddi.model.Edge; @@ -60,6 +59,7 @@ import org.uddi.api_v3.Description; import org.uddi.api_v3.OperationalInfo; import org.uddi.api_v3.SaveBinding; import org.uddi.repl_v3.ChangeRecord; +import org.uddi.repl_v3.CommunicationGraph; import org.uddi.repl_v3.ReplicationConfiguration; import org.uddi.sub_v3.ObjectFactory; import org.uddi.v3_service.DispositionReportFaultMessage; @@ -1425,7 +1425,7 @@ public class MappingApiToModel { if (replicationConfiguration.getRegistryContact() != null) { model.setContact(mapContact(replicationConfiguration.getRegistryContact().getContact())); } - model.setCommunicationGraph(mapCommunicationGraph(replicationConfiguration.getCommunicationGraph(), em)); + mapCommunicationGraph(model,replicationConfiguration.getCommunicationGraph(), em); model.setOperator(mapOperators(replicationConfiguration.getOperator())); if (replicationConfiguration.getSignature() != null) { model.setSignatures(mapApiSignaturesToModelSignatures(replicationConfiguration.getSignature())); @@ -1443,12 +1443,65 @@ public class MappingApiToModel { return model; } - private static CommunicationGraph mapCommunicationGraph(org.uddi.repl_v3.CommunicationGraph communicationGraph, EntityManager em) throws DispositionReportFaultMessage { - if (communicationGraph == null) { + + + private static List<Operator> mapOperators(List<org.uddi.repl_v3.Operator> api) throws DispositionReportFaultMessage { + if (api == null) { return null; } - CommunicationGraph model = new CommunicationGraph(); + List<Operator> model = new ArrayList<Operator>(); + for (int i = 0; i < api.size(); i++) { + Operator op = new Operator(); + op.setSoapReplicationURL(api.get(i).getSoapReplicationURL()); + if (!api.get(i).getContact().isEmpty()) { + op.setContact(new ArrayList<Contact>()); + for (int k = 0; k < api.get(i).getContact().size(); k++) { + op.getContact().add(mapContact(api.get(i).getContact().get(k))); + } + } + op.setOperatorNodeID(api.get(i).getOperatorNodeID()); + op.setOperatorStatus(mapOperatorStatus(api.get(i).getOperatorStatus())); + if (!api.get(i).getKeyInfo().isEmpty()) { + op.setKeyInfo(new ArrayList<KeyInfo>()); + for (int k = 0; k < api.get(i).getKeyInfo().size(); k++) { + org.apache.juddi.model.KeyInfo modelKeyInfo = new KeyInfo(); + modelKeyInfo.setXmlID(api.get(i).getKeyInfo().get(i).getId()); + modelKeyInfo.setKeyDataValue(new ArrayList<KeyDataValue>()); + if (api.get(i).getKeyInfo().get(i).getContent() != null) { + modelKeyInfo.setKeyDataValue(new ArrayList<KeyDataValue>()); + for (int x = 0; x < api.get(i).getKeyInfo().get(k).getContent().size(); x++) { + mapKeyValue((JAXBElement) api.get(i).getKeyInfo().get(k).getContent().get(x), modelKeyInfo.getKeyDataValue()); + } + } + op.getKeyInfo().add(modelKeyInfo); + } + + } + model.add(op); + + } + return model; + } + + private static OperatorStatusType mapOperatorStatus(org.uddi.repl_v3.OperatorStatusType operatorStatus) { + switch (operatorStatus) { + case NEW: + return OperatorStatusType.NEW; + case NORMAL: + return OperatorStatusType.NORMAL; + case RESIGNED: + return OperatorStatusType.RESIGNED; + } + return null; + } + + private static void mapCommunicationGraph(org.apache.juddi.model.ReplicationConfiguration model, CommunicationGraph communicationGraph, EntityManager em) throws ValueNotAllowedException { + + if (model == null) { + return; + } + /** * Following the listing of nodes is the controlledMessage * element that lists the set of messages over which this @@ -1478,7 +1531,7 @@ public class MappingApiToModel { List<Edge> ret = new ArrayList<Edge>(); for (int i = 0; i < communicationGraph.getEdge().size(); i++) { Edge e = new Edge(); - e.setCommunicationGraph(model); + if (communicationGraph.getEdge().get(i).getMessageReceiver() == null) { throw new ValueNotAllowedException(new ErrorMessage("errors.replication.configNodeNotFound", communicationGraph.getEdge().get(i).getMessageReceiver())); } @@ -1524,61 +1577,7 @@ public class MappingApiToModel { ret.add(e); } model.setEdge(ret); - } - - return model; - - } - - private static List<Operator> mapOperators(List<org.uddi.repl_v3.Operator> api) throws DispositionReportFaultMessage { - if (api == null) { - return null; - } - List<Operator> model = new ArrayList<Operator>(); - for (int i = 0; i < api.size(); i++) { - Operator op = new Operator(); - op.setSoapReplicationURL(api.get(i).getSoapReplicationURL()); + }} } + - if (!api.get(i).getContact().isEmpty()) { - op.setContact(new ArrayList<Contact>()); - for (int k = 0; k < api.get(i).getContact().size(); k++) { - op.getContact().add(mapContact(api.get(i).getContact().get(k))); - } - } - op.setOperatorNodeID(api.get(i).getOperatorNodeID()); - op.setOperatorStatus(mapOperatorStatus(api.get(i).getOperatorStatus())); - if (!api.get(i).getKeyInfo().isEmpty()) { - op.setKeyInfo(new ArrayList<KeyInfo>()); - for (int k = 0; k < api.get(i).getKeyInfo().size(); k++) { - org.apache.juddi.model.KeyInfo modelKeyInfo = new KeyInfo(); - modelKeyInfo.setXmlID(api.get(i).getKeyInfo().get(i).getId()); - modelKeyInfo.setKeyDataValue(new ArrayList<KeyDataValue>()); - if (api.get(i).getKeyInfo().get(i).getContent() != null) { - modelKeyInfo.setKeyDataValue(new ArrayList<KeyDataValue>()); - for (int x = 0; x < api.get(i).getKeyInfo().get(k).getContent().size(); x++) { - mapKeyValue((JAXBElement) api.get(i).getKeyInfo().get(k).getContent().get(x), modelKeyInfo.getKeyDataValue()); - } - } - op.getKeyInfo().add(modelKeyInfo); - } - - } - model.add(op); - - } - return model; - } - - private static OperatorStatusType mapOperatorStatus(org.uddi.repl_v3.OperatorStatusType operatorStatus) { - switch (operatorStatus) { - case NEW: - return OperatorStatusType.NEW; - case NORMAL: - return OperatorStatusType.NORMAL; - case RESIGNED: - return OperatorStatusType.RESIGNED; - } - return null; - } -} http://git-wip-us.apache.org/repos/asf/juddi/blob/a975954b/juddi-core/src/main/java/org/apache/juddi/mapping/MappingModelToApi.java ---------------------------------------------------------------------- diff --git a/juddi-core/src/main/java/org/apache/juddi/mapping/MappingModelToApi.java b/juddi-core/src/main/java/org/apache/juddi/mapping/MappingModelToApi.java index 0b5d9a3..50535da 100644 --- a/juddi-core/src/main/java/org/apache/juddi/mapping/MappingModelToApi.java +++ b/juddi-core/src/main/java/org/apache/juddi/mapping/MappingModelToApi.java @@ -1220,7 +1220,7 @@ public class MappingModelToApi { item.setTimeOfConfigurationUpdate(find.getTimeOfConfigurationUpdate()); CommunicationGraph xcom = new CommunicationGraph(); - mapCommunicationGraph(find.getCommunicationGraph(), xcom); + mapCommunicationGraph(find, xcom); item.setCommunicationGraph(xcom); //(List<org.apache.juddi.model.Contact> modelContactList, //org.uddi.api_v3.Contacts apiContacts, @@ -1263,7 +1263,7 @@ public class MappingModelToApi { } - private static void mapCommunicationGraph(org.apache.juddi.model.CommunicationGraph model, + private static void mapCommunicationGraph(org.apache.juddi.model.ReplicationConfiguration model, CommunicationGraph api) { mapEdge(model.getEdge(), api.getEdge()); http://git-wip-us.apache.org/repos/asf/juddi/blob/a975954b/juddi-core/src/main/java/org/apache/juddi/model/CommunicationGraph.java ---------------------------------------------------------------------- diff --git a/juddi-core/src/main/java/org/apache/juddi/model/CommunicationGraph.java b/juddi-core/src/main/java/org/apache/juddi/model/CommunicationGraph.java deleted file mode 100644 index b2ec7d0..0000000 --- a/juddi-core/src/main/java/org/apache/juddi/model/CommunicationGraph.java +++ /dev/null @@ -1,99 +0,0 @@ -/* - * Copyright 2001-2008 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.model; - -import java.io.Serializable; -import java.util.ArrayList; - -import java.util.HashSet; -import java.util.List; -import java.util.Set; -import javax.persistence.CascadeType; -import javax.persistence.Column; -import javax.persistence.Entity; -import javax.persistence.FetchType; -import javax.persistence.GeneratedValue; -import javax.persistence.GenerationType; -import javax.persistence.Id; -import javax.persistence.OneToMany; -import javax.persistence.Table; -import javax.persistence.TableGenerator; - -@Entity -@Table(name = "j3_chg_graph") -public class CommunicationGraph implements Serializable { - - private Long id; - private List<Node> node; - private List<ControlMessage> controlledMessage; - private List<Edge> edge; - - - @OneToMany(targetEntity = Node.class, fetch = FetchType.LAZY, cascade = CascadeType.ALL) - public List<Node> getNode() { - if (node == null) { - node = new ArrayList<Node>(); - } - return this.node; - } - - public void setNode(List<Node> nodes) { - - this.node = nodes; - } - - @OneToMany(targetEntity = ControlMessage.class, fetch = FetchType.LAZY, cascade = CascadeType.ALL) - public List<ControlMessage> getControlMessage() { - if (controlledMessage == null) { - controlledMessage = new ArrayList<ControlMessage>(); - } - return this.controlledMessage; - } - - public void setControlMessage(List<ControlMessage> controlledMessages) { - - this.controlledMessage = controlledMessages; - } - - // @OneToMany( fetch = FetchType.LAZY,targetEntity = Edge.class, mappedBy = "Edge") - @OneToMany(targetEntity = Edge.class, fetch = FetchType.LAZY, cascade = CascadeType.ALL) - public List<Edge> getEdge() { - return this.edge; - } - - public void setEdge( List<Edge> edges) { - this.edge=edges; - } - - @Id - @Column(name = "j3_id") - @GeneratedValue(strategy = GenerationType.TABLE, - generator = "cfggrphGen") - @TableGenerator(name = "cfggrphGen", - table = "JPAGEN_CFGGRPH", - pkColumnName = "NAME", - pkColumnValue = "JPAGEN_PERSON_GEN", - valueColumnName = "VALUE") - public Long getId() { - return id; - } - - public void setId(Long id) { - this.id = id; - } -} - \ No newline at end of file http://git-wip-us.apache.org/repos/asf/juddi/blob/a975954b/juddi-core/src/main/java/org/apache/juddi/model/Edge.java ---------------------------------------------------------------------- diff --git a/juddi-core/src/main/java/org/apache/juddi/model/Edge.java b/juddi-core/src/main/java/org/apache/juddi/model/Edge.java index 768bb23..bc25990 100644 --- a/juddi-core/src/main/java/org/apache/juddi/model/Edge.java +++ b/juddi-core/src/main/java/org/apache/juddi/model/Edge.java @@ -40,26 +40,9 @@ public class Edge { private Node messageSender; private Node messageReceiver; private Set<Node> messageReceiverAlternate; - private CommunicationGraph parent; - - /** - * link the parent object - * @param val - */ - @OneToOne(cascade = CascadeType.ALL, fetch = FetchType.LAZY, targetEntity = CommunicationGraph.class) - //@JoinColumn(name = "OWNER_ID") - public CommunicationGraph getCommunicationGraph() { - return parent; - } - - /** - * link the parent object - * @param val - */ - public void setCommunicationGraph(CommunicationGraph val) { - parent = val; - } + private ReplicationConfiguration parent; + /** * The message elements contain the local name of the Replication API message elements * @return http://git-wip-us.apache.org/repos/asf/juddi/blob/a975954b/juddi-core/src/main/java/org/apache/juddi/model/ReplicationConfiguration.java ---------------------------------------------------------------------- diff --git a/juddi-core/src/main/java/org/apache/juddi/model/ReplicationConfiguration.java b/juddi-core/src/main/java/org/apache/juddi/model/ReplicationConfiguration.java index a481412..72c717b 100644 --- a/juddi-core/src/main/java/org/apache/juddi/model/ReplicationConfiguration.java +++ b/juddi-core/src/main/java/org/apache/juddi/model/ReplicationConfiguration.java @@ -43,7 +43,6 @@ public class ReplicationConfiguration implements Serializable { private Long serialNumber; private String timeOfConfigurationUpdate; private List<Operator> operator = new ArrayList<Operator>(0); - private CommunicationGraph communicationGraph; private BigInteger maximumTimeToSyncRegistry; private BigInteger maximumTimeToGetChanges; private List<Signature> signatures = new ArrayList<Signature>(0); @@ -77,13 +76,6 @@ public class ReplicationConfiguration implements Serializable { @Column(name = "serialnumb") @OrderBy(value = "SerialNumber DESC") @Id - @GeneratedValue(strategy = GenerationType.TABLE, - generator = "replcfgGen") - @TableGenerator(name = "replcfgGen", - table = "JPAGEN_REPLGEN", - pkColumnName = "NAME", - pkColumnValue = "JPAGEN_PERSON_GEN", - valueColumnName = "VALUE") public Long getSerialNumber() { return serialNumber; } @@ -131,26 +123,7 @@ public class ReplicationConfiguration implements Serializable { this.operator=v; } - /** - * Gets the value of the communicationGraph property. - * - * @return possible object is {@link CommunicationGraph } - * - */ - @OneToOne(cascade = CascadeType.ALL, fetch = FetchType.LAZY, targetEntity = CommunicationGraph.class) - public CommunicationGraph getCommunicationGraph() { - return communicationGraph; - } - - /** - * Sets the value of the communicationGraph property. - * - * @param value allowed object is {@link CommunicationGraph } - * - */ - public void setCommunicationGraph(CommunicationGraph value) { - this.communicationGraph = value; - } + /** * Gets the value of the maximumTimeToSyncRegistry property. @@ -204,6 +177,47 @@ public class ReplicationConfiguration implements Serializable { this.signatures = signatures; } + private List<Node> node; + private List<ControlMessage> controlledMessage; + private List<Edge> edge; + + //To use a Node or a String reference... + //Node will give us strict ref integ but makes a change history of the replication config impossible + //Strig increases code logic for ref integ,but makes chage history possible + @OneToMany(targetEntity = Node.class, orphanRemoval = false,fetch = FetchType.LAZY, cascade = {CascadeType.MERGE, CascadeType.REFRESH, CascadeType.PERSIST}) + public List<Node> getNode() { + if (node == null) { + node = new ArrayList<Node>(); + } + return this.node; + } + + public void setNode(List<Node> nodes) { + + this.node = nodes; + } + + @OneToMany(targetEntity = ControlMessage.class, fetch = FetchType.LAZY, cascade = CascadeType.ALL) + public List<ControlMessage> getControlMessage() { + if (controlledMessage == null) { + controlledMessage = new ArrayList<ControlMessage>(); + } + return this.controlledMessage; + } + + public void setControlMessage(List<ControlMessage> controlledMessages) { + + this.controlledMessage = controlledMessages; + } + + // @OneToMany( fetch = FetchType.LAZY,targetEntity = Edge.class, mappedBy = "Edge") + @OneToMany(targetEntity = Edge.class, fetch = FetchType.LAZY, cascade = CascadeType.ALL) + public List<Edge> getEdge() { + return this.edge; + } + public void setEdge( List<Edge> edges) { + this.edge=edges; + } } \ No newline at end of file http://git-wip-us.apache.org/repos/asf/juddi/blob/a975954b/juddi-core/src/main/java/org/apache/juddi/validation/ValidateReplication.java ---------------------------------------------------------------------- diff --git a/juddi-core/src/main/java/org/apache/juddi/validation/ValidateReplication.java b/juddi-core/src/main/java/org/apache/juddi/validation/ValidateReplication.java index 460c94d..6ede348 100644 --- a/juddi-core/src/main/java/org/apache/juddi/validation/ValidateReplication.java +++ b/juddi-core/src/main/java/org/apache/juddi/validation/ValidateReplication.java @@ -17,11 +17,15 @@ package org.apache.juddi.validation; import java.math.BigInteger; +import javax.persistence.EntityManager; import javax.xml.ws.WebServiceContext; +import org.apache.juddi.model.Node; import org.apache.juddi.model.UddiEntityPublisher; import org.apache.juddi.v3.error.ErrorMessage; import org.apache.juddi.v3.error.FatalErrorException; +import org.apache.juddi.v3.error.InvalidValueException; import org.apache.juddi.v3.error.ValueNotAllowedException; +import org.uddi.repl_v3.CommunicationGraph.Edge; import org.uddi.repl_v3.HighWaterMarkVectorType; import org.uddi.repl_v3.NotifyChangeRecordsAvailable; import org.uddi.repl_v3.ReplicationConfiguration; @@ -75,11 +79,11 @@ public class ValidateReplication extends ValidateUDDIApi { if (responseLimitVector != null) { for (int i = 0; i < responseLimitVector.getHighWaterMark().size(); i++) { if (responseLimitVector.getHighWaterMark().get(i).getOriginatingUSN() == null - || responseLimitVector.getHighWaterMark().get(i).getOriginatingUSN() <= 0) { + || responseLimitVector.getHighWaterMark().get(i).getOriginatingUSN() <= 0) { throw new FatalErrorException(new ErrorMessage("errors.replication.limitVectorNull")); } - if (responseLimitVector.getHighWaterMark().get(i).getNodeID()== null - || responseLimitVector.getHighWaterMark().get(i).getNodeID().trim().equalsIgnoreCase("")) { + if (responseLimitVector.getHighWaterMark().get(i).getNodeID() == null + || responseLimitVector.getHighWaterMark().get(i).getNodeID().trim().equalsIgnoreCase("")) { throw new FatalErrorException(new ErrorMessage("errors.replication.limitVectorNoNode")); } } @@ -111,8 +115,37 @@ public class ValidateReplication extends ValidateUDDIApi { return false; } - public void validateSetReplicationNodes(ReplicationConfiguration replicationConfiguration) throws DispositionReportFaultMessage { - + public void validateSetReplicationNodes(ReplicationConfiguration replicationConfiguration, EntityManager em) throws DispositionReportFaultMessage { + if (replicationConfiguration == null) { + throw new InvalidValueException(new ErrorMessage("errors.replication.configNull")); + + } + if (replicationConfiguration.getCommunicationGraph() != null) { + for (String s : replicationConfiguration.getCommunicationGraph().getNode()) { + Node find = em.find(org.apache.juddi.model.Node.class, s); + if (find == null) { + throw new InvalidValueException(new ErrorMessage("errors.replication.configNodeNotFound")); + } + } + for (Edge s : replicationConfiguration.getCommunicationGraph().getEdge()) { + Node find = em.find(org.apache.juddi.model.Node.class, s.getMessageReceiver()); + if (find == null) { + throw new InvalidValueException(new ErrorMessage("errors.replication.configNodeNotFound")); + } + find = null; + find = em.find(org.apache.juddi.model.Node.class, s.getMessageSender()); + if (find == null) { + throw new InvalidValueException(new ErrorMessage("errors.replication.configNodeNotFound")); + } + for (String id : s.getMessageReceiverAlternate()) { + find = em.find(org.apache.juddi.model.Node.class, id); + if (find == null) { + throw new InvalidValueException(new ErrorMessage("errors.replication.configNodeNotFound")); + } + } + + } + } } } http://git-wip-us.apache.org/repos/asf/juddi/blob/a975954b/juddi-core/src/main/resources/messages.properties ---------------------------------------------------------------------- diff --git a/juddi-core/src/main/resources/messages.properties b/juddi-core/src/main/resources/messages.properties index 9665589..0a23c78 100644 --- a/juddi-core/src/main/resources/messages.properties +++ b/juddi-core/src/main/resources/messages.properties @@ -293,4 +293,4 @@ errors.replication.limitVectorNull=The high water mark vector limit specified Or errors.replication.limitVectorNoNode=No node name was specified errors.replication.configNodeNotFound=No specified node name is not currently registered as a node. Use the jUDDI Service API to register it. Node id: errors.replication.configNull=No replication config was present in the message -errors.deleteNode.InReplicationConfig=The node to be deleted is currently referenced in the replication configuration. You must revise the configuration before deleting the node, \ No newline at end of file +errors.deleteNode.InReplicationConfig=The node to be deleted is currently referenced in the replication configuration. You must revise the configuration before deleting the node, http://git-wip-us.apache.org/repos/asf/juddi/blob/a975954b/juddi-core/src/test/java/org/apache/juddi/api/impl/API_160_ReplicationTest.java ---------------------------------------------------------------------- diff --git a/juddi-core/src/test/java/org/apache/juddi/api/impl/API_160_ReplicationTest.java b/juddi-core/src/test/java/org/apache/juddi/api/impl/API_160_ReplicationTest.java index d1719c2..f64512f 100644 --- a/juddi-core/src/test/java/org/apache/juddi/api/impl/API_160_ReplicationTest.java +++ b/juddi-core/src/test/java/org/apache/juddi/api/impl/API_160_ReplicationTest.java @@ -322,6 +322,26 @@ public class API_160_ReplicationTest { Assert.assertNotNull(replicationNodes.getMaximumTimeToSyncRegistry()); Assert.assertNotNull(replicationNodes.getTimeOfConfigurationUpdate()); Assert.assertNotNull(replicationNodes.getSerialNumber()); + long firstcommit = replicationNodes.getSerialNumber(); + + + + r = new ReplicationConfiguration(); + r.setCommunicationGraph(new CommunicationGraph()); + // r.getCommunicationGraph().getEdge().add(new CommunicationGraph.Edge()); + r.getCommunicationGraph().getNode().add("test_node"); + + setReplicationNodes = juddi.setReplicationNodes(authInfoRoot, r); + + replicationNodes = juddi.getReplicationNodes(authInfoRoot); + Assert.assertNotNull(replicationNodes.getCommunicationGraph()); + Assert.assertNotNull(replicationNodes.getCommunicationGraph().getNode()); + Assert.assertEquals("test_node", replicationNodes.getCommunicationGraph().getNode().get(0)); + Assert.assertNotNull(replicationNodes.getMaximumTimeToGetChanges()); + Assert.assertNotNull(replicationNodes.getMaximumTimeToSyncRegistry()); + Assert.assertNotNull(replicationNodes.getTimeOfConfigurationUpdate()); + Assert.assertNotNull(replicationNodes.getSerialNumber()); + Assert.assertTrue(firstcommit < replicationNodes.getSerialNumber()); } } http://git-wip-us.apache.org/repos/asf/juddi/blob/a975954b/juddi-core/src/test/resources/META-INF/persistence.xml ---------------------------------------------------------------------- diff --git a/juddi-core/src/test/resources/META-INF/persistence.xml b/juddi-core/src/test/resources/META-INF/persistence.xml index afb2de7..adc4a7e 100644 --- a/juddi-core/src/test/resources/META-INF/persistence.xml +++ b/juddi-core/src/test/resources/META-INF/persistence.xml @@ -1,111 +1,101 @@ -<?xml version="1.0" encoding="UTF-8"?> -<persistence xmlns="http://java.sun.com/xml/ns/persistence" - xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" - xsi:schemaLocation="http://java.sun.com/xml/ns/persistence http://java.sun.com/xml/ns/persistence/persistence_1_0.xsd" - version="1.0"> - <persistence-unit name="juddiDatabase" transaction-type="RESOURCE_LOCAL"> - <provider>org.hibernate.ejb.HibernatePersistence</provider> - - <!-- entity classes --> - <class>org.apache.juddi.model.Address</class> - <class>org.apache.juddi.model.AddressLine</class> - <class>org.apache.juddi.model.AuthToken</class> - <class>org.apache.juddi.model.BindingCategoryBag</class> - <class>org.apache.juddi.model.BindingDescr</class> - <class>org.apache.juddi.model.BindingTemplate</class> - <class>org.apache.juddi.model.BusinessCategoryBag</class> - <class>org.apache.juddi.model.BusinessDescr</class> - <class>org.apache.juddi.model.BusinessEntity</class> - <class>org.apache.juddi.model.BusinessIdentifier</class> - <class>org.apache.juddi.model.BusinessName</class> - <class>org.apache.juddi.model.BusinessService</class> - <class>org.apache.juddi.model.CanonicalizationMethod</class> - <class>org.apache.juddi.model.CategoryBag</class> - <class>org.apache.juddi.model.Clerk</class> - <class>org.apache.juddi.model.ClientSubscriptionInfo</class> - <class>org.apache.juddi.model.Contact</class> - <class>org.apache.juddi.model.ContactDescr</class> - <class>org.apache.juddi.model.DiscoveryUrl</class> - <class>org.apache.juddi.model.Email</class> - <class>org.apache.juddi.model.InstanceDetailsDescr</class> - <class>org.apache.juddi.model.InstanceDetailsDocDescr</class> - <class>org.apache.juddi.model.KeyedReference</class> - <class>org.apache.juddi.model.KeyedReferenceGroup</class> - <class>org.apache.juddi.model.KeyDataValue</class> - <class>org.apache.juddi.model.KeyInfo</class> - <class>org.apache.juddi.model.Node</class> - <class>org.apache.juddi.model.ObjectType</class> - <class>org.apache.juddi.model.ObjectTypeContent</class> - <class>org.apache.juddi.model.OverviewDoc</class> - <class>org.apache.juddi.model.OverviewDocDescr</class> - <class>org.apache.juddi.model.PersonName</class> - <class>org.apache.juddi.model.Phone</class> - <class>org.apache.juddi.model.Publisher</class> - <class>org.apache.juddi.model.PublisherAssertion</class> - <class>org.apache.juddi.model.PublisherAssertionId</class> - <class>org.apache.juddi.model.Reference</class> - <class>org.apache.juddi.model.ServiceCategoryBag</class> - <class>org.apache.juddi.model.ServiceDescr</class> - <class>org.apache.juddi.model.ServiceName</class> - <class>org.apache.juddi.model.ServiceProjection</class> - <class>org.apache.juddi.model.ServiceProjectionId</class> - <class>org.apache.juddi.model.Signature</class> - <class>org.apache.juddi.model.SignatureMethod</class> - <class>org.apache.juddi.model.SignatureTransform</class> - <class>org.apache.juddi.model.SignatureTransformDataValue</class> - <class>org.apache.juddi.model.SignatureValue</class> - <class>org.apache.juddi.model.SignedInfo</class> - <class>org.apache.juddi.model.Subscription</class> - <class>org.apache.juddi.model.SubscriptionChunkToken</class> - <class>org.apache.juddi.model.SubscriptionMatch</class> - <class>org.apache.juddi.model.TempKey</class> - <class>org.apache.juddi.model.TempKeyPK</class> - <class>org.apache.juddi.model.Tmodel</class> - <class>org.apache.juddi.model.TmodelCategoryBag</class> - <class>org.apache.juddi.model.TmodelDescr</class> - <class>org.apache.juddi.model.TmodelIdentifier</class> - <class>org.apache.juddi.model.TmodelInstanceInfo</class> - <class>org.apache.juddi.model.TmodelInstanceInfoDescr</class> - <class>org.apache.juddi.model.TransferToken</class> - <class>org.apache.juddi.model.TransferTokenKey</class> - <class>org.apache.juddi.model.UddiEntity</class> - <class>org.apache.juddi.model.UddiEntityPublisher</class> - <class>org.apache.juddi.model.ValueSetValues</class> - - <class>org.apache.juddi.model.ChangeRecord</class> - <class>org.apache.juddi.model.CommunicationGraph</class> - <class>org.apache.juddi.model.Operator</class> - <class>org.apache.juddi.model.ReplicationConfiguration</class> - <class>org.apache.juddi.model.Edge</class> - <class>org.apache.juddi.model.ControlMessage</class> - <class>org.apache.juddi.model.ReplicationMessage</class> - - <properties> - <property name="hibernate.archive.autodetection" value="class"/> - <property name="hibernate.hbm2ddl.auto" value="update"/> - <property name="hibernate.show_sql" value="false"/> - - <!-- derby connection properties --> - <property name="hibernate.dialect" value="org.hibernate.dialect.DerbyDialect"/> - <property name="hibernate.connection.driver_class" value="org.apache.derby.jdbc.EmbeddedDriver"/> - <property name="hibernate.connection.url" value="jdbc:derby:memory:juddi-derby-test-db;create=true"/> - <property name="hibernate.connection.username" value=""/> - <property name="hibernate.connection.password" value=""/> - - <!-- mysql connection properties - - <property name="hibernate.dialect" value="org.hibernate.dialect.MySQLDialect" /> - <property name="hibernate.connection.driver_class" value="com.mysql.jdbc.Driver" /> - <property name="hibernate.connection.username" value="juddiv3" /> - <property name="hibernate.connection.password" value="" /> - <property name="hibernate.connection.url" value="jdbc:mysql://localhost:3306/juddiv3" /> ---> - - <!-- connection pool properties --> - <property name="hibernate.dbcp.maxActive" value="100"/> - <property name="hibernate.dbcp.maxIdle" value="30"/> - <property name="hibernate.dbcp.maxWait" value="10000"/> - - </properties> - </persistence-unit> -</persistence> +<?xml version="1.0" encoding="UTF-8"?> +<persistence version="1.0" xmlns="http://java.sun.com/xml/ns/persistence" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://java.sun.com/xml/ns/persistence http://java.sun.com/xml/ns/persistence/persistence_1_0.xsd"> + <persistence-unit name="juddiDatabase" transaction-type="RESOURCE_LOCAL"> + <provider>org.hibernate.ejb.HibernatePersistence</provider> + <!-- entity classes --> + <class>org.apache.juddi.model.Address</class> + <class>org.apache.juddi.model.AddressLine</class> + <class>org.apache.juddi.model.AuthToken</class> + <class>org.apache.juddi.model.BindingCategoryBag</class> + <class>org.apache.juddi.model.BindingDescr</class> + <class>org.apache.juddi.model.BindingTemplate</class> + <class>org.apache.juddi.model.BusinessCategoryBag</class> + <class>org.apache.juddi.model.BusinessDescr</class> + <class>org.apache.juddi.model.BusinessEntity</class> + <class>org.apache.juddi.model.BusinessIdentifier</class> + <class>org.apache.juddi.model.BusinessName</class> + <class>org.apache.juddi.model.BusinessService</class> + <class>org.apache.juddi.model.CanonicalizationMethod</class> + <class>org.apache.juddi.model.CategoryBag</class> + <class>org.apache.juddi.model.Clerk</class> + <class>org.apache.juddi.model.ClientSubscriptionInfo</class> + <class>org.apache.juddi.model.Contact</class> + <class>org.apache.juddi.model.ContactDescr</class> + <class>org.apache.juddi.model.DiscoveryUrl</class> + <class>org.apache.juddi.model.Email</class> + <class>org.apache.juddi.model.InstanceDetailsDescr</class> + <class>org.apache.juddi.model.InstanceDetailsDocDescr</class> + <class>org.apache.juddi.model.KeyedReference</class> + <class>org.apache.juddi.model.KeyedReferenceGroup</class> + <class>org.apache.juddi.model.KeyDataValue</class> + <class>org.apache.juddi.model.KeyInfo</class> + <class>org.apache.juddi.model.Node</class> + <class>org.apache.juddi.model.ObjectType</class> + <class>org.apache.juddi.model.ObjectTypeContent</class> + <class>org.apache.juddi.model.OverviewDoc</class> + <class>org.apache.juddi.model.OverviewDocDescr</class> + <class>org.apache.juddi.model.PersonName</class> + <class>org.apache.juddi.model.Phone</class> + <class>org.apache.juddi.model.Publisher</class> + <class>org.apache.juddi.model.PublisherAssertion</class> + <class>org.apache.juddi.model.PublisherAssertionId</class> + <class>org.apache.juddi.model.Reference</class> + <class>org.apache.juddi.model.ServiceCategoryBag</class> + <class>org.apache.juddi.model.ServiceDescr</class> + <class>org.apache.juddi.model.ServiceName</class> + <class>org.apache.juddi.model.ServiceProjection</class> + <class>org.apache.juddi.model.ServiceProjectionId</class> + <class>org.apache.juddi.model.Signature</class> + <class>org.apache.juddi.model.SignatureMethod</class> + <class>org.apache.juddi.model.SignatureTransform</class> + <class>org.apache.juddi.model.SignatureTransformDataValue</class> + <class>org.apache.juddi.model.SignatureValue</class> + <class>org.apache.juddi.model.SignedInfo</class> + <class>org.apache.juddi.model.Subscription</class> + <class>org.apache.juddi.model.SubscriptionChunkToken</class> + <class>org.apache.juddi.model.SubscriptionMatch</class> + <class>org.apache.juddi.model.TempKey</class> + <class>org.apache.juddi.model.TempKeyPK</class> + <class>org.apache.juddi.model.Tmodel</class> + <class>org.apache.juddi.model.TmodelCategoryBag</class> + <class>org.apache.juddi.model.TmodelDescr</class> + <class>org.apache.juddi.model.TmodelIdentifier</class> + <class>org.apache.juddi.model.TmodelInstanceInfo</class> + <class>org.apache.juddi.model.TmodelInstanceInfoDescr</class> + <class>org.apache.juddi.model.TransferToken</class> + <class>org.apache.juddi.model.TransferTokenKey</class> + <class>org.apache.juddi.model.UddiEntity</class> + <class>org.apache.juddi.model.UddiEntityPublisher</class> + <class>org.apache.juddi.model.ValueSetValues</class> + <class>org.apache.juddi.model.ChangeRecord</class> + <class>org.apache.juddi.model.CommunicationGraph</class> + <class>org.apache.juddi.model.Operator</class> + <class>org.apache.juddi.model.ReplicationConfiguration</class> + <class>org.apache.juddi.model.Edge</class> + <class>org.apache.juddi.model.ControlMessage</class> + <properties> + <property name="hibernate.archive.autodetection" value="class"/> + <property name="hibernate.hbm2ddl.auto" value="update"/> + <property name="hibernate.show_sql" value="false"/> + <!-- derby connection properties --> + <property name="hibernate.dialect" value="org.hibernate.dialect.DerbyDialect"/> + <property name="hibernate.connection.driver_class" value="org.apache.derby.jdbc.EmbeddedDriver"/> + <property name="hibernate.connection.url" value="jdbc:derby:memory:juddi-derby-test-db;create=true"/> + <property name="hibernate.connection.username" value=""/> + <property name="hibernate.connection.password" value=""/> + <!-- mysql connection properties + + <property name="hibernate.dialect" value="org.hibernate.dialect.MySQLDialect" /> + <property name="hibernate.connection.driver_class" value="com.mysql.jdbc.Driver" /> + <property name="hibernate.connection.username" value="juddiv3" /> + <property name="hibernate.connection.password" value="" /> + <property name="hibernate.connection.url" value="jdbc:mysql://localhost:3306/juddiv3" /> +--> + <!-- connection pool properties --> + <!--<property name = "hibernate.show_sql" value = "true" />--> + <property name="hibernate.dbcp.maxActive" value="100"/> + <property name="hibernate.dbcp.maxIdle" value="30"/> + <property name="hibernate.dbcp.maxWait" value="10000"/> + </properties> + </persistence-unit> +</persistence> --------------------------------------------------------------------- To unsubscribe, e-mail: [email protected] For additional commands, e-mail: [email protected]
