//FIXME set fields xpath&object_name here
String clazz = managedBean.getClassName();
String group = managedBean.getGroup();
Constructor constructor = Class.forName(clazz).getConstructor();
BaseAdminMBean mbean = (BaseAdminMBean)constructor.newInstance();
mbean.setModelMBeanInfo(mbi);
//BaseConfigMBean mbean = new BaseConfigMBean(mbi);
String xpath = namingInfo.getXPath();
if("config".equals(group))
{
if(xpath!=null && xpath.length()>0)
{
Object configBean = (Object)ConfigBeansFactory.getConfigBeanByXPath(ctx, xpath);
if(configBean!=null)
mbean.setManagedResource(configBean, CONFIG_BEAN_REF);
else
throw new MBeanMetaException("instantiateMBean(): config mbean does not exist for xpath - " + xpath );
}
return mbean;
}
if( "runtime".equals(group))
{
//CONFIG BEAN
if(xpath!=null && xpath.length()>0)
{
Object configBean = (Object)ConfigBeansFactory.getConfigBeanByXPath(ctx, xpath);
if(configBean!=null)
mbean.setManagedResource(configBean, CONFIG_BEAN_REF);
}
//JSR77BEAN
//construct JSR77Beanname
String beanClassName = (String)fields.get(JSR77BEAN_FIELD_NAME);
if(beanClassName==null || beanClassName.length()==0)
beanClassName = "com.sun.enterprise.management.model."+namingInfo.getType()+"Mdl";
if(managedResource==null)
{
Class cl = Class.forName(beanClassName);
if(cl!=null)
{
String[] location = namingInfo.getLocationParams();
if(location!=null)
{
Constructor ctr = cl.getConstructor(new Class[]{location.getClass()});
if(ctr!=null)
managedResource = ctr.newInstance(new Object[]{location});
}
}
}
if(managedResource!=null)
mbean.setManagedResource(managedResource, JSR77_MODEL_BEAN_REF);
return mbean;
}
return null;
}