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
lmpx.com only provides a reader for public news (NNTP) servers. It is not affiliated with the servers or forums shown here and is not responsible for the content of articles, which is written by their respective authors.