Revert to use Utf8 instead of string for avro string field

Project: http://git-wip-us.apache.org/repos/asf/incubator-reef/repo
Commit: http://git-wip-us.apache.org/repos/asf/incubator-reef/commit/2e552ef1
Tree: http://git-wip-us.apache.org/repos/asf/incubator-reef/tree/2e552ef1
Diff: http://git-wip-us.apache.org/repos/asf/incubator-reef/diff/2e552ef1

Branch: refs/heads/REEF-395
Commit: 2e552ef14aa48cd8464d43de9d8761658dd7a37c
Parents: 983fda5
Author: Yunseong Lee <[email protected]>
Authored: Tue Jun 23 21:58:12 2015 +0900
Committer: Yunseong Lee <[email protected]>
Committed: Tue Jun 23 21:58:12 2015 +0900

----------------------------------------------------------------------
 .../serialization/NamingLookupRequestCodec.java |  2 +-
 .../formats/AvroClassHierarchySerializer.java   | 13 +++--
 .../implementation/java/AvroClassHierarchy.java | 55 +++++++++++++++-----
 pom.xml                                         |  3 --
 4 files changed, 50 insertions(+), 23 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/incubator-reef/blob/2e552ef1/lang/java/reef-io/src/main/java/org/apache/reef/io/network/naming/serialization/NamingLookupRequestCodec.java
----------------------------------------------------------------------
diff --git 
a/lang/java/reef-io/src/main/java/org/apache/reef/io/network/naming/serialization/NamingLookupRequestCodec.java
 
