I have an java interface
public interface IPerson {
Person addPerson(String name );
Person addPerson(String name1,String name2);
Person addPerson(String name,String[] details);
Person addPerson(String name,String name1,String[] details);
Person addPerson(String name,List<String> details);
}
With PersonImpl .java being:
class PersonImpl implemets Iperson {
..
// and interface methods implemtation
}
and my person.java looks like
class Person {
def firstName;
def lastName;
}
And my PersonTest.groovy looks like
def PersonImpl person = new PersonImpl();
person.addPerson("anish")
person.addPerson("anish","nath")
person.addPerson("john","smith")
person.addPerson("tim","yates")
def list=[];
list.add("abc")
list.add("qpr")
person.addPerson("anish",list)
person.addPerson("nath","11", [".docsDevNmAccessStatus.1", "Integer", "4"])
person.addPerson("nath","11", [".docsDevNmAccessStatus.1", "String", "4"])
Is there any way to define the DSL for this interface so that i easily called addOperation easily?
The problem is that the IPerson interface cannot be changed.
how can i write dsl something like
addPerson "anihs" "nath" //call to person.addPerson("anish","nath")
addPerson "tim" "kates"
//simlary of other interface method any suggestion
In Groovy something like
addPerson "anihs" "nath"is not really allowed. If you wanted two arguments you would have to use a comma. So the best you can get isaddPerson "anihs", "nath". But this method calls is just hanging in the air, the context is missing. One quite easy version would be of course:though I am not sure this is enough for you.