Package org.jboss.forge.project.facets

Examples of org.jboss.forge.project.facets.JavaSourceFacet


      {
         ShellMessages.error(out, "Must specify a domain @Entity on which to operate.");
         return;
      }

      final JavaSourceFacet java = project.getFacet(JavaSourceFacet.class);
      for (JavaResource jr : javaTargets)
      {
         JavaClass entity = (JavaClass) (jr).getJavaSource();
         if (!entity.hasAnnotation(XmlRootElement.class))
            entity.addAnnotation(XmlRootElement.class);

         String idType = resolveIdType(entity);
         if (!Types.isBasicType(idType))
         {
            ShellMessages.error(out, "Skipped class [" + entity.getQualifiedName() + "] because @Id type [" + idType
                     + "] is not supported by endpoint generation.");
            continue;
         }
         String idSetterName = resolveIdSetterName(entity);
         String idGetterName = resolveIdGetterName(entity);

         CompiledTemplateResource template = compiler.compileResource(getClass().getResourceAsStream(
                  "/org/jboss/forge/rest/Endpoint.jv"));

         Map<Object, Object> map = new HashMap<Object, Object>();
         map.put("entity", entity);
         map.put("idType", idType);
         map.put("setIdStatement", idSetterName);
         map.put("getIdStatement", idGetterName);
         map.put("contentType", contentType);
         String entityTable = getEntityTable(entity);
         map.put("entityTable", entityTable);
         map.put("resourcePath", entityTable.toLowerCase() + "s");

         JavaClass resource = JavaParser.parse(JavaClass.class, template.render(map));
         resource.addImport(entity.getQualifiedName());
         resource.setPackage(java.getBasePackage() + ".rest");

         /*
          * Save the sources
          */
         java.saveJavaSource(entity);

         if (!java.getJavaResource(resource).exists()
                  || prompt.promptBoolean("Endpoint [" + resource.getQualifiedName() + "] already, exists. Overwrite?"))
         {
            java.saveJavaSource(resource);
            ShellMessages.success(out, "Generated REST endpoint for [" + entity.getQualifiedName() + "]");
         }
         else
            ShellMessages.info(out, "Aborted REST endpoint generation for [" + entity.getQualifiedName() + "]");
      }
