This is an automated email from the ASF dual-hosted git repository.

bertty pushed a commit to branch profile-db
in repository https://gitbox.apache.org/repos/asf/incubator-wayang.git


The following commit(s) were added to refs/heads/profile-db by this push:
     new 23bb4ab  [Java11] Full Support compilation java 11 and switch scala 
version
23bb4ab is described below

commit 23bb4ab147ba3465bb2180a7202898cb55989eed
Author: berttty <[email protected]>
AuthorDate: Tue Aug 31 19:33:14 2021 +0200

    [Java11] Full Support compilation java 11 and switch scala version
    
    Signed-off-by: bertty <[email protected]>
---
 pom.xml                                            | 185 ++++++++++++++++++---
 src/main/script/prerequisiteCheck.groovy           |   2 +-
 wayang-api/wayang-api-scala-java/pom.xml           |   4 +-
 .../wayang/core/plan/wayangplan/SlotMapping.java   |  28 ++--
 .../wayang-profile-db/{readme.md => README.md}     |   0
 .../src/test/java/profiledb/ProfileDBTest.java     | 163 +++++++++---------
 wayang-distro/pom.xml                              |  24 ++-
 wayang-platforms/pom.xml                           |   9 +-
 wayang-platforms/wayang-graphchi/pom.xml           |   2 +-
 wayang-platforms/wayang-spark/pom.xml              |   8 +-
 wayang-plugins/wayang-iejoin/pom.xml               |   4 +-
 wayang-profiler/pom.xml                            |  35 +++-
 .../wayang/profiler/log/GeneticOptimizerApp.java   |   3 +-
 wayang-tests-integration/pom.xml                   |  84 ++++++----
 .../apache/wayang/tests/FlinkIntegrationIT.java    |   5 +-
 .../apache/wayang/tests/GiraphIntegrationIT.java   |   5 +-
 .../java/org/apache/wayang/tests/WayangPlans.java  |   4 +-
 .../apache/wayang/test}/GraphChiIntegrationIT.java |   3 +-
 18 files changed, 375 insertions(+), 193 deletions(-)

diff --git a/pom.xml b/pom.xml
index 8b6e143..5b7ce02 100644
--- a/pom.xml
+++ b/pom.xml
@@ -91,12 +91,9 @@
     </mailingLists>
 
     <properties>
-        <maven.compiler.source>1.8</maven.compiler.source>
-        <maven.compiler.target>1.8</maven.compiler.target>
         <encoding>UTF-8</encoding>
         <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
         <project.root>${basedir}</project.root>
-        <source.level>1.8</source.level>
         <dist.id>${project.artifactId}</dist.id>
         
<jacoco.destfile>${project.build.directory}/jacoco.exec</jacoco.destfile>
         <maven.kotlin.skip>false</maven.kotlin.skip>
@@ -306,13 +303,92 @@
             </build>
         </profile>
 
+        <profile>
+            <id>java8</id>
+            <activation>
+                <jdk>1.8</jdk>
+            </activation>
+            <properties>
+                <java.version>1.8</java.version>
+                <source.level>1.8</source.level>
+                <maven.compiler.source>1.8</maven.compiler.source>
+                <maven.compiler.target>1.8</maven.compiler.target>
+                <maven.compiler.release>1.8</maven.compiler.release>
+            </properties>
+            <build>
+                <plugins>
+                    <plugin>
+                        <groupId>org.apache.maven.plugins</groupId>
+                        <artifactId>maven-enforcer-plugin</artifactId>
+                        <executions>
+                            <execution>
+                                <id>enforce-maven-version</id>
+                                <goals>
+                                    <goal>enforce</goal>
+                                </goals>
+                                <configuration>
+                                    <rules>
+                                        <requireJavaVersion>
+                                            <version>1.8</version>
+                                        </requireJavaVersion>
+                                    </rules>
+                                </configuration>
+                            </execution>
+                        </executions>
+                    </plugin>
+                </plugins>
+            </build>
+        </profile>
+
         <!-- Used to build Java 11+ -->
         <profile>
             <id>java11</id>
+            <activation>
+                <jdk>11</jdk>
+            </activation>
             <properties>
+                <java.version>11</java.version>
+                <source.level>11</source.level>
+                <maven.compiler.source>11</maven.compiler.source>
+                <maven.compiler.target>11</maven.compiler.target>
+                <maven.compiler.release>11</maven.compiler.release>
                 <jaxb.version>2.2.11</jaxb.version>
                 <java-activation.version>1.1.1</java-activation.version>
+                <javax-annotation-api>1.3.2</javax-annotation-api>
             </properties>
+            <build>
+                <plugins>
+                    <plugin>
+                        <groupId>org.apache.maven.plugins</groupId>
+                        <artifactId>maven-enforcer-plugin</artifactId>
+                        <executions>
+                            <execution>
+                                <id>enforce-maven-version</id>
+                                <goals>
+                                    <goal>enforce</goal>
+                                </goals>
+                                <configuration>
+                                    <rules>
+                                        <requireJavaVersion>
+                                            <version>11</version>
+                                        </requireJavaVersion>
+                                    </rules>
+                                </configuration>
+                            </execution>
+                        </executions>
+                    </plugin>
+                    <plugin>
+                        <groupId>org.apache.maven.plugins</groupId>
+                        <artifactId>maven-javadoc-plugin</artifactId>
+                        <configuration>
+                            <source>8</source>
+                            <detectJavaApiLink>false</detectJavaApiLink>
+                        </configuration>
+                    </plugin>
+                </plugins>
+            </build>
+
+
             <dependencies>
                 <dependency>
                     <groupId>javax.xml.bind</groupId>
@@ -333,14 +409,6 @@
                     <scope>provided</scope>
                 </dependency>
             </dependencies>
