package org.rhq.augeas; import org.apache.commons.logging.Log; import org.apache.commons.logging.LogFactory; import org.rhq.augeas.config.AugeasConfiguration; import org.rhq.augeas.tree.AugeasTree; import org.rhq.augeas.tree.AugeasTreeBuilder; public abstract class AugeasComponent { AugeasProxy augeasProxy; boolean isClosed = true; private final Log log = LogFactory.getLog(this.getClass()); public abstract AugeasConfiguration initConfiguration(); public abstract AugeasTreeBuilder initTreeBuilder(); protected void reloadAugeas() { if (!isClosed) close(); augeasProxy = new AugeasProxy(initConfiguration(), initTreeBuilder()); augeasProxy.load(); isClosed = false; } public AugeasTree getAugeasTree(String moduleName) { reloadAugeas(); return augeasProxy.getAugeasTree(moduleName, true); } public void close() { isClosed = true; if (augeasProxy != null) { try { augeasProxy.close(); } catch (Exception e) { log.error("Could not close augeas instance", e); } } } public AugeasConfiguration getConfiguration() { if (augeasProxy == null) throw new RuntimeException("Could not provide augeas configuration because augeas was not initialized yet."); return augeasProxy.getConfiguration(); } }