blob: 24bb67452eeba0a932210c5e4672ebbeb83542b0 [file] [log] [blame]
/*
* 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.mapping;
import java.math.BigInteger;
import java.util.GregorianCalendar;
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.persistence.EntityManager;
import javax.xml.bind.JAXB;
import javax.xml.bind.JAXBElement;
import javax.xml.bind.JAXBException;
import javax.xml.namespace.QName;
import javax.xml.parsers.DocumentBuilder;
import javax.xml.parsers.DocumentBuilderFactory;
import org.apache.commons.configuration.ConfigurationException;
import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
import org.apache.juddi.config.AppConfig;
import org.apache.juddi.config.Property;
import org.apache.juddi.jaxb.JAXBMarshaller;
import org.apache.juddi.model.CanonicalizationMethod;
import org.apache.juddi.model.ControlMessage;
import org.apache.juddi.model.Edge;
import org.apache.juddi.model.EdgeReceiverAlternate;
import org.apache.juddi.model.KeyInfo;
import org.apache.juddi.model.OverviewDoc;
import org.apache.juddi.model.Reference;
import org.apache.juddi.model.SignatureTransform;
import org.apache.juddi.model.SignatureValue;
import org.apache.juddi.model.SignedInfo;
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.ReplicationConfigurationNode;
import org.apache.juddi.model.Signature;
import org.apache.juddi.model.SignatureTransformDataValue;
import org.apache.juddi.subscription.TypeConvertor;
import org.apache.juddi.v3.client.cryptor.XmlUtils;
import org.apache.juddi.v3.error.ErrorMessage;
import org.apache.juddi.v3.error.FatalErrorException;
import org.uddi.api_v3.BusinessEntity;
import org.uddi.api_v3.CompletionStatus;
import org.uddi.api_v3.Contact;
import org.uddi.api_v3.Contacts;
import org.uddi.api_v3.OperationalInfo;
import org.uddi.api_v3.PersonName;
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;
import org.uddi.sub_v3.SubscriptionFilter;
import org.uddi.v3_service.DispositionReportFaultMessage;
import org.w3._2000._09.xmldsig_.CanonicalizationMethodType;
import org.w3._2000._09.xmldsig_.DSAKeyValueType;
import org.w3._2000._09.xmldsig_.DigestMethodType;
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;
import org.w3._2000._09.xmldsig_.ReferenceType;
import org.w3._2000._09.xmldsig_.RetrievalMethodType;
import org.w3._2000._09.xmldsig_.SPKIDataType;
import org.w3._2000._09.xmldsig_.SignatureMethodType;
import org.w3._2000._09.xmldsig_.SignatureType;
import org.w3._2000._09.xmldsig_.SignatureValueType;
import org.w3._2000._09.xmldsig_.SignedInfoType;
import org.w3._2000._09.xmldsig_.TransformType;
import org.w3._2000._09.xmldsig_.TransformsType;
import org.w3._2000._09.xmldsig_.X509DataType;
import org.w3c.dom.Document;
import org.w3c.dom.Element;
/**
* @author <a href="mailto:jfaath@apache.org">Jeff Faath</a>
* @author <a href="mailto:kstam@apache.org">Kurt T Stam</a>
*/
public class MappingModelToApi {
private static Log logger = LogFactory.getLog(MappingModelToApi.class);
public static void mapPublisher(org.apache.juddi.model.Publisher modelPublisher,
org.apache.juddi.api_v3.Publisher apiPublisher)
throws DispositionReportFaultMessage {
apiPublisher.setAuthorizedName(modelPublisher.getAuthorizedName());
apiPublisher.setPublisherName(modelPublisher.getPublisherName());
apiPublisher.setEmailAddress(modelPublisher.getEmailAddress());
apiPublisher.setIsAdmin(modelPublisher.getIsAdmin());
apiPublisher.setIsEnabled(modelPublisher.getIsEnabled());
apiPublisher.setMaxBindingsPerService(modelPublisher.getMaxBindingsPerService());
apiPublisher.setMaxBusinesses(modelPublisher.getMaxBusinesses());
apiPublisher.setMaxServicePerBusiness(modelPublisher.getMaxServicesPerBusiness());
apiPublisher.setMaxTModels(modelPublisher.getMaxTmodels());
mapSignature(modelPublisher.getSignatures(), apiPublisher.getSignature());
}
public static void mapBusinessEntity(org.apache.juddi.model.BusinessEntity modelBusinessEntity,
org.uddi.api_v3.BusinessEntity apiBusinessEntity)
throws DispositionReportFaultMessage {
apiBusinessEntity.setBusinessKey(modelBusinessEntity.getEntityKey());
mapBusinessNames(modelBusinessEntity.getBusinessNames(), apiBusinessEntity.getName());
mapBusinessDescriptions(modelBusinessEntity.getBusinessDescrs(), apiBusinessEntity.getDescription());
mapDiscoveryUrls(modelBusinessEntity.getDiscoveryUrls(), apiBusinessEntity.getDiscoveryURLs(), apiBusinessEntity);
mapContacts(modelBusinessEntity.getContacts(), apiBusinessEntity.getContacts(), apiBusinessEntity);
mapBusinessIdentifiers(modelBusinessEntity.getBusinessIdentifiers(), apiBusinessEntity.getIdentifierBag(), apiBusinessEntity);
apiBusinessEntity.setCategoryBag(mapCategoryBag(modelBusinessEntity.getCategoryBag(), apiBusinessEntity.getCategoryBag()));
mapBusinessServices(modelBusinessEntity.getBusinessServices(), modelBusinessEntity.getServiceProjections(), apiBusinessEntity.getBusinessServices(), apiBusinessEntity);
mapSignature(modelBusinessEntity.getSignatures(), apiBusinessEntity.getSignature());
}
public static void mapSignature(List<org.apache.juddi.model.Signature> signatureList,
List<org.w3._2000._09.xmldsig_.SignatureType> apiSignatureList)
throws DispositionReportFaultMessage {
apiSignatureList.clear();
for (org.apache.juddi.model.Signature modelSig : signatureList) {
SignatureType apiSignature = new SignatureType();
apiSignature.setId(modelSig.getXmlID());
SignedInfo modelSignedInfo = modelSig.getSignedInfo();
SignedInfoType apiSignedInfoType = new SignedInfoType();
apiSignature.setSignedInfo(apiSignedInfoType);
// Canonicalization method
CanonicalizationMethod modelCanonMethod = modelSignedInfo.getCanonicalizationMethod();
CanonicalizationMethodType apiCanonMethod = new CanonicalizationMethodType();
apiCanonMethod.setAlgorithm(modelCanonMethod.getAlgorithm());
apiSignedInfoType.setCanonicalizationMethod(apiCanonMethod);
// Signature Method
String sigAlg = modelSignedInfo.getSignatureMethod().getAlgorithm();
SignatureMethodType apiSigMethod = new SignatureMethodType();
apiSigMethod.setAlgorithm(sigAlg);
apiSignedInfoType.setSignatureMethod(apiSigMethod);
// References
List<Reference> modelReferenceList = modelSignedInfo.getReference();
List<ReferenceType> apiReferenceList = apiSignedInfoType.getReference();
for (Reference modelRef : modelReferenceList) {
ReferenceType apiRef = new ReferenceType();
String refUri = modelRef.getUri();
if (refUri == null) {
refUri = "";
}
apiRef.setURI(refUri);
List<SignatureTransform> modelSigTransformList = modelRef.getTransforms();
TransformsType apiTransformsType = apiRef.getTransforms();
if (apiTransformsType == null) {
apiTransformsType = new TransformsType();
apiRef.setTransforms(apiTransformsType);
}
List<TransformType> apiTransformList = apiTransformsType.getTransform();
for (SignatureTransform modelSigTransform : modelSigTransformList) {
String modelTransformAlgStr = modelSigTransform.getTransform();
TransformType apiTransform = new TransformType();
apiTransform.setAlgorithm(modelTransformAlgStr);
List<SignatureTransformDataValue> sigTransformSDVList = modelSigTransform.getSignatureTransformDataValue();
for (SignatureTransformDataValue sigTransformSDV : sigTransformSDVList) {
String type = sigTransformSDV.getContentType();
byte[] xformBytes = sigTransformSDV.getContentBytes();
Object transformObject = convertDataToTransformContent(type, xformBytes);
apiTransform.getContent().add(transformObject);
}
apiTransformList.add(apiTransform);
}
String digestMethodStr = modelRef.getDigestMethod();
byte[] digestValBytes = modelRef.getDigestValue();
DigestMethodType apiDigestMethod = new DigestMethodType();
apiDigestMethod.setAlgorithm(digestMethodStr);
apiRef.setDigestMethod(apiDigestMethod);
apiRef.setDigestValue(digestValBytes);
apiReferenceList.add(apiRef);
}
// Signature Value
SignatureValueType apiSignatureValue = new SignatureValueType();
SignatureValue modelSigValue = modelSig.getSignatureValue();
apiSignatureValue.setId(modelSigValue.getXmlID());
apiSignatureValue.setValue(modelSigValue.getValue());
apiSignature.setSignatureValue(apiSignatureValue);
KeyInfoType apiKeyInfo = new KeyInfoType();
KeyInfo modelKeyInfo = modelSig.getKeyInfo();
apiKeyInfo.setId(modelKeyInfo.getXmlID());
List<KeyDataValue> modelKeyDataValueList = modelKeyInfo.getKeyDataValue();
List<Object> apiX509KeyInfoList = apiKeyInfo.getContent();
mapModelKeyDataValue(modelKeyDataValueList, apiX509KeyInfoList);
apiSignature.setKeyInfo(apiKeyInfo);
apiSignatureList.add(apiSignature);
}
}
private static void mapModelKeyDataValue(List<KeyDataValue> modelKeyDataValueList, List<Object> parentKeyDataList) {
for (KeyDataValue modelKeyDataValue : modelKeyDataValueList) {
String tagName = modelKeyDataValue.getKeyDataName();
String dataType = modelKeyDataValue.getKeyDataType();
byte[] contentBytes = modelKeyDataValue.getKeyDataValueBytes();
String contentStr = modelKeyDataValue.getKeyDataValueString();
Object contents = contentBytes != null ? contentBytes : contentStr;
if (contents == null) {
List<Object> childKeyDataList = new ArrayList<Object>();
if (dataType.equals(X509DataType.class.getSimpleName())) {
X509DataType x509DataType = new X509DataType();
mapModelKeyDataValue(modelKeyDataValue.getKeyDataValueList(), childKeyDataList);
x509DataType.getX509IssuerSerialOrX509SKIOrX509SubjectName().addAll(childKeyDataList);
JAXBElement dataJAXB = new JAXBElement(new QName("http://www.w3.org/2000/09/xmldsig#", tagName), X509DataType.class, x509DataType);
parentKeyDataList.add(dataJAXB);
} else if (dataType.equals(RetrievalMethodType.class.getSimpleName())) {
RetrievalMethodType retrievalMethodType = new RetrievalMethodType();
TransformsType transformsType = new TransformsType();
for (KeyDataValue retrievalMethodKDV : modelKeyDataValue.getKeyDataValueList()) {
if (retrievalMethodKDV.getKeyDataName().equals("Transform")) {
TransformType tType = new TransformType();
tType.setAlgorithm(retrievalMethodKDV.getKeyDataValueString());
for (KeyDataValue transformContentKDV : retrievalMethodKDV.getKeyDataValueList()) {
String type = transformContentKDV.getKeyDataType();
byte[] xformBytes = transformContentKDV.getKeyDataValueBytes();
Object transformObject = convertDataToTransformContent(type, xformBytes);
tType.getContent().add(transformObject);
}
transformsType.getTransform().add(tType);
} else if (retrievalMethodKDV.getKeyDataName().equals("Type")) {
retrievalMethodType.setType(retrievalMethodKDV.getKeyDataValueString());
} else if (retrievalMethodKDV.getKeyDataName().equals("URI")) {
retrievalMethodType.setURI(retrievalMethodKDV.getKeyDataValueString());
} else {
throw new RuntimeException("Unrecognized key data type: " + retrievalMethodKDV.getKeyDataType());
}
}
if (transformsType.getTransform() != null && !transformsType.getTransform().isEmpty()) {
retrievalMethodType.setTransforms(transformsType);
}
JAXBElement dataJAXB = new JAXBElement(new QName("http://www.w3.org/2000/09/xmldsig#", tagName), RetrievalMethodType.class, retrievalMethodType);
parentKeyDataList.add(dataJAXB);
} else if (dataType.equals(PGPDataType.class.getSimpleName())) {
PGPDataType pgpDataType = new PGPDataType();
for (KeyDataValue pgpDataKDV : modelKeyDataValue.getKeyDataValueList()) {
String pgpDataTagName = pgpDataKDV.getKeyDataName();
Object pgpDataContents = pgpDataKDV.getKeyDataValueBytes() != null ? pgpDataKDV.getKeyDataValueBytes() : pgpDataKDV.getKeyDataValueString();
Class pgpDataClazz = pgpDataContents.getClass();
JAXBElement jaxb = new JAXBElement(new QName("http://www.w3.org/2000/09/xmldsig#", pgpDataTagName), pgpDataClazz, pgpDataContents);
pgpDataType.getContent().add(jaxb);
}
JAXBElement dataJAXB = new JAXBElement(new QName("http://www.w3.org/2000/09/xmldsig#", tagName), PGPDataType.class, pgpDataType);
parentKeyDataList.add(dataJAXB);
} else if (dataType.equals(SPKIDataType.class.getSimpleName())) {
SPKIDataType spkiDataType = new SPKIDataType();
for (KeyDataValue spkiDataKDV : modelKeyDataValue.getKeyDataValueList()) {
String spkiDataTagName = spkiDataKDV.getKeyDataName();
Object spkiDataContents = spkiDataKDV.getKeyDataValueBytes() != null ? spkiDataKDV.getKeyDataValueBytes() : spkiDataKDV.getKeyDataValueString();
Class spkiDataClazz = spkiDataContents.getClass();
JAXBElement jaxb = new JAXBElement(new QName("http://www.w3.org/2000/09/xmldsig#", spkiDataTagName), spkiDataClazz, spkiDataContents);
spkiDataType.getSPKISexpAndAny().add(jaxb);
}
JAXBElement dataJAXB = new JAXBElement(new QName("http://www.w3.org/2000/09/xmldsig#", tagName), SPKIDataType.class, spkiDataType);
parentKeyDataList.add(dataJAXB);
} else if (dataType.equals(KeyValueType.class.getSimpleName())) {
KeyValueType keyValueType = new KeyValueType();
for (KeyDataValue keyValueDataKDV : modelKeyDataValue.getKeyDataValueList()) {
for (KeyDataValue keyValueDataChildKDV : keyValueDataKDV.getKeyDataValueList()) {
String keyDataDataType = keyValueDataChildKDV.getKeyDataType();
if (keyDataDataType.equals("DSAKeyValueType")) {
DSAKeyValueType dsaKeyValueType = new DSAKeyValueType();
for (KeyDataValue dsaKDV : keyValueDataChildKDV.getKeyDataValueList()) {
if ("G".equals(dsaKDV.getKeyDataName())) {
dsaKeyValueType.setG(dsaKDV.getKeyDataValueBytes());
} else if ("P".equals(dsaKDV.getKeyDataName())) {
dsaKeyValueType.setP(dsaKDV.getKeyDataValueBytes());
} else if ("Q".equals(dsaKDV.getKeyDataName())) {
dsaKeyValueType.setQ(dsaKDV.getKeyDataValueBytes());
} else if ("Y".equals(dsaKDV.getKeyDataName())) {
dsaKeyValueType.setY(dsaKDV.getKeyDataValueBytes());
} else if ("J".equals(dsaKDV.getKeyDataName())) {
dsaKeyValueType.setJ(dsaKDV.getKeyDataValueBytes());
} else if ("Seed".equals(dsaKDV.getKeyDataName())) {
dsaKeyValueType.setSeed(dsaKDV.getKeyDataValueBytes());
} else if ("PgenCounter".equals(dsaKDV.getKeyDataName())) {
dsaKeyValueType.setPgenCounter(dsaKDV.getKeyDataValueBytes());
} else {
throw new RuntimeException("Unrecognized dsa type: " + dsaKDV.getKeyDataName());
}
}
JAXBElement jaxb = new JAXBElement(new QName("http://www.w3.org/2000/09/xmldsig#", keyValueDataChildKDV.getKeyDataName()), DSAKeyValueType.class, dsaKeyValueType);
keyValueType.getContent().add(jaxb);
} else if (keyDataDataType.equals("RSAKeyValueType")) {
RSAKeyValueType rsaKeyValueType = new RSAKeyValueType();
for (KeyDataValue rsaKDV : keyValueDataChildKDV.getKeyDataValueList()) {
if ("Exponent".equals(rsaKDV.getKeyDataName())) {
rsaKeyValueType.setExponent(rsaKDV.getKeyDataValueBytes());
} else if ("Modulus".equals(rsaKDV.getKeyDataName())) {
rsaKeyValueType.setModulus(rsaKDV.getKeyDataValueBytes());
} else {
throw new RuntimeException("Unrecognized dsa type: " + rsaKDV.getKeyDataName());
}
}
JAXBElement jaxb = new JAXBElement(new QName("http://www.w3.org/2000/09/xmldsig#", keyValueDataChildKDV.getKeyDataName()), RSAKeyValueType.class, rsaKeyValueType);
keyValueType.getContent().add(jaxb);
} else {
throw new RuntimeException("Unrecognized element: " + keyDataDataType);
}
}
}
JAXBElement dataJAXB = new JAXBElement(new QName("http://www.w3.org/2000/09/xmldsig#", tagName), KeyValueType.class, keyValueType);
parentKeyDataList.add(dataJAXB);
} else {
throw new RuntimeException("Unrecognized type: " + dataType);
}
} else {
if (dataType != null && dataType.equals(X509IssuerSerialType.class.getSimpleName())) {
X509IssuerSerialType x509IssuerSerialType = new X509IssuerSerialType();
x509IssuerSerialType.setX509IssuerName(contentStr);
x509IssuerSerialType.setX509SerialNumber(new BigInteger(contentBytes));
JAXBElement dataJAXB = new JAXBElement(new QName("http://www.w3.org/2000/09/xmldsig#", tagName), X509IssuerSerialType.class, x509IssuerSerialType);
parentKeyDataList.add(dataJAXB);
} else {
JAXBElement dataJAXB = new JAXBElement(new QName("http://www.w3.org/2000/09/xmldsig#", tagName), contents.getClass(), contents);
parentKeyDataList.add(dataJAXB);
}
}
}
}
public static void mapBusinessNames(List<org.apache.juddi.model.BusinessName> modelNameList,
List<org.uddi.api_v3.Name> apiNameList)
throws DispositionReportFaultMessage {
apiNameList.clear();
for (org.apache.juddi.model.BusinessName modelName : modelNameList) {
org.uddi.api_v3.Name apiName = new org.uddi.api_v3.Name();
apiName.setLang(modelName.getLangCode());
apiName.setValue(modelName.getName());
apiNameList.add(apiName);
}
}
public static void mapBusinessDescriptions(List<org.apache.juddi.model.BusinessDescr> modelDescList,
List<org.uddi.api_v3.Description> apiDescList)
throws DispositionReportFaultMessage {
apiDescList.clear();
for (org.apache.juddi.model.BusinessDescr modelDesc : modelDescList) {
org.uddi.api_v3.Description apiDesc = new org.uddi.api_v3.Description();
apiDesc.setLang(modelDesc.getLangCode());
apiDesc.setValue(modelDesc.getDescr());
apiDescList.add(apiDesc);
}
}
public static void mapDiscoveryUrls(List<org.apache.juddi.model.DiscoveryUrl> modelDiscUrlList,
org.uddi.api_v3.DiscoveryURLs apiDiscUrls,
org.uddi.api_v3.BusinessEntity apiBusinessEntity)
throws DispositionReportFaultMessage {
if (modelDiscUrlList == null || modelDiscUrlList.size() == 0) {
return;
}
if (apiDiscUrls == null) {
apiDiscUrls = new org.uddi.api_v3.DiscoveryURLs();
}
List<org.uddi.api_v3.DiscoveryURL> apiDiscUrlList = apiDiscUrls.getDiscoveryURL();
apiDiscUrlList.clear();
for (org.apache.juddi.model.DiscoveryUrl modelDiscUrl : modelDiscUrlList) {
org.uddi.api_v3.DiscoveryURL apiDiscUrl = new org.uddi.api_v3.DiscoveryURL();
apiDiscUrl.setUseType(modelDiscUrl.getUseType());
String discoveryURL = modelDiscUrl.getUrl();
try {
String baseUrl = AppConfig.getConfiguration().getString(Property.JUDDI_BASE_URL);
if (baseUrl == null) {
logger.warn("Token '" + Property.JUDDI_BASE_URL + "' not found in the juddiv3.xml, defaulting to '"
+ Property.DEFAULT_BASE_URL + "'");
baseUrl = Property.DEFAULT_BASE_URL;
}
discoveryURL = discoveryURL.replaceAll("\\$\\{" + Property.JUDDI_BASE_URL + "\\}", baseUrl);
baseUrl = AppConfig.getConfiguration().getString(Property.JUDDI_BASE_URL_SECURE);
if (baseUrl == null) {
logger.warn("Token '" + Property.JUDDI_BASE_URL_SECURE + "' not found in the juddiv3.xml, defaulting to '"
+ Property.JUDDI_BASE_URL_SECURE + "'");
baseUrl = Property.DEFAULT_BASE_URL_SECURE;
}
discoveryURL = discoveryURL.replaceAll("\\$\\{" + Property.JUDDI_BASE_URL_SECURE + "\\}", baseUrl);
} catch (ConfigurationException e) {
logger.error(e.getMessage(), e);
}
apiDiscUrl.setValue(discoveryURL);
apiDiscUrlList.add(apiDiscUrl);
}
apiBusinessEntity.setDiscoveryURLs(apiDiscUrls);
}
public static void mapContact(org.apache.juddi.model.Contact modelContact,
org.uddi.api_v3.Contact apiContact) throws DispositionReportFaultMessage {
if (apiContact == null) {
apiContact = new org.uddi.api_v3.Contact();
}
apiContact.setUseType(modelContact.getUseType());
mapPersonNames(modelContact.getPersonNames(), apiContact.getPersonName());
mapContactDescriptions(modelContact.getContactDescrs(), apiContact.getDescription());
mapContactEmails(modelContact.getEmails(), apiContact.getEmail());
mapContactPhones(modelContact.getPhones(), apiContact.getPhone());
mapContactAddresses(modelContact.getAddresses(), apiContact.getAddress());
}
public static void mapContacts(List<org.apache.juddi.model.Contact> modelContactList,
org.uddi.api_v3.Contacts apiContacts,
org.uddi.api_v3.BusinessEntity apiBusinessEntity)
throws DispositionReportFaultMessage {
if (modelContactList == null || modelContactList.size() == 0) {
return;
}
if (apiContacts == null) {
apiContacts = new org.uddi.api_v3.Contacts();
}
List<org.uddi.api_v3.Contact> apiContactList = apiContacts.getContact();
apiContactList.clear();
for (org.apache.juddi.model.Contact modelContact : modelContactList) {
org.uddi.api_v3.Contact apiContact = new org.uddi.api_v3.Contact();
mapContact(modelContact,apiContact);
apiContactList.add(apiContact);
}
apiBusinessEntity.setContacts(apiContacts);
}
public static void mapContactDescriptions(List<org.apache.juddi.model.ContactDescr> modelDescList,
List<org.uddi.api_v3.Description> apiDescList)
throws DispositionReportFaultMessage {
apiDescList.clear();
for (org.apache.juddi.model.ContactDescr modelDesc : modelDescList) {
org.uddi.api_v3.Description apiDesc = new org.uddi.api_v3.Description();
apiDesc.setLang(modelDesc.getLangCode());
apiDesc.setValue(modelDesc.getDescr());
apiDescList.add(apiDesc);
}
}
public static void mapPersonNames(List<org.apache.juddi.model.PersonName> modelPersonNameList,
List<org.uddi.api_v3.PersonName> apiPersonNameList)
throws DispositionReportFaultMessage {
apiPersonNameList.clear();
for (org.apache.juddi.model.PersonName personName : modelPersonNameList) {
org.uddi.api_v3.PersonName apiPersonName = new org.uddi.api_v3.PersonName();
apiPersonName.setLang(personName.getLangCode());
apiPersonName.setValue(personName.getName());
apiPersonNameList.add(apiPersonName);
}
}
public static void mapContactEmails(List<org.apache.juddi.model.Email> modelEmailList,
List<org.uddi.api_v3.Email> apiEmailList)
throws DispositionReportFaultMessage {
apiEmailList.clear();
for (org.apache.juddi.model.Email modelEmail : modelEmailList) {
org.uddi.api_v3.Email apiEmail = new org.uddi.api_v3.Email();
apiEmail.setUseType(modelEmail.getUseType());
apiEmail.setValue(modelEmail.getEmailAddress());
apiEmailList.add(apiEmail);
}
}
public static void mapContactPhones(List<org.apache.juddi.model.Phone> modelPhoneList,
List<org.uddi.api_v3.Phone> apiPhoneList)
throws DispositionReportFaultMessage {
apiPhoneList.clear();
for (org.apache.juddi.model.Phone modelPhone : modelPhoneList) {
org.uddi.api_v3.Phone apiPhone = new org.uddi.api_v3.Phone();
apiPhone.setUseType(modelPhone.getUseType());
apiPhone.setValue(modelPhone.getPhoneNumber());
apiPhoneList.add(apiPhone);
}
}
public static void mapContactAddresses(List<org.apache.juddi.model.Address> modelAddressList,
List<org.uddi.api_v3.Address> apiAddressList)
throws DispositionReportFaultMessage {
apiAddressList.clear();
for (org.apache.juddi.model.Address modelAddress : modelAddressList) {
org.uddi.api_v3.Address apiAddress = new org.uddi.api_v3.Address();
apiAddress.setUseType(modelAddress.getUseType());
apiAddress.setLang("");
apiAddress.setSortCode(modelAddress.getSortCode());
apiAddress.setTModelKey(modelAddress.getTmodelKey());
mapAddressLines(modelAddress.getAddressLines(), apiAddress.getAddressLine());
apiAddressList.add(apiAddress);
}
}
public static void mapAddressLines(List<org.apache.juddi.model.AddressLine> modelAddressLineList,
List<org.uddi.api_v3.AddressLine> apiAddressLineList)
throws DispositionReportFaultMessage {
apiAddressLineList.clear();
for (org.apache.juddi.model.AddressLine modelAddressLine : modelAddressLineList) {
org.uddi.api_v3.AddressLine apiAddressLine = new org.uddi.api_v3.AddressLine();
apiAddressLine.setKeyName(modelAddressLine.getKeyName());
apiAddressLine.setKeyValue(modelAddressLine.getKeyValue());
apiAddressLine.setValue(modelAddressLine.getLine());
apiAddressLineList.add(apiAddressLine);
}
}
public static void mapBusinessIdentifiers(List<org.apache.juddi.model.BusinessIdentifier> modelIdentifierList,
org.uddi.api_v3.IdentifierBag apiIdentifierBag,
org.uddi.api_v3.BusinessEntity apiBusinessEntity)
throws DispositionReportFaultMessage {
if (modelIdentifierList == null || modelIdentifierList.size() == 0) {
return;
}
if (apiIdentifierBag == null) {
apiIdentifierBag = new org.uddi.api_v3.IdentifierBag();
}
List<org.uddi.api_v3.KeyedReference> apiKeyedRefList = apiIdentifierBag.getKeyedReference();
apiKeyedRefList.clear();
for (org.apache.juddi.model.BusinessIdentifier modelIdentifier : modelIdentifierList) {
org.uddi.api_v3.KeyedReference apiKeyedRef = new org.uddi.api_v3.KeyedReference();
apiKeyedRef.setTModelKey(modelIdentifier.getTmodelKeyRef());
apiKeyedRef.setKeyName(modelIdentifier.getKeyName());
apiKeyedRef.setKeyValue(modelIdentifier.getKeyValue());
apiKeyedRefList.add(apiKeyedRef);
}
apiBusinessEntity.setIdentifierBag(apiIdentifierBag);
}
public static void mapBusinessServices(List<org.apache.juddi.model.BusinessService> modelBusinessServiceList,
List<org.apache.juddi.model.ServiceProjection> modelServiceProjectionList,
org.uddi.api_v3.BusinessServices apiBusinessServices,
org.uddi.api_v3.BusinessEntity apiBusinessEntity)
throws DispositionReportFaultMessage {
if (apiBusinessServices == null) {
apiBusinessServices = new org.uddi.api_v3.BusinessServices();
}
List<org.uddi.api_v3.BusinessService> apiBusinessServiceList = apiBusinessServices.getBusinessService();
apiBusinessServiceList.clear();
if (modelBusinessServiceList != null && modelBusinessServiceList.size() > 0) {
for (org.apache.juddi.model.BusinessService modelBusinessService : modelBusinessServiceList) {
org.uddi.api_v3.BusinessService apiBusinessService = new org.uddi.api_v3.BusinessService();
mapBusinessService(modelBusinessService, apiBusinessService);
apiBusinessServiceList.add(apiBusinessService);
}
}
if (modelServiceProjectionList != null && modelServiceProjectionList.size() > 0) {
for (org.apache.juddi.model.ServiceProjection modelServiceProjection : modelServiceProjectionList) {
org.uddi.api_v3.BusinessService apiBusinessService = new org.uddi.api_v3.BusinessService();
mapBusinessService(modelServiceProjection.getBusinessService(), apiBusinessService);
apiBusinessServiceList.add(apiBusinessService);
}
}
if (apiBusinessServiceList.size() > 0) {
apiBusinessEntity.setBusinessServices(apiBusinessServices);
}
}
public static void mapBusinessService(org.apache.juddi.model.BusinessService modelBusinessService,
org.uddi.api_v3.BusinessService apiBusinessService)
throws DispositionReportFaultMessage {
apiBusinessService.setBusinessKey(modelBusinessService.getBusinessEntity().getEntityKey());
apiBusinessService.setServiceKey(modelBusinessService.getEntityKey());
mapServiceNames(modelBusinessService.getServiceNames(), apiBusinessService.getName());
mapServiceDescriptions(modelBusinessService.getServiceDescrs(), apiBusinessService.getDescription());
mapBindingTemplates(modelBusinessService.getBindingTemplates(), apiBusinessService.getBindingTemplates(), apiBusinessService);
apiBusinessService.setCategoryBag(mapCategoryBag(modelBusinessService.getCategoryBag(), apiBusinessService.getCategoryBag()));
mapSignature(modelBusinessService.getSignatures(), apiBusinessService.getSignature());
}
public static void mapServiceNames(List<org.apache.juddi.model.ServiceName> modelNameList,
List<org.uddi.api_v3.Name> apiNameList)
throws DispositionReportFaultMessage {
apiNameList.clear();
for (org.apache.juddi.model.ServiceName modelName : modelNameList) {
org.uddi.api_v3.Name apiName = new org.uddi.api_v3.Name();
apiName.setLang(modelName.getLangCode());
apiName.setValue(modelName.getName());
apiNameList.add(apiName);
}
}
public static void mapServiceDescriptions(List<org.apache.juddi.model.ServiceDescr> modelDescList,
List<org.uddi.api_v3.Description> apiDescList)
throws DispositionReportFaultMessage {
apiDescList.clear();
for (org.apache.juddi.model.ServiceDescr modelDesc : modelDescList) {
org.uddi.api_v3.Description apiDesc = new org.uddi.api_v3.Description();
apiDesc.setLang(modelDesc.getLangCode());
apiDesc.setValue(modelDesc.getDescr());
apiDescList.add(apiDesc);
}
}
public static void mapBindingTemplates(List<org.apache.juddi.model.BindingTemplate> modelBindingTemplateList,
org.uddi.api_v3.BindingTemplates apiBindingTemplates,
org.uddi.api_v3.BusinessService apiBusinessService)
throws DispositionReportFaultMessage {
if (modelBindingTemplateList == null || modelBindingTemplateList.size() == 0) {
return;
}
if (apiBindingTemplates == null) {
apiBindingTemplates = new org.uddi.api_v3.BindingTemplates();
}
List<org.uddi.api_v3.BindingTemplate> apiBindingTemplateList = apiBindingTemplates.getBindingTemplate();
apiBindingTemplateList.clear();
for (org.apache.juddi.model.BindingTemplate modelBindingTemplate : modelBindingTemplateList) {
org.uddi.api_v3.BindingTemplate apiBindingTemplate = new org.uddi.api_v3.BindingTemplate();
mapBindingTemplate(modelBindingTemplate, apiBindingTemplate);
apiBindingTemplateList.add(apiBindingTemplate);
}
apiBusinessService.setBindingTemplates(apiBindingTemplates);
}
public static void mapBindingTemplate(org.apache.juddi.model.BindingTemplate modelBindingTemplate,
org.uddi.api_v3.BindingTemplate apiBindingTemplate)
throws DispositionReportFaultMessage {
apiBindingTemplate.setServiceKey(modelBindingTemplate.getBusinessService().getEntityKey());
apiBindingTemplate.setBindingKey(modelBindingTemplate.getEntityKey());
org.uddi.api_v3.AccessPoint apiAccessPoint = new org.uddi.api_v3.AccessPoint();
apiAccessPoint.setUseType(modelBindingTemplate.getAccessPointType());
String accessPointValue = modelBindingTemplate.getAccessPointUrl();
if (accessPointValue != null) {
try {
String baseUrl = AppConfig.getConfiguration().getString(Property.JUDDI_BASE_URL);
if (baseUrl == null) {
logger.warn("Token '" + Property.JUDDI_BASE_URL + "' not found in the juddiv3.xml, defaulting to '"
+ Property.DEFAULT_BASE_URL + "'");
baseUrl = Property.DEFAULT_BASE_URL;
}
accessPointValue = accessPointValue.replaceAll("\\$\\{" + Property.JUDDI_BASE_URL + "\\}", baseUrl);
baseUrl = AppConfig.getConfiguration().getString(Property.JUDDI_BASE_URL_SECURE);
if (baseUrl == null) {
logger.warn("Token '" + Property.JUDDI_BASE_URL_SECURE + "' not found in the juddiv3.xml, defaulting to '"
+ Property.JUDDI_BASE_URL_SECURE + "'");
baseUrl = Property.DEFAULT_BASE_URL_SECURE;
}
accessPointValue = accessPointValue.replaceAll("\\$\\{" + Property.JUDDI_BASE_URL_SECURE + "\\}", baseUrl);
} catch (ConfigurationException e) {
logger.error(e.getMessage(), e);
}
}
apiAccessPoint.setValue(accessPointValue);
apiBindingTemplate.setAccessPoint(apiAccessPoint);
if (modelBindingTemplate.getHostingRedirector() != null) {
org.uddi.api_v3.HostingRedirector apiHost = new org.uddi.api_v3.HostingRedirector();
apiHost.setBindingKey(modelBindingTemplate.getHostingRedirector());
apiBindingTemplate.setHostingRedirector(apiHost);
}
mapTModelInstanceDetails(modelBindingTemplate.getTmodelInstanceInfos(), apiBindingTemplate.getTModelInstanceDetails(), apiBindingTemplate);
mapBindingDescriptions(modelBindingTemplate.getBindingDescrs(), apiBindingTemplate.getDescription());
apiBindingTemplate.setCategoryBag(mapCategoryBag(modelBindingTemplate.getCategoryBag(), apiBindingTemplate.getCategoryBag()));
mapSignature(modelBindingTemplate.getSignatures(), apiBindingTemplate.getSignature());
}
public static void mapBindingDescriptions(List<org.apache.juddi.model.BindingDescr> modelDescList,
List<org.uddi.api_v3.Description> apiDescList)
throws DispositionReportFaultMessage {
apiDescList.clear();
for (org.apache.juddi.model.BindingDescr modelDesc : modelDescList) {
org.uddi.api_v3.Description apiDesc = new org.uddi.api_v3.Description();
apiDesc.setLang(modelDesc.getLangCode());
apiDesc.setValue(modelDesc.getDescr());
apiDescList.add(apiDesc);
}
}
public static org.uddi.api_v3.CategoryBag mapCategoryBag(org.apache.juddi.model.CategoryBag modelCategoryBag,
org.uddi.api_v3.CategoryBag apiCategoryBag)
throws DispositionReportFaultMessage {
if (modelCategoryBag != null) {
if (apiCategoryBag == null) {
apiCategoryBag = new org.uddi.api_v3.CategoryBag();
}
for (org.apache.juddi.model.KeyedReference modelKeyedReference : modelCategoryBag.getKeyedReferences()) {
org.uddi.api_v3.KeyedReference apiKeyedReference = new org.uddi.api_v3.KeyedReference();
apiKeyedReference.setTModelKey(modelKeyedReference.getTmodelKeyRef());
apiKeyedReference.setKeyName(modelKeyedReference.getKeyName());
apiKeyedReference.setKeyValue(modelKeyedReference.getKeyValue());
apiCategoryBag.getKeyedReference().add(apiKeyedReference);
}
for (org.apache.juddi.model.KeyedReferenceGroup modelKeyedReferenceGroup : modelCategoryBag.getKeyedReferenceGroups()) {
org.uddi.api_v3.KeyedReferenceGroup apiKeyedReferenceGroup = new org.uddi.api_v3.KeyedReferenceGroup();
mapKeyedReferenceGroup(modelKeyedReferenceGroup, apiKeyedReferenceGroup);
apiCategoryBag.getKeyedReferenceGroup().add(apiKeyedReferenceGroup);
}
}
return apiCategoryBag;
}
public static void mapKeyedReferenceGroup(org.apache.juddi.model.KeyedReferenceGroup modelKeyedReferenceGroup,
org.uddi.api_v3.KeyedReferenceGroup apiKeyedReferenceGroup)
throws DispositionReportFaultMessage {
apiKeyedReferenceGroup.setTModelKey(modelKeyedReferenceGroup.getTmodelKey());
for (org.apache.juddi.model.KeyedReference modelKeyedReference : modelKeyedReferenceGroup.getKeyedReferences()) {
org.uddi.api_v3.KeyedReference apiKeyedReference = new org.uddi.api_v3.KeyedReference();
apiKeyedReference.setTModelKey(modelKeyedReference.getTmodelKeyRef());
apiKeyedReference.setKeyName(modelKeyedReference.getKeyName());
apiKeyedReference.setKeyValue(modelKeyedReference.getKeyValue());
apiKeyedReferenceGroup.getKeyedReference().add(apiKeyedReference);
}
}
public static void mapTModelInstanceDetails(List<org.apache.juddi.model.TmodelInstanceInfo> modelTModelInstInfoList,
org.uddi.api_v3.TModelInstanceDetails apiTModelInstDetails,
org.uddi.api_v3.BindingTemplate apiBindingTemplate)
throws DispositionReportFaultMessage {
if (modelTModelInstInfoList == null || modelTModelInstInfoList.size() == 0) {
return;
}
if (apiTModelInstDetails == null) {
apiTModelInstDetails = new org.uddi.api_v3.TModelInstanceDetails();
}
List<org.uddi.api_v3.TModelInstanceInfo> apiTModelInstInfoList = apiTModelInstDetails.getTModelInstanceInfo();
apiTModelInstInfoList.clear();
for (org.apache.juddi.model.TmodelInstanceInfo modelTModelInstInfo : modelTModelInstInfoList) {
org.uddi.api_v3.TModelInstanceInfo apiTModelInstInfo = new org.uddi.api_v3.TModelInstanceInfo();
apiTModelInstInfo.setTModelKey(modelTModelInstInfo.getTmodelKey());
mapTModelInstanceInfoDescriptions(modelTModelInstInfo.getTmodelInstanceInfoDescrs(), apiTModelInstInfo.getDescription());
mapInstanceDetails(modelTModelInstInfo, apiTModelInstInfo.getInstanceDetails(), apiTModelInstInfo);
apiTModelInstInfoList.add(apiTModelInstInfo);
}
apiBindingTemplate.setTModelInstanceDetails(apiTModelInstDetails);
}
public static void mapTModelInstanceInfoDescriptions(List<org.apache.juddi.model.TmodelInstanceInfoDescr> modelDescList,
List<org.uddi.api_v3.Description> apiDescList)
throws DispositionReportFaultMessage {
apiDescList.clear();
for (org.apache.juddi.model.TmodelInstanceInfoDescr modelDesc : modelDescList) {
org.uddi.api_v3.Description apiDesc = new org.uddi.api_v3.Description();
apiDesc.setLang(modelDesc.getLangCode());
apiDesc.setValue(modelDesc.getDescr());
apiDescList.add(apiDesc);
}
}
public static void mapInstanceDetails(org.apache.juddi.model.TmodelInstanceInfo modelTModelInstInfo,
org.uddi.api_v3.InstanceDetails apiInstanceDetails,
org.uddi.api_v3.TModelInstanceInfo apiTModelInstInfo)
throws DispositionReportFaultMessage {
if (modelTModelInstInfo == null
|| (modelTModelInstInfo.getInstanceParms() == null && modelTModelInstInfo.getOverviewDocs().size() == 0)) {
return;
}
if (apiInstanceDetails == null) {
apiInstanceDetails = new org.uddi.api_v3.InstanceDetails();
}
//InstanceParms
apiInstanceDetails.setInstanceParms(modelTModelInstInfo.getInstanceParms());
//Descriptions
List<org.apache.juddi.model.InstanceDetailsDescr> modelInstDetailsDescrList = modelTModelInstInfo.getInstanceDetailsDescrs();
for (org.apache.juddi.model.InstanceDetailsDescr modelInstDetailDescr : modelInstDetailsDescrList) {
org.uddi.api_v3.Description apiDesc = new org.uddi.api_v3.Description();
apiDesc.setLang(modelInstDetailDescr.getLangCode());
apiDesc.setValue(modelInstDetailDescr.getDescr());
apiInstanceDetails.getDescription().add(apiDesc);
}
//OverviewDoc
mapOverviewDocs(modelTModelInstInfo.getOverviewDocs(), apiInstanceDetails, null);
apiTModelInstInfo.setInstanceDetails(apiInstanceDetails);
}
public static void mapOverviewDocs(List<org.apache.juddi.model.OverviewDoc> modelOverviewDocs,
org.uddi.api_v3.InstanceDetails apiInstanceDetails,
org.uddi.api_v3.TModel apiTModel) {
for (OverviewDoc modelOverviewDoc : modelOverviewDocs) {
org.uddi.api_v3.OverviewDoc apiOverviewDoc = new org.uddi.api_v3.OverviewDoc();
//Descriptions
List<org.apache.juddi.model.OverviewDocDescr> overviewDocDescrList = modelOverviewDoc.getOverviewDocDescrs();
for (org.apache.juddi.model.OverviewDocDescr overviewDocDescr : overviewDocDescrList) {
org.uddi.api_v3.Description apiDesc = new org.uddi.api_v3.Description();
apiDesc.setLang(overviewDocDescr.getLangCode());
apiDesc.setValue(overviewDocDescr.getDescr());
apiOverviewDoc.getDescription().add(apiDesc);
}
//OverviewURL
org.uddi.api_v3.OverviewURL apiOverviewURL = new org.uddi.api_v3.OverviewURL();
apiOverviewURL.setUseType(modelOverviewDoc.getOverviewUrlUseType());
apiOverviewURL.setValue(modelOverviewDoc.getOverviewUrl());
apiOverviewDoc.setOverviewURL(apiOverviewURL);
//Set the entity on the apiOverviewDoc
if (apiInstanceDetails != null) {
apiInstanceDetails.getOverviewDoc().add(apiOverviewDoc);
} else {
apiTModel.getOverviewDoc().add(apiOverviewDoc);
}
}
}
public static void mapTModel(org.apache.juddi.model.Tmodel modelTModel,
org.uddi.api_v3.TModel apiTModel)
throws DispositionReportFaultMessage {
apiTModel.setTModelKey(modelTModel.getEntityKey());
org.uddi.api_v3.Name apiName = new org.uddi.api_v3.Name();
apiName.setValue(modelTModel.getName());
apiName.setLang(modelTModel.getLangCode());
apiTModel.setName(apiName);
apiTModel.setDeleted(modelTModel.getDeleted());
mapTModelDescriptions(modelTModel.getTmodelDescrs(), apiTModel.getDescription());
mapTModelIdentifiers(modelTModel.getTmodelIdentifiers(), apiTModel.getIdentifierBag(), apiTModel);
apiTModel.setCategoryBag(mapCategoryBag(modelTModel.getCategoryBag(), apiTModel.getCategoryBag()));
mapOverviewDocs(modelTModel.getOverviewDocs(), null, apiTModel);
mapSignature(modelTModel.getSignatures(), apiTModel.getSignature());
}
public static void mapTModelDescriptions(List<org.apache.juddi.model.TmodelDescr> modelDescList,
List<org.uddi.api_v3.Description> apiDescList)
throws DispositionReportFaultMessage {
apiDescList.clear();
for (org.apache.juddi.model.TmodelDescr modelDesc : modelDescList) {
org.uddi.api_v3.Description apiDesc = new org.uddi.api_v3.Description();
apiDesc.setLang(modelDesc.getLangCode());
apiDesc.setValue(modelDesc.getDescr());
apiDescList.add(apiDesc);
}
}
public static void mapTModelIdentifiers(List<org.apache.juddi.model.TmodelIdentifier> modelIdentifierList,
org.uddi.api_v3.IdentifierBag apiIdentifierBag,
org.uddi.api_v3.TModel apiTModel)
throws DispositionReportFaultMessage {
if (modelIdentifierList == null || modelIdentifierList.size() == 0) {
return;
}
if (apiIdentifierBag == null) {
apiIdentifierBag = new org.uddi.api_v3.IdentifierBag();
}
List<org.uddi.api_v3.KeyedReference> apiKeyedRefList = apiIdentifierBag.getKeyedReference();
apiKeyedRefList.clear();
for (org.apache.juddi.model.TmodelIdentifier modelIdentifier : modelIdentifierList) {
org.uddi.api_v3.KeyedReference apiKeyedRef = new org.uddi.api_v3.KeyedReference();
apiKeyedRef.setTModelKey(modelIdentifier.getTmodelKeyRef());
apiKeyedRef.setKeyName(modelIdentifier.getKeyName());
apiKeyedRef.setKeyValue(modelIdentifier.getKeyValue());
apiKeyedRefList.add(apiKeyedRef);
}
apiTModel.setIdentifierBag(apiIdentifierBag);
}
public static void mapBusinessInfo(org.apache.juddi.model.BusinessEntity modelBusinessEntity,
org.uddi.api_v3.BusinessInfo apiBusinessInfo)
throws DispositionReportFaultMessage {
apiBusinessInfo.setBusinessKey(modelBusinessEntity.getEntityKey());
mapBusinessNames(modelBusinessEntity.getBusinessNames(), apiBusinessInfo.getName());
mapBusinessDescriptions(modelBusinessEntity.getBusinessDescrs(), apiBusinessInfo.getDescription());
mapServiceInfos(modelBusinessEntity.getBusinessServices(), apiBusinessInfo.getServiceInfos(), apiBusinessInfo);
}
public static void mapServiceInfos(List<org.apache.juddi.model.BusinessService> modelBusinessServiceList,
org.uddi.api_v3.ServiceInfos apiServiceInfos,
org.uddi.api_v3.BusinessInfo apiBusinessInfo)
throws DispositionReportFaultMessage {
if (modelBusinessServiceList.size() == 0) {
return;
}
if (apiServiceInfos == null) {
apiServiceInfos = new org.uddi.api_v3.ServiceInfos();
}
List<org.uddi.api_v3.ServiceInfo> apiServiceInfoList = apiServiceInfos.getServiceInfo();
apiServiceInfoList.clear();
for (org.apache.juddi.model.BusinessService modelBusinessService : modelBusinessServiceList) {
org.uddi.api_v3.ServiceInfo apiServiceInfo = new org.uddi.api_v3.ServiceInfo();
mapServiceInfo(modelBusinessService, apiServiceInfo);
apiServiceInfos.getServiceInfo().add(apiServiceInfo);
}
apiBusinessInfo.setServiceInfos(apiServiceInfos);
}
public static void mapServiceInfo(org.apache.juddi.model.BusinessService modelBusinessService,
org.uddi.api_v3.ServiceInfo apiServiceInfo)
throws DispositionReportFaultMessage {
apiServiceInfo.setBusinessKey(modelBusinessService.getBusinessEntity().getEntityKey());
apiServiceInfo.setServiceKey(modelBusinessService.getEntityKey());
mapServiceNames(modelBusinessService.getServiceNames(), apiServiceInfo.getName());
}
public static void mapTModelInfo(org.apache.juddi.model.Tmodel modelTModel,
org.uddi.api_v3.TModelInfo apiTModelInfo)
throws DispositionReportFaultMessage {
apiTModelInfo.setTModelKey(modelTModel.getEntityKey());
org.uddi.api_v3.Name apiName = new org.uddi.api_v3.Name();
apiName.setValue(modelTModel.getName());
apiName.setLang(modelTModel.getLangCode());
apiTModelInfo.setName(apiName);
mapTModelDescriptions(modelTModel.getTmodelDescrs(), apiTModelInfo.getDescription());
}
public static void mapAuthToken(org.apache.juddi.model.AuthToken modelAuthToken,
org.uddi.api_v3.AuthToken apiAuthToken)
throws DispositionReportFaultMessage {
apiAuthToken.setAuthInfo(modelAuthToken.getAuthToken());
}
public static void mapPublisherAssertion(org.apache.juddi.model.PublisherAssertion modelPublisherAssertion,
org.uddi.api_v3.PublisherAssertion apiPublisherAssertion)
throws DispositionReportFaultMessage {
apiPublisherAssertion.setFromKey(modelPublisherAssertion.getId().getFromKey());
apiPublisherAssertion.setToKey(modelPublisherAssertion.getId().getToKey());
org.uddi.api_v3.KeyedReference keyedRef = new org.uddi.api_v3.KeyedReference();
keyedRef.setTModelKey(modelPublisherAssertion.getTmodelKey());
keyedRef.setKeyName(modelPublisherAssertion.getKeyName());
keyedRef.setKeyValue(modelPublisherAssertion.getKeyValue());
if (modelPublisherAssertion.getSignatures()!=null &&
!modelPublisherAssertion.getSignatures().isEmpty())
{
mapSignature(modelPublisherAssertion.getSignatures(), apiPublisherAssertion.getSignature());
}
apiPublisherAssertion.setKeyedReference(keyedRef);
}
public static void mapAssertionStatusItem(org.apache.juddi.model.PublisherAssertion modelPublisherAssertion,
org.uddi.api_v3.AssertionStatusItem apiAssertionStatusItem,
List<?> businessKeys)
throws DispositionReportFaultMessage {
apiAssertionStatusItem.setFromKey(modelPublisherAssertion.getId().getFromKey());
apiAssertionStatusItem.setToKey(modelPublisherAssertion.getId().getToKey());
org.uddi.api_v3.KeyedReference keyedRef = new org.uddi.api_v3.KeyedReference();
keyedRef.setTModelKey(modelPublisherAssertion.getTmodelKey());
keyedRef.setKeyName(modelPublisherAssertion.getKeyName());
keyedRef.setKeyValue(modelPublisherAssertion.getKeyValue());
apiAssertionStatusItem.setKeyedReference(keyedRef);
if ("true".equalsIgnoreCase(modelPublisherAssertion.getFromCheck())
&& "true".equalsIgnoreCase(modelPublisherAssertion.getToCheck())) {
apiAssertionStatusItem.setCompletionStatus(CompletionStatus.STATUS_COMPLETE);
} else if (!"true".equalsIgnoreCase(modelPublisherAssertion.getFromCheck())
&& "true".equalsIgnoreCase(modelPublisherAssertion.getToCheck())) {
apiAssertionStatusItem.setCompletionStatus(CompletionStatus.STATUS_FROM_KEY_INCOMPLETE);
} else if ("true".equalsIgnoreCase(modelPublisherAssertion.getFromCheck())
&& !"true".equalsIgnoreCase(modelPublisherAssertion.getToCheck())) {
apiAssertionStatusItem.setCompletionStatus(CompletionStatus.STATUS_TO_KEY_INCOMPLETE);
} else if (!"true".equalsIgnoreCase(modelPublisherAssertion.getFromCheck())
&& !"true".equalsIgnoreCase(modelPublisherAssertion.getToCheck())) {
apiAssertionStatusItem.setCompletionStatus(CompletionStatus.STATUS_BOTH_INCOMPLETE);
}
org.uddi.api_v3.KeysOwned keysOwned = new org.uddi.api_v3.KeysOwned();
//converting resultList to simple List
List<String> businessKeyList = new ArrayList<String>();
for (Object businessKey : businessKeys) {
businessKeyList.add(String.valueOf(businessKey));
}
Collections.sort(businessKeyList);
if (Collections.binarySearch(businessKeyList, modelPublisherAssertion.getBusinessEntityByFromKey().getEntityKey()) >= 0) {
keysOwned.setFromKey(modelPublisherAssertion.getBusinessEntityByFromKey().getEntityKey());
}
if (Collections.binarySearch(businessKeyList, modelPublisherAssertion.getBusinessEntityByToKey().getEntityKey()) >= 0) {
keysOwned.setToKey(modelPublisherAssertion.getBusinessEntityByToKey().getEntityKey());
}
if (keysOwned.getFromKey() == null && keysOwned.getToKey() == null) {
throw new FatalErrorException(new ErrorMessage("errors.invalidKey.KeysOwned"));
}
apiAssertionStatusItem.setKeysOwned(keysOwned);
}
public static void mapRelatedBusinessInfo(org.apache.juddi.model.PublisherAssertion modelPublisherAssertion,
org.apache.juddi.model.BusinessEntity modelRelatedBusiness,
org.uddi.api_v3.Direction direction,
org.uddi.api_v3.RelatedBusinessInfo apiRelatedBusinessInfo)
throws DispositionReportFaultMessage {
apiRelatedBusinessInfo.setBusinessKey(modelRelatedBusiness.getEntityKey());
mapBusinessNames(modelRelatedBusiness.getBusinessNames(), apiRelatedBusinessInfo.getName());
mapBusinessDescriptions(modelRelatedBusiness.getBusinessDescrs(), apiRelatedBusinessInfo.getDescription());
org.uddi.api_v3.SharedRelationships sharedRelationships = new org.uddi.api_v3.SharedRelationships();
sharedRelationships.setDirection(direction);
org.uddi.api_v3.KeyedReference keyedRef = new org.uddi.api_v3.KeyedReference();
keyedRef.setTModelKey(modelPublisherAssertion.getTmodelKey());
keyedRef.setKeyName(modelPublisherAssertion.getKeyName());
keyedRef.setKeyValue(modelPublisherAssertion.getKeyValue());
sharedRelationships.getKeyedReference().add(keyedRef);
apiRelatedBusinessInfo.getSharedRelationships().add(sharedRelationships);
}
public static void mapOperationalInfo(UddiEntity modelUddiEntity,
OperationalInfo apiOperationalInfo)
throws DispositionReportFaultMessage {
apiOperationalInfo.setCreated(TypeConvertor.convertDateToXMLGregorianCalendar(modelUddiEntity.getCreated()));
apiOperationalInfo.setModified(TypeConvertor.convertDateToXMLGregorianCalendar(modelUddiEntity.getModified()));
apiOperationalInfo.setModifiedIncludingChildren(TypeConvertor.convertDateToXMLGregorianCalendar(modelUddiEntity.getModifiedIncludingChildren()));
apiOperationalInfo.setNodeID(modelUddiEntity.getNodeId());
apiOperationalInfo.setAuthorizedName(modelUddiEntity.getAuthorizedName());
apiOperationalInfo.setEntityKey(modelUddiEntity.getEntityKey());
}
public static void mapSubscription(org.apache.juddi.model.Subscription modelSubscription,
org.uddi.sub_v3.Subscription apiSubscription)
throws DispositionReportFaultMessage {
apiSubscription.setSubscriptionKey(modelSubscription.getSubscriptionKey());
apiSubscription.setBrief(modelSubscription.isBrief());
apiSubscription.setExpiresAfter(TypeConvertor.convertDateToXMLGregorianCalendar(modelSubscription.getExpiresAfter()));
apiSubscription.setBindingKey(modelSubscription.getBindingKey());
apiSubscription.setMaxEntities(modelSubscription.getMaxEntities());
apiSubscription.setNotificationInterval(TypeConvertor.convertStringToDuration(modelSubscription.getNotificationInterval()));
try {
SubscriptionFilter existingFilter = (SubscriptionFilter) JAXBMarshaller.unmarshallFromString(modelSubscription.getSubscriptionFilter(), JAXBMarshaller.PACKAGE_SUBSCRIPTION);
apiSubscription.setSubscriptionFilter(existingFilter);
} catch (JAXBException e) {
logger.error("JAXB Exception while marshalling subscription filter", e);
throw new FatalErrorException(new ErrorMessage("errors.Unspecified"));
}
}
public static void mapClientSubscriptionInfo(org.apache.juddi.model.ClientSubscriptionInfo modelClientSubscriptionInfo,
org.apache.juddi.api_v3.ClientSubscriptionInfo apiClientSubscriptionInfo, EntityManager em)
throws DispositionReportFaultMessage {
apiClientSubscriptionInfo.setSubscriptionKey(modelClientSubscriptionInfo.getSubscriptionKey());
GregorianCalendar gcal = new GregorianCalendar();
gcal.setTimeInMillis(modelClientSubscriptionInfo.getLastNotified().getTime());
try {
apiClientSubscriptionInfo.setLastModified(DatatypeFactory.newInstance().newXMLGregorianCalendar(gcal));
} catch (DatatypeConfigurationException ex) {
logger.warn("unable to create DatatypeFactory", ex);
}
if (modelClientSubscriptionInfo.getFromClerk() != null) {
org.apache.juddi.api_v3.Clerk apiFromClerk = new org.apache.juddi.api_v3.Clerk();
mapClerk(modelClientSubscriptionInfo.getFromClerk(), apiFromClerk,em);
apiClientSubscriptionInfo.setFromClerk(apiFromClerk);
}
if (modelClientSubscriptionInfo.getToClerk() != null) {
org.apache.juddi.api_v3.Clerk apiToClerk = new org.apache.juddi.api_v3.Clerk();
mapClerk(modelClientSubscriptionInfo.getToClerk(), apiToClerk,em);
apiClientSubscriptionInfo.setToClerk(apiToClerk);
}
}
public static void mapClerk(org.apache.juddi.model.Clerk modelClerk,
org.apache.juddi.api_v3.Clerk apiClerk,EntityManager em)
throws DispositionReportFaultMessage {
apiClerk.setName(modelClerk.getClerkName());
apiClerk.setPassword(modelClerk.getCred());
apiClerk.setPublisher(modelClerk.getPublisherId());
if (modelClerk.getNode() != null) {
org.apache.juddi.api_v3.Node apiNode = new org.apache.juddi.api_v3.Node();
mapNode(
em.find(org.apache.juddi.model.Node.class, modelClerk.getNode())
, apiNode);
apiClerk.setNode(apiNode);
}
}
public static void mapNode(org.apache.juddi.model.Node modelNode,
org.apache.juddi.api_v3.Node apiNode)
throws DispositionReportFaultMessage {
apiNode.setCustodyTransferUrl(modelNode.getCustodyTransferUrl());
apiNode.setFactoryInitial(modelNode.getFactoryInitial());
apiNode.setFactoryNamingProvider(modelNode.getFactoryNamingProvider());
apiNode.setFactoryURLPkgs(modelNode.getFactoryURLPkgs());
apiNode.setInquiryUrl(modelNode.getInquiryUrl());
apiNode.setJuddiApiUrl(modelNode.getJuddiApiUrl());
apiNode.setName(modelNode.getName());
apiNode.setClientName(modelNode.getClientName());
apiNode.setProxyTransport(modelNode.getProxyTransport());
apiNode.setPublishUrl(modelNode.getPublishUrl());
apiNode.setSecurityUrl(modelNode.getSecurityUrl());
apiNode.setSubscriptionUrl(modelNode.getSubscriptionUrl());
apiNode.setSubscriptionListenerUrl(modelNode.getSubscriptionListenerUrl());
apiNode.setReplicationUrl(modelNode.getReplicationUrl());
}
private static Object convertDataToTransformContent(String type, byte[] xformBytes) throws RuntimeException {
Object transformObject;
if (type.equals(String.class.getSimpleName())) {
try {
transformObject = new String(xformBytes, "UTF-8");
} catch (Exception e) {
throw new RuntimeException("Error decoding string due to: " + e.getMessage(), e);
}
} else if (type.equals(byte[].class.getSimpleName())) {
transformObject = xformBytes;
} else if (type.equals(Element.class.getCanonicalName())) {
DocumentBuilderFactory dbf = DocumentBuilderFactory.newInstance();
try {
dbf.setFeature("http://apache.org/xml/features/disallow-doctype-decl", true);
dbf.setNamespaceAware(true);
dbf.setXIncludeAware(true);
DocumentBuilder db = dbf.newDocumentBuilder();
Document doc = db.parse(new ByteArrayInputStream(xformBytes));
transformObject = doc.getDocumentElement();
} catch (Exception e) {
throw new RuntimeException("Failed to parse element due to: " + e.getMessage(), e);
}
} else {
throw new RuntimeException("Unrecognized type: " + type);
}
return transformObject;
}
public static void mapReplicationConfiguration(ReplicationConfiguration find, org.uddi.repl_v3.ReplicationConfiguration item) throws DispositionReportFaultMessage {
item.setMaximumTimeToGetChanges(find.getMaximumTimeToGetChanges());
item.setMaximumTimeToSyncRegistry(find.getMaximumTimeToSyncRegistry());
item.setSerialNumber(find.getSerialNumber());
List<SignatureType> sigs = new ArrayList<SignatureType>();
mapSignature(find.getSignatures(), sigs);
item.getSignature().addAll(sigs);
mapOperator(find.getOperator(), item.getOperator());
List<org.apache.juddi.model.Contact> modelContactList = new ArrayList<org.apache.juddi.model.Contact>();
org.uddi.api_v3.Contacts cs = new Contacts();
mapContacts(modelContactList, cs, new BusinessEntity());
item.setRegistryContact(new org.uddi.repl_v3.ReplicationConfiguration.RegistryContact());
if (!cs.getContact().isEmpty()) {
item.getRegistryContact().setContact(cs.getContact().get(0));
}
else
{
item.getRegistryContact().setContact(new Contact());
item.getRegistryContact().getContact().getPersonName().add(new PersonName("unknown", null));
}
item.setTimeOfConfigurationUpdate(find.getTimeOfConfigurationUpdate());
CommunicationGraph xcom = new CommunicationGraph();
mapCommunicationGraph(find, xcom);
item.setCommunicationGraph(xcom);
//(List<org.apache.juddi.model.Contact> modelContactList,
//org.uddi.api_v3.Contacts apiContacts,
//org.uddi.api_v3.BusinessEntity apiBusinessEntity)
}
private static void mapOperator(List<org.apache.juddi.model.Operator> model, List<Operator> api) throws DispositionReportFaultMessage {
for (int i = 0; i < model.size(); i++) {
Operator op = new Operator();
op.setOperatorNodeID(model.get(i).getOperatorNodeID());
op.setSoapReplicationURL(model.get(i).getSoapReplicationURL());
switch (model.get(i).getOperatorStatus()) {
case NEW:
op.setOperatorStatus(OperatorStatusType.NEW);
break;
case NORMAL:
op.setOperatorStatus(OperatorStatusType.NORMAL);
break;
case RESIGNED:
op.setOperatorStatus(OperatorStatusType.RESIGNED);
break;
}
Contacts c = new Contacts();
mapContacts(model.get(i).getContact(), c, new BusinessEntity());
op.getContact().addAll(c.getContact());
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);
}
}
private static void mapCommunicationGraph(org.apache.juddi.model.ReplicationConfiguration model,
CommunicationGraph api) {
mapEdge(model.getEdge(), api.getEdge());
mapControlMessages(model.getControlMessage(), api.getControlledMessage());
mapEdgeNodes(model.getNode(), api.getNode());
}
private static void mapEdge(List<Edge> model, List<CommunicationGraph.Edge> api) {
Iterator<Edge> it = model.iterator();
while (it.hasNext()) {
Edge modelEdge = it.next();
CommunicationGraph.Edge apiEdge = new CommunicationGraph.Edge();
apiEdge.setMessageReceiver(modelEdge.getMessageReceiver());
apiEdge.setMessageSender(modelEdge.getMessageSender());
Iterator<ControlMessage> it2 = modelEdge.getMessages().iterator();
while (it2.hasNext()) {
apiEdge.getMessage().add(it2.next().getMessage());
}
Iterator<EdgeReceiverAlternate> it3 = modelEdge.getMessageReceiverAlternate().iterator();
while (it3.hasNext()) {
apiEdge.getMessageReceiverAlternate().add(it3.next().getReceiverAlternate());
}
api.add(apiEdge);
}
}
private static void mapControlMessages(List<ControlMessage> model, List<String> api) {
Iterator<ControlMessage> it = model.iterator();
while (it.hasNext()) {
api.add(it.next().getMessage());
}
}
private static void mapEdgeNodes(List<ReplicationConfigurationNode> model, List<String> api) {
Iterator<ReplicationConfigurationNode> it = model.iterator();
while (it.hasNext()) {
api.add(it.next().getNodeName());
}
}
public static ChangeRecord mapChangeRecord(org.apache.juddi.model.ChangeRecord cr) {
if (cr == null) {
return null;
}
ChangeRecord ret = null;
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 = (ChangeRecord) XmlUtils.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;
}
}