Replace ClassHierarchy serializer and leave comments for the future changes
Project: http://git-wip-us.apache.org/repos/asf/incubator-reef/repo Commit: http://git-wip-us.apache.org/repos/asf/incubator-reef/commit/14418120 Tree: http://git-wip-us.apache.org/repos/asf/incubator-reef/tree/14418120 Diff: http://git-wip-us.apache.org/repos/asf/incubator-reef/diff/14418120 Branch: refs/heads/REEF-395 Commit: 144181204eee118d7be0fe1e6af360596c4950ba Parents: 2328a9d Author: Yunseong Lee <[email protected]> Authored: Mon Jun 22 21:20:14 2015 +0900 Committer: Yunseong Lee <[email protected]> Committed: Mon Jun 22 22:06:44 2015 +0900 ---------------------------------------------------------------------- .../org/apache/reef/javabridge/Utilities.java | 2 ++ .../reef/examples/helloCLR/HelloDriver.java | 2 ++ .../reef/tang/util/ValidateConfiguration.java | 2 ++ .../tang/ClassHierarchyDeserializationTest.java | 24 ++++++++++++++------ .../apache/reef/tang/test/RoundTripTest.java | 6 +++-- 5 files changed, 27 insertions(+), 9 deletions(-) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/incubator-reef/blob/14418120/lang/java/reef-bridge-java/src/main/java/org/apache/reef/javabridge/Utilities.java ---------------------------------------------------------------------- diff --git a/lang/java/reef-bridge-java/src/main/java/org/apache/reef/javabridge/Utilities.java b/lang/java/reef-bridge-java/src/main/java/org/apache/reef/javabridge/Utilities.java index 93b6903..88307cf 100644 --- a/lang/java/reef-bridge-java/src/main/java/org/apache/reef/javabridge/Utilities.java +++ b/lang/java/reef-bridge-java/src/main/java/org/apache/reef/javabridge/Utilities.java @@ -33,6 +33,7 @@ import java.nio.file.Paths; public class Utilities { public static ClassHierarchy loadClassHierarchy(String classHierarchyFile) { + // TODO The file should be created via AvroClassHierarchySerializer Path p = Paths.get(classHierarchyFile); if (!Files.exists(p)) { p = Paths.get(System.getProperty("user.dir") + "/reef/global/" + classHierarchyFile); @@ -40,6 +41,7 @@ public class Utilities { if (!Files.exists(p)) { throw new RuntimeException("cannot find file " + p.toAbsolutePath()); } + // TODO Use the AvroClassHierarchy in place of protobuf try (final InputStream chin = new FileInputStream(p.toAbsolutePath().toString())) { final ClassHierarchyProto.Node root = ClassHierarchyProto.Node.parseFrom(chin); final ClassHierarchy ch = new ProtocolBufferClassHierarchy(root); http://git-wip-us.apache.org/repos/asf/incubator-reef/blob/14418120/lang/java/reef-examples-clr/src/main/java/org/apache/reef/examples/helloCLR/HelloDriver.java ---------------------------------------------------------------------- diff --git a/lang/java/reef-examples-clr/src/main/java/org/apache/reef/examples/helloCLR/HelloDriver.java b/lang/java/reef-examples-clr/src/main/java/org/apache/reef/examples/helloCLR/HelloDriver.java index 33f60a3..6c64cdc 100644 --- a/lang/java/reef-examples-clr/src/main/java/org/apache/reef/examples/helloCLR/HelloDriver.java +++ b/lang/java/reef-examples-clr/src/main/java/org/apache/reef/examples/helloCLR/HelloDriver.java @@ -92,7 +92,9 @@ public final class HelloDriver { * @return */ private static ClassHierarchy loadClassHierarchy() { + // TODO The file should be created by AvroClassHierarchySerializer try (final InputStream chin = new FileInputStream(HelloCLR.CLASS_HIERARCHY_FILENAME)) { + // TODO Use AvroClassHierarchySerializer instead final ClassHierarchyProto.Node root = ClassHierarchyProto.Node.parseFrom(chin); // A final ClassHierarchy ch = new ProtocolBufferClassHierarchy(root); return ch; http://git-wip-us.apache.org/repos/asf/incubator-reef/blob/14418120/lang/java/reef-tang/tang/src/main/java/org/apache/reef/tang/util/ValidateConfiguration.java ---------------------------------------------------------------------- diff --git a/lang/java/reef-tang/tang/src/main/java/org/apache/reef/tang/util/ValidateConfiguration.java b/lang/java/reef-tang/tang/src/main/java/org/apache/reef/tang/util/ValidateConfiguration.java index 82c929c..31f4b96 100644 --- a/lang/java/reef-tang/tang/src/main/java/org/apache/reef/tang/util/ValidateConfiguration.java +++ b/lang/java/reef-tang/tang/src/main/java/org/apache/reef/tang/util/ValidateConfiguration.java @@ -36,6 +36,7 @@ import java.io.FileInputStream; import java.io.IOException; import java.io.InputStream; +// TODO Clean up the code which are deprecated and commented out. public class ValidateConfiguration { private final String target; private final File ch; @@ -85,6 +86,7 @@ public class ValidateConfiguration { final Tang t = Tang.Factory.getTang(); + // TODO Use the AvroClassHierarchySerializer final ClassHierarchyProto.Node root; try (final InputStream chin = new FileInputStream(this.ch)) { root = ClassHierarchyProto.Node.parseFrom(chin); http://git-wip-us.apache.org/repos/asf/incubator-reef/blob/14418120/lang/java/reef-tang/tang/src/test/java/org/apache/reef/tang/ClassHierarchyDeserializationTest.java ---------------------------------------------------------------------- diff --git a/lang/java/reef-tang/tang/src/test/java/org/apache/reef/tang/ClassHierarchyDeserializationTest.java b/lang/java/reef-tang/tang/src/test/java/org/apache/reef/tang/ClassHierarchyDeserializationTest.java index a7e1469..f0aebaa 100644 --- a/lang/java/reef-tang/tang/src/test/java/org/apache/reef/tang/ClassHierarchyDeserializationTest.java +++ b/lang/java/reef-tang/tang/src/test/java/org/apache/reef/tang/ClassHierarchyDeserializationTest.java @@ -18,9 +18,10 @@ */ package org.apache.reef.tang; -import org.apache.reef.tang.exceptions.BindException; import org.apache.reef.tang.exceptions.NameResolutionException; +import org.apache.reef.tang.formats.AvroClassHierarchySerializer; import org.apache.reef.tang.formats.AvroConfigurationSerializer; +import org.apache.reef.tang.formats.ClassHierarchySerializer; import org.apache.reef.tang.formats.ConfigurationSerializer; import org.apache.reef.tang.implementation.protobuf.ProtocolBufferClassHierarchy; import org.apache.reef.tang.proto.ClassHierarchyProto; @@ -35,16 +36,21 @@ import java.util.Set; /** * Test case for class hierarchy deserialization. + * TODO The files should be created and deserialized by the AvroClassHierarchySerializer */ public class ClassHierarchyDeserializationTest { + private final ConfigurationSerializer configurationSerializer = new AvroConfigurationSerializer(); + private final ClassHierarchySerializer classHierarchySerializer = new AvroClassHierarchySerializer(); /** * generate task.bin from running .Net ClassHierarchyBuilder.exe */ @Test public void testDeserializationForTasks() { + // TODO The file should be written by Avro try (final InputStream chin = Thread.currentThread().getContextClassLoader() .getResourceAsStream("Task.bin")) { + // TODO Use AvroClassHierarchySerializer instead final ClassHierarchyProto.Node root = ClassHierarchyProto.Node.parseFrom(chin); final ClassHierarchy ch = new ProtocolBufferClassHierarchy(root); Node n1 = ch.getNode("Org.Apache.REEF.Examples.Tasks.StreamingTasks.StreamTask1, Org.Apache.REEF.Examples.Tasks, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null"); @@ -75,8 +81,10 @@ public class ClassHierarchyDeserializationTest { final ConfigurationBuilder taskConfigurationBuilder; final ConfigurationBuilder eventConfigurationBuilder; + // TODO The file should be written by Avro try (final InputStream chin = Thread.currentThread().getContextClassLoader() .getResourceAsStream("Task.bin")) { + // TODO Use AvroClassHierarchySerializer instead final ClassHierarchyProto.Node root = ClassHierarchyProto.Node.parseFrom(chin); final ClassHierarchy ch = new ProtocolBufferClassHierarchy(root); taskConfigurationBuilder = Tang.Factory.getTang().newConfigurationBuilder(ch); @@ -85,8 +93,10 @@ public class ClassHierarchyDeserializationTest { throw new RuntimeException(message, e); } + // TODO The file should be written by Avro try (final InputStream chin = Thread.currentThread().getContextClassLoader() .getResourceAsStream("Event.bin")) { + // TODO Use AvroClassHierarchySerializer instead final ClassHierarchyProto.Node root = ClassHierarchyProto.Node.parseFrom(chin); final ClassHierarchy ch = new ProtocolBufferClassHierarchy(root); eventConfigurationBuilder = Tang.Factory.getTang().newConfigurationBuilder(ch); @@ -103,8 +113,10 @@ public class ClassHierarchyDeserializationTest { */ @Test public void testDeserializationForEvent() { + // TODO The file should be written by Avro try (final InputStream chin = Thread.currentThread().getContextClassLoader() .getResourceAsStream("Event.bin")) { + // TODO Use AvroClassHierarchySerializer instead final ClassHierarchyProto.Node root = ClassHierarchyProto.Node.parseFrom(chin); final ClassHierarchy ch = new ProtocolBufferClassHierarchy(root); final ConfigurationBuilder taskConfigurationBuilder = Tang.Factory.getTang() @@ -120,15 +132,14 @@ public class ClassHierarchyDeserializationTest { public void testBindSetEntryWithSetOfT() throws IOException { final ClassHierarchy ns1 = Tang.Factory.getTang().getDefaultClassHierarchy(); ns1.getNode(SetOfClasses.class.getName()); - final ClassHierarchy ns2 = new ProtocolBufferClassHierarchy(ProtocolBufferClassHierarchy.serialize(ns1)); + final ClassHierarchy ns2 = classHierarchySerializer.fromString(classHierarchySerializer.toString(ns1)); final ConfigurationBuilder cb = Tang.Factory.getTang().newConfigurationBuilder(ns2); final NamedParameterNode<Set<Number>> n2 = (NamedParameterNode<Set<Number>>) ns1.getNode(SetOfClasses.class.getName()); final Node fn = ns1.getNode(Float.class.getName()); cb.bindSetEntry(n2, fn); - final ConfigurationSerializer serializer = new AvroConfigurationSerializer(); - final Configuration c = serializer.fromString(serializer.toString(cb.build()), ns2); + final Configuration c = configurationSerializer.fromString(configurationSerializer.toString(cb.build()), ns2); } @Test @@ -136,7 +147,7 @@ public class ClassHierarchyDeserializationTest { public void testBindSetEntryWithSetOfString() throws IOException { final ClassHierarchy ns1 = Tang.Factory.getTang().getDefaultClassHierarchy(); ns1.getNode(SetOfStrings.class.getName()); - final ClassHierarchy ns2 = new ProtocolBufferClassHierarchy(ProtocolBufferClassHierarchy.serialize(ns1)); + final ClassHierarchy ns2 = classHierarchySerializer.fromString(classHierarchySerializer.toString(ns1)); final ConfigurationBuilder cb = Tang.Factory.getTang().newConfigurationBuilder(ns2); cb.bindSetEntry(SetOfStrings.class.getName(), "four"); cb.bindSetEntry(SetOfStrings.class.getName(), "five"); @@ -144,7 +155,6 @@ public class ClassHierarchyDeserializationTest { final NamedParameterNode<Set<String>> n2 = (NamedParameterNode<Set<String>>) ns1.getNode(SetOfStrings.class.getName()); cb.bindSetEntry(n2, "six"); - final ConfigurationSerializer serializer = new AvroConfigurationSerializer(); - final Configuration c = serializer.fromString(serializer.toString(cb.build()), ns2); + final Configuration c = configurationSerializer.fromString(configurationSerializer.toString(cb.build()), ns2); } } http://git-wip-us.apache.org/repos/asf/incubator-reef/blob/14418120/lang/java/reef-tang/tang/src/test/java/org/apache/reef/tang/test/RoundTripTest.java ---------------------------------------------------------------------- diff --git a/lang/java/reef-tang/tang/src/test/java/org/apache/reef/tang/test/RoundTripTest.java b/lang/java/reef-tang/tang/src/test/java/org/apache/reef/tang/test/RoundTripTest.java index 2dd34a6..7000568 100644 --- a/lang/java/reef-tang/tang/src/test/java/org/apache/reef/tang/test/RoundTripTest.java +++ b/lang/java/reef-tang/tang/src/test/java/org/apache/reef/tang/test/RoundTripTest.java @@ -21,7 +21,8 @@ package org.apache.reef.tang.test; import org.apache.reef.tang.ClassHierarchy; import org.apache.reef.tang.Configuration; import org.apache.reef.tang.Tang; -import org.apache.reef.tang.implementation.protobuf.ProtocolBufferClassHierarchy; +import org.apache.reef.tang.formats.AvroClassHierarchySerializer; +import org.apache.reef.tang.formats.ClassHierarchySerializer; import org.junit.Assert; import org.junit.Test; @@ -48,7 +49,8 @@ public abstract class RoundTripTest { public void testRoundTripWithClassHierarchy() throws Exception { // TODO: use 'getConfiguration' instead of 'getConfigurationWithoutList' after #192 is fixed final Configuration confBefore = ObjectTreeTest.getConfigurationWithoutList(); - final ClassHierarchy c = new ProtocolBufferClassHierarchy(ProtocolBufferClassHierarchy.serialize(confBefore.getClassHierarchy())); + final ClassHierarchySerializer chSerializer = new AvroClassHierarchySerializer(); + final ClassHierarchy c = chSerializer.fromString(chSerializer.toString(confBefore.getClassHierarchy())); final Configuration confAfter = roundTrip(confBefore, c); Assert.assertEquals(confBefore.getNamedParameters().size(), confAfter.getNamedParameters().size()); //For now, we cannot use ProtocolBufferClassHierarchy to do injection