-            <!-- The compilation of java 11 is only possible in a select 
number of modules,
-            it's necessary to fix this a soon as possible
-             -->
-            <modules>
-                <module>wayang-api</module>
-                <module>wayang-commons/wayang-core</module>
-                <module>wayang-commons/wayang-basic</module>
-            </modules>
         </profile>
 
         <!--
@@ -427,19 +495,61 @@
                         </plugin>
                         <plugin>
                             <artifactId>maven-jar-plugin</artifactId>
+                            <configuration>
+                                
<finalName>${project.artifactId}_${scala.mayor.version}-${project.version}</finalName>
+                            </configuration>
+                        </plugin>
+                        <plugin>
+                            <groupId>org.apache.maven.plugins</groupId>
+                            <artifactId>maven-resources-plugin</artifactId>
                             <executions>
                                 <execution>
-                                    <id>default-jar</id>
+                                    <id>copy-pom</id>
+                                    <phase>generate-resources</phase>
                                     <goals>
-                                        <goal>jar</goal>
+                                        <goal>copy-resources</goal>
                                     </goals>
-                                    <phase>package</phase>
                                     <configuration>
-                                        
<finalName>${project.artifactId}-${project.version}_${scala.mayor.version}</finalName>
-                                        <skipIfEmpty>true</skipIfEmpty>
-                                        <excludes>
-                                            <exclude>*.timestamp</exclude>
-                                        </excludes>
+                                        
<outputDirectory>${project.build.directory}/${scala.mayor.version}</outputDirectory>
+                                        <resources>
+                                            <resource>
+                                                
<directory>${basedir}</directory>
+                                                <includes>
+                                                    <include>pom.xml</include>
+                                                </includes>
+                                                <filtering>true</filtering>
+                                            </resource>
+                                        </resources>
+                                    </configuration>
+                                </execution>
+                            </executions>
+                        </plugin>
+
+
+
+                        <plugin>
+                            <groupId>org.apache.maven.plugins</groupId>
+                            <artifactId>maven-install-plugin</artifactId>
+                            <executions>
+                                <execution>
+                                    <id>default-install</id>
+                                    <configuration>
+                                        <skip>true</skip>
+                                    </configuration>
+                                </execution>
+                                <execution>
+                                    <id>install-scala-version</id>
+                                    <phase>install</phase>
+                                    <goals>
+                                        <goal>install-file</goal>
+                                    </goals>
+                                    <configuration>
+                                        <groupId>${project.groupId}</groupId>
+                                        
<artifactId>${project.artifactId}_${scala.mayor.version}</artifactId>
+                                        <version>${project.version}</version>
+                                        
<packaging>${project.packaging}</packaging>
+                                        
<file>${project.build.directory}/${project.artifactId}_${scala.mayor.version}-${project.version}.jar</file>
+                                        
<pomFile>${project.build.directory}/${scala.mayor.version}/replacer/pom.xml</pomFile>
                                     </configuration>
                                 </execution>
                             </executions>
@@ -454,6 +564,34 @@
                     <!--                    <plugin>-->
                     <!--                        
<artifactId>maven-jar-plugin</artifactId>-->
                     <!--                    </plugin>-->
+                    <plugin>
+                        
<groupId>com.google.code.maven-replacer-plugin</groupId>
+                        <artifactId>replacer</artifactId>
+                        <version>1.5.3</version>
+                        <executions>
+                            <execution>
+                                <id>replace-artifactid</id>
+                                <phase>prepare-package</phase>
+                                <goals>
+                                    <goal>replace</goal>
+                                </goals>
+                                <configuration>
+                                    <includes>
+                                        
<include>${basedir}/target/${scala.mayor.version}/pom.xml</include>
+                                    </includes>
+                                    <replacements>
+                                        <replacement>
+                                            
<token>&lt;artifactId&gt;${project.artifactId}&lt;/artifactId&gt;</token>
+                                            
<value>&lt;artifactId&gt;${project.artifactId}_${scala.mayor.version}&lt;/artifactId&gt;</value>
+                                        </replacement>
+                                    </replacements>
+
+                                    <!-- Replace to -->
+                                    
<outputFile>${basedir}/target/${scala.mayor.version}/replacer/pom.xml</outputFile>
+                                </configuration>
+                            </execution>
+                        </executions>
+                    </plugin>
                 </plugins>
             </build>
         </profile>
@@ -953,9 +1091,9 @@
                         <exclude>**/.jekyll-cache/**</exclude>
                         <exclude>**/README.md</exclude>
                         <!-- TODO: I am pretty sure we need to remove this and 
