if (server == null) throw new MBeanException(new IllegalStateException("RequiredModelMBean is not registered"));
if (server.isRegistered(objectName) && server.isInstanceOf(objectName, PersisterMBean.class.getName()))
{
// OK, the given mbean is registered with this mbean server
PersisterMBean persister = new MBeanPersister(server, objectName);
if (logger.isEnabledFor(Logger.DEBUG)) logger.debug("Persistence is delegated to this MBean: " + objectName);
return persister;
}
else
{
throw new InstanceNotFoundException(objectName.toString());
}
}
catch (MalformedObjectNameException ignored)
{
// It does not delegates to another mbean, use default
if (logger.isEnabledFor(Logger.TRACE)) logger.trace("Persistence is not delegated to another MBean");
}
// Default is serialization to file
FilePersister persister = new FilePersister(location, name);
if (logger.isEnabledFor(Logger.DEBUG)) logger.debug("Persistence is realized through file system in " + persister.getFileName());
return persister;
}
else
{
// Only location given, use MBean name
FilePersister persister = new FilePersister(location, mbeanName);
if (logger.isEnabledFor(Logger.DEBUG)) logger.debug("Persistence is realized through file system in " + persister.getFileName());
return persister;
}
}