remove extra classes from merge
Project: http://git-wip-us.apache.org/repos/asf/incubator-streams/repo Commit: http://git-wip-us.apache.org/repos/asf/incubator-streams/commit/150e1715 Tree: http://git-wip-us.apache.org/repos/asf/incubator-streams/tree/150e1715 Diff: http://git-wip-us.apache.org/repos/asf/incubator-streams/diff/150e1715 Branch: refs/heads/invalid_headers Commit: 150e1715adc0c1dcb270177aedb947803bfbaf68 Parents: 5694ae9 Author: Steve Blackmon @steveblackmon <sblack...@apache.org> Authored: Wed Oct 12 12:40:57 2016 -0500 Committer: Steve Blackmon @steveblackmon <sblack...@apache.org> Committed: Wed Oct 12 12:40:57 2016 -0500 ---------------------------------------------------------------------- .../streams/plugins/StreamsPojoScala.java | 371 ------------------- .../streams/plugins/StreamsPojoScalaMojo.java | 71 ---- .../plugins/test/StreamsPojoScalaTest.java | 55 --- 3 files changed, 497 deletions(-) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/incubator-streams/blob/150e1715/streams-plugins/streams-plugin-scala/src/main/java/org/apache/streams/plugins/StreamsPojoScala.java ---------------------------------------------------------------------- diff --git a/streams-plugins/streams-plugin-scala/src/main/java/org/apache/streams/plugins/StreamsPojoScala.java b/streams-plugins/streams-plugin-scala/src/main/java/org/apache/streams/plugins/StreamsPojoScala.java deleted file mode 100644 index 1c3e317..0000000 --- a/streams-plugins/streams-plugin-scala/src/main/java/org/apache/streams/plugins/StreamsPojoScala.java +++ /dev/null @@ -1,371 +0,0 @@ -package org.apache.streams.plugins; - -import com.google.common.base.Strings; -import com.google.common.collect.Iterables; -import com.google.common.collect.Lists; -import com.google.common.collect.Maps; -import com.google.common.collect.Sets; -import org.apache.streams.data.DocumentClassifier; -import org.reflections.ReflectionUtils; -import org.reflections.Reflections; -import org.reflections.scanners.SubTypesScanner; -import org.reflections.scanners.TypeAnnotationsScanner; -import org.reflections.util.ClasspathHelper; -import org.reflections.util.ConfigurationBuilder; -import org.reflections.ReflectionUtils.*; -import org.slf4j.Logger; -import org.slf4j.LoggerFactory; - -import javax.annotation.Generated; -import java.io.File; -import java.io.IOException; -import java.io.Serializable; -import java.lang.reflect.Field; -import java.nio.file.Files; -import java.nio.file.OpenOption; -import java.nio.file.Paths; -import java.nio.file.StandardOpenOption; -import java.util.Collections; -import java.util.Iterator; -import java.util.List; -import java.util.Map; -import java.util.Set; -import java.util.TreeSet; -import java.util.concurrent.ConcurrentHashMap; - -/** - * Created by sblackmon on 11/18/15. - */ -public class StreamsPojoScala implements Runnable { - - private final static Logger LOGGER = LoggerFactory.getLogger(StreamsPojoScala.class); - - private final static String LS = System.getProperty("line.separator"); - - private StreamsPojoScalaMojo mojo; - - String outDir = "./target/generated-sources/scala"; - String packages = "org.apache.streams.pojo.json"; - - private final Reflections reflections = new Reflections( - new ConfigurationBuilder() - // TODO - .forPackages(packages) - .setScanners( - new SubTypesScanner(), - new TypeAnnotationsScanner())); - - public void main(String[] args) { - StreamsPojoScala streamsPojoScala = new StreamsPojoScala(); - Thread thread = new Thread(streamsPojoScala); - thread.start(); - try { - thread.join(); - } catch (InterruptedException e) { - LOGGER.error("InterruptedException", e); - } catch (Exception e) { - LOGGER.error("Exception", e); - } - return; - } - - public StreamsPojoScala(StreamsPojoScalaMojo mojo) { - this.mojo = mojo; - if ( mojo != null && - mojo.getTarget() != null && - !Strings.isNullOrEmpty(mojo.getTarget().getAbsolutePath()) - ) - outDir = mojo.getTarget().getAbsolutePath(); - - if ( mojo != null && - mojo.getPackages() != null && - !Strings.isNullOrEmpty(mojo.getPackages()) - ) - packages = mojo.getPackages(); - } - - public StreamsPojoScala() { - } - - 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); - } - - } - - 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); - } - } - - public List<Class<?>> detectSerializableClasses() { - - 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; - } - - public List<Class<?>> detectPojoClasses(List<Class<?>> classes) { - - List<Class<?>> result = Lists.newArrayList(); - - 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); - } - - return result; - } - - public List<Class<?>> detectTraits(List<Class<?>> classes) { - - List<Class<?>> traits = Lists.newArrayList(); - - for( Class clazz : classes ) { - if (reflections.getSubTypesOf(clazz).size() > 0) - traits.add(clazz); - } - - return traits; - } - - public List<Class<?>> detectCases(List<Class<?>> classes) { - - List<Class<?>> cases = Lists.newArrayList(); - - for( Class clazz : classes ) { - if (reflections.getSubTypesOf(clazz).size() == 0) - cases.add(clazz); - } - - return cases; - } - - - 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(" {"); - - Set<Field> fields = ReflectionUtils.getAllFields(pojoClass); - appendFields(stringBuffer, fields, "def", ";"); - - stringBuffer.append("}"); - - return stringBuffer.toString(); - } - - 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(" ("); - - 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(); - } - - 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(); - } - - 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); - } - } 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 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 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; - } - - 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; - } - } -} http://git-wip-us.apache.org/repos/asf/incubator-streams/blob/150e1715/streams-plugins/streams-plugin-scala/src/main/java/org/apache/streams/plugins/StreamsPojoScalaMojo.java ---------------------------------------------------------------------- diff --git a/streams-plugins/streams-plugin-scala/src/main/java/org/apache/streams/plugins/StreamsPojoScalaMojo.java b/streams-plugins/streams-plugin-scala/src/main/java/org/apache/streams/plugins/StreamsPojoScalaMojo.java deleted file mode 100644 index baa0f50..0000000 --- a/streams-plugins/streams-plugin-scala/src/main/java/org/apache/streams/plugins/StreamsPojoScalaMojo.java +++ /dev/null @@ -1,71 +0,0 @@ -package org.apache.streams.plugins; - -import org.apache.maven.artifact.repository.ArtifactRepository; -import org.apache.maven.plugin.AbstractMojo; -import org.apache.maven.plugin.MojoExecutionException; -import org.apache.maven.plugin.descriptor.PluginDescriptor; -import org.apache.maven.plugins.annotations.Component; -import org.apache.maven.plugins.annotations.Execute; -import org.apache.maven.plugins.annotations.LifecyclePhase; -import org.apache.maven.plugins.annotations.Mojo; -import org.apache.maven.plugins.annotations.Parameter; -import org.apache.maven.project.MavenProject; -import org.apache.maven.settings.Settings; -import org.slf4j.Logger; -import org.slf4j.LoggerFactory; - -import java.io.File; - -@Mojo( name = "scala", - defaultPhase = LifecyclePhase.GENERATE_SOURCES -) -@Execute( goal = "scala", - phase = LifecyclePhase.GENERATE_SOURCES -) -public class StreamsPojoScalaMojo extends AbstractMojo { - - private final static Logger LOGGER = LoggerFactory.getLogger(StreamsPojoScalaMojo.class); - - @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; - - @Parameter(defaultValue = "${project.build.directory}", readonly = true) - private File target; - - @Parameter(defaultValue = "org.apache.streams.pojo.json", readonly = true) - private String packages; - - public void execute() throws MojoExecutionException { - StreamsPojoScala streamsPojoScala = new StreamsPojoScala(this); - Thread thread = new Thread(streamsPojoScala); - thread.start(); - try { - thread.join(); - } catch (InterruptedException e) { - LOGGER.error("InterruptedException", e); - } catch (Exception e) { - LOGGER.error("Exception", e); - } - return; - } - - public File getTarget() { - return target; - } - - public String getPackages() { - return packages; - } -} \ No newline at end of file http://git-wip-us.apache.org/repos/asf/incubator-streams/blob/150e1715/streams-plugins/streams-plugin-scala/src/test/java/org/apache/streams/plugins/test/StreamsPojoScalaTest.java ---------------------------------------------------------------------- diff --git a/streams-plugins/streams-plugin-scala/src/test/java/org/apache/streams/plugins/test/StreamsPojoScalaTest.java b/streams-plugins/streams-plugin-scala/src/test/java/org/apache/streams/plugins/test/StreamsPojoScalaTest.java deleted file mode 100644 index 4e5e7e3..0000000 --- a/streams-plugins/streams-plugin-scala/src/test/java/org/apache/streams/plugins/test/StreamsPojoScalaTest.java +++ /dev/null @@ -1,55 +0,0 @@ -package org.apache.streams.plugins.test; - -import org.apache.streams.plugins.StreamsPojoScala; -import org.junit.Test; -import org.slf4j.Logger; -import org.slf4j.LoggerFactory; - -import java.io.File; -import java.io.FileFilter; - -/** - * Test that Activity beans are compatible with the example activities in the spec. - */ -public class StreamsPojoScalaTest { - - private final static Logger LOGGER = LoggerFactory.getLogger(StreamsPojoScalaTest.class); - - /** - * Tests that all example activities can be loaded into Activity beans - * - * @throws Exception - */ - @Test - public void testDetectPojoScala() throws Exception { - StreamsPojoScala streamsPojoScala = new StreamsPojoScala(); - streamsPojoScala.main(new String[0]); - - File testOutput = new File( "./target/generated-sources/scala/org/apache/streams/scala"); - FileFilter scalaFilter = new FileFilter() { - @Override - public boolean accept(File pathname) { - if( pathname.getName().endsWith(".scala") ) - return true; - return false; - } - }; - - assert( testOutput != null ); - assert( testOutput.exists() == true ); - assert( testOutput.isDirectory() == true ); - assert( testOutput.listFiles(scalaFilter).length == 11 ); - assert( new File(testOutput + "/traits").exists() == true ); - assert( new File(testOutput + "/traits").isDirectory() == true ); - assert( new File(testOutput + "/traits").listFiles(scalaFilter) != null ); - assert( new File(testOutput + "/traits").listFiles(scalaFilter).length == 4 ); - assert( new File(testOutput + "/objectTypes").exists() == true ); - assert( new File(testOutput + "/objectTypes").isDirectory() == true ); - assert( new File(testOutput + "/objectTypes").listFiles(scalaFilter) != null ); - assert( new File(testOutput + "/objectTypes").listFiles(scalaFilter).length == 43 ); - assert( new File(testOutput + "/verbs").exists() == true ); - assert( new File(testOutput + "/verbs").isDirectory() == true ); - assert( new File(testOutput + "/verbs").listFiles(scalaFilter) != null ); - assert( new File(testOutput + "/verbs").listFiles(scalaFilter).length == 89 ); - } -} \ No newline at end of file