package spoon.test.processing; import java.util.Date; import org.apache.log4j.Level; import spoon.processing.AbstractProcessor; import spoon.reflect.cu.CompilationUnit; import spoon.reflect.declaration.CtClass; import spoon.reflect.declaration.CtElement; import spoon.reflect.declaration.CtPackage; import spoon.reflect.declaration.CtTypedElement; import spoon.template.Substitution; import spoon.test.template.TemplateWithConstructor; public class TestProcessor extends AbstractProcessor<CtElement> { @Override public void init() { super.init(); getEnvironment().debugMessage("MAIN METHODS: " + getFactory().Method().getMainMethods()); } public void process(CtElement element) { if ((!(element instanceof CtPackage)) && !element.isParentInitialized()) { getEnvironment().report(this, Level.ERROR, element, "Element's parent is null (" + element + ")"); throw new RuntimeException("uninitialized parent detected"); } if (element instanceof CtTypedElement) { if (((CtTypedElement<?>) element).getType() == null) { getEnvironment().report(this, Level.WARN, element, "Element's type is null (" + element + ")"); } } if (element instanceof CtClass) { CtClass<?> c = (CtClass<?>) element; if (c.getSimpleName().equals("Secondary")) { @SuppressWarnings("unused") CompilationUnit cu = c.getPosition().getCompilationUnit(); } if (c.getSimpleName().equals("C1")) { Substitution.insertAll(c, new TemplateWithConstructor( getFactory().Type().createReference(Date.class))); } } } }