On Tue, Sep 15, 2020 at 1:52 PM Mark Thomas <ma...@apache.org> wrote:

> On 15/09/2020 10:21, mgrigo...@apache.org wrote:
> > This is an automated email from the ASF dual-hosted git repository.
> >
> > mgrigorov pushed a commit to branch master
> > in repository https://gitbox.apache.org/repos/asf/tomcat.git
> >
> >
> > The following commit(s) were added to refs/heads/master by this push:
> >      new f550254  Replace "".equals(a) with a.isEmpty()
> >      new 6053839  Merge pull request #356 from
> martin-g/improvement/use-string-isempty
> > f550254 is described below
> >
> > commit f550254bb15e1b0cc50225aee1c3fb1ed034f552
> > Author: Martin Tzvetanov Grigorov <mgrigo...@apache.org>
> > AuthorDate: Thu Sep 10 12:52:11 2020 +0300
> >
> >     Replace "".equals(a) with a.isEmpty()
>
> How sure are you that none of these will introduce the possibility of a
> NullPointerException?
>

Most of them have explicit checks for null/non-null.
For the others I have checked whether null is possible. If it was possible
then it'd have failed a few lines later even with the old code.
But yes, it is still possible that a regression is introduced somewhere.
That's the reason why I suggested this PR in the beginning of the new
release cycle - now we have 1 month to fix such regressions. And still, the
unit tests and our test apps do not cover all possible cases ...
If you have concerns about some part of the change let me know and I will
either improve it or revert the change!

Martin


