KickJava   Java API By Example, From Geeks To Geeks.

Java > Open Source Codes > org > sapia > soto > state > cocoon > CocoonStateGenerator


1 /*
2  * Created on 30-Dec-2003
3  */

4 package org.sapia.soto.state.cocoon;
5
6 import org.apache.avalon.framework.parameters.Parameters;
7 import org.apache.avalon.framework.service.ServiceException;
8 import org.apache.avalon.framework.service.ServiceSelector;
9
10 import org.apache.cocoon.ProcessingException;
11 import org.apache.cocoon.environment.SourceResolver;
12 import org.apache.cocoon.generation.ServiceableGenerator;
13
14 import org.xml.sax.SAXException JavaDoc;
15
16 import java.io.IOException JavaDoc;
17
18 import java.util.Map JavaDoc;
19
20
21 /**
22  * A Cocoon <code>Generator</code> that delegates the bulk of its work to
23  * a <code>CocoonStateMachineComponent</code>.
24  *
25  * @see org.sapia.soto.state.cocoon.CocoonStateMachineComponent
26  *
27  * @author Yanick Duchesne
28  * <dl>
29  * <dt><b>Copyright:</b><dd>Copyright &#169; 2002-2003 <a HREF="http://www.sapia-oss.org">Sapia Open Source Software</a>. All Rights Reserved.</dd></dt>
30  * <dt><b>License:</b><dd>Read the license.txt file of the jar or visit the
31  * <a HREF="http://www.sapia-oss.org/license.html">license page</a> at the Sapia OSS web site</dd></dt>
32  * </dl>
33  */

34 public class CocoonStateGenerator extends ServiceableGenerator {
35   public static final String JavaDoc STATE_COMPONENT_HINT = "provider";
36   public static final String JavaDoc STATE_ID = "state";
37
38   /**
39    * @see org.apache.cocoon.generation.Generator#generate()
40    */

41   public void generate() throws IOException JavaDoc, SAXException JavaDoc, ProcessingException {
42     try {
43       String JavaDoc state = this.parameters.getParameter(STATE_ID);
44
45       if (state == null) {
46         throw new ProcessingException("'state-machine' parameter not specified");
47       }
48
49       String JavaDoc provider = this.parameters.getParameter(STATE_COMPONENT_HINT);
50
51       if (provider == null) {
52         throw new ProcessingException("'provider' parameter not specified");
53       }
54
55       ServiceSelector selector = null;
56
57       try {
58         selector = (ServiceSelector) this.manager.lookup(CocoonStateMachineComponent.ROLE +
59             "Selector");
60       } finally {
61         if (selector != null) {
62           this.manager.release(selector);
63         }
64       }
65
66       CocoonStateMachineComponent svc = (CocoonStateMachineComponent) selector.select(provider);
67       svc.execute(state, this.objectModel, this.xmlConsumer);
68     } catch (ServiceException e) {
69       throw new ProcessingException("Could not lookup Cocoon state machine service",
70         e);
71     } catch (Exception JavaDoc e) {
72       throw new ProcessingException("Could not execute state", e);
73     }
74   }
75
76   /**
77    * @see org.apache.cocoon.generation.AbstractGenerator#setup(org.apache.cocoon.environment.SourceResolver, java.util.Map, java.lang.String, org.apache.avalon.framework.parameters.Parameters)
78    */

79   public void setup(SourceResolver resolver, Map JavaDoc objectModel, String JavaDoc src,
80     Parameters params) throws ProcessingException, SAXException JavaDoc, IOException JavaDoc {
81     super.setup(resolver, objectModel, src, params);
82   }
83 }
84
Popular Tags