Skip to content

Commit

Permalink
Created CDISetupCommand interface in javaee-api to allow reference fr…
Browse files Browse the repository at this point in the history
…om external addons
  • Loading branch information
gastaldi committed Feb 26, 2014
1 parent bbb51e2 commit 9b58ec5
Show file tree
Hide file tree
Showing 4 changed files with 73 additions and 43 deletions.
6 changes: 6 additions & 0 deletions javaee/api/pom.xml
Original file line number Diff line number Diff line change
Expand Up @@ -39,6 +39,12 @@
<classifier>forge-addon</classifier>
<scope>provided</scope>
</dependency>
<dependency>
<groupId>org.jboss.forge.addon</groupId>
<artifactId>ui</artifactId>
<classifier>forge-addon</classifier>
<scope>provided</scope>
</dependency>

<dependency>
<groupId>org.jboss.forge.descriptors</groupId>
Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,20 @@
/**
* Copyright 2014 Red Hat, Inc. and/or its affiliates.
*
* Licensed under the Eclipse Public License version 1.0, available at
* http://www.eclipse.org/legal/epl-v10.html
*/

package org.jboss.forge.addon.javaee.cdi.ui;

import org.jboss.forge.addon.ui.command.UICommand;

/**
* Marker interface used to reference CDI Setup command from external addons
*
* @author <a href="ggastald@redhat.com">George Gastaldi</a>
*/
public interface CDISetupCommand extends UICommand
{

}
Original file line number Diff line number Diff line change
Expand Up @@ -29,7 +29,7 @@
* @author <a href="mailto:lincolnbaxter@gmail.com">Lincoln Baxter, III</a>
*/
@FacetConstraint({ DependencyFacet.class, ResourcesFacet.class })
public class CDISetupWizard extends AbstractJavaEECommand
public class CDISetupCommandImpl extends AbstractJavaEECommand implements CDISetupCommand
{
@Override
public Metadata getMetadata(UIContext context)
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -25,7 +25,7 @@
import org.jboss.forge.addon.facets.AbstractFacet;
import org.jboss.forge.addon.facets.FacetNotFoundException;
import org.jboss.forge.addon.javaee.cdi.CDIFacet;
import org.jboss.forge.addon.javaee.cdi.ui.CDISetupWizard;
import org.jboss.forge.addon.javaee.cdi.ui.CDISetupCommand;
import org.jboss.forge.addon.javaee.ejb.EJBFacet;
import org.jboss.forge.addon.javaee.ejb.ui.EJBSetupWizard;
import org.jboss.forge.addon.javaee.faces.FacesFacet;
Expand All @@ -48,8 +48,8 @@
import org.jboss.forge.addon.scaffold.faces.util.ScaffoldUtil;
import org.jboss.forge.addon.scaffold.spi.AccessStrategy;
import org.jboss.forge.addon.scaffold.spi.ScaffoldGenerationContext;
import org.jboss.forge.addon.scaffold.spi.ScaffoldSetupContext;
import org.jboss.forge.addon.scaffold.spi.ScaffoldProvider;
import org.jboss.forge.addon.scaffold.spi.ScaffoldSetupContext;
import org.jboss.forge.addon.ui.command.UICommand;
import org.jboss.forge.addon.ui.context.UIValidationContext;
import org.jboss.forge.parser.JavaParser;
Expand Down Expand Up @@ -113,12 +113,12 @@ public class FacesScaffoldProvider extends AbstractFacet<Project> implements Sca
private static final String ERROR_TEMPLATE = "scaffold/faces/error.xhtml";
private static final String INDEX_TEMPLATE = "scaffold/faces/index.xhtml";
private static final String INDEX_WELCOME_TEMPLATE = "scaffold/faces/index.html";

private final Dependency richfaces3UI = DependencyBuilder.create("org.richfaces.ui:richfaces-ui");
private final Dependency richfaces3Impl = DependencyBuilder.create("org.richfaces.framework:richfaces-impl");
private final Dependency richfaces4UI = DependencyBuilder.create("org.richfaces.ui:richfaces-components-ui");
private final Dependency richfaces4Impl = DependencyBuilder.create("org.richfaces.core:richfaces-core-impl");

protected FreemarkerTemplateProcessor templateProcessor;
protected Template backingBeanTemplate;
protected int backingBeanTemplateQbeMetawidgetIndent;
Expand Down Expand Up @@ -147,7 +147,7 @@ public class FacesScaffoldProvider extends AbstractFacet<Project> implements Sca
protected StaticJavaMetawidget rmEntityMetawidget;

private Configuration config;

@Inject
public FacesScaffoldProvider(final Configuration config, final FreemarkerTemplateProcessor templateProcessor)
{
Expand All @@ -173,9 +173,9 @@ public boolean isInstalled()
public void validate(UIValidationContext context)
{
// TODO Auto-generated method stub

}

@Override
public void setFaceted(Project origin)
{
Expand Down Expand Up @@ -215,17 +215,18 @@ public List<Resource<?>> generateFrom(Project project, ScaffoldGenerationContext
Collection<?> resources = scaffoldContext.getResources();
for (Object resource : resources)
{
JavaClass entity = (JavaClass) resource;
JavaClass entity = (JavaClass) resource;
String targetDir = scaffoldContext.getTargetDirectory();
targetDir = (targetDir == null) ? "" : targetDir;
Resource<?> template = (Resource<?>) scaffoldContext.getAttribute("pageTemplate");
boolean overwrite = scaffoldContext.isOverwrite();
List<Resource<?>> generatedResourcesForEntity = this.generateFromEntity(targetDir , template, entity, overwrite );
List<Resource<?>> generatedResourcesForEntity = this
.generateFromEntity(targetDir, template, entity, overwrite);

// TODO give plugins a chance to react to generated resources, use event bus?
// if (!generatedResources.isEmpty())
// {
// generatedEvent.fire(new ScaffoldGeneratedResources(provider, prepareResources(generatedResources)));
// generatedEvent.fire(new ScaffoldGeneratedResources(provider, prepareResources(generatedResources)));
// }
generatedResources.addAll(generatedResourcesForEntity);
}
Expand All @@ -236,38 +237,38 @@ public List<Resource<?>> generateFrom(Project project, ScaffoldGenerationContext
public List<Class<? extends UICommand>> getSetupFlow()
{
List<Class<? extends UICommand>> setupCommands = new ArrayList<Class<? extends UICommand>>();
if(!origin.hasFacet(JPAFacet.class))
if (!origin.hasFacet(JPAFacet.class))
{
setupCommands.add(JPASetupWizard.class);
}
if(!origin.hasFacet(CDIFacet.class))
if (!origin.hasFacet(CDIFacet.class))
{
setupCommands.add(CDISetupWizard.class);
setupCommands.add(CDISetupCommand.class);
}
if(!origin.hasFacet(EJBFacet.class))
if (!origin.hasFacet(EJBFacet.class))
{
setupCommands.add(EJBSetupWizard.class);
}
if(!origin.hasFacet(ServletFacet.class))
if (!origin.hasFacet(ServletFacet.class))
{
//TODO: FORGE-1296. Ensure that this wizard only sets up Servlet 3.0+
// TODO: FORGE-1296. Ensure that this wizard only sets up Servlet 3.0+
setupCommands.add(ServletSetupWizard.class);
}
if(!origin.hasFacet(FacesFacet.class))
if (!origin.hasFacet(FacesFacet.class))
{
setupCommands.add(FacesSetupWizard.class);
}
return setupCommands;
}

@Override
public List<Class<? extends UICommand>> getGenerationFlow()
{
List<Class<? extends UICommand>> generationCommands = new ArrayList<Class<? extends UICommand>>();
generationCommands.add(ScaffoldableEntitySelectionWizard.class);
return generationCommands;
}

protected List<Resource<?>> generateIndex(String targetDir, final Resource<?> template, final boolean overwrite)
{
List<Resource<?>> result = new ArrayList<Resource<?>>();
Expand Down Expand Up @@ -335,13 +336,13 @@ else if (servlet instanceof ServletFacet_3_1)

return result;
}

@Override
public AccessStrategy getAccessStrategy()
{
return new FacesAccessStrategy(this.origin);
}

public TemplateStrategy getTemplateStrategy()
{
return new FacesTemplateStrategy(this.origin);
Expand All @@ -367,7 +368,7 @@ protected List<Resource<?>> generateTemplates(String targetDir, final boolean ov

return result;
}

protected void loadTemplates()
{
if (this.backingBeanTemplate == null)
Expand Down Expand Up @@ -426,15 +427,16 @@ protected void loadTemplates()
this.indexWelcomeTemplate = this.templateProcessor.getTemplate(INDEX_WELCOME_TEMPLATE);
}
}

protected HashMap<Object, Object> getTemplateContext(String targetDir, final Resource<?> template)
{
TemplateStrategy templateStrategy = getTemplateStrategy();

HashMap<Object, Object> context;
context = new HashMap<Object, Object>();
context.put("template", template);
context.put("templatePath", templateStrategy.getReferencePath(template != null ? template : templateStrategy.getDefaultTemplate()));
context.put("templatePath",
templateStrategy.getReferencePath(template != null ? template : templateStrategy.getDefaultTemplate()));
context.put("templatePath", "/resources/scaffold/pageTemplate.xhtml");
context.put("templateStrategy", templateStrategy);
context.put("targetDir", targetDir);
Expand All @@ -448,9 +450,9 @@ protected void setupWebXML()
if (servlet instanceof ServletFacet_3_0)
{
WebAppDescriptor servletConfig = (WebAppDescriptor) servlet.getConfig();
Node root = ((NodeDescriptor)servletConfig).getRootNode();
Node root = ((NodeDescriptor) servletConfig).getRootNode();
removeConflictingErrorPages(root);

// (prefer /faces/error.xhtml)

String errorLocation = getAccessStrategy().getWebPaths(web.getWebResource(ERROR_XHTML)).get(1);
Expand Down Expand Up @@ -510,7 +512,7 @@ private void removeConflictingErrorPages(Node root)
for (Node errorPage : nodeList)
{
String errorCode = errorPage.getTextValueForPatternName("error-code");
if(errorCode.equals("404") || errorCode.equals("500"))
if (errorCode.equals("404") || errorCode.equals("500"))
{
// TODO: Prompt before removing? A prompt existed in Forge 1.
root.removeChild(errorPage);
Expand Down Expand Up @@ -583,7 +585,7 @@ public boolean accept(Resource<?> resource)
writer.close();
}
}

/**
* Parses the given XML and determines what namespaces it already declares. These are later removed from the list of
* namespaces that Metawidget introduces.
Expand Down Expand Up @@ -632,7 +634,7 @@ protected int parseIndent(final String template, final String indentOf)

return indent;
}

private void resetMetaWidgets()
{
ForgeConfigReader configReader = new ForgeConfigReader(this.config, this.origin);
Expand All @@ -652,12 +654,12 @@ private void resetMetaWidgets()
this.qbeMetawidget = new StaticJavaMetawidget();
this.qbeMetawidget.setConfigReader(configReader);
this.qbeMetawidget.setConfig("scaffold/faces/metawidget-qbe.xml");

this.rmEntityMetawidget = new StaticJavaMetawidget();
this.rmEntityMetawidget.setConfigReader(configReader);
this.rmEntityMetawidget.setConfig("scaffold/faces/metawidget-remove-entity.xml");
}

private List<Resource<?>> generateFromEntity(String targetDir, final Resource<?> template, final JavaClass entity,
final boolean overwrite)
{
Expand Down Expand Up @@ -690,13 +692,13 @@ private List<Resource<?>> generateFromEntity(String targetDir, final Resource<?>
StringWriter stringWriter = new StringWriter();
this.qbeMetawidget.write(stringWriter, this.backingBeanTemplateQbeMetawidgetIndent);
context.put("qbeMetawidget", stringWriter.toString().trim());

// Prepare removeEntityMetawidget
this.rmEntityMetawidget.setPath(entity.getQualifiedName());
stringWriter = new StringWriter();
this.rmEntityMetawidget.write(stringWriter, this.backingBeanTemplateRmEntityMetawidgetIndent);
context.put("rmEntityMetawidget", stringWriter.toString().trim());

// Prepare Java imports
Set<String> qbeMetawidgetImports = this.qbeMetawidget.getImports();
Set<String> rmEntityMetawidgetImports = this.rmEntityMetawidget.getImports();
Expand All @@ -711,7 +713,8 @@ private List<Resource<?>> generateFromEntity(String targetDir, final Resource<?>
context.put("persistenceUnitName", jpa.getConfig().getOrCreatePersistenceUnit().getName());

// Create the Backing Bean for this entity
JavaClass viewBean = JavaParser.parse(JavaClass.class, this.templateProcessor.processTemplate(context, this.backingBeanTemplate));
JavaClass viewBean = JavaParser.parse(JavaClass.class,
this.templateProcessor.processTemplate(context, this.backingBeanTemplate));
viewBean.setPackage(java.getBasePackage() + ".view");
result.add(ScaffoldUtil.createOrOverwrite(java.getJavaResource(viewBean), viewBean.toString(),
overwrite));
Expand Down Expand Up @@ -762,7 +765,8 @@ private List<Resource<?>> generateFromEntity(String targetDir, final Resource<?>
result.add(generateNavigation(targetDir, overwrite));

// Need ViewUtils and forge.taglib.xml for forgeview:asList
JavaClass viewUtils = JavaParser.parse(JavaClass.class, this.templateProcessor.processTemplate(context, this.viewUtilsTemplate));
JavaClass viewUtils = JavaParser.parse(JavaClass.class,
this.templateProcessor.processTemplate(context, this.viewUtilsTemplate));
viewUtils.setPackage(viewBean.getPackage());
result.add(ScaffoldUtil.createOrOverwrite(java.getJavaResource(viewUtils), viewUtils.toString(),
true));
Expand All @@ -780,7 +784,7 @@ private List<Resource<?>> generateFromEntity(String targetDir, final Resource<?>
}
return result;
}

/**
* Writes the entity Metawidget and its namespaces into the given context.
*/
Expand Down Expand Up @@ -816,7 +820,7 @@ protected void writeSearchAndBeanMetawidget(final Map<Object, Object> context, f
namespaces.keySet().removeAll(existingNamespaces.keySet());
context.put("metawidgetNamespaces", namespacesToString(namespaces));
}

protected String namespacesToString(final Map<String, String> namespaces)
{
StringBuilder builder = new StringBuilder();
Expand All @@ -833,7 +837,7 @@ protected String namespacesToString(final Map<String, String> namespaces)

return builder.toString();
}

protected void createInitializers(final JavaClass entity) throws FacetNotFoundException, FileNotFoundException
{
boolean dirtyBit = false;
Expand Down Expand Up @@ -876,12 +880,12 @@ protected void createInitializers(final JavaClass entity) throws FacetNotFoundEx
}
}
}
if(dirtyBit)
if (dirtyBit)
{
this.origin.getFacet(JavaSourceFacet.class).saveJavaSource(entity);
}
}

private void setPrimaryKeyMetaData(Map<Object, Object> context, final JavaClass entity)
{
String pkName = "id";
Expand Down Expand Up @@ -937,7 +941,7 @@ else if ("long".equals(pkType))
context.put("primaryKeyType", pkType);
context.put("nullablePrimaryKeyType", nullablePkType);
}

protected void setupRichFaces()
{
if ((this.origin.getFacet(DependencyFacet.class).hasEffectiveDependency(this.richfaces3UI)
Expand All @@ -958,7 +962,7 @@ protected void setupRichFaces()
.getWidgetBuilder()));
}
}

/**
* Locates a <code>ReadOnlyWidgetBuilder</code> in the list of WidgetBuilders, and inserts a
* <code>RichFacesWidgetBuilder</code> after it (unless there's a <code>RichFacesWidgetBuilder</code> in there
Expand Down

0 comments on commit 9b58ec5

Please sign in to comment.