http://git-wip-us.apache.org/repos/asf/juddi/blob/8b95902b/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 2148827..a271d7e 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 @@ -16,36 +16,55 @@ */ package org.apache.juddi.mapping; +import java.io.StringWriter; +import java.io.UnsupportedEncodingException; +import java.text.SimpleDateFormat; import java.util.ArrayList; import java.util.Date; import java.util.GregorianCalendar; +import java.util.HashSet; import java.util.List; +import javax.persistence.EntityManager; import javax.xml.bind.JAXB; import javax.xml.bind.JAXBElement; import javax.xml.transform.dom.DOMResult; - - import org.apache.commons.logging.Log; import org.apache.commons.logging.LogFactory; import org.apache.juddi.jaxb.JAXBMarshaller; +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; +import org.apache.juddi.model.KeyDataValue; import org.apache.juddi.model.KeyInfo; +import org.apache.juddi.model.Node; +import org.apache.juddi.model.Operator; +import org.apache.juddi.model.OperatorStatusType; import org.apache.juddi.model.Publisher; import org.apache.juddi.model.Reference; import org.apache.juddi.model.Signature; import org.apache.juddi.model.SignatureMethod; import org.apache.juddi.model.SignatureTransform; +import org.apache.juddi.model.SignatureTransformDataValue; import org.apache.juddi.model.SignatureValue; import org.apache.juddi.model.SignedInfo; import org.apache.juddi.model.Tmodel; -import org.apache.juddi.model.KeyDataValue; -import org.apache.juddi.model.SignatureTransformDataValue; +import org.apache.juddi.model.UddiEntity; +import org.apache.juddi.v3.error.ErrorMessage; +import org.apache.juddi.v3.error.ValueNotAllowedException; 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.ReplicationConfiguration; import org.uddi.sub_v3.ObjectFactory; import org.uddi.v3_service.DispositionReportFaultMessage; import org.w3._2000._09.xmldsig_.DSAKeyValueType; +import org.w3._2000._09.xmldsig_.KeyInfoType; import org.w3._2000._09.xmldsig_.KeyValueType; import org.w3._2000._09.xmldsig_.PGPDataType; import org.w3._2000._09.xmldsig_.RSAKeyValueType; @@ -83,8 +102,8 @@ public class MappingApiToModel { * @throws DispositionReportFaultMessage */ public static void mapPublisher(org.apache.juddi.api_v3.Publisher apiPublisher, - org.apache.juddi.model.Publisher modelPublisher) - throws DispositionReportFaultMessage { + org.apache.juddi.model.Publisher modelPublisher) + throws DispositionReportFaultMessage { modelPublisher.setAuthorizedName(apiPublisher.getAuthorizedName()); modelPublisher.setPublisherName(apiPublisher.getPublisherName()); modelPublisher.setEmailAddress(apiPublisher.getEmailAddress()); @@ -104,8 +123,8 @@ public class MappingApiToModel { * @throws DispositionReportFaultMessage */ public static void mapBusinessEntity(org.uddi.api_v3.BusinessEntity apiBusinessEntity, - org.apache.juddi.model.BusinessEntity modelBusinessEntity) - throws DispositionReportFaultMessage { + org.apache.juddi.model.BusinessEntity modelBusinessEntity) + throws DispositionReportFaultMessage { modelBusinessEntity.setEntityKey(apiBusinessEntity.getBusinessKey()); @@ -120,15 +139,15 @@ public class MappingApiToModel { } mapBusinessServices(apiBusinessEntity.getBusinessServices(), - modelBusinessEntity.getBusinessServices(), - modelBusinessEntity.getServiceProjections(), - modelBusinessEntity); + modelBusinessEntity.getBusinessServices(), + modelBusinessEntity.getServiceProjections(), + modelBusinessEntity); mapBusinessSignature(apiBusinessEntity.getSignature(), modelBusinessEntity); } private static List<Signature> mapApiSignaturesToModelSignatures(List<org.w3._2000._09.xmldsig_.SignatureType> apiSignatures) - throws DispositionReportFaultMessage { + throws DispositionReportFaultMessage { List<Signature> modelSignatures = new ArrayList<Signature>(); modelSignatures.clear(); for (org.w3._2000._09.xmldsig_.SignatureType signatureType : apiSignatures) { @@ -224,7 +243,7 @@ public class MappingApiToModel { * @throws DispositionReportFaultMessage */ public static void mapBusinessServiceSignature(List<org.w3._2000._09.xmldsig_.SignatureType> apiSignatures, BusinessService modelBusinessService) - throws DispositionReportFaultMessage { + throws DispositionReportFaultMessage { List<Signature> modelSignatures = mapApiSignaturesToModelSignatures(apiSignatures); for (Signature modelSignature : modelSignatures) { modelSignature.setBusinessService(modelBusinessService); @@ -239,7 +258,7 @@ public class MappingApiToModel { * @throws DispositionReportFaultMessage */ public static void mapTmodelSignatures(List<org.w3._2000._09.xmldsig_.SignatureType> apiSignatures, Tmodel modelTmodel) - throws DispositionReportFaultMessage { + throws DispositionReportFaultMessage { List<Signature> modelSignatures = mapApiSignaturesToModelSignatures(apiSignatures); for (Signature modelSignature : modelSignatures) { modelSignature.setTmodel(modelTmodel); @@ -254,7 +273,7 @@ public class MappingApiToModel { * @throws DispositionReportFaultMessage */ public static void mapBindingTemplateSignatures(List<org.w3._2000._09.xmldsig_.SignatureType> apiSignatures, BindingTemplate modelBindingTemplate) - throws DispositionReportFaultMessage { + throws DispositionReportFaultMessage { List<Signature> modelSignatures = mapApiSignaturesToModelSignatures(apiSignatures); for (Signature modelSignature : modelSignatures) { modelSignature.setBindingTemplate(modelBindingTemplate); @@ -269,7 +288,7 @@ public class MappingApiToModel { * @throws DispositionReportFaultMessage */ public static void mapPublisherSignatures(List<org.w3._2000._09.xmldsig_.SignatureType> apiSignatures, Publisher modelPublisher) - throws DispositionReportFaultMessage { + throws DispositionReportFaultMessage { List<Signature> modelSignatures = mapApiSignaturesToModelSignatures(apiSignatures); for (Signature modelSignature : modelSignatures) { modelSignature.setPublisher(modelPublisher); @@ -284,8 +303,8 @@ public class MappingApiToModel { * @throws DispositionReportFaultMessage */ public static void mapBusinessSignature(List<org.w3._2000._09.xmldsig_.SignatureType> apiSignatures, - org.apache.juddi.model.BusinessEntity modelBusinessEntity) - throws DispositionReportFaultMessage { + org.apache.juddi.model.BusinessEntity modelBusinessEntity) + throws DispositionReportFaultMessage { List<Signature> modelSignatures = mapApiSignaturesToModelSignatures(apiSignatures); for (Signature modelSignature : modelSignatures) { modelSignature.setBusinessEntity(modelBusinessEntity); @@ -301,9 +320,9 @@ public class MappingApiToModel { * @throws DispositionReportFaultMessage */ public static void mapBusinessNames(List<org.uddi.api_v3.Name> apiNameList, - List<org.apache.juddi.model.BusinessName> modelNameList, - org.apache.juddi.model.BusinessEntity modelBusinessEntity) - throws DispositionReportFaultMessage { + List<org.apache.juddi.model.BusinessName> modelNameList, + org.apache.juddi.model.BusinessEntity modelBusinessEntity) + throws DispositionReportFaultMessage { modelNameList.clear(); for (org.uddi.api_v3.Name apiName : apiNameList) { @@ -319,9 +338,9 @@ public class MappingApiToModel { * @throws DispositionReportFaultMessage */ public static void mapBusinessDescriptions(List<org.uddi.api_v3.Description> apiDescList, - List<org.apache.juddi.model.BusinessDescr> modelDescList, - org.apache.juddi.model.BusinessEntity modelBusinessEntity) - throws DispositionReportFaultMessage { + List<org.apache.juddi.model.BusinessDescr> modelDescList, + org.apache.juddi.model.BusinessEntity modelBusinessEntity) + throws DispositionReportFaultMessage { modelDescList.clear(); for (org.uddi.api_v3.Description apiDesc : apiDescList) { @@ -337,9 +356,9 @@ public class MappingApiToModel { * @throws DispositionReportFaultMessage */ public static void mapDiscoveryUrls(org.uddi.api_v3.DiscoveryURLs apiDiscUrls, - List<org.apache.juddi.model.DiscoveryUrl> modelDiscUrlList, - org.apache.juddi.model.BusinessEntity modelBusinessEntity) - throws DispositionReportFaultMessage { + List<org.apache.juddi.model.DiscoveryUrl> modelDiscUrlList, + org.apache.juddi.model.BusinessEntity modelBusinessEntity) + throws DispositionReportFaultMessage { modelDiscUrlList.clear(); if (apiDiscUrls != null) { @@ -358,9 +377,9 @@ public class MappingApiToModel { * @throws DispositionReportFaultMessage */ public static void mapContacts(org.uddi.api_v3.Contacts apiContacts, - List<org.apache.juddi.model.Contact> modelContactList, - org.apache.juddi.model.BusinessEntity modelBusinessEntity) - throws DispositionReportFaultMessage { + List<org.apache.juddi.model.Contact> modelContactList, + org.apache.juddi.model.BusinessEntity modelBusinessEntity) + throws DispositionReportFaultMessage { modelContactList.clear(); if (apiContacts != null) { @@ -373,7 +392,7 @@ public class MappingApiToModel { mapContactDescriptions(apiContact.getDescription(), modelContact.getContactDescrs(), modelContact, modelBusinessEntity.getEntityKey()); mapContactEmails(apiContact.getEmail(), modelContact.getEmails(), modelContact, modelBusinessEntity.getEntityKey()); mapContactPhones(apiContact.getPhone(), modelContact.getPhones(), modelContact, modelBusinessEntity.getEntityKey()); - mapContactAddresses(apiContact.getAddress(), modelContact.getAddresses(), modelContact, modelBusinessEntity.getEntityKey()); + mapContactAddresses(apiContact.getAddress(), modelContact.getAddresses(), modelContact); modelContactList.add(modelContact); } @@ -389,10 +408,10 @@ public class MappingApiToModel { * @throws DispositionReportFaultMessage */ public static void mapContactDescriptions(List<org.uddi.api_v3.Description> apiDescList, - List<org.apache.juddi.model.ContactDescr> modelDescList, - org.apache.juddi.model.Contact modelContact, - String businessKey) - throws DispositionReportFaultMessage { + List<org.apache.juddi.model.ContactDescr> modelDescList, + org.apache.juddi.model.Contact modelContact, + String businessKey) + throws DispositionReportFaultMessage { modelDescList.clear(); for (org.uddi.api_v3.Description apiDesc : apiDescList) { @@ -409,10 +428,10 @@ public class MappingApiToModel { * @throws DispositionReportFaultMessage */ public static void mapPersonNames(List<org.uddi.api_v3.PersonName> apiPersonNameList, - List<org.apache.juddi.model.PersonName> modelPersonNameList, - org.apache.juddi.model.Contact modelContact, - String businessKey) - throws DispositionReportFaultMessage { + List<org.apache.juddi.model.PersonName> modelPersonNameList, + org.apache.juddi.model.Contact modelContact, + String businessKey) + throws DispositionReportFaultMessage { modelPersonNameList.clear(); for (org.uddi.api_v3.PersonName apiPersonName : apiPersonNameList) { @@ -429,10 +448,10 @@ public class MappingApiToModel { * @throws DispositionReportFaultMessage */ public static void mapContactEmails(List<org.uddi.api_v3.Email> apiEmailList, - List<org.apache.juddi.model.Email> modelEmailList, - org.apache.juddi.model.Contact modelContact, - String businessKey) - throws DispositionReportFaultMessage { + List<org.apache.juddi.model.Email> modelEmailList, + org.apache.juddi.model.Contact modelContact, + String businessKey) + throws DispositionReportFaultMessage { modelEmailList.clear(); for (org.uddi.api_v3.Email apiEmail : apiEmailList) { @@ -449,10 +468,10 @@ public class MappingApiToModel { * @throws DispositionReportFaultMessage */ public static void mapContactPhones(List<org.uddi.api_v3.Phone> apiPhoneList, - List<org.apache.juddi.model.Phone> modelPhoneList, - org.apache.juddi.model.Contact modelContact, - String businessKey) - throws DispositionReportFaultMessage { + List<org.apache.juddi.model.Phone> modelPhoneList, + org.apache.juddi.model.Contact modelContact, + String businessKey) + throws DispositionReportFaultMessage { modelPhoneList.clear(); for (org.uddi.api_v3.Phone apiPhone : apiPhoneList) { @@ -469,10 +488,10 @@ public class MappingApiToModel { * @throws DispositionReportFaultMessage */ public static void mapContactAddresses(List<org.uddi.api_v3.Address> apiAddressList, - List<org.apache.juddi.model.Address> modelAddressList, - org.apache.juddi.model.Contact modelContact, - String businessKey) - throws DispositionReportFaultMessage { + List<org.apache.juddi.model.Address> modelAddressList, + org.apache.juddi.model.Contact modelContact + ) + throws DispositionReportFaultMessage { modelAddressList.clear(); for (org.uddi.api_v3.Address apiAddress : apiAddressList) { @@ -481,7 +500,7 @@ public class MappingApiToModel { modelAddress.setTmodelKey(apiAddress.getTModelKey()); modelAddress.setUseType(apiAddress.getUseType()); - mapAddressLines(apiAddress.getAddressLine(), modelAddress.getAddressLines(), modelAddress, businessKey, modelContact.getId()); + mapAddressLines(apiAddress.getAddressLine(), modelAddress.getAddressLines(), modelAddress, modelContact.getId()); modelAddressList.add(modelAddress); } @@ -492,16 +511,15 @@ public class MappingApiToModel { * @param apiAddressLineList * @param modelAddressLineList * @param modelAddress - * @param businessKey + * * @param contactId * @throws DispositionReportFaultMessage */ public static void mapAddressLines(List<org.uddi.api_v3.AddressLine> apiAddressLineList, - List<org.apache.juddi.model.AddressLine> modelAddressLineList, - org.apache.juddi.model.Address modelAddress, - String businessKey, - Long contactId) - throws DispositionReportFaultMessage { + List<org.apache.juddi.model.AddressLine> modelAddressLineList, + org.apache.juddi.model.Address modelAddress, + Long contactId) + throws DispositionReportFaultMessage { modelAddressLineList.clear(); for (org.uddi.api_v3.AddressLine apiAddressLine : apiAddressLineList) { @@ -517,9 +535,9 @@ public class MappingApiToModel { * @throws DispositionReportFaultMessage */ public static void mapBusinessIdentifiers(org.uddi.api_v3.IdentifierBag apiIdentifierBag, - List<org.apache.juddi.model.BusinessIdentifier> modelIdentifierList, - org.apache.juddi.model.BusinessEntity modelBusinessEntity) - throws DispositionReportFaultMessage { + List<org.apache.juddi.model.BusinessIdentifier> modelIdentifierList, + org.apache.juddi.model.BusinessEntity modelBusinessEntity) + throws DispositionReportFaultMessage { modelIdentifierList.clear(); if (apiIdentifierBag != null) { @@ -539,10 +557,10 @@ public class MappingApiToModel { * @throws DispositionReportFaultMessage */ public static void mapBusinessServices(org.uddi.api_v3.BusinessServices apiBusinessServices, - List<org.apache.juddi.model.BusinessService> modelBusinessServiceList, - List<org.apache.juddi.model.ServiceProjection> modelServiceProjectionList, - org.apache.juddi.model.BusinessEntity modelBusinessEntity) - throws DispositionReportFaultMessage { + List<org.apache.juddi.model.BusinessService> modelBusinessServiceList, + List<org.apache.juddi.model.ServiceProjection> modelServiceProjectionList, + org.apache.juddi.model.BusinessEntity modelBusinessEntity) + throws DispositionReportFaultMessage { modelBusinessServiceList.clear(); if (apiBusinessServices != null) { List<org.uddi.api_v3.BusinessService> apiBusinessServiceList = apiBusinessServices.getBusinessService(); @@ -551,7 +569,7 @@ public class MappingApiToModel { // If the parent businessEntity key and the service businessEntity key (if provided) do not match, it's a projection. if (apiBusinessService.getBusinessKey() != null && apiBusinessService.getBusinessKey().length() > 0 - && !modelBusinessEntity.getEntityKey().equalsIgnoreCase(apiBusinessService.getBusinessKey())) { + && !modelBusinessEntity.getEntityKey().equalsIgnoreCase(apiBusinessService.getBusinessKey())) { modelBusinessService.setEntityKey(apiBusinessService.getServiceKey()); org.apache.juddi.model.ServiceProjection modelServiceProjection = new org.apache.juddi.model.ServiceProjection(modelBusinessEntity, modelBusinessService); @@ -573,9 +591,9 @@ public class MappingApiToModel { * @throws DispositionReportFaultMessage */ public static void mapBusinessService(org.uddi.api_v3.BusinessService apiBusinessService, - org.apache.juddi.model.BusinessService modelBusinessService, - org.apache.juddi.model.BusinessEntity modelBusinessEntity) - throws DispositionReportFaultMessage { + org.apache.juddi.model.BusinessService modelBusinessService, + org.apache.juddi.model.BusinessEntity modelBusinessEntity) + throws DispositionReportFaultMessage { modelBusinessService.setBusinessEntity(modelBusinessEntity); modelBusinessService.setEntityKey(apiBusinessService.getServiceKey()); @@ -599,9 +617,9 @@ public class MappingApiToModel { * @throws DispositionReportFaultMessage */ public static void mapServiceNames(List<org.uddi.api_v3.Name> apiNameList, - List<org.apache.juddi.model.ServiceName> modelNameList, - org.apache.juddi.model.BusinessService modelBusinessService) - throws DispositionReportFaultMessage { + List<org.apache.juddi.model.ServiceName> modelNameList, + org.apache.juddi.model.BusinessService modelBusinessService) + throws DispositionReportFaultMessage { modelNameList.clear(); for (org.uddi.api_v3.Name apiName : apiNameList) { @@ -617,9 +635,9 @@ public class MappingApiToModel { * @throws DispositionReportFaultMessage */ public static void mapServiceDescriptions(List<org.uddi.api_v3.Description> apiDescList, - List<org.apache.juddi.model.ServiceDescr> modelDescList, - org.apache.juddi.model.BusinessService modelBusinessService) - throws DispositionReportFaultMessage { + List<org.apache.juddi.model.ServiceDescr> modelDescList, + org.apache.juddi.model.BusinessService modelBusinessService) + throws DispositionReportFaultMessage { modelDescList.clear(); for (org.uddi.api_v3.Description apiDesc : apiDescList) { @@ -635,9 +653,9 @@ public class MappingApiToModel { * @throws DispositionReportFaultMessage */ public static void mapBindingTemplates(org.uddi.api_v3.BindingTemplates apiBindingTemplates, - List<org.apache.juddi.model.BindingTemplate> modelBindingTemplateList, - org.apache.juddi.model.BusinessService modelBusinessService) - throws DispositionReportFaultMessage { + List<org.apache.juddi.model.BindingTemplate> modelBindingTemplateList, + org.apache.juddi.model.BusinessService modelBusinessService) + throws DispositionReportFaultMessage { modelBindingTemplateList.clear(); if (apiBindingTemplates != null) { @@ -660,9 +678,9 @@ public class MappingApiToModel { * @throws DispositionReportFaultMessage */ public static void mapBindingTemplate(org.uddi.api_v3.BindingTemplate apiBindingTemplate, - org.apache.juddi.model.BindingTemplate modelBindingTemplate, - org.apache.juddi.model.BusinessService modelBusinessService) - throws DispositionReportFaultMessage { + org.apache.juddi.model.BindingTemplate modelBindingTemplate, + org.apache.juddi.model.BusinessService modelBusinessService) + throws DispositionReportFaultMessage { modelBindingTemplate.setBusinessService(modelBusinessService); modelBindingTemplate.setEntityKey(apiBindingTemplate.getBindingKey()); @@ -691,9 +709,9 @@ public class MappingApiToModel { * @throws DispositionReportFaultMessage */ public static void mapBindingDescriptions(List<org.uddi.api_v3.Description> apiDescList, - List<org.apache.juddi.model.BindingDescr> modelDescList, - org.apache.juddi.model.BindingTemplate modelBindingTemplate) - throws DispositionReportFaultMessage { + List<org.apache.juddi.model.BindingDescr> modelDescList, + org.apache.juddi.model.BindingTemplate modelBindingTemplate) + throws DispositionReportFaultMessage { modelDescList.clear(); for (org.uddi.api_v3.Description apiDesc : apiDescList) { modelDescList.add(new org.apache.juddi.model.BindingDescr(modelBindingTemplate, apiDesc.getLang(), apiDesc.getValue())); @@ -707,8 +725,8 @@ public class MappingApiToModel { * @throws DispositionReportFaultMessage */ public static void mapCategoryBag(org.uddi.api_v3.CategoryBag apiCategoryBag, - org.apache.juddi.model.CategoryBag modelCategoryBag) - throws DispositionReportFaultMessage { + org.apache.juddi.model.CategoryBag modelCategoryBag) + throws DispositionReportFaultMessage { if (apiCategoryBag != null) { List<org.uddi.api_v3.KeyedReference> krList = apiCategoryBag.getKeyedReference(); @@ -718,7 +736,7 @@ public class MappingApiToModel { //modelKeyedReferences.clear(); org.uddi.api_v3.KeyedReference apiKeyedReference = (org.uddi.api_v3.KeyedReference) elem; modelKeyedReferences.add(new org.apache.juddi.model.KeyedReference(modelCategoryBag, - apiKeyedReference.getTModelKey(), apiKeyedReference.getKeyName(), apiKeyedReference.getKeyValue())); + apiKeyedReference.getTModelKey(), apiKeyedReference.getKeyName(), apiKeyedReference.getKeyValue())); } } List<org.uddi.api_v3.KeyedReferenceGroup> krgList = apiCategoryBag.getKeyedReferenceGroup(); @@ -746,9 +764,9 @@ public class MappingApiToModel { * @throws DispositionReportFaultMessage */ public static void mapKeyedReferenceGroup(org.uddi.api_v3.KeyedReferenceGroup apiKeyedReferenceGroup, - org.apache.juddi.model.KeyedReferenceGroup modelKeyedReferenceGroup, - org.apache.juddi.model.CategoryBag modelCategoryBag) - throws DispositionReportFaultMessage { + org.apache.juddi.model.KeyedReferenceGroup modelKeyedReferenceGroup, + org.apache.juddi.model.CategoryBag modelCategoryBag) + throws DispositionReportFaultMessage { if (apiKeyedReferenceGroup != null) { modelKeyedReferenceGroup.setCategoryBag(modelCategoryBag); modelKeyedReferenceGroup.setTmodelKey(apiKeyedReferenceGroup.getTModelKey()); @@ -757,7 +775,7 @@ public class MappingApiToModel { List<org.apache.juddi.model.KeyedReference> modelKeyedReferences = modelKeyedReferenceGroup.getKeyedReferences(); for (org.uddi.api_v3.KeyedReference apiKeyedReference : apiKeyedReferenceGroup.getKeyedReference()) { modelKeyedReferences.add(new org.apache.juddi.model.KeyedReference(modelKeyedReferenceGroup, - apiKeyedReference.getTModelKey(), apiKeyedReference.getKeyName(), apiKeyedReference.getKeyValue())); + apiKeyedReference.getTModelKey(), apiKeyedReference.getKeyName(), apiKeyedReference.getKeyValue())); } } @@ -773,9 +791,9 @@ public class MappingApiToModel { * @throws DispositionReportFaultMessage */ public static void mapTModelInstanceDetails(org.uddi.api_v3.TModelInstanceDetails apiTModelInstDetails, - List<org.apache.juddi.model.TmodelInstanceInfo> modelTModelInstInfoList, - org.apache.juddi.model.BindingTemplate modelBindingTemplate) - throws DispositionReportFaultMessage { + List<org.apache.juddi.model.TmodelInstanceInfo> modelTModelInstInfoList, + org.apache.juddi.model.BindingTemplate modelBindingTemplate) + throws DispositionReportFaultMessage { modelTModelInstInfoList.clear(); if (apiTModelInstDetails != null) { @@ -799,9 +817,9 @@ public class MappingApiToModel { * @throws DispositionReportFaultMessage */ public static void mapTModelInstanceInfoDescriptions(List<org.uddi.api_v3.Description> apiDescList, - List<org.apache.juddi.model.TmodelInstanceInfoDescr> modelDescList, - org.apache.juddi.model.TmodelInstanceInfo modelTModelInstInfo) - throws DispositionReportFaultMessage { + List<org.apache.juddi.model.TmodelInstanceInfoDescr> modelDescList, + org.apache.juddi.model.TmodelInstanceInfo modelTModelInstInfo) + throws DispositionReportFaultMessage { modelDescList.clear(); for (org.uddi.api_v3.Description apiDesc : apiDescList) { @@ -816,17 +834,17 @@ public class MappingApiToModel { * @throws DispositionReportFaultMessage */ public static void mapInstanceDetails(org.uddi.api_v3.InstanceDetails apiInstanceDetails, - org.apache.juddi.model.TmodelInstanceInfo modelTmodelInstInfo) - throws DispositionReportFaultMessage { + org.apache.juddi.model.TmodelInstanceInfo modelTmodelInstInfo) + throws DispositionReportFaultMessage { modelTmodelInstInfo.getInstanceDetailsDescrs().clear(); if (apiInstanceDetails != null) { List<org.uddi.api_v3.Description> descriptions = apiInstanceDetails.getDescription(); List<org.uddi.api_v3.OverviewDoc> overviewdocs = apiInstanceDetails.getOverviewDoc(); for (org.uddi.api_v3.Description apiDesc : descriptions) { - org.apache.juddi.model.InstanceDetailsDescr modelInstanceDetailsDescr = - new org.apache.juddi.model.InstanceDetailsDescr( - modelTmodelInstInfo, apiDesc.getLang(), apiDesc.getValue()); + org.apache.juddi.model.InstanceDetailsDescr modelInstanceDetailsDescr + = new org.apache.juddi.model.InstanceDetailsDescr( + modelTmodelInstInfo, apiDesc.getLang(), apiDesc.getValue()); modelTmodelInstInfo.getInstanceDetailsDescrs().add(modelInstanceDetailsDescr); } for (org.uddi.api_v3.OverviewDoc apiOverviewDoc : overviewdocs) { @@ -845,8 +863,8 @@ public class MappingApiToModel { * @throws DispositionReportFaultMessage */ public static void mapOverviewDoc(org.uddi.api_v3.OverviewDoc apiOverviewDoc, - org.apache.juddi.model.OverviewDoc modelOverviewDoc) - throws DispositionReportFaultMessage { + org.apache.juddi.model.OverviewDoc modelOverviewDoc) + throws DispositionReportFaultMessage { if (apiOverviewDoc != null) { List<Description> descContent = apiOverviewDoc.getDescription(); @@ -854,7 +872,7 @@ public class MappingApiToModel { org.uddi.api_v3.Description description = (org.uddi.api_v3.Description) elem; if (description != null) { org.apache.juddi.model.OverviewDocDescr modelOverviewDocDescr = new org.apache.juddi.model.OverviewDocDescr( - modelOverviewDoc, description.getLang(), description.getValue()); + modelOverviewDoc, description.getLang(), description.getValue()); modelOverviewDoc.getOverviewDocDescrs().add(modelOverviewDocDescr); } } @@ -876,8 +894,8 @@ public class MappingApiToModel { * @throws DispositionReportFaultMessage */ public static void mapTModel(org.uddi.api_v3.TModel apiTModel, - org.apache.juddi.model.Tmodel modelTModel) - throws DispositionReportFaultMessage { + org.apache.juddi.model.Tmodel modelTModel) + throws DispositionReportFaultMessage { modelTModel.setEntityKey(apiTModel.getTModelKey()); modelTModel.setName(apiTModel.getName().getValue()); @@ -902,9 +920,9 @@ public class MappingApiToModel { * @throws DispositionReportFaultMessage */ public static void mapTModelDescriptions(List<org.uddi.api_v3.Description> apiDescList, - List<org.apache.juddi.model.TmodelDescr> modelDescList, - org.apache.juddi.model.Tmodel modelTModel) - throws DispositionReportFaultMessage { + List<org.apache.juddi.model.TmodelDescr> modelDescList, + org.apache.juddi.model.Tmodel modelTModel) + throws DispositionReportFaultMessage { modelDescList.clear(); for (org.uddi.api_v3.Description apiDesc : apiDescList) { @@ -920,9 +938,9 @@ public class MappingApiToModel { * @throws DispositionReportFaultMessage */ public static void mapTModelIdentifiers(org.uddi.api_v3.IdentifierBag apiIdentifierBag, - List<org.apache.juddi.model.TmodelIdentifier> modelIdentifierList, - org.apache.juddi.model.Tmodel modelTModel) - throws DispositionReportFaultMessage { + List<org.apache.juddi.model.TmodelIdentifier> modelIdentifierList, + org.apache.juddi.model.Tmodel modelTModel) + throws DispositionReportFaultMessage { modelIdentifierList.clear(); if (apiIdentifierBag != null) { @@ -941,9 +959,9 @@ public class MappingApiToModel { * @throws DispositionReportFaultMessage */ public static void mapTModelOverviewDocs(List<org.uddi.api_v3.OverviewDoc> apiOverviewDocList, - List<org.apache.juddi.model.OverviewDoc> modelOverviewDocList, - org.apache.juddi.model.Tmodel modelTmodel) - throws DispositionReportFaultMessage { + List<org.apache.juddi.model.OverviewDoc> modelOverviewDocList, + org.apache.juddi.model.Tmodel modelTmodel) + throws DispositionReportFaultMessage { modelOverviewDocList.clear(); for (org.uddi.api_v3.OverviewDoc apiOverviewDoc : apiOverviewDocList) { @@ -960,8 +978,8 @@ public class MappingApiToModel { * @throws DispositionReportFaultMessage */ public static void mapPublisherAssertion(org.uddi.api_v3.PublisherAssertion apiPubAssertion, - org.apache.juddi.model.PublisherAssertion modelPubAssertion) - throws DispositionReportFaultMessage { + org.apache.juddi.model.PublisherAssertion modelPubAssertion) + throws DispositionReportFaultMessage { modelPubAssertion.setId(new org.apache.juddi.model.PublisherAssertionId(apiPubAssertion.getFromKey(), apiPubAssertion.getToKey())); @@ -988,8 +1006,8 @@ public class MappingApiToModel { * @throws DispositionReportFaultMessage */ public static void mapSubscription(org.uddi.sub_v3.Subscription apiSubscription, - org.apache.juddi.model.Subscription modelSubscription) - throws DispositionReportFaultMessage { + org.apache.juddi.model.Subscription modelSubscription) + throws DispositionReportFaultMessage { modelSubscription.setSubscriptionKey(apiSubscription.getSubscriptionKey()); modelSubscription.setBindingKey(apiSubscription.getBindingKey()); @@ -1008,7 +1026,6 @@ public class MappingApiToModel { modelSubscription.setBrief(Boolean.FALSE); } - String rawFilter = JAXBMarshaller.marshallToString(new ObjectFactory().createSubscriptionFilter(apiSubscription.getSubscriptionFilter()), "org.uddi.sub_v3"); logger.debug("marshalled subscription filter: " + rawFilter); modelSubscription.setSubscriptionFilter(rawFilter); @@ -1022,8 +1039,8 @@ public class MappingApiToModel { * @throws DispositionReportFaultMessage */ public static void mapClientSubscriptionInfo(org.apache.juddi.api_v3.ClientSubscriptionInfo apiClientSubscriptionInfo, - org.apache.juddi.model.ClientSubscriptionInfo modelClientSubscriptionInfo) - throws DispositionReportFaultMessage { + org.apache.juddi.model.ClientSubscriptionInfo modelClientSubscriptionInfo) + throws DispositionReportFaultMessage { modelClientSubscriptionInfo.setLastNotified(new Date()); modelClientSubscriptionInfo.setSubscriptionKey(apiClientSubscriptionInfo.getSubscriptionKey()); @@ -1132,10 +1149,10 @@ public class MappingApiToModel { } else if (x509IssuerSerialOrX509SKIOrX509SubjectName instanceof String) { modelKeyInfoValue.setKeyDataValueString((String) x509IssuerSerialOrX509SKIOrX509SubjectName); } else if (x509IssuerSerialOrX509SKIOrX509SubjectName instanceof X509IssuerSerialType) { - modelKeyInfoValue.setKeyDataType(X509IssuerSerialType.class.getSimpleName()); - X509IssuerSerialType x509IssuerSerialType = (X509IssuerSerialType) x509IssuerSerialOrX509SKIOrX509SubjectName; - modelKeyInfoValue.setKeyDataValueString(x509IssuerSerialType.getX509IssuerName()); - modelKeyInfoValue.setKeyDataValueBytes(x509IssuerSerialType.getX509SerialNumber().toByteArray()); + modelKeyInfoValue.setKeyDataType(X509IssuerSerialType.class.getSimpleName()); + X509IssuerSerialType x509IssuerSerialType = (X509IssuerSerialType) x509IssuerSerialOrX509SKIOrX509SubjectName; + modelKeyInfoValue.setKeyDataValueString(x509IssuerSerialType.getX509IssuerName()); + modelKeyInfoValue.setKeyDataValueBytes(x509IssuerSerialType.getX509SerialNumber().toByteArray()); } else if (x509IssuerSerialOrX509SKIOrX509SubjectName != null) { throw new RuntimeException("Unrecognized Value for Element: " + tagName + ": " + x509IssuerSerialOrX509SKIOrX509SubjectName.getClass().getCanonicalName()); } @@ -1358,4 +1375,201 @@ public class MappingApiToModel { String str = serializer.writeToString(xformEl); return str; } + + public static org.apache.juddi.model.ChangeRecord mapChangeRecord(ChangeRecord rec) throws UnsupportedEncodingException { + org.apache.juddi.model.ChangeRecord r = new org.apache.juddi.model.ChangeRecord(); + r.setId(rec.getChangeID().getOriginatingUSN()); + r.setNodeID(rec.getChangeID().getNodeID()); + StringWriter sw = new StringWriter(); + JAXB.marshal(rec, sw); + r.setContents(sw.toString().getBytes("UTF8")); + return r; + + } + + public static void mapOperationalInfo(UddiEntity model, OperationalInfo operationalInfo) { + if (operationalInfo == null || model == null) { + return; + } + if (operationalInfo.getCreated() != null) { + model.setCreated(operationalInfo.getCreated().toGregorianCalendar().getTime()); + } + model.setAuthorizedName(operationalInfo.getAuthorizedName()); + if (operationalInfo.getModified() != null) { + model.setModified(operationalInfo.getModified().toGregorianCalendar().getTime()); + } + if (operationalInfo.getModifiedIncludingChildren() != null) { + model.setModifiedIncludingChildren(operationalInfo.getModifiedIncludingChildren().toGregorianCalendar().getTime()); + } + model.setNodeId(operationalInfo.getNodeID()); + + } + + public static void mapSaveBindingToChangeRecord(SaveBinding recordIn, List<org.apache.juddi.model.ChangeRecord> recordsOut) { + List<org.apache.juddi.model.ChangeRecord> r = new ArrayList<org.apache.juddi.model.ChangeRecord>(); + + } + + public static void mapReplicationConfiguration(ReplicationConfiguration replicationConfiguration, org.apache.juddi.model.ReplicationConfiguration model, EntityManager em) throws DispositionReportFaultMessage { + + model.setMaximumTimeToGetChanges(replicationConfiguration.getMaximumTimeToGetChanges()); + model.setMaximumTimeToSyncRegistry(replicationConfiguration.getMaximumTimeToSyncRegistry()); + model.setSerialNumber(null); + + //the spec doesn't specify what the format should be, however there was an example + //2002 03 04 1859Z + SimpleDateFormat sdf = new SimpleDateFormat("yyyyMMddkkmmZ"); + model.setTimeOfConfigurationUpdate(sdf.format(new Date())); + model.setContact(mapContact(replicationConfiguration.getRegistryContact().getContact())); + model.setCommunicationGraph(mapCommunicationGraph(replicationConfiguration.getCommunicationGraph(), em)); + model.setOperator(mapOperators(replicationConfiguration.getOperator())); + if (replicationConfiguration.getSignature() != null) { + model.setSignatures(mapApiSignaturesToModelSignatures(replicationConfiguration.getSignature())); + } + + } + + private static Contact mapContact(org.uddi.api_v3.Contact contact) throws DispositionReportFaultMessage { + Contact model = new Contact(); + model.setAddresses(new ArrayList<Address>()); + mapContactAddresses(contact.getAddress(), model.getAddresses(), model); + if (model.getAddresses().isEmpty()) { + model.setAddresses(null); + } + return model; + } + + private static CommunicationGraph mapCommunicationGraph(org.uddi.repl_v3.CommunicationGraph communicationGraph, EntityManager em) throws DispositionReportFaultMessage { + if (communicationGraph == null) { + return null; + } + CommunicationGraph model = new CommunicationGraph(); + + /** + * Following the listing of nodes is the controlledMessage + * element that lists the set of messages over which this + * communication graph is intended to administer control of. If + * a message element local name is listed in the + * controlledMessage element, then such messages SHALL only be + * sent between nodes that are listed in the subsequent edges of + * the graph. In contrast, communication restrictions are not + * imposed on replication messages not identified in the + * controlledMessage element. + */ + if (communicationGraph.getControlledMessage() != null) { + model.setControlMessage(new ArrayList<ControlMessage>()); + for (int k = 0; k < communicationGraph.getControlledMessage().size(); k++) { + model.getControlMessage().add(new ControlMessage(communicationGraph.getControlledMessage().get(k))); + } + } + model.setNode(new ArrayList<Node>()); + for (int i = 0; i < communicationGraph.getNode().size(); i++) { + Node find = em.find(org.apache.juddi.model.Node.class, communicationGraph.getNode().get(i)); + if (find == null) { + throw new ValueNotAllowedException(new ErrorMessage("errors.replication.configNodeNotFound", communicationGraph.getNode().get(i))); + } + model.getNode().add(find); + } + if (communicationGraph.getEdge() != null) { + List<Edge> ret = new ArrayList<Edge>(); + for (int i = 0; i < communicationGraph.getEdge().size(); i++) { + Edge e = new Edge(); + e.setCommunicationGraph(model); + Node find = em.find(org.apache.juddi.model.Node.class, communicationGraph.getEdge().get(i).getMessageReceiver()); + if (find == null) { + throw new ValueNotAllowedException(new ErrorMessage("errors.replication.configNodeNotFound", communicationGraph.getEdge().get(i).getMessageReceiver())); + } + e.setMessageReceiver(find); + find = em.find(org.apache.juddi.model.Node.class, communicationGraph.getEdge().get(i).getMessageSender()); + if (find == null) { + throw new ValueNotAllowedException(new ErrorMessage("errors.replication.configNodeNotFound", communicationGraph.getEdge().get(i).getMessageSender())); + } + e.setMessageSender(find); + + /** + * The message elements contain the local name + * of the Replication API message elements. They + * indicate that only messages of the type + * explicitly identified for a particular edge + * MAY be sent from the specified messageSender + * to the specified messageReceiver. + */ + if (communicationGraph.getEdge().get(i).getMessage() != null) { + e.setMessage(new ArrayList<ControlMessage>()); + for (int k = 0; k < communicationGraph.getEdge().get(i).getMessage().size(); k++) { + e.getMessages().add(new ControlMessage(communicationGraph.getEdge().get(i).getMessage().get(k))); + } + } + if (communicationGraph.getEdge().get(i).getMessageReceiverAlternate() != null) { + e.setMessageReceiverAlternate(new HashSet<Node>()); + for (int k = 0; k < communicationGraph.getEdge().get(i).getMessageReceiverAlternate().size(); k++) { + find = em.find(org.apache.juddi.model.Node.class, communicationGraph.getEdge().get(i).getMessageSender()); + if (find == null) { + throw new ValueNotAllowedException(new ErrorMessage("errors.replication.configNodeNotFound", communicationGraph.getEdge().get(i).getMessageSender())); + } + e.getMessageReceiverAlternate().add(find); + } + } + + 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++) { + //TODO api.get(i).getKeyInfo().get(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/8b95902b/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 868eed5..e9bf41a 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 @@ -23,10 +23,15 @@ import javax.xml.datatype.DatatypeConfigurationException; import javax.xml.datatype.DatatypeFactory; import org.w3._2000._09.xmldsig_.X509IssuerSerialType; import java.io.ByteArrayInputStream; +import java.io.StringReader; +import java.io.UnsupportedEncodingException; import java.util.ArrayList; import java.util.Collections; import java.util.Iterator; import java.util.List; +import java.util.logging.Level; +import java.util.logging.Logger; +import javax.xml.bind.JAXB; import javax.xml.bind.JAXBElement; import javax.xml.bind.JAXBException; @@ -53,7 +58,6 @@ import org.apache.juddi.model.UddiEntity; import org.apache.juddi.model.KeyDataValue; import org.apache.juddi.model.Node; import org.apache.juddi.model.ReplicationConfiguration; -import org.apache.juddi.model.ReplicationMessage; import org.apache.juddi.model.SignatureTransformDataValue; import org.apache.juddi.subscription.TypeConvertor; import org.apache.juddi.v3.error.ErrorMessage; @@ -62,6 +66,8 @@ import org.uddi.api_v3.BusinessEntity; import org.uddi.api_v3.CompletionStatus; import org.uddi.api_v3.Contacts; import org.uddi.api_v3.OperationalInfo; +import org.uddi.repl_v3.ChangeRecord; +import org.uddi.repl_v3.ChangeRecordIDType; import org.uddi.repl_v3.CommunicationGraph; import org.uddi.repl_v3.Operator; import org.uddi.repl_v3.OperatorStatusType; @@ -1219,14 +1225,16 @@ public class MappingModelToApi { mapContacts(model.get(i).getContact(), c, new BusinessEntity()); op.getContact().addAll(c.getContact()); - for (int x = 0; x < model.get(i).getKeyInfo().size(); x++) { - KeyInfoType apiKeyInfo = new KeyInfoType(); - KeyInfo modelKeyInfo = model.get(i).getKeyInfo().get(x); - apiKeyInfo.setId(modelKeyInfo.getXmlID()); - List<KeyDataValue> modelKeyDataValueList = modelKeyInfo.getKeyDataValue(); - List<Object> apiX509KeyInfoList = apiKeyInfo.getContent(); - mapModelKeyDataValue(modelKeyDataValueList, apiX509KeyInfoList); - op.getKeyInfo().add(apiKeyInfo); + if (model.get(i).getKeyInfo() != null) { + for (int x = 0; x < model.get(i).getKeyInfo().size(); x++) { + KeyInfoType apiKeyInfo = new KeyInfoType(); + KeyInfo modelKeyInfo = model.get(i).getKeyInfo().get(x); + apiKeyInfo.setId(modelKeyInfo.getXmlID()); + List<KeyDataValue> modelKeyDataValueList = modelKeyInfo.getKeyDataValue(); + List<Object> apiX509KeyInfoList = apiKeyInfo.getContent(); + mapModelKeyDataValue(modelKeyDataValueList, apiX509KeyInfoList); + op.getKeyInfo().add(apiKeyInfo); + } } api.add(op); } @@ -1252,9 +1260,10 @@ public class MappingModelToApi { CommunicationGraph.Edge apiEdge = new CommunicationGraph.Edge(); apiEdge.setMessageReceiver(modelEdge.getMessageReceiver().getName()); apiEdge.setMessageSender(modelEdge.getMessageSender().getName()); - Iterator<ReplicationMessage> it2 = modelEdge.getMessages().iterator(); + + Iterator<ControlMessage> it2 = modelEdge.getMessages().iterator(); while (it2.hasNext()) { - apiEdge.getMessage().add(it2.next().getMsg()); + apiEdge.getMessage().add(it2.next().getMessage()); } Iterator<Node> it3 = modelEdge.getMessageReceiverAlternate().iterator(); while (it3.hasNext()) { @@ -1281,4 +1290,27 @@ public class MappingModelToApi { api.add(it.next().getName()); } } + + public static ChangeRecord mapChangeRecord(org.apache.juddi.model.ChangeRecord cr) { + if (cr == null) { + return null; + } + ChangeRecord ret = new ChangeRecord(); + + StringReader sr = null; + try { + sr = new StringReader(new String(cr.getContents(), "UTF8")); + } catch (UnsupportedEncodingException ex) { + Logger.getLogger(MappingModelToApi.class.getName()).log(Level.SEVERE, null, ex); + } + ret = JAXB.unmarshal(sr, ChangeRecord.class); + //secret sauce here, if this is -1, that means that the record originated at this node and needs to be populated with the databases record id + if (cr.getOriginatingUSN()==null || cr.getOriginatingUSN() == -1L) { + ret.setChangeID(new ChangeRecordIDType(cr.getNodeID(), cr.getId())); + } else { + ret.setChangeID(new ChangeRecordIDType(cr.getNodeID(), cr.getOriginatingUSN())); + } + return ret; + + } } http://git-wip-us.apache.org/repos/asf/juddi/blob/8b95902b/juddi-core/src/main/java/org/apache/juddi/model/ChangeRecord.java ---------------------------------------------------------------------- diff --git a/juddi-core/src/main/java/org/apache/juddi/model/ChangeRecord.java b/juddi-core/src/main/java/org/apache/juddi/model/ChangeRecord.java index 0a9379d..e9113b4 100644 --- a/juddi-core/src/main/java/org/apache/juddi/model/ChangeRecord.java +++ b/juddi-core/src/main/java/org/apache/juddi/model/ChangeRecord.java @@ -19,19 +19,28 @@ package org.apache.juddi.model; import java.io.Serializable; import javax.persistence.Column; import javax.persistence.Entity; +import javax.persistence.GeneratedValue; +import javax.persistence.GenerationType; import javax.persistence.Id; +import javax.persistence.Lob; import javax.persistence.Table; +import javax.persistence.TableGenerator; @Entity @Table(name = "j3_chg_record") public class ChangeRecord implements Serializable { + private static final long serialVersionUID = 1L; + protected String nodeID; protected Long originatingUSN; - + private byte[] contents; + private RecordType e = RecordType.ChangeRecordNull; private Long id; + private String entityKey; - @Column(name="change_contents") + @Column(name = "change_contents") + @Lob public byte[] getContents() { return contents; } @@ -39,22 +48,8 @@ public class ChangeRecord implements Serializable { public void setContents(byte[] contents) { this.contents = contents; } - /*protected ChangeRecordIDType changeID; - protected Object changeRecordNull; - protected ChangeRecordNewData changeRecordNewData; - protected ChangeRecordDelete changeRecordDelete; - protected ChangeRecordPublisherAssertion changeRecordPublisherAssertion; - protected ChangeRecordHide changeRecordHide; - protected ChangeRecordDeleteAssertion changeRecordDeleteAssertion; - protected ChangeRecordAcknowledgement changeRecordAcknowledgement; - protected ChangeRecordCorrection changeRecordCorrection; - protected ChangeRecordNewDataConditional changeRecordNewDataConditional; - protected ChangeRecordConditionFailed changeRecordConditionFailed; - protected boolean acknowledgementRequested; - * */ - byte[] contents; - - enum RecordType { + + public enum RecordType { ChangeRecordNewData, ChangeRecordDelete, @@ -64,10 +59,27 @@ public class ChangeRecord implements Serializable { ChangeRecordAcknowledgement, ChangeRecordCorrection, ChangeRecordNewDataConditional, - ChangeRecordConditionFailed + ChangeRecordConditionFailed, + ChangeRecordNull + } + + public void setRecordType(RecordType e) { + this.e = e; + } + + @Column(name = "record_type") + public RecordType getRecordType() { + return e; } @Id + @GeneratedValue(strategy = GenerationType.TABLE, + generator = "personGen") + @TableGenerator(name = "personGen", + table = "JPAGEN_GENERATORS", + pkColumnName = "NAME", + pkColumnValue = "JPAGEN_PERSON_GEN", + valueColumnName = "VALUE") public Long getId() { return id; } @@ -76,7 +88,7 @@ public class ChangeRecord implements Serializable { this.id = id; } - @Column(name="node_id") + @Column(name = "node_id") public String getNodeID() { return nodeID; } @@ -85,8 +97,16 @@ public class ChangeRecord implements Serializable { this.nodeID = value; } - - @Column(name="orginating_usn") + @Column(name = "entity_key") + public String getEntityKey() { + return entityKey; + } + + public void setEntityKey(String value) { + this.entityKey = value; + } + + @Column(name = "orginating_usn") public Long getOriginatingUSN() { return originatingUSN; } @@ -95,4 +115,3 @@ public class ChangeRecord implements Serializable { this.originatingUSN = value; } } - \ No newline at end of file http://git-wip-us.apache.org/repos/asf/juddi/blob/8b95902b/juddi-core/src/main/java/org/apache/juddi/model/Clerk.java ---------------------------------------------------------------------- diff --git a/juddi-core/src/main/java/org/apache/juddi/model/Clerk.java b/juddi-core/src/main/java/org/apache/juddi/model/Clerk.java index f471712..fe0ca52 100644 --- a/juddi-core/src/main/java/org/apache/juddi/model/Clerk.java +++ b/juddi-core/src/main/java/org/apache/juddi/model/Clerk.java @@ -38,7 +38,7 @@ public class Clerk implements java.io.Serializable { private String clerkName; @Column(name="publisher_id", nullable = false, length=255) private String publisherId; - @ManyToOne(cascade = CascadeType.MERGE, fetch = FetchType.EAGER) + @ManyToOne(cascade = CascadeType.ALL, fetch = FetchType.EAGER) private Node node; @Column(name="cred", length=255) private String cred; http://git-wip-us.apache.org/repos/asf/juddi/blob/8b95902b/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 index e0251f1..b2ec7d0 100644 --- a/juddi-core/src/main/java/org/apache/juddi/model/CommunicationGraph.java +++ b/juddi-core/src/main/java/org/apache/juddi/model/CommunicationGraph.java @@ -26,9 +26,12 @@ 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") @@ -78,6 +81,13 @@ public class CommunicationGraph implements Serializable { @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; } http://git-wip-us.apache.org/repos/asf/juddi/blob/8b95902b/juddi-core/src/main/java/org/apache/juddi/model/Contact.java ---------------------------------------------------------------------- diff --git a/juddi-core/src/main/java/org/apache/juddi/model/Contact.java b/juddi-core/src/main/java/org/apache/juddi/model/Contact.java index 8aa62f7..4f8b62d 100644 --- a/juddi-core/src/main/java/org/apache/juddi/model/Contact.java +++ b/juddi-core/src/main/java/org/apache/juddi/model/Contact.java @@ -77,7 +77,7 @@ public class Contact implements java.io.Serializable { } @ManyToOne(fetch = FetchType.LAZY) - @JoinColumn(name = "entity_key", nullable = false) + @JoinColumn(name = "entity_key", nullable = true) public BusinessEntity getBusinessEntity() { return this.businessEntity; } http://git-wip-us.apache.org/repos/asf/juddi/blob/8b95902b/juddi-core/src/main/java/org/apache/juddi/model/ControlMessage.java ---------------------------------------------------------------------- diff --git a/juddi-core/src/main/java/org/apache/juddi/model/ControlMessage.java b/juddi-core/src/main/java/org/apache/juddi/model/ControlMessage.java index 2c5f10d..ce79b8f 100644 --- a/juddi-core/src/main/java/org/apache/juddi/model/ControlMessage.java +++ b/juddi-core/src/main/java/org/apache/juddi/model/ControlMessage.java @@ -29,6 +29,10 @@ import javax.persistence.Id; public class ControlMessage implements Serializable{ private static final long serialVersionUID = 1L; + public ControlMessage(){} + public ControlMessage(String msg){ + this.message = msg; + } private Long id; http://git-wip-us.apache.org/repos/asf/juddi/blob/8b95902b/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 63625ef..768bb23 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 @@ -36,18 +36,26 @@ import javax.persistence.Table; public class Edge { private Long id; - private Set<ReplicationMessage> message; + private List<ControlMessage> message; 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; } @@ -56,14 +64,14 @@ public class Edge { * The message elements contain the local name of the Replication API message elements * @return */ - @OneToMany(cascade = CascadeType.ALL, fetch = FetchType.LAZY, targetEntity = ReplicationMessage.class) - public Set<ReplicationMessage> getMessages() { + @OneToMany(cascade = CascadeType.ALL, fetch = FetchType.LAZY, targetEntity = ControlMessage.class) + public List<ControlMessage> getMessages() { if (message == null) { - message = new HashSet<ReplicationMessage>(); + message = new ArrayList<ControlMessage>(); } return this.message; } - public void setMessages(Set<ReplicationMessage> values) { + public void setMessages(List<ControlMessage> values) { this.message = values; } @@ -113,7 +121,7 @@ public class Edge { return id; } - public void setMessage(Set<ReplicationMessage> message) { + public void setMessage(List<ControlMessage> message) { this.message = message; } @@ -121,9 +129,7 @@ public class Edge { this.messageReceiverAlternate = messageReceiverAlternate; } - public void setParent(CommunicationGraph parent) { - this.parent = parent; - } + public void setId(Long id) { this.id = id; http://git-wip-us.apache.org/repos/asf/juddi/blob/8b95902b/juddi-core/src/main/java/org/apache/juddi/model/PublisherAssertion.java ---------------------------------------------------------------------- diff --git a/juddi-core/src/main/java/org/apache/juddi/model/PublisherAssertion.java b/juddi-core/src/main/java/org/apache/juddi/model/PublisherAssertion.java index 82efe29..742c252 100644 --- a/juddi-core/src/main/java/org/apache/juddi/model/PublisherAssertion.java +++ b/juddi-core/src/main/java/org/apache/juddi/model/PublisherAssertion.java @@ -16,6 +16,7 @@ package org.apache.juddi.model; */ import java.util.ArrayList; +import java.util.Date; import java.util.List; import javax.persistence.AttributeOverride; import javax.persistence.AttributeOverrides; @@ -29,11 +30,13 @@ import javax.persistence.ManyToOne; import javax.persistence.OneToMany; import javax.persistence.OrderBy; import javax.persistence.Table; +import javax.persistence.Temporal; +import javax.persistence.TemporalType; /** * @author <a href="mailto:[email protected]">Kurt T Stam</a> */ -@Entity + @Entity @Table(name = "j3_publisher_assertion") public class PublisherAssertion implements java.io.Serializable { @@ -46,6 +49,7 @@ public class PublisherAssertion implements java.io.Serializable { private String keyValue; private String fromCheck; private String toCheck; + private Date modified; public PublisherAssertion() { } @@ -63,6 +67,20 @@ public class PublisherAssertion implements java.io.Serializable { this.fromCheck = fromCheck; this.toCheck = toCheck; } + + public void setModified(Date created) { + this.modified = created; + } + + @Temporal(TemporalType.TIMESTAMP) + @Column(name = "modified", nullable = false, length = 29) + public Date getModified() { + if (modified!=null) { + return new Date(modified.getTime()); + } else { + return null; + } + } @EmbeddedId @AttributeOverrides({ http://git-wip-us.apache.org/repos/asf/juddi/blob/8b95902b/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 86e34c9..a481412 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 @@ -25,11 +25,14 @@ 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.OneToOne; import javax.persistence.OrderBy; import javax.persistence.Table; +import javax.persistence.TableGenerator; @Entity @Table(name = "j3_chg_replconf") @@ -37,7 +40,7 @@ public class ReplicationConfiguration implements Serializable { private static final long serialVersionUID = 1L; - private long serialNumber; + private Long serialNumber; private String timeOfConfigurationUpdate; private List<Operator> operator = new ArrayList<Operator>(0); private CommunicationGraph communicationGraph; @@ -73,8 +76,15 @@ public class ReplicationConfiguration implements Serializable { */ @Column(name = "serialnumb") @OrderBy(value = "SerialNumber DESC") - @Id - public long getSerialNumber() { + @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; } @@ -82,7 +92,7 @@ public class ReplicationConfiguration implements Serializable { * Sets the value of the serialNumber property. * */ - public void setSerialNumber(long value) { + public void setSerialNumber(Long value) { this.serialNumber = value; } http://git-wip-us.apache.org/repos/asf/juddi/blob/8b95902b/juddi-core/src/main/java/org/apache/juddi/model/ReplicationMessage.java ---------------------------------------------------------------------- diff --git a/juddi-core/src/main/java/org/apache/juddi/model/ReplicationMessage.java b/juddi-core/src/main/java/org/apache/juddi/model/ReplicationMessage.java deleted file mode 100644 index 35ca14e..0000000 --- a/juddi-core/src/main/java/org/apache/juddi/model/ReplicationMessage.java +++ /dev/null @@ -1,51 +0,0 @@ -/* - * Copyright 2013 The Apache Software Foundation. - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -package org.apache.juddi.model; - -import javax.persistence.Column; -import javax.persistence.Entity; -import javax.persistence.Id; - -/** - * - * @author Alex O'Ree - */ -@Entity(name = "j3_repl_messages") -public class ReplicationMessage { - - private Long id; - private String msg; - - @Column(name ="j3_repl_message") - public String getMsg() { - return msg; - } - - public void setMsg(String msg) { - this.msg = msg; - } - - @Id - public Long getId() { - return id; - } - - public void setId(Long id) { - this.id = id; - } - -} http://git-wip-us.apache.org/repos/asf/juddi/blob/8b95902b/juddi-core/src/main/java/org/apache/juddi/replication/ChangeList.java ---------------------------------------------------------------------- diff --git a/juddi-core/src/main/java/org/apache/juddi/replication/ChangeList.java b/juddi-core/src/main/java/org/apache/juddi/replication/ChangeList.java deleted file mode 100644 index 88d1b65..0000000 --- a/juddi-core/src/main/java/org/apache/juddi/replication/ChangeList.java +++ /dev/null @@ -1,26 +0,0 @@ -package org.apache.juddi.replication; - -import org.apache.juddi.subscription.*; -import org.apache.commons.collections.buffer.CircularFifoBuffer; -import org.apache.commons.collections.Buffer; -import org.apache.commons.collections.BufferUtils; - -public class ChangeList<T> { - private static ChangeList<String> nl = null; - private static Buffer list = null; - - private ChangeList() { - list = BufferUtils.synchronizedBuffer(new CircularFifoBuffer(10)); - } - - public static ChangeList<String> getInstance() { - if (nl == null) { - nl = new ChangeList<String>(); - } - return nl; - } - - public Buffer getNotifications() { - return list; - } -} http://git-wip-us.apache.org/repos/asf/juddi/blob/8b95902b/juddi-core/src/main/java/org/apache/juddi/replication/ReplicationNotifier.java ---------------------------------------------------------------------- diff --git a/juddi-core/src/main/java/org/apache/juddi/replication/ReplicationNotifier.java b/juddi-core/src/main/java/org/apache/juddi/replication/ReplicationNotifier.java index 4a91348..15b16ab 100644 --- a/juddi-core/src/main/java/org/apache/juddi/replication/ReplicationNotifier.java +++ b/juddi-core/src/main/java/org/apache/juddi/replication/ReplicationNotifier.java @@ -26,8 +26,6 @@ import javax.persistence.EntityManager; import javax.persistence.EntityTransaction; import javax.persistence.Query; import javax.xml.ws.BindingProvider; - - import org.apache.commons.configuration.ConfigurationException; import org.apache.commons.logging.Log; import org.apache.commons.logging.LogFactory; @@ -36,8 +34,8 @@ import org.apache.juddi.config.AppConfig; import org.apache.juddi.config.PersistenceManager; import org.apache.juddi.config.Property; import org.apache.juddi.mapping.MappingModelToApi; +import org.apache.juddi.model.ChangeRecord; import org.apache.juddi.model.ReplicationConfiguration; - import org.apache.juddi.v3.client.UDDIService; import org.uddi.repl_v3.ChangeRecordIDType; import org.uddi.repl_v3.CommunicationGraph; @@ -46,17 +44,21 @@ import org.uddi.repl_v3.NotifyChangeRecordsAvailable; import org.uddi.v3_service.UDDIReplicationPortType; /** - * + * Handles when local records have been changed, change journal storage and + * notifications to all remote replication nodes that something has been + * altered. + * * @author <a href="mailto:[email protected]">Alex O'Ree</a> * */ public class ReplicationNotifier extends TimerTask { - private Log log = LogFactory.getLog(this.getClass()); + private static Log log = LogFactory.getLog(ReplicationNotifier.class); private Timer timer = null; private long startBuffer = AppConfig.getConfiguration().getLong(Property.JUDDI_NOTIFICATION_START_BUFFER, 20000l); // 20s startup delay default private long interval = AppConfig.getConfiguration().getLong(Property.JUDDI_NOTIFICATION_INTERVAL, 300000l); //5 min default private long acceptableLagTime = AppConfig.getConfiguration().getLong(Property.JUDDI_NOTIFICATION_ACCEPTABLE_LAGTIME, 1000l); //1000 milliseconds + private static String node = null; /** * default constructor @@ -70,6 +72,7 @@ public class ReplicationNotifier extends TimerTask { if (queue == null) { queue = new ConcurrentLinkedQueue(); } + node = AppConfig.getConfiguration().getString(Property.JUDDI_NODE_ID, "UNDEFINED_NODE_NAME"); } @Override @@ -80,13 +83,85 @@ public class ReplicationNotifier extends TimerTask { } //ReplicationNotifier.Enqueue(this); - public synchronized static void Enqueue(Object change) { + public synchronized static void Enqueue(org.apache.juddi.model.ChangeRecord change) { if (queue == null) { - queue = new ConcurrentLinkedQueue(); + queue = new ConcurrentLinkedQueue<ChangeRecord>(); } queue.add(change); } - static Queue queue; + static Queue<ChangeRecord> queue; + + /** + * + * @param j must be one of the UDDI save APIs + */ + protected void ProcessChangeRecord(ChangeRecord j) { + //store and convert the changes to database model + + EntityManager em = PersistenceManager.getEntityManager(); + EntityTransaction tx = null; + try { + tx = em.getTransaction(); + tx.begin(); + + em.persist(j); + tx.commit(); + } catch (Exception ex) { + log.error("error", ex); + if (tx != null && tx.isActive()) { + tx.rollback(); + } + } finally { + em.close(); + } + + log.info("ChangeRecord: " + j.getId() + "," + j.getEntityKey() + "," + j.getNodeID() + "," + j.getOriginatingUSN() + "," + j.getRecordType().toString()); + org.uddi.repl_v3.ReplicationConfiguration repcfg = FetchEdges(); + + //TODO figure out what this statement means 7.5.3 + /** + * In the absence of a communicationGraph element from the + * Replication Configuration Structure, all nodes listed in the + * node element MAY send any and all messages to any other node + * of the registry. + */ + if (repcfg == null) { + log.info("No replication configuration is defined!"); + return; + + } + Iterator<CommunicationGraph.Edge> it = repcfg.getCommunicationGraph().getEdge().iterator(); + + while (it.hasNext()) { + //send each change set to the replication node in the graph + + UDDIReplicationPortType x = new UDDIService().getUDDIReplicationPort(); + CommunicationGraph.Edge next = it.next(); + //next.getMessageReceiver(); //Node ID + Node destinationNode = getNode(next.getMessageSender()); + if (destinationNode == null) { + log.warn(next.getMessageSender() + " node was not found, cannot deliver replication messages"); + } else { + //TODO the spec talks about control messages, should we even support it? seems pointless + ((BindingProvider) x).getRequestContext().put(BindingProvider.ENDPOINT_ADDRESS_PROPERTY, destinationNode.getReplicationUrl()); + NotifyChangeRecordsAvailable req = new NotifyChangeRecordsAvailable(); + + req.setNotifyingNode(node); + HighWaterMarkVectorType highWaterMarkVectorType = new HighWaterMarkVectorType(); + + highWaterMarkVectorType.getHighWaterMark().add(new ChangeRecordIDType(node, j.getId())); + req.setChangesAvailable(highWaterMarkVectorType); + + try { + x.notifyChangeRecordsAvailable(req); + log.info("Successfully sent change record available message to " + destinationNode.getName()); + } catch (Exception ex) { + log.warn("Unable to send change notification to " + destinationNode.getName(), ex); + } + } + } + + } public synchronized void run() { log.debug("Replication thread triggered"); @@ -94,53 +169,22 @@ public class ReplicationNotifier extends TimerTask { queue = new ConcurrentLinkedQueue(); } while (!queue.isEmpty()) { - log.info("Notifying nodes of change records " + queue.size()); - //TODO identify chnage set format - Object j = queue.poll(); - org.uddi.repl_v3.ReplicationConfiguration repcfg = FetchEdges(); - if (repcfg == null) { - log.debug("No replication configuration is defined!"); - queue.clear(); - break; - } - Iterator<CommunicationGraph.Edge> it = repcfg.getCommunicationGraph().getEdge().iterator(); - - while (it.hasNext()) { - - //for (int i = 0; i < endpoints.size(); i++) { - UDDIReplicationPortType x = new UDDIService().getUDDIReplicationPort(); - CommunicationGraph.Edge next = it.next(); - next.getMessageReceiver(); //Node ID - Node destinationNode = getNode(next.getMessageSender()); - if (destinationNode == null) { - log.warn(next.getMessageSender() + " node was not found, cannot deliver replication messages"); - } else { - ((BindingProvider) x).getRequestContext().put(BindingProvider.ENDPOINT_ADDRESS_PROPERTY, destinationNode.getReplicationUrl()); - NotifyChangeRecordsAvailable req = new NotifyChangeRecordsAvailable(); - String node = "UNKNOWN"; - try { - node = AppConfig.getConfiguration().getString(Property.JUDDI_NODE_ID); - } catch (ConfigurationException ex) { - log.fatal(ex); - } - req.setNotifyingNode(node); - HighWaterMarkVectorType highWaterMarkVectorType = new HighWaterMarkVectorType(); - String nextWatermark = ""; //TODO get current watermark + 1 toString() - //TODO save watermark along with change set - - highWaterMarkVectorType.getHighWaterMark().add(new ChangeRecordIDType(node, 1L)); - req.setChangesAvailable(highWaterMarkVectorType); - try { - x.notifyChangeRecordsAvailable(req); - } catch (Exception ex) { - log.warn("Unable to send change notification to " + next.getMessageSender(), ex); - } - } - } + //for each change at this node + log.info("Replication, Notifying nodes of new change records. " + queue.size() + " remaining"); + + ChangeRecord j = queue.poll(); + ProcessChangeRecord(j); + } } - private org.uddi.repl_v3.ReplicationConfiguration FetchEdges() { + /** + * returns the latest version of the replication config or null if there + * is no config + * + * @return + */ + public static org.uddi.repl_v3.ReplicationConfiguration FetchEdges() { EntityManager em = PersistenceManager.getEntityManager(); EntityTransaction tx = null; @@ -173,7 +217,6 @@ public class ReplicationNotifier extends TimerTask { private Node getNode(String messageSender) { EntityManager em = PersistenceManager.getEntityManager(); EntityTransaction tx = null; - org.uddi.repl_v3.ReplicationConfiguration item = new org.uddi.repl_v3.ReplicationConfiguration(); try { tx = em.getTransaction(); tx.begin(); --------------------------------------------------------------------- To unsubscribe, e-mail: [email protected] For additional commands, e-mail: [email protected]
