blob: ed5529e0842a6f8fb0c7fbacb3d2aaa84f1e0992 [file] [log] [blame]
/*
* Licensed to the Apache Software Foundation (ASF) under one
* or more contributor license agreements. See the NOTICE file
* distributed with this work for additional information
* regarding copyright ownership. The ASF licenses this file
* to you 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.axis2.jaxws.addressing.util;
import org.apache.axiom.om.OMAbstractFactory;
import org.apache.axiom.om.OMElement;
import org.apache.axiom.om.OMFactory;
import org.apache.axis2.addressing.EndpointReference;
import org.apache.axis2.addressing.EndpointReferenceHelper;
import org.apache.axis2.addressing.metadata.InterfaceName;
import org.apache.axis2.addressing.metadata.ServiceName;
import org.apache.axis2.addressing.metadata.WSDLLocation;
import org.apache.axis2.jaxws.addressing.factory.Axis2EndpointReferenceFactory;
import org.apache.axis2.jaxws.addressing.factory.JAXWSEndpointReferenceFactory;
import org.apache.axis2.jaxws.registry.FactoryRegistry;
import org.apache.axis2.util.XMLUtils;
import org.w3c.dom.Element;
import javax.xml.namespace.QName;
import javax.xml.transform.Source;
import javax.xml.transform.stream.StreamResult;
import javax.xml.transform.stream.StreamSource;
import java.io.ByteArrayInputStream;
import java.io.ByteArrayOutputStream;
public final class EndpointReferenceUtils {
private static OMFactory omFactory = OMAbstractFactory.getOMFactory();
private EndpointReferenceUtils() {
}
/**
* Convert from a {@link EndpointReference} to a
* subclass of {@link javax.xml.ws.EndpointReference}.
*
* @param axis2EPR
* @param addressingNamespace
* @return
* @throws Exception
*/
public static javax.xml.ws.EndpointReference convertFromAxis2(EndpointReference axis2EPR, String addressingNamespace)
throws Exception {
QName qname = new QName(addressingNamespace, "EndpointReference", "wsa");
OMElement omElement =
EndpointReferenceHelper.toOM(omFactory, axis2EPR, qname, addressingNamespace);
ByteArrayOutputStream baos = new ByteArrayOutputStream();
omElement.serialize(baos);
ByteArrayInputStream bais = new ByteArrayInputStream(baos.toByteArray());
Source eprInfoset = new StreamSource(bais);
return convertFromSource(eprInfoset);
}
/**
* Convert from a {@link Source} to a
* subclass of {@link javax.xml.ws.EndpointReference}.
*
* @param eprInfoset
* @return
* @throws Exception
*/
public static javax.xml.ws.EndpointReference convertFromSource(Source eprInfoset)
throws Exception {
JAXWSEndpointReferenceFactory factory = (JAXWSEndpointReferenceFactory)
FactoryRegistry.getFactory(JAXWSEndpointReferenceFactory.class);
return factory.createEndpointReference(eprInfoset);
}
/**
* Convert from a {@link javax.xml.ws.EndpointReference} to a an instance of
* {@link EndpointReference}.
*
* @param axis2EPR
* @param jaxwsEPR
* @return the WS-Addressing namespace of the <code>javax.xml.ws.EndpointReference</code>.
* @throws Exception
*/
public static String convertToAxis2(EndpointReference axis2EPR, javax.xml.ws.EndpointReference jaxwsEPR)
throws Exception {
ByteArrayOutputStream baos = new ByteArrayOutputStream();
jaxwsEPR.writeTo(new StreamResult(baos));
ByteArrayInputStream bais = new ByteArrayInputStream(baos.toByteArray());
OMElement eprElement = (OMElement) XMLUtils.toOM(bais);
return EndpointReferenceHelper.fromOM(axis2EPR, eprElement);
}
/**
*
* @param <T>
* @param clazz
* @return
*/
public static <T extends javax.xml.ws.EndpointReference> String getAddressingNamespace(Class<T> clazz) {
JAXWSEndpointReferenceFactory factory = (JAXWSEndpointReferenceFactory)
FactoryRegistry.getFactory(JAXWSEndpointReferenceFactory.class);
return factory.getAddressingNamespace(clazz);
}
/**
*
* @param address
* @param serviceName
* @param portName
* @param wsdlDocumentLocation
* @param addressingNamespace
* @return
*/
public static EndpointReference createAxis2EndpointReference(String address, QName serviceName, QName portName, String wsdlDocumentLocation, String addressingNamespace) {
Axis2EndpointReferenceFactory factory = (Axis2EndpointReferenceFactory)
FactoryRegistry.getFactory(Axis2EndpointReferenceFactory.class);
return factory.createEndpointReference(address, serviceName, portName, wsdlDocumentLocation, addressingNamespace);
}
/**
*
* @param address
* @return
*/
public static EndpointReference createAxis2EndpointReference(String address) {
Axis2EndpointReferenceFactory factory = (Axis2EndpointReferenceFactory)
FactoryRegistry.getFactory(Axis2EndpointReferenceFactory.class);
return factory.createEndpointReference(address);
}
/**
*
* @param axis2EPR
* @param referenceParameters
* @throws Exception
*/
public static void addReferenceParameters(EndpointReference axis2EPR, Element...referenceParameters)
throws Exception {
if (referenceParameters != null) {
for (Element element : referenceParameters) {
OMElement omElement = XMLUtils.toOM(element);
axis2EPR.addReferenceParameter(omElement);
}
}
}
/**
*
* @param axis2EPR
* @param metadata
* @throws Exception
*/
public static void addMetadata(EndpointReference axis2EPR, Element...metadata)
throws Exception {
if (metadata != null) {
for (Element element : metadata) {
OMElement omElement = XMLUtils.toOM(element);
axis2EPR.addMetaData(omElement);
}
}
}
/**
*
* @param axis2EPR
* @param portType
* @param addressingNamespace
* @throws Exception
*/
public static void addInterface(EndpointReference axis2EPR, QName portType, String addressingNamespace)
throws Exception {
if (portType != null) {
InterfaceName interfaceName = new InterfaceName(portType);
EndpointReferenceHelper.setInterfaceNameMetadata(omFactory, axis2EPR, addressingNamespace, interfaceName);
}
}
/**
*
* @param axis2EPR
* @param service
* @param port
* @param addressingNamespace
* @throws Exception
*/
public static void addService(EndpointReference axis2EPR, QName service, QName port, String addressingNamespace)
throws Exception {
if (service != null && port != null) {
ServiceName serviceName = new ServiceName(service, port.getLocalPart());
EndpointReferenceHelper.setServiceNameMetadata(omFactory, axis2EPR, addressingNamespace, serviceName);
}
}
/**
*
* @param axis2EPR
* @param targetNamespace
* @param wsdlDocumentLocation
* @param addressingNamespace
* @throws Exception
*/
public static void addLocation(EndpointReference axis2EPR, String targetNamespace, String wsdlDocumentLocation, String addressingNamespace)
throws Exception {
if (targetNamespace != null && wsdlDocumentLocation != null) {
WSDLLocation wsdlLocation = new WSDLLocation(targetNamespace, wsdlDocumentLocation);
EndpointReferenceHelper.setWSDLLocationMetadata(omFactory, axis2EPR, addressingNamespace, wsdlLocation);
}
}
}