public CougarTransformations() {
super();
Transformation[] definitions = new Transformation[] {
//directory name should not contain / at the end
new Transformation("interface.ftl", "/interface", "${package}/${majorVersion}", "${name}Service.java", false, false, OutputDomain.Server),
new Transformation("asyncServiceInterface.ftl", "/interface", "${package}/${majorVersion}", "${name}AsyncService.java", false, false, OutputDomain.Server),
new Transformation("serviceDefinition.ftl", "/interface", "${package}/${majorVersion}", "${name}ServiceDefinition.java", false, false, OutputDomain.Client_and_Server),
new Transformation("serviceExecutableResolver.ftl", "/interface", "${package}/${majorVersion}", "${name}ServiceExecutableResolver.java", false, false, OutputDomain.Server),
new Transformation("syncServiceExecutableResolver.ftl", "/interface", "${package}/${majorVersion}", "${name}SyncServiceExecutableResolver.java", false, false, OutputDomain.Server),
new Transformation("client.ftl", "/interface", "${package}/${majorVersion}", "${name}Client.java", false, false, OutputDomain.Client_and_Server),
new Transformation("client-impl.ftl", "/interface", "${package}/${majorVersion}", "${name}ClientImpl.java", false, false, OutputDomain.Client_and_Server),
new Transformation("clientExecutableResolver.ftl", "/interface", "${package}/${majorVersion}", "${name}ClientExecutableResolver.java", false, false, OutputDomain.Client),
new Transformation("clientFactory.ftl", "/interface", "${package}/${majorVersion}", "${name}ClientFactory.java", false, false, OutputDomain.Client),
new Transformation("clientSyncServiceImpl.ftl", "/interface", "${package}/${majorVersion}", "${name}SyncClientImpl.java", false, false, OutputDomain.Client_and_Server),
new Transformation("clientSyncServiceInterface.ftl", "/interface", "${package}/${majorVersion}", "${name}SyncClient.java", false, false, OutputDomain.Client_and_Server),
new Transformation("dataType.ftl", "/interface/dataType", "${package}/${majorVersion}/to", "${name}.java", true, false, OutputDomain.Client_and_Server),
new Transformation("dataTypeDelegate.ftl", "/interface/dataType", "${package}/${majorVersion}/to", "${name}Delegate.java", false, false, OutputDomain.Client_and_Server),
new Transformation("events/event.ftl", "/interface/event", "${package}/${majorVersion}/events", "${name}.java", true, false, OutputDomain.Client_and_Server),
new Transformation("events/jmsServiceBindingDescriptor.ftl", "/interface", "${package}/${majorVersion}/events", "${name}JMSServiceBindingDescriptor.java", true, false, OutputDomain.Client_and_Server),
new Transformation("exception.ftl", "/interface/exceptionType", "${package}/${majorVersion}/exception", "${name}.java",false, false, OutputDomain.Client_and_Server),
new Transformation("exceptionFactory.ftl", "/interface", "${package}/${majorVersion}/exception", "${name}ExceptionFactory.java",false, false, OutputDomain.Client_and_Server),
new Transformation("enum.ftl", "//parameter/validValues", "${package}/${majorVersion}/enumerations", "${name}Enum.java",true, true, OutputDomain.Client_and_Server),
new Transformation("wrappedValueEnum.ftl", "//simpleResponse/validValues", "${package}/${majorVersion}/enumerations", "${name}WrappedValueEnum.java",true, false, OutputDomain.Client_and_Server),
new Transformation("wrappedValueEnum.ftl", "//response/validValues", "${package}/${majorVersion}/enumerations", "${name}WrappedValueEnum.java",true, false, OutputDomain.Client_and_Server),
new Transformation("simpleTypeEnum.ftl", "/interface/simpleType/validValues", "${package}/${majorVersion}/enumerations", "${name}.java",true, false, OutputDomain.Client_and_Server),
new Transformation("jsonrpc/jsonRpcServiceBindingDescriptor.ftl", "/interface", "${package}/${majorVersion}/jsonrpc", "${name}JsonRpcServiceBindingDescriptor.java", false, false, OutputDomain.Client_and_Server),
new Transformation("rescript/requestDataType.ftl", "/interface/operation", "${package}/${majorVersion}/rescript", "${name}Request.java", true, false, OutputDomain.Client_and_Server),
new Transformation("rescript/responseDataType.ftl", "/interface/operation", "${package}/${majorVersion}/rescript", "${name}Response.java", true, false, OutputDomain.Client_and_Server, VoidResponseExcluder),
new Transformation("rescript/rescriptServiceBindingDescriptor.ftl", "/interface", "${package}/${majorVersion}/rescript", "${name}RescriptServiceBindingDescriptor.java", false, false, OutputDomain.Client_and_Server),
new Transformation("SOAP/soapServiceBindingDescriptor.ftl", "/interface", "${package}/${majorVersion}/soap", "${name}SoapServiceBindingDescriptor.java", false, false, OutputDomain.Client_and_Server),
new Transformation("socket/socketServiceBindingDescriptor.ftl", "/interface", "${package}/${majorVersion}/socket", "${name}SocketServiceBindingDescriptor.java", false, false, OutputDomain.Client_and_Server),
new Transformation("connectedDataType.ftl", "/interface/dataType", "interface:/interface", "${package}/${majorVersion}/co", "${name}CO.java", false, false, OutputDomain.Client_and_Server, null),
new Transformation("serverConnectedDataType.ftl", "/interface/dataType", "interface:/interface", "${package}/${majorVersion}/co/server", "${name}ServerCO.java", false, false, OutputDomain.Server, null),
new Transformation("clientConnectedDataType.ftl", "/interface/dataType", "interface:/interface", "${package}/${majorVersion}/co/client", "${name}ClientCO.java", false, false, OutputDomain.Client, null)
};
transformations.addAll(Arrays.asList(definitions));
validations.add(new DataTypeValidator());