>
> Mark
>
> >
> >
> https://medium.com/javarevisited/micro-optimizations-in-java-string-equals-22be19fd8416
> >     Proposal for JDK: https://github.com/openjdk/jdk/pull/29
> > ---
> >  .../apache/catalina/ant/jmx/JMXAccessorCondition.java  |  2 +-
> >  .../apache/catalina/ant/jmx/JMXAccessorCreateTask.java |  2 +-
> >  java/org/apache/catalina/ant/jmx/JMXAccessorTask.java  |  2 +-
> >  java/org/apache/catalina/core/ApplicationContext.java  |  2 +-
> >  java/org/apache/catalina/core/StandardContext.java     |  2 +-
> >  java/org/apache/catalina/core/StandardEngine.java      |  2 +-
> >  java/org/apache/catalina/filters/WebdavFixFilter.java  |  2 +-
> >  java/org/apache/catalina/ha/backend/TcpSender.java     |  2 +-
> >  .../catalina/ha/session/JvmRouteBinderValve.java       |  2 +-
> >  .../apache/catalina/manager/HTMLManagerServlet.java    |  9 +++++----
> >  java/org/apache/catalina/manager/ManagerServlet.java   |  2 +-
> >  .../catalina/manager/host/HostManagerServlet.java      |  2 +-
> >  java/org/apache/catalina/realm/RealmBase.java          |  2 +-
> >  java/org/apache/catalina/servlets/CGIServlet.java      |  8 ++++----
> >  java/org/apache/catalina/session/JDBCStore.java        |  2 +-
> >  .../org/apache/catalina/storeconfig/StoreRegistry.java |  2 +-
> >  java/org/apache/catalina/util/ContextName.java         | 18
> +++++++++---------
> >  java/org/apache/el/MethodExpressionImpl.java           |  2 +-
> >  java/org/apache/el/MethodExpressionLiteral.java        |  2 +-
> >  java/org/apache/el/ValueExpressionImpl.java            |  2 +-
> >  java/org/apache/el/ValueExpressionLiteral.java         |  2 +-
> >  java/org/apache/el/lang/ELSupport.java                 |  7 ++++---
> >  java/org/apache/el/lang/FunctionMapperImpl.java        |  2 +-
> >  java/org/apache/el/util/ReflectionUtil.java            |  2 +-
> >  java/org/apache/jasper/JspC.java                       |  2 +-
> >  java/org/apache/jasper/compiler/Generator.java         |  2 +-
> >  java/org/apache/jasper/compiler/Validator.java         |  2 +-
> >  .../apache/tomcat/util/digester/SetPropertiesRule.java |  2 +-
> >  java/org/apache/tomcat/util/net/SSLUtilBase.java       |  2 +-
> >  .../apache/tomcat/websocket/WsWebSocketContainer.java  |  3 ++-
> >  30 files changed, 49 insertions(+), 46 deletions(-)
> >
> > diff --git a/java/org/apache/catalina/ant/jmx/JMXAccessorCondition.java
> b/java/org/apache/catalina/ant/jmx/JMXAccessorCondition.java
> > index b009684..4ac07c3 100644
> > --- a/java/org/apache/catalina/ant/jmx/JMXAccessorCondition.java
> > +++ b/java/org/apache/catalina/ant/jmx/JMXAccessorCondition.java
> > @@ -149,7 +149,7 @@ public class JMXAccessorCondition extends
> JMXAccessorConditionBase {
> >       * @return true if there is no if condition, or the named property
> exists
> >       */
> >      protected boolean testIfCondition() {
> > -        if (ifCondition == null || "".equals(ifCondition)) {
> > +        if (ifCondition == null || ifCondition.isEmpty()) {
> >              return true;
> >          }
> >          return getProject().getProperty(ifCondition) != null;
> > diff --git a/java/org/apache/catalina/ant/jmx/JMXAccessorCreateTask.java
> b/java/org/apache/catalina/ant/jmx/JMXAccessorCreateTask.java
> > index 28aab6c..558a258 100644
> > --- a/java/org/apache/catalina/ant/jmx/JMXAccessorCreateTask.java
> > +++ b/java/org/apache/catalina/ant/jmx/JMXAccessorCreateTask.java
> > @@ -154,7 +154,7 @@ public class JMXAccessorCreateTask extends
> JMXAccessorTask {
> >                 }
> >             }
> >          }
> > -        if (classLoader != null && !"".equals(classLoader)) {
> > +        if (classLoader != null && !classLoader.isEmpty()) {
> >              if (isEcho()) {
> >                  handleOutput("create MBean " + name + " from class "
> >                          + className + " with classLoader " +
> classLoader);
> > diff --git a/java/org/apache/catalina/ant/jmx/JMXAccessorTask.java
> b/java/org/apache/catalina/ant/jmx/JMXAccessorTask.java
> > index 8d5d268..d79e471 100644
> > --- a/java/org/apache/catalina/ant/jmx/JMXAccessorTask.java
> > +++ b/java/org/apache/catalina/ant/jmx/JMXAccessorTask.java
> > @@ -254,7 +254,7 @@ public class JMXAccessorTask extends
> BaseRedirectorHelperTask {
> >       * @return Returns the useRef.
> >       */
> >      public boolean isUseRef() {
> > -        return ref != null && !"".equals(ref);
> > +        return ref != null && !ref.isEmpty();
> >      }
> >
> >      /**
> > diff --git a/java/org/apache/catalina/core/ApplicationContext.java
> b/java/org/apache/catalina/core/ApplicationContext.java
> > index 61981e5..06bdaa3 100644
> > --- a/java/org/apache/catalina/core/ApplicationContext.java
> > +++ b/java/org/apache/catalina/core/ApplicationContext.java
> > @@ -1196,7 +1196,7 @@ public class ApplicationContext implements
> ServletContext {
> >          }
> >
> >          for (String role : roleNames) {
> > -            if (role == null || "".equals(role)) {
> > +            if (role == null || role.isEmpty()) {
> >                  throw new IllegalArgumentException(
> >                          sm.getString("applicationContext.role.iae",
> >                                  getContextPath()));
> > diff --git a/java/org/apache/catalina/core/StandardContext.java
> b/java/org/apache/catalina/core/StandardContext.java
> > index e84f2b5..ce51d6c 100644
> > --- a/java/org/apache/catalina/core/StandardContext.java
> > +++ b/java/org/apache/catalina/core/StandardContext.java
> > @@ -2136,7 +2136,7 @@ public class StandardContext extends ContainerBase
> >          if (path == null || path.equals("/")) {
> >              invalid = true;
> >              this.path = "";
> > -        } else if ("".equals(path) || path.startsWith("/")) {
> > +        } else if (path.isEmpty() || path.startsWith("/")) {
> >              this.path = path;
> >          } else {
> >              invalid = true;
> > diff --git a/java/org/apache/catalina/core/StandardEngine.java
> b/java/org/apache/catalina/core/StandardEngine.java
> > index 9385369..f60c2e8 100644
> > --- a/java/org/apache/catalina/core/StandardEngine.java
> > +++ b/java/org/apache/catalina/core/StandardEngine.java
> > @@ -485,7 +485,7 @@ public class StandardEngine extends ContainerBase
> implements Engine {
> >              if (disabled) return;
> >              if (Container.ADD_CHILD_EVENT.equals(event.getType())) {
> >                  Context context = (Context) event.getData();
> > -                if ("".equals(context.getPath())) {
> > +                if (context.getPath().isEmpty()) {
> >                      // Force re-calculation and disable listener since
> it won't
> >                      // be re-used
> >                      engine.defaultAccessLog.set(null);
> > diff --git a/java/org/apache/catalina/filters/WebdavFixFilter.java
> b/java/org/apache/catalina/filters/WebdavFixFilter.java
> > index 9a1f86d..72a6843 100644
> > --- a/java/org/apache/catalina/filters/WebdavFixFilter.java
> > +++ b/java/org/apache/catalina/filters/WebdavFixFilter.java
> > @@ -100,7 +100,7 @@ public class WebdavFixFilter extends GenericFilter {
> >              httpResponse.sendRedirect(buildRedirect(httpRequest));
> >          } else if (ua.startsWith(UA_MINIDIR_5_2_3790)) {
> >              // XP 64-bit SP2
> > -            if (!"".equals(httpRequest.getContextPath())) {
> > +            if (!httpRequest.getContextPath().isEmpty()) {
> >
> getServletContext().log(sm.getString("webDavFilter.xpRootContext"));
> >              }
> >              // Namespace issue maybe
> > diff --git a/java/org/apache/catalina/ha/backend/TcpSender.java
> b/java/org/apache/catalina/ha/backend/TcpSender.java
> > index 760e1a0..5676c88 100644
> > --- a/java/org/apache/catalina/ha/backend/TcpSender.java
> > +++ b/java/org/apache/catalina/ha/backend/TcpSender.java
> > @@ -151,7 +151,7 @@ public class TcpSender
> >                  // read all the headers.
> >                  String header = connectionReaders[i].readLine();
> >                  int contentLength = 0;
> > -                while (!"".equals(header)) {
> > +                while (!header.isEmpty()) {
> >                      int colon = header.indexOf(':');
> >                      String headerName = header.substring(0,
> colon).trim();
> >                      String headerValue = header.substring(colon +
> 1).trim();
> > diff --git
> a/java/org/apache/catalina/ha/session/JvmRouteBinderValve.java
> b/java/org/apache/catalina/ha/session/JvmRouteBinderValve.java
> > index 58733fb..6817c7a 100644
> > --- a/java/org/apache/catalina/ha/session/JvmRouteBinderValve.java
> > +++ b/java/org/apache/catalina/ha/session/JvmRouteBinderValve.java
> > @@ -348,7 +348,7 @@ public class JvmRouteBinderValve extends ValveBase
> implements ClusterValve {
> >
> >          // set original sessionid at request, to allow application
> detect the
> >          // change
> > -        if (sessionIdAttribute != null &&
> !"".equals(sessionIdAttribute)) {
> > +        if (sessionIdAttribute != null &&
> !sessionIdAttribute.isEmpty()) {
> >              if (log.isDebugEnabled()) {
> >
> log.debug(sm.getString("jvmRoute.set.orignalsessionid",sessionIdAttribute,sessionId));
> >              }
> > diff --git a/java/org/apache/catalina/manager/HTMLManagerServlet.java
> b/java/org/apache/catalina/manager/HTMLManagerServlet.java
> > index 685353b..53e1ebc 100644
> > --- a/java/org/apache/catalina/manager/HTMLManagerServlet.java
> > +++ b/java/org/apache/catalina/manager/HTMLManagerServlet.java
> > @@ -443,10 +443,11 @@ public final class HTMLManagerServlet extends
> ManagerServlet {
> >                  StringBuilder tmp = new StringBuilder();
> >                  tmp.append("path=");
> >                  tmp.append(URLEncoder.DEFAULT.encode(displayPath,
> StandardCharsets.UTF_8));
> > -                if (ctxt.getWebappVersion().length() > 0) {
> > +                final String webappVersion = ctxt.getWebappVersion();
> > +                if (webappVersion != null && webappVersion.length() >
> 0) {
> >                      tmp.append("&version=");
> >                      tmp.append(URLEncoder.DEFAULT.encode(
> > -                            ctxt.getWebappVersion(),
> StandardCharsets.UTF_8));
> > +                            webappVersion, StandardCharsets.UTF_8));
> >                  }
> >                  String pathVersion = tmp.toString();
> >
> > @@ -463,10 +464,10 @@ public final class HTMLManagerServlet extends
> ManagerServlet {
> >                          + URLEncoder.DEFAULT.encode(contextPath + "/",
> StandardCharsets.UTF_8)
> >                          + "\" " + Constants.REL_EXTERNAL + ">"
> >                          + Escape.htmlElementContent(displayPath) +
> "</a>";
> > -                if ("".equals(ctxt.getWebappVersion())) {
> > +                if (webappVersion == null || webappVersion.isEmpty()) {
> >                      args[1] = noVersion;
> >                  } else {
> > -                    args[1] =
> Escape.htmlElementContent(ctxt.getWebappVersion());
> > +                    args[1] = Escape.htmlElementContent(webappVersion);
> >                  }
> >                  if (ctxt.getDisplayName() == null) {
> >                      args[2] = "&nbsp;";
> > diff --git a/java/org/apache/catalina/manager/ManagerServlet.java
> b/java/org/apache/catalina/manager/ManagerServlet.java
> > index feb7ee8..392fadc 100644
> > --- a/java/org/apache/catalina/manager/ManagerServlet.java
> > +++ b/java/org/apache/catalina/manager/ManagerServlet.java
> > @@ -555,7 +555,7 @@ public class ManagerServlet extends HttpServlet
> implements ContainerServlet {
> >
> smClient.getString("managerServlet.findleaksList"));
> >              }
> >              for (String result : results) {
> > -                if ("".equals(result)) {
> > +                if (result.isEmpty()) {
> >                      result = "/";
> >                  }
> >                  writer.println(result);
> > diff --git
> a/java/org/apache/catalina/manager/host/HostManagerServlet.java
> b/java/org/apache/catalina/manager/host/HostManagerServlet.java
> > index 4d548c6..7ed209f 100644
> > --- a/java/org/apache/catalina/manager/host/HostManagerServlet.java
> > +++ b/java/org/apache/catalina/manager/host/HostManagerServlet.java
> > @@ -411,7 +411,7 @@ public class HostManagerServlet
> >          host.addLifecycleListener(new HostConfig());
> >
> >          // Add host aliases
> > -        if ((aliases != null) && !("".equals(aliases))) {
> > +        if ((aliases != null) && !aliases.isEmpty()) {
> >              StringTokenizer tok = new StringTokenizer(aliases, ", ");
> >              while (tok.hasMoreTokens()) {
> >                  host.addAlias(tok.nextToken());
> > diff --git a/java/org/apache/catalina/realm/RealmBase.java
> b/java/org/apache/catalina/realm/RealmBase.java
> > index f429447..948ec3e 100644
> > --- a/java/org/apache/catalina/realm/RealmBase.java
> > +++ b/java/org/apache/catalina/realm/RealmBase.java
> > @@ -1522,7 +1522,7 @@ public abstract class RealmBase extends
> LifecycleMBeanBase implements Realm {
> >
> >      private static X509UsernameRetriever createUsernameRetriever(String
> className)
> >          throws LifecycleException {
> > -        if(null == className || "".equals(className.trim()))
> > +        if(null == className || className.trim().isEmpty())
> >              return new X509SubjectDnRetriever();
> >
> >          try {
> > diff --git a/java/org/apache/catalina/servlets/CGIServlet.java
> b/java/org/apache/catalina/servlets/CGIServlet.java
> > index e5df2d9..0dd5412 100644
> > --- a/java/org/apache/catalina/servlets/CGIServlet.java
> > +++ b/java/org/apache/catalina/servlets/CGIServlet.java
> > @@ -1077,7 +1077,7 @@ public final class CGIServlet extends HttpServlet {
> >               * SHOULD NOT be defined.
> >               *
> >               */
> > -            if (!("".equals(sPathInfoCGI))) {
> > +            if (!sPathInfoCGI.isEmpty()) {
> >                  sPathTranslatedCGI = context.getRealPath(sPathInfoCGI);
> >              }
> >              if (sPathTranslatedCGI == null ||
> "".equals(sPathTranslatedCGI)) {
> > @@ -1386,9 +1386,9 @@ public final class CGIServlet extends HttpServlet {
> >           */
> >          protected String blanksToString(String couldBeBlank,
> >                                        String subForBlanks) {
> > -            return (("".equals(couldBeBlank) || couldBeBlank == null)
> > +            return (couldBeBlank == null || couldBeBlank.isEmpty())
> >                      ? subForBlanks
> > -                    : couldBeBlank);
> > +                    : couldBeBlank;
> >          }
> >
> >
> > @@ -1689,7 +1689,7 @@ public final class CGIServlet extends HttpServlet {
> >                      try {
> >                          //set headers
> >                          String line = null;
> > -                        while (((line = cgiHeaderReader.readLine()) !=
> null) && !("".equals(line))) {
> > +                        while (((line = cgiHeaderReader.readLine()) !=
> null) && !line.isEmpty()) {
> >                              if (log.isTraceEnabled()) {
> >                                  log.trace("addHeader(\"" + line +
> "\")");
> >                              }
> > diff --git a/java/org/apache/catalina/session/JDBCStore.java
> b/java/org/apache/catalina/session/JDBCStore.java
> > index f566190..bb57db0 100644
> > --- a/java/org/apache/catalina/session/JDBCStore.java
> > +++ b/java/org/apache/catalina/session/JDBCStore.java
> > @@ -445,7 +445,7 @@ public class JDBCStore extends StoreBase {
> >       * @param dataSourceName The JNDI name of the DataSource-factory
> >       */
> >      public void setDataSourceName(String dataSourceName) {
> > -        if (dataSourceName == null || "".equals(dataSourceName.trim()))
> {
> > +        if (dataSourceName == null || dataSourceName.trim().isEmpty()) {
> >              manager.getContext().getLogger().warn(
> >                      sm.getString(getStoreName() +
> ".missingDataSourceName"));
> >              return;
> > diff --git a/java/org/apache/catalina/storeconfig/StoreRegistry.java
> b/java/org/apache/catalina/storeconfig/StoreRegistry.java
> > index ccdc5e3..4ac91db 100644
> > --- a/java/org/apache/catalina/storeconfig/StoreRegistry.java
> > +++ b/java/org/apache/catalina/storeconfig/StoreRegistry.java
> > @@ -182,7 +182,7 @@ public class StoreRegistry {
> >       */
> >      public void registerDescription(StoreDescription desc) {
> >          String key = desc.getId();
> > -        if (key == null || "".equals(key)) {
> > +        if (key == null || key.isEmpty()) {
> >              key = desc.getTagClass();
> >          }
> >          descriptors.put(key, desc);
> > diff --git a/java/org/apache/catalina/util/ContextName.java
> b/java/org/apache/catalina/util/ContextName.java
> > index 877197d..ce41224 100644
> > --- a/java/org/apache/catalina/util/ContextName.java
> > +++ b/java/org/apache/catalina/util/ContextName.java
> > @@ -25,7 +25,7 @@ import java.util.Locale;
> >  public final class ContextName {
> >      public static final String ROOT_NAME = "ROOT";
> >      private static final String VERSION_MARKER = "##";
> > -    private static final String FWD_SLASH_REPLACEMENT = "#";
> > +    private static final char FWD_SLASH_REPLACEMENT = '#';
> >
> >      private final String baseName;
> >      private final String path;
> > @@ -54,10 +54,10 @@ public final class ContextName {
> >          }
> >
> >          // Replace any remaining /
> > -        tmp1 = tmp1.replaceAll("/", FWD_SLASH_REPLACEMENT);
> > +        tmp1 = tmp1.replace('/', FWD_SLASH_REPLACEMENT);
> >
> >          // Insert the ROOT name if required
> > -        if (tmp1.startsWith(VERSION_MARKER) || "".equals(tmp1)) {
> > +        if (tmp1.startsWith(VERSION_MARKER) || tmp1.isEmpty()) {
> >              tmp1 = ROOT_NAME + tmp1;
> >          }
> >
> > @@ -84,7 +84,7 @@ public final class ContextName {
> >          if (ROOT_NAME.equals(tmp2)) {
> >              path = "";
> >          } else {
> > -            path = "/" + tmp2.replaceAll(FWD_SLASH_REPLACEMENT, "/");
> > +            path = "/" + tmp2.replace(FWD_SLASH_REPLACEMENT, '/');
> >          }
> >
> >          if (versionIndex > -1) {
> > @@ -116,7 +116,7 @@ public final class ContextName {
> >          }
> >
> >          // Name is path + version
> > -        if ("".equals(this.version)) {
> > +        if (this.version.isEmpty()) {
> >              name = this.path;
> >          } else {
> >              name = this.path + VERSION_MARKER + this.version;
> > @@ -124,13 +124,13 @@ public final class ContextName {
> >
> >          // Base name is converted path + version
> >          StringBuilder tmp = new StringBuilder();
> > -        if ("".equals(this.path)) {
> > +        if (this.path.isEmpty()) {
> >              tmp.append(ROOT_NAME);
> >          } else {
> > -            tmp.append(this.path.substring(1).replaceAll("/",
> > +            tmp.append(this.path.substring(1).replace('/',
> >                      FWD_SLASH_REPLACEMENT));
> >          }
> > -        if (this.version.length() > 0) {
> > +        if (!this.version.isEmpty()) {
> >              tmp.append(VERSION_MARKER);
> >              tmp.append(this.version);
> >          }
> > @@ -161,7 +161,7 @@ public final class ContextName {
> >              tmp.append(path);
> >          }
> >
> > -        if (!"".equals(version)) {
> > +        if (!version.isEmpty()) {
> >              tmp.append(VERSION_MARKER);
> >              tmp.append(version);
> >          }
> > diff --git a/java/org/apache/el/MethodExpressionImpl.java
> b/java/org/apache/el/MethodExpressionImpl.java
> > index ff5f1d9..eb9b764 100644
> > --- a/java/org/apache/el/MethodExpressionImpl.java
> > +++ b/java/org/apache/el/MethodExpressionImpl.java
> > @@ -279,7 +279,7 @@ public final class MethodExpressionImpl extends
> MethodExpression implements
> >              ClassNotFoundException {
> >          this.expr = in.readUTF();
> >          String type = in.readUTF();
> > -        if (!"".equals(type)) {
> > +        if (!type.isEmpty()) {
> >              this.expectedType = ReflectionUtil.forName(type);
> >          }
> >          this.paramTypes = ReflectionUtil.toTypeArray(((String[]) in
> > diff --git a/java/org/apache/el/MethodExpressionLiteral.java
> b/java/org/apache/el/MethodExpressionLiteral.java
> > index ada7ea4..367d3d7 100644
> > --- a/java/org/apache/el/MethodExpressionLiteral.java
> > +++ b/java/org/apache/el/MethodExpressionLiteral.java
> > @@ -95,7 +95,7 @@ public class MethodExpressionLiteral extends
> MethodExpression implements Externa
> >      public void readExternal(ObjectInput in) throws IOException,
> ClassNotFoundException {
> >          this.expr = in.readUTF();
> >          String type = in.readUTF();
> > -        if (!"".equals(type)) {
> > +        if (!type.isEmpty()) {
> >              this.expectedType = ReflectionUtil.forName(type);
> >          }
> >          this.paramTypes = ReflectionUtil.toTypeArray(((String[]) in
> > diff --git a/java/org/apache/el/ValueExpressionImpl.java
> b/java/org/apache/el/ValueExpressionImpl.java
> > index f1a7a6a..91b3e1d 100644
> > --- a/java/org/apache/el/ValueExpressionImpl.java
> > +++ b/java/org/apache/el/ValueExpressionImpl.java
> > @@ -240,7 +240,7 @@ public final class ValueExpressionImpl extends
> ValueExpression implements
> >              ClassNotFoundException {
> >          this.expr = in.readUTF();
> >          String type = in.readUTF();
> > -        if (!"".equals(type)) {
> > +        if (!type.isEmpty()) {
> >              this.expectedType = ReflectionUtil.forName(type);
> >          }
> >          this.fnMapper = (FunctionMapper) in.readObject();
> > diff --git a/java/org/apache/el/ValueExpressionLiteral.java
> b/java/org/apache/el/ValueExpressionLiteral.java
> > index 8ff72d0..ca87e15 100644
> > --- a/java/org/apache/el/ValueExpressionLiteral.java
> > +++ b/java/org/apache/el/ValueExpressionLiteral.java
> > @@ -129,7 +129,7 @@ public final class ValueExpressionLiteral extends
> ValueExpression implements
> >              ClassNotFoundException {
> >          this.value = in.readObject();
> >          String type = in.readUTF();
> > -        if (!"".equals(type)) {
> > +        if (!type.isEmpty()) {
> >              this.expectedType = ReflectionUtil.forName(type);
> >          }
> >      }
> > diff --git a/java/org/apache/el/lang/ELSupport.java
> b/java/org/apache/el/lang/ELSupport.java
> > index 6031d1d..f251db8 100644
> > --- a/java/org/apache/el/lang/ELSupport.java
> > +++ b/java/org/apache/el/lang/ELSupport.java
> > @@ -540,19 +540,20 @@ public class ELSupport {
> >          if (obj == null)
> >              return null;
> >          if (obj instanceof String) {
> > +            String str = (String) obj;
> >              PropertyEditor editor =
> PropertyEditorManager.findEditor(type);
> >              if (editor == null) {
> > -                if ("".equals(obj)) {
> > +                if (str.isEmpty()) {
> >                      return null;
> >                  }
> >                  throw new
> ELException(MessageFactory.get("error.convert", obj,
> >                          obj.getClass(), type));
> >              } else {
> >                  try {
> > -                    editor.setAsText((String) obj);
> > +                    editor.setAsText(str);
> >                      return editor.getValue();
> >                  } catch (RuntimeException e) {
> > -                    if ("".equals(obj)) {
> > +                    if (str.isEmpty()) {
> >                          return null;
> >                      }
> >                      throw new
> ELException(MessageFactory.get("error.convert",
> > diff --git a/java/org/apache/el/lang/FunctionMapperImpl.java
> b/java/org/apache/el/lang/FunctionMapperImpl.java
> > index 81f296e..2887e11 100644
> > --- a/java/org/apache/el/lang/FunctionMapperImpl.java
> > +++ b/java/org/apache/el/lang/FunctionMapperImpl.java
> > @@ -146,7 +146,7 @@ public class FunctionMapperImpl extends
> FunctionMapper implements
> >                  ClassNotFoundException {
> >
> >              this.prefix = in.readUTF();
> > -            if ("".equals(this.prefix)) this.prefix = null;
> > +            if (this.prefix.isEmpty()) this.prefix = null;
> >              this.localName = in.readUTF();
> >              this.owner = in.readUTF();
> >              this.name = in.readUTF();
> > diff --git a/java/org/apache/el/util/ReflectionUtil.java
> b/java/org/apache/el/util/ReflectionUtil.java
> > index 401adb4..2bc4efd 100644
> > --- a/java/org/apache/el/util/ReflectionUtil.java
> > +++ b/java/org/apache/el/util/ReflectionUtil.java
> > @@ -52,7 +52,7 @@ public class ReflectionUtil {
> >      }
> >
> >      public static Class<?> forName(String name) throws
> ClassNotFoundException {
> > -        if (null == name || "".equals(name)) {
> > +        if (null == name || name.isEmpty()) {
> >              return null;
> >          }
> >          Class<?> c = forNamePrimitive(name);
> > diff --git a/java/org/apache/jasper/JspC.java
> b/java/org/apache/jasper/JspC.java
> > index f5fce3f..ff28ed1 100644
> > --- a/java/org/apache/jasper/JspC.java
> > +++ b/java/org/apache/jasper/JspC.java
> > @@ -1147,7 +1147,7 @@ public class JspC extends Task implements Options {
> >          String packageName = clctxt.getServletPackageName();
> >
> >          String thisServletName;
> > -        if  ("".equals(packageName)) {
> > +        if  (packageName.isEmpty()) {
> >              thisServletName = className;
> >          } else {
> >              thisServletName = packageName + '.' + className;
> > diff --git a/java/org/apache/jasper/compiler/Generator.java
> b/java/org/apache/jasper/compiler/Generator.java
> > index 3feb48d..ad8b29e 100644
> > --- a/java/org/apache/jasper/compiler/Generator.java
> > +++ b/java/org/apache/jasper/compiler/Generator.java
> > @@ -546,7 +546,7 @@ class Generator {
> >       * preamble generation)
> >       */
> >      private void genPreamblePackage(String packageName) {
> > -        if (!"".equals(packageName) && packageName != null) {
> > +        if (packageName != null && !packageName.isEmpty()) {
> >              out.printil("package " + packageName + ";");
> >              out.println();
> >          }
> > diff --git a/java/org/apache/jasper/compiler/Validator.java
> b/java/org/apache/jasper/compiler/Validator.java
> > index 289dc94..c5fbd15 100644
> > --- a/java/org/apache/jasper/compiler/Validator.java
> > +++ b/java/org/apache/jasper/compiler/Validator.java
> > @@ -1681,7 +1681,7 @@ class Validator {
> >                      lastArg = true;
> >                  }
> >                  String arg = signature.substring(start, p).trim();
> > -                if (!"".equals(arg)) {
> > +                if (!arg.isEmpty()) {
> >                      params.add(arg);
> >                  }
> >                  if (lastArg) {
> > diff --git a/java/org/apache/tomcat/util/digester/SetPropertiesRule.java
> b/java/org/apache/tomcat/util/digester/SetPropertiesRule.java
> > index 66d82f9..4779891 100644
> > --- a/java/org/apache/tomcat/util/digester/SetPropertiesRule.java
> > +++ b/java/org/apache/tomcat/util/digester/SetPropertiesRule.java
> > @@ -85,7 +85,7 @@ public class SetPropertiesRule extends Rule {
> >
> >          for (int i = 0; i < attributes.getLength(); i++) {
> >              String name = attributes.getLocalName(i);
> > -            if ("".equals(name)) {
> > +            if (name.isEmpty()) {
> >                  name = attributes.getQName(i);
> >              }
> >              String value = attributes.getValue(i);
> > diff --git a/java/org/apache/tomcat/util/net/SSLUtilBase.java
> b/java/org/apache/tomcat/util/net/SSLUtilBase.java
> > index 09e3aa7..56453f3 100644
> > --- a/java/org/apache/tomcat/util/net/SSLUtilBase.java
> > +++ b/java/org/apache/tomcat/util/net/SSLUtilBase.java
> > @@ -192,7 +192,7 @@ public abstract class SSLUtilBase implements SSLUtil
> {
> >                  // Some key store types (e.g. hardware) expect the
> InputStream
> >                  // to be null
> >                  if(!("PKCS11".equalsIgnoreCase(type) ||
> > -                        "".equalsIgnoreCase(path)) ||
> > +                        path.isEmpty()) ||
> >                          "NONE".equalsIgnoreCase(path)) {
> >                      istream =
> ConfigFileLoader.getSource().getResource(path).getInputStream();
> >                  }
> > diff --git a/java/org/apache/tomcat/websocket/WsWebSocketContainer.java
> b/java/org/apache/tomcat/websocket/WsWebSocketContainer.java
> > index c2c5308..28d0543 100644
> > --- a/java/org/apache/tomcat/websocket/WsWebSocketContainer.java
> > +++ b/java/org/apache/tomcat/websocket/WsWebSocketContainer.java
> > @@ -734,7 +734,8 @@ public class WsWebSocketContainer implements
> WebSocketContainer, BackgroundProce
> >
> >          // Request line
> >          result.put(GET_BYTES);
> > -        if (null == uri.getPath() || "".equals(uri.getPath())) {
> > +        final String path = uri.getPath();
> > +        if (null == path || path.isEmpty()) {
> >              result.put(ROOT_URI_BYTES);
> >          } else {
> >
> result.put(uri.getRawPath().getBytes(StandardCharsets.ISO_8859_1));
> >
> >
> > ---------------------------------------------------------------------
> > To unsubscribe, e-mail: dev-unsubscr...@tomcat.apache.org
> > For additional commands, e-mail: dev-h...@tomcat.apache.org
> >
>
>
> ---------------------------------------------------------------------
> To unsubscribe, e-mail: dev-unsubscr...@tomcat.apache.org
> For additional commands, e-mail: dev-h...@tomcat.apache.org
>
>

Reply via email to