Package org.apache.ws.resource.handler.axis

Source Code of org.apache.ws.resource.handler.axis.ResourceProvider

/*=============================================================================*
*  Copyright 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.ws.resource.handler.axis;

import org.apache.axis.AxisFault;
import org.apache.axis.Handler;
import org.apache.axis.Message;
import org.apache.axis.MessageContext;
import org.apache.axis.handlers.soap.SOAPService;
import org.apache.axis.message.SOAPEnvelope;
import org.apache.ws.resource.ResourceContext;
import org.apache.ws.resource.i18n.MessagesImpl;
import org.apache.ws.resource.i18n.Keys;
import org.apache.ws.resource.faults.BaseFaultException;
import org.apache.ws.resource.faults.axis.BaseFaultType;
import org.apache.ws.resource.handler.ResourceHandler;
import org.apache.ws.util.i18n.Messages;
import org.apache.xmlbeans.XmlObject;
import org.apache.commons.logging.LogFactory;
import org.apache.commons.logging.Log;
import org.w3c.dom.Document;
import org.w3c.dom.Element;
import javax.xml.namespace.QName;
import javax.xml.rpc.handler.soap.SOAPMessageContext;
import javax.xml.soap.SOAPBodyElement;
import javax.xml.soap.SOAPMessage;
import java.util.Hashtable;
import java.util.List;

/**
* LOG-DONE
* Axis provider that dispatches requests to WS-Resources.
*
* @author Ian P. Springer, Sal Campana
*/
public class ResourceProvider
   extends ResourceHandler
   implements Handler
{
   private static final Log LOG = LogFactory.getLog( ResourceProvider.class );
    public static final Messages MSG = MessagesImpl.getInstance();
   private GenericAxisHandler m_axisHelperHandler = new GenericAxisHandler( this );

   /**
    * DOCUMENT_ME
    *
    * @param doc DOCUMENT_ME
    *
    * @return DOCUMENT_ME
    */
   public Element getDeploymentData( Document doc )
   {
      return m_axisHelperHandler.getDeploymentData( doc );
   }

   /**
    * DOCUMENT_ME
    *
    * @param name DOCUMENT_ME
    */
   public void setName( String name )
   {
      m_axisHelperHandler.setName( name );
   }

   /**
    * DOCUMENT_ME
    *
    * @return DOCUMENT_ME
    */
   public String getName(  )
   {
      return m_axisHelperHandler.getName(  );
   }

   /**
    * DOCUMENT_ME
    *
    * @param name  DOCUMENT_ME
    * @param value DOCUMENT_ME
    */
   public void setOption( String name,
                          Object value )
   {
      m_axisHelperHandler.setOption( name, value );
   }

   /**
    * DOCUMENT_ME
    *
    * @param name DOCUMENT_ME
    *
    * @return DOCUMENT_ME
    */
   public Object getOption( String name )
   {
      return m_axisHelperHandler.getOption( name );
   }

   /**
    * DOCUMENT_ME
    *
    * @param opts DOCUMENT_ME
    */
   public void setOptions( Hashtable opts )
   {
      m_axisHelperHandler.setOptions( opts );
   }

   /**
    * DOCUMENT_ME
    *
    * @return DOCUMENT_ME
    */
   public Hashtable getOptions(  )
   {
      return m_axisHelperHandler.getOptions(  );
   }

   /**
    * DOCUMENT_ME
    *
    * @return DOCUMENT_ME
    */
   public List getUnderstoodHeaders(  )
   {
      return m_axisHelperHandler.getUnderstoodHeaders(  );
   }

   /**
    * DOCUMENT_ME
    *
    * @param qname DOCUMENT_ME
    *
    * @return DOCUMENT_ME
    */
   public boolean canHandleBlock( QName qname )
   {
      return m_axisHelperHandler.canHandleBlock( qname );
   }

   /**
    * DOCUMENT_ME
    */
   public void cleanup(  )
   {
      m_axisHelperHandler.cleanup(  );
   }

   /**
    * DOCUMENT_ME
    *
    * @param msgContext DOCUMENT_ME
    *
    * @throws AxisFault DOCUMENT_ME
    */
   public void generateWSDL( MessageContext msgContext )
   throws AxisFault
   {
      SOAPService service = msgContext.getService(  );
      LOG.debug(MSG.getMessage(Keys.RECEIVED_WSDL_REQUEST, service.getName()));
      service.generateWSDL( msgContext );
   }

   /**
    * DOCUMENT_ME
    */
   public void init(  )
   {
      m_axisHelperHandler.init(  );
   }

   /**
    * Invokes a Web service operation.
    *
    * @param msgContext Axis SOAP message context
    *
    * @throws AxisFault if a SOAP fault needs to be returned
    */
   public void invoke( MessageContext msgContext )
   throws AxisFault
   {
      try
      {
         handleRequest( msgContext );
         handleResponse( msgContext );
      }
      catch ( BaseFaultException bfe )
      {
         throw new BaseFaultType( bfe );
      }
   }

   /**
    * DOCUMENT_ME
    *
    * @param msgContext DOCUMENT_ME
    */
   public void onFault( MessageContext msgContext )
   {
      m_axisHelperHandler.onFault( msgContext );
   }

   /**
    * DOCUMENT_ME
    *
    * @param soapMsgContext DOCUMENT_ME
    *
    * @return DOCUMENT_ME
    */
   protected SOAPMessage getResponseMessage( SOAPMessageContext soapMsgContext )
   {
      MessageContext axisMsgContext  = ( (MessageContext) soapMsgContext );
      Message        responseMessage = axisMsgContext.getResponseMessage(  );
      if ( responseMessage == null )
      {
         responseMessage = createMessage( axisMsgContext );
         axisMsgContext.setResponseMessage( responseMessage );
      }

      return responseMessage;
   }

   /**
    * DOCUMENT_ME
    *
    * @param soapMsgContext DOCUMENT_ME
    *
    * @return DOCUMENT_ME
    */
   protected ResourceContext createResourceContext( SOAPMessageContext soapMsgContext )
   {
      return new AxisResourceContext( soapMsgContext );
   }

   /**
    * DOCUMENT_ME
    *
    * @param responseBodyElem DOCUMENT_ME
    *
    * @return DOCUMENT_ME
    */
   protected SOAPBodyElement createSOAPBodyElement( XmlObject responseBodyElem )
   {
      return new org.apache.axis.message.SOAPBodyElement( (Element) responseBodyElem.newDomNode(  ).getFirstChild(  ) );
   }

   private Message createMessage( MessageContext axisMsgContext )
   {
      SOAPEnvelope envelope =
         new SOAPEnvelope( axisMsgContext.getSOAPConstants(  ),
                           axisMsgContext.getSchemaVersion(  ) );
      return new Message( envelope );
   }
}
TOP

Related Classes of org.apache.ws.resource.handler.axis.ResourceProvider

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.