Author: limpbizkit
Date: Mon May 18 17:40:02 2009
New Revision: 960

Modified:
    trunk/src/com/google/inject/Key.java
    trunk/src/com/google/inject/spi/Dependency.java
    trunk/src/com/google/inject/spi/InjectionPoint.java
    trunk/src/com/google/inject/spi/Message.java
    trunk/test/com/google/inject/KeyTest.java
    trunk/test/com/google/inject/ProvisionExceptionTest.java

Log:
Stripping serializability from Key, InjectionPoint and Dependency for the  
release.

Modified: trunk/src/com/google/inject/Key.java
==============================================================================
--- trunk/src/com/google/inject/Key.java        (original)
+++ trunk/src/com/google/inject/Key.java        Mon May 18 17:40:02 2009
@@ -21,9 +21,6 @@
  import static com.google.inject.internal.Preconditions.checkArgument;
  import static com.google.inject.internal.Preconditions.checkNotNull;
  import com.google.inject.internal.ToStringBuilder;
-import java.io.InvalidObjectException;
-import java.io.ObjectInputStream;
-import java.io.Serializable;
  import java.lang.annotation.Annotation;
  import java.lang.reflect.Type;

@@ -50,7 +47,7 @@
   *
   * @author [email protected] (Bob Lee)
   */
