diff --git a/jpos/src/main/java/org/jpos/util/FSDMsg.java b/jpos/src/main/java/org/jpos/util/FSDMsg.java index 8c3b6e093b..99107a529e 100644 --- a/jpos/src/main/java/org/jpos/util/FSDMsg.java +++ b/jpos/src/main/java/org/jpos/util/FSDMsg.java @@ -58,6 +58,10 @@ * *
key
*
If this optional attribute has a value of "true", then fields from another schema, specified by the value, are appended to this schema.
+ *
realm
+ *
This is the way to change the value appended to this schema when key="true". For example when the value contain character such as "/" + * it is not possible to create file in the file system. With realm="filename" you can avoid that. + *
*
separator
*
An optional attribute containing the separator for the field. This is the preferred method of specifying the separator. See the list of optional
* @@ -370,6 +374,8 @@ protected void pack (Element schema, StringBuilder sb) String type = elem.getAttributeValue ("type"); // For backward compatibility, look for a separator at the end of the type attribute, if no separator has been defined. String separator = elem.getAttributeValue ("separator"); + String realm = elem.getAttributeValue ("realm"); + if (type != null && separator == null) { separator = getSeparatorType (type); } @@ -391,6 +397,9 @@ protected void pack (Element schema, StringBuilder sb) if (key) { String v = isBinary(type) ? ISOUtil.hexString(value.getBytes(charset)) : value; keyOff = keyOff + normalizeKeyValue(v, properties); + if(realm != null && realm.length() > 0){ + keyOff = realm; + } defaultKey += elem.getAttributeValue ("default-key"); } } @@ -425,6 +434,7 @@ protected void unpack (InputStreamReader r, Element schema) int length = Integer.parseInt (elem.getAttributeValue ("length")); String type = elem.getAttributeValue ("type").toUpperCase(); String separator = elem.getAttributeValue ("separator"); + String realm = elem.getAttributeValue ("realm"); if (/* type != null && */ // can't be null or we would have NPE'ed when .toUpperCase() separator == null) { separator = getSeparatorType (type); @@ -436,6 +446,9 @@ protected void unpack (InputStreamReader r, Element schema) if (key) { keyOff = keyOff + normalizeKeyValue(value, properties); + if(realm != null && realm.length() > 0){ + keyOff = realm; + } defaultKey += elem.getAttributeValue ("default-key"); }