package com.github.signed.pmd.abstractions;
import com.sun.codemodel.JClassAlreadyExistsException;
import com.sun.codemodel.JCodeModel;
import com.sun.codemodel.JDefinedClass;
import com.sun.codemodel.JExpr;
import com.sun.codemodel.JMethod;
import com.sun.codemodel.JType;
import org.javacc.parser.JavaCCParser;
public class Project {
private final JCodeModel model = new JCodeModel();
private JMethod instanceMethod;
private JDefinedClass singleton;
public void writeASingleton() throws JClassAlreadyExistsException {
singleton = model._class("singletons.Singleton");
instanceMethod = singleton.method(JavaCCParser.ModifierSet.PUBLIC | JavaCCParser.ModifierSet.STATIC, singleton, "instance");
instanceMethod.body()._return(JExpr._new(singleton));
}
public SingletonAccessBuilder anotherClassThatAccessesTheSingleton() {
return new SingletonAccessBuilder(singleton, instanceMethod, model);
}
public ClassBuilder anyClass() {
try {
return new ClassBuilder(model).anyClass();
} catch (Exception any) {
throw new RuntimeException(any);
}
}
public JType reference(Class<?> type) {
return model._ref(type);
}
}