b/lang/java/reef-io/src/main/java/org/apache/reef/io/network/naming/serialization/NamingLookupRequestCodec.java
index b7261b4..da8b47a 100644
--- 
a/lang/java/reef-io/src/main/java/org/apache/reef/io/network/naming/serialization/NamingLookupRequestCodec.java
+++ 
b/lang/java/reef-io/src/main/java/org/apache/reef/io/network/naming/serialization/NamingLookupRequestCodec.java
@@ -52,7 +52,7 @@ public final class NamingLookupRequestCodec implements 
Codec<NamingLookupRequest
    */
   @Override
   public byte[] encode(final NamingLookupRequest obj) {
-    final List<String> ids = new ArrayList<>();
+    final List<CharSequence> ids = new ArrayList<>();
     for (final Identifier id : obj.getIdentifiers()) {
       ids.add(id.toString());
     }

http://git-wip-us.apache.org/repos/asf/incubator-reef/blob/2e552ef1/lang/java/reef-tang/tang/src/main/java/org/apache/reef/tang/formats/AvroClassHierarchySerializer.java
----------------------------------------------------------------------
diff --git 
a/lang/java/reef-tang/tang/src/main/java/org/apache/reef/tang/formats/AvroClassHierarchySerializer.java
 
b/lang/java/reef-tang/tang/src/main/java/org/apache/reef/tang/formats/AvroClassHierarchySerializer.java
index 7cbe502..8dbc0af 100644
--- 
a/lang/java/reef-tang/tang/src/main/java/org/apache/reef/tang/formats/AvroClassHierarchySerializer.java
+++ 
b/lang/java/reef-tang/tang/src/main/java/org/apache/reef/tang/formats/AvroClassHierarchySerializer.java
@@ -85,7 +85,7 @@ public final class AvroClassHierarchySerializer implements 
ClassHierarchySeriali
       for (final ConstructorDef<?> other : others) {
         otherConstructors.add(newConstructorDef(other));
       }
-      final List<String> implFullNames = new ArrayList<>();
+      final List<CharSequence> implFullNames = new ArrayList<>();
       for (final ClassNode<?> impl : cn.getKnownImplementations()) {
         implFullNames.add(impl.getFullName());
       }
@@ -94,9 +94,12 @@ public final class AvroClassHierarchySerializer implements 
ClassHierarchySeriali
               children);
     } else if (n instanceof NamedParameterNode) {
       final NamedParameterNode<?> np = (NamedParameterNode<?>) n;
+      final List<CharSequence> defaultInstances = new ArrayList<>();
+      for (final CharSequence defaultInstance : 
np.getDefaultInstanceAsStrings()) {
+        defaultInstances.add(defaultInstance);
+      }
       return newNamedParameterNode(np.getName(), np.getFullName(), 
np.getSimpleArgName(), np.getFullArgName(),
-              np.isSet(), np.isList(), np.getDocumentation(), 
np.getShortName(),
-              Arrays.asList(np.getDefaultInstanceAsStrings()), children);
+              np.isSet(), np.isList(), np.getDocumentation(), 
np.getShortName(), defaultInstances, children);
     } else if (n instanceof PackageNode) {
       return newPackageNode(n.getName(), n.getFullName(), children);
     } else {
@@ -111,7 +114,7 @@ public final class AvroClassHierarchySerializer implements 
ClassHierarchySeriali
                                        final boolean isUnit,
                                        final List<AvroConstructorDef> 
injectableConstructors,
                                        final List<AvroConstructorDef> 
otherConstructors,
-                                       final List<String> implFullNames,
+                                       final List<CharSequence> implFullNames,
                                        final String defaultImplementation,
                                        final List<AvroNode> children) {
     return AvroNode.newBuilder()
@@ -137,7 +140,7 @@ public final class AvroClassHierarchySerializer implements 
ClassHierarchySeriali
                                                 final boolean isList,
                                                 final String documentation,
                                                 final String shortName,
-                                                final List<String> 
instanceDefault,
+                                                final List<CharSequence> 
instanceDefault,
                                                 final List<AvroNode> children) 
{
 
     return AvroNode.newBuilder()

http://git-wip-us.apache.org/repos/asf/incubator-reef/blob/2e552ef1/lang/java/reef-tang/tang/src/main/java/org/apache/reef/tang/implementation/java/AvroClassHierarchy.java
----------------------------------------------------------------------
diff --git 
a/lang/java/reef-tang/tang/src/main/java/org/apache/reef/tang/implementation/java/AvroClassHierarchy.java
 
b/lang/java/reef-tang/tang/src/main/java/org/apache/reef/tang/implementation/java/AvroClassHierarchy.java
index ef75cbc..4c275a7 100644
--- 
a/lang/java/reef-tang/tang/src/main/java/org/apache/reef/tang/implementation/java/AvroClassHierarchy.java
+++ 
b/lang/java/reef-tang/tang/src/main/java/org/apache/reef/tang/implementation/java/AvroClassHierarchy.java
@@ -70,9 +70,12 @@ public final class AvroClassHierarchy implements 
ClassHierarchy {
   private static ConstructorDef<?> parseConstructorDef(final 
AvroConstructorDef def, final boolean isInjectable) {
     final List<ConstructorArg> args = new ArrayList<>();
     for (final AvroConstructorArg arg : def.getConstructorArg()) {
-      args.add(new ConstructorArgImpl(arg.getFullArgClassName(), 
arg.getNamedParameterName(), arg.getIsInjectionFuture()));
+      args.add(new ConstructorArgImpl(getString(arg.getFullArgClassName()), 
getString(arg.getNamedParameterName()),
+              arg.getIsInjectionFuture()));
     }
-    return new ConstructorDefImpl<>(def.getFullArgClassName(), 
args.toArray(new ConstructorArg[0]), isInjectable);
+    return new ConstructorDefImpl<>(getString(def.getFullArgClassName()), 
args.toArray(new ConstructorArg[0]),
+            isInjectable);
+
   }
 
   /**
@@ -81,12 +84,14 @@ public final class AvroClassHierarchy implements 
ClassHierarchy {
   private static void parseSubHierarchy(final Node parent, final AvroNode n) {
     final Node parsed;
     if (n.getPackageNode() != null) {
-      parsed = new PackageNodeImpl(parent, n.getName(), n.getFullName());
+      parsed = new PackageNodeImpl(parent, getString(n.getName()), 
getString(n.getFullName()));
     } else if (n.getNamedParameterNode() != null) {
       final AvroNamedParameterNode np = n.getNamedParameterNode();
-      parsed = new NamedParameterNodeImpl<>(parent, n.getName(), 
n.getFullName(),
-              np.getFullArgClassName(), np.getSimpleArgClassName(), 
np.getIsSet(), np.getIsList(),
-              np.getDocumentation(), np.getShortName(), 
np.getInstanceDefault().toArray(new String[0]));
+
+
+      parsed = new NamedParameterNodeImpl<>(parent, getString(n.getName()), 
getString(n.getFullName()),
+              getString(np.getFullArgClassName()), 
getString(np.getSimpleArgClassName()), np.getIsSet(), np.getIsList(),
+              getString(np.getDocumentation()), getString(np.getShortName()), 
getStringArray(np.getInstanceDefault()));
     } else if (n.getClassNode() != null) {
       final AvroClassNode cn = n.getClassNode();
       final List<ConstructorDef<?>> injectableConstructors = new ArrayList<>();
@@ -103,10 +108,9 @@ public final class AvroClassHierarchy implements 
ClassHierarchy {
       }
       @SuppressWarnings("unchecked")
       final ConstructorDef<Object>[] dummy = new ConstructorDef[0];
-      final String defaultImpl = cn.getDefaultImplementation() == null ? null 
: cn.getDefaultImplementation();
-      parsed = new ClassNodeImpl<>(parent, n.getName(), n.getFullName(), 
cn.getIsUnit(),
+      parsed = new ClassNodeImpl<>(parent, getString(n.getName()), 
getString(n.getFullName()), cn.getIsUnit(),
               cn.getIsInjectionCandidate(), cn.getIsExternalConstructor(), 
injectableConstructors.toArray(dummy),
-              allConstructors.toArray(dummy), defaultImpl);
+              allConstructors.toArray(dummy), 
getString(cn.getDefaultImplementation()));
     } else {
       throw new IllegalStateException("Bad avro node: got abstract node" + n);
     }
@@ -125,16 +129,16 @@ public final class AvroClassHierarchy implements 
ClassHierarchy {
       final AvroClassNode cn = n.getClassNode();
       final ClassNode iface;
       try {
-        iface = (ClassNode) getNode(n.getFullName());
+        iface = (ClassNode) getNode(getString(n.getFullName()));
       } catch (NameResolutionException e) {
         final String errorMessage = new StringBuilder()
                 .append("When reading avro node ").append(n.getFullName())
                 .append(" does not exist.  Full record is 
").append(n).toString();
         throw new IllegalStateException(errorMessage, e);
       }
-      for (final String impl : cn.getImplFullNames()) {
+      for (final CharSequence impl : cn.getImplFullNames()) {
         try {
-          iface.putImpl((ClassNode) getNode(impl));
+          iface.putImpl((ClassNode) getNode(getString(impl)));
         } catch (NameResolutionException e) {
           final String errorMessage = new StringBuilder()
                   .append("When reading avro node ").append(n)
@@ -143,8 +147,8 @@ public final class AvroClassHierarchy implements 
ClassHierarchy {
         } catch (ClassCastException e) {
           try {
             final String errorMessage = new StringBuilder()
-                    .append("When reading avro node ").append(n).append(" 
found implementation").append(getNode(impl))
-                    .append(" which is not a ClassNode!").toString();
+                    .append("When reading avro node ").append(n).append(" 
found implementation")
+                    .append(getNode(getString(impl))).append(" which is not a 
ClassNode!").toString();
             throw new IllegalStateException(errorMessage, e);
           } catch (NameResolutionException e2) {
             final String errorMessage = new StringBuilder()
@@ -161,6 +165,29 @@ public final class AvroClassHierarchy implements 
ClassHierarchy {
     }
   }
 
+  /**
+   * Get the value of the CharSequence. Return null if the CharSequence is 
null.
+   */
+  private static String getString(final CharSequence charSeq) {
+    if (charSeq == null) {
+      return null;
+    } else {
+      return charSeq.toString();
+    }
+  }
+
+  /**
+   * Convert the CharSequence list into the String array.
+   */
+  private static String[] getStringArray(final List<CharSequence> charSeqList) 
{
+    final int length = charSeqList.size();
+    final String[] stringArray = new String[length];
+    for (int i = 0; i < length; i++) {
+      stringArray[i] = getString(charSeqList.get(i));
+    }
+    return stringArray;
+  }
+
   @Override
   public Node getNode(final String fullName) throws NameResolutionException {
     final Node matchedNode = lookupTable.get(fullName);

http://git-wip-us.apache.org/repos/asf/incubator-reef/blob/2e552ef1/pom.xml
----------------------------------------------------------------------
diff --git a/pom.xml b/pom.xml
index 1cbdde3..60f50e8 100644
--- a/pom.xml
+++ b/pom.xml
@@ -211,9 +211,6 @@ under the License.
                     <groupId>org.apache.avro</groupId>
                     <artifactId>avro-maven-plugin</artifactId>
                     <version>${avro.version}</version>
-                    <configuration>
-                      <stringType>String</stringType>
-                    </configuration>
                     <executions>
                         <execution>
                             <phase>generate-sources</phase>

Reply via email to