On 00:00 Wed 12 Oct     , Pekka Enberg wrote:
> This patch converts AnnotationInvoncationHandler to use parametrized types for
> Class, Map, and Iterator which kills few compilation warnings during build.
> 
> Signed-off-by: Pekka Enberg <penb...@kernel.org>
> ---
>  ChangeLog                                          |   10 ++++++
>  .../annotation/AnnotationInvocationHandler.java    |   31 +++++++++++--------
>  2 files changed, 28 insertions(+), 13 deletions(-)
> 
> diff --git a/ChangeLog b/ChangeLog
> index 7f57a9e..cf728f4 100644
> --- a/ChangeLog
> +++ b/ChangeLog
> @@ -1,3 +1,13 @@
> +2011-10-11  Pekka Enberg  <penb...@kernel.org>
> +
> +     * sun/reflect/annotation/AnnotationInvocationHandler.java:
> +     (AnnotationInvocationHandler): Parametrize raw types.
> +     (create): Parametrize raw types.
> +     (equals): Parametrize raw types.
> +     (hashCode): Parametrize raw types.
> +     (toString): Parametrize raw types.
> +     (getBoxedReturnType): Parametrize raw types.
> +
>  2011-09-09  Andrew John Hughes  <ahug...@redhat.com>
>  
>       PR classpath/45526: Produce header files for
> diff --git a/sun/reflect/annotation/AnnotationInvocationHandler.java 
> b/sun/reflect/annotation/AnnotationInvocationHandler.java
> index 909e7ae..7d585a9 100644
> --- a/sun/reflect/annotation/AnnotationInvocationHandler.java
> +++ b/sun/reflect/annotation/AnnotationInvocationHandler.java
> @@ -62,21 +62,23 @@ public final class AnnotationInvocationHandler
>    implements InvocationHandler, Serializable
>  {
>      private static final long serialVersionUID = 6182022883658399397L;
> -    private final Class type;
> -    private final Map memberValues;
> +    private final Class<? extends Annotation> type;
> +    private final Map<String, Object> memberValues;
>  
>      /**
>       * Construct a new invocation handler for an annotation proxy.
>       * Note that the VM is responsible for filling the memberValues map
>       * with the default values of all the annotation members.
>       */
> -    public AnnotationInvocationHandler(Class type, Map memberValues)
> +    public AnnotationInvocationHandler(Class<? extends Annotation> type,
> +                                       Map<String, Object> memberValues)
>      {
>          this.type = type;
>          this.memberValues = memberValues;
>      }
>  
> -    public static Annotation create(Class type, Map memberValues)
> +    public static Annotation create(Class<? extends Annotation> type,
> +                                    Map<String, Object> memberValues)
>      {
>        for (Method m : type.getDeclaredMethods())
>          {
> @@ -106,7 +108,8 @@ public final class AnnotationInvocationHandler
>       * (can) use different representations of annotations that reuse this
>       * method.
>       */
> -    public static boolean equals(Class type, Map memberValues, Object other)
> +    public static boolean equals(Class<? extends Annotation> type,
> +                                 Map<String, Object> memberValues, Object 
> other)
>      {
>          if (type.isInstance(other))
>          {
> @@ -217,13 +220,14 @@ public final class AnnotationInvocationHandler
>       * (can) use different representations of annotations that reuse this
>       * method.
>       */
> -    public static int hashCode(Class type, Map memberValues)
> +    public static int hashCode(Class<? extends Annotation> type,
> +                               Map<String, Object> memberValues)
>      {
>          int h = 0;
> -        Iterator iter = memberValues.keySet().iterator();
> +        Iterator<String> iter = memberValues.keySet().iterator();
>          while (iter.hasNext())
>          {
> -            Object key = iter.next();
> +            String key = iter.next();
>              Object val = memberValues.get(key);
>              h += deepHashCode(val) ^ 127 * key.hashCode();
>          }
> @@ -267,15 +271,16 @@ public final class AnnotationInvocationHandler
>       * (can) use different representations of annotations that reuse this
>       * method.
>       */
> -    public static String toString(Class type, Map memberValues)
> +    public static String toString(Class<? extends Annotation> type,
> +                                  Map<String, Object> memberValues)
>      {
>          StringBuffer sb = new StringBuffer();
>          sb.append('@').append(type.getName()).append('(');
>          String sep = "";
> -        Iterator iter = memberValues.keySet().iterator();
> +        Iterator<String> iter = memberValues.keySet().iterator();
>          while (iter.hasNext())
>          {
> -            Object key = iter.next();
> +            String key = iter.next();
>              Object val = memberValues.get(key);
>              sb.append(sep).append(key).append('=').append(deepToString(val));
>              sep = ", ";
> @@ -284,9 +289,9 @@ public final class AnnotationInvocationHandler
>          return sb.toString();
>      }
>  
> -    private static Class getBoxedReturnType(Method method)
> +    private static Class<?> getBoxedReturnType(Method method)
>      {
> -        Class returnType = method.getReturnType();
> +        Class<?> returnType = method.getReturnType();
>  
>          if (returnType == boolean.class)
>              return Boolean.class;
> -- 
> 1.7.6.4
> 
> 

We can't do this.  This class is part of the VM interface and the VM
interface is meant to work with < 1.5.

If we're going to change that, it should happen after the next release
and with plenty of discussion / heads up for VMs.
-- 
Andrew :)

Free Java Software Engineer
Red Hat, Inc. (http://www.redhat.com)

Support Free Java!
Contribute to GNU Classpath and IcedTea
http://www.gnu.org/software/classpath
http://icedtea.classpath.org
PGP Key: 248BDC07 (https://keys.indymedia.org/)
Fingerprint = EC5A 1F5E C0AD 1D15 8F1F  8F91 3B96 A578 248B DC07

Reply via email to