Java Reference
In-Depth Information
Object mainObject = null;
try
{
Class<?> newClass = cl.loadClass(mainClassName);
mainObject = newClass.newInstance();
callAnnotatedMethods(mainObject, Start.class);
}
catch(Exception e)
{
System.out.println("---exception in addComponent");
e.printStackTrace();
}
components.put(componentName, mainObject);
}
public void removeComponent(String componentName)
{
Object mainObject = components.get(componentName);
if(mainObject == null)
{
return;
}
callAnnotatedMethods(mainObject, Stop.class);
components.remove(componentName);
}
public void removeAllComponents()
{
String[] componentNames =
components.keySet().toArray(new String[0]);
for(String componentName: componentNames)
{
removeComponent(componentName);
}
}
private void callAnnotatedMethods(Object mainObject,
Class<? extends Annotation> annoClass)
{
Class<?> classDesc = mainObject.getClass();
Method[] methods = classDesc.getMethods();
for(Method m : methods)
{
Class<?>[] params = m.getParameterTypes();
Class<?> returnType = m.getReturnType();
if(m.isAnnotationPresent(annoClass) &&
returnType == void.class)
{
if(params.length == 0)
{
try
{
m.invoke(mainObject);
}
catch(Exception e)
{
e.printStackTrace();
}
 
Search WWH ::




Custom Search