Skip to content
Permalink
Browse files
JEXL: winter cleaning;
- restoring CI build, take 2
  • Loading branch information
henrib committed Dec 23, 2021
1 parent eb41da0 commit fc8d447930d7d6446c1d7eed71a9b64cebab9e01
Show file tree
Hide file tree
Showing 4 changed files with 188 additions and 65 deletions.
164 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>

@@ -372,6 +393,34 @@
</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>

<plugin>
<groupId>com.github.siom79.japicmp</groupId>
<artifactId>japicmp-maven-plugin</artifactId>
@@ -397,6 +446,19 @@
</configuration>
</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>
@@ -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>

@@ -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>
@@ -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>
@@ -21,6 +21,11 @@
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 @@ protected 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.

0 comments on commit fc8d447

Please sign in to comment.