All Downloads are FREE. Search and download functionalities are using the official Maven repository.

com.almende.eve.transform.rpc.RpcTransformBuilder Maven / Gradle / Ivy

/*
 * Copyright: Almende B.V. (2014), Rotterdam, The Netherlands
 * License: The Apache Software License, Version 2.0
 */
package com.almende.eve.transform.rpc;

import java.util.HashMap;
import java.util.Map;

import com.almende.eve.capabilities.AbstractCapabilityBuilder;
import com.almende.eve.capabilities.handler.Handler;
import com.almende.util.TypeUtil;

/**
 * The Class RpcService.
 */
public class RpcTransformBuilder extends AbstractCapabilityBuilder {
	private static final TypeUtil>	TYPEUTIL	= new TypeUtil>() {
																};
	private static final Map	INSTANCES	= new HashMap();
	
	
	/*
	 * (non-Javadoc)
	 * 
	 * @see
	 * com.almende.eve.capabilities.CapabilityService#get(com.fasterxml.jackson.
	 * databind
	 * .JsonNode, com.almende.eve.capabilities.handler.Handler, java.lang.Class)
	 */
	@Override
	public RpcTransform build() {
		if (getParams() == null){
			withConfig(new RpcTransformConfig());
		}
		RpcTransform result;
		if (getHandle() != null && getHandle().getKey() != null
				&& INSTANCES.containsKey(getHandle().getKey())) {
			result = INSTANCES.get(getHandle().getKey());
			final Handler oldHandle = result.getHandle();
			oldHandle.update(TYPEUTIL.inject(getHandle()));
		} else {
			result = new RpcTransform(getParams(), TYPEUTIL.inject(getHandle()));
		}
		if (getHandle() != null && getHandle().getKey() != null) {
			INSTANCES.put(getHandle().getKey(), result);
		}
		return result;
	}
	
}