<?xml version="1.0" encoding="UTF-8"?>
<commit>
  <added type="array"/>
  <modified type="array">
    <modified>
      <diff>@@ -4,7 +4,7 @@
   &lt;modelVersion&gt;4.0.0&lt;/modelVersion&gt;
   &lt;groupId&gt;org.jruby.rack&lt;/groupId&gt;
   &lt;artifactId&gt;jruby-rack&lt;/artifactId&gt;
-  &lt;version&gt;0.9.5&lt;/version&gt;
+  &lt;version&gt;0.9.6-SNAPSHOT&lt;/version&gt;
   &lt;name&gt;JRuby-Rack&lt;/name&gt;
   &lt;url&gt;http://jruby-rack.kenai.com/&lt;/url&gt;
   &lt;description&gt;</diff>
      <filename>pom.xml</filename>
    </modified>
    <modified>
      <diff>@@ -37,7 +37,9 @@ public class RackServlet extends HttpServlet {
 
     @Override
     public void init(ServletConfig config) {
-        this.dispatcher = new DefaultServletDispatcher(new ServletRackContext(config.getServletContext()));
+        if (dispatcher == null) {
+            dispatcher = new DefaultServletDispatcher(new ServletRackContext(config.getServletContext()));
+        }
     }
 
     @Override</diff>
      <filename>src/main/java/org/jruby/rack/RackServlet.java</filename>
    </modified>
    <modified>
      <diff>@@ -7,30 +7,29 @@
 package org.jruby.rack.servlet;
 
 import java.io.IOException;
-import javax.servlet.ServletContext;
 import javax.servlet.ServletException;
 import javax.servlet.http.HttpServletRequest;
 import javax.servlet.http.HttpServletResponse;
 
 import org.jruby.rack.RackApplication;
 import org.jruby.rack.RackApplicationFactory;
+import org.jruby.rack.RackContext;
 import org.jruby.rack.RackEnvironment;
-import org.jruby.rack.RackServletContextListener;
 
 /**
  *
  * @author nicksieger
  */
 public class DefaultServletDispatcher implements ServletDispatcher {
-    private ServletContext servletContext;
+    private RackContext context;
 
-    public DefaultServletDispatcher(ServletContext servletContext) {
-        this.servletContext = servletContext;
+    public DefaultServletDispatcher(RackContext servletContext) {
+        this.context = servletContext;
     }
 
     public void process(HttpServletRequest request, HttpServletResponse response)
         throws ServletException, IOException {
-        final RackApplicationFactory rackFactory = getRackFactory();
+        final RackApplicationFactory rackFactory = context.getRackFactory();
         RackApplication app = null;
         try {
             app = rackFactory.getApplication();
@@ -44,27 +43,22 @@ public class DefaultServletDispatcher implements ServletDispatcher {
         }
     }
 
-    private RackApplicationFactory getRackFactory() {
-        return (RackApplicationFactory)
-            servletContext.getAttribute(RackServletContextListener.FACTORY_KEY);
-    }
-
     private void handleException(Exception re, RackApplicationFactory rackFactory,
             HttpServletRequest request, HttpServletResponse response)
             throws ServletException, IOException {
         if (response.isCommitted()) {
-            servletContext.log(&quot;Error: Couldn't handle error: response committed&quot;, re);
+            context.log(&quot;Error: Couldn't handle error: response committed&quot;, re);
             return;
         }
         response.reset();
-        servletContext.log(&quot;Application Error&quot;, re);
+        context.log(&quot;Application Error&quot;, re);
 
         try {
             RackApplication errorApp = rackFactory.getErrorApplication();
             request.setAttribute(RackEnvironment.EXCEPTION, re);
             errorApp.call(new ServletRackEnvironment(request)).respond(new ServletRackResponseEnvironment(response));
         } catch (Exception e) {
-            servletContext.log(&quot;Error: Couldn't handle error&quot;, e);
+            context.log(&quot;Error: Couldn't handle error&quot;, e);
             response.sendError(500);
         }
     }</diff>
      <filename>src/main/java/org/jruby/rack/servlet/DefaultServletDispatcher.java</filename>
    </modified>
    <modified>
      <diff>@@ -6,6 +6,6 @@
 
 module JRuby
   module Rack
-    VERSION = &quot;0.9.5&quot;
+    VERSION = &quot;0.9.6-SNAPSHOT&quot;
   end
 end</diff>
      <filename>src/main/ruby/jruby/rack/version.rb</filename>
    </modified>
    <modified>
      <diff>@@ -11,8 +11,8 @@ import org.jruby.rack.servlet.DefaultServletDispatcher
 describe DefaultServletDispatcher do
   before :each do
     @rack_factory = org.jruby.rack.RackApplicationFactory.impl {}
-    @servlet_context.should_receive(:getAttribute).with(&quot;rack.factory&quot;).and_return @rack_factory
-    @dispatcher = DefaultServletDispatcher.new @servlet_context
+    @rack_context.should_receive(:getRackFactory).and_return @rack_factory
+    @dispatcher = DefaultServletDispatcher.new @rack_context
   end
 
   describe &quot;process&quot; do</diff>
      <filename>src/spec/ruby/rack/dispatcher_spec.rb</filename>
    </modified>
  </modified>
  <removed type="array"/>
  <parents type="array">
    <parent>
      <id>805edcc003f96c4eb30b073f24b35cd92dce056a</id>
    </parent>
  </parents>
  <author>
    <name>Nick Sieger</name>
    <email>nick@nicksieger.com</email>
  </author>
  <url>http://github.com/nicksieger/jruby-rack/commit/e173b4856e47afe2146642164b4eacf0baa52881</url>
  <id>e173b4856e47afe2146642164b4eacf0baa52881</id>
  <committed-date>2009-09-13T15:23:13-07:00</committed-date>
  <authored-date>2009-09-13T15:23:13-07:00</authored-date>
  <message>Loosen up servlet dispatcher contract to RackContext

- Bump version to 0.9.6 for development</message>
  <tree>d87cd2cfd4c038f8aff1e605201fe601d430ef2f</tree>
  <committer>
    <name>Nick Sieger</name>
    <email>nick@nicksieger.com</email>
  </committer>
</commit>
