You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@zookeeper.apache.org by sy...@apache.org on 2020/10/06 10:40:08 UTC

[zookeeper] branch master updated: ZOOKEEPER-3952: Remove commons-lang from ZooKeeper

This is an automated email from the ASF dual-hosted git repository.

symat pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/zookeeper.git


The following commit(s) were added to refs/heads/master by this push:
     new d3282c6  ZOOKEEPER-3952: Remove commons-lang from ZooKeeper
d3282c6 is described below

commit d3282c62ddb30a8ce265dcebca0e106c51f07ca3
Author: Tamas Penzes <ta...@cloudera.com>
AuthorDate: Tue Oct 6 10:39:37 2020 +0000

    ZOOKEEPER-3952: Remove commons-lang from ZooKeeper
    
    Removed commons-lang from main project, replaced functionality with standard Java code.
    
    Author: Tamas Penzes <ta...@cloudera.com>
    
    Reviewers: Christopher Tubbs <ct...@apache.org>, Enrico Olivelli <eo...@apache.org>, Mate Szalay-Beko <sy...@apache.org>, tison <wa...@gmail.com>
    
    Closes #1478 from tamaashu/ZOOKEEPER-3952
---
 pom.xml                                            | 48 +++++++++++++++++++---
 .../zookeeper-contrib-zooinspector/ivy.xml         |  8 +---
 .../zookeeper-contrib-zooinspector/pom.xml         |  6 ---
 zookeeper-server/pom.xml                           |  4 --
 .../java/org/apache/zookeeper/common/PathTrie.java | 23 +++++++----
 .../zookeeper/server/FinalRequestProcessor.java    |  3 +-
 6 files changed, 60 insertions(+), 32 deletions(-)

diff --git a/pom.xml b/pom.xml
index b994523..5c95183 100755
--- a/pom.xml
+++ b/pom.xml
@@ -444,10 +444,10 @@
     <kerby.version>2.0.0</kerby.version>
     <bouncycastle.version>1.60</bouncycastle.version>
     <commons-collections.version>3.2.2</commons-collections.version>
-    <commons-lang.version>2.6</commons-lang.version>
     <dropwizard.version>3.2.5</dropwizard.version>
     <spotbugsannotations.version>4.0.2</spotbugsannotations.version>
     <checkstyle.version>8.17</checkstyle.version>
+    <enforcer.version>3.0.0-M3</enforcer.version>
 
     <!-- parameters to pass to C client build -->
     <c-client-openssl>yes</c-client-openssl>
@@ -468,11 +468,6 @@
         <version>${commons-collections.version}</version>
       </dependency>
       <dependency>
-        <groupId>commons-lang</groupId>
-        <artifactId>commons-lang</artifactId>
-        <version>${commons-lang.version}</version>
-      </dependency>
-      <dependency>
         <groupId>org.apache.yetus</groupId>
         <artifactId>audience-annotations</artifactId>
         <version>${audience-annotations.version}</version>
@@ -1046,6 +1041,47 @@
             </execution>
         </executions>
       </plugin>
+      <plugin>
+        <groupId>org.apache.maven.plugins</groupId>
+        <artifactId>maven-enforcer-plugin</artifactId>
+        <version>${enforcer.version}</version>
+        <executions>
+          <execution>
+            <id>banned-commons-lang</id>
+            <goals>
+              <goal>enforce</goal>
+            </goals>
+            <configuration>
+              <rules>
+                <bannedDependencies>
+                  <excludes>
+                    <exclude>commons-lang:commons-lang</exclude>
+                  </excludes>
+                  <searchTransitive>false</searchTransitive>
+                  <message>We don't use commons-lang any more, so do not depend on it directly.</message>
+                </bannedDependencies>
+              </rules>
+            </configuration>
+          </execution>
+          <execution>
+            <id>banned-commons-lang3</id>
+            <goals>
+              <goal>enforce</goal>
+            </goals>
+            <configuration>
+              <rules>
+                <bannedDependencies>
+                  <excludes>
+                    <exclude>org.apache.commons:commons-lang3</exclude>
+                  </excludes>
+                  <searchTransitive>false</searchTransitive>
+                  <message>We don't use commons-lang3, so do not depend on it directly.</message>
+                </bannedDependencies>
+              </rules>
+            </configuration>
+          </execution>
+        </executions>
+      </plugin>
     </plugins>
     <resources>
       <resource>
diff --git a/zookeeper-contrib/zookeeper-contrib-zooinspector/ivy.xml b/zookeeper-contrib/zookeeper-contrib-zooinspector/ivy.xml
index d841d18..96acdde 100644
--- a/zookeeper-contrib/zookeeper-contrib-zooinspector/ivy.xml
+++ b/zookeeper-contrib/zookeeper-contrib-zooinspector/ivy.xml
@@ -39,12 +39,8 @@
             
     <dependency org="log4j" name="log4j" rev="1.2.17" transitive="false"/>
     <dependency org="junit" name="junit" rev="4.12" conf="test->default"/>
-    <dependency org="org.apache.rat" name="apache-rat-tasks" 
-                rev="0.6" conf="releaseaudit->default"/>
-    <dependency org="commons-lang" name="commons-lang" 
-                rev="2.4" conf="releaseaudit->default"/>
-    <dependency org="commons-collections" name="commons-collections" 
-                rev="3.2.2" conf="releaseaudit->default"/>
+    <dependency org="org.apache.rat" name="apache-rat-tasks" rev="0.6" conf="releaseaudit->default"/>
+    <dependency org="commons-collections" name="commons-collections" rev="3.2.2" conf="releaseaudit->default"/>
   </dependencies>
 
 </ivy-module>
