[forge-issues] [JBoss JIRA] (FORGE-745) Can not use Java Parser in war deployment on AS7

Lincoln Baxter III (JIRA) jira-events at lists.jboss.org
Thu Jan 17 14:58:21 EST 2013


     [ https://issues.jboss.org/browse/FORGE-745?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ]

Lincoln Baxter III closed FORGE-745.
------------------------------------

         Assignee: Lincoln Baxter III
    Fix Version/s: 1.2.1.Final
                   2.0.0.Alpha1
       Resolution: Done

    
> Can not use Java Parser in war deployment on AS7
> ------------------------------------------------
>
>                 Key: FORGE-745
>                 URL: https://issues.jboss.org/browse/FORGE-745
>             Project: Forge
>          Issue Type: Bug
>          Components: Parsers / File Manipulation
>    Affects Versions: 1.1.3.Final
>         Environment: Ubuntu, AS7
>            Reporter: Craig Schwarzwald
>            Assignee: Lincoln Baxter III
>             Fix For: 1.2.1.Final, 2.0.0.Alpha1
>
>
> {code}
> package org.ocpsoft.keywords;
> import static org.junit.Assert.assertTrue;
> import java.io.File;
> import java.io.FileOutputStream;
> import java.io.PrintStream;
> import java.net.URL;
> import org.jboss.arquillian.container.test.api.Deployment;
> import org.jboss.arquillian.drone.api.annotation.Drone;
> import org.jboss.arquillian.junit.Arquillian;
> import org.jboss.arquillian.test.api.ArquillianResource;
> import org.jboss.forge.parser.JavaParser;
> import org.jboss.forge.parser.java.JavaClass;
> import org.jboss.forge.parser.java.Visibility;
> import org.jboss.shrinkwrap.api.ShrinkWrap;
> import org.jboss.shrinkwrap.api.asset.EmptyAsset;
> import org.jboss.shrinkwrap.api.spec.WebArchive;
> import org.jboss.shrinkwrap.resolver.api.DependencyResolvers;
> import org.jboss.shrinkwrap.resolver.api.maven.MavenDependencyResolver;
> import org.junit.Test;
> import org.junit.runner.RunWith;
> import com.ocpsoft.constants.InputConstants;
> import com.thoughtworks.selenium.DefaultSelenium;
> @RunWith(Arquillian.class)
> public class ParserExampleTest
> {
> 	   	@Deployment // testable = false to run as a client
> 		public static WebArchive createDeployment() {
> 		   	MavenDependencyResolver resolver = DependencyResolvers.use(
> 				   MavenDependencyResolver.class).loadMetadataFromPom("pom.xml");
> 			return ShrinkWrap.create(WebArchive.class)
> 							.addAsResource("META-INF/persistence.xml")
> 							.addAsLibraries(resolver.artifacts("org.jboss.forge:parser-java-impl")
> 									.resolveAsFiles())
> 							.addAsWebInfResource(EmptyAsset.INSTANCE, "beans.xml");
> 		}
> 	   
> 	   
> 	@Test
> 	public void testParser() throws InterruptedException {
> 		String className = "ParseTest";
> 		removeClassFile(InputConstants.FILE_LOCATION + className + ".java");
> 		createTestClassViaParser(InputConstants.FILE_LOCATION + className + ".java", className);
> 	}
> 	
> 	private void createTestClassViaParser(String testPath, String className) {
> 		JavaClass testClass = JavaParser.create(JavaClass.class);
> 	
> 	      testClass
> 	               .setName(className)
> 	               .setPackage("com.example.domain")
> 	               .addAnnotation(RunWith.class).setLiteralValue(Arquillian.class.getSimpleName() + ".class")
> 	               .getOrigin().addImport(Arquillian.class);
> 	      
> 	      testClass
> 	      		.addField().setPrivate().setStatic(true).setFinal(true).setType(String.class).setName("WEBAPP_SRC").setLiteralInitializer("\"src/main/webapp\"");
> 	
> 	      testClass.addMethod()
> 	               .setName("getDeployment")
> 	               .setStatic(true)
> 	               .setVisibility(Visibility.PUBLIC)
> 	               .setReturnType(WebArchive.class)
> 	               .setBody("return ShrinkWrap.create(WebArchive.class, \"FBTutorialDemo.war\")\n" +
> 						"\t.addAsResource(\"META-INF/persistence.xml\")\n" +
> 						"\t.addAsWebResource(new File(WEBAPP_SRC, \"index.html\"))\n" +
> 						"\t.addAsWebResource(new File(WEBAPP_SRC, \"index2.html\"))\n" +
> 						"\t.addAsWebResource(new File(WEBAPP_SRC, \"myInfo.html\"))\n" +
> 						"\t.addAsWebResource(new File(WEBAPP_SRC, \"friendsInfo.html\"))\n" +
> 						"\t.addAsWebInfResource(EmptyAsset.INSTANCE, \"beans.xml\");")
> 	               .addAnnotation(Deployment.class)
> 	               .getOrigin().addImport(File.class);
> 	      testClass.addImport(WebArchive.class);
> 	      testClass.addImport(ShrinkWrap.class);
> 	      testClass.addImport(EmptyAsset.class);
> 	      
> 	      testClass
> 	      		.addField().setType(DefaultSelenium.class)
> 	      		.setName("browser").addAnnotation(Drone.class)
> 	      		.getOrigin().addImport(DefaultSelenium.class);
> 	      testClass.addImport(Drone.class);
> 	      
> 	      testClass
> 	    		.addField().setType(URL.class)
> 	    		.setName("deploymentURL").addAnnotation(ArquillianResource.class)
> 	    		.getOrigin().addImport(URL.class);
> 	      testClass.addImport(ArquillianResource.class);
> 	      
> 			try{
> 				PrintStream writetoTest = new PrintStream(
> 					     new FileOutputStream(testPath)); 
> 				writetoTest.print(testClass.toString());
> 				writetoTest.close();
> 			}
> 			catch (Exception e) {
> 				System.err.println("Failure in createTestClassViaParser: " + e);
> 			}
> 	}
> 	
> 	public void removeClassFile(String filePath){
> 		File classFile = new File(filePath);
> 		try{
> 			if(!classFile.exists()){
> 				System.out.println(filePath + " does NOT exist.  Nothing to Remove");
> 			}
> 			else{
> 				if(classFile.delete()){
> 					System.out.println(classFile.getName() + " is deleted!");
> 				}else{
> 					System.out.println("Delete operation is failed.");
> 					assertTrue(false);
> 				}
> 			}
> 		}catch(Exception e){
> 			e.printStackTrace();
> 		}
> 	}
> }
> {code}

--
This message is automatically generated by JIRA.
If you think it was sent incorrectly, please contact your JIRA administrators
For more information on JIRA, see: http://www.atlassian.com/software/jira


More information about the forge-issues mailing list