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/07/30 17:57:10 UTC
svn commit: r1508503 - in /commons/sandbox/weaver/trunk: ./ example/
example/src/main/java/org/apache/commons/weaver/privilizer/example/
example/src/test/java/org/apache/commons/weaver/privilizer/example/
modules/privilizer/weaver/ modules/privilizer/w...
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() {