summaryrefslogtreecommitdiff
path: root/src/main/java/com/c2kernel/process/Bootstrap.java
diff options
context:
space:
mode:
Diffstat (limited to 'src/main/java/com/c2kernel/process/Bootstrap.java')
-rw-r--r--src/main/java/com/c2kernel/process/Bootstrap.java43
1 files changed, 28 insertions, 15 deletions
diff --git a/src/main/java/com/c2kernel/process/Bootstrap.java b/src/main/java/com/c2kernel/process/Bootstrap.java
index bcc5e68..bc93676 100644
--- a/src/main/java/com/c2kernel/process/Bootstrap.java
+++ b/src/main/java/com/c2kernel/process/Bootstrap.java
@@ -9,6 +9,7 @@ import java.util.StringTokenizer;
import org.custommonkey.xmlunit.Diff;
import org.custommonkey.xmlunit.XMLUnit;
+import com.c2kernel.common.InvalidDataException;
import com.c2kernel.common.ObjectNotFoundException;
import com.c2kernel.entity.proxy.AgentProxy;
import com.c2kernel.entity.proxy.ItemProxy;
@@ -17,17 +18,17 @@ import com.c2kernel.events.History;
import com.c2kernel.lifecycle.CompositeActivityDef;
import com.c2kernel.lifecycle.instance.CompositeActivity;
import com.c2kernel.lifecycle.instance.Workflow;
-import com.c2kernel.lifecycle.instance.predefined.PredefinedStepContainer;
-import com.c2kernel.lifecycle.instance.predefined.ServerPredefinedStepContainer;
+import com.c2kernel.lifecycle.instance.predefined.server.ServerPredefinedStepContainer;
import com.c2kernel.lifecycle.instance.stateMachine.Transition;
import com.c2kernel.lookup.AgentPath;
import com.c2kernel.lookup.DomainPath;
import com.c2kernel.lookup.ItemPath;
-import com.c2kernel.lookup.Lookup;
+import com.c2kernel.lookup.LookupManager;
import com.c2kernel.lookup.Path;
import com.c2kernel.lookup.RolePath;
import com.c2kernel.persistency.ClusterStorage;
import com.c2kernel.persistency.outcome.Outcome;
+import com.c2kernel.persistency.outcome.OutcomeValidator;
import com.c2kernel.persistency.outcome.Viewpoint;
import com.c2kernel.process.resource.DefaultResourceImportHandler;
import com.c2kernel.process.resource.ResourceImportHandler;
@@ -116,6 +117,7 @@ public class Bootstrap
public static DomainPath verifyResource(String ns, String itemName, Integer version, String itemType, String dataLocation, int layer, boolean reset) throws Exception {
if (version == null) version = 0;
+ LookupManager lookupManager = Gateway.getLookupManager();
ResourceImportHandler typeImpHandler = getHandler(itemType);
Logger.msg(1, "Bootstrap.verifyResource() - Verifying version "+version+" of "+typeImpHandler.getName()+" "+itemName);
@@ -162,8 +164,8 @@ public class Bootstrap
Logger.msg("Module item "+itemName+" found with path "+path.toString()+". Moving to "+modDomPath.toString());
modDomPath.setEntity(new ItemPath(thisProxy.getSystemKey()));
if (!modDomPath.exists())
- Gateway.getLookup().add(modDomPath);
- Gateway.getLookup().delete(path);
+ lookupManager.add(modDomPath);
+ lookupManager.delete(path);
}
}
@@ -193,6 +195,15 @@ public class Bootstrap
}
// data was missing or doesn't match
+ // validate it
+ OutcomeValidator validator = OutcomeValidator.getValidator(LocalObjectLoader.getSchema(newOutcome.getSchemaType(), newOutcome.getSchemaVersion()));
+ String error = validator.validate(newOutcome.getData());
+ if (error.length() > 0) {
+ Logger.error("Outcome not valid: \n " + error);
+ throw new InvalidDataException(error, "");
+ }
+
+ // store
Logger.msg("Bootstrap.verifyResource() - Writing new "+newOutcome.getSchemaType()+" v"+version+" to "+typeImpHandler.getName()+" "+itemName);
History hist = new History(thisProxy.getSystemKey(), thisProxy);
Transition predefDone = new Transition(0, "Done", 0, 0);
@@ -242,6 +253,8 @@ public class Bootstrap
// create props
PropertyDescriptionList pdList = impHandler.getPropDesc();
PropertyArrayList props = new PropertyArrayList();
+ LookupManager lookupManager = Gateway.getLookupManager();
+
for (int i = 0; i < pdList.list.size(); i++) {
PropertyDescription pd = pdList.list.get(i);
String propName = pd.getName();
@@ -265,10 +278,10 @@ public class Bootstrap
ItemPath entityPath = Gateway.getNextKeyManager().generateNextEntityKey();
Gateway.getCorbaServer().createEntity(entityPath);
- Gateway.getLookup().add(entityPath);
+ lookupManager.add(entityPath);
DomainPath newDomPath = impHandler.getPath(itemName, ns);
newDomPath.setEntity(entityPath);
- Gateway.getLookup().add(newDomPath);
+ lookupManager.add(newDomPath);
ItemProxy newItemProxy = Gateway.getProxyManager().getProxy(entityPath);
newItemProxy.initialise( 1, props, ca, null);
return newItemProxy;
@@ -279,12 +292,14 @@ public class Bootstrap
**************************************************************************/
private static void checkAgent(String name, String pass, String role, boolean joblist) throws Exception {
Logger.msg(1, "Bootstrap.checkAgent() - Checking for existence of '"+name+"' user.");
- Lookup lookup = Gateway.getLookup();
+ LookupManager lookup = Gateway.getLookupManager();
+
try {
systemAgents.put(name, Gateway.getProxyManager().getAgentProxy(lookup.getAgentPath(name)));
Logger.msg(3, "Bootstrap.checkAgent() - User '"+name+"' found.");
return;
} catch (ObjectNotFoundException ex) { }
+
Logger.msg("Bootstrap.checkAgent() - User '"+name+"' not found. Creating.");
RolePath rolePath;
@@ -299,7 +314,7 @@ public class Bootstrap
AgentPath agentPath = new AgentPath(entityPath.getSysKey(), name);
agentPath.setPassword(pass);
Gateway.getCorbaServer().createEntity(agentPath);
- Gateway.getLookup().add(agentPath);
+ lookup.add(agentPath);
// assign admin role
Logger.msg("Bootstrap.checkAgent() - Assigning role '"+role+"'");
@@ -331,6 +346,7 @@ public class Bootstrap
}
public static void createServerItem() throws Exception {
+ LookupManager lookupManager = Gateway.getLookupManager();
String serverName = Gateway.getProperties().getProperty("ItemServer.name");
thisServerPath = new DomainPath("/servers/"+serverName);
ItemPath serverEntity;
@@ -340,9 +356,9 @@ public class Bootstrap
Logger.msg("Creating server item "+thisServerPath);
serverEntity = Gateway.getNextKeyManager().generateNextEntityKey();
Gateway.getCorbaServer().createEntity(serverEntity);
- Gateway.getLookup().add(serverEntity);
+ lookupManager.add(serverEntity);
thisServerPath.setEntity(serverEntity);
- Gateway.getLookup().add(thisServerPath);
+ lookupManager.add(thisServerPath);
}
Gateway.getStorage().put(serverEntity.getSysKey(), new Property("Name", serverName, false), null);
Gateway.getStorage().put(serverEntity.getSysKey(), new Property("Type", "Server", false), null);
@@ -358,10 +374,7 @@ public class Bootstrap
public static void initServerItemWf() throws Exception {
CompositeActivityDef serverWfCa = (CompositeActivityDef)LocalObjectLoader.getActDef("ServerItemWorkflow", 0);
- Workflow wf = new Workflow((CompositeActivity)serverWfCa.instantiate());
- PredefinedStepContainer predef = (PredefinedStepContainer)wf.search("workflow/predefined");
- wf.getChildGraphModel().removeVertex(predef);
- wf.addChild(new ServerPredefinedStepContainer(), predef.getCentrePoint());
+ Workflow wf = new Workflow((CompositeActivity)serverWfCa.instantiate(), new ServerPredefinedStepContainer());
wf.initialise(thisServerPath.getSysKey(), systemAgents.get("system").getPath());
Gateway.getStorage().put(thisServerPath.getSysKey(), wf, null);
}