This is an automated email from the ASF dual-hosted git repository.
markt pushed a commit to branch main
in repository https://gitbox.apache.org/repos/asf/tomcat.git
The following commit(s) were added to refs/heads/main by this push:
new 2a61a91 Add the remaining generics for EL 5.0
2a61a91 is described below
commit 2a61a91f7efb4eb278880dc21b9bf9a1b06b2e07
Author: Mark Thomas <[email protected]>
AuthorDate: Tue May 25 15:11:00 2021 +0100
Add the remaining generics for EL 5.0
---
java/jakarta/el/ELProcessor.java | 2 +-
java/jakarta/el/ValueExpression.java | 4 ++-
java/org/apache/el/ValueExpressionImpl.java | 5 +--
java/org/apache/el/ValueExpressionLiteral.java | 5 +--
java/org/apache/jasper/el/JspValueExpression.java | 40 ++++++++++++++++-------
webapps/docs/changelog.xml | 4 +++
6 files changed, 43 insertions(+), 17 deletions(-)
diff --git a/java/jakarta/el/ELProcessor.java b/java/jakarta/el/ELProcessor.java
index 7abf7fc..98ff6a3 100644
--- a/java/jakarta/el/ELProcessor.java
+++ b/java/jakarta/el/ELProcessor.java
@@ -55,7 +55,7 @@ public class ELProcessor {
}
- public Object getValue(String expression, Class<?> expectedType) {
+ public <T> T getValue(String expression, Class<T> expectedType) {
ValueExpression ve = factory.createValueExpression(
context, bracket(expression), expectedType);
return ve.getValue(context);
diff --git a/java/jakarta/el/ValueExpression.java
b/java/jakarta/el/ValueExpression.java
index 528f7c2..cbaba0c 100644
--- a/java/jakarta/el/ValueExpression.java
+++ b/java/jakarta/el/ValueExpression.java
@@ -21,6 +21,8 @@ public abstract class ValueExpression extends Expression {
private static final long serialVersionUID = 8577809572381654673L;
/**
+ * @param <T> The expected type for the result of evaluating this value
+ * expression
* @param context The EL context for this evaluation
*
* @return The result of evaluating this value expression
@@ -34,7 +36,7 @@ public abstract class ValueExpression extends Expression {
* Wraps any exception throw whilst resolving a property or
* variable
*/
- public abstract Object getValue(ELContext context);
+ public abstract <T> T getValue(ELContext context);
/**
* @param context The EL context for this evaluation
diff --git a/java/org/apache/el/ValueExpressionImpl.java
b/java/org/apache/el/ValueExpressionImpl.java
index 91b3e1d..e4c434e 100644
--- a/java/org/apache/el/ValueExpressionImpl.java
+++ b/java/org/apache/el/ValueExpressionImpl.java
@@ -181,8 +181,9 @@ public final class ValueExpressionImpl extends
ValueExpression implements
*
* @see jakarta.el.ValueExpression#getValue(jakarta.el.ELContext)
*/
+ @SuppressWarnings("unchecked")
@Override
- public Object getValue(ELContext context) throws PropertyNotFoundException,
+ public <T> T getValue(ELContext context) throws PropertyNotFoundException,
ELException {
EvaluationContext ctx = new EvaluationContext(context, this.fnMapper,
this.varMapper);
@@ -192,7 +193,7 @@ public final class ValueExpressionImpl extends
ValueExpression implements
value = context.convertToType(value, this.expectedType);
}
context.notifyAfterEvaluation(getExpressionString());
- return value;
+ return (T) value;
}
/*
diff --git a/java/org/apache/el/ValueExpressionLiteral.java
b/java/org/apache/el/ValueExpressionLiteral.java
index ca87e15..2ecfe8d 100644
--- a/java/org/apache/el/ValueExpressionLiteral.java
+++ b/java/org/apache/el/ValueExpressionLiteral.java
@@ -48,8 +48,9 @@ public final class ValueExpressionLiteral extends
ValueExpression implements
this.expectedType = expectedType;
}
+ @SuppressWarnings("unchecked")
@Override
- public Object getValue(ELContext context) {
+ public <T> T getValue(ELContext context) {
context.notifyBeforeEvaluation(getExpressionString());
Object result;
if (this.expectedType != null) {
@@ -58,7 +59,7 @@ public final class ValueExpressionLiteral extends
ValueExpression implements
result = this.value;
}
context.notifyAfterEvaluation(getExpressionString());
- return result;
+ return (T) result;
}
@Override
diff --git a/java/org/apache/jasper/el/JspValueExpression.java
b/java/org/apache/jasper/el/JspValueExpression.java
index 9fbea5f..64f6ccd 100644
--- a/java/org/apache/jasper/el/JspValueExpression.java
+++ b/java/org/apache/jasper/el/JspValueExpression.java
@@ -62,10 +62,14 @@ public final class JspValueExpression extends
ValueExpression implements
context.notifyAfterEvaluation(getExpressionString());
return result;
} catch (PropertyNotFoundException e) {
- if (e instanceof JspPropertyNotFoundException) throw e;
+ if (e instanceof JspPropertyNotFoundException) {
+ throw e;
+ }
throw new JspPropertyNotFoundException(this.mark, e);
} catch (ELException e) {
- if (e instanceof JspELException) throw e;
+ if (e instanceof JspELException) {
+ throw e;
+ }
throw new JspELException(this.mark, e);
}
}
@@ -79,10 +83,14 @@ public final class JspValueExpression extends
ValueExpression implements
context.notifyAfterEvaluation(getExpressionString());
return result;
} catch (PropertyNotFoundException e) {
- if (e instanceof JspPropertyNotFoundException) throw e;
+ if (e instanceof JspPropertyNotFoundException) {
+ throw e;
+ }
throw new JspPropertyNotFoundException(this.mark, e);
} catch (ELException e) {
- if (e instanceof JspELException) throw e;
+ if (e instanceof JspELException) {
+ throw e;
+ }
throw new JspELException(this.mark, e);
}
}
@@ -96,30 +104,40 @@ public final class JspValueExpression extends
ValueExpression implements
this.target.setValue(context, value);
context.notifyAfterEvaluation(getExpressionString());
} catch (PropertyNotWritableException e) {
- if (e instanceof JspPropertyNotWritableException) throw e;
+ if (e instanceof JspPropertyNotWritableException) {
+ throw e;
+ }
throw new JspPropertyNotWritableException(this.mark, e);
} catch (PropertyNotFoundException e) {
- if (e instanceof JspPropertyNotFoundException) throw e;
+ if (e instanceof JspPropertyNotFoundException) {
+ throw e;
+ }
throw new JspPropertyNotFoundException(this.mark, e);
} catch (ELException e) {
- if (e instanceof JspELException) throw e;
+ if (e instanceof JspELException) {
+ throw e;
+ }
throw new JspELException(this.mark, e);
}
}
@Override
- public Object getValue(ELContext context) throws NullPointerException,
+ public <T> T getValue(ELContext context) throws NullPointerException,
PropertyNotFoundException, ELException {
context.notifyBeforeEvaluation(getExpressionString());
try {
- Object result = this.target.getValue(context);
+ T result = this.target.getValue(context);
context.notifyAfterEvaluation(getExpressionString());
return result;
} catch (PropertyNotFoundException e) {
- if (e instanceof JspPropertyNotFoundException) throw e;
+ if (e instanceof JspPropertyNotFoundException) {
+ throw e;
+ }
throw new JspPropertyNotFoundException(this.mark, e);
} catch (ELException e) {
- if (e instanceof JspELException) throw e;
+ if (e instanceof JspELException) {
+ throw e;
+ }
throw new JspELException(this.mark, e);
}
}
diff --git a/webapps/docs/changelog.xml b/webapps/docs/changelog.xml
index 01412cf..818fbe1 100644
--- a/webapps/docs/changelog.xml
+++ b/webapps/docs/changelog.xml
@@ -187,6 +187,10 @@
a tag handler, only define the local variable <code>JspWriter
out</code>
when it is going to be used. (markt)
</fix>
+ <scode>
+ Add generics to the EL 5.0 API to align with the current EL 5.0
+ development branch. (markt)
+ </scode>
</changelog>
</subsection>
<subsection name="WebSocket">
---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]