Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- /*
- * To change this template, choose Tools | Templates
- * and open the template in the editor.
- */
- package com.jsf.conventions.layers;
- import java.io.FileNotFoundException;
- import java.io.StringWriter;
- import java.util.Properties;
- import javax.enterprise.context.RequestScoped;
- import javax.enterprise.event.Event;
- import javax.enterprise.inject.spi.BeanManager;
- import javax.inject.Inject;
- import javax.inject.Named;
- import org.apache.velocity.VelocityContext;
- import org.apache.velocity.app.Velocity;
- import org.jboss.forge.parser.JavaParser;
- import org.jboss.forge.parser.java.JavaClass;
- import org.jboss.forge.parser.java.JavaSource;
- import org.jboss.forge.project.Project;
- import org.jboss.forge.project.facets.JavaSourceFacet;
- import org.jboss.forge.resources.java.JavaResource;
- import org.jboss.forge.shell.PromptType;
- import org.jboss.forge.shell.events.PickupResource;
- import org.jboss.forge.shell.plugins.Alias;
- import org.jboss.forge.shell.plugins.Command;
- import org.jboss.forge.shell.plugins.Current;
- import org.jboss.forge.shell.plugins.Help;
- import org.jboss.forge.shell.plugins.Option;
- import org.jboss.forge.shell.plugins.Plugin;
- import org.jboss.forge.shell.plugins.RequiresFacet;
- /**
- *
- * @author rmpestano Oct 23, 2011 17:16:47 PM
- */
- @Alias("layers")
- @RequiresFacet(JavaSourceFacet.class)
- @Help("plugin for generating boilerplate code for conventions framework")
- public class LayersPlugin implements Plugin{
- @Inject
- private Project project;
- @Inject
- BeanManager beanManager;
- @Inject
- private Event<PickupResource> pickup;
- @Inject
- @Current
- private JavaResource resource;
- static {
- Properties properties = new Properties();
- properties.setProperty("resource.loader", "class");
- properties.setProperty("class.resource.loader.class", "org.apache.velocity.runtime.resource.loader.ClasspathResourceLoader");
- Velocity.init(properties);
- }
- @Command(value = "generate-controller", help = "Generate managed bean and service from an entity class")
- public void generateController(
- @Option(name = "class", required = true, type = PromptType.JAVA_CLASS,help="full qualified class name") JavaResource domainClass) throws FileNotFoundException{
- if(project == null){//always resolve to null
- System.out.println("Project null");
- }
- JavaSourceFacet java = project.getFacet(JavaSourceFacet.class);
- JavaSource<?> javaSource = domainClass.getJavaSource();
- VelocityContext context = new VelocityContext();
- StringBuilder managedBeanPackage = new StringBuilder(javaSource.getPackage().substring(0,javaSource.getPackage().lastIndexOf(".")));
- managedBeanPackage.append("controller");
- context.put("package", managedBeanPackage);
- context.put("entity", javaSource.getName());
- context.put("mbeanName", javaSource.getName().toLowerCase().concat("MBean"));
- context.put("packageImport", javaSource.getPackage());
- StringWriter writer = new StringWriter();
- Velocity.mergeTemplate("TemplateController.vtl", "UTF-8", context, writer);
- JavaClass mbean = JavaParser.parse(JavaClass.class, writer.toString());
- java.saveJavaSource(mbean);
- pickup.fire(new PickupResource(java.getTestJavaResource(mbean)));
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement