/*
* Copyright: Almende B.V. (2014), Rotterdam, The Netherlands
* License: The Apache Software License, Version 2.0
*/
package com.almende.eve.capabilities;
import com.almende.eve.capabilities.handler.Handler;
import com.fasterxml.jackson.databind.node.ObjectNode;
/**
* The Interface CapabilityBuilderInterface.
*
* @param <T>
* the generic type
*/
public interface CapabilityBuilderInterface<T extends Capability> {
/**
* With config.
*
* @param params
* the params
* @return the capability builder interface
*/
CapabilityBuilderInterface<T> withConfig(final ObjectNode params);
/**
* With handle.
*
* @param handle
* the handle
* @return the capability builder interface
*/
CapabilityBuilderInterface<T> withHandle(final Handler<?> handle);
/**
* With class loader.
*
* @param cl
* the cl
* @return the capability builder interface
*/
CapabilityBuilderInterface<T> withClassLoader(final ClassLoader cl);
/**
* Builds the.
*
* @return the t
*/
T build();
}