OpenCores
URL https://opencores.org/ocsvn/openrisc/openrisc/trunk

Subversion Repositories openrisc

[/] [openrisc/] [trunk/] [gnu-dev/] [or1k-gcc/] [libjava/] [classpath/] [javax/] [naming/] [directory/] [BasicAttributes.java] - Blame information for rev 772

Details | Compare with Previous | View Log

Line No. Rev Author Line
1 772 jeremybenn
/* BasicAttributes.java --
2
   Copyright (C) 2000, 2001, 2004, 2005, 2006  Free Software Foundation, Inc.
3
 
4
This file is part of GNU Classpath.
5
 
6
GNU Classpath is free software; you can redistribute it and/or modify
7
it under the terms of the GNU General Public License as published by
8
the Free Software Foundation; either version 2, or (at your option)
9
any later version.
10
 
11
GNU Classpath is distributed in the hope that it will be useful, but
12
WITHOUT ANY WARRANTY; without even the implied warranty of
13
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
14
General Public License for more details.
15
 
16
You should have received a copy of the GNU General Public License
17
along with GNU Classpath; see the file COPYING.  If not, write to the
18
Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
19
02110-1301 USA.
20
 
21
Linking this library statically or dynamically with other modules is
22
making a combined work based on this library.  Thus, the terms and
23
conditions of the GNU General Public License cover the whole
24
combination.
25
 
26
As a special exception, the copyright holders of this library give you
27
permission to link this library with independent modules to produce an
28
executable, regardless of the license terms of these independent
29
modules, and to copy and distribute the resulting executable under
30
terms of your choice, provided that you also meet, for each linked
31
independent module, the terms and conditions of the license of that
32
module.  An independent module is a module which is not derived from
33
or based on this library.  If you modify this library, you may extend
34
this exception to your version of the library, but you are not
35
obligated to do so.  If you do not wish to do so, delete this
36
exception statement from your version. */
37
 
38
 
39
package javax.naming.directory;
40
 
41
import java.io.IOException;
42
import java.io.ObjectInputStream;
43
import java.io.ObjectOutputStream;
44
import java.util.NoSuchElementException;
45
import java.util.Vector;
46
 
47
import javax.naming.NamingEnumeration;
48
import javax.naming.NamingException;
49
 
50
/**
51
 * @author Tom Tromey (tromey@redhat.com)
52
 * @date June 22, 2001
53
 */
