org.apache.axis.constants.Style Maven / Gradle / Ivy
/*
 * Copyright 2001-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.axis.constants;
import org.apache.axis.deployment.wsdd.WSDDConstants;
import javax.xml.namespace.QName;
/**
 * Description of the different styles
 * 
 * style=rpc, use=encoded
 *   First element of the SOAP body is the
 *   operation.  The operation contains
 *   elements describing the parameters, which 
 *   are serialized as encoded (possibly multi-ref)
 * 
 *   <soap:body>
 *      <operation>
 *         <arg1>...</arg1>
 *         <arg2>...</arg2>
 *      </operation>
 * 
 * 
 * style=RPC, use=literal
 *   First element of the SOAP body is the 
 *   operation.  The operation contains elements
 *   describing the parameters, which are serialized
 *   as encoded (no multi-ref)\
 * 
 *   <soap:body>
 *      <operation>
 *         <arg1>...</arg1>
 *         <arg2>...</arg2>
 *      </operation>
 * 
 * 
 * style=document, use=literal
 *   Elements of the SOAP body are the names of the parameters
 *   (there is no wrapper operation...no multi-ref)
 * 
 *   <soap:body>
 *         <arg1>...</arg1>
 *         <arg2>...</arg2>
 * 
 * 
 * style=wrapped
 *    Special case of DOCLIT where there is only one parameter
 *    and it has the same qname as the operation.  In
 *    such cases, there is no actual type with the name...the
 *    elements are treated as parameters to the operation
 * 
 *   <soap:body>
 *      <one-arg-same-name-as-operation>
 *         <elemofarg1>...</elemofarg1>
 *         <elemofarg2>...</elemofarg2>
 * 
 * 
 * style=document, use=encoded
 *    There is not an enclosing operation name element, but
 *    the parmeterss are encoded using SOAP encoding
 *     This mode is not (well?) supported by Axis.
 *
 * @author Richard Sitze
 */
public class Style extends Enum {
    private static final Type type = new Type();
    
    public static final String RPC_STR = "rpc";
    public static final String DOCUMENT_STR = "document";
    public static final String WRAPPED_STR = "wrapped";
    public static final String MESSAGE_STR = "message";
   
 
    public static final Style RPC = type.getStyle(RPC_STR);
    public static final Style DOCUMENT = type.getStyle(DOCUMENT_STR);
    public static final Style WRAPPED = type.getStyle(WRAPPED_STR);
    public static final Style MESSAGE = type.getStyle(MESSAGE_STR);
    public static final Style DEFAULT = RPC;
    
    static { type.setDefault(DEFAULT); }
        
    private QName provider;
    public static Style getDefault() { return (Style)type.getDefault(); }
    
    public final QName getProvider() { return provider; }
    public static final Style getStyle(int style) {
        return type.getStyle(style);
    }
    public static final Style getStyle(String style) {
        return type.getStyle(style);
    }
    
    public static final Style getStyle(String style, Style dephault) {
        return type.getStyle(style, dephault);
    }
    
    public static final boolean isValid(String style) {
        return type.isValid(style);
    }
    
    public static final int size() {
        return type.size();
    }
    
    public static final String[] getStyles() {
        return type.getEnumNames();
    }
    
    private Object readResolve() throws java.io.ObjectStreamException {
        return type.getStyle(value);
    }
    public static class Type extends Enum.Type {
        private Type() {
            super("style", new Enum[] {
            new Style(0, RPC_STR,
                      WSDDConstants.QNAME_JAVARPC_PROVIDER),
            new Style(1, DOCUMENT_STR,
                      WSDDConstants.QNAME_JAVARPC_PROVIDER),  
            new Style(2, WRAPPED_STR,
                      WSDDConstants.QNAME_JAVARPC_PROVIDER),
            new Style(3, MESSAGE_STR,
                      WSDDConstants.QNAME_JAVAMSG_PROVIDER),
            });
        }
        public final Style getStyle(int style) {
            return (Style)this.getEnum(style);
        }
        public final Style getStyle(String style) {
            return (Style)this.getEnum(style);
        }
        public final Style getStyle(String style, Style dephault) {
            return (Style)this.getEnum(style, dephault);
        }
    }
    private Style(int value, String name, QName provider) {
        super(type, value, name);
        this.provider = provider;
    }
    protected Style() {
        super(type, DEFAULT.getValue(), DEFAULT.getName());
        this.provider = DEFAULT.getProvider();
    }
}
    © 2015 - 2025 Weber Informatics LLC | Privacy Policy