/************************************************************************
*
* Copyright (c) 2003-2004, C&C Research Laboratories, NEC Europe Ltd.
*
* Copyright in this library belongs to C&C Research Laboratories,
* Rathausallee 10, 53757 Sankt Augustin, Germany.
*
* This software may not be used, sold, licensed, transferred, copied
* or reproduced in whole or in part in any manner or form or in or
* on any media by any person other than in accordance with the terms
* of the Licence Agreement supplied with the software, or otherwise
* without the prior written consent of the copyright owners.
*
* This software is distributed WITHOUT ANY WARRANTY, without even the
* implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR
* PURPOSE, except where stated in the Licence Agreement supplied with
* the software.
*
*  Created By :           Federico Crazzolara
*  Created for Project :  GEMSS (IST-2001-37153)
*
************************************************************************/


/**
 * X509ExchServiceSoapBindingStub.java
 *
 * This file was auto-generated from WSDL
 * by the Apache Axis WSDL2Java emitter.
 */

package de.nece.ccrl.tokenservice;

public class X509ExchServiceSoapBindingStub extends org.apache.axis.client.Stub implements de.nece.ccrl.tokenservice.SecurityTokenService {
    private java.util.Vector cachedSerClasses = new java.util.Vector();
    private java.util.Vector cachedSerQNames = new java.util.Vector();
    private java.util.Vector cachedSerFactories = new java.util.Vector();
    private java.util.Vector cachedDeserFactories = new java.util.Vector();

    static org.apache.axis.description.OperationDesc [] _operations;

    static {
        _operations = new org.apache.axis.description.OperationDesc[1];
        org.apache.axis.description.OperationDesc oper;
        oper = new org.apache.axis.description.OperationDesc();
        oper.setName("RequestSecurityToken");
        oper.addParameter(new javax.xml.namespace.QName("http://schemas.ccrl.nece.de/sessid", "SessionId"), new javax.xml.namespace.QName("http://schemas.ccrl.nece.de/sessid", "SessionIdType"), de.nece.ccrl.schemas.sessid.SessionIdType.class, org.apache.axis.description.ParameterDesc.INOUT, false, false);
        oper.addParameter(new javax.xml.namespace.QName("http://schemas.xmlsoap.org/ws/2002/12/secext", "RequestSecurityToken"), new javax.xml.namespace.QName("http://schemas.xmlsoap.org/ws/2002/12/secext", "RequestSecurityTokenType"), org.xmlsoap.schemas.ws._2002._12.secext.RequestSecurityTokenType.class, org.apache.axis.description.ParameterDesc.IN, false, false);
        oper.setReturnType(new javax.xml.namespace.QName("http://schemas.xmlsoap.org/ws/2002/12/secext", "RequestSecurityTokenResponseType"));
        oper.setReturnClass(org.xmlsoap.schemas.ws._2002._12.secext.RequestSecurityTokenResponseType.class);
        oper.setReturnQName(new javax.xml.namespace.QName("http://schemas.xmlsoap.org/ws/2002/12/secext", "RequestSecurityTokenResponse"));
        oper.setStyle(org.apache.axis.enum.Style.RPC);
        oper.setUse(org.apache.axis.enum.Use.ENCODED);
        oper.addFault(new org.apache.axis.description.FaultDesc(
                      new javax.xml.namespace.QName("http://schemas.ccrl.nece.de/error", "Error"),
                      "de.nece.ccrl.tokenservice.ErrorMsg",
                      new javax.xml.namespace.QName("http://www.w3.org/2001/XMLSchema", "string"), 
                      false
                     ));
        _operations[0] = oper;

    }

    public X509ExchServiceSoapBindingStub() throws org.apache.axis.AxisFault {
         this(null);
    }

    public X509ExchServiceSoapBindingStub(java.net.URL endpointURL, javax.xml.rpc.Service service) throws org.apache.axis.AxisFault {
         this(service);
         super.cachedEndpoint = endpointURL;
    }

