summaryrefslogtreecommitdiff
path: root/src/main/java/at/gv/util/config/EgovUtilPropertiesConfiguration.java
diff options
context:
space:
mode:
Diffstat (limited to 'src/main/java/at/gv/util/config/EgovUtilPropertiesConfiguration.java')
-rw-r--r--src/main/java/at/gv/util/config/EgovUtilPropertiesConfiguration.java381
1 files changed, 381 insertions, 0 deletions
diff --git a/src/main/java/at/gv/util/config/EgovUtilPropertiesConfiguration.java b/src/main/java/at/gv/util/config/EgovUtilPropertiesConfiguration.java
new file mode 100644
index 0000000..7de17aa
--- /dev/null
+++ b/src/main/java/at/gv/util/config/EgovUtilPropertiesConfiguration.java
@@ -0,0 +1,381 @@
+/*
+ * Copyright 2011 Federal Chancellery Austria and
+ * Graz University of Technology
+ *
+ * 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 at.gv.util.config;
+
+import java.io.File;
+import java.io.FileInputStream;
+import java.io.IOException;
+import java.math.BigInteger;
+import java.util.ArrayList;
+import java.util.HashMap;
+import java.util.List;
+import java.util.Map;
+import java.util.Map.Entry;
+import java.util.Properties;
+import java.util.Set;
+
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+
+import at.gv.util.MiscUtil;
+import at.gv.util.ssl.JaxWsSSLConfiguration;
+import at.gv.util.ssl.JaxWsSSLConfigurationPropertiesImpl;
+import at.gv.util.xsd.szr.pvp.Param;
+import at.gv.util.xsd.szr.pvp.PvpTokenType;
+import at.gv.util.xsd.szr.pvp.PvpTokenType.Authenticate;
+import at.gv.util.xsd.szr.pvp.PvpTokenType.Authenticate.UserPrincipal;
+import at.gv.util.xsd.szr.pvp.PvpTokenType.Authorize;
+import at.gv.util.xsd.szr.pvp.Role;
+
+/**
+ * ZUSE-Util configuration implementation based on Java properties.
+ *
+ * @author <a href="mailto:Arne.Tauber@egiz.gv.at">Arne Tauber</a>
+ *
+ */
+public class EgovUtilPropertiesConfiguration implements EgovUtilConfiguration {
+
+ Logger log = LoggerFactory.getLogger(EgovUtilPropertiesConfiguration.class);
+
+ private Properties props;
+ private String configDir = null;
+ private JaxWsSSLConfigurationPropertiesImpl moaSPSSsslConfiguration = null;
+ private JaxWsSSLConfigurationPropertiesImpl moaIDsslConfiguration = null;
+ private JaxWsSSLConfigurationPropertiesImpl moaZSsslConfiguration = null;
+ private JaxWsSSLConfigurationPropertiesImpl szrsslConfiguration = null;
+ private JaxWsSSLConfigurationPropertiesImpl ursslConfiguration = null;
+ private JaxWsSSLConfigurationPropertiesImpl missslConfiguration = null;
+ private JaxWsSSLConfigurationPropertiesImpl mmssslConfiguration = null;
+ private JaxWsSSLConfigurationPropertiesImpl uspsslConfiguration = null;
+ private JaxWsSSLConfigurationPropertiesImpl clearingsslConfiguration = null;
+ private JaxWsSSLConfigurationPropertiesImpl storkMISsslConfiguration = null;
+ private JaxWsSSLConfigurationPropertiesImpl ersbsslConfiguration = null;
+
+ public EgovUtilPropertiesConfiguration(String propertiesFileName) throws IOException {
+ if (propertiesFileName == null) {
+ throw new NullPointerException("Parameter propertiesFile must not be null.");
+ }
+ File propertiesFile = new File(propertiesFileName);
+ FileInputStream fis = new FileInputStream(propertiesFile);
+ this.configDir = propertiesFile.getParentFile().getAbsolutePath();
+ log.trace("EgovUtil Configuration directory: " + this.configDir);
+ this.props = new Properties();
+ props.load(fis);
+
+ initialize();
+ }
+
+ public EgovUtilPropertiesConfiguration(Properties props, String configDir) {
+ if (props == null) {
+ throw new NullPointerException("Parameter props must not be null.");
+ }
+ if (configDir == null) {
+ throw new NullPointerException("Argument 'configDir' must not be null.");
+ }
+ this.configDir = configDir;
+ this.props = props;
+
+ initialize();
+ }
+
+ private void initialize() {
+ moaSPSSsslConfiguration = new JaxWsSSLConfigurationPropertiesImpl(this.props, this.configDir, "egovutil.moaspss");
+ moaIDsslConfiguration = new JaxWsSSLConfigurationPropertiesImpl(this.props, this.configDir, "egovutil.moaid");
+ moaZSsslConfiguration = new JaxWsSSLConfigurationPropertiesImpl(this.props, this.configDir, "egovutil.moazs");
+ szrsslConfiguration = new JaxWsSSLConfigurationPropertiesImpl(this.props, this.configDir, "egovutil.szr");
+ ursslConfiguration = new JaxWsSSLConfigurationPropertiesImpl(this.props, this.configDir, "egovutil.ur");
+ missslConfiguration = new JaxWsSSLConfigurationPropertiesImpl(this.props, this.configDir, "egovutil.mis");
+ mmssslConfiguration = new JaxWsSSLConfigurationPropertiesImpl(this.props, this.configDir, "egovutil.mms");
+ clearingsslConfiguration = new JaxWsSSLConfigurationPropertiesImpl(this.props, this.configDir, "egovutil.zuserech");
+ uspsslConfiguration = new JaxWsSSLConfigurationPropertiesImpl(this.props, this.configDir, "egovutil.usp");
+ storkMISsslConfiguration = new JaxWsSSLConfigurationPropertiesImpl(this.props, this.configDir, "egovutil.misstork");
+ ersbsslConfiguration = new JaxWsSSLConfigurationPropertiesImpl(this.props, this.configDir, "egovutil.ersb");
+ }
+
+ public JaxWsSSLConfiguration getMOASPSSsslConfiguration() {
+ return moaSPSSsslConfiguration;
+ }
+
+ public JaxWsSSLConfiguration getMOAIDsslConfiguration() {
+ return moaIDsslConfiguration;
+ }
+
+
+ public JaxWsSSLConfiguration getSZRsslConfiguration() {
+ return szrsslConfiguration;
+ }
+
+
+ public JaxWsSSLConfiguration getURsslConfiguration() {
+ return ursslConfiguration;
+ }
+
+ public JaxWsSSLConfiguration getMISSTORKsslConfiguration() {
+ return storkMISsslConfiguration;
+ }
+
+ public boolean isMISSTORKEnvironment() {
+ try {
+ return Boolean.parseBoolean(this.props.getProperty("egovutil.misstork.test"));
+
+ } catch(Exception e) {
+ return false;
+ }
+ }
+
+ public String getMISSTORKProductionEnvironmentURL() {
+ return this.props.getProperty("egovutil.misstork.prod.url");
+ }
+
+ public String getMISSTORKTestEnvironmentURL() {
+ return this.props.getProperty("egovutil.misstork.test.url");
+ }
+
+ public boolean isSZRTestEnvironment() {
+ try {
+ return Boolean.parseBoolean(this.props.getProperty("egovutil.szr.test"));
+ } catch(Exception e) {
+ return false;
+ }
+ }
+
+
+ public boolean isURTestEnvironment() {
+ try {
+ return Boolean.parseBoolean(this.props.getProperty("egovutil.ur.test"));
+ } catch(Exception e) {
+ return false;
+ }
+ }
+
+
+ public PvpTokenType getPVPToken() {
+ return getPVPToken("szr");
+ }
+
+
+ public PvpTokenType getURPVPToken() {
+ return getPVPToken("ur");
+ }
+
+ public PvpTokenType getPVPToken(String prefix) {
+ PvpTokenType token = new PvpTokenType();
+ // set version
+ String version = props.getProperty("egovutil." + prefix + ".token.version");
+ MiscUtil.assertNotNull(version, "PVP version in configuration");
+
+ // read other information
+ String participantId = props.getProperty("egovutil." + prefix + ".token.participantid");
+ MiscUtil.assertNotNull(participantId, "Participant ID in configuration");
+
+ String gvOuDomain = props.getProperty("egovutil." + prefix + ".token.gvoudomain");
+ MiscUtil.assertNotNull(gvOuDomain, "GvOuDomain in configuration");
+
+ String userId = props.getProperty("egovutil." + prefix + ".token.userid");
+ MiscUtil.assertNotNull(userId, "User ID in configuration");
+
+ String cn = props.getProperty("egovutil." + prefix + ".token.cn");
+ MiscUtil.assertNotNull(cn, "CN in configuration");
+
+ String gvOuId = props.getProperty("egovutil." + prefix + ".token.gvouid");
+ MiscUtil.assertNotNull(gvOuId, "GvOuId in configuration");
+
+ String ou = props.getProperty("egovutil." + prefix + ".token.ou");
+ MiscUtil.assertNotNull(ou, "GvOuId in configuration");
+
+ String secClassString = props.getProperty("egovutil." + prefix + ".token.gvsecclass");
+ MiscUtil.assertNotNull(secClassString, "SecClass in configuration");
+ BigInteger secClass = new BigInteger(secClassString);
+
+ String gvGid = props.getProperty("egovutil." + prefix + ".token.gvgid");
+ MiscUtil.assertNotNull(gvGid, "GvGid in configuration");
+
+ String gvFunction = props.getProperty("egovutil." + prefix + ".token.gvfunction");
+ MiscUtil.assertNotNull(gvFunction, "GvFunction in configuration");
+
+ String roleString = props.getProperty("egovutil." + prefix + ".roles");
+ MiscUtil.assertNotNull(roleString, "Roles in configuration");
+
+ String[] roles = roleString.split(",");
+
+ token.setVersion(version);
+
+ // create authentication information
+ Authenticate authenticate = new Authenticate();
+ authenticate.setParticipantId(participantId);
+ authenticate.setGvOuDomain(gvOuDomain);
+ UserPrincipal up = new UserPrincipal();
+ up.setCn(cn);
+ up.setGvFunction(gvFunction);
+ up.setGvGid(gvGid);
+ up.setGvOuId(gvOuId);
+ up.setGvSecClass(secClass);
+ up.setOu(ou);
+ up.setUserId(userId);
+ authenticate.setUserPrincipal(up);
+ token.setAuthenticate(authenticate);
+
+ // set roles
+ Authorize authorize = new Authorize();
+
+ for (String cRole : roles) {
+ //split role parameters
+ String roleValue = null;
+ Map<String, String> roleparam = new HashMap<String, String>();
+ if (cRole.contains("(")) {
+ roleValue = cRole.substring(0, cRole.indexOf("("));
+ String[] roleParams = cRole.substring(cRole.indexOf("(") + 1, cRole.length()-1).split(",");
+ for(String param: roleParams) {
+ String[] values = param.split("=");
+ if ((values.length % 2) != 0)
+ throw new NullPointerException("RoleAttributes has no valid format");
+
+ roleparam.put(values[0], values[1]);
+ }
+
+ } else {
+ roleValue = cRole;
+ }
+
+ Role role = new Role();
+ role.setValue(roleValue);
+
+ if (!roleparam.isEmpty()) {
+ List<Param> params = role.getParam();
+ if (params == null)
+ params = new ArrayList<Param>();
+
+ Set<String> entryset = roleparam.keySet();
+ for (String entry : entryset) {
+ Param param = new Param();
+ param.setKey(entry);
+ param.setValue(roleparam.get(entry));
+ params.add(param);
+ }
+ }
+
+ role.setDummy(null);
+ authorize.getRole().add(role);
+ }
+ token.setAuthorize(authorize);
+ return token;
+ }
+
+
+ public String getSZRProductionEnvironmentURL() {
+ return this.props.getProperty("egovutil.szr.prod.url");
+ }
+
+
+ public String getSZRTestEnvironmentURL() {
+ return this.props.getProperty("egovutil.szr.test.url");
+ }
+
+
+ public String getURProductionEnvironmentURL() {
+ return this.props.getProperty("egovutil.ur.prod.url");
+ }
+
+
+ public String getURTestEnvironmentURL() {
+ return this.props.getProperty("egovutil.ur.test.url");
+ }
+
+
+ public JaxWsSSLConfiguration getMISsslConfiguration() {
+ return missslConfiguration;
+ }
+
+
+ public JaxWsSSLConfiguration getMMSsslConfiguration() {
+ return mmssslConfiguration;
+ }
+
+
+ public JaxWsSSLConfiguration getMOAZSsslConfiguration() {
+ return moaZSsslConfiguration;
+ }
+
+
+ public JaxWsSSLConfiguration getClearingsslConfiguration() {
+ return clearingsslConfiguration;
+ }
+
+
+ public boolean isUSPTestEnvironment() {
+ try {
+ return Boolean.parseBoolean(this.props.getProperty("egovutil.usp.test"));
+ } catch(Exception e) {
+ return false;
+ }
+ }
+
+
+ public String getUSPTestEnvironmentURL() {
+ return this.props.getProperty("egovutil.usp.test.url");
+ }
+
+
+ public String getUSPProductionEnvironmentURL() {
+ return this.props.getProperty("egovutil.usp.prod.url");
+ }
+
+
+ public String getUSPApplicationId() {
+ return this.props.getProperty("egovutil.usp.appid");
+ }
+
+
+ public JaxWsSSLConfiguration getUSPsslConfiguration() {
+ return uspsslConfiguration;
+ }
+
+ public PvpTokenType getUSPPVPToken() {
+ return getPVPToken("usp");
+ }
+
+ public int getHTTPRequestTimeout() {
+ return Integer.parseInt(this.props.getProperty("egovutil.usp.http.timeout","60000"));
+ }
+
+ public JaxWsSSLConfiguration getERsBsslConfiguration() {
+ return ersbsslConfiguration;
+ }
+
+
+ public boolean isERsBTestEnvironment() {
+ try {
+ return Boolean.parseBoolean(this.props.getProperty("egovutil.ersb.test"));
+
+ } catch(Exception e) {
+ return false;
+ }
+ }
+
+ public PvpTokenType getERsBPVPToken() {
+ return getPVPToken("ersb");
+ }
+
+ public String getERsBProductionEnvironmentURL() {
+ return this.props.getProperty("egovutil.ersb.prod.url");
+ }
+
+ public String getERsBTestEnvironmentURL() {
+ return this.props.getProperty("egovutil.ersb.test.url");
+ }
+
+}