org.rhq.plugins.apache.mapping.DirectiveMapping Maven / Gradle / Ivy
Go to download
Show more of this group Show more artifacts with this name
Show all versions of rhq-apache-plugin Show documentation
Show all versions of rhq-apache-plugin Show documentation
a plugin for managing Apache web servers (1.3 and later)
/*
* RHQ Management Platform
* Copyright (C) 2005-2009 Red Hat, Inc.
* All rights reserved.
*
* This program is free software; you can redistribute it and/or modify
* it under the terms of the GNU General Public License, version 2, as
* published by the Free Software Foundation, and/or the GNU Lesser
* General Public License, version 2.1, also as published by the Free
* Software Foundation.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License and the GNU Lesser General Public License
* for more details.
*
* You should have received a copy of the GNU General Public License
* and the GNU Lesser General Public License along with this program;
* if not, write to the Free Software Foundation, Inc.,
* 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
*/
package org.rhq.plugins.apache.mapping;
import org.rhq.augeas.node.AugeasNode;
import org.rhq.augeas.tree.AugeasTree;
import org.rhq.core.domain.configuration.Configuration;
import org.rhq.core.domain.configuration.definition.ConfigurationDefinition;
import org.rhq.plugins.apache.augeas.mappingImpl.MappingDirectivePerMap;
import org.rhq.plugins.apache.augeas.mappingImpl.MappingDirectivePerMapIndex;
import org.rhq.plugins.apache.augeas.mappingImpl.MappingDirectiveToSimpleProperty;
import org.rhq.plugins.apache.augeas.mappingImpl.MappingParamPerMap;
import org.rhq.plugins.apache.augeas.mappingImpl.MappingPositionToConfiguration;
import org.rhq.plugins.apache.augeas.mappingImpl.MappingToAugeasDirectivePerMap;
import org.rhq.plugins.apache.augeas.mappingImpl.MappingToAugeasDirectivePerMapIndex;
import org.rhq.plugins.apache.augeas.mappingImpl.MappingToAugeasDirectiveToSimple;
import org.rhq.plugins.apache.augeas.mappingImpl.MappingToAugeasParamPerMap;
import org.rhq.rhqtransform.AugeasToConfiguration;
import org.rhq.rhqtransform.ConfigurationToAugeas;
/**
* This enum represents the list of mapping strategies we use in the resource configuration.
*
* @author Filip Drabek
* @author Lukas Krejci
*/
public enum DirectiveMapping {
DIRECTIVE_PER_MAP {
public Configuration mapToConfiguration(AugeasTree tree, AugeasNode startNode,
ConfigurationDefinition resourceConfigDef) {
AugeasToConfiguration config = new MappingDirectivePerMap();
config.setTree(tree);
return config.loadResourceConfiguration(startNode, resourceConfigDef);
};
public void mapToAugeas(AugeasTree tree, AugeasNode node, Configuration config,
ConfigurationDefinition configDef) {
ConfigurationToAugeas mapping = new MappingToAugeasDirectivePerMap();
mapping.setTree(tree);
mapping.updateResourceConfiguration(node, configDef, config);
}
},
PARAM_PER_MAP {
public Configuration mapToConfiguration(AugeasTree tree, AugeasNode startNode,
ConfigurationDefinition resourceConfigDef) {
AugeasToConfiguration config = new MappingParamPerMap();
config.setTree(tree);
return config.loadResourceConfiguration(startNode, resourceConfigDef);
};
public void mapToAugeas(AugeasTree tree, AugeasNode node, Configuration config,
ConfigurationDefinition configDef) {
ConfigurationToAugeas mapping = new MappingToAugeasParamPerMap();
mapping.setTree(tree);
mapping.updateResourceConfiguration(node, configDef, config);
}
},
DIRECTIVE_PER_MAP_INDEX {
public Configuration mapToConfiguration(AugeasTree tree, AugeasNode startNode,
ConfigurationDefinition resourceConfigDef) {
AugeasToConfiguration config = new MappingDirectivePerMapIndex();
config.setTree(tree);
return config.loadResourceConfiguration(startNode, resourceConfigDef);
};
public void mapToAugeas(AugeasTree tree, AugeasNode node, Configuration config,
ConfigurationDefinition configDef) {
ConfigurationToAugeas mapping = new MappingToAugeasDirectivePerMapIndex();
mapping.setTree(tree);
mapping.updateResourceConfiguration(node, configDef, config);
}
},
POSITION_PROPERTY {
public Configuration mapToConfiguration(AugeasTree tree, AugeasNode startNode,
ConfigurationDefinition resourceConfigDef) {
AugeasToConfiguration config = new MappingPositionToConfiguration();
config.setTree(tree);
return config.loadResourceConfiguration(startNode, resourceConfigDef);
};
public void mapToAugeas(AugeasTree tree, AugeasNode node, Configuration config,
ConfigurationDefinition configDef) {
}
},
SIMPLE_PROP {
public Configuration mapToConfiguration(AugeasTree tree, AugeasNode startNode,
ConfigurationDefinition resourceConfigDef) {
AugeasToConfiguration config = new MappingDirectiveToSimpleProperty();
config.setTree(tree);
return config.loadResourceConfiguration(startNode, resourceConfigDef);
};
public void mapToAugeas(AugeasTree tree, AugeasNode node, Configuration config,
ConfigurationDefinition configDef) {
ConfigurationToAugeas mapping = new MappingToAugeasDirectiveToSimple();
mapping.setTree(tree);
mapping.updateResourceConfiguration(node, configDef, config);
}
};
/**
* Creates the configuration based on the supplied configuration definition,
* parsing the augeas tree starting at the start node.
*
* @param tree the augeas tree
* @param startNode the starting node
* @param resourceConfigDef the config definition
* @return the parsed configuration
*/
public abstract Configuration mapToConfiguration(AugeasTree tree, AugeasNode startNode,
ConfigurationDefinition resourceConfigDef);
public abstract void mapToAugeas(AugeasTree tree, AugeasNode node, Configuration config,
ConfigurationDefinition configDef);
}