Skip to content

Commit

Permalink
Initial layout of a Faces scaffold provider
Browse files Browse the repository at this point in the history
  • Loading branch information
VineetReynolds committed Nov 14, 2013
1 parent b98fc5f commit 1897147
Show file tree
Hide file tree
Showing 11 changed files with 252 additions and 17 deletions.
11 changes: 11 additions & 0 deletions scaffold/addon/pom.xml
Original file line number Diff line number Diff line change
Expand Up @@ -23,6 +23,12 @@
<artifactId>scaffold-spi</artifactId>
<classifier>forge-addon</classifier>
</dependency>
<dependency>
<groupId>org.jboss.forge.addon</groupId>
<artifactId>scaffold-faces</artifactId>
<classifier>forge-addon</classifier>
<version>${project.version}</version>
</dependency>

<!-- Addon Dependencies -->
<dependency>
Expand All @@ -40,6 +46,11 @@
<artifactId>resources</artifactId>
<classifier>forge-addon</classifier>
</dependency>
<dependency>
<groupId>org.jboss.forge.addon</groupId>
<artifactId>javaee</artifactId>
<classifier>forge-addon</classifier>
</dependency>

<!-- Furnace Container -->
<dependency>
Expand Down
62 changes: 62 additions & 0 deletions scaffold/faces/pom.xml
Original file line number Diff line number Diff line change
@@ -0,0 +1,62 @@
<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<parent>
<groupId>org.jboss.forge.addon</groupId>
<artifactId>scaffold-parent</artifactId>
<version>2.0.0-SNAPSHOT</version>
</parent>
<artifactId>scaffold-faces</artifactId>
<name>Forge - Faces Scaffold provider</name>
<dependencies>
<dependency>
<groupId>org.jboss.forge.addon</groupId>
<artifactId>scaffold-spi</artifactId>
<classifier>forge-addon</classifier>
<scope>provided</scope>
</dependency>
<dependency>
<groupId>org.jboss.forge.addon</groupId>
<artifactId>projects</artifactId>
<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.addon</groupId>
<artifactId>javaee</artifactId>
<classifier>forge-addon</classifier>
<scope>provided</scope>
</dependency>
<dependency>
<groupId>org.jboss.forge.furnace.container</groupId>
<artifactId>cdi</artifactId>
<classifier>forge-addon</classifier>
<scope>provided</scope>
</dependency>
</dependencies>
<build>
<plugins>
<plugin>
<artifactId>maven-jar-plugin</artifactId>
<executions>
<execution>
<id>create-forge-addon</id>
<phase>package</phase>
<goals>
<goal>jar</goal>
</goals>
<configuration>
<classifier>forge-addon</classifier>
</configuration>
</execution>
</executions>
</plugin>
</plugins>
</build>
</project>
Original file line number Diff line number Diff line change
@@ -0,0 +1,83 @@
/**
*
*/
package org.jboss.forge.addon.scaffold.faces;

import java.util.List;

import org.jboss.forge.addon.facets.AbstractFacet;
import org.jboss.forge.addon.projects.Project;
import org.jboss.forge.addon.resource.Resource;
import org.jboss.forge.addon.scaffold.spi.ScaffoldContext;
import org.jboss.forge.addon.scaffold.spi.ScaffoldProvider;
import org.jboss.forge.addon.ui.context.UIValidationContext;
import org.jboss.forge.addon.ui.wizard.UIWizardStep;

/**
* The scaffold provider for JSF 2.0
*/
public class FacesScaffoldProvider extends AbstractFacet<Project> implements ScaffoldProvider
{

@Override
public boolean install()
{
// TODO Auto-generated method stub
return false;
}

@Override
public boolean isInstalled()
{
// TODO Auto-generated method stub
return false;
}

@Override
public void validate(UIValidationContext context)
{
// TODO Auto-generated method stub

}

@Override
public String getName()
{
return "Faces";
}

@Override
public String getDescription()
{
return "Scaffold a Faces project from JPA entities";
}

@Override
public List<Resource<?>> setup(ScaffoldContext scaffoldContext)
{
// TODO Auto-generated method stub
return null;
}

@Override
public List<Resource<?>> generateFrom(Iterable<Resource<?>> resources, ScaffoldContext scaffoldContext)
{
// TODO Auto-generated method stub
return null;
}

@Override
public boolean needsOverwriteConfirmation(ScaffoldContext scaffoldContext)
{
// TODO Auto-generated method stub
return false;
}

@Override
public Class<? extends UIWizardStep> getSetupFlow()
{
// TODO Auto-generated method stub
return null;
}

}
2 changes: 2 additions & 0 deletions scaffold/faces/src/main/resources/META-INF/beans.xml
Original file line number Diff line number Diff line change
@@ -0,0 +1,2 @@
<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<beans xmlns="http://java.sun.com/xml/ns/javaee" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/beans_1_0.xsd"/>
Original file line number Diff line number Diff line change
Expand Up @@ -11,6 +11,7 @@

import javax.inject.Inject;

import org.jboss.forge.addon.convert.Converter;
import org.jboss.forge.addon.projects.ProjectFactory;
import org.jboss.forge.addon.projects.ui.AbstractProjectCommand;
import org.jboss.forge.addon.resource.DirectoryResource;
Expand All @@ -28,6 +29,7 @@
import org.jboss.forge.addon.ui.result.Results;
import org.jboss.forge.addon.ui.util.Categories;
import org.jboss.forge.addon.ui.util.Metadata;
import org.jboss.forge.furnace.services.Imported;

