This is an automated email from the ASF dual-hosted git repository. jhyde pushed a commit to branch master in repository https://gitbox.apache.org/repos/asf/calcite.git
commit 61da868ea50fa9fd1584eaafd3fcb0c644e9c953 Author: Julian Hyde <[email protected]> AuthorDate: Tue Dec 10 21:03:18 2019 -0800 Contribute class Resources to ASF, and change its header Minor refactorings, such as converting anonymous classes to lambdas. --- .../java/org/apache/calcite/runtime/Resources.java | 83 +++++++--------------- 1 file changed, 27 insertions(+), 56 deletions(-) diff --git a/core/src/main/java/org/apache/calcite/runtime/Resources.java b/core/src/main/java/org/apache/calcite/runtime/Resources.java index f00a81e..8ec97ee 100644 --- a/core/src/main/java/org/apache/calcite/runtime/Resources.java +++ b/core/src/main/java/org/apache/calcite/runtime/Resources.java @@ -1,10 +1,10 @@ /* - * Licensed to Julian Hyde under one or more contributor license - * agreements. See the NOTICE file distributed with this work for - * additional information regarding copyright ownership. Julian Hyde - * 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 + * 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 * @@ -23,6 +23,7 @@ import java.lang.annotation.Retention; import java.lang.annotation.RetentionPolicy; import java.lang.annotation.Target; import java.lang.reflect.*; +import java.security.PrivilegedAction; import java.text.*; import java.util.*; import java.util.concurrent.Callable; @@ -30,18 +31,12 @@ import java.util.concurrent.ConcurrentHashMap; /** * Defining wrapper classes around resources that allow the compiler to check - * whether the resources exist and have the argument types that your code - * expects. - * - * <p>If this class belongs to a package other than - * {@code net.hydromatic.resource}, it was probably generated by the Maven - * plugin (groupId: "net.hydromatic", artifactId: - * "hydromatic-resource-maven-plugin"). Code generation allows projects to use - * this resource library without adding a runtime dependency on another JAR. + * whether the resources exist, and that uses of resources have the appropriate + * number and types of arguments to match the message. */ public class Resources { private static final ThreadLocal<Locale> MAP_THREAD_TO_LOCALE = - new ThreadLocal<Locale>(); + new ThreadLocal<>(); private Resources() {} @@ -140,8 +135,7 @@ public class Resources { return (T) Proxy.newProxyInstance(clazz.getClassLoader(), new Class[] {clazz}, new InvocationHandler() { - final Map<String, Object> cache = - new ConcurrentHashMap<String, Object>(); + final Map<String, Object> cache = new ConcurrentHashMap<>(); public Object invoke(Object proxy, Method method, Object[] args) throws Throwable { @@ -353,7 +347,7 @@ public class Resources { String raw = raw(); MessageFormat format = new MessageFormat(raw); final Format[] formats = format.getFormatsByArgumentIndex(); - final List<Class> types = new ArrayList<Class>(); + final List<Class> types = new ArrayList<>(); final Class<?>[] parameterTypes = method.getParameterTypes(); for (int i = 0; i < formats.length; i++) { Format format1 = formats[i]; @@ -471,11 +465,8 @@ public class Resources { } } return ex; - } catch (InstantiationException e) { - throw new RuntimeException(e); - } catch (IllegalAccessException e) { - throw new RuntimeException(e); - } catch (NoSuchMethodException e) { + } catch (InstantiationException | IllegalAccessException + | NoSuchMethodException e) { throw new RuntimeException(e); } catch (InvocationTargetException e) { if (e.getCause() instanceof Error) { @@ -528,35 +519,22 @@ public class Resources { if (ex == null) { cause = new NullPointerException(); } - } catch (AssertionError e) { - cause = e; - } catch (RuntimeException e) { - cause = e; - } catch (Exception e) { - // This can never happen since exSupplier should be just a ex() call. + } catch (AssertionError | Exception e) { // catch(Exception) is required since Callable#call throws Exception. - // Just in case we get exception somehow, we will rethrow it as a part - // of AssertionError below. + // But in practice, e will always be AssertionError or RuntimeException, + // since exSupplier should be just a ex() call. cause = e; } if (cause != null) { - AssertionError assertionError = new AssertionError( - "error instantiating exception for resource '" - + method.getName() + "'"); - assertionError.initCause(cause); - throw assertionError; + throw new AssertionError("error instantiating exception for resource '" + + method.getName() + "'", cause); } } @Override public void validate(EnumSet<Validation> validations) { super.validate(validations); if (validations.contains(Validation.CREATE_EXCEPTION)) { - validateException( - new Callable<Exception>() { - public Exception call() throws Exception { - return ex(new NullPointerException("test")); - } - }); + validateException(() -> ex(new NullPointerException("test"))); } } } @@ -575,12 +553,7 @@ public class Resources { @Override public void validate(EnumSet<Validation> validations) { super.validate(validations); if (validations.contains(Validation.CREATE_EXCEPTION)) { - validateException( - new Callable<Exception>() { - public Exception call() throws Exception { - return ex(); - } - }); + validateException(this::ex); } } } @@ -944,14 +917,12 @@ public class Resources { private static InputStream openPropertiesFile(Class clazz) { final ClassLoader loader = clazz.getClassLoader(); final String resName = clazz.getName().replace('.', '/') + ".properties"; - return (InputStream) java.security.AccessController.doPrivileged( - new java.security.PrivilegedAction() { - public Object run() { - if (loader != null) { - return loader.getResourceAsStream(resName); - } else { - return ClassLoader.getSystemResourceAsStream(resName); - } + return java.security.AccessController.doPrivileged( + (PrivilegedAction<InputStream>) () -> { + if (loader != null) { + return loader.getResourceAsStream(resName); + } else { + return ClassLoader.getSystemResourceAsStream(resName); } }); }
