diff options
14 files changed, 77 insertions, 81 deletions
@@ -71,6 +71,11 @@ <artifactId>xalan</artifactId>
<version>2.7.1</version>
</dependency>
+ <dependency>
+ <groupId>org.codehaus.castor</groupId>
+ <artifactId>castor-codegen</artifactId>
+ <version>1.3.2</version>
+ </dependency>
</dependencies>
</dependencyManagement>
<build>
diff --git a/src/main/java/com/c2kernel/process/Bootstrap.java b/src/main/java/com/c2kernel/process/Bootstrap.java index 99b40f3..39a13d2 100644 --- a/src/main/java/com/c2kernel/process/Bootstrap.java +++ b/src/main/java/com/c2kernel/process/Bootstrap.java @@ -60,9 +60,11 @@ public class Bootstrap Thread.currentThread().setName("Bootstrapper");
// make sure all of the boot items are up-to-date
+ Logger.msg("Bootstrap.run() - Verifying kernel boot data items");
verifyBootDataItems();
// verify the server item's wf
+ Logger.msg("Bootstrap.run() - Initialising Server Item Workflow");
initServerItemWf();
// register modules
@@ -159,6 +161,18 @@ public class Bootstrap String propVal = propName.equals("Name")?itemName:pd.getDefaultValue();
props.list.add(new Property(propName, propVal));
}
+
+ // HACK: this gives all module resources a workflow. Maybe have a 'debug' flag in the module xml or server config to do this. Normally module resources should be read-only, as they would be reset at next boot.
+ CompositeActivity ca = new CompositeActivity();
+ if (ns!=null) {
+ String wf;
+ if (itemType.equals("CA")) wf = "ManageCompositeActDef";
+ else if (itemType.equals("EA")) wf = "ManageElementaryActDef";
+ else if (itemType.equals("OD")) wf = "ManageSchema";
+ else if (itemType.equals("SC")) wf = "ManageScript";
+ else throw new Exception("Unknown bootstrap item type: "+itemType);
+ ca = (CompositeActivity) ((CompositeActivityDef)LocalObjectLoader.getActDef(wf, "last")).instantiate();
+ }
EntityPath entityPath = Gateway.getLDAPLookup().getNextKeyManager().generateNextEntityKey();
TraceableEntity newItem = (TraceableEntity)Gateway.getCorbaServer().createEntity(entityPath);
@@ -166,7 +180,7 @@ public class Bootstrap newItem.initialise(
1,
CastorXMLUtility.marshall(props),
- CastorXMLUtility.marshall(new CompositeActivity()));
+ CastorXMLUtility.marshall(ca));
DomainPath newDomPath = new DomainPath(getTypeRoot(itemType).toString()+"/system/"+(ns==null?"kernel":ns)+"/"+itemName);
newDomPath.setEntity(entityPath);
Gateway.getLDAPLookup().add(newDomPath);
diff --git a/src/main/java/com/c2kernel/process/Gateway.java b/src/main/java/com/c2kernel/process/Gateway.java index 399a81b..82357d8 100644 --- a/src/main/java/com/c2kernel/process/Gateway.java +++ b/src/main/java/com/c2kernel/process/Gateway.java @@ -19,6 +19,7 @@ import com.c2kernel.lookup.LDAPLookup; import com.c2kernel.lookup.LDAPProperties;
import com.c2kernel.persistency.ClusterStorageException;
import com.c2kernel.persistency.TransactionManager;
+import com.c2kernel.process.module.ModuleManager;
import com.c2kernel.utils.CastorXMLUtility;
import com.c2kernel.utils.FileStringUtility;
import com.c2kernel.utils.Language;
diff --git a/src/main/java/com/c2kernel/process/StandardClient.java b/src/main/java/com/c2kernel/process/StandardClient.java index f6f48ed..2ef6107 100644 --- a/src/main/java/com/c2kernel/process/StandardClient.java +++ b/src/main/java/com/c2kernel/process/StandardClient.java @@ -10,9 +10,14 @@ package com.c2kernel.process;
+import com.c2kernel.entity.proxy.AgentProxy;
+
abstract public class StandardClient extends AbstractMain
-{
+{
- //TODO: Auto-update from server
+ static public void main(String[] args) throws Exception {
+ Gateway.init(readC2KArgs(args), false);
+ AgentProxy user = Gateway.connect("username", "password");
+ }
}
diff --git a/src/main/java/com/c2kernel/process/Module.java b/src/main/java/com/c2kernel/process/module/Module.java index 6e5f8d1..08ea4dc 100644 --- a/src/main/java/com/c2kernel/process/Module.java +++ b/src/main/java/com/c2kernel/process/module/Module.java @@ -1,4 +1,4 @@ -package com.c2kernel.process;
+package com.c2kernel.process.module;
import java.io.StringReader;
import java.util.ArrayList;
@@ -28,6 +28,8 @@ import com.c2kernel.lifecycle.instance.stateMachine.Transitions; import com.c2kernel.lookup.DomainPath;
import com.c2kernel.persistency.outcome.Outcome;
import com.c2kernel.persistency.outcome.Viewpoint;
+import com.c2kernel.process.Bootstrap;
+import com.c2kernel.process.Gateway;
import com.c2kernel.scripting.ErrorInfo;
import com.c2kernel.scripting.Script;
import com.c2kernel.scripting.ScriptingEngineException;
@@ -291,25 +293,4 @@ public class Module { public boolean hasDependency(String dep) {
return dependency.contains(dep);
}
-
- public abstract class ModuleImport {
- String importName;
- }
-
- public class ModuleResource extends ModuleImport {
- String resourceType;
- String resourceLocation;
- }
-
- public class ModuleItem extends ModuleImport {
- ArrayList<Property> props = new ArrayList<Property>();
- HashMap<String, String> outcomes = new HashMap<String, String>();
- ArrayList<Dependency> deps = new ArrayList<Dependency>();
- String workflow;
- }
-
- public class ModuleAgent extends ModuleImport {
- String password;
- ArrayList<String> roles = new ArrayList<String>();
- }
}
\ No newline at end of file diff --git a/src/main/java/com/c2kernel/process/ModuleException.java b/src/main/java/com/c2kernel/process/module/ModuleException.java index 5e60801..cc15565 100644 --- a/src/main/java/com/c2kernel/process/ModuleException.java +++ b/src/main/java/com/c2kernel/process/module/ModuleException.java @@ -1,4 +1,4 @@ -package com.c2kernel.process;
+package com.c2kernel.process.module;
public class ModuleException extends Exception {
diff --git a/src/main/java/com/c2kernel/process/ModuleManager.java b/src/main/java/com/c2kernel/process/module/ModuleManager.java index b336681..b99b325 100644 --- a/src/main/java/com/c2kernel/process/ModuleManager.java +++ b/src/main/java/com/c2kernel/process/module/ModuleManager.java @@ -1,4 +1,4 @@ -package com.c2kernel.process;
+package com.c2kernel.process.module;
import java.io.IOException;
import java.net.URL;
@@ -9,6 +9,7 @@ import java.util.Properties; import com.c2kernel.common.ObjectNotFoundException;
import com.c2kernel.entity.proxy.ItemProxy;
import com.c2kernel.lookup.DomainPath;
+import com.c2kernel.process.Gateway;
import com.c2kernel.utils.FileStringUtility;
import com.c2kernel.utils.Logger;
diff --git a/src/main/java/com/c2kernel/utils/KeyValuePair.java b/src/main/java/com/c2kernel/utils/KeyValuePair.java index 5523eb6..5e5a147 100644 --- a/src/main/java/com/c2kernel/utils/KeyValuePair.java +++ b/src/main/java/com/c2kernel/utils/KeyValuePair.java @@ -63,14 +63,14 @@ public class KeyValuePair mValue = value;
}
- public Float getFloatValue() {
- if (mValue instanceof Float)
- return (Float)mValue;
+ public Double getFloatValue() {
+ if (mValue instanceof Double)
+ return (Double)mValue;
else
return null;
}
- public void setFloatValue(Float value) {
+ public void setFloatValue(Double value) {
mValue = value;
}
diff --git a/src/main/resources/boot/OD/CompositeActivityDef.xsd b/src/main/resources/boot/OD/CompositeActivityDef.xsd index e840734..b6dc373 100644 --- a/src/main/resources/boot/OD/CompositeActivityDef.xsd +++ b/src/main/resources/boot/OD/CompositeActivityDef.xsd @@ -178,6 +178,7 @@ <xs:attribute name="String" type="xs:string" use="optional"/>
<xs:attribute name="Boolean" type="xs:boolean" use="optional"/>
<xs:attribute name="Integer" type="xs:int" use="optional"/>
+ <xs:attribute name="Float" type="xs:double" use="optional"/>
</xs:complexType>
</xs:element>
</xs:sequence>
diff --git a/src/main/resources/boot/OD/ElementaryActivityDef.xsd b/src/main/resources/boot/OD/ElementaryActivityDef.xsd index ea637e4..496ac90 100644 --- a/src/main/resources/boot/OD/ElementaryActivityDef.xsd +++ b/src/main/resources/boot/OD/ElementaryActivityDef.xsd @@ -12,6 +12,7 @@ <xs:attribute name="Boolean" type="xs:boolean" use="optional"/>
<xs:attribute name="String" type="xs:string" use="optional"/>
<xs:attribute name="Integer" type="xs:int" use="optional"/>
+ <xs:attribute name="Float" type="xs:double" use="optional"/>
</xs:complexType>
</xs:element>
</xs:sequence>
diff --git a/src/main/resources/boot/allbootitems.txt b/src/main/resources/boot/allbootitems.txt index 277699c..5eddc7a 100644 --- a/src/main/resources/boot/allbootitems.txt +++ b/src/main/resources/boot/allbootitems.txt @@ -7,8 +7,17 @@ OD/PredefinedStepOutcome OD/PropertyDescription
OD/Schema
OD/Script
+EA/AssignNewVersionFromLast
+EA/EditActivityDef
+EA/EditSchema
+EA/EditScriptDefinition
EA/CreateNewItem
EA/CreateNewAgent
CA/NoWorkflow
CA/ServerItemWorkflow
+CA/ManageCompositeActDef
+CA/ManageElementaryActDef
+CA/ManageSchema
+CA/ManageScript
+SC/CreateNewNumberedVersionFromLast
SC/ServerNewEntity
diff --git a/src/main/resources/mapFiles/CastorHashMapMap.xml b/src/main/resources/mapFiles/CastorHashMapMap.xml deleted file mode 100644 index 601cf06..0000000 --- a/src/main/resources/mapFiles/CastorHashMapMap.xml +++ /dev/null @@ -1,41 +0,0 @@ -<?xml version="1.0"?>
-
-<mapping>
- <class name="com.c2kernel.utils.KeyValuePair">
- <map-to xml="KeyValuePair"/>
- <field name="mKey"
- type="string"
- direct="false"
- get-method="getKey"
- set-method="setKey">
- <bind-xml name="Key" node="attribute"/>
- </field>
- <field name="IntegerValue"
- type="java.lang.Integer"
- direct="false">
- <bind-xml name="Integer" node="attribute"/>
- </field>
- <field name="StringValue"
- type="java.lang.String"
- direct="false">
- <bind-xml name="String" node="attribute"/>
- </field>
- <field name="BooleanValue"
- type="java.lang.Boolean"
- direct="false">
- <bind-xml name="Boolean" node="attribute"/>
- </field>
- <field name="FloatValue"
- type="java.lang.Float"
- direct="false">
- <bind-xml name="Float" node="attribute"/>
- </field>
- </class>
- <class name="com.c2kernel.utils.CastorArrayList">
- <map-to xml="ArrayList"/>
- <field name="list" collection="arraylist" direct="true" container="false">
- <bind-xml name="ArrayListMember" node="element"/>
- </field>
- </class>
-</mapping>
-
diff --git a/src/main/resources/mapFiles/KeyValuePairMap.xml b/src/main/resources/mapFiles/KeyValuePairMap.xml index 8175151..dc67609 100644 --- a/src/main/resources/mapFiles/KeyValuePairMap.xml +++ b/src/main/resources/mapFiles/KeyValuePairMap.xml @@ -20,6 +20,11 @@ direct="false">
<bind-xml name="String" node="attribute"/>
</field>
+ <field name="FloatValue"
+ type="java.lang.Double"
+ direct="false">
+ <bind-xml name="Float" node="attribute"/>
+ </field>
<field name="BooleanValue"
type="java.lang.Boolean"
direct="false">
diff --git a/src/main/resources/mapFiles/ModuleMap.xml b/src/main/resources/mapFiles/ModuleMap.xml index 4bc4db1..15fcb99 100644 --- a/src/main/resources/mapFiles/ModuleMap.xml +++ b/src/main/resources/mapFiles/ModuleMap.xml @@ -1,27 +1,41 @@ <?xml version="1.0"?>
<mapping>
- <class name="com.c2kernel.process.Module">
+ <class name="com.c2kernel.process.module.Module">
<map-to xml="CristalModule"/>
- <field name="ns" direct="false" type="string">
+ <field name="ns" direct="true" type="string">
<bind-xml name="ns" node="attribute"/>
</field>
- <field name="name" direct="false" type="string">
+ <field name="name" direct="true" type="string">
<bind-xml name="name" node="attribute"/>
</field>
- <field name="desc" direct="false" type="string">
+ <field name="desc" direct="true" type="string">
<bind-xml name="Description" node="element"/>
</field>
- <field name="version" direct="false" type="string">
+ <field name="version" direct="true" type="string">
<bind-xml name="Version" node="element"/>
</field>
- <field name="dependency" collection="array" direct="false" type="string">
+ <field name="dependency" collection="arraylist" direct="true" type="string">
<bind-xml name="Dependency" node="element"/>
</field>
- <field name="resURL" direct="false" type="string">
+ <field name="resURL" direct="true" type="string">
<bind-xml name="ResourceURL" node="element"/>
</field>
- <field name="dependency" collection="arraylist" direct="false" type="string">
- <bind-xml name="Config" node="element"/>
+ <field name="dependency" collection="arraylist" direct="true" type="string">
+ <bind-xml name="Dependency" node="element"/>
</field>
+ <field name="imports" collection="arraylist" direct="true"
+ type="com.c2kernel.process.module.ModuleImport">
+ <bind-xml auto-naming="deriveByClass" node="element"/>
+ <field name="importName" direct="true" type="string">
+ <bind-xml name="name" node="attribute"/>
+ </field>
+ </field>
</class>
+ <class name="com.c2kernel.process.module.ModuleItem"
+ extends="com.c2kernel.process.module.ModuleImport">
+ <map-to xml="Item"/>
+ <field name="workflow" direct="true" type="string">
+ <bind-xml name="workflow" node="attribute"/>
+ </field>
+ </class>
</mapping>
|
