diff --git a/.github/workflows/java8Check.yml b/.github/workflows/java8Check.yml new file mode 100644 index 0000000..5673e30 --- /dev/null +++ b/.github/workflows/java8Check.yml @@ -0,0 +1,43 @@ +name: Check java class version +on: + push: + branches: + - "*" + pull_request: + types: [opened, synchronize, reopened] +jobs: + build: + name: Build and check + runs-on: ubuntu-latest + steps: + - uses: actions/checkout@v4 + with: + fetch-depth: 0 # Shallow clones should be disabled for a better relevancy of analysis + - name: Set up JDK 17 + uses: actions/setup-java@v4 + with: + java-version: 17 + distribution: 'zulu' # Alternative distribution options are available. + - name: Cache Maven packages + uses: actions/cache@v4 + with: + path: ~/.m2 + key: ${{ runner.os }}-m2-${{ hashFiles('**/pom.xml') }} + restore-keys: ${{ runner.os }}-m2 + - name: Build and check + run: | + mvn -P sonar package + cd java8Test + mvn package + + echo "checking ../javaluator-demo/target/javaluator-demo.jar" + java -jar target/javaReleaseTest.jar ../javaluator-demo/target/javaluator-demo.jar 52 + + # Let check the library itself in case demo pom points to an older release of the library + OUT="$(ls ../javaluator/target/javaluator*.jar | grep -v javadoc.jar | grep -v sources.jar)" + echo "checking $OUT" + java -jar target/javaReleaseTest.jar $OUT 52 + + OUT="$(ls ../javaluator-examples/target/javaluator-examples*.jar | grep -v javadoc.jar | grep -v sources.jar)" + echo "checking $OUT" + java -jar target/javaReleaseTest.jar $OUT 52 \ No newline at end of file diff --git a/DeliveryProcess.md b/DeliveryProcess.md index b5bcb1b..be79b15 100644 --- a/DeliveryProcess.md +++ b/DeliveryProcess.md @@ -3,27 +3,34 @@ ## Deploy the artifact on Maven central 1. Push the code in `master` branch. -It will trigger some workflows. Please note that `tutorial` workflow may fail! It only means [Javaluator tutorial on Javaluator's site](https://javaluator.fathzer.com) require some updates. -If Sonar quality gate fail ... try to fix its complaints ;-) +It will trigger some workflows. Please note that `tutorial` workflow may fail! If it fails, it means that [Javaluator tutorial on Javaluator's site](https://javaluator.fathzer.com) require some updates. +If Sonar quality gate fails ... try to fix its complaints ;-) -2. Run `mvn clean deploy` on the project. -As the compiler target is Java 1.6, it will fail with recent release of Java. Java 8 is able to make the compile. -The easiest way to use java 8 is to [configure a *toolchain*](#HowToConfigureToolchain). +2. Ensure *toolchain* is configured ([see how to do it](#how-to-configure-toolchain)) and the jdk required in [*pom.xml*](https://github.com/fathzer/javaluator/blob/master/pom.xml)) is available. + +3. Run `mvn clean deploy` on the project. Of course, signing material (certificate and its password) are not included in this project: There should be `fathzer_private_key.asc` and `fathzer_key_pwd.txt` files in the user's home directory. 3. Create a release in Github. ## Javaluator's site update -1. Update the [`father/hosting`](https://github.com/fathzer/hosting) private project. +1. If a new demo has to be compiled, run `mvn -P demo clean package` on the project. + +2. Update the [`father/hosting`](https://github.com/fathzer/hosting) private project. - If the `tutorial` workflow fails, have a look at its logs, it should contains the list of files that should be updated in the project. Once the project is updated, retry the failed action, it should succeed. - Add the version release notes to the `javaluator/www/en/doc/relnotes.txt` file. -2. Don't forget to push the updates in the production site! +3. Don't forget to push the updates in the production site! + +## Update javadoc on javadoc.io + +Once the Maven artifacts are available on [Maven central](https://search.maven.org/search?q=a:javaluator), open the link `https://javadoc.io/doc/com.fathzer/javaluator/*VERSION*/` were *VERSION* is the new release number. +javadoc.io will process the request and made the new release available after a couple of minutes. ## How to configure toolchain -Add a *toolchain.xml* file](#HowToConfigureToolchain) in your `.m2` directory. +Add a *toolchain.xml* file in your `.m2` directory. This file should contain something like: ``` @@ -32,7 +39,7 @@ This file should contain something like: jdk - 8 + 21 sun @@ -41,5 +48,4 @@ This file should contain something like: ``` -Once it is done, java 8 is activated with the `jdk` system property: `mvn -Djdk=8 clean deploy` diff --git a/java8Test/README.md b/java8Test/README.md new file mode 100644 index 0000000..5f5593a --- /dev/null +++ b/java8Test/README.md @@ -0,0 +1 @@ +This folder contains a program used by 'java8Check.yml' workflow to check if generated classes are compatible with a java 8 (the exact release is defined in the workflow) virtual machine. \ No newline at end of file diff --git a/java8Test/pom.xml b/java8Test/pom.xml new file mode 100644 index 0000000..1a64585 --- /dev/null +++ b/java8Test/pom.xml @@ -0,0 +1,50 @@ + + 4.0.0 + + com.fathzer + parent-pom + 1.0.8 + + + java-release-test + 0.0.1 + java-release-test + A program that tests a jar contains classes compatible with a + specific java release. + + + UTF-8 + true + true + true + true + + + + + + maven-shade-plugin + 3.4.1 + + javaReleaseTest + + + com.fathzer.java.release.Check + + + + + + package + + shade + + + + + + + \ No newline at end of file diff --git a/java8Test/src/main/java/com/fathzer/java/release/Check.java b/java8Test/src/main/java/com/fathzer/java/release/Check.java new file mode 100644 index 0000000..60e759a --- /dev/null +++ b/java8Test/src/main/java/com/fathzer/java/release/Check.java @@ -0,0 +1,47 @@ +package com.fathzer.java.release; + +import java.io.DataInputStream; +import java.io.File; +import java.io.FileInputStream; +import java.io.IOException; +import java.util.function.Predicate; +import java.util.zip.ZipEntry; +import java.util.zip.ZipInputStream; + +public class Check { + private static final String CLASS_SUFFIX = ".class"; + + public static void main(String[] args) { + try { + if (args.length!=2) { + throw new IllegalArgumentException("This program requires two arguments: a jar file path and a maximum class level"); + } + final File jar = new File(args[0]); + final int maxRelease = Integer.parseInt(args[1]); + new Check().check(jar, maxRelease, s->s.endsWith("-info.class")); + System.out.println("ok"); + } catch (Exception e) { + e.printStackTrace(); + System.exit(1); + } + } + + private void check(File jar, int maxRelease, Predicate ignored) throws IOException { + try (ZipInputStream zip = new ZipInputStream(new FileInputStream(jar))) { + final DataInputStream data = new DataInputStream(zip); + for (ZipEntry entry = zip.getNextEntry(); entry!=null; entry = zip.getNextEntry()) { + if (!entry.isDirectory() && entry.getName().endsWith(CLASS_SUFFIX) && !ignored.test(entry.getName())) { + if (zip.skip(6)!=6) { + throw new IOException("End of file reached before major class version"); + } + final int release = data.readUnsignedShort(); + if (release>maxRelease) { + throw new IllegalArgumentException("The major class version of "+entry.getName()+" is "+release); + } + } + } + } + } + + +} diff --git a/javaluator-demo/pom.xml b/javaluator-demo/pom.xml index 27bce10..cacc38f 100644 --- a/javaluator-demo/pom.xml +++ b/javaluator-demo/pom.xml @@ -5,10 +5,10 @@ com.fathzer javaluator-parent-pom - 1.0.0 + 1.0.1 javaluator-demo - 3.0.2 + 3.0.3 true @@ -20,7 +20,7 @@ com.fathzer javaluator - 3.0.4 + 3.0.5 com.fathzer @@ -46,6 +46,17 @@ + + + *:* + + module-info.class + META-INF/*.SF + META-INF/*.DSA + META-INF/*.RSA + + + diff --git a/javaluator-demo/src/main/java/com/fathzer/soft/javaluator/demo/ConstantTableModel.java b/javaluator-demo/src/main/java/com/fathzer/soft/javaluator/demo/ConstantTableModel.java index 319c551..9f43708 100644 --- a/javaluator-demo/src/main/java/com/fathzer/soft/javaluator/demo/ConstantTableModel.java +++ b/javaluator-demo/src/main/java/com/fathzer/soft/javaluator/demo/ConstantTableModel.java @@ -15,12 +15,9 @@ public class ConstantTableModel extends AbstractTableModel { private List constants; public ConstantTableModel(Collection collection) { - this.constants = new ArrayList(collection); - Collections.sort(this.constants, new Comparator() { - public int compare(Constant c1, Constant c2) { - return c1.getName().compareTo(c2.getName()); - } - }); + this.constants = new ArrayList<>(collection); + final Comparator cmp = (c1, c2) -> c1.getName().compareTo(c2.getName()); + Collections.sort(this.constants, cmp); } public int getColumnCount() { diff --git a/javaluator-demo/src/main/java/com/fathzer/soft/javaluator/demo/DemoPanel.java b/javaluator-demo/src/main/java/com/fathzer/soft/javaluator/demo/DemoPanel.java index 57b3749..2a2cff3 100644 --- a/javaluator-demo/src/main/java/com/fathzer/soft/javaluator/demo/DemoPanel.java +++ b/javaluator-demo/src/main/java/com/fathzer/soft/javaluator/demo/DemoPanel.java @@ -5,8 +5,6 @@ import java.awt.GridBagLayout; import java.awt.GridBagConstraints; -import java.beans.PropertyChangeListener; -import java.beans.PropertyChangeEvent; import java.awt.Insets; import javax.swing.border.TitledBorder; @@ -86,8 +84,7 @@ private JLabel getLblNewLabel() { private TextWidget getExpression() { if (expression == null) { expression = new TextWidget(); - expression.addPropertyChangeListener(TextWidget.TEXT_PROPERTY, new PropertyChangeListener() { - public void propertyChange(PropertyChangeEvent evt) { + expression.addPropertyChangeListener(TextWidget.TEXT_PROPERTY, evt -> { try { String exp = expression.getText(); Object result = exp.length()==0 ? exp : getEvaluator().evaluate(exp); @@ -98,7 +95,6 @@ public void propertyChange(PropertyChangeEvent evt) { getResultLabel().setText("error: "+e); resultLabel.setForeground(Color.RED); } - } }); expression.setColumns(30); } diff --git a/javaluator-demo/src/main/java/com/fathzer/soft/javaluator/demo/FunctionTableModel.java b/javaluator-demo/src/main/java/com/fathzer/soft/javaluator/demo/FunctionTableModel.java index 470e762..b5f7498 100644 --- a/javaluator-demo/src/main/java/com/fathzer/soft/javaluator/demo/FunctionTableModel.java +++ b/javaluator-demo/src/main/java/com/fathzer/soft/javaluator/demo/FunctionTableModel.java @@ -3,7 +3,6 @@ import java.util.ArrayList; import java.util.Collection; import java.util.Collections; -import java.util.Comparator; import java.util.List; import javax.swing.table.AbstractTableModel; @@ -15,12 +14,8 @@ public class FunctionTableModel extends AbstractTableModel { private List functions; public FunctionTableModel(Collection collection) { - this.functions = new ArrayList(collection); - Collections.sort(this.functions, new Comparator() { - public int compare(Function f1, Function f2) { - return f1.getName().compareTo(f2.getName()); - } - }); + this.functions = new ArrayList<>(collection); + Collections.sort(this.functions, (f1,f2) -> f1.getName().compareTo(f2.getName())); } public int getColumnCount() { diff --git a/javaluator-demo/src/main/java/com/fathzer/soft/javaluator/demo/OperatorTableModel.java b/javaluator-demo/src/main/java/com/fathzer/soft/javaluator/demo/OperatorTableModel.java index 373d3ed..3e17590 100644 --- a/javaluator-demo/src/main/java/com/fathzer/soft/javaluator/demo/OperatorTableModel.java +++ b/javaluator-demo/src/main/java/com/fathzer/soft/javaluator/demo/OperatorTableModel.java @@ -3,7 +3,6 @@ import java.util.ArrayList; import java.util.Collection; import java.util.Collections; -import java.util.Comparator; import java.util.List; import javax.swing.table.AbstractTableModel; @@ -15,12 +14,8 @@ public class OperatorTableModel extends AbstractTableModel { private List operators; public OperatorTableModel(Collection collection) { - this.operators = new ArrayList(collection); - Collections.sort(this.operators, new Comparator() { - public int compare(Operator o1, Operator o2) { - return o1.getPrecedence()-o2.getPrecedence(); - } - }); + this.operators = new ArrayList<>(collection); + Collections.sort(this.operators, (o1, o2) -> o1.getPrecedence()-o2.getPrecedence()); } public int getColumnCount() { diff --git a/javaluator-demo/src/main/java/module-info.java b/javaluator-demo/src/main/java/module-info.java new file mode 100644 index 0000000..9508c55 --- /dev/null +++ b/javaluator-demo/src/main/java/module-info.java @@ -0,0 +1,5 @@ +module javaluator.demo { + requires javaluator; + requires java.desktop; + requires ajlib; +} \ No newline at end of file diff --git a/javaluator-examples/pom.xml b/javaluator-examples/pom.xml index b14a6eb..0e7a844 100644 --- a/javaluator-examples/pom.xml +++ b/javaluator-examples/pom.xml @@ -4,11 +4,11 @@ com.fathzer javaluator-parent-pom - 1.0.0 + 1.0.1 javaluator-examples - 3.0.4 + 3.0.5 javaluator-examples Some examples of use of Javaluator. @@ -17,29 +17,7 @@ com.fathzer javaluator - 3.0.4 + 3.0.5 - - - - - org.apache.maven.plugins - maven-install-plugin - 2.5.1 - - true - - - - - org.apache.maven.plugins - maven-deploy-plugin - 2.8.1 - - true - - - - \ No newline at end of file diff --git a/javaluator-examples/src/main/java/com/fathzer/soft/javaluator/examples/TextualOperatorsEvaluator.java b/javaluator-examples/src/main/java/com/fathzer/soft/javaluator/examples/TextualOperatorsEvaluator.java index 38d19c6..b60e7f0 100644 --- a/javaluator-examples/src/main/java/com/fathzer/soft/javaluator/examples/TextualOperatorsEvaluator.java +++ b/javaluator-examples/src/main/java/com/fathzer/soft/javaluator/examples/TextualOperatorsEvaluator.java @@ -67,7 +67,7 @@ protected Iterator tokenize(String expression) { } public static void main(String[] args) { - Map variableToValue = new HashMap(); + Map variableToValue = new HashMap<>(); variableToValue.put("type", "PORT"); AbstractEvaluator evaluator = new TextualOperatorsEvaluator(); System.out.println ("type=PORT -> "+evaluator.evaluate("type=PORT", variableToValue)); diff --git a/javaluator-examples/src/main/java/com/fathzer/soft/javaluator/examples/Variables.java b/javaluator-examples/src/main/java/com/fathzer/soft/javaluator/examples/Variables.java index ce800e6..3f484d5 100644 --- a/javaluator-examples/src/main/java/com/fathzer/soft/javaluator/examples/Variables.java +++ b/javaluator-examples/src/main/java/com/fathzer/soft/javaluator/examples/Variables.java @@ -12,7 +12,7 @@ public static void main(String[] args) { // Create the evaluator final DoubleEvaluator eval = new DoubleEvaluator(); // Create a new empty variable set - final StaticVariableSet variables = new StaticVariableSet(); + final StaticVariableSet variables = new StaticVariableSet<>(); double x = 0; final double step = Math.PI/8; while (x<=Math.PI/2) { diff --git a/javaluator-examples/src/main/java/module-info.java b/javaluator-examples/src/main/java/module-info.java new file mode 100644 index 0000000..79f44c0 --- /dev/null +++ b/javaluator-examples/src/main/java/module-info.java @@ -0,0 +1,4 @@ +module javaluator.examples { + exports com.fathzer.soft.javaluator.examples; + requires javaluator; +} \ No newline at end of file diff --git a/javaluator-examples/src/test/java/com/fathzer/soft/javaluator/examples/junit/ExamplesTest.java b/javaluator-examples/src/test/java/com/fathzer/soft/javaluator/examples/junit/ExamplesTest.java index 6ab2fdc..1a5fa53 100644 --- a/javaluator-examples/src/test/java/com/fathzer/soft/javaluator/examples/junit/ExamplesTest.java +++ b/javaluator-examples/src/test/java/com/fathzer/soft/javaluator/examples/junit/ExamplesTest.java @@ -34,7 +34,7 @@ public void testExtended() { ExtendedDoubleEvaluator evaluator = new ExtendedDoubleEvaluator(); // Test that all this stuff is ok String expression = "sqrt(abs(-2))^2"; - assertEquals(2, evaluator.evaluate(expression), 0.00001);; + assertEquals(2, evaluator.evaluate(expression), 0.00001); } @Test diff --git a/javaluator-examples/test.sh b/javaluator-examples/test.sh new file mode 100644 index 0000000..4ded9fa --- /dev/null +++ b/javaluator-examples/test.sh @@ -0,0 +1,11 @@ +./detectDiff.sh ../../hosting/javaluator/www/en/doc/tutorial ./src/main/java/com/fathzer/soft/javaluator/examples +echo "result diff="$? + +./detectDiff.sh ../../hosting/javaluator/www/en/doc/tutorial ../../hosting/javaluator/www/en/doc/tutorial +echo "result same dir="$? + +./detectDiff.sh ../../hosting/javaluator/www/en/doc/tutorialx ./src/main/java/com/fathzer/soft/javaluator/examples +echo "result missing src dir="$? + +./detectDiff.sh ../../hosting/javaluator/www/en/doc/tutorial ./src/main/java/com/fathzer/soft/javaluator/exampless +echo "result missing dest dir="$? diff --git a/javaluator/pom.xml b/javaluator/pom.xml index 49690c8..97a09e3 100644 --- a/javaluator/pom.xml +++ b/javaluator/pom.xml @@ -5,15 +5,14 @@ com.fathzer javaluator-parent-pom - 1.0.0 + 1.0.1 javaluator - 3.0.4 + 3.0.5 javaluator - Javaluator is a simple, but powerful, infix expression - evaluator for Java. + Javaluator is a simple, but powerful, infix expression evaluator for Java. diff --git a/javaluator/src/main/java/com/fathzer/soft/javaluator/AbstractEvaluator.java b/javaluator/src/main/java/com/fathzer/soft/javaluator/AbstractEvaluator.java index 356102d..587017c 100644 --- a/javaluator/src/main/java/com/fathzer/soft/javaluator/AbstractEvaluator.java +++ b/javaluator/src/main/java/com/fathzer/soft/javaluator/AbstractEvaluator.java @@ -33,18 +33,18 @@ public abstract class AbstractEvaluator { */ protected AbstractEvaluator(Parameters parameters) { //TODO if constants, operators, functions are duplicated => error - final List tokenDelimitersBuilder = new ArrayList(); - this.functions = new HashMap(); - this.operators = new HashMap>(); - this.constants = new HashMap(); - this.functionBrackets = new HashMap(); + final List tokenDelimitersBuilder = new ArrayList<>(); + this.functions = new HashMap<>(); + this.operators = new HashMap<>(); + this.constants = new HashMap<>(); + this.functionBrackets = new HashMap<>(); for (final BracketPair pair : parameters.getFunctionBrackets()) { functionBrackets.put(pair.getOpen(), pair); functionBrackets.put(pair.getClose(), pair); tokenDelimitersBuilder.add(pair.getOpen()); tokenDelimitersBuilder.add(pair.getClose()); } - this.expressionBrackets = new HashMap(); + this.expressionBrackets = new HashMap<>(); for (final BracketPair pair : parameters.getExpressionBrackets()) { expressionBrackets.put(pair.getOpen(), pair); expressionBrackets.put(pair.getClose(), pair); @@ -56,7 +56,7 @@ protected AbstractEvaluator(Parameters parameters) { tokenDelimitersBuilder.add(ope.getSymbol()); List known = this.operators.get(ope.getSymbol()); if (known==null) { - known = new ArrayList(); + known = new ArrayList<>(); this.operators.put(ope.getSymbol(), known); } known.add(ope); @@ -187,7 +187,7 @@ private Iterator getArguments(Deque values, int nb) { if (values.size() result = new LinkedList(); + LinkedList result = new LinkedList<>(); for (int i = 0; i values = new ArrayDeque(); // values stack - final Deque stack = new ArrayDeque(); // operator stack - final Deque previousValuesSize = functions.isEmpty()?null:new ArrayDeque(); + final Deque values = new ArrayDeque<>(); // values stack + final Deque stack = new ArrayDeque<>(); // operator stack + final Deque previousValuesSize = functions.isEmpty()?null:new ArrayDeque<>(); final Iterator tokens = tokenize(expression); Token previous = null; while (tokens.hasNext()) { @@ -395,7 +395,7 @@ private BracketPair getBracketPair(String token) { * @return a collection of operators. */ public Collection getOperators() { - ArrayList result = new ArrayList(); + ArrayList result = new ArrayList<>(); Collection> values = this.operators.values(); for (List list : values) { result.addAll(list); diff --git a/javaluator/src/main/java/com/fathzer/soft/javaluator/DoubleEvaluator.java b/javaluator/src/main/java/com/fathzer/soft/javaluator/DoubleEvaluator.java index a9b1af0..1acee67 100644 --- a/javaluator/src/main/java/com/fathzer/soft/javaluator/DoubleEvaluator.java +++ b/javaluator/src/main/java/com/fathzer/soft/javaluator/DoubleEvaluator.java @@ -144,12 +144,7 @@ public enum Style { private static Parameters defaultParameters; private static final Pattern SCIENTIFIC_NOTATION_PATTERN = Pattern.compile("([+-]?(?:\\d+(?:\\.\\d*)?|\\.\\d+)[eE][+-]?\\d+)$"); - private static final ThreadLocal FORMATTER = new ThreadLocal() { - @Override - protected NumberFormat initialValue() { - return NumberFormat.getNumberInstance(Locale.US); - } - }; + private static final ThreadLocal FORMATTER = ThreadLocal.withInitial(() -> NumberFormat.getNumberInstance(Locale.US)); /** Gets a copy of DoubleEvaluator standard default parameters. *
The returned parameters contains all the predefined operators, functions and constants. @@ -219,7 +214,7 @@ protected Iterator tokenize(String expression) { if (supportsScientificNotation) { // There's a trap with scientific number notation (1E+50 for example): // + is considered as an operator. We'll make a basic work around... - final List tokens = new ArrayList(); + final List tokens = new ArrayList<>(); final Iterator rawTokens = super.tokenize(expression); while (rawTokens.hasNext()) { tokens.add(rawTokens.next()); diff --git a/javaluator/src/main/java/com/fathzer/soft/javaluator/Parameters.java b/javaluator/src/main/java/com/fathzer/soft/javaluator/Parameters.java index 3877130..fcd6e27 100644 --- a/javaluator/src/main/java/com/fathzer/soft/javaluator/Parameters.java +++ b/javaluator/src/main/java/com/fathzer/soft/javaluator/Parameters.java @@ -25,12 +25,12 @@ public class Parameters { *
Function argument separator is set to ','. */ public Parameters() { - this.operators = new ArrayList(); - this.functions = new ArrayList(); - this.constants = new ArrayList(); - this.translations = new HashMap(); - this.expressionBrackets = new ArrayList(); - this.functionBrackets = new ArrayList(); + this.operators = new ArrayList<>(); + this.functions = new ArrayList<>(); + this.constants = new ArrayList<>(); + this.translations = new HashMap<>(); + this.expressionBrackets = new ArrayList<>(); + this.functionBrackets = new ArrayList<>(); setFunctionArgumentSeparator(','); } diff --git a/javaluator/src/main/java/com/fathzer/soft/javaluator/StaticVariableSet.java b/javaluator/src/main/java/com/fathzer/soft/javaluator/StaticVariableSet.java index 1d84134..0a79b6e 100644 --- a/javaluator/src/main/java/com/fathzer/soft/javaluator/StaticVariableSet.java +++ b/javaluator/src/main/java/com/fathzer/soft/javaluator/StaticVariableSet.java @@ -16,7 +16,7 @@ public class StaticVariableSet implements AbstractVariableSet { *
Builds a new empty variable set. */ public StaticVariableSet() { - this.varToValue = new HashMap(); + this.varToValue = new HashMap<>(); } /** Gets the value of a variable. diff --git a/javaluator/src/main/java/com/fathzer/soft/javaluator/Tokenizer.java b/javaluator/src/main/java/com/fathzer/soft/javaluator/Tokenizer.java index a74fe07..f3e01f1 100644 --- a/javaluator/src/main/java/com/fathzer/soft/javaluator/Tokenizer.java +++ b/javaluator/src/main/java/com/fathzer/soft/javaluator/Tokenizer.java @@ -2,7 +2,6 @@ import java.util.ArrayList; import java.util.Collections; -import java.util.Comparator; import java.util.Iterator; import java.util.List; import java.util.NoSuchElementException; @@ -70,12 +69,7 @@ private static Pattern delimitersToRegexp(List delimiters) { // the longer may be before the shorter (&& should be before &) or the regexpr // parser will recognize && as two &. //TODO Create a test to verify that operators that includes others are working - Collections.sort(delimiters, new Comparator() { - @Override - public int compare(String o1, String o2) { - return o2.compareTo(o1); - } - }); + Collections.sort(delimiters, (o1, o2) -> o2.compareTo(o1)); // Build a string that will contain the regular expression StringBuilder result = new StringBuilder(); result.append('('); @@ -108,7 +102,7 @@ private void addToTokens (List tokens, String token) { */ public Iterator tokenize(String string) { if (pattern!=null) { - List res = new ArrayList(); + List res = new ArrayList<>(); Matcher m = pattern.matcher(string); int pos = 0; while (m.find()) { diff --git a/javaluator/src/main/java/module-info.java b/javaluator/src/main/java/module-info.java new file mode 100644 index 0000000..257aa50 --- /dev/null +++ b/javaluator/src/main/java/module-info.java @@ -0,0 +1,3 @@ +module javaluator { + exports com.fathzer.soft.javaluator; +} \ No newline at end of file diff --git a/javaluator/src/test/java/com/fathzer/soft/javaluator/junit/BracketsTest.java b/javaluator/src/test/java/com/fathzer/soft/javaluator/junit/BracketsTest.java index 4343fc6..43f0717 100644 --- a/javaluator/src/test/java/com/fathzer/soft/javaluator/junit/BracketsTest.java +++ b/javaluator/src/test/java/com/fathzer/soft/javaluator/junit/BracketsTest.java @@ -26,8 +26,7 @@ private DoubleEvaluator buildEvaluator() { params.addExpressionBracket(BracketPair.PARENTHESES); params.addExpressionBracket(BracketPair.BRACKETS); params.addFunctionBracket(BracketPair.ANGLES); - DoubleEvaluator eval = new DoubleEvaluator(params); - return eval; + return new DoubleEvaluator(params); } @Test (expected=IllegalArgumentException.class) diff --git a/pom.xml b/pom.xml index a21a8b6..9793e44 100644 --- a/pom.xml +++ b/pom.xml @@ -8,7 +8,7 @@ 1.0.8 javaluator-parent-pom - 1.0.0 + 1.0.1 pom javaluator-parent @@ -22,9 +22,7 @@ UTF-8 - java16 - 1.6 - 1.6 + java18 @@ -43,21 +41,22 @@ fathzer https://sonarcloud.io - e1,e2,e3 + e1,e3 java:S106 - javaluator-examples/**/* - - java:S2293 - **/* - + + javaluator-examples/**/* + java:S1948 - javaluator-demo/**/* + + javaluator-demo/**/* javaluator-demo/** - + javaluator-examples/**/*.java - 1.7 - 1.7 + 11 + 11 true
@@ -88,11 +87,57 @@ + + + + org.apache.maven.plugins + maven-surefire-plugin + 3.2.5 + + + org.codehaus.mojo animal-sniffer-maven-plugin + + org.apache.maven.plugins + maven-compiler-plugin + + + default-compile + + 11 + + + + + base-compile + + compile + + + + + module-info.java + + + + + + + 8 + + + 21 + + +