summaryrefslogtreecommitdiff
path: root/eaaf_core/src/main/java/at/gv/egiz/eaaf/core
diff options
context:
space:
mode:
Diffstat (limited to 'eaaf_core/src/main/java/at/gv/egiz/eaaf/core')
-rw-r--r--eaaf_core/src/main/java/at/gv/egiz/eaaf/core/api/utils/IJsonMapper.java32
-rw-r--r--eaaf_core/src/main/java/at/gv/egiz/eaaf/core/impl/idp/auth/builder/AbstractAuthenticationDataBuilder.java12
-rw-r--r--eaaf_core/src/main/java/at/gv/egiz/eaaf/core/impl/idp/builder/attributes/BPKAttributeBuilder.java16
-rw-r--r--eaaf_core/src/main/java/at/gv/egiz/eaaf/core/impl/utils/KeyValueUtils.java58
4 files changed, 81 insertions, 37 deletions
diff --git a/eaaf_core/src/main/java/at/gv/egiz/eaaf/core/api/utils/IJsonMapper.java b/eaaf_core/src/main/java/at/gv/egiz/eaaf/core/api/utils/IJsonMapper.java
new file mode 100644
index 00000000..10e6464b
--- /dev/null
+++ b/eaaf_core/src/main/java/at/gv/egiz/eaaf/core/api/utils/IJsonMapper.java
@@ -0,0 +1,32 @@
+package at.gv.egiz.eaaf.core.api.utils;
+
+import java.io.IOException;
+
+import at.gv.egiz.eaaf.core.exceptions.EAAFJsonMapperException;
+
+public interface IJsonMapper {
+
+
+ /**
+ * Serialize an object to a JSON string.
+ * @param value the object to serialize
+ * @return a JSON string
+ * @throws JsonProcessingException thrown when an error occurs during serialization
+ */
+ String serialize(Object value) throws EAAFJsonMapperException;
+
+ /**
+ * Deserialize a JSON string.
+ *
+ * @param value the JSON string to deserialize
+ * @param clazz optional parameter that determines the type of the returned object. If not set, an {@link Object} is returned.
+ * @return the deserialized JSON string as an object of type {@code clazz} or {@link Object}
+ * @throws JsonParseException if the JSON string contains invalid content.
+ * @throws JsonMappingException if the input JSON structure does not match structure expected for result type
+ * @throws IOException if an I/O problem occurs (e.g. unexpected end-of-input)
+ */
+ <T> Object deserialize(String value, Class<T> clazz) throws EAAFJsonMapperException;
+
+ //<T> Object deserialize(String value, TypeReference<T> clazz) throws EAAFJsonMapperException;
+
+} \ No newline at end of file
diff --git a/eaaf_core/src/main/java/at/gv/egiz/eaaf/core/impl/idp/auth/builder/AbstractAuthenticationDataBuilder.java b/eaaf_core/src/main/java/at/gv/egiz/eaaf/core/impl/idp/auth/builder/AbstractAuthenticationDataBuilder.java
index 47b1ecf9..558a9a33 100644
--- a/eaaf_core/src/main/java/at/gv/egiz/eaaf/core/impl/idp/auth/builder/AbstractAuthenticationDataBuilder.java
+++ b/eaaf_core/src/main/java/at/gv/egiz/eaaf/core/impl/idp/auth/builder/AbstractAuthenticationDataBuilder.java
@@ -97,7 +97,9 @@ public abstract class AbstractAuthenticationDataBuilder implements IAuthenticati
Assert.notNull(authData, "AuthData is null");
}
-
+
+ } catch ( EAAFAuthenticationException e) {
+ throw e;
} catch (XPathException | DOMException | EAAFException e) {
log.warn("Can not build authentication data from auth. process information");
@@ -461,10 +463,8 @@ public abstract class AbstractAuthenticationDataBuilder implements IAuthenticati
authData.setBPKType(result.getSecond());
} else {
- log.warn("Can not build authData, because moaSession include no valid bPK, encrypted bPK or baseID");
- throw new EAAFBuilderException("builder.08", new Object[]{"No valid " + PVPAttributeDefinitions.BPK_FRIENDLY_NAME
- + " or " + PVPAttributeDefinitions.EID_SOURCE_PIN_FRIENDLY_NAME
- + " or " + PVPAttributeDefinitions.ENC_BPK_LIST_FRIENDLY_NAME},
+ log.warn("Can not build authData, because moaSession include no valid bPK, encrypted bPK or sourceID");
+ throw new EAAFBuilderException("builder.13", new Object[]{pendingReq.getServiceProviderConfiguration().getAreaSpecificTargetIdentifier()},
"No valid " + PVPAttributeDefinitions.BPK_FRIENDLY_NAME
+ " or " + PVPAttributeDefinitions.EID_SOURCE_PIN_FRIENDLY_NAME
+ " or " + PVPAttributeDefinitions.ENC_BPK_LIST_FRIENDLY_NAME);
@@ -550,7 +550,7 @@ public abstract class AbstractAuthenticationDataBuilder implements IAuthenticati
* @return true, if bPK-Type matchs to Service-Provider configuration, otherwise false
*/
@Deprecated
- private boolean matchsReceivedbPKToOnlineApplication(ISPConfiguration oaParam, String bPKType) {
+ protected boolean matchsReceivedbPKToOnlineApplication(ISPConfiguration oaParam, String bPKType) {
return oaParam.getAreaSpecificTargetIdentifier().equals(bPKType);
}
diff --git a/eaaf_core/src/main/java/at/gv/egiz/eaaf/core/impl/idp/builder/attributes/BPKAttributeBuilder.java b/eaaf_core/src/main/java/at/gv/egiz/eaaf/core/impl/idp/builder/attributes/BPKAttributeBuilder.java
index 7005c930..714ffc9d 100644
--- a/eaaf_core/src/main/java/at/gv/egiz/eaaf/core/impl/idp/builder/attributes/BPKAttributeBuilder.java
+++ b/eaaf_core/src/main/java/at/gv/egiz/eaaf/core/impl/idp/builder/attributes/BPKAttributeBuilder.java
@@ -26,9 +26,12 @@
*******************************************************************************/
package at.gv.egiz.eaaf.core.impl.idp.builder.attributes;
+import javax.annotation.Nonnull;
+
import org.apache.commons.lang3.StringUtils;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
+import org.springframework.util.Assert;
import at.gv.egiz.eaaf.core.api.data.EAAFConstants;
import at.gv.egiz.eaaf.core.api.idp.IAttributeGenerator;
@@ -44,18 +47,21 @@ public class BPKAttributeBuilder implements IPVPAttributeBuilder {
private static final Logger log = LoggerFactory.getLogger(BPKAttributeBuilder.class);
public static final String DELIMITER_BPKTYPE_BPK = ":";
+ @Override
public String getName() {
return BPK_NAME;
}
+ @Override
public <ATT> ATT build(ISPConfiguration oaParam, IAuthData authData,
IAttributeGenerator<ATT> g) throws AttributeBuilderException {
- String result = getBpkForSP(authData);
+ final String result = getBpkForSP(authData);
log.trace("Authenticate user with bPK/wbPK: " + result);
return g.buildStringAttribute(BPK_FRIENDLY_NAME, BPK_NAME, result);
}
+ @Override
public <ATT> ATT buildEmpty(IAttributeGenerator<ATT> g) {
return g.buildEmptyAttribute(BPK_FRIENDLY_NAME, BPK_NAME);
}
@@ -68,8 +74,8 @@ public class BPKAttributeBuilder implements IPVPAttributeBuilder {
* @throws UnavailableAttributeException
*/
protected String getBpkForSP(IAuthData authData) throws UnavailableAttributeException {
- String bpk = attrMaxSize(authData.getBPK());
- String type = removeBpkTypePrefix(authData.getBPKType());
+ final String bpk = attrMaxSize(authData.getBPK());
+ final String type = removeBpkTypePrefix(authData.getBPKType());
if (StringUtils.isEmpty(bpk))
throw new UnavailableAttributeException(BPK_NAME);
@@ -98,7 +104,9 @@ public class BPKAttributeBuilder implements IPVPAttributeBuilder {
* @param type
* @return
*/
- protected String removeBpkTypePrefix(String type) {
+ @Nonnull
+ protected String removeBpkTypePrefix(@Nonnull String type) {
+ Assert.isTrue(type != null, "bPKType is 'NULL'");
if (type.startsWith(EAAFConstants.URN_PREFIX_WBPK))
return type.substring((EAAFConstants.URN_PREFIX_WBPK).length());
diff --git a/eaaf_core/src/main/java/at/gv/egiz/eaaf/core/impl/utils/KeyValueUtils.java b/eaaf_core/src/main/java/at/gv/egiz/eaaf/core/impl/utils/KeyValueUtils.java
index f0a082c3..efc47337 100644
--- a/eaaf_core/src/main/java/at/gv/egiz/eaaf/core/impl/utils/KeyValueUtils.java
+++ b/eaaf_core/src/main/java/at/gv/egiz/eaaf/core/impl/utils/KeyValueUtils.java
@@ -36,6 +36,9 @@ import java.util.Map.Entry;
import java.util.Properties;
import java.util.Set;
+import javax.annotation.Nonnull;
+import javax.annotation.Nullable;
+
import org.apache.commons.lang3.StringUtils;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
@@ -81,11 +84,11 @@ public class KeyValueUtils {
* @return Child key {String} if it exists or null
*/
public static String getFirstChildAfterPrefix(String key, String prefix) {
- String idAfterPrefix = removePrefixFromKey(key, prefix);
+ final String idAfterPrefix = removePrefixFromKey(key, prefix);
if (idAfterPrefix != null) {
- int index = idAfterPrefix.indexOf(KEY_DELIMITER);
+ final int index = idAfterPrefix.indexOf(KEY_DELIMITER);
if (index > 0) {
- String adding = idAfterPrefix.substring(0, index);
+ final String adding = idAfterPrefix.substring(0, index);
if (!(adding.isEmpty())) {
return adding;
@@ -108,7 +111,7 @@ public class KeyValueUtils {
*/
public static String getPrefixFromKey(String key, String suffix) {
if (key != null && key.endsWith(suffix)) {
- String idPreforeSuffix = key.substring(0, key.length()-suffix.length());
+ final String idPreforeSuffix = key.substring(0, key.length()-suffix.length());
if (idPreforeSuffix.endsWith(KEY_DELIMITER))
return idPreforeSuffix.substring(0, idPreforeSuffix.length()-1);
else
@@ -131,7 +134,7 @@ public class KeyValueUtils {
if (key!=null && key.startsWith(prefix)) {
String afterPrefix = key.substring(prefix.length());
- int index = afterPrefix.indexOf(KEY_DELIMITER);
+ final int index = afterPrefix.indexOf(KEY_DELIMITER);
if (index == 0) {
afterPrefix = afterPrefix.substring(1);
@@ -151,11 +154,11 @@ public class KeyValueUtils {
* @return {Map<String, String>} of key/value pairs without prefix in key, but never null
*/
public static Map<String, String> removePrefixFromKeys(Map<String, String> keys, String prefix) {
- Map<String, String> result = new HashMap<String, String>();
- Iterator<Entry<String, String>> interator = keys.entrySet().iterator();
+ final Map<String, String> result = new HashMap<String, String>();
+ final Iterator<Entry<String, String>> interator = keys.entrySet().iterator();
while(interator.hasNext()) {
- Entry<String, String> el = interator.next();
- String newKey = removePrefixFromKey(el.getKey(), prefix);
+ final Entry<String, String> el = interator.next();
+ final String newKey = removePrefixFromKey(el.getKey(), prefix);
if (StringUtils.isNotEmpty(newKey)) {
result.put(newKey, el.getValue());
}
@@ -186,10 +189,10 @@ public class KeyValueUtils {
* @return {Map<String, String>} of key/value pairs in which all keys are absolute but never null
*/
public static Map<String, String> makeKeysAbsolut(Map<String, String> input, String prefix, String absolutIdentifier) {
- Map<String, String> result = new HashMap<String, String>();
- Iterator<Entry<String, String>> interator = input.entrySet().iterator();
+ final Map<String, String> result = new HashMap<String, String>();
+ final Iterator<Entry<String, String>> interator = input.entrySet().iterator();
while(interator.hasNext()) {
- Entry<String, String> el = interator.next();
+ final Entry<String, String> el = interator.next();
if (!el.getKey().startsWith(absolutIdentifier)) {
//key is not absolute -> add prefix
result.put(prefix
@@ -213,7 +216,7 @@ public class KeyValueUtils {
*/
public static String getParentKey(String key) {
if (StringUtils.isNotEmpty(key)) {
- int index = key.lastIndexOf(KEY_DELIMITER);
+ final int index = key.lastIndexOf(KEY_DELIMITER);
if (index > 0) {
return key.substring(0, index);
@@ -232,13 +235,13 @@ public class KeyValueUtils {
*/
public static int findNextFreeListCounter(String[] input,
String listPrefix) {
- List<Integer> counters = new ArrayList<Integer>();
+ final List<Integer> counters = new ArrayList<Integer>();
if (input == null || input.length == 0)
return 0;
else {
- for (String key : input) {
- String listIndex = getFirstChildAfterPrefix(key, listPrefix);
+ for (final String key : input) {
+ final String listIndex = getFirstChildAfterPrefix(key, listPrefix);
counters.add(Integer.parseInt(listIndex));
}
@@ -259,7 +262,7 @@ public class KeyValueUtils {
if (keySet.isEmpty())
return 0;
- String[] array = new String[keySet.size()];
+ final String[] array = new String[keySet.size()];
keySet.toArray(array);
return findNextFreeListCounter(array, listPrefix);
}
@@ -278,8 +281,8 @@ public class KeyValueUtils {
public static String normalizeCSVValueString(String value) {
String normalizedCodes = null;
if (StringUtils.isNotEmpty(value)) {
- String[] codes = value.split(CSV_DELIMITER);
- for (String el: codes) {
+ final String[] codes = value.split(CSV_DELIMITER);
+ for (final String el: codes) {
if (normalizedCodes == null)
normalizedCodes = StringUtils.chomp(el.trim());
else
@@ -301,7 +304,7 @@ public class KeyValueUtils {
*/
public static boolean isCSVValueString(String value) {
if (StringUtils.isNotEmpty(value)) {
- String[] codes = value.split(CSV_DELIMITER);
+ final String[] codes = value.split(CSV_DELIMITER);
if (codes.length >= 2) {
if (StringUtils.isNotEmpty(codes[1].trim()))
return true;
@@ -322,11 +325,12 @@ public class KeyValueUtils {
* @param csv CSV encoded input data
* @return List of CSV normalized values, but never null
*/
- public static List<String> getListOfCSVValues(String csv) {
- List<String> list = new ArrayList<String>();
+ @Nonnull
+ public static List<String> getListOfCSVValues(@Nullable String csv) {
+ final List<String> list = new ArrayList<String>();
if (StringUtils.isNotEmpty(csv)) {
- String[] values = csv.split(CSV_DELIMITER);
- for (String el: values)
+ final String[] values = csv.split(CSV_DELIMITER);
+ for (final String el: values)
list.add(el.trim());
}
@@ -343,10 +347,10 @@ public class KeyValueUtils {
* @return Map of Key / Value pairs, but never null
*/
public static Map<String, String> convertListToMap(List<String> elements) {
- Map<String, String> map = new HashMap<String, String>();
- for (String el : elements) {
+ final Map<String, String> map = new HashMap<String, String>();
+ for (final String el : elements) {
if (el.contains(KEYVVALUEDELIMITER)) {
- String[] split = el.split(KEYVVALUEDELIMITER);
+ final String[] split = el.split(KEYVVALUEDELIMITER);
map.put(split[0], split[1]);
} else