replace it with a different text -->
-                        <exclude>src/test/resources/ulysses.txt</exclude>
-                        <exclude>src/test/resources/test.edgelist</exclude>
-                        <exclude>src/test/resources/*.txt</exclude>
+                        <exclude>**/src/test/resources/ulysses.txt</exclude>
+                        <exclude>**/src/test/resources/test.edgelist</exclude>
+                        <exclude>**/src/test/resources/*.txt</exclude>
                     </excludes>
                 </configuration>
             </plugin>
@@ -1098,9 +1236,6 @@
                                 <requireMavenVersion>
                                     <version>3.5.0</version>
                                 </requireMavenVersion>
-                                <requireJavaVersion>
-                                    <version>1.8</version>
-                                </requireJavaVersion>
                             </rules>
                         </configuration>
                     </execution>
diff --git a/src/main/script/prerequisiteCheck.groovy 
b/src/main/script/prerequisiteCheck.groovy
index 2fb6950..69a07d5 100644
--- a/src/main/script/prerequisiteCheck.groovy
+++ b/src/main/script/prerequisiteCheck.groovy
@@ -190,7 +190,7 @@ if (os == "windows") {
 // profiles.
 /////////////////////////////////////////////////////
 
-checkJavaVersion("1.8", "1.8")
+checkJavaVersion("1.8", "11")
 
 // Check if hadoop is available
 // It seems that this is only required on Windows systems.
diff --git a/wayang-api/wayang-api-scala-java/pom.xml 
b/wayang-api/wayang-api-scala-java/pom.xml
index 1470c30..070d5cb 100644
--- a/wayang-api/wayang-api-scala-java/pom.xml
+++ b/wayang-api/wayang-api-scala-java/pom.xml
@@ -26,7 +26,7 @@
         <version>0.6.0-SNAPSHOT</version>
     </parent>
 
-    <artifactId>wayang-api-scala-java_2.11</artifactId>
+    <artifactId>wayang-api-scala-java</artifactId>
     <version>0.6.0-SNAPSHOT</version>
 
     <name>Wayang API Scala-Java</name>
@@ -72,7 +72,7 @@
         </dependency>
         <dependency>
             <groupId>org.apache.wayang</groupId>
-            <artifactId>wayang-spark_${scala.mayor.version}</artifactId>
+            <artifactId>wayang-spark</artifactId>
             <version>0.6.0-SNAPSHOT</version>
             <scope>test</scope>
         </dependency>
diff --git 
a/wayang-commons/wayang-core/src/main/java/org/apache/wayang/core/plan/wayangplan/SlotMapping.java
 
b/wayang-commons/wayang-core/src/main/java/org/apache/wayang/core/plan/wayangplan/SlotMapping.java
index cdd2775..48a1e8a 100644
--- 
a/wayang-commons/wayang-core/src/main/java/org/apache/wayang/core/plan/wayangplan/SlotMapping.java
+++ 
b/wayang-commons/wayang-core/src/main/java/org/apache/wayang/core/plan/wayangplan/SlotMapping.java
@@ -18,6 +18,7 @@
 
 package org.apache.wayang.core.plan.wayangplan;
 
+import java.util.Map.Entry;
 import org.apache.wayang.core.util.WayangCollections;
 import org.apache.logging.log4j.LogManager;
 import org.apache.logging.log4j.Logger;
@@ -38,9 +39,9 @@ public class SlotMapping {
 
     private final Logger logger = LogManager.getLogger(this.getClass());
 
-    private final Map<Slot, Slot> upstreamMapping = new HashMap<>();
+    private final Map<Slot<?>, Slot<?>> upstreamMapping = new HashMap<>();
 
-    private Map<Slot, Collection> downstreamMapping = null;
+    private Map<Slot<?>, Collection> downstreamMapping = null;
 
     /**
      * Create a new instance that maps all {@link Slot}s of the given {@link 
Operator} to themselves.
@@ -68,7 +69,7 @@ public class SlotMapping {
         return slotMapping;
     }
 
-    public void mapAllUpsteam(InputSlot[] sources, InputSlot[] targets) {
+    public void mapAllUpsteam(InputSlot<?>[] sources, InputSlot<?>[] targets) {
         if (sources.length != targets.length) {
             throw new IllegalArgumentException(String.format("Incompatible 
number of input slots between %s and %s.",
                     Arrays.toString(sources), Arrays.toString(targets)));
@@ -78,7 +79,7 @@ public class SlotMapping {
         }
     }
 
-    public void mapAllUpsteam(OutputSlot[] sources, OutputSlot[] targets) {
+    public void mapAllUpsteam(OutputSlot<?>[] sources, OutputSlot<?>[] 
targets) {
         if (sources.length != targets.length) throw new 
IllegalArgumentException();
         for (int i = 0; i < sources.length; i++) {
             this.mapUpstream(sources[i], targets[i]);
@@ -142,14 +143,15 @@ public class SlotMapping {
      *
      * @return {@link #downstreamMapping}
      */
