Hey everyone!

Hey, so been trying to get a custom Java-based webscript installed and running against Surf 1.0.0M3. I've tried this with both a freshly created Spring Roo Surf project (http://www.springsurf.org/sites/1.0....beginning.html) and the empty M3 Surf project available from http://www.springsurf.org/downloads.html, both with the same results.

I'm able to define my class that extends AbstractWebScript and get it to load into Surf/Spring on loadup, but whenever I try and hit it's URL, it seems to be looking for a template, instead of handling the rendering.. I'm assuming this is a naming issue or something like that..

The steps I'm going through are:
1) Create a fresh Surf project
2) Create and compile the Java class file WEB-INF/classes/org/alfresco/module/demoscripts/SimpleWebScript.class
Code:
package org.alfresco.module.demoscripts;

import java.io.IOException;

import org.springframework.extensions.webscripts.AbstractWebScript;
import org.springframework.extensions.webscripts.WebScriptException;
import org.springframework.extensions.webscripts.WebScriptRequest;
import org.springframework.extensions.webscripts.WebScriptResponse;
import org.json.JSONException;
import org.json.JSONObject;

public class SimpleWebScript extends AbstractWebScript
{
    public void execute(WebScriptRequest req, WebScriptResponse res)
        throws IOException
    {
    	try
    	{
	    	// build a json object
	    	JSONObject obj = new JSONObject();
	    	
	    	// put some data on it
	    	obj.put("field1", "data1");
	    	
	    	// build a JSON string and send it back
	    	String jsonString = obj.toString();
	    	res.getWriter().write(jsonString);
    	}
    	catch(JSONException e)
    	{
    		throw new WebScriptException("Unable to serialize JSON");
    	}
    }    
}
3) Create the file WEB-INF/classes/org/springframework/extensions/webscripts/custom-webscripts-context.xml
Code:
<?xml version='1.0' encoding='UTF-8'?>
<!DOCTYPE beans PUBLIC '-//SPRING//DTD BEAN//EN' 'http://www.springframework.org/dtd/spring-beans.dtd'>

<beans>

<bean id="webscript.org.alfresco.module.demoscripts.simple.get" 
      class="org.alfresco.module.demoscripts.SimpleWebScript"
      parent="webscript">
</bean>

</beans>
4) Create the webscript descriptor file WEB-INF/webscripts/simple/simple.get.desc.xml
Code:
<webscript>
  <shortname>Simple</shortname>
  <description>Simple</description>
  <url>/testme</url>
  <format default="json">argument</format>
</webscript>
And I always get back this error message:
Code:
	07050002 Cannot locate template processor for template webscripts/simple/simple.get.html
	 
Exception:	org.springframework.extensions.webscripts.WebScriptException - 07050002 Cannot locate template processor for template webscripts/simple/simple.get.html
	 
	org.springframework.extensions.webscripts.AbstractWebScript.renderTemplate(AbstractWebScript.java:576)
	org.springframework.extensions.webscripts.DeclarativeWebScript.renderFormatTemplate(DeclarativeWebScript.java:263)
	org.springframework.extensions.webscripts.DeclarativeWebScript.execute(DeclarativeWebScript.java:143)
	org.springframework.extensions.webscripts.PresentationContainer.executeScript(PresentationContainer.java:69)
	org.springframework.extensions.webscripts.LocalWebScriptRuntimeContainer.executeScript(LocalWebScriptRuntimeContainer.java:182)
	org.springframework.extensions.webscripts.AbstractRuntime.executeScript(AbstractRuntime.java:307)
	org.springframework.extensions.webscripts.AbstractRuntime.executeScript(AbstractRuntime.java:178)
	org.springframework.extensions.webscripts.servlet.mvc.WebScriptView.renderMergedOutputModel(WebScriptView.java:94)
	org.springframework.web.servlet.view.AbstractView.render(AbstractView.java:250)
	org.springframework.web.servlet.DispatcherServlet.render(DispatcherServlet.java:1060)
	org.springframework.web.servlet.DispatcherServlet.doDispatch(DispatcherServlet.java:798)
	org.springframework.web.servlet.DispatcherServlet.doService(DispatcherServlet.java:716)
	org.springframework.web.servlet.FrameworkServlet.processRequest(FrameworkServlet.java:647)
	org.springframework.web.servlet.FrameworkServlet.doGet(FrameworkServlet.java:552)
	javax.servlet.http.HttpServlet.service(HttpServlet.java:617)
	javax.servlet.http.HttpServlet.service(HttpServlet.java:717)
	org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:290)
	org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
	org.apache.catalina.core.ApplicationDispatcher.invoke(ApplicationDispatcher.java:646)
	org.apache.catalina.core.ApplicationDispatcher.processRequest(ApplicationDispatcher.java:436)
	org.apache.catalina.core.ApplicationDispatcher.doForward(ApplicationDispatcher.java:374)
	org.apache.catalina.core.ApplicationDispatcher.forward(ApplicationDispatcher.java:302)
	org.tuckey.web.filters.urlrewrite.NormalRewrittenUrl.doRewrite(NormalRewrittenUrl.java:195)
	org.tuckey.web.filters.urlrewrite.RuleChain.handleRewrite(RuleChain.java:159)
	org.tuckey.web.filters.urlrewrite.RuleChain.doRules(RuleChain.java:141)
	org.tuckey.web.filters.urlrewrite.UrlRewriter.processRequest(UrlRewriter.java:90)
	org.tuckey.web.filters.urlrewrite.UrlRewriteFilter.doFilter(UrlRewriteFilter.java:417)
	org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:235)
	org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
	org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:233)
	org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:191)
	org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:127)
	org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:102)
	org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:109)
	org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:298)
	org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:857)
	org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.process(Http11Protocol.java:588)
	org.apache.tomcat.util.net.JIoEndpoint$Worker.run(JIoEndpoint.java:489)
	java.lang.Thread.run(Thread.java:619)
	 
Server:	Alfresco - v1.0.0 (Milestone 3 349) schema 1,000
Time:	Aug 5, 2010 4:48:12 PM
A couple notes/observations:
1) I see my custom-webscript-context.xml loading in the log file, and if the class referred to inside that XML file is missing, and error is thrown, so I know the XML file with the bean definitions is definitely getting processed.
2) Most of this was taken straight from the example on http://wiki.alfresco.com/wiki/Java-b...t_ .28Java.29
3) The examples show a line in the webscript descriptor like:
Code:
<format default="">argument</format>
Not sure if that is a relic from Alfresco Surf, but it doesn't run if no format is specified, which is why in my sample it looks like
Code:
<format default="json">any</format>
.. Also, I've noted that the error message coming back is looking for simple.get,json, so not sure if this format thing is part of the issue or not..

Any thoughts would be greatly appreciated!
jim