Re: Servlet
Xue-Feng Yang <[email protected]>
| Newsgroups | gmane.comp.java.enhydra.barracuda.general |
|---|---|
| Message-ID | <[email protected]> |
My guess is all page data are stored in w3c doc and event listeners will update the doc once a request fired. I am not sure if I can or need to extend ApplicationGateway, EventXXX, and DispatchXXX just like you mentioned for those DefaultEventGateway's. I think you may use Java reflect for some of those related classes. I don't know how much w3c doc specifications you use in those classes/interfaces. It looks event model is independent of w3c doc from class diagrams. Can you confirm this? If the answer is yes, then which method will fire those events for returning those response strings from those doc? Xue-Feng Xue-Feng --- Jacob Kjome <[email protected]> wrote: > > I'm not exactly sure what you mean here? You can > create a custom event > gateway and extend DefaultEventGateway. You can > also use the > DefaultEventGateway in the event-gateway.xml file to > register your events > with event handlers. Here is a simple way to do > things.... > > in web.xml.... > > <servlet> > > <servlet-name>ApplicationGateway</servlet-name> > > <servlet-class>org.enhydra.barracuda.core.event.ApplicationGateway</servlet-class> > <init-param> > > <param-name>ApplicationAssembler</param-name> > > <param-value>org.enhydra.barracuda.core.event.DefaultApplicationAssembler</param-value> > </init-param> > <init-param> > > <param-name>AssemblyDescriptor</param-name> > > <param-value>/WEB-INF/event-gateway.xml</param-value> > </init-param> > <init-param> > <param-name>SAXParser</param-name> > > <param-value>org.apache.xerces.parsers.SAXParser</param-value> > </init-param> > <load-on-startup>3</load-on-startup> > </servlet> > > in event-gateway.xml... > > <?xml version="1.0" encoding="UTF-8" > standalone="yes" ?> > > <assemble> > > <event-gateway > class="org.enhydra.barracuda.core.event.DefaultEventGateway"> > <!-- Request event handler for listening > for all other request events. > Does work and then allows the request > be handled by the > originally requested event. --> > <event-interest > factory="com.mycompany.myapp.servlet.controller.handler.LocalRequestHandler" > > event="com.mycompany.myapp.servlet.controller.event.LocalRequestEvent" > /> > > <!-- Individual Request events. These event > handlers actually handle > the request, store info in the event > context, and pass > execution to the render handler below > --> > <event-interest > factory="com.mycompany.myapp.servlet.controller.handler.GetCatalogHandler" > > event="com.mycompany.myapp.servlet.controller.event.GetCatalog" > /> > <event-interest > factory="com.mycompany.myapp.servlet.controller.handler.GetUserInfoHandler" > > event="com.mycompany.myapp.servlet.controller.event.GetUserInfo" > /> > <event-interest > factory="com.mycompany.myapp.servlet.controller.handler.GetOrdersHandler" > > event="com.mycompany.myapp.servlet.controller.event.GetOrders" > /> > > <!-- Response Event handler --> > <event-interest > factory="com.mycompany.myapp.servlet.controller.handler.RenderEventHandler" > > event="com.mycompany.myapp.servlet.controller.event.RenderEvent" > /> > </event-gateway> > > </assemble> > > > Prototypical event handler (use this as a template > for your custom event > handlers such as GetCatalogHandler, > GetUserInfoHandler, and > GetOrdersHandler).... > > package > com.mycompany.myapp.servlet.controller.handler; > > import java.io.*; > import java.util.*; > import javax.servlet.*; > import javax.servlet.http.*; > > import org.enhydra.barracuda.core.event.*; > > import > com.mycompany.myapp.servlet.controller.event.*; > > > /** > * A control event handler > */ > public class PrototypicalEventHandler extends > DefaultListenerFactory { > > //define the necessary factory methods > public BaseEventListener getInstance() { > return new ControlHandler(); > } > public String getListenerID() { > return getID(ControlHandler.class); > } > > > //------------------------------------------------------------ > // Model 2 - Controller Event > Handlers > > //------------------------------------------------------------ > /** > * handle the request > */ > class ControlHandler extends > DefaultBaseEventListener { > public void > handleControlEvent(ControlEventContext context) > throws > EventException, ServletException, IOException { > //in this case, we're not really doing > anything special, so just > //redirect to the RenderEvent view > > context.putState(RenderEventHandler.HANDLED_BY, > ""+this); > context.getQueue().addEvent(new > RenderEvent(context.getEvent())); > } > } > } > > > Example render handler.... > > package > com.mycompany.myapp.servlet.controller.handler; > > import java.io.*; > import java.util.*; > import javax.servlet.*; > import javax.servlet.http.*; > > import org.enhydra.barracuda.core.event.*; > > import > com.mycompany.myapp.servlet.controller.event.*; > > > /** > * A view event handler > */ > public class RenderEventHandler extends > DefaultListenerFactory { > > private static final Logger logger = > Logger.getLogger(RenderEventHandler.class.getName()); > > //package access only > static final String HANDLED_BY = "HandledBy"; > > //define the necessary factory methods > public BaseEventListener getInstance() { > return new ViewHandler(); > } > public String getListenerID() { > return getID(ViewHandler.class); > } > > > //------------------------------------------------------------ > // Model 2 - View Event Handlers > > //------------------------------------------------------------ > /** > * RenderHandler - handle the request to render > the test > * screen > */ > class ViewHandler extends > DefaultBaseEventListener { > public void > handleViewEvent(ViewEventContext === message truncated === ______________________________________________________________________ Post your free ad now! http://personals.yahoo.ca