-    private Map<Slot, Collection> getOrCreateDownstreamMapping() {
+    private Map<Slot<?>, Collection> getOrCreateDownstreamMapping() {
         if (this.downstreamMapping == null) {
-            this.downstreamMapping = 
this.upstreamMapping.entrySet().stream().collect(
-                    Collectors.groupingBy(
-                            Map.Entry::getValue,
-                            Collectors.mapping(
-                                    Map.Entry::getKey,
-                                    
Collectors.toCollection(LinkedList::new))));
+            Map<Slot<?>, Collection> map = new HashMap<>();
+            for (Entry<Slot<?>, Slot<?>> slotSlotEntry : 
this.upstreamMapping.entrySet()) {
+                Object key = slotSlotEntry.getKey();
+                map.computeIfAbsent(slotSlotEntry.getValue(), k -> new 
LinkedList<Object>())
+                    .add(key);
+            }
+            this.downstreamMapping = map;
         }
 
         return this.downstreamMapping;
@@ -227,7 +229,7 @@ public class SlotMapping {
     public void replaceOutputSlotMappings(Operator oldOperator, Operator 
newOperator) {
         if (oldOperator.getParent() == newOperator) {
             // Default strategy: The oldOperator is now wrapped by the 
newOperator.
-            final Map<Slot, Collection> downstreamMapping = 
this.getOrCreateDownstreamMapping();
+            final Map<Slot<?>, Collection> downstreamMapping = 
this.getOrCreateDownstreamMapping();
             final SlotMapping oldToNewSlotMapping = 
oldOperator.getContainer().getSlotMapping();
             for (int i = 0; i < oldOperator.getNumOutputs(); i++) {
                 final OutputSlot<?> oldOutput = oldOperator.getOutput(i);
@@ -296,7 +298,7 @@ public class SlotMapping {
      *
      * @return the upstream mapping
      */
-    public Map<Slot, Slot> getUpstreamMapping() {
+    public Map<Slot<?>, Slot<?>> getUpstreamMapping() {
         return this.upstreamMapping;
     }
 
diff --git a/wayang-commons/wayang-utils/wayang-profile-db/readme.md 
b/wayang-commons/wayang-utils/wayang-profile-db/README.md
similarity index 100%
rename from wayang-commons/wayang-utils/wayang-profile-db/readme.md
rename to wayang-commons/wayang-utils/wayang-profile-db/README.md
diff --git 
a/wayang-commons/wayang-utils/wayang-profile-db/src/test/java/profiledb/ProfileDBTest.java
 
b/wayang-commons/wayang-utils/wayang-profile-db/src/test/java/profiledb/ProfileDBTest.java
index b232773..f33ca72 100644
--- 
a/wayang-commons/wayang-utils/wayang-profile-db/src/test/java/profiledb/ProfileDBTest.java
+++ 
b/wayang-commons/wayang-utils/wayang-profile-db/src/test/java/profiledb/ProfileDBTest.java
@@ -43,100 +43,89 @@ public class ProfileDBTest {
 
     @Test
     public void testPolymorphSaveAndLoad() throws IOException {
+        File tempDir = Files.createTempDirectory("profiledb").toFile();
+        File file = new File(tempDir, "new-profiledb.json");
+        file.createNewFile();
 
-        try {
-            Path temp = Files.createTempFile("", ".tmp");
-
-            String absolutePath = temp.toString();
-            System.out.println("Temp file : " + absolutePath);
-
-            URI uri = new URI("my-file4");
-
-            FileStorage store = new FileStorage(uri);
-
-            ProfileDB profileDB = new ProfileDB(store)
-                    .registerMeasurementClass(TestMemoryMeasurement.class)
-                    .registerMeasurementClass(TestTimeMeasurement.class);
-
-            final Experiment experiment = new Experiment("test-xp", new 
Subject("PageRank", "1.0"), "test experiment");
-
-            Measurement timeMeasurement = new TestTimeMeasurement("exec-time", 
12345L);
-            Measurement memoryMeasurement = new 
TestMemoryMeasurement("exec-time", System.currentTimeMillis(), 54321L);
-
-            experiment.addMeasurement(timeMeasurement);
-            experiment.addMeasurement(memoryMeasurement);
-
-            // Save the experiment.
-            byte[] buffer;
-            ByteArrayOutputStream bos = new ByteArrayOutputStream();
-            profileDB.save(Collections.singleton(experiment), bos);
-            bos.close();
-            buffer = bos.toByteArray();
-            System.out.println("Buffer contents: " + new String(buffer, 
"UTF-8"));
-
-            // Load the experiment.
-            ByteArrayInputStream bis = new ByteArrayInputStream(buffer);
-            Collection<Experiment> loadedExperiments = profileDB.load(bis);
-
-            // Compare the experiments.
-            Assert.assertEquals(1, loadedExperiments.size());
-            Experiment loadedExperiment = loadedExperiments.iterator().next();
-            Assert.assertEquals(experiment, loadedExperiment);
+        FileStorage store = new FileStorage(file.toURI());
 
-            // Compare the measurements.
-            Assert.assertEquals(2, loadedExperiment.getMeasurements().size());
-            Set<Measurement> expectedMeasurements = new HashSet<>(2);
-            expectedMeasurements.add(timeMeasurement);
-            expectedMeasurements.add(memoryMeasurement);
-            Set<Measurement> loadedMeasurements = new 
HashSet<>(loadedExperiment.getMeasurements());
-            Assert.assertEquals(expectedMeasurements, loadedMeasurements);
+        ProfileDB profileDB = new ProfileDB(store)
+                .registerMeasurementClass(TestMemoryMeasurement.class)
+                .registerMeasurementClass(TestTimeMeasurement.class);
 
-        } catch (URISyntaxException e) {
-            e.printStackTrace();
-        }
+        final Experiment experiment = new Experiment("test-xp", new 
Subject("PageRank", "1.0"), "test experiment");
+
+        Measurement timeMeasurement = new TestTimeMeasurement("exec-time", 
12345L);
+        Measurement memoryMeasurement = new TestMemoryMeasurement("exec-time", 
System.currentTimeMillis(), 54321L);
+
+        experiment.addMeasurement(timeMeasurement);
+        experiment.addMeasurement(memoryMeasurement);
+
+        // Save the experiment.
+        byte[] buffer;
+        ByteArrayOutputStream bos = new ByteArrayOutputStream();
+        profileDB.save(Collections.singleton(experiment), bos);
+        bos.close();
+        buffer = bos.toByteArray();
+        System.out.println("Buffer contents: " + new String(buffer, "UTF-8"));
+
+        // Load the experiment.
+        ByteArrayInputStream bis = new ByteArrayInputStream(buffer);
+        Collection<Experiment> loadedExperiments = profileDB.load(bis);
+
+        // Compare the experiments.
+        Assert.assertEquals(1, loadedExperiments.size());
+        Experiment loadedExperiment = loadedExperiments.iterator().next();
+        Assert.assertEquals(experiment, loadedExperiment);
+
+        // Compare the measurements.
+        Assert.assertEquals(2, loadedExperiment.getMeasurements().size());
+        Set<Measurement> expectedMeasurements = new HashSet<>(2);
+        expectedMeasurements.add(timeMeasurement);
+        expectedMeasurements.add(memoryMeasurement);
+        Set<Measurement> loadedMeasurements = new 
HashSet<>(loadedExperiment.getMeasurements());
+        Assert.assertEquals(expectedMeasurements, loadedMeasurements);
     }
 
     @Test
     public void testRecursiveSaveAndLoad() throws IOException {
-        try {
-            URI uri = new URI("my-file2");
-            FileStorage store = new FileStorage(uri);
-
-            ProfileDB profileDB = new ProfileDB(store)
-                    .registerMeasurementClass(TestMemoryMeasurement.class)
-                    .registerMeasurementClass(TestTimeMeasurement.class);
-
-            // Create an example experiment.
-            final Experiment experiment = new Experiment("test-xp", new 
Subject("PageRank", "1.0"), "test experiment");
-            TestTimeMeasurement topLevelMeasurement = new 
TestTimeMeasurement("exec-time", 12345L);
-            TestTimeMeasurement childMeasurement = new 
TestTimeMeasurement("sub-exec-time", 2345L);
-            topLevelMeasurement.addSubmeasurements(childMeasurement);
-            experiment.addMeasurement(topLevelMeasurement);
-
-            // Save the experiment.
-            byte[] buffer;
-            ByteArrayOutputStream bos = new ByteArrayOutputStream();
-            profileDB.save(Collections.singleton(experiment), bos);
-            bos.close();
-            buffer = bos.toByteArray();
-            System.out.println("Buffer contents: " + new String(buffer, 
"UTF-8"));
-
-            // Load the experiment.
-            ByteArrayInputStream bis = new ByteArrayInputStream(buffer);
-            Collection<Experiment> loadedExperiments = profileDB.load(bis);
-
-            // Compare the experiments.
-            Assert.assertEquals(1, loadedExperiments.size());
-            Experiment loadedExperiment = loadedExperiments.iterator().next();
-            Assert.assertEquals(experiment, loadedExperiment);
-
-            // Compare the measurements.
-            Assert.assertEquals(1, loadedExperiment.getMeasurements().size());
-            final Measurement loadedMeasurement = 
loadedExperiment.getMeasurements().iterator().next();
-            Assert.assertEquals(topLevelMeasurement, loadedMeasurement);
-        } catch (URISyntaxException e) {
-            e.printStackTrace();
-        }
+        File tempDir = Files.createTempDirectory("profiledb").toFile();
+        File file = new File(tempDir, "new-profiledb.json");
+        file.createNewFile();
+        FileStorage store = new FileStorage(file.toURI());
+
+        ProfileDB profileDB = new ProfileDB(store)
+                .registerMeasurementClass(TestMemoryMeasurement.class)
+                .registerMeasurementClass(TestTimeMeasurement.class);
+
+        // Create an example experiment.
+        final Experiment experiment = new Experiment("test-xp", new 
Subject("PageRank", "1.0"), "test experiment");
+        TestTimeMeasurement topLevelMeasurement = new 
TestTimeMeasurement("exec-time", 12345L);
+        TestTimeMeasurement childMeasurement = new 
TestTimeMeasurement("sub-exec-time", 2345L);
+        topLevelMeasurement.addSubmeasurements(childMeasurement);
+        experiment.addMeasurement(topLevelMeasurement);
+
+        // Save the experiment.
+        byte[] buffer;
+        ByteArrayOutputStream bos = new ByteArrayOutputStream();
+        profileDB.save(Collections.singleton(experiment), bos);
+        bos.close();
+        buffer = bos.toByteArray();
+        System.out.println("Buffer contents: " + new String(buffer, "UTF-8"));
+
+        // Load the experiment.
+        ByteArrayInputStream bis = new ByteArrayInputStream(buffer);
+        Collection<Experiment> loadedExperiments = profileDB.load(bis);
+
+        // Compare the experiments.
+        Assert.assertEquals(1, loadedExperiments.size());
+        Experiment loadedExperiment = loadedExperiments.iterator().next();
+        Assert.assertEquals(experiment, loadedExperiment);
+
+        // Compare the measurements.
+        Assert.assertEquals(1, loadedExperiment.getMeasurements().size());
+        final Measurement loadedMeasurement = 
loadedExperiment.getMeasurements().iterator().next();
+        Assert.assertEquals(topLevelMeasurement, loadedMeasurement);
     }
 
     @Test
diff --git a/wayang-distro/pom.xml b/wayang-distro/pom.xml
index e1bd196..2a6588c 100644
--- a/wayang-distro/pom.xml
+++ b/wayang-distro/pom.xml
@@ -28,7 +28,7 @@
         <version>0.6.0-SNAPSHOT</version>
     </parent>
 
-    <artifactId>wayang-distro_2.11</artifactId>
+    <artifactId>wayang-distro</artifactId>
     <version>0.6.0-SNAPSHOT</version>
 
     <build>
@@ -71,17 +71,12 @@
         </dependency>
         <dependency>
             <groupId>org.apache.wayang</groupId>
-            <artifactId>wayang-spark_2.11</artifactId>
+            <artifactId>wayang-spark</artifactId>
             <version>0.6.0-SNAPSHOT</version>
         </dependency>
         <dependency>
             <groupId>org.apache.wayang</groupId>
-            <artifactId>wayang-graphchi_2.11</artifactId>
-            <version>0.6.0-SNAPSHOT</version>
-        </dependency>
-        <dependency>
-            <groupId>org.apache.wayang</groupId>
-            <artifactId>wayang-profiler_2.11</artifactId>
+            <artifactId>wayang-profiler</artifactId>
             <version>0.6.0-SNAPSHOT</version>
         </dependency>
         <dependency>
@@ -110,6 +105,17 @@
             <version>0.6.0-SNAPSHOT</version>
         </dependency>
     </dependencies>
-
+    <profiles>
+        <profile>
+            <id>scala-11</id>
+            <dependencies>
+                <dependency>
+                    <groupId>org.apache.wayang</groupId>
+                    <artifactId>wayang-graphchi</artifactId>
+                    <version>0.6.0-SNAPSHOT</version>
+                </dependency>
+            </dependencies>
+        </profile>
+    </profiles>
 
 </project>
diff --git a/wayang-platforms/pom.xml b/wayang-platforms/pom.xml
index c6177b1..ceb9d4e 100644
--- a/wayang-platforms/pom.xml
+++ b/wayang-platforms/pom.xml
@@ -39,7 +39,6 @@
         <module>wayang-java</module>
         <module>wayang-spark</module>
         <module>wayang-postgres</module>
-        <module>wayang-graphchi</module>
         <module>wayang-jdbc-template</module>
         <module>wayang-sqlite3</module>
         <module>wayang-giraph</module>
@@ -58,5 +57,13 @@
         </dependencies>
     </dependencyManagement>
 
+    <profiles>
+        <profile>
+            <id>scala-11</id>
+            <modules>
+                <module>wayang-graphchi</module>
+            </modules>
+        </profile>
+    </profiles>
 
 </project>
diff --git a/wayang-platforms/wayang-graphchi/pom.xml 
b/wayang-platforms/wayang-graphchi/pom.xml
index 42aeb51..0554c9a 100644
--- a/wayang-platforms/wayang-graphchi/pom.xml
+++ b/wayang-platforms/wayang-graphchi/pom.xml
@@ -26,7 +26,7 @@
         <version>0.6.0-SNAPSHOT</version>
     </parent>
 
-    <artifactId>wayang-graphchi_2.11</artifactId>
+    <artifactId>wayang-graphchi</artifactId>
     <version>0.6.0-SNAPSHOT</version>
 
     <name>Wayang Graphchi</name>
diff --git a/wayang-platforms/wayang-spark/pom.xml 
b/wayang-platforms/wayang-spark/pom.xml
index a0c3972..8a93813 100644
--- a/wayang-platforms/wayang-spark/pom.xml
+++ b/wayang-platforms/wayang-spark/pom.xml
@@ -26,7 +26,7 @@
         <version>0.6.0-SNAPSHOT</version>
     </parent>
 
-    <artifactId>wayang-spark_2.11</artifactId>
+    <artifactId>wayang-spark</artifactId>
     <version>0.6.0-SNAPSHOT</version>
 
     <name>Wayang Platform Spark</name>
@@ -79,6 +79,12 @@
             <version>1.1.2.1</version>
             <scope>${external.platforms.scope}</scope>
         </dependency>
+        <!--Error of ArrayIndexOutOfBoundsException-->
+        <dependency>
+            <groupId>com.thoughtworks.paranamer</groupId>
+            <artifactId>paranamer</artifactId>
+            <version>2.8</version>
+        </dependency>
     </dependencies>
 
 </project>
diff --git a/wayang-plugins/wayang-iejoin/pom.xml 
b/wayang-plugins/wayang-iejoin/pom.xml
index 303cf98..d81104d 100644
--- a/wayang-plugins/wayang-iejoin/pom.xml
+++ b/wayang-plugins/wayang-iejoin/pom.xml
@@ -19,7 +19,7 @@
         <version>0.6.0-SNAPSHOT</version>
     </parent>
 
-    <artifactId>wayang-iejoin_2.11</artifactId>
+    <artifactId>wayang-iejoin</artifactId>
     <version>0.6.0-SNAPSHOT</version>
 
     <properties>
@@ -45,7 +45,7 @@
         </dependency>
         <dependency>
             <groupId>org.apache.wayang</groupId>
-            <artifactId>wayang-spark_${scala.mayor.version}</artifactId>
+            <artifactId>wayang-spark</artifactId>
             <version>0.6.0-SNAPSHOT</version>
         </dependency>
         <dependency>
diff --git a/wayang-profiler/pom.xml b/wayang-profiler/pom.xml
index 3ccd939..fb69990 100644
--- a/wayang-profiler/pom.xml
+++ b/wayang-profiler/pom.xml
@@ -26,7 +26,7 @@
         <version>0.6.0-SNAPSHOT</version>
     </parent>
 
-    <artifactId>wayang-profiler_2.11</artifactId>
+    <artifactId>wayang-profiler</artifactId>
     <version>0.6.0-SNAPSHOT</version>
 
     <name>Wayang Profiler</name>
@@ -57,7 +57,7 @@
         </dependency>
         <dependency>
             <groupId>org.apache.wayang</groupId>
-            <artifactId>wayang-spark_${scala.mayor.version}</artifactId>
+            <artifactId>wayang-spark</artifactId>
             <version>0.6.0-SNAPSHOT</version>
         </dependency>
         <dependency>
@@ -67,11 +67,6 @@
         </dependency>
         <dependency>
             <groupId>org.apache.wayang</groupId>
-            <artifactId>wayang-graphchi_${scala.mayor.version}</artifactId>
-            <version>0.6.0-SNAPSHOT</version>
-        </dependency>
-        <dependency>
-            <groupId>org.apache.wayang</groupId>
             <artifactId>wayang-postgres</artifactId>
             <version>0.6.0-SNAPSHOT</version>
         </dependency>
@@ -90,5 +85,29 @@
             <artifactId>profiledb-instrumentation</artifactId>
         </dependency>
     </dependencies>
-
+    <profiles>
+        <profile>
+            <id>scala-11</id>
+            <dependencies>
+                <dependency>
+                    <groupId>org.apache.wayang</groupId>
+                    <artifactId>wayang-graphchi</artifactId>
+                    <version>0.6.0-SNAPSHOT</version>
+                    <scope>test</scope>
+                </dependency>
+                <dependency>
+                    <groupId>org.graphchi</groupId>
+                    
<artifactId>graphchi-java_${scala.mayor.version}</artifactId>
+                    <version>0.2.2</version>
+                    <scope>test</scope>
+                    <exclusions>
+                        <exclusion>
+                            <groupId>org.apache.hadoop</groupId>
+                            <artifactId>hadoop-core</artifactId>
+                        </exclusion>
+                    </exclusions>
+                </dependency>
+            </dependencies>
+        </profile>
+    </profiles>
 </project>
diff --git 
a/wayang-profiler/src/main/java/org/apache/wayang/profiler/log/GeneticOptimizerApp.java
 
b/wayang-profiler/src/main/java/org/apache/wayang/profiler/log/GeneticOptimizerApp.java
index 0a171a2..f091ad8 100644
--- 
a/wayang-profiler/src/main/java/org/apache/wayang/profiler/log/GeneticOptimizerApp.java
+++ 
b/wayang-profiler/src/main/java/org/apache/wayang/profiler/log/GeneticOptimizerApp.java
@@ -33,7 +33,6 @@ import org.apache.wayang.core.util.Bitmask;
 import org.apache.wayang.core.util.Formats;
 import org.apache.wayang.core.util.WayangCollections;
 import org.apache.wayang.core.util.Tuple;
-import org.apache.wayang.graphchi.GraphChi;
 import org.apache.wayang.java.Java;
 import org.apache.wayang.postgres.Postgres;
 import org.apache.wayang.spark.Spark;
@@ -110,7 +109,7 @@ public class GeneticOptimizerApp {
         Spark.platform();
         Sqlite3.platform();
         Postgres.platform();
-        GraphChi.platform();
+        //TODO: add dinamically Graphchi, if the version of scala is 2.11
 
         // Load the ExecutionLog.
         double samplingFactor = 
this.configuration.getDoubleProperty("wayang.profiler.ga.sampling", 1d);
diff --git a/wayang-tests-integration/pom.xml b/wayang-tests-integration/pom.xml
index 0a595fc..231c8dd 100644
--- a/wayang-tests-integration/pom.xml
+++ b/wayang-tests-integration/pom.xml
@@ -26,7 +26,7 @@
         <version>0.6.0-SNAPSHOT</version>
     </parent>
 
-    <artifactId>wayang-tests-integration_2.11</artifactId>
+    <artifactId>wayang-tests-integration</artifactId>
     <version>0.6.0-SNAPSHOT</version>
 
     <name>Wayang Integration Test</name>
@@ -37,17 +37,10 @@
         <graphchi.version>0.2.2</graphchi.version>
         <spark.version>2.4.0</spark.version>
         <flink.version>1.7.1</flink.version>
-        <scala.mayor.version>2.11</scala.mayor.version>
         <giraph.version>1.2.0-hadoop2</giraph.version>
     </properties>
 
     <dependencies>
-        <!--dependency>
-            <groupId>org.apache.wayang</groupId>
-            <artifactId>wayang-commons</artifactId>
-            <version>0.6.0-SNAPSHOT</version>
-            <scope>test</scope>
-        </dependency-->
         <dependency>
             <groupId>org.apache.wayang</groupId>
             <artifactId>wayang-java</artifactId>
@@ -78,33 +71,17 @@
             <version>0.6.0-SNAPSHOT</version>
             <scope>test</scope>
         </dependency>
+
         <dependency>
             <groupId>org.apache.wayang</groupId>
-            <artifactId>wayang-graphchi_${scala.mayor.version}</artifactId>
-            <version>0.6.0-SNAPSHOT</version>
-            <scope>test</scope>
-        </dependency>
-        <dependency>
-            <groupId>org.apache.wayang</groupId>
-            <artifactId>wayang-spark_${scala.mayor.version}</artifactId>
+            <artifactId>wayang-spark</artifactId>
             <version>0.6.0-SNAPSHOT</version>
             <scope>test</scope>
         </dependency>
-        <dependency>
-            <groupId>org.graphchi</groupId>
-            <artifactId>graphchi-java_${scala.mayor.version}</artifactId>
-            <version>${graphchi.version}</version>
-            <scope>test</scope>
-            <exclusions>
-                <exclusion>
-                    <groupId>org.apache.hadoop</groupId>
-                    <artifactId>hadoop-core</artifactId>
-                </exclusion>
-            </exclusions>
-        </dependency>
+
         <dependency>
             <groupId>org.apache.wayang</groupId>
-            
<artifactId>wayang-api-scala-java_${scala.mayor.version}</artifactId>
+            <artifactId>wayang-api-scala-java</artifactId>
             <version>0.6.0-SNAPSHOT</version>
             <scope>test</scope>
         </dependency>
@@ -171,9 +148,6 @@
             </exclusions>
         </dependency>
 
-
-
-
         <dependency>
             <groupId>org.apache.hadoop</groupId>
             <artifactId>hadoop-common</artifactId>
@@ -271,5 +245,51 @@
 
         </plugins>
     </build>
-
+    <profiles>
+        <profile>
+            <id>scala-11</id>
+            <build>
+                <plugins>
+                    <plugin>
+                        <groupId>org.codehaus.mojo</groupId>
+                        <artifactId>build-helper-maven-plugin</artifactId>
+                        <executions>
+                            <execution>
+                                <phase>generate-test-sources</phase>
+                                <goals>
+                                    <goal>add-test-source</goal>
+                                </goals>
+                                <configuration>
+                                    <sources>
+                                        <source>src_2_11/test/java</source>
+                                        <source>src/test/java</source>
+                                    </sources>
+                                </configuration>
+                            </execution>
+                        </executions>
+                    </plugin>
+                </plugins>
+            </build>
+            <dependencies>
+                <dependency>
+                    <groupId>org.apache.wayang</groupId>
+                    <artifactId>wayang-graphchi</artifactId>
+                    <version>0.6.0-SNAPSHOT</version>
+                    <scope>test</scope>
+                </dependency>
+                <dependency>
+                    <groupId>org.graphchi</groupId>
+                    
<artifactId>graphchi-java_${scala.mayor.version}</artifactId>
+                    <version>${graphchi.version}</version>
+                    <scope>test</scope>
+                    <exclusions>
+                        <exclusion>
+                            <groupId>org.apache.hadoop</groupId>
+                            <artifactId>hadoop-core</artifactId>
+                        </exclusion>
+                    </exclusions>
+                </dependency>
+            </dependencies>
+        </profile>
+    </profiles>
 </project>
diff --git 
a/wayang-tests-integration/src/test/java/org/apache/wayang/tests/FlinkIntegrationIT.java
 
b/wayang-tests-integration/src/test/java/org/apache/wayang/tests/FlinkIntegrationIT.java
index 6698750..b5d964c 100644
--- 
a/wayang-tests-integration/src/test/java/org/apache/wayang/tests/FlinkIntegrationIT.java
+++ 
b/wayang-tests-integration/src/test/java/org/apache/wayang/tests/FlinkIntegrationIT.java
@@ -18,6 +18,7 @@
 
 package org.apache.wayang.tests;
 
+import org.apache.wayang.java.plugin.JavaBasicPlugin;
 import org.junit.Assert;
 import org.junit.Test;
 import org.apache.wayang.basic.data.Tuple2;
@@ -405,7 +406,8 @@ public class FlinkIntegrationIT {
         Assert.assertEquals(WayangCollections.asSet(1, 4, 9), 
WayangCollections.asSet(collector));
     }
 
-    @Test
+    //TODO validate this test is required
+    //@Test
     public void testPageRankWithGraphBasic() {
         // Build the WayangPlan.
         List<Tuple2<Long, Long>> edges = Arrays.asList(
@@ -423,7 +425,6 @@ public class FlinkIntegrationIT {
         // Execute the plan with a certain backend.
         WayangContext wayangContext = new WayangContext()
                 .with(Flink.basicPlugin());
-                //.with(WayangBasics.graphPlugin());
         wayangContext.execute(wayangPlan);
 
 
diff --git 
a/wayang-tests-integration/src/test/java/org/apache/wayang/tests/GiraphIntegrationIT.java
 
b/wayang-tests-integration/src/test/java/org/apache/wayang/tests/GiraphIntegrationIT.java
index d5c1b2e..8921a26 100644
--- 
a/wayang-tests-integration/src/test/java/org/apache/wayang/tests/GiraphIntegrationIT.java
+++ 
b/wayang-tests-integration/src/test/java/org/apache/wayang/tests/GiraphIntegrationIT.java
@@ -24,10 +24,7 @@ import org.apache.wayang.basic.data.Tuple2;
 import org.apache.wayang.core.api.WayangContext;
 import org.apache.wayang.core.plan.wayangplan.WayangPlan;
 import org.apache.wayang.giraph.Giraph;
-import org.apache.wayang.graphchi.GraphChi;
 import org.apache.wayang.java.Java;
-import org.apache.wayang.spark.Spark;
-import org.apache.wayang.tests.WayangPlans;
 
 import java.util.ArrayList;
 import java.util.List;
@@ -36,7 +33,7 @@ import java.util.Set;
 import java.util.stream.Collectors;
 
 /**
- * Integration tests for the integration of GraphChi with Wayang.
+ * Integration tests for the integration of Giraph with Wayang.
  */
 public class GiraphIntegrationIT {
 
diff --git 
a/wayang-tests-integration/src/test/java/org/apache/wayang/tests/WayangPlans.java
 
b/wayang-tests-integration/src/test/java/org/apache/wayang/tests/WayangPlans.java
index 3062afb..88ef6d7 100644
--- 
a/wayang-tests-integration/src/test/java/org/apache/wayang/tests/WayangPlans.java
+++ 
b/wayang-tests-integration/src/test/java/org/apache/wayang/tests/WayangPlans.java
@@ -73,7 +73,7 @@ import java.util.stream.Collectors;
 import java.util.stream.Stream;
 
 /**
- * Provides plans that can be used for integration testing..
+ * Provides plans that can be used for integration testing.
  */
 public class WayangPlans {
 
@@ -89,7 +89,7 @@ public class WayangPlans {
 
     public static URI createUri(String resourcePath) {
         try {
-            return 
Thread.currentThread().getClass().getResource(resourcePath).toURI();
+            return WayangPlans.class.getResource(resourcePath).toURI();
         } catch (URISyntaxException e) {
             throw new IllegalArgumentException("Illegal URI.", e);
         }
diff --git 
a/wayang-tests-integration/src/test/java/org/apache/wayang/tests/GraphChiIntegrationIT.java
 
b/wayang-tests-integration/src_2_11/test/java/org/apache/wayang/test/GraphChiIntegrationIT.java
similarity index 98%
rename from 
wayang-tests-integration/src/test/java/org/apache/wayang/tests/GraphChiIntegrationIT.java
rename to 
wayang-tests-integration/src_2_11/test/java/org/apache/wayang/test/GraphChiIntegrationIT.java
index 8c42fd1..b515904 100644
--- 
a/wayang-tests-integration/src/test/java/org/apache/wayang/tests/GraphChiIntegrationIT.java
+++ 
b/wayang-tests-integration/src_2_11/test/java/org/apache/wayang/test/GraphChiIntegrationIT.java
@@ -16,8 +16,9 @@
  * limitations under the License.
  */
 
-package org.apache.wayang.tests;
+package org.apache.wayang.test;
 
+import org.apache.wayang.tests.WayangPlans;
 import org.junit.Assert;
 import org.junit.Test;
 import org.apache.wayang.basic.data.Tuple2;

Reply via email to