Service Chainer

Quickly and easily chain multiple service calls together with the ability to manipulate each input payload using templates.

Currently Supports

Special Template Input Constants

  • document (Freemarker/Velocity). Represents incoming data payload json
  • JSONUtils (Velocity). Helper class used to output Java Map to JSON.
  • Integer (Velocity). java.lang.Integer static class
  • Double (Velocity). java.lang.Double static class
  • Float (Velocity). java.lang.Float static class
  • Boolean (Velocity). java.lang.Boolean static class

Notes

To develop service chains with a UI interface, see this project: https://github.com/orange451/ServiceChainerApp

Sample Template Transformation

import java.util.Map;

import dev.anarchy.common.DServiceDefinition;
import dev.anarchy.translate.runner.BasicServiceChainRunner;
import dev.anarchy.translate.util.JSONUtils;
import dev.anarchy.translate.util.TranslateType;

public class SampleApplication {
	
	private static final String template = "{\"user\":\"${document.Username}\"}";
	
	private static final String data = "{\"Username\":\"Hello\"}";
	
	public static void main(String[] args) {
		
		System.out.println("Template:\n" + template);
		System.out.println("Data:\n" + data);
		
		// Create Service Definition
		DServiceDefinition serviceDefinition = new DServiceDefinition();
		serviceDefinition.setTransformationType(TranslateType.FREEMARKER.getName());
		serviceDefinition.setTemplateContent(template);

		// Create a runner and test service definition
		Map<String, Object> input = JSONUtils.jsonToMap(data);
		Map<String, Object> output = null;
		try {
			BasicServiceChainRunner runner = new BasicServiceChainRunner(null);
			output = runner.transformSingle(serviceDefinition, input, false);
		} catch(Exception e) {
			e.printStackTrace();
		}
		
		// View output
		System.out.println("Output:\n" + JSONUtils.mapToJson(output));
	}
}