Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
6 changes: 3 additions & 3 deletions modules/fsdmsgx/src/main/java/com/sample/hsm/HSMMessage.java
Original file line number Diff line number Diff line change
Expand Up @@ -25,7 +25,7 @@ public FSDMsgX getFSDMessage() {
FixedFieldPackager command = new FixedFieldPackager("command", 2, AsciiInterpreter.INSTANCE);
message.add(command);

Map<String, AFSDFieldPackager> commandCases = new HashMap<String, AFSDFieldPackager>();
Map<String, AFSDFieldPackager> commandCases = new HashMap<>();
commandCases.put("A0", getA0Packager());
commandCases.put("A1", getA1Packager());
commandCases.put("A6", getA6Packager());
Expand Down Expand Up @@ -56,15 +56,15 @@ private static AFSDFieldPackager getFAPackager() {
optionalGrp1.add(reserved1);
optionalGrp1.add(keySchemeLMK);
optionalGrp1.add(keyCheckValue);
LookAheadPackager determineGrp1 = new LookAheadPackager("LAGRP1", 0, new Byte((byte)';') ,optionalGrp1, null, new String[]{"key-scheme-lmk","key-check-value-len"}, null);
LookAheadPackager determineGrp1 = new LookAheadPackager("LAGRP1", 0, Byte.valueOf((byte)';') ,optionalGrp1, null, new String[]{"key-scheme-lmk","key-check-value-len"}, null);

FSDMsgX optionalGrp2 = new FSDMsgX("OptionalGroup2");

AFSDFieldPackager lmkid = new FixedFieldPackager("LMK-ID",2,AsciiInterpreter.INSTANCE);
AFSDFieldPackager percent = new FixedFieldPackager("delimiter-2","%",AsciiInterpreter.INSTANCE);
optionalGrp2.add(percent);
optionalGrp2.add(lmkid);
LookAheadPackager determineGrp2 = new LookAheadPackager("LAGRP2", 0, new Byte((byte)'%') ,optionalGrp2, null, new String[]{"LMK-ID"}, null);
LookAheadPackager determineGrp2 = new LookAheadPackager("LAGRP2", 0, Byte.valueOf((byte)'%') ,optionalGrp2, null, new String[]{"LMK-ID"}, null);


FSDMsgX container = new FSDMsgX("TranslateZPKReq-FA");
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -26,27 +26,23 @@ public class AFSDFieldPackager implements IFSDFieldPackager {

private String name;


/* (non-Javadoc)
* @see org.jpos.fsdpackager.IFSDFieldPackager#pack(java.util.Map)
*/
@Override
public byte[] pack(Map<String, String> setfields) throws ISOException {
// TODO Auto-generated method stub
return null;
}

@Override
public String getValue() {
// TODO Auto-generated method stub
return null;
}

@Override
public void setValue(String value) {
// TODO Auto-generated method stub

}

@Override
public int unpack(byte[] inStream, int offset, Map<String, String> fields) throws ISOException {
// TODO Auto-generated method stub
return 0;
}

Expand All @@ -58,19 +54,20 @@ public void setName(String fieldName) {
this.name = fieldName;
}

@Override
public String dump(String prefix, Map<String, String> setfields) {

return "";

}

@Override
public byte[] hexDump(String prefix,Map<String, String> setfields) {
// TODO Auto-generated method stub
return null;
}

@Override
public String getParserTree(String prefix) {
// TODO Auto-generated method stub
return null;
}

Expand Down
67 changes: 50 additions & 17 deletions modules/fsdmsgx/src/main/java/org/jpos/fsdpackager/BranchFieldPackager.java
100644 → 100755
Original file line number Diff line number Diff line change
Expand Up @@ -134,22 +134,21 @@ public void setValue(String value) {
public String dump(String prefix, Map<String, String> setfields) {

String fieldValue = setfields.get(switchField);
if (fieldValue == null) {
if (defaultCase != null) {

return defaultCase.dump(prefix, setfields);
}
} else {
if ((fieldValue != null)) {
AFSDFieldPackager temp = switchCases.get(fieldValue);
if (temp == null) {
if (defaultCase != null) {
return defaultCase.dump(prefix, setfields);
}
} else {
if (temp != null) {

return temp.dump(prefix, setfields);
}
if (defaultCase != null) {

return defaultCase.dump(prefix, setfields);
}
}
if (defaultCase != null) {

return defaultCase.dump(prefix, setfields);
}
return "";

}
Expand All @@ -172,24 +171,58 @@ public String dump(String prefix, Map<String, String> setfields) {
@Override
public String getParserTree(String prefix) {

String cases = "";
StringBuilder cases = new StringBuilder();
if (switchCases == null) {

cases += "[Not Set]" + System.lineSeparator();
cases.append("[Not Set]")
.append(System.lineSeparator());
} else {
for (Map.Entry<String, AFSDFieldPackager> entry : switchCases.entrySet()) {

AFSDFieldPackager fPkgr = entry.getValue();

cases += "\t\t" + entry.getKey() + ":" + System.lineSeparator() + fPkgr.getParserTree("\t\t\t");
cases.append("\t\t")
.append(entry.getKey())
.append(":")
.append(System.lineSeparator())
.append(fPkgr.getParserTree("\t\t\t"));

}
}
cases += "\t\tdefault:" + System.lineSeparator() + ((defaultCase != null)
? System.lineSeparator() + defaultCase.getParserTree("\t\t\t") : "\t\t\t[Not Set]");
cases.append("\t\tdefault:")
.append(System.lineSeparator())
.append((defaultCase != null)
? System.lineSeparator() + defaultCase.getParserTree("\t\t\t") : "\t\t\t[Not Set]");

return String.format("%sField [%s] : [Branch]%n" + "\tswitch (%s)%n" + "%s", prefix, getName(), switchField,
cases);
cases.toString());
}

@Override
public byte[] hexDump(String prefix, Map<String, String> fields) {

String value = fields.get(switchField);

if (value == null) {
if (defaultCase != null) {
defaultCase.setValue(fields.get(defaultCase.getName()));
return defaultCase.hexDump(prefix, fields);
}
return null;
}
AFSDFieldPackager selectedPackager = switchCases.get(value);
if (selectedPackager == null) {

if (defaultCase != null) {
defaultCase.setValue(fields.get(defaultCase.getName()));
return defaultCase.hexDump(prefix, fields);
}
return null;

}
selectedPackager.setValue(fields.get(selectedPackager.getName()));
return selectedPackager.hexDump(prefix, fields);

}

}
19 changes: 12 additions & 7 deletions modules/fsdmsgx/src/main/java/org/jpos/fsdpackager/FSDMsgX.java
100644 → 100755
Original file line number Diff line number Diff line change
Expand Up @@ -26,20 +26,21 @@

public class FSDMsgX extends AFSDFieldPackager {

public String dump(String prefix, Map<String, String> setfields) {
@Override
public String dump(String prefix, Map<String, String> setfields) {
// TODO Auto-generated method stub
return dump(prefix);
}

private Map<String, AFSDFieldPackager> fieldPackagers = new LinkedHashMap<String, AFSDFieldPackager>();
private Map<String, String> setfields = new LinkedHashMap<String, String>();
private Map<String, AFSDFieldPackager> fieldPackagers = new LinkedHashMap<>();
private Map<String, String> setfields = new LinkedHashMap<>();

public FSDMsgX(String name) {
setName(name);
}

private FSDMsgX() {
};
}

public void add(String name, AFSDFieldPackager fsdFieldPackager) {

Expand Down Expand Up @@ -80,8 +81,9 @@ public void set(String fieldName, String value) {
IFSDFieldPackager p = getFields().get(fieldName);

getSetfields().put(fieldName, value);
if (p != null)
p.setValue(value);
if (p != null) {
p.setValue(value);
}

}

Expand Down Expand Up @@ -221,9 +223,12 @@ public void setSetfields(Map<String, String> setfields) {
public byte[] hexDump(String prefix, Map<String, String> setfields) {

byte[] outStream = null;
this.setfields = setfields;
for (Map.Entry<String, AFSDFieldPackager> entry : fieldPackagers.entrySet()) {

byte[] temp = entry.getValue().hexDump(prefix, getSetfields());
byte[] temp = entry.getValue()
.hexDump(prefix, setfields);

if (temp != null) {
if (outStream == null) {
outStream = temp;
Expand Down
53 changes: 33 additions & 20 deletions modules/fsdmsgx/src/main/java/org/jpos/fsdpackager/FixedFieldPackager.java
100644 → 100755
Original file line number Diff line number Diff line change
Expand Up @@ -22,6 +22,7 @@

import org.jpos.fsdpackager.compliance.APCICompliance;
import org.jpos.fsdpackager.compliance.NoCompliance;
import org.jpos.iso.AsciiInterpreter;
import org.jpos.iso.ISOException;
import org.jpos.iso.ISOUtil;
import org.jpos.iso.Interpreter;
Expand All @@ -32,10 +33,14 @@ public class FixedFieldPackager extends AFSDFieldPackager {
Interpreter interpretter;
private int size;
private boolean padLeft = true;
private boolean padright = false;
private Byte padCharacter = new Byte((byte) 0x20); //space
private Byte padCharacter = Byte.valueOf((byte) 0x20); //space
private APCICompliance compliance = new NoCompliance();

public FixedFieldPackager(String name, int size) {
this.interpretter = new AsciiInterpreter();
this.size = size;
this.setName(name);
}
public FixedFieldPackager(String name,int size,Interpreter interpretter) {
this.interpretter = interpretter;
this.size = size;
Expand All @@ -62,11 +67,9 @@ public int unpack(byte[] inStream, int offset, Map<String, String> fields) throw
throw new ISOException(String.format("Field [%s] at offset [%d]:Expecting %d bytes found %d", getName(),offset,packedSize, inStream.length - offset));
}
String interprettedvalue = interpretter.uninterpret(inStream, offset, size);
if (getValue() != null) {
if (!getValue().equals(interprettedvalue)) {
throw new ISOException(String.format("Field [%s] at offset [%d]:Expected %s but found %s", getName(),offset,getValue(), interprettedvalue));
}
}
if ((getValue() != null) && !getValue().equals(interprettedvalue)) {
throw new ISOException(String.format("Field [%s] at offset [%d]:Expected %s but found %s", getName(),offset,getValue(), interprettedvalue));
}

fields.put(getName(),interprettedvalue);
value = interprettedvalue;
Expand All @@ -87,17 +90,15 @@ public byte[] pack(Map<String, String> fields) throws ISOException {
if (value==null){
throw new ISOException(String.format("Field [%s]: Unable to pack as field is not set",getName()));
}
if (value.length() <= size) {
if (padLeft){
ISOUtil.padleft(getValue(), size,(char) padCharacter.byteValue() );
}
else {
ISOUtil.padright(getValue(), size,(char) padCharacter.byteValue() );
}
}
else {
if (value.length() > size) {
throw new ISOException(String.format("Field [%s]:Cannot pack as data has size %d and size needs to be %d",getName(), value.length(),size));
}
if (padLeft){
value = ISOUtil.padleft(getValue(), size, (char) padCharacter.byteValue());
}
else {
value = ISOUtil.padright(getValue(), size, (char) padCharacter.byteValue());
}

byte[] packedbyte = new byte[interpretter.getPackedLength(size)];
interpretter.interpret(getValue(), packedbyte, 0);
Expand All @@ -119,7 +120,6 @@ public void setValue(String value) {

public void setPad(boolean padLeft) {
this.padLeft = padLeft;
this.padright = !padLeft;
}

public Byte getPadCharacter() {
Expand All @@ -132,13 +132,26 @@ public void setPadCharacter(Byte padCharacter) {

@Override
public String dump(String prefix,Map<String, String> setfields) {
if (getValue()!=null)
return String.format("%s<field id=\"%s\" value=\"%s\"/>%n", prefix,getName(),compliance.makeCompliant(getValue()));
if (value == null) {
value = setfields.get(getName());

}
if (getValue()!=null) {
return String.format("%s<field id=\"%s\" value=\"%s\"/>%n", prefix,getName(),compliance.makeCompliant(getValue()));
}
return "";
}
@Override
public byte[] hexDump(String prefix,Map<String, String> setfields) {


if (value == null) {// if the hardcoded value is in the constructor ,
// use it.
value = setfields.get(getName());
return null;

}
setfields.put(getName(), value);

int numberOfPackedBytes = interpretter.getPackedLength(getValue().length());
String compliant = compliance.makeCompliant(getValue());
byte[] temp = new byte[numberOfPackedBytes];
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -40,7 +40,7 @@ public byte[] pack(Map<String, String> setfields) throws ISOException {
return fieldPackager.pack(setfields);

} catch (Exception e) {
;// If optional was absent, pack would have thrown an exception as field was not set
// If optional was absent, pack would have thrown an exception as field was not set
}
return null;
}
Expand All @@ -51,14 +51,13 @@ public int unpack(byte[] inStream, int offset, Map<String, String> fields) throw
return fieldPackager.unpack(inStream, offset, fields);
}
catch (Exception ex){
;//Do nothing, means optional field not present
//Do nothing, means optional field not present
}
return offset; // return original offset passed in
}

@Override
public String getParserTree(String prefix) {
// TODO Auto-generated method stub
return String.format("%sField [%s] : [OPTIONAL]%n",prefix,getName()) +fieldPackager.getParserTree(prefix+"\t");

}
Expand All @@ -69,11 +68,15 @@ public String dump(String prefix, Map<String, String> setfields) {
try {
return fieldPackager.dump(prefix, setfields);
} catch (Exception e) {
// TODO: handle exception
}
return "";
}

@Override
public byte[] hexDump(String prefix, Map<String, String> setfields) {

return fieldPackager.hexDump(prefix, setfields);
}



Expand Down
Loading