From 99a21a8c1d467e35599788c85e9a39eb95e92658 Mon Sep 17 00:00:00 2001 From: "PSp..om" Date: Sun, 27 Mar 2011 05:31:21 +0000 Subject: [PATCH] This would have saved me soooo much time. Serializer's single-arg registerClass() method now throws an exception if the object is not marked Serializable. Internally, the package-load stuff uses the new alternate method that allows safe non-exception throwing registration since it's hitting it with every class in a package. Interestingly enough, messages will still get written out because of some questionable code in writeClassAndObject()... but it won't be read as anything but null despite its 40+ bytes of data. git-svn-id: https://jmonkeyengine.googlecode.com/svn/trunk@7121 75d07b2b-3a1a-0410-a2c5-0572b91ccdca --- .../com/jme3/network/serializing/Serializer.java | 9 ++++++++- 1 file changed, 8 insertions(+), 1 deletion(-) diff --git a/engine/src/networking/com/jme3/network/serializing/Serializer.java b/engine/src/networking/com/jme3/network/serializing/Serializer.java index 5b33f53a3..9fb0772ec 100644 --- a/engine/src/networking/com/jme3/network/serializing/Serializer.java +++ b/engine/src/networking/com/jme3/network/serializing/Serializer.java @@ -128,6 +128,10 @@ public abstract class Serializer { } public static SerializerRegistration registerClass(Class cls) { + return registerClass(cls, true); + } + + public static SerializerRegistration registerClass(Class cls, boolean failOnMiss) { if (cls.isAnnotationPresent(Serializable.class)) { Serializable serializable = (Serializable)cls.getAnnotation(Serializable.class); @@ -151,6 +155,9 @@ public abstract class Serializer { return reg; } + if (failOnMiss) { + throw new IllegalArgumentException( "Class is not marked @Serializable:" + cls ); + } return null; } @@ -172,7 +179,7 @@ public abstract class Serializer { SerializerRegistration[] registeredClasses = new SerializerRegistration[classes.size()]; for (int i = 0; i != classes.size(); ++i) { Class clz = classes.get(i); - registeredClasses[i] = registerClass(clz); + registeredClasses[i] = registerClass(clz, false); } return registeredClasses; } catch (Exception e) {