You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@commons.apache.org by he...@apache.org on 2021/12/23 15:45:55 UTC
[commons-jexl] 01/02: JEXL: winter cleaning; - restoring CI build, take 2
This is an automated email from the ASF dual-hosted git repository.
henrib pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/commons-jexl.git
commit fc8d447930d7d6446c1d7eed71a9b64cebab9e01
Author: henrib <he...@apache.org>
AuthorDate: Thu Dec 23 16:43:21 2021 +0100
JEXL: winter cleaning;
- restoring CI build, take 2
---
pom.xml | 164 +++++++++++++--------
src/main/config/clirr-ignored.xml | 58 ++++++++
src/main/config/pmd.xml | 2 +
.../jexl3/internal/introspection/Permissions.java | 29 ++++
4 files changed, 188 insertions(+), 65 deletions(-)
diff --git a/pom.xml b/pom.xml
index 4861eb2..ea080b4 100644
--- a/pom.xml
+++ b/pom.xml
@@ -56,6 +56,7 @@
<japicmp.skip>false</japicmp.skip>
<commons.japicmp.version>0.15.3</commons.japicmp.version>
<commons.pmd.version>3.15.0</commons.pmd.version>
+ <commons.spotbugs.version>4.4.1</commons.spotbugs.version>
<!-- override of Jacoco properties defined in CP52 -->
<commons.jacoco.version>0.8.7</commons.jacoco.version>
@@ -122,7 +123,7 @@
</dependencies>
<build>
- <defaultGoal>clean package apache-rat:check spotbugs:check japicmp:cmp checkstyle:check javadoc:javadoc </defaultGoal>
+ <defaultGoal>clean package apache-rat:check spotbugs:check clirr:check checkstyle:check javadoc:javadoc </defaultGoal>
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
@@ -248,31 +249,45 @@
<xmlOutput>true</xmlOutput>
<excludeFilterFile>${basedir}/src/main/config/findbugs-exclude-filter.xml</excludeFilterFile>
</configuration>
+ <dependencies>
+ <dependency>
+ <groupId>org.ow2.asm</groupId>
+ <artifactId>asm</artifactId>
+ <version>9.2</version>
+ </dependency>
+ </dependencies>
</plugin>
- <!-- japicmp -->
+ <!-- Allow Clirr to be run from command-line. Must agree with config in report section. -->
<plugin>
- <groupId>com.github.siom79.japicmp</groupId>
- <artifactId>japicmp-maven-plugin</artifactId>
- <version>${commons.japicmp.version}</version>
+ <groupId>org.codehaus.mojo</groupId>
+ <artifactId>clirr-maven-plugin</artifactId>
<configuration>
- <parameter>
- <includes>
- <include>org.apache.commons.jexl3</include>
- <include>org.apache.commons.jexl3.introspection</include>
- <include>org.apache.commons.jexl3.scripting</include>
- </includes>
- <excludes>
- <exclude>org.apache.commons.jexl3.internal</exclude>
- <exclude>org.apache.commons.jexl3.introspection.internal</exclude>
- <exclude>org.apache.commons.jexl3.parser</exclude>
- </excludes>
- <onlyModified>true</onlyModified>
- <accessModifier>protected</accessModifier>
- <ignoreMissingClasses>true</ignoreMissingClasses>
- <breakBuildOnBinaryIncompatibleModifications>false</breakBuildOnBinaryIncompatibleModifications>
- <breakBuildIfCausedByExclusion>false</breakBuildIfCausedByExclusion>
- </parameter>
+ <ignoredDifferencesFile>${basedir}/src/main/config/clirr-ignored.xml</ignoredDifferencesFile>
+ <excludes>
+ <exclude>org/apache/commons/jexl3/parser/**</exclude>
+ <exclude>org/apache/commons/jexl3/internal/**</exclude>
+ </excludes>
+ </configuration>
+ </plugin>
+
+ <!-- Allow RAT to be run from command-line. Must agree with config in report section. -->
+ <plugin>
+ <groupId>org.apache.rat</groupId>
+ <artifactId>apache-rat-plugin</artifactId>
+ <configuration>
+ <excludes>
+ <exclude>.travis.yml</exclude>
+ </excludes>
+ </configuration>
+ </plugin>
+
+ <plugin>
+ <groupId>org.apache.maven.plugins</groupId>
+ <artifactId>maven-javadoc-plugin</artifactId>
+ <configuration>
+ <excludePackageNames>*.internal:*.parser</excludePackageNames>
+ <show>public</show>
</configuration>
</plugin>
@@ -281,7 +296,6 @@
<artifactId>maven-pmd-plugin</artifactId>
<version>${commons.pmd.version}</version>
<configuration>
- <targetJdk>${maven.compiler.target}</targetJdk>
<rulesets>
<ruleset>${project.basedir}/src/main/config/pmd_jexl.xml</ruleset>
</rulesets>
@@ -303,25 +317,32 @@
</dependencies>
</plugin>
- <!-- Allow RAT to be run from command-line. Must agree with config in report section. -->
+ <!-- japicmp -->
<plugin>
- <groupId>org.apache.rat</groupId>
- <artifactId>apache-rat-plugin</artifactId>
+ <groupId>com.github.siom79.japicmp</groupId>
+ <artifactId>japicmp-maven-plugin</artifactId>
+ <version>${commons.japicmp.version}</version>
<configuration>
- <excludes>
- <exclude>.travis.yml</exclude>
- </excludes>
+ <parameter>
+ <includes>
+ <include>org.apache.commons.jexl3</include>
+ <include>org.apache.commons.jexl3.introspection</include>
+ <include>org.apache.commons.jexl3.scripting</include>
+ </includes>
+ <excludes>
+ <exclude>org.apache.commons.jexl3.internal</exclude>
+ <exclude>org.apache.commons.jexl3.introspection.internal</exclude>
+ <exclude>org.apache.commons.jexl3.parser</exclude>
+ </excludes>
+ <onlyModified>true</onlyModified>
+ <accessModifier>protected</accessModifier>
+ <ignoreMissingClasses>true</ignoreMissingClasses>
+ <breakBuildOnBinaryIncompatibleModifications>false</breakBuildOnBinaryIncompatibleModifications>
+ <breakBuildIfCausedByExclusion>false</breakBuildIfCausedByExclusion>
+ </parameter>
</configuration>
</plugin>
- <plugin>
- <groupId>org.apache.maven.plugins</groupId>
- <artifactId>maven-javadoc-plugin</artifactId>
- <configuration>
- <excludePackageNames>*.internal:*.parser</excludePackageNames>
- <show>public</show>
- </configuration>
- </plugin>
</plugins>
</build>
@@ -373,6 +394,34 @@
</plugin>
<plugin>
+ <groupId>org.apache.maven.plugins</groupId>
+ <artifactId>maven-pmd-plugin</artifactId>
+ <version>${commons.pmd.version}</version>
+ <configuration>
+ <targetJdk>${maven.compiler.target}</targetJdk>
+ <rulesets>
+ <ruleset>${project.basedir}/src/main/config/pmd.xml</ruleset>
+ </rulesets>
+ <excludes>
+ <exclude>org/apache/commons/jexl3/parser/Parser.java</exclude>
+ <exclude>org/apache/commons/jexl3/parser/AST*.java</exclude>
+ <exclude>org/apache/commons/jexl3/parser/ParserTokenManager.java</exclude>
+ <exclude>org/apache/commons/jexl3/parser/*Constants.java</exclude>
+ <exclude>org/apache/commons/jexl3/parser/AbstractCharStream.java</exclude>
+ <exclude>org/apache/commons/jexl3/parser/*Provider.java</exclude>
+ </excludes>
+ </configuration>
+ <reportSets>
+ <reportSet>
+ <reports>
+ <report>pmd</report>
+ <report>cpd</report>
+ </reports>
+ </reportSet>
+ </reportSets>
+ </plugin>
+
+ <plugin>
<groupId>com.github.siom79.japicmp</groupId>
<artifactId>japicmp-maven-plugin</artifactId>
<version>${commons.japicmp.version}</version>
@@ -398,6 +447,19 @@
</plugin>
<plugin>
+ <groupId>org.codehaus.mojo</groupId>
+ <artifactId>clirr-maven-plugin</artifactId>
+ <version>2.8</version>
+ <configuration>
+ <ignoredDifferencesFile>${basedir}/src/main/config/clirr-ignored.xml</ignoredDifferencesFile>
+ <excludes>
+ <exclude>org/apache/commons/jexl3/parser/**</exclude>
+ <exclude>org/apache/commons/jexl3/internal/**</exclude>
+ </excludes>
+ </configuration>
+ </plugin>
+
+ <plugin>
<groupId>org.apache.rat</groupId>
<artifactId>apache-rat-plugin</artifactId>
<configuration>
@@ -420,34 +482,6 @@
</configuration>
</plugin>
- <plugin>
- <groupId>org.apache.maven.plugins</groupId>
- <artifactId>maven-pmd-plugin</artifactId>
- <version>${commons.pmd.version}</version>
- <configuration>
- <targetJdk>${maven.compiler.target}</targetJdk>
- <rulesets>
- <ruleset>${project.basedir}/src/main/config/pmd.xml</ruleset>
- </rulesets>
- <excludes>
- <exclude>org/apache/commons/jexl3/parser/Parser.java</exclude>
- <exclude>org/apache/commons/jexl3/parser/AST*.java</exclude>
- <exclude>org/apache/commons/jexl3/parser/ParserTokenManager.java</exclude>
- <exclude>org/apache/commons/jexl3/parser/*Constants.java</exclude>
- <exclude>org/apache/commons/jexl3/parser/AbstractCharStream.java</exclude>
- <exclude>org/apache/commons/jexl3/parser/*Provider.java</exclude>
- </excludes>
- </configuration>
- <reportSets>
- <reportSet>
- <reports>
- <report>pmd</report>
- <report>cpd</report>
- </reports>
- </reportSet>
- </reportSets>
- </plugin>
-
</plugins>
</reporting>
diff --git a/src/main/config/clirr-ignored.xml b/src/main/config/clirr-ignored.xml
new file mode 100644
index 0000000..6f8b1e1
--- /dev/null
+++ b/src/main/config/clirr-ignored.xml
@@ -0,0 +1,58 @@
+<?xml version="1.0"?>
+<!--
+ Licensed to the Apache Software Foundation (ASF) under one or more
+ contributor license agreements. See the NOTICE file distributed with
+ this work for additional information regarding copyright ownership.
+ The ASF licenses this file to You under the Apache License, Version 2.0
+ (the "License"); you may not use this file except in compliance with
+ the License. You may obtain a copy of the License at
+
+ http://www.apache.org/licenses/LICENSE-2.0
+
+ Unless required by applicable law or agreed to in writing, software
+ distributed under the License is distributed on an "AS IS" BASIS,
+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ See the License for the specific language governing permissions and
+ limitations under the License.
+-->
+
+<differences>
+ <!-- 3.2 differences: Jexl{Engine, Script, Uberspect} are not used as user implementation contracts
+ but only as JEXL API contracts. Adding new methods or final modifier to those is very unlikely to have
+ any impact on actual binary compatiblity.An equivalent set of changes occured on 3.1 without complaints. -->
+ <difference>
+ <className>org/apache/commons/jexl3/JexlEngine</className>
+ <differenceType>7014</differenceType> <!-- final method on abstract class not meant for the user to derive -->
+ <method>org.apache.commons.jexl3.JexlScript createScript(org.apache.commons.jexl3.JexlInfo, java.lang.String, java.lang.String[])</method>
+ <to>org.apache.commons.jexl3.JexlScript createScript(org.apache.commons.jexl3.JexlInfo, java.lang.String, java.lang.String[])</to>
+ </difference>
+
+ <difference>
+ <className>org/apache/commons/jexl3/JexlEngine</className>
+ <differenceType>7013</differenceType> <!-- added abstract method on abstract class not meant for the user to derive -->
+ <method>org.apache.commons.jexl3.JexlScript createScript(org.apache.commons.jexl3.JexlFeatures, org.apache.commons.jexl3.JexlInfo, java.lang.String, java.lang.String[])</method>
+ <to>org.apache.commons.jexl3.JexlScript createScript(org.apache.commons.jexl3.JexlFeatures, org.apache.commons.jexl3.JexlInfo, java.lang.String, java.lang.String[])</to>
+ </difference>
+
+ <difference>
+ <className>org/apache/commons/jexl3/JexlScript</className>
+ <differenceType>7012</differenceType> <!-- method added to interface that is not meant for the user to implement -->
+ <method>java.lang.String[] getUnboundParameters()</method>
+ <to>java.lang.String[] getUnboundParameters()</to>
+ </difference>
+
+ <difference>
+ <className>org/apache/commons/jexl3/introspection/JexlUberspect</className>
+ <differenceType>7012</differenceType> <!-- method added to interface that is not meant for the user to implement -->
+ <method>java.lang.ClassLoader getClassLoader()</method>
+ <to>java.lang.ClassLoader getClassLoader()</to>
+ </difference>
+
+ <!-- The parser now expects/generates TokenMgrException instead of TokenMgrError -->
+ <difference>
+ <className>org/apache/commons/jexl3/JexlException$Tokenization</className>
+ <differenceType>7005</differenceType> <!-- parser now constructs this exception using TokenMgrException -->
+ <method>JexlException$Tokenization(org.apache.commons.jexl3.JexlInfo, org.apache.commons.jexl3.parser.TokenMgrError)</method>
+ <to>JexlException$Tokenization(org.apache.commons.jexl3.JexlInfo, org.apache.commons.jexl3.parser.TokenMgrException)</to>
+ </difference>
+</differences>
\ No newline at end of file
diff --git a/src/main/config/pmd.xml b/src/main/config/pmd.xml
index d8099ed..c07be55 100644
--- a/src/main/config/pmd.xml
+++ b/src/main/config/pmd.xml
@@ -25,7 +25,9 @@ limitations under the License.
</description>
<rule ref="category/java/bestpractices.xml">
+ <!-- Often arguments and parameters array, not semantically varargs -->
<exclude name="UseVarargs"/>
+ <!-- Internal structures (nodes, etc) -->
<exclude name="ArrayIsStoredDirectly"/>
</rule>
</ruleset>
diff --git a/src/main/java/org/apache/commons/jexl3/internal/introspection/Permissions.java b/src/main/java/org/apache/commons/jexl3/internal/introspection/Permissions.java
index c6fd0ee..afa665c 100644
--- a/src/main/java/org/apache/commons/jexl3/internal/introspection/Permissions.java
+++ b/src/main/java/org/apache/commons/jexl3/internal/introspection/Permissions.java
@@ -21,6 +21,11 @@ import java.lang.reflect.Constructor;
import java.lang.reflect.Field;
import java.lang.reflect.Method;
import java.lang.reflect.Modifier;
+//import java.util.Collections;
+//import java.util.Map;
+//import java.util.Set;
+//import java.util.concurrent.ConcurrentHashMap;
+
import org.apache.commons.jexl3.annotations.NoJexl;
/**
@@ -35,6 +40,30 @@ public class Permissions {
* The default singleton.
*/
public static final Permissions DEFAULT = new Permissions();
+//
+// // my.package {
+// // class0 {...
+// // class1 {...}
+// // class1(); // constructors
+// // method(); // method
+// // field;
+// // } // end class0
+// // } // end package my.package
+//
+// public static class NoJexlPackage {
+// protected Map<String, NoJexlClass> nojexl = new ConcurrentHashMap<>();
+// }
+// public static class NoJexlClass {
+// protected Set<String> methodNames;
+// protected Set<String> fieldNames;
+// }
+// static final NoJexlClass NOJEXL_CLASS = new NoJexlClass();
+// static final Set<String> NOJEXL_METHODS = Collections.singleton("");
+// static final Set<String> NOJEXL_FIELDS = Collections.singleton("");
+//
+// public static final class Shielded extends Permissions {
+// Map<String, NoJexlPackage> packageShields;
+// }
/**
* Checks whether a package explicitly disallows JEXL introspection.