package org.picketlink.forge;
import java.io.FileNotFoundException;
import javax.enterprise.context.ApplicationScoped;
import javax.enterprise.inject.Produces;
import javax.inject.Inject;
import org.jboss.forge.addon.facets.FacetFactory;
import org.jboss.forge.addon.parser.java.JavaSourceFactory;
import org.jboss.forge.addon.parser.java.facets.JavaSourceFacet;
import org.jboss.forge.addon.parser.java.resources.JavaResource;
import org.jboss.forge.addon.projects.Project;
import org.jboss.forge.parser.java.JavaClass;
import org.jboss.forge.parser.java.Method;
import org.picketlink.idm.config.IdentityConfiguration;
import org.picketlink.idm.config.IdentityConfigurationBuilder;
/**
* Performs tasks related to creating and updating a PicketLink configuration
*
* @author Shane Bryzak
*
*/
public class ConfigurationOperations {
public static final String PICKETLINK_CONFIGURATION_CLASS_NAME = "PicketLinkConfiguration";
@Inject FacetFactory facetFactory;
@Inject JavaSourceFactory javaSourceFactory;
public JavaResource newDefaultConfiguration(Project project, String packageName) throws FileNotFoundException {
final JavaSourceFacet java = project.getFacet(JavaSourceFacet.class);
JavaClass javaClass = createJavaClass(PICKETLINK_CONFIGURATION_CLASS_NAME, packageName);
return java.saveJavaSource(javaClass);
}
private JavaClass createJavaClass(String className, String packageName) {
String lineSeparator = System.getProperty("line.separator");
JavaClass javaClass = javaSourceFactory.create(JavaClass.class)
.setName(className)
.setPublic()
.addAnnotation(ApplicationScoped.class).getOrigin();
javaClass.setPackage(packageName);
javaClass.addField("private IdentityConfiguration identityConfig = null;");
Method<JavaClass> producerMethod = javaClass.addMethod("IdentityConfiguration createConfig() { " + lineSeparator +
" if (identityConfig == null) {" + lineSeparator +
" initConfig();" + lineSeparator +
" }" + lineSeparator +
" return identityConfig;" + lineSeparator +
"}");
producerMethod.addAnnotation(Produces.class);
javaClass.addMethod("private void initConfig() {" + lineSeparator +
" IdentityConfigurationBuilder builder = new IdentityConfigurationBuilder();" + lineSeparator +
" builder" + lineSeparator +
" .named(\"default\")" + lineSeparator +
" .stores()" + lineSeparator +
" .file()" + lineSeparator +
" .supportAllFeatures();" + lineSeparator +
" identityConfig = builder.build();" +
"}");
javaClass.addImport(IdentityConfigurationBuilder.class);
javaClass.addImport(IdentityConfiguration.class);
return javaClass;
}
}