macro uses "id" attribute but should use "name" based on the documentation
--------------------------------------------------------------------------

                 Key: XAP-269
                 URL: https://issues.apache.org/jira/browse/XAP-269
             Project: XAP
          Issue Type: Bug
          Components: Macros
            Reporter: David Gennaco



The example of using macros I saw uses "name" to identify a macro to be 
executed, but I can only get it to work if I use "id"


The example:

<macro:macro xmlns:macro="http://openxal.org/core/macro"; 
name="changeLabelTextMacro">
    <xm:modifications xmlns:xm="http://openxal.com/core/xmodify";>
      <xm:set-attribute select="id(''mylabel'')">
        <xm:attribute name="text" value="Some new text"/>
      </xm:set-attribute>
    </xm:modifications>
</macro:macro>

 I changed MacroNamespaceHanler.js (receiveDispatch) to the following and it 
seems to be working now:

/**
 * This method is called when an element with the Macro namespace is 
 * encountered.
 * 
 * @param element the element that is namespaced, including all of its 
 * children
 * @param container The xap.xml.DocumentContainer to be used for processing.
 * @throws UpdateException
 */
xap.macro.MacroNamespaceHandler.prototype.receiveDispatch = function( element ) 
{
        var session = this._session;
         var name = element.getAttribute("name");
         if ( name == null || 
                 name == "" ) {
                 session.handleException(
                        new xap.xml.InvalidXmlException( 
                                
xap.xml.InvalidXmlException.MISSING_ATTRIBUTE_MSGID,
                                new Array( "name", element.toXml( true ))));
        }
        if (xap.util.LogFactory.s_loggingEnabled)
                xap.macro.MacroNamespaceHandler.s_log.debug( "Create macro 
name: ["+ name + 
                                                                        "] from 
element: [" + element.toXml() + "]");
         
        //TODO we really need to clarify whether or not XAP is a generic 
wrapping
        //tag or something with more meaning
        //TODO what if the original macro is malformed?
        var macro = new xap.macro.Macro( "<xap>" + 
element.childNodes[0].toXmlWithoutAutoAssignedIds() + "</xap>", session );
         
        //TODO if we are replacing and existing one should probably
        //output that to info at least.
        
        var macroContainer = session.getMacroContainer();
        if ( macroContainer.get( name ) != null ){
                xap.macro.MacroNamespaceHandler.s_log.info( "Replacing an 
existing macro registered" +
                        " with name:" + name + ". Element:" + element.toXml() );
        }
        macroContainer.put( name, macro );
}


-- 
This message is automatically generated by JIRA.
-
If you think it was sent incorrectly contact one of the administrators: 
https://issues.apache.org/jira/secure/Administrators.jspa
-
For more information on JIRA, see: http://www.atlassian.com/software/jira

        

Reply via email to