Download Latest Version prowide-core-SRU2020-9.1.2.zip (21.7 MB)
Email in envelope

Get an email when there's a new version of Prowide Core

Name Modified Size InfoDownloads / Week
Parent folder
pw-swift-core-SRU2016-7.8.5.zip 2017-05-11 21.0 MB
README.txt 2017-05-11 29.7 kB
Totals: 2 Items   21.0 MB 0
7.8.5 October 2016 - LTS version for SRU2016

LTS versions including the yearly SRU from SWIFT are released yearly by the end of October, one month before production. 
This same version is released for support customers 6 months in advance. If you are interested on pre-releases of the yearly SRU or on intermediate maintenance versions please contact us at info@prowidesoftware.com

For additional resources please check: http://www.prowidesoftware.com/


*** New API
	Added getSubBlockByTagNames and getSubBlocksByTagNames in SwiftTagListBlock to retrieve subblocks based on comprehensive list or tag names
	Added API in BusinessHeader to create valid BAH from simple parameters
	Added API in BIC to get the branch and institution
	Added API to match message identifier by regex, for example fin.*STP
	Added API to strip header and document portion of Mx message in XML format
	Added analizeMessage in MxParser, lightweight API to retrieve structure information from an MX messages
	Added enumerations for message priority and delivery monitoring in MT block 2
	Added json() to AbstractMT
	Added getComponentLabel(int) in Field classes
	Added updateFrom AbstractMT to MtSwiftMessage
	Added reference as class attribute in AbstractSwiftMessage (set by subclasses)
	Added FileFormat attribute to AbstractSwiftMessage for clear identification of content in implementing subclasses
	Added constructor of MxSwiftMessage from AbstracMX
	Added API to get BIC codes from DN in Mx messages
	Added MtId class, analogous to the existing MxId for MX messages
	SwiftParser parsing of block 4 published as static public method
	Added AbstractMessage as base class for specific MTnnn and MXmmm model hierarchy
	Added MessageStandardType with MT and MX values and ServiceIdType for header service id values
	Added nextSwiftMessage in RJE/PPC readers for system messages support
	Added valuesNumeric to MT enumeration MtType
	Added getValueDisplay with optional locale parameter to display formatted field and individual components values
	Added MTVariant enum and getVariant API in swift messages
	Added CONDITIONAL_QUALIFIER component number as static class field for all generic fields (fields implementing the GenericField interface)
	Added BusinessHeader serialization into xml and Element objects
	Added business header parse from Element object in MxParser
	Added RJEReader and RJEWriter to create MT message files in RJE format
	Added PPCWriter to create MT message files in DOS-PPC format (also enhanced API for the existing PPCFileReader)
	Added path() API in MxNode
	Added MtType, an enumeration of all available MTnnn implementations
	Added parse to Field classes to update field components from full value
	Added append lists of Tag or Field to TagListBlock
	Added support for attributes in MxNode
	Added generic setters for attributes in header blocks 1 and 2 using qualified names (#setField)
	Added write XML method for MX business header
	Added validName as static method in Field, to validate field names
	Added getField static API in Field to create new instances with reflection given the field name and value
	Added reference(msg) to SwiftMessageUtils to get the sender reference from messages that contain a reference field
	Added SwiftMessageRevision to the swift messages model, to hold and track changes in swift messages

*** Fixes
	Fixed parser for field 98H
	Fixed field 61 parse allowing EC and ED as credit/debit mark subfield
	Fixed from() and to() methods in BusinessHeader to return the BIC code for both possible header types
	FIxed serialization of component 1 in field 50F
	Fixed parser and serialization in Field98F
	Fixed SwiftMessage.toJson single quote to double quote in timestamp field
	Fixed getLabel when used with the parameters combination of a valid mt and a null sequence
	Fixed getValue in Field61, 
	Added proper implementation for isOptional(component) in Field61
	Fixed components trim to null in parser for several fields when the component value is not present
	Fixed separators trim in getLine API
	Fixed setComponentN(Number) when component is not a SWIFT amount, Number is now serialized as an integer (without decimal separator)
	Fixed MT parser to allow additional lines in a field start with colon ':'
	Fixed field 32R second component changed from currency to string to allow codewords ’FOZ’, ’GOZ’, ’GRM’, ’KLO’, ‘LIT’, ’LOT’, ‘OTH’, ‘PND’, ’TAL’, ’TOL’, ‘TON’, ‘TOZ’, ’UNT’
	Fixed field 33B first component changed from currency to string to allow codeword ’PCT’ used in MT601
	Fixed API inconsistencies in MtSwiftMessage when updating from SwiftMessage objects.
	Bugfix MT506 added mandatory field 28E	

**** Enhancements
	Added missing getters for Sequence E1 in MT300
	Changed MX messages detection in MxParser to lighter implementation using Stax
	Normalized Input/Output Outgoing/Incoming API in AbstractMT and SwiftMessage
	SwiftMessage.toJson changed timestamp format to the recommended ISO 8601
	MxSwiftMessage meta-data (sender, receiver, reference, identifier) read and set from raw XML content 
	Added support in XmlParser for the field version of Core proprietary XML format for MTs, the parser now reads both formats seamlessly 
	Better header API in MxSwiftMessage to support both ISO and SWIFT business headers
	Elaborated identifier in MtSwiftMessage, using fin.<msgtype>[.<mug|variant>] instead of just the message type
	Added comprehensive sequence names into pw_swift_label property files
	Added translations of pw_swift_label property files to FR, DE and IT (complementing the existent EN, ES and RU files)
	Completed pw_swift_label property files for all field + mt + sequence combinations 
	Complete application header parsing in MxParser
	Better application header detection in MxParser based on namespaces
	Added component labels for field 13K
	Fields 11R and 11S component 3 split into two independent components.
	In Field61, component 6 was splitted into two independent components to hold the "transaction type" and the "identification code" as stated in the standard definition for function <SUB-6>
	Added SwiftParserConfiguration to encapsulate several parsing options, allowing fast parsing of AbstractMT by reading the text block in raw format


7.7
* New API
	valueDate in SwiftMessageUtils
	isType(int...) in SwiftMessage
	Enhanced the getSequence API in MT classes with support to nested sequences, allowing for ex: getSequenceE1(getSequenceEList().get(n))
	getLine API for FieldNN classes based on semantic lines number identification
	Copy constructors for FieldNN classes, performing a deep copy of the components' list
	MxParser message detection
	New generic XML model and API, as backbone for MX messages.
	Headers Blocks: new generic getters in blocks 1 and 2 to retrieve attributes using full qualified names from enums; for example getField(SwiftBlock1Field.LogicalTerminal)
	Static labels for subfields in FieldNN classes to allow for example getComponent(Field93B.BALANCE)
	BIC: API to check for live and non-live bics
	MxParser: parseApplicationHeader and constructors from several sources
	Added missing labels' API to fields: 36E, 69A, 69C, 69D, 70C, 70D, 70G, 90F, 90J, 92D, 92L, 92M, 92N, 92R
	Added the ApplicationHeader attribute to AbstractMX
	Added API to search nodes or content by path or name in the MxNode tree returned by the MxParser
	Added json() and xml() methods to MT classes
	Added write to file and output streams to AbstractMT and AbstractMX
	Added consistent constructors from String, File or InputStream to MTnnn classes
	Added static parse methods to create MTnnn objects from String, File, InputStream or MtSwiftMessage 
	Added consistent constructors from String, File or InputStream to AbstractSwiftMessage and subclasses MtSwiftMessage and MxSwiftMessage
	Added static parse methods to create MtSwiftMessage and MxSwiftMessage objects from String, File or InputStream 
	Lib: added read from input streams
* Fixes
	NPE prevention in SwiftFormatUtils.getCurrency
	Fixed getSender and getReceiver for MTxxx to return accurate information regardless the message being of type input or output (also to be consistent with analogous methods in SwiftMessage) 
	Added CR and LF to charset z and x at SwiftcharsetUtils
	Fixed validation of fields 70F, 77S and 77T that unnecessary restricted the allowed amount of lines (not it is unlimited because charset Z allows CRLF).
	Fixed OutOfBound exception at MxNode findFirst implementation when a node has multiple children 
	Fixed getDescription for Field35B, now returning component 3 instead of 2 
* Enhancements
	Better API consistency between MT and MX implementations, with common ways to parse and build.
	Changed sender and receiver attributes for MtSwiftMessage to hold BIC8 instead of full LT identifiers.
	Deprecated the use of model message inside MtSwiftMessage
	Simplified distribution zip with -sources and -javadoc jars
 
7.6 October 15, 2014
* New BIC API
	* isTestAndTraining()
	* getLogicalTerminalIdentifier()
	* bic8() and bic11()
* New model for LT addresses, and its related API in header classes
* New SwiftMessage API
	* AbstractMT toMT() 
* New AbstractMT API
	* getSequence(name) 
	* getSequenceList(name) 
* MTs API
	* Added builder API: constructors and append methods to add content with chaining support
* Added missing getValue() implementations to field classes. Example: Field26C
* Added annotations to MTNNN classes to identify sequence split strategy involved (more traceable code)
* SRU 2014. Affected MTs: 300, 304, 305, 306, 340, 341, 360, 361, 380, 381, 502, 506, 508, 509, 513, 514, 515, 518, 527, 530, 536, 537, 538, 540, 541, 542, 543, 544, 545, 546, 547, 548, 549, 558, 564, 565, 566, 567, 568, 569, 575, 600, 601, 942
* Added description and release javadoc comments to MT classes
* Added MX Generic model support
* Added MX parse
* Added MT300.getSequenceE()
* Minor fix in MT300 sequences structure, B1 and B2 inside B, and named D's subsequence as D1
* SwiftTagListBlock implements Iterable<Tag> 
* Bugfix SwitTagListBlock.countTagsStarsWith(string,string) was ignoring tagnames in count 

7.5 (CVS Tag R_SRU2013-7_5-B1406291429) Released to public 2014-08-28
* New API
	Added toJson in SwiftMessage and SwiftTagListBlock, SwiftBlock1 and 2
	Added to SwiftTagListBlock  getFieldByName(String, being)
	Added to SwiftTagListBlock  getFieldByName(String, being, component2)
	Added to SwiftTagListBlock  getFieldByNumber(int , being) 
	Added START_TAG and END_TAG constant to Sequence inner classes
	Added Sequence.newInstance() method
	Added static method Field.emptyTag()
	Added to SwiftTagListBlock append(SwiftTagListBlock)
* Fixes
	Changed SwiftFormatUtils.getNumber(Number) to allow variable amount of decimal parts without the previous limit of two
	Added support for national clearing system codes in party identifier components: example 52A starting with //AT123
	JSON serialization: fixed missing quotes escaping and newline
	in some occasions, getSequenceA() incorrectly returned null instead of empty sequence as stated in javadoc
* Enhancements
	Refactored Field77A to include 20 independent components instead of just one (current implementation is similar to Field79)
	Deprecated isAnyOf(String ... names) and added isNameAnyOf(String ... names) semantics of method more clear with its name
	Changed the semantic of getAccount methods to remove starting slashes if any
	Some javadoc for BICRecord
	Added serialization timestamp to JSON generation
	In Field* void set changed to Class set so we can support the code style new Field().setThis().setThat().setThatToo()
	Added Field.asTag()
	Added option in XMLWriterVisitor to serialize field instead of tag
	
7.4 Mar 10, 2014
* New API 
	In BIC added subtype attribute and getBranch method
 	ReaderIterator to read a file from a classpath resource and split its content by the '$' symbol
	In SwiftMessage new API to check and get linkages sequences
	In AbstractSwiftMessage new constructor using MTSwiftMessage as parameter
	In MTSwiftMessage updateFromModel and updateFromFIN using internal attributes
	Several helper methods to parse field content using SwiftParseUtils
	Field classes implementation for fields belonging to System and Service Messages (i.e. 451)
	Resource bundle labels for System and Service Messages fields
	MOR class to represent the message output reference (inherited from the MIR)
	SwiftParseUtils: getTokenSecond and getTokenSecondLast with prefix
	getAll(SwiftMessage) in every FieldNN class 
	getAll(SwiftTagListBlock) in every FieldNN class
	New constant in Field suitable for import static
	In SwiftTagListBlock
		constructors made public
		added filterByNameOrdered(String ...)
		added getFieldsByNumber(int)
		added removeSubBlock(String)
		deprecated int getTagCount(String)
		added int countByName(String)
		deprecated int getTagCount()
		added int countAll()		
		added method boolean containsAllOf(String...)
* Enhancements:
	Improved toString in SwiftTagListBlock and Tag
	Javadoc improvements
* Fixes
	Fixed SwiftBlock1 constructor to allow LTs missing the optional A, B or C identifier (11 characters length); ex. FOOOAR22XXX 
	Fixed getStatusInfo and getPreviousStatus in messages base class that was causing IOB exceptions
	Issue 39: missing trimToEmpty in getComponent2 in 50H
	MT207: fixed maximum repetitions of sequence B from 1 to unlimited

7.3 Jan 10, 2014
* removed log4j.properties 
* New API
	com.prowidesoftware.swift.model.field.Field.isAnyOf(String...)
	many methods in SwiftTagListBlock in resemblance to String manipulation API
	SwiftTagListBlock
		Added 
			getTagsByNumber(int)
			SwiftTagListBlock removeAfterFirst(String, boolean)
	Tag.startsWith
	Tag.contains
	com.prowidesoftware.swift.io.PPCFileReader iterator to read and split pc connect files	
		
7.2 Sep 17, 2013
* New API
	Field.letterOption
	SwiftTagListBlock.getSubBlockBeforeFirst
	SwiftTagListBlock.filterByName
* Fixes
	Field.appendInLines that was causing the getValue of several fields (ex 35B) to start with unexpected EOL
    NPE in XMLParser with null value in tags
    Avoid usage of double in amount resolver

7.0 Aug 15, 2013
ENHACENMENTS:
* Enhanced messages model with base support for MX messages.
* New messages meta-data model to handle additional information 
	- Status history
	- User notes 
	- Properties list.
* Useful API to SwiftMessage to get: direction, PDE, PDM, UUID, MIR, MUR and getTypeInt
* Complete FieldNN implementation classes
* Complete MT helper classes, covering all message types
* Added model and API to handle Sequences at MT classes, covering all sequences based on 16R/16S boundaries.
* New API to handle sub blocks: 
	- SwiftTagListBlock.removeUntilFirst
	- SwiftTagListBlock.containsAnyOf
* Ensuring of SWIFT EOL at ConversionService.getFIN
FIXES:
* Fixed getValue of several fields to prevent printing of null
* Fixed getValue of several fields with missing slash separator on optional components
* Added missing field getters for MT classes with fieldsets: for example 93B at MT564.
* getValue for Field35B. Thanks to Raghu rathorr@users.sf.net
* getCalendar bug related to unused format parameter
* Changed Field26C parser and subfields structure to split the string before the VAR-SEQU into independent components
OTHERS:
* Removed deprecated net.sourceforge classes
* Removed unimplemented method amounts() in AmountContainer 

6.4 (CVS_TAG: release_6_4) Mar 12, 2013
* Added visitor API on tag list block
* New interface to identify and use generic fields (notice DSS methods are not part of non-generic fields)
* Added API on MT classes to simplify messages creation
* Comprehensive getters and setter API for field classes using functional names
* Added PatternContainer interface and implemented in field
* Better CurrencyContainer API
* Added API to SwiftFormatUtils to get String components from Calendar using different SWIFT date/time formats
* Implemented API for CurrencyContainer for all Fields
* Added MT helper classes for MTs: 518, 549, 800, 801, 802, 824, 600, 601, 604, 605, 606, 607, 608, 609
* Added Field implementations for 33G, 35U, 86B, 68A, 68B, 68C, 94C, 31F, 37a, 34J, 35H, 31X
* Added API to simplify messages creation; defaults for header blocks attributes, addField to Block4, setSender at Block1

6.3 (CVS_TAG: release_6_3) Oct 23, 2012
* Added MT helper classes for MTs: 500, 501, 502, 503, 504, 505, 506, 507, 508, 509, 510, 565
* Fixed getAsCalendar for year component of field 77H
* Fixed parsing of field 50F
* Added field class for: 26C
* Support to identify which sequence a tag belongs to
* Added API to FieldNN classes to get the DSS field
* Added API to FieldNN classes to get the qualifier and conditional qualifier components
* Added API to FieldNN classes to determine if field is generic or non generic
* Field class made abstract
* FieldNN isOptional: method to check if a given component is optional for the field
* Field getLabel: support for label exceptions per mt and sequence
* SwiftParser changes to distinguish the presence of brackets when they are block boundaries or part of an invalid field value
* Improved parsing of Field35B, first and second components are set only if "ISIN " is present
* SR2012 update: deprecated fields 23C, 23F. Updated MT300, MT304, MT305 with field changes.
* Added serialization for: 20E, 29G, 31G, 36E, 50G, 50H, 69B, 69D, 69F, 77H, 90F, 90J, 90K, 92D, 92L, 92M, 92N, 94D, 94G, 95T, 98F
* Fixed serialization of field 59A

6.2 (CVS_TAG: release_6_2) Jun 5, 2012
* Purged and some tunning of parser log
* Added getField* API con block4
* Added Tag API: public boolean contains(String ... values) 
* Added more API to get subblocks based on tag number boundaries regardless of letter options
* Fixed Tag.isNumber to consider the whole number and not just the prefix, isNumber(58) returns true to 58A but not to 5
* Added Tag.getNumber() API
* Fixed build to include MTs and FieldNN source codes in the package
* Fixed parser for fields: 94D, 50H, 50G and 52G
* Added MT helper classes for MTs: 567, 900, 910, 920, 935, 941, 970, 971, 972, 973, 985, 986
* Added API for getLabel at Field objects, to retrieve business oriented names from resource bundles

6.1 (CVS_TAG: release_6_1) Mar 28, 2012
* Added BICContainer interface
* Added MT helper classes for MTs: 360, 361, 362, 364, 365, 381, n90, n92, n95, n96, n98, 420, 422, 430, 450, 455, 456, 701, 705, 711, 720, 721, 732, 734, 740, 742, 747, 750, 752, 754, 756, 768
* Added getValue for Field13E
* Fixed getValue for Field31R (2nd component is optional)

6.0 (CVS_TAG: release_6_0) Feb 28, 2012
* Merged patches from Walter Birch
* SwiftParser: fix for parse error with malformed tag 72
* Implemented getValue for Fields: 19B, 31D, 31P, 31R, 39P, 40B, 41D, 92F, 93B, 98E and others with the same parser pattern	
* Changed packages in Hibernate mappings from sourceforge to prowidesoftware
* Added SwiftMessageUtils class 
* Added date container interface to Fields to better support higher level model expressions
* Added currency container interface to Fields to better support higher level model expressions
* SWIFT standard update (Nov 2011)
* Fixed field parser for 35B
* Changed SwiftParser log level
* Build system modifications:
    + Release.name in all wife.jar
    + Standard -sources and -javadocs jar files
    + Consistent and explicit release name in all three jars.
    + Default release name is current date (not hardocoded value)
    + Include dependent jars in standard lib directory in release bundle
* API to create FieldNN objects from Tag objects
* Fixed field parser for 35B when first component is an ISIN number
* Added DATE1 support for fields parser (fixes Field61)
* SwiftMessage API to get sender and receiver addresses from message headers
* Added MT helper classes for MTs: 101, 104, 105, 107, 110, 111, 112, 200, 201, 204, 205, 205COV, 207, 256, 300, 305, 306, 307, 330, 340, 341, 350, 540, 541, 542, 543, 564, 566
* MT helper classes 102_not_STP and 103_not_STP with inheritance from defaults MT103 and MT102 classes
* Added Field implementations for 36E, 69B, 69D, 69F, 90F, 90J, 93B, 93C, 94G, 95T, 95S, 98E, 98F, 98L, 67A, 77J, 92E, 98D, 95S, 50G, 50H, 52G, 31G, 77H
* TIME3 implementation to format utils
* Suppress warnings for unused imports in eclipse

6.0-RC5 (Aug 8, 2011)
* Fixed parser for Field20E
* Added Field implementations for 90K, 92D, 92L, 92M, 92N

6.0-RC4 (Jul 4, 2011)
* Added MT helper classes for MTs (SCORE): 798<743>, 798<745>, 798<760>, 798<761>, 798<762>, 798<763>, 798<764>, 798<766>, 798<767>, 798<769>, 798<779>, 798<788>, 798<789>, 798<790>, 798<791>, 798<793>, 798<794>, 798<799>
* Added MT helper classes for MTs: 191, 291, 391, 399, 491, 535, 591, 691, 699, 707, 760, 767, 769, 790, 791, 891, 991, 999
* Added Field implementations for 13E, 20E, 22L, 23X, 24E, 27A, 29D, 29G, 29S, 31R, 39D, 39P, 49H, 49J, 50M, 72C, 77C, 77E, 78B

6.0-RC3 (Apr 1, 2011)
* Added MT helper classes for MTs: 304, 320, 321, 210, 599
* Added Field implementations for 19B, 32H, 32R, 34E, 37G, 37M, 37R, 38J, 92F, 62A, 62B

6.0-RC2 (Feb 28, 2011)
* Added Field implementation for 15 (A,B,C,D,E,F,G,H,I,J,K,L,M,N)
* Added MT helper classes for MTs: 300, 400, 410, 412, 416, 499, 544, 545, 546, 547, 548, 700, 710, 730, 799
* Added Field implementations for 31D, 31P, 40B, 41A, 41D, 45A, 45B, 46A, 46B, 47A, 47B
* field serialization from components values into SWIFT single string value
* Removed log4.properties from distribution jar
* MTs API: fixed field mutiplicity when a field becomes repetitive being present on multiple sequences or at repetitive sequences.
* Hibernate mappings: removed confusing/commented blocktype mappings at SwiftBlock.hbm.xml
* Hibernate mappings: package rename

6.0-RC1 (Oct 17, 2010)
* normalization of linefeeds to CRLF at Tag creation from XML parsing
* Removed deprecated API
* Added new package io with subpackages parser and writer; added new package utils.
* Renamed all packages to com.prowidesoftware (backward compatibility maintained with facades)
* Migrated src code to java 1.5 (binary distribution is still 1.4 compatible by means of http://retroweaver.sourceforge.net/)
* Added implementation for MTs 102 not STP, 102 STP, 103 not STP, 103 STP, 195, 199, 202, 202COV, 203, 295, 299, 940, 942, 950
* Added new SWIFT MT high level generated API, with classes for specific message types
* New source package for generated swift model
* Merged project "prowide SWIFT Fields" into "WIFE"
* Added comparison options to AckMessageComparator
* Removed old and incorrect charset validator class net.sourceforge.wife.swift.MessageValidator
* BUGFIX in remove user block method, thanks to Herman's contribution and patience
* Parser API for (new SwiftParser()).parse(messageToParse);
* Replaced commons-lang-2.3 -> 2.4
* Fixed message writer: system messages' block4 generated with inline tags
* SwiftMessage API to check if it's Straight Through Processing (STP), based on the content of the User Header
* SwiftMessage API to check if it's a cover payment (COV), based on the content of the User Header
* SwiftTagListBlock API to check if contains a specific Tag 
* Java 1.4 compatibility changes
* Removed unimplemented and confusing package net.sourceforge.wife.validation
* Deprecated old and unused validation-related classes
* Added AckMessageComparator which is useful of identify the ack of a given message.
* SwiftTagListBlock API to get a sub block given its name or its starting and ending Tag
* SwiftTagListBlock API to get tags by content, given its exact or partial value
* Helper methods from Block4 moved to SwiftTagListBlock
* SwiftTagListBlock is no longer abstract, so it can be used to create instances for subblocks
* Required JVM upgrade to 1.5
* Initial update of upload-sf target for release to sourceforge
* .cvsignore update 

5.2 (Feb 25, 2009)
* Added missing hashcode and equals
* Javadocs improvements
* Revised and tested hibernate mappings
* Added getBlockType
* Added length to unparsed text persistence mappings
* Fixed persistence mapping for block2 inheritance
* Updated hibernate libs to version 3.2.6
* Added isOutput
* isInput made concrete, not abstract
* Added abstract isInput() method to SwiftBlock2 for safer casting subblocks when input/output is unknown

5.1 (Jul 25, 2007)
* Migrated logging to java logging api
* Removed SwiftBlock's deprecated methods. 
* Moved some common methods in SwiftBlock2Input/SwiftBlock2Output to parent class SwiftBlock2.
* Upgraded commons-lang to version 2.3
* Improved persistence mapping.
* Move persistence (helper) package to wife-test project.
* Minor javadoc fixes.
* Fixed some warnings.

5.0 (Jun 21, 2007)
* Improved Hibernate mapping for simplified and more efficient data base schema.
* Added support for unparsed text to model, persistence mapping and conversion services (needed for some MT0xx for example).
* XML to SwiftMessage parsing methods moved from ConversionService to XMLParser in "parser" package.
* New package created for parser classes "net.sourceforge.wife.swift.parser".
* Made abstract intermediate classes of blocks object hierarchy.
* Added support for user custom blocks in model, persistence mapping and conversion services.
* Improved overall test cases coverage and source/resources structure.
* Fixed some warnings.
* Swift Parser enhancements; don't throw exception on unrecognized data, but preserve an internal list of errors.
* Added reference to current message in parser, so it can take decisions based on parsed data.
* Added constant for possible values for application id to SwiftBlock1.
* Updated dependency: hsqldb 1.8.0.4 -> hsqldb 1.8.0.7.
* Updated dependency: hibernate 3.1.3 -> hibernate 3.2.3.ga.
	
4.0 (Apr 8, 2007)
* Moving to junit 4 - some new tests are being written with junit4, this should make testing some features singificantly easier.
* Move size and isEmpty methods to subclasses.
* Improved deprecated exception messages and javadoc.
* Added useful getter for the MIR field in Block 2 output.
* Added support for optional fields in Block 2 input.
* Method specific to each block moved to each block class, when possible compatibility methods were left in old places, marked as deprecated to provide a smoother migration path.
* Removed deprecated API in SwiftBlock.
* Adapted parser to new model refactor.
* More javadoc in parser.
* Improved xml writer (more clean tabs and EOL).
* Refactored and fixed XML parsing for blocks 3 and 5.
* Fixed build.xml to include resources in generated jar files.
* Improved javadoc and validations in fin writer.
* Completed basic internal XML parsing.
* Added more tests for XML conversion.
* Implemented XML conversion parsing for all blocks (except 4).
* Updated passing test in conversion service.

3.4 (Mar 23, 2007)
* Added license header to source files.
* Minor fixes in build system.
* Enhanced IBAN validation routine.
* Added numerous tests for IBAN validation.
* Added JSValidationUnit backed by Rhino, to support easy extension of validations.
* Made all loggers private static transient final.
* Enhanced overview documentation.
* Javadoc updates.
* Code clean up.
* Added many tag specific validation units targeting MT103 validation.
* Removed ant junit fork since it broke in ant 1.7.

3.3 (Jan 13, 2007)
* Initiated MT103 validation rule.
* Validation framework core classes written.
* Utility classes for validation.
* Removed old and deprecated/replaces writer component.
* Dependencies clean up, ant downloads less libs now.
* Added Currency ISO Codes (needed for validations).
* VF: implemented TagExists and ConditionalTagPresence validation units.
* Started implementation of validation units.
* Initial implementation of BIC validation.
* Initial implementation of IBAN validation.
* Added ISO Countries for IBAN validation.
* Fixed issue in writer with block5 as mentioned in bug 1601122.
* Fixed issue 1595631.

3.2
* Parser logging information cleanup.
* Migrating to log4j 1.2.8 for better compatibility (issued with trace method on some servers).
* Fixed build to properly include current timestamp in dist target when property release.name is not set.
* Fixed bug in parser/writer integration which included double block number when using the writer with an object of a just parsed message(1595589).
* Updated code to fix issue mentioned in https://sourceforge.net/forum/message.php?msg_id=4001538.

3.1.1
* Small fixes for java 1.4 compatibility.

3.1
* Fixed test for bug 1540294, typo in block number.
* Use system EOL in XML writer.
* Fixes to compile for java 1.4 by default.
* Added compile timestamp to manifest in created jars.
* Minor java 1.4 compatibility fixes.

3.0-RC2
* Build: Added release.name property to manifest.
	
3.0-RC1 
* Build: added selection of tests known to fail and those known to pass.
* Fixed persistence mapping.
* Improved build and added control to exclude tests that are know to fail.
* Model simplification: SwiftBlockN classes are being removed in favor of base class SwiftBlock	removed list of blocks in message which was confusing when not all blocks present.
* SwiftBlock (base class) and subclasses are mapped and persisted ok, either the base class or the subclasses.
* Added many tests for hiberante persistence of SwiftMessage hierarchy.
* Added XML Visitor to write a swift message to an XML representation.
* Added ConversionService class which encapsulates many services conveniently.

2.0
* New parser component highly tested on production and unit tests.
* Writer component usable. while it has many limitations, it can be used as it is now.
* Work in progress swift message persistence mapping.
* Work in progress swift expression <-> regular expression conversion.

Source: README.txt, updated 2017-05-11