http://git-wip-us.apache.org/repos/asf/incubator-streams/blob/5dffd5c3/streams-plugins/streams-plugin-pojo/src/test/java/org/apache/streams/plugins/test/StreamsPojoSourceGeneratorMojoIT.java ---------------------------------------------------------------------- diff --git a/streams-plugins/streams-plugin-pojo/src/test/java/org/apache/streams/plugins/test/StreamsPojoSourceGeneratorMojoIT.java b/streams-plugins/streams-plugin-pojo/src/test/java/org/apache/streams/plugins/test/StreamsPojoSourceGeneratorMojoIT.java index f2ccd2a..a1d48cc 100644 --- a/streams-plugins/streams-plugin-pojo/src/test/java/org/apache/streams/plugins/test/StreamsPojoSourceGeneratorMojoIT.java +++ b/streams-plugins/streams-plugin-pojo/src/test/java/org/apache/streams/plugins/test/StreamsPojoSourceGeneratorMojoIT.java @@ -41,46 +41,45 @@ import static org.apache.streams.plugins.test.StreamsPojoSourceGeneratorTest.jav */ public class StreamsPojoSourceGeneratorMojoIT extends TestCase { - private final static Logger LOGGER = LoggerFactory.getLogger(StreamsPojoSourceGeneratorMojoIT.class); + private static final Logger LOGGER = LoggerFactory.getLogger(StreamsPojoSourceGeneratorMojoIT.class); - protected void setUp() throws Exception - { - // required for mojo lookups to work - super.setUp(); - } + protected void setUp() throws Exception { + // required for mojo lookups to work + super.setUp(); + } - @Test - public void testStreamsPojoSourceGeneratorMojo() throws Exception { + @Test + public void testStreamsPojoSourceGeneratorMojo() throws Exception { - File testDir = ResourceExtractor.simpleExtractResources( getClass(), "/streams-plugin-pojo" ); + File testDir = ResourceExtractor.simpleExtractResources( getClass(), "/streams-plugin-pojo" ); - Verifier verifier; + Verifier verifier; - verifier = new Verifier( testDir.getAbsolutePath() ); + verifier = new Verifier( testDir.getAbsolutePath() ); - List cliOptions = new ArrayList(); - cliOptions.add( "-N" ); - verifier.executeGoals( Lists.<String>newArrayList( - "clean", - "dependency:unpack-dependencies", - "generate-sources", - "compile")); + List cliOptions = new ArrayList(); + cliOptions.add( "-N" ); + verifier.executeGoals( Lists.<String>newArrayList( + "clean", + "dependency:unpack-dependencies", + "generate-sources", + "compile")); - verifier.verifyErrorFreeLog(); + verifier.verifyErrorFreeLog(); - verifier.resetStreams(); + verifier.resetStreams(); - File testOutput = new File(testDir.getAbsolutePath() + "/target/generated-sources/pojo-mojo"); + File testOutput = new File(testDir.getAbsolutePath() + "/target/generated-sources/pojo-mojo"); - assert( testOutput != null ); - assert( testOutput.exists() == true ); - assert( testOutput.isDirectory() == true ); + assert ( testOutput != null ); + assert ( testOutput.exists() == true ); + assert ( testOutput.isDirectory() == true ); - Iterable<File> outputIterator = Files.fileTreeTraverser().breadthFirstTraversal(testOutput) - .filter(javaFilter); - Collection<File> outputCollection = Lists.newArrayList(outputIterator); - assert( outputCollection.size() > 133 ); + Iterable<File> outputIterator = Files.fileTreeTraverser().breadthFirstTraversal(testOutput) + .filter(javaFilter); + Collection<File> outputCollection = Lists.newArrayList(outputIterator); + assert ( outputCollection.size() > 133 ); - } + } } \ No newline at end of file
http://git-wip-us.apache.org/repos/asf/incubator-streams/blob/5dffd5c3/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 7e04e3e..a16c1da 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 @@ -19,72 +19,75 @@ package org.apache.streams.plugins.test; +import org.apache.streams.plugins.StreamsPojoGenerationConfig; +import org.apache.streams.plugins.StreamsPojoSourceGenerator; + import com.google.common.base.Predicate; import com.google.common.collect.Lists; import com.google.common.io.Files; -import org.apache.streams.plugins.StreamsPojoGenerationConfig; -import org.apache.streams.plugins.StreamsPojoSourceGenerator; -import org.junit.Ignore; import org.junit.Test; import org.slf4j.Logger; import org.slf4j.LoggerFactory; -import javax.annotation.Nullable; import java.io.File; -import java.io.FileFilter; import java.util.Collection; import java.util.List; +import javax.annotation.Nullable; /** - * Test that Activity beans are compatible with the example activities in the spec. + * Tests that StreamsPojoSourceGenerator via SDK generates java sources. + * + * @throws Exception Exception */ public class StreamsPojoSourceGeneratorTest { - private final static Logger LOGGER = LoggerFactory.getLogger(StreamsPojoSourceGeneratorTest.class); + private static final Logger LOGGER = LoggerFactory.getLogger(StreamsPojoSourceGeneratorTest.class); - public static final Predicate<File> javaFilter = new Predicate<File>() { - @Override - public boolean apply(@Nullable File file) { - if( file.getName().endsWith(".java") ) - return true; - else return false; - } - }; + public static final Predicate<File> javaFilter = new Predicate<File>() { + @Override + public boolean apply(@Nullable File file) { + if ( file.getName().endsWith(".java") ) { + return true; + } else { + return false; + } + } + }; - /** - * Tests that all example activities can be loaded into Activity beans - * - * @throws Exception - */ - @Test - public void testStreamsPojoSourceGenerator() throws Exception { + /** + * Tests that StreamsPojoSourceGenerator via SDK generates pig resources. + * + * @throws Exception Exception + */ + @Test + public void testStreamsPojoSourceGenerator() throws Exception { - StreamsPojoGenerationConfig config = new StreamsPojoGenerationConfig(); + StreamsPojoGenerationConfig config = new StreamsPojoGenerationConfig(); - List<String> sourcePaths = Lists.newArrayList( - "target/test-classes/activitystreams-schemas/activity.json", - "target/test-classes/activitystreams-schemas/collection.json", - "target/test-classes/activitystreams-schemas/media_link.json", - "target/test-classes/activitystreams-schemas/object.json", - "target/test-classes/activitystreams-schemas/objectTypes", - "target/test-classes/activitystreams-schemas/verbs" - ); - config.setSourcePaths(sourcePaths); + List<String> sourcePaths = Lists.newArrayList( + "target/test-classes/activitystreams-schemas/activity.json", + "target/test-classes/activitystreams-schemas/collection.json", + "target/test-classes/activitystreams-schemas/media_link.json", + "target/test-classes/activitystreams-schemas/object.json", + "target/test-classes/activitystreams-schemas/objectTypes", + "target/test-classes/activitystreams-schemas/verbs" + ); + config.setSourcePaths(sourcePaths); - config.setTargetPackage("org.apache.streams.pojo"); - config.setTargetDirectory("target/generated-sources/pojo"); + config.setTargetPackage("org.apache.streams.pojo"); + config.setTargetDirectory("target/generated-sources/pojo"); - StreamsPojoSourceGenerator streamsPojoSourceGenerator = new StreamsPojoSourceGenerator(config); - streamsPojoSourceGenerator.run(); + StreamsPojoSourceGenerator streamsPojoSourceGenerator = new StreamsPojoSourceGenerator(config); + streamsPojoSourceGenerator.run(); - assert( config.getTargetDirectory() != null ); - assert( config.getTargetDirectory().exists() == true ); - assert( config.getTargetDirectory().isDirectory() == true ); + assert ( config.getTargetDirectory() != null ); + assert ( config.getTargetDirectory().exists() == true ); + assert ( config.getTargetDirectory().isDirectory() == true ); - Iterable<File> outputIterator = Files.fileTreeTraverser().breadthFirstTraversal(config.getTargetDirectory()) - .filter(javaFilter); - Collection<File> outputCollection = Lists.newArrayList(outputIterator); - assert( outputCollection.size() > 133 ); + Iterable<File> outputIterator = Files.fileTreeTraverser().breadthFirstTraversal(config.getTargetDirectory()) + .filter(javaFilter); + Collection<File> outputCollection = Lists.newArrayList(outputIterator); + assert ( outputCollection.size() > 133 ); } } \ No newline at end of file http://git-wip-us.apache.org/repos/asf/incubator-streams/blob/5dffd5c3/streams-plugins/streams-plugin-scala/src/main/java/org/apache/streams/plugins/StreamsScalaGenerationConfig.java ---------------------------------------------------------------------- diff --git a/streams-plugins/streams-plugin-scala/src/main/java/org/apache/streams/plugins/StreamsScalaGenerationConfig.java b/streams-plugins/streams-plugin-scala/src/main/java/org/apache/streams/plugins/StreamsScalaGenerationConfig.java index 18ae551..f6ee814 100644 --- a/streams-plugins/streams-plugin-scala/src/main/java/org/apache/streams/plugins/StreamsScalaGenerationConfig.java +++ b/streams-plugins/streams-plugin-scala/src/main/java/org/apache/streams/plugins/StreamsScalaGenerationConfig.java @@ -19,47 +19,40 @@ package org.apache.streams.plugins; -import org.jsonschema2pojo.DefaultGenerationConfig; -import org.jsonschema2pojo.util.URLUtil; - import java.io.File; -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. + * Configures StreamsScalaSourceGenerator. */ public class StreamsScalaGenerationConfig { - private List<String> sourcePackages; - private String targetPackage; - private String targetDirectory; + private List<String> sourcePackages; + private String targetPackage; + private String targetDirectory; - public void setSourcePackages(List<String> sourcePackages) { - this.sourcePackages = sourcePackages; - } + public void setSourcePackages(List<String> sourcePackages) { + this.sourcePackages = sourcePackages; + } - public List<String> getSourcePackages() { - return sourcePackages; - } + public List<String> getSourcePackages() { + return sourcePackages; + } - public void setTargetPackage(String targetPackage) { - this.targetPackage = targetPackage; - } + public void setTargetPackage(String targetPackage) { + this.targetPackage = targetPackage; + } - public void setTargetDirectory(String targetDirectory) { - this.targetDirectory = targetDirectory; - } + public void setTargetDirectory(String targetDirectory) { + this.targetDirectory = targetDirectory; + } - public String getTargetPackage() { - return targetPackage; - } + public String getTargetPackage() { + return targetPackage; + } - public File getTargetDirectory() { - return new File(targetDirectory); - } + public File getTargetDirectory() { + return new File(targetDirectory); + } } http://git-wip-us.apache.org/repos/asf/incubator-streams/blob/5dffd5c3/streams-plugins/streams-plugin-scala/src/main/java/org/apache/streams/plugins/StreamsScalaSourceGenerator.java ---------------------------------------------------------------------- diff --git a/streams-plugins/streams-plugin-scala/src/main/java/org/apache/streams/plugins/StreamsScalaSourceGenerator.java b/streams-plugins/streams-plugin-scala/src/main/java/org/apache/streams/plugins/StreamsScalaSourceGenerator.java index 4891c0d..ce9b766 100644 --- a/streams-plugins/streams-plugin-scala/src/main/java/org/apache/streams/plugins/StreamsScalaSourceGenerator.java +++ b/streams-plugins/streams-plugin-scala/src/main/java/org/apache/streams/plugins/StreamsScalaSourceGenerator.java @@ -20,7 +20,6 @@ package org.apache.streams.plugins; import com.google.common.base.Splitter; -import com.google.common.base.Strings; import com.google.common.collect.Lists; import com.google.common.collect.Maps; import org.reflections.ReflectionUtils; @@ -43,337 +42,389 @@ import java.util.Map; import java.util.Set; /** - * Created by sblackmon on 11/18/15. + * Embed within your own java code + * + * <p/> + * StreamsScalaGenerationConfig config = new StreamsScalaGenerationConfig(); + * config.setTargetDirectory("target/generated-sources/scala"); + * config.setTargetPackage("com.example"); + * StreamsScalaSourceGenerator generator = new StreamsScalaSourceGenerator(config); + * generator.run(); + * */ public class StreamsScalaSourceGenerator implements Runnable { - private final static Logger LOGGER = LoggerFactory.getLogger(StreamsScalaSourceGenerator.class); - - private final static String LS = System.getProperty("line.separator"); - - private StreamsScalaGenerationConfig config; + private static final Logger LOGGER = LoggerFactory.getLogger(StreamsScalaSourceGenerator.class); - private Reflections reflections; + private static final String LS = System.getProperty("line.separator"); - private String outDir; + private StreamsScalaGenerationConfig config; - public static void main(String[] args) { - StreamsScalaGenerationConfig config = new StreamsScalaGenerationConfig(); + private Reflections reflections; - List<String> sourcePackages = Lists.newArrayList(); - String targetDirectory = "target/generated-sources/pojo"; - String targetPackage = ""; + private String outDir; - if( args.length > 0 ) - sourcePackages = Splitter.on(',').splitToList(args[0]); - if( args.length > 1 ) - targetDirectory = args[1]; - if( args.length > 2 ) - targetPackage = args[2]; + /** + * Run from CLI without Maven + * + * <p/> + * java -jar streams-plugin-scala-jar-with-dependencies.jar StreamsScalaSourceGenerator target/generated-sources + * + * @param args [targetDirectory, targetPackage] + * */ + public static void main(String[] args) { + StreamsScalaGenerationConfig config = new StreamsScalaGenerationConfig(); - config.setSourcePackages(sourcePackages); - config.setTargetPackage(targetPackage); - config.setTargetDirectory(targetDirectory); + List<String> sourcePackages = Lists.newArrayList(); + String targetDirectory = "target/generated-sources/pojo"; + String targetPackage = ""; - StreamsScalaSourceGenerator streamsScalaSourceGenerator = new StreamsScalaSourceGenerator(config); - streamsScalaSourceGenerator.run(); + if ( args.length > 0 ) { + sourcePackages = Splitter.on(',').splitToList(args[0]); } - - public StreamsScalaSourceGenerator(StreamsScalaGenerationConfig config) { - this.config = config; - this.outDir = config.getTargetDirectory().getAbsolutePath(); - reflections = new Reflections( - new ConfigurationBuilder() - // TODO - .forPackages( - config.getSourcePackages() - .toArray(new String[config.getSourcePackages().size()]) - ) - .setScanners( - new SubTypesScanner(), - new TypeAnnotationsScanner())); - + if ( args.length > 1 ) { + targetDirectory = args[1]; } - - public void run() { - - List<Class<?>> serializableClasses = detectSerializableClasses(); - - LOGGER.info("Detected {} serialiables:", serializableClasses.size()); - for( Class clazz : serializableClasses ) - LOGGER.debug(clazz.toString()); - - List<Class<?>> pojoClasses = detectPojoClasses(serializableClasses); - - LOGGER.info("Detected {} pojos:", pojoClasses.size()); - for( Class clazz : pojoClasses ) - LOGGER.debug(clazz.toString()); - - List<Class<?>> traits = detectTraits(pojoClasses); - - LOGGER.info("Detected {} traits:", traits.size()); - for( Class clazz : traits ) - LOGGER.debug(clazz.toString()); - - List<Class<?>> cases = detectCases(pojoClasses); - - LOGGER.info("Detected {} cases:", cases.size()); - for( Class clazz : cases ) - LOGGER.debug(clazz.toString()); - - - for( Class clazz : traits ) { - String pojoPath = clazz.getPackage().getName().replace(".pojo.json", ".scala").replace(".","/")+"/traits/"; - String pojoName = clazz.getSimpleName()+".scala"; - String pojoScala = renderTrait(clazz); - writeFile(outDir+"/"+pojoPath+pojoName, pojoScala); - } - - for( Class clazz : traits ) { - String pojoPath = clazz.getPackage().getName().replace(".pojo.json", ".scala").replace(".","/")+"/"; - String pojoName = clazz.getSimpleName()+".scala"; - String pojoScala = renderClass(clazz); - writeFile(outDir+"/"+pojoPath+pojoName, pojoScala); - } - - for( Class clazz : cases ) { - String pojoPath = clazz.getPackage().getName().replace(".pojo.json", ".scala").replace(".","/")+"/"; - String pojoName = clazz.getSimpleName()+".scala"; - String pojoScala = renderCase(clazz); - writeFile(outDir+"/"+pojoPath+pojoName, pojoScala); - } - + if ( args.length > 2 ) { + targetPackage = args[2]; } - private void writeFile(String pojoFile, String pojoScala) { - try { - File path = new File(pojoFile); - File dir = path.getParentFile(); - if( !dir.exists() ) - dir.mkdirs(); - Files.write(Paths.get(pojoFile), pojoScala.getBytes(), StandardOpenOption.CREATE_NEW); - } catch (Exception e) { - LOGGER.error("Write Exception: {}", e); - } + config.setSourcePackages(sourcePackages); + config.setTargetPackage(targetPackage); + config.setTargetDirectory(targetDirectory); + + StreamsScalaSourceGenerator streamsScalaSourceGenerator = new StreamsScalaSourceGenerator(config); + streamsScalaSourceGenerator.run(); + } + + /** + * StreamsScalaSourceGenerator constructor. + * @param config StreamsScalaGenerationConfig + */ + public StreamsScalaSourceGenerator(StreamsScalaGenerationConfig config) { + this.config = config; + this.outDir = config.getTargetDirectory().getAbsolutePath(); + reflections = new Reflections( + new ConfigurationBuilder() + // TODO + .forPackages( + config.getSourcePackages() + .toArray(new String[config.getSourcePackages().size()]) + ) + .setScanners( + new SubTypesScanner(), + new TypeAnnotationsScanner())); + + } + + @Override + public void run() { + + List<Class<?>> serializableClasses = detectSerializableClasses(); + + LOGGER.info("Detected {} serialiables:", serializableClasses.size()); + for ( Class clazz : serializableClasses ) { + LOGGER.debug(clazz.toString()); } - public List<Class<?>> detectSerializableClasses() { + List<Class<?>> pojoClasses = detectPojoClasses(serializableClasses); - Set<Class<? extends Serializable>> classes = - reflections.getSubTypesOf(java.io.Serializable.class); - - List<Class<?>> result = Lists.newArrayList(); - - for( Class clazz : classes ) { - result.add(clazz); - } - - return result; + LOGGER.info("Detected {} pojos:", pojoClasses.size()); + for ( Class clazz : pojoClasses ) { + LOGGER.debug(clazz.toString()); } - public List<Class<?>> detectPojoClasses(List<Class<?>> classes) { + List<Class<?>> traits = detectTraits(pojoClasses); - List<Class<?>> result = Lists.newArrayList(); + LOGGER.info("Detected {} traits:", traits.size()); + for ( Class clazz : traits ) { + LOGGER.debug(clazz.toString()); + } - for( Class clazz : classes ) { - try { - clazz.newInstance().toString(); - } catch( Exception e) {} - // super-halfass way to know if this is a jsonschema2pojo - if( clazz.getAnnotations().length >= 1 ) - result.add(clazz); - } + List<Class<?>> cases = detectCases(pojoClasses); - return result; + LOGGER.info("Detected {} cases:", cases.size()); + for ( Class clazz : cases ) { + LOGGER.debug(clazz.toString()); } - public List<Class<?>> detectTraits(List<Class<?>> classes) { + for ( Class clazz : traits ) { + String pojoPath = clazz.getPackage().getName().replace(".pojo.json", ".scala").replace(".","/") + "/traits/"; + String pojoName = clazz.getSimpleName() + ".scala"; + String pojoScala = renderTrait(clazz); + writeFile(outDir + "/" + pojoPath + pojoName, pojoScala); + } - List<Class<?>> traits = Lists.newArrayList(); + for ( Class clazz : traits ) { + String pojoPath = clazz.getPackage().getName().replace(".pojo.json", ".scala").replace(".","/") + "/"; + String pojoName = clazz.getSimpleName() + ".scala"; + String pojoScala = renderClass(clazz); + writeFile(outDir + "/" + pojoPath + pojoName, pojoScala); + } - for( Class clazz : classes ) { - if (reflections.getSubTypesOf(clazz).size() > 0) - traits.add(clazz); - } + for ( Class clazz : cases ) { + String pojoPath = clazz.getPackage().getName().replace(".pojo.json", ".scala").replace(".","/") + "/"; + String pojoName = clazz.getSimpleName() + ".scala"; + String pojoScala = renderCase(clazz); + writeFile(outDir + "/" + pojoPath + pojoName, pojoScala); + } - return traits; + } + + private void writeFile(String pojoFile, String pojoScala) { + try { + File path = new File(pojoFile); + File dir = path.getParentFile(); + if ( !dir.exists() ) { + dir.mkdirs(); + } + Files.write(Paths.get(pojoFile), pojoScala.getBytes(), StandardOpenOption.CREATE_NEW); + } catch (Exception ex) { + LOGGER.error("Write Exception: {}", ex); } + } - public List<Class<?>> detectCases(List<Class<?>> classes) { + /** + * detectSerializableClasses. + * @return List of Serializable Classes + */ + public List<Class<?>> detectSerializableClasses() { - List<Class<?>> cases = Lists.newArrayList(); + Set<Class<? extends Serializable>> classes = + reflections.getSubTypesOf(java.io.Serializable.class); - for( Class clazz : classes ) { - if (reflections.getSubTypesOf(clazz).size() == 0) - cases.add(clazz); - } + List<Class<?>> result = Lists.newArrayList(); - return cases; + for ( Class clazz : classes ) { + result.add(clazz); } + return result; + } + + /** + * detect which Classes are Pojo Classes. + * @param classes List of candidate Pojo Classes + * @return List of actual Pojo Classes + */ + public List<Class<?>> detectPojoClasses(List<Class<?>> classes) { + + List<Class<?>> result = Lists.newArrayList(); + + for ( Class clazz : classes ) { + try { + clazz.newInstance().toString(); + } catch ( Exception ex) { + // + } + // super-halfass way to know if this is a jsonschema2pojo + if ( clazz.getAnnotations().length >= 1 ) { + result.add(clazz); + } + } - public String renderTrait(Class<?> pojoClass) { - StringBuffer stringBuffer = new StringBuffer(); - stringBuffer.append("package "); - stringBuffer.append(pojoClass.getPackage().getName().replace(".pojo.json", ".scala")); - stringBuffer.append(".traits"); - stringBuffer.append(LS); - stringBuffer.append("trait "+pojoClass.getSimpleName()); - stringBuffer.append(" extends Serializable"); - stringBuffer.append(" {"); + return result; + } - Set<Field> fields = ReflectionUtils.getAllFields(pojoClass); - appendFields(stringBuffer, fields, "def", ";"); + private List<Class<?>> detectTraits(List<Class<?>> classes) { - stringBuffer.append("}"); + List<Class<?>> traits = Lists.newArrayList(); - return stringBuffer.toString(); + for ( Class clazz : classes ) { + if (reflections.getSubTypesOf(clazz).size() > 0) { + traits.add(clazz); + } } - public String renderClass(Class<?> pojoClass) { - StringBuffer stringBuffer = new StringBuffer(); - stringBuffer.append("package "); - stringBuffer.append(pojoClass.getPackage().getName().replace(".pojo.json", ".scala")); - stringBuffer.append(LS); - stringBuffer.append("import org.apache.commons.lang.builder.{HashCodeBuilder, EqualsBuilder, ToStringBuilder}"); - stringBuffer.append(LS); - stringBuffer.append("class "+pojoClass.getSimpleName()); - stringBuffer.append(" ("); + return traits; + } - Set<Field> fields = ReflectionUtils.getAllFields(pojoClass); - appendFields(stringBuffer, fields, "var", ","); + private List<Class<?>> detectCases(List<Class<?>> classes) { - stringBuffer.append(")"); - stringBuffer.append(" extends "+pojoClass.getPackage().getName().replace(".pojo.json", ".scala")+".traits."+pojoClass.getSimpleName()); - stringBuffer.append(" with Serializable "); - stringBuffer.append("{ "); - stringBuffer.append(LS); - stringBuffer.append("override def equals(obj: Any) = obj match { "); - stringBuffer.append(LS); - stringBuffer.append(" case other: "); - stringBuffer.append(pojoClass.getSimpleName()); - stringBuffer.append(" => other.getClass == getClass && EqualsBuilder.reflectionEquals(this,obj)"); - stringBuffer.append(LS); - stringBuffer.append(" case _ => false"); - stringBuffer.append(LS); - stringBuffer.append("}"); - stringBuffer.append(LS); - stringBuffer.append("override def hashCode = new HashCodeBuilder().hashCode"); - stringBuffer.append(LS); - stringBuffer.append("}"); + List<Class<?>> cases = Lists.newArrayList(); - return stringBuffer.toString(); + for ( Class clazz : classes ) { + if (reflections.getSubTypesOf(clazz).size() == 0) { + cases.add(clazz); + } } - public String renderCase(Class<?> pojoClass) { - StringBuffer stringBuffer = new StringBuffer(); - stringBuffer.append("package "); - stringBuffer.append(pojoClass.getPackage().getName().replace(".pojo.json", ".scala")); - stringBuffer.append(LS); - stringBuffer.append("case class "+pojoClass.getSimpleName()); - stringBuffer.append("("); - Set<Field> fields = ReflectionUtils.getAllFields(pojoClass); - appendFields(stringBuffer, fields, "var", ","); - stringBuffer.append(")"); - if( pojoClass.getSuperclass() != null && !pojoClass.getSuperclass().equals(java.lang.Object.class)) { - stringBuffer.append(" extends "+pojoClass.getSuperclass().getPackage().getName().replace(".pojo.json", ".scala")+".traits."+pojoClass.getSuperclass().getSimpleName()); - } - stringBuffer.append(LS); - - return stringBuffer.toString(); + return cases; + } + + private String renderTrait(Class<?> pojoClass) { + StringBuffer stringBuffer = new StringBuffer(); + stringBuffer.append("package "); + stringBuffer.append(pojoClass.getPackage().getName().replace(".pojo.json", ".scala")); + stringBuffer.append(".traits"); + stringBuffer.append(LS); + stringBuffer.append("trait " + pojoClass.getSimpleName()); + stringBuffer.append(" extends Serializable"); + stringBuffer.append(" {"); + + Set<Field> fields = ReflectionUtils.getAllFields(pojoClass); + appendFields(stringBuffer, fields, "def", ";"); + + stringBuffer.append("}"); + + return stringBuffer.toString(); + } + + private String renderClass(Class<?> pojoClass) { + StringBuffer stringBuffer = new StringBuffer(); + stringBuffer.append("package "); + stringBuffer.append(pojoClass.getPackage().getName().replace(".pojo.json", ".scala")); + stringBuffer.append(LS); + stringBuffer.append("import org.apache.commons.lang.builder.{HashCodeBuilder, EqualsBuilder, ToStringBuilder}"); + stringBuffer.append(LS); + stringBuffer.append("class " + pojoClass.getSimpleName()); + stringBuffer.append(" ("); + + Set<Field> fields = ReflectionUtils.getAllFields(pojoClass); + appendFields(stringBuffer, fields, "var", ","); + + stringBuffer.append(")"); + stringBuffer.append(" extends " + pojoClass.getPackage().getName().replace(".pojo.json", ".scala") + ".traits." + pojoClass.getSimpleName()); + stringBuffer.append(" with Serializable "); + stringBuffer.append("{ "); + stringBuffer.append(LS); + stringBuffer.append("override def equals(obj: Any) = obj match { "); + stringBuffer.append(LS); + stringBuffer.append(" case other: "); + stringBuffer.append(pojoClass.getSimpleName()); + stringBuffer.append(" => other.getClass == getClass && EqualsBuilder.reflectionEquals(this,obj)"); + stringBuffer.append(LS); + stringBuffer.append(" case _ => false"); + stringBuffer.append(LS); + stringBuffer.append("}"); + stringBuffer.append(LS); + stringBuffer.append("override def hashCode = new HashCodeBuilder().hashCode"); + stringBuffer.append(LS); + stringBuffer.append("}"); + + return stringBuffer.toString(); + } + + private String renderCase(Class<?> pojoClass) { + StringBuffer stringBuffer = new StringBuffer(); + stringBuffer.append("package "); + stringBuffer.append(pojoClass.getPackage().getName().replace(".pojo.json", ".scala")); + stringBuffer.append(LS); + stringBuffer.append("case class " + pojoClass.getSimpleName()); + stringBuffer.append("("); + Set<Field> fields = ReflectionUtils.getAllFields(pojoClass); + appendFields(stringBuffer, fields, "var", ","); + stringBuffer.append(")"); + if ( pojoClass.getSuperclass() != null && !pojoClass.getSuperclass().equals(java.lang.Object.class)) { + stringBuffer.append(" extends " + pojoClass.getSuperclass().getPackage().getName().replace(".pojo.json", ".scala") + ".traits." + pojoClass.getSuperclass().getSimpleName()); } - - private void appendFields(StringBuffer stringBuffer, Set<Field> fields, String varDef, String fieldDelimiter) { - if( fields.size() > 0 ) { - stringBuffer.append(LS); - Map<String,Field> fieldsToAppend = uniqueFields(fields); - for( Iterator<Field> iter = fieldsToAppend.values().iterator(); iter.hasNext(); ) { - Field field = iter.next(); - if( override( field ) ) - stringBuffer.append("override "); - stringBuffer.append(varDef); - stringBuffer.append(" "); - stringBuffer.append(name(field)); - stringBuffer.append(": "); - if( option(field) ) { - stringBuffer.append("scala.Option["); - stringBuffer.append(type(field)); - stringBuffer.append("]"); - } else { - stringBuffer.append(type(field)); - } - if( !fieldDelimiter.equals(";") && value(field) != null) { - stringBuffer.append(" = "); - if( option(field) ) { - stringBuffer.append("scala.Some("); - stringBuffer.append(value(field)); - stringBuffer.append(")"); - } else { - stringBuffer.append(value(field)); - } - } - if( iter.hasNext()) stringBuffer.append(fieldDelimiter); - stringBuffer.append(LS); - } + stringBuffer.append(LS); + + return stringBuffer.toString(); + } + + private void appendFields(StringBuffer stringBuffer, Set<Field> fields, String varDef, String fieldDelimiter) { + if ( fields.size() > 0 ) { + stringBuffer.append(LS); + Map<String,Field> fieldsToAppend = uniqueFields(fields); + for ( Iterator<Field> iter = fieldsToAppend.values().iterator(); iter.hasNext(); ) { + Field field = iter.next(); + if ( override( field ) ) { + stringBuffer.append("override "); + } + stringBuffer.append(varDef); + stringBuffer.append(" "); + stringBuffer.append(name(field)); + stringBuffer.append(": "); + if ( option(field) ) { + stringBuffer.append("scala.Option["); + stringBuffer.append(type(field)); + stringBuffer.append("]"); } else { - stringBuffer.append(LS); + stringBuffer.append(type(field)); + } + if ( !fieldDelimiter.equals(";") && value(field) != null) { + stringBuffer.append(" = "); + if ( option(field) ) { + stringBuffer.append("scala.Some("); + stringBuffer.append(value(field)); + stringBuffer.append(")"); + } else { + stringBuffer.append(value(field)); + } } + if ( iter.hasNext()) { + stringBuffer.append(fieldDelimiter); + } + stringBuffer.append(LS); + } + } else { + stringBuffer.append(LS); } - - private boolean option(Field field) { - if( field.getName().equals("verb")) { - return false; - } else if( field.getType().equals(java.util.Map.class)) { - return false; - } else if( field.getType().equals(java.util.List.class)) { - return false; - } else return true; + } + + private boolean option(Field field) { + if ( field.getName().equals("verb")) { + return false; + } else if ( field.getType().equals(java.util.Map.class)) { + return false; + } else if ( field.getType().equals(java.util.List.class)) { + return false; + } else { + return true; } - - private String value(Field field) { - if( field.getName().equals("verb")) { - return "\"post\""; - } else if( field.getName().equals("objectType")) { - return "\"application\""; - } else return null; + } + + private String value(Field field) { + if ( field.getName().equals("verb")) { + return "\"post\""; + } else if ( field.getName().equals("objectType")) { + return "\"application\""; + } else { + return null; } - - private String type(Field field) { - if( field.getType().equals(java.lang.String.class)) { - return "String"; - } else if( field.getType().equals(java.util.Map.class)) { - return "scala.collection.mutable.Map[String,Any]"; - } else if( field.getType().equals(java.util.List.class)) { - return "scala.collection.mutable.MutableList[Any]"; - } - return field.getType().getCanonicalName().replace(".pojo.json", ".scala"); + } + + private String type(Field field) { + if ( field.getType().equals(java.lang.String.class)) { + return "String"; + } else if ( field.getType().equals(java.util.Map.class)) { + return "scala.collection.mutable.Map[String,Any]"; + } else if ( field.getType().equals(java.util.List.class)) { + return "scala.collection.mutable.MutableList[Any]"; } - - private Map<String,Field> uniqueFields(Set<Field> fieldset) { - Map<String,Field> fields = Maps.newTreeMap(); - Field item = null; - for( Iterator<Field> it = fieldset.iterator(); it.hasNext(); item = it.next() ) { - if( item != null && item.getName() != null ) { - Field added = fields.put(item.getName(), item); - } - // ensure right class will get used - } - return fields; + return field.getType().getCanonicalName().replace(".pojo.json", ".scala"); + } + + private Map<String,Field> uniqueFields(Set<Field> fieldset) { + Map<String,Field> fields = Maps.newTreeMap(); + Field item = null; + for ( Iterator<Field> it = fieldset.iterator(); it.hasNext(); item = it.next() ) { + if ( item != null && item.getName() != null ) { + Field added = fields.put(item.getName(), item); + } + // ensure right class will get used } - - private String name(Field field) { - if( field.getName().equals("object")) - return "obj"; - else return field.getName(); + return fields; + } + + private String name(Field field) { + if ( field.getName().equals("object")) { + return "obj"; + } else { + return field.getName(); } - - private boolean override(Field field) { - try { - if( field.getDeclaringClass().getSuperclass().getField(field.getName()) != null ) - return true; - else return false; - } catch( Exception e ) { - return false; - } + } + + private boolean override(Field field) { + try { + if ( field.getDeclaringClass().getSuperclass().getField(field.getName()) != null ) { + return true; + } else { + return false; + } + } catch ( Exception ex ) { + return false; } + } } http://git-wip-us.apache.org/repos/asf/incubator-streams/blob/5dffd5c3/streams-plugins/streams-plugin-scala/src/main/java/org/apache/streams/plugins/StreamsScalaSourceGeneratorMojo.java ---------------------------------------------------------------------- diff --git a/streams-plugins/streams-plugin-scala/src/main/java/org/apache/streams/plugins/StreamsScalaSourceGeneratorMojo.java b/streams-plugins/streams-plugin-scala/src/main/java/org/apache/streams/plugins/StreamsScalaSourceGeneratorMojo.java index ae91b36..44c82ac 100644 --- a/streams-plugins/streams-plugin-scala/src/main/java/org/apache/streams/plugins/StreamsScalaSourceGeneratorMojo.java +++ b/streams-plugins/streams-plugin-scala/src/main/java/org/apache/streams/plugins/StreamsScalaSourceGeneratorMojo.java @@ -20,9 +20,9 @@ package org.apache.streams.plugins; import com.google.common.base.Splitter; -import com.google.common.base.Strings; import org.apache.maven.plugin.AbstractMojo; import org.apache.maven.plugin.MojoExecutionException; +import org.apache.maven.plugin.MojoFailureException; import org.apache.maven.plugins.annotations.Component; import org.apache.maven.plugins.annotations.Execute; import org.apache.maven.plugins.annotations.LifecyclePhase; @@ -34,52 +34,59 @@ import org.slf4j.LoggerFactory; import java.io.File; -@Mojo( name = "scala", - defaultPhase = LifecyclePhase.GENERATE_SOURCES -) -@Execute( goal = "scala", - phase = LifecyclePhase.GENERATE_SOURCES -) +@Mojo( + name = "scala", + defaultPhase = LifecyclePhase.GENERATE_SOURCES + ) +@Execute( + goal = "scala", + phase = LifecyclePhase.GENERATE_SOURCES + ) public class StreamsScalaSourceGeneratorMojo extends AbstractMojo { - private final static Logger LOGGER = LoggerFactory.getLogger(StreamsScalaSourceGeneratorMojo.class); + private static final Logger LOGGER = LoggerFactory.getLogger(StreamsScalaSourceGeneratorMojo.class); - @Component - private MavenProject project; + @Component + private MavenProject project; -// @Component -// private Settings settings; -// -// @Parameter( defaultValue = "${localRepository}", readonly = true, required = true ) -// protected ArtifactRepository localRepository; -// -// @Parameter( defaultValue = "${plugin}", readonly = true ) // Maven 3 only -// private PluginDescriptor plugin; -// - @Parameter( defaultValue = "${project.basedir}", readonly = true ) - private File basedir; + // @Component + // private Settings settings; + // + // @Parameter( defaultValue = "${localRepository}", readonly = true, required = true ) + // protected ArtifactRepository localRepository; + // + // @Parameter( defaultValue = "${plugin}", readonly = true ) // Maven 3 only + // private PluginDescriptor plugin; + // + @Parameter( defaultValue = "${project.basedir}", readonly = true ) + private File basedir; - @Parameter(defaultValue = "${project.build.directory}", readonly = true) - private File target; + @Parameter(defaultValue = "${project.build.directory}", readonly = true) + private File target; - @Parameter(defaultValue = "org.apache.streams.pojo.json", readonly = true) - private String packages; + @Parameter(defaultValue = "org.apache.streams.pojo.json", readonly = true) + private String packages; - public void execute() throws MojoExecutionException { - StreamsScalaGenerationConfig config = new StreamsScalaGenerationConfig(); - config.setSourcePackages(Splitter.on(',').splitToList(packages)); - config.setTargetDirectory(target.toString()); + /** + * execute StreamsScalaSourceGeneratorMojo. + * @throws MojoExecutionException MojoExecutionException + * @throws MojoFailureException MojoFailureException + */ + public void execute() throws MojoExecutionException { + StreamsScalaGenerationConfig config = new StreamsScalaGenerationConfig(); + config.setSourcePackages(Splitter.on(',').splitToList(packages)); + config.setTargetDirectory(target.toString()); - StreamsScalaSourceGenerator streamsScalaSourceGenerator = new StreamsScalaSourceGenerator(config); + StreamsScalaSourceGenerator streamsScalaSourceGenerator = new StreamsScalaSourceGenerator(config); - streamsScalaSourceGenerator.run(); - } + streamsScalaSourceGenerator.run(); + } - public File getTarget() { - return target; - } + public File getTarget() { + return target; + } - public String getPackages() { - return packages; - } + public String getPackages() { + return packages; + } } \ No newline at end of file http://git-wip-us.apache.org/repos/asf/incubator-streams/blob/5dffd5c3/streams-plugins/streams-plugin-scala/src/test/java/org/apache/streams/plugins/test/StreamsScalaSourceGeneratorCLITest.java ---------------------------------------------------------------------- diff --git a/streams-plugins/streams-plugin-scala/src/test/java/org/apache/streams/plugins/test/StreamsScalaSourceGeneratorCLITest.java b/streams-plugins/streams-plugin-scala/src/test/java/org/apache/streams/plugins/test/StreamsScalaSourceGeneratorCLITest.java index 6394193..0365af4 100644 --- a/streams-plugins/streams-plugin-scala/src/test/java/org/apache/streams/plugins/test/StreamsScalaSourceGeneratorCLITest.java +++ b/streams-plugins/streams-plugin-scala/src/test/java/org/apache/streams/plugins/test/StreamsScalaSourceGeneratorCLITest.java @@ -19,9 +19,10 @@ package org.apache.streams.plugins.test; +import org.apache.streams.plugins.StreamsScalaSourceGenerator; + import com.google.common.collect.Lists; import com.google.common.io.Files; -import org.apache.streams.plugins.StreamsScalaSourceGenerator; import org.junit.Test; import org.slf4j.Logger; import org.slf4j.LoggerFactory; @@ -33,31 +34,31 @@ import java.util.List; import static org.apache.streams.plugins.test.StreamsScalaSourceGeneratorTest.scalaFilter; /** - * Created by sblackmon on 5/5/16. + * Test whether StreamsScalaSourceGeneratorCLI generates sources. */ public class StreamsScalaSourceGeneratorCLITest { - private final static Logger LOGGER = LoggerFactory.getLogger(StreamsScalaSourceGeneratorCLITest.class); + private static final Logger LOGGER = LoggerFactory.getLogger(StreamsScalaSourceGeneratorCLITest.class); - @Test - public void testStreamsScalaSourceGeneratorCLI() throws Exception { + @Test + public void testStreamsScalaSourceGeneratorCLI() throws Exception { - String sourcePackages = "org.apache.streams.pojo.json"; - String targetPackage = "org.apache.streams.scala"; - String targetDirectory = "./target/generated-sources/scala-cli"; + String sourcePackages = "org.apache.streams.pojo.json"; + String targetPackage = "org.apache.streams.scala"; + String targetDirectory = "./target/generated-sources/scala-cli"; - List<String> argsList = Lists.newArrayList(sourcePackages, targetDirectory, targetPackage); - StreamsScalaSourceGenerator.main(argsList.toArray(new String[argsList.size()])); + List<String> argsList = Lists.newArrayList(sourcePackages, targetDirectory, targetPackage); + StreamsScalaSourceGenerator.main(argsList.toArray(new String[argsList.size()])); - File testOutput = new File(targetDirectory); + File testOutput = new File(targetDirectory); - assert( testOutput != null ); - assert( testOutput.exists() == true ); - assert( testOutput.isDirectory() == true ); + assert ( testOutput != null ); + assert ( testOutput.exists() == true ); + assert ( testOutput.isDirectory() == true ); - Iterable<File> outputIterator = Files.fileTreeTraverser().breadthFirstTraversal(testOutput) - .filter(scalaFilter); - Collection<File> outputCollection = Lists.newArrayList(outputIterator); - assert( outputCollection.size() > 133 ); - } + Iterable<File> outputIterator = Files.fileTreeTraverser().breadthFirstTraversal(testOutput) + .filter(scalaFilter); + Collection<File> outputCollection = Lists.newArrayList(outputIterator); + assert ( outputCollection.size() > 133 ); + } } http://git-wip-us.apache.org/repos/asf/incubator-streams/blob/5dffd5c3/streams-plugins/streams-plugin-scala/src/test/java/org/apache/streams/plugins/test/StreamsScalaSourceGeneratorMojoIT.java ---------------------------------------------------------------------- diff --git a/streams-plugins/streams-plugin-scala/src/test/java/org/apache/streams/plugins/test/StreamsScalaSourceGeneratorMojoIT.java b/streams-plugins/streams-plugin-scala/src/test/java/org/apache/streams/plugins/test/StreamsScalaSourceGeneratorMojoIT.java index bcd988f..a0caecf 100644 --- a/streams-plugins/streams-plugin-scala/src/test/java/org/apache/streams/plugins/test/StreamsScalaSourceGeneratorMojoIT.java +++ b/streams-plugins/streams-plugin-scala/src/test/java/org/apache/streams/plugins/test/StreamsScalaSourceGeneratorMojoIT.java @@ -41,43 +41,42 @@ import static org.apache.streams.plugins.test.StreamsScalaSourceGeneratorTest.sc */ public class StreamsScalaSourceGeneratorMojoIT extends TestCase { - private final static Logger LOGGER = LoggerFactory.getLogger(StreamsScalaSourceGeneratorMojoIT.class); + private static final Logger LOGGER = LoggerFactory.getLogger(StreamsScalaSourceGeneratorMojoIT.class); - protected void setUp() throws Exception - { - // required for mojo lookups to work - super.setUp(); - } + protected void setUp() throws Exception { + // required for mojo lookups to work + super.setUp(); + } - @Test - public void testStreamsScalaSourceGeneratorMojo() throws Exception { + @Test + public void testStreamsScalaSourceGeneratorMojo() throws Exception { - File testDir = ResourceExtractor.simpleExtractResources( getClass(), "/streams-plugin-scala" ); + File testDir = ResourceExtractor.simpleExtractResources( getClass(), "/streams-plugin-scala" ); - Verifier verifier; + Verifier verifier; - verifier = new Verifier( testDir.getAbsolutePath() ); + verifier = new Verifier( testDir.getAbsolutePath() ); - List cliOptions = new ArrayList(); - cliOptions.add( "-N" ); - verifier.executeGoals( Lists.<String>newArrayList( - "compile")); + List cliOptions = new ArrayList(); + cliOptions.add( "-N" ); + verifier.executeGoals( Lists.<String>newArrayList( + "compile")); - verifier.verifyErrorFreeLog(); + verifier.verifyErrorFreeLog(); - verifier.resetStreams(); + verifier.resetStreams(); - File testOutput = new File(testDir.getAbsolutePath() + "/target/generated-sources/scala-mojo"); + File testOutput = new File(testDir.getAbsolutePath() + "/target/generated-sources/scala-mojo"); - assert( testOutput != null ); - assert( testOutput.exists() == true ); - assert( testOutput.isDirectory() == true ); + assert ( testOutput != null ); + assert ( testOutput.exists() == true ); + assert ( testOutput.isDirectory() == true ); - Iterable<File> outputIterator = Files.fileTreeTraverser().breadthFirstTraversal(testOutput) - .filter(scalaFilter); - Collection<File> outputCollection = Lists.newArrayList(outputIterator); - assert( outputCollection.size() > 133 ); + Iterable<File> outputIterator = Files.fileTreeTraverser().breadthFirstTraversal(testOutput) + .filter(scalaFilter); + Collection<File> outputCollection = Lists.newArrayList(outputIterator); + assert ( outputCollection.size() > 133 ); - } + } } \ No newline at end of file http://git-wip-us.apache.org/repos/asf/incubator-streams/blob/5dffd5c3/streams-plugins/streams-plugin-scala/src/test/java/org/apache/streams/plugins/test/StreamsScalaSourceGeneratorTest.java ---------------------------------------------------------------------- diff --git a/streams-plugins/streams-plugin-scala/src/test/java/org/apache/streams/plugins/test/StreamsScalaSourceGeneratorTest.java b/streams-plugins/streams-plugin-scala/src/test/java/org/apache/streams/plugins/test/StreamsScalaSourceGeneratorTest.java index fda4416..1fafaf4 100644 --- a/streams-plugins/streams-plugin-scala/src/test/java/org/apache/streams/plugins/test/StreamsScalaSourceGeneratorTest.java +++ b/streams-plugins/streams-plugin-scala/src/test/java/org/apache/streams/plugins/test/StreamsScalaSourceGeneratorTest.java @@ -19,78 +19,84 @@ package org.apache.streams.plugins.test; -import com.google.common.base.Predicate; -import com.google.common.collect.Lists; import org.apache.streams.plugins.StreamsScalaGenerationConfig; import org.apache.streams.plugins.StreamsScalaSourceGenerator; + +import com.google.common.base.Predicate; +import com.google.common.collect.Lists; import org.junit.Test; import org.slf4j.Logger; import org.slf4j.LoggerFactory; -import javax.annotation.Nullable; import java.io.File; import java.io.FileFilter; +import javax.annotation.Nullable; import static junit.framework.TestCase.assertEquals; import static org.junit.Assert.assertNotNull; import static org.junit.Assert.assertTrue; /** - * Test that Activity beans are compatible with the example activities in the spec. + * Tests that StreamsScalaSourceGenerator via SDK generates scala sources. */ public class StreamsScalaSourceGeneratorTest { - private final static Logger LOGGER = LoggerFactory.getLogger(StreamsScalaSourceGeneratorTest.class); + private static final Logger LOGGER = LoggerFactory.getLogger(StreamsScalaSourceGeneratorTest.class); - public static final Predicate<File> scalaFilter = new Predicate<File>() { - @Override - public boolean apply(@Nullable File file) { - if( file.getName().endsWith(".scala") ) - return true; - else return false; - } - }; - /** - * Tests that all example activities can be loaded into Activity beans - * - * @throws Exception - */ - @Test - public void testStreamsScalaSourceGenerator() throws Exception { + public static final Predicate<File> scalaFilter = new Predicate<File>() { + @Override + public boolean apply(@Nullable File file) { + if ( file.getName().endsWith(".scala") ) { + return true; + } else { + return false; + } + } + }; - StreamsScalaGenerationConfig streamsScalaGenerationConfig = new StreamsScalaGenerationConfig(); - streamsScalaGenerationConfig.setSourcePackages(Lists.newArrayList("org.apache.streams.pojo.json")); - streamsScalaGenerationConfig.setTargetPackage("org.apache.streams.scala"); - streamsScalaGenerationConfig.setTargetDirectory("target/generated-sources/scala-test"); + /** + * Tests that StreamsScalaSourceGenerator via SDK generates scala sources. + * + * @throws Exception Exception + */ + @Test + public void testStreamsScalaSourceGenerator() throws Exception { - StreamsScalaSourceGenerator streamsScalaSourceGenerator = new StreamsScalaSourceGenerator(streamsScalaGenerationConfig); - streamsScalaSourceGenerator.run(); + StreamsScalaGenerationConfig streamsScalaGenerationConfig = new StreamsScalaGenerationConfig(); + streamsScalaGenerationConfig.setSourcePackages(Lists.newArrayList("org.apache.streams.pojo.json")); + streamsScalaGenerationConfig.setTargetPackage("org.apache.streams.scala"); + streamsScalaGenerationConfig.setTargetDirectory("target/generated-sources/scala-test"); - File testOutput = new File( "./target/generated-sources/scala-test/org/apache/streams/scala"); - FileFilter scalaFilter = new FileFilter() { - @Override - public boolean accept(File pathname) { - if( pathname.getName().endsWith(".scala") ) - return true; - return false; - } - }; + StreamsScalaSourceGenerator streamsScalaSourceGenerator = new StreamsScalaSourceGenerator(streamsScalaGenerationConfig); + streamsScalaSourceGenerator.run(); - assertNotNull( testOutput ); - assertTrue( testOutput.exists() ); - assertTrue( testOutput.isDirectory() ); - assertEquals( 10, testOutput.listFiles(scalaFilter).length ); - assertTrue( new File(testOutput + "/traits").exists() ); - assertTrue( new File(testOutput + "/traits").isDirectory() ); - assertNotNull( new File(testOutput + "/traits").listFiles(scalaFilter) ); - assertEquals( 4, new File(testOutput + "/traits").listFiles(scalaFilter).length ); - assertTrue( new File(testOutput + "/objectTypes").exists() ); - assertTrue( new File(testOutput + "/objectTypes").isDirectory() ); - assertNotNull( new File(testOutput + "/objectTypes").listFiles(scalaFilter) ); - assertEquals( 42, new File(testOutput + "/objectTypes").listFiles(scalaFilter).length); - assertTrue( new File(testOutput + "/verbs").exists() ); - assertTrue( new File(testOutput + "/verbs").isDirectory() ); - assertNotNull( new File(testOutput + "/verbs").listFiles(scalaFilter) ); - assertEquals( 89, new File(testOutput + "/verbs").listFiles(scalaFilter).length ); - } + File testOutput = new File( "./target/generated-sources/scala-test/org/apache/streams/scala"); + FileFilter scalaFilter = new FileFilter() { + @Override + public boolean accept(File pathname) { + if ( pathname.getName().endsWith(".scala") ) { + return true; + } else { + return false; + } + } + }; + + assertNotNull( testOutput ); + assertTrue( testOutput.exists() ); + assertTrue( testOutput.isDirectory() ); + assertEquals( 10, testOutput.listFiles(scalaFilter).length ); + assertTrue( new File(testOutput + "/traits").exists() ); + assertTrue( new File(testOutput + "/traits").isDirectory() ); + assertNotNull( new File(testOutput + "/traits").listFiles(scalaFilter) ); + assertEquals( 4, new File(testOutput + "/traits").listFiles(scalaFilter).length ); + assertTrue( new File(testOutput + "/objectTypes").exists() ); + assertTrue( new File(testOutput + "/objectTypes").isDirectory() ); + assertNotNull( new File(testOutput + "/objectTypes").listFiles(scalaFilter) ); + assertEquals( 42, new File(testOutput + "/objectTypes").listFiles(scalaFilter).length); + assertTrue( new File(testOutput + "/verbs").exists() ); + assertTrue( new File(testOutput + "/verbs").isDirectory() ); + assertNotNull( new File(testOutput + "/verbs").listFiles(scalaFilter) ); + assertEquals( 89, new File(testOutput + "/verbs").listFiles(scalaFilter).length ); + } } \ No newline at end of file http://git-wip-us.apache.org/repos/asf/incubator-streams/blob/5dffd5c3/streams-pojo-extensions/src/main/java/org/apache/streams/data/util/PropertyUtil.java ---------------------------------------------------------------------- diff --git a/streams-pojo-extensions/src/main/java/org/apache/streams/data/util/PropertyUtil.java b/streams-pojo-extensions/src/main/java/org/apache/streams/data/util/PropertyUtil.java index f5a4b55..827bc6a 100644 --- a/streams-pojo-extensions/src/main/java/org/apache/streams/data/util/PropertyUtil.java +++ b/streams-pojo-extensions/src/main/java/org/apache/streams/data/util/PropertyUtil.java @@ -18,17 +18,17 @@ package org.apache.streams.data.util; +import org.apache.streams.jackson.StreamsJacksonMapper; + import com.fasterxml.jackson.databind.JsonNode; import com.fasterxml.jackson.databind.ObjectMapper; import com.fasterxml.jackson.databind.node.ArrayNode; import com.fasterxml.jackson.databind.node.ObjectNode; import com.fasterxml.jackson.databind.node.ValueNode; -import com.google.common.base.Joiner; import com.google.common.base.Splitter; import com.google.common.collect.Iterables; import com.google.common.collect.Lists; import com.google.common.collect.Maps; -import org.apache.streams.jackson.StreamsJacksonMapper; import java.util.Iterator; import java.util.List; @@ -39,87 +39,88 @@ import java.util.Map; */ public class PropertyUtil { - private static final ObjectMapper mapper = StreamsJacksonMapper.getInstance(); - - public static Map<String, Object> flattenToMap(ObjectNode object) { - Map<String, Object> flatObject = Maps.newHashMap(); - addKeys(new String(), object, flatObject, '.'); - return flatObject; - } - - public static ObjectNode flattenToObjectNode(ObjectNode object) { - Map<String, Object> flatObject = flattenToMap(object, '.'); - addKeys(new String(), object, flatObject, '.'); - return mapper.convertValue(flatObject, ObjectNode.class); - } - - public static Map<String, Object> flattenToMap(ObjectNode object, char seperator) { - Map<String, Object> flatObject = Maps.newHashMap(); - addKeys(new String(), object, flatObject, seperator); - return flatObject; + private static final ObjectMapper mapper = StreamsJacksonMapper.getInstance(); + + public static Map<String, Object> flattenToMap(ObjectNode object) { + Map<String, Object> flatObject = Maps.newHashMap(); + addKeys(new String(), object, flatObject, '.'); + return flatObject; + } + + public static Map<String, Object> flattenToMap(ObjectNode object, char seperator) { + Map<String, Object> flatObject = Maps.newHashMap(); + addKeys(new String(), object, flatObject, seperator); + return flatObject; + } + + public static ObjectNode flattenToObjectNode(ObjectNode object) { + Map<String, Object> flatObject = flattenToMap(object, '.'); + addKeys(new String(), object, flatObject, '.'); + return mapper.convertValue(flatObject, ObjectNode.class); + } + + public static ObjectNode flattenToObjectNode(ObjectNode object, char seperator) { + Map<String, Object> flatObject = flattenToMap(object, seperator); + addKeys(new String(), object, flatObject, seperator); + return mapper.convertValue(flatObject, ObjectNode.class); + } + + private static void addKeys(String currentPath, JsonNode jsonNode, Map<String, Object> map, char seperator) { + if (jsonNode.isObject()) { + ObjectNode objectNode = (ObjectNode) jsonNode; + Iterator<Map.Entry<String, JsonNode>> iter = objectNode.fields(); + String pathPrefix = currentPath.isEmpty() ? "" : currentPath + seperator; + + while (iter.hasNext()) { + Map.Entry<String, JsonNode> entry = iter.next(); + addKeys(pathPrefix + entry.getKey(), entry.getValue(), map, seperator); + } + } else if (jsonNode.isArray()) { + ArrayNode arrayNode = (ArrayNode) jsonNode; + map.put(currentPath, arrayNode); + } else if (jsonNode.isValueNode()) { + ValueNode valueNode = (ValueNode) jsonNode; + if ( valueNode.isTextual() ) { + map.put(currentPath, valueNode.asText()); + } else if ( valueNode.isNumber() ) { + map.put(currentPath, valueNode); + } } - - public static ObjectNode flattenToObjectNode(ObjectNode object, char seperator) { - Map<String, Object> flatObject = flattenToMap(object, seperator); - addKeys(new String(), object, flatObject, seperator); - return mapper.convertValue(flatObject, ObjectNode.class); - } - - private static void addKeys(String currentPath, JsonNode jsonNode, Map<String, Object> map, char seperator) { - if (jsonNode.isObject()) { - ObjectNode objectNode = (ObjectNode) jsonNode; - Iterator<Map.Entry<String, JsonNode>> iter = objectNode.fields(); - String pathPrefix = currentPath.isEmpty() ? "" : currentPath + seperator; - - while (iter.hasNext()) { - Map.Entry<String, JsonNode> entry = iter.next(); - addKeys(pathPrefix + entry.getKey(), entry.getValue(), map, seperator); - } - } else if (jsonNode.isArray()) { - ArrayNode arrayNode = (ArrayNode) jsonNode; - map.put(currentPath, arrayNode); - } else if (jsonNode.isValueNode()) { - ValueNode valueNode = (ValueNode) jsonNode; - if( valueNode.isTextual() ) - map.put(currentPath, valueNode.asText()); - else if ( valueNode.isNumber() ) - map.put(currentPath, valueNode); + } + + public static ObjectNode unflattenMap(Map<String, Object> object, char seperator) { + return unflattenObjectNode(mapper.convertValue(object, ObjectNode.class), seperator); + } + + public static ObjectNode unflattenObjectNode(ObjectNode flatObject, char seperator) { + ObjectNode root = mapper.createObjectNode(); + Iterator<Map.Entry<String, JsonNode>> iter = flatObject.fields(); + while (iter.hasNext()) { + Map.Entry<String, JsonNode> item = iter.next(); + String fullKey = item.getKey(); + if ( !fullKey.contains(Character.valueOf(seperator).toString())) { + root.put(item.getKey(), item.getValue()); + } else { + ObjectNode currentNode = root; + List<String> keyParts = Lists.newArrayList(); + Iterables.addAll(keyParts, Splitter.on(seperator).split(item.getKey())); + Iterator<String> keyPartIterator = Iterables.limit(Splitter.on(seperator).split(item.getKey()), keyParts.size() - 1).iterator(); + while ( keyPartIterator.hasNext()) { + String part = keyPartIterator.next(); + if ( currentNode.has(part) && currentNode.get(part).isObject() ) { + currentNode = (ObjectNode) currentNode.get(part); + } else { + ObjectNode newNode = mapper.createObjectNode(); + currentNode.put(part, newNode); + currentNode = newNode; + } } - } + currentNode.put(keyParts.get(keyParts.size() - 1), item.getValue()); - public static ObjectNode unflattenMap(Map<String, Object> object, char seperator) { - return unflattenObjectNode(mapper.convertValue(object, ObjectNode.class), seperator); - } - - public static ObjectNode unflattenObjectNode(ObjectNode flatObject, char seperator) { - ObjectNode root = mapper.createObjectNode(); - Iterator<Map.Entry<String, JsonNode>> iter = flatObject.fields(); - while (iter.hasNext()) { - Map.Entry<String, JsonNode> item = iter.next(); - String fullKey = item.getKey(); - if( !fullKey.contains(Character.valueOf(seperator).toString())) { - root.put(item.getKey(), item.getValue()); - } else { - ObjectNode currentNode = root; - List<String> keyParts = Lists.newArrayList(); - Iterables.addAll(keyParts, Splitter.on(seperator).split(item.getKey())); - Iterator<String> keyPartIterator = Iterables.limit(Splitter.on(seperator).split(item.getKey()), keyParts.size()-1).iterator(); - while( keyPartIterator.hasNext()) { - String part = keyPartIterator.next(); - if( currentNode.has(part) && currentNode.get(part).isObject() ) { - currentNode = (ObjectNode) currentNode.get(part); - } else { - ObjectNode newNode = mapper.createObjectNode(); - currentNode.put(part, newNode); - currentNode = newNode; - } - }; - currentNode.put(keyParts.get(keyParts.size()-1), item.getValue()); - - } - } - return root; + } } + return root; + } } http://git-wip-us.apache.org/repos/asf/incubator-streams/blob/5dffd5c3/streams-pojo-extensions/src/main/java/org/apache/streams/pojo/extensions/ExtensionUtil.java ---------------------------------------------------------------------- diff --git a/streams-pojo-extensions/src/main/java/org/apache/streams/pojo/extensions/ExtensionUtil.java b/streams-pojo-extensions/src/main/java/org/apache/streams/pojo/extensions/ExtensionUtil.java index 7fe2c28..988a269 100644 --- a/streams-pojo-extensions/src/main/java/org/apache/streams/pojo/extensions/ExtensionUtil.java +++ b/streams-pojo-extensions/src/main/java/org/apache/streams/pojo/extensions/ExtensionUtil.java @@ -18,12 +18,13 @@ package org.apache.streams.pojo.extensions; -import com.fasterxml.jackson.databind.ObjectMapper; -import com.google.common.base.Strings; import org.apache.streams.jackson.StreamsJacksonMapper; import org.apache.streams.pojo.json.Activity; import org.apache.streams.pojo.json.ActivityObject; +import com.fasterxml.jackson.databind.ObjectMapper; +import com.google.common.base.Strings; + import java.util.HashMap; import java.util.Map; @@ -32,133 +33,131 @@ import java.util.Map; */ public class ExtensionUtil { - public static final String DEFAULT_EXTENSION_PROPERTY = null; - - private static final ExtensionUtil INSTANCE = new ExtensionUtil(DEFAULT_EXTENSION_PROPERTY); - - private String extensionProperty; - - public static ExtensionUtil getInstance(){ - return INSTANCE; - } - - public static ExtensionUtil getInstance(String property){ - return new ExtensionUtil(property); - } - - private ExtensionUtil(String extensionProperty) { - this.extensionProperty = extensionProperty; - } - - /** - * Property on the activity object to use for extensions - */ - - private static final ObjectMapper mapper = StreamsJacksonMapper.getInstance(); - - public Map<String, Object> getExtensions(Activity activity) { - return ensureExtensions(activity); - } - - public Object getExtension(Activity activity, String key) { - Map<String,Object> extensions = ensureExtensions(activity); - return extensions.get(key); - } - - public void setExtensions(Activity activity, Map<String, Object> extensions) { - activity.setAdditionalProperty(extensionProperty, extensions); - } - - public void addExtension(Activity activity, String key, Object extension) { - Map<String,Object> extensions = ensureExtensions(activity); - extensions.put(key, extension); - } - - public void addExtensions(Activity activity, Map<String, Object> extensions) { - for( Map.Entry<String, Object> item : extensions.entrySet()) - addExtension(activity, item.getKey(), item.getValue()); - } - - public void removeExtension(Activity activity, String key) { - Map<String,Object> extensions = ensureExtensions(activity); - extensions.remove(key); - } - - public Map<String, Object> getExtensions(ActivityObject object) { - ActivityObject activityObject = mapper.convertValue(object, ActivityObject.class); - return ensureExtensions(activityObject); - } - - public Object getExtension(ActivityObject object, String key) { - Map<String,Object> extensions = ensureExtensions(object); - return extensions.get(key); - } - - public void setExtensions(ActivityObject object, Map<String, Object> extensions) { - object.setAdditionalProperty(extensionProperty, extensions); - } - - public void addExtension(ActivityObject object, String key, Object extension) { - Map<String,Object> extensions = ensureExtensions(object); - extensions.put(key, extension); - } - - public void addExtensions(ActivityObject object, Map<String, Object> extensions) { - for( Map.Entry<String, Object> item : extensions.entrySet()) - addExtension(object, item.getKey(), item.getValue()); - } - - public void removeExtension(ActivityObject object, String key) { - Map<String,Object> extensions = ensureExtensions(object); - extensions.remove(key); - } - - /** - * Creates a standard extension property - * @param activity activity to create the property in - * @return the Map representing the extensions property - */ - @SuppressWarnings("unchecked") - public Map<String, Object> ensureExtensions(Activity activity) { - Map<String,Object> additionalProperties = activity.getAdditionalProperties(); - Map<String,Object> extensions; - if(additionalProperties == null) { - additionalProperties = new HashMap<>(); - } - if( !Strings.isNullOrEmpty(extensionProperty) ) { - extensions = (Map<String, Object>) additionalProperties.get(extensionProperty); - if(extensions == null) { - extensions = new HashMap<>(); - additionalProperties.put(extensionProperty, extensions); - } - return extensions; - } else { - return additionalProperties; - } - } - - /** - * Creates a standard extension property - * @param object object node to create the property in - * @return {@link Map} representing the extensions property - */ - @SuppressWarnings("unchecked") - public Map<String, Object> ensureExtensions(ActivityObject object) { - Map<String,Object> additionalProperties = object.getAdditionalProperties(); - Map<String,Object> extensions; - if(additionalProperties == null) { - additionalProperties = new HashMap<>(); - } - if( !Strings.isNullOrEmpty(extensionProperty) ) { - extensions = (Map<String, Object>) additionalProperties.get(extensionProperty); - if(extensions == null) { - extensions = new HashMap<>(); - additionalProperties.put(extensionProperty, extensions); - } - return extensions; - } else { - return additionalProperties; - } - } + public static final String DEFAULT_EXTENSION_PROPERTY = null; + + private static final ExtensionUtil INSTANCE = new ExtensionUtil(DEFAULT_EXTENSION_PROPERTY); + + private String extensionProperty; + + public static ExtensionUtil getInstance() { + return INSTANCE; + } + + public static ExtensionUtil getInstance(String property) { + return new ExtensionUtil(property); + } + + private ExtensionUtil(String extensionProperty) { + this.extensionProperty = extensionProperty; + } + + private static final ObjectMapper mapper = StreamsJacksonMapper.getInstance(); + + public Map<String, Object> getExtensions(Activity activity) { + return ensureExtensions(activity); + } + + public Map<String, Object> getExtensions(ActivityObject object) { + ActivityObject activityObject = mapper.convertValue(object, ActivityObject.class); + return ensureExtensions(activityObject); + } + + public Object getExtension(Activity activity, String key) { + Map<String,Object> extensions = ensureExtensions(activity); + return extensions.get(key); + } + + public Object getExtension(ActivityObject object, String key) { + Map<String,Object> extensions = ensureExtensions(object); + return extensions.get(key); + } + + public void addExtension(Activity activity, String key, Object extension) { + Map<String,Object> extensions = ensureExtensions(activity); + extensions.put(key, extension); + } + + public void addExtension(ActivityObject object, String key, Object extension) { + Map<String,Object> extensions = ensureExtensions(object); + extensions.put(key, extension); + } + + public void removeExtension(Activity activity, String key) { + Map<String,Object> extensions = ensureExtensions(activity); + extensions.remove(key); + } + + public void removeExtension(ActivityObject object, String key) { + Map<String,Object> extensions = ensureExtensions(object); + extensions.remove(key); + } + + public void setExtensions(Activity activity, Map<String, Object> extensions) { + activity.setAdditionalProperty(extensionProperty, extensions); + } + + public void setExtensions(ActivityObject object, Map<String, Object> extensions) { + object.setAdditionalProperty(extensionProperty, extensions); + } + + public void addExtensions(Activity activity, Map<String, Object> extensions) { + for ( Map.Entry<String, Object> item : extensions.entrySet()) { + addExtension(activity, item.getKey(), item.getValue()); + } + } + + public void addExtensions(ActivityObject object, Map<String, Object> extensions) { + for ( Map.Entry<String, Object> item : extensions.entrySet()) { + addExtension(object, item.getKey(), item.getValue()); + } + } + + /** + * Creates a standard extension property. + * @param activity activity to create the property in + * @return the Map representing the extensions property + */ + @SuppressWarnings("unchecked") + public Map<String, Object> ensureExtensions(Activity activity) { + Map<String,Object> additionalProperties = activity.getAdditionalProperties(); + Map<String,Object> extensions; + if (additionalProperties == null) { + additionalProperties = new HashMap<>(); + } + if ( !Strings.isNullOrEmpty(extensionProperty) ) { + extensions = (Map<String, Object>) additionalProperties.get(extensionProperty); + if (extensions == null) { + extensions = new HashMap<>(); + additionalProperties.put(extensionProperty, extensions); + } + return extensions; + } else { + return additionalProperties; + } + } + + /** + * Creates a standard extension property. + * @param object object node to create the property in + * @return {@link Map} representing the extensions property + */ + @SuppressWarnings("unchecked") + public Map<String, Object> ensureExtensions(ActivityObject object) { + Map<String,Object> additionalProperties = object.getAdditionalProperties(); + Map<String,Object> extensions; + if (additionalProperties == null) { + additionalProperties = new HashMap<>(); + } + if ( !Strings.isNullOrEmpty(extensionProperty) ) { + extensions = (Map<String, Object>) additionalProperties.get(extensionProperty); + if (extensions == null) { + extensions = new HashMap<>(); + additionalProperties.put(extensionProperty, extensions); + } + return extensions; + } else { + return additionalProperties; + } + } } http://git-wip-us.apache.org/repos/asf/incubator-streams/blob/5dffd5c3/streams-pojo-extensions/src/test/java/org/apache/streams/pojo/extensions/test/ExtensionUtilTest.java ---------------------------------------------------------------------- diff --git a/streams-pojo-extensions/src/test/java/org/apache/streams/pojo/extensions/test/ExtensionUtilTest.java b/streams-pojo-extensions/src/test/java/org/apache/streams/pojo/extensions/test/ExtensionUtilTest.java index 5cce209..de49da4 100644 --- a/streams-pojo-extensions/src/test/java/org/apache/streams/pojo/extensions/test/ExtensionUtilTest.java +++ b/streams-pojo-extensions/src/test/java/org/apache/streams/pojo/extensions/test/ExtensionUtilTest.java @@ -18,34 +18,31 @@ package org.apache.streams.pojo.extensions.test; -import com.fasterxml.jackson.databind.ObjectMapper; -import com.google.common.base.Strings; -import com.google.common.collect.Maps; -import org.apache.streams.jackson.StreamsJacksonMapper; import org.apache.streams.pojo.extensions.ExtensionUtil; import org.apache.streams.pojo.json.Activity; -import org.apache.streams.pojo.json.ActivityObject; + +import com.google.common.base.Strings; import org.junit.Test; import java.util.Map; /** - * Test ExtensionUtil methods + * Test ExtensionUtil methods. */ public class ExtensionUtilTest { - @Test - public void testActivitySetCustomExtension() throws Exception { - ExtensionUtil customExtensionUtil = ExtensionUtil.getInstance("ext"); - Activity activity = new Activity(); - Map<String, Object> extensions = customExtensionUtil.ensureExtensions(activity); - String value = "value"; - extensions.put("extension", value); - customExtensionUtil.setExtensions(activity, extensions); - assert(!Strings.isNullOrEmpty((String)customExtensionUtil.getExtension(activity, "extension"))); - extensions = customExtensionUtil.getExtensions(activity); - assert(value.equals((String)extensions.get("extension"))); - assert(activity.getAdditionalProperties().get("ext") != null); - } + @Test + public void testActivitySetCustomExtension() throws Exception { + ExtensionUtil customExtensionUtil = ExtensionUtil.getInstance("ext"); + Activity activity = new Activity(); + Map<String, Object> extensions = customExtensionUtil.ensureExtensions(activity); + String value = "value"; + extensions.put("extension", value); + customExtensionUtil.setExtensions(activity, extensions); + assert (!Strings.isNullOrEmpty((String)customExtensionUtil.getExtension(activity, "extension"))); + extensions = customExtensionUtil.getExtensions(activity); + assert (value.equals((String)extensions.get("extension"))); + assert (activity.getAdditionalProperties().get("ext") != null); + } } http://git-wip-us.apache.org/repos/asf/incubator-streams/blob/5dffd5c3/streams-pojo/src/main/java/org/apache/streams/data/ActivityConverter.java ---------------------------------------------------------------------- diff --git a/streams-pojo/src/main/java/org/apache/streams/data/ActivityConverter.java b/streams-pojo/src/main/java/org/apache/streams/data/ActivityConverter.java index 4d6d759..70f2135 100644 --- a/streams-pojo/src/main/java/org/apache/streams/data/ActivityConverter.java +++ b/streams-pojo/src/main/java/org/apache/streams/data/ActivityConverter.java @@ -27,61 +27,67 @@ import java.util.List; /** * Converts non-Activity documents to Activities and back. * + * <p/> * Each converter may one, several, or zero activities. * + * <p/> * The recommended approach for deriving multiple activities from a source document is: * + * <p/> * 1) Return one activity for each occurance of a verb, from the same ActivityConverter, if the activities are of like type. * + * <p/> * For example, BlogShareConverter would convert a blog containing two shares into two Activities with verb: share * + * <p/> * 2) Create multiple ActivityConverters, if the activities are not of like type. * + * <p/> * For example, a blog post that is both a post and a share should be transformed by two seperate Converters, individually * or simultaneously applied. */ public interface ActivityConverter<T> extends Serializable { - /** - * What class does this ActivityConverter require? - * - * @return The class the ActivityConverter requires. Should always return the templated class. - */ - Class requiredClass(); + /** + * What class does this ActivityConverter require? + * + * @return The class the ActivityConverter requires. Should always return the templated class. + */ + Class requiredClass(); - /** - * Gets the supported content type that can be deserialized/serialized - * - * @return A string representing the format name. Can be an IETF MIME type or other - */ - String serializationFormat(); + /** + * Gets the supported content type that can be deserialized/serialized + * + * @return A string representing the format name. Can be an IETF MIME type or other + */ + String serializationFormat(); - /** - * Converts the activity to a POJO representation. - * - * @param deserialized the string - * @return a fully populated Activity object - */ - T fromActivity(Activity deserialized) throws ActivityConversionException; + /** + * Converts the activity to a POJO representation. + * + * @param deserialized the string + * @return a fully populated Activity object + */ + T fromActivity(Activity deserialized) throws ActivityConversionException; - /** - * Converts a POJO into one or more Activities - * @param serialized the string representation - * @return a fully populated Activity object - */ - List<Activity> toActivityList(T serialized) throws ActivityConversionException; + /** + * Converts multiple Activities into a list of source documents. + * @param list a typed List of documents + * @return a list of source documents + */ + List<T> fromActivityList(List<Activity> list) throws ActivityConversionException; - /** - * Converts multiple Activities into a list of source documents - * @param list a typed List of documents - * @return a list of source documents - */ - List<T> fromActivityList(List<Activity> list) throws ActivityConversionException; + /** + * Converts a POJO into one or more Activities. + * @param serialized the string representation + * @return a fully populated Activity object + */ + List<Activity> toActivityList(T serialized) throws ActivityConversionException; - /** - * Converts multiple documents into a list of Activity objects - * @param list a typed List of documents - * @return a list of fully populated activities - */ - List<Activity> toActivityList(List<T> list) throws ActivityConversionException; + /** + * Converts multiple documents into a list of Activity objects. + * @param list a typed List of documents + * @return a list of fully populated activities + */ + List<Activity> toActivityList(List<T> list) throws ActivityConversionException; } http://git-wip-us.apache.org/repos/asf/incubator-streams/blob/5dffd5c3/streams-pojo/src/main/java/org/apache/streams/data/ActivityObjectConverter.java ---------------------------------------------------------------------- diff --git a/streams-pojo/src/main/java/org/apache/streams/data/ActivityObjectConverter.java b/streams-pojo/src/main/java/org/apache/streams/data/ActivityObjectConverter.java index 0d25d91..7e80327 100644 --- a/streams-pojo/src/main/java/org/apache/streams/data/ActivityObjectConverter.java +++ b/streams-pojo/src/main/java/org/apache/streams/data/ActivityObjectConverter.java @@ -22,44 +22,42 @@ import org.apache.streams.exceptions.ActivityConversionException; import org.apache.streams.pojo.json.ActivityObject; import java.io.Serializable; -import java.util.List; /** * Converts non-ActivityObject documents to ActivityObjects and back. * + * <p/> * Each converter may return zero or one alternative representations. - * */ - public interface ActivityObjectConverter<T> extends Serializable { - /** - * What class does this ActivityConverter require? - * - * @return The class the ActivityConverter requires. Should always return the templated class. - */ - Class requiredClass(); - - /** - * Gets the supported content type that can be deserialized/serialized - * - * @return A string representing the format name. Can be an IETF MIME type or other - */ - String serializationFormat(); - - /** - * Converts the activity to a POJO representation. - * - * @param deserialized the string - * @return a fully populated Activity object - */ - T fromActivityObject(ActivityObject deserialized) throws ActivityConversionException; - - /** - * Converts a POJO into an ActivityObject - * @param serialized the string representation - * @return a fully populated Activity object - */ - ActivityObject toActivityObject(T serialized) throws ActivityConversionException; + /** + * What class does this ActivityConverter require? + * + * @return The class the ActivityConverter requires. Should always return the templated class. + */ + Class requiredClass(); + + /** + * Gets the supported content type that can be deserialized/serialized. + * + * @return A string representing the format name. Can be an IETF MIME type or other + */ + String serializationFormat(); + + /** + * Converts the activity to a POJO representation. + * + * @param deserialized the string + * @return a fully populated Activity object + */ + T fromActivityObject(ActivityObject deserialized) throws ActivityConversionException; + + /** + * Converts a POJO into an ActivityObject. + * @param serialized the string representation + * @return a fully populated Activity object + */ + ActivityObject toActivityObject(T serialized) throws ActivityConversionException; } http://git-wip-us.apache.org/repos/asf/incubator-streams/blob/5dffd5c3/streams-pojo/src/main/java/org/apache/streams/data/ActivitySerializer.java ---------------------------------------------------------------------- diff --git a/streams-pojo/src/main/java/org/apache/streams/data/ActivitySerializer.java b/streams-pojo/src/main/java/org/apache/streams/data/ActivitySerializer.java index 8ca0c04..3a4282c 100644 --- a/streams-pojo/src/main/java/org/apache/streams/data/ActivitySerializer.java +++ b/streams-pojo/src/main/java/org/apache/streams/data/ActivitySerializer.java @@ -26,37 +26,38 @@ import java.util.List; /** * Serializes and deserializes Activities * + * <p/> * Deprecated: Switch all modules to use {@link org.apache.streams.data.ActivityConverter} */ @Deprecated public interface ActivitySerializer<T> { - /** - * Gets the supported content type that can be deserialized/serialized - * - * @return A string representing the format name. Can be an IETF MIME type or other - */ - String serializationFormat(); - - /** - * Converts the activity to a POJO representation. - * - * @param deserialized the string - * @return a fully populated Activity object - */ - T serialize(Activity deserialized) throws ActivitySerializerException; - - /** - * Converts a POJO into an Activity - * @param serialized the string representation - * @return a fully populated Activity object - */ - Activity deserialize(T serialized) throws ActivitySerializerException; - - /** - * Converts multiple documents into a list of Activity objects - * @param serializedList a typed List of documents - * @return a list of fully populated activities - */ - List<Activity> deserializeAll(List<T> serializedList); + /** + * Gets the supported content type that can be deserialized/serialized. + * + * @return A string representing the format name. Can be an IETF MIME type or other + */ + String serializationFormat(); + + /** + * Converts the activity to a POJO representation. + * + * @param deserialized the string + * @return a fully populated Activity object + */ + T serialize(Activity deserialized) throws ActivitySerializerException; + + /** + * Converts a POJO into an Activity. + * @param serialized the string representation + * @return a fully populated Activity object + */ + Activity deserialize(T serialized) throws ActivitySerializerException; + + /** + * Converts multiple documents into a list of Activity objects. + * @param serializedList a typed List of documents + * @return a list of fully populated activities + */ + List<Activity> deserializeAll(List<T> serializedList); }
