You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@commons.apache.org by le...@apache.org on 2004/05/09 19:58:38 UTC
cvs commit: jakarta-commons-sandbox/attributes/api/src/java/org/apache/commons/attributes EmptyAttributeRepositoryClass.java Util.java InvalidAttributeTargetError.java Attributes.java
leosutic 2004/05/09 10:58:38
Modified: attributes/api/src/java/org/apache/commons/attributes
Util.java InvalidAttributeTargetError.java
Attributes.java
Added: attributes/api/src/java/org/apache/commons/attributes
EmptyAttributeRepositoryClass.java
Log:
Fixed bug that would disable inheritance of attributes for classes that
didn't have any attributes themselves.
Revision Changes Path
1.7 +6 -5 jakarta-commons-sandbox/attributes/api/src/java/org/apache/commons/attributes/Util.java
Index: Util.java
===================================================================
RCS file: /home/cvs/jakarta-commons-sandbox/attributes/api/src/java/org/apache/commons/attributes/Util.java,v
retrieving revision 1.6
retrieving revision 1.7
diff -u -r1.6 -r1.7
--- Util.java 9 May 2004 13:57:10 -0000 1.6
+++ Util.java 9 May 2004 17:58:38 -0000 1.7
@@ -22,6 +22,7 @@
import java.util.List;
import java.util.Iterator;
import java.util.Set;
+import java.util.Map;
import java.util.Collection;
class Util {
@@ -74,12 +75,12 @@
}
public static void checkTarget (int target, Object attribute, String element) {
- Target targetAttr = Attributes.getAttribute (attribute.getClass (), Target.class);
+ Target targetAttr = (Target) Attributes.getAttribute (attribute.getClass (), Target.class);
if (targetAttr == null) {
return;
}
- if (targetAttr.getFlags () & target == 0) {
+ if ((targetAttr.getFlags () & target) == 0) {
throw new InvalidAttributeTargetError (attribute.getClass ().getName (), element, targetAttr.getFlags ());
}
}
@@ -95,13 +96,13 @@
checkTarget (Target.CLASS, repo.getClassAttributes (), owningClass.getName ());
Map fieldAttrs = repo.getFieldAttributes ();
- for (Iterator iter = fieldAttrs.keySet (); iter.hasNext ();) {
+ for (Iterator iter = fieldAttrs.keySet ().iterator(); iter.hasNext ();) {
String fieldName = (String) iter.next ();
checkTarget (Target.FIELD, (Collection) fieldAttrs.get (fieldName), owningClass.getName () + "." + fieldName);
}
Map ctorAttrs = repo.getConstructorAttributes ();
- for (Iterator iter = ctorAttrs.keySet (); iter.hasNext ();) {
+ for (Iterator iter = ctorAttrs.keySet ().iterator(); iter.hasNext ();) {
String ctorName = (String) iter.next ();
List bundle = (List) ctorAttrs.get (ctorName);
@@ -118,7 +119,7 @@
}
Map methodAttrs = repo.getMethodAttributes ();
- for (Iterator iter = methodAttrs.keySet (); iter.hasNext ();) {
+ for (Iterator iter = methodAttrs.keySet ().iterator(); iter.hasNext ();) {
String methodName = (String) iter.next ();
List bundle = (List) methodAttrs.get (methodName);
1.2 +11 -8 jakarta-commons-sandbox/attributes/api/src/java/org/apache/commons/attributes/InvalidAttributeTargetError.java
Index: InvalidAttributeTargetError.java
===================================================================
RCS file: /home/cvs/jakarta-commons-sandbox/attributes/api/src/java/org/apache/commons/attributes/InvalidAttributeTargetError.java,v
retrieving revision 1.1
retrieving revision 1.2
diff -u -r1.1 -r1.2
--- InvalidAttributeTargetError.java 9 May 2004 13:57:10 -0000 1.1
+++ InvalidAttributeTargetError.java 9 May 2004 17:58:38 -0000 1.2
@@ -15,38 +15,41 @@
*/
package org.apache.commons.attributes;
+import java.util.ArrayList;
+import java.util.List;
+
/**
* Thrown when one of the Attributes.getAttribute methods find more
* than one instance of the specified attribute class.
*/
public class InvalidAttributeTargetError extends Error {
- public MultipleAttributesError (String attributeClass, String element, int targetFlags) {
+ public InvalidAttributeTargetError (String attributeClass, String element, int targetFlags) {
super ("Attributes of type " + attributeClass + " can't be applied to " + element + ". " +
"They can only be applied to: " + flagsToString (targetFlags));
}
private final static String flagsToString (int flags) {
List targetNames = new ArrayList ();
- if (flags & Target.CLASS > 0) {
+ if ((flags & Target.CLASS) > 0) {
targetNames.add ("CLASS");
}
- if (flags & Target.FIELD > 0) {
+ if ((flags & Target.FIELD) > 0) {
targetNames.add ("FIELD");
}
- if (flags & Target.METHOD > 0) {
+ if ((flags & Target.METHOD) > 0) {
targetNames.add ("METHOD");
}
- if (flags & Target.CONSTRUCTOR > 0) {
+ if ((flags & Target.CONSTRUCTOR) > 0) {
targetNames.add ("CONSTRUCTOR");
}
- if (flags & Target.METHOD_PARAMETER > 0) {
+ if ((flags & Target.METHOD_PARAMETER) > 0) {
targetNames.add ("METHOD_PARAMETER");
}
- if (flags & Target.CONSTRUCTOR_PARAMETER > 0) {
+ if ((flags & Target.CONSTRUCTOR_PARAMETER) > 0) {
targetNames.add ("CONSTRUCTOR_PARAMETER");
}
- if (flags & Target.RETURN > 0) {
+ if ((flags & Target.RETURN) > 0) {
targetNames.add ("RETURN");
}
1.13 +9 -5 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.12
retrieving revision 1.13
diff -u -r1.12 -r1.13
--- Attributes.java 9 May 2004 13:57:10 -0000 1.12
+++ Attributes.java 9 May 2004 17:58:38 -0000 1.13
@@ -131,21 +131,25 @@
classRepositories.put (clazz, null);
Class attributeRepo = null;
+ AttributeRepositoryClass repo = EmptyAttributeRepositoryClass.INSTANCE;
try {
attributeRepo = Class.forName (clazz.getName () + "$__attributeRepository", true, clazz.getClassLoader ());
- AttributeRepositoryClass repo = (AttributeRepositoryClass) attributeRepo.newInstance ();
-
- Util.validateRepository (clazz, repo);
- cached = new DefaultCachedRepository (clazz, repo);
+ repo = (AttributeRepositoryClass) attributeRepo.newInstance ();
} catch (ClassNotFoundException cnfe) {
- cached = CachedRepository.EMPTY;
+ // OK, just means no repo available, so default to empty one.
+ repo = EmptyAttributeRepositoryClass.INSTANCE;
} catch (InstantiationException ie) {
throw new RepositoryError (ie);
} catch (IllegalAccessException iae) {
throw new RepositoryError (iae);
}
+ cached = new DefaultCachedRepository (clazz, repo);
classRepositories.put (clazz, cached);
+
+ if (repo != null) {
+ Util.validateRepository (clazz, repo);
+ }
} finally {
initList.remove (initList.size () - 1);
}
1.1 jakarta-commons-sandbox/attributes/api/src/java/org/apache/commons/attributes/EmptyAttributeRepositoryClass.java
Index: EmptyAttributeRepositoryClass.java
===================================================================
/*
* Copyright 2003-2004 The Apache Software Foundation
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
package org.apache.commons.attributes;
import java.util.Collections;
import java.util.Set;
import java.util.Map;
/**
* Empty implementation of AttributeRepositoryClass.
*/
class EmptyAttributeRepositoryClass implements AttributeRepositoryClass {
public static final AttributeRepositoryClass INSTANCE = new EmptyAttributeRepositoryClass();
public Set getClassAttributes () {
return Collections.EMPTY_SET;
}
public Map getFieldAttributes () {
return Collections.EMPTY_MAP;
}
public Map getMethodAttributes () {
return Collections.EMPTY_MAP;
}
public Map getConstructorAttributes () {
return Collections.EMPTY_MAP;
}
}
---------------------------------------------------------------------
To unsubscribe, e-mail: commons-dev-unsubscribe@jakarta.apache.org
For additional commands, e-mail: commons-dev-help@jakarta.apache.org