/* * Copyright 2013 JBoss Inc * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package org.overlord.dtgov.ui.server; import java.util.ArrayList; import java.util.Iterator; import java.util.List; import javax.enterprise.context.ApplicationScoped; import org.apache.commons.configuration.Configuration; import org.overlord.commons.config.ConfigurationFactory; import org.overlord.dtgov.ui.server.services.tasks.TaskClientAccessor; /** * Global access to configuration information. * * @author eric.wittmann@redhat.com */ @ApplicationScoped public class DtgovUIConfig { public static final String DTGOV_UI_CONFIG_FILE_NAME = "dtgov-ui.config.file.name"; //$NON-NLS-1$ public static final String DTGOV_UI_CONFIG_FILE_REFRESH = "dtgov-ui.config.file.refresh"; //$NON-NLS-1$ // S-RAMP related properties public static final String SRAMP_ATOM_API_ENDPOINT = "dtgov-ui.s-ramp.atom-api.endpoint"; //$NON-NLS-1$ public static final String SRAMP_ATOM_API_AUTH_PROVIDER = "dtgov-ui.s-ramp.atom-api.authentication.provider"; //$NON-NLS-1$ public static final String SRAMP_ATOM_API_BASIC_AUTH_USER = "dtgov-ui.s-ramp.atom-api.authentication.basic.username"; //$NON-NLS-1$ public static final String SRAMP_ATOM_API_BASIC_AUTH_PASS = "dtgov-ui.s-ramp.atom-api.authentication.basic.password"; //$NON-NLS-1$ public static final String SRAMP_ATOM_API_SAML_ISSUER = "dtgov-ui.s-ramp.atom-api.authentication.saml.issuer"; //$NON-NLS-1$ public static final String SRAMP_ATOM_API_SAML_SERVICE = "dtgov-ui.s-ramp.atom-api.authentication.saml.service"; //$NON-NLS-1$ public static final String SRAMP_ATOM_API_SAML_AUTH_SIGN_ASSERTIONS = "dtgov-ui.s-ramp.atom-api.authentication.saml.sign-assertions"; //$NON-NLS-1$ public static final String SRAMP_ATOM_API_SAML_AUTH_KEYSTORE = "dtgov-ui.s-ramp.atom-api.authentication.saml.keystore"; //$NON-NLS-1$ public static final String SRAMP_ATOM_API_SAML_AUTH_KEYSTORE_PASSWORD = "dtgov-ui.s-ramp.atom-api.authentication.saml.keystore-password"; //$NON-NLS-1$ public static final String SRAMP_ATOM_API_SAML_AUTH_KEY_ALIAS = "dtgov-ui.s-ramp.atom-api.authentication.saml.key-alias"; //$NON-NLS-1$ public static final String SRAMP_ATOM_API_SAML_AUTH_KEY_PASSWORD = "dtgov-ui.s-ramp.atom-api.authentication.saml.key-password"; //$NON-NLS-1$ public static final String SRAMP_ATOM_API_VALIDATING = "dtgov-ui.s-ramp.atom-api.validating"; //$NON-NLS-1$ // Task API related properties public static final String TASK_API_ENDPOINT = "dtgov-ui.task-api.endpoint"; //$NON-NLS-1$ public static final String TASK_CLIENT_CLASS = "dtgov-ui.task-client.class"; //$NON-NLS-1$ public static final String TASK_API_AUTH_PROVIDER = "dtgov-ui.task-api.authentication.provider"; //$NON-NLS-1$ public static final String TASK_API_BASIC_AUTH_USER = "dtgov-ui.task-api.authentication.basic.username"; //$NON-NLS-1$ public static final String TASK_API_BASIC_AUTH_PASS = "dtgov-ui.task-api.authentication.basic.password"; //$NON-NLS-1$ public static final String TASK_API_SAML_ISSUER = "dtgov-ui.task-api.authentication.saml.issuer"; //$NON-NLS-1$ public static final String TASK_API_SAML_SERVICE = "dtgov-ui.task-api.authentication.saml.service"; //$NON-NLS-1$ public static final String TASK_API_SAML_AUTH_SIGN_ASSERTIONS = "dtgov-ui.task-api.authentication.saml.sign-assertions"; //$NON-NLS-1$ public static final String TASK_API_SAML_AUTH_KEYSTORE = "dtgov-ui.task-api.authentication.saml.keystore"; //$NON-NLS-1$ public static final String TASK_API_SAML_AUTH_KEYSTORE_PASSWORD = "dtgov-ui.task-api.authentication.saml.keystore-password"; //$NON-NLS-1$ public static final String TASK_API_SAML_AUTH_KEY_ALIAS = "dtgov-ui.task-api.authentication.saml.key-alias"; //$NON-NLS-1$ public static final String TASK_API_SAML_AUTH_KEY_PASSWORD = "dtgov-ui.task-api.authentication.saml.key-password"; //$NON-NLS-1$ // DTGOV API related properties public static final String DTGOV_API_ENDPOINT = "dtgov-ui.dtgov-api.endpoint"; //$NON-NLS-1$ public static final String DTGOV_CLIENT_CLASS = "dtgov-ui.dtgov-client.class"; //$NON-NLS-1$ public static final String DTGOV_API_AUTH_PROVIDER = "dtgov-ui.dtgov-api.authentication.provider"; //$NON-NLS-1$ public static final String DTGOV_API_BASIC_AUTH_USER = "dtgov-ui.dtgov-api.authentication.basic.username"; //$NON-NLS-1$ public static final String DTGOV_API_BASIC_AUTH_PASS = "dtgov-ui.dtgov-api.authentication.basic.password"; //$NON-NLS-1$ public static final String DTGOV_API_SAML_ISSUER = "dtgov-ui.dtgov-api.authentication.saml.issuer"; //$NON-NLS-1$ public static final String DTGOV_API_SAML_SERVICE = "dtgov-ui.dtgov-api.authentication.saml.service"; //$NON-NLS-1$ public static final String DTGOV_API_SAML_AUTH_SIGN_ASSERTIONS = "dtgov-ui.dtgov-api.authentication.saml.sign-assertions"; //$NON-NLS-1$ public static final String DTGOV_API_SAML_AUTH_KEYSTORE = "dtgov-ui.dtgov-api.authentication.saml.keystore"; //$NON-NLS-1$ public static final String DTGOV_API_SAML_AUTH_KEYSTORE_PASSWORD = "dtgov-ui.dtgov-api.authentication.saml.keystore-password"; //$NON-NLS-1$ public static final String DTGOV_API_SAML_AUTH_KEY_ALIAS = "dtgov-ui.dtgov-api.authentication.saml.key-alias"; //$NON-NLS-1$ public static final String DTGOV_API_SAML_AUTH_KEY_PASSWORD = "dtgov-ui.dtgov-api.authentication.saml.key-password"; //$NON-NLS-1$ // Workflow Queries UI properties public final static String WORKFLOW_ARTIFACT_GROUP_KEY = "dtgov-ui.workflows.group"; //$NON-NLS-1$ public final static String WORKFLOW_ARTIFACT_NAME_KEY = "dtgov-ui.workflows.name"; //$NON-NLS-1$ public final static String WORKFLOW_ARTIFACT_VERSION_KEY = "dtgov-ui.workflows.version"; //$NON-NLS-1$ // Deployment Lifecycle UI properties public static final String DEPLOYMENT_CLASSIFIER_BASE = "dtgov-ui.deployment-lifecycle.classifiers.base"; //$NON-NLS-1$ public static final String DEPLOYMENT_INITIAL_CLASSIFIER = "dtgov-ui.deployment-lifecycle.classifiers.initial"; //$NON-NLS-1$ public static final String DEPLOYMENT_ALL_CLASSIFIER = "dtgov-ui.deployment-lifecycle.classifiers.all"; //$NON-NLS-1$ public static final String DEPLOYMENT_INPROGRESS_CLASSIFIER = "dtgov-ui.deployment-lifecycle.classifiers.in-progress"; //$NON-NLS-1$ // This next one is a prefix for any property that will indicate a possible classifier stage that // should be displayed in the UI. In the dtgov ui configuration file, multiple properties would // be specified that begin with this prefix and have a value of the format {label}:{classifier} public static final String DEPLOYMENT_CLASSIFIER_STAGE_PREFIX = "dtgov-ui.deployment-lifecycle.classifiers.stage"; //$NON-NLS-1$ // And another one that is a prefix for any property that will indicate a possible deployment type // that should be displayed in the UI. In the dtgov ui configuration file, multiple properties would // be specified that begin with this prefix and have a value of the format {label}:{type} public static final String DEPLOYMENT_TYPE_PREFIX = "dtgov-ui.deployment-lifecycle.types"; //$NON-NLS-1$ // Workflow properties private static final String WORKFLOW_PREFIX = "dtgov-ui.deployment-lifecycle.workflow"; //$NON-NLS-1$ public static final String WORKFLOW_PROPERTY_PREFIX = WORKFLOW_PREFIX + ".property"; //$NON-NLS-1$ // S-RAMP UI integration properties public static final String SRAMP_UI_URL_BASE = "dtgov-ui.s-ramp-browser.url-base"; //$NON-NLS-1$ private static Configuration config; static { String configFile = System.getProperty(DTGOV_UI_CONFIG_FILE_NAME); String refreshDelayStr = System.getProperty(DTGOV_UI_CONFIG_FILE_REFRESH); Long refreshDelay = 5000l; if (refreshDelayStr != null) { refreshDelay = new Long(refreshDelayStr); } config = ConfigurationFactory.createConfig( configFile, "dtgov-ui.properties", //$NON-NLS-1$ refreshDelay, "/META-INF/config/org.overlord.dtgov.ui.server.api.properties", //$NON-NLS-1$ TaskClientAccessor.class); } /** * Constructor. */ public DtgovUIConfig() { } /** * Public accessor to get the configuration. */ public Configuration getConfiguration() { return config; } /** * Gets a list of the configured deployment stages. */ public List<DeploymentStage> getStages() { List<DeploymentStage> stages = new ArrayList<DeploymentStage>(); @SuppressWarnings("unchecked") Iterator<String> stageKeys = config.getKeys(DtgovUIConfig.DEPLOYMENT_CLASSIFIER_STAGE_PREFIX); while (stageKeys.hasNext()) { String stageKey = stageKeys.next(); String value = config.getString(stageKey); if (value.contains(":")) { //$NON-NLS-1$ int idx = value.indexOf(':'); String label = value.substring(0, idx); String classifier = value.substring(idx+1); stages.add(new DeploymentStage(label, classifier)); } } return stages; } /** * A stage configured in the config file. * @author eric.wittmann@redhat.com */ public static class DeploymentStage { private final String label; private final String classifier; /** * Constructor. */ public DeploymentStage(String label, String classifier) { this.label = label; this.classifier = classifier; } /** * @return the label */ public String getLabel() { return label; } /** * @return the classifier */ public String getClassifier() { return classifier; } } }