Author: mbenson Date: Tue Jul 30 15:57:10 2013 New Revision: 1508503 URL: http://svn.apache.org/r1508503 Log: reintegrate privilizer asm branch
Added: commons/sandbox/weaver/trunk/modules/privilizer/weaver/src/main/java/org/apache/commons/weaver/privilizer/ActionGenerator.java - copied unchanged from r1508502, commons/sandbox/weaver/branches/priv-asm/modules/privilizer/weaver/src/main/java/org/apache/commons/weaver/privilizer/ActionGenerator.java commons/sandbox/weaver/trunk/modules/privilizer/weaver/src/main/java/org/apache/commons/weaver/privilizer/BlueprintingVisitor.java - copied unchanged from r1508502, commons/sandbox/weaver/branches/priv-asm/modules/privilizer/weaver/src/main/java/org/apache/commons/weaver/privilizer/BlueprintingVisitor.java commons/sandbox/weaver/trunk/modules/privilizer/weaver/src/main/java/org/apache/commons/weaver/privilizer/Field.java - copied unchanged from r1508502, commons/sandbox/weaver/branches/priv-asm/modules/privilizer/weaver/src/main/java/org/apache/commons/weaver/privilizer/Field.java commons/sandbox/weaver/trunk/modules/privilizer/weaver/src/main/java/org/apache/commons/weaver/privilizer/FieldAccess.java - copied unchanged from r1508502, commons/sandbox/weaver/branches/priv-asm/modules/privilizer/weaver/src/main/java/org/apache/commons/weaver/privilizer/FieldAccess.java commons/sandbox/weaver/trunk/modules/privilizer/weaver/src/main/java/org/apache/commons/weaver/privilizer/InlineNestedPrivilegedCalls.java - copied unchanged from r1508502, commons/sandbox/weaver/branches/priv-asm/modules/privilizer/weaver/src/main/java/org/apache/commons/weaver/privilizer/InlineNestedPrivilegedCalls.java commons/sandbox/weaver/trunk/modules/privilizer/weaver/src/main/java/org/apache/commons/weaver/privilizer/Policy.java - copied unchanged from r1508502, commons/sandbox/weaver/branches/priv-asm/modules/privilizer/weaver/src/main/java/org/apache/commons/weaver/privilizer/Policy.java commons/sandbox/weaver/trunk/modules/privilizer/weaver/src/main/java/org/apache/commons/weaver/privilizer/Privilized.java - copied unchanged from r1508502, commons/sandbox/weaver/branches/priv-asm/modules/privilizer/weaver/src/main/java/org/apache/commons/weaver/privilizer/Privilized.java commons/sandbox/weaver/trunk/modules/privilizer/weaver/src/main/java/org/apache/commons/weaver/privilizer/Privilizer.java - copied unchanged from r1508502, commons/sandbox/weaver/branches/priv-asm/modules/privilizer/weaver/src/main/java/org/apache/commons/weaver/privilizer/Privilizer.java commons/sandbox/weaver/trunk/modules/privilizer/weaver/src/main/java/org/apache/commons/weaver/privilizer/PrivilizerWeaver.java - copied unchanged from r1508502, commons/sandbox/weaver/branches/priv-asm/modules/privilizer/weaver/src/main/java/org/apache/commons/weaver/privilizer/PrivilizerWeaver.java commons/sandbox/weaver/trunk/modules/privilizer/weaver/src/main/java/org/apache/commons/weaver/privilizer/PrivilizingVisitor.java - copied unchanged from r1508502, commons/sandbox/weaver/branches/priv-asm/modules/privilizer/weaver/src/main/java/org/apache/commons/weaver/privilizer/PrivilizingVisitor.java commons/sandbox/weaver/trunk/modules/privilizer/weaver/src/main/java/org/apache/commons/weaver/privilizer/asm/ - copied from r1508502, commons/sandbox/weaver/branches/priv-asm/modules/privilizer/weaver/src/main/java/org/apache/commons/weaver/privilizer/asm/ commons/sandbox/weaver/trunk/processor/src/main/java/org/apache/commons/weaver/Inflater.java - copied unchanged from r1508502, commons/sandbox/weaver/branches/priv-asm/processor/src/main/java/org/apache/commons/weaver/Inflater.java Modified: commons/sandbox/weaver/trunk/ (props changed) commons/sandbox/weaver/trunk/example/pom.xml commons/sandbox/weaver/trunk/example/src/main/java/org/apache/commons/weaver/privilizer/example/UsingBlueprints.java commons/sandbox/weaver/trunk/example/src/main/java/org/apache/commons/weaver/privilizer/example/Utils.java commons/sandbox/weaver/trunk/example/src/test/java/org/apache/commons/weaver/privilizer/example/NoArgsTest.java commons/sandbox/weaver/trunk/example/src/test/java/org/apache/commons/weaver/privilizer/example/OverloadingTest.java commons/sandbox/weaver/trunk/example/src/test/java/org/apache/commons/weaver/privilizer/example/PrivateMethodsTest.java commons/sandbox/weaver/trunk/example/src/test/java/org/apache/commons/weaver/privilizer/example/StaticNoArgsTest.java commons/sandbox/weaver/trunk/example/src/test/java/org/apache/commons/weaver/privilizer/example/StaticOverloadingTest.java commons/sandbox/weaver/trunk/example/src/test/java/org/apache/commons/weaver/privilizer/example/StaticPrivateMethodsTest.java commons/sandbox/weaver/trunk/example/src/test/java/org/apache/commons/weaver/privilizer/example/StaticUsingArgsTest.java commons/sandbox/weaver/trunk/example/src/test/java/org/apache/commons/weaver/privilizer/example/UsingArgsTest.java commons/sandbox/weaver/trunk/example/src/test/java/org/apache/commons/weaver/privilizer/example/UsingBlueprintsTest.java commons/sandbox/weaver/trunk/modules/privilizer/weaver/pom.xml commons/sandbox/weaver/trunk/modules/privilizer/weaver/src/main/java/org/apache/commons/weaver/privilizer/ (props changed) commons/sandbox/weaver/trunk/modules/privilizer/weaver/src/main/java/org/apache/commons/weaver/privilizer/AccessLevel.java commons/sandbox/weaver/trunk/modules/privilizer/weaver/src/main/java/org/apache/commons/weaver/privilizer/PrivilizerCleaner.java commons/sandbox/weaver/trunk/modules/privilizer/weaver/src/main/resources/META-INF/services/org.apache.commons.weaver.spi.Cleaner commons/sandbox/weaver/trunk/pom.xml commons/sandbox/weaver/trunk/processor/src/main/java/org/apache/commons/weaver/Finder.java commons/sandbox/weaver/trunk/processor/src/main/java/org/apache/commons/weaver/model/Weavable.java Propchange: commons/sandbox/weaver/trunk/ ------------------------------------------------------------------------------ Merged /commons/sandbox/weaver/branches/priv-asm:r1476710-1508502 Modified: commons/sandbox/weaver/trunk/example/pom.xml URL: http://svn.apache.org/viewvc/commons/sandbox/weaver/trunk/example/pom.xml?rev=1508503&r1=1508502&r2=1508503&view=diff ============================================================================== --- commons/sandbox/weaver/trunk/example/pom.xml (original) +++ commons/sandbox/weaver/trunk/example/pom.xml Tue Jul 30 15:57:10 2013 @@ -28,6 +28,7 @@ <properties> <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding> <privilizer.policy>ON_INIT</privilizer.policy> + <privilizer.verify>true</privilizer.verify> </properties> <dependencies> <dependency> @@ -56,6 +57,7 @@ <weaverConfig> <privilizer.accessLevel>PACKAGE</privilizer.accessLevel> <privilizer.policy>${privilizer.policy}</privilizer.policy> + <privilizer.verify>${privilizer.verify}</privilizer.verify> </weaverConfig> </configuration> <executions> @@ -76,6 +78,25 @@ <groupId>org.apache.commons</groupId> <artifactId>commons-weaver-privilizer</artifactId> <version>${project.version}</version> + <exclusions> + <exclusion> + <groupId>org.ow2.asm</groupId> + <artifactId>asm</artifactId> + </exclusion> + <exclusion> + <groupId>org.ow2.asm</groupId> + <artifactId>asm-commons</artifactId> + </exclusion> + <exclusion> + <groupId>org.ow2.asm</groupId> + <artifactId>asm-tree</artifactId> + </exclusion> + </exclusions> + </dependency> + <dependency> + <groupId>org.ow2.asm</groupId> + <artifactId>asm-debug-all</artifactId> + <version>${asm.version}</version> </dependency> </dependencies> </plugin> Modified: commons/sandbox/weaver/trunk/example/src/main/java/org/apache/commons/weaver/privilizer/example/UsingBlueprints.java URL: http://svn.apache.org/viewvc/commons/sandbox/weaver/trunk/example/src/main/java/org/apache/commons/weaver/privilizer/example/UsingBlueprints.java?rev=1508503&r1=1508502&r2=1508503&view=diff ============================================================================== --- commons/sandbox/weaver/trunk/example/src/main/java/org/apache/commons/weaver/privilizer/example/UsingBlueprints.java (original) +++ commons/sandbox/weaver/trunk/example/src/main/java/org/apache/commons/weaver/privilizer/example/UsingBlueprints.java Tue Jul 30 15:57:10 2013 @@ -25,6 +25,10 @@ public class UsingBlueprints { return Utils.readPublicConstant(); } + public int utilsReadPrivateField() { + return Utils.readPrivateField(); + } + public String utilsGetProperty() { return Utils.getProperty(); } Modified: commons/sandbox/weaver/trunk/example/src/main/java/org/apache/commons/weaver/privilizer/example/Utils.java URL: http://svn.apache.org/viewvc/commons/sandbox/weaver/trunk/example/src/main/java/org/apache/commons/weaver/privilizer/example/Utils.java?rev=1508503&r1=1508502&r2=1508503&view=diff ============================================================================== --- commons/sandbox/weaver/trunk/example/src/main/java/org/apache/commons/weaver/privilizer/example/Utils.java (original) +++ commons/sandbox/weaver/trunk/example/src/main/java/org/apache/commons/weaver/privilizer/example/Utils.java Tue Jul 30 15:57:10 2013 @@ -52,4 +52,13 @@ public class Utils { public static String getProperty(String key) { return System.getProperty(key); } + + private static Integer n; + static { + n = Integer.valueOf(999); + } + + public static int readPrivateField() { + return n; + } } Modified: commons/sandbox/weaver/trunk/example/src/test/java/org/apache/commons/weaver/privilizer/example/NoArgsTest.java URL: http://svn.apache.org/viewvc/commons/sandbox/weaver/trunk/example/src/test/java/org/apache/commons/weaver/privilizer/example/NoArgsTest.java?rev=1508503&r1=1508502&r2=1508503&view=diff ============================================================================== --- commons/sandbox/weaver/trunk/example/src/test/java/org/apache/commons/weaver/privilizer/example/NoArgsTest.java (original) +++ commons/sandbox/weaver/trunk/example/src/test/java/org/apache/commons/weaver/privilizer/example/NoArgsTest.java Tue Jul 30 15:57:10 2013 @@ -25,10 +25,13 @@ import java.security.PrivilegedAction; import org.apache.commons.weaver.privilizer.example.NoArgs.CheckedException1; import org.apache.commons.weaver.privilizer.example.NoArgs.CheckedException2; +import org.junit.Before; +import org.junit.Test; public class NoArgsTest { private NoArgs noArgs; + @Before public void setUp() throws Exception { AccessController.doPrivileged(new PrivilegedAction<Void>() { @@ -41,22 +44,27 @@ public class NoArgsTest { noArgs = new NoArgs(); } + @Test public void testThrowAwayFoo() { noArgs.throwAwayFoo(); } + @Test public void testGetFoo() { assertEquals("foo-value", noArgs.getFoo()); } + @Test public void testGetTrue() { assertSame(Boolean.TRUE, noArgs.getTrue()); } + @Test public void testGetFalse() { assertFalse(noArgs.getFalse()); } + @Test public void testThrowingCheckedException1() { try { noArgs.throwingCheckedException1(); @@ -65,6 +73,7 @@ public class NoArgsTest { } } + @Test public void testThrowingCheckedException2() { try { noArgs.throwingCheckedException2(); Modified: commons/sandbox/weaver/trunk/example/src/test/java/org/apache/commons/weaver/privilizer/example/OverloadingTest.java URL: http://svn.apache.org/viewvc/commons/sandbox/weaver/trunk/example/src/test/java/org/apache/commons/weaver/privilizer/example/OverloadingTest.java?rev=1508503&r1=1508502&r2=1508503&view=diff ============================================================================== --- commons/sandbox/weaver/trunk/example/src/test/java/org/apache/commons/weaver/privilizer/example/OverloadingTest.java (original) +++ commons/sandbox/weaver/trunk/example/src/test/java/org/apache/commons/weaver/privilizer/example/OverloadingTest.java Tue Jul 30 15:57:10 2013 @@ -20,9 +20,13 @@ import static org.junit.Assert.assertEqu import java.security.AccessController; import java.security.PrivilegedAction; +import org.junit.Before; +import org.junit.Test; + public class OverloadingTest { private Overloading overloading; + @Before public void setUp() throws Exception { AccessController.doPrivileged(new PrivilegedAction<Void>() { @Override @@ -36,14 +40,17 @@ public class OverloadingTest { overloading = new Overloading(); } + @Test public void testNoArgs() { assertEquals("foo-value", overloading.get()); } + @Test public void testStringArg() { assertEquals("bar-value", overloading.get("bar")); } + @Test public void testCharishArgs() { assertEquals("baz-value", overloading.get('b', 'a', (short) 'z')); } Modified: commons/sandbox/weaver/trunk/example/src/test/java/org/apache/commons/weaver/privilizer/example/PrivateMethodsTest.java URL: http://svn.apache.org/viewvc/commons/sandbox/weaver/trunk/example/src/test/java/org/apache/commons/weaver/privilizer/example/PrivateMethodsTest.java?rev=1508503&r1=1508502&r2=1508503&view=diff ============================================================================== --- commons/sandbox/weaver/trunk/example/src/test/java/org/apache/commons/weaver/privilizer/example/PrivateMethodsTest.java (original) +++ commons/sandbox/weaver/trunk/example/src/test/java/org/apache/commons/weaver/privilizer/example/PrivateMethodsTest.java Tue Jul 30 15:57:10 2013 @@ -20,9 +20,13 @@ import static org.junit.Assert.assertEqu import java.security.AccessController; import java.security.PrivilegedAction; +import org.junit.Before; +import org.junit.Test; + public class PrivateMethodsTest { private PrivateMethods privateMethods; + @Before public void setUp() throws Exception { AccessController.doPrivileged(new PrivilegedAction<Void>() { @Override @@ -36,6 +40,7 @@ public class PrivateMethodsTest { privateMethods = new PrivateMethods(); } + @Test public void testGet() { assertEquals("foo-value", privateMethods.get("foo")); assertEquals("bar-value", privateMethods.get("bar")); Modified: commons/sandbox/weaver/trunk/example/src/test/java/org/apache/commons/weaver/privilizer/example/StaticNoArgsTest.java URL: http://svn.apache.org/viewvc/commons/sandbox/weaver/trunk/example/src/test/java/org/apache/commons/weaver/privilizer/example/StaticNoArgsTest.java?rev=1508503&r1=1508502&r2=1508503&view=diff ============================================================================== --- commons/sandbox/weaver/trunk/example/src/test/java/org/apache/commons/weaver/privilizer/example/StaticNoArgsTest.java (original) +++ commons/sandbox/weaver/trunk/example/src/test/java/org/apache/commons/weaver/privilizer/example/StaticNoArgsTest.java Tue Jul 30 15:57:10 2013 @@ -25,8 +25,11 @@ import java.security.PrivilegedAction; import org.apache.commons.weaver.privilizer.example.StaticNoArgs.CheckedException1; import org.apache.commons.weaver.privilizer.example.StaticNoArgs.CheckedException2; +import org.junit.Before; +import org.junit.Test; public class StaticNoArgsTest { + @Before public void setUp() throws Exception { AccessController.doPrivileged(new PrivilegedAction<Void>() { @@ -38,22 +41,27 @@ public class StaticNoArgsTest { }); } + @Test public void testThrowAwayFoo() { StaticNoArgs.throwAwayFoo(); } + @Test public void testGetFoo() { assertEquals("foo-value", StaticNoArgs.getFoo()); } + @Test public void testGetTrue() { assertSame(Boolean.TRUE, StaticNoArgs.getTrue()); } + @Test public void testGetFalse() { assertFalse(StaticNoArgs.getFalse()); } + @Test public void testThrowingCheckedException1() { try { StaticNoArgs.throwingCheckedException1(); @@ -62,6 +70,7 @@ public class StaticNoArgsTest { } } + @Test public void testThrowingCheckedException2() { try { StaticNoArgs.throwingCheckedException2(); Modified: commons/sandbox/weaver/trunk/example/src/test/java/org/apache/commons/weaver/privilizer/example/StaticOverloadingTest.java URL: http://svn.apache.org/viewvc/commons/sandbox/weaver/trunk/example/src/test/java/org/apache/commons/weaver/privilizer/example/StaticOverloadingTest.java?rev=1508503&r1=1508502&r2=1508503&view=diff ============================================================================== --- commons/sandbox/weaver/trunk/example/src/test/java/org/apache/commons/weaver/privilizer/example/StaticOverloadingTest.java (original) +++ commons/sandbox/weaver/trunk/example/src/test/java/org/apache/commons/weaver/privilizer/example/StaticOverloadingTest.java Tue Jul 30 15:57:10 2013 @@ -20,8 +20,12 @@ import static org.junit.Assert.assertEqu import java.security.AccessController; import java.security.PrivilegedAction; +import org.junit.Before; +import org.junit.Test; + public class StaticOverloadingTest { + @Before public void setUp() throws Exception { AccessController.doPrivileged(new PrivilegedAction<Void>() { @Override @@ -34,14 +38,17 @@ public class StaticOverloadingTest { }); } + @Test public void testNoArgs() { assertEquals("foo-value", StaticOverloading.get()); } + @Test public void testStringArg() { assertEquals("bar-value", StaticOverloading.get("bar")); } + @Test public void testCharishArgs() { assertEquals("baz-value", StaticOverloading.get('b', 'a', (short) 'z')); } Modified: commons/sandbox/weaver/trunk/example/src/test/java/org/apache/commons/weaver/privilizer/example/StaticPrivateMethodsTest.java URL: http://svn.apache.org/viewvc/commons/sandbox/weaver/trunk/example/src/test/java/org/apache/commons/weaver/privilizer/example/StaticPrivateMethodsTest.java?rev=1508503&r1=1508502&r2=1508503&view=diff ============================================================================== --- commons/sandbox/weaver/trunk/example/src/test/java/org/apache/commons/weaver/privilizer/example/StaticPrivateMethodsTest.java (original) +++ commons/sandbox/weaver/trunk/example/src/test/java/org/apache/commons/weaver/privilizer/example/StaticPrivateMethodsTest.java Tue Jul 30 15:57:10 2013 @@ -20,8 +20,12 @@ import static org.junit.Assert.assertEqu import java.security.AccessController; import java.security.PrivilegedAction; +import org.junit.Before; +import org.junit.Test; + public class StaticPrivateMethodsTest { + @Before public void setUp() throws Exception { AccessController.doPrivileged(new PrivilegedAction<Void>() { @Override @@ -34,6 +38,7 @@ public class StaticPrivateMethodsTest { }); } + @Test public void testGet() { assertEquals("foo-value", StaticPrivateMethods.get("foo")); assertEquals("bar-value", StaticPrivateMethods.get("bar")); Modified: commons/sandbox/weaver/trunk/example/src/test/java/org/apache/commons/weaver/privilizer/example/StaticUsingArgsTest.java URL: http://svn.apache.org/viewvc/commons/sandbox/weaver/trunk/example/src/test/java/org/apache/commons/weaver/privilizer/example/StaticUsingArgsTest.java?rev=1508503&r1=1508502&r2=1508503&view=diff ============================================================================== --- commons/sandbox/weaver/trunk/example/src/test/java/org/apache/commons/weaver/privilizer/example/StaticUsingArgsTest.java (original) +++ commons/sandbox/weaver/trunk/example/src/test/java/org/apache/commons/weaver/privilizer/example/StaticUsingArgsTest.java Tue Jul 30 15:57:10 2013 @@ -25,9 +25,12 @@ import java.util.Arrays; import org.apache.commons.weaver.privilizer.example.StaticUsingArgs.CheckedException1; import org.apache.commons.weaver.privilizer.example.StaticUsingArgs.CheckedException2; +import org.junit.Before; +import org.junit.Test; public class StaticUsingArgsTest { + @Before public void setUp() throws Exception { AccessController.doPrivileged(new PrivilegedAction<Void>() { @Override @@ -40,12 +43,14 @@ public class StaticUsingArgsTest { }); } + @Test public void testGetProperty() { assertEquals("foo-value", StaticUsingArgs.getProperty("foo")); assertEquals("bar-value", StaticUsingArgs.getProperty("bar")); assertEquals("baz-value", StaticUsingArgs.getProperty("baz")); } + @Test public void testGetProperties() { assertTrue(Arrays.equals(new String[] { "foo-value", "bar-value", "baz-value" }, StaticUsingArgs.getProperties("foo", "bar", "baz"))); @@ -53,16 +58,19 @@ public class StaticUsingArgsTest { assertNull(StaticUsingArgs.getProperties((String[]) null)); } + @Test public void testThrowAwayProperty() { StaticUsingArgs.throwAwayProperty('f', "o", 'o'); } + @Test public void testAssembleAndGetProperty() { assertEquals("foo-value", StaticUsingArgs.assembleAndGetProperty('f', new StringBuilder().append('o'), 'o')); assertEquals("bar-value", StaticUsingArgs.assembleAndGetProperty('b', new StringBuilder().append('a'), 'r')); assertEquals("baz-value", StaticUsingArgs.assembleAndGetProperty('b', new StringBuilder().append('a'), 'z')); } + @Test public void testThrowingCheckedException() throws CheckedException1, CheckedException2 { assertEquals(0, StaticUsingArgs.throwingCheckedException(0, "foo")); try { Modified: commons/sandbox/weaver/trunk/example/src/test/java/org/apache/commons/weaver/privilizer/example/UsingArgsTest.java URL: http://svn.apache.org/viewvc/commons/sandbox/weaver/trunk/example/src/test/java/org/apache/commons/weaver/privilizer/example/UsingArgsTest.java?rev=1508503&r1=1508502&r2=1508503&view=diff ============================================================================== --- commons/sandbox/weaver/trunk/example/src/test/java/org/apache/commons/weaver/privilizer/example/UsingArgsTest.java (original) +++ commons/sandbox/weaver/trunk/example/src/test/java/org/apache/commons/weaver/privilizer/example/UsingArgsTest.java Tue Jul 30 15:57:10 2013 @@ -25,10 +25,13 @@ import java.util.Arrays; import org.apache.commons.weaver.privilizer.example.UsingArgs.CheckedException1; import org.apache.commons.weaver.privilizer.example.UsingArgs.CheckedException2; +import org.junit.Before; +import org.junit.Test; public class UsingArgsTest { private UsingArgs usingArgs; + @Before public void setUp() throws Exception { AccessController.doPrivileged(new PrivilegedAction<Void>() { @Override @@ -42,12 +45,14 @@ public class UsingArgsTest { usingArgs = new UsingArgs(); } + @Test public void testGetProperty() { assertEquals("foo-value", usingArgs.getProperty("foo")); assertEquals("bar-value", usingArgs.getProperty("bar")); assertEquals("baz-value", usingArgs.getProperty("baz")); } + @Test public void testGetProperties() { assertTrue(Arrays.equals(new String[] { "foo-value", "bar-value", "baz-value" }, usingArgs.getProperties("foo", "bar", "baz"))); @@ -55,16 +60,19 @@ public class UsingArgsTest { assertNull(usingArgs.getProperties((String[]) null)); } + @Test public void testThrowAwayProperty() { usingArgs.throwAwayProperty('f', "o", 'o'); } + @Test public void testAssembleAndGetProperty() { assertEquals("foo-value", usingArgs.assembleAndGetProperty('f', new StringBuilder().append('o'), 'o')); assertEquals("bar-value", usingArgs.assembleAndGetProperty('b', new StringBuilder().append('a'), 'r')); assertEquals("baz-value", usingArgs.assembleAndGetProperty('b', new StringBuilder().append('a'), 'z')); } + @Test public void testThrowingCheckedException() throws CheckedException1, CheckedException2 { assertEquals(0, usingArgs.throwingCheckedException(0, "foo")); try { Modified: commons/sandbox/weaver/trunk/example/src/test/java/org/apache/commons/weaver/privilizer/example/UsingBlueprintsTest.java URL: http://svn.apache.org/viewvc/commons/sandbox/weaver/trunk/example/src/test/java/org/apache/commons/weaver/privilizer/example/UsingBlueprintsTest.java?rev=1508503&r1=1508502&r2=1508503&view=diff ============================================================================== --- commons/sandbox/weaver/trunk/example/src/test/java/org/apache/commons/weaver/privilizer/example/UsingBlueprintsTest.java (original) +++ commons/sandbox/weaver/trunk/example/src/test/java/org/apache/commons/weaver/privilizer/example/UsingBlueprintsTest.java Tue Jul 30 15:57:10 2013 @@ -47,6 +47,11 @@ public class UsingBlueprintsTest { } @Test + public void testUtilsReadPrivateField() { + assertEquals(999, usingBlueprints.utilsReadPrivateField()); + } + + @Test public void testUtilsGetProperty() { assertEquals("foo-value", usingBlueprints.utilsGetProperty()); } Modified: commons/sandbox/weaver/trunk/modules/privilizer/weaver/pom.xml URL: http://svn.apache.org/viewvc/commons/sandbox/weaver/trunk/modules/privilizer/weaver/pom.xml?rev=1508503&r1=1508502&r2=1508503&view=diff ============================================================================== --- commons/sandbox/weaver/trunk/modules/privilizer/weaver/pom.xml (original) +++ commons/sandbox/weaver/trunk/modules/privilizer/weaver/pom.xml Tue Jul 30 15:57:10 2013 @@ -45,18 +45,17 @@ <artifactId>commons-lang3</artifactId> </dependency> <dependency> - <groupId>org.javassist</groupId> - <artifactId>javassist</artifactId> + <groupId>commons-io</groupId> + <artifactId>commons-io</artifactId> </dependency> <dependency> - <groupId>org.ow2.asm</groupId> - <artifactId>asm</artifactId> + <groupId>org.javassist</groupId> + <artifactId>javassist</artifactId> </dependency> </dependencies> - <build> <plugins> - <plugin> + <!--plugin> <groupId>org.apache.maven.plugins</groupId> <artifactId>maven-invoker-plugin</artifactId> <configuration> @@ -79,7 +78,42 @@ </goals> </execution> </executions> - </plugin> + </plugin--> </plugins> </build> + <profiles> + <profile> + <id>basic</id> + <activation> + <activeByDefault>true</activeByDefault> + </activation> + <dependencies> + <dependency> + <groupId>org.ow2.asm</groupId> + <artifactId>asm</artifactId> + </dependency> + <dependency> + <groupId>org.ow2.asm</groupId> + <artifactId>asm-commons</artifactId> + </dependency> + <dependency> + <groupId>org.ow2.asm</groupId> + <artifactId>asm-tree</artifactId> + </dependency> + <dependency> + <groupId>org.ow2.asm</groupId> + <artifactId>asm-util</artifactId> + </dependency> + </dependencies> + </profile> + <profile> + <id>dev</id> + <dependencies> + <dependency> + <groupId>org.ow2.asm</groupId> + <artifactId>asm-debug-all</artifactId> + </dependency> + </dependencies> + </profile> + </profiles> </project> Propchange: commons/sandbox/weaver/trunk/modules/privilizer/weaver/src/main/java/org/apache/commons/weaver/privilizer/ ------------------------------------------------------------------------------ --- svn:ignore (added) +++ svn:ignore Tue Jul 30 15:57:10 2013 @@ -0,0 +1 @@ +bytecode Modified: commons/sandbox/weaver/trunk/modules/privilizer/weaver/src/main/java/org/apache/commons/weaver/privilizer/AccessLevel.java URL: http://svn.apache.org/viewvc/commons/sandbox/weaver/trunk/modules/privilizer/weaver/src/main/java/org/apache/commons/weaver/privilizer/AccessLevel.java?rev=1508503&r1=1508502&r2=1508503&view=diff ============================================================================== --- commons/sandbox/weaver/trunk/modules/privilizer/weaver/src/main/java/org/apache/commons/weaver/privilizer/AccessLevel.java (original) +++ commons/sandbox/weaver/trunk/modules/privilizer/weaver/src/main/java/org/apache/commons/weaver/privilizer/AccessLevel.java Tue Jul 30 15:57:10 2013 @@ -18,6 +18,10 @@ package org.apache.commons.weaver.privil import java.lang.reflect.Modifier; import java.util.EnumSet; import java.util.Locale; +import java.util.Set; + +import org.apache.commons.lang3.StringUtils; +import org.apache.commons.lang3.Validate; public enum AccessLevel { PUBLIC(Modifier.PUBLIC), PROTECTED(Modifier.PROTECTED), PACKAGE(0), PRIVATE(Modifier.PRIVATE); @@ -29,16 +33,21 @@ public enum AccessLevel { } public static AccessLevel of(int mod) { + final Set<AccessLevel> matched = EnumSet.noneOf(AccessLevel.class); if (Modifier.isPublic(mod)) { - return PUBLIC; + matched.add(PUBLIC); } if (Modifier.isProtected(mod)) { - return PROTECTED; + matched.add(PROTECTED); } if (Modifier.isPrivate(mod)) { - return PRIVATE; + matched.add(PRIVATE); + } + if (matched.isEmpty()) { + return PACKAGE; } - return PACKAGE; + Validate.isTrue(matched.size() == 1, "%s seems to declare multiple access modifiers: %s", mod, matched); + return matched.iterator().next(); } public int merge(int mod) { @@ -62,4 +71,17 @@ public enum AccessLevel { public static AccessLevel defaultValue() { return AccessLevel.PRIVATE; } + + /** + * Parse from a {@link String} returning {@link #defaultValue()} for blank/null input. + * + * @param s + * @return {@link AccessLevel} + */ + public static AccessLevel parse(String s) { + if (StringUtils.isBlank(s)) { + return defaultValue(); + } + return valueOf(s.trim().toUpperCase(Locale.US)); + } } Modified: commons/sandbox/weaver/trunk/modules/privilizer/weaver/src/main/java/org/apache/commons/weaver/privilizer/PrivilizerCleaner.java URL: http://svn.apache.org/viewvc/commons/sandbox/weaver/trunk/modules/privilizer/weaver/src/main/java/org/apache/commons/weaver/privilizer/PrivilizerCleaner.java?rev=1508503&r1=1508502&r2=1508503&view=diff ============================================================================== --- commons/sandbox/weaver/trunk/modules/privilizer/weaver/src/main/java/org/apache/commons/weaver/privilizer/PrivilizerCleaner.java (original) +++ commons/sandbox/weaver/trunk/modules/privilizer/weaver/src/main/java/org/apache/commons/weaver/privilizer/PrivilizerCleaner.java Tue Jul 30 15:57:10 2013 @@ -17,23 +17,18 @@ package org.apache.commons.weaver.privil import java.io.File; import java.lang.annotation.ElementType; -import java.net.URLClassLoader; import java.util.ArrayList; import java.util.List; import java.util.logging.Level; import java.util.logging.Logger; -import org.apache.commons.lang3.StringUtils; import org.apache.commons.weaver.model.ScanRequest; import org.apache.commons.weaver.model.Scanner; import org.apache.commons.weaver.model.WeavableClass; import org.apache.commons.weaver.model.WeaveEnvironment; import org.apache.commons.weaver.model.WeaveInterest; -import org.apache.commons.weaver.privilizer.Privilizer.Policy; -import org.apache.commons.weaver.privilizer.Privilizer.Privilized; +import org.apache.commons.weaver.privilizer.Privilizer; import org.apache.commons.weaver.spi.Cleaner; -import org.apache.commons.weaver.utils.URLArray; -import org.apache.xbean.finder.archive.FileArchive; import org.objectweb.asm.ClassReader; import org.objectweb.asm.ClassVisitor; import org.objectweb.asm.Opcodes; @@ -41,30 +36,22 @@ import org.objectweb.asm.Opcodes; /** * Removes classes privilized with a different policy. */ -/* - * Implemented with ASM in anticipation of the rest of the privilizer being rewritten :P - */ public class PrivilizerCleaner implements Cleaner { private static final int ASM_FLAGS = ClassReader.SKIP_CODE + ClassReader.SKIP_DEBUG + ClassReader.SKIP_FRAMES; private static final Logger LOG = Logger.getLogger(PrivilizerCleaner.class.getName()); @Override public boolean clean(WeaveEnvironment environment, Scanner scanner) { - final ClassLoader classLoader = new URLClassLoader(URLArray.fromPaths(environment.classpath)); - final FileArchive fileArchive = new FileArchive(classLoader, environment.target); + final Privilizer privilizer = new Privilizer(environment); - final String policyConfig = environment.config.getProperty(PrivilizerWeaver.CONFIG_POLICY); - final Privilizer.Policy policy = - StringUtils.isEmpty(policyConfig) ? Privilizer.Policy.defaultValue() : Privilizer.Policy - .valueOf(policyConfig); final List<String> toDelete = new ArrayList<String>(); final ScanRequest scanRequest = new ScanRequest().add(WeaveInterest.of(Privilized.class, ElementType.TYPE)); - LOG.log(Level.FINE, "Cleaning classes privilized with policy other than {0}", policy); + LOG.log(Level.FINE, "Cleaning classes privilized with policy other than {0}", privilizer.policy); for (WeavableClass<?> weavableClass : scanner.scan(scanRequest).getClasses().with(Privilized.class)) { final Policy privilizedPolicy = weavableClass.getAnnotation(Privilized.class).value(); - if (privilizedPolicy == policy) { + if (privilizedPolicy == privilizer.policy) { continue; } final String className = weavableClass.getTarget().getName(); @@ -72,7 +59,7 @@ public class PrivilizerCleaner implement new Object[] { className, privilizedPolicy }); try { - final ClassReader classReader = new ClassReader(fileArchive.getBytecode(className)); + final ClassReader classReader = new ClassReader(privilizer.fileArchive.getBytecode(className)); classReader.accept(new ClassVisitor(Opcodes.ASM4) { @Override public void visit(int version, int access, String name, String signature, String superName, Modified: commons/sandbox/weaver/trunk/modules/privilizer/weaver/src/main/resources/META-INF/services/org.apache.commons.weaver.spi.Cleaner URL: http://svn.apache.org/viewvc/commons/sandbox/weaver/trunk/modules/privilizer/weaver/src/main/resources/META-INF/services/org.apache.commons.weaver.spi.Cleaner?rev=1508503&r1=1508502&r2=1508503&view=diff ============================================================================== --- commons/sandbox/weaver/trunk/modules/privilizer/weaver/src/main/resources/META-INF/services/org.apache.commons.weaver.spi.Cleaner (original) +++ commons/sandbox/weaver/trunk/modules/privilizer/weaver/src/main/resources/META-INF/services/org.apache.commons.weaver.spi.Cleaner Tue Jul 30 15:57:10 2013 @@ -15,5 +15,5 @@ # specific language governing permissions and limitations # under the License. -# this class gets picked up by the WeaveProcessor +# this class gets picked up by the CleanProcessor org.apache.commons.weaver.privilizer.PrivilizerCleaner Modified: commons/sandbox/weaver/trunk/pom.xml URL: http://svn.apache.org/viewvc/commons/sandbox/weaver/trunk/pom.xml?rev=1508503&r1=1508502&r2=1508503&view=diff ============================================================================== --- commons/sandbox/weaver/trunk/pom.xml (original) +++ commons/sandbox/weaver/trunk/pom.xml Tue Jul 30 15:57:10 2013 @@ -45,6 +45,7 @@ <commons.rc.version>RC1</commons.rc.version> <!--commons.jira.id>WEAVER</commons.jira.id> <commons.jira.pid>666</commons.jira.pid--> + <asm.version>4.1</asm.version> </properties> <developers> @@ -94,6 +95,11 @@ <version>3.1</version> </dependency> <dependency> + <groupId>commons-io</groupId> + <artifactId>commons-io</artifactId> + <version>2.4</version> + </dependency> + <dependency> <groupId>org.javassist</groupId> <artifactId>javassist</artifactId> <version>3.17.1-GA</version> @@ -101,7 +107,27 @@ <dependency> <groupId>org.ow2.asm</groupId> <artifactId>asm</artifactId> - <version>4.1</version> + <version>${asm.version}</version> + </dependency> + <dependency> + <groupId>org.ow2.asm</groupId> + <artifactId>asm-commons</artifactId> + <version>${asm.version}</version> + </dependency> + <dependency> + <groupId>org.ow2.asm</groupId> + <artifactId>asm-tree</artifactId> + <version>${asm.version}</version> + </dependency> + <dependency> + <groupId>org.ow2.asm</groupId> + <artifactId>asm-util</artifactId> + <version>${asm.version}</version> + </dependency> + <dependency> + <groupId>org.ow2.asm</groupId> + <artifactId>asm-debug-all</artifactId> + <version>${asm.version}</version> </dependency> <dependency> <groupId>junit</groupId> Modified: commons/sandbox/weaver/trunk/processor/src/main/java/org/apache/commons/weaver/Finder.java URL: http://svn.apache.org/viewvc/commons/sandbox/weaver/trunk/processor/src/main/java/org/apache/commons/weaver/Finder.java?rev=1508503&r1=1508502&r2=1508503&view=diff ============================================================================== --- commons/sandbox/weaver/trunk/processor/src/main/java/org/apache/commons/weaver/Finder.java (original) +++ commons/sandbox/weaver/trunk/processor/src/main/java/org/apache/commons/weaver/Finder.java Tue Jul 30 15:57:10 2013 @@ -336,8 +336,7 @@ class Finder extends AnnotationFinder im final ClassInfo classInfo = classInfos.get(((Class<?>) object).getName()); final IncludesClassfile<Class<?>> annotated; try { - annotated = - new IncludesClassfile<Class<?>>(classInfo.get(), classfileAnnotationsFor(classInfo)); + annotated = new IncludesClassfile<Class<?>>(classInfo.get(), classfileAnnotationsFor(classInfo)); } catch (ClassNotFoundException e) { continue; } @@ -501,8 +500,9 @@ class Finder extends AnnotationFinder im } }; - private final Map<Info, List<Annotation>> classfileAnnotations; private final WithAnnotations withAnnotations = new WithAnnotations(); + private final Map<Info, List<Annotation>> classfileAnnotations; + private final Inflater inflater; /** * Create a new {@link Finder} instance. @@ -513,6 +513,7 @@ class Finder extends AnnotationFinder im super(archive, false); classfileAnnotations = CLASSFILE_ANNOTATIONS.get(); CLASSFILE_ANNOTATIONS.remove(); + inflater = new Inflater(classfileAnnotations); enableFindImplementations(); enableFindSubclasses(); } @@ -602,7 +603,7 @@ class Finder extends AnnotationFinder im } } } - return result; + return inflater.inflate(result); } private Class<?> toClass(Type type) { Modified: commons/sandbox/weaver/trunk/processor/src/main/java/org/apache/commons/weaver/model/Weavable.java URL: http://svn.apache.org/viewvc/commons/sandbox/weaver/trunk/processor/src/main/java/org/apache/commons/weaver/model/Weavable.java?rev=1508503&r1=1508502&r2=1508503&view=diff ============================================================================== --- commons/sandbox/weaver/trunk/processor/src/main/java/org/apache/commons/weaver/model/Weavable.java (original) +++ commons/sandbox/weaver/trunk/processor/src/main/java/org/apache/commons/weaver/model/Weavable.java Tue Jul 30 15:57:10 2013 @@ -20,10 +20,12 @@ package org.apache.commons.weaver.model; import java.lang.annotation.Annotation; import java.lang.reflect.AnnotatedElement; -import java.util.Collections; +import java.util.Arrays; import java.util.LinkedHashSet; import java.util.Set; +import org.apache.commons.lang3.Validate; + public abstract class Weavable<SELF extends Weavable<SELF, TARGET>, TARGET> implements Comparable<SELF>, AnnotatedElement { private static final Annotation[] EMPTY_ANNOTATION_ARRAY = new Annotation[0]; @@ -33,15 +35,30 @@ public abstract class Weavable<SELF exte protected Weavable(TARGET target) { this.target = target; + if (target instanceof AnnotatedElement) { + addAnnotations(((AnnotatedElement) target).getAnnotations()); + } } public boolean addAnnotations(Annotation... toAdd) { + Validate.noNullElements(toAdd); + return addAnnotations(Arrays.asList(toAdd)); + } + + public boolean addAnnotations(Iterable<Annotation> toAdd) { + if (toAdd == null) { + return false; + } synchronized (this) { if (annotations == null) { annotations = new LinkedHashSet<Annotation>(); } } - return Collections.addAll(annotations, toAdd); + boolean result = false; + for (Annotation a : toAdd) { + result = a != null && annotations.add(a) || result; + } + return result; } public TARGET getTarget() {