// Copyright 2012 Citrix Systems, Inc. Licensed under the
// Apache License, Version 2.0 (the "License"); you may not use this
// file except in compliance with the License. Citrix Systems, Inc.
// reserves all rights not expressly granted by the License.
// You may obtain a copy of the License at http://www.apache.org/licenses/LICENSE-2.0
// Unless required by applicable law or agreed to in writing, software
// distributed under the License is distributed on an "AS IS" BASIS,
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
// See the License for the specific language governing permissions and
// limitations under the License.
//
// Automatically generated by addcopyright.py at 04/03/2012
package com.cloud.utils;
import java.lang.reflect.Field;
import java.lang.reflect.Method;
import com.cloud.utils.exception.CloudRuntimeException;
public class ReflectUtil {
public static Pair<Class<?>, Field> getAnyField(Class<?> clazz, String fieldName) {
try {
return new Pair<Class<?>, Field>(clazz, clazz.getDeclaredField(fieldName));
} catch (SecurityException e) {
throw new CloudRuntimeException("How the heck?", e);
} catch (NoSuchFieldException e) {
// Do I really want this? No I don't but what can I do? It only throws the NoSuchFieldException.
Class<?> parent = clazz.getSuperclass();
if (parent != null) {
return getAnyField(parent, fieldName);
}
return null;
}
}
public static Method findMethod(Class<?> clazz, String methodName) {
do {
Method[] methods = clazz.getDeclaredMethods();
for (Method method : methods) {
if (methodName.equals(method.getName())) {
return method;
}
}
clazz = clazz.getSuperclass();
} while (clazz != null);
return null;
}
}