com.sun.xml.registry.uddi.UDDIMapper Maven / Gradle / Ivy
Go to download
Show more of this group Show more artifacts with this name
Show all versions of webservices-rt Show documentation
Show all versions of webservices-rt Show documentation
This module contains the Metro runtime code.
/*
* The contents of this file are subject to the terms
* of the Common Development and Distribution License
* (the License). You may not use this file except in
* compliance with the License.
*
* You can obtain a copy of the license at
* https://glassfish.dev.java.net/public/CDDLv1.0.html or
* glassfish/bootstrap/legal/CDDLv1.0.txt.
* See the License for the specific language governing
* permissions and limitations under the License.
*
* When distributing Covered Code, include this CDDL
* Header Notice in each file and include the License file
* at glassfish/bootstrap/legal/CDDLv1.0.txt.
* If applicable, add the following below the CDDL Header,
* with the fields enclosed by brackets [] replaced by
* you own identifying information:
* "Portions Copyrighted [year] [name of copyright owner]"
*
* Copyright 2007 Sun Microsystems, Inc. All rights reserved.
*/
/*
* UDDIMapper.java
*
* Created on May 14, 2001, 9:17 AM
*/
package com.sun.xml.registry.uddi;
import javax.xml.registry.*;
import javax.xml.registry.infomodel.*;
import com.sun.xml.registry.common.*;
import com.sun.xml.registry.common.util.*;
import com.sun.xml.registry.uddi.infomodel.*;
import com.sun.xml.registry.uddi.infomodel.PersonNameImpl;
import com.sun.xml.registry.common.tools.*;
import com.sun.xml.registry.uddi.bindings_v2_2.*;
import javax.xml.parsers.*;
import javax.xml.parsers.DocumentBuilder;
import java.io.*;
import java.net.*;
import java.util.*;
import java.lang.*;
import java.security.AccessController;
import java.security.PrivilegedAction;
import org.w3c.dom.*;
import java.util.logging.Logger;
import java.util.logging.Level;
import javax.xml.bind.JAXBContext;
import javax.xml.bind.JAXBException;
import javax.xml.soap.SOAPMessage;
import javax.xml.soap.SOAPBody;
/**
*
*
* @author kwalsh
* @version 1.0.5
*
*/
public class UDDIMapper extends JAXRConstants{
Logger logger = (Logger)
AccessController.doPrivileged(new PrivilegedAction() {
public Object run() {
return Logger.getLogger(com.sun.xml.registry.common.util.Utility.LOGGING_DOMAIN + ".uddi");
}
});
private static XMLUtil xmlUtil;
private static MarshallerUtil marshallerUtil;
private UDDIObjectCache objectManager = null;
private RegistryServiceImpl service = null;
private ConnectionImpl connection = null;
private static JAXRConceptsManager manager = null;
private Collection fromKeysOwned;
private Collection toKeysOwned;
private ClassificationScheme defaultPostalScheme;
private ClassificationScheme jaxrPostalAddressScheme;
private HashMap postalAddressMap;
private HashMap equivalentConcepts;
private HashMap semanticEquivalences;
private long tokenTime;
private Processor processor;
private MapperHelpers helper;
//for jaxb
private JAXBContext jc;
private ObjectFactory objFactory;
/**
*
* @param
* @return
* @exception
*
*/
public UDDIMapper(RegistryService service) {
this.service = (RegistryServiceImpl) service;
//objectManager needs creation in Constructor
this.objectManager =
new UDDIObjectCache((RegistryServiceImpl)service);
this.xmlUtil = XMLUtil.getInstance();
try {
marshallerUtil = marshallerUtil.getInstance();
} catch (JAXBException jbe){
System.out.println("Failure to initialize mapper");
}
this.helper = new MapperHelpers();
initJAXBObjectFactory();
}
public UDDIObjectCache getObjectManager() {
return this.objectManager;
}
private void initJAXBObjectFactory(){
// create a JAXBContext
try {
if (jc == null)
jc = JAXBContext.newInstance( "com.sun.xml.registry.uddi.bindings_v2_2" );
} catch (JAXBException jbe){
logger.log(Level.SEVERE, "Exiting unable to initial JAXB context", jbe);
System.exit(1);
}
// create an ObjectFactory instance.
// if the JAXBContext had been created with mutiple pacakge names,
// we would have to explicitly use the correct package name when
// creating the ObjectFactory.
if (objFactory == null)
objFactory = new ObjectFactory();
}
private Processor getProcessor(){
if (processor == null)
processor = new Processor(this.service, this);
return processor;
}
private JAXRConceptsManager getConceptsManager()
throws JAXRException {
if (manager == null)
manager = JAXRConceptsManager.getInstance(service.getConnection());
return manager;
}
private ConnectionImpl getConnection() {
if (this.service != null) {
if (this.connection == null)
this.connection = service.getConnection();
}
return this.connection;
}
private void setConnection() {
if (this.service != null) {
if (this.connection == null)
this.connection = service.getConnection();
}
}
/**
* Finds all Organizations that match ALL of the criteria specified by the parameters of this call.
* This is a Logical AND operation between all non-null parameters.
*
* - Capability Level: 0
*
*
* @return BulkResponse containing Collection of Organizations
*
*/
BulkResponse findOrganizations(Collection findQualifiers,
Collection namePatterns, Collection classifications,
Collection specifications, Collection identifiers,
Collection externalLinks ) throws JAXRException {
FindBusiness findBusiness = null;
boolean parameterSet = false;
findBusiness = objFactory.createFindBusiness();
findBusiness.setGeneric(UDDIVERSION);
String maxrows = this.getConnection().getMaxRows();
if (maxrows != null) {
int mrows = Integer.parseInt(maxrows);
findBusiness.setMaxRows(mrows);
}
FindQualifiers fQualifiers =
strings2FindQualifiers(findQualifiers);
if (fQualifiers != null)
findBusiness.setFindQualifiers(fQualifiers);
Collection names = namePatterns2Names(namePatterns, false);
IdentifierBag ibag =
externalIdentifiers2IdentifierBag(identifiers);
CategoryBag cbag =
classifications2CategoryBag(classifications);
TModelBag tbag =
concepts2TModelBag(specifications);
DiscoveryURLs urls =
externalLinks2DiscoveryURLs(externalLinks);
if ((names != null) && (!names.isEmpty())){
//this adheres to UDDI V2.0
findBusiness.getName().addAll(names);
parameterSet = true;
}
if (ibag != null) {
findBusiness.setIdentifierBag(ibag);
parameterSet = true;
}
if (cbag != null) {
findBusiness.setCategoryBag(cbag);
parameterSet = true;
}
if (tbag != null) {
findBusiness.setTModelBag(tbag);
parameterSet = true;
}
if (urls != null) {
findBusiness.setDiscoveryURLs(urls);
parameterSet = true;
}
if (!parameterSet)
throw new JAXRException(ResourceBundle.getBundle("com/sun/xml/registry/uddi/LocalStrings").getString("UDDIMapper:No_Find_Criteria_Set_for_FindOrganization"));
return getProcessor().processRequestJAXB(findBusiness, false, null, FIND);
}
BulkResponse saveOrganizations(Collection organizations) throws JAXRException {
SaveBusiness saveBusiness = null;
saveBusiness = objFactory.createSaveBusiness();
saveBusiness.setGeneric(UDDIVERSION);
String authInfo = null;
Collection businessEntities =
organizations2BusinessEntities(organizations, true);
if (!businessEntities.isEmpty()) {
saveBusiness.getBusinessEntity().addAll(businessEntities);
} else {
throw new JAXRException(ResourceBundle.getBundle("com/sun/xml/registry/uddi/LocalStrings").getString("UDDIMapper:No_Organization_information_to_save") );
}
authInfo = getAuthInfo();
if (authInfo == null) {
throw new JAXRException(ResourceBundle.getBundle("com/sun/xml/registry/uddi/LocalStrings").getString("UDDIMapper:No_Credentials_present"));
}
saveBusiness.setAuthInfo(authInfo);
return getProcessor().processRequestJAXB(saveBusiness, true, null, SAVE);
}
private String getAuthInfo() throws JAXRException {
String authInfo = getConnection().getAuthToken();
if ( (authInfo == null) || (tokenExpired() == true) ){
String result = getAuthorizationToken(getConnection().getAuthCreds());
if (result == null) result="";
getConnection().setAuthToken(result.toCharArray());
getConnection().setAuthTokenTimestamp(timeStamp());
return result;
}
return authInfo;
}
private long timeStamp() {
return System.currentTimeMillis();
}
private boolean tokenExpired(){
logger.finest("Last Token time " + tokenTime);
long diffTime = timeStamp() - getConnection().getAuthTokenTimestamp();
logger.finest("Elapsed time between authTokens " + diffTime);
long defaultTimeout = getConnection().getTokenTimeout();
logger.finest("DefaultTimeout " + defaultTimeout);
if (diffTime > defaultTimeout)
return true;
else return false;
}
BulkResponse saveServices(Collection services)
throws JAXRException {
SaveService saveService = null;
saveService = objFactory.createSaveService();
saveService.setGeneric(UDDIVERSION);
String authInfo = null;
Collection businessServices =
services2BusinessServicesCollection(services, true);
if (businessServices != null) {
saveService.getBusinessService().addAll(businessServices);
} else {
throw new JAXRException(ResourceBundle.getBundle("com/sun/xml/registry/uddi/LocalStrings").getString("UDDIMapper:No_Service_Information_to_Save_or_Update"));
}
authInfo = getAuthInfo();
if (authInfo == null) {
throw new JAXRException(ResourceBundle.getBundle("com/sun/xml/registry/uddi/LocalStrings").getString("UDDIMapper:No_Credential_Infomation"));
}
saveService.setAuthInfo(authInfo);
return getProcessor().processRequestJAXB(saveService, true, null, SAVE);
}
BulkResponse saveServiceBindings(Collection serviceBindings)
throws JAXRException {
boolean publish = true;
SaveBinding saveBindings = null;
saveBindings = objFactory.createSaveBinding();
saveBindings.setGeneric(UDDIVERSION);
String authInfo = null;
Collection bindingTemplates =
serviceBindings2BindingTemplatesCollection(serviceBindings, publish);
if (bindingTemplates != null) {
saveBindings.getBindingTemplate().addAll(bindingTemplates);
} else {
throw new JAXRException(ResourceBundle.getBundle("com/sun/xml/registry/uddi/LocalStrings").getString("UDDIMapper:No_Binding_Information_to_be_saved_or_updated"));
}
authInfo = getAuthInfo();
if (authInfo == null) {
throw new JAXRException(ResourceBundle.getBundle("com/sun/xml/registry/uddi/LocalStrings").getString("UDDIMapper:No_Credential_or_Invalid_Credential_Information"));
}
saveBindings.setAuthInfo(authInfo);
return getProcessor().processRequestJAXB(saveBindings, true, null, SAVE);
}
BulkResponse saveConcepts(Collection concepts)
throws JAXRException {
boolean publish = true;
SaveTModel saveTModel = null;
saveTModel = objFactory.createSaveTModel();
saveTModel.setGeneric(UDDIVERSION);
Collection tModels =
concepts2TModels(concepts, publish);
if ((tModels != null) && (!tModels.isEmpty())) {
saveTModel.getTModel().addAll(tModels);
} else {
throw new JAXRException(ResourceBundle.getBundle("com/sun/xml/registry/uddi/LocalStrings").getString("UDDIMapper:No_Concept_Information_or_Invalid_Concept_Information"));
}
String authInfo = getAuthInfo();
if (authInfo == null) {
throw new JAXRException(ResourceBundle.getBundle("com/sun/xml/registry/uddi/LocalStrings").getString("UDDIMapper:No_Credentials_or_Invalid_Credentials"));
}
saveTModel.setAuthInfo(authInfo);
return getProcessor().processRequestJAXB(saveTModel, true, null, SAVE);
}
BulkResponse saveClassificationSchemes(Collection schemes)
throws JAXRException {
boolean publish=true;
SaveTModel saveTModel = null;
saveTModel = objFactory.createSaveTModel();
saveTModel.setGeneric(UDDIVERSION);
Collection tModels =
classificationSchemes2TModels(schemes, publish);
if ((tModels != null) && (!tModels.isEmpty())) {
saveTModel.getTModel().addAll(tModels);
} else {
throw new JAXRException(ResourceBundle.getBundle("com/sun/xml/registry/uddi/LocalStrings").getString("UDDIMapper:No_Concept_Information_or_Invalid_Concept_Information"));
}
String authInfo = getAuthInfo();
if (authInfo == null) {
throw new JAXRException(ResourceBundle.getBundle("com/sun/xml/registry/uddi/LocalStrings").getString("UDDIMapper:No_Credentials_or_Invalid_Credentials"));
}
saveTModel.setAuthInfo(authInfo);
return getProcessor().processRequestJAXB(saveTModel, true, null, SAVE);
}
BulkResponse deleteOrganizations(Collection organizationKeys)
throws JAXRException {
DeleteBusiness deleteBusiness = null;
deleteBusiness = objFactory.createDeleteBusiness();
deleteBusiness.setGeneric(UDDIVERSION);
Collection keys = keys2Keys(organizationKeys);
if ((keys != null) && (!keys.isEmpty())) {
deleteBusiness.getBusinessKey().addAll(keys);
} else {
throw new JAXRException(ResourceBundle.getBundle("com/sun/xml/registry/uddi/LocalStrings").getString("UDDIMapper:No_Business_Identified_to_Delete"));
}
String authInfo = getAuthInfo();
if (authInfo == null) {
throw new JAXRException(ResourceBundle.getBundle("com/sun/xml/registry/uddi/LocalStrings").getString("UDDIMapper:No_Credentials_or_Invalid_Credentials"));
}
deleteBusiness.setAuthInfo(authInfo);
return getProcessor().processRequestJAXB(deleteBusiness, true, organizationKeys, DELETE);
}
BulkResponse deleteServices(Collection serviceKeys) throws JAXRException {
DeleteService deleteService = null;
deleteService = objFactory.createDeleteService();
deleteService.setGeneric(UDDIVERSION);
Collection keys = keys2Keys(serviceKeys);
if ((keys != null) && (!keys.isEmpty())) {
deleteService.getServiceKey().addAll(keys);
} else {
throw new JAXRException(ResourceBundle.getBundle("com/sun/xml/registry/uddi/LocalStrings").getString("UDDIMapper:No_Service_Keys_supplied_for_deletion"));
}
String authInfo = getAuthInfo();
if (authInfo == null) {
throw new JAXRException(ResourceBundle.getBundle("com/sun/xml/registry/uddi/LocalStrings").getString("UDDIMapper:Invalid_Credential_Information"));
}
deleteService.setAuthInfo(authInfo);
return getProcessor().processRequestJAXB(deleteService, true, serviceKeys, DELETE);
}
BulkResponse deleteServiceBindings(Collection bindingKeys) throws JAXRException {
DeleteBinding deleteBinding = null;
deleteBinding = objFactory.createDeleteBinding();
deleteBinding.setGeneric(UDDIVERSION);
Collection keys = keys2Keys(bindingKeys);
if ((keys != null) && (!keys.isEmpty())) {
deleteBinding.getBindingKey().addAll(keys);
} else {
throw new JAXRException(ResourceBundle.getBundle("com/sun/xml/registry/uddi/LocalStrings").getString("UDDIMapper:No_Service_Binding_Keys_supplied_for_deletion"));
}
String authInfo = getAuthInfo();
if (authInfo == null) {
throw new JAXRException(ResourceBundle.getBundle("com/sun/xml/registry/uddi/LocalStrings").getString("UDDIMapper:Invalid_Credential_Information"));
}
deleteBinding.setAuthInfo(authInfo);
return getProcessor().processRequestJAXB(deleteBinding, true, bindingKeys, DELETE);
}
BulkResponse deleteConcepts(Collection conceptKeys) throws JAXRException {
DeleteTModel deleteTModel = null;
deleteTModel = objFactory.createDeleteTModel();
deleteTModel.setGeneric(UDDIVERSION);
Collection keys = keys2Keys(conceptKeys);
if ((keys != null) && (!keys.isEmpty())) {
deleteTModel.getTModelKey().addAll(keys);
} else {
throw new JAXRException(ResourceBundle.getBundle("com/sun/xml/registry/uddi/LocalStrings").getString("UDDIMapper:No_Service_Binding_Keys_supplied_for_deletion"));
}
String authInfo = getAuthInfo();
if (authInfo == null) {
throw new JAXRException(ResourceBundle.getBundle("com/sun/xml/registry/uddi/LocalStrings").getString("UDDIMapper:Invalid_Credential_Information"));
}
deleteTModel.setAuthInfo(authInfo);
return getProcessor().processRequestJAXB(deleteTModel, true, conceptKeys, DELETE);
}
BulkResponse deleteAssociations(Collection associationKeys) throws JAXRException {
DeletePublisherAssertions publisherAssertions = null;
publisherAssertions = objFactory.createDeletePublisherAssertions();
publisherAssertions.setGeneric(UDDIVERSION);
Collection assertions =
associationKeys2PublisherAssertions(associationKeys);
publisherAssertions.getPublisherAssertion().addAll(assertions);
String authInfo = getAuthInfo();
if (authInfo == null) {
throw new JAXRException(ResourceBundle.getBundle("com/sun/xml/registry/uddi/LocalStrings").getString("UDDIMapper:Invalid_Credential_Information"));
}
publisherAssertions.setAuthInfo(authInfo);
//return dispositionReport
return getProcessor().processRequestJAXB(publisherAssertions, true, associationKeys, DELETE);
}
/**
*
* @param
* @return
* @exception
*
*/
/**
* Finds all Services that match ALL of the criteria specified by the parameters of this call.
* This is a Logical AND operation between all non-null parameters.
*
* - Capability Level: 0
*
*
* @param orgKey Key identifying an Organization. Required for UDDI providers.
*/
BulkResponse findServices(Key orgKey,
Collection findQualifiers,
Collection namePatterns,
Collection classifications,
Collection specifications
) throws JAXRException {
FindService findService = null;
boolean parameterSet = false;
findService = objFactory.createFindService();
findService.setGeneric(UDDIVERSION);
// findService.setMaxRows(150);
//todo:maxrows?
FindQualifiers fQualifiers =
strings2FindQualifiers(findQualifiers);
if (fQualifiers != null)
findService.setFindQualifiers(fQualifiers);
//todo: key can now be null
String key = key2Key(orgKey);
findService.setBusinessKey(key);
Collection names = namePatterns2Names(namePatterns, false);
CategoryBag cbag =
classifications2CategoryBag(classifications);
TModelBag tbag =
concepts2TModelBag(specifications);
if ((names != null) && (!names.isEmpty())) {
findService.getName().addAll(names);
parameterSet = true;
}
if (cbag != null) {
findService.setCategoryBag(cbag);
parameterSet = true;
}
if (tbag != null) {
findService.setTModelBag(tbag);
parameterSet = true;
}
if (!parameterSet) {
throw new JAXRException( ResourceBundle.getBundle("com/sun/xml/registry/uddi/LocalStrings").getString("UDDIMapper:No_Find_Criteria_Specified") );
}
return getProcessor().processRequestJAXB(findService, false, null, FIND);
}
/**
* Finds all ServiceBindings that match ALL of the criteria specified by the parameters of this call.
* This is a Logical AND operation between all non-null parameters.
*
*
* - Capability Level: 0
*
* @param serviceKey Key identifying a Service. Required for UDDI providers.
*
*
* @return BulkResponse containing Collection of ServiceBindings
*/
BulkResponse findServiceBindings(
Key serviceKey,
Collection findQualifiers,
Collection classifications,
Collection specifications
) throws JAXRException {
FindBinding findBinding = null;
boolean parameterSet = false;
findBinding = objFactory.createFindBinding();
findBinding.setGeneric(UDDIVERSION);
String maxrows = this.getConnection().getMaxRows();
if (maxrows != null) {
int rows = Integer.parseInt(maxrows);
findBinding.setMaxRows(rows);
}
FindQualifiers fQualifiers =
strings2FindQualifiers(findQualifiers );
if (fQualifiers != null)
findBinding.setFindQualifiers(fQualifiers);
String key = key2Key(serviceKey);
if (key == null)
throw new JAXRException( ResourceBundle.getBundle("com/sun/xml/registry/uddi/LocalStrings").getString("UDDIMapper:Service_Key_must_be_specified") );
else {
findBinding.setServiceKey(key);
}
TModelBag tbag =
concepts2TModelBag(specifications);
if (tbag != null) {
findBinding.setTModelBag(tbag);
parameterSet = true;
}
if (!parameterSet) {
throw new JAXRException(ResourceBundle.getBundle("com/sun/xml/registry/uddi/LocalStrings").getString("UDDIMapper:No_Find_Criteria_Specified") );
}
return getProcessor().processRequestJAXB(findBinding, false, null, FIND);
}
BulkResponse findConcepts(
Collection findQualifiers,
Collection namePatterns,
Collection classifications,
Collection externalIdentifiers,
Collection externalLinks ) throws JAXRException {
FindTModel findTModel = null;
boolean parameterSet = false;
findTModel = objFactory.createFindTModel();
findTModel.setGeneric(UDDIVERSION);
String maxrows = this.getConnection().getMaxRows();
if (maxrows != null) {
int rows = Integer.parseInt(maxrows);
findTModel.setMaxRows(rows);
}
// can always transform this
FindQualifiers fQualifiers =
strings2FindQualifiers(findQualifiers);
if (fQualifiers != null)
findTModel.setFindQualifiers(fQualifiers);
Collection names =
namePatterns2Names(namePatterns, false);
CategoryBag cbag =
classifications2CategoryBag(classifications);
IdentifierBag ibag =
externalIdentifiers2IdentifierBag(externalIdentifiers);
if (cbag != null) {
findTModel.setCategoryBag(cbag);
parameterSet = true;
}
if (ibag != null) {
findTModel.setIdentifierBag(ibag);
parameterSet = true;
}
ArrayList responses = new ArrayList();
int len = names.size();
if ((names != null) && (len > 0)) {
for (int i = 0; i 0) {
Iterator siter = schemes.iterator();
while (siter.hasNext()) {
try {
ClassificationScheme scheme =
(ClassificationScheme) siter.next();
if (scheme != null) {
objectManager.addObjectToCache((RegistryObjectImpl)scheme,
this.service.getServiceId());
}
} catch (ClassCastException cce) {
logger.log(Level.SEVERE, cce.getMessage(), cce);
}
response.setCollection(schemes);
}
responses.add(response);
}
}
}
//ok we are here so lets see if we can find them in the registry
BulkResponse br = null;
FindTModel findTModel = null;
boolean parameterSet = false;
Document doc = null;
findTModel = objFactory.createFindTModel();
findTModel.setGeneric(UDDIVERSION);
String maxrows = this.getConnection().getMaxRows();
if (maxrows != null) {
int rows = Integer.parseInt(maxrows);
findTModel.setMaxRows(rows);
}
// can always transform this
FindQualifiers fQualifiers =
strings2FindQualifiers(findQualifiers);
if (fQualifiers != null)
findTModel.setFindQualifiers(fQualifiers);
Collection names =
namePatterns2Names(namePatterns, false);
CategoryBag cbag =
classifications2CategoryBag(classifications);
if (cbag != null) {
findTModel.setCategoryBag(cbag);
parameterSet = true;
}
int len = names.size();
if ((names != null) && (len > 0)) {
for (int i = 0; i 1) {
throw new InvalidRequestException(java.util.ResourceBundle.getBundle("com/sun/xml/registry/uddi/LocalStrings").getString("Multiple_Schemes_matching_name_pattern"));
}
Iterator iter = schemes.iterator();
while (iter.hasNext()) {
try {
ClassificationScheme cScheme =
(ClassificationScheme)iter.next();
return cScheme;
} catch (ClassCastException cce) {
logger.log(Level.SEVERE, cce.getMessage(), cce);
throw new UnexpectedObjectException(java.util.ResourceBundle.getBundle("com/sun/xml/registry/uddi/LocalStrings").getString("Expected_ClassificationScheme"), cce);
}
}
}
}
return null;
}
/**
* Find a Concept based on the path specified.
* If specified path matches more than one ClassificationScheme then
* the one that is most general (higher in the concept hierarchy) is returned.
*
*
* @param path Is an XPATH expression that identifies the Concept.
*
*/
Concept findConceptByPath(String path) throws JAXRException {
if (path != null){
return getConceptsManager().findConceptByPath(path);
}
return null;
}
public Collection getChildConcepts(ClassificationScheme scheme) throws JAXRException {
Collection concepts = null;
if (((ClassificationSchemeImpl)scheme).isPredefined()){
concepts =
getConceptsManager().getChildConcepts(scheme);
}
return concepts;
}
KeyedReference associationType2KeyedReference(Object associationType)
throws JAXRException {
if (associationType == null)
return null;
String typeName = null;
String typeValue = null;
if (associationType instanceof Concept) {
typeName = ((Concept)associationType).getName().getValue();
typeValue = ((Concept)associationType).getValue();
} else if (associationType instanceof String){
typeName = (String)associationType;
typeValue = (String)associationType;
}
String keyName = null;
String keyValue = null;
if (typeValue.equalsIgnoreCase(EQUIVALENT_TO)) {
keyName = IDENTITY;
keyValue = IDENTITY;
} else if (typeValue.equalsIgnoreCase(RELATES_TO)) {
keyName = PEER_TO_PEER;
keyValue = PEER_TO_PEER;
} else if (typeValue.equalsIgnoreCase(HAS_CHILD)) {
keyName = PARENT_TO_CHILD;
keyValue = PARENT_TO_CHILD;
} else {
keyName = typeName;
keyValue = typeValue;
}
KeyedReference keyedReference = null;
keyedReference = objFactory.createKeyedReference();
keyedReference.setTModelKey(RELATIONSHIPS);
if (keyName != null)
keyedReference.setKeyName(keyName);
else throw new JAXRException(ResourceBundle.getBundle("com/sun/xml/registry/uddi/LocalStrings").getString("UDDIMapper:Association_Type_required_to_save_Association_to_Registry"));
//need to have keyValue set otherwise don't use KeyedRef
if (keyValue != null)
keyedReference.setKeyValue(keyValue);
else throw new JAXRException(ResourceBundle.getBundle("com/sun/xml/registry/uddi/LocalStrings").getString("UDDIMapper:Association_Type_required_to_save_Association_to_Registry"));
return keyedReference;
}
Collection associationTypes2KeyedReferences(Collection associationTypes)
throws JAXRException {
Collection keyedReferences = new ArrayList();
if (associationTypes != null) {
Iterator iter = associationTypes.iterator();
while (iter.hasNext()) {
KeyedReference ref =
associationType2KeyedReference(iter.next());
if (ref != null)
keyedReferences.add(ref);
}
}
return keyedReferences;
}
/**
*
* @param
* @return
* @exception
*
*/
BulkResponse getOrganizations(Collection orgKeys) throws JAXRException {
GetBusinessDetail detail = null;
detail = objFactory.createGetBusinessDetail();
detail.setGeneric(UDDIVERSION);
Collection keys = keys2Keys(orgKeys);
if ((keys != null) && (!keys.isEmpty())) {
detail.getBusinessKey().addAll(keys);
} else throw new JAXRException(ResourceBundle.getBundle("com/sun/xml/registry/uddi/LocalStrings").getString("UDDIMapper:No_Organization_Keys_supplied"));
return getProcessor().processRequestJAXB(detail, false, orgKeys, FIND);
}
/**
*
* @param
* @return
* @exception
*
*/
BulkResponse getServices(Collection orgKeys) throws JAXRException {
GetServiceDetail detail = null;
detail = objFactory.createGetServiceDetail();
detail.setGeneric(UDDIVERSION);
Collection keys = keys2Keys(orgKeys);
if ((keys != null) && (!keys.isEmpty())) {
detail.getServiceKey().addAll(keys);
} else throw new JAXRException(ResourceBundle.getBundle("com/sun/xml/registry/uddi/LocalStrings").getString("UDDIMapper:No_service_Keys_Supplied"));
return getProcessor().processRequestJAXB(detail, false, null, FIND);
}
/**
*
* @param
* @return
* @exception
*
*/
BulkResponse getServiceBindings(Collection bindingKeys) throws JAXRException {
GetBindingDetail detail = null;
detail = objFactory.createGetBindingDetail();
detail.setGeneric(UDDIVERSION);
Collection keys = keys2Keys(bindingKeys);
if ((keys != null) && (!keys.isEmpty())) {
detail.getBindingKey().addAll(keys);
} else throw new JAXRException(ResourceBundle.getBundle("com/sun/xml/registry/uddi/LocalStrings").getString("UDDIMapper:No_ServiceBinding_Keys_supplied"));
return getProcessor().processRequestJAXB(detail, false, null, FIND);
}
/**
*
* @param
* @return
* @exception
*
*/
BulkResponse getConcepts(Collection conceptKeys) throws JAXRException {
GetTModelDetail detail = null;
detail = objFactory.createGetTModelDetail();
detail.setGeneric(UDDIVERSION);
Collection keys = keys2Keys(conceptKeys);
if ((keys != null) && (!keys.isEmpty())) {
detail.getTModelKey().addAll(keys);
} else throw new JAXRException(ResourceBundle.getBundle("com/sun/xml/registry/uddi/LocalStrings").getString("UDDIMapper:No_Concept_keys_supplied"));
return getProcessor().processRequestJAXB(detail, false, null, FIND);
}
/**
*
* Transforms a Collection of JAXR ExternalIdentifiers
* to a UDDI IdentifierBag
*
* @param identifiers Collection of JAXR ExternalIdentifiers
* @return IdentifierBag Transformed UDDI identifier bag
* @exception JAXRException
*
*/
IdentifierBag externalIdentifiers2IdentifierBag(Collection identifiers)
throws UnexpectedObjectException, JAXRException {
IdentifierBag ibag = null;
if ((identifiers != null) && (!identifiers.isEmpty())) {
ibag = objFactory.createIdentifierBag();
try {
ArrayList keyedRefs = new ArrayList();
Iterator iter = identifiers.iterator();
while(iter.hasNext()){
KeyedReference kref =
externalIdentifier2KeyedReference((ExternalIdentifier)iter.next());
if (kref != null){
keyedRefs.add(kref);
}
}
ibag.getKeyedReference().addAll(keyedRefs);
} catch (ClassCastException cce) {
logger.log(Level.WARNING, cce.getMessage(), cce);
throw new UnexpectedObjectException(ResourceBundle.getBundle("com/sun/xml/registry/uddi/LocalStrings").getString("UDDIMapper:Expected_ExternalIdentifier"), cce);
}
}
return ibag;
}
/**
*
* Transforms a Collection of JAXR Organizations to UDDI BusinessEntities
*
*
* @param organizations Collection of organizations to transform
* @return BusinessEntity[]
* @exception JAXRException
*
*/
Collection organizations2BusinessEntities(Collection orgs, boolean publish)
throws JAXRException {
ArrayList entities = new ArrayList();
if ((orgs != null) && (!orgs.isEmpty())) {
Iterator iter = orgs.iterator();
try {
while (iter.hasNext()){
BusinessEntity businessEntity =
organization2BusinessEntity((OrganizationImpl)iter.next(), publish);
if (businessEntity != null) {
entities.add(businessEntity);
}
}
} catch (ClassCastException cce) {
logger.log(Level.WARNING, cce.getMessage(), cce);
throw new UnexpectedObjectException(ResourceBundle.getBundle("com/sun/xml/registry/uddi/LocalStrings").getString("UDDIMapper:Expected_Organization"), cce);
}
}
return entities;
}
/**
*
* Transforms a Collection of JAXR Organizations to UDDI BusinessEntities
*
*
* @param organizations A JAXR organizations to transform
* @return BusinessEntity The transformed UDDI BusinessEntity
* @exception JAXRException
*
*/
BusinessEntity organization2BusinessEntity(OrganizationImpl org, boolean publish)
throws JAXRException {
BusinessEntity entity = null;
if (org != null) {
entity = objFactory.createBusinessEntity();
//get all the Org Data Members
//use statics
Key key = org.getKey();
Slot authName = org.getSlot("authorizedName");
Slot operator = org.getSlot("operator");
Collection names = getNames(org, publish);
Collection descriptions = getDescriptions(org, publish);
Collection users = org.getUsers();
User primaryContact = org.getPrimaryContact();
Collection services = org.getServices();
Collection externalIdentifiers =
org.getExternalIdentifiers();
Collection classifications =
org.getClassifications();
Collection externalLinks = org.getExternalLinks();
// let's do the easy transformations first
//tod: - look at spec - key can now be null I think
if (key != null) {
String id = key.getId();
if (id != null)
entity.setBusinessKey(id);
} else entity.setBusinessKey("");
//need to check if this is save or update/replace
if (names != null) {
entity.getName().addAll(names);
} else throw new JAXRException(ResourceBundle.getBundle("com/sun/xml/registry/uddi/LocalStrings").getString("UDDIMapper:The_Organization_name_must_be_specified_to_save_an_Organization"));
if (descriptions != null) {
entity.getDescription().addAll(descriptions);
}
//Deal with Slots - need slot util method
if (authName != null) {
Collection values = authName.getValues();
//todo: is values ever going to be null?
//should only be 1 auth name
if ((values !=null) && (!values.isEmpty())) {
String authNameString = (String) values.toArray()[0];
if (authNameString != null)
entity.setAuthorizedName(authNameString);
}
}
if (operator != null) {
Collection values = operator.getValues();
if ((values !=null) && (!values.isEmpty())) {
//should only be 1 auth name
String operatorString = (String) values.toArray()[0];
if (operatorString != null)
entity.setOperator(operatorString);
}
}
if ((externalIdentifiers != null) && (!externalIdentifiers.isEmpty())) {
IdentifierBag ibag =
externalIdentifiers2IdentifierBag(externalIdentifiers);
if (ibag != null)
entity.setIdentifierBag(ibag);
}
if ((classifications != null) && (!classifications.isEmpty())) {
CategoryBag cbag =
classifications2CategoryBag(classifications);
if (cbag != null)
entity.setCategoryBag(cbag);
}
if ((externalLinks != null) && (!externalLinks.isEmpty())) {
DiscoveryURLs dUrl =
externalLinks2DiscoveryURLs(externalLinks);
if (dUrl != null)
entity.setDiscoveryURLs(dUrl);
}
if ((services != null) && (!services.isEmpty())) {
BusinessServices bServices =
services2BusinessServices(services, publish);
if (bServices != null)
entity.setBusinessServices(bServices);
}
if ((users != null) && (!users.isEmpty())) {
Contacts contacts = users2Contacts(users, publish);
if (contacts != null)
entity.setContacts(contacts);
}
}
return entity;
}
/**
*
* Transforms an IdentifierBag of UDDI Identifiers to a Collection
* of JAXR ExternalIdentifiers
*
* @param ibag Collection of UDDI identifiers
* @return Collection Colection of JAXR ExternalIdentifiers
* @exception JAXRException
*
*/
Collection identifierBag2ExternalIdentifiers(IdentifierBag ibag) throws JAXRException {
Collection identifiers = null;
if (ibag != null) {
identifiers = new ArrayList();
Collection keyedReference =
ibag.getKeyedReference();
Iterator iter = keyedReference.iterator();
while (iter.hasNext()) {
ExternalIdentifier identifier =
keyedReference2ExternalIdentifier((KeyedReference)iter.next());
if (identifier != null) {
identifiers.add(identifier);
}
}
}
return identifiers;
}
/**
*
* Transforms a collection of JAXR Services to UDDI BusinessServices
*
*
* @param services Collection of JAXR Services
* @return BusinessServices Essentially a UDDI Bag containing a
* list of BusinessService members
* @exception JAXRException
*
*/
BusinessServices services2BusinessServices(Collection services, boolean publish)
throws JAXRException {
BusinessServices businessServices = null;
if (services != null) {
businessServices = objFactory.createBusinessServices();
try {
Iterator iter = services.iterator();
while (iter.hasNext()){
BusinessService businessService =
service2BusinessService((Service)iter.next(), publish);
if (businessService != null)
businessServices.getBusinessService().add(businessService);
}
} catch (ClassCastException cce) {
logger.log(Level.WARNING, cce.getMessage(), cce);
throw new UnexpectedObjectException(ResourceBundle.getBundle("com/sun/xml/registry/uddi/LocalStrings").getString("UDDIMapper:Expected_Service"), cce);
}
}
return businessServices;
}
Collection services2BusinessServicesCollection(Collection services, boolean publish) throws JAXRException {
Collection businessServices = null;
if (services != null) {
businessServices = new ArrayList();
try {
Iterator iter = services.iterator();
while (iter.hasNext()){
BusinessService businessService =
service2BusinessService((Service)iter.next(), publish);
if (businessService != null)
businessServices.add(businessService);
}
} catch (ClassCastException cce) {
logger.log(Level.WARNING, cce.getMessage(), cce);
throw new UnexpectedObjectException(ResourceBundle.getBundle("com/sun/xml/registry/uddi/LocalStrings").getString("UDDIMapper:Expected_Service"), cce);
}
}
return businessServices;
}
BusinessService service2BusinessService(Service service, boolean publish) throws JAXRException {
BusinessService businessService = null;
if (service != null) {
businessService = objFactory.createBusinessService();
//get the business key
Organization org = service.getProvidingOrganization();
if (org != null) {
Key key = org.getKey();
if (key != null) {
String id = key.getId();
if (id != null) {
businessService.setBusinessKey(id);
logger.finest("Setting business key");
logger.finest("key" + key);
}
} else {
//todo: check spec can be null I think
logger.finest("Organization key is null");
}
} else {
logger.warning(ResourceBundle.getBundle("com/sun/xml/registry/uddi/LocalStrings").getString("UDDIMapper:Org_is_null"));
}
Key sKey = service.getKey();
String sKeyString = null;
if (sKey != null)
sKeyString = sKey.getId();
Collection name = getNames(service, publish);
Collection description = getDescriptions(service, publish);
Collection sbindings = service.getServiceBindings();
Collection classifications = service.getClassifications();
if (sKeyString != null)
businessService.setServiceKey(sKeyString);
else
businessService.setServiceKey("");
if (name != null)
businessService.getName().addAll(name);
if (description != null)
businessService.getDescription().addAll(description);
CategoryBag cbag =
classifications2CategoryBag(classifications);
if (cbag != null)
businessService.setCategoryBag(cbag);
BindingTemplates bindingTemplates =
serviceBindings2BindingTemplates(sbindings, publish);
if (bindingTemplates != null)
businessService.setBindingTemplates(bindingTemplates);
}
return businessService;
}
BindingTemplates serviceBindings2BindingTemplates(Collection sbindings, boolean publish)
throws JAXRException {
BindingTemplates templates = null;
if (sbindings != null) {
templates = objFactory.createBindingTemplates();
Iterator iter = sbindings.iterator();
try {
while (iter.hasNext()){
BindingTemplate bTemplate =
serviceBinding2BindingTemplate((ServiceBinding)iter.next(), publish);
if (bTemplate != null)
templates.getBindingTemplate().add(bTemplate);
}
} catch (ClassCastException cce) {
logger.log(Level.WARNING, cce.getMessage(), cce);
throw new UnexpectedObjectException(ResourceBundle.getBundle("com/sun/xml/registry/uddi/LocalStrings").getString("UDDIMapper:Expected_ServiceBinding"), cce);
}
}
return templates;
}
Collection serviceBindings2BindingTemplatesCollection(Collection sbindings, boolean publish)
throws JAXRException {
Collection templates = null;
if (sbindings != null) {
templates = new ArrayList();
Iterator iter = sbindings.iterator();
try {
while (iter.hasNext()){
BindingTemplate bTemplate =
serviceBinding2BindingTemplate((ServiceBinding)iter.next(),publish);
if (bTemplate != null)
templates.add(bTemplate);
}
} catch (ClassCastException cce) {
logger.log(Level.WARNING, cce.getMessage(), cce);
throw new UnexpectedObjectException(ResourceBundle.getBundle("com/sun/xml/registry/uddi/LocalStrings").getString("UDDIMapper:Expected_ServiceBinding"), cce);
}
}
return templates;
}
BindingTemplate serviceBinding2BindingTemplate(ServiceBinding sbinding, boolean publish)
throws JAXRException {
BindingTemplate template = null;
if (sbinding != null) {
String bKeyString = null;
template = objFactory.createBindingTemplate();
//todo:why can't I use interfaces?
Key bindingKey = sbinding.getKey();
if (bindingKey != null)
bKeyString = bindingKey.getId();
Service service = sbinding.getService();
if (service != null) {
Key key = service.getKey();
if (key != null) {
String id = key.getId();
if (id != null) {
template.setServiceKey(id);
} else
template.setServiceKey("");
}
} else {
throw new JAXRException(ResourceBundle.getBundle("com/sun/xml/registry/uddi/LocalStrings").getString("UDDIMapper:A_ServiceBinding_must_be_associated_with_a_service."));
}
//todo - can't an serviceBinding have many descriptions?
Description description = getDescription(sbinding);
String accessURI = sbinding.getAccessURI();
//do the easy ones first
if (bKeyString != null)
template.setBindingKey(bKeyString);
else
template.setBindingKey("");
if (description != null)
template.getDescription().add(description);
ServiceBinding targetBinding =
sbinding.getTargetBinding();
if ((accessURI == null) && (targetBinding == null))
throw new JAXRException(ResourceBundle.getBundle("com/sun/xml/registry/uddi/LocalStrings").getString("UDDIMapper:AccessURI_or_targetBinding_needs_to_be_set_on_the_ServiceBinding_-_neither_is_set"));
AccessPoint accessPoint = null;
if (accessURI != null) {
accessPoint = objFactory.createAccessPoint();
accessPoint.setValue(accessURI);
//get the URLType Concept
Collection classifications = sbinding.getClassifications();
//search for classification with concept specificed
URLType urlType = null;
Iterator citer = classifications.iterator();
//this is if the userer has set the urlType
boolean urlTypeSetByUser = false;
while (citer.hasNext()) {
Classification classification = (Classification)citer.next();
Concept concept = classification.getConcept();
if (concept != null) {
//look at the concepts classificationScheme
ClassificationScheme cScheme = concept.getClassificationScheme();
InternationalString name = cScheme.getName();
String nameValue = null;
if (name != null){
nameValue = name.getValue();
}
if (cScheme != null){
if (nameValue.equalsIgnoreCase("URLType")) {
//then we want this concepts value
String conceptValue = concept.getValue();
if (conceptValue.indexOf("https") != -1){
urlType = URLType.HTTPS;
} else if (conceptValue.indexOf("http") != -1) {
urlType = URLType.HTTP;
} else if (conceptValue.indexOf("ftp") != -1) {
urlType = URLType.FTP;
} else if (conceptValue.indexOf("phone") != -1){
urlType = URLType.PHONE;
} else if (conceptValue.indexOf("mailto") != -1) {
urlType = URLType.MAILTO;
} else {
urlType = URLType.OTHER;
}
urlTypeSetByUser = true;
break;
}
}
}
}
if (!urlTypeSetByUser) {
urlType = helper.parseUrlForUrlType(accessURI);
}
if (urlType != null)
accessPoint.setURLType(urlType);
else
accessPoint.setURLType(URLType.OTHER);
template.setAccessPoint(accessPoint);
} else {
if (targetBinding != null) {
HostingRedirector redirector =
targetBinding2HostingRedirector(targetBinding);
if (redirector != null) {
template.setHostingRedirector(redirector);
}
}
}
Collection specificationLinks = sbinding.getSpecificationLinks();
TModelInstanceDetails tModelInstanceDetails= null;
if (specificationLinks != null) {
Collection tInstanceInfos =
specificationLinks2TModelInstanceInfos(specificationLinks, publish);
tModelInstanceDetails = null;
tModelInstanceDetails = objFactory.createTModelInstanceDetails();
if (tInstanceInfos != null)
tModelInstanceDetails.getTModelInstanceInfo().addAll(tInstanceInfos);
template.setTModelInstanceDetails(tModelInstanceDetails);
}
}
return template;
}
Collection
specificationLinks2TModelInstanceInfos(Collection specificationLinks, boolean publish)
throws JAXRException {
Collection tModelInstanceInfos = null;
if (specificationLinks != null) {
tModelInstanceInfos = new ArrayList();
Iterator iter = specificationLinks.iterator();
while (iter.hasNext()) {
//get the data members
SpecificationLink specLink = null;
try {
specLink = (SpecificationLink) iter.next();
} catch (ClassCastException cce) {
logger.log(Level.WARNING, cce.getMessage(), cce);
throw new UnexpectedObjectException(ResourceBundle.getBundle("com/sun/xml/registry/uddi/LocalStrings").getString("UDDIMapper:Expected_SpecificationLink"), cce);
}
RegistryObject ro = specLink.getSpecificationObject();
//TBXD - collection
InternationalString usageDescription = specLink.getUsageDescription();
Collection usageParms = specLink.getUsageParameters();
Collection externalLinks = specLink.getExternalLinks();
TModelInstanceInfo tMInstance = null;
tMInstance = objFactory.createTModelInstanceInfo();
if (ro != null) { //isolate
Key key = ro.getKey();
if (key != null) {
String id = key.getId();
if (id != null) {
tMInstance.setTModelKey(id);
}
} else {
throw new JAXRException(ResourceBundle.getBundle("com/sun/xml/registry/uddi/LocalStrings").getString("UDDIMapper:The_Concept_Key_defining_the_Technical_interface_of_this_Service_Binding_must_be_supplied."));
}
} else {
throw new JAXRException(ResourceBundle.getBundle("com/sun/xml/registry/uddi/LocalStrings").getString("UDDIMapper:The_Concept_defining_the_Technical_interface_of_this_Service_Binding_must_be_supplied."));
}
InstanceDetails details = null;
if ((usageDescription != null) || (usageParms != null) ||
(externalLinks != null)) {
details = null;
details = objFactory.createInstanceDetails();
Collection desc = internationalString2Descriptions(usageDescription, publish);
if (usageDescription != null) {
details.getDescription().addAll(desc);
}
if (usageParms != null) {
Iterator iterb = usageParms.iterator();
if (iterb.hasNext()) {
details.setInstanceParms((String) iterb.next());
}
}
if (externalLinks != null) {
Iterator iterc = externalLinks.iterator();
if (iterc.hasNext()) {
OverviewDoc doc =
externalLink2OverviewDoc(
(ExternalLink) iterc.next(), publish);
if (doc != null)
details.setOverviewDoc(doc);
}
}
}
if (details != null) {
tMInstance.setInstanceDetails(details);
tModelInstanceInfos.add(tMInstance);
}
}
}
return tModelInstanceInfos;
}
HostingRedirector targetBinding2HostingRedirector(ServiceBinding tBinding)
throws JAXRException {
HostingRedirector redirector = null;
if (tBinding != null) {
redirector = null;
redirector = objFactory.createHostingRedirector();
Key key = tBinding.getKey();
if (key != null){
String keyString = key.getId();
redirector.setBindingKey(keyString);
} else
redirector=null;
}
return redirector;
}
ServiceBinding hostingRedirector2TargetBinding(HostingRedirector redirector)
throws JAXRException{
ServiceBinding targetBinding = null;
String key = redirector.getBindingKey();
if (key != null) {
//look in cache for serviceBinding
targetBinding = (ServiceBinding)
objectManager.fetchObjectFromCache(key);
if (targetBinding == null){
KeyImpl bindingKey = new KeyImpl(key);
Collection bindingKeys = new ArrayList();
bindingKeys.add(bindingKey);
BulkResponse bulkResponse =
getServiceBindings(bindingKeys);
if (bulkResponse.getExceptions() == null) {
//get the targetBinding
Collection bindings = bulkResponse.getCollection();
if (bindings != null) {
Iterator bindingIterator = bindings.iterator();
while (bindingIterator.hasNext()) {
targetBinding =
(ServiceBinding) bindingIterator.next();
return targetBinding;
}
}
}
}
return targetBinding;
}
return null;
}
Concept urlType2Concept(URLType urlType)
throws JAXRException {
String typeString = urlType.value();
//ClassificationScheme scheme =
Collection schemes =
getConceptsManager().findClassificationSchemeByName(null,"URLType");
//assume exact match
ClassificationScheme scheme = (ClassificationScheme) schemes.iterator().next();
if (scheme != null) {
Collection childConcepts = scheme.getChildrenConcepts();
if (childConcepts != null) {
Iterator citer = childConcepts.iterator();
while (citer.hasNext()) {
Concept concept = (Concept)citer.next();
InternationalString name = concept.getName();
String nameValue = name.getValue();
String conceptValue = concept.getValue();
if (typeString != null) {
if ((conceptValue != null) && (nameValue != null)){
if ((typeString.indexOf(nameValue) != -1) ||
(typeString.indexOf(conceptValue) != -1)) {
return concept;
}
}
}
}
}
}
return null;
}
Contacts users2Contacts(Collection users, boolean publish) throws JAXRException {
Contacts contacts = null;
contacts = objFactory.createContacts();
if (users != null) {
Iterator iter = users.iterator();
try {
while (iter.hasNext()){
Contact contact = user2Contact((User)iter.next(), publish);
if (contact != null) {
//add to contacts
contacts.getContact().add(contact);
}
}
} catch (ClassCastException cce) {
logger.log(Level.WARNING, cce.getMessage(), cce);
throw new UnexpectedObjectException(ResourceBundle.getBundle("com/sun/xml/registry/uddi/LocalStrings").getString("UDDIMapper:Expected_User"), cce);
}
}
return contacts;
}
Contact user2Contact(User user, boolean publish) throws JAXRException {
Contact contact = null;
if (user != null) {
//lets get the user info first
Collection telephoneNumbers = user.getTelephoneNumbers(null);
//change this latter
PersonNameImpl personName = (PersonNameImpl)user.getPersonName();
//tbd Collection
Collection postalAddresses =
user.getPostalAddresses();
Collection emailAddresses = user.getEmailAddresses();
Collection descriptions = getDescriptions(user, publish);
String useType = user.getType();
contact = null;
contact = objFactory.createContact();
if (personName != null) {
String contactName = personName.getFullName();
if (contactName != null)
contact.setPersonName(contactName);
} else {
return null;
}
if (descriptions != null) {
contact.getDescription().addAll(descriptions);
}
if (useType != null)
contact.setUseType(useType);
//the telephone numbers
if ((telephoneNumbers != null) && (!telephoneNumbers.isEmpty())) {
Iterator iter = telephoneNumbers.iterator();
try {
while (iter.hasNext()) {
Phone phone =
telephoneNumber2Phone(
(TelephoneNumber) iter.next());
if (phone != null) {}
contact.getPhone().add(phone);
}
} catch (ClassCastException cce) {
logger.log(Level.WARNING, cce.getMessage(), cce);
throw new UnexpectedObjectException(ResourceBundle.getBundle("com/sun/xml/registry/uddi/LocalStrings").getString("UDDIMapper:Expected_TelephoneNumber"), cce);
}
}
if (emailAddresses != null && !emailAddresses.isEmpty()) {
Iterator iter = emailAddresses.iterator();
Collection emails = new ArrayList();
try {
while (iter.hasNext()) {
EmailAddress emailAddress = (EmailAddress) iter.next();
String address = emailAddress.getAddress();
String type = emailAddress.getType();
//uddi email
Email email = null;
email = objFactory.createEmail();
if (address != null)
email.setValue(address);
if (type != null)
email.setUseType(type);
emails.add(email);
}
contact.getEmail().addAll(emails);
} catch (ClassCastException cce) {
logger.log(Level.WARNING, cce.getMessage(), cce);
throw new UnexpectedObjectException(ResourceBundle.getBundle("com/sun/xml/registry/uddi/LocalStrings").getString("UDDIMapper:Expected_EmailAddress"), cce);
}
}
if (postalAddresses != null) {
Iterator piter = postalAddresses.iterator();
while (piter.hasNext()) {
PostalAddress postalAddress = (PostalAddress)piter.next();
Address address = postalAddress2Address(postalAddress);
contact.getAddress().add(address);
}
}
}
return contact;
}
Phone telephoneNumber2Phone(TelephoneNumber telephoneNumber ) throws JAXRException {
Phone phone = null;
phone = objFactory.createPhone();
if (telephoneNumber != null) {
String type = telephoneNumber.getType();
if (type != null) {
phone.setUseType(type);
}
String number = telephoneNumber.getNumber();
if (number != null)
phone.setValue(number);
}
return phone;
}
Collection postalAddresses2Addresses(Collection postalAddresses) {
return null;
}
Address postalAddress2Address(PostalAddress postalAddress) throws JAXRException {
if (postalAddress == null)
return null;
initPostalSchemes();
String type =
//should this be getAddress--
postalAddress.getType();
logger.finest("Got type");
Slot sortCode =
postalAddress.getSlot("sortCode");
logger.finest("SortCode");
Address address = null;
ClassificationScheme defaultScheme = defaultPostalScheme;
address = postalAddressEquivalence2Address(defaultScheme, postalAddress);
if (address == null) {
try {
Slot addressLines =
postalAddress.getSlot("addressLines");
logger.finest("addressLines");
address = objFactory.createAddress();
Collection aLines = null;
aLines =
postalAddressLines2AddressLines(addressLines);
logger.finest("alines");
if (aLines != null) {
address.getAddressLine().addAll(aLines);
}
} catch (ClassCastException cce) {
throw new JAXRException(ResourceBundle.getBundle("com/sun/xml/registry/uddi/LocalStrings").getString("UDDIMapper:Expected_PostalAddress"), cce);
}
}
if (address != null) {
if (type != null) {
address.setUseType(type);
}
if (sortCode != null) {
Collection values = sortCode.getValues();
//should just be 1 value
if ((values != null) && (!values.isEmpty())) {
String value = (String)values.toArray()[0];
if (value != null)
address.setSortCode(value);
}
} else address.setSortCode("");
}
return address;
}
private Address postalAddressEquivalence2Address(ClassificationScheme defaultScheme,
PostalAddress postalAddress) throws JAXRException {
boolean unformated = false;
//fix this to look for postalAddressScheme on postalAddress
if (defaultScheme == null)
unformated = true;
ClassificationScheme postalScheme = null;
if (postalAddress != null)
postalScheme = postalAddress.getPostalScheme();
String paId = null; //getDefaultPostalAddress from postalAddress passed
Address address = null;
//we know scheme is not null otherwise would have gotten this
address = objFactory.createAddress();
if (postalAddressMap == null) {
mapPostalAddressAttributes(postalScheme);
if (postalAddressMap == null) { //what should I do here?
logger.warning(ResourceBundle.getBundle("com/sun/xml/registry/uddi/LocalStrings").getString("UDDIMapper:No_PostalAddressMapping"));
}
}
Collection unformatedLines = new ArrayList();
Collection addressLines = new ArrayList();
//get the postalAddressAttributes
String street = postalAddress.getStreet();
if (street != null)
unformatedLines.add(street);
String streetNumber = postalAddress.getStreetNumber();
if (streetNumber != null)
unformatedLines.add(streetNumber);
String city = postalAddress.getCity();
if (city != null)
unformatedLines.add(city);
String state = postalAddress.getStateOrProvince();
if (state != null)
unformatedLines.add(state);
String postalCode = postalAddress.getPostalCode();
if (postalCode != null)
unformatedLines.add(postalCode);
String country = postalAddress.getCountry();
if (country != null)
unformatedLines.add(country);
AddressLine line = null;
if (streetNumber != null) {
line =
postalAddressAttribute2AddressLine(postalAddressMap, streetNumber, STREETNUMBER);
if (line != null)
addressLines.add(line);
line = null;
}
if (street != null) {
line =
postalAddressAttribute2AddressLine(postalAddressMap, street, STREET);
if (line != null)
addressLines.add(line);
line = null;
}
if (city != null) {
line =
postalAddressAttribute2AddressLine(postalAddressMap, city, CITY);
if (line != null)
addressLines.add(line);
line = null;
}
if (state != null) {
line =
postalAddressAttribute2AddressLine(postalAddressMap, state, STATE);
if (line != null)
addressLines.add(line);
line = null;
}
if (postalCode != null) {
line =
postalAddressAttribute2AddressLine(postalAddressMap, postalCode, POSTALCODE);
if (line != null)
addressLines.add(line);
line = null;
}
if (country != null) {
line =
postalAddressAttribute2AddressLine(postalAddressMap, country, COUNTRY);
if (line != null)
addressLines.add(line);
line = null;
}
if ((addressLines != null) && (!addressLines.isEmpty())) {
address = null;
address = objFactory.createAddress();
if (defaultScheme != null){
String defaultSchemeId = defaultScheme.getKey().getId();
if (defaultSchemeId != null)
address.setTModelKey(defaultSchemeId);
}
address.getAddressLine().addAll(addressLines);
return address;
}
return null;
}
AddressLine postalAddressAttribute2AddressLine(HashMap postalAddressMap, String attribute, String jaxrName)
throws JAXRException {
AddressLine streetLine = null;
String keyName = null;
String keyValue = null;
AddressLine line = null;
line = objFactory.createAddressLine();
if ((attribute == null) || (attribute.equals("")))
return null;
Concept equivalentConcept = null;
if (postalAddressMap!= null){
equivalentConcept = (Concept)postalAddressMap.get(jaxrName);
}
if (equivalentConcept != null) {
keyName = equivalentConcept.getName().getValue();
keyValue = equivalentConcept.getValue();
} else {
keyName = jaxrName;
keyValue = jaxrName;
}
if (attribute != null) {
if (keyName != null)
line.setKeyName(keyName);
if (keyValue != null)
line.setKeyValue(keyValue);
line.setValue(attribute);
return line;
}
return null;
}
Collection postalAddressLines2AddressLines(Slot addressLines)
throws JAXRException {
Collection aLines = null;
//actually this may have to be ordered
if (addressLines != null) {
aLines = new ArrayList();
Collection values = addressLines.getValues();
if (values != null) {
Iterator viter = values.iterator();
while (viter.hasNext()) {
String line = (String)viter.next();
AddressLine aline = null;
aline = objFactory.createAddressLine();
if (aline != null) {
aline.setValue(line);
aLines.add(aline);
}
}
}
}
return aLines;
}
/**
*
* Transforms a collection of JAXR Concepts to a UDDI CategoryBag
*
* @param concepts Collection of JAXR Concepts
* @return CategoryBag CategoryBag Collection of UDDI Categories
* @exception JAXRException
*
*/
CategoryBag classifications2CategoryBag(Collection classifications) throws JAXRException {
CategoryBag cbag = null;
if ( (classifications != null) && (!classifications.isEmpty())) {
cbag = null;
cbag = objFactory.createCategoryBag();
Classification classification = null;
Iterator iter = classifications.iterator();
try {
while(iter.hasNext()) {
classification =
(Classification) iter.next();
Concept concept = classification.getConcept();
if (concept != null) {
KeyedReference kref =
concept2KeyedReference(concept);
if (kref != null){
cbag.getKeyedReference().add(kref);
}
} else {
ClassificationScheme cScheme =
classification.getClassificationScheme();
String value = classification.getValue();
Name name = getName(classification);
String nvalue = null;
if (name != null)
nvalue = name.getValue();
//if externalhas tobe one way - if internal another way
if ( cScheme != null) {
if ((value != null) && (!value.equalsIgnoreCase("")) ) {
KeyedReference kref =
classification2KeyedReference(cScheme, nvalue, value);
if (kref != null){
cbag.getKeyedReference().add(kref);
}
} else throw new JAXRException(ResourceBundle.getBundle("com/sun/xml/registry/uddi/LocalStrings").getString("UDDIMapper:No_Concept_specified_for_this_Classification"));
} else
throw new JAXRException(ResourceBundle.getBundle("com/sun/xml/registry/uddi/LocalStrings").getString("UDDIMapper:No_Concept_specified_for_this_Classification"));
}
}
} catch (ClassCastException cce) {
logger.log(Level.WARNING, cce.getMessage(), cce);
throw new UnexpectedObjectException(ResourceBundle.getBundle("com/sun/xml/registry/uddi/LocalStrings").getString("UDDIMapper:Expected_Classification"), cce);
}
}
return cbag;
}
/**
*
* Transforms a UDDI CategoryBag collection of Categories to
* a Collection of JAXR Concepts
*
* @param cbag UDDI CategoryBag collection of Categories
* @return Collection Collection of JAXR Concepts
* @exception JAXRException
*
*/
Collection categoryBag2Classifications(CategoryBag cbag) throws JAXRException {
Collection classifications = null;
if (cbag != null) {
classifications = new ArrayList();
Collection keyedReference =
cbag.getKeyedReference();
Iterator iter = keyedReference.iterator();
while(iter.hasNext()) {
Classification classification =
keyedReference2Classification((KeyedReference) iter.next());
if (classification != null)
classifications.add(classification);
}
}
return classifications;
}
/**
*
* Transforms a collection of JAXR Concepts to a UDDI CategoryBag
*
* @param concepts Collection of JAXR Concepts
* @return CategoryBag CategoryBag Collection of UDDI Categories
* @exception JAXRException
*
*/
CategoryBag concepts2CategoryBag(Collection concepts) throws JAXRException {
CategoryBag cbag = null;
if ( (concepts != null) && (!concepts.isEmpty())) {
cbag = null;
cbag = objFactory.createCategoryBag();
Iterator iter = concepts.iterator();
try {
while(iter.hasNext()) {
KeyedReference kref =
concept2KeyedReference( ((Concept)iter.next()));
if (kref != null) {
cbag.getKeyedReference().add(kref);
}
}
} catch (ClassCastException cce) {
logger.log(Level.WARNING, cce.getMessage(), cce);
throw new UnexpectedObjectException(ResourceBundle.getBundle("com/sun/xml/registry/uddi/LocalStrings").getString("UDDIMapper:Expected_Concept"), cce);
}
}
return cbag;
}
/**
*
* Transforms a UDDI CategoryBag collection of Categories to
* a Collection of JAXR Concepts
*
* @param cbag UDDI CategoryBag collection of Categories
* @return Collection Collection of JAXR Concepts
* @exception JAXRException
*
*/
Collection categoryBag2Concepts(CategoryBag cbag) throws JAXRException {
Collection concepts = null;
if (cbag != null) {
concepts = new ArrayList();
Collection keyedReference =
cbag.getKeyedReference();
Iterator iter = keyedReference.iterator();
while(iter.hasNext()) {
Concept concept =
keyedReference2Concept((KeyedReference)iter.next());
if (concept != null)
concepts.add(concept);
}
}
return concepts;
}
/**
*
* Transforms a collection of JAXR Concepts to a UDDI TModelBag
*
* @param concepts Collection of Concepts
* @return TModelBag Collection of UDDI TModel Keys
* @exception JAXRException
*
*/
TModelBag concepts2TModelBag(Collection concepts) throws JAXRException {
TModelBag tbag = null;
if ( (concepts != null) && (!concepts.isEmpty())) {
tbag = null;
tbag = objFactory.createTModelBag();
Concept concept = null;
Iterator iter = concepts.iterator();
try {
while (iter.hasNext()) {
concept = (Concept)iter.next();
//make sure that classificationScheme and parent are
//non-existent
ClassificationScheme scheme =
concept.getClassificationScheme();
Concept parent = concept.getParentConcept();
if ((scheme == null) && (parent == null)) {
Key key = concept.getKey();
tbag.getTModelKey().add(key.getId());
} else {
throw new JAXRException(ResourceBundle.getBundle("com/sun/xml/registry/uddi/LocalStrings").getString("UDDIMapper:ClassificationScheme_and_Parent_must_be_non-existent_for_specifications"));
}
}
} catch (ClassCastException cce) {
logger.log(Level.WARNING, cce.getMessage(), cce);
throw new UnexpectedObjectException(ResourceBundle.getBundle("com/sun/xml/registry/uddi/LocalStrings").getString("UDDIMapper:Expected_Concept"), cce);
}
}
return tbag;
}
/**
*
* Transforms a Collection of String to Array of Strings
*
* @param namePatterns Collection of Strings
* @return String[] String Array
* @exception JAXRException
*
*/
String[] strings2Names(Collection namePatterns) throws JAXRException {
String[] names = null;
if (namePatterns != null) {
try {
names = (String[])namePatterns.toArray(new String[0]);
} catch (ArrayStoreException ase) {
throw new JAXRException(ase);
}
}
return names;
}
/**
*
* Transforms a Collection of String to Array of Strings
*
* @param namePatterns Collection of Strings
* @return String[] String Array
* @exception JAXRException
*
*/
Collection namePatterns2Names(Collection namePatterns, boolean publish)
throws JAXRException {
Collection names = new ArrayList();
if (namePatterns != null) {
Iterator iter = namePatterns.iterator();
while (iter.hasNext()) {
Object pattern = iter.next();
if (pattern instanceof String) {
Name name = null;
Name dupName = null;
name = objFactory.createName();
dupName = objFactory.createName();
name.setValue((String)pattern);
dupName.setValue((String)pattern);
//locale
Locale defaultLocale = Locale.getDefault();
String lang = defaultLocale.getLanguage();
if (!publish){
dupName.setLang(lang);
names.add(dupName);
}
String country = defaultLocale.getCountry();
if (country != null && !country.equals(""))
lang += "-"+country;
name.setLang(lang);
names.add(name);
} else if (pattern instanceof InternationalString) {
Collection iname = internationalString2Names((InternationalString)pattern, publish);
if (iname != null) {
names.addAll(iname);
}
}
}
}
return names;
}
/**
*
* Transforms a JAXR Key to a UDDI Key String
*
* @param jaxKey JAXR Key
* @return String UDDI Key which is a String
* @exception
*
*/
String key2Key(Key jaxKey) throws JAXRException {
String key = null;
if (jaxKey != null) {
key = jaxKey.getId();
}
return key;
}
/**
*
* Transforms a Collection of JAXR Keys to a UDDI String Array of Keys
*
* @param jaxKeys Collection of JAXR Keys
* @return String[] String Array of UDDI Keys
* @exception JAXRException
*
*/
Collection keys2Keys(Collection jaxKeys) throws JAXRException {
ArrayList keys = new ArrayList();
if (jaxKeys != null) {
Iterator iter = jaxKeys.iterator();
try {
while(iter.hasNext()){
keys.add(((Key)iter.next()).getId());
}
} catch (ClassCastException cce) {
logger.log(Level.WARNING, cce.getMessage(), cce);
throw new UnexpectedObjectException(ResourceBundle.getBundle("com/sun/xml/registry/uddi/LocalStrings").getString("UDDIMapper:Expected_Keys"), cce);
}
}
return keys;
}
/**
*
* Transform a Collection of JAXR String Qualifiers to a UDDI
* FindQualifiers collection of FindQualifier
*
* @param findQualifiers Collection of JAXR findQualifier Strings
* @return FindQualifiers Collection of UDDI FindQualifier Objects
* @exception JAXRException
*
*/
FindQualifiers strings2FindQualifiers(Collection findQualifiers)
throws JAXRException {
try {
FindQualifiers fq = null;
//FindQualifiers
if ((findQualifiers != null) && (!findQualifiers.isEmpty())) {
fq = null;
fq = objFactory.createFindQualifiers();
Iterator iter = findQualifiers.iterator();
while (iter.hasNext()) {
fq.getFindQualifier().add((String)iter.next());
}
}
return fq;
} catch (ClassCastException cce) {
logger.log(Level.WARNING, cce.getMessage(), cce);
throw new UnexpectedObjectException(ResourceBundle.getBundle("com/sun/xml/registry/uddi/LocalStrings").getString("UDDIMapper:Expected_String"), cce);
}
}
/**
*
* Transforms Collection of JAXR ExternalLinks To UDDI DiscoveryURLs
*
* @param links Collection of JAXR ExternalLinks
* @return DiscoveryURLs UDDI DiscoveryURLs
* @exception JAXRException
*
*/
//need to revisit - currently not tested
DiscoveryURLs externalLinks2DiscoveryURLs(Collection links)
throws JAXRException {
DiscoveryURLs URLs = null;
if ((links != null) && (!links.isEmpty())) {
URLs = null;
URLs = objFactory.createDiscoveryURLs();
ExternalLink link = null;
Iterator linksiter = links.iterator();
try {
while (linksiter.hasNext()) {
DiscoveryURL dURL = null;
dURL = objFactory.createDiscoveryURL();
link = (ExternalLink) linksiter.next();
String uri = link.getExternalURI();
Name name = getName(link);
if (uri != null) {
dURL.setValue(uri);
}
if ((name == null) || (name.equals("")) ) {
name.setValue("Unknown Name");
//Locale
//todo: should this be default local lang?
name.setLang("");
}
dURL.setUseType(name.getValue());
//todo:???must do lang here
URLs.getDiscoveryURL().add(dURL);
}
} catch (ClassCastException cce) {
logger.log(Level.WARNING, cce.getMessage(), cce);
throw new UnexpectedObjectException(ResourceBundle.getBundle("com/sun/xml/registry/uddi/LocalStrings").getString("UDDIMapper:Expected_ExternalLink"), cce);
}
}
return URLs;
}
/**
*
* @param
* @return
* @exception
*
*/
Collection concepts2TModels(Collection concepts, boolean publish) throws JAXRException {
Collection tmodels = null;
if ((concepts != null) && (!concepts.isEmpty())) {
tmodels = new ArrayList();
Iterator iter = concepts.iterator();
try {
while (iter.hasNext()) {
TModel tModel = concept2TModel((Concept)iter.next(), publish);
if (tModel != null)
tmodels.add(tModel);
}
} catch (ClassCastException cce) {
logger.log(Level.WARNING, cce.getMessage(), cce);
throw new UnexpectedObjectException(ResourceBundle.getBundle("com/sun/xml/registry/uddi/LocalStrings").getString("UDDIMapper:Expected_Concept"), cce);
}
}
return tmodels;
}
/**
*
* @param
* @return
* @exception
*
*/
Collection classificationSchemes2TModels(Collection schemes, boolean publish)
throws JAXRException {
Collection tmodels = null;
if ((schemes != null) && (!schemes.isEmpty())) {
tmodels = new ArrayList();
Iterator iter = schemes.iterator();
try {
while (iter.hasNext()) {
TModel tModel =
classificationScheme2TModel((ClassificationScheme) iter.next(), publish);
if (tModel != null)
tmodels.add(tModel);
}
} catch (ClassCastException cce) {
logger.log(Level.WARNING, cce.getMessage(), cce);
throw new UnexpectedObjectException(ResourceBundle.getBundle("com/sun/xml/registry/uddi/LocalStrings").getString("UDDIMapper:Expected_ClassificationScheme"), cce);
}
}
return tmodels;
}
/**
*
* @param
* @return
* @exception
*
*/
TModel concept2TModel(Concept concept, boolean publish) throws JAXRException {
TModel model = null;
model = objFactory.createTModel();
Concept aConcept = (ConceptImpl)concept;
Key key = aConcept.getKey();
if (key != null)
model.setTModelKey(key.getId());
else model.setTModelKey("");
//Locale
Name name = getName(concept);
model.setName(name);
//locale
Collection description = getDescriptions(aConcept, publish);
model.getDescription().addAll(description);
Collection slots = aConcept.getSlots();
//Find Slot Named authorized Name
if (slots != null) {
try {
Iterator iter = slots.iterator();
while (iter.hasNext()) {
Slot slot = (Slot) iter.next();
if (slot.getName().equals("authorizedName")) {
//get slot value - take 1st
Collection values = slot.getValues();
if ((values!=null) && (!values.isEmpty())) {
Object[] vals = values.toArray();
String authName = (String)vals[0];
if (authName != null)
model.setAuthorizedName(authName);
}
}
if (slot.getName().equals("operator")) {
//get slot value - take 1st
Collection values = slot.getValues();
if ((values!=null) && (!values.isEmpty())) {
Object[] vals = values.toArray();
String operator = (String)vals[0];
if (operator != null)
model.setOperator(operator);
}
}
}
} catch (ClassCastException cce) {
logger.log(Level.WARNING, cce.getMessage(), cce);
throw new UnexpectedObjectException(ResourceBundle.getBundle("com/sun/xml/registry/uddi/LocalStrings").getString("UDDIMapper:Expected_Slot"), cce);
}
}
Collection identifiers = aConcept.getExternalIdentifiers();
if (identifiers != null) {
IdentifierBag identifierBag =
externalIdentifiers2IdentifierBag(identifiers);
if (identifierBag != null)
model.setIdentifierBag(identifierBag);
}
//to categoryBag
Collection concepts =
aConcept.getClassifications();
CategoryBag categoryBag = null;
if (concepts != null) {
categoryBag = classifications2CategoryBag(concepts);
}
categoryBag = addCategorization(categoryBag, LifeCycleManager.CONCEPT);
if (categoryBag != null)
model.setCategoryBag(categoryBag);
//why only one Overview Doc
Collection links= concept.getExternalLinks();
if ((links != null) && (!links.isEmpty())){
//if more than 1 external Link Exception?
OverviewDoc overviewDoc =
externalLink2OverviewDoc((ExternalLink)links.toArray()[0], publish);
model.setOverviewDoc(overviewDoc);
}
return model;
}
TModel classificationScheme2TModel(ClassificationScheme scheme, boolean publish) throws JAXRException {
TModel model = null;
model = objFactory.createTModel();
Key key = scheme.getKey();
if (key != null)
model.setTModelKey(key.getId());
else model.setTModelKey("");
//Locale
Name name = getName(scheme);
model.setName(name);
//locale
Collection description = getDescriptions(scheme, publish);
model.getDescription().addAll(description);
Collection slots = scheme.getSlots();
//Find Slot Named authorized Name
if (slots != null) {
try {
Iterator iter = slots.iterator();
while (iter.hasNext()) {
Slot slot = (Slot) iter.next();
if (slot.getName().equals("authorizedName")) {
//get slot value - take 1st
Collection values = slot.getValues();
if ((values!=null) && (!values.isEmpty())) {
Object[] vals = values.toArray();
String authName = (String)vals[0];
if (authName != null)
model.setAuthorizedName(authName);
}
}
if (slot.getName().equals("operator")) {
//get slot value - take 1st
Collection values = slot.getValues();
if ((values!=null) && (!values.isEmpty())) {
Object[] vals = values.toArray();
String operator = (String)vals[0];
if (operator != null)
model.setOperator(operator);
}
}
}
} catch (ClassCastException cce) {
logger.log(Level.WARNING, cce.getMessage(), cce);
throw new UnexpectedObjectException(ResourceBundle.getBundle("com/sun/xml/registry/uddi/LocalStrings").getString("UDDIMapper:Expected_Slot"), cce);
}
}
Collection identifiers = scheme.getExternalIdentifiers();
if (identifiers != null) {
IdentifierBag identifierBag =
externalIdentifiers2IdentifierBag(identifiers);
if (identifierBag != null)
model.setIdentifierBag(identifierBag);
}
//to categoryBag
Collection concepts =
scheme.getClassifications();
CategoryBag categoryBag = null;
if (concepts != null) {
categoryBag = classifications2CategoryBag(concepts);
}
categoryBag = addCategorization(categoryBag, LifeCycleManager.CLASSIFICATION_SCHEME);
if (categoryBag != null)
model.setCategoryBag(categoryBag);
//why only one Overview Doc
Collection links= scheme.getExternalLinks();
if ((links != null) && (!links.isEmpty())){
//if more than 1 external Link Exception?
OverviewDoc overviewDoc =
externalLink2OverviewDoc((ExternalLink)links.toArray()[0], publish);
model.setOverviewDoc(overviewDoc);
}
return model;
}
CategoryBag addCategorization(CategoryBag categoryBag,
String objectType) throws JAXRException {
boolean present = false;
Collection keyedReferences = null;
if (categoryBag == null){
categoryBag = objFactory.createCategoryBag();
} else {
//check to see if uddi-org:types set already
keyedReferences =
categoryBag.getKeyedReference();
if (keyedReferences != null) {
Iterator iter = keyedReferences.iterator();
while (iter.hasNext()){
KeyedReference ref = (KeyedReference)iter.next();
if (ref.getTModelKey().equalsIgnoreCase(UDDI_ORG_TYPES_KEY)){
present = true;
break;
}
}
}
}
if (!present) {
KeyedReference keyedRef = null;
keyedRef = objFactory.createKeyedReference();
if (objectType.equalsIgnoreCase(LifeCycleManager.CLASSIFICATION_SCHEME)) {
keyedRef.setTModelKey(UDDI_ORG_TYPES_KEY);
keyedRef.setKeyName(UDDI_ORG_TYPES_NAME);
keyedRef.setKeyValue(UDDI_CATEGORIZATION);
} else if (objectType.equalsIgnoreCase(LifeCycleManager.CONCEPT)) {
keyedRef.setTModelKey(UDDI_ORG_TYPES_KEY);
keyedRef.setKeyName(UDDI_ORG_TYPES_NAME);
keyedRef.setKeyValue(UDDI_SPECIFICATION);
} else keyedRef = null;
//now add to categoryBag
if (keyedRef != null){
categoryBag.getKeyedReference().add(keyedRef);
}
}
return categoryBag;
}
//start here
/**
*
* @param
* @return
* @exception
*
*/
Concept tModel2Concept(TModelInfo info) throws JAXRException {
ConceptImpl concept = null;
String tkey = info.getTModelKey();
Name name = info.getName();
if (this.getConnection().useCache()) {
try {
concept = (ConceptImpl)
objectManager.fetchObjectFromCache(tkey);
} catch (ClassCastException cce) {
logger.finest("ClassCastException in tModelInfo2Concept on fetch, continuing");
}
}
if (concept == null) {
concept = new ConceptImpl();
concept.setServiceId(this.service.getServiceId());
concept.setRegistryService(this.service);
}
InternationalString iname = name2InternationalString(name);
concept.setName(iname);
concept.setKey(new KeyImpl(tkey));
concept.setStatusFlags(true, false, false);
//always add skeleton object for incremental loading
objectManager.addObjectToCache(concept, service.getServiceId());
return concept;
}
/**
*
* @param
* @return
* @exception
*
*/
Concept tModel2Concept(TModel model) throws JAXRException {
ConceptImpl concept = null;
String tModelKey = model.getTModelKey();
//need to check if object retrieved is classificationScheme or concept
//if classificationScheme we know what to do
//always look for the skeleton
if (getConnection().useCache()) {
try {
concept = (ConceptImpl)
objectManager.fetchObjectFromCache(tModelKey);
} catch (ClassCastException cce) {
logger.finest("ClassCastException in tModel2Concept, continuing");
concept = null;
}
}
if (concept == null) {
concept =
new ConceptImpl(new KeyImpl(tModelKey));
concept.setServiceId(this.service.getServiceId());
concept.setRegistryService(this.service);
}
concept.setIsLoaded(true);
concept.setIsRetrieved(true);
concept.setIsNew(false);
//get the TModel Detail
Name name = model.getName();
String authorizedName = model.getAuthorizedName();
SlotImpl authSlot =
new SlotImpl("authorizedName", "authorizedName", authorizedName);
concept.addSlot(authSlot);
String operator = model.getOperator();
SlotImpl operSlot =
new SlotImpl("operator", "operator", operator);
concept.addSlot(operSlot);
ExternalLink link = null;
OverviewDoc odoc =model.getOverviewDoc();
if (odoc != null) {
link = overviewDoc2ExternalLink(odoc);
if (link != null){
Collection links = new ArrayList();
links.add(link);
concept.setExternalLinks(links);
}
}
Collection externalIds = null;
IdentifierBag ibag = model.getIdentifierBag();
if (ibag != null) {
externalIds =
identifierBag2ExternalIdentifiers(ibag);
if ((externalIds != null) && (!externalIds.isEmpty()))
//need to set registry entry for each externalId
concept.setExternalIdentifiers(externalIds);
}
Collection classifications = null;
CategoryBag cbag = model.getCategoryBag();
if (cbag != null) {
classifications=
categoryBag2Classifications(cbag);
if ((classifications != null) &&
(!classifications.isEmpty()))
//need to set Registry entry for each classification Concept
//each concept needs to have its root concept set -
concept.setClassifications(classifications);
}
//now build the concept
KeyImpl key = new KeyImpl(tModelKey);
InternationalString iname = name2InternationalString(name);
concept.setName(iname);
Collection description = model.getDescription();
InternationalString idesc =
descriptions2InternationalString(description);
if (idesc != null) {
concept.setDescription(idesc);
}
//if using cache store it, otherwise clear it
if (getConnection().useCache())
objectManager.addObjectToCache(concept, service.getServiceId());
else
objectManager.removeObjectFromCache(concept.getKey().getId());
return concept;
}
/**
*
* @param
* @return
* @exception
*
*/
RegistryObject tModel2ConceptOrClassificationScheme(TModel model) throws JAXRException {
RegistryObjectImpl ro = null;
String tModelKey = model.getTModelKey();
ro = (RegistryObjectImpl)
objectManager.fetchObjectFromCache(tModelKey);
if (ro != null) {
ro.setRegistryService(this.service);
ro.setIsLoaded(true);
}
//need to check if object retrieved is classificationScheme or concept
//if classificationScheme we know what to do
Collection classifications = null;
CategoryBag cbag = model.getCategoryBag();
boolean scheme = false;
if (cbag != null) {
classifications=
categoryBag2Classifications(cbag);
if ((classifications != null) &&
(!classifications.isEmpty())) {
try {
//check the classification
//look for catorigazation
Iterator iter = classifications.iterator();
while (iter.hasNext()) {
scheme = isClassificationScheme((Classification)iter.next());
if (scheme)
break;
}
} catch (ClassCastException cce) {
logger.log(Level.SEVERE, cce.getMessage(), cce);
}
}
}
RegistryObjectImpl registryObject = null;
//got it from the cache
if (ro != null) {
if (scheme) {
if (ro instanceof Concept)
registryObject =
new ClassificationSchemeImpl((ConceptImpl)ro);
} else
registryObject = ro;
}
if (registryObject == null) {
if (scheme)
registryObject =
new com.sun.xml.registry.uddi.infomodel.ClassificationSchemeImpl(new KeyImpl(tModelKey));
else
registryObject =
new com.sun.xml.registry.uddi.infomodel.ConceptImpl(new KeyImpl(tModelKey));
registryObject.setServiceId(this.service.getServiceId());
registryObject.setRegistryService(this.service);
}
registryObject.setIsRetrieved(true);
registryObject.setIsNew(false);
registryObject.setIsLoaded(true);
String authorizedName = model.getAuthorizedName();
SlotImpl authSlot =
new SlotImpl("authorizedName", authorizedName, "authorizedName");
registryObject.addSlot(authSlot);
String operator = model.getOperator();
SlotImpl operSlot =
new SlotImpl("operator", "operator", operator);
registryObject.addSlot(operSlot);
if (classifications != null)
registryObject.setClassifications(classifications);
ExternalLink link = null;
OverviewDoc odoc = model.getOverviewDoc();
if (odoc != null) {
link = overviewDoc2ExternalLink(odoc);
if (link != null){
Collection links = new ArrayList();
links.add(link);
//todo: why does it matter if concept?
//if (registryObject instanceof Concept)
registryObject.setExternalLinks(links);
//else
// registryObject.setExternalLinks(links);
}
}
Collection externalIds = null;
IdentifierBag ibag = model.getIdentifierBag();
if (ibag != null) {
externalIds =
identifierBag2ExternalIdentifiers(ibag);
if ((externalIds != null) && (!externalIds.isEmpty()))
//need to set registry entry for each externalId
registryObject.setExternalIdentifiers(externalIds);
}
Name name = model.getName();
InternationalString iname = name2InternationalString(name);
registryObject.setName(iname);
Collection description = model.getDescription();
InternationalString idesc =
descriptions2InternationalString(description);
registryObject.setDescription(idesc);
//need to do lang
objectManager.addObjectToCache(registryObject, service.getServiceId());
return registryObject;
}
boolean isClassificationScheme(Classification classification)
throws JAXRException {
//todo: use constants
boolean isScheme = false;
String value = classification.getValue();
if (value == null)
return isScheme;
if (value.equalsIgnoreCase(UDDI_IDENTIFIER))
isScheme = true;
else if (value.equalsIgnoreCase(UDDI_NAMESPACE))
isScheme = true;
else if (value.equalsIgnoreCase(UDDI_CATEGORIZATION))
isScheme = true;
else if (value.equalsIgnoreCase(UDDI_POSTALADDRESS))
isScheme = true;
return isScheme;
}
/**
*
* @param
* @return
* @exception
*
*/
KeyedReference externalIdentifier2KeyedReference(ExternalIdentifier identifier)
throws JAXRException {
KeyedReference keyedRef = null;
keyedRef = objFactory.createKeyedReference();
ClassificationScheme identScheme = identifier.getIdentificationScheme();
//get Key for identificationScheme
if (identScheme == null)
throw new JAXRException(ResourceBundle.getBundle("com/sun/xml/registry/uddi/LocalStrings").getString("UDDIMapper:IdentificationScheme_missing_-_this_must_be_supplied"));
Key ikey = identScheme.getKey();
String id = null;
if (ikey != null)
id = ikey.getId();
if (ikey != null)
keyedRef.setTModelKey(id);
else
throw new JAXRException(ResourceBundle.getBundle("com/sun/xml/registry/uddi/LocalStrings").getString("UDDIMapper:No_IdentificationScheme_Key_-_this_must_be_supplied"));
String name = null;
//todo:why catch npe
try {
name = identifier.getName().getValue();
} catch (NullPointerException npe) {}
if (name != null)
keyedRef.setKeyName(name);
else
keyedRef.setKeyName("");
String value = identifier.getValue();
if (value != null)
keyedRef.setKeyValue(value);
else
throw new JAXRException(ResourceBundle.getBundle("com/sun/xml/registry/uddi/LocalStrings").getString("UDDIMapper:No_ExternialIdentifier_Value_supplied_-_this_must_be_supplied"));
return keyedRef;
}
/**
*
* @param
* @return
* @exception
*
*/
ExternalIdentifier keyedReference2ExternalIdentifier(KeyedReference keyedRef)
throws JAXRException {
ExternalIdentifierImpl identifier = null;
if (keyedRef != null) {
String tModelKey = keyedRef.getTModelKey();
String keyName = keyedRef.getKeyName();
String value = keyedRef.getKeyValue();
ClassificationScheme scheme = new ClassificationSchemeImpl();
scheme.setKey(new KeyImpl(tModelKey));
scheme.setName(new InternationalStringImpl(keyName));
identifier =
new ExternalIdentifierImpl(scheme, keyName, value);
identifier.setRegistryService(this.service);
}
return identifier;
}
/**
*
* @param
* @return
* @exception
*
*/
KeyedReference concept2KeyedReference(Concept concept) throws JAXRException {
ConceptImpl aConcept = (ConceptImpl)concept;
KeyedReference keyedRef = null;
keyedRef = objFactory.createKeyedReference();
if (concept != null) {
ClassificationScheme parent =
concept.getClassificationScheme();
if (parent != null) {
Key key = parent.getKey();
if (key == null)
throw new JAXRException(ResourceBundle.getBundle("com/sun/xml/registry/uddi/LocalStrings").getString("UDDIMapper:No_Root_ClassificationScheme_key_supplied"));
String pvalue = key.getId();
String name = null;
if (aConcept.getName() != null) {
name = aConcept.getName().getValue();
}
String value = aConcept.getValue();
if (name != null)
keyedRef.setKeyName(name);
else keyedRef.setKeyName("Unknown");
if (value != null)
keyedRef.setKeyValue(value);
else return null;
if (pvalue != null)
keyedRef.setTModelKey(pvalue);
else return null;
} else throw new JAXRException(ResourceBundle.getBundle("com/sun/xml/registry/uddi/LocalStrings").getString("UDDIMapper:No_Root_Concept_for_this_concept__") +
concept.getName());
}
return keyedRef;
}
KeyedReference classification2KeyedReference(ClassificationScheme scheme,
String vname, String value)
throws JAXRException {
KeyedReference keyedRef = null;
if (scheme != null) {
keyedRef = null;
keyedRef = objFactory.createKeyedReference();
Key key = scheme.getKey();
String pvalue = null;
if ( key != null)
pvalue = key.getId();
if (vname != null)
keyedRef.setKeyName(vname);
else keyedRef.setKeyName("");
if (value != null)
keyedRef.setKeyValue(value);
else throw new JAXRException(ResourceBundle.getBundle("com/sun/xml/registry/uddi/LocalStrings").getString("UDDIMapper:Classification_must_have_a_value_"));
if (pvalue != null)
keyedRef.setTModelKey(pvalue);
else throw new JAXRException(ResourceBundle.getBundle("com/sun/xml/registry/uddi/LocalStrings").getString("UDDIMapper:Parent_ClassificationScheme_key_must_have_a_value_"));
}
return keyedRef;
}
/**
*
* @param
* @return
* @exception
*
*/
Concept keyedReference2Concept(KeyedReference keyedRef)
throws JAXRException {
ConceptImpl concept = null;
String tModelKey = keyedRef.getTModelKey();
String keyName = keyedRef.getKeyName();
String value = keyedRef.getKeyValue();
//check to see if object in cache
concept =
new ConceptImpl(new KeyImpl(tModelKey), keyName, value);
concept.setName(new InternationalStringImpl(keyName));
concept.setIsRetrieved(true);
concept.setIsLoaded(false);
concept.setIsNew(false);
objectManager.addObjectToCache(concept, this.service.getServiceId());
return concept;
}
/**
*
* @param
* @return
* @exception
*
*/
Classification keyedReference2Classification(KeyedReference keyedRef)
throws JAXRException {
String tModelKey = keyedRef.getTModelKey();
String keyName = keyedRef.getKeyName();
String value = keyedRef.getKeyValue();
//always get ClassificationScheme from cache or from JAXRConcepts
ClassificationSchemeImpl scheme = (ClassificationSchemeImpl)
getConceptsManager().getClassificationSchemeById(tModelKey);
if (scheme == null) {
try {
scheme = (ClassificationSchemeImpl)
objectManager.fetchObjectFromCache(tModelKey);
} catch (ClassCastException cce) {
logger.finest("ClassCastException in keyedRef2Classification feting classificationScheme");
scheme = null;
}
}
if (scheme == null) {
scheme = new ClassificationSchemeImpl();
scheme.setKey(new KeyImpl(tModelKey));
scheme.setIsLoaded(false);
scheme.setIsNew(false);
scheme.setIsRetrieved(true);
objectManager.addObjectToCache(scheme, this.service.getServiceId());
}
ClassificationImpl classification = new ClassificationImpl();
classification.setClassificationScheme(scheme);
classification.setName(new InternationalStringImpl(keyName));
classification.setValue(value);
classification.setRegistryService(service);
return classification;
}
/**
*
* @param
* @return
* @exception
*
*/
KeyedReference key2KeyedReference(Key key) throws JAXRException {
KeyedReference keyedRef = null;
keyedRef = objFactory.createKeyedReference();
if (key != null) {
String pvalue = key.getId();
keyedRef.setTModelKey(pvalue);
}
return keyedRef;
}
/**
*
* @param
* @return
* @exception
*
*/
OverviewDoc externalLink2OverviewDoc(ExternalLink link, boolean publish) throws JAXRException {
ExternalLinkImpl linx = (ExternalLinkImpl)link;
OverviewDoc doc = null;
doc = objFactory.createOverviewDoc();
if (link != null) {
String url = linx.getExternalURI();
doc.setOverviewURL(url);
Collection description = getDescriptions(linx, publish);
doc.getDescription().addAll(description);
}
return doc;
}
/**
*
* @param
* @return
* @exception
*
*/
ExternalLink overviewDoc2ExternalLink(OverviewDoc doc) throws JAXRException {
ExternalLink link = null;
if (doc != null){
String urlString = doc.getOverviewURL();
Collection description = doc.getDescription();
InternationalString idesc =
descriptions2InternationalString(description);
link = new ExternalLinkImpl();
link.setValidateURI(false);
link.setExternalURI(urlString);
if (idesc != null)
link.setDescription(idesc);
}
return link;
}
Collection tModelInstanceInfos2SpecificationLinks(
Collection instanceInfo )
throws JAXRException {
Collection specificationLinks = new ArrayList();
Iterator iter = instanceInfo.iterator();
if (instanceInfo != null) {
while (iter.hasNext()){
SpecificationLinkImpl specLink =
new SpecificationLinkImpl();
specLink.setRegistryService(this.service);
TModelInstanceInfo info =
(TModelInstanceInfo)iter.next();
String tModelKey = info.getTModelKey(); //Concept
Collection descript = info.getDescription();
InstanceDetails instanceDetails =
info.getInstanceDetails();
ConceptImpl classConcept = null;
//look up in cache first
if (tModelKey != null) {
try {
classConcept = (ConceptImpl)objectManager.fetchObjectFromCache(tModelKey);
} catch (ClassCastException cce) {
logger.finest("ClassCastException in tModelInstanceInfos2SpecificationLinks fetch concept, continuing");
classConcept = null;
}
if (classConcept==null) {
classConcept =
new ConceptImpl();
classConcept.setRegistryService(this.service);
classConcept.setKey(new KeyImpl(tModelKey));
classConcept.setStatusFlags(true, false, false);
classConcept.setRegistryService(this.service);
objectManager.addObjectToCache(classConcept, this.service.getServiceId());
}
if (classConcept != null) {
specLink.setSpecificationObject(classConcept);
logger.finest("setting specification concept");
}
}
if (instanceDetails != null) {
logger.finest("have instance Details");
OverviewDoc oDoc = instanceDetails.getOverviewDoc();
String params = instanceDetails.getInstanceParms();
Collection instanceDescription = instanceDetails.getDescription();
InternationalString idesc =
descriptions2InternationalString(instanceDescription);
if (idesc != null)
specLink.setUsageDescription(idesc);
if (params != null) {
Collection up = new ArrayList();
up.add(params);
specLink.setUsageParameters(up);
}
//maps to ExternalLink
ExternalLinkImpl exLink = null;
if (oDoc != null) {
logger.finest("oDoc is found");
exLink = (ExternalLinkImpl)overviewDoc2ExternalLink(oDoc);
if (exLink == null)
logger.warning(ResourceBundle.getBundle("com/sun/xml/registry/uddi/LocalStrings").getString("UDDIMapper:Exlink_is_null"));
}
if (exLink != null) {
exLink.setRegistryService(this.service);
specLink.addExternalLink(exLink);
}
}
if (specLink != null) {
logger.finest("Adding specificationLink");
specificationLinks.add(specLink);
}
}
return specificationLinks;
}
return null;
}
/**
*
* @param
* @return
* @exception
*
*/
Organization businessInfo2Organization(BusinessInfo info)throws JAXRException {
OrganizationImpl org = null;
String businessKey = info.getBusinessKey();
//if using cache fetch
if (getConnection().useCache()) {
try {
org = (OrganizationImpl)
objectManager.fetchObjectFromCache(businessKey);
} catch (ClassCastException cce){
logger.finest("CLassCastException businessInfo2Org on fetch from cache, continuing");
org = null;
}
}
if (org == null) {
org = new OrganizationImpl();
org.setServiceId(this.service.getServiceId());
}
org.setRegistryService(this.service);
org.setIsRetrieved(false);
Collection name = info.getName();
InternationalString iname = names2InternationalString(name);
if (iname != null)
org.setName(iname);
if (businessKey != null)
org.setKey(new KeyImpl(businessKey));
Collection description = info.getDescription();
InternationalString idesc = descriptions2InternationalString(description);
if (idesc != null)
org.setDescription(idesc);
ServiceInfos serviceInfos = info.getServiceInfos();
if (serviceInfos != null) {
Collection serviceCollection = new ArrayList();
Collection sInfo = serviceInfos.getServiceInfo();
Iterator iter = sInfo.iterator();
while (iter.hasNext()){
ServiceImpl service =(ServiceImpl) serviceInfo2Service((ServiceInfo)iter.next());
if (service != null) {
service.setServiceId(this.service.getServiceId());
service.setRegistryService(this.service);
serviceCollection.add(service);
}
}
if (serviceCollection != null)
org.setServices(serviceCollection);
}
//always add skeleton object to for incremental loading
org.setIsRetrieved(true);
org.setIsNew(false);
//make sure org will be fetched from registry
if (!getConnection().useCache())
org.setIsLoaded(false);
objectManager.addObjectToCache(org, this.service.getServiceId());
return org;
}
/**
*
* @param
* @return
* @exception
*
*/
Collection relatedBusinessInfo2Associations(RelatedBusinessInfo info , Collection keys)
throws JAXRException {
OrganizationImpl relatedOrg = null;
OrganizationImpl originalOrg = null;
if (keys == null)
logger.finest("Keys are null");
//getOrgiginalOrg
if ((keys != null) && (!keys.isEmpty())){
Iterator keysIter = keys.iterator();
KeyImpl key = (KeyImpl)keysIter.next();
String originalOrgKeyId = key.getId();
originalOrg = (OrganizationImpl)
objectManager.fetchObjectFromCache(originalOrgKeyId);
if (originalOrg == null) {
originalOrg = (OrganizationImpl)
getRegistryObject(originalOrgKeyId, LifeCycleManager.ORGANIZATION);
}
}
String businessKey = info.getBusinessKey();
logger.finest("Related Business Key " + businessKey);
relatedOrg = (OrganizationImpl)
objectManager.fetchObjectFromCache(businessKey);
if (relatedOrg == null) {
relatedOrg = new OrganizationImpl();
relatedOrg.setServiceId(this.service.getServiceId());
relatedOrg.setRegistryService(this.service);
}
relatedOrg.setIsRetrieved(true);
relatedOrg.setIsNew(false);
//kw reordering
if (businessKey != null)
relatedOrg.setKey(new KeyImpl(businessKey));
Collection name = info.getName();
InternationalString iname = names2InternationalString(name);
if (iname != null)
relatedOrg.setName(iname);
if (businessKey != null)
relatedOrg.setKey(new KeyImpl(businessKey));
Collection description = info.getDescription();
InternationalString idesc = descriptions2InternationalString(description);
if (idesc != null)
relatedOrg.setDescription(idesc);
//shared relationships for the relatedOrg
Collection sharedRelationships =
info.getSharedRelationships();
Collection associations =
sharedRelationships2Associations(relatedOrg, originalOrg, sharedRelationships);
//need to add the association to eachOrg
//not sure I need to do this
//originalOrg.addAssociations(associations);
//only returns confirmedAssociations
//TBD need to go through orgs associations
//and make sure associations are as new as possible
//relatedOrg.addAssociations(associations);
//originalOrg.addAssociations(associations);
if (associations != null) {
logger.finest("RelatedBusinessInfo2Associations : associations = " + associations.size());
//need to add the associations somewhere
}
objectManager.addObjectToCache(relatedOrg, this.service.getServiceId());
return associations;
}
Collection sharedRelationships2Associations(Organization relatedOrg,
Organization originalOrg, Collection sharedRelationships)
throws JAXRException {
Collection associations = new ArrayList();
Iterator iter = sharedRelationships.iterator();
while (iter.hasNext()){
SharedRelationships sharedRelationship =
(SharedRelationships)iter.next();
Direction direction =
sharedRelationship.getDirection();
String directionType = direction.value();
Organization sourceObject = null;
Organization targetObject = null;
String sourceKeyId = null;
String targetKeyId = null;
if (directionType.equalsIgnoreCase("fromKey")) {
sourceObject = relatedOrg;
sourceKeyId = relatedOrg.getKey().getId();
targetObject = originalOrg;
targetKeyId = originalOrg.getKey().getId();
} else if (directionType.equalsIgnoreCase("toKey")) {
sourceObject = originalOrg;
sourceKeyId = originalOrg.getKey().getId();
targetObject = relatedOrg;
targetKeyId = relatedOrg.getKey().getId();
}
//from this we should know wheter this is the source or target object
Collection keyedReferences =
sharedRelationship.getKeyedReference();
Collection associationTypes =
keyedReferences2AssociationTypes(keyedReferences);
//for each of these associationTypes we want
//to create an association
Iterator typeIter = associationTypes.iterator();
while (typeIter.hasNext()) {
Concept type = (Concept)typeIter.next();
AssociationImpl association = new AssociationImpl();
association.setAssociationType(type);
association.setSourceObject(sourceObject);
association.setTargetObject(targetObject);
association.setRegistryService(this.service);
if (!sourceKeyId.equals(targetKeyId))
association.setIsExtramural(true);
KeyImpl associationKey =
buildAssociationKey(sourceKeyId, targetKeyId, type.getValue());
association.setKey(associationKey);
//association has to be confirmed by both source and target
//to be seen with this call
association.setIsConfirmedBySourceOwner(true);
association.setIsConfirmedByTargetOwner(true);
associations.add(association);
}
}
return associations;
}
Collection keyedReferences2AssociationTypes(Collection keyedReferences)
throws JAXRException {
Collection associationTypes = null;
if (keyedReferences != null) {
Iterator iter = keyedReferences.iterator();
associationTypes = new ArrayList();
while (iter.hasNext()){
KeyedReference keyedRef = (KeyedReference)iter.next();
String key = keyedRef.getTModelKey();
String name = keyedRef.getKeyName();
String value = keyedRef.getKeyValue();
String newName = null;
String newValue = null;
//do mapping for name/value
if (value.equals(PEER_TO_PEER)){
newName = RELATES_TO;
newValue = RELATES_TO;
} else if (value.equals(IDENTITY)){
newName = EQUIVALENT_TO;
newValue = EQUIVALENT_TO;
} else if (value.equals(PARENT_TO_CHILD)) {
newName = HAS_CHILD;
newValue = HAS_CHILD;
} else {
newName = name;
newValue = value;
}
//need to get predefined concept ref
ConceptImpl concept = new ConceptImpl();
if (name != null){
concept.setName(new InternationalStringImpl(newName));
}
if (value != null){
concept.setValue(newValue);
}
if (key != null) {
concept.setKey(new KeyImpl(key));
}
associationTypes.add(concept);
}
}
return associationTypes;
}
/**
*
* @param
* @return
* @exception
*
*/
Organization businessEntity2Organization(BusinessEntity entity)
throws JAXRException {
if (entity == null)
return null;
//retrieve it from the cache
OrganizationImpl org = null;
String businessKey = entity.getBusinessKey();
//always retrieve skeleton object
try {
org = (OrganizationImpl)
objectManager.fetchObjectFromCache(businessKey);
} catch (ClassCastException cce) {
logger.finest("ClassCastException fetching org in businessEntity2Org, continuing");
}
if (org == null) {
org = new OrganizationImpl();
org.setServiceId(this.service.getServiceId());
org.setRegistryService(this.service);
}
org.setIsRetrieved(true);
org.setIsNew(false);
org.setIsLoaded(true);
//slots on extensible Object
String operator = entity.getOperator();
SlotImpl operatorSlot = null;
if (operator != null){
operatorSlot = new SlotImpl(OPERATOR, operator, null);
if (operatorSlot != null)
org.addSlot(operatorSlot);
}
String authorizedName = entity.getAuthorizedName();
SlotImpl authorizedNameSlot = null;
if (authorizedName != null){
authorizedNameSlot = new SlotImpl(AUTHORIZED_NAME, authorizedName, null);
if (authorizedNameSlot != null)
org.addSlot(authorizedNameSlot);
}
Collection businessName = entity.getName();
Collection description = entity.getDescription();
Contacts contacts = entity.getContacts();
BusinessServices businessServices = entity.getBusinessServices();
Collection identifiers = null;
IdentifierBag ibag = entity.getIdentifierBag();
if (ibag != null) {
identifiers = identifierBag2ExternalIdentifiers(ibag);
if (identifiers != null)
org.setExternalIdentifiers(identifiers);
}
Collection classifications = null;
CategoryBag cbag = entity.getCategoryBag();
if (cbag != null) {
classifications = categoryBag2Classifications(cbag);
if (classifications != null) {
org.setClassifications(classifications);
}
}
Collection externalLinks = null;
DiscoveryURLs urls = entity.getDiscoveryURLs();
if (urls != null) {
externalLinks = discoveryURLs2ExternalLinks(urls);
if (externalLinks != null) {
org.setExternalLinks(externalLinks);
}
}
if (businessKey != null)
org.setKey(new KeyImpl(businessKey));
if (businessName != null) {
InternationalString iname = names2InternationalString(businessName);
if (iname != null)
org.setName(iname);
}
if (description != null) {
InternationalString idesc = descriptions2InternationalString(description);
if (idesc != null)
org.setDescription(idesc);
}
if (businessServices != null) {
Collection businessService =
businessServices.getBusinessService();
//check into this service collection bit -
Collection serviceCollection = new ArrayList();
if (businessService != null) {
Iterator iter = businessService.iterator();
while (iter.hasNext()){
Service service = businessService2Service((BusinessService)iter.next());
if (service != null) {
serviceCollection.add(service);
}
}
if (serviceCollection != null)
org.setServices(serviceCollection);
}
}
if (contacts != null) {
Collection users = contacts.getContact();
if (users != null) {
Iterator iter = users.iterator();
Collection ousers = org.getUsers();
org.removeUsers(ousers);
int i = 0;
while (iter.hasNext()){
UserImpl user = (UserImpl)contact2User((Contact)iter.next());
user.setIsLoaded(true);
user.setRegistryService(this.service);
if (user != null) {
user.setSubmittingOrganization(org);
user.setOrganization(org);
}
if (i == 0) {
org.setPrimaryContact(user);
i++;
//adds to user collection
} else {
org.addUser(user);
}
}
}
}
objectManager.addObjectToCache(org, service.getServiceId());
return org;
}
Collection discoveryURLs2ExternalLinks(DiscoveryURLs urls)
throws JAXRException {
Collection externalLinks = null;
Collection dUrls = urls.getDiscoveryURL();
if (dUrls != null) {
externalLinks = new ArrayList();
Iterator iter = dUrls.iterator();
while (iter.hasNext()){
DiscoveryURL url = (DiscoveryURL)iter.next();
String uri = url.getValue();
String type = url.getUseType();
ExternalLinkImpl link = new ExternalLinkImpl();
link.setRegistryService(this.service);
link.setValidateURI(false);
if (uri != null)
link.setExternalURI(uri);
if (type != null)
link.setName(new InternationalStringImpl(type));
else link.setName(new InternationalStringImpl("ExternalLink"));
externalLinks.add(link);
}
}
return externalLinks;
}
User contact2User(Contact user) throws JAXRException {
if (user != null) {
String useType = user.getUseType();
Collection descriptions = user.getDescription();
String name = user.getPersonName();
Collection phone = user.getPhone();
Collection email = user.getEmail();
Collection address = user.getAddress();
UserImpl theUser = new UserImpl();
if (name != null)
theUser.setPersonName(new PersonNameImpl(name));
if (useType != null)
theUser.setType(useType);
if (descriptions != null) {
InternationalString description =
descriptions2InternationalString(descriptions);
if (description != null)
theUser.setDescription(description);
}
if (phone != null) {
Collection telephoneNumbers = phones2TelephoneNumbers(phone);
theUser.setTelephoneNumbers(telephoneNumbers);
}
if (email != null) {
Collection emails = emails2EmailAddresses(email);
if (emails.size() > 0)
theUser.setEmailAddresses(emails);
}
if (address != null) {
Collection postalAddresses = addresses2PostalAddresses(address);
if (postalAddresses.size() > 0)
theUser.setPostalAddresses(postalAddresses);
}
return theUser;
}
return null;
}
private PostalAddress address2PostalAddress(Address address)
throws JAXRException {
PostalAddress postalAddress = null;
if (address != null) {
initPostalSchemes();
Collection addressLines = address.getAddressLine();
String postalSchemeId = address.getTModelKey();
logger.finest("PostalSchemeId retrieved = " + postalSchemeId);
if (postalSchemeId != null) {
//we have a postalSchemeId - does it match a PostalScheme
//getPostalSchemeById(StringId)
//for now just temporary
ClassificationScheme defaultScheme =
service.getDefaultPostalScheme();
if (defaultScheme != null) {
if (defaultScheme.getKey().getId().equalsIgnoreCase(postalSchemeId)){
//we're half way there
//is there a semantic equivalence defined?
if (postalAddressMap == null) {
mapPostalAddressAttributes(defaultScheme);
}
if (postalAddressMap == null) {
logger.warning(ResourceBundle.getBundle("com/sun/xml/registry/uddi/LocalStrings").getString("UDDIMapper:No_PostalAddressMapping"));
} else {
postalAddress =
addressLines2PostalAddressEquivalence(defaultScheme, addressLines);
}
}
}
} //if postal address Id is null we didn't find any equivalence map to slot
if ((postalAddress == null) && (addressLines != null)) {
postalAddress = new PostalAddressImpl();
SlotImpl addressSlot = new SlotImpl();
addressSlot.setName("addressLines");
Collection values = new ArrayList();
Iterator liter = addressLines.iterator();
while (liter.hasNext()){
values.add(((AddressLine)liter.next()).getValue());
}
addressSlot.setValues(values);
postalAddress.addSlot(addressSlot);
}
String useType = address.getUseType();
if (useType != null)
postalAddress.setType(useType);
String sortCode = address.getSortCode();
if (sortCode != null) {
SlotImpl sortCodeSlot = new SlotImpl();
sortCodeSlot.setName("sortCode");
Collection values = new ArrayList();
values.add(sortCode);
sortCodeSlot.setValues(values);
postalAddress.addSlot(sortCodeSlot);
}
} //address not null
return postalAddress;
}
PostalAddress addressLines2PostalAddressEquivalence(ClassificationScheme defaultScheme,
Collection addressLines) throws JAXRException {
SlotImpl addressSlot = null;
Collection values = null;
PostalAddress postalAddress = null;
if (postalAddressMap == null)
return null;
if ((defaultScheme != null) &&
(addressLines != null)) {
//getDefaultPostalSchemeConcepts
Collection defaultChildren = defaultScheme.getChildrenConcepts();
Iterator liter = addressLines.iterator();
while (liter.hasNext()){
//is there an equivalence with each of the keyValues of the address lines?
AddressLine line = (AddressLine)liter.next();
String keyValue = line.getKeyValue();
String keyName = line.getKeyName();
if (keyValue != null) {
//is there a defaultChild with this value?
Iterator childIter = defaultChildren.iterator();
while (childIter.hasNext()) {
//this is the equivalent child
Concept child = (Concept)childIter.next();
//default postal equivalent keyvalue matched default postalScheme concept
//does the postal AddressMap contain the equivalent value?
if (postalAddressMap.containsValue(child)) {
Set keys = postalAddressMap.keySet();
Iterator kiter = keys.iterator();
String childValue = child.getValue();
while (kiter.hasNext()) {
//this is the jaxr equivalent ConceptValue
String jaxrName = (String)kiter.next();
//this is the equivalent value
//this is the user scheme value
Concept value = (Concept)postalAddressMap.get(jaxrName);
//if this matches a defaultSchemeChild
if (value.getValue().equalsIgnoreCase(keyValue)) {
//we've got a match - the jaxr keyValue
//is the jaxrattribute that we match to
if (postalAddress == null) {
postalAddress = new PostalAddressImpl();
}
postalAddress =
mapEquivalentLine2PostalAttribute(jaxrName,
line, postalAddress);
break;
}
}
}
//}
}
} else if (keyName != null) {
//does keyName map to any jaxrChildName
ClassificationScheme jaxrPostalScheme =
findClassificationSchemeByName(null,"PostalAddressAttributes");
//assume exact match
if (jaxrPostalScheme != null) {
Collection children = jaxrPostalScheme.getChildrenConcepts();
Iterator citer = children.iterator();
while (citer.hasNext()) {
Concept child = (Concept) citer.next();
String childName = child.getName().getValue();
if (childName.equalsIgnoreCase(keyName)) {
if (postalAddress == null) {
postalAddress = new PostalAddressImpl();
postalAddress =
mapEquivalentLine2PostalAttribute(keyName,
line, postalAddress);
}
}
}
}
} else { // map it to a slot
if (values == null)
values = new ArrayList();
values.add(line.getValue());
}
} //end of lines
if ((values != null) && (values.size() > 0)) {
if (postalAddress == null)
postalAddress = new PostalAddressImpl();
addressSlot = new SlotImpl();
addressSlot.setName("addressLines");
addressSlot.setValues(values);
postalAddress.addSlot(addressSlot);
}
return postalAddress;
}
return null;
}
PostalAddress mapEquivalentLine2PostalAttribute(String jaxrName, AddressLine line,
PostalAddress postalAddress)
throws JAXRException {
String content = line.getValue();
if (content != null) {
if (jaxrName.equalsIgnoreCase(STREETNUMBER)) {
postalAddress.setStreetNumber(content);
} else if (jaxrName.equalsIgnoreCase(STREET)) {
postalAddress.setStreet(content);
} else if (jaxrName.equalsIgnoreCase(CITY)) {
postalAddress.setCity(content);
} else if (jaxrName.equalsIgnoreCase(STATE)) {
postalAddress.setStateOrProvince(content);
} else if (jaxrName.equalsIgnoreCase(POSTALCODE)) {
postalAddress.setPostalCode(content);
} else if (jaxrName.equalsIgnoreCase(COUNTRY)) {
postalAddress.setCountry(content);
} else {
logger.warning(ResourceBundle.getBundle("com/sun/xml/registry/uddi/LocalStrings").getString("UDDIMapper:No_matching_postal_Address_Attribute"));
}
}
return postalAddress;
}
Collection addresses2PostalAddresses(Collection addresses)
throws JAXRException {
Collection postalAddresses = null;
if (addresses != null) {
postalAddresses = new ArrayList();
Iterator iter = addresses.iterator();
while (iter.hasNext()){
PostalAddress postalAddress =
address2PostalAddress((Address)iter.next());
if (postalAddress != null)
postalAddresses.add(postalAddress);
}
return postalAddresses;
}
return null;
}
Collection emails2EmailAddresses(Collection emails) throws JAXRException {
Collection emailAddresses = null;
if (emails != null) {
emailAddresses = new ArrayList();
Iterator iter = emails.iterator();
while (iter.hasNext()){
Email email = (Email)iter.next();
String emailAddress = email.getValue();
String useType = email.getUseType();
EmailAddressImpl address = new EmailAddressImpl();
if (emailAddress != null) {
address.setAddress(emailAddress);
}
if (useType != null) {
address.setType(useType);
}
emailAddresses.add(address);
}
}
return emailAddresses;
}
Collection phones2TelephoneNumbers(Collection phones) throws JAXRException {
Collection numbers = null;
if (phones != null) {
numbers = new ArrayList(phones.size());
Iterator iter = phones.iterator();
while (iter.hasNext()){
TelephoneNumberImpl telephone = new TelephoneNumberImpl();
Phone phone = (Phone)iter.next();
String number = phone.getValue();
if (number != null)
telephone.setNumber(number);
String useType = phone.getUseType();
if (useType != null) {
telephone.setType(useType);
}
numbers.add(telephone);
}
return numbers;
}
return null;
}
/**
*
* @param
* @return
* @exception
*
*/
ServiceBinding bindingTemplate2ServiceBinding(BindingTemplate template)
throws JAXRException {
ServiceBindingImpl sBinding = null;
ServiceImpl sService = null;
String tkey = template.getBindingKey();
String skey = template.getServiceKey();
//always fetch skeleton service
try {
sService = (ServiceImpl)
objectManager.fetchObjectFromCache(skey);
} catch (ClassCastException cce) {
logger.finest("ClassCastException in bindingTemplate2ServiceBinding fetch service, continuing");
sService = null;
}
try {
sBinding = (ServiceBindingImpl)
objectManager.fetchObjectFromCache(tkey);
} catch (ClassCastException cce) {
logger.finest("ClassCastException in bindingTemplate2ServicBinding fetchin serviceBinding, continuing");
sBinding = null;
}
if (sBinding == null) {
sBinding = new ServiceBindingImpl();
sBinding.setServiceId(this.service.getServiceId());
}
sBinding.setRegistryService(this.service);
sBinding.setIsLoaded(true);
sBinding.setIsRetrieved(false);
sBinding.setIsNew(false);
if (sService != null) {
sService.setIsRetrieved(true);
sBinding.setService(sService);
}
sBinding.setKey(new KeyImpl(tkey));
Collection description = template.getDescription();
InternationalString idesc = descriptions2InternationalString(description);
sBinding.setDescription(idesc);
//need to do lang
AccessPoint accessPoint = null;
HostingRedirector redirector = null;
if (template != null) {
accessPoint = template.getAccessPoint();
redirector = template.getHostingRedirector();
}
//this can only be oneor the other
if (accessPoint != null) {
URLType type =
accessPoint.getURLType();
if (type != null) {
Concept urlTypeConcept = urlType2Concept(type);
ClassificationImpl classification = new ClassificationImpl(urlTypeConcept);
classification.setRegistryService(this.service);
sBinding.addClassification(classification);
}
String uri = accessPoint.getValue();
if (uri != null) {
sBinding.setValidateURI(false);
sBinding.setAccessURI(uri);
}
}
if (redirector != null) {
ServiceBinding redirectorBinding =
hostingRedirector2TargetBinding(redirector);
if (redirectorBinding != null) {
((ServiceBindingImpl)redirectorBinding).setRegistryService(this.service);
sBinding.setTargetBinding(redirectorBinding);
}
}
//this can only be one or the other
TModelInstanceDetails tModelInstanceDetails =
template.getTModelInstanceDetails();
if (tModelInstanceDetails != null) {
Collection instanceInfo =
tModelInstanceDetails.getTModelInstanceInfo();
if (instanceInfo != null) {
logger.finest("Got InstanceInfo");
Collection specLinks =
tModelInstanceInfos2SpecificationLinks(instanceInfo);
if ((specLinks != null) && (specLinks.size() > 0))
sBinding.setSpecificationLinks(specLinks);
}
}
if (this.getConnection().useCache())
objectManager.addObjectToCache(sBinding, this.service.getServiceId());
else
objectManager.removeObjectFromCache(sBinding.getKey().getId());
return sBinding;
}
/**
*
* @param
* @return
* @exception
*
*/
Service serviceInfo2Service(ServiceInfo sInfo) throws JAXRException {
ServiceImpl rservice = null;
String serviceKey = sInfo.getServiceKey();
String businessKey = sInfo.getBusinessKey();
OrganizationImpl sOrg = null;
//only do fetch if using cache
if (getConnection().useCache()) {
try {
rservice = (ServiceImpl)
objectManager.fetchObjectFromCache(serviceKey);
} catch (ClassCastException cce) {
logger.finest("ClassCastException on fetch of service, serviceInfo2Service, continuing");
rservice = null;
}
}
if (rservice == null) {
rservice = new ServiceImpl();
rservice.setServiceId(this.service.getServiceId());
}
rservice.setRegistryService(this.service);
rservice.setIsRetrieved(false);
rservice.setKey(new KeyImpl(serviceKey));
OrganizationImpl registryObject = null;
if (businessKey != null){
try {
registryObject = (OrganizationImpl)
objectManager.fetchObjectFromCache(businessKey);
} catch (ClassCastException cce) {
logger.finest("ClassCastException fetching providing Org, serviceInfo2Service, continuing");
registryObject = null;
}
if (registryObject == null) {
registryObject = new OrganizationImpl();
registryObject.setKey(new KeyImpl(businessKey));
registryObject.setIsRetrieved(true);
registryObject.setRegistryService(this.service);
registryObject.setIsNew(false);
//always add skeleton object for incremental loading
objectManager.addObjectToCache(registryObject, this.service.getServiceId());
}
if (registryObject != null) {
rservice.setProvidingOrganization(registryObject);
}
}
Collection name = sInfo.getName();
InternationalString iname = names2InternationalString(name);
rservice.setName(iname);
//always add skeleton object for incremental loading
rservice.setIsRetrieved(true);
rservice.setIsNew(false);
//make sure that object is fetched from registry for loading
if (!getConnection().useCache())
rservice.setIsLoaded(false);
objectManager.addObjectToCache(rservice, this.service.getServiceId());
return rservice;
}
/**
*
* @param
* @return
* @exception
*
*/
Service businessService2Service(BusinessService bService) throws JAXRException {
ServiceImpl service = null;
String bServiceKey = bService.getServiceKey();
String businessKey = bService.getBusinessKey();
//always get skeleton service for incremental loading
try {
service = (ServiceImpl)
objectManager.fetchObjectFromCache(bServiceKey);
} catch (ClassCastException cce) {
logger.finest("ClassCastException in serviceDetail2Service fetching service, continuing");
service = null;
}
if (service == null) {
service = new ServiceImpl();
service.setServiceId(this.service.getServiceId());
service.setRegistryService(this.service);
}
service.setIsRetrieved(true);
service.setIsNew(false);
service.setIsLoaded(true);
OrganizationImpl registryObject = null;
//always try to fetch skeleton
try {
registryObject = (OrganizationImpl)
objectManager.fetchObjectFromCache(businessKey);
} catch (ClassCastException cce) {
logger.finest("ClassCastException fething org in serviceDetail2Service, continuing");
registryObject = null;
}
if (registryObject == null){
registryObject = new OrganizationImpl();
registryObject.setKey(new KeyImpl(businessKey));
registryObject.setRegistryService(this.service);
registryObject.setIsRetrieved(true);
registryObject.setIsNew(false);
registryObject.setIsLoaded(false);
//this is skeleton, add for incremental loading
objectManager.addObjectToCache(registryObject, this.service.getServiceId());
}
service.setProvidingOrganization(registryObject);
KeyImpl serviceKey = new KeyImpl(bServiceKey);
service.setKey(serviceKey);
Collection description = bService.getDescription();
InternationalString idesc =
descriptions2InternationalString(description);
if (idesc != null)
service.setDescription(idesc);
Collection bName = bService.getName();
InternationalString iname = names2InternationalString(bName);
if (iname != null)
service.setName(iname);
CategoryBag cbag = bService.getCategoryBag();
Collection classifications = categoryBag2Classifications(cbag);
if ((classifications != null) && (classifications.size() > 0))
service.setClassifications(classifications);
BindingTemplates bTemplates = bService.getBindingTemplates();
if (bTemplates != null) {
Collection template = bTemplates.getBindingTemplate();
Collection bindings = new ArrayList();
if (template != null) {
Iterator iter = template.iterator();
while (iter.hasNext()){
ServiceBindingImpl sBinding = (ServiceBindingImpl)
bindingTemplate2ServiceBinding((BindingTemplate)iter.next());
if (sBinding != null) {
objectManager.addObjectToCache(sBinding, this.service.getServiceId());
sBinding.setServiceId(this.service.getServiceId());
sBinding.setRegistryService(this.service);
sBinding.setStatusFlags(true, true, false);
bindings.add(sBinding);
}
}
//todo: confusing to me?
Collection currentBindings = service.getServiceBindings();
service.removeServiceBindings(currentBindings);
service.addServiceBindings(bindings);
}
}
if (this.getConnection().useCache())
objectManager.addObjectToCache(service, this.service.getServiceId());
else
objectManager.removeObjectFromCache(service.getKey().getId());
return service;
}
/**
*
* @param
* @return
* @exception
*
*/
//what if disposition report is success
//may nee keys here
//todo: this is related to disposition report
BulkResponse results2BulkResponse(Collection results,
Collection keys, String type) throws JAXRException {
BulkResponseImpl br = new BulkResponseImpl();
Collection exceptions = new ArrayList();
//no matter what the keys are returned
if (keys != null)
br.setCollection(keys);
if ((results != null) && (!results.isEmpty())) {
Iterator iter = results.iterator();
while (iter.hasNext()){
Result result = (Result)iter.next();
KeyType keyType = result.getKeyType();
int errNo = result.getErrno();
ErrInfo errInfo =
result.getErrInfo();
String errCode = "";
String content = "";
if (errInfo != null) {
errCode = errInfo.getErrCode();
content = errInfo.getValue();
if (errCode.equalsIgnoreCase("E_success")) {
if (type.equals(DELETE)) getObjectManager().removeObjectsFromCache(keys);
return br;
}
} else if (errNo == 0) {
if (type.equals(DELETE)) getObjectManager().removeObjectsFromCache(keys);
return br;
}
//fix keyType
String message = ResourceBundle.getBundle("com/sun/xml/registry/uddi/LocalStrings").getString("UDDIMapper:UDDI_DispositionReport:_Error_Code_=_") + errCode +
ResourceBundle.getBundle("com/sun/xml/registry/uddi/LocalStrings").getString("UDDIMapper:;_Error_Message_=_") + content +
ResourceBundle.getBundle("com/sun/xml/registry/uddi/LocalStrings").getString("UDDIMapper:;_Error_Number_=_") + errNo;
JAXRException ne = null;
if (type.equals(FIND)) {
ne = new FindException(message);
} else if (type.equals(SAVE)) {
ne = new SaveException(message);
} else if (type.equals(DELETE)){
ne = new DeleteException(message);
}
br.addException(ne);
}
}
return br;
}
/**
* gets the specified RegistryObjects
*
* @return BulkResponse containing Collection of RegistryObjects.
*/
//needs modification
//now level 1
//todo: take it out
BulkResponse getRegistryObjects(Collection objectKeys) throws JAXRException {
HashMap sortedKeys = sortObjectType(objectKeys);
Collection unknownKeys = (Collection)sortedKeys.get("unknown");
Collection tempKeys = null;
Collection responses = new ArrayList();
tempKeys = (Collection)sortedKeys.get("orgs");
if (tempKeys != null) {
tempKeys.addAll(unknownKeys);
if ((tempKeys != null) && (!tempKeys.isEmpty())) {
responses.add(getOrganizations(tempKeys));
}
}
if (tempKeys != null) {
tempKeys = (Collection)sortedKeys.get("services");
tempKeys.addAll(unknownKeys);
if ((tempKeys != null) && (!tempKeys.isEmpty())) {
responses.add(getServices(tempKeys));
}
}
if (tempKeys != null) {
tempKeys = (Collection)sortedKeys.get("bindings");
tempKeys.addAll(unknownKeys);
if ((tempKeys != null) && (!tempKeys.isEmpty())) {
responses.add(getServiceBindings(tempKeys));
}
}
if (tempKeys != null) {
tempKeys = (Collection)sortedKeys.get("concepts");
tempKeys.addAll(unknownKeys);
if ((tempKeys != null) && (!tempKeys.isEmpty())) {
responses.add(getConcepts(tempKeys));
}
}
if (tempKeys != null) {
tempKeys = (Collection)sortedKeys.get("schemes");
tempKeys.addAll(unknownKeys);
if ((tempKeys != null) && (!tempKeys.isEmpty())) {
responses.add(getConcepts(tempKeys));
}
}
return BulkResponseImpl.combineBulkResponses(responses);
}
BulkResponse getRegistryObjects(Collection objectKeys, String objectType)
throws JAXRException {
BulkResponse bulkResponse = null;
if (objectType.equals(LifeCycleManager.ORGANIZATION))
bulkResponse = bulkResponse = getOrganizations(objectKeys);
else if (objectType.equals(LifeCycleManager.SERVICE))
bulkResponse = getServices(objectKeys);
else if (objectType.equals(LifeCycleManager.SERVICE_BINDING))
bulkResponse = getServiceBindings(objectKeys);
else if (objectType.equals(LifeCycleManager.CONCEPT) ||
objectType.equals(LifeCycleManager.CLASSIFICATION_SCHEME))
bulkResponse = getConcepts(objectKeys);
else
throw new UnexpectedObjectException(ResourceBundle.getBundle("com/sun/xml/registry/uddi/LocalStrings").getString("UDDIMapper:Unknown_Object_Type_") + objectType + ResourceBundle.getBundle("com/sun/xml/registry/uddi/LocalStrings").getString("UDDIMapper:_cannot_retrieve"));
return bulkResponse;
}
//gets orgs and tmodels owned by caller
BulkResponse getRegistryObjects() throws JAXRException {
GetRegisteredInfo info = null;
info = objFactory.createGetRegisteredInfo();
info.setGeneric(UDDIVERSION);
String authInfo = null;
authInfo = getAuthInfo();
if (authInfo == null) {
throw new JAXRException(ResourceBundle.getBundle("com/sun/xml/registry/uddi/LocalStrings").getString("UDDIMapper:No_Credentials_present"));
}
info.setAuthInfo(authInfo);
return getProcessor().processRequestJAXB(info, true, null, FIND);
}
//todo - level 1 take out
RegistryObject getRegistryObject(RegistryObjectImpl ro) throws JAXRException {
BulkResponse bulkResponse = null;
BulkResponse associationBulkResponse = null;
if (ro == null)
return null;
Key objectKey = ro.getKey();
Collection tempKeys = new ArrayList();
tempKeys.add(objectKey);
if (ro instanceof OrganizationImpl) {
bulkResponse = getOrganizations(tempKeys);
} else if (ro instanceof ServiceImpl)
bulkResponse = getServices(tempKeys);
else if (ro instanceof ServiceBindingImpl)
bulkResponse = getServiceBindings(tempKeys);
else if (ro instanceof ConceptImpl)
bulkResponse = getConcepts(tempKeys);
else {
throw new UnexpectedObjectException(ResourceBundle.getBundle("com/sun/xml/registry/uddi/LocalStrings").getString("UDDIMapper:Unknown_Object_Type"));
}
if (bulkResponse.getExceptions() == null) {
//get the registryObject
Collection objs = bulkResponse.getCollection();
Iterator iter = objs.iterator();
if (iter.hasNext()){
RegistryObject registryObj = (RegistryObject)iter.next();
return registryObj;
}
}
return null;
}
//this is object key
RegistryObject getRegistryObject(String id, String objectType) throws JAXRException {
if (id==null)
return null;
BulkResponse bulkResponse = null;
RegistryObject ro =
objectManager.fetchObjectFromCache(id);
if (ro != null)
return ro;
KeyImpl objectKey = new KeyImpl(id);
Collection keys = new ArrayList();
keys.add(objectKey);
BulkResponse br = getRegistryObjects(keys, objectType);
if (br.getExceptions() == null) {
Collection registryObjects = br.getCollection();
RegistryObject registryObject = null;
//just test to see if registryObject size is 1
if (registryObjects.size() == 1) {
registryObject = (RegistryObject)
((ArrayList)registryObjects).get(0);
return registryObject;
}
} else {
//throw an exception
Collection exceptions = br.getExceptions();
Iterator eiter = exceptions.iterator();
if (eiter.hasNext()) {
throw (JAXRException)eiter.next();
}
}
return null;
}
String getAuthorizationToken(java.util.Set credentials)
throws JAXRException {
//on each invocation
String userName = null;
String password = null;
char [] passwd = null;
if ((credentials != null) && (credentials.size() > 0)) {
Iterator iter = credentials.iterator();
while (iter.hasNext()) {
Object obj = iter.next();
if (obj instanceof java.net.PasswordAuthentication) {
userName = ((PasswordAuthentication)obj).getUserName();
passwd = ((PasswordAuthentication)obj).getPassword();
password = new String(passwd);
}
}
}
if (userName == null || passwd == null)
throw new JAXRException(ResourceBundle.getBundle("com/sun/xml/registry/uddi/LocalStrings").getString("UDDIMapper:User_Name_and/or_Password_not_set."));
GetAuthToken getAuthToken = null;
getAuthToken = objFactory.createGetAuthToken();
getAuthToken.setGeneric(UDDIVERSION);
getAuthToken.setUserID(userName);
getAuthToken.setCred(password);
password = null;
BulkResponse br = null;
br = getProcessor().processRequestJAXB(getAuthToken, true, null, SAVE);
if (br.getExceptions() == null) {
Collection tokens = br.getCollection();
if (tokens.size() > 0)
return (String)((ArrayList)tokens).get(0);
} else {
//get the exception
Collection exceptions = br.getExceptions();
Iterator eiter = exceptions.iterator();
while (eiter.hasNext()) {
JAXRException exception = (JAXRException)eiter.next();
throw exception;
}
}
return null;
}
HashMap sortObjectType(Collection objectKeys)
throws UnexpectedObjectException, JAXRException {
Collection orgs = new ArrayList();
Collection services = new ArrayList();
Collection bindings = new ArrayList();
Collection concepts = new ArrayList();
Collection classificationSchemes = new ArrayList();
Collection unknown = new ArrayList();
HashMap sortedKeys = new HashMap();
Iterator iter = objectKeys.iterator();
while (iter.hasNext()) {
KeyImpl key = (KeyImpl) iter.next();
RegistryObject ro = (RegistryObject)
objectManager.fetchObjectFromCache(key.getId());
if (ro != null) {
if (ro instanceof Organization)
orgs.add(key);
else if (ro instanceof Service)
services.add(key);
else if (ro instanceof ServiceBinding)
bindings.add(key);
else if (ro instanceof Concept)
concepts.add(key);
else if (ro instanceof ClassificationScheme)
classificationSchemes.add(key);
else
throw new UnexpectedObjectException();
} else {
if ((key.getId().indexOf("uuid") != -1) || (key.getId().indexOf("UUID") != -1)){
concepts.add(key);
} else {
unknown.add(key);
}
}
}
sortedKeys.put("orgs",orgs);
sortedKeys.put("services",services);
sortedKeys.put("bindings",bindings);
sortedKeys.put("concepts",concepts);
sortedKeys.put("schemes",classificationSchemes);
sortedKeys.put("unknown",unknown);
return sortedKeys;
}
/**
* Saves one or more CataloguedObjects to the registry.
* If an object is not in the registry, then it is created in the registry.
* If it already exists in the registry and has been modified, then its
* state is updated (replaced) in the registry.
*
* - Capability Level: 0
*
* @return BulkResponse containing the Collection of registryObjects for those objects that were
* saved successfully and any SaveException that was encountered in case of partial commit.
*/
BulkResponse saveObjects(Collection registryObjects)
throws JAXRException {
Collection responses = new ArrayList();
Collection organizations = new ArrayList();
Collection services = new ArrayList();
Collection serviceBindings = new ArrayList();
Collection concepts = new ArrayList();
Collection classificationSchemes = new ArrayList();
Iterator iter = registryObjects.iterator();
while (iter.hasNext()) {
Object cObject = iter.next();
if (cObject instanceof Organization) {
organizations.add(cObject);
} else if (cObject instanceof Service) {
services.add(cObject);
} else if (cObject instanceof ServiceBinding) {
serviceBindings.add(cObject);
} else if (cObject instanceof Concept) {
concepts.add(cObject);
} else if (cObject instanceof ClassificationScheme) {
classificationSchemes.add(cObject);
} else {
throw new UnexpectedObjectException();
}
}
if (organizations.size() != 0)
responses.add(saveOrganizations(organizations));
if (services.size() != 0)
responses.add(saveServices(services));
if (serviceBindings.size() != 0)
responses.add(saveServiceBindings(serviceBindings));
if (concepts.size() != 0)
responses.add(saveConcepts(concepts));
if (classificationSchemes.size() != 0)
responses.add(saveClassificationSchemes(classificationSchemes));
return BulkResponseImpl.combineBulkResponses(responses);
}
/**
* Deletes one or more previously submitted objects from the registry.
*
*
* - Capability Level: 1
*
* @return BulkResponse containing the Collection of keys for those objects that were
* deleted successfully and any DeleteException that was encountered in case of partial commit.
*/
BulkResponse deleteObjects(Collection keys)
throws JAXRException {
HashMap sortedKeys = (HashMap)sortObjectType(keys);
Collection tempKeys = null;
Collection responses = new ArrayList();
tempKeys = (Collection)sortedKeys.get("orgs");
if ((tempKeys != null) && (!tempKeys.isEmpty())) {
responses.add(deleteOrganizations(tempKeys));
}
tempKeys = (Collection)sortedKeys.get("services");
if ((tempKeys != null) && (!tempKeys.isEmpty())) {
responses.add(deleteServices(tempKeys));
}
tempKeys = (Collection)sortedKeys.get("bindings");
if ((tempKeys != null) && (!tempKeys.isEmpty())) {
responses.add(deleteServiceBindings(tempKeys));
}
tempKeys = (Collection)sortedKeys.get("concepts");
if ((tempKeys != null) && (!tempKeys.isEmpty())) {
responses.add(deleteConcepts(tempKeys));
}
tempKeys = (Collection)sortedKeys.get("schemes");
if ((tempKeys != null) && (!tempKeys.isEmpty())) {
responses.add(deleteConcepts(tempKeys));
}
return BulkResponseImpl.combineBulkResponses(responses);
}
BulkResponse deleteObjects(Collection keys, String objectType)
throws JAXRException {
BulkResponse bulkResponse = null;
if (objectType.equals(LifeCycleManager.ORGANIZATION))
bulkResponse = deleteOrganizations(keys);
if (objectType.equals(LifeCycleManager.SERVICE))
bulkResponse = deleteServices(keys);
if (objectType.equals(LifeCycleManager.SERVICE_BINDING))
bulkResponse = deleteServiceBindings(keys);
if (objectType.equals(LifeCycleManager.CONCEPT) ||
objectType.equals(LifeCycleManager.CLASSIFICATION_SCHEME))
bulkResponse = deleteConcepts(keys);
return bulkResponse;
}
/**
* Not yet implemented.
*/
public BulkResponse saveAssociations(Collection associations,
boolean replace) throws JAXRException {
if (associations.size() == 0)
throw new JAXRException(ResourceBundle.getBundle("com/sun/xml/registry/uddi/LocalStrings").getString("ConnectionImpl:UDDIMapper:No_Associations_found_to_save"));
if (replace)
return saveAllAssociations(associations, replace);
AddPublisherAssertions publisherAssertions = null;
publisherAssertions = objFactory.createAddPublisherAssertions();
publisherAssertions.setGeneric(UDDIVERSION);
String authInfo = getAuthInfo();
if (authInfo == null) {
throw new JAXRException(ResourceBundle.getBundle("com/sun/xml/registry/uddi/LocalStrings").getString("UDDIMapper:No_Credentials_or_Invalid_Credential_Information"));
}
publisherAssertions.setAuthInfo(authInfo);
Collection assertions =
associations2PublisherAssertions(associations);
if (assertions != null)
publisherAssertions.getPublisherAssertion().addAll(assertions);
//save must return keys of those objects saved-
Collection associationKeys = new ArrayList();
Iterator associationIterator = associations.iterator();
while (associationIterator.hasNext()) {
KeyImpl associationKey = (KeyImpl) ((Association)associationIterator.next()).getKey();
associationKeys.add(associationKey);
}
//return disposition report with success
return getProcessor().processRequestJAXB(publisherAssertions, true, associationKeys, SAVE);
}
/**
* Not yet implemented.
*/
public BulkResponse saveAllAssociations(Collection associations,
boolean replace) throws JAXRException {
//this is if replace is true-
SetPublisherAssertions publisherAssertions = null;
publisherAssertions = objFactory.createSetPublisherAssertions();
publisherAssertions.setGeneric(UDDIVERSION);
String authInfo = getAuthInfo();
if (authInfo == null) {
throw new JAXRException(ResourceBundle.getBundle("com/sun/xml/registry/uddi/LocalStrings").getString("UDDIMapper:No_Credential_or_Invalid_Credential_Information"));
}
publisherAssertions.setAuthInfo(authInfo);
Collection assertions =
associations2PublisherAssertions(associations);
publisherAssertions.getPublisherAssertion().addAll(assertions);
//save must return keys of those objects saved-
Collection associationKeys = new ArrayList();
Iterator associationIterator = associations.iterator();
while (associationIterator.hasNext()) {
KeyImpl associationKey = (KeyImpl)
((Association)associationIterator.next()).getKey();
associationKeys.add(associationKey);
}
//return publisherAssertions
return getProcessor().processRequestJAXB(publisherAssertions, true, associationKeys, SAVE);
}
//finds all public associations - can be invoked by anyone
//case 1 - finds visible associations on the id specified where
//id is the sourceObject - from key in uddi speak
//returns associations with id = sourceId
//case 2 - finds visible associations on the id specified where
//id is the target id (to key in uddi speak
//returns associations with id = targetId
//case 3 - finds visible associations on the id specified where the
//source id represents the source object and the target Id
//represents the target Organization
//both to source and targetKey must match
public BulkResponse findAssociations(Collection findQualifiers,
String sourceKeyId,
String targetKeyId,
Collection associationTypes)
throws JAXRException {
int filteredOutcome = -1;
FindRelatedBusinesses relatedBusiness = null;
relatedBusiness = objFactory.createFindRelatedBusinesses();
relatedBusiness.setGeneric(UDDIVERSION);
String maxrows = this.getConnection().getMaxRows();
if (maxrows != null) {
int rows = Integer.parseInt(maxrows);
relatedBusiness.setMaxRows(rows);
}
if ((sourceKeyId == null) && (targetKeyId == null))
throw new JAXRException(ResourceBundle.getBundle("com/sun/xml/registry/uddi/LocalStrings").getString("UDDIMapper:RegistryObject_required_for_FindAssociatedObjects_method._"));
Collection keys = new ArrayList();
if ((sourceKeyId != null) && (targetKeyId != null)){
filteredOutcome = SOURCE_KEY_MUST_MATCH_SOURCE_AND_TARGET_KEY_MUST_MATCH_TARGET;
relatedBusiness.setBusinessKey(sourceKeyId);
keys.add(new KeyImpl(sourceKeyId));
} else if (sourceKeyId != null){
filteredOutcome = SOURCE_KEY_MUST_MATCH_SOURCE;
relatedBusiness.setBusinessKey(sourceKeyId);
keys.add(new KeyImpl(sourceKeyId));
} else if (targetKeyId != null) {
filteredOutcome = TARGET_KEY_MUST_MATCH_TARGET;
relatedBusiness.setBusinessKey(targetKeyId);
keys.add(new KeyImpl(targetKeyId));
} else
throw new JAXRException(ResourceBundle.getBundle("com/sun/xml/registry/uddi/LocalStrings").getString("UDDIMapper:Registry_Object_Key_required_for_findAssociatedObjects._"));
FindQualifiers fQualifiers =
strings2FindQualifiers(findQualifiers);
if (fQualifiers != null)
relatedBusiness.setFindQualifiers(fQualifiers);
Collection keyedReferences =
associationTypes2KeyedReferences(associationTypes);
Collection responses = new ArrayList();
BulkResponse bulkResponse = null;
if ((keyedReferences != null) && (!keyedReferences.isEmpty())) {
Iterator iter = keyedReferences.iterator();
while (iter.hasNext()){
relatedBusiness.setKeyedReference((KeyedReference)iter.next());
responses.add(getProcessor().processRequestJAXB(relatedBusiness, false, keys, FIND));
}
bulkResponse = BulkResponseImpl.combineBulkResponses(responses);
} else bulkResponse = getProcessor().processRequestJAXB(relatedBusiness, false, keys, FIND);
if (bulkResponse.getExceptions() != null)
return bulkResponse;
return helper.filterAssociations(bulkResponse, filteredOutcome, sourceKeyId, targetKeyId);
}
public BulkResponse findCallerAssociations(Collection findQualifiers,
Boolean callerIsConfirmed,
Boolean otherIsConfirmed,
Collection associationTypes)
throws JAXRException {
GetAssertionStatusReport getAssertionStatus = null;
getAssertionStatus = objFactory.createGetAssertionStatusReport();
String authInfo = null;
authInfo = getAuthInfo();
if (authInfo == null) {
throw new JAXRException(ResourceBundle.getBundle("com/sun/xml/registry/uddi/LocalStrings").getString("UDDIMapper:No_Credentials_present"));
}
getAssertionStatus.setGeneric(UDDIVERSION);
getAssertionStatus.setAuthInfo(authInfo);
//need to get All completion statuses
Collection responses = new ArrayList();
Collection statuses =
confirmationState2CompletionStatus(callerIsConfirmed, otherIsConfirmed);
fromKeysOwned = new ArrayList();
toKeysOwned = new ArrayList();
Iterator statusIter = statuses.iterator();
while (statusIter.hasNext()) {
String completionStatus = (String)statusIter.next();
getAssertionStatus.setCompletionStatus(completionStatus);
responses.add(getProcessor().processRequestJAXB(getAssertionStatus, true, null, FIND));
}
BulkResponse bResponse = BulkResponseImpl.combineBulkResponses(responses);
if (bResponse.getExceptions() == null) {
BulkResponse bulkResponse =
helper.filterAssociationsByConfirmationState(bResponse, callerIsConfirmed,
otherIsConfirmed,fromKeysOwned, toKeysOwned);
if (associationTypes != null) {
return helper.filterByAssociationTypes(bulkResponse, associationTypes);
}
else return bulkResponse;
}
return bResponse;
}
void confirmAssociation(Association association) throws JAXRException {
if (association != null) {
Collection associations = new ArrayList();
associations.add(association);
BulkResponse bulkResponse = saveAssociations(associations, false);
if (bulkResponse.getExceptions() != null){
Collection exceptions = bulkResponse.getExceptions();
Iterator exIter = exceptions.iterator();
if (exIter.hasNext()) {
throw (JAXRException)exIter.next();
}
}
}
}
void unConfirmAssociation(Association association) throws JAXRException {
if (association != null) {
Collection associationIds = new ArrayList();
String id = association.getKey().getId();
if (id != null) {
associationIds.add(id);
BulkResponse bulkResponse = deleteAssociations(associationIds);
if (bulkResponse.getExceptions() != null){
Collection exceptions = bulkResponse.getExceptions();
Iterator exIter = exceptions.iterator();
if (exIter.hasNext()) {
throw (JAXRException)exIter.next();
}
}
}
}
}
/**
* Not yet implemented.
*/
BulkResponse findSourceAssociations(Collection findQualifiers,
Boolean sourceObjectConfirmed,
Boolean targetObjectConfirmed,
Collection associationTypes) throws JAXRException {
GetPublisherAssertions getAssertions = null;
getAssertions = objFactory.createGetPublisherAssertions();
String authInfo = null;
authInfo = getAuthInfo();
if (authInfo == null) {
throw new JAXRException(ResourceBundle.getBundle("com/sun/xml/registry/uddi/LocalStrings").getString("UDDIMapper:No_Credentials_present"));
}
getAssertions.setGeneric(UDDIVERSION);
getAssertions.setAuthInfo(authInfo);
//may want to pass key
//return publisherAssertionMessage
return getProcessor().processRequestJAXB(getAssertions, true, null, FIND);
}
String makeRegistrySpecificRequest(String request, boolean secure)
throws JAXRException {
if (request == null)
return null;
logger.finest(request);
ByteArrayInputStream inputStream =
new ByteArrayInputStream(request.getBytes());
SOAPMessage msg = null;
try {
Object obj = MarshallerUtil.getInstance().jaxbUnmarshalInputStream(inputStream);
msg = MarshallerUtil.getInstance().jaxbMarshalObject(obj);
} catch (JAXBException jbe) {
throw new JAXRException(jbe);
}
Node response =
service.send(msg, secure);
Node resultNode = null;
String name = response.getNodeName();
if (((SOAPBody) response).hasFault()) {
if (response instanceof Element) {
NodeList list = ((Element) response).getElementsByTagName("dispositionReport");
if (list != null) {
int listLength = list.getLength();
if (listLength > 0) {
for (int i = 0; i < listLength; i++) {
Node n = list.item(i);
if (n != null) {
resultNode = n;
name = "dispositionReport";
break;
}
}
}
}
}
} else
resultNode = response.getFirstChild();
ByteArrayOutputStream outStream = null;
try {
Object obj = MarshallerUtil.getInstance().jaxbUnmarshalObject(resultNode);
outStream = (ByteArrayOutputStream) MarshallerUtil.getInstance().jaxbMarshalOutStream(obj);
} catch (JAXBException jbe) {
throw new JAXRException(jbe);
}
return outStream.toString();
}
Collection confirmationState2CompletionStatus( Boolean callerIsConfirmed,
Boolean otherIsConfirmed) {
Collection statuses = new ArrayList();
String completionStatus = null;
//due to bugs in registries we just get all states
if ((callerIsConfirmed != null) && (otherIsConfirmed != null)) {
if (callerIsConfirmed.booleanValue() && otherIsConfirmed.booleanValue())
statuses.add(COMPLETE);
else {
statuses.add(TO_KEY_INCOMPLETE);
statuses.add(FROM_KEY_INCOMPLETE); //filter by me complete
}
} else {
//anyCase with null have to do all three calles
statuses.add(COMPLETE);
statuses.add(TO_KEY_INCOMPLETE);
statuses.add(FROM_KEY_INCOMPLETE);
}
return statuses;
}
Collection associationKeys2PublisherAssertions(Collection associationKeys)
throws JAXRException {
Collection assertions = new ArrayList();
if (associationKeys != null){
Iterator keyIter = associationKeys.iterator();
try {
while(keyIter.hasNext()){
KeyImpl associationKey = (KeyImpl)keyIter.next();
PublisherAssertion assertion =
associationKey2PublisherAssertion(associationKey);
if (assertion != null)
assertions.add(assertion);
}
} catch (ClassCastException cce) {
throw new UnexpectedObjectException(ResourceBundle.getBundle("com/sun/xml/registry/uddi/LocalStrings").getString("UDDIMapper:Expected_javax.xml.infomodel.Key"), cce);
}
}
return assertions;
}
PublisherAssertion associationKey2PublisherAssertion(KeyImpl associationKey)
throws JAXRException {
PublisherAssertion assertion = null;
if (associationKey != null) {
String id = associationKey.getId();
if (id != null) {
StringTokenizer tokens = new StringTokenizer(id, ":", false);
if (tokens.countTokens() == 3) {
String sourceKeyId = tokens.nextToken();
String targetKeyId = tokens.nextToken();
String associationType = tokens.nextToken();
assertion = null;
assertion = objFactory.createPublisherAssertion();
assertion.setFromKey(sourceKeyId);
assertion.setToKey(targetKeyId);
KeyedReference keyedRef =
associationType2KeyedReference(associationType);
if (keyedRef != null)
assertion.setKeyedReference(keyedRef);
} else throw new JAXRException(ResourceBundle.getBundle("com/sun/xml/registry/uddi/LocalStrings").getString("UDDIMapper:Association_Key_id_is_incorrectly_formated_-_expected_SourceObjectKeyId:TargetObjectKeyId:AssociationTypeString._"));
}
}
return assertion;
}
Collection publisherAssertions2Associations(Collection publisherAssertions)
throws JAXRException {
Collection associations = null;
if (publisherAssertions != null) {
associations = new ArrayList();
Iterator iter = publisherAssertions.iterator();
while (iter.hasNext()){
Association association =
publisherAssertion2Association((PublisherAssertion)iter.next());
if (association != null) {
associations.add(association);
}
}
}
return associations;
}
Association publisherAssertion2Association(PublisherAssertion assertion)
throws JAXRException {
AssociationImpl association = null;
if (assertion != null) {
String fromKey = assertion.getFromKey();
String toKey = assertion.getToKey();
KeyedReference keyedRef = assertion.getKeyedReference();
Concept associationType =
keyedReference2AssociationType(keyedRef);
String associationTypeValue = associationType.getValue();
KeyImpl key =
buildAssociationKey(fromKey, toKey, associationTypeValue);
association = (AssociationImpl)
objectManager.fetchObjectFromCache(key.getId());
if (association == null) {
association = new AssociationImpl();
association.setServiceId(this.service.getServiceId());
association.setRegistryService(this.service);
}
if (!fromKey.equalsIgnoreCase(toKey))
association.setIsExtramural(true);
association.setAssociationType(associationType);
association.setIsRetrieved(true);
association.setIsNew(false);
if (key != null)
association.setKey(key);
//not fully loaded because no confirmation state
association.setIsLoaded(false);
Organization sourceObject = null;
if ((fromKey != null) && (association.getSourceObject() == null)) {
sourceObject = (Organization)
objectManager.fetchObjectFromCache(fromKey);
if (sourceObject == null)
sourceObject = (Organization)
getRegistryObject(fromKey, LifeCycleManager.ORGANIZATION);
if (sourceObject != null) {
association.setSourceObject(sourceObject);
sourceObject.addAssociation(association);
}
}
Organization targetObject = null;
if ((toKey != null) && (association.getTargetObject() == null)) {
targetObject = (Organization)
objectManager.fetchObjectFromCache(toKey);
if (targetObject == null)
targetObject = (Organization)
getRegistryObject(toKey, LifeCycleManager.ORGANIZATION);
if (targetObject != null){
association.setTargetObject(targetObject);
}
}
if (association != null)
objectManager.addObjectToCache(association, this.service.getServiceId());
return association;
}
return null;
}
Collection assertionStatusItems2Associations(Collection assertionStatusItems)
throws JAXRException {
Collection associations = null;
if (assertionStatusItems != null) {
associations = new ArrayList(assertionStatusItems.size());
Iterator iter = assertionStatusItems.iterator();
while (iter.hasNext()){
Association association =
assertionStatusItem2Association((AssertionStatusItem)iter.next());
if (association != null)
associations.add(association);
}
return associations;
}
return null;
}
Association assertionStatusItem2Association(AssertionStatusItem item)
throws JAXRException {
AssociationImpl association = null;
if (item != null) {
logger.finest("Got assertionStatusItem");
String completionStatus = item.getCompletionStatus();
String fromKey = item.getFromKey();
String toKey = item.getToKey();
KeyedReference keyedRef = item.getKeyedReference();
//need associationtype
Concept type = null;
if (keyedRef != null)
type =
keyedReference2AssociationType(keyedRef);
String typeString = null;
if (type != null) {
typeString = type.getValue();
}
KeyImpl key = buildAssociationKey(fromKey, toKey, typeString);
logger.finest("AssociationKeyIs " + key.getId());
//getAssociation from cache
association = (AssociationImpl)
objectManager.fetchObjectFromCache(key.getId());
if (association == null) {
association = new AssociationImpl();
association.setServiceId(this.service.getServiceId());
association.setRegistryService(this.service);
}
if (key != null)
association.setKey(key);
if (!fromKey.equalsIgnoreCase(toKey))
association.setIsExtramural(true);
association.setIsRetrieved(true);
association.setIsNew(false);
association.setIsLoaded(true);
KeysOwned keysOwned = item.getKeysOwned();
String ownedFromKey = keysOwned.getFromKey();
String ownedToKey = keysOwned.getToKey();
if (ownedFromKey != null)
fromKeysOwned.add(ownedFromKey);
else if (ownedToKey != null)
toKeysOwned.add(ownedToKey);
else {};
if (type != null)
association.setAssociationType(type);
//what do we do with get keys owned?
logger.finest("Setting confirmationState");
if (completionStatus.equals(COMPLETE)) {
association.setIsConfirmedBySourceOwner(true);
association.setIsConfirmedByTargetOwner(true);
} else if (completionStatus.equals(TO_KEY_INCOMPLETE)) {
association.setIsConfirmedBySourceOwner(true);
association.setIsConfirmedByTargetOwner(false);
} else if (completionStatus.equals(FROM_KEY_INCOMPLETE)) {
association.setIsConfirmedBySourceOwner(false);
association.setIsConfirmedByTargetOwner(true);
}
Organization sourceObject = null;
if ((fromKey != null) && (association.getSourceObject() == null)){
sourceObject = (Organization)
objectManager.fetchObjectFromCache(fromKey);
if (sourceObject == null)
sourceObject =(Organization)
getRegistryObject(fromKey, LifeCycleManager.ORGANIZATION);
if (sourceObject != null){
association.setSourceObject(sourceObject);
sourceObject.addAssociation(association);
}
}
Organization targetObject = null;
if ((toKey != null) && (association.getTargetObject() == null)) {
targetObject = (Organization)
objectManager.fetchObjectFromCache(toKey);
if (targetObject == null)
targetObject = (Organization)
getRegistryObject(toKey, LifeCycleManager.ORGANIZATION);
if (targetObject != null) {
association.setTargetObject(targetObject);
}
}
if (association != null)
objectManager.addObjectToCache(association,
this.service.getServiceId());
logger.finest("Returning association with a value");
return association;
}
return null;
}
KeyImpl buildAssociationKey(String fromKey, String toKey, String typeString) {
//now generate AssociationKey
StringBuffer keyBuf = new StringBuffer(400);
keyBuf.append(fromKey);
keyBuf.append(":");
keyBuf.append(toKey);
keyBuf.append(":");
keyBuf.append(typeString);
return new KeyImpl(keyBuf.toString());
}
Concept keyedReference2AssociationType(KeyedReference keyedRef)
throws JAXRException {
//tbd should be ref to predefined ones-
//actually we've got to mapp then to equivalent jaxr types
ConceptImpl type = null;
if (keyedRef != null) {
String key = keyedRef.getTModelKey();
String name = keyedRef.getKeyName();
String value = keyedRef.getKeyValue();
String newName = null;
String newValue = null;
if (value.equalsIgnoreCase(PEER_TO_PEER)){
newName = RELATES_TO;
newValue = RELATES_TO;
} else if (value.equalsIgnoreCase(IDENTITY)){
newName = EQUIVALENT_TO;
newValue = EQUIVALENT_TO;
} else if (value.equalsIgnoreCase(PARENT_TO_CHILD)){
newName = HAS_CHILD;
newValue = HAS_CHILD;
} else {
newName = name;
newValue = value;
}
type = new ConceptImpl();
if (key != null)
type.setKey(new KeyImpl(key));
if (name != null)
type.setName(new InternationalStringImpl(newName));
if (value != null)
type.setValue(newValue);
}
return type;
}
/**
* Not yet implemented.
*/
public BulkResponse getRegistryObjects(String objectType)
throws JAXRException {
BulkResponseImpl sbr = new BulkResponseImpl();
Collection organizations = new ArrayList();
Collection services = new ArrayList();
Collection serviceBindings = new ArrayList();
Collection concepts = new ArrayList();
Collection classificationSchemes = new ArrayList();
if (objectType != null) {
BulkResponse br = getRegistryObjects();
if (br != null) {
if (br.getExceptions() == null) {
Collection objects = br.getCollection();
Iterator iter = objects.iterator();
while (iter.hasNext()) {
Object cObject = iter.next();
if (cObject instanceof Organization) {
organizations.add(cObject);
} else if (cObject instanceof Service) {
services.add(cObject);
} else if (cObject instanceof ServiceBinding) {
serviceBindings.add(cObject);
} else if (cObject instanceof Concept) {
concepts.add(cObject);
} else if (cObject instanceof ClassificationScheme) {
classificationSchemes.add(cObject);
} else {
throw new UnexpectedObjectException();
}
}
//ok now got all the objects sorted -
//what am I looking for
if (objectType.equals(LifeCycleManager.ORGANIZATION)) {
sbr.setCollection(organizations);
} else if (objectType.equals(LifeCycleManager.SERVICE)) {
//get the services from the organization
sbr.setCollection( helper.getAllServicesFromOrganizations(organizations));
} else if (objectType.equals(LifeCycleManager.SERVICE_BINDING)) {
sbr.setCollection( helper.getAllServiceBindingsFromOrganizations(organizations));
} else if (objectType.equals(LifeCycleManager.CONCEPT)) {
sbr.setCollection(concepts);
} else if (objectType.equals(LifeCycleManager.CLASSIFICATION_SCHEME)) {
sbr.setCollection(classificationSchemes);
} else {
throw new JAXRException(ResourceBundle.getBundle("com/sun/xml/registry/uddi/LocalStrings").getString("UDDIMapper:Unexpected_Object_type"));
}
}
}
}
return sbr;
}
Collection associations2PublisherAssertions(Collection associations)
throws JAXRException {
Collection assertions = new ArrayList();
if (associations != null) {
Iterator associationIterator = associations.iterator();
try {
while (associationIterator.hasNext()) {
Association association = (Association)associationIterator.next();
PublisherAssertion assertion =
association2PublisherAssertion(association);
if (assertion != null)
assertions.add(assertion);
}
} catch (ClassCastException cce) {
throw new UnexpectedObjectException(ResourceBundle.getBundle("com/sun/xml/registry/uddi/LocalStrings").getString("UDDIMapper:Expected_Association_Object"), cce);
}
}
return assertions;
}
PublisherAssertion association2PublisherAssertion(Association association)
throws JAXRException {
Concept associationType = association.getAssociationType();
boolean isConfirmedBySourceOwner = association.isConfirmedBySourceOwner();
boolean isConfirmedByTargetOwner = association.isConfirmedByTargetOwner();
Organization sourceObject = null;
Organization targetObject = null;
try {
sourceObject = (Organization)association.getSourceObject();
targetObject = (Organization)association.getTargetObject();
} catch (ClassCastException cce) {
throw new UnexpectedObjectException(ResourceBundle.getBundle("com/sun/xml/registry/uddi/LocalStrings").getString("UDDIMapper:The_Source_Object_and_the_Target_Object_of_the_Association_must_be_of_type_Organization."), cce);
}
PublisherAssertion assertion = null;
assertion = objFactory.createPublisherAssertion();
//need to check to make sure key is not null
KeyImpl fromKey = (KeyImpl)sourceObject.getKey();
if (fromKey != null){
String fromKeyString = fromKey.getId();
if (fromKeyString != null)
assertion.setFromKey(fromKeyString);
else throw new JAXRException(ResourceBundle.getBundle("com/sun/xml/registry/uddi/LocalStrings").getString("UDDIMapper:Source_Object_key_id_needs_to_be_provided._"));
} else throw new JAXRException(ResourceBundle.getBundle("com/sun/xml/registry/uddi/LocalStrings").getString("UDDIMapper:Target_Object_Key_needs_to_be_provided._"));
KeyImpl toKey = (KeyImpl)targetObject.getKey();
if (toKey != null) {
String toKeyString = toKey.getId();
if (toKeyString != null)
assertion.setToKey(toKeyString);
else throw new JAXRException(ResourceBundle.getBundle("com/sun/xml/registry/uddi/LocalStrings").getString("UDDIMapper:Source_Object_key_id_needs_to_be_provided._"));
} else throw new JAXRException(ResourceBundle.getBundle("com/sun/xml/registry/uddi/LocalStrings").getString("UDDIMapper:Target_Object_Key_needs_to_be_provided._"));
if (associationType != null) {
KeyedReference keyedRef = associationType2KeyedReference(associationType);
if (keyedRef != null)
assertion.setKeyedReference(keyedRef);
} else {
throw new JAXRException(ResourceBundle.getBundle("com/sun/xml/registry/uddi/LocalStrings").getString("UDDIMapper:Association_type_required_to_save_an_Association_in_the_Registry"));
}
return assertion;
}
/**
*
* @param
* @return
* @exception
*
*/
//is this used
private Description getDescription(RegistryObject ro)
throws JAXRException{
Description description = null;
Description dupDescription = null;
String desc = null;
String lang = null;
try {
InternationalString iString = ro.getDescription();
if (iString != null) {
desc = iString.getValue();
}
} catch (JAXRException e) {
logger.log(Level.WARNING, e.getMessage(), e);
}
if (desc == null) {
desc = "";
}
description = null;
description = objFactory.createDescription();
dupDescription = objFactory.createDescription();
description.setValue(desc);
dupDescription.setValue(desc);
String lng = Locale.getDefault().getLanguage();
dupDescription.setLang(lng);
String cty = Locale.getDefault().getCountry();
if (cty != null && !cty.equals(""))
lng += "-"+cty;
description.setLang(lng);
return description;
}
private Name getName(RegistryObject ro) throws JAXRException{
Name name = null;
String sname = null;
try {
InternationalString iString = ro.getName();
sname = iString.getValue();
} catch (JAXRException e) {
logger.log(Level.WARNING, e.getMessage(), e);
}
if (sname == null) {
sname = "";
}
name = null;
name = objFactory.createName();
name.setValue(sname);
String lng = Locale.getDefault().getLanguage();
String cty = Locale.getDefault().getCountry();
if (cty != null && !cty.equals(""))
lng += "-"+cty;
name.setLang(lng);
return name;
}
private Collection getNames(RegistryObject ro, boolean publish) {
Collection names = null;
try {
InternationalString iString = ro.getName();
Collection localizedNames = iString.getLocalizedStrings();
names = localizedStrings2Names(localizedNames, publish);
} catch (JAXRException e) {
logger.log(Level.WARNING, e.getMessage(), e);
}
return names;
}
private Collection getDescriptions(RegistryObject ro, boolean publish) {
Collection descriptions = null;
try {
InternationalString iString = ro.getDescription();
Collection localizedDescriptions = iString.getLocalizedStrings();
descriptions = localizedStrings2Descriptions(localizedDescriptions, publish);
} catch (JAXRException e) {
logger.log(Level.WARNING, e.getMessage(), e);
}
return descriptions;
}
Collection internationalString2Names(InternationalString internationalString, boolean publish)
throws JAXRException{
Collection names = null;
try {
if (internationalString != null){
Collection localizedNames = internationalString.getLocalizedStrings();
names = localizedStrings2Names(localizedNames, publish);
}
} catch (JAXRException ex) {
throw new JAXRException(ex.getMessage(), ex);
}
return names;
}
Collection localizedStrings2Names(Collection localizedStrings, boolean publish)
throws JAXRException {
Collection names = new ArrayList();
if (localizedStrings != null) {
Iterator liter = localizedStrings.iterator();
while (liter.hasNext()) {
LocalizedString lstring = (LocalizedString)liter.next();
Locale locale = lstring.getLocale();
String nameValue = lstring.getValue();
String charset = lstring.getCharsetName();
Name name = null;
Name dupName = null;
name = objFactory.createName();
dupName = objFactory.createName();
name.setValue(nameValue);
dupName.setValue(nameValue);
if (locale == null) locale = Locale.getDefault();
String lang = locale.getLanguage().toLowerCase();
//do the dup with just lang
if (!publish){
dupName.setLang(lang);
names.add(dupName);
}
String country = locale.getCountry().toUpperCase();
if (country != null && !country.equals(""))
lang += "-"+country;
name.setLang(lang);
names.add(name);
}
}
return names;
}
Collection internationalString2Descriptions(InternationalString internationalString, boolean publish)
throws JAXRException{
Collection descriptions = null;
try {
if (internationalString != null){
Collection localizedDescriptions = internationalString.getLocalizedStrings();
descriptions = localizedStrings2Descriptions(localizedDescriptions, publish);
}
} catch (JAXRException ex) {
throw new JAXRException(ex.getMessage(), ex);
}
return descriptions;
}
Collection localizedStrings2Descriptions(Collection localizedStrings, boolean publish)
throws JAXRException {
Collection descriptions = new ArrayList();
if (localizedStrings != null) {
Iterator liter = localizedStrings.iterator();
while (liter.hasNext()) {
LocalizedString lstring = (LocalizedString)liter.next();
Locale locale = lstring.getLocale();
String descriptionValue = lstring.getValue();
String charset = lstring.getCharsetName();
Description description = null;
Description dupDescription = null;
description = objFactory.createDescription();
dupDescription = objFactory.createDescription();
description.setValue(descriptionValue);
dupDescription.setValue(descriptionValue);
if (locale == null) locale = Locale.getDefault();
String lang = locale.getLanguage().toLowerCase();
//do the dup with just lang if
if (!publish){
dupDescription.setLang(lang);
descriptions.add(dupDescription);
}
String country = locale.getCountry().toUpperCase();
if (country != null && !country.equals(""))
lang += "-"+country;
description.setLang(lang);
descriptions.add(description);
}
}
return descriptions;
}
Collection descriptions2LocalizedStrings(Collection descriptions)
throws JAXRException {
Collection localizedDescriptions = new ArrayList();
Iterator diter = descriptions.iterator();
while(diter.hasNext()){
LocalizedString localizedString = new LocalizedStringImpl();
Description description = (Description)diter.next();
String descriptionValue = description.getValue();
String langTag = description.getLang();
if (descriptionValue != null)
localizedString.setValue(descriptionValue);
Locale locale = null;
if (langTag != null) {
int delimIndex = langTag.indexOf('-');
if (delimIndex != -1) {
String lang = langTag.substring(0, delimIndex).toLowerCase();
String cntry = langTag.substring(delimIndex+1).toUpperCase();
locale = new Locale(lang, cntry);
} else
locale = new Locale(langTag.toLowerCase(), "");
} else {
locale = Locale.getDefault();
}
localizedString.setLocale(locale);
localizedDescriptions.add(localizedString);
}
return localizedDescriptions;
}
Collection names2LocalizedStrings(Collection names)
throws JAXRException {
Collection localizedNames = new ArrayList();
Iterator niter = names.iterator();
while (niter.hasNext()){
Name name = (Name)niter.next();
String nameValue = name.getValue();
String langTag = name.getLang();
LocalizedStringImpl localizedString = new LocalizedStringImpl();
if (nameValue != null)
localizedString.setValue(nameValue);
Locale locale = null;
if (langTag != null) {
int delimIndex = langTag.indexOf('-');
if (delimIndex != -1) {
String lang = langTag.substring(0, delimIndex).toLowerCase();
String cntry = langTag.substring(delimIndex+1).toUpperCase();
locale = new Locale(lang, cntry);
} else
locale = new Locale(langTag.toLowerCase(), "");
} else {
locale = Locale.getDefault();
}
localizedString.setLocale(locale);
localizedNames.add(localizedString);
}
return localizedNames;
}
LocalizedString name2LocalizedString(Name name)
throws JAXRException {
String nameValue = name.getValue();
String langTag = name.getLang();
LocalizedStringImpl localizedString = new LocalizedStringImpl();
if (nameValue != null)
localizedString.setValue(nameValue);
Locale locale = null;
if (langTag != null) {
int delimIndex = langTag.indexOf('-');
if (delimIndex != -1) {
String lang = langTag.substring(0, delimIndex).toLowerCase();
String cntry = langTag.substring(delimIndex+1).toUpperCase();
locale = new Locale(lang, cntry);
} else
locale = new Locale(langTag.toLowerCase(), "");
} else {
locale = Locale.getDefault();
}
localizedString.setLocale(locale);
return localizedString;
}
InternationalString name2InternationalString(Name name)
throws JAXRException {
InternationalStringImpl internationalString = new InternationalStringImpl();
if (name != null) {
LocalizedString localizedString = name2LocalizedString(name);
if (localizedString != null) {
internationalString = new InternationalStringImpl();
internationalString.addLocalizedString(localizedString);
}
}
return internationalString;
}
InternationalString names2InternationalString(Collection name)
throws JAXRException {
InternationalStringImpl internationalString = new InternationalStringImpl();
if (name != null) {
Collection localizedStrings = names2LocalizedStrings(name);
if (localizedStrings != null) {
internationalString = new InternationalStringImpl();
internationalString.addLocalizedStrings(localizedStrings);
}
}
return internationalString;
}
InternationalString descriptions2InternationalString(Collection desc)
throws JAXRException {
InternationalStringImpl internationalString = new InternationalStringImpl();
if (desc != null) {
Collection localizedStrings = descriptions2LocalizedStrings(desc);
if (localizedStrings != null) {
internationalString = new InternationalStringImpl();
internationalString.addLocalizedStrings(localizedStrings);
}
}
return internationalString;
}
private void mapPostalAddressAttributes(ClassificationScheme postalScheme)
throws JAXRException {
if (equivalentConcepts == null){
initSemanticEquivalences();
if (equivalentConcepts == null) {
logger.finest("equivalent concepts are null");
return;
}
}
//what is the default postal scheme
defaultPostalScheme = service.getDefaultPostalScheme();
if (postalAddressMap == null)
postalAddressMap = new HashMap();
Collection jaxrChildren = null;
Collection defaultChildren = null;
if (jaxrPostalAddressScheme != null)
jaxrChildren = jaxrPostalAddressScheme.getChildrenConcepts();
ClassificationScheme postalAddressDefault = null;
if (postalScheme == null) {
if (defaultPostalScheme != null){
defaultPostalScheme = this.getClassificationSchemeById(defaultPostalScheme.getKey().getId().trim());
defaultChildren = defaultPostalScheme.getChildrenConcepts();
}
} else {
if (postalScheme != null)
defaultChildren = postalScheme.getChildrenConcepts();
}
Iterator jaxrIterator = jaxrChildren.iterator();
while (jaxrIterator.hasNext()) {
boolean match = false;
logger.finest("checking to see if there are equivalent concepts for postalAddressMapping");
Concept jaxrPostalConcept = (Concept)jaxrIterator.next();
logger.finest("first postal key " + jaxrPostalConcept.getKey().getId());
Concept jaxrEquivalentConcept = (Concept) equivalentConcepts.get(jaxrPostalConcept.getValue());
if (jaxrEquivalentConcept == null) {
logger.finest("no Equivalent Concept found in equivalentConcepts");
postalAddressMap.put(jaxrPostalConcept.getValue(), null);
}
if (jaxrEquivalentConcept != null) {
String equivConceptValue = jaxrEquivalentConcept.getValue();
logger.finest("Equivalent Concept id " + equivConceptValue);
if (defaultChildren != null) {
Iterator defaultIterator = defaultChildren.iterator();
while (defaultIterator.hasNext()) {
//is this a defaultPostalConcept?
Concept defaultPostalConcept = (Concept)defaultIterator.next();
String defaultValue = defaultPostalConcept.getValue();
logger.finest("defaultI value " + defaultValue);
if (defaultValue.equalsIgnoreCase(equivConceptValue)) {
//we've got a match
logger.finest("putting in postalAddressMap");
postalAddressMap.put(jaxrPostalConcept.getValue(), defaultPostalConcept);
match = true;
}
}
} else postalAddressMap.put(jaxrPostalConcept.getValue(), null);
if (!match)
logger.warning(ResourceBundle.getBundle("com/sun/xml/registry/uddi/LocalStrings").getString("UDDIMapper:No_match_found_for_JAXR_Postal_Address_Atribute_") + jaxrPostalConcept.getValue());
}
//go to next attribute
} // done
}
ClassificationScheme getClassificationSchemeById(String id)
throws JAXRException {
if (id == null)
return null;
return getConceptsManager().getClassificationSchemeById(id);
}
void initPostalSchemes() throws JAXRException {
initSemanticEquivalences();
//getJAXRPostalScheme
Collection jaxrPostalChildren = null;
jaxrPostalAddressScheme =
getConceptsManager().getClassificationSchemeById("PostalAddressAttributes");
if (jaxrPostalAddressScheme == null) {
logger.finest("Didn't find JAXR PostalAddressAttributes");
} else {
jaxrPostalChildren =
jaxrPostalAddressScheme.getChildrenConcepts();
if (jaxrPostalChildren != null)
logger.finest("got jaxr postal children");
}
defaultPostalScheme =
service.getDefaultPostalScheme();
Collection defaultChildren = null;
if (defaultPostalScheme != null) {
defaultChildren = defaultPostalScheme.getChildrenConcepts();
if (defaultChildren != null)
logger.finest("got default children");
} else logger.finest("default Postal Scheme not found");
}
private void initSemanticEquivalences() throws JAXRException {
semanticEquivalences =
getConnection().getSemanticEquivalences();
if (semanticEquivalences == null) {
logger.finest("SemanticEquivalences are null");
return;
}
Collection jaxrPostalChildren = null;
jaxrPostalAddressScheme =
getConceptsManager().getClassificationSchemeById("PostalAddressAttributes");
if (jaxrPostalAddressScheme == null) {
logger.finest("Didn't find JAXR PostalAddressAttributes");
} else {
jaxrPostalChildren =
jaxrPostalAddressScheme.getChildrenConcepts();
if (jaxrPostalChildren != null)
logger.finest("got jaxr postal children " + jaxrPostalChildren.size());
}
ClassificationScheme defaultScheme = service.getDefaultPostalScheme();
Collection childConcepts = null;
if (defaultScheme != null){
childConcepts = defaultScheme.getChildrenConcepts();
}
//Got to iterate through the keys and Values
Set keys = semanticEquivalences.keySet();
Iterator keyIter = keys.iterator();
Collection values = semanticEquivalences.values();
Iterator valIter = values.iterator();
while (keyIter.hasNext()) {
String key = (String)keyIter.next();
if (valIter.hasNext()){
String val = (String)valIter.next();
}
if (key == null)
logger.finest("key is null");
String value = (String)semanticEquivalences.get(key);
if (value == null)
logger.finest("Value is null");
Concept keyConcept = null;
Concept valueConcept = null;
if ((key != null) && (value != null)) {
key = key.trim();
value = value.trim();
Iterator jiter = jaxrPostalChildren.iterator();
while (jiter.hasNext()){
Concept jconcept = (Concept)jiter.next();
if (jconcept.getKey().getId().equalsIgnoreCase(key)){
keyConcept = jconcept;
break;
}
}
if (keyConcept == null){
logger.finest("Did not find jaxr child key Equivalent Concept");
continue;
}
//findValueConcepts from defaultPostalScheme Cocepts - if no match-
//crap out
if (childConcepts != null){
Iterator citer = childConcepts.iterator();
while (citer.hasNext()){
Concept child = (Concept)citer.next();
Key ckey = child.getKey();
String cid = null;
if (ckey != null)
cid = ckey.getId();
if (cid != null){
if (cid.equalsIgnoreCase(value)){
valueConcept = child;
break;
}
}
}
}
if (valueConcept == null){
logger.finest("Did not find value Equivalent Concept");
}
if (equivalentConcepts== null)
equivalentConcepts = new HashMap();
logger.finest("putting keyConcept valueConcept");
equivalentConcepts.put(keyConcept.getValue(), valueConcept);
}
}
}
}