issue 531 -- don't let c.g.i.internal.util reference outside its package.

git-svn-id: https://google-guice.googlecode.com/svn/trunk@1328 d779f126-a31b-0410-b53b-1d3aecad763e
diff --git a/core/src/com/google/inject/internal/Errors.java b/core/src/com/google/inject/internal/Errors.java
index d7aeb4a..052811c 100644
--- a/core/src/com/google/inject/internal/Errors.java
+++ b/core/src/com/google/inject/internal/Errors.java
@@ -24,6 +24,7 @@
 import com.google.inject.ProvisionException;
 import com.google.inject.Scope;
 import com.google.inject.TypeLiteral;
+import com.google.inject.internal.util.Classes;
 import com.google.inject.internal.util.ImmutableList;
 import com.google.inject.internal.util.ImmutableSet;
 import com.google.inject.internal.util.Lists;
@@ -626,7 +627,7 @@
       },
       new Converter<Member>(Member.class) {
         public String toString(Member member) {
-          return MoreTypes.toString(member);
+          return Classes.toString(member);
         }
       },
       new Converter<Key>(Key.class) {
@@ -683,7 +684,7 @@
   public static void formatInjectionPoint(Formatter formatter, Dependency<?> dependency,
       InjectionPoint injectionPoint) {
     Member member = injectionPoint.getMember();
-    Class<? extends Member> memberType = MoreTypes.memberType(member);
+    Class<? extends Member> memberType = Classes.memberType(member);
 
     if (memberType == Field.class) {
       dependency = injectionPoint.getDependencies().get(0);
diff --git a/core/src/com/google/inject/internal/MoreTypes.java b/core/src/com/google/inject/internal/MoreTypes.java
index d2cceaa..0fb5740 100644
--- a/core/src/com/google/inject/internal/MoreTypes.java
+++ b/core/src/com/google/inject/internal/MoreTypes.java
@@ -26,12 +26,8 @@
 import com.google.inject.util.Types;
 import java.io.Serializable;
 import java.lang.reflect.Array;
-import java.lang.reflect.Constructor;
-import java.lang.reflect.Field;
 import java.lang.reflect.GenericArrayType;
 import java.lang.reflect.GenericDeclaration;
-import java.lang.reflect.Member;
-import java.lang.reflect.Method;
 import java.lang.reflect.ParameterizedType;
 import java.lang.reflect.Type;
 import java.lang.reflect.TypeVariable;
@@ -248,45 +244,6 @@
   }
 
   /**
-   * Returns {@code Field.class}, {@code Method.class} or {@code Constructor.class}.
-   */
-  public static Class<? extends Member> memberType(Member member) {
-    checkNotNull(member, "member");
-
-    if (member instanceof Field) {
-      return Field.class;
-
-    } else if (member instanceof Method) {
-      return Method.class;
-
-    } else if (member instanceof Constructor) {
-      return Constructor.class;
-
-    } else {
-      throw new IllegalArgumentException(
-          "Unsupported implementation class for Member, " + member.getClass());
-    }
-  }
-
-  /**
-   * Formats a member as concise string, such as {@code java.util.ArrayList.size},
-   * {@code java.util.ArrayList<init>()} or {@code java.util.List.remove()}.
-   */
-  public static String toString(Member member) {
-    Class<? extends Member> memberType = memberType(member);
-
-    if (memberType == Method.class) {
-      return member.getDeclaringClass().getName() + "." + member.getName() + "()";
-    } else if (memberType == Field.class) {
-      return member.getDeclaringClass().getName() + "." + member.getName();
-    } else if (memberType == Constructor.class) {
-      return member.getDeclaringClass().getName() + ".<init>()";
-    } else {
-      throw new AssertionError();
-    }
-  }
-
-  /**
    * Returns the generic supertype for {@code supertype}. For example, given a class {@code
    * IntegerSet}, the result for when supertype is {@code Set.class} is {@code Set<Integer>} and the
    * result when the supertype is {@code Collection.class} is {@code Collection<Integer>}.
diff --git a/core/src/com/google/inject/internal/util/Classes.java b/core/src/com/google/inject/internal/util/Classes.java
index d8ec6e1..8cb77ad 100644
--- a/core/src/com/google/inject/internal/util/Classes.java
+++ b/core/src/com/google/inject/internal/util/Classes.java
@@ -16,8 +16,15 @@
 
 package com.google.inject.internal.util;
 
+import static com.google.inject.internal.util.Preconditions.checkNotNull;
+
+import java.lang.reflect.Constructor;
+import java.lang.reflect.Field;
+import java.lang.reflect.Member;
+import java.lang.reflect.Method;
 import java.lang.reflect.Modifier;
 
+
 /**
  * Class utilities.
  */
@@ -32,4 +39,43 @@
     int modifiers = clazz.getModifiers();
     return !clazz.isInterface() && !Modifier.isAbstract(modifiers);
   }
+
+  /**
+   * Formats a member as concise string, such as {@code java.util.ArrayList.size},
+   * {@code java.util.ArrayList<init>()} or {@code java.util.List.remove()}.
+   */
+  public static String toString(Member member) {
+    Class<? extends Member> memberType = Classes.memberType(member);
+  
+    if (memberType == Method.class) {
+      return member.getDeclaringClass().getName() + "." + member.getName() + "()";
+    } else if (memberType == Field.class) {
+      return member.getDeclaringClass().getName() + "." + member.getName();
+    } else if (memberType == Constructor.class) {
+      return member.getDeclaringClass().getName() + ".<init>()";
+    } else {
+      throw new AssertionError();
+    }
+  }
+
+  /**
+   * Returns {@code Field.class}, {@code Method.class} or {@code Constructor.class}.
+   */
+  public static Class<? extends Member> memberType(Member member) {
+    checkNotNull(member, "member");
+  
+    if (member instanceof Field) {
+      return Field.class;
+  
+    } else if (member instanceof Method) {
+      return Method.class;
+  
+    } else if (member instanceof Constructor) {
+      return Constructor.class;
+  
+    } else {
+      throw new IllegalArgumentException(
+          "Unsupported implementation class for Member, " + member.getClass());
+    }
+  }
 }
