From 08c4940824a4cdf84e9d1900a2d876a8d02950ec Mon Sep 17 00:00:00 2001 From: rfeng Date: Wed, 23 Jun 2010 21:08:28 +0000 Subject: Fix the pacakge scoped field injection git-svn-id: http://svn.us.apache.org/repos/asf/tuscany@957348 13f79535-47bb-0310-9956-ffa450edef68 --- .../java/introspect/JavaIntrospectionHelper.java | 12 ++++++++---- .../java/introspect/impl/HeuristicPojoProcessor.java | 5 +++-- 2 files changed, 11 insertions(+), 6 deletions(-) (limited to 'sca-java-2.x') diff --git a/sca-java-2.x/trunk/modules/implementation-java/src/main/java/org/apache/tuscany/sca/implementation/java/introspect/JavaIntrospectionHelper.java b/sca-java-2.x/trunk/modules/implementation-java/src/main/java/org/apache/tuscany/sca/implementation/java/introspect/JavaIntrospectionHelper.java index c6f45b93f3..5a934b5c01 100644 --- a/sca-java-2.x/trunk/modules/implementation-java/src/main/java/org/apache/tuscany/sca/implementation/java/introspect/JavaIntrospectionHelper.java +++ b/sca-java-2.x/trunk/modules/implementation-java/src/main/java/org/apache/tuscany/sca/implementation/java/introspect/JavaIntrospectionHelper.java @@ -107,16 +107,17 @@ public final class JavaIntrospectionHelper { } /** - * Returns a collection of injectable fields (neither final or static) declared by a class + * Returns a collection of injectable fields declared by a class * or one of its supertypes + * + * For now we will include final or static fields so that validation problems can be reported */ public static Set getInjectableFields(Class clazz, boolean validating) { return getInjectableFields(clazz, new HashSet(), validating); } /** - * Recursively evaluates the type hierarchy to return all fields that are - * not static or final + * Recursively evaluates the type hierarchy to return all fields */ private static Set getInjectableFields(Class clazz, Set fields, boolean validating) { if (clazz == null || clazz.isArray() || Object.class.equals(clazz)) { @@ -127,7 +128,10 @@ public final class JavaIntrospectionHelper { for (final Field field : declaredFields) { int modifiers = field.getModifiers(); // The field should be non-final and non-static - if (!Modifier.isStatic(modifiers) && !Modifier.isFinal(modifiers)) { + if (!Modifier.isStatic(modifiers) + // && !Modifier.isFinal(modifiers) + ) { + // Allow privileged access to set accessibility. Requires ReflectPermission // in security policy. AccessController.doPrivileged(new PrivilegedAction() { diff --git a/sca-java-2.x/trunk/modules/implementation-java/src/main/java/org/apache/tuscany/sca/implementation/java/introspect/impl/HeuristicPojoProcessor.java b/sca-java-2.x/trunk/modules/implementation-java/src/main/java/org/apache/tuscany/sca/implementation/java/introspect/impl/HeuristicPojoProcessor.java index 1deb4e824d..4bb775d17b 100644 --- a/sca-java-2.x/trunk/modules/implementation-java/src/main/java/org/apache/tuscany/sca/implementation/java/introspect/impl/HeuristicPojoProcessor.java +++ b/sca-java-2.x/trunk/modules/implementation-java/src/main/java/org/apache/tuscany/sca/implementation/java/introspect/impl/HeuristicPojoProcessor.java @@ -113,8 +113,7 @@ public class HeuristicPojoProcessor extends BaseJavaClassVisitor { addService(type, clazz); } } - Set methods = getAllUniquePublicProtectedMethods(clazz, false); - if (!type.getReferenceMembers().isEmpty() || !type.getPropertyMembers().isEmpty()) { + if (!(type.getReferenceMembers().isEmpty() && type.getPropertyMembers().isEmpty())) { // references and properties have been explicitly defined // if (type.getServices().isEmpty()) { // calculateServiceInterface(clazz, type, methods); @@ -125,6 +124,8 @@ public class HeuristicPojoProcessor extends BaseJavaClassVisitor { evaluateConstructor(type, clazz); return; } + Set methods = getAllUniquePublicProtectedMethods(clazz, false); + calcPropRefs(methods, services, type, clazz); evaluateConstructor(type, clazz); } -- cgit v1.2.3