leosutic 2003/12/28 12:43:49 Modified: attributes/api/src/java/org/apache/commons/attributes Attributes.java Log: Improved Javadoc Revision Changes Path 1.7 +24 -0 jakarta-commons-sandbox/attributes/api/src/java/org/apache/commons/attributes/Attributes.java Index: Attributes.java =================================================================== RCS file: /home/cvs/jakarta-commons-sandbox/attributes/api/src/java/org/apache/commons/attributes/Attributes.java,v retrieving revision 1.6 retrieving revision 1.7 diff -u -r1.6 -r1.7 --- Attributes.java 12 Oct 2003 09:07:30 -0000 1.6 +++ Attributes.java 28 Dec 2003 20:43:49 -0000 1.7 @@ -387,4 +387,28 @@ public static boolean hasReturnAttribute (Method method, Object attribute) { return hasAttribute (getReturnAttributes (method), attribute); } + + /** + * Set attributes for a given class. The class must not have attributes set for it already + * (i.e. you can't redefine the attributes of a class at runtime). This because it + * really messes up the concept of inheritable attributes, and because the attribute set + * associated with a class is immutable, like the set of methods and fields. + * + * @param repo The repository. The repository will be sealed before any attributes are + * set. This to guarantee that the repository remains constant + * during setting. + * @throws IllegalStateException if the class whose attributes are defined already have + * attributes defined for it (even if it has no attributes). + */ + public static synchronized void setAttributes (RuntimeAttributeRepository repo) throws IllegalStateException { + repo.seal (); + + Class clazz = repo.getDefinedClass (); + if (classRepositories.get (clazz) != null) { + throw new IllegalStateException (clazz.getName ()); + } + + DefaultCachedRepository cached = new DefaultCachedRepository (clazz, repo); + classRepositories.put (clazz, cached); + } }
--------------------------------------------------------------------- To unsubscribe, e-mail: [EMAIL PROTECTED] For additional commands, e-mail: [EMAIL PROTECTED]