From 666834432d4549adaca1547ee0142294a066dbb5 Mon Sep 17 00:00:00 2001 From: Bo Zhang Date: Thu, 16 Jan 2020 10:30:40 +0800 Subject: [PATCH] Refine some code --- src/main/java/groovy/grape/Grape.java | 6 ++--- .../java/groovy/lang/GroovyClassLoader.java | 7 +++-- src/main/java/groovy/lang/MetaClassImpl.java | 6 ++--- src/main/java/groovy/lang/NumberRange.java | 21 ++++++++------- .../transform/stc/MapEntryOrKeyValue.java | 2 +- src/main/java/groovy/util/Node.java | 2 +- .../ast/tools/ImmutablePropertyUtils.java | 2 +- .../groovy/internal/util/UncheckedThrow.java | 2 +- .../java/org/apache/groovy/util/Maps.java | 2 +- .../ConcurrentLinkedHashMap.java | 6 ++--- .../concurrentlinkedhashmap/Weighers.java | 2 +- .../groovy/antlr/AntlrParserPlugin.java | 8 +++--- .../groovy/antlr/GroovySourceAST.java | 8 +----- .../antlr/treewalker/CompositeVisitor.java | 2 +- .../groovy/classgen/BytecodeSequence.java | 2 +- .../groovy/classgen/DummyClassGenerator.java | 2 +- .../asm/OptimizingStatementWriter.java | 2 +- .../customizers/SecureASTCustomizer.java | 12 ++++++--- .../groovy/runtime/DefaultGroovyMethods.java | 27 +++++++++---------- .../groovy/runtime/MetaClassHelper.java | 17 ++++++------ .../callsite/ConstructorMetaClassSite.java | 2 +- .../DefaultTypeTransformation.java | 2 +- .../transform/ASTTransformationVisitor.java | 1 - .../BinaryExpressionTransformer.java | 2 +- .../ConstructorCallTransformer.java | 2 +- .../groovy/transform/trait/TraitComposer.java | 2 +- .../util/AbstractConcurrentMapBase.java | 4 +-- .../v8/PluginDefaultGroovyMethods.java | 8 +++--- 28 files changed, 78 insertions(+), 83 deletions(-) diff --git a/src/main/java/groovy/grape/Grape.java b/src/main/java/groovy/grape/Grape.java index 4b2f22dc1d9..a8dcc88a58d 100644 --- a/src/main/java/groovy/grape/Grape.java +++ b/src/main/java/groovy/grape/Grape.java @@ -37,9 +37,9 @@ public class Grape { private static final URI[] EMPTY_URI_ARRAY = new URI[0]; private static final Map[] EMPTY_MAP_ARRAY = new Map[0]; - private static boolean enableGrapes = Boolean.valueOf(System.getProperty("groovy.grape.enable", "true")); - private static boolean enableAutoDownload = Boolean.valueOf(System.getProperty("groovy.grape.autoDownload", "true")); - private static boolean disableChecksums = Boolean.valueOf(System.getProperty("groovy.grape.disableChecksums", "false")); + private static boolean enableGrapes = Boolean.parseBoolean(System.getProperty("groovy.grape.enable", "true")); + private static boolean enableAutoDownload = Boolean.parseBoolean(System.getProperty("groovy.grape.autoDownload", "true")); + private static boolean disableChecksums = Boolean.parseBoolean(System.getProperty("groovy.grape.disableChecksums", "false")); protected static GrapeEngine instance; /** diff --git a/src/main/java/groovy/lang/GroovyClassLoader.java b/src/main/java/groovy/lang/GroovyClassLoader.java index e4c8aaee0c4..e5c1649d5be 100644 --- a/src/main/java/groovy/lang/GroovyClassLoader.java +++ b/src/main/java/groovy/lang/GroovyClassLoader.java @@ -677,7 +677,7 @@ protected Class createClass(byte[] code, ClassNode classNode) { SourceUnit msu = null; if (mn != null) msu = mn.getContext(); ClassNode main = null; - if (mn != null) main = (ClassNode) mn.getClasses().get(0); + if (mn != null) main = mn.getClasses().get(0); if (msu == su && main == classNode) generatedClass = theClass; } @@ -788,8 +788,7 @@ protected boolean isRecompilable(Class cls) { if (recompile != null && !recompile) return false; if (!GroovyObject.class.isAssignableFrom(cls)) return false; long timestamp = getTimeStamp(cls); - if (timestamp == Long.MAX_VALUE) return false; - return true; + return timestamp != Long.MAX_VALUE; } /** @@ -1176,7 +1175,7 @@ protected void addTimeStamp(ClassNode node) { node.addField(timeTagField); timeTagField = new FieldNode( - Verifier.__TIMESTAMP__ + String.valueOf(System.currentTimeMillis()), + Verifier.__TIMESTAMP__ + System.currentTimeMillis(), ACC_PUBLIC | ACC_STATIC | ACC_SYNTHETIC, ClassHelper.long_TYPE, //"", diff --git a/src/main/java/groovy/lang/MetaClassImpl.java b/src/main/java/groovy/lang/MetaClassImpl.java index 1484ac3de35..7bd3adbb8b5 100644 --- a/src/main/java/groovy/lang/MetaClassImpl.java +++ b/src/main/java/groovy/lang/MetaClassImpl.java @@ -1027,11 +1027,11 @@ public Object invokeMethod(Object object, String methodName, Object[] originalAr return invokeMethod(theClass, object, methodName, originalArguments, false, false); } - private Object invokeMethodClosure(Object object, String methodName, Object[] arguments) { + private Object invokeMethodClosure(Object object, Object[] arguments) { final MethodClosure mc = (MethodClosure) object; final Object owner = mc.getOwner(); - methodName = mc.getMethod(); + String methodName = mc.getMethod(); final Class ownerClass = owner instanceof Class ? (Class) owner : owner.getClass(); final MetaClass ownerMetaClass = registry.getMetaClass(ownerClass); @@ -1131,7 +1131,7 @@ public Object invokeMethod(Class sender, Object object, String methodName, Objec if (CLOSURE_CALL_METHOD.equals(methodName) || CLOSURE_DO_CALL_METHOD.equals(methodName)) { final Class objectClass = object.getClass(); if (objectClass == MethodClosure.class) { - return this.invokeMethodClosure(object, methodName, arguments); + return this.invokeMethodClosure(object, arguments); } else if (objectClass == CurriedClosure.class) { final CurriedClosure cc = (CurriedClosure) object; // change the arguments for an uncurried call diff --git a/src/main/java/groovy/lang/NumberRange.java b/src/main/java/groovy/lang/NumberRange.java index 3e1c6e3a796..d1884c68eca 100644 --- a/src/main/java/groovy/lang/NumberRange.java +++ b/src/main/java/groovy/lang/NumberRange.java @@ -24,6 +24,7 @@ import java.io.Serializable; import java.math.BigDecimal; import java.math.BigInteger; +import java.math.RoundingMode; import java.util.AbstractList; import java.util.Iterator; import java.util.List; @@ -94,7 +95,7 @@ public class NumberRange extends AbstractList implements Range + public NumberRange(T from, U to) { this(from, to, null, true); } @@ -107,7 +108,7 @@ public class NumberRange extends AbstractList implements Range + public NumberRange(T from, U to, boolean inclusive) { this(from, to, null, inclusive); } @@ -120,7 +121,7 @@ public class NumberRange extends AbstractList implements Range> NumberRange(T from, U to, V stepSize) { this(from, to, stepSize, true); @@ -135,8 +136,8 @@ public class NumberRange extends AbstractList implements Range + public NumberRange(T from, U to, V stepSize, boolean inclusive) { if (from == null) { throw new IllegalArgumentException("Must specify a non-null value for the 'from' index in a Range"); @@ -185,7 +186,7 @@ public class NumberRange extends AbstractList implements Range NumberRange by(T stepSize) { + public NumberRange by(T stepSize) { if (!Integer.valueOf(1).equals(this.stepSize)) { throw new IllegalStateException("by only allowed on ranges with original stepSize = 1 but found " + this.stepSize); } @@ -193,12 +194,12 @@ public NumberRange by(T stepSize) { } @SuppressWarnings("unchecked") - /* package private */ static T comparableNumber(Comparable c) { + /* package private */ static T comparableNumber(Comparable c) { return (T) c; } @SuppressWarnings("unchecked") - /* package private */ static T comparableNumber(Number n) { + /* package private */ static T comparableNumber(Number n) { return (T) n; } @@ -402,7 +403,7 @@ void calcSize(Comparable from, Comparable to, Number stepSize) { final BigInteger fromNum = new BigInteger(from.toString()); final BigInteger toTemp = new BigInteger(to.toString()); final BigInteger toNum = inclusive ? toTemp : toTemp.subtract(BigInteger.ONE); - final BigInteger sizeNum = new BigDecimal(toNum.subtract(fromNum)).divide(new BigDecimal(stepSize.longValue()), BigDecimal.ROUND_DOWN).toBigInteger().add(BigInteger.ONE); + final BigInteger sizeNum = new BigDecimal(toNum.subtract(fromNum)).divide(new BigDecimal(stepSize.longValue()), RoundingMode.DOWN).toBigInteger().add(BigInteger.ONE); tempsize = sizeNum.compareTo(BigInteger.valueOf(Integer.MAX_VALUE)) < 0 ? sizeNum.intValue() : Integer.MAX_VALUE; shortcut = true; } else if (((from instanceof BigDecimal || from instanceof BigInteger) && to instanceof Number) || @@ -411,7 +412,7 @@ void calcSize(Comparable from, Comparable to, Number stepSize) { final BigDecimal fromNum = new BigDecimal(from.toString()); final BigDecimal toTemp = new BigDecimal(to.toString()); final BigDecimal toNum = inclusive ? toTemp : toTemp.subtract(new BigDecimal("1.0")); - final BigInteger sizeNum = toNum.subtract(fromNum).divide(new BigDecimal(stepSize.longValue()), BigDecimal.ROUND_DOWN).toBigInteger().add(BigInteger.ONE); + final BigInteger sizeNum = toNum.subtract(fromNum).divide(new BigDecimal(stepSize.longValue()), RoundingMode.DOWN).toBigInteger().add(BigInteger.ONE); tempsize = sizeNum.compareTo(BigInteger.valueOf(Integer.MAX_VALUE)) < 0 ? sizeNum.intValue() : Integer.MAX_VALUE; shortcut = true; } diff --git a/src/main/java/groovy/transform/stc/MapEntryOrKeyValue.java b/src/main/java/groovy/transform/stc/MapEntryOrKeyValue.java index a53d14e8459..b24a209c90d 100644 --- a/src/main/java/groovy/transform/stc/MapEntryOrKeyValue.java +++ b/src/main/java/groovy/transform/stc/MapEntryOrKeyValue.java @@ -105,7 +105,7 @@ static Options parse(MethodNode mn, ASTNode source, String[] options) throws Inc if ("argNum".equals(key)) { pIndex = Integer.parseInt(value); } else if ("index".equals(key)) { - generateIndex = Boolean.valueOf(value); + generateIndex = Boolean.parseBoolean(value); } else { throw new IncorrectTypeHintException(mn, "Unrecognized option: "+key, source.getLineNumber(), source.getColumnNumber()); } diff --git a/src/main/java/groovy/util/Node.java b/src/main/java/groovy/util/Node.java index 2adc8ea6549..5576d57ce03 100644 --- a/src/main/java/groovy/util/Node.java +++ b/src/main/java/groovy/util/Node.java @@ -607,7 +607,7 @@ public void depthFirst(Closure c) { * @since 2.5.0 */ public void depthFirst(Map options, Closure c) { - boolean preorder = Boolean.valueOf(options.get("preorder").toString()); + boolean preorder = Boolean.parseBoolean(options.get("preorder").toString()); if (preorder) callClosureForNode(c, this, 1); depthFirstRest(preorder, 2, c); if (!preorder) callClosureForNode(c, this, 1); diff --git a/src/main/java/org/apache/groovy/ast/tools/ImmutablePropertyUtils.java b/src/main/java/org/apache/groovy/ast/tools/ImmutablePropertyUtils.java index c04c545ecdc..7ee64a626d7 100644 --- a/src/main/java/org/apache/groovy/ast/tools/ImmutablePropertyUtils.java +++ b/src/main/java/org/apache/groovy/ast/tools/ImmutablePropertyUtils.java @@ -127,7 +127,7 @@ public static Expression cloneArrayOrCloneableExpr(Expression fieldExpr, ClassNo args( fieldExpr, constX("clone"), - new ArrayExpression(ClassHelper.OBJECT_TYPE.makeArray(), Collections.emptyList()) + new ArrayExpression(ClassHelper.OBJECT_TYPE.makeArray(), Collections.emptyList()) ) ); return castX(type, smce); diff --git a/src/main/java/org/apache/groovy/internal/util/UncheckedThrow.java b/src/main/java/org/apache/groovy/internal/util/UncheckedThrow.java index 7f6cc8aaabc..23348d38fd0 100644 --- a/src/main/java/org/apache/groovy/internal/util/UncheckedThrow.java +++ b/src/main/java/org/apache/groovy/internal/util/UncheckedThrow.java @@ -28,7 +28,7 @@ @Incubating public class UncheckedThrow { public static void rethrow( final Throwable checkedException ) { - UncheckedThrow.thrownInsteadOf( checkedException ); + UncheckedThrow.thrownInsteadOf( checkedException ); } @SuppressWarnings("unchecked") private static void thrownInsteadOf(Throwable t) throws T { diff --git a/src/main/java/org/apache/groovy/util/Maps.java b/src/main/java/org/apache/groovy/util/Maps.java index e145fddc89e..164dbb16844 100644 --- a/src/main/java/org/apache/groovy/util/Maps.java +++ b/src/main/java/org/apache/groovy/util/Maps.java @@ -5815,7 +5815,7 @@ public static Map inverse(Map map, boolean force) { resultMap.put(value, entry.getKey()); } - return Collections.unmodifiableMap(resultMap); + return Collections.unmodifiableMap(resultMap); } private Maps() {} diff --git a/src/main/java/org/apache/groovy/util/concurrent/concurrentlinkedhashmap/ConcurrentLinkedHashMap.java b/src/main/java/org/apache/groovy/util/concurrent/concurrentlinkedhashmap/ConcurrentLinkedHashMap.java index db1c6c24aa5..ee59e1e0a4a 100644 --- a/src/main/java/org/apache/groovy/util/concurrent/concurrentlinkedhashmap/ConcurrentLinkedHashMap.java +++ b/src/main/java/org/apache/groovy/util/concurrent/concurrentlinkedhashmap/ConcurrentLinkedHashMap.java @@ -1665,7 +1665,7 @@ public Builder listener(EvictionListener listener) { */ public Builder weigher(Weigher weigher) { this.weigher = (weigher == org.apache.groovy.util.concurrent.concurrentlinkedhashmap.Weighers.singleton()) - ? org.apache.groovy.util.concurrent.concurrentlinkedhashmap.Weighers.entrySingleton() + ? org.apache.groovy.util.concurrent.concurrentlinkedhashmap.Weighers.entrySingleton() : new BoundedEntryWeigher(org.apache.groovy.util.concurrent.concurrentlinkedhashmap.Weighers.asEntryWeigher(weigher)); return this; } @@ -1680,8 +1680,8 @@ public Builder weigher(Weigher weigher) { */ public Builder weigher(EntryWeigher weigher) { this.weigher = (weigher == org.apache.groovy.util.concurrent.concurrentlinkedhashmap.Weighers.entrySingleton()) - ? Weighers.entrySingleton() - : new BoundedEntryWeigher(weigher); + ? Weighers.entrySingleton() + : new BoundedEntryWeigher<>(weigher); return this; } diff --git a/src/main/java/org/apache/groovy/util/concurrent/concurrentlinkedhashmap/Weighers.java b/src/main/java/org/apache/groovy/util/concurrent/concurrentlinkedhashmap/Weighers.java index 10c2fa184ff..ea2bd542827 100644 --- a/src/main/java/org/apache/groovy/util/concurrent/concurrentlinkedhashmap/Weighers.java +++ b/src/main/java/org/apache/groovy/util/concurrent/concurrentlinkedhashmap/Weighers.java @@ -43,7 +43,7 @@ private Weighers() { public static EntryWeigher asEntryWeigher( final org.apache.groovy.util.concurrent.concurrentlinkedhashmap.Weigher weigher) { return (weigher == singleton()) - ? Weighers.entrySingleton() + ? Weighers.entrySingleton() : new EntryWeigherView(weigher); } diff --git a/src/main/java/org/codehaus/groovy/antlr/AntlrParserPlugin.java b/src/main/java/org/codehaus/groovy/antlr/AntlrParserPlugin.java index f02b6807372..4be83329edf 100644 --- a/src/main/java/org/codehaus/groovy/antlr/AntlrParserPlugin.java +++ b/src/main/java/org/codehaus/groovy/antlr/AntlrParserPlugin.java @@ -2361,14 +2361,14 @@ protected Expression binaryExpression(int type, AST node) { } else if (leftExpression instanceof BinaryExpression) { int lefttype = ((BinaryExpression) leftExpression).getOperation().getType(); if (!Types.ofType(lefttype, Types.ASSIGNMENT_OPERATOR) && lefttype != Types.LEFT_SQUARE_BRACKET) { - throw new ASTRuntimeException(node, "\n" + ((BinaryExpression) leftExpression).getText() + " is a binary expression, but it should be a variable expression"); + throw new ASTRuntimeException(node, "\n" + leftExpression.getText() + " is a binary expression, but it should be a variable expression"); } } else if (leftExpression instanceof GStringExpression) { - throw new ASTRuntimeException(node, "\n\"" + ((GStringExpression) leftExpression).getText() + "\" is a GString expression, but it should be a variable expression"); + throw new ASTRuntimeException(node, "\n\"" + leftExpression.getText() + "\" is a GString expression, but it should be a variable expression"); } else if (leftExpression instanceof MethodCallExpression) { - throw new ASTRuntimeException(node, "\n\"" + ((MethodCallExpression) leftExpression).getText() + "\" is a method call expression, but it should be a variable expression"); + throw new ASTRuntimeException(node, "\n\"" + leftExpression.getText() + "\" is a method call expression, but it should be a variable expression"); } else if (leftExpression instanceof MapExpression) { - throw new ASTRuntimeException(node, "\n'" + ((MapExpression) leftExpression).getText() + "' is a map expression, but it should be a variable expression"); + throw new ASTRuntimeException(node, "\n'" + leftExpression.getText() + "' is a map expression, but it should be a variable expression"); } else { throw new ASTRuntimeException(node, "\n" + leftExpression.getClass() + ", with its value '" + leftExpression.getText() + "', is a bad expression as the left hand side of an assignment operator"); } diff --git a/src/main/java/org/codehaus/groovy/antlr/GroovySourceAST.java b/src/main/java/org/codehaus/groovy/antlr/GroovySourceAST.java index 1f0d8b58972..ae5740973c2 100644 --- a/src/main/java/org/codehaus/groovy/antlr/GroovySourceAST.java +++ b/src/main/java/org/codehaus/groovy/antlr/GroovySourceAST.java @@ -129,14 +129,8 @@ public int compareTo(Object object) { return 1; } - if (this.getColumn() < that.getColumn()) { - return -1; - } - if (this.getColumn() > that.getColumn()) { - return 1; - } + return Integer.compare(this.getColumn(), that.getColumn()); - return 0; } public GroovySourceAST childAt(int position) { diff --git a/src/main/java/org/codehaus/groovy/antlr/treewalker/CompositeVisitor.java b/src/main/java/org/codehaus/groovy/antlr/treewalker/CompositeVisitor.java index 87e242fc965..b5b8d6c56da 100644 --- a/src/main/java/org/codehaus/groovy/antlr/treewalker/CompositeVisitor.java +++ b/src/main/java/org/codehaus/groovy/antlr/treewalker/CompositeVisitor.java @@ -1174,7 +1174,7 @@ public void push(GroovySourceAST t) { public GroovySourceAST pop() { GroovySourceAST lastNodePopped = null; for (Object backToFrontVisitor : backToFrontVisitors) { - lastNodePopped = (GroovySourceAST) ((Visitor) backToFrontVisitor).pop(); + lastNodePopped = ((Visitor) backToFrontVisitor).pop(); } return lastNodePopped; } diff --git a/src/main/java/org/codehaus/groovy/classgen/BytecodeSequence.java b/src/main/java/org/codehaus/groovy/classgen/BytecodeSequence.java index b70b8553c76..6efe9fa3a36 100644 --- a/src/main/java/org/codehaus/groovy/classgen/BytecodeSequence.java +++ b/src/main/java/org/codehaus/groovy/classgen/BytecodeSequence.java @@ -66,7 +66,7 @@ public void visit(GroovyCodeVisitor visitor) { return; } for (BytecodeInstruction instruction : instructions) { - Object part = (Object) instruction; + Object part = instruction; if (part instanceof ASTNode) { ((ASTNode) part).visit(visitor); } diff --git a/src/main/java/org/codehaus/groovy/classgen/DummyClassGenerator.java b/src/main/java/org/codehaus/groovy/classgen/DummyClassGenerator.java index 8b7e05d3089..f6c71ddf879 100644 --- a/src/main/java/org/codehaus/groovy/classgen/DummyClassGenerator.java +++ b/src/main/java/org/codehaus/groovy/classgen/DummyClassGenerator.java @@ -75,7 +75,7 @@ public void visitClass(ClassNode classNode) { Opcodes.V1_3, classNode.getModifiers(), internalClassName, - (String) null, + null, internalBaseClassName, BytecodeHelper.getClassInternalNames(classNode.getInterfaces()) ); diff --git a/src/main/java/org/codehaus/groovy/classgen/asm/OptimizingStatementWriter.java b/src/main/java/org/codehaus/groovy/classgen/asm/OptimizingStatementWriter.java index 4377263dc05..f394ebb4571 100644 --- a/src/main/java/org/codehaus/groovy/classgen/asm/OptimizingStatementWriter.java +++ b/src/main/java/org/codehaus/groovy/classgen/asm/OptimizingStatementWriter.java @@ -506,7 +506,7 @@ public void pop(final boolean propagateFlags) { public String toString() { StringBuilder ret = new StringBuilder(); if (current.shouldOptimize) { - ret.append("should optimize, can = " + current.canOptimize); + ret.append("should optimize, can = ").append(current.canOptimize); } else if (current.canOptimize) { ret.append("can optimize"); } else { diff --git a/src/main/java/org/codehaus/groovy/control/customizers/SecureASTCustomizer.java b/src/main/java/org/codehaus/groovy/control/customizers/SecureASTCustomizer.java index 0a743ba6e61..ce899de73e9 100644 --- a/src/main/java/org/codehaus/groovy/control/customizers/SecureASTCustomizer.java +++ b/src/main/java/org/codehaus/groovy/control/customizers/SecureASTCustomizer.java @@ -668,7 +668,7 @@ protected void assertImportIsAllowed(final String className) { return; } if (starImportsWhitelist != null) { - String packageName = className.substring(0, className.lastIndexOf('.') + 1) + "*"; + String packageName = getWildCardImport(className); if (starImportsWhitelist.contains(packageName) || starImportsWhitelist.stream().filter(it -> it.endsWith(".")).anyMatch(packageName::startsWith)) { return; @@ -680,7 +680,7 @@ protected void assertImportIsAllowed(final String className) { throw new SecurityException("Importing [" + className + "] is not allowed"); } if (starImportsBlacklist != null) { - String packageName = className.substring(0, className.lastIndexOf('.') + 1) + "*"; + String packageName = getWildCardImport(className); if (starImportsBlacklist.contains(packageName) || starImportsBlacklist.stream().filter(it -> it.endsWith(".")).anyMatch(packageName::startsWith)) { throw new SecurityException("Importing [" + className + "] is not allowed"); @@ -689,12 +689,16 @@ protected void assertImportIsAllowed(final String className) { } } + private String getWildCardImport(String className) { + return className.substring(0, className.lastIndexOf('.') + 1) + "*"; + } + protected void assertStaticImportIsAllowed(final String member, final String className) { final String fqn = member.equals(className) ? member : className + "." + member; if (staticImportsWhitelist != null && !staticImportsWhitelist.contains(fqn)) { if (staticStarImportsWhitelist != null) { // we should now check if the import is in the star imports - String packageName = className.substring(0, className.lastIndexOf('.') + 1) + "*"; + String packageName = getWildCardImport(className); if (!staticStarImportsWhitelist.contains(className + ".*") && !staticStarImportsWhitelist.stream().filter(it -> it.endsWith(".")).anyMatch(packageName::startsWith)) { throw new SecurityException("Importing [" + fqn + "] is not allowed"); @@ -708,7 +712,7 @@ protected void assertStaticImportIsAllowed(final String member, final String cla } // check that there's no star import blacklist if (staticStarImportsBlacklist != null) { - String packageName = className.substring(0, className.lastIndexOf('.') + 1) + "*"; + String packageName = getWildCardImport(className); if (staticStarImportsBlacklist.contains(className + ".*") || staticStarImportsBlacklist.stream().filter(it -> it.endsWith(".")).anyMatch(packageName::startsWith)) { throw new SecurityException("Importing [" + fqn + "] is not allowed"); diff --git a/src/main/java/org/codehaus/groovy/runtime/DefaultGroovyMethods.java b/src/main/java/org/codehaus/groovy/runtime/DefaultGroovyMethods.java index b398ba78b06..1d91adaf236 100644 --- a/src/main/java/org/codehaus/groovy/runtime/DefaultGroovyMethods.java +++ b/src/main/java/org/codehaus/groovy/runtime/DefaultGroovyMethods.java @@ -3635,7 +3635,7 @@ public static List collect(Iterable self) { * @since 2.5.0 */ public static List collect(Iterable self, @ClosureParams(FirstParam.FirstGenericType.class) Closure transform) { - return (List) collect(self.iterator(), transform); + return collect(self.iterator(), transform); } /** @@ -6274,7 +6274,7 @@ public static int sum(int[] self) { * @since 2.4.2 */ public static long sum(long[] self) { - return sum(self, (long) 0); + return sum(self, 0); } /** @@ -6310,7 +6310,7 @@ public static float sum(float[] self) { * @since 2.4.2 */ public static double sum(double[] self) { - return sum(self, (double) 0); + return sum(self, 0); } /** @@ -9342,7 +9342,7 @@ public static Iterator sort(Iterator self) { * @since 1.5.5 */ public static Iterator sort(Iterator self, Comparator comparator) { - return sort((Iterable) toList(self), true, comparator).listIterator(); + return sort(toList(self), true, comparator).listIterator(); } /** @@ -10534,7 +10534,7 @@ public static T[] take(T[] self, int num) { * @since 1.8.7 */ public static Collection take(Iterable self, int num) { - Collection result = self instanceof Collection ? createSimilarCollection((Collection) self, num < 0 ? 0 : num) : new ArrayList(); + Collection result = self instanceof Collection ? createSimilarCollection((Collection) self, Math.max(num, 0)) : new ArrayList(); addAll(result, take(self.iterator(), num)); return result; } @@ -12015,7 +12015,7 @@ public static T asType(Closure cl, Class clazz) { Method samMethod = CachedSAMClass.getSAMMethod(clazz); if (samMethod!=null) { Map impl = Collections.singletonMap(samMethod.getName(),cl); - return (T) ProxyGenerator.INSTANCE.instantiateAggregate(impl, Collections.singletonList(clazz)); + return (T) ProxyGenerator.INSTANCE.instantiateAggregate(impl, Collections.singletonList(clazz)); } } return (T) Proxy.newProxyInstance( @@ -12346,7 +12346,7 @@ public static Iterator reverse(Iterator self) { */ @SuppressWarnings("unchecked") public static T[] plus(T[] left, T[] right) { - return (T[]) plus((List) toList(left), (Collection) toList(right)).toArray(); + return (T[]) plus((List) toList(left), toList(right)).toArray(); } /** @@ -12382,7 +12382,7 @@ public static T[] plus(T[] left, T right) { */ @SuppressWarnings("unchecked") public static T[] plus(T[] left, Collection right) { - return (T[]) plus((List) toList(left), (Collection) right).toArray(); + return (T[]) plus((List) toList(left), right).toArray(); } /** @@ -12404,7 +12404,7 @@ public static T[] plus(T[] left, Collection right) { */ @SuppressWarnings("unchecked") public static T[] plus(T[] left, Iterable right) { - return (T[]) plus((List) toList(left), (Collection) toList(right)).toArray(); + return (T[]) plus((List) toList(left), toList(right)).toArray(); } /** @@ -13003,7 +13003,7 @@ public static boolean disjoint(Iterable left, Iterable right) { */ @Deprecated public static boolean disjoint(Collection left, Collection right) { - return disjoint((Iterable) left, (Iterable) right); + return disjoint(left, right); } /** @@ -17884,15 +17884,12 @@ public static Iterator iterator(Object o) { */ public static Iterator iterator(final Enumeration enumeration) { return new Iterator() { - private T last; - public boolean hasNext() { return enumeration.hasMoreElements(); } public T next() { - last = enumeration.nextElement(); - return last; + return enumeration.nextElement(); } public void remove() { @@ -18290,7 +18287,7 @@ public static boolean removeElement(Collection self, Object o) { * @since 2.6.0 */ public static groovy.lang.groovydoc.Groovydoc getGroovydoc(AnnotatedElement holder) { - Groovydoc groovydocAnnotation = holder.getAnnotation(Groovydoc.class); + Groovydoc groovydocAnnotation = holder.getAnnotation(Groovydoc.class); return null == groovydocAnnotation ? EMPTY_GROOVYDOC diff --git a/src/main/java/org/codehaus/groovy/runtime/MetaClassHelper.java b/src/main/java/org/codehaus/groovy/runtime/MetaClassHelper.java index 55888bd4d31..8649052d80f 100644 --- a/src/main/java/org/codehaus/groovy/runtime/MetaClassHelper.java +++ b/src/main/java/org/codehaus/groovy/runtime/MetaClassHelper.java @@ -744,10 +744,7 @@ public static boolean isAssignableFrom(Class classToTransformTo, Class classToTr || classToTransformFrom == BigInteger.class) return true; } else if (classToTransformTo == BigInteger.class) { - if (classToTransformFrom == Integer.class - || classToTransformFrom == Long.class - || classToTransformFrom == Short.class - || classToTransformFrom == Byte.class) + if (isIntegerLongShortByte(classToTransformFrom)) return true; } else if (classToTransformTo == Long.class) { if (classToTransformFrom == Integer.class @@ -755,10 +752,7 @@ public static boolean isAssignableFrom(Class classToTransformTo, Class classToTr || classToTransformFrom == Byte.class) return true; } else if (classToTransformTo == Float.class) { - if (classToTransformFrom == Integer.class - || classToTransformFrom == Long.class - || classToTransformFrom == Short.class - || classToTransformFrom == Byte.class) + if (isIntegerLongShortByte(classToTransformFrom)) return true; } else if (classToTransformTo == Short.class) { if (classToTransformFrom == Byte.class) @@ -772,6 +766,13 @@ public static boolean isAssignableFrom(Class classToTransformTo, Class classToTr return ReflectionCache.isAssignableFrom(classToTransformTo, classToTransformFrom); } + private static boolean isIntegerLongShortByte(Class classToTransformFrom) { + return classToTransformFrom == Integer.class + || classToTransformFrom == Long.class + || classToTransformFrom == Short.class + || classToTransformFrom == Byte.class; + } + public static boolean isGenericSetMethod(MetaMethod method) { return (method.getName().equals("set")) && method.getParameterTypes().length == 2; diff --git a/src/main/java/org/codehaus/groovy/runtime/callsite/ConstructorMetaClassSite.java b/src/main/java/org/codehaus/groovy/runtime/callsite/ConstructorMetaClassSite.java index 2309fe6e97f..714561e8b12 100644 --- a/src/main/java/org/codehaus/groovy/runtime/callsite/ConstructorMetaClassSite.java +++ b/src/main/java/org/codehaus/groovy/runtime/callsite/ConstructorMetaClassSite.java @@ -35,7 +35,7 @@ public Object callConstructor(Object receiver, Object[] args) throws Throwable { throw ScriptBytecodeAdapter.unwrap(gre); } } else { - return CallSiteArray.defaultCallConstructor(this, (Class)receiver, args); + return CallSiteArray.defaultCallConstructor(this, receiver, args); } } } diff --git a/src/main/java/org/codehaus/groovy/runtime/typehandling/DefaultTypeTransformation.java b/src/main/java/org/codehaus/groovy/runtime/typehandling/DefaultTypeTransformation.java index 0b40fd0ff9b..ed83ddc109e 100644 --- a/src/main/java/org/codehaus/groovy/runtime/typehandling/DefaultTypeTransformation.java +++ b/src/main/java/org/codehaus/groovy/runtime/typehandling/DefaultTypeTransformation.java @@ -480,7 +480,7 @@ public static Collection arrayAsCollection(Object value) { } public static Collection arrayAsCollection(T[] value) { - return Arrays.asList((T[]) value); + return Arrays.asList(value); } /** diff --git a/src/main/java/org/codehaus/groovy/transform/ASTTransformationVisitor.java b/src/main/java/org/codehaus/groovy/transform/ASTTransformationVisitor.java index b8348c69771..f3f90a76055 100644 --- a/src/main/java/org/codehaus/groovy/transform/ASTTransformationVisitor.java +++ b/src/main/java/org/codehaus/groovy/transform/ASTTransformationVisitor.java @@ -286,7 +286,6 @@ private static void doAddGlobalTransforms(ASTTransformationsContext context, boo compilationUnit.getErrorCollector().addError(new SimpleMessage( "IOException reading the service definition at " + service.toExternalForm() + " because of exception " + ioe.toString(), null)); - continue; } } } diff --git a/src/main/java/org/codehaus/groovy/transform/sc/transformers/BinaryExpressionTransformer.java b/src/main/java/org/codehaus/groovy/transform/sc/transformers/BinaryExpressionTransformer.java index f17bf7e37b3..6d870fb8f02 100644 --- a/src/main/java/org/codehaus/groovy/transform/sc/transformers/BinaryExpressionTransformer.java +++ b/src/main/java/org/codehaus/groovy/transform/sc/transformers/BinaryExpressionTransformer.java @@ -294,7 +294,7 @@ private static Expression transformDeclarationExpression(final BinaryExpression private static Expression convertInOperatorToTernary(final BinaryExpression bin, final Expression rightExpression, final Expression leftExpression) { MethodCallExpression call = callX(rightExpression, "isCase", leftExpression); - call.setMethodTarget((MethodNode) bin.getNodeMetaData(StaticTypesMarker.DIRECT_METHOD_CALL_TARGET)); + call.setMethodTarget(bin.getNodeMetaData(StaticTypesMarker.DIRECT_METHOD_CALL_TARGET)); call.setSourcePosition(bin); call.copyNodeMetaData(bin); Expression tExp = ternaryX( diff --git a/src/main/java/org/codehaus/groovy/transform/sc/transformers/ConstructorCallTransformer.java b/src/main/java/org/codehaus/groovy/transform/sc/transformers/ConstructorCallTransformer.java index 6c42e786b46..f04b0ca864a 100644 --- a/src/main/java/org/codehaus/groovy/transform/sc/transformers/ConstructorCallTransformer.java +++ b/src/main/java/org/codehaus/groovy/transform/sc/transformers/ConstructorCallTransformer.java @@ -55,7 +55,7 @@ public ConstructorCallTransformer(StaticCompilationTransformer staticCompilation } Expression transformConstructorCall(final ConstructorCallExpression expr) { - ConstructorNode node = (ConstructorNode) expr.getNodeMetaData(DIRECT_METHOD_CALL_TARGET); + ConstructorNode node = expr.getNodeMetaData(DIRECT_METHOD_CALL_TARGET); if (node == null) return expr; Parameter[] params = node.getParameters(); if ((params.length == 1 || params.length == 2) // 2 is for inner class case diff --git a/src/main/java/org/codehaus/groovy/transform/trait/TraitComposer.java b/src/main/java/org/codehaus/groovy/transform/trait/TraitComposer.java index f7dae0aa38f..506044dffa7 100644 --- a/src/main/java/org/codehaus/groovy/transform/trait/TraitComposer.java +++ b/src/main/java/org/codehaus/groovy/transform/trait/TraitComposer.java @@ -169,7 +169,7 @@ private static void applyTrait(final ClassNode trait, final ClassNode cNode, fin new Parameter[] {new Parameter(ClassHelper.CLASS_Type,"clazz")}, ClassNode.EMPTY_ARRAY, EmptyStatement.INSTANCE); staticInitMethod.setDeclaringClass(helperClassNode); staticInitCall.setMethodTarget(staticInitMethod); - cNode.addStaticInitializerStatements(Collections.singletonList(new ExpressionStatement( + cNode.addStaticInitializerStatements(Collections.singletonList(new ExpressionStatement( staticInitCall )), false); if (fieldHelperClassNode != null && !cNode.declaresInterface(fieldHelperClassNode)) { diff --git a/src/main/java/org/codehaus/groovy/util/AbstractConcurrentMapBase.java b/src/main/java/org/codehaus/groovy/util/AbstractConcurrentMapBase.java index 500e3d48828..d592b9bd9f5 100644 --- a/src/main/java/org/codehaus/groovy/util/AbstractConcurrentMapBase.java +++ b/src/main/java/org/codehaus/groovy/util/AbstractConcurrentMapBase.java @@ -288,7 +288,7 @@ private static void put(Entry ee, int index, Object[] tab) { if (o instanceof Entry) { Object arr [] = new Object [2]; arr [0] = ee; - arr [1] = (Entry) o; + arr [1] = o; tab[index] = arr; return; } @@ -309,7 +309,7 @@ private static Object put(Entry ee, Object o) { if (o instanceof Entry) { Object arr [] = new Object [2]; arr [0] = ee; - arr [1] = (Entry) o; + arr [1] = o; return arr; } else { diff --git a/src/main/java/org/codehaus/groovy/vmplugin/v8/PluginDefaultGroovyMethods.java b/src/main/java/org/codehaus/groovy/vmplugin/v8/PluginDefaultGroovyMethods.java index d81df24c67e..305ac268423 100644 --- a/src/main/java/org/codehaus/groovy/vmplugin/v8/PluginDefaultGroovyMethods.java +++ b/src/main/java/org/codehaus/groovy/vmplugin/v8/PluginDefaultGroovyMethods.java @@ -398,7 +398,7 @@ public E get(final long timeout, final TimeUnit unit) throws InterruptedExceptio * @since 2.5.0 */ public static List toList(final Stream self) { - return self.collect(Collectors.toList()); + return self.collect(Collectors.toList()); } /** @@ -410,7 +410,7 @@ public static List toList(final Stream self) { * @since 2.5.0 */ public static Set toSet(final Stream self) { - return self.collect(Collectors.toSet()); + return self.collect(Collectors.toSet()); } /** @@ -422,7 +422,7 @@ public static Set toSet(final Stream self) { * @since 2.5.0 */ public static List toList(final BaseStream self) { - return stream(self.iterator()).collect(Collectors.toList()); + return stream(self.iterator()).collect(Collectors.toList()); } /** @@ -434,7 +434,7 @@ public static List toList(final BaseStream self) * @since 2.5.0 */ public static Set toSet(final BaseStream self) { - return stream(self.iterator()).collect(Collectors.toSet()); + return stream(self.iterator()).collect(Collectors.toSet()); } /**