View Full Code Here


   private JavaSource<?> sourceForName(final String type)
   {
      try
      {
         JavaSourceFacet javaSourceFact = this.project.getFacet(JavaSourceFacet.class);
         return javaSourceFact.getJavaResource(type).getJavaSource();
      }
      catch (FileNotFoundException e)
      {
         // Not a Forge-based type
View Full Code Here

      // Track the list of resources generated

      List<Resource<?>> result = new ArrayList<Resource<?>>();
      try
      {
         JavaSourceFacet java = this.project.getFacet(JavaSourceFacet.class);
         WebResourceFacet web = this.project.getFacet(WebResourceFacet.class);

         loadTemplates();
         Map<Object, Object> context = CollectionUtils.newHashMap();
         context.put("entity", entity);
         String ccEntity = StringUtils.decapitalize(entity.getName());
         context.put("ccEntity", ccEntity);

         // Prepare qbeMetawidget
         this.qbeMetawidget.setPath(entity.getQualifiedName());
         StringWriter stringWriter = new StringWriter();
         this.qbeMetawidget.write(stringWriter, this.backingBeanTemplateQbeMetawidgetIndent);
         context.put("qbeMetawidget", stringWriter.toString().trim());
         context.put("qbeMetawidgetImports",
                  CollectionUtils.toString(this.qbeMetawidget.getImports(), ";\r\nimport ", true, false));

         // Create the Backing Bean for this entity
         JavaClass viewBean = JavaParser.parse(JavaClass.class, this.backingBeanTemplate.render(context));
         viewBean.setPackage(java.getBasePackage() + ".view");
         result.add(ScaffoldUtil.createOrOverwrite(this.prompt, java.getJavaResource(viewBean), viewBean.toString(),
                  overwrite));

         // Set new context for view generation
         context = getTemplateContext(template);
         String beanName = StringUtils.decapitalize(viewBean.getName());
         context.put("beanName", beanName);
         context.put("ccEntity", ccEntity);
         context.put("entityName", StringUtils.uncamelCase(entity.getName()));

         // Prepare entityMetawidget
         this.entityMetawidget.setValue(StaticFacesUtils.wrapExpression(beanName + "." + ccEntity));
         this.entityMetawidget.setPath(entity.getQualifiedName());
         this.entityMetawidget.setReadOnly(false);
         this.entityMetawidget.setStyle(null);

         // Generate create
         writeEntityMetawidget(context, this.createTemplateEntityMetawidgetIndent, this.createTemplateNamespaces);

         result.add(ScaffoldUtil.createOrOverwrite(this.prompt,
                  web.getWebResource("scaffold/" + ccEntity + "/create.xhtml"),
                  this.createTemplate.render(context),
                  overwrite));

         // Generate view
         this.entityMetawidget.setReadOnly(true);
         writeEntityMetawidget(context, this.viewTemplateEntityMetawidgetIndent, this.viewTemplateNamespaces);

         result.add(ScaffoldUtil.createOrOverwrite(this.prompt,
                  web.getWebResource("scaffold/" + ccEntity + "/view.xhtml"),
                  this.viewTemplate.render(context), overwrite));

         // Generate search
         this.searchMetawidget.setValue(StaticFacesUtils.wrapExpression(beanName + ".search"));
         this.searchMetawidget.setPath(entity.getQualifiedName());
         this.beanMetawidget.setValue(StaticFacesUtils.wrapExpression(beanName + ".pageItems"));
         this.beanMetawidget.setPath(viewBean.getQualifiedName() + "/pageItems");
         writeSearchAndBeanMetawidget(context, this.searchTemplateSearchMetawidgetIndent,
                  this.searchTemplateBeanMetawidgetIndent, this.searchTemplateNamespaces);

         result.add(ScaffoldUtil.createOrOverwrite(this.prompt,
                  web.getWebResource("scaffold/" + ccEntity + "/search.xhtml"),
                  this.searchTemplate.render(context), overwrite));

         // Generate navigation
         result.add(generateNavigation(overwrite));

         // Need ViewUtils and forge.taglib.xml for forgeview:asList
         JavaClass viewUtils = JavaParser.parse(JavaClass.class, this.viewUtilsTemplate.render(context));
         viewUtils.setPackage(viewBean.getPackage());
         result.add(ScaffoldUtil.createOrOverwrite(this.prompt, java.getJavaResource(viewUtils), viewUtils.toString(),
                  true));

         context.put("viewPackage", viewBean.getPackage());
         result.add(ScaffoldUtil.createOrOverwrite(this.prompt,
                  web.getWebResource("WEB-INF/classes/META-INF/forge.taglib.xml"),
View Full Code Here

   {
      String pluginAlias = Strings.isNullOrEmpty(alias) ? pluginName.replaceAll("([^A-Za-z0-9-])|[Plugin]", "").toLowerCase() : alias;
      if (Strings.isNullOrEmpty(pluginAlias)) {
         throw new RuntimeException("You should specify a valid alias for this plugin");
      }
      JavaSourceFacet java = project.getFacet(JavaSourceFacet.class);

      String className = canonicalize(pluginName);
      String packg = prompt.promptCommon(
               "In which package you'd like to create [" + className + "], or enter for default",
               PromptType.JAVA_PACKAGE, java.getBasePackage());

      Map<Object, Object> context = new HashMap<Object, Object>();
      context.put("name", className);
      context.put("alias", pluginAlias);

      CompiledTemplateResource pluginSource = compiler.compileResource(getClass().getResourceAsStream(
               "/org/jboss/forge/dev/PluginTemplate.jv"));
      CompiledTemplateResource testSource = compiler.compileResource(getClass().getResourceAsStream(
               "/org/jboss/forge/dev/PluginTemplateTest.jv"));

      JavaResource pluginResource = java.saveJavaSource(JavaParser.parse(JavaClass.class, pluginSource.render(context))
               .setPackage(packg));
      java.saveTestJavaSource(JavaParser.parse(JavaClass.class, testSource.render(context)).setPackage(packg));

      pickup.fire(new PickupResource(pluginResource));
   }
View Full Code Here

            @Option(required = false,
                     help = "the class definition: surround with quotes",
                     description = "class definition") final String... def) throws FileNotFoundException
   {

      JavaSourceFacet java = project.getFacet(JavaSourceFacet.class);

      JavaClass jc = null;
      if (def != null)
      {
         String classDef = Strings.join(Arrays.asList(def), " ");
         jc = JavaParser.parse(JavaClass.class, classDef);
      }
      else if (in != null)
      {
         jc = JavaParser.parse(JavaClass.class, in);
      }
      else if (className != null)
      {
         jc = JavaParser.create(JavaClass.class).setName(className);
      }
      else
      {
         throw new RuntimeException("arguments required");
      }

      if (pckg != null)
      {
         jc.setPackage(pckg);
      }

      if (!jc.hasSyntaxErrors())
      {
         java.saveJavaSource(jc);
      }
      else
      {
         writer.println(ShellColor.RED, "Syntax Errors:");
         for (SyntaxError error : jc.getSyntaxErrors())
         {
            writer.println(error.toString());
         }
         writer.println();

         if (prompt.promptBoolean("Your class has syntax errors, create anyway?", true))
         {
            java.saveJavaSource(jc);
         }
         else
         {
            return;
         }
      }
      pickUp.fire(new PickupResource(java.getJavaResource(jc)));
   }
View Full Code Here

            @Option(name = "named", required = false, description = "The interface name", type = PromptType.JAVA_CLASS) final String interfaceName,
            @Option(required = false, help = "the package in which to build this Interface", description = "source package", type = PromptType.JAVA_PACKAGE, name = "package") final String pckg,
            @Option(required = false, help = "the interface definition: surround with quotes", description = "interface definition") final String... def)
            throws FileNotFoundException
   {
      JavaSourceFacet java = project.getFacet(JavaSourceFacet.class);
      JavaInterface jc = null;
      if (def != null)
      {
         String classDef = Strings.join(Arrays.asList(def), " ");
         jc = JavaParser.parse(JavaInterface.class, classDef);
      }
      else if (in != null)
      {
         jc = JavaParser.parse(JavaInterface.class, in);
      }
      else if (interfaceName != null)
      {
         jc = JavaParser.create(JavaInterface.class).setName(interfaceName);
      }
      else
      {
         throw new RuntimeException("arguments required");
      }

      if (pckg != null)
      {
         jc.setPackage(pckg);
      }
      if (!jc.hasSyntaxErrors())
      {
         java.saveJavaSource(jc);
      }
      else
      {
         writer.println(ShellColor.RED, "Syntax Errors:");
         for (SyntaxError error : jc.getSyntaxErrors())
         {
            writer.println(error.toString());
         }
         writer.println();
         if (prompt.promptBoolean(
                  "Your class has syntax errors, create anyway?", true))
         {
            java.saveJavaSource(jc);
         }
         else
         {
            return;
         }
      }
      pickUp.fire(new PickupResource(java.getJavaResource(jc)));
   }
View Full Code Here

            @Option(required = false,
                     help = "the class definition: surround with quotes",
                     description = "class definition") final String... def) throws FileNotFoundException
   {

      JavaSourceFacet java = project.getFacet(JavaSourceFacet.class);

      JavaEnum je = null;
      if (def != null)
      {
         String classDef = Strings.join(Arrays.asList(def), " ");
         je = JavaParser.parse(JavaEnum.class, classDef);
      }
      else if (in != null)
      {
         je = JavaParser.parse(JavaEnum.class, in);
      }
      else if (enumName != null)
      {
         je = JavaParser.create(JavaEnum.class).setName(enumName);
      }
      else
      {
         throw new RuntimeException("arguments required");
      }

      if (pckg != null)
      {
         je.setPackage(pckg);
      }

      if (!je.hasSyntaxErrors())
      {
         java.saveJavaSource(je);
      }
      else
      {
         writer.println(ShellColor.RED, "Syntax Errors:");
         for (SyntaxError error : je.getSyntaxErrors())
         {
            writer.println(error.toString());
         }
         writer.println();

         if (prompt.promptBoolean("Your enum has syntax errors, create anyway?", true))
         {
            java.saveJavaSource(je);
         }
         else
         {
            return;
         }
      }

      pickUp.fire(new PickupResource(java.getJavaResource(je)));
   }
View Full Code Here

                     name = "no-target") final boolean noTarget,
            @Option(required = false,
                     help = "the annotation definition: surround with quotes",
                     description = "annotation definition") final String... def) throws FileNotFoundException
   {
      JavaSourceFacet java = project.getFacet(JavaSourceFacet.class);

      JavaAnnotation type = null;
      if (def != null)
      {
         String classDef = Strings.join(Arrays.asList(def), " ");
         type = JavaParser.parse(JavaAnnotation.class, classDef);
      }
      else if (in != null)
      {
         type = JavaParser.parse(JavaAnnotation.class, in);
      }
      else if (annotationName != null)
      {
         type = JavaParser.create(JavaAnnotation.class).setName(annotationName);
      }
      else
      {
         throw new RuntimeException("arguments required");
      }

      if (pckg != null)
      {
         type.setPackage(pckg);
      }

      if (documented)
      {
         type.addAnnotation(Documented.class);
      }
      if (retentionPolicy != null)
      {
         type.addAnnotation(Retention.class).setEnumValue(retentionPolicy);
      }
      final Set<ElementType> targetTypes;
      if (noTarget)
      {
         targetTypes = Collections.emptySet();
      }
      else
      {
         targetTypes = shell.promptMultiSelectWithWildcard("*",
                  "Select target element types", ElementType.values());
      }
      if (targetTypes.isEmpty())
      {
         shell.printlnVerbose("Skipping @Target annotation");
      }
      else
      {
         type.addAnnotation(Target.class).setEnumValue(targetTypes.toArray(new ElementType[targetTypes.size()]));
      }

      if (!type.hasSyntaxErrors())
      {
         java.saveJavaSource(type);
      }
      else
      {
         writer.println(ShellColor.RED, "Syntax Errors:");
         for (SyntaxError error : type.getSyntaxErrors())
         {
            writer.println(error.toString());
         }
         writer.println();

         if (prompt.promptBoolean("Your annotation has syntax errors, create anyway?", true))
         {
            java.saveJavaSource(type);
         }
         else
         {
            return;
         }
      }

      pickUp.fire(new PickupResource(java.getJavaResource(type)));
   }
