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 d5adda773a5df0decdcffb3d4419b8d428849e2b Author: henrib <[email protected]> AuthorDate: Thu Nov 5 11:18:10 2020 +0100 JEXL: Java 8 and formatting --- .../jexl3/internal/introspection/ClassMap.java | 45 +++++----- .../commons/jexl3/introspection/JexlUberspect.java | 96 ++++++++++------------ 2 files changed, 71 insertions(+), 70 deletions(-) diff --git a/src/main/java/org/apache/commons/jexl3/internal/introspection/ClassMap.java b/src/main/java/org/apache/commons/jexl3/internal/introspection/ClassMap.java index 43b9f02..002366f 100644 --- a/src/main/java/org/apache/commons/jexl3/internal/introspection/ClassMap.java +++ b/src/main/java/org/apache/commons/jexl3/internal/introspection/ClassMap.java @@ -39,6 +39,7 @@ import java.util.concurrent.ConcurrentMap; * <p> * Originally taken from the Velocity tree so we can be self-sufficient. * </p> + * * @see MethodKey * @since 1.0 */ @@ -46,6 +47,7 @@ final class ClassMap { /** * A method that returns itself used as a marker for cache miss, * allows the underlying cache map to be strongly typed. + * * @return itself as a method */ public static Method cacheMiss() { @@ -57,7 +59,9 @@ final class ClassMap { } } - /** The cache miss marker method. */ + /** + * The cache miss marker method. + */ private static final Method CACHE_MISS = cacheMiss(); /** * This is the cache to store and look up the method information. @@ -73,11 +77,11 @@ final class ClassMap { * </p> * Uses ConcurrentMap since 3.0, marginally faster than 2.1 under contention. */ - private final ConcurrentMap<MethodKey, Method> byKey = new ConcurrentHashMap<MethodKey, Method>(); + private final ConcurrentMap<MethodKey, Method> byKey = new ConcurrentHashMap<>(); /** * Keep track of all methods with the same name; this is not modified after creation. */ - private final Map<String, Method[]> byName = new HashMap<String, Method[]>(); + private final Map<String, Method[]> byName = new HashMap<>(); /** * Cache of fields. */ @@ -86,9 +90,9 @@ final class ClassMap { /** * Standard constructor. * - * @param aClass the class to deconstruct. + * @param aClass the class to deconstruct. * @param permissions the permissions to apply during introspection - * @param log the logger. + * @param log the logger. */ @SuppressWarnings("LeakingThisInConstructor") ClassMap(Class<?> aClass, Permissions permissions, Log log) { @@ -97,7 +101,7 @@ final class ClassMap { // eagerly cache public fields Field[] fields = aClass.getFields(); if (fields.length > 0) { - Map<String, Field> cache = new HashMap<String, Field>(); + Map<String, Field> cache = new HashMap<>(); for (Field field : fields) { if (permissions.allow(field)) { cache.put(field.getName(), field); @@ -111,6 +115,7 @@ final class ClassMap { /** * Find a Field using its name. + * * @param fname the field name * @return A Field object representing the field to invoke or null. */ @@ -120,6 +125,7 @@ final class ClassMap { /** * Gets the field names cached by this map. + * * @return the array of field names */ String[] getFieldNames() { @@ -128,6 +134,7 @@ final class ClassMap { /** * Gets the methods names cached by this map. + * * @return the array of method names */ String[] getMethodNames() { @@ -136,6 +143,7 @@ final class ClassMap { /** * Gets all the methods with a given name from this map. + * * @param methodName the seeked methods name * @return the array of methods (null or non-empty) */ @@ -160,6 +168,7 @@ final class ClassMap { * If nothing is found, then we must actually go * and introspect the method from the MethodMap. * </p> + * * @param methodKey the method key * @return A Method object representing the method to invoke or null. * @throws MethodKey.AmbiguousException When more than one method is a match for the parameters. @@ -196,6 +205,7 @@ final class ClassMap { /** * Populate the Map of direct hits. These are taken from all the public methods * that our class, its parents and their implemented interfaces provide. + * * @param cache the ClassMap instance we create * @param permissions the permissions to apply during introspection * @param classToReflect the class to cache @@ -221,15 +231,10 @@ final class ClassMap { } // now that we've got all methods keyed in, lets organize them by name if (!cache.byKey.isEmpty()) { - List<Method> lm = new ArrayList<Method>(cache.byKey.size()); + List<Method> lm = new ArrayList<>(cache.byKey.size()); lm.addAll(cache.byKey.values()); // sort all methods by name - lm.sort(new Comparator<Method>() { - @Override - public int compare(Method o1, Method o2) { - return o1.getName().compareTo(o2.getName()); - } - }); + lm.sort(Comparator.comparing(Method::getName)); // put all lists of methods with same name in byName cache int start = 0; while (start < lm.size()) { @@ -252,10 +257,11 @@ final class ClassMap { /** * Recurses up interface hierarchy to get all super interfaces. - * @param cache the cache to fill + * + * @param cache the cache to fill * @param permissions the permissions to apply during introspection - * @param iface the interface to populate the cache from - * @param log the Log + * @param iface the interface to populate the cache from + * @param log the Log */ private static void populateWithInterface(ClassMap cache, Permissions permissions, Class<?> iface, Log log) { if (Modifier.isPublic(iface.getModifiers())) { @@ -269,10 +275,11 @@ final class ClassMap { /** * Recurses up class hierarchy to get all super classes. - * @param cache the cache to fill + * + * @param cache the cache to fill * @param permissions the permissions to apply during introspection - * @param clazz the class to populate the cache from - * @param log the Log + * @param clazz the class to populate the cache from + * @param log the Log */ private static void populateWithClass(ClassMap cache, Permissions permissions, Class<?> clazz, Log log) { try { diff --git a/src/main/java/org/apache/commons/jexl3/introspection/JexlUberspect.java b/src/main/java/org/apache/commons/jexl3/introspection/JexlUberspect.java index 41e014c..362fca8 100644 --- a/src/main/java/org/apache/commons/jexl3/introspection/JexlUberspect.java +++ b/src/main/java/org/apache/commons/jexl3/introspection/JexlUberspect.java @@ -39,7 +39,7 @@ public interface JexlUberspect { * These are used through 'strategies' to solve properties; a strategy orders a list of resolver types, * and each resolver type is tried in sequence; the first resolver that discovers a non null {s,g}etter * stops the search. - * + * * @see JexlResolver * @see JexlUberspect#getPropertyGet * @see JexlUberspect#getPropertySet @@ -49,7 +49,7 @@ public interface JexlUberspect { /** * Gets a property getter. - * + * * @param uber the uberspect * @param obj the object * @param identifier the property identifier @@ -59,7 +59,7 @@ public interface JexlUberspect { /** * Gets a property setter. - * + * * @param uber the uberspect * @param obj the object * @param identifier the property identifier @@ -74,7 +74,7 @@ public interface JexlUberspect { * <p> * Each resolver discovers how to set/get a property with different techniques; seeking * method names or field names, etc. - * + * * @since 3.0 */ enum JexlResolver implements PropertyResolver { @@ -98,19 +98,19 @@ public interface JexlUberspect { @Override public final JexlPropertyGet getPropertyGet(JexlUberspect uber, Object obj, Object identifier) { - return uber.getPropertyGet(Collections.<PropertyResolver>singletonList(this), obj, identifier); + return uber.getPropertyGet(Collections.singletonList(this), obj, identifier); } @Override public final JexlPropertySet getPropertySet(JexlUberspect uber, Object obj, Object identifier, Object arg) { - return uber.getPropertySet(Collections.<PropertyResolver>singletonList(this), obj, identifier, arg); + return uber.getPropertySet(Collections.singletonList(this), obj, identifier, arg); } } /** * A resolver types list tailored for POJOs, favors '.' over '[]'. */ - List<PropertyResolver> POJO = Collections.<PropertyResolver>unmodifiableList(Arrays.asList( + List<PropertyResolver> POJO = Collections.unmodifiableList(Arrays.asList( JexlResolver.PROPERTY, JexlResolver.MAP, JexlResolver.LIST, @@ -122,7 +122,7 @@ public interface JexlUberspect { /** * A resolver types list tailored for Maps, favors '[]' over '.'. */ - List<PropertyResolver> MAP = Collections.<PropertyResolver>unmodifiableList(Arrays.asList( + List<PropertyResolver> MAP = Collections.unmodifiableList(Arrays.asList( JexlResolver.MAP, JexlResolver.LIST, JexlResolver.DUCK, @@ -133,19 +133,19 @@ public interface JexlUberspect { /** * Determines property resolution strategy. - * + * * <p>To use a strategy instance, you have to set it at engine creation using * {@link org.apache.commons.jexl3.JexlBuilder#strategy(JexlUberspect.ResolverStrategy)} * as in:</p> - * + * * <code>JexlEngine jexl = new JexlBuilder().strategy(MY_STRATEGY).create();</code> - * + * * @since 3.0 */ interface ResolverStrategy { /** * Applies this strategy to a list of resolver types. - * + * * @param operator the property access operator, may be null * @param obj the instance we seek to obtain a property setter/getter from, can not be null * @return the ordered list of resolvers types, must not be null @@ -159,47 +159,41 @@ public interface JexlUberspect { * If the operator is '[]' or if the operator is null and the object is a map, use the MAP list of resolvers; * Other cases use the POJO list of resolvers. */ - ResolverStrategy JEXL_STRATEGY = new ResolverStrategy() { - @Override - public List<PropertyResolver> apply(JexlOperator op, Object obj) { - if (op == JexlOperator.ARRAY_GET) { - return MAP; - } - if (op == JexlOperator.ARRAY_SET) { - return MAP; - } - if (op == null && obj instanceof Map) { - return MAP; - } - return POJO; + ResolverStrategy JEXL_STRATEGY = (op, obj) -> { + if (op == JexlOperator.ARRAY_GET) { + return MAP; } + if (op == JexlOperator.ARRAY_SET) { + return MAP; + } + if (op == null && obj instanceof Map) { + return MAP; + } + return POJO; }; /** * The map strategy. - * + * * <p>If the operator is '[]' or if the object is a map, use the MAP list of resolvers. * Otherwise, use the POJO list of resolvers.</p> */ - ResolverStrategy MAP_STRATEGY = new ResolverStrategy() { - @Override - public List<PropertyResolver> apply(JexlOperator op, Object obj) { - if (op == JexlOperator.ARRAY_GET) { - return MAP; - } - if (op == JexlOperator.ARRAY_SET) { - return MAP; - } - if (obj instanceof Map) { - return MAP; - } - return POJO; + ResolverStrategy MAP_STRATEGY = (op, obj) -> { + if (op == JexlOperator.ARRAY_GET) { + return MAP; + } + if (op == JexlOperator.ARRAY_SET) { + return MAP; + } + if (obj instanceof Map) { + return MAP; } + return POJO; }; /** * Applies this uberspect property resolver strategy. - * + * * @param op the operator * @param obj the object * @return the applied strategy resolver list @@ -208,13 +202,13 @@ public interface JexlUberspect { /** * Sets the class loader to use. - * + * * <p>This increments the version.</p> - * + * * @param loader the class loader */ void setClassLoader(ClassLoader loader); - + /** * Gets the current class loader. * @return the class loader @@ -223,14 +217,14 @@ public interface JexlUberspect { /** * Gets this uberspect version. - * + * * @return the class loader modification count */ int getVersion(); /** * Returns a class constructor. - * + * * @param ctorHandle a class or class name * @param args constructor arguments * @return a {@link JexlMethod} @@ -240,7 +234,7 @@ public interface JexlUberspect { /** * Returns a JexlMethod. - * + * * @param obj the object * @param method the method name * @param args method arguments @@ -250,9 +244,9 @@ public interface JexlUberspect { /** * Property getter. - * + * * <p>returns a JelPropertySet apropos to an expression like <code>bar.woogie</code>.</p> - * + * * @param obj the object to get the property from * @param identifier property name * @return a {@link JexlPropertyGet} or null @@ -277,7 +271,7 @@ public interface JexlUberspect { * Property setter. * <p> * Seeks a JelPropertySet apropos to an expression like <code>foo.bar = "geir"</code>.</p> - * + * * @param obj the object to get the property from. * @param identifier property name * @param arg value to set @@ -302,7 +296,7 @@ public interface JexlUberspect { /** * Gets an iterator from an object. - * + * * @param obj to get the iterator from * @return an iterator over obj or null */ @@ -310,7 +304,7 @@ public interface JexlUberspect { /** * Gets an arithmetic operator resolver for a given arithmetic instance. - * + * * @param arithmetic the arithmetic instance * @return the arithmetic uberspect or null if no operator method were overridden * @since 3.0
