You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@streams.apache.org by sb...@apache.org on 2016/11/25 20:24:52 UTC
[11/42] incubator-streams git commit: STREAMS-440: custom
checkstyle.xml, address compliance
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);
}