HADOOP-8566. AvroReflectSerializer.accept(Class) throws a NPE if the class has no package (primitive types and arrays). (tucu)

git-svn-id: https://svn.apache.org/repos/asf/hadoop/common/trunk@1358454 13f79535-47bb-0310-9956-ffa450edef68
This commit is contained in:
Alejandro Abdelnur 2012-07-06 22:27:13 +00:00
parent 141127660c
commit 0a2252bdda
3 changed files with 12 additions and 2 deletions

View File

@ -313,6 +313,9 @@ Branch-2 ( Unreleased changes )
HADOOP-8563. don't package hadoop-pipes examples/bin HADOOP-8563. don't package hadoop-pipes examples/bin
(Colin Patrick McCabe via tgraves) (Colin Patrick McCabe via tgraves)
HADOOP-8566. AvroReflectSerializer.accept(Class) throws a NPE if the class has no
package (primitive types and arrays). (tucu)
BREAKDOWN OF HDFS-3042 SUBTASKS BREAKDOWN OF HDFS-3042 SUBTASKS
HADOOP-8220. ZKFailoverController doesn't handle failure to become active HADOOP-8220. ZKFailoverController doesn't handle failure to become active

View File

@ -58,8 +58,8 @@ public synchronized boolean accept(Class<?> c) {
if (packages == null) { if (packages == null) {
getPackages(); getPackages();
} }
return AvroReflectSerializable.class.isAssignableFrom(c) || return AvroReflectSerializable.class.isAssignableFrom(c) ||
packages.contains(c.getPackage().getName()); (c.getPackage() != null && packages.contains(c.getPackage().getName()));
} }
private void getPackages() { private void getPackages() {

View File

@ -21,6 +21,7 @@
import junit.framework.TestCase; import junit.framework.TestCase;
import org.apache.hadoop.conf.Configuration; import org.apache.hadoop.conf.Configuration;
import org.apache.hadoop.io.serializer.SerializationFactory;
import org.apache.hadoop.io.serializer.SerializationTestUtil; import org.apache.hadoop.io.serializer.SerializationTestUtil;
public class TestAvroSerialization extends TestCase { public class TestAvroSerialization extends TestCase {
@ -43,6 +44,12 @@ public void testReflectPkg() throws Exception {
assertEquals(before, after); assertEquals(before, after);
} }
public void testAcceptHandlingPrimitivesAndArrays() throws Exception {
SerializationFactory factory = new SerializationFactory(conf);
assertNull(factory.getSerializer(byte[].class));
assertNull(factory.getSerializer(byte.class));
}
public void testReflectInnerClass() throws Exception { public void testReflectInnerClass() throws Exception {
InnerRecord before = new InnerRecord(); InnerRecord before = new InnerRecord();
before.x = 10; before.x = 10;