Mulit Line Merge Mappings not working

Description

There seams to be a problem with Multi Line Merge Mappings (Single Line Merge Mappings work without a problem).

Example: SpringMergeMapping.xml:

<?xml version="1.0" encoding="UTF-8"?>
<mappings>
<mapping>
<from><![CDATA[<property reference="driver"/>
<property reference="username"/>]]></from>
<to><![CDATA[<test/>]]></to>
</mapping>

Unfortunately, the two lines (<property reference="driver"/> and <property reference="username"/>) are not getting recognized by the org.andromda.core.common.Merger.

The problem seams to be in the org.andromda.core.common.XmlObjectFactory. The method getObject() receives the mapping-file with the original CR & LF (\r \n). The returned org.andromda.core.mapping.Mappings, which contains the parsed mappings however replaced the \r \n by only \n.

Now of course the String to be replaced cannot be found in the cartridge.xml, and no replacement takes place.

I can be fixed with the following workaround in org.andromda.core.common.Merger.getMergedString():

remove all line breaks from both "string" and "from".

for (String from : froms) {
from = StringUtils.trimToEmpty(from);
string = string.replaceAll("\\r|
n", "");
from = string.replaceAll("\\r|
n", "");
if (StringUtils.isNotBlank(from) && string.contains(from)) {
final String to = StringUtils.trimToEmpty(mapping.getTo());
string = StringUtils.replace(string, from, to);
}
}

This should work on all plattforms. It would be nice, if this could be added the 3.4-SNAPSHOT.

Environment

Windows 7

Assignee

Former user

Reporter

Andy Flury

Labels

None

Time tracking

1h

Fix versions

Affects versions

Priority

Minor
Configure