From cf5253360167d3faad799009d23f8e9f3b147ea3 Mon Sep 17 00:00:00 2001 From: markt Date: Fri, 27 Nov 2009 17:14:16 +0000 Subject: [PATCH] Fix https://issues.apache.org/bugzilla/show_bug.cgi?id=48267 Generics Patch provided by sebb git-svn-id: https://svn.apache.org/repos/asf/tomcat/trunk@884913 13f79535-47bb-0310-9956-ffa450edef68 --- java/javax/annotation/Resource.java | 1 + java/javax/ejb/EJB.java | 1 + java/javax/el/BeanELResolver.java | 5 +++-- java/javax/el/ELContext.java | 2 ++ java/javax/el/ListELResolver.java | 23 ++++++++++++----------- java/javax/el/MapELResolver.java | 26 ++++++++++++++------------ java/javax/el/ResourceBundleELResolver.java | 5 +++-- java/javax/xml/ws/WebServiceRef.java | 2 ++ 8 files changed, 38 insertions(+), 27 deletions(-) diff --git a/java/javax/annotation/Resource.java b/java/javax/annotation/Resource.java index 7510565c5..bc3bd70c4 100644 --- a/java/javax/annotation/Resource.java +++ b/java/javax/annotation/Resource.java @@ -32,6 +32,7 @@ public @interface Resource { APPLICATION } public String name() default ""; + @SuppressWarnings("unchecked") // Can't use Class because API needs to match specification public Class type() default Object.class; public AuthenticationType authenticationType() default AuthenticationType.CONTAINER; public boolean shareable() default true; diff --git a/java/javax/ejb/EJB.java b/java/javax/ejb/EJB.java index 1ea40a904..8e31ad8f5 100644 --- a/java/javax/ejb/EJB.java +++ b/java/javax/ejb/EJB.java @@ -29,6 +29,7 @@ import java.lang.annotation.Target; public @interface EJB { String name() default ""; String description() default ""; + @SuppressWarnings("unchecked") // Can't use Class because API needs to match specification Class beanInterface() default java.lang.Object.class; String beanName() default ""; String mappedName() default ""; diff --git a/java/javax/el/BeanELResolver.java b/java/javax/el/BeanELResolver.java index ea21be557..77c482274 100644 --- a/java/javax/el/BeanELResolver.java +++ b/java/javax/el/BeanELResolver.java @@ -229,7 +229,8 @@ public class BeanELResolver extends ELResolver { this.type = descriptor.getPropertyType(); } - public Class getPropertyType() { + @SuppressWarnings("unchecked") // Can't use Class because API needs to match specification + public Class getPropertyType() { return this.type; } @@ -285,7 +286,7 @@ public class BeanELResolver extends ELResolver { return props.get(ctx, prop); } - private final static Method getMethod(Class type, Method m) { + private final static Method getMethod(Class type, Method m) { if (m == null || Modifier.isPublic(type.getModifiers())) { return m; } diff --git a/java/javax/el/ELContext.java b/java/javax/el/ELContext.java index db5939465..19f2f6654 100644 --- a/java/javax/el/ELContext.java +++ b/java/javax/el/ELContext.java @@ -39,6 +39,7 @@ public abstract class ELContext { this.resolved = false; } + @SuppressWarnings("unchecked") // Can't use Class because API needs to match specification public Object getContext(Class key) { if (this.map == null) { return null; @@ -46,6 +47,7 @@ public abstract class ELContext { return this.map.get(key); } + @SuppressWarnings("unchecked") // Can't use Class because API needs to match specification public void putContext(Class key, Object contextObject) throws NullPointerException { if (key == null || contextObject == null) { throw new NullPointerException(); diff --git a/java/javax/el/ListELResolver.java b/java/javax/el/ListELResolver.java index 712e69de7..b6328dcfa 100644 --- a/java/javax/el/ListELResolver.java +++ b/java/javax/el/ListELResolver.java @@ -28,7 +28,7 @@ public class ListELResolver extends ELResolver { private final boolean readOnly; - private final static Class UNMODIFIABLE = + private final static Class UNMODIFIABLE = Collections.unmodifiableList(new ArrayList()).getClass(); public ListELResolver() { @@ -46,9 +46,9 @@ public class ListELResolver extends ELResolver { throw new NullPointerException(); } - if (base instanceof List) { + if (base instanceof List) { context.setPropertyResolved(true); - List list = (List) base; + List list = (List) base; int idx = coerce(property); if (idx < 0 || idx >= list.size()) { return null; @@ -66,9 +66,9 @@ public class ListELResolver extends ELResolver { throw new NullPointerException(); } - if (base instanceof List) { + if (base instanceof List) { context.setPropertyResolved(true); - List list = (List) base; + List list = (List) base; int idx = coerce(property); if (idx < 0 || idx >= list.size()) { return null; @@ -89,8 +89,9 @@ public class ListELResolver extends ELResolver { throw new NullPointerException(); } - if (base instanceof List) { + if (base instanceof List) { context.setPropertyResolved(true); + @SuppressWarnings("unchecked") // Must be OK to cast to Object List list = (List) base; if (this.readOnly) { @@ -117,9 +118,9 @@ public class ListELResolver extends ELResolver { throw new NullPointerException(); } - if (base instanceof List) { + if (base instanceof List) { context.setPropertyResolved(true); - List list = (List) base; + List list = (List) base; int idx = coerce(property); if (idx < 0 || idx >= list.size()) { throw new PropertyNotFoundException( @@ -133,8 +134,8 @@ public class ListELResolver extends ELResolver { @Override public Iterator getFeatureDescriptors(ELContext context, Object base) { - if (base instanceof List) { - FeatureDescriptor[] descs = new FeatureDescriptor[((List) base).size()]; + if (base instanceof List) { + FeatureDescriptor[] descs = new FeatureDescriptor[((List) base).size()]; for (int i = 0; i < descs.length; i++) { descs[i] = new FeatureDescriptor(); descs[i].setDisplayName("["+i+"]"); @@ -152,7 +153,7 @@ public class ListELResolver extends ELResolver { @Override public Class getCommonPropertyType(ELContext context, Object base) { - if (base != null && base instanceof List) { + if (base instanceof List) { // implies base != null return Integer.class; } return null; diff --git a/java/javax/el/MapELResolver.java b/java/javax/el/MapELResolver.java index 7238fc3b0..a265d09a6 100644 --- a/java/javax/el/MapELResolver.java +++ b/java/javax/el/MapELResolver.java @@ -27,8 +27,8 @@ import java.util.Map; public class MapELResolver extends ELResolver { - private final static Class UNMODIFIABLE = Collections.unmodifiableMap( - new HashMap()).getClass(); + private final static Class UNMODIFIABLE = Collections.unmodifiableMap( + new HashMap()).getClass(); private final boolean readOnly; @@ -47,9 +47,9 @@ public class MapELResolver extends ELResolver { throw new NullPointerException(); } - if (base instanceof Map) { + if (base instanceof Map) { context.setPropertyResolved(true); - return ((Map) base).get(property); + return ((Map) base).get(property); } return null; @@ -62,9 +62,9 @@ public class MapELResolver extends ELResolver { throw new NullPointerException(); } - if (base instanceof Map) { + if (base instanceof Map) { context.setPropertyResolved(true); - Object obj = ((Map) base).get(property); + Object obj = ((Map) base).get(property); return (obj != null) ? obj.getClass() : null; } @@ -80,7 +80,7 @@ public class MapELResolver extends ELResolver { throw new NullPointerException(); } - if (base instanceof Map) { + if (base instanceof Map) { context.setPropertyResolved(true); if (this.readOnly) { @@ -90,7 +90,9 @@ public class MapELResolver extends ELResolver { } try { - ((Map) base).put(property, value); + @SuppressWarnings("unchecked") // Must be OK + Map map = ((Map) base); + map.put(property, value); } catch (UnsupportedOperationException e) { throw new PropertyNotWritableException(e); } @@ -104,7 +106,7 @@ public class MapELResolver extends ELResolver { throw new NullPointerException(); } - if (base instanceof Map) { + if (base instanceof Map) { context.setPropertyResolved(true); return this.readOnly || UNMODIFIABLE.equals(base.getClass()); } @@ -114,8 +116,8 @@ public class MapELResolver extends ELResolver { @Override public Iterator getFeatureDescriptors(ELContext context, Object base) { - if (base instanceof Map) { - Iterator itr = ((Map) base).keySet().iterator(); + if (base instanceof Map) { + Iterator itr = ((Map) base).keySet().iterator(); List feats = new ArrayList(); Object key; FeatureDescriptor desc; @@ -138,7 +140,7 @@ public class MapELResolver extends ELResolver { @Override public Class getCommonPropertyType(ELContext context, Object base) { - if (base instanceof Map) { + if (base instanceof Map) { return Object.class; } return null; diff --git a/java/javax/el/ResourceBundleELResolver.java b/java/javax/el/ResourceBundleELResolver.java index c37c2cae3..2eb3999e5 100644 --- a/java/javax/el/ResourceBundleELResolver.java +++ b/java/javax/el/ResourceBundleELResolver.java @@ -100,14 +100,15 @@ public class ResourceBundleELResolver extends ELResolver { } @Override + @SuppressWarnings("unchecked") // Can't use Iterator because API needs to match specification public Iterator getFeatureDescriptors(ELContext context, Object base) { if (base instanceof ResourceBundle) { List feats = new ArrayList(); - Enumeration e = ((ResourceBundle) base).getKeys(); + Enumeration e = ((ResourceBundle) base).getKeys(); FeatureDescriptor feat; String key; while (e.hasMoreElements()) { - key = (String) e.nextElement(); + key = e.nextElement(); feat = new FeatureDescriptor(); feat.setDisplayName(key); feat.setExpert(false); diff --git a/java/javax/xml/ws/WebServiceRef.java b/java/javax/xml/ws/WebServiceRef.java index 44e5046c6..f9673353b 100644 --- a/java/javax/xml/ws/WebServiceRef.java +++ b/java/javax/xml/ws/WebServiceRef.java @@ -28,7 +28,9 @@ import java.lang.annotation.Target; public @interface WebServiceRef { public String name() default ""; + @SuppressWarnings("unchecked") // Can't use Class because API needs to match specification public Class type() default java.lang.Object.class; + @SuppressWarnings("unchecked") // Can't use Class because API needs to match specification public Class value() default java.lang.Object.class; public String wsdlLocation() default ""; public String mappedName() default ""; -- 2.11.0