Author: mbenson
Date: Thu Apr 25 14:51:44 2013
New Revision: 1475808

URL: http://svn.apache.org/r1475808
Log:
order, format

Modified:
    
commons/sandbox/weaver/trunk/modules/privilizer/weaver/src/main/java/org/apache/commons/weaver/privilizer/Privilizer.java

Modified: 
commons/sandbox/weaver/trunk/modules/privilizer/weaver/src/main/java/org/apache/commons/weaver/privilizer/Privilizer.java
URL: 
http://svn.apache.org/viewvc/commons/sandbox/weaver/trunk/modules/privilizer/weaver/src/main/java/org/apache/commons/weaver/privilizer/Privilizer.java?rev=1475808&r1=1475807&r2=1475808&view=diff
==============================================================================
--- 
commons/sandbox/weaver/trunk/modules/privilizer/weaver/src/main/java/org/apache/commons/weaver/privilizer/Privilizer.java
 (original)
+++ 
commons/sandbox/weaver/trunk/modules/privilizer/weaver/src/main/java/org/apache/commons/weaver/privilizer/Privilizer.java
 Thu Apr 25 14:51:44 2013
@@ -81,18 +81,20 @@ public abstract class Privilizer {
         NEVER,
 
         /**
-         * Weaves such that the check for an active {@link SecurityManager} is 
done once only.
+         * Weaves such that the check for an active {@link SecurityManager} is
+         * done once only.
          */
         ON_INIT(generateName("hasSecurityManager")),
 
         /**
-         * Weaves such that the check for an active {@link SecurityManager} is 
done for each {@link Privileged} method
-         * execution.
+         * Weaves such that the check for an active {@link SecurityManager} is
+         * done for each {@link Privileged} method execution.
          */
         DYNAMIC(HAS_SECURITY_MANAGER_CONDITION),
 
         /**
-         * Weaves such that {@link Privileged} methods are always executed as 
such.
+         * Weaves such that {@link Privileged} methods are always executed as
+         * such.
          */
         ALWAYS;
 
@@ -118,6 +120,8 @@ public abstract class Privilizer {
     private static final String GENERATE_NAME = "__privileged_%s";
     private static final String HAS_SECURITY_MANAGER_CONDITION = 
"System.getSecurityManager() != null";
 
+    private static final Logger log = 
Logger.getLogger(Privilizer.class.getName());
+
     protected static String generateName(String simple) {
         return String.format(GENERATE_NAME, simple);
     }
@@ -126,14 +130,6 @@ public abstract class Privilizer {
         return b == null ? null : new String(b, Charset.forName("UTF-8"));
     }
 
-    protected final Policy policy;
-
-    protected final ClassPool classPool;
-
-    private boolean settingsReported;
-
-    private static final Logger log = 
Logger.getLogger(Privilizer.class.getName());
-
     private static final Comparator<CtMethod> CTMETHOD_COMPARATOR = new 
Comparator<CtMethod>() {
 
         @Override
@@ -163,6 +159,12 @@ public abstract class Privilizer {
         return result;
     }
 
+    protected final Policy policy;
+
+    protected final ClassPool classPool;
+
+    private boolean settingsReported;
+
     private final Assistant assistant;
 
     public Privilizer(ClassPool classPool) {
@@ -176,8 +178,8 @@ public abstract class Privilizer {
     }
 
     /**
-     * Weave the specified class. Handles all {@link Privileged} methods as 
well as calls described by
-     * {@code privilizing}.
+     * Weave the specified class. Handles all {@link Privileged} methods as 
well
+     * as calls described by {@code privilizing}.
      * 
      * @param privilizing
      * 
@@ -187,7 +189,7 @@ public abstract class Privilizer {
      * @throws ClassNotFoundException
      */
     public boolean weaveClass(Class<?> clazz, Privilizing privilizing) throws 
NotFoundException, IOException,
-            CannotCompileException, ClassNotFoundException, 
IllegalAccessException {
+        CannotCompileException, ClassNotFoundException, IllegalAccessException 
{
         return weave(classPool.get(clazz.getName()), privilizing);
     }
 
@@ -203,7 +205,7 @@ public abstract class Privilizer {
      * @throws ClassNotFoundException
      */
     private boolean weave(CtClass type, Privilizing privilizing) throws 
NotFoundException, IOException,
-            CannotCompileException, ClassNotFoundException, 
IllegalAccessException {
+        CannotCompileException, ClassNotFoundException, IllegalAccessException 
{
         reportSettings();
         final String policyName = generateName(POLICY_NAME);
         final String policyValue = toString(type.getAttribute(policyName));
@@ -223,7 +225,7 @@ public abstract class Privilizer {
 
             if (policy == Policy.ON_INIT) {
                 debug("Initializing field %s.%s to %s", type.getName(), 
policy.condition,
-                        HAS_SECURITY_MANAGER_CONDITION);
+                    HAS_SECURITY_MANAGER_CONDITION);
 
                 CtField securityManager = new CtField(CtClass.booleanType, 
policy.condition, type);
                 securityManager.setModifiers(Modifier.STATIC | 
Modifier.PRIVATE | Modifier.FINAL);
@@ -245,13 +247,13 @@ public abstract class Privilizer {
     }
 
     private boolean privilizeBlueprints(CtClass type, Privilizing annotation) 
throws CannotCompileException,
-            ClassNotFoundException, NotFoundException, IOException, 
IllegalAccessException {
+        ClassNotFoundException, NotFoundException, IOException, 
IllegalAccessException {
         boolean result = false;
         if (annotation != null) {
             final CallTo[] blueprintCalls = annotation.value();
             for (CallTo callTo : blueprintCalls) {
                 Validate.isTrue(!callTo.value().equals(type.getName()),
-                        "Type %s cannot use itself as a privilizer blueprint", 
callTo.value());
+                    "Type %s cannot use itself as a privilizer blueprint", 
callTo.value());
             }
             for (CtMethod method : type.getDeclaredMethods()) {
                 result = privilizeBlueprints(type, method, blueprintCalls) | 
result;
@@ -261,8 +263,7 @@ public abstract class Privilizer {
     }
 
     private boolean privilizeBlueprints(final CtClass type, final CtMethod 
method, final CallTo[] blueprintCalls)
-            throws CannotCompileException, ClassNotFoundException, 
NotFoundException, IOException,
-            IllegalAccessException {
+        throws CannotCompileException, ClassNotFoundException, 
NotFoundException, IOException, IllegalAccessException {
         final MutableBoolean result = new MutableBoolean();
 
         method.instrument(new ExprEditor() {
@@ -275,8 +276,7 @@ public abstract class Privilizer {
                     if (!Modifier.isStatic(called.getModifiers())) {
                         return;
                     }
-                }
-                catch (NotFoundException e) {
+                } catch (NotFoundException e) {
                     return;
                 }
                 boolean found = false;
@@ -301,12 +301,12 @@ public abstract class Privilizer {
                     CtMethod copy;
                     try {
                         copy = copyBlueprintTo(type, name, called, 
blueprintCalls);
-                    }
-                    catch (Exception e) {
+                    } catch (Exception e) {
                         throw new RuntimeException(e);
                     }
                     if (copy == null) {
-                        debug("Unable to use %s as blueprint method in %s", 
Privilizer.this.toString(called), Privilizer.this.toString(method));
+                        debug("Unable to use %s as blueprint method in %s", 
Privilizer.this.toString(called),
+                            Privilizer.this.toString(method));
                         return;
                     }
                     Body redirect = new Body(Privilizer.this, "call %s", 
Privilizer.this.toString(called));
@@ -327,23 +327,27 @@ public abstract class Privilizer {
 
     private static String importedMethodName(CtMethod blueprint) {
         return new 
StringBuilder(blueprint.getDeclaringClass().getName().replace('.', 
'_')).append('$')
-                .append(blueprint.getName()).toString();
+            .append(blueprint.getName()).toString();
     }
 
     /*
      * This design is almost certainly suboptimal. Basically, we have:
      * 
-     * for a declared method, look for calls to blueprint methods for each 
blueprint method, copy it when copying,
-     * inspect blueprint method's code and recursively copy in methods from 
the source class of *that particular method*
-     * because otherwise CtNewMethod will do it for us and we'll miss our 
window of opportunity now that we have a
-     * copied blueprint method, inspect it for blueprint calls from other 
classes and do this whole thing recursively.
+     * for a declared method, look for calls to blueprint methods for each
+     * blueprint method, copy it when copying, inspect blueprint method's code
+     * and recursively copy in methods from the source class of *that 
particular
+     * method* because otherwise CtNewMethod will do it for us and we'll miss
+     * our window of opportunity now that we have a copied blueprint method,
+     * inspect it for blueprint calls from other classes and do this whole 
thing
+     * recursively.
      * 
-     * It would *seem* that we could combine the recursion/copying of methods 
from all blueprint classes but I can't get
-     * my head around it right now. -MJB
+     * It would *seem* that we could combine the recursion/copying of methods
+     * from all blueprint classes but I can't get my head around it right now.
+     * -MJB
      */
     private CtMethod copyBlueprintTo(final CtClass target, final String 
toName, final CtMethod method,
-            final CallTo[] blueprintCalls) throws ClassNotFoundException, 
NotFoundException, IOException,
-            IllegalAccessException, CannotCompileException {
+        final CallTo[] blueprintCalls) throws ClassNotFoundException, 
NotFoundException, IOException,
+        IllegalAccessException, CannotCompileException {
         if (!Modifier.isStatic(method.getModifiers())) {
             return null;
         }
@@ -351,8 +355,7 @@ public abstract class Privilizer {
         try {
             final CtMethod done = target.getDeclaredMethod(toName, 
method.getParameterTypes());
             return done;
-        }
-        catch (NotFoundException e1) {
+        } catch (NotFoundException e1) {
         }
         final CtClass declaring = method.getDeclaringClass();
 
@@ -365,8 +368,7 @@ public abstract class Privilizer {
                 CtMethod called;
                 try {
                     called = m.getMethod();
-                }
-                catch (NotFoundException e) {
+                } catch (NotFoundException e) {
                     return;
                 }
                 if (called.getDeclaringClass().equals(declaring)) {
@@ -379,8 +381,7 @@ public abstract class Privilizer {
                 super.edit(f);
                 try {
                     referencedFields.add(f.getField());
-                }
-                catch (NotFoundException e) {
+                } catch (NotFoundException e) {
                 }
             }
         }
@@ -400,12 +401,14 @@ public abstract class Privilizer {
             }
         }
 
-        // we have code to handle non-public fields, but the generated code 
gets VerifyErrors at runtime;
+        // we have code to handle non-public fields, but the generated code 
gets
+        // VerifyErrors at runtime;
         // for now we must skip blueprinting such methods.
         boolean referencesPublicFieldsOnly = true;
         for (CtField refd : referencedFields) {
             if (!Modifier.isPublic(refd.getModifiers())) {
-               warn("Method %s references non-public field %s.%s", 
toString(method), refd.getDeclaringClass().getName(), refd.getName());
+                warn("Method %s references non-public field %s.%s", 
toString(method), refd.getDeclaringClass()
+                    .getName(), refd.getName());
                 referencesPublicFieldsOnly = false;
             }
         }
@@ -429,14 +432,18 @@ public abstract class Privilizer {
         privilizeBlueprints(target, result, blueprintCalls);
 
         if (!referencedFields.isEmpty()) {
-            // more referenced fields handling, but reduces the amount of 
generated code we read through
+            // more referenced fields handling, but reduces the amount of
+            // generated code we read through
             // when blueprinting recursively
             makeAccessible(target, result, referencedFields);
         }
-        // not really possible to check for what truly may throw a 
SecurityException and thus requires privilizing,
-        // but we'll assume any public method must be. As anything else, once 
copied,
+        // not really possible to check for what truly may throw a
+        // SecurityException and thus requires privilizing,
+        // but we'll assume any public method must be. As anything else, once
+        // copied,
         // can only be called from something we have already privilized
-        // TODO? only privilize methods the instrumented class called 
originally, directly
+        // TODO? only privilize methods the instrumented class called
+        // originally, directly
         if (Modifier.isPublic(method.getModifiers())) {
             weave(target, result);
         }
@@ -451,11 +458,11 @@ public abstract class Privilizer {
     }
 
     private void handleReferencedFields(final CtClass target, final CtMethod 
method, final CtMethod source,
-            final List<CtField> referencedFields) throws 
CannotCompileException, NotFoundException {
+        final List<CtField> referencedFields) throws CannotCompileException, 
NotFoundException {
 
         for (CtField ctField : referencedFields) {
             Validate.validState(!ctField.getDeclaringClass().equals(target),
-                    "Circular reference; cannot blueprint method %s", 
toString(source));
+                "Circular reference; cannot blueprint method %s", 
toString(source));
         }
 
         method.instrument(new ExprEditor() {
@@ -467,9 +474,9 @@ public abstract class Privilizer {
                 try {
                     fld = f.getField();
                     primitive = fld.getType().isPrimitive();
-                }
-                catch (NotFoundException e) {
-                    // no such field implies a reference copied such that the 
field doesn't exist, probably the usual
+                } catch (NotFoundException e) {
+                    // no such field implies a reference copied such that the
+                    // field doesn't exist, probably the usual
                     // case with blueprinted methods containing field refs
 
                     fld = null;
@@ -480,13 +487,11 @@ public abstract class Privilizer {
                             fld = host.getDeclaredField(f.getFieldName());
                             primitive = fld.getType().isPrimitive();
                             break;
-                        }
-                        catch (NotFoundException e1) {
+                        } catch (NotFoundException e1) {
                         }
                         try {
                             host = host.getSuperclass();
-                        }
-                        catch (NotFoundException e1) {
+                        } catch (NotFoundException e1) {
                             break;
                         }
                     }
@@ -513,7 +518,7 @@ public abstract class Privilizer {
                     }
                 }
                 debug("Replacing %s access of %s.%s", f.isReader() ? "read" : 
"write", fld.getDeclaringClass()
-                        .getName(), f.getFieldName());
+                    .getName(), f.getFieldName());
                 debug(replacement);
                 f.replace(replacement);
             }
@@ -521,7 +526,7 @@ public abstract class Privilizer {
     }
 
     private void makeAccessible(final CtClass target, final CtMethod method, 
final List<CtField> referencedFields)
-            throws CannotCompileException {
+        throws CannotCompileException {
         boolean allPublic = true;
         for (CtField ctField : referencedFields) {
             if (!Modifier.isPublic(ctField.getModifiers())) {
@@ -536,7 +541,7 @@ public abstract class Privilizer {
         method.insertBefore(assistant.callPushFieldAccess(target, 
referencedFields));
         final boolean asFinally = true;
         method.insertAfter(new 
StringBuilder(assistant.popFieldAccess(target).getName()).append("();").toString(),
-                asFinally);
+            asFinally);
     }
 
     protected void debug(String message, Object... args) {
@@ -566,7 +571,7 @@ public abstract class Privilizer {
     }
 
     private CtClass createAction(CtClass type, CtMethod impl, Class<?> iface) 
throws NotFoundException,
-            CannotCompileException, IOException {
+        CannotCompileException, IOException {
         final boolean exc = impl.getExceptionTypes().length > 0;
 
         final CtClass actionType = classPool.get(iface.getName());
@@ -579,8 +584,7 @@ public abstract class Privilizer {
         final CtField owner;
         if (Modifier.isStatic(impl.getModifiers())) {
             owner = null;
-        }
-        else {
+        } else {
             owner = new CtField(type, generateName("owner"), result);
             owner.setModifiers(Modifier.PRIVATE | Modifier.FINAL);
             debug("Adding owner field %s to %s", owner.getName(), simpleName);
@@ -605,8 +609,7 @@ public abstract class Privilizer {
             for (final CtField fld : result.getDeclaredFields()) {
                 if (sep) {
                     sig.append(", ");
-                }
-                else {
+                } else {
                     sep = true;
                 }
                 sig.append(fld.getType().getName()).append(' 
').append(fld.getName());
@@ -626,13 +629,12 @@ public abstract class Privilizer {
                 body.append("return ");
             }
             final String deref = Modifier.isStatic(impl.getModifiers()) ? 
type.getName() : owner.getName();
-            final String call = String.format("%s.%s(%s)", deref, 
impl.getName(),
-                    StringUtils.join(propagatedParameters, ", "));
+            final String call =
+                String.format("%s.%s(%s)", deref, impl.getName(), 
StringUtils.join(propagatedParameters, ", "));
 
             if (!isVoid && rt.isPrimitive()) {
                 body.appendLine("%2$s.valueOf(%1$s);", call, 
((CtPrimitiveType) rt).getWrapperName());
-            }
-            else {
+            } else {
                 body.append(call).append(';').appendNewLine();
 
                 if (isVoid) {
@@ -651,8 +653,8 @@ public abstract class Privilizer {
         final StringBuilder b = new StringBuilder(m.getName());
         if (m.getParameterTypes().length > 0) {
             b.append("$$").append(
-                    
StringUtils.strip(Descriptor.getParamDescriptor(m.getSignature()), 
"(;)").replace("[", "ARRAYOF_")
-                            .replace('/', '_').replace(';', '$'));
+                
StringUtils.strip(Descriptor.getParamDescriptor(m.getSignature()), 
"(;)").replace("[", "ARRAYOF_")
+                    .replace('/', '_').replace(';', '$'));
         }
         return b.append(ACTION_SUFFIX).toString();
     }
@@ -662,16 +664,16 @@ public abstract class Privilizer {
     }
 
     private boolean weave(CtClass type, CtMethod method) throws 
ClassNotFoundException, CannotCompileException,
-            NotFoundException, IOException, IllegalAccessException {
+        NotFoundException, IOException, IllegalAccessException {
         final AccessLevel accessLevel = AccessLevel.of(method.getModifiers());
         if (!permitMethodWeaving(accessLevel)) {
             throw new IllegalAccessException("Method " + type.getName() + "#" 
+ toString(method)
-                    + " must have maximum access level '" + 
getTargetAccessLevel() + "' but is defined wider ('"
-                    + accessLevel + "')");
+                + " must have maximum access level '" + getTargetAccessLevel() 
+ "' but is defined wider ('"
+                + accessLevel + "')");
         }
         if (AccessLevel.PACKAGE.compareTo(accessLevel) > 0) {
             warn("Possible security leak: granting privileges to %s method 
%s.%s", accessLevel, type.getName(),
-                    toString(method));
+                toString(method));
         }
         final String implName = generateName(method.getName());
 
@@ -679,7 +681,7 @@ public abstract class Privilizer {
         impl.setModifiers(AccessLevel.PRIVATE.merge(method.getModifiers()));
         type.addMethod(impl);
         debug("Copied %2$s %1$s.%3$s to %4$s %1$s.%5$s", type.getName(), 
accessLevel, toString(method),
-                AccessLevel.PRIVATE, toString(impl));
+            AccessLevel.PRIVATE, toString(impl));
 
         final Body body = new Body(this, "new body of %s", toString(method));
 
@@ -701,16 +703,14 @@ public abstract class Privilizer {
         boolean firstParam;
         if (Modifier.isStatic(impl.getModifiers())) {
             firstParam = true;
-        }
-        else {
+        } else {
             body.append("$0");
             firstParam = false;
         }
         for (int i = 1, sz = impl.getParameterTypes().length; i <= sz; i++) {
             if (firstParam) {
                 firstParam = false;
-            }
-            else {
+            } else {
                 body.append(", ");
             }
             body.append('$').append(Integer.toString(i));
@@ -726,8 +726,7 @@ public abstract class Privilizer {
             if (policy.isConditional()) {
                 body.appendLine("return;");
             }
-        }
-        else {
+        } else {
             final String cast = rt.isPrimitive() ? ((CtPrimitiveType) 
rt).getWrapperName() : rt.getName();
             // don't worry about wrapper NPEs because we should be simply
             // passing back an autoboxed value, then unboxing again
@@ -754,8 +753,8 @@ public abstract class Privilizer {
                 body.endBlock();
             }
             body.appendLine(
-                    "throw %1$s instanceof RuntimeException ? 
(RuntimeException) %1$s : new RuntimeException(%1$s);",
-                    wrapped);
+                "throw %1$s instanceof RuntimeException ? (RuntimeException) 
%1$s : new RuntimeException(%1$s);",
+                wrapped);
             body.endBlock();
         }
 


Reply via email to