hillion     01/07/31 06:00:49

  Modified:    resources/org/apache/batik/dom/resources Messages.properties
               sources/org/apache/batik/dom AbstractDocument.java
  Log:
  AbstractDocument.importNode() should now be able to import nodes from any 
DOMImplementation.
  
  Revision  Changes    Path
  1.3       +3 -0      
xml-batik/resources/org/apache/batik/dom/resources/Messages.properties
  
  Index: Messages.properties
  ===================================================================
  RCS file: 
/home/cvs/xml-batik/resources/org/apache/batik/dom/resources/Messages.properties,v
  retrieving revision 1.2
  retrieving revision 1.3
  diff -u -r1.2 -r1.3
  --- Messages.properties       2000/11/22 16:26:44     1.2
  +++ Messages.properties       2001/07/31 13:00:49     1.3
  @@ -38,6 +38,9 @@
   detached.iterator = \
   The iterator was detached from the document.
   
  +import.node = \
  +Cannot import node.
  +
   import.document = \
   A Document node cannot be imported.
   
  
  
  
  1.8       +73 -5     xml-batik/sources/org/apache/batik/dom/AbstractDocument.java
  
  Index: AbstractDocument.java
  ===================================================================
  RCS file: /home/cvs/xml-batik/sources/org/apache/batik/dom/AbstractDocument.java,v
  retrieving revision 1.7
  retrieving revision 1.8
  diff -u -r1.7 -r1.8
  --- AbstractDocument.java     2001/07/05 16:59:01     1.7
  +++ AbstractDocument.java     2001/07/31 13:00:49     1.8
  @@ -22,11 +22,13 @@
   import org.apache.batik.i18n.Localizable;
   import org.apache.batik.i18n.LocalizableSupport;
   
  +import org.w3c.dom.Attr;
   import org.w3c.dom.Document;
   import org.w3c.dom.DocumentType;
   import org.w3c.dom.DOMException;
   import org.w3c.dom.DOMImplementation;
   import org.w3c.dom.Element;
  +import org.w3c.dom.NamedNodeMap;
   import org.w3c.dom.Node;
   import org.w3c.dom.NodeList;
   import org.w3c.dom.events.DocumentEvent;
  @@ -40,7 +42,7 @@
    * This class implements the {@link org.w3c.dom.Document} interface.
    *
    * @author <a href="mailto:[EMAIL PROTECTED]";>Stephane Hillion</a>
  - * @version $Id: AbstractDocument.java,v 1.7 2001/07/05 16:59:01 hillion Exp $
  + * @version $Id: AbstractDocument.java,v 1.8 2001/07/31 13:00:49 hillion Exp $
    */
   public abstract class AbstractDocument
       extends    AbstractParentNode
  @@ -210,10 +212,76 @@
        */
       public Node importNode(Node importedNode, boolean deep)
           throws DOMException {
  -     AbstractNode an = (AbstractNode)importedNode;
  -     return (deep)
  -         ? an.deepExport(an.cloneNode(false), this)
  -         : an.export(an.cloneNode(false), this);
  +        if (importedNode instanceof AbstractNode) {
  +            AbstractNode an = (AbstractNode)importedNode;
  +            return (deep)
  +                ? an.deepExport(an.cloneNode(false), this)
  +                : an.export(an.cloneNode(false), this);
  +        } else {
  +            Node result;
  +            switch (importedNode.getNodeType()) {
  +            case ELEMENT_NODE:
  +                Element e = createElementNS(importedNode.getNamespaceURI(),
  +                                            importedNode.getNodeName());
  +                result = e;
  +                if (e.hasAttributes()) {
  +                    NamedNodeMap attr = importedNode.getAttributes();
  +                    int len = attr.getLength();
  +                    for (int i = 0; i < len; i++) {
  +                        Attr a = (Attr)attr.item(i);
  +                        if (a.getSpecified()) {
  +                            e.setAttributeNodeNS((Attr)importNode(a, true));
  +                        }
  +                    }
  +                }
  +                break;
  +                
  +            case ATTRIBUTE_NODE:
  +                result = createAttributeNS(importedNode.getNamespaceURI(),
  +                                           importedNode.getNodeName());
  +                break;
  +
  +            case TEXT_NODE:
  +                result = createTextNode(importedNode.getNodeValue());
  +                deep = false;
  +                break;
  +
  +            case CDATA_SECTION_NODE:
  +                result = createCDATASection(importedNode.getNodeValue());
  +                deep = false;
  +                break;
  +
  +            case ENTITY_REFERENCE_NODE:
  +                result = createEntityReference(importedNode.getNodeName());
  +                break;
  +
  +            case PROCESSING_INSTRUCTION_NODE:
  +                result = createProcessingInstruction(importedNode.getNodeName(),
  +                                                     importedNode.getNodeValue());
  +                deep = false;
  +                break;
  +
  +            case COMMENT_NODE:
  +                result = createComment(importedNode.getNodeValue());
  +                deep = false;
  +                break;
  +
  +            default:
  +                throw createDOMException(DOMException.NOT_SUPPORTED_ERR,
  +                                         "import.node",
  +                                         new Object[] {});
  +            }
  +
  +            if (deep) {
  +                for (Node n = importedNode.getFirstChild();
  +                     n != null;
  +                     n = n.getNextSibling()) {
  +                    result.appendChild(importNode(n, true));
  +                }
  +            }
  +
  +            return result;
  +        }
       }
   
       /**
  
  
  

---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]

Reply via email to