Skip to content

Commit

Permalink
create mvp implemented
Browse files Browse the repository at this point in the history
  • Loading branch information
Sandro Sonntag committed Mar 23, 2012
1 parent 088eb9a commit a5e1196
Show file tree
Hide file tree
Showing 6 changed files with 77 additions and 19 deletions.
1 change: 1 addition & 0 deletions .gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -2,3 +2,4 @@ target/
.settings/
.classpath
.project
velocity.log
41 changes: 29 additions & 12 deletions src/main/java/de/adorsys/forge/plugin/gwtplugin/GWTFacet.java
Original file line number Diff line number Diff line change
Expand Up @@ -9,7 +9,6 @@
import java.io.StringWriter;
import java.util.Arrays;
import java.util.Collection;
import java.util.Collections;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
Expand All @@ -20,16 +19,13 @@

import org.apache.maven.model.Model;
import org.apache.maven.model.PluginExecution;
import org.apache.maven.model.Resource;
import org.apache.velocity.VelocityContext;
import org.apache.velocity.app.Velocity;
import org.codehaus.plexus.util.xml.Xpp3Dom;
import org.codehaus.plexus.util.xml.Xpp3DomBuilder;
import org.codehaus.plexus.util.xml.pull.XmlPullParserException;
import org.jboss.forge.maven.MavenCoreFacet;
import org.jboss.forge.parser.JavaParser;
import org.jboss.forge.parser.java.JavaClass;
import org.jboss.forge.parser.java.JavaInterface;
import org.jboss.forge.parser.java.JavaType;
import org.jboss.forge.project.dependencies.Dependency;
import org.jboss.forge.project.dependencies.DependencyBuilder;
Expand All @@ -38,6 +34,7 @@
import org.jboss.forge.project.facets.DependencyFacet;
import org.jboss.forge.project.facets.JavaSourceFacet;
import org.jboss.forge.project.facets.ResourceFacet;
import org.jboss.forge.project.facets.WebResourceFacet;
import org.jboss.forge.resources.FileResource;
import org.jboss.forge.shell.events.PickupResource;
import org.jboss.forge.shell.plugins.Alias;
Expand All @@ -47,9 +44,9 @@
* @author sandro sonntag
*
*/
@Alias("gwtFacet")
@Alias("gwtfacet")
@RequiresFacet({ MavenCoreFacet.class, JavaSourceFacet.class,
DependencyFacet.class })
DependencyFacet.class, WebResourceFacet.class })
public class GWTFacet extends BaseFacet {

static {
Expand All @@ -71,15 +68,15 @@ public class GWTFacet extends BaseFacet {
public GWTFacet(DependencyInstaller installer) {
super();
this.installer = installer;

}

@Override
public boolean install() {
installGwtConfiguration();
installDependencies();
createMessages();
createModule();
createGWTMessages();
createGWTModule();
createWebResources();
createJavaSource("EntryPoint.java.ftl");
createJavaSource("EventBus.java.ftl");
createJavaSource("GinClientModule.java.ftl");
Expand All @@ -91,6 +88,27 @@ public boolean install() {
}


private void createWebResources() {
final WebResourceFacet webResource = project.getFacet(WebResourceFacet.class);
final MavenCoreFacet mvnFacet = project.getFacet(MavenCoreFacet.class);
final JavaSourceFacet javaFacet = project.getFacet(JavaSourceFacet.class);

StringWriter writer = new StringWriter();
VelocityContext context = new VelocityContext();

Velocity.mergeTemplate("web.xml.ftl", "UTF-8", context, writer);
FileResource<?> webXml = webResource.createWebResource(writer.toString(), "WEB-INF/web.xml");
pickup.fire(new PickupResource(webXml));

context = new VelocityContext();
context.put("basePackage", javaFacet.getBasePackage());
context.put("description", mvnFacet.getPOM().getName());
writer = new StringWriter();
Velocity.mergeTemplate("index.html.ftl", "UTF-8", context, writer);
FileResource<?> indexHtml = webResource.createWebResource(writer.toString(), "index.html");
pickup.fire(new PickupResource(indexHtml));
}

public void createMVP(String name) {
HashMap<String, Object> contextData = new HashMap<String, Object>();
String nameClassPrefix = upperFirstChar(name);
Expand Down Expand Up @@ -239,7 +257,7 @@ private boolean isDepsInstalled() {
return dependencysInstalled;
}

private void createMessages() {
private void createGWTMessages() {
JavaSourceFacet java = project.getFacet(JavaSourceFacet.class);
ResourceFacet resources = project.getFacet(ResourceFacet.class);
String name = java.getBasePackage();
Expand Down Expand Up @@ -267,7 +285,7 @@ private void createViewXML(String name, String classPrefix) {
pickup.fire(new PickupResource(messagesResource));
}

private void createModule() {
private void createGWTModule() {
final MavenCoreFacet mvnFacet = project.getFacet(MavenCoreFacet.class);
JavaSourceFacet java = project.getFacet(JavaSourceFacet.class);
ResourceFacet resources = project.getFacet(ResourceFacet.class);
Expand Down Expand Up @@ -306,7 +324,6 @@ private void createJavaSource(String template, Map<String, Object> parameter) {
stringWriter.toString());
try {
java.saveJavaSource(serviceClass);

pickup.fire(new PickupResource(java.getJavaResource(serviceClass)));
} catch (FileNotFoundException e) {
throw new RuntimeException(e);
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -67,9 +67,12 @@ public void setup(

@Command(value = "create-mvp", help = "creates a mvp package")
public void createMVP(
@Option(name = "package", required = true, type = PromptType.JAVA_PACKAGE) JavaResource entity,
@Option(name = "name", required = true, type = PromptType.JAVA_VARIABLE_NAME)
String name,
final PipeOut out) throws FileNotFoundException {


GWTFacet facet = project.getFacet(GWTFacet.class);
facet.createMVP(name);
}

@Command(value = "add-bus-event", help = "creates a mvp package")
Expand Down
24 changes: 24 additions & 0 deletions src/main/resources/index.html.ftl
Original file line number Diff line number Diff line change
@@ -0,0 +1,24 @@
<!doctype html>
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta name="description" content="" />
<meta name="keywords" content="" />
<title>${description}</title>
<meta http-equiv="content-type" content="text/html; charset=utf-8" />
<link rel="stylesheet" type="text/css" href="style.css" />
<script type="text/javascript" language="javascript" src="${basePackage}/${basePackage}.nocache.js"></script>
</head>
<body>
<!-- OPTIONAL: include this if you want history support -->
<iframe src="javascript:''" id="__gwt_historyFrame" tabIndex='-1' style="position:absolute;width:0;height:0;border:0"></iframe>

<!-- RECOMMENDED if your web app will not function without JavaScript enabled -->
<noscript>
<div style="width: 22em; position: absolute; left: 50%; margin-left: -11em; color: red; background-color: white; border: 1px solid red; padding: 4px; font-family: sans-serif">
Your web browser must have JavaScript enabled
in order for this application to display correctly.
</div>
</noscript>

</body>
</html>
8 changes: 8 additions & 0 deletions src/main/resources/web.xml.ftl
Original file line number Diff line number Diff line change
@@ -0,0 +1,8 @@
<?xml version="1.0" encoding="ISO-8859-1"?>
<web-app version="3.0" 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/web-app_3_0.xsd">
<welcome-file-list>
<welcome-file>index.html</welcome-file>
</welcome-file-list>
</web-app>
15 changes: 10 additions & 5 deletions src/test/java/de/adorsys/forge/plugin/gwtplugin/GWTPluginTest.java
Original file line number Diff line number Diff line change
Expand Up @@ -23,15 +23,20 @@ public static JavaArchive getDeployment() {

@Test
public void testSetup() throws Exception {
// Create a new barebones Java project
Project p = initializeProject(PackagingType.WAR);

// Queue input lines to be read as the Shell executes.
queueInputLines("y");

// Execute a command. If any input is required, it will be read from
// queued input.
getShell().execute("gwt setup");
Assert.assertNotNull(null);
}

@Test
public void testCreateMVP() throws Exception {
Project p = initializeProject(PackagingType.WAR);

queueInputLines("y");

getShell().execute("gwt setup");
getShell().execute("gwt create-mvp --name foobar");
}
}

0 comments on commit a5e1196

Please sign in to comment.