* Made also private instance methods unsynchronized, since the only drawback
are concurrent method lookups, which usually happen only at the beginning when the server is started. Later, cached lookups don't have the synchronization penalty. * Commented out all debug code.
This commit is contained in:
parent
ab14bbb898
commit
7f7d663c7d
1 changed files with 85 additions and 85 deletions
|
@ -74,11 +74,11 @@ public class ClassInfo {
|
||||||
* @return the ClassInfo of cls, added to the cache if needed
|
* @return the ClassInfo of cls, added to the cache if needed
|
||||||
*/
|
*/
|
||||||
private static ClassInfo ensureClassInfo(Class cls) {
|
private static ClassInfo ensureClassInfo(Class cls) {
|
||||||
boolean debug = ESLoader.isDebugJavaAccess();
|
// boolean debug = ESLoader.isDebugJavaAccess();
|
||||||
ClassInfo classInfo = (ClassInfo) allClassInfo.get(cls);
|
ClassInfo classInfo = (ClassInfo) allClassInfo.get(cls);
|
||||||
if (classInfo == null) {
|
if (classInfo == null) {
|
||||||
if (debug) System.out.println("** Class info for class '" +
|
// if (debug) System.out.println("** Class info for class '" +
|
||||||
cls + "' not found in cache, created");
|
// cls + "' not found in cache, created");
|
||||||
classInfo = new ClassInfo();
|
classInfo = new ClassInfo();
|
||||||
allClassInfo.put(cls, classInfo);
|
allClassInfo.put(cls, classInfo);
|
||||||
}
|
}
|
||||||
|
@ -109,30 +109,30 @@ public class ClassInfo {
|
||||||
* @param cls The class for which we look for the property.
|
* @param cls The class for which we look for the property.
|
||||||
* @return The PropertyDescriptor or null if not found or in case of error
|
* @return The PropertyDescriptor or null if not found or in case of error
|
||||||
*/
|
*/
|
||||||
private synchronized PropertyDescriptor cachedBeanFieldLookup(String propertyName, Class cls) {
|
private PropertyDescriptor cachedBeanFieldLookup(String propertyName, Class cls) {
|
||||||
boolean debug = ESLoader.isDebugJavaAccess();
|
// boolean debug = ESLoader.isDebugJavaAccess();
|
||||||
|
|
||||||
// Check that there is a bean properties cache, chech if the property was cached
|
// Check that there is a bean properties cache, chech if the property was cached
|
||||||
if (beanProperties != null) {
|
if (beanProperties != null) {
|
||||||
if (debug) System.out.println("** Bean properties for class '" +
|
// if (debug) System.out.println("** Bean properties for class '" +
|
||||||
cls + "' found in cache");
|
// cls + "' found in cache");
|
||||||
PropertyDescriptor descriptor =
|
PropertyDescriptor descriptor =
|
||||||
(PropertyDescriptor) beanProperties.get(propertyName);
|
(PropertyDescriptor) beanProperties.get(propertyName);
|
||||||
if (descriptor!= null) {
|
if (descriptor!= null) {
|
||||||
if (debug) System.out.println("** property descriptor '" + propertyName + "' found in cache");
|
// if (debug) System.out.println("** property descriptor '" + propertyName + "' found in cache");
|
||||||
return descriptor;
|
return descriptor;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
// Not in cache
|
// Not in cache
|
||||||
if (debug) System.out.println("** No property named '" +
|
// if (debug) System.out.println("** No property named '" +
|
||||||
propertyName + "' found in cache, lookup started");
|
// propertyName + "' found in cache, lookup started");
|
||||||
|
|
||||||
// Do we have a cached BeanInfo ? create it if no
|
// Do we have a cached BeanInfo ? create it if no
|
||||||
if (beanInfo == null) {
|
if (beanInfo == null) {
|
||||||
try {
|
try {
|
||||||
beanInfo = Introspector.getBeanInfo(cls);
|
beanInfo = Introspector.getBeanInfo(cls);
|
||||||
} catch (IntrospectionException e) {
|
} catch (IntrospectionException e) {
|
||||||
if (debug) System.out.println(" ** Error getting beaninfo: " + e);
|
// if (debug) System.out.println(" ** Error getting beaninfo: " + e);
|
||||||
return null;
|
return null;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -142,7 +142,7 @@ public class ClassInfo {
|
||||||
PropertyDescriptor descriptor = null; // none found
|
PropertyDescriptor descriptor = null; // none found
|
||||||
for (int i=0; i<allProperties.length; i++) {
|
for (int i=0; i<allProperties.length; i++) {
|
||||||
PropertyDescriptor property = allProperties[i];
|
PropertyDescriptor property = allProperties[i];
|
||||||
if (debug) System.out.println("** Property examined: " + property.getName());
|
// if (debug) System.out.println("** Property examined: " + property.getName());
|
||||||
if (!property.getName().equals(propertyName)) continue;
|
if (!property.getName().equals(propertyName)) continue;
|
||||||
descriptor = property;
|
descriptor = property;
|
||||||
break;
|
break;
|
||||||
|
@ -238,13 +238,13 @@ public class ClassInfo {
|
||||||
}
|
}
|
||||||
|
|
||||||
// Add to cache
|
// Add to cache
|
||||||
if (debug) System.out.println("** property '" + propertyName + "' + found, add to cache");
|
// if (debug) System.out.println("** property '" + propertyName + "' + found, add to cache");
|
||||||
if (beanProperties==null) {
|
if (beanProperties==null) {
|
||||||
beanProperties = new Hashtable();
|
beanProperties = new Hashtable();
|
||||||
}
|
}
|
||||||
beanProperties.put(propertyName, descriptor);
|
beanProperties.put(propertyName, descriptor);
|
||||||
} else {
|
} else {
|
||||||
if (debug) System.out.println("** No method named '" + propertyName + "' found");
|
// if (debug) System.out.println("** No method named '" + propertyName + "' found");
|
||||||
}
|
}
|
||||||
return descriptor;
|
return descriptor;
|
||||||
}
|
}
|
||||||
|
@ -274,52 +274,52 @@ public class ClassInfo {
|
||||||
* @return The method if found, null otherwise
|
* @return The method if found, null otherwise
|
||||||
*/
|
*/
|
||||||
private Method getInInterfaces(String functionName, Class [] interfaces, Class[] paramTypes) {
|
private Method getInInterfaces(String functionName, Class [] interfaces, Class[] paramTypes) {
|
||||||
boolean debug = ESLoader.isDebugJavaAccess();
|
// boolean debug = ESLoader.isDebugJavaAccess();
|
||||||
|
|
||||||
if (debug && interfaces.length>0) {
|
// if (debug && interfaces.length>0) {
|
||||||
System.out.println("** Looking in " + interfaces.length + " interfaces");
|
// System.out.println("** Looking in " + interfaces.length + " interfaces");
|
||||||
}
|
// }
|
||||||
SEARCHININTERFACE:
|
SEARCHININTERFACE:
|
||||||
for (int ix=0; ix<interfaces.length; ix++) {
|
for (int ix=0; ix<interfaces.length; ix++) {
|
||||||
Class theInterface=interfaces[ix];
|
Class theInterface=interfaces[ix];
|
||||||
if (Modifier.isPublic(theInterface.getModifiers())) {
|
if (Modifier.isPublic(theInterface.getModifiers())) {
|
||||||
if (debug) {
|
// if (debug) {
|
||||||
System.out.println("** Looking in public interface: " + theInterface);
|
// System.out.println("** Looking in public interface: " + theInterface);
|
||||||
}
|
// }
|
||||||
try {
|
try {
|
||||||
Method method = theInterface.getDeclaredMethod(functionName,paramTypes);
|
Method method = theInterface.getDeclaredMethod(functionName,paramTypes);
|
||||||
if (Modifier.isPublic(method.getModifiers())) {
|
if (Modifier.isPublic(method.getModifiers())) {
|
||||||
if (debug) {
|
// if (debug) {
|
||||||
System.out.println("** Public method found: " + functionName);
|
// System.out.println("** Public method found: " + functionName);
|
||||||
}
|
// }
|
||||||
return method;
|
return method;
|
||||||
}
|
}
|
||||||
} catch (NoSuchMethodException e) {
|
} catch (NoSuchMethodException e) {
|
||||||
if (debug) {
|
// if (debug) {
|
||||||
System.out.println("** The method has no public declaration in the interface: "+ functionName);
|
// System.out.println("** The method has no public declaration in the interface: "+ functionName);
|
||||||
}
|
// }
|
||||||
// throw new ProgrammingError("The method has no public declaration in a public class: "+ functionName);
|
// throw new ProgrammingError("The method has no public declaration in a public class: "+ functionName);
|
||||||
} catch (SecurityException e) {
|
} catch (SecurityException e) {
|
||||||
throw new ProgrammingError("Access error inspecting method "+ functionName + ": " + e);
|
throw new ProgrammingError("Access error inspecting method "+ functionName + ": " + e);
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
if (debug) {
|
// if (debug) {
|
||||||
System.out.println("** Interface " + theInterface + " is not public - not searching for method");
|
// System.out.println("** Interface " + theInterface + " is not public - not searching for method");
|
||||||
}
|
// }
|
||||||
}
|
}
|
||||||
|
|
||||||
// Not found, try super interfaces
|
// Not found, try super interfaces
|
||||||
Class [] superInterfaces = theInterface.getInterfaces();
|
Class [] superInterfaces = theInterface.getInterfaces();
|
||||||
Method method = getInInterfaces(functionName, superInterfaces, paramTypes);
|
Method method = getInInterfaces(functionName, superInterfaces, paramTypes);
|
||||||
if (method!=null) {
|
if (method!=null) {
|
||||||
if (debug) System.out.println("** Method found in super interfaces");
|
// if (debug) System.out.println("** Method found in super interfaces");
|
||||||
return method;
|
return method;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
if (debug) {
|
// if (debug) {
|
||||||
System.out.println("** No method found in interface and super interfaces");
|
// System.out.println("** No method found in interface and super interfaces");
|
||||||
}
|
// }
|
||||||
return null;
|
return null;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -336,27 +336,27 @@ public class ClassInfo {
|
||||||
* @param cls The class in which the function is defined
|
* @param cls The class in which the function is defined
|
||||||
* @return The list of methods or null in case of error or if none found.
|
* @return The list of methods or null in case of error or if none found.
|
||||||
*/
|
*/
|
||||||
private synchronized Method [] cachedPublicMethodLookup(String functionName, Class cls) throws EcmaScriptException {
|
private Method [] cachedPublicMethodLookup(String functionName, Class cls) throws EcmaScriptException {
|
||||||
boolean debug = ESLoader.isDebugJavaAccess();
|
// boolean debug = ESLoader.isDebugJavaAccess();
|
||||||
if (publicMethods != null) {
|
if (publicMethods != null) {
|
||||||
if (debug) System.out.println("** Method descriptor for class '" +
|
// if (debug) System.out.println("** Method descriptor for class '" +
|
||||||
cls + "' found in cache");
|
// cls + "' found in cache");
|
||||||
Method [] methods = (Method []) publicMethods.get(functionName);
|
Method [] methods = (Method []) publicMethods.get(functionName);
|
||||||
if (methods!= null) {
|
if (methods!= null) {
|
||||||
if (debug) System.out.println("** " + methods.length +
|
// if (debug) System.out.println("** " + methods.length +
|
||||||
" method(s) named '" + functionName + "' found in cache");
|
// " method(s) named '" + functionName + "' found in cache");
|
||||||
return methods;
|
return methods;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
// Not in cache, find if any matching the same name can be found
|
// Not in cache, find if any matching the same name can be found
|
||||||
if (debug) System.out.println("** No method named '" +
|
// if (debug) System.out.println("** No method named '" +
|
||||||
functionName + "' found in class cache, lookup started");
|
// functionName + "' found in class cache, lookup started");
|
||||||
Method [] allMethods = cls.getMethods();
|
Method [] allMethods = cls.getMethods();
|
||||||
Vector methodVector = new Vector(allMethods.length);
|
Vector methodVector = new Vector(allMethods.length);
|
||||||
boolean wasFound = false;
|
boolean wasFound = false;
|
||||||
for (int i=0; i<allMethods.length; i++) {
|
for (int i=0; i<allMethods.length; i++) {
|
||||||
Method method = allMethods[i];
|
Method method = allMethods[i];
|
||||||
if (debug) System.out.println("** Method examined: " + method.toString());
|
// if (debug) System.out.println("** Method examined: " + method.toString());
|
||||||
if (!method.getName().equals(functionName)) continue;
|
if (!method.getName().equals(functionName)) continue;
|
||||||
// Method has same name, some closer examination is needed:
|
// Method has same name, some closer examination is needed:
|
||||||
// If the class itself is not public, there is an access error if
|
// If the class itself is not public, there is an access error if
|
||||||
|
@ -365,8 +365,8 @@ public class ClassInfo {
|
||||||
// I am not too sure of what happens if the method is defined in an
|
// I am not too sure of what happens if the method is defined in an
|
||||||
// interface...
|
// interface...
|
||||||
if (!Modifier.isStatic(cls.getModifiers()) && !Modifier.isPublic(cls.getModifiers())) {
|
if (!Modifier.isStatic(cls.getModifiers()) && !Modifier.isPublic(cls.getModifiers())) {
|
||||||
if (debug) System.out.println("** Class " + cls +
|
// if (debug) System.out.println("** Class " + cls +
|
||||||
" is not public, examining superclasses and interfaces to find proper method descriptor");
|
// " is not public, examining superclasses and interfaces to find proper method descriptor");
|
||||||
|
|
||||||
Class[] paramTypes = method.getParameterTypes();
|
Class[] paramTypes = method.getParameterTypes();
|
||||||
SEARCHPUBLIC:
|
SEARCHPUBLIC:
|
||||||
|
@ -383,31 +383,31 @@ public class ClassInfo {
|
||||||
|
|
||||||
// Look in the class
|
// Look in the class
|
||||||
if (Modifier.isPublic(theClass.getModifiers())) {
|
if (Modifier.isPublic(theClass.getModifiers())) {
|
||||||
if (debug) {
|
// if (debug) {
|
||||||
System.out.println("** Looking in public class: " + theClass);
|
// System.out.println("** Looking in public class: " + theClass);
|
||||||
}
|
// }
|
||||||
try {
|
try {
|
||||||
m = theClass.getDeclaredMethod(functionName,paramTypes);
|
m = theClass.getDeclaredMethod(functionName,paramTypes);
|
||||||
if (Modifier.isPublic(method.getModifiers())) {
|
if (Modifier.isPublic(method.getModifiers())) {
|
||||||
if (debug) {
|
// if (debug) {
|
||||||
System.out.println("** Public method found: " + functionName);
|
// System.out.println("** Public method found: " + functionName);
|
||||||
}
|
// }
|
||||||
method = m;
|
method = m;
|
||||||
wasFound = true;
|
wasFound = true;
|
||||||
break SEARCHPUBLIC;
|
break SEARCHPUBLIC;
|
||||||
}
|
}
|
||||||
} catch (NoSuchMethodException e) {
|
} catch (NoSuchMethodException e) {
|
||||||
if (debug) {
|
// if (debug) {
|
||||||
System.out.println("** The method has no public declaration in the public class: "+ functionName);
|
// System.out.println("** The method has no public declaration in the public class: "+ functionName);
|
||||||
}
|
// }
|
||||||
// throw new ProgrammingError("The method has no public declaration in a public class: "+ functionName);
|
// throw new ProgrammingError("The method has no public declaration in a public class: "+ functionName);
|
||||||
} catch (SecurityException e) {
|
} catch (SecurityException e) {
|
||||||
throw new ProgrammingError("Access error inspecting method "+ functionName + ": " + e);
|
throw new ProgrammingError("Access error inspecting method "+ functionName + ": " + e);
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
if (debug) {
|
// if (debug) {
|
||||||
System.out.println("** Class " + theClass + " is not public - not searching for method");
|
// System.out.println("** Class " + theClass + " is not public - not searching for method");
|
||||||
}
|
// }
|
||||||
}
|
}
|
||||||
|
|
||||||
} // for SEARCHPUBLIC
|
} // for SEARCHPUBLIC
|
||||||
|
@ -427,7 +427,7 @@ public class ClassInfo {
|
||||||
Method [] methods = null;
|
Method [] methods = null;
|
||||||
int nmbMethods = methodVector.size();
|
int nmbMethods = methodVector.size();
|
||||||
if (nmbMethods>0) {
|
if (nmbMethods>0) {
|
||||||
if (debug) System.out.println("** " + nmbMethods + " methods named: '" + functionName + "' + found, add to class cache");
|
// if (debug) System.out.println("** " + nmbMethods + " methods named: '" + functionName + "' + found, add to class cache");
|
||||||
methods = new Method[nmbMethods];
|
methods = new Method[nmbMethods];
|
||||||
methodVector.copyInto(methods);
|
methodVector.copyInto(methods);
|
||||||
if (publicMethods==null) {
|
if (publicMethods==null) {
|
||||||
|
@ -435,7 +435,7 @@ public class ClassInfo {
|
||||||
}
|
}
|
||||||
publicMethods.put(functionName, methods);
|
publicMethods.put(functionName, methods);
|
||||||
} else {
|
} else {
|
||||||
if (debug) System.out.println("** No method named '" + functionName + "' found");
|
// if (debug) System.out.println("** No method named '" + functionName + "' found");
|
||||||
}
|
}
|
||||||
return methods;
|
return methods;
|
||||||
}
|
}
|
||||||
|
@ -468,28 +468,28 @@ public class ClassInfo {
|
||||||
* @param cls The class in which the function is defined
|
* @param cls The class in which the function is defined
|
||||||
* @return The list of methods or null in case of error or if none found.
|
* @return The list of methods or null in case of error or if none found.
|
||||||
*/
|
*/
|
||||||
private synchronized Method [] cachedBeanMethodLookup(String functionName, Class cls) {
|
private Method [] cachedBeanMethodLookup(String functionName, Class cls) {
|
||||||
boolean debug = ESLoader.isDebugJavaAccess();
|
// boolean debug = ESLoader.isDebugJavaAccess();
|
||||||
if (beanMethods != null) {
|
if (beanMethods != null) {
|
||||||
if (debug) System.out.println("** Method descriptor for bean '" +
|
// if (debug) System.out.println("** Method descriptor for bean '" +
|
||||||
cls + "' found in cache");
|
// cls + "' found in cache");
|
||||||
Method [] methods = (Method []) beanMethods.get(functionName);
|
Method [] methods = (Method []) beanMethods.get(functionName);
|
||||||
if (methods!= null) {
|
if (methods!= null) {
|
||||||
if (debug) System.out.println("** " + methods.length +
|
// if (debug) System.out.println("** " + methods.length +
|
||||||
" method(s) named '" + functionName + "' found in cache");
|
// " method(s) named '" + functionName + "' found in cache");
|
||||||
return methods;
|
return methods;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
// Not in cache, find if any matching the same name can be found
|
// Not in cache, find if any matching the same name can be found
|
||||||
if (debug) System.out.println("** No method named '" +
|
// if (debug) System.out.println("** No method named '" +
|
||||||
functionName + "' found in bean cache, lookup started");
|
// functionName + "' found in bean cache, lookup started");
|
||||||
|
|
||||||
// Do we have a cached BeanInfo ? create it if no
|
// Do we have a cached BeanInfo ? create it if no
|
||||||
if (beanInfo == null) {
|
if (beanInfo == null) {
|
||||||
try {
|
try {
|
||||||
beanInfo = Introspector.getBeanInfo(cls);
|
beanInfo = Introspector.getBeanInfo(cls);
|
||||||
} catch (IntrospectionException e) {
|
} catch (IntrospectionException e) {
|
||||||
if (debug) System.out.println(" ** Error getting beaninfo: " + e);
|
// if (debug) System.out.println(" ** Error getting beaninfo: " + e);
|
||||||
return null;
|
return null;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -498,7 +498,7 @@ public class ClassInfo {
|
||||||
Vector methodVector = new Vector(allDescriptors.length);
|
Vector methodVector = new Vector(allDescriptors.length);
|
||||||
for (int i=0; i<allDescriptors.length; i++) {
|
for (int i=0; i<allDescriptors.length; i++) {
|
||||||
Method method = allDescriptors[i].getMethod();
|
Method method = allDescriptors[i].getMethod();
|
||||||
if (debug) System.out.println("** Method examined: " + method.toString());
|
// if (debug) System.out.println("** Method examined: " + method.toString());
|
||||||
if (!allDescriptors[i].getName().equals(functionName)) continue;
|
if (!allDescriptors[i].getName().equals(functionName)) continue;
|
||||||
// Method has same name, some tuning neede:
|
// Method has same name, some tuning neede:
|
||||||
// If the class itself is not public, there is an access error if
|
// If the class itself is not public, there is an access error if
|
||||||
|
@ -507,21 +507,21 @@ public class ClassInfo {
|
||||||
// I am not too sure of what happens if the method is defined in an
|
// I am not too sure of what happens if the method is defined in an
|
||||||
// interface...
|
// interface...
|
||||||
if (!Modifier.isStatic(cls.getModifiers()) && !Modifier.isPublic(cls.getModifiers())) {
|
if (!Modifier.isStatic(cls.getModifiers()) && !Modifier.isPublic(cls.getModifiers())) {
|
||||||
if (debug) System.out.println("** Bean class " + cls +
|
// if (debug) System.out.println("** Bean class " + cls +
|
||||||
" is not public, examining superclasses to find proper method descriptor");
|
// " is not public, examining superclasses to find proper method descriptor");
|
||||||
SEARCHPUBLIC:
|
SEARCHPUBLIC:
|
||||||
for (Class theClass=cls;theClass!=null;theClass=theClass.getSuperclass()) {
|
for (Class theClass=cls;theClass!=null;theClass=theClass.getSuperclass()) {
|
||||||
if (Modifier.isPublic(theClass.getModifiers())) {
|
if (Modifier.isPublic(theClass.getModifiers())) {
|
||||||
if (debug) {
|
// if (debug) {
|
||||||
System.out.println("** Looking in public superlass: " + theClass);
|
// System.out.println("** Looking in public superlass: " + theClass);
|
||||||
}
|
// }
|
||||||
try {
|
try {
|
||||||
Class[] paramTypes = method.getParameterTypes();
|
Class[] paramTypes = method.getParameterTypes();
|
||||||
Method m = theClass.getDeclaredMethod(functionName,paramTypes);
|
Method m = theClass.getDeclaredMethod(functionName,paramTypes);
|
||||||
if (Modifier.isPublic(method.getModifiers())) {
|
if (Modifier.isPublic(method.getModifiers())) {
|
||||||
if (debug) {
|
// if (debug) {
|
||||||
System.out.println("** Public method found: " + functionName);
|
// System.out.println("** Public method found: " + functionName);
|
||||||
}
|
// }
|
||||||
method = m;
|
method = m;
|
||||||
break SEARCHPUBLIC;
|
break SEARCHPUBLIC;
|
||||||
}
|
}
|
||||||
|
@ -531,9 +531,9 @@ public class ClassInfo {
|
||||||
throw new ProgrammingError("Acess error inspecting method "+ functionName + ": " + e);
|
throw new ProgrammingError("Acess error inspecting method "+ functionName + ": " + e);
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
if (debug) {
|
// if (debug) {
|
||||||
System.out.println("** Superlass " + theClass + " is not public");
|
// System.out.println("** Superlass " + theClass + " is not public");
|
||||||
}
|
// }
|
||||||
}
|
}
|
||||||
} // for
|
} // for
|
||||||
} // if class not public
|
} // if class not public
|
||||||
|
@ -547,8 +547,8 @@ public class ClassInfo {
|
||||||
Method [] methods = null;
|
Method [] methods = null;
|
||||||
int nmbMethods = methodVector.size();
|
int nmbMethods = methodVector.size();
|
||||||
if (nmbMethods>0) {
|
if (nmbMethods>0) {
|
||||||
if (debug) System.out.println("** " + nmbMethods + " methods named: '"
|
// if (debug) System.out.println("** " + nmbMethods + " methods named: '"
|
||||||
+ functionName + "' + found, add to bean cache");
|
// + functionName + "' + found, add to bean cache");
|
||||||
methods = new Method[nmbMethods];
|
methods = new Method[nmbMethods];
|
||||||
methodVector.copyInto(methods);
|
methodVector.copyInto(methods);
|
||||||
if (beanMethods==null) {
|
if (beanMethods==null) {
|
||||||
|
@ -556,8 +556,8 @@ public class ClassInfo {
|
||||||
}
|
}
|
||||||
beanMethods.put(functionName, methods);
|
beanMethods.put(functionName, methods);
|
||||||
} else {
|
} else {
|
||||||
if (debug) System.out.println("** No bean method named: '" +
|
// if (debug) System.out.println("** No bean method named: '" +
|
||||||
functionName + "' + found");
|
// functionName + "' + found");
|
||||||
}
|
}
|
||||||
return methods;
|
return methods;
|
||||||
}
|
}
|
||||||
|
|
Loading…
Add table
Reference in a new issue