/** * 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.cxf.wsdl; import org.apache.cxf.ws.addressing.AttributedURIType; import org.apache.cxf.ws.addressing.EndpointReferenceType; import org.apache.cxf.ws.addressing.MetadataType; /** * Provides utility methods for obtaining endpoint references, wsdl definitions, etc. */ public final class WSAEndpointReferenceUtils { public static final String ANONYMOUS_ADDRESS = "http://www.w3.org/2005/08/addressing/anonymous"; static final org.apache.cxf.ws.addressing.ObjectFactory WSA_OBJECT_FACTORY = new org.apache.cxf.ws.addressing.ObjectFactory(); private WSAEndpointReferenceUtils() { // Utility class - never constructed } public static EndpointReferenceType createEndpointReferenceWithMetadata() { EndpointReferenceType reference = WSA_OBJECT_FACTORY.createEndpointReferenceType(); reference.setMetadata(WSA_OBJECT_FACTORY.createMetadataType()); return reference; } public static MetadataType getSetMetadata(EndpointReferenceType ref) { MetadataType mt = ref.getMetadata(); if (null == mt) { mt = WSA_OBJECT_FACTORY.createMetadataType(); ref.setMetadata(mt); } return mt; } /** * Set the address of the provided endpoint reference. * @param ref - the endpoint reference * @param address - the address */ public static void setAddress(EndpointReferenceType ref, String address) { AttributedURIType a = WSA_OBJECT_FACTORY.createAttributedURIType(); a.setValue(address); ref.setAddress(a); } /** * Get the address from the provided endpoint reference. * @param ref - the endpoint reference * @return String the address of the endpoint */ public static String getAddress(EndpointReferenceType ref) { AttributedURIType a = ref.getAddress(); if (null != a) { return a.getValue(); } // should wsdl be parsed for an address now? return null; } /** * Create a duplicate endpoint reference sharing all atributes * @param ref the reference to duplicate * @return EndpointReferenceType - the duplicate endpoint reference */ public static EndpointReferenceType duplicate(EndpointReferenceType ref) { EndpointReferenceType reference = WSA_OBJECT_FACTORY.createEndpointReferenceType(); reference.setMetadata(ref.getMetadata()); reference.getAny().addAll(ref.getAny()); reference.setAddress(ref.getAddress()); return reference; } /** * Create an endpoint reference for the provided address. * @param address - address URI * @return EndpointReferenceType - the endpoint reference */ public static EndpointReferenceType getEndpointReference(String address) { EndpointReferenceType reference = WSA_OBJECT_FACTORY.createEndpointReferenceType(); setAddress(reference, address); return reference; } public static EndpointReferenceType getEndpointReference(AttributedURIType address) { EndpointReferenceType reference = WSA_OBJECT_FACTORY.createEndpointReferenceType(); reference.setAddress(address); return reference; } /** * Create an anonymous endpoint reference. * @return EndpointReferenceType - the endpoint reference */ public static EndpointReferenceType getAnonymousEndpointReference() { EndpointReferenceType reference = WSA_OBJECT_FACTORY.createEndpointReferenceType(); setAddress(reference, ANONYMOUS_ADDRESS); return reference; } }