/* * Copyright 2001-2009 The Apache Software Foundation. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. * */ package org.apache.juddi.v3.client.config; import java.net.URI; import java.net.URISyntaxException; import java.net.URL; import java.util.Properties; import javax.xml.namespace.QName; public class UDDIKeyConvention { //Default Values public static final String DEFAULT_BUSINESS_KEY_FORMAT = "uddi:${keyDomain}:business_${businessName}"; public static final String DEFAULT_SERVICE_KEY_FORMAT = "uddi:${keyDomain}:service_${serviceName}"; public static final String DEFAULT_SUBSCRIPTION_KEY_FORMAT = "uddi:${keyDomain}:service_cache_${serverName}"; public static final String DEFAULT_BINDING_KEY_FORMAT = "uddi:${keyDomain}:binding_${serverName}_${serviceName}_${portName}_${serverPort}"; /** * Constructs the serviceKey based on the bindingKeyFormat specified in the properties. When no * businessKeyFormat is specific the default format of uddi:${keyDomain}:${businessName} is used. The businessName * property needs to be set properties. * * @param properties * @return the businessKey */ public static String getBusinessKey(Properties properties) { String businessKey = properties.getProperty(Property.BUSINESS_KEY); if (businessKey==null) { String keyFormat = properties.getProperty(Property.BUSINESS_KEY_FORMAT, DEFAULT_BUSINESS_KEY_FORMAT); businessKey = TokenResolver.replaceTokens(keyFormat, properties).toLowerCase(); } return businessKey; } public static String getSubscriptionKey(Properties properties) { String keyFormat = properties.getProperty(Property.SUBSCRIPTION_KEY_FORMAT, DEFAULT_SUBSCRIPTION_KEY_FORMAT); String subscriptionKey = TokenResolver.replaceTokens(keyFormat, properties).toLowerCase(); return subscriptionKey; } /** * Constructs the serviceKey based on the serviceKeyFormat specified in the properties. When no * serviceKeyFormat is specific the default format of uddi:${keyDomain}:${serviceName} is used. * * @param properties * @param serviceName * @return the serviceKey */ public static String getServiceKey(Properties properties, String serviceName) { Properties tempProperties = new Properties(); if (properties!=null) tempProperties.putAll(properties); tempProperties.put("serviceName", serviceName); //Constructing the serviceKey String keyFormat = tempProperties.getProperty(Property.SERVICE_KEY_FORMAT, DEFAULT_SERVICE_KEY_FORMAT); String serviceKey = TokenResolver.replaceTokens(keyFormat, tempProperties).toLowerCase(); return serviceKey; } public static String getBindingKey(Properties properties, QName serviceName, String portName, URL bindingUrl) { String bindingKey = null; try { URI bindingURI = bindingUrl.toURI(); bindingKey = getBindingKey(properties, serviceName, portName, bindingURI); } catch (URISyntaxException e) { } return bindingKey; } /** * Constructs the bindingKey based on the bindingKeyFormat specified in the properties. When no * bindingKeyFormat is specific the default format of uddi:${keyDomain}:${nodeName}-${serviceName}-{portName} is used. * * @param properties * @param serviceName * @param portName * @param bindingUrl * @return the bindingKey */ public static String getBindingKey(Properties properties, QName serviceName, String portName, URI bindingUrl) { Properties tempProperties = new Properties(); if (properties!=null) tempProperties.putAll(properties); tempProperties.put("serviceName", serviceName.getLocalPart()); tempProperties.put("portName", portName); int port = bindingUrl.getPort(); if (port==-1) { if ("http".equals(bindingUrl.getScheme())) { port = 80; } else if ("https".equals(bindingUrl.getScheme())) { port = 443; } } tempProperties.put("serverPort", String.valueOf(port)); //Constructing the binding Key String keyFormat = tempProperties.getProperty(Property.BINDING_KEY_FORMAT, DEFAULT_BINDING_KEY_FORMAT); String bindingKey = TokenResolver.replaceTokens(keyFormat, tempProperties).toLowerCase(); return bindingKey; } }