    public X509ExchServiceSoapBindingStub(javax.xml.rpc.Service service) throws org.apache.axis.AxisFault {
        if (service == null) {
            super.service = new org.apache.axis.client.Service();
        } else {
            super.service = service;
        }
            java.lang.Class cls;
            javax.xml.namespace.QName qName;
            java.lang.Class beansf = org.apache.axis.encoding.ser.BeanSerializerFactory.class;
            java.lang.Class beandf = org.apache.axis.encoding.ser.BeanDeserializerFactory.class;
            java.lang.Class enumsf = org.apache.axis.encoding.ser.EnumSerializerFactory.class;
            java.lang.Class enumdf = org.apache.axis.encoding.ser.EnumDeserializerFactory.class;
            java.lang.Class arraysf = org.apache.axis.encoding.ser.ArraySerializerFactory.class;
            java.lang.Class arraydf = org.apache.axis.encoding.ser.ArrayDeserializerFactory.class;
            java.lang.Class simplesf = org.apache.axis.encoding.ser.SimpleSerializerFactory.class;
            java.lang.Class simpledf = org.apache.axis.encoding.ser.SimpleDeserializerFactory.class;
            qName = new javax.xml.namespace.QName("http://schemas.ccrl.nece.de/secmsg", "MessageType");
            cachedSerQNames.add(qName);
            cls = de.nece.ccrl.schemas.secmsg.MessageType.class;
            cachedSerClasses.add(cls);
            cachedSerFactories.add(beansf);
            cachedDeserFactories.add(beandf);

            qName = new javax.xml.namespace.QName("http://schemas.xmlsoap.org/ws/2002/12/secext", "SecurityContextTokenType");
            cachedSerQNames.add(qName);
            cls = org.xmlsoap.schemas.ws._2002._12.secext.SecurityContextTokenType.class;
            cachedSerClasses.add(cls);
            cachedSerFactories.add(beansf);
            cachedDeserFactories.add(beandf);

            qName = new javax.xml.namespace.QName("http://schemas.xmlsoap.org/ws/2002/12/secext", "KeyEnum");
            cachedSerQNames.add(qName);
            cls = org.xmlsoap.schemas.ws._2002._12.secext.KeyEnum.class;
            cachedSerClasses.add(cls);
            cachedSerFactories.add(enumsf);
            cachedDeserFactories.add(enumdf);

            qName = new javax.xml.namespace.QName("http://schemas.xmlsoap.org/ws/2002/12/secext", "RequestSecurityTokenType");
            cachedSerQNames.add(qName);
            cls = org.xmlsoap.schemas.ws._2002._12.secext.RequestSecurityTokenType.class;
            cachedSerClasses.add(cls);
            cachedSerFactories.add(beansf);
            cachedDeserFactories.add(beandf);

            qName = new javax.xml.namespace.QName("http://schemas.xmlsoap.org/ws/2002/07/utility", "AttributedURI");
            cachedSerQNames.add(qName);
            cls = org.xmlsoap.schemas.ws._2002._07.utility.AttributedURI.class;
            cachedSerClasses.add(cls);
            cachedSerFactories.add(simplesf);
            cachedDeserFactories.add(simpledf);

            qName = new javax.xml.namespace.QName("http://schemas.xmlsoap.org/ws/2002/12/secext", "RequestSecurityTokenResponseType");
            cachedSerQNames.add(qName);
            cls = org.xmlsoap.schemas.ws._2002._12.secext.RequestSecurityTokenResponseType.class;
            cachedSerClasses.add(cls);
            cachedSerFactories.add(beansf);
            cachedDeserFactories.add(beandf);

            qName = new javax.xml.namespace.QName("http://schemas.xmlsoap.org/ws/2002/12/secext", "BinarySecurityTokenType");
            cachedSerQNames.add(qName);
            cls = org.xmlsoap.schemas.ws._2002._12.secext.BinarySecurityTokenType.class;
            cachedSerClasses.add(cls);
            cachedSerFactories.add(simplesf);
            cachedDeserFactories.add(simpledf);

            qName = new javax.xml.namespace.QName("http://schemas.xmlsoap.org/ws/2002/12/secext", "RequestTypeEnum");
            cachedSerQNames.add(qName);
            cls = org.xmlsoap.schemas.ws._2002._12.secext.RequestTypeEnum.class;
            cachedSerClasses.add(cls);
            cachedSerFactories.add(enumsf);
            cachedDeserFactories.add(enumdf);

            qName = new javax.xml.namespace.QName("http://schemas.ccrl.nece.de/secmsg", "MessageList");
            cachedSerQNames.add(qName);
            cls = de.nece.ccrl.schemas.secmsg.MessageList.class;
            cachedSerClasses.add(cls);
            cachedSerFactories.add(beansf);
            cachedDeserFactories.add(beandf);

            qName = new javax.xml.namespace.QName("http://schemas.ccrl.nece.de/sessid", "SessionIdType");
            cachedSerQNames.add(qName);
            cls = de.nece.ccrl.schemas.sessid.SessionIdType.class;
            cachedSerClasses.add(cls);
            cachedSerFactories.add(beansf);
            cachedDeserFactories.add(beandf);

            qName = new javax.xml.namespace.QName("http://schemas.xmlsoap.org/ws/2002/12/secext", "TokenTypeEnum");
            cachedSerQNames.add(qName);
            cls = org.xmlsoap.schemas.ws._2002._12.secext.TokenTypeEnum.class;
            cachedSerClasses.add(cls);
            cachedSerFactories.add(enumsf);
            cachedDeserFactories.add(enumdf);

            qName = new javax.xml.namespace.QName("http://schemas.ccrl.nece.de/secmsg", "EncodedString");
            cachedSerQNames.add(qName);
            cls = de.nece.ccrl.schemas.secmsg.EncodedString.class;
            cachedSerClasses.add(cls);
            cachedSerFactories.add(simplesf);
            cachedDeserFactories.add(simpledf);

            qName = new javax.xml.namespace.QName("http://schemas.xmlsoap.org/ws/2002/12/secext", "RequestedSecurityTokenType");
            cachedSerQNames.add(qName);
            cls = org.xmlsoap.schemas.ws._2002._12.secext.RequestedSecurityTokenType.class;
            cachedSerClasses.add(cls);
            cachedSerFactories.add(beansf);
            cachedDeserFactories.add(beandf);

    }

