package net.sourceforge.javautil.deployer.artifact.impl;
import java.util.ArrayList;
import java.util.Collection;
import java.util.Collections;
import java.util.LinkedHashMap;
import java.util.List;
import java.util.Map;
import java.util.concurrent.CopyOnWriteArrayList;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import net.sourceforge.javautil.common.event.IEventPropagator;
import net.sourceforge.javautil.common.event.EventProxy;
import net.sourceforge.javautil.common.io.IVirtualArtifact;
import net.sourceforge.javautil.common.proxy.CollectionTargetProxy;
import net.sourceforge.javautil.deployer.IDeployer;
import net.sourceforge.javautil.deployer.DeployerEvent;
import net.sourceforge.javautil.deployer.DeployerException;
import net.sourceforge.javautil.deployer.DeployerEvent.Type;
import net.sourceforge.javautil.deployer.artifact.IVirtualArtifactDeployer;
import net.sourceforge.javautil.deployer.artifact.VirtualArtifactDeployerEvent;
import net.sourceforge.javautil.deployer.artifact.VirtualArtifactDeployerException;
import net.sourceforge.javautil.deployer.artifact.IVirtualArtifactDeployerListener;
import net.sourceforge.javautil.deployer.artifact.IVirtualArtifactDeployment;
import net.sourceforge.javautil.deployer.artifact.IVirtualArtifactDeploymentContext;
import net.sourceforge.javautil.deployer.artifact.IVirtualArtifactDeploymentPattern;
import net.sourceforge.javautil.deployer.impl.DeployerBase;
/**
* The base for most single deployer implementations.
*
* @author elponderador
* @author $Author$
* @version $Id$
*/
public abstract class VirtualArtifactDeployerBase<DS extends IVirtualArtifact, DU extends IVirtualArtifactDeployment<DS>>
extends DeployerBase<DS, DU, IVirtualArtifactDeploymentContext<DS, DU>, IVirtualArtifactDeployerListener<VirtualArtifactDeployerEvent>>
implements IVirtualArtifactDeployer<DS, DU>
{
@Override protected DeployerEvent createEvent(IDeployer deployer, IVirtualArtifactDeployment deployment, Type type, Throwable throwable) {
return new VirtualArtifactDeployerEvent((IVirtualArtifactDeployer)deployer, type, deployment);
}
@Override protected IEventPropagator<VirtualArtifactDeployerEvent, IVirtualArtifactDeployerListener<VirtualArtifactDeployerEvent>> createEventPropagator() {
return EventProxy.createProxy(IVirtualArtifactDeployerListener.class, VirtualArtifactDeployerEvent.class);
}
@Override protected String createUniqueId(IVirtualArtifact artifact) {
return artifact.getPath().toString(":");
}
public DU deploy(DS deployable) throws DeployerException {
return this.deploy(new VirtualArtifactDeploymentContext<DS, DU>(deployable));
}
}