This is the mail archive of the java-patches@gcc.gnu.org mailing list for the Java project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

[gui] Implement IIOMetadataNode


This provides an implementation for javax.imageio.metadata.IIOMetadataNode.

2004-12-28 Jerry Quinn <jlquinn@optonline.net>

	* javax/imageio/metadata/IIOMetadataNode.java: Implement.
	* javax/imageio/metadata/IIOAttr.java: New class.
	* javax/imageio/metadata/IIONamedNodeMap.java: New class.
	* javax/imageio/metadata/IIONodeList.java: New class.
	* Makefile.am: Added new files.
	* Makefile.in: Regenerated.

Index: Makefile.am
===================================================================
RCS file: /cvs/gcc/gcc/libjava/Makefile.am,v
retrieving revision 1.361.2.65
diff -u -r1.361.2.65 Makefile.am
--- Makefile.am	24 Dec 2004 11:43:03 -0000	1.361.2.65
+++ Makefile.am	28 Dec 2004 18:49:56 -0000
@@ -2105,6 +2105,9 @@
 javax/imageio/metadata/IIOInvalidTreeException.java \
 javax/imageio/metadata/IIOMetadataFormatImpl.java \
 javax/imageio/metadata/IIOMetadataNode.java \
+javax/imageio/metadata/IIOAttr.java \
+javax/imageio/metadata/IIONamedNodeMap.java \
+javax/imageio/metadata/IIONodeList.java \
 javax/print/AttributeException.java \
 javax/print/CancelablePrintJob.java \
 javax/print/Doc.java \
Index: Makefile.in
===================================================================
RCS file: /cvs/gcc/gcc/libjava/Makefile.in,v
retrieving revision 1.385.2.65
diff -u -r1.385.2.65 Makefile.in
--- Makefile.in	24 Dec 2004 11:43:05 -0000	1.385.2.65
+++ Makefile.in	28 Dec 2004 18:49:59 -0000
@@ -1706,6 +1706,9 @@
 javax/imageio/metadata/IIOInvalidTreeException.java \
 javax/imageio/metadata/IIOMetadataFormatImpl.java \
 javax/imageio/metadata/IIOMetadataNode.java \
+javax/imageio/metadata/IIOAttr.java \
+javax/imageio/metadata/IIONamedNodeMap.java \
+javax/imageio/metadata/IIONodeList.java \
 javax/print/AttributeException.java \
 javax/print/CancelablePrintJob.java \
 javax/print/Doc.java \
@@ -5119,6 +5122,9 @@
 .deps/javax/imageio/metadata/IIOMetadataFormat.P \
 .deps/javax/imageio/metadata/IIOMetadataFormatImpl.P \
 .deps/javax/imageio/metadata/IIOMetadataNode.P \
+.deps/javax/imageio/metadata/IIOAttr.P \
+.deps/javax/imageio/metadata/IIONamedNodeMap.P \
+.deps/javax/imageio/metadata/IIONodeList.P \
 .deps/javax/imageio/spi/IIORegistry.P \
 .deps/javax/imageio/spi/IIOServiceProvider.P \
 .deps/javax/imageio/spi/ImageInputStreamSpi.P \
