00001 
00002 
00003 
00004 
00005 
00006 
00007 
00008 
00009 
00010 
00011 
00012 
00013 
00014 
00015 
00016 
00017 
00018 
00019 
00020 
00021 
00022 
00023 
00024 
00025 
00026 
00027 
00028 
00029 
00030  
00031 package org.objectweb.proactive.calcium.proactive;
00032 
00033 import org.objectweb.proactive.ProActive;
00034 import org.objectweb.proactive.calcium.ResourceManager;
00035 import org.objectweb.proactive.core.ProActiveException;
00036 import org.objectweb.proactive.core.descriptor.data.ProActiveDescriptor;
00037 import org.objectweb.proactive.core.descriptor.data.VirtualNode;
00038 import org.objectweb.proactive.core.node.Node;
00039 import org.objectweb.proactive.core.node.NodeException;
00040 
00041 public abstract class AbstractProActiveManager extends ResourceManager{
00042         protected VirtualNode vnode;
00043         protected Node nodes[];
00044         
00045         private AbstractProActiveManager(Node nodes[], VirtualNode vn, String descriptorPath, String virtualNodeName){
00046 
00047                 if(descriptorPath !=null && virtualNodeName !=null){
00048                         ProActiveDescriptor pad = null;
00049                         try {
00050                                 pad = ProActive.getProactiveDescriptor(descriptorPath);
00051                         } catch (ProActiveException e) {
00052                                 logger.error("Error, unable to load ProActive descriptor: "+descriptorPath);
00053                                 e.printStackTrace();
00054                                 return;
00055                         }
00056                         vn = pad.getVirtualNode(virtualNodeName); 
00057                 }
00058                 
00059                 if(vn !=null){
00060                         vnode=vn;
00061                         vnode.activate();
00062                         try {
00063                                 this.nodes = vnode.getNodes();
00064                         } catch (NodeException e) {
00065                                 logger.error("Error, unable to get nodes from virtual node: "+vn.getName());
00066                                 e.printStackTrace();
00067                                 return;
00068                         }
00069                 }
00070         }
00071         
00072         public AbstractProActiveManager(Node nodes[]){          
00073                 this( nodes, null, null,null);
00074         }
00075         
00076         public AbstractProActiveManager(VirtualNode vn){
00077                 this(null,vn,null,null);
00078         }
00079         
00080         public AbstractProActiveManager(String descriptorPath, String virtualNodeName){
00081                 this(null,null,descriptorPath,virtualNodeName);
00082         }
00083         
00084         @Override
00085         public void shutdown(){
00086                 if(vnode != null){
00087                         vnode.killAll(false);
00088                 }
00089         }
00090 }