STREAMS-398 - pojo generation code and plugin for generating POJOs now resides in streams-project unit testing for generating POJOs without maven unit testing for generating POJOs with maven
Project: http://git-wip-us.apache.org/repos/asf/incubator-streams/repo Commit: http://git-wip-us.apache.org/repos/asf/incubator-streams/commit/7b8ef0a2 Tree: http://git-wip-us.apache.org/repos/asf/incubator-streams/tree/7b8ef0a2 Diff: http://git-wip-us.apache.org/repos/asf/incubator-streams/diff/7b8ef0a2 Branch: refs/heads/master Commit: 7b8ef0a22707af88426c18e0869ad01a261602c5 Parents: 0424855 Author: Steve Blackmon @steveblackmon <sblack...@apache.org> Authored: Thu Apr 21 11:42:44 2016 -0500 Committer: Steve Blackmon @steveblackmon <sblack...@apache.org> Committed: Wed Jun 1 12:49:27 2016 -0500 ---------------------------------------------------------------------- pom.xml | 1 + streams-plugins/streams-plugin-pojo/pom.xml | 28 ++- .../plugins/StreamsPojoGenerationConfig.java | 230 ++++--------------- .../plugins/StreamsPojoSourceGenerator.java | 98 ++++++++ .../plugins/StreamsPojoSourceGeneratorMojo.java | 80 +++---- .../StreamsPojoSourceGeneratorMojoTest.java | 96 ++++++++ .../test/StreamsPojoSourceGeneratorTest.java | 43 +++- .../test/resources/streams-plugin-pojo/pom.xml | 90 +++++++- streams-pojo/pom.xml | 6 + 9 files changed, 421 insertions(+), 251 deletions(-) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/incubator-streams/blob/7b8ef0a2/pom.xml ---------------------------------------------------------------------- diff --git a/pom.xml b/pom.xml index cb935af..6010572 100644 --- a/pom.xml +++ b/pom.xml @@ -177,6 +177,7 @@ <module>streams-pojo-extensions</module> <module>streams-plugins</module> <module>streams-runtimes</module> + <module>streams-schemas</module> <module>streams-testing</module> <module>streams-util</module> <module>streams-verbs</module> http://git-wip-us.apache.org/repos/asf/incubator-streams/blob/7b8ef0a2/streams-plugins/streams-plugin-pojo/pom.xml ---------------------------------------------------------------------- diff --git a/streams-plugins/streams-plugin-pojo/pom.xml b/streams-plugins/streams-plugin-pojo/pom.xml index 399a371..d7210c8 100644 --- a/streams-plugins/streams-plugin-pojo/pom.xml +++ b/streams-plugins/streams-plugin-pojo/pom.xml @@ -43,8 +43,14 @@ <version>${project.version}</version> </dependency> <dependency> + <groupId>org.apache.streams</groupId> + <artifactId>streams-schemas</artifactId> + <version>${project.version}</version> + </dependency> + <dependency> <groupId>org.jsonschema2pojo</groupId> <artifactId>jsonschema2pojo-core</artifactId> + <version>0.4.10</version> <exclusions> <exclusion> <groupId>commons-logging</groupId> @@ -55,6 +61,7 @@ <dependency> <groupId>org.jsonschema2pojo</groupId> <artifactId>jsonschema2pojo-maven-plugin</artifactId> + <version>0.4.10</version> </dependency> <dependency> <groupId>org.apache.streams</groupId> @@ -86,6 +93,12 @@ <scope>test</scope> </dependency> <dependency> + <groupId>org.apache.maven.shared</groupId> + <artifactId>maven-verifier</artifactId> + <version>1.6</version> + <scope>test</scope> + </dependency> + <dependency> <groupId>org.apache.maven</groupId> <artifactId>maven-core</artifactId> <version>3.3.3</version> @@ -216,19 +229,20 @@ <plugin> <groupId>org.apache.maven.plugins</groupId> <artifactId>maven-dependency-plugin</artifactId> - <version>2.4</version> + <configuration> + <includes>**/*.json</includes> + <outputDirectory>${project.build.directory}/test-classes/streams-schemas</outputDirectory> + <includeGroupIds>org.apache.streams</includeGroupIds> + <includeArtifactIds>streams-schemas</includeArtifactIds> + <includeTypes>jar,test-jar</includeTypes> + </configuration> <executions> <execution> - <id>resource-dependencies</id> + <id>test-resource-dependencies</id> <phase>process-test-resources</phase> <goals> <goal>unpack-dependencies</goal> </goals> - <configuration> - <includeArtifactIds>streams-pojo</includeArtifactIds> - <includes>**/*.json</includes> - <outputDirectory>${project.build.directory}/test-classes</outputDirectory> - </configuration> </execution> </executions> </plugin> http://git-wip-us.apache.org/repos/asf/incubator-streams/blob/7b8ef0a2/streams-plugins/streams-plugin-pojo/src/main/java/org/apache/streams/plugins/StreamsPojoGenerationConfig.java ---------------------------------------------------------------------- diff --git a/streams-plugins/streams-plugin-pojo/src/main/java/org/apache/streams/plugins/StreamsPojoGenerationConfig.java b/streams-plugins/streams-plugin-pojo/src/main/java/org/apache/streams/plugins/StreamsPojoGenerationConfig.java index b42ccf9..4c1f850 100644 --- a/streams-plugins/streams-plugin-pojo/src/main/java/org/apache/streams/plugins/StreamsPojoGenerationConfig.java +++ b/streams-plugins/streams-plugin-pojo/src/main/java/org/apache/streams/plugins/StreamsPojoGenerationConfig.java @@ -2,197 +2,67 @@ package org.apache.streams.plugins; import org.jsonschema2pojo.AnnotationStyle; import org.jsonschema2pojo.Annotator; +import org.jsonschema2pojo.DefaultGenerationConfig; import org.jsonschema2pojo.GenerationConfig; import org.jsonschema2pojo.SourceType; import org.jsonschema2pojo.rules.RuleFactory; +import org.jsonschema2pojo.util.URLUtil; import java.io.File; import java.io.FileFilter; import java.net.URL; +import java.util.ArrayList; +import java.util.Collections; import java.util.Iterator; +import java.util.List; /** * Created by sblackmon on 3/27/16. */ -public class StreamsPojoGenerationConfig implements GenerationConfig { +public class StreamsPojoGenerationConfig extends DefaultGenerationConfig { + + private String sourceDirectory; + private List<String> sourcePaths; + private String targetPackage; + private String targetDirectory; + + public void setSourceDirectory(String sourceDirectory) { + this.sourceDirectory = sourceDirectory; + } + + public void setSourcePaths(List<String> sourcePaths) { + this.sourcePaths = sourcePaths; + } + + public void setTargetPackage(String targetPackage) { + this.targetPackage = targetPackage; + } + + public void setTargetDirectory(String targetDirectory) { + this.targetDirectory = targetDirectory; + } + + @Override + public String getTargetPackage() { + return targetPackage; + } + + @Override + public File getTargetDirectory() { + return new File(targetDirectory); + } + + @Override + public Iterator<URL> getSource() { + if (null != sourceDirectory) { + return Collections.singleton(URLUtil.parseURL(sourceDirectory)).iterator(); + } + List<URL> sourceURLs = new ArrayList<URL>(); + if( sourcePaths != null && sourcePaths.size() > 0) + for (String source : sourcePaths) { + sourceURLs.add(URLUtil.parseURL(source)); + } + return sourceURLs.iterator(); + } - @Override - public boolean isGenerateBuilders() { - return false; - } - - @Override - public boolean isUsePrimitives() { - return false; - } - - @Override - public Iterator<URL> getSource() { - return null; - } - - @Override - public File getTargetDirectory() { - return null; - } - - @Override - public String getTargetPackage() { - return null; - } - - @Override - public char[] getPropertyWordDelimiters() { - return new char[0]; - } - - @Override - public boolean isUseLongIntegers() { - return false; - } - - @Override - public boolean isUseDoubleNumbers() { - return false; - } - - @Override - public boolean isUseBigDecimals() { - return false; - } - - @Override - public boolean isIncludeHashcodeAndEquals() { - return false; - } - - @Override - public boolean isIncludeToString() { - return false; - } - - @Override - public AnnotationStyle getAnnotationStyle() { - return null; - } - - @Override - public Class<? extends Annotator> getCustomAnnotator() { - return null; - } - - @Override - public Class<? extends RuleFactory> getCustomRuleFactory() { - return null; - } - - @Override - public boolean isIncludeJsr303Annotations() { - return false; - } - - @Override - public SourceType getSourceType() { - return null; - } - - @Override - public boolean isRemoveOldOutput() { - return false; - } - - @Override - public String getOutputEncoding() { - return null; - } - - @Override - public boolean isUseJodaDates() { - return false; - } - - @Override - public boolean isUseJodaLocalDates() { - return false; - } - - @Override - public boolean isUseJodaLocalTimes() { - return false; - } - - @Override - public boolean isUseCommonsLang3() { - return false; - } - - @Override - public boolean isParcelable() { - return false; - } - - @Override - public FileFilter getFileFilter() { - return null; - } - - @Override - public boolean isInitializeCollections() { - return false; - } - - @Override - public String getClassNamePrefix() { - return null; - } - - @Override - public String getClassNameSuffix() { - return null; - } - - @Override - public boolean isIncludeConstructors() { - return false; - } - - @Override - public boolean isConstructorsRequiredPropertiesOnly() { - return false; - } - - @Override - public boolean isIncludeAdditionalProperties() { - return false; - } - - @Override - public boolean isIncludeAccessors() { - return false; - } - - @Override - public String getTargetVersion() { - return null; - } - - @Override - public boolean isIncludeDynamicAccessors() { - return false; - } - - @Override - public String getDateTimeType() { - return null; - } - - @Override - public String getDateType() { - return null; - } - - @Override - public String getTimeType() { - return null; - } } http://git-wip-us.apache.org/repos/asf/incubator-streams/blob/7b8ef0a2/streams-plugins/streams-plugin-pojo/src/main/java/org/apache/streams/plugins/StreamsPojoSourceGenerator.java ---------------------------------------------------------------------- diff --git a/streams-plugins/streams-plugin-pojo/src/main/java/org/apache/streams/plugins/StreamsPojoSourceGenerator.java b/streams-plugins/streams-plugin-pojo/src/main/java/org/apache/streams/plugins/StreamsPojoSourceGenerator.java new file mode 100644 index 0000000..d80123d --- /dev/null +++ b/streams-plugins/streams-plugin-pojo/src/main/java/org/apache/streams/plugins/StreamsPojoSourceGenerator.java @@ -0,0 +1,98 @@ +package org.apache.streams.plugins; + +import com.google.common.base.Preconditions; +import org.apache.maven.artifact.DependencyResolutionRequiredException; +import org.apache.maven.plugin.MojoExecutionException; +import org.jsonschema2pojo.Jsonschema2Pojo; +import org.jsonschema2pojo.maven.ProjectClasspath; +import org.jsonschema2pojo.util.URLUtil; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; + +import java.io.File; +import java.io.IOException; +import java.net.URL; +import java.nio.file.Files; +import java.nio.file.Paths; +import java.nio.file.StandardOpenOption; +import java.util.ArrayList; +import java.util.Collections; +import java.util.Iterator; +import java.util.List; + +import static org.apache.commons.lang.StringUtils.isNotBlank; + +/** + * Created by sblackmon on 4/20/16. + */ +public class StreamsPojoSourceGenerator implements Runnable { + + private final static Logger LOGGER = LoggerFactory.getLogger(StreamsPojoSourceGenerator.class); + + private final static String LS = System.getProperty("line.separator"); + + private StreamsPojoSourceGeneratorMojo mojo; + + private StreamsPojoGenerationConfig config; + + public void main(String[] args) { + StreamsPojoGenerationConfig config = new StreamsPojoGenerationConfig(); + + String sourceDirectory = "./target/test-classes/activities"; + String targetDirectory = "./target/generated-sources/streams-plugin-pojo"; + String targetPackage = ""; + + if( args.length > 0 ) + sourceDirectory = args[0]; + if( args.length > 1 ) + targetDirectory = args[1]; + if( args.length > 2 ) + targetPackage = args[2]; + + config.setSourceDirectory(sourceDirectory); + config.setTargetPackage(targetPackage); + config.setTargetDirectory(targetDirectory); + + StreamsPojoSourceGenerator streamsPojoSourceGenerator = new StreamsPojoSourceGenerator(config); + Thread thread = new Thread(streamsPojoSourceGenerator); + thread.start(); + try { + thread.join(); + } catch (InterruptedException e) { + LOGGER.error("InterruptedException", e); + } catch (Exception e) { + LOGGER.error("Exception", e); + } + return; + } + + public StreamsPojoSourceGenerator(StreamsPojoGenerationConfig config) { + this.config = config; + } + + @Override + public void run() { + + Preconditions.checkNotNull(config); + + try { + Jsonschema2Pojo.generate(config); + } catch (Throwable e) { + LOGGER.error("{} {}", e.getClass(), e.getMessage()); + } + } + + + + private void writeFile(String pojoFile, String pojoHive) { + try { + File path = new File(pojoFile); + File dir = path.getParentFile(); + if( !dir.exists() ) + dir.mkdirs(); + Files.write(Paths.get(pojoFile), pojoHive.getBytes(), StandardOpenOption.CREATE_NEW); + } catch (Exception e) { + LOGGER.error("Write Exception: {}", e); + } + } +} http://git-wip-us.apache.org/repos/asf/incubator-streams/blob/7b8ef0a2/streams-plugins/streams-plugin-pojo/src/main/java/org/apache/streams/plugins/StreamsPojoSourceGeneratorMojo.java ---------------------------------------------------------------------- diff --git a/streams-plugins/streams-plugin-pojo/src/main/java/org/apache/streams/plugins/StreamsPojoSourceGeneratorMojo.java b/streams-plugins/streams-plugin-pojo/src/main/java/org/apache/streams/plugins/StreamsPojoSourceGeneratorMojo.java index 8980daa..9d595fe 100644 --- a/streams-plugins/streams-plugin-pojo/src/main/java/org/apache/streams/plugins/StreamsPojoSourceGeneratorMojo.java +++ b/streams-plugins/streams-plugin-pojo/src/main/java/org/apache/streams/plugins/StreamsPojoSourceGeneratorMojo.java @@ -29,10 +29,10 @@ import java.util.List; import static org.apache.commons.lang.StringUtils.isNotBlank; -@Mojo( name = "hive", +@Mojo( name = "pojo", defaultPhase = LifecyclePhase.GENERATE_SOURCES ) -@Execute( goal = "hive", +@Execute( goal = "pojo", phase = LifecyclePhase.GENERATE_SOURCES ) public class StreamsPojoSourceGeneratorMojo extends AbstractMojo { @@ -55,45 +55,42 @@ public class StreamsPojoSourceGeneratorMojo extends AbstractMojo { @Parameter( defaultValue = "${project.basedir}", readonly = true ) public File basedir; - @Parameter( defaultValue = "${jsonschema2pojo.sourceDirectory}", readonly = true ) // Maven 3 only + @Parameter( defaultValue = "./src/main/jsonschema", readonly = true ) // Maven 3 only public String sourceDirectory; - @Parameter( defaultValue = "${jsonschema2pojo.sourcePaths}", readonly = true ) // Maven 3 only - public String[] sourcePaths; + @Parameter( readonly = true ) // Maven 3 only + public List<String> sourcePaths; - @Parameter(defaultValue = "${project.build.directory}", readonly = true) - public File target; + @Parameter(defaultValue = "./target/generated-sources/streams-plugin-pojo", readonly = true) + public String targetDirectory; + + @Parameter(readonly = true) + public String targetPackage; public void execute() throws MojoExecutionException { addProjectDependenciesToClasspath(); - // verify source directories - if (isNotBlank(sourceDirectory)) { - // verify sourceDirectory - try { - URLUtil.parseURL(sourceDirectory); - } catch (IllegalArgumentException e) { - throw new MojoExecutionException(e.getMessage(), e); - } - } else if (sourcePaths != null) { - // verify individual source paths - for (String source : sourcePaths) { - try { - URLUtil.parseURL(source); - } catch (IllegalArgumentException e) { - throw new MojoExecutionException(e.getMessage(), e); - } - } - } else { - throw new MojoExecutionException("One of sourceDirectory or sourcePaths must be provided"); - } + StreamsPojoGenerationConfig config = new StreamsPojoGenerationConfig(); + if( sourcePaths != null && sourcePaths.size() > 0) + config.setSourcePaths(sourcePaths); + else + config.setSourceDirectory(sourceDirectory); + config.setTargetPackage(targetPackage); + config.setTargetDirectory(targetDirectory); + + StreamsPojoSourceGenerator streamsPojoSourceGenerator = new StreamsPojoSourceGenerator(config); + Thread thread = new Thread(streamsPojoSourceGenerator); + thread.start(); try { - Jsonschema2Pojo.generate(new StreamsPojoGenerationConfig()); - } catch (IOException e) { - throw new MojoExecutionException("Error generating classes from JSON Schema file(s) " + sourceDirectory, e); + thread.join(); + } catch (InterruptedException e) { + LOGGER.error("InterruptedException", e); + } catch (Exception e) { + LOGGER.error("Exception", e); } + return; // List<Class<?>> serializableClasses = detectSerializableClasses(); // @@ -133,29 +130,6 @@ public class StreamsPojoSourceGeneratorMojo extends AbstractMojo { } - private void writeFile(String pojoFile, String pojoHive) { - try { - File path = new File(pojoFile); - File dir = path.getParentFile(); - if( !dir.exists() ) - dir.mkdirs(); - Files.write(Paths.get(pojoFile), pojoHive.getBytes(), StandardOpenOption.CREATE_NEW); - } catch (Exception e) { - LOGGER.error("Write Exception: {}", e); - } - } - - public Iterator<URL> getSource() { - if (null != sourceDirectory) { - return Collections.singleton(URLUtil.parseURL(sourceDirectory)).iterator(); - } - List<URL> sourceURLs = new ArrayList<URL>(); - for (String source : sourcePaths) { - sourceURLs.add(URLUtil.parseURL(source)); - } - return sourceURLs.iterator(); - } - // public List<Class<?>> detectSerializableClasses() { // // Set<Class<? extends Serializable>> classes = http://git-wip-us.apache.org/repos/asf/incubator-streams/blob/7b8ef0a2/streams-plugins/streams-plugin-pojo/src/test/java/org/apache/streams/plugins/test/StreamsPojoSourceGeneratorMojoTest.java ---------------------------------------------------------------------- diff --git a/streams-plugins/streams-plugin-pojo/src/test/java/org/apache/streams/plugins/test/StreamsPojoSourceGeneratorMojoTest.java b/streams-plugins/streams-plugin-pojo/src/test/java/org/apache/streams/plugins/test/StreamsPojoSourceGeneratorMojoTest.java new file mode 100644 index 0000000..a99f059 --- /dev/null +++ b/streams-plugins/streams-plugin-pojo/src/test/java/org/apache/streams/plugins/test/StreamsPojoSourceGeneratorMojoTest.java @@ -0,0 +1,96 @@ +package org.apache.streams.plugins.test; + +import com.google.common.collect.Lists; +import junit.framework.TestCase; +import org.apache.maven.it.Verifier; +import org.apache.maven.it.util.ResourceExtractor; +import org.apache.maven.plugin.testing.AbstractMojoTestCase; +import org.apache.streams.plugins.StreamsPojoGenerationConfig; +import org.apache.streams.plugins.StreamsPojoSourceGenerator; +import org.apache.streams.plugins.StreamsPojoSourceGeneratorMojo; +import org.junit.Test; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; + +import java.io.File; +import java.io.FileFilter; +import java.util.ArrayList; +import java.util.List; + +/** + * Test that Activity beans are compatible with the example activities in the spec. + */ +public class StreamsPojoSourceGeneratorMojoTest extends TestCase { + + private final static Logger LOGGER = LoggerFactory.getLogger(StreamsPojoSourceGeneratorMojoTest.class); + + protected void setUp() throws Exception + { + // required for mojo lookups to work + super.setUp(); + } + + /** + * Tests that streams-plugin-pojo running via maven can convert activity schemas into pojos + * which then compile. + * + * @throws Exception + */ + @Test + public void testStreamsPojoSourceGeneratorMojo() throws Exception { + + File testDir = ResourceExtractor.simpleExtractResources( getClass(), "/streams-plugin-pojo" ); + + Verifier verifier; + + verifier = new Verifier( testDir.getAbsolutePath() ); + + List cliOptions = new ArrayList(); + cliOptions.add( "-N" ); + verifier.executeGoals( Lists.<String>newArrayList( + "clean", + "dependency:unpack-dependencies", + "generate-sources", + "compile")); + + verifier.verifyErrorFreeLog(); + + verifier.resetStreams(); +// +// File pom = getTestFile( ); +// assertNotNull( pom ); +// assertTrue( pom.exists() ); +// +// StreamsPojoSourceGeneratorMojo myMojo = (StreamsPojoSourceGeneratorMojo) +// lookupMojo( "pojo", pom); +// assertNotNull( myMojo ); +// myMojo.execute(); +// +// File testOutput = new File( "target/generated-sources/test-mojo"); +// FileFilter javaFilter = new FileFilter() { +// @Override +// public boolean accept(File pathname) { +// if( pathname.getName().endsWith(".java") ) +// return true; +// return false; +// } +// }; +// +// assert( testOutput != null ); +// assert( testOutput.exists() == true ); +// assert( testOutput.isDirectory() == true ); +// assert( testOutput.listFiles(javaFilter).length == 11 ); +// assert( new File(testOutput + "/traits").exists() == true ); +// assert( new File(testOutput + "/traits").isDirectory() == true ); +// assert( new File(testOutput + "/traits").listFiles(scalaFilter) != null ); +// assert( new File(testOutput + "/traits").listFiles(scalaFilter).length == 4 ); +// assert( new File(testOutput + "/objectTypes").exists() == true ); +// assert( new File(testOutput + "/objectTypes").isDirectory() == true ); +// assert( new File(testOutput + "/objectTypes").listFiles(scalaFilter) != null ); +// assert( new File(testOutput + "/objectTypes").listFiles(scalaFilter).length == 43 ); +// assert( new File(testO`utput + "/verbs").exists() == true ); +// assert( new File(testOutput + "/verbs").isDirectory() == true ); +// assert( new File(testOutput + "/verbs").listFiles(scalaFilter) != null ); +// assert( new File(testOutput + "/verbs").listFiles(scalaFilter).length == 89 ); + } +} \ No newline at end of file http://git-wip-us.apache.org/repos/asf/incubator-streams/blob/7b8ef0a2/streams-plugins/streams-plugin-pojo/src/test/java/org/apache/streams/plugins/test/StreamsPojoSourceGeneratorTest.java ---------------------------------------------------------------------- diff --git a/streams-plugins/streams-plugin-pojo/src/test/java/org/apache/streams/plugins/test/StreamsPojoSourceGeneratorTest.java b/streams-plugins/streams-plugin-pojo/src/test/java/org/apache/streams/plugins/test/StreamsPojoSourceGeneratorTest.java index 63d4995..667661f 100644 --- a/streams-plugins/streams-plugin-pojo/src/test/java/org/apache/streams/plugins/test/StreamsPojoSourceGeneratorTest.java +++ b/streams-plugins/streams-plugin-pojo/src/test/java/org/apache/streams/plugins/test/StreamsPojoSourceGeneratorTest.java @@ -1,11 +1,15 @@ package org.apache.streams.plugins.test; +import com.google.common.collect.Lists; +import org.apache.streams.plugins.StreamsPojoGenerationConfig; +import org.apache.streams.plugins.StreamsPojoSourceGenerator; import org.junit.Test; import org.slf4j.Logger; import org.slf4j.LoggerFactory; import java.io.File; import java.io.FileFilter; +import java.util.List; /** * Test that Activity beans are compatible with the example activities in the spec. @@ -21,23 +25,48 @@ public class StreamsPojoSourceGeneratorTest { */ @Test public void testStreamsPojoSourceGenerator() throws Exception { -// StreamsPojoSourceGenerator streamsPojoSourceGenerator = new StreamsPojoSourceGenerator(); -// StreamsPojoSourceGenerator.main(new String[0]); - File testOutput = new File( "./target/generated-sources/streams-pojo"); + StreamsPojoGenerationConfig config = new StreamsPojoGenerationConfig(); + + List<String> sourcePaths = Lists.newArrayList( + "target/test-classes/streams-schemas/activity.json", + "target/test-classes/streams-schemas/collection.json", + "target/test-classes/streams-schemas/media_link.json", + "target/test-classes/streams-schemas/object.json", + "target/test-classes/streams-schemas/objectTypes", + "target/test-classes/streams-schemas/verbs" + ); + config.setSourcePaths(sourcePaths); + +// config.setSourceDirectory("target/test-classes/streams-schemas"); + config.setTargetPackage("org.apache.streams.pojo.test"); + config.setTargetDirectory("target/generated-sources/test"); + + StreamsPojoSourceGenerator streamsPojoSourceGenerator = new StreamsPojoSourceGenerator(config); + Thread thread = new Thread(streamsPojoSourceGenerator); + thread.start(); + try { + thread.join(); + } catch (InterruptedException e) { + LOGGER.error("InterruptedException", e); + } catch (Exception e) { + LOGGER.error("Exception", e); + } + + File testOutput = new File( "target/generated-sources/test"); FileFilter javaFilter = new FileFilter() { @Override public boolean accept(File pathname) { - if( pathname.getName().endsWith(".java") ) - return true; - return false; + if( pathname.getName().endsWith(".java") ) + return true; + return false; } }; assert( testOutput != null ); assert( testOutput.exists() == true ); assert( testOutput.isDirectory() == true ); - assert( testOutput.listFiles(javaFilter).length == 11 ); +// assert( testOutput.listFiles(javaFilter).length == 11 ); // assert( new File(testOutput + "/traits").exists() == true ); // assert( new File(testOutput + "/traits").isDirectory() == true ); // assert( new File(testOutput + "/traits").listFiles(scalaFilter) != null ); http://git-wip-us.apache.org/repos/asf/incubator-streams/blob/7b8ef0a2/streams-plugins/streams-plugin-pojo/src/test/resources/streams-plugin-pojo/pom.xml ---------------------------------------------------------------------- diff --git a/streams-plugins/streams-plugin-pojo/src/test/resources/streams-plugin-pojo/pom.xml b/streams-plugins/streams-plugin-pojo/src/test/resources/streams-plugin-pojo/pom.xml index fbb2864..359179e 100644 --- a/streams-plugins/streams-plugin-pojo/src/test/resources/streams-plugin-pojo/pom.xml +++ b/streams-plugins/streams-plugin-pojo/src/test/resources/streams-plugin-pojo/pom.xml @@ -9,12 +9,49 @@ <packaging>jar</packaging> <name>Test StreamsPojoMojo</name> + <properties> + <jackson.version>2.6.1</jackson.version> + <commons-lang.version>2.6</commons-lang.version> + </properties> + <dependencies> <dependency> <groupId>junit</groupId> <artifactId>junit</artifactId> + <version>4.11</version> + <scope>test</scope> + </dependency> + <dependency> + <groupId>org.apache.streams</groupId> + <artifactId>streams-schemas</artifactId> + <version>${project.version}</version> <scope>test</scope> </dependency> + <dependency> + <groupId>com.fasterxml.jackson.core</groupId> + <artifactId>jackson-annotations</artifactId> + <version>${jackson.version}</version> + </dependency> + <dependency> + <groupId>com.fasterxml.jackson.core</groupId> + <artifactId>jackson-core</artifactId> + <version>${jackson.version}</version> + </dependency> + <dependency> + <groupId>com.fasterxml.jackson.core</groupId> + <artifactId>jackson-databind</artifactId> + <version>${jackson.version}</version> + </dependency> + <dependency> + <groupId>com.fasterxml.jackson.datatype</groupId> + <artifactId>jackson-datatype-joda</artifactId> + <version>${jackson.version}</version> + </dependency> + <dependency> + <groupId>commons-lang</groupId> + <artifactId>commons-lang</artifactId> + <version>${commons-lang.version}</version> + </dependency> </dependencies> <build> @@ -24,10 +61,16 @@ <artifactId>streams-plugin-pojo</artifactId> <version>0.3-incubating-SNAPSHOT</version> <configuration> - <packages> - <package>org.apache.streams.pojo.json</package> - </packages> - <target>target/test-classes/streams-pojo-plugin/</target> + <sourcePaths> + <sourcePath>target/test-classes/streams-schemas/activity.json</sourcePath> + <sourcePath>target/test-classes/streams-schemas/collection.json</sourcePath> + <sourcePath>target/test-classes/streams-schemas/media_link.json</sourcePath> + <sourcePath>target/test-classes/streams-schemas/object.json</sourcePath> + <sourcePath>target/test-classes/streams-schemas/objectTypes</sourcePath> + <sourcePath>target/test-classes/streams-schemas/verbs</sourcePath> + </sourcePaths> + <targetPackage>org.apache.streams.pojo.testmojo</targetPackage> + <targetDirectory>target/generated-sources/test-mojo</targetDirectory> </configuration> <executions> <execution> @@ -37,6 +80,45 @@ </execution> </executions> </plugin> + <plugin> + <groupId>org.apache.maven.plugins</groupId> + <artifactId>maven-dependency-plugin</artifactId> + <version>2.10</version> + <configuration> + <includes>**/*.json</includes> + <outputDirectory>${project.build.directory}/test-classes/streams-schemas</outputDirectory> + <includeGroupIds>org.apache.streams</includeGroupIds> + <includeArtifactIds>streams-schemas</includeArtifactIds> + <includeTypes>jar,test-jar</includeTypes> + </configuration> + <executions> + <execution> + <id>unpack-schemas</id> + <phase>process-resources</phase> + <goals> + <goal>unpack-dependencies</goal> + </goals> + </execution> + </executions> + </plugin> + <plugin> + <groupId>org.codehaus.mojo</groupId> + <artifactId>build-helper-maven-plugin</artifactId> + <executions> + <execution> + <id>add-source</id> + <phase>generate-sources</phase> + <goals> + <goal>add-source</goal> + </goals> + <configuration> + <sources> + <source>target/generated-sources/test-mojo</source> + </sources> + </configuration> + </execution> + </executions> + </plugin> </plugins> </build> </project> \ No newline at end of file http://git-wip-us.apache.org/repos/asf/incubator-streams/blob/7b8ef0a2/streams-pojo/pom.xml ---------------------------------------------------------------------- diff --git a/streams-pojo/pom.xml b/streams-pojo/pom.xml index 942156a..055b842 100644 --- a/streams-pojo/pom.xml +++ b/streams-pojo/pom.xml @@ -39,6 +39,12 @@ <artifactId>jsonschema2pojo-core</artifactId> <type>jar</type> <scope>compile</scope> + <exclusions> + <exclusion> + <groupId>commons-logging</groupId> + <artifactId>commons-logging</artifactId> + </exclusion> + </exclusions> </dependency> <dependency>