From 665b5c9c5a73262a794d5b80f515e222601cd7e1 Mon Sep 17 00:00:00 2001 From: Salem Elrahal Date: Thu, 9 Jan 2014 22:27:18 -0500 Subject: [PATCH] Implemented FORGE-1254 and Unit Test --- .../parser/java/ast/ModifierAccessor.java | 4 ++- .../test/parser/java/MethodModifierTest.java | 27 +++++++++++++++++++ 2 files changed, 30 insertions(+), 1 deletion(-) create mode 100644 impl/src/test/java/org/jboss/forge/test/parser/java/MethodModifierTest.java diff --git a/impl/src/main/java/org/jboss/forge/parser/java/ast/ModifierAccessor.java b/impl/src/main/java/org/jboss/forge/parser/java/ast/ModifierAccessor.java index 9089e1f1..c086d9b3 100644 --- a/impl/src/main/java/org/jboss/forge/parser/java/ast/ModifierAccessor.java +++ b/impl/src/main/java/org/jboss/forge/parser/java/ast/ModifierAccessor.java @@ -65,7 +65,9 @@ public List clearVisibility(ASTNode body) public void addModifier(ASTNode body, ModifierKeyword keyword) { - getInternalModifiers(body).add(body.getAST().newModifier(keyword)); + if (!hasModifier(body, keyword)) { + getInternalModifiers(body).add(body.getAST().newModifier(keyword)); + } } public void removeModifier(ASTNode body, ModifierKeyword keyword) diff --git a/impl/src/test/java/org/jboss/forge/test/parser/java/MethodModifierTest.java b/impl/src/test/java/org/jboss/forge/test/parser/java/MethodModifierTest.java new file mode 100644 index 00000000..aa35e463 --- /dev/null +++ b/impl/src/test/java/org/jboss/forge/test/parser/java/MethodModifierTest.java @@ -0,0 +1,27 @@ +package org.jboss.forge.test.parser.java; + +import static org.junit.Assert.assertEquals; + +import java.io.InputStream; + +import org.jboss.forge.parser.JavaParser; +import org.jboss.forge.parser.java.impl.MethodImpl; +import org.jboss.forge.parser.java.source.JavaClassSource; +import org.jboss.forge.parser.java.source.MethodSource; +import org.junit.Assert; +import org.junit.Test; + +/** + * @author Salem Elrahal + */ +public class MethodModifierTest { + + @Test + public void testDuplicateMethodModifier() throws Exception + { + MethodSource method = JavaParser.create(JavaClassSource.class).addMethod("public static void test()"); + ((MethodImpl)method).setStatic(true); + Assert.assertFalse(method.toString().contains("static static")); + Assert.assertTrue(method.toString().contains("static")); + } +}