classpath-patches
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[cp-patches] FYI: Patch: complete javax.imageio.metadata.IIOMetadataForm


From: Thomas Fitzsimmons
Subject: [cp-patches] FYI: Patch: complete javax.imageio.metadata.IIOMetadataFormatImpl
Date: Mon, 24 Oct 2005 16:12:22 -0400

Hi,

I just committed this patch; it brings the javax.imageio.metadata
package up to 1.5-level API coverage.  This package still needs
extensive testing though.

Tom

2005-10-24  Thomas Fitzsimmons  <address@hidden>

        * javax/imageio/metadata/IIOMetadataFormatImpl.java: Complete.
        * javax/imageio/metadata/IIOMetadataNode.java: Complete stubs.
        * javax/imageio/metadata/IIOAttr.java: Replace with
        IIOMetadataFormatImpl.IIOMetadataNodeAttr.  Remove file.
        * javax/imageio/metadata/IIONamedNodeMap.java: Replace with
        IIOMetadataNode.IIONamedNodeMap.  Remove file.
        * javax/imageio/metadata/IIONodeList.java: Replace with
        IIOMetadataNode.IIONodeList.  Remove file.

Index: javax/imageio/metadata/IIOAttr.java
===================================================================
RCS file: javax/imageio/metadata/IIOAttr.java
diff -N javax/imageio/metadata/IIOAttr.java
--- javax/imageio/metadata/IIOAttr.java 2 Jul 2005 20:32:45 -0000       1.2
+++ /dev/null   1 Jan 1970 00:00:00 -0000
@@ -1,378 +0,0 @@
-/* IIOAttr.java --
-   Copyright (C) 2004, 2005  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., 51 Franklin Street, Fifth Floor, Boston, MA
-02110-1301 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;
-import org.w3c.dom.TypeInfo;
-import org.w3c.dom.UserDataHandler;
-
-/**
- * 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;
-  }
-
-  public TypeInfo getSchemaTypeInfo()
-  {
-    throw new Error("not implemented");
-  }
-
-  /* (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()
-  {
-  }
-
-  public boolean isDefaultNamespace(String namespaceURI)
-  {
-    throw new Error("not implemented");
-  }
-  
-  /* (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;
-  }
-
-  public Object getUserData(String key)
-  {
-    throw new Error("not implemented");
-  }
-
-  /* (non-Javadoc)
-   * @see org.w3c.dom.Node#hasAttributes()
-   */
-  public boolean hasAttributes()
-  {
-    return false;
-  }
-
-  public boolean isId()
-  {
-    throw new Error("not implemented");
-  }
-
-  public String lookupNamespaceURI(String prefix)
-  {
-    throw new Error("not implemented");
-  }
-
-  public String lookupPrefix(String namespaceURI)
-  {
-    throw new Error("not implemented");
-  }
-  
-  public Object setUserData(String key, Object data, UserDataHandler handler)
-  {
-    throw new Error("not implemented");
-  }
-
-  public String getBaseURI()
-  {
-    throw new Error("not implemented");
-  }
-
-  public String getTextContent()
-  {
-    throw new Error("not implemented");
-  }
-
-  public void setTextContent(String textContent)
-  {
-    throw new Error("not implemented");
-  }
-
-  public short compareDocumentPosition(Node other)
-    throws DOMException
-  {
-    throw new Error("not implemented");
-  }
-
-  public Object getFeature(String feature, String version)
-  {
-    throw new Error("not implemented");
-  }
-  
-  public boolean isEqualNode(Node other)
-  {
-    throw new Error("not implemented");
-  }
-  
-  public boolean isSameNode(Node other)
-  {
-    throw new Error("not implemented");
-  }
-}
Index: javax/imageio/metadata/IIOMetadataFormatImpl.java
===================================================================
RCS file: 
/cvsroot/classpath/classpath/javax/imageio/metadata/IIOMetadataFormatImpl.java,v
retrieving revision 1.2
diff -u -r1.2 IIOMetadataFormatImpl.java
--- javax/imageio/metadata/IIOMetadataFormatImpl.java   2 Jul 2005 20:32:45 
-0000       1.2
+++ javax/imageio/metadata/IIOMetadataFormatImpl.java   24 Oct 2005 20:02:05 
-0000
@@ -38,6 +38,848 @@
 
 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;
