bugfixes mainly...
[mir.git] / source / mir / producer / reader / ProducerConfigReader.java
index f673250..1b78791 100755 (executable)
@@ -280,8 +280,8 @@ public class ProducerConfigReader {
         name = (String) anAttributes.get(NODE_DEFINITION_NAME_ATTRIBUTE);
         ReaderTool.checkValidIdentifier( name );
 
-        if (producers.containsKey(name))
-          throw new ProducerConfigExc("Duplicate producer name: '" + name + "'");
+//        if (producers.containsKey(name))
+//          throw new ProducerConfigExc("Duplicate producer name: '" + name + "'");
 
         name = (String) anAttributes.get(NODE_DEFINITION_NAME_ATTRIBUTE);
 
@@ -296,7 +296,6 @@ public class ProducerConfigReader {
         producers.put(name, ((ProducerSectionHandler) aHandler).getProducerFactory());
       }
       else if (aHandler instanceof NodeDefinitionSectionHandler) {
-
         scriptedNodeBuilderLibrary.registerFactory(name,
             new DefaultProducerNodeBuilders.ScriptedProducerNodeBuilder.factory(
                 ((NodeDefinitionSectionHandler) aHandler).getDefinition()));
@@ -488,8 +487,10 @@ public class ProducerConfigReader {
         if (!anAttributes.isEmpty()) {
           throw new ProducerConfigExc( "No attributes allowed" );
         }
-        producerNode.addSubNode(new ScriptedProducerNodeDefinition.NodeParameterProducerNode(scriptedNodeName, aTag));
 
+        currentBuilder = new DefaultProducerNodeBuilders.ScriptedProducerParameterNodeBuilder(scriptedNodeName, aTag);
+//        producerNode.addSubNode(
+//        new ScriptedProducerNodeDefinition.NodeParameterProducerNode(scriptedNodeName, aTag));
         return new EmptySectionHandler();
       }
       else if (scriptedNodeBuilderLibrary.hasBuilderForName(aTag) || builderLibrary.hasBuilderForName((aTag))) {
@@ -555,13 +556,13 @@ public class ProducerConfigReader {
 
   public class NodeDefinitionSectionHandler extends SectionHandler {
     private ScriptedProducerNodeDefinition nodeDefinition;
-    private ProducerNode definition;
+    private ProducerNode body;
     private Map stringParameters;
     private Map nodeParameters;
     private String name;
 
     public NodeDefinitionSectionHandler(String aName) {
-      definition = null;
+      body = null;
       nodeParameters = null;
       stringParameters = null;
       name = aName;
@@ -575,7 +576,7 @@ public class ProducerConfigReader {
         if (nodeParameters!=null) {
           throw new ProducerConfigExc( "Parameters have already been declared" );
         }
-        if (definition!=null) {
+        if (body!=null) {
           throw new ProducerConfigExc( "Parameters should come before definition" );
         }
 
@@ -584,7 +585,7 @@ public class ProducerConfigReader {
       else if (aTag.equals("definition")) {
         return new ProducerNodeSectionHandler(name, nodeParameters.keySet());
       }
-      else throw new ProducerConfigExc("Only 'verb' tags allowed here, '" + aTag + "' encountered.");
+      else throw new ProducerConfigExc("Only 'definition' or 'parameters' tags allowed here, '" + aTag + "' encountered.");
     }
 
     public void endElement(SectionHandler aHandler) {
@@ -593,17 +594,19 @@ public class ProducerConfigReader {
         nodeParameters = ((NodeDefinitionParametersSectionHandler) aHandler).getNodeParameters();
       }
       else if (aHandler instanceof ProducerNodeSectionHandler) {
-        definition = ((ProducerNodeSectionHandler) aHandler).getProducerNode();
+        body = ((ProducerNodeSectionHandler) aHandler).getProducerNode();
       }
     }
 
     public void finishSection() throws ProducerConfigExc {
       Iterator i;
-      if (definition == null)
+      if (body == null)
         throw new ProducerConfigExc( "Definition missing" );
 
       nodeDefinition = new ScriptedProducerNodeDefinition(name);
 
+      nodeDefinition.setBody(body);
+
       i = nodeParameters.keySet().iterator();
       while (i.hasNext()) {
         nodeDefinition.addNodeParameter((String) i.next());