Package org.apache.ws.resource.faults.axis

Source Code of org.apache.ws.resource.faults.axis.BaseFaultType

/*=============================================================================*
*  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.faults.axis;

import org.apache.axis.AxisEngine;
import org.apache.axis.AxisFault;
import org.apache.axis.description.ElementDesc;
import org.apache.axis.description.TypeDesc;
import org.apache.axis.encoding.Deserializer;
import org.apache.axis.encoding.SerializationContext;
import org.apache.axis.encoding.Serializer;
import org.apache.axis.encoding.ser.BeanDeserializer;
import org.apache.axis.encoding.ser.BeanSerializer;
import org.apache.axis.message.MessageElement;
import org.apache.axis.message.addressing.EndpointReferenceType;
import org.apache.axis.types.URI;
import org.apache.ws.resource.faults.BaseFaultException;
import org.apache.ws.resource.faults.ErrorCode;
import org.apache.ws.resource.faults.v1_2.Faults1_2Constants;
import javax.xml.namespace.QName;
import javax.xml.soap.Detail;
import javax.xml.soap.SOAPElement;
import java.io.IOException;
import java.util.Calendar;

/**
* LOG-DONE
* WS-BaseFaults base fault type implemented as an {@link AxisFault}.
*
* @author Ian P. Springer (Hewlett-Packard Company)
*/
public class BaseFaultType
   extends AxisFault
{
   /**
    * DOCUMENT_ME
    */
   private static final QName DEFAULT_NAME =
      new QName( Faults1_2Constants.NSURI_BASEFAULTS_SCHEMA, "BaseFault",
                 Faults1_2Constants.NSPREFIX_BASEFAULTS_SCHEMA );

   // Type metadata

   /**
    * DOCUMENT_ME
    */
   private static final TypeDesc TYPE_DESC = new TypeDesc( BaseFaultType.class, true );

   static
   {
      // TODO: I don't think the below line should need to be commented out if sendXsiTypes=false - possible bug in SerializationContext.startElement()
      //TYPE_DESC.setXmlType( new QName( Faults1_2Constants.NSURI_BASEFAULTS_SCHEMA, "BaseFaultType", Faults1_2Constants.NSPREFIX_BASEFAULTS_SCHEMA ) );
      ElementDesc elemField = new ElementDesc(  );
      elemField.setFieldName( "timestamp" );
      elemField.setXmlName( new QName( Faults1_2Constants.NSURI_BASEFAULTS_SCHEMA, "Timestamp",
                                       Faults1_2Constants.NSPREFIX_BASEFAULTS_SCHEMA ) );
      elemField.setXmlType( new QName( "http://www.w3.org/2001/XMLSchema", "dateTime", "xsd" ) );
      TYPE_DESC.addFieldDesc( elemField );
      elemField = new ElementDesc(  );
      elemField.setFieldName( "originator" );
      elemField.setXmlName( new QName( Faults1_2Constants.NSURI_BASEFAULTS_SCHEMA, "Originator",
                                       Faults1_2Constants.NSPREFIX_BASEFAULTS_SCHEMA ) );
      elemField.setXmlType( new QName( "http://schemas.xmlsoap.org/ws/2003/03/addressing", "EndpointReferenceType" ) );
      elemField.setMinOccurs( 0 );
      TYPE_DESC.addFieldDesc( elemField );
      elemField = new ElementDesc(  );
      elemField.setFieldName( "errorCode" );
      elemField.setXmlName( new QName( Faults1_2Constants.NSURI_BASEFAULTS_SCHEMA, "ErrorCode",
                                       Faults1_2Constants.NSPREFIX_BASEFAULTS_SCHEMA ) );
      elemField.setXmlType( new QName( Faults1_2Constants.NSURI_BASEFAULTS_SCHEMA, ">BaseFaultType>ErrorCode",
                                       Faults1_2Constants.NSPREFIX_BASEFAULTS_SCHEMA ) );
      elemField.setMinOccurs( 0 );
      TYPE_DESC.addFieldDesc( elemField );
      elemField = new ElementDesc(  );
      elemField.setFieldName( "description" );
      elemField.setXmlName( new QName( Faults1_2Constants.NSURI_BASEFAULTS_SCHEMA, "Description",
                                       Faults1_2Constants.NSPREFIX_BASEFAULTS_SCHEMA ) );
      elemField.setXmlType( new QName( Faults1_2Constants.NSURI_BASEFAULTS_SCHEMA, ">BaseFaultType>Description",
                                       Faults1_2Constants.NSPREFIX_BASEFAULTS_SCHEMA ) );
      elemField.setMinOccurs( 0 );
      TYPE_DESC.addFieldDesc( elemField );
      elemField = new ElementDesc(  );
      elemField.setFieldName( "faultCause" );
      elemField.setXmlName( new QName( Faults1_2Constants.NSURI_BASEFAULTS_SCHEMA, "FaultCause",
                                       Faults1_2Constants.NSPREFIX_BASEFAULTS_SCHEMA ) );
      elemField.setXmlType( new QName( Faults1_2Constants.NSURI_BASEFAULTS_SCHEMA, "BaseFaultType",
                                       Faults1_2Constants.NSPREFIX_BASEFAULTS_SCHEMA ) );
      elemField.setMinOccurs( 0 );
      TYPE_DESC.addFieldDesc( elemField );
   }

   private QName                        m_name;
   private Calendar                     m_timestamp;
   private EndpointReferenceType        m_originator;
   private _BaseFaultType_ErrorCode     m_errorCode;
   private _BaseFaultType_Description[] m_description;
   private BaseFaultType[]              m_faultCause;

   /**
    * Constructs a new BaseFaultType with the specified name, SOAP fault code, and SOAP fault message. Sets the
    * timestamp field to the current time and the SOAP actor and detail fields to null.
    *
    * @param name         XML element name to use when serializing this fault
    * @param _faultCode   the SOAP fault code
    * @param _faultString the SOAP fault string
    */
   public BaseFaultType( QName  name,
                         QName  _faultCode,
                         String _faultString )
   {
      super( _faultCode, _faultString, null, null );
      m_name         = ( name != null ) ? name : DEFAULT_NAME;
      m_timestamp    = Calendar.getInstance(  );
   }

   /**
    * Constructs a new BaseFaultType from the specified BaseFaultException.
    *
    * @param bfe a platform-neutral BaseFaultException
    */
   public BaseFaultType( BaseFaultException bfe )
   {
      setFaultCode( bfe.getFaultCode(  ) );
      setFaultString( bfe.getFaultString(  ) );
      setFaultActor( bfe.getFaultActor(  ) );
      if ( bfe.getDetail(  ) != null )
      {
         setFaultDetail( new Detail[]
                         {
                            bfe.getDetail(  )
                         } );
      }

      m_name          = bfe.getName(  );
      m_timestamp     = bfe.getTimestamp(  );
      m_originator    = bfe.getOriginator(  );
      ErrorCode errorCode = bfe.getErrorCode(  );
      if ( errorCode != null )
      {
         try
         {
            m_errorCode =
               new _BaseFaultType_ErrorCode( toMessageElements( errorCode.getContent(  ) ),
                                             new URI( errorCode.getDialect(  ).toString(  ) ) );
         }
         catch ( URI.MalformedURIException murie )
         {
            throw new RuntimeException( murie );
         }
      }

      String[] description = bfe.getDescription(  );
      if ( description != null )
      {
         m_description = new _BaseFaultType_Description[description.length];
         for ( int i = 0; i < description.length; i++ )
         {
            m_description[i] = new _BaseFaultType_Description( description[i] );
         }
      }

      BaseFaultException[] faultCause = bfe.getFaultCause(  );
      if ( faultCause != null )
      {
         m_faultCause = new BaseFaultType[faultCause.length];
         for ( int i = 0; i < faultCause.length; i++ )
         {
            m_faultCause[i] = new BaseFaultType( faultCause[i] );
         }
      }
   }

   /**
    * DOCUMENT_ME
    *
    * @param description DOCUMENT_ME
    */
   public void setDescription( _BaseFaultType_Description[] description )
   {
      m_description = description;
   }

   /**
    * DOCUMENT_ME
    *
    * @return DOCUMENT_ME
    */
   public _BaseFaultType_Description[] getDescription(  )
   {
      return m_description;
   }

   /**
    * Gets deserializer for this fault.
    */
   public static Deserializer getDeserializer( String mechType,
                                               Class  javaType,
                                               QName  xmlType )
   {
      return new BeanDeserializer( javaType, xmlType, TYPE_DESC );
   }

   /**
    * DOCUMENT_ME
    *
    * @param errorCode DOCUMENT_ME
    */
   public void setErrorCode( _BaseFaultType_ErrorCode errorCode )
   {
      m_errorCode = errorCode;
   }

   /**
    * DOCUMENT_ME
    *
    * @return DOCUMENT_ME
    */
   public _BaseFaultType_ErrorCode getErrorCode(  )
   {
      return m_errorCode;
   }

   /**
    * DOCUMENT_ME
    *
    * @param faultCause DOCUMENT_ME
    */
   public void setFaultCause( BaseFaultType[] faultCause )
   {
      m_faultCause = faultCause;
   }

   /**
    * DOCUMENT_ME
    *
    * @return DOCUMENT_ME
    */
   public BaseFaultType[] getFaultCause(  )
   {
      return m_faultCause;
   }

   /**
    * DOCUMENT_ME
    *
    * @param originator DOCUMENT_ME
    */
   public void setOriginator( EndpointReferenceType originator )
   {
      m_originator = originator;
   }

   /**
    * DOCUMENT_ME
    *
    * @return DOCUMENT_ME
    */
   public EndpointReferenceType getOriginator(  )
   {
      return m_originator;
   }

   /**
    * Gets serializer for this fault.
    */
   public static Serializer getSerializer( String mechType,
                                           Class  javaType,
                                           QName  xmlType )
   {
      return new BeanSerializer( javaType, xmlType, TYPE_DESC );
   }

   /**
    * DOCUMENT_ME
    *
    * @param timestamp DOCUMENT_ME
    */
   public void setTimestamp( Calendar timestamp )
   {
      m_timestamp = timestamp;
   }

   /**
    * DOCUMENT_ME
    *
    * @return DOCUMENT_ME
    */
   public Calendar getTimestamp(  )
   {
      return m_timestamp;
   }

   /**
    * Returns type metadata object (called via reflection by {@link SerializationContext#serialize}).
    */
   public static TypeDesc getTypeDesc(  )
   {
      return TYPE_DESC;
   }

   /**
    * DOCUMENT_ME
    *
    * @return DOCUMENT_ME
    */
   public String toString(  )
   {
      // TODO
      return super.toString(  );
   }

   /**
    * Serializes the WS-RF fault detail to the specified serialization context - called by {@link
    * org.apache.axis.message.SOAPFault#outputImpl}.
    *
    * @param detailElemName the <code>QName</code> of the WS-RF fault detail element to be written (ignored by this
    *                       impl)
    * @param serContext     the <code>SerializationContext</code> to write the fault detail XML to
    *
    * @throws java.io.IOException if serialization of the WS-RF fault detail fails
    */
   public void writeDetails( QName                detailElemName,
                             SerializationContext serContext )
   throws IOException
   {
      serContext.getMessageContext(  ).setProperty( AxisEngine.PROP_SEND_XSI,
                                                    Boolean.FALSE.toString(  ) );
      serContext.setDoMultiRefs( false );
      serContext.serialize( m_name, null, this, null, true, Boolean.FALSE );
   }

   /**
    * @return
    */
   protected QName getName(  )
   {
      return m_name;
   }

   private MessageElement[] toMessageElements( SOAPElement[] soapElems )
   {
      MessageElement[] msgElems = new MessageElement[soapElems.length];
      for ( int i = 0; i < soapElems.length; i++ )
      {
         msgElems[i] = (MessageElement) soapElems[i];
      }

      return msgElems;
   }
}
TOP

Related Classes of org.apache.ws.resource.faults.axis.BaseFaultType

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.