diff --git a/api/src/main/java/org/jboss/forge/parser/java/JavaSource.java b/api/src/main/java/org/jboss/forge/parser/java/JavaSource.java index 43fdd1e3..40c75278 100644 --- a/api/src/main/java/org/jboss/forge/parser/java/JavaSource.java +++ b/api/src/main/java/org/jboss/forge/parser/java/JavaSource.java @@ -88,4 +88,9 @@ public interface JavaSource> extends * Return the {@link SourceType} of this {@link JavaSource} instance. */ public SourceType getSourceType(); + + /** + * Return true if this {@link JavaSource} can be edited. + */ + public boolean isEditable(); } \ No newline at end of file diff --git a/impl/src/main/java/org/jboss/forge/parser/java/impl/AbstractJavaSource.java b/impl/src/main/java/org/jboss/forge/parser/java/impl/AbstractJavaSource.java index 8942be0c..aa953d1d 100644 --- a/impl/src/main/java/org/jboss/forge/parser/java/impl/AbstractJavaSource.java +++ b/impl/src/main/java/org/jboss/forge/parser/java/impl/AbstractJavaSource.java @@ -878,6 +878,12 @@ public List> getNestedClasses() return result; } + @Override + public boolean isEditable() + { + return true; + } + private List getNestedDeclarations(BodyDeclaration body) { diff --git a/impl/src/main/java/org/jboss/forge/parser/java/impl/JavaPackageInfoImpl.java b/impl/src/main/java/org/jboss/forge/parser/java/impl/JavaPackageInfoImpl.java index 448ad58f..85471d90 100644 --- a/impl/src/main/java/org/jboss/forge/parser/java/impl/JavaPackageInfoImpl.java +++ b/impl/src/main/java/org/jboss/forge/parser/java/impl/JavaPackageInfoImpl.java @@ -739,6 +739,12 @@ public List> getNestedClasses() return result; } + @Override + public boolean isEditable() + { + return true; + } + private List getNestedDeclarations(ASTNode body) { diff --git a/impl/src/test/java/org/jboss/forge/test/parser/java/FieldTest.java b/impl/src/test/java/org/jboss/forge/test/parser/java/FieldTest.java index cc9823fe..78d9fc80 100644 --- a/impl/src/test/java/org/jboss/forge/test/parser/java/FieldTest.java +++ b/impl/src/test/java/org/jboss/forge/test/parser/java/FieldTest.java @@ -34,6 +34,7 @@ public void reset() stream = FieldTest.class.getResourceAsStream("/org/jboss/forge/grammar/java/MockAnnotatedField.java"); javaClass = JavaParser.parse(JavaClass.class, stream); field = javaClass.getFields().get(javaClass.getFields().size() - 1); + assertTrue(field.getOrigin().isEditable()); } @Test diff --git a/impl/src/test/java/org/jboss/forge/test/parser/java/JavaAnnotationTest.java b/impl/src/test/java/org/jboss/forge/test/parser/java/JavaAnnotationTest.java index 821ba0e9..4522c163 100755 --- a/impl/src/test/java/org/jboss/forge/test/parser/java/JavaAnnotationTest.java +++ b/impl/src/test/java/org/jboss/forge/test/parser/java/JavaAnnotationTest.java @@ -41,6 +41,7 @@ public void setup() JavaAnnotationTest.class .getResourceAsStream("/org/jboss/forge/grammar/java/MockJavaAnnotationType.java"); javaAnnotation = JavaParser.parse(JavaAnnotation.class, stream); + assertTrue(javaAnnotation.isEditable()); } @Test diff --git a/impl/src/test/java/org/jboss/forge/test/parser/java/JavaClassCreationTest.java b/impl/src/test/java/org/jboss/forge/test/parser/java/JavaClassCreationTest.java index 6f68b8b7..63ccdd5c 100644 --- a/impl/src/test/java/org/jboss/forge/test/parser/java/JavaClassCreationTest.java +++ b/impl/src/test/java/org/jboss/forge/test/parser/java/JavaClassCreationTest.java @@ -32,6 +32,7 @@ public void testClassCreatesStub() throws Exception { assertEquals("JavaClass", jc.getName()); assertTrue(jc.isPublic()); + assertTrue(jc.isEditable()); } } diff --git a/impl/src/test/java/org/jboss/forge/test/parser/java/JavaClassMethodTest.java b/impl/src/test/java/org/jboss/forge/test/parser/java/JavaClassMethodTest.java index 7c00c39f..fd5b8ba9 100644 --- a/impl/src/test/java/org/jboss/forge/test/parser/java/JavaClassMethodTest.java +++ b/impl/src/test/java/org/jboss/forge/test/parser/java/JavaClassMethodTest.java @@ -37,6 +37,7 @@ public void reset() javaClass = JavaParser.parse(JavaClass.class, stream); javaClass.addMethod("public URL rewriteURL(String pattern, String replacement) { return null; }"); method = javaClass.getMethods().get(javaClass.getMethods().size() - 1); + assertTrue(method.getOrigin().isEditable()); } @Test diff --git a/impl/src/test/java/org/jboss/forge/test/parser/java/JavaEnumFieldTest.java b/impl/src/test/java/org/jboss/forge/test/parser/java/JavaEnumFieldTest.java index d1877727..a516183a 100755 --- a/impl/src/test/java/org/jboss/forge/test/parser/java/JavaEnumFieldTest.java +++ b/impl/src/test/java/org/jboss/forge/test/parser/java/JavaEnumFieldTest.java @@ -34,6 +34,7 @@ public void reset() stream = JavaEnumFieldTest.class.getResourceAsStream("/org/jboss/forge/grammar/java/MockEnum.java"); javaEnum = JavaParser.parse(JavaEnum.class, stream); field = javaEnum.getFields().get(javaEnum.getFields().size() - 1); + assertTrue(field.getOrigin().isEditable()); } @Test diff --git a/impl/src/test/java/org/jboss/forge/test/parser/java/JavaEnumMethodTest.java b/impl/src/test/java/org/jboss/forge/test/parser/java/JavaEnumMethodTest.java index 6f9cb885..024de351 100755 --- a/impl/src/test/java/org/jboss/forge/test/parser/java/JavaEnumMethodTest.java +++ b/impl/src/test/java/org/jboss/forge/test/parser/java/JavaEnumMethodTest.java @@ -38,6 +38,7 @@ public void reset() javaEnum = JavaParser.parse(JavaEnum.class, stream); javaEnum.addMethod("public URL rewriteURL(String pattern, String replacement) { return null; }"); method = javaEnum.getMethods().get(javaEnum.getMethods().size() - 1); + assertTrue(method.getOrigin().isEditable()); } @Test diff --git a/impl/src/test/java/org/jboss/forge/test/parser/java/JavaInterfaceTest.java b/impl/src/test/java/org/jboss/forge/test/parser/java/JavaInterfaceTest.java index d90ee0eb..6c43dd30 100644 --- a/impl/src/test/java/org/jboss/forge/test/parser/java/JavaInterfaceTest.java +++ b/impl/src/test/java/org/jboss/forge/test/parser/java/JavaInterfaceTest.java @@ -58,6 +58,7 @@ public void testImportJavaSource() throws Exception assertFalse(foo.hasImport(bar)); assertFalse(bar.hasImport(foo)); + assertTrue(foo.isEditable()); Import importBar = foo.addImport(bar); assertTrue(foo.hasImport(bar)); assertFalse(bar.hasImport(foo)); @@ -74,6 +75,7 @@ public void testImportJavaSource() throws Exception public void testImportImport() throws Exception { JavaInterface foo = JavaParser.parse(JavaInterface.class, "public interface Foo{}"); + assertTrue(foo.isEditable()); Import i = foo.addImport(getClass()); foo.removeImport(getClass()); diff --git a/impl/src/test/java/org/jboss/forge/test/parser/java/NestedClassTest.java b/impl/src/test/java/org/jboss/forge/test/parser/java/NestedClassTest.java index 8235bc4a..ade32770 100644 --- a/impl/src/test/java/org/jboss/forge/test/parser/java/NestedClassTest.java +++ b/impl/src/test/java/org/jboss/forge/test/parser/java/NestedClassTest.java @@ -64,6 +64,7 @@ public void testModifyNestedClassModifiesParentSource() List> nestedClasses = javaClass.getNestedClasses(); JavaSource inner1 = nestedClasses.get(0); + Assert.assertTrue(inner1.isEditable()); inner1.addAnnotation(Deprecated.class); Assert.assertTrue(javaClass.toString().contains("@Deprecated")); diff --git a/impl/src/test/java/org/jboss/forge/test/parser/java/common/AnnotationTest.java b/impl/src/test/java/org/jboss/forge/test/parser/java/common/AnnotationTest.java index b9995b6a..9770c37c 100644 --- a/impl/src/test/java/org/jboss/forge/test/parser/java/common/AnnotationTest.java +++ b/impl/src/test/java/org/jboss/forge/test/parser/java/common/AnnotationTest.java @@ -44,6 +44,7 @@ protected void setTarget(final AnnotationTarget target) public void reset() { resetTests(); + assertTrue(target.getOrigin().isEditable()); } public abstract void resetTests(); diff --git a/impl/src/test/java/org/jboss/forge/test/parser/java/common/InterfacedTestBase.java b/impl/src/test/java/org/jboss/forge/test/parser/java/common/InterfacedTestBase.java index 776c3d41..e4ed751f 100644 --- a/impl/src/test/java/org/jboss/forge/test/parser/java/common/InterfacedTestBase.java +++ b/impl/src/test/java/org/jboss/forge/test/parser/java/common/InterfacedTestBase.java @@ -33,6 +33,7 @@ public abstract class InterfacedTestBase & InterfaceCapa public void reset() { this.source = getSource(); + assertTrue(this.source.isEditable()); } protected abstract T getSource(); diff --git a/impl/src/test/java/org/jboss/forge/test/parser/java/common/JavaClassTestBase.java b/impl/src/test/java/org/jboss/forge/test/parser/java/common/JavaClassTestBase.java index b1044b27..8009a539 100644 --- a/impl/src/test/java/org/jboss/forge/test/parser/java/common/JavaClassTestBase.java +++ b/impl/src/test/java/org/jboss/forge/test/parser/java/common/JavaClassTestBase.java @@ -34,6 +34,7 @@ public abstract class JavaClassTestBase public void reset() { this.source = getSource(); + assertTrue(this.source.isEditable()); } protected abstract JavaClass getSource(); @@ -283,7 +284,7 @@ public void testAddConstructor() throws Exception } @Test - public void testAddConstructorIngoresReturnTypeAndName() throws Exception + public void testAddConstructorIgnoresReturnTypeAndName() throws Exception { int size = source.getMethods().size(); Method method = source.addMethod().setName("testMethod").setConstructor(true).setPrivate() diff --git a/impl/src/test/java/org/jboss/forge/test/parser/java/common/VisibilityTest.java b/impl/src/test/java/org/jboss/forge/test/parser/java/common/VisibilityTest.java index d567d368..d2c213d4 100644 --- a/impl/src/test/java/org/jboss/forge/test/parser/java/common/VisibilityTest.java +++ b/impl/src/test/java/org/jboss/forge/test/parser/java/common/VisibilityTest.java @@ -9,6 +9,7 @@ import static org.junit.Assert.assertFalse; import static org.junit.Assert.assertTrue; +import org.jboss.forge.parser.java.JavaSource; import org.jboss.forge.parser.java.VisibilityScoped; import org.junit.Before; import org.junit.Test; @@ -29,6 +30,9 @@ public void setTarget(VisibilityScoped target) public void reset() throws Exception { resetTests(); + if (this.target instanceof JavaSource) { + assertTrue(((JavaSource) this.target).isEditable()); + } } public abstract void resetTests() throws Exception; diff --git a/impl/src/test/java/org/jboss/forge/test/parser/java/util/RefactoryTest.java b/impl/src/test/java/org/jboss/forge/test/parser/java/util/RefactoryTest.java index 5083bbba..6ad784f6 100644 --- a/impl/src/test/java/org/jboss/forge/test/parser/java/util/RefactoryTest.java +++ b/impl/src/test/java/org/jboss/forge/test/parser/java/util/RefactoryTest.java @@ -37,6 +37,7 @@ public void before() javaClass = JavaParser .parse(JavaClass.class, "import java.util.Set; public class Foo { private int foo; private String firstName; private Set names; private final int bar; }"); + assertTrue(javaClass.isEditable()); } @Test