«IMPORT messageDsl»
«EXTENSION ch::ethz::origo::aranea::validation::MessageDslExtensions»
«EXTENSION templates::util»
«REM»Main block«ENDREM»
«DEFINE main FOR Project»
«IF !this.ignore»
«EXPAND factoryTemplate FOR this»
«EXPAND deserializerTemplate FOR this»
«EXPAND constantTemplate FOR this»
«FOREACH namespaces AS namespace»
«IF !namespace.ignore»
«FOREACH namespace.messages AS message»
«IF !message.ignore»
«EXPAND messageTemplate FOR message»
«EXPAND messageHandlerTemplate FOR message»
«ENDIF»
«ENDFOREACH»
«ENDIF»
«ENDFOREACH»
«ENDIF»
«EXPAND Manifest::manifest FOR this»
«EXPAND messageFactoryContributions FOR this»
«ENDDEFINE»
«DEFINE headerTemplate FOR Namespace»/*
* This class comes as is, no warranties whatsoever.
* Copyright Comerge AG 2009. All Rights Reserved."
*
* http://comerge.net
*/«ENDDEFINE»
«DEFINE factoryTemplate FOR Project»
«FOREACH namespaces AS namespace»
«IF !namespace.ignore»
«FILE "src-gen/" + this.name.camelCaseToPath() + "/internal/" + this.name + namespace.name.underscoreToCamelCase() + "MessageFactory.java"-»
«EXPAND headerTemplate FOR namespace»
package «EXPAND internalPackageName FOR namespace»;
import javax.jms.JMSException;
import javax.jms.TextMessage;
import javax.jms.Message;
import net.comerge.aranea.core.messages.AraneaMessage;
import net.comerge.aranea.core.messages.AraneaMessageCreationException;
import net.comerge.aranea.core.messages.AraneaMessageFactory;
import org.json.JSONException;
import org.json.JSONObject;
import «EXPAND Helper::packageName FOR namespace».*;
/**
* Factory for messages defined in the «EXPAND namespaceName FOR namespace»
namespace.
*
Generates messages for following types:
*«message.name.camelCaseToUnderscore().toLowerCase()»
«EXPAND namespaceName FOR namespace»
namespace.
* Deserializes messages for following types:
*«message.name.camelCaseToUnderscore().toLowerCase()»
«EXPAND namespaceName FOR namespace»
namespace.
* GENERATED DO NOT MODIFY
* @author Comerge AG http://www.comerge.net */ public class «EXPAND messageConstantsClassName FOR namespace» { /** * The name of the namespace. */ public static final String «this.name.camelCaseToUnderscore().toUpperCase() + "_" + namespace.name.camelCaseToUnderscore().toUpperCase()»_NAMESPACE_NAME= "«EXPAND namespaceName FOR namespace»"; «FOREACH namespace.messages AS message-» «IF !message.ignore-» public static final String MESSAGE_TYPE_NAME_«message.name.camelCaseToUnderscore().toUpperCase()»= "«message.name.camelCaseToUnderscore().toLowerCase()»"; «FOREACH message.properties AS property-» «EXPAND propertyNameConstant FOR property-» «ENDFOREACH-» «ENDIF» «ENDFOREACH» } «ENDFILE» «ENDIF» «ENDFOREACH» «ENDDEFINE» «DEFINE propertyNameConstant FOR Property-» public static final String «EXPAND propertyConstantName FOR this»= "«this.name»"; «EXPAND propertyNameConstant FOR this.type-» «ENDDEFINE» «DEFINE propertyNameConstant FOR NestedRecordType-» «FOREACH this.properties AS property-» «EXPAND propertyNameConstant FOR property-» «ENDFOREACH-» «ENDDEFINE» «DEFINE propertyNameConstant FOR MapType-» «EXPAND propertyNameConstant FOR this.valueType-» «ENDDEFINE» «DEFINE propertyNameConstant FOR ListType-» «EXPAND propertyNameConstant FOR this.parameter-» «ENDDEFINE» «DEFINE propertyNameConstant FOR DataType-» «ENDDEFINE» «DEFINE messageTemplate FOR Message» «FILE "src-gen/" + project().name.camelCaseToPath() + "/" + namespace().name.camelCaseToPath() + "/" + this.name.underscoreToCamelCase() + "Message.java"-»/* * This class comes as is, no warranties whatsoever. * Copyright Comerge AG 2009. All Rights Reserved." * * http://comerge.net */ package «EXPAND Helper::packageName FOR this»; import java.util.Collections; import java.util.List; import java.util.Map; import net.comerge.aranea.core.messages.AraneaMessage; import net.comerge.aranea.core.messages.AraneaMessageHandler; import net.comerge.aranea.core.messages.AraneaType; import net.comerge.aranea.core.messages.AraneaMessageNamespace; import net.comerge.aranea.core.messages.AraneaMessageType; import net.comerge.aranea.core.messages.json.JSONValueSerializer; import net.comerge.aranea.core.messages.json.NestedRecord; import net.comerge.aranea.core.messages.json.NestedRecordFactory; import org.json.JSONException; import org.json.JSONObject; import «EXPAND internalPackageName FOR namespace()».*; «IF this.extends != null-» «EXPAND superTypeImport FOR this»; «ENDIF-» /** * Message implementation for message of type«name»
defined in the «EXPAND namespaceName FOR namespace()»
namespace.
* GENERATED DO NOT MODIFY
* @author Comerge AG http://www.comerge.net */ public class «EXPAND messageName FOR this» extends «EXPAND superType FOR this» { «FOREACH properties AS property-» «EXPAND nestedRecord FOR property.type-» «ENDFOREACH-» «FOREACH properties AS property-» «IF property.description.trim().length > 0-» /** * «property.description» */ «ENDIF-» public final «EXPAND createType FOR property.type» «property.name.underscoreToCamelCase().toFirstLower()»; «ENDFOREACH» /** * Constructs a«name»
message without reply handler.
*
«FOREACH properties AS property-»
«IF property.description.trim().length > 0-»
* @param «property.name.underscoreToCamelCase().toFirstLower()» «property.description»
«ENDIF-»
«ENDFOREACH-»
*/
public «EXPAND messageName FOR this»«EXPAND clientConstructor FOR this»
/**
* Constructs a «name»
message without reply handler.
*
«FOREACH properties AS property-»
«IF property.description.trim().length > 0-»
* @param «property.name.underscoreToCamelCase().toFirstLower()» «property.description»
«ENDIF-»
«ENDFOREACH-»
* @param replyHandler the handler to call when a reply to this message is received.
*/
public «EXPAND messageName FOR this»«EXPAND clientReplyHandlerConstructor FOR this»
«EXPAND serializeToJSON FOR this»
/**
* @inheritDoc
*/
@Override
public AraneaMessageNamespace getNamespace() {
return AraneaMessageNamespace.getNamespace(«project().name + namespace().name.underscoreToCamelCase()»MessageConstants.«project().name.camelCaseToUnderscore().toUpperCase() + "_" + namespace().name.camelCaseToUnderscore().toUpperCase()»_NAMESPACE_NAME);
}
/**
* @inheritDoc
*/
@Override
public AraneaMessageType getType() {
return AraneaMessageType.getType(getNamespace(), «project().name + namespace().name.underscoreToCamelCase()»MessageConstants.MESSAGE_TYPE_NAME_«name.camelCaseToUnderscore().toUpperCase()»);
}
}
«ENDFILE»
«ENDDEFINE»
«DEFINE messageHandlerTemplate FOR Message»
«FILE "src-gen/" + project().name.camelCaseToPath() + "/" + namespace().name.camelCaseToPath() + "/" + this.name.underscoreToCamelCase() + "MessageHandler.java"-»/*
* This class comes as is, no warranties whatsoever.
* Copyright Comerge AG 2009. All Rights Reserved."
*
* http://comerge.net
*/
package «EXPAND Helper::packageName FOR this»;
import net.comerge.aranea.core.messages.AraneaMessage;
import net.comerge.aranea.core.messages.AraneaMessageHandler;
«IF this.extends != null-»
«EXPAND superTypeImport FOR this»;
«EXPAND superTypeImport FOR this»Handler;
«ENDIF-»
/**
* Message handler implementation for message of type «name.camelCaseToUnderscore().toLowerCase()»
defined in the «EXPAND namespaceName FOR namespace()»
namespace.
* GENERATED DO NOT MODIFY
* @author Comerge AG http://www.comerge.net */ public abstract class «EXPAND messageName FOR this»Handler extends «EXPAND superType FOR this»Handler { /** * @inheritDoc */ public abstract void handle(«EXPAND messageName FOR this» message); «IF this.extends != null-» /** * @inheritDoc */ @Override public void handle(«EXPAND messageName FOR this.extends» message) { processUnhandledMessage(message); } «ENDIF-» /** * @inheritDoc */ @Override public void handle(AraneaMessage message) { if (message instanceof «EXPAND messageName FOR this») { handle((«EXPAND messageName FOR this») message); } else { super.handle(message); } } } «ENDFILE» «ENDDEFINE» «DEFINE superType FOR Message-» «IF this.extends == null»AraneaMessage«ELSE»«EXPAND superTypeName FOR this»«ENDIF-» «ENDDEFINE» «DEFINE superTypeName FOR Message-»«EXPAND messageName FOR this.extends-»«ENDDEFINE» «DEFINE superTypeImport FOR Message-» import «EXPAND Helper::packageName FOR this.extends».«EXPAND messageName FOR this.extends-» «ENDDEFINE» «DEFINE messageName FOR Message-»«this.name.underscoreToCamelCase()»Message«ENDDEFINE» «DEFINE messageName FOR DataType-» «EXPAND messageName FOR this.eContainer-» «ENDDEFINE» «DEFINE messageName FOR Property-» «EXPAND messageName FOR this.eContainer-» «ENDDEFINE» «DEFINE messageName FOR emf::EObject» «EXPAND messageName FOR this.eContainer-» «ENDDEFINE» «DEFINE internalPackageName FOR Namespace»«EXPAND Helper::packageName FOR project()».internal«ENDDEFINE» «DEFINE serializeToJSON FOR Message-» «EXPAND serializeToJSON FOR this.properties-» «IF this.extends != null»super.serialize(target);«ENDIF-» } «ENDDEFINE» «DEFINE serializeToJSON FOR NestedRecordType-» «EXPAND serializeToJSON FOR this.properties-» } «ENDDEFINE» «DEFINE serializeToJSON FOR List» public void serialize(JSONObject target) throws JSONException { JSONValueSerializer serializer= JSONValueSerializer.createDefault(); «FOREACH this AS element»«LET (Property)element AS property»target.put(«EXPAND qualifiedPropertyConstantName FOR property», serializer.serialize(«property.name.underscoreToCamelCase().toFirstLower()»«EXPAND serializeType FOR property.type»)); «ENDLET»«ENDFOREACH-» «ENDDEFINE» «DEFINE qualifiedPropertyConstantName FOR Property-» «EXPAND Helper::packageName FOR this.eContainer».«EXPAND messageConstantsClassName FOR this».«EXPAND propertyConstantName FOR this» «ENDDEFINE» «DEFINE propertyConstantName FOR Property-» «EXPAND propertyConstantNameQualifier FOR this.eContainer»«this.name.camelCaseToUnderscore().toUpperCase()»_NAME«ENDDEFINE» «DEFINE propertyConstantNameQualifier FOR Message-» «this.name.camelCaseToUnderscore().toUpperCase()»_MESSAGE_«ENDDEFINE» «DEFINE propertyConstantNameQualifier FOR NestedRecordType-» «EXPAND propertyConstantNameQualifier FOR this.eContainer»«this.name.camelCaseToUnderscore().toUpperCase()»_RECORD_«ENDDEFINE» «DEFINE propertyConstantNameQualifier FOR emf::EObject-» «EXPAND propertyConstantNameQualifier FOR this.eContainer-» «ENDDEFINE» «DEFINE messageConstantsClassName FOR Namespace-» «this.project().name.underscoreToCamelCase()»«this.name.underscoreToCamelCase()»MessageConstants «ENDDEFINE» «DEFINE messageConstantsClassName FOR emf::EObject-» «EXPAND messageConstantsClassName FOR this.eContainer-» «ENDDEFINE» «DEFINE clientReplyHandlerConstructor FOR Message»(«EXPAND propertiesParameterListEndingComma FOR this»AraneaMessageHandler replyHandler) { super(«EXPAND constructorSuperCallParameters FOR this.extends»replyHandler); «EXPAND messageFieldAssignements FOR this.properties-» } «ENDDEFINE» «DEFINE clientConstructor FOR Message»(«EXPAND clientConstructorParameters FOR this») { this(«EXPAND constructorSuperCallParameters FOR this»null); } «ENDDEFINE» «DEFINE clientConstructor FOR NestedRecordType»(«EXPAND clientConstructorParameters FOR this») { super(); «EXPAND messageFieldAssignements FOR this.properties-» } «ENDDEFINE» «DEFINE messageFieldAssignements FOR List-» «FOREACH this AS element»«LET (Property)element AS property»this.«property.name.underscoreToCamelCase().toFirstLower()»= «property.name.underscoreToCamelCase().toFirstLower()»; «EXPAND invariantCheck FOR property» «ENDLET»«ENDFOREACH» «ENDDEFINE» «DEFINE clientConstructorParameters FOR Message-» «IF this.properties.size > 0-» «EXPAND propertiesParameterList FOR this.properties-» «EXPAND superPropertiesParameterList FOR this.extends-» «ELSE-» «EXPAND superPropertiesParameterListWithoutFirstComma FOR this.extends-» «ENDIF-» «ENDDEFINE» «DEFINE clientConstructorParameters FOR NestedRecordType-» «EXPAND propertiesParameterList FOR this.properties-» «ENDDEFINE» «DEFINE propertiesParameterList FOR List-» «FOREACH this AS element»«LET this.get(0) AS first»«LET (Property)element AS property»«IF property != first», «ENDIF»«EXPAND parameter FOR property»«ENDLET»«ENDLET»«ENDFOREACH-» «ENDDEFINE» «DEFINE propertiesParameterNameList FOR List-» «FOREACH this AS element»«LET this.get(0) AS first»«LET (Property)element AS property»«IF property != first», «ENDIF»«EXPAND propertyName FOR property»«ENDLET»«ENDLET»«ENDFOREACH-» «ENDDEFINE» «DEFINE superPropertiesParameterListWithoutFirstComma FOR Message-» «IF this != null-» «IF this.properties.size > 0-» «FOREACH this.properties AS element»«LET this.properties.get(0) AS first»«LET (Property)element AS property-»«IF property != first», «ENDIF»«EXPAND parameter FOR property»«ENDLET»«ENDLET»«ENDFOREACH-» «EXPAND superPropertiesParameterList FOR this.extends-» «ELSE-» «EXPAND superPropertiesParameterListWithoutFirstComma FOR this.extends-» «ENDIF-» «ENDIF-» «ENDDEFINE» «DEFINE superPropertiesParameterList FOR Message-» «IF this != null-» «FOREACH this.properties AS element»«LET (Property)element AS property-», «EXPAND parameter FOR property»«ENDLET»«ENDFOREACH-» «EXPAND superPropertiesParameterList FOR this.extends-» «ENDIF-» «ENDDEFINE» «DEFINE propertiesParameterListEndingComma FOR Message-» «IF this != null-» «FOREACH this.properties AS element»«LET (Property)element AS property-»«EXPAND parameter FOR property», «ENDLET»«ENDFOREACH-» «EXPAND propertiesParameterListEndingComma FOR this.extends-» «ENDIF-» «ENDDEFINE» «DEFINE constructorSuperCallParameters FOR Message-» «IF this != null-» «FOREACH this.properties AS element»«LET (Property)element AS property-»«EXPAND propertyName FOR property», «ENDLET»«ENDFOREACH-» «EXPAND constructorSuperCallParameters FOR this.extends-» «ENDIF-» «ENDDEFINE» «DEFINE parameter FOR Property-»«EXPAND createType FOR this.type» «EXPAND propertyName FOR this-»«ENDDEFINE» «DEFINE propertyName FOR Property»«this.name.underscoreToCamelCase().toFirstLower()»«ENDDEFINE» «DEFINE messageDeserialization FOR Message-» «IF this != null-» «FOREACH this.properties AS property»«EXPAND createType FOR property.type» «property.name.underscoreToCamelCase().toFirstLower()»= («EXPAND createUnboxedType FOR property.type») fSerializer.deserialize(«EXPAND qualifiedPropertyConstantName FOR property», content_4711_, «EXPAND nestedRecordFactory FOR property.type»«EXPAND serializeType FOR property.type»); «ENDFOREACH-» «EXPAND messageDeserialization FOR this.extends-» «ENDIF-» «ENDDEFINE» «DEFINE messageDeserialization FOR NestedRecordType-» «IF this != null-» «FOREACH this.properties AS property»«EXPAND createType FOR property.type» «property.name.underscoreToCamelCase().toFirstLower()»= («EXPAND createUnboxedType FOR property.type») fSerializer.deserialize(«EXPAND qualifiedPropertyConstantName FOR property», content_4711_, «EXPAND nestedRecordFactory FOR property.type»«EXPAND serializeType FOR property.type»); «ENDFOREACH-» «ENDIF-» «ENDDEFINE» «DEFINE messageDeserialization FOR List-» «FOREACH this AS element»«LET (Property)element AS property»«EXPAND createType FOR property.type» «property.name.underscoreToCamelCase().toFirstLower()»= «EXPAND deserialize FOR property» «ENDLET»«ENDFOREACH-» «ENDDEFINE» «DEFINE deserialize FOR Property»(«EXPAND createUnboxedType FOR this.type») fSerializer.deserialize(«this.name.camelCaseToUnderscore().toUpperCase()»_NAME, content_4711_, «EXPAND nestedRecordFactory FOR this.type»«EXPAND serializeType FOR this.type»);«ENDDEFINE» «DEFINE nestedRecordFactory FOR ListType»«EXPAND nestedRecordFactory FOR this.parameter»«ENDDEFINE» «DEFINE nestedRecordFactory FOR MapType»«EXPAND nestedRecordFactory FOR this.valueType»«ENDDEFINE» «DEFINE nestedRecordFactory FOR NestedRecordType»new NestedRecordFactory() { @Override public NestedRecord createNestedRecord(JSONObject content_4711_) throws JSONException { «EXPAND messageDeserialization FOR this» return new «EXPAND createType FOR this»(«EXPAND propertiesParameterNameList FOR this.properties»); } }«ENDDEFINE» «DEFINE nestedRecordFactory FOR DataType»null«ENDDEFINE» «DEFINE serializeType FOR ListType», AraneaType.SEQUENCE«EXPAND serializeType FOR this.parameter»«ENDDEFINE» «DEFINE serializeType FOR MapType», AraneaType.MAP«EXPAND serializeType FOR this.valueType»«ENDDEFINE» «DEFINE serializeType FOR NestedRecordType», AraneaType.NESTED«ENDDEFINE» «DEFINE serializeType FOR StringType», AraneaType.STRING«ENDDEFINE» «DEFINE serializeType FOR IntegerType», AraneaType.INTEGER«ENDDEFINE» «DEFINE serializeType FOR DoubleType», AraneaType.DOUBLE«ENDDEFINE» «DEFINE serializeType FOR BooleanType», AraneaType.BOOLEAN«ENDDEFINE» «DEFINE serializeType FOR BinaryType», AraneaType.BINARY«ENDDEFINE» «DEFINE serializeType FOR AnyType», AraneaType.ANY«ENDDEFINE» «DEFINE serializeType FOR DataType»UNKNOWN_TYPE«ENDDEFINE» «DEFINE nestedRecord FOR ListType»«EXPAND nestedRecord FOR this.parameter»«ENDDEFINE» «DEFINE nestedRecord FOR MapType»«EXPAND nestedRecord FOR this.valueType»«ENDDEFINE» «DEFINE nestedRecord FOR NestedRecordType» public static class «name.underscoreToCamelCase()»Record extends NestedRecord { «FOREACH properties AS property»«EXPAND nestedRecord FOR property.type»«ENDFOREACH» «FOREACH properties AS property» «IF property.description.trim().length > 0-» /** * «property.description» */ «ENDIF-» public final «EXPAND createType FOR property.type» «property.name.underscoreToCamelCase().toFirstLower()»; «ENDFOREACH» public «name.underscoreToCamelCase()»Record«EXPAND clientConstructor FOR this» «EXPAND serializeToJSON FOR this» } «ENDDEFINE» «DEFINE nestedRecord FOR DataType»«ENDDEFINE» «DEFINE createType FOR ListType»List<«EXPAND createUnboxedType FOR this.parameter»>«ENDDEFINE» «DEFINE createType FOR MapType»Map