All Downloads are FREE. Search and download functionalities are using the official Maven repository.

org.directwebremoting.servlet.AmdDtoHandler Maven / Gradle / Ivy

package org.directwebremoting.servlet;

import org.directwebremoting.extend.NamedConverter;
import org.directwebremoting.util.LocalUtil;

/**
 * A handler for DTO class generation requests compatible with the AMD module format.
 * @author Mike Wilson [mikewse at hotmail dot com]
 */
public class AmdDtoHandler extends BaseDtoHandler
{
    /* (non-Javadoc)
     * @see org.directwebremoting.servlet.BaseDtoHandler#getBaseDtoPath()
     */
    @Override
    protected String getBaseDtoPath()
    {
        return amdDtoHandlerUrl;
    }

    /* (non-Javadoc)
     * @see org.directwebremoting.servlet.BaseDtoHandler#generateDtoScript(java.lang.String)
     */
    @Override
    public String generateDtoScript(String contextPath, String servletPath, String jsClassName)
    {
        String script = null;

        String dtojs = remoter.generateDtoJavaScript(jsClassName, "  ", "c");
        if (dtojs != null)
        {
            NamedConverter namedConv = converterManager.getNamedConverter(jsClassName);
            String jsSuperClassName = namedConv.getJavascriptSuperClass();

            AmdModule mod = new AmdModule(contextPath, servletPath);
            mod.addDependency(amdDwrBaseModulePath, "engine", "dwr");
            if (LocalUtil.hasLength(jsSuperClassName))
            {
                mod.addDependency(amdDtoBaseModulePath, jsSuperClassName, "parent");
            }

            mod.addContent("  var c;\n");
            mod.addContent("\n");

            // Generate DTO
            mod.addContent(dtojs);
            mod.addContent("    dwr.engine._mappedClasses[\"" + jsClassName + "\"] = c;\n");

            // Generate inheritance
            if (LocalUtil.hasLength(jsSuperClassName))
            {
                String classExpression = "dwr.engine._mappedClasses[\"" + jsClassName + "\"]";
                mod.addContent(remoter.generateDtoInheritanceJavaScript("    ", classExpression, "parent", "dwr.engine._delegate"));
            }

            mod.addContent("\n");
            mod.addContent("  return c;\n");

            script = mod.toString();
        }

        return script;
    }

    /**
     * Setter for the URL that this handler is available on
     * @param amdDtoHandlerUrl the dtoHandlerUrl to set
     */
    public void setAmdDtoHandlerUrl(String amdDtoHandlerUrl)
    {
        this.amdDtoHandlerUrl = amdDtoHandlerUrl;
    }

    /**
     * Setter for the module path that dwr.engine is on
     * @param modulePath the modulePath to set
     */
    public void setAmdDwrBaseModulePath(final String modulePath)
    {
        amdDwrBaseModulePath = modulePath;
    }

    /**
     * Setter for the module path that DTO is on
     * @param modulePath the modulePath to set
     */
    public void setAmdDtoBaseModulePath(final String modulePath)
    {
        amdDtoBaseModulePath = modulePath;
    }

    /**
     * What URL is this handler available on?
     */
    protected String amdDtoHandlerUrl;

    /**
     * What module path is dwr.engine on?
     */
    protected String amdDwrBaseModulePath;

    /**
     * What module path are DTOs on?
     */
    protected String amdDtoBaseModulePath;
}




© 2015 - 2024 Weber Informatics LLC | Privacy Policy