Skip to content

Commit

Permalink
ROASTER-82: Added support for var-args parameters
Browse files Browse the repository at this point in the history
  • Loading branch information
gastaldi committed Sep 28, 2015
1 parent b14901b commit 84697c0
Show file tree
Hide file tree
Showing 5 changed files with 41 additions and 4 deletions.
11 changes: 11 additions & 0 deletions api/src/main/java/org/jboss/forge/roaster/model/Parameter.java
Original file line number Diff line number Diff line change
Expand Up @@ -14,7 +14,18 @@
*/
public interface Parameter<O extends JavaType<O>> extends AnnotationTarget<O>, FinalCapable
{
/**
* @return the name of this parameter
*/
String getName();

/**
* @return the type of this parameter
*/
Type<O> getType();

/**
* @return if this parameter is declared as varargs (...)
*/
boolean isVarArgs();
}
Original file line number Diff line number Diff line change
Expand Up @@ -18,4 +18,8 @@
public interface ParameterSource<O extends JavaSource<O>> extends Parameter<O>,
AnnotationTargetSource<O, ParameterSource<O>>, FinalCapableSource<ParameterSource<O>>
{
/**
* @param variableArity if the parameter should be a var-args parameter
*/
ParameterSource<O> setVarArgs(boolean variableArity);
}
Original file line number Diff line number Diff line change
Expand Up @@ -561,10 +561,6 @@ public MethodSource<O> setVisibility(final Visibility scope)
return Visibility.set(this, scope);
}

/*
* Interfaces
*/

@Override
public String toString()
{
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -134,6 +134,19 @@ public ParameterSource<O> setFinal(boolean finl)
return this;
}

@Override
public ParameterSource<O> setVarArgs(boolean variableArity)
{
param.setVarargs(variableArity);
return this;
}

@Override
public boolean isVarArgs()
{
return param.isVarargs();
}

@Override
public Object getInternal()
{
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -48,4 +48,17 @@ public void testParameterAsFinal() throws Exception
Assert.assertThat(parameter.isFinal(), is(false));
}

@Test
public void testParameterShouldBeVarargs() throws Exception
{
JavaClassSource clazz = Roaster.create(JavaClassSource.class).setName("TestClass");
ParameterSource<JavaClassSource> parameter = clazz.addMethod().setReturnTypeVoid().setName("myMethod")
.addParameter(String.class, "parameter").setVarArgs(true);
Assert.assertThat(parameter.isVarArgs(), is(true));
parameter.setVarArgs(false);
Assert.assertThat(parameter.isVarArgs(), is(false));
parameter.setVarArgs(true);
Assert.assertThat(parameter.isVarArgs(), is(true));
}

}

0 comments on commit 84697c0

Please sign in to comment.