package org.infinispan.cli.interpreter.statement;
import org.infinispan.Cache;
import org.infinispan.cli.interpreter.result.Result;
import org.infinispan.cli.interpreter.result.StatementException;
import org.infinispan.cli.interpreter.result.StringResult;
import org.infinispan.cli.interpreter.session.Session;
import org.infinispan.configuration.cache.Configuration;
import org.infinispan.configuration.global.GlobalConfiguration;
import org.infinispan.manager.EmbeddedCacheManager;
/**
*
* InfoStatement shows configuration information about the specified cache or about the active cache manager
*
* @author Tristan Tarrant
* @since 5.2
*/
public class InfoStatement implements Statement {
final String cacheName;
public InfoStatement(String cacheName) {
this.cacheName = cacheName;
}
@Override
public Result execute(final Session session) throws StatementException {
if (cacheName != null) {
return cacheInfo(session);
} else {
return cacheManagerInfo(session);
}
}
private Result cacheManagerInfo(Session session) {
EmbeddedCacheManager cacheManager = session.getCacheManager();
GlobalConfiguration globalConfiguration = cacheManager.getCacheManagerConfiguration();
return new StringResult(globalConfiguration.toString());
}
private Result cacheInfo(Session session) {
Cache<?, ?> cache = session.getCache(cacheName);
Configuration cacheConfiguration = cache.getCacheConfiguration();
return new StringResult(cacheConfiguration.toString());
}
}