Java tutorial
/* * 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.transport; import java.util.Map; import java.util.Properties; import javax.xml.ws.BindingProvider; import org.apache.commons.configuration.ConfigurationException; import org.apache.juddi.v3.client.JUDDIApiService; import org.apache.juddi.v3.client.UDDIService; import org.apache.juddi.v3.client.config.Property; import org.apache.juddi.v3.client.config.UDDIClerkManager; import org.apache.juddi.v3.client.config.UDDIClientContainer; import org.apache.juddi.v3_service.JUDDIApiPortType; import org.uddi.v3_service.UDDICustodyTransferPortType; import org.uddi.v3_service.UDDIInquiryPortType; import org.uddi.v3_service.UDDIPublicationPortType; import org.uddi.v3_service.UDDISecurityPortType; import org.uddi.v3_service.UDDISubscriptionListenerPortType; import org.uddi.v3_service.UDDISubscriptionPortType; import org.apache.cxf.endpoint.Client; import org.apache.cxf.frontend.ClientProxy; /** * Add a special JAXWSTransport for use with the SAP Registry. Need to add * a CXF interceptor because SAP does not like the default XML declaration. * * @author Tom Cunningham <tcunning@apache.org> * */ public class SAPRegistryJAXWSTransport extends JAXWSTransport { public SAPRegistryJAXWSTransport() { super(); } public SAPRegistryJAXWSTransport(String nodeName) { super(nodeName); } public SAPRegistryJAXWSTransport(String managerName, String nodeName) { super(managerName, nodeName); } public UDDIInquiryPortType getUDDIInquiryService(String endpointURL) throws TransportException { if (inquiryService == null) { try { if (endpointURL == null) { UDDIClerkManager manager = UDDIClientContainer.getUDDIClerkManager(managerName); endpointURL = manager.getClientConfig().getUDDINode(nodeName).getInquiryUrl(); } UDDIService service = new UDDIService(); inquiryService = service.getUDDIInquiryPort(); Map<String, Object> requestContext = ((BindingProvider) inquiryService).getRequestContext(); requestContext.put(BindingProvider.ENDPOINT_ADDRESS_PROPERTY, endpointURL); setCredentials(requestContext); XMLDeclarationWritingInterceptor xmldwi = new XMLDeclarationWritingInterceptor(); Client cxfClient = ClientProxy.getClient(inquiryService); cxfClient.getInInterceptors().add(xmldwi); } catch (Exception e) { throw new TransportException(e.getMessage(), e); } } return inquiryService; } public UDDISecurityPortType getUDDISecurityService(String endpointURL) throws TransportException { if (securityService == null) { try { if (endpointURL == null) { UDDIClerkManager manager = UDDIClientContainer.getUDDIClerkManager(managerName); endpointURL = manager.getClientConfig().getUDDINode(nodeName).getSecurityUrl(); } UDDIService service = new UDDIService(); securityService = service.getUDDISecurityPort(); Map<String, Object> requestContext = ((BindingProvider) securityService).getRequestContext(); requestContext.put(BindingProvider.ENDPOINT_ADDRESS_PROPERTY, endpointURL); setCredentials(requestContext); XMLDeclarationWritingInterceptor xmldwi = new XMLDeclarationWritingInterceptor(); Client cxfClient = ClientProxy.getClient(securityService); cxfClient.getInInterceptors().add(xmldwi); } catch (Exception e) { throw new TransportException(e.getMessage(), e); } } return securityService; } public UDDIPublicationPortType getUDDIPublishService(String endpointURL) throws TransportException { if (publishService == null) { try { if (endpointURL == null) { UDDIClerkManager manager = UDDIClientContainer.getUDDIClerkManager(managerName); endpointURL = manager.getClientConfig().getUDDINode(nodeName).getPublishUrl(); } UDDIService service = new UDDIService(); publishService = service.getUDDIPublicationPort(); Map<String, Object> requestContext = ((BindingProvider) publishService).getRequestContext(); requestContext.put(BindingProvider.ENDPOINT_ADDRESS_PROPERTY, endpointURL); setCredentials(requestContext); XMLDeclarationWritingInterceptor xmldwi = new XMLDeclarationWritingInterceptor(); Client cxfClient = ClientProxy.getClient(publishService); cxfClient.getInInterceptors().add(xmldwi); } catch (Exception e) { throw new TransportException(e.getMessage(), e); } } return publishService; } public UDDISubscriptionPortType getUDDISubscriptionService(String endpointURL) throws TransportException { if (subscriptionService == null) { try { if (endpointURL == null) { UDDIClerkManager manager = UDDIClientContainer.getUDDIClerkManager(managerName); endpointURL = manager.getClientConfig().getUDDINode(nodeName).getSubscriptionUrl(); } UDDIService service = new UDDIService(); subscriptionService = service.getUDDISubscriptionPort(); Map<String, Object> requestContext = ((BindingProvider) subscriptionService).getRequestContext(); requestContext.put(BindingProvider.ENDPOINT_ADDRESS_PROPERTY, endpointURL); setCredentials(requestContext); XMLDeclarationWritingInterceptor xmldwi = new XMLDeclarationWritingInterceptor(); Client cxfClient = ClientProxy.getClient(subscriptionService); cxfClient.getInInterceptors().add(xmldwi); } catch (Exception e) { throw new TransportException(e.getMessage(), e); } } return subscriptionService; } public UDDISubscriptionListenerPortType getUDDISubscriptionListenerService(String endpointURL) throws TransportException { if (subscriptionListenerService == null) { try { if (endpointURL == null) { UDDIClerkManager manager = UDDIClientContainer.getUDDIClerkManager(managerName); endpointURL = manager.getClientConfig().getUDDINode(nodeName).getSubscriptionListenerUrl(); } UDDIService service = new UDDIService(); subscriptionListenerService = service.getUDDISubscriptionListenerPort(); Map<String, Object> requestContext = ((BindingProvider) subscriptionListenerService) .getRequestContext(); requestContext.put(BindingProvider.ENDPOINT_ADDRESS_PROPERTY, endpointURL); setCredentials(requestContext); XMLDeclarationWritingInterceptor xmldwi = new XMLDeclarationWritingInterceptor(); Client cxfClient = ClientProxy.getClient(subscriptionListenerService); cxfClient.getInInterceptors().add(xmldwi); } catch (Exception e) { throw new TransportException(e.getMessage(), e); } } return subscriptionListenerService; } public UDDICustodyTransferPortType getUDDICustodyTransferService(String endpointURL) throws TransportException { if (custodyTransferService == null) { try { if (endpointURL == null) { UDDIClerkManager manager = UDDIClientContainer.getUDDIClerkManager(managerName); endpointURL = manager.getClientConfig().getUDDINode(nodeName).getCustodyTransferUrl(); } UDDIService service = new UDDIService(); custodyTransferService = service.getUDDICustodyPort(); Map<String, Object> requestContext = ((BindingProvider) custodyTransferService).getRequestContext(); requestContext.put(BindingProvider.ENDPOINT_ADDRESS_PROPERTY, endpointURL); setCredentials(requestContext); XMLDeclarationWritingInterceptor xmldwi = new XMLDeclarationWritingInterceptor(); Client cxfClient = ClientProxy.getClient(custodyTransferService); cxfClient.getInInterceptors().add(xmldwi); } catch (Exception e) { throw new TransportException(e.getMessage(), e); } } return custodyTransferService; } /** * This is a jUDDI specific API */ public JUDDIApiPortType getJUDDIApiService(String endpointURL) throws TransportException { if (publisherService == null) { try { if (endpointURL == null) { UDDIClerkManager manager = UDDIClientContainer.getUDDIClerkManager(managerName); endpointURL = manager.getClientConfig().getUDDINode(nodeName).getJuddiApiUrl(); } JUDDIApiService service = new JUDDIApiService(); publisherService = (JUDDIApiPortType) service.getPort(JUDDIApiPortType.class); Map<String, Object> requestContext = ((BindingProvider) publisherService).getRequestContext(); requestContext.put(BindingProvider.ENDPOINT_ADDRESS_PROPERTY, endpointURL); setCredentials(requestContext); } catch (Exception e) { throw new TransportException(e.getMessage(), e); } } return publisherService; } public String getNodeName() { return nodeName; } public void setNodeName(String nodeName) { this.nodeName = nodeName; } /** * Sets the credentials on the RequestContext if the services are protected * by Basic Authentication. The username and password are obtained from the * uddi.xml. * * @param requestContext * @throws ConfigurationException */ private void setCredentials(Map<String, Object> requestContext) throws ConfigurationException { UDDIClerkManager manager = UDDIClientContainer.getUDDIClerkManager(managerName); Properties properties = manager.getClientConfig().getUDDINode(nodeName).getProperties(); String username = null; String password = null; if (properties.containsKey(Property.BASIC_AUTH_USERNAME)) { username = properties.getProperty(Property.BASIC_AUTH_USERNAME); } if (properties.containsKey(Property.BASIC_AUTH_PASSWORD)) { password = properties.getProperty(Property.BASIC_AUTH_PASSWORD); } if (username != null && password != null) { requestContext.put(BindingProvider.USERNAME_PROPERTY, username); requestContext.put(BindingProvider.PASSWORD_PROPERTY, password); } } }