54
public class BasicAttributes implements Attributes
55
{
56
  private static final long serialVersionUID = 4980164073184639448L;
57
 
58
  public BasicAttributes ()
59
  {
60
    this (false);
61
  }
62
 
63
  public BasicAttributes (boolean ignoreCase)
64
  {
65
    this.ignoreCase = ignoreCase;
66
    this.attributes = new Vector<Attribute>();
67
  }
68
 
69
  public BasicAttributes (String attrID, Object val)
70
  {
71
    this (attrID, val, false);
72
  }
73
 
74
  public BasicAttributes (String attrID, Object val, boolean ignoreCase)
75
  {
76
    this.ignoreCase = ignoreCase;
77
    attributes = new Vector<Attribute>();
78
    attributes.add (new BasicAttribute (attrID, val));
79
  }
80
 
81
  public Object clone ()
82
  {
83
    // Slightly inefficient as we make a garbage Vector here.
84
    BasicAttributes ba = new BasicAttributes (ignoreCase);
85
    ba.attributes = (Vector<Attribute>) attributes.clone ();
86
    return ba;
87
  }
88
 
89
  /**
90
   * Returns true if and only if the given Object is an instance of
91
   * Attributes, the given attributes both do or don't ignore case for
92
   * IDs and the collection of attributes is the same.
93
   */
94
  public boolean equals (Object obj)
95
  {
96
    if (! (obj instanceof Attributes))
97
      return false;
98
 
99
    Attributes bs = (Attributes) obj;
100
    if (ignoreCase != bs.isCaseIgnored()
101
        || attributes.size () != bs.size ())
102
      return false;
103
 
104
    NamingEnumeration bas = bs.getAll();
105
    while (bas.hasMoreElements())
106
      {
107
        Attribute a = (Attribute) bas.nextElement();
108
        Attribute b = get(a.getID ());
109
        if (! a.equals(b))
110
          return false;
111
      }
112
 
113
    return true;
114
  }
115
 
116
  public Attribute get (String attrID)
117
  {
118
    for (int i = 0; i < attributes.size (); ++i)
119
      {
120
        Attribute at = attributes.get (i);
121
        if ((ignoreCase && attrID.equalsIgnoreCase (at.getID ()))
122
            || (! ignoreCase && attrID.equals (at.getID ())))
123
          return at;
124
      }
125
 
126
    return null;
127
  }
128
 
129
  public NamingEnumeration<Attribute> getAll ()
130
  {
131
    return new BasicAttributesEnumeration();
132
  }
133
 
134
  public NamingEnumeration<String> getIDs ()
135
  {
136
    final NamingEnumeration<Attribute> attrs = getAll();
137
    return new NamingEnumeration<String>() {
138
      public boolean hasMore() throws NamingException
139
      {
140
        return attrs.hasMore();
141
      }
142
 
143
      public boolean hasMoreElements()
144
      {
145
        return attrs.hasMoreElements();
146
      }
147
 
148
      public String next() throws NamingException
149
      {
150
        return attrs.next().getID();
151
      }
152
 
153
      public String nextElement()
154
      {
155
        return attrs.nextElement().getID();
156
      }
157
 
158
      public void close() throws NamingException
159
      {
160
        attrs.close();
161
      }
162
    };
163
  }
164
 
165
  public int hashCode ()
166
  {
167
    int val = 0;
168
    for (int i = 0; i < attributes.size (); ++i)
169
      val += attributes.get (i).hashCode ();
170
    return val;
171
  }
172
 
173
  public boolean isCaseIgnored ()
174
  {
175
    return ignoreCase;
176
  }
177
 
178
  public Attribute put (Attribute attr)
179
  {
180
    Attribute r = remove (attr.getID ());
181
    attributes.add (attr);
182
    return r;
183
  }
184
 
185
  public Attribute put (String attrID, Object val)
186
  {
187
    return put (new BasicAttribute (attrID, val));
188
  }
189
 
190
  public Attribute remove (String attrID)
191
  {
192
    for (int i = 0; i < attributes.size (); ++i)
193
      {
194
        Attribute at = (Attribute) attributes.get (i);
195
        if ((ignoreCase && attrID.equalsIgnoreCase (at.getID ()))
196
            || (! ignoreCase && attrID.equals (at.getID ())))
197
          {
198
            attributes.remove (i);
199
            return at;
200
          }
201
      }
202
 
203
    return null;
204
  }
205
 
206
  public int size ()
207
  {
208
    return attributes.size ();
209
  }
210
 
211
  public String toString ()
212
  {
213
    String r = "";
214
    for (int i = 0; i < attributes.size (); ++i)
215
      {
216
        if (i > 0)
217
          r += "; ";
218
        r += attributes.get (i).toString ();
219
      }
220
    return r;
221
  }
222
 
223
  // This is set by the serialization spec.
224
  private boolean ignoreCase;
225
  // Package-private to avoid a trampoline.
226
  transient Vector<Attribute> attributes;
227
 
228
  private void readObject(ObjectInputStream s) throws IOException,
229
      ClassNotFoundException
230
  {
231
    s.defaultReadObject();
232
    int size = s.readInt();
233
    attributes = new Vector<Attribute>(size);
234
    for (int i = 0; i < size; i++)
235
      attributes.add((Attribute) s.readObject());
236
  }
237
 
238
  private void writeObject(ObjectOutputStream s) throws IOException
239
  {
240
    s.defaultWriteObject();
241
    s.writeInt(attributes.size());
242
    for (int i = 0; i < attributes.size(); i++)
243
      s.writeObject(attributes.get(i));
244
  }
245
 
246
  // Used when enumerating.
247
  private class BasicAttributesEnumeration
248
    implements NamingEnumeration<Attribute>
249
  {
250
    int where = 0;
251
 
252
    public BasicAttributesEnumeration ()
253
    {
254
    }
255
 
256
    public void close () throws NamingException
257
    {
258
    }
259
 
260
    public boolean hasMore () throws NamingException
261
    {
262
      return hasMoreElements ();
263
    }
264
 
265
    public Attribute next () throws NamingException
266
    {
267
      return nextElement ();
268
    }
269
 
270
    public boolean hasMoreElements ()
271
    {
272
      return where < attributes.size ();
273
    }
274
 
275
    public Attribute nextElement () throws NoSuchElementException
276
    {
277
      if (where >= attributes.size ())
278
        throw new NoSuchElementException ("no more elements");
279
      Attribute at = attributes.get (where);
280
      ++where;
281
      return at;
282
    }
283
  }
284
}

powered by: WebSVN 2.1.0

© copyright 1999-2024 OpenCores.org, equivalent to Oliscience, all rights reserved. OpenCores®, registered trademark.