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.EventDelegator;
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.DeployerAbstract;
/**
* The base for most deployer implementations.
*
* @author elponderador
* @author $Author$
* @version $Id$
*/
public abstract class VirtualArtifactDeployerAbstract<DS extends IVirtualArtifact, DU extends IVirtualArtifactDeployment<DS>>
extends DeployerAbstract<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(":");
}
}