Skip to content

Commit 1bfdf1a

Browse files
committed
ROASTER-34: Created removeParameter methods by type and name
1 parent 2714f84 commit 1bfdf1a

3 files changed

Lines changed: 99 additions & 1 deletion

File tree

api/src/main/java/org/jboss/forge/roaster/model/source/MethodSource.java

Lines changed: 17 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -104,4 +104,21 @@ public interface MethodSource<O extends JavaSource<O>> extends Method<O, MethodS
104104
* Remove a parameter from this method
105105
*/
106106
MethodSource<O> removeParameter(ParameterSource<O> parameter);
107+
108+
/**
109+
* Remove a parameter with the specified {@link Class} type and name from this method
110+
*/
111+
MethodSource<O> removeParameter(Class<?> type, String name);
112+
113+
/**
114+
* Remove a parameter with the specified type and name from this method
115+
*/
116+
MethodSource<O> removeParameter(String type, String name);
117+
118+
/**
119+
* Remove a parameter with the specified {@link JavaType} type and name to this method
120+
*/
121+
MethodSource<O> removeParameter(JavaType<?> type, String name);
122+
123+
107124
}

impl/src/main/java/org/jboss/forge/roaster/model/impl/MethodImpl.java

Lines changed: 60 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -672,7 +672,8 @@ public ParameterSource<O> addParameter(String type, String name)
672672
{
673673
getOrigin().addImport(type);
674674
}
675-
String stub = "public class Stub { public void method( " + Types.toSimpleName(Types.stripGenerics(type)) + " " + name + " ) {} }";
675+
String stub = "public class Stub { public void method( " + Types.toSimpleName(Types.stripGenerics(type)) + " "
676+
+ name + " ) {} }";
676677
JavaClassSource temp = (JavaClassSource) Roaster.parse(stub);
677678
List<MethodSource<JavaClassSource>> methods = temp.getMethods();
678679
List<VariableDeclaration> astParameters = ((MethodDeclaration) methods.get(0).getInternal()).parameters();
@@ -693,4 +694,62 @@ public MethodSource<O> removeParameter(ParameterSource<O> parameter)
693694
method.parameters().remove(parameter.getInternal());
694695
return this;
695696
}
697+
698+
@Override
699+
public MethodSource<O> removeParameter(Class<?> type, String name)
700+
{
701+
ParameterSource<O> parameter = null;
702+
for (ParameterSource<O> param : getParameters())
703+
{
704+
if (param.getType().isType(type) && param.getName().equals(name))
705+
{
706+
parameter = param;
707+
break;
708+
}
709+
}
710+
if (parameter != null)
711+
{
712+
removeParameter(parameter);
713+
}
714+
return this;
715+
}
716+
717+
@Override
718+
public MethodSource<O> removeParameter(JavaType<?> type, String name)
719+
{
720+
ParameterSource<O> parameter = null;
721+
for (ParameterSource<O> param : getParameters())
722+
{
723+
if (param.getType().isType(type.getCanonicalName()) && param.getName().equals(name))
724+
{
725+
parameter = param;
726+
break;
727+
}
728+
}
729+
if (parameter != null)
730+
{
731+
removeParameter(parameter);
732+
}
733+
return this;
734+
}
735+
736+
@Override
737+
public MethodSource<O> removeParameter(String type, String name)
738+
{
739+
ParameterSource<O> parameter = null;
740+
for (ParameterSource<O> param : getParameters())
741+
{
742+
if (param.getType().isType(type) && param.getName().equals(name))
743+
{
744+
parameter = param;
745+
break;
746+
}
747+
}
748+
if (parameter != null)
749+
{
750+
removeParameter(parameter);
751+
}
752+
return this;
753+
}
754+
696755
}

impl/src/test/java/org/jboss/forge/test/roaster/model/JavaClassMethodTest.java

Lines changed: 22 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -161,4 +161,26 @@ public void testRemoveParameter() throws Exception
161161
assertEquals(1, method.getParameters().size());
162162
}
163163

164+
@Test
165+
public void testRemoveParameterByClassType() throws Exception
166+
{
167+
method.removeParameter(String.class, "pattern");
168+
assertEquals(1, method.getParameters().size());
169+
}
170+
171+
@Test
172+
public void testRemoveParameterByStringType() throws Exception
173+
{
174+
method.removeParameter("String", "pattern");
175+
assertEquals(1, method.getParameters().size());
176+
}
177+
178+
@Test
179+
public void testRemoveParameterByJavaType() throws Exception
180+
{
181+
JavaClassSource type = Roaster.create(JavaClassSource.class).setName("String").setPackage("java.lang");
182+
method.removeParameter(type, "pattern");
183+
assertEquals(1, method.getParameters().size());
184+
}
185+
164186
}

0 commit comments

Comments
 (0)