/**
* Scaffold wizard
Expand All @@ -49,8 +51,7 @@ public class ScaffoldSetupWizardImpl extends AbstractProjectCommand implements S
private UIInput<Boolean> overwrite;

@Inject
@WithAttributes(label = "Install Templates in src/main/templates?", defaultValue = "false")
private UIInput<Boolean> installTemplates;
private Imported<ScaffoldProvider> scaffoldProviders;

@Inject
private ProjectFactory factory;
Expand All @@ -68,12 +69,23 @@ public Boolean call() throws Exception
return selectedProvider != null && selectedProvider.needsOverwriteConfirmation(scaffoldContext);
}
});
builder.add(provider).add(target).add(overwrite).add(installTemplates);

provider.setValueChoices(scaffoldProviders);
provider.setItemLabelConverter(new Converter<ScaffoldProvider, String>()
{

@Override
public String convert(ScaffoldProvider source)
{
return source == null ? null: source.getName();
}
});
builder.add(provider).add(target).add(overwrite);
}

private ScaffoldContext newScaffoldContext()
{
return new ScaffoldContext(target.getValue(), overwrite.getValue(), installTemplates.getValue());
return new ScaffoldContext(target.getValue(), overwrite.getValue());
}

@Override
Expand Down
1 change: 1 addition & 0 deletions scaffold/pom.xml
Original file line number Diff line number Diff line change
Expand Up @@ -15,6 +15,7 @@
<module>api</module>
<module>impl</module>
<module>spi</module>
<module>faces</module>
<module>tests</module>
</modules>
<dependencyManagement>
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -18,14 +18,12 @@ public class ScaffoldContext
{
private final DirectoryResource targetDirectory;
private final boolean overwrite;
private final boolean installTemplates;

public ScaffoldContext(DirectoryResource targetDirectory, boolean overwrite, boolean installTemplates)
public ScaffoldContext(DirectoryResource targetDirectory, boolean overwrite)
{
super();
this.targetDirectory = targetDirectory;
this.overwrite = overwrite;
this.installTemplates = installTemplates;
}

public DirectoryResource getTargetDirectory()
Expand All @@ -38,9 +36,4 @@ public boolean isOverwrite()
return overwrite;
}

public boolean isInstallTemplates()
{
return installTemplates;
}

}
Original file line number Diff line number Diff line change
Expand Up @@ -13,12 +13,14 @@
import org.jboss.forge.addon.resource.Resource;
import org.jboss.forge.addon.ui.UIValidator;
import org.jboss.forge.addon.ui.wizard.UIWizardStep;
import org.jboss.forge.furnace.services.Exported;

/**
* Provides an implementation of Scaffolding for various UI code generation operations.
*
* @author <a href="mailto:lincolnbaxter@gmail.com">Lincoln Baxter, III</a>
*/
@Exported
public interface ScaffoldProvider extends ProjectFacet, UIValidator
{
/**
Expand Down
11 changes: 11 additions & 0 deletions scaffold/tests/pom.xml
Original file line number Diff line number Diff line change
Expand Up @@ -33,6 +33,17 @@
<classifier>forge-addon</classifier>
<scope>test</scope>
</dependency>

<dependency>
<groupId>org.jboss.forge.furnace.test</groupId>
<artifactId>furnace-test-harness</artifactId>
<scope>test</scope>
</dependency>
<dependency>
<groupId>org.jboss.forge.furnace.test</groupId>
<artifactId>arquillian-furnace-classpath</artifactId>
<scope>test</scope>
</dependency>
</dependencies>

<build>
Expand Down

This file was deleted.

Original file line number Diff line number Diff line change
@@ -0,0 +1,63 @@
/*
* Copyright 2013 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;

import java.util.Set;

import javax.inject.Inject;

import org.jboss.arquillian.container.test.api.Deployment;
import org.jboss.arquillian.junit.Arquillian;
import org.jboss.forge.addon.scaffold.spi.ScaffoldProvider;
import org.jboss.forge.arquillian.AddonDependency;
import org.jboss.forge.arquillian.Dependencies;
import org.jboss.forge.arquillian.archive.ForgeArchive;
import org.jboss.forge.furnace.repositories.AddonDependencyEntry;
import org.jboss.forge.furnace.spi.ExportedInstance;
import org.jboss.forge.furnace.spi.ServiceRegistry;
import org.jboss.shrinkwrap.api.ShrinkWrap;
import org.junit.Assert;
import org.junit.Test;
import org.junit.runner.RunWith;

@RunWith(Arquillian.class)
public class ScaffoldAddonTest
{
@Deployment
@Dependencies({
@AddonDependency(name = "org.jboss.forge.addon:projects"),
@AddonDependency(name = "org.jboss.forge.addon:javaee"),
@AddonDependency(name = "org.jboss.forge.addon:scaffold"),
@AddonDependency(name = "org.jboss.forge.furnace.container:cdi")
})
public static ForgeArchive getDeployment()
{
ForgeArchive archive = ShrinkWrap
.create(ForgeArchive.class)
.addBeansXML()
.addAsAddonDependencies(
AddonDependencyEntry.create("org.jboss.forge.addon:projects"),
AddonDependencyEntry.create("org.jboss.forge.addon:javaee"),
AddonDependencyEntry.create("org.jboss.forge.addon:scaffold"),
AddonDependencyEntry.create("org.jboss.forge.furnace.container:cdi")
);

return archive;
}

@Inject
private ServiceRegistry registry;

@Test
public void testCanLoadScaffoldProviders() throws Exception
{
Set<ExportedInstance<ScaffoldProvider>> providerInstances = registry.getExportedInstances(ScaffoldProvider.class);
Assert.assertFalse(providerInstances.isEmpty());
Assert.assertNotNull(providerInstances.iterator().next().get());
}
}

0 comments on commit 1897147

Please sign in to comment.