    private org.apache.axis.client.Call createCall() throws java.rmi.RemoteException {
        try {
            org.apache.axis.client.Call _call =
                    (org.apache.axis.client.Call) super.service.createCall();

            if (super.maintainSessionSet) {
                _call.setMaintainSession(super.maintainSession);
            }
            if (super.cachedUsername != null) {
                _call.setUsername(super.cachedUsername);
            }
            if (super.cachedPassword != null) {
                _call.setPassword(super.cachedPassword);
            }
            if (super.cachedEndpoint != null) {
                _call.setTargetEndpointAddress(super.cachedEndpoint);
            }
            if (super.cachedTimeout != null) {
                _call.setTimeout(super.cachedTimeout);
            }
            if (super.cachedPortName != null) {
                _call.setPortName(super.cachedPortName);
            }
            java.util.Enumeration keys = super.cachedProperties.keys();
            while (keys.hasMoreElements()) {
                java.lang.String key = (java.lang.String) keys.nextElement();
                _call.setProperty(key, super.cachedProperties.get(key));
            }
            // All the type mapping information is registered
            // when the first call is made.
            // The type mapping information is actually registered in
            // the TypeMappingRegistry of the service, which
            // is the reason why registration is only needed for the first call.
            synchronized (this) {
                if (firstCall()) {
                    // must set encoding style before registering serializers
                    _call.setSOAPVersion(org.apache.axis.soap.SOAPConstants.SOAP11_CONSTANTS);
                    _call.setEncodingStyle(org.apache.axis.Constants.URI_SOAP11_ENC);
                    for (int i = 0; i < cachedSerFactories.size(); ++i) {
                        java.lang.Class cls = (java.lang.Class) cachedSerClasses.get(i);
                        javax.xml.namespace.QName qName =
                                (javax.xml.namespace.QName) cachedSerQNames.get(i);
                        java.lang.Class sf = (java.lang.Class)
                                 cachedSerFactories.get(i);
                        java.lang.Class df = (java.lang.Class)
                                 cachedDeserFactories.get(i);
                        _call.registerTypeMapping(cls, qName, sf, df, false);
                    }
                }
            }
            return _call;
        }
        catch (java.lang.Throwable t) {
            throw new org.apache.axis.AxisFault("Failure trying to get the Call object", t);
        }
    }

    public org.xmlsoap.schemas.ws._2002._12.secext.RequestSecurityTokenResponseType requestSecurityToken(de.nece.ccrl.schemas.sessid.holders.SessionIdTypeHolder sessionid, org.xmlsoap.schemas.ws._2002._12.secext.RequestSecurityTokenType request) throws java.rmi.RemoteException, de.nece.ccrl.tokenservice.ErrorMsg {
        if (super.cachedEndpoint == null) {
            throw new org.apache.axis.NoEndPointException();
        }
        org.apache.axis.client.Call _call = createCall();

        _call.setOperation(_operations[0]);
        _call.setUseSOAPAction(true);
        _call.setSOAPActionURI("");
        _call.setSOAPVersion(org.apache.axis.soap.SOAPConstants.SOAP11_CONSTANTS);
        _call.setOperationName(new javax.xml.namespace.QName("tokenservice.ccrl.nece.de", "RequestSecurityToken"));

        setRequestHeaders(_call);
        setAttachments(_call);




        java.lang.Object _resp = _call.invoke(new java.lang.Object[] {sessionid.value, request});

        if (_resp instanceof java.rmi.RemoteException) {
            throw (java.rmi.RemoteException)_resp;
        }
        else {
            extractAttachments(_call);
            java.util.Map _output;
            _output = _call.getOutputParams();
            try {
                sessionid.value = (de.nece.ccrl.schemas.sessid.SessionIdType) _output.get(new javax.xml.namespace.QName("http://schemas.ccrl.nece.de/sessid", "SessionId"));
            } catch (java.lang.Exception _exception) {
                sessionid.value = (de.nece.ccrl.schemas.sessid.SessionIdType) org.apache.axis.utils.JavaUtils.convert(_output.get(new javax.xml.namespace.QName("http://schemas.ccrl.nece.de/sessid", "SessionId")), de.nece.ccrl.schemas.sessid.SessionIdType.class);
            }
            try {
                return (org.xmlsoap.schemas.ws._2002._12.secext.RequestSecurityTokenResponseType) _resp;
            } catch (java.lang.Exception _exception) {
                return (org.xmlsoap.schemas.ws._2002._12.secext.RequestSecurityTokenResponseType) org.apache.axis.utils.JavaUtils.convert(_resp, org.xmlsoap.schemas.ws._2002._12.secext.RequestSecurityTokenResponseType.class);
            }
        }
    }

}
