/*
* Copyright 2005 Joe Walker
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
package org.directwebremoting.extend;
/**
* The heart of DWR is a system to generate content from some requests.
* This interface generates scripts and executes remote calls.
* @author Joe Walker [joe at getahead dot ltd dot uk]
*/
public interface Remoter
{
/**
* Generate some Javascript that forms an interface definition
* @param scriptName The script to generate for
* @param includeDto Specifies whether mapped DTO classes should be added
* @param contextServletPath request.contextPath + request.servletPath.
* @return An interface javascript
* @throws SecurityException
*/
String generateInterfaceScript(String scriptName, boolean includeDto, String contextServletPath) throws SecurityException;
/**
* Generate JavaScript that forms a mapped DTO class
* @param jsClassName The mapped JavaScript class name
* @return JavaScript class definition
* @throws SecurityException
*/
String generateDtoScript(String jsClassName) throws SecurityException;
/**
* Generate JavaScript with all mapped DTO classes
* @return JavaScript class definitions
* @throws SecurityException
*/
String generateAllDtoScripts() throws SecurityException;
/**
* Execute a set of remote calls and generate set of reply data for later
* conversion to whatever wire protocol we are using today.
* @param calls The set of calls to execute
* @return A set of reply data objects
*/
Replies execute(Calls calls);
/**
* The path to the DWR servlet is probably just equal to request.contextPath
* plus request.servletPath. However there are 2 ways to override this.
* One is to provide an overridePath setting, and the other is to specify
* useAbsolutePath=true, when the full URL up to the DWR servlet is used.
* This method simply echos back the contextServletPath unless one of those
* 2 settings are used in which case the modified value is returned.
* @param contextServletPath request.contextPath + request.servletPath.
* @return The path to the DWR servlet
*/
String getPathToDwrServlet(String contextServletPath);
}