cocoon-users mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From "gorillacommunications" <le...@gorillacommunications.com>
Subject Re: writing actions
Date Tue, 11 Jun 2002 15:26:54 GMT
Geoff,
Thanks for the reply. I have a couple of other questions.
1. I'm still getting a "classNotFound" exception on my class when
the sitemap is being compiled.. I put it in the package com.kg.gs.GSLogin,
made a jar, and put that in cocoon/WEB-INF/lib. Is there something else I
need to do?

2. In my sitemap, I defined:
  <map:action logger="sitemap.action.gs-login" name="gs-login"
src="com.kg.gs.GSLogin"/>
Does this mean that the pipeline will always call the "act" method of my
class?

----- Original Message -----
From: "Geoff Howard" <ghoward@crosswalk.com>
To: <cocoon-users@xml.apache.org>
Sent: Monday, June 10, 2002 3:33 PM
Subject: RE: writing actions


> It's pretty easy.  There are a number of org.apache.cocoon.acting classes
> that you can extend, depending on your need.  AbstractAction will get you
> the bare minimum - it implements the Action interface and gives you access
> to a logger.  I needed to extend ComposerAction, because I needed to
> accomplish some one-time lookups to other components via ComponentManager.
> You may need to do the same.
>
> Here's my action (with all the actual meat taken out because it's only for
> developer use temporarily and could introduce a security issue - OK i'm
> paranoid) and some comments added to demonstrate functionality you may
want
> but I didn't need.
>
> Good luck-
> Geoff
>
> package com.crosswalk.cocoon.acting;
>
> import org.apache.avalon.framework.parameters.Parameters;
> import org.apache.cocoon.acting.ComposerAction;
> import java.util.Map;
> import java.util.HashMap;
> import org.apache.cocoon.environment.Redirector;
> import org.apache.cocoon.environment.Request;
> import org.apache.cocoon.environment.SourceResolver;
> import org.apache.cocoon.environment.ObjectModelHelper;
> import org.apache.cocoon.components.store.StoreJanitor;
> import org.apache.cocoon.components.store.Store;
> import org.apache.avalon.framework.component.ComponentException;
> import org.apache.avalon.framework.component.ComponentManager;
>
> public class CacheClearAction extends ComposerAction {
>
>   private Store cache;
>   public void compose (ComponentManager manager)
>     throws ComponentException {
>         super.compose(manager);
>         this.cache = (Store)this.manager.lookup(Store.TRANSIENT_CACHE);
>   }
>
>   public Map act (Redirector redirector,
>                   SourceResolver resolver,
>                   Map objectModel,
>                   String source,
>   Parameters params) {
>
>     // My particular action didn't need to return any values - most do.
>     // If I needed to return something, I'd use the map commented out here
>     // and return it instead of
> org.apache.cocoon.acting.AbstractAction.EMPTY_MAP.
>     // In the sitemap after this action {key} should produce "value".
>     file://Map availableToSitemap = new HashMap();
>     file://availableToSitemap.put("key","value");
>     //
>
>     String paramICareAbout;
>
>     Request request = ObjectModelHelper.getRequest(objectModel);
>     if (request == null) {
>       // getLogger() provides a handle to the action's logger.
> // getLogger().info(), etc. gives you a different logging level.
>       getLogger().error("RequestInfoAction: no request object!");
>
> // if the action fails, you should return null and all nested
> sitemap items will not execute.
>       return(null);
>     }
>     request.getParameter("paramName");
>
>     // Code missing - do some stuff with the request parameters.
>
>     return EMPTY_MAP;
>     // return availableToSitemap;
>   }
> }
>
> > -----Original Message-----
> > From: gorillacommunications [mailto:leona@gorillacommunications.com]
> > Sent: Monday, June 10, 2002 11:17 AM
> > To: cocoon-users@xml.apache.org
> > Subject: writing actions
> >
> >
> > Hi All,
> >
> > I am trying to write an action for my application.
> > I have this line in my sitemap to define the action.
> >    <map:action logger="sitemap.action.gs-login" name="login"
> > src="com.kg.gs.GSLogin"/>
> >
> >
> > My class is in a jar file in \tomcat\webapps\cocoon\WEB-INF\lib. Is
> > this the correct place for it? Also, I am confused about what my class
> > needs to extend. Is it AbstractAction? The method I want to call
> > is "login". I would love to see an example
> > of a class someone has written, so I can figure out how to write my
> > class and how to return a value.
> >
> > I also have this pipeline:
> >   <map:pipeline>
> >     <map:match pattern="login">
> >       <map:act type="gs-login">
> > <!-- how do I get the return value and pass it to the
> > redirect page? -->
> >         <map:redirect-to uri="gs"/>
> >       </map:act>
> >       <map:serialize type="html"/>
> >     </map:match>
> >   </map:pipeline>
> >
> > Obviously, I'm doing something wrong, because I get the
> > following error
> > when I try to run my application:
> >
> > type fatal
> >
> > message Error in sitemap configuration : com.kg.gs.GSLogin
> >
> > description
> > org.apache.avalon.framework.configuration.ConfigurationExcepti
> > on: Error in
> > sitemap configuration : com.kg.gs.GSLogin
> >
> > sender org.apache.cocoon.servlet.CocoonServlet
> >
> > source Cocoon servlet
> >
> > stack-trace
> >
> > org.apache.avalon.framework.configuration.ConfigurationExcepti
> > on: Error in
> > sitemap configuration : com.kg.gs.GSLogin
> > at
> > org.apache.cocoon.www.file_.D_.tomcat.webapps.GorillaStation.s
> > itemap_xmap.co
> > nfigure(D:\tomcat\work\localhost\GorillaStation\cocoon-files\o
> > rg/apache/coco
> > on/www/file_/D_/tomcat/webapps/GorillaStation\sitemap_xmap.java:498)
> > at
> > org.apache.avalon.excalibur.component.DefaultComponentFactory.
> > newInstance(De
> > faultComponentFactory.java:172)
> > at
> > org.apache.avalon.excalibur.component.ThreadSafeComponentHandl
> > er.initialize(
> > ThreadSafeComponentHandler.java:84)
> > at
> > org.apache.cocoon.components.language.generator.GeneratorSelec
> > tor.addGenerat
> > or(GeneratorSelector.java:170)
> > at
> > org.apache.cocoon.components.language.generator.ProgramGenerat
> > orImpl.createR
> > esource(ProgramGeneratorImpl.java:332)
> > at
> > org.apache.cocoon.components.language.generator.ProgramGenerat
> > orImpl.load(Pr
> > ogramGeneratorImpl.java:291)
> > at org.apache.cocoon.sitemap.Handler.run(Handler.java:270)
> > at java.lang.Thread.run(Thread.java:484)
> >
> >
> > request-uri
> >
> > /GorillaStation/gs
> >
> > path-info
> >
> > gs
> > Can anyone tell me what I'm doing wrong?
> > Many thanks,
> > Leona
> >
> >
> >
> >
> >
> > ---------------------------------------------------------------------
> > Please check that your question  has not already been answered in the
> > FAQ before posting.     <http://xml.apache.org/cocoon/faq/index.html>
> >
> > To unsubscribe, e-mail:     <cocoon-users-unsubscribe@xml.apache.org>
> > For additional commands, e-mail:   <cocoon-users-help@xml.apache.org>
> >
>
> ---------------------------------------------------------------------
> Please check that your question  has not already been answered in the
> FAQ before posting.     <http://xml.apache.org/cocoon/faq/index.html>
>
> To unsubscribe, e-mail:     <cocoon-users-unsubscribe@xml.apache.org>
> For additional commands, e-mail:   <cocoon-users-help@xml.apache.org>
>


---------------------------------------------------------------------
Please check that your question  has not already been answered in the
FAQ before posting.     <http://xml.apache.org/cocoon/faq/index.html>

To unsubscribe, e-mail:     <cocoon-users-unsubscribe@xml.apache.org>
For additional commands, e-mail:   <cocoon-users-help@xml.apache.org>


Mime
View raw message