+import org.w3c.dom.TypeInfo;
+import org.w3c.dom.UserDataHandler;
+import java.util.ArrayList;
+import java.util.HashMap;
+import java.util.Map;
+import java.util.Iterator;
+import java.util.List;
+import java.util.Locale;
+import java.util.ResourceBundle;
+import java.util.MissingResourceException;
+import javax.imageio.ImageTypeSpecifier;
+
 public abstract class IIOMetadataFormatImpl implements IIOMetadataFormat
 {
+  /**
+   * The standard metadata format name constant set to
+   * "javax_imageio_1.0".
+   */
+  public static final String standardMetadataFormatName = "javax_imageio_1.0";
+
+  private String rootName;
+
+  // These maps assume that each element name is unique.
+
+  private Map nodes = new HashMap();
+
+  // A mapping from element name to child policy.
+  private Map childPolicies = new HashMap();
+
+  // A mapping from element name to the permissible number of
+  // children.  Values in this map are length-two integer arrays; the
+  // first index is the minimum bound, the second index is the maximum
+  // bound.
+  private Map childRanges = new HashMap();
+
+  private String resourceBaseName;
+
+  // Package-private so that it may be used in IIOMetadataNode.
+  static class IIOMetadataNodeAttr extends IIOMetadataNode
+    implements Attr
+  {
+    protected Element owner;
+    protected String name;
+    protected int dataType;
+    protected boolean required;
+    protected String defaultValue;
+
+    public IIOMetadataNodeAttr (Element owner,
+                               String name,
+                               String defaultValue)
+    {
+      this (owner, name, IIOMetadataFormat.DATATYPE_STRING,
+            true, defaultValue);
+    }
+
+    public IIOMetadataNodeAttr (Element owner,
+                               String name,
+                               int dataType,
+                               boolean required,
+                               String defaultValue)
+    {
+      this.owner = owner;
+      this.name = name;
+      this.dataType = dataType;
+      this.required = required;
+      this.defaultValue = defaultValue;
+    }
+
+    public String getName ()
+    {
+      return name;
+    }
+
+    public Element getOwnerElement ()
+    {
+      return owner;
+    }
+
+    public int getDataType ()
+    {
+      return dataType;
+    }
+
+    public TypeInfo getSchemaTypeInfo ()
+    {
+      return null;
+    }
+
+    public boolean getSpecified ()
+    {
+      return false;
+    }
+
+    public String getValue ()
+    {
+      return defaultValue;
+    }
+
+    public boolean isId()
+    {
+      return false;
+    }
+
+    public void setValue (String value)
+    {
+    }
+
+    // new methods
+
+    public boolean isRequired ()
+    {
+      return required;
+    }
+  }
+
+  private class IIOMetadataNodeAttrEnumerated extends IIOMetadataNodeAttr
+  {
+    protected List enumeratedValues;
+
+    public IIOMetadataNodeAttrEnumerated (Element owner,
+                                         String name,
+                                         int dataType,
+                                         boolean required,
+                                         String defaultValue,
+                                         List enumeratedValues)
+    {
+      super (owner, name, dataType, required, defaultValue);
+      this.enumeratedValues = new ArrayList (enumeratedValues);
+    }
+
+    public Object[] getEnumerations ()
+    {
+      return enumeratedValues.toArray ();
+    }
+  }
+
+  private class IIOMetadataNodeAttrBounded extends IIOMetadataNodeAttr
+  {
+    protected String minValue;
+    protected String maxValue;
+    protected boolean minInclusive;
+    protected boolean maxInclusive;
+
+    public IIOMetadataNodeAttrBounded (Element owner,
+                                      String name,
+                                      int dataType,
+                                      boolean required,
+                                      String defaultValue,
+                                      String minValue,
+                                      String maxValue,
+                                      boolean minInclusive,
+                                      boolean maxInclusive)
+    {
+      super (owner, name, dataType, required, defaultValue);
+      this.minValue = minValue;
+      this.maxValue = maxValue;
+      this.minInclusive = minInclusive;
+      this.maxInclusive = maxInclusive;
+    }
+
+    public String getMinValue ()
+    {
+      return minValue;
+    }
+
+    public String getMaxValue ()
+    {
+      return maxValue;
+    }
+  }
+
+  private class IIOMetadataNodeAttrList extends IIOMetadataNodeAttr
+  {
+    protected int listMinLength;
+    protected int listMaxLength;
+
+    public IIOMetadataNodeAttrList (Element owner,
+                                   String name,
+                                   int dataType,
+                                   boolean required,
+                                   int listMinLength,
+                                   int listMaxLength)
+    {
+      super (owner, name, dataType, required, null);
+      this.listMinLength = listMinLength;
+      this.listMaxLength = listMaxLength;
+    }
+
+    public int getListMinLength ()
+    {
+      return listMinLength;
+    }
+
+    public int getListMaxLength ()
+    {
+      return listMaxLength;
+    }
+  }
+
+  private class NodeObject
+  {
+    protected Element owner;
+    protected Class classType;
+    protected boolean required;
+    protected Object defaultValue;
+    protected int valueType;
+
+    public NodeObject (Element owner,
+                       Class classType,
+                       boolean required,
+                       Object defaultValue)
+    {
+      this.owner = owner;
+      this.classType = classType;
+      this.required = required;
+      this.defaultValue = defaultValue;
+      valueType = IIOMetadataFormat.VALUE_ARBITRARY;
+    }
+
+    public int getValueType ()
+    {
+      return valueType;
+    }
+
+    public Class getClassType ()
+    {
+      return classType;
+    }
+
+    public Element getOwnerElement ()
+    {
+      return owner;
+    }
+
+    public Object getDefaultValue ()
+    {
+      return defaultValue;
+    }
+
+    public boolean isRequired ()
+    {
+      return required;
+    }
+  }
+
+  private class NodeObjectEnumerated extends NodeObject
+  {
+    protected List enumeratedValues;
+
+    public NodeObjectEnumerated (Element owner,
+                                 Class classType,
+                                 boolean required,
+                                 Object defaultValue,
+                                 List enumeratedValues)
+    {
+      super (owner, classType, false, defaultValue);
+      this.enumeratedValues = enumeratedValues;
+      valueType = IIOMetadataFormat.VALUE_ENUMERATION;
+    }
+
+    public Object[] getEnumerations ()
+    {
+      return enumeratedValues.toArray();
+    }
+  }
+
+  private class NodeObjectBounded extends NodeObject
+  {
+    protected Comparable minValue;
+    protected Comparable maxValue;
+    protected boolean minInclusive;
+    protected boolean maxInclusive;
+
+    public NodeObjectBounded (Element owner,
+                              Class classType,
+                              Object defaultValue,
+                              Comparable minValue,
+                              Comparable maxValue,
+                              boolean minInclusive,
+                              boolean maxInclusive)
+    {
+      super (owner, classType, false, defaultValue);
+      this.minValue = minValue;
+      this.maxValue = maxValue;
+      this.minInclusive = minInclusive;
+      this.maxInclusive = maxInclusive;
+      if (minInclusive)
+        {
+          if (maxInclusive)
+            valueType = IIOMetadataFormat.VALUE_RANGE_MIN_MAX_INCLUSIVE;
+          else
+            valueType = IIOMetadataFormat.VALUE_RANGE_MIN_INCLUSIVE;
+        }
+      else
+        {
+          if (maxInclusive)
+            valueType = IIOMetadataFormat.VALUE_RANGE_MAX_INCLUSIVE;
+          else
+            valueType = IIOMetadataFormat.VALUE_RANGE;
+        }
+    }
+
+    public Comparable getMinValue ()
+    {
+      return minValue;
+    }
+
+    public Comparable getMaxValue ()
+    {
+      return maxValue;
+    }
+  }
+
+  private class NodeObjectArray extends NodeObject
+  {
+    protected Integer arrayMinLength;
+    protected Integer arrayMaxLength;
+
+    public NodeObjectArray (Element owner,
+                            Class classType,
+                            int arrayMinLength,
+                            int arrayMaxLength)
+    {
+      super (owner, classType, false, null);
+      this.arrayMinLength = new Integer (arrayMinLength);
+      this.arrayMaxLength = new Integer (arrayMaxLength);
+      valueType = IIOMetadataFormat.VALUE_LIST;
+    }
+
+    public Comparable getArrayMinLength ()
+    {
+      return arrayMinLength;
+    }
+
+    public Comparable getArrayMaxLength ()
+    {
+      return arrayMaxLength;
+    }
+  }
+
+  /**
+   * Construct a blank IIOMetadataFormatImpl with the given root name
+   * and child policy.
+   *
+   * @param rootName the root element name
+   * @param childPolicy the child policy of the root element
+   *
+   * @exception IllegalArgumentException if rootName is null
+   * @exception IllegalArgumentException if childPolicy is
+   * CHILD_POLICY_REPEAT or if childPolicy is not a CHILD_POLICY
+   * constant
+   */
+  public IIOMetadataFormatImpl (String rootName, int childPolicy)
+  {
+    if (rootName == null)
+      throw new IllegalArgumentException ("null argument");
+
+    if (childPolicy < IIOMetadataFormat.CHILD_POLICY_ALL
+       || childPolicy > IIOMetadataFormat.CHILD_POLICY_SOME
+       || childPolicy == IIOMetadataFormat.CHILD_POLICY_REPEAT)
+      throw new IllegalArgumentException ("wrong child policy");
+
+    nodes.put (rootName, new IIOMetadataNode (rootName));
+    childPolicies.put (rootName, new Integer (childPolicy));
+    this.rootName = rootName;
+  }
+
+  /**
+   * Construct a blank IIOMetadataFormatImpl with the given root name,
+   * a child policy of CHILD_POLICY_REPEAT and the given minimum and
+   * maximum limits on the number of root element children.
+   *
+   * @param rootName the root element name
+   * @param minChildren the minimum number of children that this node
+   * can have
+   * @param maxChildren the maximum number of children that this node
+   * can have
+   *
+   * @exception IllegalArgumentException if rootName is null
+   * @exception IllegalArgumentException if minChildren is less than
+   * zero or greater than maxChildren
+   */
+  public IIOMetadataFormatImpl (String rootName,
+                               int minChildren,
+                               int maxChildren)
+  {
+    if (rootName == null)
+      throw new IllegalArgumentException ("null argument");
+
+    if (minChildren < 0 || maxChildren < minChildren)
+      throw new IllegalArgumentException ("invalid min or max children 
argument");
+
+    nodes.put (rootName, new IIOMetadataNode (rootName));
+    childPolicies.put (rootName, new Integer 
(IIOMetadataFormat.CHILD_POLICY_REPEAT));
+    childRanges.put (rootName, new int [] { minChildren, maxChildren });
+    this.rootName = rootName;
+  }
+
+  protected void addAttribute (String elementName,
+                               String attrName,
+                               int dataType,
+                               boolean required,
+                               String defaultValue)
+  {
+    IIOMetadataNode node = (IIOMetadataNode) nodes.get (elementName);
+    node.setAttributeNode (new IIOMetadataNodeAttr (node,
+                                                   attrName,
+                                                   dataType,
+                                                   required,
+                                                   defaultValue));
+  }
+
+  protected void addAttribute (String elementName,
+                               String attrName,
+                               int dataType,
+                               boolean required,
+                               String defaultValue,
+                               List enumeratedValues)
+  {
+    IIOMetadataNode node = (IIOMetadataNode) nodes.get (elementName);
+    node.setAttributeNode (new IIOMetadataNodeAttrEnumerated (node,
+                                                             attrName,
+                                                             dataType,
+                                                             required,
+                                                             defaultValue,
+                                                             
enumeratedValues));
+  }
+
+  protected void addAttribute (String elementName,
+                               String attrName,
+                               int dataType,
+                               boolean required,
+                               String defaultValue,
+                               String minValue,
+                               String maxValue,
+                               boolean minInclusive,
+                               boolean maxInclusive)
+  {
+    IIOMetadataNode node = (IIOMetadataNode) nodes.get (elementName);
+    node.setAttributeNode (new IIOMetadataNodeAttrBounded (node,
+                                                          attrName,
+                                                          dataType,
+                                                          required,
+                                                          defaultValue,
+                                                          minValue,
+                                                          maxValue,
+                                                          minInclusive,
+                                                          maxInclusive));
+  }
+
+  protected void addAttribute (String elementName,
+                               String attrName,
+                               int dataType,
+                               boolean required,
+                               int listMinLength,
+                               int listMaxLength)
+  {
+    IIOMetadataNode node = (IIOMetadataNode) nodes.get (elementName);
+    node.setAttributeNode (new IIOMetadataNodeAttrList (node,
+                                                       attrName,
+                                                       dataType,
+                                                       required,
+                                                       listMinLength,
+                                                       listMaxLength));
+  }
+
+  protected void addBooleanAttribute (String elementName,
+                                      String attrName,
+                                      boolean hasDefaultValue,
+                                      boolean defaultValue)
+  {
+    IIOMetadataNode node = (IIOMetadataNode) nodes.get (elementName);
+
+    List enumeratedValues = new ArrayList();
+    enumeratedValues.add ("TRUE");
+    enumeratedValues.add ("FALSE");
+
+    node.setAttributeNode (new IIOMetadataNodeAttrEnumerated (node,
+                                                             attrName,
+                                                             
IIOMetadataFormat.DATATYPE_BOOLEAN,
+                                                             hasDefaultValue,
+                                                             defaultValue ? 
"TRUE" : "FALSE",
+                                                             
enumeratedValues));
+  }
+
+  protected void addChildElement (String elementName, String parentName)
+  {
+    IIOMetadataNode node = (IIOMetadataNode) nodes.get (parentName);
+
+    node.appendChild (new IIOMetadataNode (elementName));
+    childPolicies.put (elementName, new Integer 
(IIOMetadataFormat.CHILD_POLICY_REPEAT));
+  }
+
+  protected void addElement (String elementName, String parentName, int 
childPolicy)
+  {
+    IIOMetadataNode node = (IIOMetadataNode) nodes.get (parentName);
+
+    node.appendChild (new IIOMetadataNode (elementName));
+    childPolicies.put (elementName, new Integer (childPolicy));
+  }
+
+  protected void addElement (String elementName, String parentName,
+                             int minChildren, int maxChildren)
+  {
+    addChildElement (elementName, parentName);
+    childRanges.put (elementName, new int [] { minChildren, maxChildren });
+  }
+
+  private void addNodeObject (IIOMetadataNode node, NodeObject o)
+  {
+    node.setUserObject (o);
+  }
+
+  private NodeObject getNodeObject (IIOMetadataNode node)
+  {
+    return (NodeObject) node.getUserObject ();
+  }
+
+  private void removeNodeObject (IIOMetadataNode node)
+  {
+    node.setUserObject (null);
+  }
+
+  protected void addObjectValue (String elementName, Class classType,
+                                 boolean required, Object defaultValue)
+  {
+    IIOMetadataNode node = (IIOMetadataNode) nodes.get (elementName);
+    addNodeObject (node, new NodeObject (node,
+                                         classType,
+                                         required,
+                                         defaultValue));
+  }
+
+  protected void addObjectValue (String elementName, Class classType,
+                                 boolean required, Object defaultValue,
+                                 List enumeratedValues)
+  {
+    IIOMetadataNode node = (IIOMetadataNode) nodes.get (elementName);
+    addNodeObject (node, new NodeObjectEnumerated (node,
+                                                   classType,
+                                                   required,
+                                                   defaultValue,
+                                                   enumeratedValues));
+  }
+
+  protected void addObjectValue (String elementName, Class classType,
+                                 Object defaultValue,
+                                 Comparable minValue,
+                                 Comparable maxValue,
+                                 boolean minInclusive,
+                                 boolean maxInclusive)
+  {
+    IIOMetadataNode node = (IIOMetadataNode) nodes.get (elementName);
+    addNodeObject (node, new NodeObjectBounded (node,
+                                                classType,
+                                                defaultValue,
+                                                minValue,
+                                                maxValue,
+                                                minInclusive,
+                                                maxInclusive));
+  }
+
+  protected void addObjectValue (String elementName, Class classType,
+                                 int arrayMinLength, int arrayMaxLength)
+  {
+    IIOMetadataNode node = (IIOMetadataNode) nodes.get (elementName);
+    addNodeObject (node, new NodeObjectArray (node,
+                                              classType,
+                                              arrayMinLength,
+                                              arrayMaxLength));
+  }
+
+  public String getRootName ()
+  {
+    return rootName;
+  }
+
+  protected String getResourceBaseName ()
+  {
+    return resourceBaseName;
+  }
+
+  public static IIOMetadataFormat getStandardFormatInstance ()
+  {
+    // FIXME: populate this with the standard metadata format
+    return new IIOMetadataFormatImpl (standardMetadataFormatName,
+                                      IIOMetadataFormat.CHILD_POLICY_ALL)
+      {
+        public boolean canNodeAppear (String elementName,
+                                      ImageTypeSpecifier specifier)
+        {
+          return true;
+        }
+      };
+  }
+
+  public abstract boolean canNodeAppear (String elementName,
+                                         ImageTypeSpecifier specifier);
+
+  protected void removeAttribute (String elementName,
+                                  String attrName)
+  {
+    IIOMetadataNode node = (IIOMetadataNode) nodes.get (elementName);
+    node.removeAttribute (attrName);
+  }
+
+  protected void removeElement (String elementName)
+  {
+    nodes.remove (elementName);
+  }
+
+  protected void removeObjectValue (String elementName)
+  {
+    IIOMetadataNode node = (IIOMetadataNode) nodes.get (elementName);
+    removeNodeObject (node);
+  }
+
+  protected void setResourceBaseName (String resourceBaseName)
+  {
+    this.resourceBaseName = resourceBaseName;
+  }
+
+  public int getAttributeDataType (String elementName, String attrName)
+  {
+    IIOMetadataNode node = (IIOMetadataNode) nodes.get (elementName);
+    IIOMetadataNodeAttr attr = (IIOMetadataNodeAttr) node.getAttributeNode 
(attrName);
+    return attr.getDataType ();
+  }
+
+  public String getAttributeDefaultValue (String elementName, String attrName)
+  {
+    IIOMetadataNode node = (IIOMetadataNode) nodes.get (elementName);
+    IIOMetadataNodeAttr attr = (IIOMetadataNodeAttr) node.getAttributeNode 
(attrName);
+    return attr.getValue();
+  }
+
+  public String getAttributeDescription (String elementName, String attrName, 
Locale locale)
+  {
+    return getDescription (elementName + "/" + attrName, locale);
+  }
+
+  public String[] getAttributeEnumerations (String elementName, String 
attrName)
+  {
+    IIOMetadataNode node = (IIOMetadataNode) nodes.get (elementName);
+    IIOMetadataNodeAttrEnumerated attr =
+      (IIOMetadataNodeAttrEnumerated) node.getAttributeNode (attrName);
+
+    Object[] attrEnums = attr.getEnumerations();
+
+    String[] attrNames = new String[attrEnums.length];
+
+    for (int i = 0; i < attrEnums.length; i++)
+      {
+        attrNames[i] = (String) attrEnums[i];
+      }
+
+    return attrNames;
+  }
+
+  public int getAttributeListMaxLength (String elementName, String attrName)
+  {
+    IIOMetadataNode node = (IIOMetadataNode) nodes.get (elementName);
+    IIOMetadataNodeAttrList attr =
+      (IIOMetadataNodeAttrList) node.getAttributeNode (attrName);
+    return attr.getListMaxLength();
+  }
+
+  public int getAttributeListMinLength (String elementName, String attrName)
+  {
+    IIOMetadataNode node = (IIOMetadataNode) nodes.get (elementName);
+    IIOMetadataNodeAttrList attr =
+      (IIOMetadataNodeAttrList) node.getAttributeNode (attrName);
+    return attr.getListMinLength();
+  }
+
+  public String getAttributeMaxValue (String elementName, String attrName)
+  {
+    IIOMetadataNode node = (IIOMetadataNode) nodes.get (elementName);
+    IIOMetadataNodeAttrBounded attr =
+      (IIOMetadataNodeAttrBounded) node.getAttributeNode (attrName);
+    return attr.getMaxValue();
+  }
+
+  public String getAttributeMinValue (String elementName, String attrName)
+  {
+    IIOMetadataNode node = (IIOMetadataNode) nodes.get (elementName);
+    IIOMetadataNodeAttrBounded attr =
+      (IIOMetadataNodeAttrBounded) node.getAttributeNode (attrName);
+    return attr.getMinValue();
+  }
+
+  public String[] getAttributeNames (String elementName)
+  {
+    IIOMetadataNode node = (IIOMetadataNode) nodes.get (elementName);
+
+    NamedNodeMap attrNodes = node.getAttributes();
+
+    String[] attrNames = new String[attrNodes.getLength()];
+
+    for (int i = 0; i < attrNodes.getLength(); i++)
+      {
+        attrNames[i] = attrNodes.item (i).getLocalName();
+      }
+
+    return attrNames;
+  }
+
+  public int getAttributeValueType (String elementName, String attrName)
+  {
+    IIOMetadataNode node = (IIOMetadataNode) nodes.get (elementName);
+    IIOMetadataNodeAttr attr = (IIOMetadataNodeAttr) node.getAttributeNode 
(attrName);
+    return attr.getDataType();
+  }
+
+  public String[] getChildNames (String elementName)
+  {
+    IIOMetadataNode node = (IIOMetadataNode) nodes.get (elementName);
+
+    NodeList childNodes = node.getChildNodes();
+
+    String[] childNames = new String[childNodes.getLength()];
+
+    for (int i = 0; i < childNodes.getLength(); i++)
+      {
+        childNames[i] = childNodes.item (i).getLocalName();
+      }
+
+    return childNames;
+  }
+
+  public int getChildPolicy (String elementName)
+  {
+    return ((Integer) childPolicies.get (elementName)).intValue();
+  }
+
+  private String getDescription (String resourceName, Locale locale)
+  {
+    if (resourceBaseName == null)
+      return null;
+
+    Locale l = locale;
+
+    if (l == null)
+      l = Locale.getDefault();
+
+    ResourceBundle bundle = ResourceBundle.getBundle (resourceBaseName, 
locale);
+
+    String desc = null;
+
+    if (bundle == null)
+      {
+        try
+          {
+            desc = bundle.getString (resourceName);
+          }
+        catch (MissingResourceException e)
+          {
+            desc = null;
+          }
+      }
+
+    return desc;
+  }
+
+  public String getElementDescription (String elementName, Locale locale)
+  {
+    return getDescription (elementName, locale);
+  }
+
+  public int getElementMaxChildren (String elementName)
+  {
+    return ((int[]) childRanges.get (elementName))[1];
+  }
+
+  public int getElementMinChildren (String elementName)
+  {
+    return ((int[]) childRanges.get (elementName))[0];
+  }
+
+  public int getObjectArrayMaxLength (String elementName)
+  {
+    IIOMetadataNode node = (IIOMetadataNode) nodes.get (elementName);
+    return ((Integer) ((NodeObjectArray) getNodeObject 
(node)).getArrayMaxLength ()).intValue();
+  }
+
+  public int getObjectArrayMinLength (String elementName)
+  {
+    IIOMetadataNode node = (IIOMetadataNode) nodes.get (elementName);
+    return ((Integer) ((NodeObjectArray) getNodeObject 
(node)).getArrayMinLength ()).intValue();
+  }
+
+  public Class getObjectClass (String elementName)
+  {
+    IIOMetadataNode node = (IIOMetadataNode) nodes.get (elementName);
+    return getNodeObject (node).getClassType ();
+  }
+
+  public Object getObjectDefaultValue (String elementName)
+  {
+    IIOMetadataNode node = (IIOMetadataNode) nodes.get (elementName);
+    return getNodeObject (node).getDefaultValue ();
+  }
+
+  public Object[] getObjectEnumerations (String elementName)
+  {
+    IIOMetadataNode node = (IIOMetadataNode) nodes.get (elementName);
+    return ((NodeObjectEnumerated) getNodeObject (node)).getEnumerations ();
+  }
+
+  public Comparable getObjectMaxValue (String elementName)
+  {
+    IIOMetadataNode node = (IIOMetadataNode) nodes.get (elementName);
+    return ((NodeObjectBounded) getNodeObject (node)).getMaxValue ();
+  }
+
+  public Comparable getObjectMinValue (String elementName)
+  {
+    IIOMetadataNode node = (IIOMetadataNode) nodes.get (elementName);
+    return ((NodeObjectBounded) getNodeObject (node)).getMinValue ();
+  }
+
+  public int getObjectValueType (String elementName)
+  {
+    IIOMetadataNode node = (IIOMetadataNode) nodes.get (elementName);
+    NodeObject n = getNodeObject (node);
+
+    if (n == null)
+      return IIOMetadataFormat.VALUE_NONE;
+    else
+      return n.getValueType ();
+  }
+
+  public boolean isAttributeRequired (String elementName, String attrName)
+  {
+    IIOMetadataNode node = (IIOMetadataNode) nodes.get (elementName);
+    return ((IIOMetadataNodeAttr) node.getAttributeNode 
(attrName)).isRequired();
+  }
 }
Index: javax/imageio/metadata/IIOMetadataNode.java
===================================================================
RCS file: 
/cvsroot/classpath/classpath/javax/imageio/metadata/IIOMetadataNode.java,v
retrieving revision 1.3
diff -u -r1.3 IIOMetadataNode.java
--- javax/imageio/metadata/IIOMetadataNode.java 2 Jul 2005 20:32:45 -0000       
1.3
+++ javax/imageio/metadata/IIOMetadataNode.java 24 Oct 2005 20:02:05 -0000
@@ -52,6 +52,7 @@
 import org.w3c.dom.NodeList;
 import org.w3c.dom.TypeInfo;
 import org.w3c.dom.UserDataHandler;
+import javax.imageio.metadata.IIOMetadataFormatImpl.IIOMetadataNodeAttr;
 
 public class IIOMetadataNode
   implements Element, NodeList
@@ -61,7 +62,127 @@
   private List children = new ArrayList();
   private IIOMetadataNode parent;
   private Object obj;
-  
+
+  /**
+   * Simple NamedNodeMap class for IIOMetadataNode.
+   *
+   * @author jlquinn
+   */
+  private 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 IIOMetadataNodeAttr)
+        {
+          IIOMetadataNodeAttr attr = (IIOMetadataNodeAttr) 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);
+    }
+  }
+
+  /**
+   * Simple NodeList implementation for IIOMetadataNode.
+   *
+   * @author jlquinn
+   *
+   */
+  private 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();
+    }
+  }
+
   public IIOMetadataNode()
   {
     // Do nothing here.
@@ -71,12 +192,12 @@
   {
     name = nodename;
   }
-  
+
   public Object getUserObject()
   {
     return obj;
   }
-  
+
   public void setUserObject(Object o)
   {
     obj = o;
@@ -85,7 +206,7 @@
   public short compareDocumentPosition(Node other)
     throws DOMException
   {
-    throw new Error("not implemented");
+    return Element.DOCUMENT_POSITION_IMPLEMENTATION_SPECIFIC;
   }
 
   /* (non-Javadoc)
@@ -104,7 +225,7 @@
   {
     String val = getAttribute(name);
     if (val != null)
-      return new IIOAttr(name, val, this);
+      return new IIOMetadataNodeAttr(this, name, val);
     return null;
   }
 
@@ -126,7 +247,7 @@
 
   public String getBaseURI()
   {
-    throw new Error("not implemented");
+    return null;
   }
 
   // Recursive function for assembling a node list.
@@ -217,7 +338,7 @@
     if (attr != null)
       attr.setValue(value);
     else
-      attrs.put(name, new IIOAttr(name, value, this));
+      attrs.put(name, new IIOMetadataNodeAttr(this, name, value));
   }
   
   /* (non-Javadoc)
@@ -295,7 +416,7 @@
     // clone attrs
     for (Iterator it = attrs.values().iterator(); it.hasNext();)
     {
-      IIOAttr attr = (IIOAttr)it.next();
+      IIOMetadataNodeAttr attr = (IIOMetadataNodeAttr)it.next();
       newnode.attrs.put(attr.name, attr.cloneNode(deep));
       attr.owner = newnode;
     }
@@ -321,7 +442,7 @@
 
   public Object getFeature(String feature, String version)
   {
-    throw new Error("not implemented");
+    return null;
   }
 
   /* (non-Javadoc)
@@ -432,18 +553,18 @@
 
   public TypeInfo getSchemaTypeInfo()
   {
-    throw new Error("not implemented");
+    return null;
   }
 
   public String getTextContent()
     throws DOMException
   {
-    throw new Error("not implemented");
+    return null;
   }
 
   public Object getUserData(String key)
   {
-    throw new Error("not implemented");
+    return null;
   }
   
   /* (non-Javadoc)
@@ -482,12 +603,12 @@
 
   public boolean isDefaultNamespace(String namespaceURI)
   {
-    throw new Error("not implemented");
+    return true;
   }
 
   public boolean isEqualNode(Node arg)
   {
-    throw new Error("not implemented");
+    return true;
   }
   
   public boolean isSameNode(Node other)
@@ -506,12 +627,12 @@
   
   public String lookupNamespaceURI(String prefix)
   {
-    throw new Error("not implemented");
+    return null;
   }
   
   public String lookupPrefix(String namespaceURI)
   {
-    throw new Error("not implemented");
+    return null;
   }
 
   /* (non-Javadoc)
@@ -550,19 +671,16 @@
   public void setIdAttribute(String name, boolean isId)
     throws DOMException
   {
-    throw new Error("not implemented");
   }
 
   public void setIdAttributeNode(Attr idAttr, boolean isId)
     throws DOMException
   {
-    throw new Error("not implemented");
   }
 
   public void setIdAttributeNS(String namespaceURI, String localName, boolean 
isId)
     throws DOMException
   {
-    throw new Error("not implemented");
   }
   
   /* (non-Javadoc)
@@ -582,11 +700,10 @@
   public void setTextContent(String textContent)
     throws DOMException
   {
-    throw new Error("not implemented");
   }
   
   public Object setUserData(String key, Object data, UserDataHandler handler)
   {
-    throw new Error("not implemented");
+    return null;
   }
 }
Index: javax/imageio/metadata/IIONamedNodeMap.java
===================================================================
RCS file: javax/imageio/metadata/IIONamedNodeMap.java
diff -N javax/imageio/metadata/IIONamedNodeMap.java
--- javax/imageio/metadata/IIONamedNodeMap.java 2 Jul 2005 20:32:45 -0000       
1.2
+++ /dev/null   1 Jan 1970 00:00:00 -0000
@@ -1,138 +0,0 @@
-/* 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., 51 Franklin Street, Fifth Floor, Boston, MA
-02110-1301 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
--- javax/imageio/metadata/IIONodeList.java     2 Jul 2005 20:32:45 -0000       
1.2
+++ /dev/null   1 Jan 1970 00:00:00 -0000
@@ -1,72 +0,0 @@
-/* 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., 51 Franklin Street, Fifth Floor, Boston, MA
-02110-1301 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();
-  }
-
-}

reply via email to

[Prev in Thread] Current Thread [Next in Thread]