Index: javax/imageio/metadata/IIOAttr.java
===================================================================
RCS file: javax/imageio/metadata/IIOAttr.java
diff -N javax/imageio/metadata/IIOAttr.java
--- /dev/null	1 Jan 1970 00:00:00 -0000
+++ javax/imageio/metadata/IIOAttr.java	28 Dec 2004 18:50:00 -0000
@@ -0,0 +1,305 @@
+/* IIOAttr.java --
+   Copyright (C) 2004  Free Software Foundation, Inc.
+
+This file is part of GNU Classpath.
+
+GNU Classpath is free software; you can redistribute it and/or modify
+it under the terms of the GNU General Public License as published by
+the Free Software Foundation; either version 2, or (at your option)
+any later version.
+
+GNU Classpath is distributed in the hope that it will be useful, but
+WITHOUT ANY WARRANTY; without even the implied warranty of
+MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+General Public License for more details.
+
+You should have received a copy of the GNU General Public License
+along with GNU Classpath; see the file COPYING.  If not, write to the
+Free Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
+02111-1307 USA.
+
+Linking this library statically or dynamically with other modules is
+making a combined work based on this library.  Thus, the terms and
+conditions of the GNU General Public License cover the whole
+combination.
+
+As a special exception, the copyright holders of this library give you
+permission to link this library with independent modules to produce an
+executable, regardless of the license terms of these independent
+modules, and to copy and distribute the resulting executable under
+terms of your choice, provided that you also meet, for each linked
+independent module, the terms and conditions of the license of that
+module.  An independent module is a module which is not derived from
+or based on this library.  If you modify this library, you may extend
+this exception to your version of the library, but you are not
+obligated to do so.  If you do not wish to do so, delete this
+exception statement from your version. */
+
+package javax.imageio.metadata;
+
+import org.w3c.dom.Attr;
+import org.w3c.dom.DOMException;
+import org.w3c.dom.Document;
+import org.w3c.dom.Element;
+import org.w3c.dom.NamedNodeMap;
+import org.w3c.dom.Node;
+import org.w3c.dom.NodeList;
+
+/**
+ * Simple Attr node for metadata trees
+ *
+ * @author jlquinn
+ */
+class IIOAttr implements Attr
+{
+  String name;
+  String value;
+  IIOMetadataNode owner;
+
+  public IIOAttr(String name, String value, IIOMetadataNode owner)
+  {
+    this.name = name;
+    this.value = value;
+    this.owner = owner;
+  }
+
+  /* (non-Javadoc)
+   * @see org.w3c.dom.Attr#getName()
+   */
+  public String getName()
+  {
+    return name;
+  }
+
+  /* (non-Javadoc)
+   * @see org.w3c.dom.Attr#getSpecified()
+   */
+  public boolean getSpecified()
+  {
+    // I don't think there can be default attrs in metadata
+    return true;
+  }
+
+  /* (non-Javadoc)
+   * @see org.w3c.dom.Attr#getValue()
+   */
+  public String getValue()
+  {
+    return value;
+  }
+
+  /* (non-Javadoc)
+   * @see org.w3c.dom.Attr#setValue(java.lang.String)
+   */
+  public void setValue(String value) throws DOMException
+  {
+    this.value = value;
+  }
+
+  /* (non-Javadoc)
+   * @see org.w3c.dom.Attr#getOwnerElement()
+   */
+  public Element getOwnerElement()
+  {
+    return owner;
+  }
+
+  /* (non-Javadoc)
+   * @see org.w3c.dom.Node#getNodeName()
+   */
+  public String getNodeName()
+  {
+    return name;
+  }
+
+  /* (non-Javadoc)
+   * @see org.w3c.dom.Node#getNodeValue()
+   */
+  public String getNodeValue() throws DOMException
+  {
+    return value;
+  }
+
+  /* (non-Javadoc)
+   * @see org.w3c.dom.Node#setNodeValue(java.lang.String)
+   */
+  public void setNodeValue(String nodeValue) throws DOMException
+  {
+    this.value = nodeValue;
+  }
+
+  /* (non-Javadoc)
+   * @see org.w3c.dom.Node#getNodeType()
+   */
+  public short getNodeType()
+  {
+    return ATTRIBUTE_NODE;
+  }
+
+  /* (non-Javadoc)
+   * @see org.w3c.dom.Node#getParentNode()
+   */
+  public Node getParentNode()
+  {
+    return null;
+  }
+
+  /* (non-Javadoc)
+   * @see org.w3c.dom.Node#getChildNodes()
+   */
+  public NodeList getChildNodes()
+  {
+    return null;
+  }
+
+  /* (non-Javadoc)
+   * @see org.w3c.dom.Node#getFirstChild()
+   */
+  public Node getFirstChild()
+  {
+    return null;
+  }
+
+  /* (non-Javadoc)
+   * @see org.w3c.dom.Node#getLastChild()
+   */
+  public Node getLastChild()
+  {
+    return null;
+  }
+
+  /* (non-Javadoc)
+   * @see org.w3c.dom.Node#getPreviousSibling()
+   */
+  public Node getPreviousSibling()
+  {
+    return null;
+  }
+
+  /* (non-Javadoc)
+   * @see org.w3c.dom.Node#getNextSibling()
+   */
+  public Node getNextSibling()
+  {
+    return null;
+  }
+
+  /* (non-Javadoc)
+   * @see org.w3c.dom.Node#getAttributes()
+   */
+  public NamedNodeMap getAttributes()
+  {
+    return null;
+  }
+
+  /* (non-Javadoc)
+   * @see org.w3c.dom.Node#getOwnerDocument()
+   */
+  public Document getOwnerDocument()
+  {
+    return null;
+  }
+
+  /* (non-Javadoc)
+   * @see org.w3c.dom.Node#insertBefore(org.w3c.dom.Node, org.w3c.dom.Node)
+   */
+  public Node insertBefore(Node newChild, Node refChild) throws DOMException
+  {
+    return null;
+  }
+
+  /* (non-Javadoc)
+   * @see org.w3c.dom.Node#replaceChild(org.w3c.dom.Node, org.w3c.dom.Node)
+   */
+  public Node replaceChild(Node newChild, Node oldChild) throws DOMException
+  {
+    return null;
+  }
+
+  /* (non-Javadoc)
+   * @see org.w3c.dom.Node#removeChild(org.w3c.dom.Node)
+   */
+  public Node removeChild(Node oldChild) throws DOMException
+  {
+    return null;
+  }
+
+  /* (non-Javadoc)
+   * @see org.w3c.dom.Node#appendChild(org.w3c.dom.Node)
+   */
+  public Node appendChild(Node newChild) throws DOMException
+  {
+    return null;
+  }
+
+  /* (non-Javadoc)
+   * @see org.w3c.dom.Node#hasChildNodes()
+   */
+  public boolean hasChildNodes()
+  {
+    return false;
+  }
+
+  /* (non-Javadoc)
+   * @see org.w3c.dom.Node#cloneNode(boolean)
+   */
+  public Node cloneNode(boolean deep)
+  {
+    return new IIOAttr(name, value, owner);
+  }
+
+  /* (non-Javadoc)
+   * @see org.w3c.dom.Node#normalize()
+   */
+  public void normalize()
+  {
+  }
+
+  /* (non-Javadoc)
+   * @see org.w3c.dom.Node#isSupported(java.lang.String, java.lang.String)
+   */
+  public boolean isSupported(String feature, String version)
+  {
+    return false;
+  }
+
+  /* (non-Javadoc)
+   * @see org.w3c.dom.Node#getNamespaceURI()
+   */
+  public String getNamespaceURI()
+  {
+    return null;
+  }
+
+  /* (non-Javadoc)
+   * @see org.w3c.dom.Node#getPrefix()
+   */
+  public String getPrefix()
+  {
+    return null;
+  }
+
+  /* (non-Javadoc)
+   * @see org.w3c.dom.Node#setPrefix(java.lang.String)
+   */
+  public void setPrefix(String prefix) throws DOMException
+  {
+  }
+
+  /* (non-Javadoc)
+   * @see org.w3c.dom.Node#getLocalName()
+   */
+  public String getLocalName()
+  {
+    return name;
+  }
+
+  /* (non-Javadoc)
+   * @see org.w3c.dom.Node#hasAttributes()
+   */
+  public boolean hasAttributes()
+  {
+    return false;
+  }
+
+}
Index: javax/imageio/metadata/IIOMetadataNode.java
===================================================================
RCS file: /cvs/gcc/gcc/libjava/javax/imageio/metadata/IIOMetadataNode.java,v
retrieving revision 1.1.12.1
diff -u -r1.1.12.1 IIOMetadataNode.java
--- javax/imageio/metadata/IIOMetadataNode.java	7 Dec 2004 16:54:53 -0000	1.1.12.1
+++ javax/imageio/metadata/IIOMetadataNode.java	28 Dec 2004 18:50:00 -0000
@@ -38,6 +38,464 @@

