Advertisement
Guest User

Untitled

a guest
Oct 23rd, 2011
65
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Java 3.37 KB | None | 0 0
  1. /*
  2.  * To change this template, choose Tools | Templates
  3.  * and open the template in the editor.
  4.  */
  5. package com.jsf.conventions.layers;
  6.  
  7. import java.io.FileNotFoundException;
  8. import java.io.StringWriter;
  9. import java.util.Properties;
  10. import javax.enterprise.context.RequestScoped;
  11. import javax.enterprise.event.Event;
  12. import javax.enterprise.inject.spi.BeanManager;
  13. import javax.inject.Inject;
  14. import javax.inject.Named;
  15. import org.apache.velocity.VelocityContext;
  16. import org.apache.velocity.app.Velocity;
  17. import org.jboss.forge.parser.JavaParser;
  18. import org.jboss.forge.parser.java.JavaClass;
  19. import org.jboss.forge.parser.java.JavaSource;
  20. import org.jboss.forge.project.Project;
  21. import org.jboss.forge.project.facets.JavaSourceFacet;
  22. import org.jboss.forge.resources.java.JavaResource;
  23. import org.jboss.forge.shell.PromptType;
  24. import org.jboss.forge.shell.events.PickupResource;
  25. import org.jboss.forge.shell.plugins.Alias;
  26. import org.jboss.forge.shell.plugins.Command;
  27. import org.jboss.forge.shell.plugins.Current;
  28. import org.jboss.forge.shell.plugins.Help;
  29. import org.jboss.forge.shell.plugins.Option;
  30. import org.jboss.forge.shell.plugins.Plugin;
  31. import org.jboss.forge.shell.plugins.RequiresFacet;
  32.  
  33. /**
  34.  *
  35.  * @author rmpestano Oct 23, 2011 17:16:47 PM
  36.  */
  37. @Alias("layers")
  38. @RequiresFacet(JavaSourceFacet.class)
  39. @Help("plugin for generating boilerplate code for conventions framework")
  40. public class LayersPlugin implements Plugin{
  41.    
  42.     @Inject
  43.     private Project project;
  44.  
  45.     @Inject
  46.     BeanManager beanManager;
  47.  
  48.     @Inject
  49.     private Event<PickupResource> pickup;
  50.  
  51.     @Inject
  52.     @Current
  53.     private JavaResource resource;
  54.    
  55.     static {
  56.         Properties properties = new Properties();
  57.         properties.setProperty("resource.loader", "class");
  58.         properties.setProperty("class.resource.loader.class", "org.apache.velocity.runtime.resource.loader.ClasspathResourceLoader");
  59.         Velocity.init(properties);
  60.     }
  61.    
  62.     @Command(value = "generate-controller", help = "Generate managed bean and service from an entity class")
  63.     public void generateController(
  64.             @Option(name = "class", required = true, type = PromptType.JAVA_CLASS,help="full qualified class name") JavaResource domainClass) throws FileNotFoundException{
  65.          
  66.         if(project == null){//always resolve to null
  67.             System.out.println("Project null");
  68.         }
  69.         JavaSourceFacet java = project.getFacet(JavaSourceFacet.class);
  70.         JavaSource<?> javaSource = domainClass.getJavaSource();
  71.         VelocityContext context = new VelocityContext();
  72.        
  73.         StringBuilder managedBeanPackage = new StringBuilder(javaSource.getPackage().substring(0,javaSource.getPackage().lastIndexOf(".")));
  74.         managedBeanPackage.append("controller");
  75.         context.put("package", managedBeanPackage);
  76.         context.put("entity", javaSource.getName());
  77.         context.put("mbeanName", javaSource.getName().toLowerCase().concat("MBean"));
  78.         context.put("packageImport", javaSource.getPackage());
  79.         StringWriter writer = new StringWriter();
  80.         Velocity.mergeTemplate("TemplateController.vtl", "UTF-8", context, writer);
  81.         JavaClass mbean = JavaParser.parse(JavaClass.class, writer.toString());
  82.         java.saveJavaSource(mbean);
  83.         pickup.fire(new PickupResource(java.getTestJavaResource(mbean)));
  84.     }
  85.    
  86. }
  87.  
  88.  
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement