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>
