@Override public Object getValue() throws ISOException { return delegate.getValue(); }
@Override public Object getKey() throws ISOException { return delegate.getKey(); }
@Override public int getMaxField() { return delegate.getMaxField(); }
/** * @param c - a component * @return packed component * @exception ISOException */ public byte[] pack (ISOComponent c) throws ISOException { int len = ((byte[]) c.getValue()).length; if (len > getLength() || len>255) { throw new ISOException ( "invalid len "+len +" packing field "+ c.getKey() ); } byte[] b = new byte[getLength() + 1]; b[0] = (byte) len; System.arraycopy(c.getValue(), 0, b, 1, len); return b; } /**
/** * @param c - a component * @return packed component * @throws org.jpos.iso.ISOException */ public byte[] pack(ISOComponent c) throws ISOException { int len; byte[] s = c.getBytes(); if ((len = s.length) > getLength()) { throw new ISOException( "Invalid length " + len + " packing IF_FSTBINARY field " + c.getKey() + " max length=" + getLength() ); } byte[] b = new byte[s.length + 1]; System.arraycopy(s, 0, b, 0, s.length); b[b.length - 2] = terminator; return b; }
if (m.getComposite() != m) throw new ISOException ("Can't call packager on non Composite"); int len = 0; Map fields = m.getChildren(); ISOComponent c = (ISOComponent) fields.get (0); int first = getFirstField(); bmap12= (BitSet)c.getValue(); // the full bitmap (up to 192 bits long) m.set(bmField); m.unset(thirdBitmapField); // remove from ISOMsg int tmpMaxField=Math.min (m.getMaxField(), (bmap3 != null || fld.length > 129) ? 192 : 128);
if (m.getComposite() != m) throw new ISOException ("Can't call packager on non Composite"); m.set (mti); if (evt != null) evt.addMessage ("<bitmap>"+bmap.toString()+"</bitmap>"); m.set (bitmap); maxField = Math.min(maxField, bmap.size()); if (evt != null) fieldUnpackLogger(evt, i, c, fld); m.set(c); fld[65] instanceof ISOBitMapPackager) bmap= (BitSet) ((ISOComponent) m.getChildren().get(65)).getValue(); for (int i=1; i<64; i++) { if (bmap == null || bmap.get(i)) { if (evt != null) fieldUnpackLogger(evt, i+128, c, fld); m.set(c);
byte[] packedValue; if (c.getComposite() == null) { if (c.getValue() instanceof String) { tagValue = (String) c.getValue(); switch (dataFormat) { case COMPRESSED_NUMERIC: packedValue = c.getBytes(); packedValue = pack(c, true, 0, c.getMaxField()); } else { throw new IllegalArgumentException("Composite ISOComponent should be used only for CONSTRUCTED data type");
ISOComponent c; List<byte[]> l = new ArrayList<byte[]>(); Map fields = m.getChildren(); fields.remove(new Integer(-1)); int len = 0; if (c.getValue() != null) { if (c instanceof ISOTaggedField) { tagsStarted = true; String tag = ((ISOTaggedField) c).getTag(); if (tag == null) { evt.addMessage("error packing subfield " + c.getKey()); evt.addMessage(c); throw new ISOException("Tag should not be null"); } else if (!tagsStarted && fld.length > (Integer) c.getKey() && fld[(Integer) c.getKey()] != null) { b = fld[(Integer) c.getKey()].pack(c); len += b.length; l.add(b); } else { int tagNumber = (Integer) c.getKey(); String tag = ISOUtil.padleft(String.valueOf(tagNumber), this.tag.length(), '0'); ISOTaggedField isoTaggedField = new ISOTaggedField(tag, c); if (fld.length > tagNumber) { b = fld[(Integer) c.getKey()].pack(isoTaggedField); } else { ISOFieldPackager fieldPackager = (ISOFieldPackager) packagerMap.get(tag);
/** * Recursive method to get the errors. */ private void _getErr ( ISOComponent c, Vector list, String id ) { if ( c instanceof ISOVField ){ Iterator iter = ((ISOVField)c).errorListIterator(); while (iter.hasNext()) { ISOVError error = (ISOVError)iter.next(); error.setId( id ); list.add( error ); } } else if ( c instanceof ISOMsg ){ if ( c instanceof ISOVMsg ){ /** Msg level error **/ Iterator iter = ((ISOVMsg)c).errorListIterator(); while (iter.hasNext()) { ISOVError error = (ISOVError)iter.next(); error.setId( id ); list.add( error ); } } /** recursively in childs **/ Map fields = c.getChildren(); int max = c.getMaxField(); for (int i = 0; i <= max ; i++) if ((c=(ISOComponent) fields.get (i)) != null ) _getErr( c, list, id + Integer.toString(i) + " " ); } }
LogEvent evt = new LogEvent(this, "unpack"); try { if (m.getComposite() != m) throw new ISOException("Can't call packager on non Composite"); ISOComponent mti = fld[0].createComponent(0); fld[0].unpack(mti, in); m.set(mti); + "\" packager=\"" + fld[i].getClass().getName() + "\">"); if (c.getValue() instanceof ISOMsg) evt.addMessage(c.getValue()); else evt.addMessage(" <value>" + c.getValue().toString() + "</value>"); evt.addMessage("</unpack>"); m.set(c);
try if (m.getComposite() != m) throw new ISOException ("Can't call packager on non Composite"); if (logger != null) // save a few CPU cycle if no logger available m.set (bitmap); maxField = bmap.size(); m.set(c);
/** * Convert the component into a byte[]. * @return byte array representation of component * @throws org.jpos.iso.ISOException */ @Override public byte[] pack(ISOComponent c) throws ISOException { try { String data; if(c.getValue() instanceof byte[]) data = new String(c.getBytes(), ISOUtil.CHARSET); // transparent handling of complex fields else data = (String)c.getValue(); if (data.length() > getLength()) { throw new ISOException("Field length " + data.length() + " too long. Max: " + getLength()); } String paddedData = padder.pad(data, getLength()); byte[] rawData = new byte[prefixer.getPackedLength() + interpreter.getPackedLength(paddedData.length())]; prefixer.encodeLength(paddedData.length(), rawData); interpreter.interpret(paddedData, rawData, prefixer.getPackedLength()); return rawData; } catch(Exception e) { throw new ISOException(makeExceptionMessage(c, "packing"), e); } }
ISOComponent c; List<byte[]> l = new ArrayList<byte[]>(); Map fields = m.getChildren(); int len = 0; for (int i = startIdx; i <= endIdx; i++) { } else { if (c.getValue() == null) { b = new byte[0]; } else if (!nested && (i == startIdx || i == endIdx) &&
public ISOComponent validate( ISOComponent c ) throws org.jpos.iso.ISOException { LogEvent evt = new LogEvent( this, "validate" ); try { Map tab = c.getChildren(); for ( int i = 0; i < fldVld.length; i++ ) { ISOMsg f = (ISOMsg) tab.get (i); if ( f != null ) c.set(fldVld[i].validate( f )); } return c; } catch ( ISOVException ex ) { if ( !ex.treated() ) { c.set( ex.getErrComponent() ); ex.setTreated( true ); } evt.addMessage( ex ); throw ex; } finally { Logger.log( evt ); } }
try { int len =0; Map tab = c.getChildren(); List<byte[]> l = new ArrayList(); continue; if (fld[i] == null) throw new ISOException ("Unsupported sub-field " + i + " packing field " + c.getKey()); if (ent.getValue() instanceof ISOComponent) try {
@Override public Map getChildren() { return delegate.getChildren(); }
@Override public void pack(final OutputStream out) throws IOException, ISOException { delegate.pack(out); }
@Override public void dump(final PrintStream p, final String indent) { if (tag != null) { p.print(indent + "<" + tag + ">"); ByteArrayOutputStream baos = new ByteArrayOutputStream(); PrintStream ps = new PrintStream(baos); delegate.dump(ps, ""); String s = new String(baos.toByteArray()); if ( s.endsWith("\r\n")) { s = s.substring(0, s.length() - 2); } else if (s.endsWith("\r") || s.endsWith("\n") ) { s = s.substring(0, s.length() - 1); } p.print(s); p.print("</" + tag + ">\n"); } else { delegate.dump(p, indent); } }
@Override public ISOComponent getComposite() { if (delegate.getComposite() == delegate) { return this; } else { return null; } }