Package nexj.core.meta.workflow

Examples of nexj.core.meta.workflow.FlowMacroScript


      {
         throw new MetadataException("err.meta." + flow.getPropName() + ".incompatibleMacro",
            new Object[]{macro.getName(), flow.getFullName()});
      }

      FlowMacroScript script = new FlowMacroScript(sStepName);

      script.setActivity(activity);
      script.setMacro(macro);

      NamedNodeMap attributeMap = stepElement.getAttributes();
      Set attributeSet = new HashHolder(attributeMap.getLength());

      for (int i = 0; i < attributeMap.getLength(); ++i)
      {
         attributeSet.add(attributeMap.item(i).getNodeName());
      }

      Object[] args = new Object[macro.getArgumentCount()];

      for (int i = 0, n = macro.getArgumentCount(); i < n; ++i)
      {
         FlowMacro.Argument arg = macro.getArgument(i);
         String sValue = stepElement.getAttribute(arg.getName());

         if (arg.getType() == null || arg.getType() == Primitive.ANY)
         {
            Object value = helper.parse(sValue, arg.getType() == null,
               flow.getPosMap(), Undefined.VALUE,
               machine.getGlobalEnvironment());

            if (bFull)
            {
               script.setArgumentValue(i, value);
            }

            args[i] = (value == Undefined.VALUE) ? arg.getDefault() : value;
         }
         else
         {
            if (sValue == null)
            {
               args[i] = arg.getDefault();

               if (bFull)
               {
                  script.setArgumentValue(i, Undefined.VALUE);
               }
            }
            else
            {
               args[i] = arg.getType().convert(sValue);

               if (bFull)
               {
                  script.setArgumentValue(i, args[i]);
               }
            }
         }

         if (args[i] == Undefined.VALUE)
         {
            throw new MetadataException("err.meta." + flow.getPropName() + ".missingMacroArg",
               new Object[]{arg.getName(), macro.getName(), flow.getFullName()});
         }

         attributeSet.remove(arg.getName());
      }

      attributeSet.remove("name");
      attributeSet.remove("caption");
      attributeSet.remove("description");
      attributeSet.remove("layout");

      if (attributeSet.size() != 0)
      {
         throw new MetadataException("err.meta." + flow.getPropName() + ".macroArgLookup",
            new Object[]{attributeSet.iterator().next(), macro.getName(), flow.getFullName()});
      }

      script.setBody(new Pair(machine.invoke(macro.getFunction(), args)));

      Lookup flowPosMap = flow.getPosMap();
      Lookup macroPosMap = macro.getTextPositionMap();

      if (flowPosMap != null && macroPosMap != null)
View Full Code Here


    */
   public void exportStep(Step step) throws IOException
   {
      if (step instanceof FlowMacroScript)
      {
         FlowMacroScript script = (FlowMacroScript)step;
         FlowMacro macro = script.getMacro();

         openStepElement(step, macro.getName());

         for (int i = 0, n = macro.getArgumentCount(); i < n; ++i)
         {
            Object value = script.getArgumentValue(i);

            if (value == Undefined.VALUE)
            {
               continue;
            }

            FlowMacro.Argument arg = macro.getArgument(i);

            if (arg.getType() == null || arg.getType() == Primitive.ANY)
            {
               exportSExpression(value, arg.getType() == null,
                  false, arg.getDefault(), arg.getName());
            }
            else
            {
               m_writer.writeAttribute(arg.getName(), (String)Primitive.STRING.convert(value));
            }
         }

         m_writer.closeEmptyElement();
      }
      else if (step instanceof Script)
      {
         openStepElement(step, "Script");
         m_writer.closeElement();

         Script script = (Script)step;

         exportSExpression(script.getBody(), true, true, Jump.BODY, null);

         m_writer.endElement("Script");
      }
      else if (step instanceof Transform)
      {
View Full Code Here

TOP

Related Classes of nexj.core.meta.workflow.FlowMacroScript

Copyright © 2018 www.massapicom. All rights reserved.
All source code are property of their respective owners. Java is a trademark of Sun Microsystems, Inc and owned by ORACLE Inc. Contact coftware#gmail.com.