-public class Key<T> implements Serializable {
+public class Key<T> {

    private final AnnotationStrategy annotationStrategy;

@@ -318,8 +315,7 @@
      return new Key<T>(typeLiteral, annotationStrategy.withoutAttributes());
    }

-  interface AnnotationStrategy extends Serializable {
-
+  interface AnnotationStrategy {
      Annotation getAnnotation();
      Class<? extends Annotation> getAnnotationType();
      boolean hasAttributes();
@@ -438,8 +434,6 @@
      @Override public String toString() {
        return annotation.toString();
      }
-
-    private static final long serialVersionUID = 0;
    }

    static class AnnotationTypeStrategy implements AnnotationStrategy {
@@ -487,8 +481,6 @@
      @Override public String toString() {
        return "@" + annotationType.getName();
      }
-
-    private static final long serialVersionUID = 0;
    }

    static boolean isBindingAnnotation(Annotation annotation) {
@@ -498,38 +490,5 @@
    static boolean isBindingAnnotation(
        Class<? extends Annotation> annotationType) {
      return annotationType.isAnnotationPresent(BindingAnnotation.class);
-  }
-
-  /**
-   * Serializes the key without its type literal, annotation strategy, or
-   * hash code.
-   */
-  private static class SerializedForm implements Serializable {
-    final Type type;
-    final Class<? extends Annotation> annotationType;
-    final Annotation annotationInstance;
-
-    SerializedForm(Key<?> key) {
-      this.type = key.getTypeLiteral().getType();
-      this.annotationType = key.getAnnotationType();
-      this.annotationInstance = key.getAnnotation();
-    }
-
-    final Object readResolve() {
-      return annotationInstance != null ? Key.get(type, annotationInstance)
-          : annotationType != null ? Key.get(type, annotationType)
-          : Key.get(type);
-    }
-
-    private static final long serialVersionUID = 0;
-  }
-
-  private void readObject(ObjectInputStream stream) throws  
InvalidObjectException {
-    throw new InvalidObjectException("Use SerializedForm");
-  }
-
-  /** @since 2.0 */
-  protected final Object writeReplace() {
-    return new SerializedForm(this);
    }
  }

Modified: trunk/src/com/google/inject/spi/Dependency.java
==============================================================================
--- trunk/src/com/google/inject/spi/Dependency.java     (original)
+++ trunk/src/com/google/inject/spi/Dependency.java     Mon May 18 17:40:02 2009
@@ -20,7 +20,6 @@
  import com.google.inject.internal.ImmutableSet;
  import com.google.inject.internal.Lists;
  import com.google.inject.internal.Objects;
-import java.io.Serializable;
  import java.util.List;
  import java.util.Set;

@@ -34,7 +33,7 @@
   * @author [email protected] (Jesse Wilson)
   * @since 2.0
   */
-public final class Dependency<T> implements Serializable {
+public final class Dependency<T> {
    private final InjectionPoint injectionPoint;
    private final Key<T> key;
    private final boolean nullable;
@@ -124,6 +123,4 @@
      }
      return builder.toString();
    }
-
-  private static final long serialVersionUID = 0;
  }

Modified: trunk/src/com/google/inject/spi/InjectionPoint.java
==============================================================================
--- trunk/src/com/google/inject/spi/InjectionPoint.java (original)
+++ trunk/src/com/google/inject/spi/InjectionPoint.java Mon May 18 17:40:02  
2009
@@ -29,8 +29,6 @@
  import com.google.inject.internal.MoreTypes;
  import static com.google.inject.internal.MoreTypes.getRawType;
  import com.google.inject.internal.Nullability;
-import java.io.ObjectStreamException;
-import java.io.Serializable;
  import java.lang.annotation.Annotation;
  import java.lang.reflect.AnnotatedElement;
  import java.lang.reflect.Constructor;
@@ -52,7 +50,7 @@
   * @author [email protected] (Bob Lee)
   * @since 2.0
   */
-public final class InjectionPoint implements Serializable {
+public final class InjectionPoint {

    private final boolean optional;
    private final Member member;
@@ -170,11 +168,6 @@
      return MoreTypes.toString(member);
    }

-  private Object writeReplace() throws ObjectStreamException {
-    Member serializableMember = member != null ?  
MoreTypes.serializableCopy(member) : null;
-    return new InjectionPoint(serializableMember, dependencies, optional);
-  }
-
    /**
     * Returns a new injection point for the injectable constructor of  
{...@code type}.
     *
@@ -410,6 +403,4 @@
      M[] getMembers(Class<?> type);
      InjectionPoint create(TypeLiteral<?> typeLiteral, M member, Errors  
errors);
    }
-
-  private static final long serialVersionUID = 0;
  }

Modified: trunk/src/com/google/inject/spi/Message.java
==============================================================================
--- trunk/src/com/google/inject/spi/Message.java        (original)
+++ trunk/src/com/google/inject/spi/Message.java        Mon May 18 17:40:02 2009
@@ -16,12 +16,13 @@

  package com.google.inject.spi;

+import com.google.inject.Binder;
  import com.google.inject.internal.Errors;
  import com.google.inject.internal.ImmutableList;
  import com.google.inject.internal.Objects;
  import static com.google.inject.internal.Preconditions.checkNotNull;
  import com.google.inject.internal.SourceProvider;
-import com.google.inject.Binder;
+import java.io.ObjectStreamException;
  import java.io.Serializable;
  import java.util.List;

@@ -113,4 +114,18 @@
    public void applyTo(Binder binder) {
      binder.withSource(getSource()).addError(this);
    }
+
+  /**
+   * When serialized, we eagerly convert sources to strings. This hurts  
our formatting, but it
+   * guarantees that the receiving end will be able to read the message.
+   */
+  private Object writeReplace() throws ObjectStreamException {
+    Object[] sourcesAsStrings = sources.toArray();
+    for (int i = 0; i < sourcesAsStrings.length; i++) {
+      sourcesAsStrings[i] = Errors.convert(sourcesAsStrings[i]).toString();
+    }
+    return new Message(ImmutableList.of(sourcesAsStrings), message, cause);
+  }
+
+  private static final long serialVersionUID = 0;
  }

Modified: trunk/test/com/google/inject/KeyTest.java
==============================================================================
--- trunk/test/com/google/inject/KeyTest.java   (original)
+++ trunk/test/com/google/inject/KeyTest.java   Mon May 18 17:40:02 2009
@@ -17,8 +17,8 @@
  package com.google.inject;

  import static com.google.inject.Asserts.assertContains;
-import static com.google.inject.Asserts.assertEqualWhenReserialized;
  import static com.google.inject.Asserts.assertEqualsBothWays;
+import static com.google.inject.Asserts.assertNotSerializable;
  import com.google.inject.name.Named;
  import com.google.inject.name.Names;
  import com.google.inject.util.Types;
@@ -125,14 +125,13 @@
    }

    public void testSerialization() throws IOException, NoSuchFieldException  
{
-    assertEqualWhenReserialized(Key.get(B.class));
-    assertEqualWhenReserialized(Key.get(B.class, Names.named("bee")));
-    assertEqualWhenReserialized(Key.get(B.class, Named.class));
-    assertEqualWhenReserialized(Key.get(B[].class));
-    assertEqualWhenReserialized(Key.get(new TypeLiteral<Map<List<B>, B>>()  
{}));
-    assertEqualWhenReserialized(Key.get(new TypeLiteral<List<B[]>>() {}));
-    assertEquals(new Key<List<B[]>>() {}, Asserts.reserialize(new  
Key<List<B[]>>() {}));
-     
assertEqualWhenReserialized(Key.get(Types.listOf(Types.subtypeOf(CharSequence.class))));
+    assertNotSerializable(Key.get(B.class));
+    assertNotSerializable(Key.get(B.class, Names.named("bee")));
+    assertNotSerializable(Key.get(B.class, Named.class));
+    assertNotSerializable(Key.get(B[].class));
+    assertNotSerializable(Key.get(new TypeLiteral<Map<List<B>, B>>() {}));
+    assertNotSerializable(Key.get(new TypeLiteral<List<B[]>>() {}));
+     
assertNotSerializable(Key.get(Types.listOf(Types.subtypeOf(CharSequence.class))));
    }

    public void testEqualityOfAnnotationTypesAndInstances() throws  