diff --git a/zookeeper-contrib/zookeeper-contrib-zooinspector/pom.xml b/zookeeper-contrib/zookeeper-contrib-zooinspector/pom.xml
index c9f3b1e..b517441 100755
--- a/zookeeper-contrib/zookeeper-contrib-zooinspector/pom.xml
+++ b/zookeeper-contrib/zookeeper-contrib-zooinspector/pom.xml
@@ -35,7 +35,6 @@
 
   <properties>
     <rat.version>0.6</rat.version>
-    <commons-lang.version>2.4</commons-lang.version>
     <guava.version>18.0</guava.version>
   </properties>
 
@@ -85,11 +84,6 @@
       <version>${rat.version}</version>
     </dependency>
     <dependency>
-      <groupId>commons-lang</groupId>
-      <artifactId>commons-lang</artifactId>
-      <version>${commons-lang.version}</version>
-    </dependency>
-    <dependency>
       <groupId>commons-collections</groupId>
       <artifactId>commons-collections</artifactId>
     </dependency>
diff --git a/zookeeper-server/pom.xml b/zookeeper-server/pom.xml
index 5cdb8b3..5dbc028 100755
--- a/zookeeper-server/pom.xml
+++ b/zookeeper-server/pom.xml
@@ -49,10 +49,6 @@
       <scope>test</scope>
     </dependency>
     <dependency>
-      <groupId>commons-lang</groupId>
-      <artifactId>commons-lang</artifactId>
-    </dependency>
-    <dependency>
       <groupId>org.apache.zookeeper</groupId>
       <artifactId>zookeeper-jute</artifactId>
       <version>${project.version}</version>
diff --git a/zookeeper-server/src/main/java/org/apache/zookeeper/common/PathTrie.java b/zookeeper-server/src/main/java/org/apache/zookeeper/common/PathTrie.java
index 95258b2..86acdd9 100644
--- a/zookeeper-server/src/main/java/org/apache/zookeeper/common/PathTrie.java
+++ b/zookeeper-server/src/main/java/org/apache/zookeeper/common/PathTrie.java
@@ -27,7 +27,7 @@
  import java.util.concurrent.locks.Lock;
  import java.util.concurrent.locks.ReadWriteLock;
  import java.util.concurrent.locks.ReentrantReadWriteLock;
- import org.apache.commons.lang.StringUtils;
+ import java.util.stream.Stream;
  import org.slf4j.Logger;
  import org.slf4j.LoggerFactory;
 
@@ -203,10 +203,10 @@
      public void addPath(final String path) {
          Objects.requireNonNull(path, "Path cannot be null");
 
-         final String[] pathComponents = StringUtils.split(path, '/');
-         if (pathComponents.length == 0) {
+         if (path.length() == 0) {
              throw new IllegalArgumentException("Invalid path: " + path);
          }
+         final String[] pathComponents = split(path);
 
          writeLock.lock();
          try {
@@ -233,10 +233,11 @@
      public void deletePath(final String path) {
          Objects.requireNonNull(path, "Path cannot be null");
 
-         final String[] pathComponents = StringUtils.split(path, '/');
-         if (pathComponents.length == 0) {
+         if (path.length() == 0) {
              throw new IllegalArgumentException("Invalid path: " + path);
          }
+         final String[] pathComponents = split(path);
+
 
          writeLock.lock();
          try {
@@ -267,10 +268,10 @@
      public boolean existsNode(final String path) {
          Objects.requireNonNull(path, "Path cannot be null");
 
-         final String[] pathComponents = StringUtils.split(path, '/');
-         if (pathComponents.length == 0) {
+         if (path.length() == 0) {
              throw new IllegalArgumentException("Invalid path: " + path);
          }
+         final String[] pathComponents = split(path);
 
          readLock.lock();
          try {
@@ -299,7 +300,7 @@
      public String findMaxPrefix(final String path) {
          Objects.requireNonNull(path, "Path cannot be null");
 
-         final String[] pathComponents = StringUtils.split(path, '/');
+         final String[] pathComponents = split(path);
 
          readLock.lock();
          try {
@@ -344,4 +345,10 @@
          }
      }
 
+     private static String[] split(final String path){
+         return Stream.of(path.split("/"))
+                 .filter(t -> !t.trim().isEmpty())
+                 .toArray(String[]::new);
+     }
+
  }
diff --git a/zookeeper-server/src/main/java/org/apache/zookeeper/server/FinalRequestProcessor.java b/zookeeper-server/src/main/java/org/apache/zookeeper/server/FinalRequestProcessor.java
index a23e903..26d5baf 100644
--- a/zookeeper-server/src/main/java/org/apache/zookeeper/server/FinalRequestProcessor.java
+++ b/zookeeper-server/src/main/java/org/apache/zookeeper/server/FinalRequestProcessor.java
@@ -25,7 +25,6 @@ import java.util.Collections;
 import java.util.List;
 import java.util.Locale;
 import java.util.Set;
-import org.apache.commons.lang.StringUtils;
 import org.apache.jute.Record;
 import org.apache.zookeeper.ClientCnxn;
 import org.apache.zookeeper.KeeperException;
@@ -554,7 +553,7 @@ public class FinalRequestProcessor implements RequestProcessor {
                 String prefixPath = getEphemerals.getPrefixPath();
                 Set<String> allEphems = zks.getZKDatabase().getDataTree().getEphemerals(request.sessionId);
                 List<String> ephemerals = new ArrayList<>();
-                if (StringUtils.isBlank(prefixPath) || "/".equals(prefixPath.trim())) {
+                if (prefixPath == null || prefixPath.trim().isEmpty() || "/".equals(prefixPath.trim())) {
                     ephemerals.addAll(allEphems);
                 } else {
                     for (String p : allEphems) {