Hi all,
We have an MDA transformation, which has suddenly caused EA to use extreme amounts of memory (>30 GB) and the transformation never completes. I have narrowed the problem down to 1 custom template (Class__xx). I've removed all calls to other templates (e.g. Connector__xx) with the list macro, but the problem persists.
Any suggestions?
The template is shown below:
%if elemType != "Component"%
%endTemplate%
%if classLanguage == "Java"%
Package
{
%TRANSFORM_REFERENCE("MessagingClassesPackage","IMPLEMENTATION", "ONLY_ONE")%
name = "datastructureclasses"
Class
{
%TRANSFORM_REFERENCE("ComponentEventbusFacade",className,classGUID)%
name=%qt%%className%Implementation%qt%
notes=%qt%*** AUTOGENERATED - Do not modify by hand. ***
This class implements the interface against the system for component '%className%'.%qt%
Language="Java"
stereotype="system_interface_implementation"
Tag
{
name="application"
value=%qt%%className%%qt%
}
Attribute
{
name="PROPERTYBAGNAME"
default=%qt%%sl%%qt%propertyBagName%sl%%qt%%qt%
type="String"
Constant="true"
}
Attribute
{
name="COMMANDID"
default=%qt%%sl%%qt%commandId%sl%%qt%%qt%
type="String"
Constant="true"
}
Attribute
{
Name = "communicationMap"
Type="Map<String, ISocketChannel>"
}
Attribute
{
Name = "logger"
Type="Logger"
}
Operation
{
Name = "handleMessage"
Type="void"
Scope="public"
Parameter
{
Name="_message"
Type="IMessage"
}
Code=%qt%
try
{
PropertyBagMessage pbMessage = (PropertyBagMessage)_message;
Map<String, Object> propertyBag = pbMessage.getPropertyMap();
return;
}
catch(Exception e)
{
logger.error(String.format(%sl%%qt%Exception caught: %s Stack trace:%s%sl%%qt%, e.getMessage(), e.getStackTrace()));
throw e;
}
%qt%
}
Header=%qt%
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import dk.medtrace.util.socket.data.PropertyBagMessage;
import dk.medtrace.util.socket.interfaces.ISocketChannel;
import dk.medtrace.util.socket.impl.SocketFactoryImpl;
import dk.medtrace.util.socket.interfaces.IMessage;
import dk.medtrace.util.autogenerated.framework.ESocketChannel;
import dk.medtrace.util.autogenerated.framework.ComponentSocketChannels;
import java.util.*;
%qt%
}
Realisation
{
%TRANSFORM_REFERENCE("FacadeRealizesInterface",className,classGUID)%
direction="Source->Destination"
Source
{
%TRANSFORM_REFERENCE("ComponentEventbusFacade",className,classGUID)%
}
Target
{
%TRANSFORM_REFERENCE("ComponentInterfaceClass",className,classGUID)%
}
}
Realisation
{
%TRANSFORM_REFERENCE("FacadeRealizesIMessageHandler",className,classGUID)%
direction="Source->Destination"
Source
{
%TRANSFORM_REFERENCE("ComponentEventbusFacade",className,classGUID)%
}
Target
{
GUID="{115E54AE-749C-4552-92D2-C8BDF85BD460}"
}
}
}
%endIf%