![JAR search and dependency download from the Maven repository](/logo.png)
spoon.examples.delegate.processing.DelegateProcessor Maven / Gradle / Ivy
The newest version!
package spoon.examples.delegate.processing;
import spoon.examples.delegate.annotation.Delegate;
import spoon.examples.delegate.template.DelegateTemplate;
import spoon.processing.AbstractAnnotationProcessor;
import spoon.reflect.declaration.CtClass;
import spoon.reflect.declaration.CtExecutable;
import spoon.reflect.declaration.CtInterface;
import spoon.reflect.declaration.CtMethod;
import spoon.reflect.declaration.ModifierKind;
import spoon.reflect.reference.CtExecutableReference;
import spoon.template.Substitution;
public class DelegateProcessor extends
AbstractAnnotationProcessor> {
public void process(Delegate annotation, CtInterface> i) {
DelegateTemplate t = new DelegateTemplate(i.getReference());
CtClass> c = getFactory().Class().create(i.getPackage(), i
.getSimpleName()
+ "Delegate");
Substitution.insertAll(c, t);
for(CtExecutableReference> m:i.getReference().getAllExecutables()) {
CtExecutable> mdecl=m.getDeclaration();
if(mdecl!=null && !(mdecl instanceof CtMethod)) continue;
c.getMethods().add(t.getDelegateMethod(c,(CtMethod>)mdecl));
}
c.getSuperInterfaces().add(i.getReference());
c.getModifiers().add(ModifierKind.PUBLIC);
}
}
© 2015 - 2025 Weber Informatics LLC | Privacy Policy