package org.jfox.ejb.deploy;
import org.huihoo.jfox.system.ComponentSupport;
import org.jfox.ejb.meta.EJBDescriptionException;
import org.jfox.ejb.meta.EJBDescriptor;
import java.util.Map;
import java.util.HashMap;
import java.net.MalformedURLException;
import java.net.URL;
import java.io.IOException;
public abstract class DeployerSupport extends ComponentSupport implements Deployer {
private Map deployments = new HashMap();
public void deploy (URL url) throws MalformedURLException, IOException {
logger.info("depoying " + url.toString());
synchronized (deployments) {
if (deployments.containsKey(url)) {
try {
undeploy(url);
}
catch (Throwable t) {
logger.warn("undeploy failure", t);
}
}
try {
EJBDescriptor[] infos = doDeploy(url);
if(infos != null && infos.length !=0) {
deployments.put(url, infos);
}
}
catch (Throwable t) {
logger.warn("deploy failure", t);
}
}
}
public void undeploy (URL url) throws MalformedURLException, IOException,EJBDescriptionException {
logger.info("undeploy " + url.toString());
synchronized (deployments) {
if (deployments.containsKey(url)) {
EJBDescriptor[] info = (EJBDescriptor[])deployments.remove(url);
doUndeploy(info);
}
}
}
public boolean isDeployed (URL url) throws MalformedURLException {
synchronized (deployments) {
return deployments.containsKey(url);
}
}
protected Object getInfo(URL url) {
return deployments.get(url);
}
protected Map getDeployments() {
Map ret = new HashMap();
synchronized (deployments) {
ret.putAll(deployments);
}
return ret;
}
protected abstract EJBDescriptor[] doDeploy(URL url) throws IOException,EJBDescriptionException;
protected abstract void doUndeploy(EJBDescriptor[] deployments) throws IOException,EJBDescriptionException;
}