package javax.imageio.metadata;

-public class IIOMetadataNode
+import java.util.ArrayList;
+import java.util.HashMap;
+import java.util.Iterator;
+import java.util.List;
+
+import org.w3c.dom.Attr;
+import org.w3c.dom.DOMException;
+import org.w3c.dom.Document;
+import org.w3c.dom.Element;
+import org.w3c.dom.NamedNodeMap;
+import org.w3c.dom.Node;
+import org.w3c.dom.NodeList;
+
+public class IIOMetadataNode implements Element, NodeList
{
+ private String name;
+ private HashMap attrs = new HashMap();
+ private List children = new ArrayList();
+ private IIOMetadataNode parent = null;
+ private Object obj = null;
+
+ public IIOMetadataNode()
+ {
+ }
+
+ public IIOMetadataNode(String nodename)
+ {
+ name = nodename;
+ }
+
+ public Object getUserObject()
+ {
+ return obj;
+ }
+
+ public void setUserObject(Object o)
+ {
+ obj = o;
+ }
+
+ /* (non-Javadoc)
+ * @see org.w3c.dom.Element#getAttribute(java.lang.String)
+ */
+ public String getAttribute(String name)
+ {
+ Attr anode = (Attr) attrs.get(name);
+ return anode != null ? anode.getValue() : null;
+ }
+
+ /* (non-Javadoc)
+ * @see org.w3c.dom.Element#getAttributeNode(java.lang.String)
+ */
+ public Attr getAttributeNode(String name)
+ {
+ String val = getAttribute(name);
+ if (val != null)
+ return new IIOAttr(name, val, this);
+ return null;
+ }
+
+ /* (non-Javadoc)
+ * @see org.w3c.dom.Element#getAttributeNodeNS(java.lang.String, java.lang.String)
+ */
+ public Attr getAttributeNodeNS(String namespaceURI, String localName)
+ {
+ return getAttributeNode(localName);
+ }
+ /* (non-Javadoc)
+ * @see org.w3c.dom.Element#getAttributeNS(java.lang.String, java.lang.String)
+ */
+ public String getAttributeNS(String namespaceURI, String localName)
+ {
+ return getAttribute(localName);
+ }
+
+ // Recursive function for assembling a node list.
+ private void getElementsRecurse(IIONodeList list, String name)
+ {
+ for (int i=0; i < children.size(); i++)
+ {
+ if (((Node)children.get(i)).getNodeName().equals(name))
+ list.children.add(children.get(i));
+ getElementsRecurse(list, name);
+ }
+ }
+
+ /* (non-Javadoc)
+ * @see org.w3c.dom.Element#getElementsByTagName(java.lang.String)
+ */
+ public NodeList getElementsByTagName(String name)
+ {
+ IIONodeList list = new IIONodeList();
+ getElementsRecurse(list, name);
+ return list;
+ }
+
+ /* (non-Javadoc)
+ * @see org.w3c.dom.Element#getElementsByTagNameNS(java.lang.String, java.lang.String)
+ */
+ public NodeList getElementsByTagNameNS(String namespaceURI, String localName) {
+ IIONodeList list = new IIONodeList();
+ getElementsRecurse(list, name);
+ return list;
+ }
+
+ /* (non-Javadoc)
+ * @see org.w3c.dom.Element#getTagName()
+ */
+ public String getTagName()
+ {
+ return name;
+ }
+
+ /* (non-Javadoc)
+ * @see org.w3c.dom.Element#hasAttribute(java.lang.String)
+ */
+ public boolean hasAttribute(String name)
+ {
+ return attrs.containsKey(name);
+ }
+
+ /* (non-Javadoc)
+ * @see org.w3c.dom.Element#hasAttributeNS(java.lang.String, java.lang.String)
+ */
+ public boolean hasAttributeNS(String namespaceURI, String localName)
+ {
+ return attrs.containsKey(localName);
+ }
+
+ /* (non-Javadoc)
+ * @see org.w3c.dom.Element#removeAttribute(java.lang.String)
+ */
+ public void removeAttribute(String name) throws DOMException
+ {
+ attrs.remove(name);
+ }
+
+ /* (non-Javadoc)
+ * @see org.w3c.dom.Element#removeAttributeNode(org.w3c.dom.Attr)
+ */
+ public Attr removeAttributeNode(Attr oldAttr) throws DOMException
+ {
+ return (Attr)attrs.remove(oldAttr.getName());
+ }
+
+ /* (non-Javadoc)
+ * @see org.w3c.dom.Element#removeAttributeNS(java.lang.String, java.lang.String)
+ */
+ public void removeAttributeNS(String namespaceURI, String localName)
+ throws DOMException
+ {
+ removeAttribute(localName);
+ }
+ /* (non-Javadoc)
+ * @see org.w3c.dom.Element#setAttribute(java.lang.String, java.lang.String)
+ */
+ public void setAttribute(String name, String value) throws DOMException
+ {
+ Attr attr = (Attr) getAttributeNode(name);
+ if (attr != null)
+ attr.setValue(value);
+ else
+ attrs.put(name, new IIOAttr(name, value, this));
+ }
+
+ /* (non-Javadoc)
+ * @see org.w3c.dom.Element#setAttributeNode(org.w3c.dom.Attr)
+ */
+ public Attr setAttributeNode(Attr newAttr) throws DOMException
+ {
+ return (Attr)attrs.put(newAttr.getName(), newAttr);
+ }
+
+ /* (non-Javadoc)
+ * @see org.w3c.dom.Element#setAttributeNodeNS(org.w3c.dom.Attr)
+ */
+ public Attr setAttributeNodeNS(Attr newAttr) throws DOMException
+ {
+ return (Attr)attrs.put(newAttr.getName(), newAttr);
+ }
+
+ /* (non-Javadoc)
+ * @see org.w3c.dom.Element#setAttributeNS(java.lang.String, java.lang.String, java.lang.String)
+ */
+ public void setAttributeNS(String namespaceURI, String qualifiedName,
+ String value) throws DOMException
+ {
+ setAttribute(qualifiedName, value);
+ }
+
+ /* (non-Javadoc)
+ * @see org.w3c.dom.NodeList#getLength()
+ */
+ public int getLength()
+ {
+ return children.size();
+ }
+
+ /* (non-Javadoc)
+ * @see org.w3c.dom.NodeList#item(int)
+ */
+ public Node item(int index)
+ {
+ if (index < children.size())
+ return (Node)children.get(index);
+ else
+ return null;
+ }
+
+ /* (non-Javadoc)
+ * @see org.w3c.dom.Node#appendChild(org.w3c.dom.Node)
+ */
+ public Node appendChild(Node newChild) throws DOMException
+ {
+ if (newChild == null)
+ throw new IllegalArgumentException("Child node is null");
+
+ IIOMetadataNode child = (IIOMetadataNode) newChild;
+
+ children.add(child);
+ child.parent = this;
+ return this;
+ }
+
+ /* (non-Javadoc)
+ * @see org.w3c.dom.Node#cloneNode(boolean)
+ */
+ public Node cloneNode(boolean deep)
+ {
+ IIOMetadataNode newnode = new IIOMetadataNode(name);
+ newnode.parent = null;
+ newnode.obj = obj;
+ if (deep)
+ {
+ for (int i=0; i < children.size(); i++)
+ newnode.children.add(((Node)children.get(i)).cloneNode(deep));
+ }
+
+ // clone attrs
+ for (Iterator it = attrs.values().iterator(); it.hasNext();)
+ {
+ IIOAttr attr = (IIOAttr)it.next();
+ newnode.attrs.put(attr.name, attr.cloneNode(deep));
+ attr.owner = newnode;
+ }
+
+ return newnode;
+ }
+
+ /* (non-Javadoc)
+ * @see org.w3c.dom.Node#getAttributes()
+ */
+ public NamedNodeMap getAttributes()
+ {
+ return new IIONamedNodeMap(attrs);
+ }
+
+ /* (non-Javadoc)
+ * @see org.w3c.dom.Node#getChildNodes()
+ */
+ public NodeList getChildNodes()
+ {
+ return this;
+ }
+
+ /* (non-Javadoc)
+ * @see org.w3c.dom.Node#getFirstChild()
+ */
+ public Node getFirstChild()
+ {
+ return (children.size() > 0) ? (Node)children.get(0) : null;
+ }
+
+ /* (non-Javadoc)
+ * @see org.w3c.dom.Node#getLastChild()
+ */
+ public Node getLastChild()
+ {
+ return (children.size() > 0) ? (Node)children.get(children.size() - 1)
+ : null;
+ }
+
+ /* (non-Javadoc)
+ * @see org.w3c.dom.Node#getLocalName()
+ */
+ public String getLocalName()
+ {
+ return name;
+ }
+
+ /* (non-Javadoc)
+ * @see org.w3c.dom.Node#getNamespaceURI()
+ */
+ public String getNamespaceURI()
+ {
+ return null;
+ }
+
+ /* (non-Javadoc)
+ * @see org.w3c.dom.Node#getNextSibling()
+ */
+ public Node getNextSibling()
+ {
+ // If this op needs to be faster, add links to prev and next nodes.
+ if (parent == null) return null;
+ int idx = parent.children.indexOf(this);
+ return (idx == parent.children.size() - 1) ? null
+ : (Node)parent.children.get(idx + 1);
+ }
+
+ /* (non-Javadoc)
+ * @see org.w3c.dom.Node#getNodeName()
+ */
+ public String getNodeName()
+ {
+ return name;
+ }
+
+ /* (non-Javadoc)
+ * @see org.w3c.dom.Node#getNodeType()
+ */
+ public short getNodeType()
+ {
+ return ELEMENT_NODE;
+ }
+
+ /* (non-Javadoc)
+ * @see org.w3c.dom.Node#getNodeValue()
+ */
+ public String getNodeValue() throws DOMException
+ {
+ return null;
+ }
+
+ /* (non-Javadoc)
+ * @see org.w3c.dom.Node#getOwnerDocument()
+ */
+ public Document getOwnerDocument()
+ {
+ // IOMetadataNodes have no owner
+ return null;
+ }
+
+ /* (non-Javadoc)
+ * @see org.w3c.dom.Node#getParentNode()
+ */
+ public Node getParentNode()
+ {
+ return parent;
+ }
+
+ /* (non-Javadoc)
+ * @see org.w3c.dom.Node#getPrefix()
+ */
+ public String getPrefix()
+ {
+ return null;
+ }
+
+ /* (non-Javadoc)
+ * @see org.w3c.dom.Node#getPreviousSibling()
+ */
+ public Node getPreviousSibling()
+ {
+ // If this op needs to be faster, add links to prev and next nodes.
+ if (parent == null) return null;
+ int idx = parent.children.indexOf(this);
+ return (idx == 0) ? null
+ : (Node)parent.children.get(idx - 1);
+ }
+
+ /* (non-Javadoc)
+ * @see org.w3c.dom.Node#hasAttributes()
+ */
+ public boolean hasAttributes()
+ {
+ return !attrs.isEmpty();
+ }
+
+ /* (non-Javadoc)
+ * @see org.w3c.dom.Node#hasChildNodes()
+ */
+ public boolean hasChildNodes()
+ {
+ return !children.isEmpty();
+ }
+
+ /* (non-Javadoc)
+ * @see org.w3c.dom.Node#insertBefore(org.w3c.dom.Node, org.w3c.dom.Node)
+ */
+ public Node insertBefore(Node newChild, Node refChild) throws DOMException
+ {
+ if (newChild == null)
+ throw new IllegalArgumentException();
+
+ int idx = children.indexOf(refChild);
+ if (idx == -1)
+ children.add(newChild);
+ else
+ children.add(idx, newChild);
+ ((IIOMetadataNode)newChild).parent = this;
+
+ return newChild;
+ }
+
+ /* (non-Javadoc)
+ * @see org.w3c.dom.Node#isSupported(java.lang.String, java.lang.String)
+ */
+ public boolean isSupported(String feature, String version)
+ {
+ // No DOM features are supported
+ return false;
+ }
+
+ /* (non-Javadoc)
+ * @see org.w3c.dom.Node#normalize()
+ */
+ public void normalize()
+ {
+ // No text nodes so no action
+ }
+
+ /* (non-Javadoc)
+ * @see org.w3c.dom.Node#removeChild(org.w3c.dom.Node)
+ */
+ public Node removeChild(Node oldChild) throws DOMException
+ {
+ if (oldChild == null)
+ throw new IllegalArgumentException();
+ children.remove(oldChild);
+ ((IIOMetadataNode)oldChild).parent = null;
+
+ return oldChild;
+ }
+
+ /* (non-Javadoc)
+ * @see org.w3c.dom.Node#replaceChild(org.w3c.dom.Node, org.w3c.dom.Node)
+ */
+ public Node replaceChild(Node newChild, Node oldChild) throws DOMException
+ {
+ if (newChild == null)
+ throw new IllegalArgumentException();
+ children.set(children.indexOf(oldChild), newChild);
+ ((IIOMetadataNode)oldChild).parent = null;
+ return oldChild;
+ }
+
+ /* (non-Javadoc)
+ * @see org.w3c.dom.Node#setNodeValue(java.lang.String)
+ */
+ public void setNodeValue(String nodeValue) throws DOMException
+ {
+ }
+
+ /* (non-Javadoc)
+ * @see org.w3c.dom.Node#setPrefix(java.lang.String)
+ */
+ public void setPrefix(String prefix) throws DOMException
+ {
+ }
}
Index: javax/imageio/metadata/IIONamedNodeMap.java
===================================================================
RCS file: javax/imageio/metadata/IIONamedNodeMap.java
diff -N javax/imageio/metadata/IIONamedNodeMap.java
--- /dev/null 1 Jan 1970 00:00:00 -0000
+++ javax/imageio/metadata/IIONamedNodeMap.java 28 Dec 2004 18:50:00 -0000
@@ -0,0 +1,138 @@
+/* IIONamedNodeMap.java --
+ Copyright (C) 2004 Free Software Foundation, Inc.
+
+This file is part of GNU Classpath.
+
+GNU Classpath is free software; you can redistribute it and/or modify
+it under the terms of the GNU General Public License as published by
+the Free Software Foundation; either version 2, or (at your option)
+any later version.
+
+GNU Classpath is distributed in the hope that it will be useful, but
+WITHOUT ANY WARRANTY; without even the implied warranty of
+MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+General Public License for more details.
+
+You should have received a copy of the GNU General Public License
+along with GNU Classpath; see the file COPYING. If not, write to the
+Free Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
+02111-1307 USA.
+
+Linking this library statically or dynamically with other modules is
+making a combined work based on this library. Thus, the terms and
+conditions of the GNU General Public License cover the whole
+combination.
+
+As a special exception, the copyright holders of this library give you
+permission to link this library with independent modules to produce an
+executable, regardless of the license terms of these independent
+modules, and to copy and distribute the resulting executable under
+terms of your choice, provided that you also meet, for each linked
+independent module, the terms and conditions of the license of that
+module. An independent module is a module which is not derived from
+or based on this library. If you modify this library, you may extend
+this exception to your version of the library, but you are not
+obligated to do so. If you do not wish to do so, delete this
+exception statement from your version. */
+
+package javax.imageio.metadata;
+
+import java.util.HashMap;
+
+import org.w3c.dom.DOMException;
+import org.w3c.dom.NamedNodeMap;
+import org.w3c.dom.Node;
+
+/**
+ * Simple NamedNodeMap class for IIOMetadataNode.
+ *
+ * @author jlquinn
+ */
+class IIONamedNodeMap implements NamedNodeMap
+{
+ HashMap attrs;
+
+ /**
+ * @param attrs
+ * @param node
+ */
+ public IIONamedNodeMap(HashMap attrs)
+ {
+ this.attrs = attrs;
+ }
+
+ /* (non-Javadoc)
+ * @see org.w3c.dom.NamedNodeMap#getNamedItem(java.lang.String)
+ */
+ public Node getNamedItem(String name)
+ {
+ return (Node)attrs.get(name);
+ }
+
+ /* (non-Javadoc)
+ * @see org.w3c.dom.NamedNodeMap#setNamedItem(org.w3c.dom.Node)
+ */
+ public Node setNamedItem(Node arg) throws DOMException
+ {
+ if (arg instanceof IIOAttr)
+ {
+ IIOAttr attr = (IIOAttr) arg;
+ // The only code that can successfully do this is in this package.
+ if (attr.owner != null)
+ throw new DOMException(DOMException.INUSE_ATTRIBUTE_ERR, "");
+ return (Node)attrs.put(attr.name, attr);
+ }
+ // Anything else gets treated as an invalid op.
+ throw new DOMException(DOMException.HIERARCHY_REQUEST_ERR, "");
+ }
+
+ /* (non-Javadoc)
+ * @see org.w3c.dom.NamedNodeMap#removeNamedItem(java.lang.String)
+ */
+ public Node removeNamedItem(String name) throws DOMException
+ {
+ return (Node)attrs.remove(name);
+ }
+
+ /* (non-Javadoc)
+ * @see org.w3c.dom.NamedNodeMap#item(int)
+ */
+ public Node item(int index)
+ {
+ return (Node)attrs.values().toArray()[index];
+ }
+
+ /* (non-Javadoc)
+ * @see org.w3c.dom.NamedNodeMap#getLength()
+ */
+ public int getLength()
+ {
+ return attrs.size();
+ }
+
+ /* (non-Javadoc)
+ * @see org.w3c.dom.NamedNodeMap#getNamedItemNS(java.lang.String, java.lang.String)
+ */
+ public Node getNamedItemNS(String namespaceURI, String localName)
+ {
+ return getNamedItem(localName);
+ }
+
+ /* (non-Javadoc)
+ * @see org.w3c.dom.NamedNodeMap#setNamedItemNS(org.w3c.dom.Node)
+ */
+ public Node setNamedItemNS(Node arg) throws DOMException
+ {
+ return setNamedItem(arg);
+ }
+
+ /* (non-Javadoc)
+ * @see org.w3c.dom.NamedNodeMap#removeNamedItemNS(java.lang.String, java.lang.String)
+ */
+ public Node removeNamedItemNS(String namespaceURI, String localName)
+ throws DOMException
+ {
+ return removeNamedItem(localName);
+ }
+
+}
Index: javax/imageio/metadata/IIONodeList.java
===================================================================
RCS file: javax/imageio/metadata/IIONodeList.java
diff -N javax/imageio/metadata/IIONodeList.java
--- /dev/null 1 Jan 1970 00:00:00 -0000
+++ javax/imageio/metadata/IIONodeList.java 28 Dec 2004 18:50:00 -0000
@@ -0,0 +1,72 @@
+/* IIOAttr.java --
+ Copyright (C) 2004 Free Software Foundation, Inc.
+
+This file is part of GNU Classpath.
+
+GNU Classpath is free software; you can redistribute it and/or modify
+it under the terms of the GNU General Public License as published by
+the Free Software Foundation; either version 2, or (at your option)
+any later version.
+
+GNU Classpath is distributed in the hope that it will be useful, but
+WITHOUT ANY WARRANTY; without even the implied warranty of
+MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+General Public License for more details.
+
+You should have received a copy of the GNU General Public License
+along with GNU Classpath; see the file COPYING. If not, write to the
+Free Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
+02111-1307 USA.
+
+Linking this library statically or dynamically with other modules is
+making a combined work based on this library. Thus, the terms and
+conditions of the GNU General Public License cover the whole
+combination.
+
+As a special exception, the copyright holders of this library give you
+permission to link this library with independent modules to produce an
+executable, regardless of the license terms of these independent
+modules, and to copy and distribute the resulting executable under
+terms of your choice, provided that you also meet, for each linked
+independent module, the terms and conditions of the license of that
+module. An independent module is a module which is not derived from
+or based on this library. If you modify this library, you may extend
+this exception to your version of the library, but you are not
+obligated to do so. If you do not wish to do so, delete this
+exception statement from your version. */
+
+package javax.imageio.metadata;
+
+import java.util.ArrayList;
+import java.util.List;
+
+import org.w3c.dom.Node;
+import org.w3c.dom.NodeList;
+
+/**
+ * Simple NodeList implementation for IIOMetadataNode.
+ *
+ * @author jlquinn
+ *
+ */
+class IIONodeList implements NodeList
+{
+ List children = new ArrayList();
+
+ /* (non-Javadoc)
+ * @see org.w3c.dom.NodeList#item(int)
+ */
+ public Node item(int index)
+ {
+ return (index < children.size()) ? (Node)children.get(index) : null;
+ }
+
+ /* (non-Javadoc)
+ * @see org.w3c.dom.NodeList#getLength()
+ */
+ public int getLength()
+ {
+ return children.size();
+ }
+
+}



Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]