You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@commons.apache.org by mb...@apache.org on 2013/04/25 17:10:41 UTC
svn commit: r1475818 - in
/commons/sandbox/weaver/trunk/modules/privilizer/weaver/src/main/java/org/apache/commons/weaver/privilizer:
FilesystemPrivilizer.java Privilizer.java
Author: mbenson
Date: Thu Apr 25 15:10:40 2013
New Revision: 1475818
URL: http://svn.apache.org/r1475818
Log:
more ordering, refactor modifiedClassWriter
Modified:
commons/sandbox/weaver/trunk/modules/privilizer/weaver/src/main/java/org/apache/commons/weaver/privilizer/FilesystemPrivilizer.java
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/FilesystemPrivilizer.java
URL: http://svn.apache.org/viewvc/commons/sandbox/weaver/trunk/modules/privilizer/weaver/src/main/java/org/apache/commons/weaver/privilizer/FilesystemPrivilizer.java?rev=1475818&r1=1475817&r2=1475818&view=diff
==============================================================================
--- commons/sandbox/weaver/trunk/modules/privilizer/weaver/src/main/java/org/apache/commons/weaver/privilizer/FilesystemPrivilizer.java (original)
+++ commons/sandbox/weaver/trunk/modules/privilizer/weaver/src/main/java/org/apache/commons/weaver/privilizer/FilesystemPrivilizer.java Thu Apr 25 15:10:40 2013
@@ -50,28 +50,23 @@ public class FilesystemPrivilizer extend
return target;
}
- private final File target;
-
- private final ModifiedClassWriter modifiedClassWriter = new ModifiedClassWriter() {
- @Override
- public void write(CtClass type) throws CannotCompileException, IOException {
- type.writeFile(target.getAbsolutePath());
- }
- };
-
- public FilesystemPrivilizer(ClassLoader classpath, File target) {
- super(createClassPool(classpath, target));
- this.target = target;
- }
-
- public FilesystemPrivilizer(Policy policy, ClassLoader classpath, File target) {
- super(policy, createClassPool(classpath, target));
- this.target = target;
+ public FilesystemPrivilizer(final ClassLoader classpath, final File target) {
+ super(createClassPool(classpath, target), new ModifiedClassWriter() {
+
+ @Override
+ public void write(CtClass type) throws CannotCompileException, IOException {
+ type.writeFile(target.getAbsolutePath());
+ }
+ });
}
- @Override
- protected ModifiedClassWriter getModifiedClassWriter() {
- return modifiedClassWriter;
+ public FilesystemPrivilizer(final Policy policy, final ClassLoader classpath, final File target) {
+ super(createClassPool(classpath, target), new ModifiedClassWriter() {
+ @Override
+ public void write(CtClass type) throws CannotCompileException, IOException {
+ type.writeFile(target.getAbsolutePath());
+ }
+ }, policy);
}
}
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=1475818&r1=1475817&r2=1475818&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 15:10:40 2013
@@ -159,21 +159,32 @@ public abstract class Privilizer {
return result;
}
- protected final Policy policy;
-
- protected final ClassPool classPool;
+ private static String importedMethodName(CtMethod blueprint) {
+ return new StringBuilder(blueprint.getDeclaringClass().getName().replace('.', '_')).append('$')
+ .append(blueprint.getName()).toString();
+ }
- private boolean settingsReported;
+ private static CodeConverter redirect(CtMethod origMethod, CtMethod substMethod) throws CannotCompileException {
+ final CodeConverter result = new CodeConverter();
+ result.redirectMethodCall(origMethod, substMethod);
+ return result;
+ }
+ private final Policy policy;
+ private final ClassPool classPool;
+ private final ModifiedClassWriter modifiedClassWriter;
private final Assistant assistant;
- public Privilizer(ClassPool classPool) {
- this(Policy.DYNAMIC, classPool);
+ private boolean settingsReported;
+
+ public Privilizer(ClassPool classPool, ModifiedClassWriter modifiedClassWriter) {
+ this(classPool, modifiedClassWriter, Policy.DYNAMIC);
}
- public Privilizer(Policy policy, ClassPool classPool) {
+ public Privilizer(ClassPool classPool, ModifiedClassWriter modifiedClassWriter, Policy policy) {
this.policy = Validate.notNull(policy, "policy");
this.classPool = Validate.notNull(classPool, "classPool");
+ this.modifiedClassWriter = Validate.notNull(modifiedClassWriter, "modifiedClassWriter");
this.assistant = new Assistant(classPool, "__privilizer_");
}
@@ -239,7 +250,7 @@ public abstract class Privilizer {
}
if (result) {
type.setAttribute(policyName, policy.name().getBytes(Charset.forName("UTF-8")));
- getModifiedClassWriter().write(type);
+ modifiedClassWriter.write(type);
}
}
log.info(String.format(result ? "Wove class %s" : "Nothing to do for class %s", type.getName()));
@@ -325,11 +336,6 @@ public abstract class Privilizer {
return result.booleanValue();
}
- private static String importedMethodName(CtMethod blueprint) {
- return new StringBuilder(blueprint.getDeclaringClass().getName().replace('.', '_')).append('$')
- .append(blueprint.getName()).toString();
- }
-
/*
* This design is almost certainly suboptimal. Basically, we have:
*
@@ -451,12 +457,6 @@ public abstract class Privilizer {
return result;
}
- private static CodeConverter redirect(CtMethod origMethod, CtMethod substMethod) throws CannotCompileException {
- final CodeConverter result = new CodeConverter();
- result.redirectMethodCall(origMethod, substMethod);
- return result;
- }
-
private void handleReferencedFields(final CtClass target, final CtMethod method, final CtMethod source,
final List<CtField> referencedFields) throws CannotCompileException, NotFoundException {
@@ -556,8 +556,6 @@ public abstract class Privilizer {
log.warning(String.format(message, args));
}
- protected abstract ModifiedClassWriter getModifiedClassWriter();
-
protected void info(String message, Object... args) {
log.info(String.format(message, args));
}
@@ -644,7 +642,7 @@ public abstract class Privilizer {
result.addMethod(CtNewMethod.make(run.append(body.complete()).toString(), result));
}
- getModifiedClassWriter().write(result);
+ modifiedClassWriter.write(result);
debug("Returning action type %s", result);
return result;
}