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

Subversion Repositories openrisc

[/] [openrisc/] [trunk/] [gnu-dev/] [or1k-gcc/] [libjava/] [classpath/] [java/] [security/] [Provider.java] - Blame information for rev 771

Details | Compare with Previous | View Log

Line No. Rev Author Line
1 771 jeremybenn
/* Provider.java -- Security provider information
2
   Copyright (C) 1998, 1999, 2000, 2002, 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
package java.security;
39
 
40
import java.io.Serializable;
41
import java.util.Properties;
42
 
43
/**
44
 * This class represents a Java security architecture service provider. The
45
 * services provided by a such a provider can range from security algorithms to
46
 * key generation.
47
 * <p>
48
 * Providers are installed by name and version number. See the static
49
 * initializer of the {@link java.security.Security} class for the default
50
 * security providers installed by this class library.
51
 *
52
 * @author Aaron M. Renn (arenn@urbanophile.com)
53
 */
54
public abstract class Provider
55
    extends Properties
56
    implements Serializable
57
{
58
  private static final long serialVersionUID = -4298000515446427739L;
59
 
60
  /**
61
   * This is a textual description of the provider
62
   */
63
  private String info;
64
 
65
  /**
66
   * This is the name of the provider
67
   */
68
  private String name;
69
 
70
  /**
71
   * This is the version number of the provider
72
   */
73
  private double version;
74
 
75
  /**
76
   * This method initializes a new instance of <code>Provider</code> to have
77
   * the specified name, version, and description information.
78
   *
79
   * @param name The name to assign to this <code>Provider</code>.
80
   * @param version The version number for this <code>Provider</code>.
81
   * @param info A textual description of this provider.
82
   */
83
  protected Provider(String name, double version, String info)
84
  {
85
    this.name = name;
86
    this.version = version;
87
    this.info = info;
88
  }
89
 
90
  /**
91
   * This method returns the name assigned to this <code>Provider</code>.
92
   *
93
   * @return The <code>Provider</code>'s name.
94
   */
95
  public String getName()
96
  {
97
    return (name);
98
  }
99
 
100
  /**
101
   * This method retunrs the version number of this <code>Provider</code>.
102
   *
103
   * @return The <code>Provider</code>'s version number.
104
   */
105
  public double getVersion()
106
  {
107
    return (version);
108
  }
109
 
110
  /**
111
   * This method returns a textual description of the <code>Provider</code>.
112
   *
113
   * @return A description of the <code>Provider</code>.
114
   */
115
  public String getInfo()
116
  {
117
    return (info);
118
  }
119
 
120
  /**
121
   * Maps a key property to a designated value.
122
   * <p>
123
   * If there is an installed {@link SecurityManager} object in the underlying
124
   * VM, its {@link SecurityManager#checkSecurityAccess(String)} method is
125
   * called with the string <code>"putProviderProperty." + name</code>, where
126
   * <code>name</code> is this provider's name. For the default implementation
127
   * this translates into a {@link SecurityManager#checkPermission(Permission)}
128
   * for a <code>SecurityPermission("putProviderProperty." + name)</code>.
129
   *
130
   * @param key The property key.
131
   * @param value The property value.
132
   * @return The previous value of the specified property (<code>key</code>),
133
   *         or <code>null</code> if it did not have one.
134
   * @throws SecurityException If a security manager is installed and its
135
   *           {@link SecurityManager#checkSecurityAccess(String)} method
136
   *           disallows adding properties at run-time.
137
   * @since Classpath 0.4+cvs, JDK 1.2
138
   * @see java.lang.Object#equals(Object)
139
   * @see java.util.Hashtable#get(Object)
140
   */
141
  public Object put(Object key, Object value)
142
  {
143
    SecurityManager sm = System.getSecurityManager();
144
    if (sm != null)
145
      sm.checkSecurityAccess("putProviderProperty." + this.name);
146
    return super.put(toCanonicalKey(key), value);
147
  }
148
 
149
  // overrides same in java.util.Hashtable
150
  public Object get(Object key)
151
  {
152
    return super.get(toCanonicalKey(key));
153
  }
154
 
155
  /**
156
   * This method removes the specified key entry (and its associated value)
157
   * from the property mapping collection.
158
   * <p>
159
   * If there is an installed {@link SecurityManager} object in the underlying
160
   * VM, its {@link SecurityManager#checkSecurityAccess(String)} method is
161
   * called with the string <code>"removeProviderProperty." + name</code>, where
162
   * <code>name</code> is this provider's name. For the default implementation
163
   * this translates into a {@link SecurityManager#checkPermission(Permission)}
164
   * for a <code>SecurityPermission("removeProviderProperty." + name)</code>.
165
   *
166
   * @param key The key to remove
167
   * @return The previous value for this key, or <code>null</code> if no
168
   * previous value.
169
   */
170
  public Object remove(Object key)
171
  {
172
    SecurityManager sm = System.getSecurityManager();
173
    if (sm != null)
174
      sm.checkSecurityAccess("removeProviderProperty." + this.name);
175
    return super.remove(toCanonicalKey(key));
176
  }
177
 
178
  /**
179
   * This method clears the entire property collection such that it no longer
180
   * contains the properties used to look up the services provided by
181
   * this <code>Provider</code>.
182
   * <p>
183
   * If there is an installed {@link SecurityManager} object in the underlying
184
   * VM, its {@link SecurityManager#checkSecurityAccess(String)} method is
185
   * called with the string <code>"clearProviderProperties." + name</code>,
186
   * where <code>name</code> is this provider's name. For the default
187
   * implementation this translates into a
188
   * {@link SecurityManager#checkPermission(Permission)} for a
189
   * <code>SecurityPermission("clearProviderProperties." + name)</code>.
190
   */
191
  public void clear()
192
  {
193
    SecurityManager sm = System.getSecurityManager();
194
    if (sm != null)
195
      sm.checkSecurityAccess("clearProviderProperties." + this.name);
196
    super.clear();
197
  }
198
 
199
  /**
200
   * This method returns a <code>String</code> representation of this
201
   * object.  This will include the <code>Provider</code> name and
202
   * version number.
203
   *
204
   * @return A <code>String</code> representation of this object.
205
   */
206
  public String toString()
207
  {
208
    return (getClass().getName() + ": name=" + getName() + " version=" +
209
            version);
210
  }
211
 
212
  private Object toCanonicalKey(Object key)
213
  {
214
    if (key.getClass().isAssignableFrom(String.class)) // is it ours?
215
      return ((String) key).toUpperCase(); // use default locale
216
    return key;
217
  }
218
}

powered by: WebSVN 2.1.0

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