Docjar: A Java Source and Docuemnt Enginecom.*    java.*    javax.*    org.*    all    new    plug-in

Quick Search    Search Deep

Source code: org/apache/axis/encoding/ser/DocumentDeserializer.java


1   package org.apache.axis.encoding.ser;
2   
3   /*
4    * Copyright 2001-2004 The Apache Software Foundation.
5    * 
6    * Licensed under the Apache License, Version 2.0 (the "License");
7    * you may not use this file except in compliance with the License.
8    * You may obtain a copy of the License at
9    * 
10   *      http://www.apache.org/licenses/LICENSE-2.0
11   * 
12   * Unless required by applicable law or agreed to in writing, software
13   * distributed under the License is distributed on an "AS IS" BASIS,
14   * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
15   * See the License for the specific language governing permissions and
16   * limitations under the License.
17   */
18  
19  import org.apache.axis.MessageContext;
20  import org.apache.axis.components.logger.LogFactory;
21  import org.apache.axis.encoding.DeserializationContext;
22  import org.apache.axis.encoding.DeserializerImpl;
23  import org.apache.axis.message.MessageElement;
24  import org.apache.axis.utils.Messages;
25  import org.apache.commons.logging.Log;
26  import org.xml.sax.SAXException;
27  
28  import java.util.List;
29  
30  /**
31   * Deserializer for DOM Document
32   *
33   * @author Davanum Srinivas <dims@yahoo.com>
34   */
35  public class DocumentDeserializer extends DeserializerImpl
36  {
37      protected static Log log =
38          LogFactory.getLog(DocumentDeserializer.class.getName());
39  
40     public static final String DESERIALIZE_CURRENT_ELEMENT = "DeserializeCurrentElement";
41  
42      public final void onEndElement(String namespace, String localName,
43                                     DeserializationContext context)
44          throws SAXException
45      {
46          try {
47              MessageElement msgElem = context.getCurElement();
48              if ( msgElem != null ) {
49                  MessageContext messageContext = context.getMessageContext();
50                  Boolean currentElement = (Boolean) messageContext.getProperty(DESERIALIZE_CURRENT_ELEMENT);
51                  if (currentElement != null && currentElement.booleanValue()) {
52                      value = msgElem.getAsDocument();
53                      messageContext.setProperty(DESERIALIZE_CURRENT_ELEMENT, Boolean.FALSE);
54                      return;
55                  }
56                  List children = msgElem.getChildren();
57                  if ( children != null ) {
58                      msgElem = (MessageElement) children.get(0);
59                      if ( msgElem != null )
60                          value = msgElem.getAsDocument();
61                  }
62              }
63          }
64          catch( Exception exp ) {
65              log.error(Messages.getMessage("exception00"), exp);
66              throw new SAXException( exp );
67          }
68      }
69  }