source: trunk/gcc/libjava/java/security/Provider.java

Last change on this file was 1392, checked in by bird, 21 years ago

This commit was generated by cvs2svn to compensate for changes in r1391,
which included commits to RCS files with non-trunk default branches.

  • Property cvs2svn:cvs-rev set to 1.1.1.2
  • Property svn:eol-style set to native
  • Property svn:executable set to *
File size: 6.3 KB
Line 
1/* Provider.java -- Security provider information
2 Copyright (C) 1998, 1999, 2000, 2002 Free Software Foundation, Inc.
3
4This file is part of GNU Classpath.
5
6GNU Classpath is free software; you can redistribute it and/or modify
7it under the terms of the GNU General Public License as published by
8the Free Software Foundation; either version 2, or (at your option)
9any later version.
10
11GNU Classpath is distributed in the hope that it will be useful, but
12WITHOUT ANY WARRANTY; without even the implied warranty of
13MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
14General Public License for more details.
15
16You should have received a copy of the GNU General Public License
17along with GNU Classpath; see the file COPYING. If not, write to the
18Free Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
1902111-1307 USA.
20
21Linking this library statically or dynamically with other modules is
22making a combined work based on this library. Thus, the terms and
23conditions of the GNU General Public License cover the whole
24combination.
25
26As a special exception, the copyright holders of this library give you
27permission to link this library with independent modules to produce an
28executable, regardless of the license terms of these independent
29modules, and to copy and distribute the resulting executable under
30terms of your choice, provided that you also meet, for each linked
31independent module, the terms and conditions of the license of that
32module. An independent module is a module which is not derived from
33or based on this library. If you modify this library, you may extend
34this exception to your version of the library, but you are not
35obligated to do so. If you do not wish to do so, delete this
36exception statement from your version. */
37
38package java.security;
39
40import java.io.Serializable;
41import java.util.Properties;
42
43/**
44 * This class represents a Java security architecture service provider.
45 * The services provided by a such a provider can range from security
46 * algorithms to key generation.
47 * <p>
48 * Providers are installed by name and verion number. There is one
49 * standard provider supplied with the class library. This is the
50 * "GNU" provider, which can also be accessed by the alias "SUN" for
51 * compatibility with the JDK.
52 *
53 * @version 0.0
54 *
55 * @author Aaron M. Renn (arenn@urbanophile.com)
56 */
57public abstract class Provider extends Properties implements Serializable
58{
59 static final long serialVersionUID = -4298000515446427739L;
60
61 /**
62 * This is a textual description of the provider
63 */
64 private String info;
65
66 /**
67 * This is the name of the provider
68 */
69 private String name;
70
71 /**
72 * This is the version number of the provider
73 */
74 private double version;
75
76 /**
77 * This method initializes a new instance of <code>Provider</code> to have
78 * the specified name, version, and description information.
79 *
80 * @param name The name to assign to this <code>Provider</code>.
81 * @param version The version number for this <code>Provider</code>.
82 * @param info A textual description of this provider.
83 */
84 protected Provider(String name, double version, String info)
85 {
86 this.name = name;
87 this.version = version;
88 this.info = info;
89 }
90
91 /**
92 * This method returns the name assigned to this <code>Provider</code>.
93 *
94 * @return The <code>Provider</code>'s name.
95 */
96 public String getName()
97 {
98 return (name);
99 }
100
101 /**
102 * This method retunrs the version number of this <code>Provider</code>.
103 *
104 * @return The <code>Provider</code>'s version number.
105 */
106 public double getVersion()
107 {
108 return (version);
109 }
110
111 /**
112 * This method returns a textual description of the <code>Provider</code>.
113 *
114 * @return A description of the <code>Provider</code>.
115 */
116 public String getInfo()
117 {
118 return (info);
119 }
120
121 /**
122 * Sets the key property to have the specified value.
123 * <p>
124 * <bold>NOT IMPLEMENTED YET</bold>[
125 * First, if there is a security manager, its <code>checkSecurityAccess</code>
126 * method is called with the string "putProviderProperty."+name, where name is
127 * the provider name, to see if it's ok to set this provider's property
128 * values.
129 * If the default implementation of <code>checkSecurityAccess</code> is used
130 * (that is, that method is not overriden), then this results in a call to the
131 * security manager's <code>checkPermission</code> method with a
132 * <code>SecurityPermission("putProviderProperty."+name)</code>
133 * permission.<br>]
134 *
135 * @param key The property key.
136 * @param value The property value.
137 *
138 * @return The previous value of the specified property (<code>key</code>),
139 * or <code>null</code> if it did not have one.
140 * @throws SecurityException If a security manager exists and its
141 * {@link java.lang.SecurityManager.checkSecurityAccess(java.lang.String)}
142 * method denies access to set property values.
143 * @since Classpath 0.4+cvs, JDK 1.2
144 * @see java.lang.Object.equals(Object)
145 * @see java.util.Hashtable.get(Object)
146 */
147 public Object put(Object key, Object value)
148 {
149 return super.put(toCanonicalKey(key), value);
150 }
151
152 // overrides same in java.util.Hashtable
153 public Object get(Object key)
154 {
155 return super.get(toCanonicalKey(key));
156 }
157
158 /**
159 * This method removes the specified key entry (and its associated value)
160 * from the property mapping list.
161 *
162 * @param key The key to remove
163 *
164 * @return The previous value for this key, or <code>null</code> if no
165 * previous value.
166 */
167 public Object remove(Object key)
168 {
169 return super.remove(toCanonicalKey(key));
170 }
171
172 /**
173 * This method clears the entire property list such that it no longer
174 * contains the properties used to look up the services provided by
175 * the <code>Provider</code>.
176 */
177 public void clear()
178 {
179 super.clear();
180 }
181
182 /**
183 * This method returns a <code>String</code> representation of this
184 * object. This will include the <code>Provider</code> name and
185 * version number.
186 *
187 * @return A <code>String</code> representation of this object.
188 */
189 public String toString()
190 {
191 return (getClass().getName() + ": name=" + getName() + " version=" +
192 version);
193 }
194
195 private Object toCanonicalKey(Object key)
196 {
197 if (key.getClass().isAssignableFrom(String.class)) // is it ours?
198 return ((String) key).toUpperCase(); // use default locale
199 else
200 return key;
201 }
202}
Note: See TracBrowser for help on using the repository browser.