use of mx4j.persist.FilePersister in project geode by apache.
the class MX4JModelMBean method findPersister.
private PersisterMBean findPersister() throws MBeanException, InstanceNotFoundException {
Logger logger = getLogger();
ModelMBeanInfo info = getModelMBeanInfo();
if (info == null) {
// Not yet initialized
if (logger.isEnabledFor(Logger.TRACE))
logger.trace("Can't find persister, ModelMBeanInfo is null");
return null;
}
Descriptor mbeanDescriptor = info.getMBeanDescriptor();
if (mbeanDescriptor == null) {
// This is normally should not happen if ModelMBeanInfoSupport is used
if (logger.isEnabledFor(Logger.TRACE))
logger.trace("Can't find persister, MBean descriptor is null");
return null;
}
String location = (String) mbeanDescriptor.getFieldValue("persistLocation");
String name = (String) mbeanDescriptor.getFieldValue("persistName");
String mbeanName = (String) mbeanDescriptor.getFieldValue("name");
if (logger.isEnabledFor(Logger.DEBUG))
logger.debug("Persistence fields: location=" + location + ", name=" + name);
if (mbeanName == null && name == null) {
if (logger.isEnabledFor(Logger.DEBUG))
logger.debug("Persistence is not supported by this ModelMBean");
return null;
}
// Try to see if this mbean should delegate to another mbean
if (name != null) {
try {
ObjectName objectName = new ObjectName(name.trim());
// OK, a valid object name
MBeanServer server = getMBeanServer();
if (server == null)
throw new MBeanException(new IllegalStateException(LocalizedStrings.MX4JModelMBean_MX4JMODELMBEAN_IS_NOT_REGISTERED.toLocalizedString()));
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;
}
}
Aggregations