diff options
Diffstat (limited to 'eaaf_core_utils')
| -rw-r--r-- | eaaf_core_utils/src/main/java/at/gv/egiz/eaaf/core/impl/idp/conf/SpConfigurationImpl.java | 183 | 
1 files changed, 183 insertions, 0 deletions
| diff --git a/eaaf_core_utils/src/main/java/at/gv/egiz/eaaf/core/impl/idp/conf/SpConfigurationImpl.java b/eaaf_core_utils/src/main/java/at/gv/egiz/eaaf/core/impl/idp/conf/SpConfigurationImpl.java new file mode 100644 index 00000000..de54d103 --- /dev/null +++ b/eaaf_core_utils/src/main/java/at/gv/egiz/eaaf/core/impl/idp/conf/SpConfigurationImpl.java @@ -0,0 +1,183 @@ +/* + * Copyright 2017 Graz University of Technology EAAF-Core Components has been developed in a + * cooperation between EGIZ, A-SIT Plus, A-SIT, and Graz University of Technology. + * + * Licensed under the EUPL, Version 1.2 or - as soon they will be approved by the European + * Commission - subsequent versions of the EUPL (the "Licence"); You may not use this work except in + * compliance with the Licence. You may obtain a copy of the Licence at: + * https://joinup.ec.europa.eu/news/understanding-eupl-v12 + * + * Unless required by applicable law or agreed to in writing, software distributed under the Licence + * is distributed on an "AS IS" basis, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express + * or implied. See the Licence for the specific language governing permissions and limitations under + * the Licence. + * + * This product combines work with different licenses. See the "NOTICE" text file for details on the + * various modules and licenses. The "NOTICE" text file is part of the distribution. Any derivative + * works that you distribute must include a readable copy of the "NOTICE" text file. +*/ + +package at.gv.egiz.eaaf.core.impl.idp.conf; + +import java.util.Collections; +import java.util.List; +import java.util.Map; + +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; + +import at.gv.egiz.eaaf.core.api.data.EaafConfigConstants; +import at.gv.egiz.eaaf.core.api.data.EaafConstants; +import at.gv.egiz.eaaf.core.api.idp.IConfiguration; +import at.gv.egiz.eaaf.core.api.idp.ISpConfiguration; +import at.gv.egiz.eaaf.core.impl.utils.KeyValueUtils; + +public class SpConfigurationImpl implements ISpConfiguration { +  private static final long serialVersionUID = 688541755446463453L; + +  private static final Logger log = LoggerFactory.getLogger(SpConfigurationImpl.class); + +  private final Map<String, String> spConfiguration; +  private final List<String> targetAreasWithNoInteralBaseIdRestriction; +  private final List<String> targetAreasWithNoBaseIdTransmissionRestriction; + +  /** +   * Service-provider configuration holder. +   * +   * @param spConfig   Key/value based configuration +   * @param authConfig Basic application configuration +   */ +  public SpConfigurationImpl(final Map<String, String> spConfig, final IConfiguration authConfig) { +    this.spConfiguration = spConfig; + +    // set oa specific restrictions +    targetAreasWithNoInteralBaseIdRestriction = Collections +        .unmodifiableList(KeyValueUtils.getListOfCsvValues(authConfig.getBasicConfiguration( +            CONFIG_KEY_RESTRICTIONS_BASEID_INTERNAL, EaafConstants.URN_PREFIX_CDID))); + +    targetAreasWithNoBaseIdTransmissionRestriction = Collections +        .unmodifiableList(KeyValueUtils.getListOfCsvValues(authConfig.getBasicConfiguration( +            CONFIG_KEY_RESTRICTIONS_BASEID_TRANSMISSION, EaafConstants.URN_PREFIX_CDID))); + +    if (log.isTraceEnabled()) { +      log.trace("Internal policy for OA: " + getUniqueIdentifier()); +      for (final String el : targetAreasWithNoInteralBaseIdRestriction) { +        log.trace(" Allow baseID processing for prefix " + el); +      } +      for (final String el : targetAreasWithNoBaseIdTransmissionRestriction) { +        log.trace(" Allow baseID transfer for prefix " + el); +      } + +    } +  } + +  @Override +  public final Map<String, String> getFullConfiguration() { +    return this.spConfiguration; + +  } + +  @Override +  public final String getConfigurationValue(final String key) { +    if (key == null) { +      return null; +    } else { +      return this.spConfiguration.get(key); +    } + +  } + +  @Override +  public final String getConfigurationValue(final String key, final String defaultValue) { +    final String value = getConfigurationValue(key); +    if (value == null) { +      return defaultValue; +    } else { +      return value; +    } +  } + +  @Override +  public final boolean isConfigurationValue(final String key) { +    return isConfigurationValue(key, false); + +  } + +  @Override +  public final boolean isConfigurationValue(final String key, final boolean defaultValue) { +    final String value = getConfigurationValue(key); +    if (value != null) { +      return Boolean.parseBoolean(value); + +    } + +    return defaultValue; +  } + +  @Override +  public final boolean containsConfigurationKey(final String key) { +    if (key == null) { +      return false; +    } else { +      return this.spConfiguration.containsKey(key); +    } + +  } + +  @Override +  public String getUniqueIdentifier() { +    return getConfigurationValue(EaafConfigConstants.SERVICE_UNIQUEIDENTIFIER); + +  } + +  @Override +  public boolean hasBaseIdInternalProcessingRestriction() { +    return false; + +  } + +  @Override +  public boolean hasBaseIdTransferRestriction() { +    return true; + +  } + +  @Override +  public final List<String> getTargetsWithNoBaseIdInternalProcessingRestriction() { +    return this.targetAreasWithNoInteralBaseIdRestriction; +  } + +  @Override +  public final List<String> getTargetsWithNoBaseIdTransferRestriction() { +    return this.targetAreasWithNoBaseIdTransmissionRestriction; +  } + +  @Override +  public List<String> getRequiredLoA() { +    log.warn( +        "Method not implemented: " + SpConfigurationImpl.class.getName() + " 'getRequiredLoA()'"); +    return null; +  } + +  @Override +  public String getLoAMatchingMode() { +    log.warn("Method not implemented: " + SpConfigurationImpl.class.getName() +        + " 'getLoAMatchingMode()'"); +    return null; +  } + +  @Override +  public String getAreaSpecificTargetIdentifier() { +    log.warn("Method not implemented: " + SpConfigurationImpl.class.getName() +        + " 'getAreaSpecificTargetIdentifier()'"); +    return null; +  } + +  @Override +  public String getFriendlyName() { +    log.warn( +        "Method not implemented: " + SpConfigurationImpl.class.getName() + " 'getFriendlyName()'"); +    return null; +  } + +} | 
