This is an automated email from the ASF dual-hosted git repository.
jamesbognar pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/juneau.git
The following commit(s) were added to refs/heads/master by this push:
new 77d0e93 JUNEAU-197
77d0e93 is described below
commit 77d0e9392adc7d6122394789bcf91d59f774d89f
Author: JamesBognar <[email protected]>
AuthorDate: Sun Mar 8 16:34:27 2020 -0400
JUNEAU-197
@BeanConfig(bpi) does not override @Bean(bpi)
---
.../apache/juneau/config/internal/ConfigMap.java | 2 +-
.../juneau/internal/ReadOnlyArrayListTest.java | 12 +-
.../juneau/reflection/ExecutableInfoTest.java | 4 +-
.../org/apache/juneau/httppart/bean/Utils.java | 7 +-
.../apache/juneau/internal/CollectionUtils.java | 43 ++-----
...adOnlyArrayList.java => UnmodifiableArray.java} | 8 +-
.../java/org/apache/juneau/reflect/ClassInfo.java | 136 ++++++++++-----------
.../org/apache/juneau/reflect/ConstructorInfo.java | 2 +-
.../org/apache/juneau/reflect/ExecutableInfo.java | 66 +++++-----
.../java/org/apache/juneau/reflect/MethodInfo.java | 30 +++--
.../java/org/apache/juneau/rest/RestContext.java | 10 +-
.../org/apache/juneau/rest/RestContextBuilder.java | 6 +-
.../juneau/rest/annotation/RestConfigApply.java | 2 +-
.../rest/annotation/RestResourceConfigApply.java | 2 +-
14 files changed, 154 insertions(+), 176 deletions(-)
diff --git
a/juneau-core/juneau-config/src/main/java/org/apache/juneau/config/internal/ConfigMap.java
b/juneau-core/juneau-config/src/main/java/org/apache/juneau/config/internal/ConfigMap.java
index cd25896..b00f672 100644
---
a/juneau-core/juneau-config/src/main/java/org/apache/juneau/config/internal/ConfigMap.java
+++
b/juneau-core/juneau-config/src/main/java/org/apache/juneau/config/internal/ConfigMap.java
@@ -120,7 +120,7 @@ public class ConfigMap implements ConfigStoreListener {
}
List<Import> irl = new ArrayList<>(imports.size());
- for (ConfigMap ic : iterable(imports.values(), true))
+ for (ConfigMap ic : riterable(imports.values()))
irl.add(new Import(ic).register(listeners));
this.imports.addAll(irl);
diff --git
a/juneau-core/juneau-core-utest/src/test/java/org/apache/juneau/internal/ReadOnlyArrayListTest.java
b/juneau-core/juneau-core-utest/src/test/java/org/apache/juneau/internal/ReadOnlyArrayListTest.java
index cdb4e8d..99261dc 100644
---
a/juneau-core/juneau-core-utest/src/test/java/org/apache/juneau/internal/ReadOnlyArrayListTest.java
+++
b/juneau-core/juneau-core-utest/src/test/java/org/apache/juneau/internal/ReadOnlyArrayListTest.java
@@ -21,12 +21,12 @@ import org.junit.*;
@SuppressWarnings("unchecked")
public class ReadOnlyArrayListTest {
- private static <T> ReadOnlyArrayList<T> create(T...t) {
- return new ReadOnlyArrayList<>(t);
+ private static <T> UnmodifiableArray<T> create(T...t) {
+ return new UnmodifiableArray<>(t);
}
- private static <T> ReadOnlyArrayList<T> createReversed(T...t) {
- return new ReadOnlyArrayList<>(t, true);
+ private static <T> UnmodifiableArray<T> createReversed(T...t) {
+ return new UnmodifiableArray<>(t, true);
}
@Test
@@ -99,7 +99,7 @@ public class ReadOnlyArrayListTest {
@Test
public void testToArray() {
String[] s = new String[]{"a"};
- List<String> l = new ReadOnlyArrayList<>(s);
+ List<String> l = new UnmodifiableArray<>(s);
String[] s2 = (String[])l.toArray();
assertEquals("a", s2[0]);
s2[0] = "b";
@@ -109,7 +109,7 @@ public class ReadOnlyArrayListTest {
@Test
public void testToArray2() {
String[] s = new String[]{"a"};
- List<String> l = new ReadOnlyArrayList<>(s);
+ List<String> l = new UnmodifiableArray<>(s);
String[] s2 = l.toArray(new String[l.size()]);
assertEquals("a", s2[0]);
s2[0] = "b";
diff --git
a/juneau-core/juneau-core-utest/src/test/java/org/apache/juneau/reflection/ExecutableInfoTest.java
b/juneau-core/juneau-core-utest/src/test/java/org/apache/juneau/reflection/ExecutableInfoTest.java
index 7b64148..d3b7ff8 100644
---
a/juneau-core/juneau-core-utest/src/test/java/org/apache/juneau/reflection/ExecutableInfoTest.java
+++
b/juneau-core/juneau-core-utest/src/test/java/org/apache/juneau/reflection/ExecutableInfoTest.java
@@ -258,9 +258,9 @@ public class ExecutableInfoTest {
@Test
public void getRawParameters() {
check("", b_c1.getRawParameters());
-
assertTrue(b_c2.getRawParameters()[0].toString().startsWith("java.lang.String
"));
+
assertTrue(b_c2.getRawParameters().get(0).toString().startsWith("java.lang.String
"));
check("", b_m1.getRawParameters());
-
assertTrue(b_m2.getRawParameters()[0].toString().startsWith("java.lang.String
"));
+
assertTrue(b_m2.getRawParameters().get(0).toString().startsWith("java.lang.String
"));
}
@Test
diff --git
a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/httppart/bean/Utils.java
b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/httppart/bean/Utils.java
index 424f295..efa454a 100644
---
a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/httppart/bean/Utils.java
+++
b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/httppart/bean/Utils.java
@@ -13,6 +13,7 @@
package org.apache.juneau.httppart.bean;
import java.lang.annotation.*;
+import java.util.*;
import org.apache.juneau.annotation.*;
import org.apache.juneau.reflect.*;
@@ -42,10 +43,10 @@ class Utils {
}
static void assertArgType(MethodInfo m, Class<? extends Annotation> a,
Class<?>...c) throws InvalidAnnotationException {
- Class<?>[] ptt = m.getRawParamTypes();
- if (ptt.length != 1)
+ List<Class<?>> ptt = m.getRawParamTypes();
+ if (ptt.size() != 1)
throw new InvalidAnnotationException("Only one
parameter can be passed to method with @{0} annotation. Method=''{0}''",
a.getSimpleName(), m);
- Class<?> rt = ptt[0];
+ Class<?> rt = ptt.get(0);
for (Class<?> cc : c)
if (rt == cc)
return;
diff --git
a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/internal/CollectionUtils.java
b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/internal/CollectionUtils.java
index 58cbe4f..d778f46 100644
---
a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/internal/CollectionUtils.java
+++
b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/internal/CollectionUtils.java
@@ -74,29 +74,13 @@ public final class CollectionUtils {
}
/**
- * Returns an iterable over the specified collection.
+ * Returns an iterable over the specified collection in reverse order.
*
* @param c The collection to iterate over.
- * @param reverse If <jk>true</jk>, iterate in reverse order.
* @return An iterable over the collection.
*/
- public static <T> Iterable<T> iterable(final Collection<T> c, boolean
reverse) {
- if (reverse)
- return new ReverseIterable<>(c instanceof List ?
(List<T>)c : new ArrayList<>(c));
- return c;
- }
-
- /**
- * Returns an iterable over the specified list.
- *
- * @param c The collection to iterate over.
- * @param reverse If <jk>true</jk>, iterate in reverse order.
- * @return An iterable over the collection.
- */
- public static <T> Iterable<T> iterable(final List<T> c, boolean
reverse) {
- if (reverse)
- return new ReverseIterable<>(c);
- return c;
+ public static <T> Iterable<T> riterable(final Collection<T> c) {
+ return new ReverseIterable<>(c instanceof List ? (List<T>)c :
new ArrayList<>(c));
}
/**
@@ -105,21 +89,8 @@ public final class CollectionUtils {
* @param c The collection to iterate over.
* @return An iterable over the collection.
*/
- public static <T> Iterable<T> reverseIterable(final List<T> c) {
- return iterable(c, true);
- }
-
- /**
- * Returns an iterable over the specified array.
- *
- * @param c The collection to iterate over.
- * @param reverse If <jk>true</jk>, iterate in reverse order.
- * @return An iterable over the collection.
- */
- public static <T> Iterable<T> iterable(T[] c, boolean reverse) {
- if (reverse)
- return new ReverseIterable<>(Arrays.asList(c));
- return Arrays.asList(c);
+ public static <T> Iterable<T> riterable(final List<T> c) {
+ return new ReverseIterable<>(c);
}
/**
@@ -128,8 +99,8 @@ public final class CollectionUtils {
* @param c The collection to iterate over.
* @return An iterable over the collection.
*/
- public static <T> Iterable<T> reverseIterable(T[] c) {
- return iterable(c, true);
+ public static <T> Iterable<T> riterable(T[] c) {
+ return new ReverseIterable<>(Arrays.asList(c));
}
/**
diff --git
a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/internal/ReadOnlyArrayList.java
b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/internal/UnmodifiableArray.java
similarity index 96%
rename from
juneau-core/juneau-marshall/src/main/java/org/apache/juneau/internal/ReadOnlyArrayList.java
rename to
juneau-core/juneau-marshall/src/main/java/org/apache/juneau/internal/UnmodifiableArray.java
index eda8e16..935518a 100644
---
a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/internal/ReadOnlyArrayList.java
+++
b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/internal/UnmodifiableArray.java
@@ -24,7 +24,7 @@ import java.util.*;
*
* @param <T> Array element type.
*/
-public class ReadOnlyArrayList<T> implements List<T> {
+public class UnmodifiableArray<T> implements List<T> {
final T[] array;
final int length;
@@ -35,7 +35,7 @@ public class ReadOnlyArrayList<T> implements List<T> {
*
* @param array The array being wrapped.
*/
- public ReadOnlyArrayList(T[] array) {
+ public UnmodifiableArray(T[] array) {
this(array, false);
}
@@ -46,7 +46,7 @@ public class ReadOnlyArrayList<T> implements List<T> {
* @param reversed <jk>true</jk> if elements of array should be
addressed in reverse.
*/
@SuppressWarnings("unchecked")
- public ReadOnlyArrayList(T[] array, boolean reversed) {
+ public UnmodifiableArray(T[] array, boolean reversed) {
this.array = array == null ? (T[])new Object[0] : array;
this.length = this.array.length;
this.reversed = reversed;
@@ -110,6 +110,8 @@ public class ReadOnlyArrayList<T> implements List<T> {
@Override
@SuppressWarnings({ "unchecked", "hiding" })
public <T> T[] toArray(T[] a) {
+ if (a.length < length)
+ return (T[])toArray();
for (int i = 0; i < array.length; i++)
a[i] = reversed ? (T)array[length-i-1] : (T)array[i];
return a;
diff --git
a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/reflect/ClassInfo.java
b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/reflect/ClassInfo.java
index c3fcc9c..488c011 100644
---
a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/reflect/ClassInfo.java
+++
b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/reflect/ClassInfo.java
@@ -216,11 +216,11 @@ public final class ClassInfo {
*/
public ClassInfo resolved() {
if (Value.isType(t))
- return
of(Value.getParameterType(t)).getProxiedClassInfo();
- return getProxiedClassInfo();
+ return
of(Value.getParameterType(t))._getProxiedClassInfo();
+ return _getProxiedClassInfo();
}
- private ClassInfo getProxiedClassInfo() {
+ private ClassInfo _getProxiedClassInfo() {
return proxyFor == null ? this : proxyFor;
}
@@ -249,7 +249,7 @@ public final class ClassInfo {
* <br>Results are in the same order as {@link
Class#getInterfaces()}.
*/
public List<ClassInfo> getDeclaredInterfaces() {
- return new ReadOnlyArrayList<>(getDeclaredInterfacesInternal());
+ return new UnmodifiableArray<>(_getDeclaredInterfaces());
}
/**
@@ -260,7 +260,7 @@ public final class ClassInfo {
* <br>Results are in child-to-parent order.
*/
public List<ClassInfo> getInterfacesChildFirst() {
- return new ReadOnlyArrayList<>(getInterfacesInternal());
+ return new UnmodifiableArray<>(_getInterfaces());
}
/**
@@ -271,7 +271,7 @@ public final class ClassInfo {
* <br>Results are in parent-to-child order.
*/
public List<ClassInfo> getInterfacesParentFirst() {
- return new ReadOnlyArrayList<>(getInterfacesInternal(), true);
+ return new UnmodifiableArray<>(_getInterfaces(), true);
}
/**
@@ -284,7 +284,7 @@ public final class ClassInfo {
* <br>Results are in child-to-parent order.
*/
public List<ClassInfo> getParentsChildFirst() {
- return new ReadOnlyArrayList<>(getParentsInternal());
+ return new UnmodifiableArray<>(_getParents());
}
/**
@@ -297,7 +297,7 @@ public final class ClassInfo {
* <br>Results are in parent-to-child order.
*/
public List<ClassInfo> getParentsParentFirst() {
- return new ReadOnlyArrayList<>(getParentsInternal(), true);
+ return new UnmodifiableArray<>(_getParents(), true);
}
/**
@@ -307,7 +307,7 @@ public final class ClassInfo {
* <br>Results are ordered child-to-parent order with classes
listed before interfaces.
*/
public List<ClassInfo> getAllParentsChildFirst() {
- return new ReadOnlyArrayList<>(getAllParentsInternal());
+ return new UnmodifiableArray<>(_getAllParents());
}
/**
@@ -317,10 +317,10 @@ public final class ClassInfo {
* <br>Results are ordered parent-to-child order with interfaces
listed before classes.
*/
public List<ClassInfo> getAllParentsParentFirst() {
- return new ReadOnlyArrayList<>(getAllParentsInternal(), true);
+ return new UnmodifiableArray<>(_getAllParents(), true);
}
- private ClassInfo[] getInterfacesInternal() {
+ private ClassInfo[] _getInterfaces() {
if (interfaces == null) {
Set<ClassInfo> s = new LinkedHashSet<>();
for (ClassInfo ci : getParentsChildFirst())
@@ -334,7 +334,7 @@ public final class ClassInfo {
return interfaces;
}
- private ClassInfo[] getDeclaredInterfacesInternal() {
+ private ClassInfo[] _getDeclaredInterfaces() {
if (declaredInterfaces == null) {
Class<?>[] ii = c == null ? new Class[0] :
c.getInterfaces();
ClassInfo[] l = new ClassInfo[ii.length];
@@ -345,7 +345,7 @@ public final class ClassInfo {
return declaredInterfaces;
}
- private ClassInfo[] getParentsInternal() {
+ private ClassInfo[] _getParents() {
if (parents == null) {
List<ClassInfo> l = new ArrayList<>();
Class<?> pc = c;
@@ -358,9 +358,9 @@ public final class ClassInfo {
return parents;
}
- private ClassInfo[] getAllParentsInternal() {
+ private ClassInfo[] _getAllParents() {
if (allParents == null) {
- ClassInfo[] a1 = getParentsInternal(), a2 =
getInterfacesInternal();
+ ClassInfo[] a1 = _getParents(), a2 = _getInterfaces();
ClassInfo[] l = new ClassInfo[a1.length + a2.length];
for (int i = 0; i < a1.length; i++)
l[i] = a1[i];
@@ -386,7 +386,7 @@ public final class ClassInfo {
* <br>Results are ordered alphabetically.
*/
public List<MethodInfo> getPublicMethods() {
- return new ReadOnlyArrayList<>(getPublicMethodsInternal());
+ return new UnmodifiableArray<>(_getPublicMethods());
}
/**
@@ -398,7 +398,7 @@ public final class ClassInfo {
* The public method with the specified method name and argument
types, or <jk>null</jk> if not found.
*/
public MethodInfo getPublicMethod(String name, Class<?>...args) {
- for (MethodInfo mi : getPublicMethodsInternal())
+ for (MethodInfo mi : _getPublicMethods())
if (mi.hasName(name) && mi.hasParamTypes(args))
return mi;
return null;
@@ -413,7 +413,7 @@ public final class ClassInfo {
* The method with the specified method name and argument types, or
<jk>null</jk> if not found.
*/
public MethodInfo getMethod(String name, Class<?>...args) {
- for (MethodInfo mi : getAllMethodsInternal())
+ for (MethodInfo mi : _getAllMethods())
if (mi.hasName(name) && mi.hasParamTypes(args))
return mi;
return null;
@@ -427,7 +427,7 @@ public final class ClassInfo {
* <br>Results are ordered alphabetically.
*/
public List<MethodInfo> getDeclaredMethods() {
- return new ReadOnlyArrayList<>(getDeclaredMethodsInternal());
+ return new UnmodifiableArray<>(_getDeclaredMethods());
}
/**
@@ -438,7 +438,7 @@ public final class ClassInfo {
* <br>Results are ordered child-to-parent, and then
alphabetically per class.
*/
public List<MethodInfo> getAllMethods() {
- return new ReadOnlyArrayList<>(getAllMethodsInternal());
+ return new UnmodifiableArray<>(_getAllMethods());
}
/**
@@ -450,61 +450,61 @@ public final class ClassInfo {
* <br>Results are ordered parent-to-child, and then
alphabetically per class.
*/
public List<MethodInfo> getAllMethodsParentFirst() {
- return new
ReadOnlyArrayList<>(getAllMethodsParentFirstInternal());
+ return new UnmodifiableArray<>(_getAllMethodsParentFirst());
}
- private MethodInfo[] getPublicMethodsInternal() {
+ private MethodInfo[] _getPublicMethods() {
if (publicMethods == null) {
Method[] mm = c == null ? new Method[0] :
c.getMethods();
List<MethodInfo> l = new ArrayList<>(mm.length);
for (Method m : mm)
if (m.getDeclaringClass() != Object.class)
- l.add(MethodInfo.of(this, m,
getProxyTarget(m)));
+ l.add(MethodInfo.of(this, m,
_getProxyTarget(m)));
l.sort(null);
publicMethods = l.toArray(new MethodInfo[l.size()]);
}
return publicMethods;
}
- private MethodInfo[] getDeclaredMethodsInternal() {
+ private MethodInfo[] _getDeclaredMethods() {
if (declaredMethods == null) {
Method[] mm = c == null ? new Method[0] :
c.getDeclaredMethods();
List<MethodInfo> l = new ArrayList<>(mm.length);
for (Method m : mm)
if (! "$jacocoInit".equals(m.getName())) //
Jacoco adds its own simulated methods.
- l.add(MethodInfo.of(this, m,
getProxyTarget(m)));
+ l.add(MethodInfo.of(this, m,
_getProxyTarget(m)));
l.sort(null);
declaredMethods = l.toArray(new MethodInfo[l.size()]);
}
return declaredMethods;
}
- private MethodInfo[] getAllMethodsInternal() {
+ private MethodInfo[] _getAllMethods() {
if (allMethods == null) {
List<MethodInfo> l = new ArrayList<>();
for (ClassInfo c : getAllParentsChildFirst())
- c.appendDeclaredMethods(l);
+ c._appendDeclaredMethods(l);
allMethods = l.toArray(new MethodInfo[l.size()]);
}
return allMethods;
}
- private MethodInfo[] getAllMethodsParentFirstInternal() {
+ private MethodInfo[] _getAllMethodsParentFirst() {
if (allMethodsParentFirst == null) {
List<MethodInfo> l = new ArrayList<>();
for (ClassInfo c : getAllParentsParentFirst())
- c.appendDeclaredMethods(l);
+ c._appendDeclaredMethods(l);
allMethodsParentFirst = l.toArray(new
MethodInfo[l.size()]);
}
return allMethodsParentFirst;
}
- private List<MethodInfo> appendDeclaredMethods(List<MethodInfo> l) {
+ private List<MethodInfo> _appendDeclaredMethods(List<MethodInfo> l) {
l.addAll(getDeclaredMethods());
return l;
}
- private Method getProxyTarget(Method m) {
+ private Method _getProxyTarget(Method m) {
if (proxyFor != null) {
MethodInfo m2 = proxyFor.getMethod(m.getName(),
m.getParameterTypes());
if (m2 != null)
@@ -513,7 +513,7 @@ public final class ClassInfo {
return m;
}
- private Constructor<?> getProxyTarget(Constructor<?> c) {
+ private Constructor<?> _getProxyTarget(Constructor<?> c) {
if (proxyFor != null) {
ConstructorInfo c2 =
proxyFor.getConstructor(Visibility.PRIVATE, c.getParameterTypes());
if (c2 != null)
@@ -629,7 +629,7 @@ public final class ClassInfo {
* @return All public constructors defined on this class.
*/
public List<ConstructorInfo> getPublicConstructors() {
- return new ReadOnlyArrayList<>(getPublicConstructorsInternal());
+ return new UnmodifiableArray<>(_getPublicConstructors());
}
/**
@@ -640,7 +640,7 @@ public final class ClassInfo {
* The public constructor with the specified argument types, or
<jk>null</jk> if not found.
*/
public ConstructorInfo getPublicConstructor(Class<?>...args) {
- for (ConstructorInfo ci : getPublicConstructorsInternal())
+ for (ConstructorInfo ci : _getPublicConstructors())
if (ci.hasParamTypes(args))
return ci;
return null;
@@ -654,7 +654,7 @@ public final class ClassInfo {
* The declared constructor with the specified argument types, or
<jk>null</jk> if not found.
*/
public ConstructorInfo getDeclaredConstructor(Class<?>...args) {
- for (ConstructorInfo ci : getDeclaredConstructorsInternal())
+ for (ConstructorInfo ci : _getDeclaredConstructors())
if (ci.hasParamTypes(args))
return ci;
return null;
@@ -671,7 +671,7 @@ public final class ClassInfo {
* The public constructor with the specified argument types, or
<jk>null</jk> if not found.
*/
public ConstructorInfo getAvailablePublicConstructor(Class<?>...args) {
- return getConstructor(Visibility.PUBLIC, false, args);
+ return _getConstructor(Visibility.PUBLIC, false, args);
}
/**
@@ -680,7 +680,7 @@ public final class ClassInfo {
* @return All constructors defined on this class.
*/
public List<ConstructorInfo> getDeclaredConstructors() {
- return new
ReadOnlyArrayList<>(getDeclaredConstructorsInternal());
+ return new UnmodifiableArray<>(_getDeclaredConstructors());
}
/**
@@ -704,7 +704,7 @@ public final class ClassInfo {
* arguments.
*/
public ConstructorInfo getPublicConstructorFuzzy(Object...args) {
- return getConstructor(Visibility.PUBLIC, true,
ClassUtils.getClasses(args));
+ return _getConstructor(Visibility.PUBLIC, true,
ClassUtils.getClasses(args));
}
/**
@@ -717,38 +717,38 @@ public final class ClassInfo {
* @return The matching constructor, or <jk>null</jk> if constructor
could not be found.
*/
public ConstructorInfo getConstructor(Visibility vis,
Class<?>...argTypes) {
- return getConstructor(vis, false, argTypes);
+ return _getConstructor(vis, false, argTypes);
}
- private ConstructorInfo[] getPublicConstructorsInternal() {
+ private ConstructorInfo[] _getPublicConstructors() {
if (publicConstructors == null) {
Constructor<?>[] cc = c == null ? new Constructor[0] :
c.getConstructors();
List<ConstructorInfo> l = new ArrayList<>(cc.length);
for (Constructor<?> ccc : cc)
- l.add(ConstructorInfo.of(this, ccc,
getProxyTarget(ccc)));
+ l.add(ConstructorInfo.of(this, ccc,
_getProxyTarget(ccc)));
l.sort(null);
publicConstructors = l.toArray(new
ConstructorInfo[l.size()]);
}
return publicConstructors;
}
- private ConstructorInfo[] getDeclaredConstructorsInternal() {
+ private ConstructorInfo[] _getDeclaredConstructors() {
if (declaredConstructors == null) {
Constructor<?>[] cc = c == null ? new Constructor[0] :
c.getDeclaredConstructors();
List<ConstructorInfo> l = new ArrayList<>(cc.length);
for (Constructor<?> ccc : cc)
- l.add(ConstructorInfo.of(this, ccc,
getProxyTarget(ccc)));
+ l.add(ConstructorInfo.of(this, ccc,
_getProxyTarget(ccc)));
l.sort(null);
declaredConstructors = l.toArray(new
ConstructorInfo[l.size()]);
}
return declaredConstructors;
}
- private ConstructorInfo getConstructor(Visibility vis, boolean
fuzzyArgs, Class<?>...argTypes) {
+ private ConstructorInfo _getConstructor(Visibility vis, boolean
fuzzyArgs, Class<?>...argTypes) {
if (fuzzyArgs) {
int bestCount = -1;
ConstructorInfo bestMatch = null;
- for (ConstructorInfo n :
getDeclaredConstructorsInternal()) {
+ for (ConstructorInfo n : _getDeclaredConstructors()) {
if (vis.isVisible(n.inner())) {
int m =
ClassUtils.fuzzyArgsMatch(n.getParamTypes(), argTypes);
if (m > bestCount) {
@@ -761,7 +761,7 @@ public final class ClassInfo {
}
boolean isMemberClass = isNonStaticMemberClass();
- for (ConstructorInfo n : getDeclaredConstructorsInternal()) {
+ for (ConstructorInfo n : _getDeclaredConstructors()) {
List<ClassInfo> paramTypes = n.getParamTypes();
if (isMemberClass)
paramTypes = paramTypes.subList(1,
paramTypes.size());
@@ -791,7 +791,7 @@ public final class ClassInfo {
if (isAbstract())
return null;
boolean isMemberClass = isNonStaticMemberClass();
- for (ConstructorInfo cc : getDeclaredConstructorsInternal())
+ for (ConstructorInfo cc : _getDeclaredConstructors())
if (cc.hasNumParams(isMemberClass ? 1 : 0) &&
cc.isVisible(v))
return cc.makeAccessible(v);
return null;
@@ -812,7 +812,7 @@ public final class ClassInfo {
* <br>Results are in alphabetical order.
*/
public List<FieldInfo> getPublicFields() {
- return new ReadOnlyArrayList<>(getPublicFieldsInternal());
+ return new UnmodifiableArray<>(_getPublicFields());
}
/**
@@ -823,7 +823,7 @@ public final class ClassInfo {
* <br>Results are in alphabetical order.
*/
public List<FieldInfo> getDeclaredFields() {
- return new ReadOnlyArrayList<>(getDeclaredFieldsInternal());
+ return new UnmodifiableArray<>(_getDeclaredFields());
}
/**
@@ -834,7 +834,7 @@ public final class ClassInfo {
* <br>Results are ordered child-to-parent, and then alphabetical
per class.
*/
public List<FieldInfo> getAllFields() {
- return new ReadOnlyArrayList<>(getAllFieldsInternal());
+ return new UnmodifiableArray<>(_getAllFields());
}
/**
@@ -845,7 +845,7 @@ public final class ClassInfo {
* <br>Results are ordered parent-to-child, and then alphabetical
per class.
*/
public List<FieldInfo> getAllFieldsParentFirst() {
- return new
ReadOnlyArrayList<>(getAllFieldsParentFirstInternal());
+ return new UnmodifiableArray<>(_getAllFieldsParentFirst());
}
/**
@@ -855,7 +855,7 @@ public final class ClassInfo {
* @return The public field, or <jk>null</jk> if not found.
*/
public FieldInfo getPublicField(String name) {
- for (FieldInfo f : getPublicFieldsInternal())
+ for (FieldInfo f : _getPublicFields())
if (f.getName().equals(name))
return f;
return null;
@@ -868,7 +868,7 @@ public final class ClassInfo {
* @return The declared field, or <jk>null</jk> if not found.
*/
public FieldInfo getDeclaredField(String name) {
- for (FieldInfo f : getDeclaredFieldsInternal())
+ for (FieldInfo f : _getDeclaredFields())
if (f.getName().equals(name))
return f;
return null;
@@ -881,7 +881,7 @@ public final class ClassInfo {
* @return The public field, or <jk>null</jk> if not found.
*/
public FieldInfo getStaticPublicField(String name) {
- for (FieldInfo f : getPublicFieldsInternal())
+ for (FieldInfo f : _getPublicFields())
if (f.isStatic() && f.getName().equals(name))
return f;
return null;
@@ -894,20 +894,20 @@ public final class ClassInfo {
* @return The public field, or <jk>null</jk> if not found.
*/
public Field getStaticPublicFieldInner(String name) {
- for (FieldInfo f : getPublicFieldsInternal())
+ for (FieldInfo f : _getPublicFields())
if (f.isStatic() && f.getName().equals(name))
return f.inner();
return null;
}
- private List<FieldInfo> appendDeclaredFields(List<FieldInfo> l) {
- for (FieldInfo f : getDeclaredFieldsInternal())
+ private List<FieldInfo> _appendDeclaredFields(List<FieldInfo> l) {
+ for (FieldInfo f : _getDeclaredFields())
l.add(f);
return l;
}
- private Map<String,FieldInfo>
appendDeclaredPublicFields(Map<String,FieldInfo> m) {
- for (FieldInfo f : getDeclaredFieldsInternal()) {
+ private Map<String,FieldInfo>
_appendDeclaredPublicFields(Map<String,FieldInfo> m) {
+ for (FieldInfo f : _getDeclaredFields()) {
String fn = f.getName();
if (f.isPublic() && ! (m.containsKey(fn) ||
"$jacocoData".equals(fn)))
m.put(f.getName(), f);
@@ -915,11 +915,11 @@ public final class ClassInfo {
return m;
}
- private FieldInfo[] getPublicFieldsInternal() {
+ private FieldInfo[] _getPublicFields() {
if (publicFields == null) {
Map<String,FieldInfo> m = new LinkedHashMap<>();
- for (ClassInfo c : getParentsInternal())
- c.appendDeclaredPublicFields(m);
+ for (ClassInfo c : _getParents())
+ c._appendDeclaredPublicFields(m);
List<FieldInfo> l = new ArrayList<>(m.values());
l.sort(null);
publicFields = l.toArray(new FieldInfo[l.size()]);
@@ -927,7 +927,7 @@ public final class ClassInfo {
return publicFields;
}
- private FieldInfo[] getDeclaredFieldsInternal() {
+ private FieldInfo[] _getDeclaredFields() {
if (declaredFields == null) {
Field[] ff = c == null ? new Field[0] :
c.getDeclaredFields();
List<FieldInfo> l = new ArrayList<>(ff.length);
@@ -940,21 +940,21 @@ public final class ClassInfo {
return declaredFields;
}
- private FieldInfo[] getAllFieldsInternal() {
+ private FieldInfo[] _getAllFields() {
if (allFields == null) {
List<FieldInfo> l = new ArrayList<>();
- for (ClassInfo c : getAllParentsInternal())
- c.appendDeclaredFields(l);
+ for (ClassInfo c : _getAllParents())
+ c._appendDeclaredFields(l);
allFields = l.toArray(new FieldInfo[l.size()]);
}
return allFields;
}
- private FieldInfo[] getAllFieldsParentFirstInternal() {
+ private FieldInfo[] _getAllFieldsParentFirst() {
if (allFieldsParentFirst == null) {
List<FieldInfo> l = new ArrayList<>();
for (ClassInfo c : getAllParentsParentFirst())
- c.appendDeclaredFields(l);
+ c._appendDeclaredFields(l);
allFieldsParentFirst = l.toArray(new
FieldInfo[l.size()]);
}
return allFieldsParentFirst;
diff --git
a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/reflect/ConstructorInfo.java
b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/reflect/ConstructorInfo.java
index 1a81b60..c8200fc 100644
---
a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/reflect/ConstructorInfo.java
+++
b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/reflect/ConstructorInfo.java
@@ -164,7 +164,7 @@ public final class ConstructorInfo extends ExecutableInfo
implements Comparable<
i = getParamCount() - o.getParamCount();
if (i == 0) {
for (int j = 0; j < getParamCount() && i == 0;
j++) {
- Class<?>[] tpt = rawParamTypes(), opt =
o.rawParamTypes();
+ Class<?>[] tpt = _getRawParamTypes(),
opt = o._getRawParamTypes();
i =
tpt[j].getName().compareTo(opt[j].getName());
}
}
diff --git
a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/reflect/ExecutableInfo.java
b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/reflect/ExecutableInfo.java
index 2f9bdf0..026d63c 100644
---
a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/reflect/ExecutableInfo.java
+++
b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/reflect/ExecutableInfo.java
@@ -132,7 +132,7 @@ public abstract class ExecutableInfo {
* @return An array of parameter information, never <jk>null</jk>.
*/
public final List<ParamInfo> getParams() {
- return new ReadOnlyArrayList<>(getParamsInternal());
+ return new UnmodifiableArray<>(_getParams());
}
/**
@@ -143,7 +143,7 @@ public abstract class ExecutableInfo {
*/
public final ParamInfo getParam(int index) {
checkIndex(index);
- return getParamsInternal()[index];
+ return _getParams()[index];
}
/**
@@ -152,7 +152,7 @@ public abstract class ExecutableInfo {
* @return The parameter types on this executable.
*/
public final List<ClassInfo> getParamTypes() {
- return new ReadOnlyArrayList<>(getParamTypesInternal());
+ return new UnmodifiableArray<>(_getParamTypes());
}
/**
@@ -163,7 +163,7 @@ public abstract class ExecutableInfo {
*/
public final ClassInfo getParamType(int index) {
checkIndex(index);
- return getParamTypesInternal()[index];
+ return _getParamTypes()[index];
}
/**
@@ -171,8 +171,8 @@ public abstract class ExecutableInfo {
*
* @return The raw parameter types on this executable.
*/
- public final Class<?>[] getRawParamTypes() {
- return rawParamTypes().clone();
+ public final List<Class<?>> getRawParamTypes() {
+ return new UnmodifiableArray<>(_getRawParamTypes());
}
/**
@@ -183,7 +183,7 @@ public abstract class ExecutableInfo {
*/
public final Class<?> getRawParamType(int index) {
checkIndex(index);
- return rawParamTypes()[index];
+ return _getRawParamTypes()[index];
}
/**
@@ -191,8 +191,8 @@ public abstract class ExecutableInfo {
*
* @return The raw generic parameter types on this executable.
*/
- public final Type[] getRawGenericParamTypes() {
- return rawGenericParamTypes().clone();
+ public final List<Type> getRawGenericParamTypes() {
+ return new UnmodifiableArray<>(_getRawGenericParamTypes());
}
/**
@@ -203,7 +203,7 @@ public abstract class ExecutableInfo {
*/
public final Type getRawGenericParamType(int index) {
checkIndex(index);
- return rawGenericParamTypes()[index];
+ return _getRawGenericParamTypes()[index];
}
/**
@@ -212,8 +212,8 @@ public abstract class ExecutableInfo {
* @return An array of raw {@link Parameter} objects, or an empty array
if executable has no parameters.
* @see Executable#getParameters()
*/
- public final Parameter[] getRawParameters() {
- return rawParameters().clone();
+ public final List<Parameter> getRawParameters() {
+ return new UnmodifiableArray<>(_getRawParameters());
}
/**
@@ -225,12 +225,12 @@ public abstract class ExecutableInfo {
*/
public final Parameter getRawParameter(int index) {
checkIndex(index);
- return rawParameters()[index];
+ return _getRawParameters()[index];
}
- private ParamInfo[] getParamsInternal() {
+ private ParamInfo[] _getParams() {
if (params == null) {
- Parameter[] rp = rawParameters();
+ Parameter[] rp = _getRawParameters();
ParamInfo[] l = new ParamInfo[rp.length];
for (int i = 0; i < rp.length; i++)
l[i] = new ParamInfo(this, rp[i], i);
@@ -239,12 +239,12 @@ public abstract class ExecutableInfo {
return params;
}
- private ClassInfo[] getParamTypesInternal() {
+ private ClassInfo[] _getParamTypes() {
if (paramTypes == null) {
- Class<?>[] ptc = rawParamTypes();
+ Class<?>[] ptc = _getRawParamTypes();
// Note that due to a bug involving Enum constructors,
getGenericParameterTypes() may
// always return an empty array. This appears to be
fixed in Java 8 b75.
- Type[] ptt = rawGenericParamTypes();
+ Type[] ptt = _getRawGenericParamTypes();
if (ptt.length != ptc.length)
ptt = ptc;
ClassInfo[] l = new ClassInfo[ptc.length];
@@ -255,19 +255,19 @@ public abstract class ExecutableInfo {
return paramTypes;
}
- Class<?>[] rawParamTypes() {
+ Class<?>[] _getRawParamTypes() {
if (rawParamTypes == null)
rawParamTypes = e.getParameterTypes();
return rawParamTypes;
}
- Type[] rawGenericParamTypes() {
+ private Type[] _getRawGenericParamTypes() {
if (rawGenericParamTypes == null)
rawGenericParamTypes = re.getGenericParameterTypes();
return rawGenericParamTypes;
}
- Parameter[] rawParameters() {
+ private Parameter[] _getRawParameters() {
if (rawParameters == null)
rawParameters = re.getParameters();
return rawParameters;
@@ -315,7 +315,7 @@ public abstract class ExecutableInfo {
* @return The exception types on this executable.
*/
public final List<ClassInfo> getExceptionTypes() {
- return new ReadOnlyArrayList<>(getExceptionTypesInternal());
+ return new UnmodifiableArray<>(_getExceptionTypes());
}
/**
@@ -324,12 +324,12 @@ public abstract class ExecutableInfo {
* @return The raw exception types on this executable.
*/
public final Class<?>[] getRawExceptionTypes() {
- return rawExceptionTypes().clone();
+ return _getRawExceptionTypes().clone();
}
- private ClassInfo[] getExceptionTypesInternal() {
+ private ClassInfo[] _getExceptionTypes() {
if (exceptionInfos == null) {
- Class<?>[] exceptionTypes = rawExceptionTypes();
+ Class<?>[] exceptionTypes = _getRawExceptionTypes();
ClassInfo[] l = new ClassInfo[exceptionTypes.length];
for (int i = 0; i < exceptionTypes.length; i++)
l[i] = ClassInfo.of(exceptionTypes[i]);
@@ -338,7 +338,7 @@ public abstract class ExecutableInfo {
return exceptionInfos;
}
- private Class<?>[] rawExceptionTypes() {
+ private Class<?>[] _getRawExceptionTypes() {
if (rawExceptionTypes == null)
rawExceptionTypes = e.getExceptionTypes();
return rawExceptionTypes;
@@ -467,7 +467,7 @@ public abstract class ExecutableInfo {
* @return <jk>true</jk> if this method has this arguments in the exact
order.
*/
public final boolean hasParamTypes(Class<?>...args) {
- Class<?>[] pt = rawParamTypes();
+ Class<?>[] pt = _getRawParamTypes();
if (pt.length == args.length) {
for (int i = 0; i < pt.length; i++)
if (! pt[i].equals(args[i]))
@@ -484,7 +484,7 @@ public abstract class ExecutableInfo {
* @return <jk>true</jk> if this method has this arguments in the exact
order.
*/
public final boolean hasParamTypes(ClassInfo...args) {
- Class<?>[] pt = rawParamTypes();
+ Class<?>[] pt = _getRawParamTypes();
if (pt.length == args.length) {
for (int i = 0; i < pt.length; i++)
if (! pt[i].equals(args[i].inner()))
@@ -501,7 +501,7 @@ public abstract class ExecutableInfo {
* @return <jk>true</jk> if this method has this arguments in the exact
order.
*/
public final boolean hasParamTypeParents(Class<?>...args) {
- Class<?>[] pt = rawParamTypes();
+ Class<?>[] pt = _getRawParamTypes();
if (pt.length == args.length) {
for (int i = 0; i < pt.length; i++)
if (! args[i].isAssignableFrom(pt[i]))
@@ -518,7 +518,7 @@ public abstract class ExecutableInfo {
* @return <jk>true</jk> if this method has this arguments in the exact
order.
*/
public final boolean hasParamTypeParents(ClassInfo...args) {
- Class<?>[] pt = rawParamTypes();
+ Class<?>[] pt = _getRawParamTypes();
if (pt.length == args.length) {
for (int i = 0; i < pt.length; i++)
if (! args[i].inner().isAssignableFrom(pt[i]))
@@ -535,7 +535,7 @@ public abstract class ExecutableInfo {
* @return <jk>true</jk> if this method has at most only this arguments
in any order.
*/
public final boolean hasFuzzyParamTypes(Class<?>...args) {
- return ClassUtils.fuzzyArgsMatch(rawParamTypes(), args) != -1;
+ return ClassUtils.fuzzyArgsMatch(_getRawParamTypes(), args) !=
-1;
}
/**
@@ -545,7 +545,7 @@ public abstract class ExecutableInfo {
* @return <jk>true</jk> if this method has at most only this arguments
in any order.
*/
public boolean hasFuzzyParamTypes(ClassInfo...args) {
- return ClassUtils.fuzzyArgsMatch(rawParamTypes(), args) != -1;
+ return ClassUtils.fuzzyArgsMatch(_getRawParamTypes(), args) !=
-1;
}
/**
@@ -737,7 +737,7 @@ public abstract class ExecutableInfo {
public final String getShortName() {
StringBuilder sb = new StringBuilder(64);
sb.append(getSimpleName()).append('(');
- Class<?>[] pt = rawParamTypes();
+ Class<?>[] pt = _getRawParamTypes();
for (int i = 0; i < pt.length; i++) {
if (i > 0)
sb.append(',');
diff --git
a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/reflect/MethodInfo.java
b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/reflect/MethodInfo.java
index 0672f2e..f9d0b39 100644
---
a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/reflect/MethodInfo.java
+++
b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/reflect/MethodInfo.java
@@ -12,8 +12,6 @@
//
***************************************************************************************************************************
package org.apache.juneau.reflect;
-import static org.apache.juneau.internal.CollectionUtils.*;
-
import java.beans.*;
import java.lang.annotation.*;
import java.lang.reflect.*;
@@ -32,7 +30,7 @@ public final class MethodInfo extends ExecutableInfo
implements Comparable<Metho
private ClassInfo returnType;
private final Method m;
- private List<Method> matching;
+ private Method[] matching;
//-----------------------------------------------------------------------------------------------------------------
// Instantiation.
@@ -111,9 +109,7 @@ public final class MethodInfo extends ExecutableInfo
implements Comparable<Metho
* <br>Methods are ordered from child-to-parent order.
*/
public List<Method> getMatching() {
- if (matching == null)
- matching =
Collections.unmodifiableList(findMatching(new ArrayList<>(), m,
m.getDeclaringClass()));
- return matching;
+ return new UnmodifiableArray<>(_getMatching());
}
/**
@@ -123,8 +119,8 @@ public final class MethodInfo extends ExecutableInfo
implements Comparable<Metho
* All matching methods including this method itself.
* <br>Methods are ordered from parent-to-child order.
*/
- public Iterable<Method> getMatchingParentFirst() {
- return iterable(getMatching(), true);
+ public List<Method> getMatchingParentFirst() {
+ return new UnmodifiableArray<>(_getMatching(), true);
}
private static List<Method> findMatching(List<Method> l, Method m,
Class<?> c) {
@@ -146,6 +142,14 @@ public final class MethodInfo extends ExecutableInfo
implements Comparable<Metho
return null;
}
+ private Method[] _getMatching() {
+ if (matching == null) {
+ List<Method> l = findMatching(new ArrayList<>(), m,
m.getDeclaringClass());
+ matching = l.toArray(new Method[l.size()]);
+ }
+ return matching;
+ }
+
//-----------------------------------------------------------------------------------------------------------------
// Annotations
//-----------------------------------------------------------------------------------------------------------------
@@ -495,7 +499,7 @@ public final class MethodInfo extends ExecutableInfo
implements Comparable<Metho
public String getSignature() {
StringBuilder sb = new StringBuilder(128);
sb.append(m.getName());
- Class<?>[] pt = rawParamTypes();
+ Class<?>[] pt = _getRawParamTypes();
if (pt.length > 0) {
sb.append('(');
List<ParamInfo> mpi = getParams();
@@ -541,7 +545,7 @@ public final class MethodInfo extends ExecutableInfo
implements Comparable<Metho
* @return <jk>true</jk> if the method parameters only consist of the
types specified in the list.
*/
public boolean argsOnlyOfType(Class<?>...args) {
- for (Class<?> c1 : rawParamTypes()) {
+ for (Class<?> c1 : _getRawParamTypes()) {
boolean foundMatch = false;
for (Class<?> c2 : args)
if (c1 == c2)
@@ -565,10 +569,10 @@ public final class MethodInfo extends ExecutableInfo
implements Comparable<Metho
public int compareTo(MethodInfo o) {
int i = getSimpleName().compareTo(o.getSimpleName());
if (i == 0) {
- i = rawParamTypes().length - o.rawParamTypes().length;
+ i = _getRawParamTypes().length -
o._getRawParamTypes().length;
if (i == 0) {
- for (int j = 0; j < rawParamTypes().length && i
== 0; j++) {
- i =
rawParamTypes()[j].getName().compareTo(o.rawParamTypes()[j].getName());
+ for (int j = 0; j < _getRawParamTypes().length
&& i == 0; j++) {
+ i =
_getRawParamTypes()[j].getName().compareTo(o._getRawParamTypes()[j].getName());
}
}
}
diff --git
a/juneau-rest/juneau-rest-server/src/main/java/org/apache/juneau/rest/RestContext.java
b/juneau-rest/juneau-rest-server/src/main/java/org/apache/juneau/rest/RestContext.java
index 26efcac..0872903 100644
---
a/juneau-rest/juneau-rest-server/src/main/java/org/apache/juneau/rest/RestContext.java
+++
b/juneau-rest/juneau-rest-server/src/main/java/org/apache/juneau/rest/RestContext.java
@@ -3875,7 +3875,7 @@ public final class RestContext extends BeanContext {
if (!
_startCallMethods.containsKey(sig)) {
m.setAccessible();
_startCallMethods.put(sig, m.inner());
-
_startCallMethodParams.add(m.getRawParamTypes());
+
_startCallMethodParams.add((Class<?>[])m.getRawParamTypes().toArray());
assertArgsOnlyOfType(m, HttpServletRequest.class, HttpServletResponse.class);
}
break;
@@ -3884,7 +3884,7 @@ public final class RestContext extends BeanContext {
if (!
_endCallMethods.containsKey(sig)) {
m.setAccessible();
_endCallMethods.put(sig, m.inner());
-
_endCallMethodParams.add(m.getRawParamTypes());
+
_endCallMethodParams.add((Class<?>[])m.getRawParamTypes().toArray());
assertArgsOnlyOfType(m, HttpServletRequest.class, HttpServletResponse.class);
}
break;
@@ -3893,7 +3893,7 @@ public final class RestContext extends BeanContext {
if (!
_postInitMethods.containsKey(sig)) {
m.setAccessible();
_postInitMethods.put(sig, m.inner());
-
_postInitMethodParams.add(m.getRawParamTypes());
+
_postInitMethodParams.add((Class<?>[])m.getRawParamTypes().toArray());
assertArgsOnlyOfType(m, RestContext.class);
}
break;
@@ -3902,7 +3902,7 @@ public final class RestContext extends BeanContext {
if (!
_postInitChildFirstMethods.containsKey(sig)) {
m.setAccessible();
_postInitChildFirstMethods.put(sig, m.inner());
-
_postInitChildFirstMethodParams.add(m.getRawParamTypes());
+
_postInitChildFirstMethodParams.add((Class<?>[])m.getRawParamTypes().toArray());
assertArgsOnlyOfType(m, RestContext.class);
}
break;
@@ -3911,7 +3911,7 @@ public final class RestContext extends BeanContext {
if (!
_destroyMethods.containsKey(sig)) {
m.setAccessible();
_destroyMethods.put(sig, m.inner());
-
_destroyMethodParams.add(m.getRawParamTypes());
+
_destroyMethodParams.add((Class<?>[])m.getRawParamTypes().toArray());
assertArgsOnlyOfType(m, RestContext.class);
}
break;
diff --git
a/juneau-rest/juneau-rest-server/src/main/java/org/apache/juneau/rest/RestContextBuilder.java
b/juneau-rest/juneau-rest-server/src/main/java/org/apache/juneau/rest/RestContextBuilder.java
index e1f15a8..95c562c 100644
---
a/juneau-rest/juneau-rest-server/src/main/java/org/apache/juneau/rest/RestContextBuilder.java
+++
b/juneau-rest/juneau-rest-server/src/main/java/org/apache/juneau/rest/RestContextBuilder.java
@@ -225,7 +225,7 @@ public class RestContextBuilder extends BeanContextBuilder
implements ServletCon
}
for (MethodInfo m : map.values()) {
assertArgsOnlyOfType(m, RestContextBuilder.class,
ServletConfig.class);
- Class<?>[] pt = m.getRawParamTypes();
+ Class<?>[] pt =
(Class<?>[])m.getRawParamTypes().toArray();
Object[] args = new Object[pt.length];
for (int i = 0; i < args.length; i++) {
if (pt[i] == RestContextBuilder.class)
@@ -1963,7 +1963,7 @@ public class RestContextBuilder extends
BeanContextBuilder implements ServletCon
* @return This object (for method chaining).
*/
public RestContextBuilder staticFiles(String mappingString) throws
ParseException{
- for (StaticFileMapping sfm :
reverseIterable(StaticFileMapping.parse(resourceClass, mappingString)))
+ for (StaticFileMapping sfm :
riterable(StaticFileMapping.parse(resourceClass, mappingString)))
staticFiles(sfm);
return this;
}
@@ -1993,7 +1993,7 @@ public class RestContextBuilder extends
BeanContextBuilder implements ServletCon
* @throws ParseException If mapping string is malformed.
*/
public RestContextBuilder staticFiles(Class<?> baseClass, String
mappingString) throws ParseException {
- for (StaticFileMapping sfm :
reverseIterable(StaticFileMapping.parse(baseClass, mappingString)))
+ for (StaticFileMapping sfm :
riterable(StaticFileMapping.parse(baseClass, mappingString)))
staticFiles(sfm);
return this;
}
diff --git
a/juneau-rest/juneau-rest-server/src/main/java/org/apache/juneau/rest/annotation/RestConfigApply.java
b/juneau-rest/juneau-rest-server/src/main/java/org/apache/juneau/rest/annotation/RestConfigApply.java
index e5c3e12..15e72f1 100644
---
a/juneau-rest/juneau-rest-server/src/main/java/org/apache/juneau/rest/annotation/RestConfigApply.java
+++
b/juneau-rest/juneau-rest-server/src/main/java/org/apache/juneau/rest/annotation/RestConfigApply.java
@@ -174,7 +174,7 @@ public class RestConfigApply extends ConfigApply<Rest> {
for (String mapping : a.staticFiles()) {
try {
- for (StaticFileMapping sfm :
reverseIterable(StaticFileMapping.parse(c.inner(), string(mapping))))
+ for (StaticFileMapping sfm :
riterable(StaticFileMapping.parse(c.inner(), string(mapping))))
psb.addTo(REST_staticFiles, sfm);
} catch (ParseException e) {
throw new ConfigException(e, "Invalid
@Resource(staticFiles) value on class ''{0}''", c);
diff --git
a/juneau-rest/juneau-rest-server/src/main/java/org/apache/juneau/rest/annotation/RestResourceConfigApply.java
b/juneau-rest/juneau-rest-server/src/main/java/org/apache/juneau/rest/annotation/RestResourceConfigApply.java
index 4bd2969..d4a1f15 100644
---
a/juneau-rest/juneau-rest-server/src/main/java/org/apache/juneau/rest/annotation/RestResourceConfigApply.java
+++
b/juneau-rest/juneau-rest-server/src/main/java/org/apache/juneau/rest/annotation/RestResourceConfigApply.java
@@ -165,7 +165,7 @@ public class RestResourceConfigApply extends
ConfigApply<RestResource> {
for (String mapping : a.staticFiles()) {
try {
- for (StaticFileMapping sfm :
reverseIterable(StaticFileMapping.parse(c.inner(), string(mapping))))
+ for (StaticFileMapping sfm :
riterable(StaticFileMapping.parse(c.inner(), string(mapping))))
psb.addTo(REST_staticFiles, sfm);
} catch (ParseException e) {
throw new ConfigException(e, "Invalid
@Resource(staticFiles) value on class ''{0}''", c);