You are viewing a plain text version of this content. The canonical link for it is here.
Posted to jetspeed-dev@portals.apache.org by Scott T Weaver <sc...@binary-designs.net> on 2005/06/13 18:51:20 UTC
Email sent after SVN commit.
I don't think this is supposed to happen, is it?
-Scott
> -----Original Message-----
> From: MAILER-DAEMON@apache.org [mailto:MAILER-DAEMON@apache.org]
> Sent: Monday, June 13, 2005 12:45 PM
> To: weaver@apache.org
> Subject: failure notice
>
> Hi. This is the qmail-send program at apache.org.
> I'm afraid I wasn't able to deliver your message to the following
> addresses.
> This is a permanent error; I've given up. Sorry it didn't work out.
>
> <ge...@portals.apache.org>:
> Sorry, only subscribers may post. If you are a subscriber, please forward
> this message to general-owner@portals.apache.org to get your new address
> included (#5.7.2)
>
> --- Below this line is a copy of the message.
>
> Return-Path: <we...@apache.org>
> Received: (qmail 73874 invoked by uid 99); 13 Jun 2005 16:45:10 -0000
> X-ASF-Spam-Status: No, hits=-9.8 required=10.0
> tests=ALL_TRUSTED,NO_REAL_NAME
> X-Spam-Check-By: apache.org
> Received: from minotaur.apache.org (HELO minotaur.apache.org)
> (209.237.227.194)
> by apache.org (qpsmtpd/0.28) with SMTP; Mon, 13 Jun 2005 09:45:06 -0700
> Received: (qmail 75636 invoked by uid 65534); 13 Jun 2005 16:44:48 -0000
> Message-ID: <20...@minotaur.apache.org>
> Content-Type: text/plain; charset="utf-8"
> MIME-Version: 1.0
> Content-Transfer-Encoding: quoted-printable
> Subject: svn commit: r190422 - in
> /portals/jetspeed-2/trunk/portal/src/java/org/apache/jetspeed/ajax: ./
> AJAXFilter.java AJAXRequestImpl.java AJAXResponseImpl.java
> AJAXServiceImpl.java AJAXValve.java
> Date: Mon, 13 Jun 2005 16:44:47 -0000
> To: jetspeed-dev@portals.apache.org, general@portals.apache.org
> From: weaver@apache.org
> X-Mailer: svnmailer-1.0.0-dev
> X-Virus-Checked: Checked
>
> Author: weaver
> Date: Mon Jun 13 09:44:46 2005
> New Revision: 190422
>
> URL: http://svn.apache.org/viewcvs?rev=3D190422&view=3Drev
> Log:
> JS2-283: These are the initial implementations of the Ajax service
> interfa=
> ces
>
> Added:
> portals/jetspeed-2/trunk/portal/src/java/org/apache/jetspeed/ajax/
> portals/jetspeed-
> 2/trunk/portal/src/java/org/apache/jetspeed/ajax/AJAXF=
> ilter.java
> portals/jetspeed-
> 2/trunk/portal/src/java/org/apache/jetspeed/ajax/AJAXR=
> equestImpl.java
> portals/jetspeed-
> 2/trunk/portal/src/java/org/apache/jetspeed/ajax/AJAXR=
> esponseImpl.java
> portals/jetspeed-
> 2/trunk/portal/src/java/org/apache/jetspeed/ajax/AJAXS=
> erviceImpl.java
> portals/jetspeed-
> 2/trunk/portal/src/java/org/apache/jetspeed/ajax/AJAXV=
> alve.java
>
> Added: portals/jetspeed-
> 2/trunk/portal/src/java/org/apache/jetspeed/ajax/AJ=
> AXFilter.java
> URL: http://svn.apache.org/viewcvs/portals/jetspeed-
> 2/trunk/portal/src/java=
> /org/apache/jetspeed/ajax/AJAXFilter.java?rev=3D190422&view=3Dauto
> =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3
> D=
> =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3
> D=
> =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3
> D=
> =3D=3D=3D
> --- portals/jetspeed-
> 2/trunk/portal/src/java/org/apache/jetspeed/ajax/AJAXF=
> ilter.java (added)
> +++ portals/jetspeed-
> 2/trunk/portal/src/java/org/apache/jetspeed/ajax/AJAXF=
> ilter.java Mon Jun 13 09:44:46 2005
> @@ -0,0 +1,82 @@
> +/*
> + * Copyright 2000-2001,2004 The Apache Software Foundation.
> + *=20
> + * 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
> + *=20
> + * http://www.apache.org/licenses/LICENSE-2.0
> + *=20
> + * 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.apache.jetspeed.ajax;
> +
> +import java.io.IOException;
> +
> +import javax.servlet.Filter;
> +import javax.servlet.FilterChain;
> +import javax.servlet.FilterConfig;
> +import javax.servlet.ServletException;
> +import javax.servlet.ServletRequest;
> +import javax.servlet.ServletResponse;
> +import javax.servlet.http.HttpServletRequest;
> +import javax.servlet.http.HttpServletResponse;
> +
> +import org.springframework.context.ApplicationContext;
> +import org.springframework.web.context.WebApplicationContext;
> +
> +/**
> + * Simple ServletFilter for invoking AJAX services.
> + *=20
> + *=20
> + * @author <href a=3D"mailto:weaver@apache.org">Scott T. Weaver</a>
> + *
> + */
> +public class AJAXFilter implements Filter
> +{
> + private ApplicationContext ctx;
> + private AJAXService ajaxService;
> + private FilterConfig config;
> + =20
> + public void init(FilterConfig config) throws ServletException
> + {
> + this.config =3D config;
> + }
> +
> + public void doFilter(ServletRequest request, ServletResponse
> response,
> + FilterChain arg2) throws IOException, ServletException
> + { =20
> + try
> + {
> + response.setContentType("text/xml");
> + if(ctx =3D=3D null)
> + {
> + ctx =3D
> (ApplicationContext)config.getServletContext().get=
> Attribute(WebApplicationContext.ROOT_WEB_APPLICATION_CONTEXT_ATTRIBUTE);
> + ajaxService =3D (AJAXService) ctx.getBean("AJAXService");
> + }
> + =20
> + AJAXRequest ajaxRequest =3D new
> AJAXRequestImpl((HttpServletRe=
> quest) request, (HttpServletResponse) response,
> config.getServletContext())=
> ;
> + AJAXResponse ajaxReponse =3D
> ajaxService.processRequest(ajaxRe=
> quest);
> + ajaxReponse.complete();
> + }
> + catch (AJAXException e)
> + {
> + ((HttpServletResponse) response).sendError(500,
> e.getMessage())=
> ;
> + }
> + catch(Exception e)
> + {
> + throw new ServletException(e.getMessage(), e);
> + }
> + }
> +
> + public void destroy()
> + {
> + // do nothing
> +
> + }
> +
> +}
>
> Added: portals/jetspeed-
> 2/trunk/portal/src/java/org/apache/jetspeed/ajax/AJ=
> AXRequestImpl.java
> URL: http://svn.apache.org/viewcvs/portals/jetspeed-
> 2/trunk/portal/src/java=
> /org/apache/jetspeed/ajax/AJAXRequestImpl.java?rev=3D190422&view=3Dauto
> =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3
> D=
> =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3
> D=
> =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3
> D=
> =3D=3D=3D
> --- portals/jetspeed-
> 2/trunk/portal/src/java/org/apache/jetspeed/ajax/AJAXR=
> equestImpl.java (added)
> +++ portals/jetspeed-
> 2/trunk/portal/src/java/org/apache/jetspeed/ajax/AJAXR=
> equestImpl.java Mon Jun 13 09:44:46 2005
> @@ -0,0 +1,180 @@
> +/*
> + * Copyright 2000-2001,2004 The Apache Software Foundation.
> + *=20
> + * 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
> + *=20
> + * http://www.apache.org/licenses/LICENSE-2.0
> + *=20
> + * 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.apache.jetspeed.ajax;
> +
> +import java.util.ArrayList;
> +import java.util.Iterator;
> +import java.util.List;
> +import java.util.Map;
> +
> +import javax.servlet.ServletContext;
> +import javax.servlet.http.HttpServletRequest;
> +import javax.servlet.http.HttpServletResponse;
> +
> +/**
> + * Request used for AJAX services.
> + *=20
> + * @author <href a=3D"mailto:weaver@apache.org">Scott T. Weaver</a>
> + *
> + */
> +public class AJAXRequestImpl implements AJAXRequest
> +{
> + public static final String AJAX_SERVICE =3D "ajax_service";
> + public static final String AJAX_PARAM_PREFIX =3D "ajax_param_";
> + =20
> + private final HttpServletRequest request;
> + private List ajaxParams;
> + private final String serviceName;
> + private final String methodName;
> + private HttpServletResponse response;
> + private ServletContext context;
> +
> + public AJAXRequestImpl(HttpServletRequest request,
> HttpServletResponse=
> response, ServletContext context) throws AJAXException
> + {
> + this.request =3D request;
> + this.response =3D response;
> + this.context =3D context;
> + String serviceRequest =3D request.getParameter(AJAX_SERVICE);
> + if(serviceRequest =3D=3D null )
> + {
> + throw new AJAXException("No '"+AJAX_SERVICE+"' parameter
> could=
> be found in the request or it was not in the
> '{service_name}.{method_name}=
> ' format.");
> + }
> + final String split =3D serviceRequest.split("\\.")[0];
> + serviceName =3D split;
> + methodName =3D serviceRequest.split("\\.")[1];
> + =20
> + parseRequestArguments();
> + =20
> + }
> + =20
> + /* (non-Javadoc)
> + * @see org.apache.jetspeed.ajax.AJAXRequest#getParameters()
> + */
> + public List getParameters()
> + {
> + return ajaxParams;
> + }
> +
> + /* (non-Javadoc)
> + * @see org.apache.jetspeed.ajax.AJAXRequest#getServiceName()
> + */
> + public String getServiceName()
> + {
> + return serviceName;
> + }
> +
> + protected List parseRequestArguments() throws AJAXException
> + {
> + try
> + {
> + ajaxParams =3D new ArrayList();
> + Map rawParams =3D request.getParameterMap();
> + Iterator entryItr =3D rawParams.entrySet().iterator();
> + while(entryItr.hasNext())
> + {
> + Map.Entry entry =3D (Map.Entry) entryItr.next();
> + String key =3D entry.getKey().toString();
> + =20
> + if(key.startsWith(AJAX_PARAM_PREFIX))
> + {
> + String[] paramInfo =3D key.split("_");
> + int index =3D Integer.parseInt(paramInfo[2]);
> + String type =3D paramInfo[3];=20
> + AJAXParameter ajaxParam =3D new AJAXParameter(type,
> (S=
> tring[])entry.getValue());
> + ajaxParams.add(index, ajaxParam);
> + }
> + }
> + return ajaxParams;
> + }
> + catch (Throwable e)
> + {
> + throw new AJAXException("Errors were encountered parsing
> reque=
> st parameters for the AJAX service "+serviceName+": "+e.getMessage(), e);
> + }
> + }
> + =20
> + public class AJAXParameter
> + {
> + private Object value;
> + =20
> + public AJAXParameter(String typeName, String[] paramValues)
> + {
> + if(typeName.equals("int"))
> + { =20
> + if(paramValues.length > 1)
> + {
> + int[] intValues =3D new int[paramValues.length];
> + for(int i=3D0; i<paramValues.length; i++)
> + {
> + intValues[i] =3D
> Integer.parseInt(paramValues[i]);
> + }
> + }
> + else
> + {
> + value =3D new Integer(paramValues[0]);
> + }
> + }
> + else if(typeName.equals("str"))
> + {
> + if(paramValues.length > 1)
> + { =20
> + value =3D paramValues;
> + }
> + else
> + {
> + value =3D paramValues[0];
> + }
> + }
> + }
> + =20
> + public Object getValue()
> + {
> + return value;
> + }
> + }
> +
> +
> + /* (non-Javadoc)
> + * @see org.apache.jetspeed.ajax.AJAXRequest#getMethodName()
> + */
> + public String getMethodName()
> + {
> + return methodName;
> + }
> +
> + /* (non-Javadoc)
> + * @see org.apache.jetspeed.ajax.AJAXRequest#getContext()
> + */
> + public ServletContext getContext()
> + {
> + return context;
> + }
> +
> + /* (non-Javadoc)
> + * @see org.apache.jetspeed.ajax.AJAXRequest#getServletRequest()
> + */
> + public HttpServletRequest getServletRequest()
> + {
> + return request;
> + }
> +
> + /* (non-Javadoc)
> + * @see org.apache.jetspeed.ajax.AJAXRequest#getServletResponse()
> + */
> + public HttpServletResponse getServletResponse()
> + {
> + return response;
> + }
> +}
>
> Added: portals/jetspeed-
> 2/trunk/portal/src/java/org/apache/jetspeed/ajax/AJ=
> AXResponseImpl.java
> URL: http://svn.apache.org/viewcvs/portals/jetspeed-
> 2/trunk/portal/src/java=
> /org/apache/jetspeed/ajax/AJAXResponseImpl.java?rev=3D190422&view=3Dauto
> =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3
> D=
> =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3
> D=
> =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3
> D=
> =3D=3D=3D
> --- portals/jetspeed-
> 2/trunk/portal/src/java/org/apache/jetspeed/ajax/AJAXR=
> esponseImpl.java (added)
> +++ portals/jetspeed-
> 2/trunk/portal/src/java/org/apache/jetspeed/ajax/AJAXR=
> esponseImpl.java Mon Jun 13 09:44:46 2005
> @@ -0,0 +1,64 @@
> +/*
> + * Copyright 2000-2001,2004 The Apache Software Foundation.
> + *=20
> + * 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
> + *=20
> + * http://www.apache.org/licenses/LICENSE-2.0
> + *=20
> + * 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.apache.jetspeed.ajax;
> +
> +import java.io.Reader;
> +import java.io.Writer;
> +
> +import org.apache.velocity.app.VelocityEngine;
> +import org.apache.velocity.context.Context;
> +
> +/**
> + * Response object used for AJAX services.
> + *=20
> + * @author <href a=3D"mailto:weaver@apache.org">Scott T. Weaver</a>
> + *
> + */
> +public class AJAXResponseImpl implements AJAXResponse
> +{ =20
> +
> + private Context context;
> + private VelocityEngine engine;
> + private Reader template;
> + private Writer output;
> +
> + public AJAXResponseImpl(Context context, VelocityEngine engine,
> Reader=
> template, Writer output)
> + {
> + this.context =3D context;
> + this.engine =3D engine;
> + this.template =3D template;
> + this.output =3D output;
> + }
> +
> + /* (non-Javadoc)
> + * @see org.apache.jetspeed.ajax.AJAXResponse#complete()
> + */
> + public void complete() throws AJAXException
> + {
> + try
> + {
> + engine.evaluate(context, output, "AJAX processor", template);
> + }
> + catch (Exception e)
> + {
> + throw new AJAXException("Failed to render velocity xml
> templat=
> e: "+e.getMessage(), e);
> + }
> + =20
> + }
> +
> + =20
> +
> +}
>
> Added: portals/jetspeed-
> 2/trunk/portal/src/java/org/apache/jetspeed/ajax/AJ=
> AXServiceImpl.java
> URL: http://svn.apache.org/viewcvs/portals/jetspeed-
> 2/trunk/portal/src/java=
> /org/apache/jetspeed/ajax/AJAXServiceImpl.java?rev=3D190422&view=3Dauto
> =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3
> D=
> =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3
> D=
> =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3
> D=
> =3D=3D=3D
> --- portals/jetspeed-
> 2/trunk/portal/src/java/org/apache/jetspeed/ajax/AJAXS=
> erviceImpl.java (added)
> +++ portals/jetspeed-
> 2/trunk/portal/src/java/org/apache/jetspeed/ajax/AJAXS=
> erviceImpl.java Mon Jun 13 09:44:46 2005
> @@ -0,0 +1,148 @@
> +/*
> + * Copyright 2000-2001,2004 The Apache Software Foundation.
> + *=20
> + * 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
> + *=20
> + * http://www.apache.org/licenses/LICENSE-2.0
> + *=20
> + * 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.apache.jetspeed.ajax;
> +
> +import java.io.IOException;
> +import java.io.InputStream;
> +import java.io.InputStreamReader;
> +import java.io.Reader;
> +import java.lang.reflect.Method;
> +import java.util.Iterator;
> +import java.util.List;
> +import java.util.Map;
> +import java.util.Properties;
> +
> +import org.apache.velocity.VelocityContext;
> +import org.apache.velocity.app.VelocityEngine;
> +import org.apache.velocity.context.Context;
> +import org.springframework.beans.BeansException;
> +import org.springframework.beans.factory.BeanFactory;
> +import org.springframework.beans.factory.BeanFactoryAware;
> +
> +/**
> + * Performs invocation of the actual AJAX request and returns
> + * a result object to converted into XML.
> + *=20
> + * @author <href a=3D"mailto:weaver@apache.org">Scott T. Weaver</a>
> + *
> + */
> +public class AJAXServiceImpl implements AJAXService, BeanFactoryAware
> +{
> +
> + private Map serviceToBeans;
> +
> + private BeanFactory beanFactory;
> + private VelocityEngine engine;
> +
> + public AJAXServiceImpl(Map serviceToBeans)
> + {
> + this.serviceToBeans =3D serviceToBeans;
> + =20
> + }
> +
> + public AJAXResponse processRequest(AJAXRequest request)
> + throws AJAXException
> + {
> + final String serviceName =3D request.getServiceName();
> + final String methodName =3D request.getMethodName();
> + final String templateName =3D
> request.getServletRequest().getServl=
> etPath();
> +
> + final String mappedServiceName =3D
> (serviceName+"."+methodName).tr=
> im();
> + try
> + {
> + if(engine =3D=3D null)
> + {
> + engine =3D new VelocityEngine();
> + Properties props =3D new Properties();
> +
> props.load(request.getContext().getResourceAsStream("/WEB-=
> INF/velocity.properties"));
> + engine.init();
> + }
> + =20
> + =20
> + if(!serviceToBeans.containsKey(mappedServiceName))
> + {
> + throw new AJAXException("There is no AJAX service named
> '"=
> +mappedServiceName+"' defined. "+=20
> + "Please make sure that your ajax.xml is set up
> cor=
> rectly.");
> + }
> + =20
> + String beanId =3D
> ((String)serviceToBeans.get(mappedServiceNam=
> e)).trim();
> + Object targetService =3D beanFactory.getBean(beanId);
> + final List parameters =3D request.getParameters();
> + Method method =3D
> targetService.getClass().getMethod(methodNam=
> e, getTypes(parameters));
> + Object result =3D method.invoke(targetService,
> getValues(param=
> eters));
> + Context context =3D new VelocityContext();
> + context.put("ajaxRequest", request);
> + context.put("result", result); =20
> + =20
> + final InputStream templateResource =3D
> request.getContext().ge=
> tResourceAsStream(templateName);
> + =20
> + if(templateResource =3D=3D null)
> + {
> + request.getServletResponse().sendError(404,
> templateName+"=
> ajax template could not be found.");
> + throw new IOException(templateName+" does not exist");
> + }
> + Reader template =3D new InputStreamReader(templateResource);
> + =20
> + return new AJAXResponseImpl(context, engine, template,
> request=
> .getServletResponse().getWriter());
> + }
> + catch(AJAXException ae)
> + {
> + throw ae;
> + }
> + catch (Exception e)
> + {
> + throw new AJAXException("Unable to process service" +
> mappedSe=
> rviceName + ": " + e.getMessage(), e);
> + }
> +
> + }
> +
> + /*
> + * (non-Javadoc)
> + *=20
> + * @see
> org.springframework.beans.factory.BeanFactoryAware#setBeanFact=
> ory(org.springframework.beans.factory.BeanFactory)
> + */
> + public void setBeanFactory(BeanFactory beanFactory) throws
> BeansExcept=
> ion
> + {
> + this.beanFactory =3D beanFactory;
> + }
> +
> + protected Class[] getTypes(List objects)
> + {
> + Class[] args =3D new Class[objects.size()];
> + Iterator itr =3D objects.iterator();
> + int i =3D 0;
> + while (itr.hasNext())
> + {
> + args[i] =3D
> ((AJAXRequestImpl.AJAXParameter)itr.next()).getVal=
> ue().getClass();
> + i++;
> + }
> + return args;
> + }
> + =20
> + protected Object[] getValues(List objects)
> + {
> + Object[] args =3D new Object[objects.size()];
> + Iterator itr =3D objects.iterator();
> + int i =3D 0;
> + while (itr.hasNext())
> + {
> + args[i] =3D
> ((AJAXRequestImpl.AJAXParameter)itr.next()).getVal=
> ue();
> + i++;
> + }
> + return args;
> + }
> +
> +}
>
> Added: portals/jetspeed-
> 2/trunk/portal/src/java/org/apache/jetspeed/ajax/AJ=
> AXValve.java
> URL: http://svn.apache.org/viewcvs/portals/jetspeed-
> 2/trunk/portal/src/java=
> /org/apache/jetspeed/ajax/AJAXValve.java?rev=3D190422&view=3Dauto
> =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3
> D=
> =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3
> D=
> =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3
> D=
> =3D=3D=3D
> --- portals/jetspeed-
> 2/trunk/portal/src/java/org/apache/jetspeed/ajax/AJAXV=
> alve.java (added)
> +++ portals/jetspeed-
> 2/trunk/portal/src/java/org/apache/jetspeed/ajax/AJAXV=
> alve.java Mon Jun 13 09:44:46 2005
> @@ -0,0 +1,44 @@
> +/*
> + * Copyright 2000-2001,2004 The Apache Software Foundation.
> + *=20
> + * 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
> + *=20
> + * http://www.apache.org/licenses/LICENSE-2.0
> + *=20
> + * 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.apache.jetspeed.ajax;
> +
> +import org.apache.jetspeed.pipeline.PipelineException;
> +import org.apache.jetspeed.pipeline.valve.AbstractValve;
> +import org.apache.jetspeed.pipeline.valve.ValveContext;
> +import org.apache.jetspeed.request.RequestContext;
> +
> +/**
> + * This should eventually replace the AJAX ServletFilter.
> + *=20
> + * @author <href a=3D"mailto:weaver@apache.org">Scott T. Weaver</a>
> + *
> + */
> +public class AJAXValve extends AbstractValve
> +{
> + public AJAXValve()
> + {
> + super();
> + =20
> + }
> +
> + public void invoke(RequestContext request, ValveContext context)
> + throws PipelineException
> + {
> + =20
> +
> + }
> +
> +}
>
---------------------------------------------------------------------
To unsubscribe, e-mail: jetspeed-dev-unsubscribe@portals.apache.org
For additional commands, e-mail: jetspeed-dev-help@portals.apache.org
Re: Email sent after SVN commit.
Posted by Santiago Gala <sg...@apache.org>.
El lun, 13-06-2005 a las 12:51 -0400, Scott T Weaver escribió:
> I don't think this is supposed to happen, is it?
>
I committed revision 190113 (asf-mailer.conf), but either it never went
live or I understood badly the regexp needed. I CC: infra so that
someone knowledgeable can take a look.
The idea is that only portals/site commits should go to general@.
> -Scott
>
> > -----Original Message-----
> > From: MAILER-DAEMON@apache.org [mailto:MAILER-DAEMON@apache.org]
> > Sent: Monday, June 13, 2005 12:45 PM
> > To: weaver@apache.org
> > Subject: failure notice
> >
> > Hi. This is the qmail-send program at apache.org.
> > I'm afraid I wasn't able to deliver your message to the following
> > addresses.
> > This is a permanent error; I've given up. Sorry it didn't work out.
> >
> > <ge...@portals.apache.org>:
> > Sorry, only subscribers may post. If you are a subscriber, please forward
> > this message to general-owner@portals.apache.org to get your new address
> > included (#5.7.2)
> >
> > --- Below this line is a copy of the message.
> >
> > Return-Path: <we...@apache.org>
> > Received: (qmail 73874 invoked by uid 99); 13 Jun 2005 16:45:10 -0000
> > X-ASF-Spam-Status: No, hits=-9.8 required=10.0
> > tests=ALL_TRUSTED,NO_REAL_NAME
> > X-Spam-Check-By: apache.org
> > Received: from minotaur.apache.org (HELO minotaur.apache.org)
> > (209.237.227.194)
> > by apache.org (qpsmtpd/0.28) with SMTP; Mon, 13 Jun 2005 09:45:06 -0700
> > Received: (qmail 75636 invoked by uid 65534); 13 Jun 2005 16:44:48 -0000
> > Message-ID: <20...@minotaur.apache.org>
> > Content-Type: text/plain; charset="utf-8"
> > MIME-Version: 1.0
> > Content-Transfer-Encoding: quoted-printable
> > Subject: svn commit: r190422 - in
> > /portals/jetspeed-2/trunk/portal/src/java/org/apache/jetspeed/ajax: ./
> > AJAXFilter.java AJAXRequestImpl.java AJAXResponseImpl.java
> > AJAXServiceImpl.java AJAXValve.java
> > Date: Mon, 13 Jun 2005 16:44:47 -0000
> > To: jetspeed-dev@portals.apache.org, general@portals.apache.org
> > From: weaver@apache.org
> > X-Mailer: svnmailer-1.0.0-dev
> > X-Virus-Checked: Checked
> >
> > Author: weaver
> > Date: Mon Jun 13 09:44:46 2005
> > New Revision: 190422
> >
> > URL: http://svn.apache.org/viewcvs?rev=3D190422&view=3Drev
> > Log:
> > JS2-283: These are the initial implementations of the Ajax service
> > interfa=
> > ces
> >
> > Added:
> > portals/jetspeed-2/trunk/portal/src/java/org/apache/jetspeed/ajax/
> > portals/jetspeed-
> > 2/trunk/portal/src/java/org/apache/jetspeed/ajax/AJAXF=
> > ilter.java
> > portals/jetspeed-
> > 2/trunk/portal/src/java/org/apache/jetspeed/ajax/AJAXR=
> > equestImpl.java
> > portals/jetspeed-
> > 2/trunk/portal/src/java/org/apache/jetspeed/ajax/AJAXR=
> > esponseImpl.java
> > portals/jetspeed-
> > 2/trunk/portal/src/java/org/apache/jetspeed/ajax/AJAXS=
> > erviceImpl.java
> > portals/jetspeed-
> > 2/trunk/portal/src/java/org/apache/jetspeed/ajax/AJAXV=
> > alve.java
> >
> > Added: portals/jetspeed-
> > 2/trunk/portal/src/java/org/apache/jetspeed/ajax/AJ=
> > AXFilter.java
> > URL: http://svn.apache.org/viewcvs/portals/jetspeed-
> > 2/trunk/portal/src/java=
> > /org/apache/jetspeed/ajax/AJAXFilter.java?rev=3D190422&view=3Dauto
> > =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3
> > D=
> > =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3
> > D=
> > =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3
> > D=
> > =3D=3D=3D
> > --- portals/jetspeed-
> > 2/trunk/portal/src/java/org/apache/jetspeed/ajax/AJAXF=
> > ilter.java (added)
> > +++ portals/jetspeed-
> > 2/trunk/portal/src/java/org/apache/jetspeed/ajax/AJAXF=
> > ilter.java Mon Jun 13 09:44:46 2005
> > @@ -0,0 +1,82 @@
> > +/*
> > + * Copyright 2000-2001,2004 The Apache Software Foundation.
> > + *=20
> > + * 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
> > + *=20
> > + * http://www.apache.org/licenses/LICENSE-2.0
> > + *=20
> > + * 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.apache.jetspeed.ajax;
> > +
> > +import java.io.IOException;
> > +
> > +import javax.servlet.Filter;
> > +import javax.servlet.FilterChain;
> > +import javax.servlet.FilterConfig;
> > +import javax.servlet.ServletException;
> > +import javax.servlet.ServletRequest;
> > +import javax.servlet.ServletResponse;
> > +import javax.servlet.http.HttpServletRequest;
> > +import javax.servlet.http.HttpServletResponse;
> > +
> > +import org.springframework.context.ApplicationContext;
> > +import org.springframework.web.context.WebApplicationContext;
> > +
> > +/**
> > + * Simple ServletFilter for invoking AJAX services.
> > + *=20
> > + *=20
> > + * @author <href a=3D"mailto:weaver@apache.org">Scott T. Weaver</a>
> > + *
> > + */
> > +public class AJAXFilter implements Filter
> > +{
> > + private ApplicationContext ctx;
> > + private AJAXService ajaxService;
> > + private FilterConfig config;
> > + =20
> > + public void init(FilterConfig config) throws ServletException
> > + {
> > + this.config =3D config;
> > + }
> > +
> > + public void doFilter(ServletRequest request, ServletResponse
> > response,
> > + FilterChain arg2) throws IOException, ServletException
> > + { =20
> > + try
> > + {
> > + response.setContentType("text/xml");
> > + if(ctx =3D=3D null)
> > + {
> > + ctx =3D
> > (ApplicationContext)config.getServletContext().get=
> > Attribute(WebApplicationContext.ROOT_WEB_APPLICATION_CONTEXT_ATTRIBUTE);
> > + ajaxService =3D (AJAXService) ctx.getBean("AJAXService");
> > + }
> > + =20
> > + AJAXRequest ajaxRequest =3D new
> > AJAXRequestImpl((HttpServletRe=
> > quest) request, (HttpServletResponse) response,
> > config.getServletContext())=
> > ;
> > + AJAXResponse ajaxReponse =3D
> > ajaxService.processRequest(ajaxRe=
> > quest);
> > + ajaxReponse.complete();
> > + }
> > + catch (AJAXException e)
> > + {
> > + ((HttpServletResponse) response).sendError(500,
> > e.getMessage())=
> > ;
> > + }
> > + catch(Exception e)
> > + {
> > + throw new ServletException(e.getMessage(), e);
> > + }
> > + }
> > +
> > + public void destroy()
> > + {
> > + // do nothing
> > +
> > + }
> > +
> > +}
> >
> > Added: portals/jetspeed-
> > 2/trunk/portal/src/java/org/apache/jetspeed/ajax/AJ=
> > AXRequestImpl.java
> > URL: http://svn.apache.org/viewcvs/portals/jetspeed-
> > 2/trunk/portal/src/java=
> > /org/apache/jetspeed/ajax/AJAXRequestImpl.java?rev=3D190422&view=3Dauto
> > =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3
> > D=
> > =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3
> > D=
> > =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3
> > D=
> > =3D=3D=3D
> > --- portals/jetspeed-
> > 2/trunk/portal/src/java/org/apache/jetspeed/ajax/AJAXR=
> > equestImpl.java (added)
> > +++ portals/jetspeed-
> > 2/trunk/portal/src/java/org/apache/jetspeed/ajax/AJAXR=
> > equestImpl.java Mon Jun 13 09:44:46 2005
> > @@ -0,0 +1,180 @@
> > +/*
> > + * Copyright 2000-2001,2004 The Apache Software Foundation.
> > + *=20
> > + * 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
> > + *=20
> > + * http://www.apache.org/licenses/LICENSE-2.0
> > + *=20
> > + * 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.apache.jetspeed.ajax;
> > +
> > +import java.util.ArrayList;
> > +import java.util.Iterator;
> > +import java.util.List;
> > +import java.util.Map;
> > +
> > +import javax.servlet.ServletContext;
> > +import javax.servlet.http.HttpServletRequest;
> > +import javax.servlet.http.HttpServletResponse;
> > +
> > +/**
> > + * Request used for AJAX services.
> > + *=20
> > + * @author <href a=3D"mailto:weaver@apache.org">Scott T. Weaver</a>
> > + *
> > + */
> > +public class AJAXRequestImpl implements AJAXRequest
> > +{
> > + public static final String AJAX_SERVICE =3D "ajax_service";
> > + public static final String AJAX_PARAM_PREFIX =3D "ajax_param_";
> > + =20
> > + private final HttpServletRequest request;
> > + private List ajaxParams;
> > + private final String serviceName;
> > + private final String methodName;
> > + private HttpServletResponse response;
> > + private ServletContext context;
> > +
> > + public AJAXRequestImpl(HttpServletRequest request,
> > HttpServletResponse=
> > response, ServletContext context) throws AJAXException
> > + {
> > + this.request =3D request;
> > + this.response =3D response;
> > + this.context =3D context;
> > + String serviceRequest =3D request.getParameter(AJAX_SERVICE);
> > + if(serviceRequest =3D=3D null )
> > + {
> > + throw new AJAXException("No '"+AJAX_SERVICE+"' parameter
> > could=
> > be found in the request or it was not in the
> > '{service_name}.{method_name}=
> > ' format.");
> > + }
> > + final String split =3D serviceRequest.split("\\.")[0];
> > + serviceName =3D split;
> > + methodName =3D serviceRequest.split("\\.")[1];
> > + =20
> > + parseRequestArguments();
> > + =20
> > + }
> > + =20
> > + /* (non-Javadoc)
> > + * @see org.apache.jetspeed.ajax.AJAXRequest#getParameters()
> > + */
> > + public List getParameters()
> > + {
> > + return ajaxParams;
> > + }
> > +
> > + /* (non-Javadoc)
> > + * @see org.apache.jetspeed.ajax.AJAXRequest#getServiceName()
> > + */
> > + public String getServiceName()
> > + {
> > + return serviceName;
> > + }
> > +
> > + protected List parseRequestArguments() throws AJAXException
> > + {
> > + try
> > + {
> > + ajaxParams =3D new ArrayList();
> > + Map rawParams =3D request.getParameterMap();
> > + Iterator entryItr =3D rawParams.entrySet().iterator();
> > + while(entryItr.hasNext())
> > + {
> > + Map.Entry entry =3D (Map.Entry) entryItr.next();
> > + String key =3D entry.getKey().toString();
> > + =20
> > + if(key.startsWith(AJAX_PARAM_PREFIX))
> > + {
> > + String[] paramInfo =3D key.split("_");
> > + int index =3D Integer.parseInt(paramInfo[2]);
> > + String type =3D paramInfo[3];=20
> > + AJAXParameter ajaxParam =3D new AJAXParameter(type,
> > (S=
> > tring[])entry.getValue());
> > + ajaxParams.add(index, ajaxParam);
> > + }
> > + }
> > + return ajaxParams;
> > + }
> > + catch (Throwable e)
> > + {
> > + throw new AJAXException("Errors were encountered parsing
> > reque=
> > st parameters for the AJAX service "+serviceName+": "+e.getMessage(), e);
> > + }
> > + }
> > + =20
> > + public class AJAXParameter
> > + {
> > + private Object value;
> > + =20
> > + public AJAXParameter(String typeName, String[] paramValues)
> > + {
> > + if(typeName.equals("int"))
> > + { =20
> > + if(paramValues.length > 1)
> > + {
> > + int[] intValues =3D new int[paramValues.length];
> > + for(int i=3D0; i<paramValues.length; i++)
> > + {
> > + intValues[i] =3D
> > Integer.parseInt(paramValues[i]);
> > + }
> > + }
> > + else
> > + {
> > + value =3D new Integer(paramValues[0]);
> > + }
> > + }
> > + else if(typeName.equals("str"))
> > + {
> > + if(paramValues.length > 1)
> > + { =20
> > + value =3D paramValues;
> > + }
> > + else
> > + {
> > + value =3D paramValues[0];
> > + }
> > + }
> > + }
> > + =20
> > + public Object getValue()
> > + {
> > + return value;
> > + }
> > + }
> > +
> > +
> > + /* (non-Javadoc)
> > + * @see org.apache.jetspeed.ajax.AJAXRequest#getMethodName()
> > + */
> > + public String getMethodName()
> > + {
> > + return methodName;
> > + }
> > +
> > + /* (non-Javadoc)
> > + * @see org.apache.jetspeed.ajax.AJAXRequest#getContext()
> > + */
> > + public ServletContext getContext()
> > + {
> > + return context;
> > + }
> > +
> > + /* (non-Javadoc)
> > + * @see org.apache.jetspeed.ajax.AJAXRequest#getServletRequest()
> > + */
> > + public HttpServletRequest getServletRequest()
> > + {
> > + return request;
> > + }
> > +
> > + /* (non-Javadoc)
> > + * @see org.apache.jetspeed.ajax.AJAXRequest#getServletResponse()
> > + */
> > + public HttpServletResponse getServletResponse()
> > + {
> > + return response;
> > + }
> > +}
> >
> > Added: portals/jetspeed-
> > 2/trunk/portal/src/java/org/apache/jetspeed/ajax/AJ=
> > AXResponseImpl.java
> > URL: http://svn.apache.org/viewcvs/portals/jetspeed-
> > 2/trunk/portal/src/java=
> > /org/apache/jetspeed/ajax/AJAXResponseImpl.java?rev=3D190422&view=3Dauto
> > =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3
> > D=
> > =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3
> > D=
> > =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3
> > D=
> > =3D=3D=3D
> > --- portals/jetspeed-
> > 2/trunk/portal/src/java/org/apache/jetspeed/ajax/AJAXR=
> > esponseImpl.java (added)
> > +++ portals/jetspeed-
> > 2/trunk/portal/src/java/org/apache/jetspeed/ajax/AJAXR=
> > esponseImpl.java Mon Jun 13 09:44:46 2005
> > @@ -0,0 +1,64 @@
> > +/*
> > + * Copyright 2000-2001,2004 The Apache Software Foundation.
> > + *=20
> > + * 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
> > + *=20
> > + * http://www.apache.org/licenses/LICENSE-2.0
> > + *=20
> > + * 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.apache.jetspeed.ajax;
> > +
> > +import java.io.Reader;
> > +import java.io.Writer;
> > +
> > +import org.apache.velocity.app.VelocityEngine;
> > +import org.apache.velocity.context.Context;
> > +
> > +/**
> > + * Response object used for AJAX services.
> > + *=20
> > + * @author <href a=3D"mailto:weaver@apache.org">Scott T. Weaver</a>
> > + *
> > + */
> > +public class AJAXResponseImpl implements AJAXResponse
> > +{ =20
> > +
> > + private Context context;
> > + private VelocityEngine engine;
> > + private Reader template;
> > + private Writer output;
> > +
> > + public AJAXResponseImpl(Context context, VelocityEngine engine,
> > Reader=
> > template, Writer output)
> > + {
> > + this.context =3D context;
> > + this.engine =3D engine;
> > + this.template =3D template;
> > + this.output =3D output;
> > + }
> > +
> > + /* (non-Javadoc)
> > + * @see org.apache.jetspeed.ajax.AJAXResponse#complete()
> > + */
> > + public void complete() throws AJAXException
> > + {
> > + try
> > + {
> > + engine.evaluate(context, output, "AJAX processor", template);
> > + }
> > + catch (Exception e)
> > + {
> > + throw new AJAXException("Failed to render velocity xml
> > templat=
> > e: "+e.getMessage(), e);
> > + }
> > + =20
> > + }
> > +
> > + =20
> > +
> > +}
> >
> > Added: portals/jetspeed-
> > 2/trunk/portal/src/java/org/apache/jetspeed/ajax/AJ=
> > AXServiceImpl.java
> > URL: http://svn.apache.org/viewcvs/portals/jetspeed-
> > 2/trunk/portal/src/java=
> > /org/apache/jetspeed/ajax/AJAXServiceImpl.java?rev=3D190422&view=3Dauto
> > =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3
> > D=
> > =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3
> > D=
> > =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3
> > D=
> > =3D=3D=3D
> > --- portals/jetspeed-
> > 2/trunk/portal/src/java/org/apache/jetspeed/ajax/AJAXS=
> > erviceImpl.java (added)
> > +++ portals/jetspeed-
> > 2/trunk/portal/src/java/org/apache/jetspeed/ajax/AJAXS=
> > erviceImpl.java Mon Jun 13 09:44:46 2005
> > @@ -0,0 +1,148 @@
> > +/*
> > + * Copyright 2000-2001,2004 The Apache Software Foundation.
> > + *=20
> > + * 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
> > + *=20
> > + * http://www.apache.org/licenses/LICENSE-2.0
> > + *=20
> > + * 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.apache.jetspeed.ajax;
> > +
> > +import java.io.IOException;
> > +import java.io.InputStream;
> > +import java.io.InputStreamReader;
> > +import java.io.Reader;
> > +import java.lang.reflect.Method;
> > +import java.util.Iterator;
> > +import java.util.List;
> > +import java.util.Map;
> > +import java.util.Properties;
> > +
> > +import org.apache.velocity.VelocityContext;
> > +import org.apache.velocity.app.VelocityEngine;
> > +import org.apache.velocity.context.Context;
> > +import org.springframework.beans.BeansException;
> > +import org.springframework.beans.factory.BeanFactory;
> > +import org.springframework.beans.factory.BeanFactoryAware;
> > +
> > +/**
> > + * Performs invocation of the actual AJAX request and returns
> > + * a result object to converted into XML.
> > + *=20
> > + * @author <href a=3D"mailto:weaver@apache.org">Scott T. Weaver</a>
> > + *
> > + */
> > +public class AJAXServiceImpl implements AJAXService, BeanFactoryAware
> > +{
> > +
> > + private Map serviceToBeans;
> > +
> > + private BeanFactory beanFactory;
> > + private VelocityEngine engine;
> > +
> > + public AJAXServiceImpl(Map serviceToBeans)
> > + {
> > + this.serviceToBeans =3D serviceToBeans;
> > + =20
> > + }
> > +
> > + public AJAXResponse processRequest(AJAXRequest request)
> > + throws AJAXException
> > + {
> > + final String serviceName =3D request.getServiceName();
> > + final String methodName =3D request.getMethodName();
> > + final String templateName =3D
> > request.getServletRequest().getServl=
> > etPath();
> > +
> > + final String mappedServiceName =3D
> > (serviceName+"."+methodName).tr=
> > im();
> > + try
> > + {
> > + if(engine =3D=3D null)
> > + {
> > + engine =3D new VelocityEngine();
> > + Properties props =3D new Properties();
> > +
> > props.load(request.getContext().getResourceAsStream("/WEB-=
> > INF/velocity.properties"));
> > + engine.init();
> > + }
> > + =20
> > + =20
> > + if(!serviceToBeans.containsKey(mappedServiceName))
> > + {
> > + throw new AJAXException("There is no AJAX service named
> > '"=
> > +mappedServiceName+"' defined. "+=20
> > + "Please make sure that your ajax.xml is set up
> > cor=
> > rectly.");
> > + }
> > + =20
> > + String beanId =3D
> > ((String)serviceToBeans.get(mappedServiceNam=
> > e)).trim();
> > + Object targetService =3D beanFactory.getBean(beanId);
> > + final List parameters =3D request.getParameters();
> > + Method method =3D
> > targetService.getClass().getMethod(methodNam=
> > e, getTypes(parameters));
> > + Object result =3D method.invoke(targetService,
> > getValues(param=
> > eters));
> > + Context context =3D new VelocityContext();
> > + context.put("ajaxRequest", request);
> > + context.put("result", result); =20
> > + =20
> > + final InputStream templateResource =3D
> > request.getContext().ge=
> > tResourceAsStream(templateName);
> > + =20
> > + if(templateResource =3D=3D null)
> > + {
> > + request.getServletResponse().sendError(404,
> > templateName+"=
> > ajax template could not be found.");
> > + throw new IOException(templateName+" does not exist");
> > + }
> > + Reader template =3D new InputStreamReader(templateResource);
> > + =20
> > + return new AJAXResponseImpl(context, engine, template,
> > request=
> > .getServletResponse().getWriter());
> > + }
> > + catch(AJAXException ae)
> > + {
> > + throw ae;
> > + }
> > + catch (Exception e)
> > + {
> > + throw new AJAXException("Unable to process service" +
> > mappedSe=
> > rviceName + ": " + e.getMessage(), e);
> > + }
> > +
> > + }
> > +
> > + /*
> > + * (non-Javadoc)
> > + *=20
> > + * @see
> > org.springframework.beans.factory.BeanFactoryAware#setBeanFact=
> > ory(org.springframework.beans.factory.BeanFactory)
> > + */
> > + public void setBeanFactory(BeanFactory beanFactory) throws
> > BeansExcept=
> > ion
> > + {
> > + this.beanFactory =3D beanFactory;
> > + }
> > +
> > + protected Class[] getTypes(List objects)
> > + {
> > + Class[] args =3D new Class[objects.size()];
> > + Iterator itr =3D objects.iterator();
> > + int i =3D 0;
> > + while (itr.hasNext())
> > + {
> > + args[i] =3D
> > ((AJAXRequestImpl.AJAXParameter)itr.next()).getVal=
> > ue().getClass();
> > + i++;
> > + }
> > + return args;
> > + }
> > + =20
> > + protected Object[] getValues(List objects)
> > + {
> > + Object[] args =3D new Object[objects.size()];
> > + Iterator itr =3D objects.iterator();
> > + int i =3D 0;
> > + while (itr.hasNext())
> > + {
> > + args[i] =3D
> > ((AJAXRequestImpl.AJAXParameter)itr.next()).getVal=
> > ue();
> > + i++;
> > + }
> > + return args;
> > + }
> > +
> > +}
> >
> > Added: portals/jetspeed-
> > 2/trunk/portal/src/java/org/apache/jetspeed/ajax/AJ=
> > AXValve.java
> > URL: http://svn.apache.org/viewcvs/portals/jetspeed-
> > 2/trunk/portal/src/java=
> > /org/apache/jetspeed/ajax/AJAXValve.java?rev=3D190422&view=3Dauto
> > =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3
> > D=
> > =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3
> > D=
> > =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3
> > D=
> > =3D=3D=3D
> > --- portals/jetspeed-
> > 2/trunk/portal/src/java/org/apache/jetspeed/ajax/AJAXV=
> > alve.java (added)
> > +++ portals/jetspeed-
> > 2/trunk/portal/src/java/org/apache/jetspeed/ajax/AJAXV=
> > alve.java Mon Jun 13 09:44:46 2005
> > @@ -0,0 +1,44 @@
> > +/*
> > + * Copyright 2000-2001,2004 The Apache Software Foundation.
> > + *=20
> > + * 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
> > + *=20
> > + * http://www.apache.org/licenses/LICENSE-2.0
> > + *=20
> > + * 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.apache.jetspeed.ajax;
> > +
> > +import org.apache.jetspeed.pipeline.PipelineException;
> > +import org.apache.jetspeed.pipeline.valve.AbstractValve;
> > +import org.apache.jetspeed.pipeline.valve.ValveContext;
> > +import org.apache.jetspeed.request.RequestContext;
> > +
> > +/**
> > + * This should eventually replace the AJAX ServletFilter.
> > + *=20
> > + * @author <href a=3D"mailto:weaver@apache.org">Scott T. Weaver</a>
> > + *
> > + */
> > +public class AJAXValve extends AbstractValve
> > +{
> > + public AJAXValve()
> > + {
> > + super();
> > + =20
> > + }
> > +
> > + public void invoke(RequestContext request, ValveContext context)
> > + throws PipelineException
> > + {
> > + =20
> > +
> > + }
> > +
> > +}
> >
>
>
>
> ---------------------------------------------------------------------
> To unsubscribe, e-mail: jetspeed-dev-unsubscribe@portals.apache.org
> For additional commands, e-mail: jetspeed-dev-help@portals.apache.org
>
--
VP and Chair, Apache Portals (http://portals.apache.org)
Apache Software Foundation