Package org.apache.geronimo.axis.builder

Source Code of org.apache.geronimo.axis.builder.OperationDescBuilder

/**
*
* Copyright 2003-2004 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.geronimo.axis.builder;

import java.util.Iterator;
import java.util.List;
import javax.wsdl.BindingOperation;
import javax.wsdl.Operation;
import javax.wsdl.Message;
import javax.wsdl.BindingInput;
import javax.wsdl.extensions.soap.SOAPOperation;
import javax.wsdl.extensions.soap.SOAPBody;
import javax.wsdl.extensions.ExtensibilityElement;
import javax.xml.namespace.QName;

import org.apache.geronimo.axis.client.OperationInfo;
import org.apache.geronimo.common.DeploymentException;
import org.apache.axis.soap.SOAPConstants;
import org.apache.axis.description.OperationDesc;

public abstract class OperationDescBuilder {
    protected final OperationDesc operationDesc;
    protected final BindingOperation bindingOperation;
    protected final Operation operation;
    protected final String operationName;
    protected final Message input;
    protected final Message output;
    protected final SOAPOperation soapOperation;
    protected boolean built;

    public OperationDescBuilder(BindingOperation bindingOperation) throws DeploymentException {
        this.bindingOperation = bindingOperation;
        this.operation = bindingOperation.getOperation();
        this.soapOperation = (SOAPOperation) SchemaInfoBuilder.getExtensibilityElement(SOAPOperation.class, bindingOperation.getExtensibilityElements());

        operationDesc = new OperationDesc();
        output = operation.getOutput() == null ? null : operation.getOutput().getMessage();
        operationName = operation.getName();
        input = operation.getInput().getMessage();
    }

    public abstract OperationInfo buildOperationInfo(SOAPConstants soapVersion) throws DeploymentException;

    public abstract OperationDesc buildOperationDesc() throws DeploymentException;

    protected QName getOperationNameFromSOAPBody() {
        BindingInput bindingInput = bindingOperation.getBindingInput();
        List extensibilityElements = bindingInput.getExtensibilityElements();
        for (Iterator iterator = extensibilityElements.iterator(); iterator.hasNext();) {
            ExtensibilityElement extensibilityElement = (ExtensibilityElement) iterator.next();
            if (extensibilityElement instanceof SOAPBody) {
                String namespaceURI = ((SOAPBody)extensibilityElement).getNamespaceURI();
                return new QName(namespaceURI, operationName);
            }
        }
        return new QName("", operationName);
    }
}
TOP

Related Classes of org.apache.geronimo.axis.builder.OperationDescBuilder

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.