NoSuchFieldException {

Modified: trunk/test/com/google/inject/ProvisionExceptionTest.java
==============================================================================
--- trunk/test/com/google/inject/ProvisionExceptionTest.java    (original)
+++ trunk/test/com/google/inject/ProvisionExceptionTest.java    Mon May 18  
17:40:02 2009
@@ -17,7 +17,7 @@
  package com.google.inject;

  import static com.google.inject.Asserts.assertContains;
-import static com.google.inject.Asserts.assertSimilarWhenReserialized;
+import static com.google.inject.Asserts.reserialize;
  import java.io.IOException;
  import static java.lang.annotation.ElementType.CONSTRUCTOR;
  import static java.lang.annotation.ElementType.FIELD;
@@ -143,7 +143,17 @@
        Guice.createInjector().getInstance(A.class);
        fail();
      } catch (ProvisionException expected) {
-      assertSimilarWhenReserialized(expected);
+      ProvisionException reserialized = reserialize(expected);
+      assertContains(reserialized.getMessage(),
+          "1) Error injecting constructor,  
java.lang.UnsupportedOperationException",
+              "at com.google.inject.ProvisionExceptionTest$RealD.<init>()",
+              "at Key[type=com.google.inject.ProvisionExceptionTest$RealD,  
annotation=[none]]",
+              "@com.google.inject.ProvisionExceptionTest$C.setD()[0]",
+              "at Key[type=com.google.inject.ProvisionExceptionTest$C,  
annotation=[none]]",
+              "@com.google.inject.ProvisionExceptionTest$B.c",
+              "at Key[type=com.google.inject.ProvisionExceptionTest$B,  
annotation=[none]]",
+              "@com.google.inject.ProvisionExceptionTest$A.<init>()[0]",
+              "at Key[type=com.google.inject.ProvisionExceptionTest$A,  
annotation=[none]]");
      }
    }


--~--~---------~--~----~------------~-------~--~----~
You received this message because you are subscribed to the Google Groups 
"google-guice-dev" group.
To post to this group, send email to [email protected]
To unsubscribe from this group, send email to 
[email protected]
For more options, visit this group at 
http://groups.google.com/group/google-guice-dev?hl=en
-~----------~----~----~----~------~----~------~--~---

Reply via email to