diff --git a/core/src/com/google/inject/internal/util/StackTraceElements.java b/core/src/com/google/inject/internal/util/StackTraceElements.java
index f96f492..0af1c26 100644
--- a/core/src/com/google/inject/internal/util/StackTraceElements.java
+++ b/core/src/com/google/inject/internal/util/StackTraceElements.java
@@ -16,7 +16,6 @@
 
 package com.google.inject.internal.util;
 
-import com.google.inject.internal.MoreTypes;
 import java.io.IOException;
 import java.lang.reflect.Constructor;
 import java.lang.reflect.Member;
@@ -61,7 +60,7 @@
     int lineNumber = -1;
     end[NO_AOP]*/
 
-    Class<? extends Member> memberType = MoreTypes.memberType(member);
+    Class<? extends Member> memberType = Classes.memberType(member);
     String memberName = memberType == Constructor.class ? "<init>" : member.getName();
     return new StackTraceElement(declaringClass.getName(), memberName, fileName, lineNumber);
   }
diff --git a/core/src/com/google/inject/spi/InjectionPoint.java b/core/src/com/google/inject/spi/InjectionPoint.java
index b147a3b..81e2132 100644
--- a/core/src/com/google/inject/spi/InjectionPoint.java
+++ b/core/src/com/google/inject/spi/InjectionPoint.java
@@ -23,9 +23,9 @@
 import com.google.inject.internal.Annotations;
 import com.google.inject.internal.Errors;
 import com.google.inject.internal.ErrorsException;
-import com.google.inject.internal.MoreTypes;
 import static com.google.inject.internal.MoreTypes.getRawType;
 import com.google.inject.internal.Nullability;
+import com.google.inject.internal.util.Classes;
 import com.google.inject.internal.util.ImmutableList;
 import com.google.inject.internal.util.ImmutableSet;
 import com.google.inject.internal.util.Lists;
@@ -191,7 +191,7 @@
   }
 
   @Override public String toString() {
-    return MoreTypes.toString(member);
+    return Classes.toString(member);
   }
 
   /**
diff --git a/extensions/throwingproviders/test/com/google/inject/throwingproviders/ThrowingProviderBinderTest.java b/extensions/throwingproviders/test/com/google/inject/throwingproviders/ThrowingProviderBinderTest.java
index 6bb1f88..e3fc56f 100644
--- a/extensions/throwingproviders/test/com/google/inject/throwingproviders/ThrowingProviderBinderTest.java
+++ b/extensions/throwingproviders/test/com/google/inject/throwingproviders/ThrowingProviderBinderTest.java
@@ -24,7 +24,7 @@
 import com.google.inject.Injector;
 import com.google.inject.Key;
 import com.google.inject.TypeLiteral;
-import com.google.inject.internal.MoreTypes;
+import com.google.inject.internal.util.Classes;
 import com.google.inject.internal.util.Function;
 import com.google.inject.internal.util.ImmutableList;
 import com.google.inject.internal.util.ImmutableSet;
@@ -729,7 +729,7 @@
       fail();
     } catch(CreationException ce) {
       assertEquals(OneNoneGetMethod.class.getName() 
-          + " may not declare any new methods, but declared " + MoreTypes.toString(OneNoneGetMethod.class.getDeclaredMethods()[0]),
+          + " may not declare any new methods, but declared " + Classes.toString(OneNoneGetMethod.class.getDeclaredMethods()[0]),
           Iterables.getOnlyElement(ce.getErrorMessages()).getMessage());
     }
   }