Package org.apache.cxf.ws.discovery

Source Code of org.apache.cxf.ws.discovery.WSDVersion

/**
* 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.ws.discovery;

import java.util.HashMap;
import java.util.Map;

import javax.xml.namespace.QName;
import javax.xml.ws.Dispatch;

import org.apache.cxf.feature.StaxTransformFeature;
import org.apache.cxf.jaxws.DispatchImpl;

public abstract class WSDVersion {
    public static final String NS_1_0 = "http://schemas.xmlsoap.org/ws/2005/04/discovery";
    public static final String TO_1_0 = "urn:schemas-xmlsoap-org:ws:2005:04:discovery";
   
    public static final String NS_1_1 = "http://docs.oasis-open.org/ws-dd/ns/discovery/2009/01";
    public static final String TO_1_1 = "urn:docs-oasis-open-org:ws-dd:ns:discovery:2009:01";
   
    public static final WSDVersion INSTANCE_1_0 = new WSDVersion10();
    public static final WSDVersion INSTANCE_1_1 = new WSDVersion11();
   
    public abstract String getNamespace();
    public abstract String getAddressingNamespace();

    abstract String getToAddress();
    abstract void addVersionTransformer(Dispatch<Object> dispatch);
    abstract QName getServiceName();
   
    public String getHelloAction() {
        return getNamespace() + "/Hello";
    }
    public String getByeAction() {
        return getNamespace() + "/Bye";
    }
    public String getProbeAction() {
        return getNamespace() + "/Probe";
    }
    public String getResolveAction() {
        return getNamespace() + "/Resolve";
    }
   
    static final class WSDVersion10 extends WSDVersion {

        private WSDVersion10() {
        }
        public String getNamespace() {
            return NS_1_0;
        }

        public String getToAddress() {
            return TO_1_0;
        }

        public String getAddressingNamespace() {
            return "http://schemas.xmlsoap.org/ws/2004/08/addressing";
        }
        public void addVersionTransformer(Dispatch<Object> dispatch) {
            StaxTransformFeature feature = new StaxTransformFeature();
            Map<String, String> outElements = new HashMap<String, String>();
            outElements.put("{" + NS_1_1 + "}*",
                            "{" + NS_1_0 + "}*");
            outElements.put("{" + INSTANCE_1_1.getAddressingNamespace() + "}*",
                            "{" + getAddressingNamespace() + "}*");
            feature.setOutTransformElements(outElements);
           
            Map<String, String> inElements = new HashMap<String, String>();
            inElements.put("{" + NS_1_0 + "}*",
                           "{" + NS_1_1 + "}*");
            inElements.put("{" + getAddressingNamespace() + "}*",
                           "{" + INSTANCE_1_1.getAddressingNamespace() + "}*");
            feature.setInTransformElements(inElements);
           
            feature.initialize(((DispatchImpl)dispatch).getClient(),
                               ((DispatchImpl)dispatch).getClient().getBus());
           
            Map<String, String> nsMap = new HashMap<String, String>();
            nsMap.put("tns", NS_1_0);
            nsMap.put("wsa", getAddressingNamespace());
            ((DispatchImpl)dispatch).getClient().getEndpoint().getEndpointInfo()
                .setProperty("soap.env.ns.map", nsMap);           
        }
        public QName getServiceName() {
            return new QName(NS_1_0, "DiscoveryProxy");
        }
    }
    static final class WSDVersion11 extends WSDVersion {
        private WSDVersion11() {
        }

        public String getNamespace() {
            return NS_1_1;
        }

        public String getToAddress() {
            return TO_1_1;
        }

        public String getAddressingNamespace() {
            return "http://www.w3.org/2005/08/addressing";
        }
        public void addVersionTransformer(Dispatch<Object> dispatch) {
            Map<String, String> nsMap = new HashMap<String, String>();
            nsMap.put("tns", NS_1_1);
            nsMap.put("wsa", getAddressingNamespace());
            ((DispatchImpl)dispatch).getClient().getEndpoint().getEndpointInfo()
                .setProperty("soap.env.ns.map", nsMap);           
        }
        public QName getServiceName() {
            return new QName(NS_1_1, "DiscoveryProxy");
        }
    }
   
}
TOP

Related Classes of org.apache.cxf.ws.discovery.WSDVersion

TOP
Copyright © 2018 www.massapi.com. All rights reserved.
All source code are property of their respective owners. Java is a trademark of Sun Microsystems, Inc and owned by ORACLE Inc. Contact coftware#gmail.com.