View Full Code Here

            final PipeOut out,
            @Option(required = false,
                     help = "the enum field definition",
                     description = "enum field definition") final String... def) throws FileNotFoundException
   {
      JavaSourceFacet java = project.getFacet(JavaSourceFacet.class);

      String enumConstDef = null;
      if (def != null)
      {
         enumConstDef = Strings.join(Arrays.asList(def), " ");
      }
      else if (in != null)
      {
         enumConstDef = in;
      }
      else
      {
         throw new RuntimeException("arguments required");
      }

      JavaEnum source = (JavaEnum) resource.getJavaSource();
      source.addEnumConstant(enumConstDef);
      java.saveJavaSource(source);

   }
View Full Code Here

            final PipeOut out,
            @Option(required = false,
                     help = "the field definition: surround with single quotes",
                     description = "field definition") final String... def) throws FileNotFoundException
   {
      JavaSourceFacet java = project.getFacet(JavaSourceFacet.class);

      String fieldDef = null;
      if (def != null)
      {
         fieldDef = Strings.join(Arrays.asList(def), " ");
      }
      else if (in != null)
      {
         fieldDef = in;
      }
      else
      {
         throw new RuntimeException("arguments required");
      }

      JavaSource<?> source = resource.getJavaSource();
      if (source instanceof FieldHolder)
      {
         FieldHolder<?> clazz = ((FieldHolder<?>) source);

         String name = JavaParser.parse(JavaClass.class, "public class Temp{}").addField(fieldDef).getName();
         if (clazz.hasField(name))
         {
            throw new IllegalStateException("Field named [" + name + "] already exists.");
         }

         clazz.addField(fieldDef);
         java.saveJavaSource(source);
      }
   }
View Full Code Here

TOP

Related Classes of org.jboss.forge.project.facets.JavaSourceFacet

Copyright © 2018 www.massapicom. All rights reserved.
All source code are property of their respective owners. Java is a trademark of Sun Microsystems, Inc and owned by ORACLE Inc. Contact coftware#gmail.com.