<?xml version="1.0" encoding="UTF-8"?>
<commit>
  <added type="array"/>
  <modified type="array">
    <modified>
      <diff>@@ -55,6 +55,7 @@ requires(
     'Class::Singleton'                  =&gt; 0,
     'CHI'                               =&gt; '0.10',
     'Plack'                             =&gt; 0,
+    'PlackX::Engine'                    =&gt; 0,
 
     # Angelos Plugins
     'Text::SimpleTable' =&gt; 0,</diff>
      <filename>angelos-core/Makefile.PL</filename>
    </modified>
    <modified>
      <diff>@@ -46,6 +46,10 @@ sub build_dispatcher {
 
 sub handle_request {
     my ( $self, $req ) = @_;
+    my $c   = $self-&gt;create_context( $req, $res );
+    no warnings 'redefine';
+    local *Angelos::Registrar::context = sub {$c};
+
     eval { $self-&gt;DISPATCH($req); };
     if ( my $e = Exception::Class-&gt;caught() ) {
         $self-&gt;HANDLE_EXCEPTION($e);</diff>
      <filename>angelos-core/lib/Angelos/Engine.pm</filename>
    </modified>
    <modified>
      <diff>@@ -4,6 +4,7 @@ use Carp ();
 use Angelos::Exceptions;
 use Angelos::PSGI::Engine;
 use Angelos::Request;
+use PlackX::Engine;
 
 with 'Angelos::Class::Loggable';
 
@@ -62,54 +63,27 @@ sub BUILD {
 sub SETUP { }
 
 sub build_engine {
-    my $self            = shift;
-    my $request_handler = $self-&gt;request_handler;
+    my $self = shift;
+    my $request_handler ||= $self-&gt;request_handler;
     $request_handler ||= $self-&gt;build_request_handler;
 
-    return Angelos::PSGI::Engine-&gt;new(
-        interface =&gt; {
-            module =&gt; $self-&gt;server,
-            args   =&gt; {
-                host =&gt; $self-&gt;host,
-                port =&gt; $self-&gt;port,
-                root =&gt; $self-&gt;root,
+    my $engine = PlackX::Engine-&gt;new(
+        {   server =&gt; {
+                module =&gt; $self-&gt;server,
+                args   =&gt; {
+                    port =&gt; $self-&gt;port,
+                    host =&gt; $self-&gt;host,
+                },
             },
-        },
-        psgi_handler =&gt; $request_handler,
+            request_handler =&gt; $request_handler,
+        }
     );
-}
-
-sub build_request_handler {
-    my $self = shift;
 
-    # FIXME wrap application handler Angelos::Middleware::Builder
-    my $app_handler = $self-&gt;create_application_handler;
-    return $app_handler;
 }
 
-sub create_application_handler {
+sub build_request_handler {
     my $self = shift;
-    return sub {
-        my $env = shift;
-        my $req = Angelos::Request-&gt;new($env);
-        my $res = Angelos::Response-&gt;new;
-        my $c   = $self-&gt;create_context( $req, $res );
-        no warnings 'redefine';
-        local *Angelos::Registrar::context = sub {$c};
-
-        $res = $self-&gt;handle_request($req);
-        my $psgi_res = $self-&gt;finalize_response($res);
-        return $psgi_res;
-    };
-}
-
-sub finalize_response {
-    my ( $self, $res ) = @_;
-    my $psgi_res = $res-&gt;finalize;
-    $psgi_res-&gt;[1] = [ %{ $psgi_res-&gt;[1] } ]
-        if ref( $psgi_res-&gt;[1] ) eq 'HASH';
-    $psgi_res-&gt;[2] = [ $psgi_res-&gt;[2] ] unless ref( $psgi_res-&gt;[2] );
-    $psgi_res;
+    return sub { my $req = shift; $self-&gt;handle_request($req) }
 }
 
 sub handle_request {</diff>
      <filename>angelos-core/lib/Angelos/Engine/Base.pm</filename>
    </modified>
  </modified>
  <removed type="array">
    <removed>
      <filename>angelos-core/lib/Angelos/PSGI/Adapter.pm</filename>
    </removed>
    <removed>
      <filename>angelos-core/lib/Angelos/PSGI/Engine.pm</filename>
    </removed>
    <removed>
      <filename>angelos-core/lib/Angelos/PSGI/ServerGatewayBuilder.pm</filename>
    </removed>
    <removed>
      <filename>angelos-plugins/Angelos-Controller-Plugin-Dumper</filename>
    </removed>
    <removed>
      <filename>angelos-plugins/Angelos-Controller-Plugin-FillinForm</filename>
    </removed>
    <removed>
      <filename>angelos-plugins/Angelos-Controller-Plugin-FormValidator-Simple</filename>
    </removed>
    <removed>
      <filename>angelos-tasks/Task-Angelos</filename>
    </removed>
  </removed>
  <parents type="array">
    <parent>
      <id>85980248dc00966e294217b4b28f9af12ad272ea</id>
    </parent>
  </parents>
  <author>
    <name>Dann</name>
    <email>techmemo@gmail.com</email>
  </author>
  <url>http://github.com/dann/angelos/commit/fe631efaebcd777492c074ca86157e837bc2be74</url>
  <id>fe631efaebcd777492c074ca86157e837bc2be74</id>
  <committed-date>2009-10-02T14:12:19-07:00</committed-date>
  <authored-date>2009-10-02T14:12:19-07:00</authored-date>
  <message>use PlackX::Engine</message>
  <tree>04b84f7ac851fa9420dfed76487631f60e1c6a04</tree>
  <committer>
    <name>Dann</name>
    <email>techmemo@gmail.com</email>
  </committer>
</commit>
