incubator-awf-commits mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From jmee...@apache.org
Subject svn commit: r1243316 [1/8] - in /incubator/deft/sandbox/jmeehan: ./ awf-core/ awf-core/.settings/ awf-core/src/ awf-core/src/main/ awf-core/src/main/assembly/ awf-core/src/main/java/ awf-core/src/main/java/org/ awf-core/src/main/java/org/apache/ awf-co...
Date Sun, 12 Feb 2012 20:24:36 GMT
Author: jmeehan
Date: Sun Feb 12 20:24:30 2012
New Revision: 1243316

URL: http://svn.apache.org/viewvc?rev=1243316&view=rev
Log:
DEFT-198: Modify Source Structure

Added:
    incubator/deft/sandbox/jmeehan/awf-core/
    incubator/deft/sandbox/jmeehan/awf-core/.classpath
    incubator/deft/sandbox/jmeehan/awf-core/.project
    incubator/deft/sandbox/jmeehan/awf-core/.settings/
    incubator/deft/sandbox/jmeehan/awf-core/.settings/org.eclipse.jdt.core.prefs
    incubator/deft/sandbox/jmeehan/awf-core/.settings/org.eclipse.m2e.core.prefs
    incubator/deft/sandbox/jmeehan/awf-core/pom.xml
    incubator/deft/sandbox/jmeehan/awf-core/src/
    incubator/deft/sandbox/jmeehan/awf-core/src/main/
    incubator/deft/sandbox/jmeehan/awf-core/src/main/assembly/
    incubator/deft/sandbox/jmeehan/awf-core/src/main/assembly/awf-binary-with-deps.xml
    incubator/deft/sandbox/jmeehan/awf-core/src/main/assembly/awf-binary.xml
    incubator/deft/sandbox/jmeehan/awf-core/src/main/assembly/awf-src.xml
    incubator/deft/sandbox/jmeehan/awf-core/src/main/java/
    incubator/deft/sandbox/jmeehan/awf-core/src/main/java/org/
    incubator/deft/sandbox/jmeehan/awf-core/src/main/java/org/apache/
    incubator/deft/sandbox/jmeehan/awf-core/src/main/java/org/apache/awf/
    incubator/deft/sandbox/jmeehan/awf-core/src/main/java/org/apache/awf/annotation/
    incubator/deft/sandbox/jmeehan/awf-core/src/main/java/org/apache/awf/annotation/Asynchronous.java
    incubator/deft/sandbox/jmeehan/awf-core/src/main/java/org/apache/awf/annotation/Authenticated.java
    incubator/deft/sandbox/jmeehan/awf-core/src/main/java/org/apache/awf/annotation/Path.java
    incubator/deft/sandbox/jmeehan/awf-core/src/main/java/org/apache/awf/configuration/
    incubator/deft/sandbox/jmeehan/awf-core/src/main/java/org/apache/awf/configuration/AnnotationsScanner.java
    incubator/deft/sandbox/jmeehan/awf-core/src/main/java/org/apache/awf/configuration/Configuration.java
    incubator/deft/sandbox/jmeehan/awf-core/src/main/java/org/apache/awf/example/
    incubator/deft/sandbox/jmeehan/awf-core/src/main/java/org/apache/awf/example/ServerExample.java
    incubator/deft/sandbox/jmeehan/awf-core/src/main/java/org/apache/awf/example/client/
    incubator/deft/sandbox/jmeehan/awf-core/src/main/java/org/apache/awf/example/client/AsynchronousHttpClientGetExample.java
    incubator/deft/sandbox/jmeehan/awf-core/src/main/java/org/apache/awf/example/client/AsynchronousHttpClientPostExample.java
    incubator/deft/sandbox/jmeehan/awf-core/src/main/java/org/apache/awf/example/configuration/
    incubator/deft/sandbox/jmeehan/awf-core/src/main/java/org/apache/awf/example/configuration/ServerConfigurationExample.java
    incubator/deft/sandbox/jmeehan/awf-core/src/main/java/org/apache/awf/example/handler/
    incubator/deft/sandbox/jmeehan/awf-core/src/main/java/org/apache/awf/example/handler/BasicHandlerExample.java
    incubator/deft/sandbox/jmeehan/awf-core/src/main/java/org/apache/awf/example/handler/ClonedHandlerExample.java
    incubator/deft/sandbox/jmeehan/awf-core/src/main/java/org/apache/awf/example/handler/CookieHandlerExample.java
    incubator/deft/sandbox/jmeehan/awf-core/src/main/java/org/apache/awf/example/handler/PatternHandlerExample.java
    incubator/deft/sandbox/jmeehan/awf-core/src/main/java/org/apache/awf/example/keyvalue/
    incubator/deft/sandbox/jmeehan/awf-core/src/main/java/org/apache/awf/example/keyvalue/KeyValueStore.java
    incubator/deft/sandbox/jmeehan/awf-core/src/main/java/org/apache/awf/example/keyvalue/KeyValueStoreClient.java
    incubator/deft/sandbox/jmeehan/awf-core/src/main/java/org/apache/awf/example/keyvalue/KeyValueStoreExample.java
    incubator/deft/sandbox/jmeehan/awf-core/src/main/java/org/apache/awf/example/keyvalue/KeyValueStoreHandler.java
    incubator/deft/sandbox/jmeehan/awf-core/src/main/java/org/apache/awf/io/
    incubator/deft/sandbox/jmeehan/awf-core/src/main/java/org/apache/awf/io/AsynchronousSocket.java
    incubator/deft/sandbox/jmeehan/awf-core/src/main/java/org/apache/awf/io/IOHandler.java
    incubator/deft/sandbox/jmeehan/awf-core/src/main/java/org/apache/awf/io/IOLoop.java
    incubator/deft/sandbox/jmeehan/awf-core/src/main/java/org/apache/awf/io/IOLoopMXBean.java
    incubator/deft/sandbox/jmeehan/awf-core/src/main/java/org/apache/awf/io/buffer/
    incubator/deft/sandbox/jmeehan/awf-core/src/main/java/org/apache/awf/io/buffer/DynamicByteBuffer.java
    incubator/deft/sandbox/jmeehan/awf-core/src/main/java/org/apache/awf/io/callback/
    incubator/deft/sandbox/jmeehan/awf-core/src/main/java/org/apache/awf/io/callback/CallbackManager.java
    incubator/deft/sandbox/jmeehan/awf-core/src/main/java/org/apache/awf/io/callback/CallbackManagerMXBean.java
    incubator/deft/sandbox/jmeehan/awf-core/src/main/java/org/apache/awf/io/callback/JMXDebuggableCallbackManager.java
    incubator/deft/sandbox/jmeehan/awf-core/src/main/java/org/apache/awf/io/callback/PeriodicCallback.java
    incubator/deft/sandbox/jmeehan/awf-core/src/main/java/org/apache/awf/io/timeout/
    incubator/deft/sandbox/jmeehan/awf-core/src/main/java/org/apache/awf/io/timeout/JMXDebuggableTimeoutManager.java
    incubator/deft/sandbox/jmeehan/awf-core/src/main/java/org/apache/awf/io/timeout/Timeout.java
    incubator/deft/sandbox/jmeehan/awf-core/src/main/java/org/apache/awf/io/timeout/TimeoutManager.java
    incubator/deft/sandbox/jmeehan/awf-core/src/main/java/org/apache/awf/io/timeout/TimeoutManagerMXBean.java
    incubator/deft/sandbox/jmeehan/awf-core/src/main/java/org/apache/awf/util/
    incubator/deft/sandbox/jmeehan/awf-core/src/main/java/org/apache/awf/util/AcceptUtil.java
    incubator/deft/sandbox/jmeehan/awf-core/src/main/java/org/apache/awf/util/ArrayUtil.java
    incubator/deft/sandbox/jmeehan/awf-core/src/main/java/org/apache/awf/util/Closeables.java
    incubator/deft/sandbox/jmeehan/awf-core/src/main/java/org/apache/awf/util/CookieUtil.java
    incubator/deft/sandbox/jmeehan/awf-core/src/main/java/org/apache/awf/util/DateUtil.java
    incubator/deft/sandbox/jmeehan/awf-core/src/main/java/org/apache/awf/util/HttpUtil.java
    incubator/deft/sandbox/jmeehan/awf-core/src/main/java/org/apache/awf/util/KnuthMorrisPrattAlgorithm.java
    incubator/deft/sandbox/jmeehan/awf-core/src/main/java/org/apache/awf/util/MXBeanUtil.java
    incubator/deft/sandbox/jmeehan/awf-core/src/main/java/org/apache/awf/util/NopAsyncResult.java
    incubator/deft/sandbox/jmeehan/awf-core/src/main/java/org/apache/awf/util/Pair.java
    incubator/deft/sandbox/jmeehan/awf-core/src/main/java/org/apache/awf/util/ReflectionTools.java
    incubator/deft/sandbox/jmeehan/awf-core/src/main/java/org/apache/awf/util/UrlUtil.java
    incubator/deft/sandbox/jmeehan/awf-core/src/main/java/org/apache/awf/web/
    incubator/deft/sandbox/jmeehan/awf-core/src/main/java/org/apache/awf/web/Application.java
    incubator/deft/sandbox/jmeehan/awf-core/src/main/java/org/apache/awf/web/AsyncCallback.java
    incubator/deft/sandbox/jmeehan/awf-core/src/main/java/org/apache/awf/web/AsyncResult.java
    incubator/deft/sandbox/jmeehan/awf-core/src/main/java/org/apache/awf/web/HttpServer.java
    incubator/deft/sandbox/jmeehan/awf-core/src/main/java/org/apache/awf/web/handler/
    incubator/deft/sandbox/jmeehan/awf-core/src/main/java/org/apache/awf/web/handler/BadRequestRequestHandler.java
    incubator/deft/sandbox/jmeehan/awf-core/src/main/java/org/apache/awf/web/handler/ForbiddenRequestHandler.java
    incubator/deft/sandbox/jmeehan/awf-core/src/main/java/org/apache/awf/web/handler/HttpContinueRequestHandler.java
    incubator/deft/sandbox/jmeehan/awf-core/src/main/java/org/apache/awf/web/handler/NotFoundRequestHandler.java
    incubator/deft/sandbox/jmeehan/awf-core/src/main/java/org/apache/awf/web/handler/RequestHandler.java
    incubator/deft/sandbox/jmeehan/awf-core/src/main/java/org/apache/awf/web/handler/RequestHandlerFactory.java
    incubator/deft/sandbox/jmeehan/awf-core/src/main/java/org/apache/awf/web/handler/StaticContentHandler.java
    incubator/deft/sandbox/jmeehan/awf-core/src/main/java/org/apache/awf/web/http/
    incubator/deft/sandbox/jmeehan/awf-core/src/main/java/org/apache/awf/web/http/HttpBufferedLexer.java
    incubator/deft/sandbox/jmeehan/awf-core/src/main/java/org/apache/awf/web/http/HttpException.java
    incubator/deft/sandbox/jmeehan/awf-core/src/main/java/org/apache/awf/web/http/HttpParsingContext.java
    incubator/deft/sandbox/jmeehan/awf-core/src/main/java/org/apache/awf/web/http/HttpProtocol.java
    incubator/deft/sandbox/jmeehan/awf-core/src/main/java/org/apache/awf/web/http/HttpRequest.java
    incubator/deft/sandbox/jmeehan/awf-core/src/main/java/org/apache/awf/web/http/HttpRequestDispatcher.java
    incubator/deft/sandbox/jmeehan/awf-core/src/main/java/org/apache/awf/web/http/HttpRequestImpl.java
    incubator/deft/sandbox/jmeehan/awf-core/src/main/java/org/apache/awf/web/http/HttpRequestParser.java
    incubator/deft/sandbox/jmeehan/awf-core/src/main/java/org/apache/awf/web/http/HttpResponse.java
    incubator/deft/sandbox/jmeehan/awf-core/src/main/java/org/apache/awf/web/http/HttpResponseImpl.java
    incubator/deft/sandbox/jmeehan/awf-core/src/main/java/org/apache/awf/web/http/HttpServerDescriptor.java
    incubator/deft/sandbox/jmeehan/awf-core/src/main/java/org/apache/awf/web/http/MalFormedHttpRequest.java
    incubator/deft/sandbox/jmeehan/awf-core/src/main/java/org/apache/awf/web/http/client/
    incubator/deft/sandbox/jmeehan/awf-core/src/main/java/org/apache/awf/web/http/client/AsynchronousHttpClient.java
    incubator/deft/sandbox/jmeehan/awf-core/src/main/java/org/apache/awf/web/http/client/Request.java
    incubator/deft/sandbox/jmeehan/awf-core/src/main/java/org/apache/awf/web/http/client/Response.java
    incubator/deft/sandbox/jmeehan/awf-core/src/main/java/org/apache/awf/web/http/protocol/
    incubator/deft/sandbox/jmeehan/awf-core/src/main/java/org/apache/awf/web/http/protocol/ContentType.java
    incubator/deft/sandbox/jmeehan/awf-core/src/main/java/org/apache/awf/web/http/protocol/HttpStatus.java
    incubator/deft/sandbox/jmeehan/awf-core/src/main/java/org/apache/awf/web/http/protocol/HttpVerb.java
    incubator/deft/sandbox/jmeehan/awf-core/src/main/resources/
    incubator/deft/sandbox/jmeehan/awf-core/src/main/resources/logback.xml
    incubator/deft/sandbox/jmeehan/awf-core/src/site/
    incubator/deft/sandbox/jmeehan/awf-core/src/site/resources/
    incubator/deft/sandbox/jmeehan/awf-core/src/site/resources/css/
    incubator/deft/sandbox/jmeehan/awf-core/src/site/resources/css/site.css
    incubator/deft/sandbox/jmeehan/awf-core/src/site/resources/images/
    incubator/deft/sandbox/jmeehan/awf-core/src/site/resources/images/apache-incubator-logo.png   (with props)
    incubator/deft/sandbox/jmeehan/awf-core/src/site/resources/images/awf-logo.png   (with props)
    incubator/deft/sandbox/jmeehan/awf-core/src/site/xdoc/
    incubator/deft/sandbox/jmeehan/awf-core/src/site/xdoc/api-guide.xml
    incubator/deft/sandbox/jmeehan/awf-core/src/site/xdoc/configuration-guide.xml
    incubator/deft/sandbox/jmeehan/awf-core/src/site/xdoc/contributor-guide.xml
    incubator/deft/sandbox/jmeehan/awf-core/src/site/xdoc/faq.xml
    incubator/deft/sandbox/jmeehan/awf-core/src/site/xdoc/index.xml
    incubator/deft/sandbox/jmeehan/awf-core/src/site/xdoc/irc.xml
    incubator/deft/sandbox/jmeehan/awf-core/src/site/xdoc/quick-start-guide.xml
    incubator/deft/sandbox/jmeehan/awf-core/src/site/xdoc/release-notes.xml
    incubator/deft/sandbox/jmeehan/awf-core/src/site/xdoc/road-map.xml
    incubator/deft/sandbox/jmeehan/awf-core/src/site/xdoc/xdoc.xsl
    incubator/deft/sandbox/jmeehan/awf-core/src/test/
    incubator/deft/sandbox/jmeehan/awf-core/src/test/java/
    incubator/deft/sandbox/jmeehan/awf-core/src/test/java/org/
    incubator/deft/sandbox/jmeehan/awf-core/src/test/java/org/apache/
    incubator/deft/sandbox/jmeehan/awf-core/src/test/java/org/apache/awf/
    incubator/deft/sandbox/jmeehan/awf-core/src/test/java/org/apache/awf/configuration/
    incubator/deft/sandbox/jmeehan/awf-core/src/test/java/org/apache/awf/configuration/AnnotationsScannerTest.java
    incubator/deft/sandbox/jmeehan/awf-core/src/test/java/org/apache/awf/configuration/ConfigurationTest.java
    incubator/deft/sandbox/jmeehan/awf-core/src/test/java/org/apache/awf/io/
    incubator/deft/sandbox/jmeehan/awf-core/src/test/java/org/apache/awf/io/AsynchronousSocketTest.java
    incubator/deft/sandbox/jmeehan/awf-core/src/test/java/org/apache/awf/io/buffer/
    incubator/deft/sandbox/jmeehan/awf-core/src/test/java/org/apache/awf/io/buffer/DynamicByteBufferTest.java
    incubator/deft/sandbox/jmeehan/awf-core/src/test/java/org/apache/awf/io/callback/
    incubator/deft/sandbox/jmeehan/awf-core/src/test/java/org/apache/awf/io/callback/JMXDebuggableCallbackManagerTest.java
    incubator/deft/sandbox/jmeehan/awf-core/src/test/java/org/apache/awf/io/callback/PeriodicCallbackTest.java
    incubator/deft/sandbox/jmeehan/awf-core/src/test/java/org/apache/awf/io/timeout/
    incubator/deft/sandbox/jmeehan/awf-core/src/test/java/org/apache/awf/io/timeout/JMXDebuggableTimeoutManagerTest.java
    incubator/deft/sandbox/jmeehan/awf-core/src/test/java/org/apache/awf/io/timeout/TimeoutTest.java
    incubator/deft/sandbox/jmeehan/awf-core/src/test/java/org/apache/awf/util/
    incubator/deft/sandbox/jmeehan/awf-core/src/test/java/org/apache/awf/util/DateUtilTest.java
    incubator/deft/sandbox/jmeehan/awf-core/src/test/java/org/apache/awf/util/HttpRequestHelper.java
    incubator/deft/sandbox/jmeehan/awf-core/src/test/java/org/apache/awf/util/ReflectionToolsTest.java
    incubator/deft/sandbox/jmeehan/awf-core/src/test/java/org/apache/awf/util/UrlUtilTest.java
    incubator/deft/sandbox/jmeehan/awf-core/src/test/java/org/apache/awf/web/
    incubator/deft/sandbox/jmeehan/awf-core/src/test/java/org/apache/awf/web/ApplicationTest.java
    incubator/deft/sandbox/jmeehan/awf-core/src/test/java/org/apache/awf/web/HttpServerTest.java
    incubator/deft/sandbox/jmeehan/awf-core/src/test/java/org/apache/awf/web/SystemTest.java
    incubator/deft/sandbox/jmeehan/awf-core/src/test/java/org/apache/awf/web/SystemTestHandlers.java
    incubator/deft/sandbox/jmeehan/awf-core/src/test/java/org/apache/awf/web/handler/
    incubator/deft/sandbox/jmeehan/awf-core/src/test/java/org/apache/awf/web/handler/RequestHandlerFactoryTest.java
    incubator/deft/sandbox/jmeehan/awf-core/src/test/java/org/apache/awf/web/handler/RequestHandlerTest.java
    incubator/deft/sandbox/jmeehan/awf-core/src/test/java/org/apache/awf/web/http/
    incubator/deft/sandbox/jmeehan/awf-core/src/test/java/org/apache/awf/web/http/HttpBufferedLexerTest.java
    incubator/deft/sandbox/jmeehan/awf-core/src/test/java/org/apache/awf/web/http/HttpExceptionTest.java
    incubator/deft/sandbox/jmeehan/awf-core/src/test/java/org/apache/awf/web/http/HttpProtocolTest.java
    incubator/deft/sandbox/jmeehan/awf-core/src/test/java/org/apache/awf/web/http/HttpRequestDispatcherTest.java
    incubator/deft/sandbox/jmeehan/awf-core/src/test/java/org/apache/awf/web/http/HttpRequestImplTest.java
    incubator/deft/sandbox/jmeehan/awf-core/src/test/java/org/apache/awf/web/http/HttpRequestParserTest.java
    incubator/deft/sandbox/jmeehan/awf-core/src/test/java/org/apache/awf/web/http/client/
    incubator/deft/sandbox/jmeehan/awf-core/src/test/java/org/apache/awf/web/http/client/AsynchronousHttpClientTest.java
    incubator/deft/sandbox/jmeehan/awf-core/src/test/java/org/apache/awf/web/http/client/RequestTest.java
    incubator/deft/sandbox/jmeehan/awf-core/src/test/java/org/apache/awf/web/http/protocol/
    incubator/deft/sandbox/jmeehan/awf-core/src/test/java/org/apache/awf/web/http/protocol/ContentTypeTest.java
    incubator/deft/sandbox/jmeehan/awf-core/src/test/java/org/apache/awf/web/http/protocol/HttpStatusTest.java
    incubator/deft/sandbox/jmeehan/awf-core/src/test/java/org/apache/awf/web/http/protocol/HttpVerbTest.java
    incubator/deft/sandbox/jmeehan/awf-core/src/test/resources/
    incubator/deft/sandbox/jmeehan/awf-core/src/test/resources/f4_impact_1_original.jpg   (with props)
    incubator/deft/sandbox/jmeehan/awf-core/src/test/resources/n792205362_2067.jpg   (with props)
    incubator/deft/sandbox/jmeehan/awf-core/src/test/resources/test.txt
    incubator/deft/sandbox/jmeehan/awf-example-gossip/
    incubator/deft/sandbox/jmeehan/awf-example-gossip/.classpath
    incubator/deft/sandbox/jmeehan/awf-example-gossip/.project
    incubator/deft/sandbox/jmeehan/awf-example-gossip/.settings/
    incubator/deft/sandbox/jmeehan/awf-example-gossip/.settings/org.eclipse.jdt.core.prefs
    incubator/deft/sandbox/jmeehan/awf-example-gossip/.settings/org.eclipse.m2e.core.prefs
    incubator/deft/sandbox/jmeehan/awf-example-gossip/README
    incubator/deft/sandbox/jmeehan/awf-example-gossip/pom.xml
    incubator/deft/sandbox/jmeehan/awf-example-gossip/src/
    incubator/deft/sandbox/jmeehan/awf-example-gossip/src/main/
    incubator/deft/sandbox/jmeehan/awf-example-gossip/src/main/java/
    incubator/deft/sandbox/jmeehan/awf-example-gossip/src/main/java/org/
    incubator/deft/sandbox/jmeehan/awf-example-gossip/src/main/java/org/apache/
    incubator/deft/sandbox/jmeehan/awf-example-gossip/src/main/java/org/apache/awf/
    incubator/deft/sandbox/jmeehan/awf-example-gossip/src/main/java/org/apache/awf/example/
    incubator/deft/sandbox/jmeehan/awf-example-gossip/src/main/java/org/apache/awf/example/gossip/
    incubator/deft/sandbox/jmeehan/awf-example-gossip/src/main/java/org/apache/awf/example/gossip/FailureDetector.java
    incubator/deft/sandbox/jmeehan/awf-example-gossip/src/main/java/org/apache/awf/example/gossip/Gossiper.java
    incubator/deft/sandbox/jmeehan/awf-example-gossip/src/main/java/org/apache/awf/example/gossip/MessagingService.java
    incubator/deft/sandbox/jmeehan/awf-example-gossip/src/main/java/org/apache/awf/example/gossip/NodeStateChangeListener.java
    incubator/deft/sandbox/jmeehan/awf-example-gossip/src/main/resources/
    incubator/deft/sandbox/jmeehan/awf-example-gossip/src/test/
    incubator/deft/sandbox/jmeehan/awf-example-gossip/src/test/java/
    incubator/deft/sandbox/jmeehan/awf-example-gossip/src/test/resources/
    incubator/deft/sandbox/jmeehan/awf-parent/
    incubator/deft/sandbox/jmeehan/awf-parent/.project
    incubator/deft/sandbox/jmeehan/awf-parent/.settings/
    incubator/deft/sandbox/jmeehan/awf-parent/.settings/org.eclipse.m2e.core.prefs
    incubator/deft/sandbox/jmeehan/awf-parent/pom.xml
    incubator/deft/sandbox/jmeehan/awf-parent/src/
    incubator/deft/sandbox/jmeehan/awf-parent/src/site/
Modified:
    incubator/deft/sandbox/jmeehan/   (props changed)

Propchange: incubator/deft/sandbox/jmeehan/
------------------------------------------------------------------------------
--- svn:ignore (added)
+++ svn:ignore Sun Feb 12 20:24:30 2012
@@ -0,0 +1,6 @@
+.tmp
+.project
+.classpath
+.settings
+.class
+

Added: incubator/deft/sandbox/jmeehan/awf-core/.classpath
URL: http://svn.apache.org/viewvc/incubator/deft/sandbox/jmeehan/awf-core/.classpath?rev=1243316&view=auto
==============================================================================
--- incubator/deft/sandbox/jmeehan/awf-core/.classpath (added)
+++ incubator/deft/sandbox/jmeehan/awf-core/.classpath Sun Feb 12 20:24:30 2012
@@ -0,0 +1,10 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<classpath>
+	<classpathentry kind="src" output="target/classes" path="src/main/java"/>
+	<classpathentry excluding="**" kind="src" output="target/classes" path="src/main/resources"/>
+	<classpathentry kind="src" output="target/test-classes" path="src/test/java"/>
+	<classpathentry excluding="**" kind="src" output="target/test-classes" path="src/test/resources"/>
+	<classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER/org.eclipse.jdt.internal.debug.ui.launcher.StandardVMType/J2SE-1.5"/>
+	<classpathentry kind="con" path="org.eclipse.m2e.MAVEN2_CLASSPATH_CONTAINER"/>
+	<classpathentry kind="output" path="target/classes"/>
+</classpath>

Added: incubator/deft/sandbox/jmeehan/awf-core/.project
URL: http://svn.apache.org/viewvc/incubator/deft/sandbox/jmeehan/awf-core/.project?rev=1243316&view=auto
==============================================================================
--- incubator/deft/sandbox/jmeehan/awf-core/.project (added)
+++ incubator/deft/sandbox/jmeehan/awf-core/.project Sun Feb 12 20:24:30 2012
@@ -0,0 +1,23 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<projectDescription>
+	<name>awf-core</name>
+	<comment></comment>
+	<projects>
+	</projects>
+	<buildSpec>
+		<buildCommand>
+			<name>org.eclipse.jdt.core.javabuilder</name>
+			<arguments>
+			</arguments>
+		</buildCommand>
+		<buildCommand>
+			<name>org.eclipse.m2e.core.maven2Builder</name>
+			<arguments>
+			</arguments>
+		</buildCommand>
+	</buildSpec>
+	<natures>
+		<nature>org.eclipse.jdt.core.javanature</nature>
+		<nature>org.eclipse.m2e.core.maven2Nature</nature>
+	</natures>
+</projectDescription>

Added: incubator/deft/sandbox/jmeehan/awf-core/.settings/org.eclipse.jdt.core.prefs
URL: http://svn.apache.org/viewvc/incubator/deft/sandbox/jmeehan/awf-core/.settings/org.eclipse.jdt.core.prefs?rev=1243316&view=auto
==============================================================================
--- incubator/deft/sandbox/jmeehan/awf-core/.settings/org.eclipse.jdt.core.prefs (added)
+++ incubator/deft/sandbox/jmeehan/awf-core/.settings/org.eclipse.jdt.core.prefs Sun Feb 12 20:24:30 2012
@@ -0,0 +1,6 @@
+#Sun Feb 12 16:03:22 GMT 2012
+eclipse.preferences.version=1
+org.eclipse.jdt.core.compiler.codegen.targetPlatform=1.5
+org.eclipse.jdt.core.compiler.compliance=1.5
+org.eclipse.jdt.core.compiler.problem.forbiddenReference=warning
+org.eclipse.jdt.core.compiler.source=1.5

Added: incubator/deft/sandbox/jmeehan/awf-core/.settings/org.eclipse.m2e.core.prefs
URL: http://svn.apache.org/viewvc/incubator/deft/sandbox/jmeehan/awf-core/.settings/org.eclipse.m2e.core.prefs?rev=1243316&view=auto
==============================================================================
--- incubator/deft/sandbox/jmeehan/awf-core/.settings/org.eclipse.m2e.core.prefs (added)
+++ incubator/deft/sandbox/jmeehan/awf-core/.settings/org.eclipse.m2e.core.prefs Sun Feb 12 20:24:30 2012
@@ -0,0 +1,5 @@
+#Sun Feb 12 15:55:40 GMT 2012
+activeProfiles=
+eclipse.preferences.version=1
+resolveWorkspaceProjects=true
+version=1

Added: incubator/deft/sandbox/jmeehan/awf-core/pom.xml
URL: http://svn.apache.org/viewvc/incubator/deft/sandbox/jmeehan/awf-core/pom.xml?rev=1243316&view=auto
==============================================================================
--- incubator/deft/sandbox/jmeehan/awf-core/pom.xml (added)
+++ incubator/deft/sandbox/jmeehan/awf-core/pom.xml Sun Feb 12 20:24:30 2012
@@ -0,0 +1,309 @@
+<?xml version="1.0" encoding="ISO-8859-1"?>
+	<!--
+		Licensed to the Apache Software Foundation (ASF) under one or more
+		contributor license agreements. See the NOTICE file distributed with
+		this work for additional information regarding copyright ownership.
+		The ASF licenses this file to You under the Apache License, Version
+		2.0 (the "License"); you may not use this file except in compliance
+		with the License. You may obtain a copy of the License at
+
+		http://www.apache.org/licenses/LICENSE-2.0 Unless required by
+		applicable law or agreed to in writing, software distributed under the
+		License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR
+		CONDITIONS OF ANY KIND, either express or implied. See the License for
+		the specific language governing permissions and limitations under the
+		License.
+	-->
+<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+	xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
+	<modelVersion>4.0.0</modelVersion>
+
+	<parent>
+		<groupId>org.apache.awf</groupId>
+		<artifactId>awf-parent</artifactId>
+		<version>0.4.0-SNAPSHOT</version>
+		<relativePath>../awf-parent</relativePath>
+	</parent>
+	<artifactId>awf-core</artifactId>
+
+	<name>Apache AWF Core</name>
+
+	<dependencies>
+		<dependency>
+			<groupId>com.google.guava</groupId>
+			<artifactId>guava</artifactId>
+		</dependency>
+
+		<dependency>
+			<groupId>junit</groupId>
+			<artifactId>junit</artifactId>
+		</dependency>
+
+		<dependency>
+			<groupId>org.mockito</groupId>
+			<artifactId>mockito-core</artifactId>
+			<scope>test</scope>
+		</dependency>
+
+		<dependency>
+			<groupId>org.powermock</groupId>
+			<artifactId>powermock-module-junit4</artifactId>
+		</dependency>
+
+		<dependency>
+			<groupId>org.powermock</groupId>
+			<artifactId>powermock-api-mockito</artifactId>
+		</dependency>
+
+		<dependency>
+			<groupId>ch.qos.logback</groupId>
+			<artifactId>logback-classic</artifactId>
+			<type>jar</type>
+		</dependency>
+
+		<dependency>
+			<groupId>org.apache.httpcomponents</groupId>
+			<artifactId>httpclient</artifactId>
+		</dependency>
+
+		<dependency>
+			<groupId>com.ning</groupId>
+			<artifactId>async-http-client</artifactId>
+		</dependency>
+
+		<dependency>
+			<groupId>javax.activation</groupId>
+			<artifactId>activation</artifactId>
+		</dependency>
+	</dependencies>
+	
+	<build>
+		<extensions>
+			<extension>
+				<groupId>org.apache.maven.wagon</groupId>
+				<artifactId>wagon-ssh-external</artifactId>
+				<version>1.0-beta-6</version>
+			</extension>
+		</extensions>
+
+		<pluginManagement>
+			<plugins>
+				<plugin>
+					<groupId>org.apache.rat</groupId>
+					<artifactId>apache-rat-plugin</artifactId>
+					<configuration>
+						<excludeSubProjects>false</excludeSubProjects>
+						<excludes>
+							<!-- MAVEN_DEFAULT_EXCLUDES -->
+							<exclude>**/target/**/*</exclude>
+							<exclude>**/cobertura.ser</exclude>
+							<!-- ECLIPSE_DEFAULT_EXCLUDES -->
+							<exclude>**/.classpath</exclude>
+							<exclude>**/.project</exclude>
+							<exclude>**/.settings/**/*</exclude>
+							<!-- IDEA_DEFAULT_EXCLUDES -->
+							<exclude>**/*.iml</exclude>
+							<exclude>**/*.ipr</exclude>
+							<exclude>**/*.iws</exclude>
+							<!-- MANIFEST_MF_EXCLUDES -->
+							<exclude>**/MANIFEST.MF</exclude>
+							<!-- 3RD_PARTY_LICENSES -->
+							<exclude>distribution/src/main/release/licenses/*</exclude>
+							<exclude>src/main/release/licenses/*</exclude>
+							<!--
+								Missing license header in dependency reduced pom, see
+								http://jira.codehaus.org/browse/MSHADE-48
+							-->
+							<exclude>**/dependency-reduced-pom.xml</exclude>
+							<!-- GIT excludes -->
+							<exclude>**/.gitignore</exclude>
+							<!-- Miscelanaous files -->
+							<exclude>src/test/resources/test.txt</exclude>
+						</excludes>
+					</configuration>
+				</plugin>
+			</plugins>
+		</pluginManagement>
+
+		<plugins>
+			<plugin>
+				<groupId>org.apache.maven.plugins</groupId>
+				<artifactId>maven-compiler-plugin</artifactId>
+				<version>2.3.2</version>
+				<configuration>
+					<encoding>UTF-8</encoding>
+					<source>1.6</source>
+					<target>1.6</target>
+				</configuration>
+			</plugin>
+
+			<plugin>
+				<artifactId>maven-assembly-plugin</artifactId>
+				<version>2.2-beta-5</version>
+				<configuration>
+					<descriptors>
+						<descriptor>src/main/assembly/awf-binary.xml</descriptor>
+						<descriptor>src/main/assembly/awf-binary-with-deps.xml
+						</descriptor>
+						<descriptor>src/main/assembly/awf-src.xml</descriptor>
+					</descriptors>
+				</configuration>
+			</plugin>
+			<plugin>
+				<artifactId>maven-site-plugin</artifactId>
+				<version>3.0</version>
+				<configuration />
+			</plugin>
+
+			<plugin>
+				<groupId>org.apache.maven.plugins</groupId>
+				<artifactId>maven-javadoc-plugin</artifactId>
+				<version>2.7</version>
+				<configuration />
+				<executions>
+					<execution>
+						<id>aggregate</id>
+						<goals>
+							<goal>aggregate</goal>
+						</goals>
+						<phase>site</phase>
+					</execution>
+					<execution>
+						<id>attach-javadocs</id>
+						<goals>
+							<goal>jar</goal>
+						</goals>
+					</execution>
+				</executions>
+			</plugin>
+		</plugins>
+	</build>	
+	
+	<reporting>
+		<plugins>
+			<plugin>
+				<groupId>org.apache.maven.plugins</groupId>
+				<artifactId>maven-project-info-reports-plugin</artifactId>
+				<version>2.4</version>
+				<reportSets>
+					<reportSet>
+						<reports>
+							<report>modules</report>
+							<report>project-team</report>
+							<report>mailing-list</report>
+							<report>issue-tracking</report>
+							<report>license</report>
+							<report>dependencies</report>
+							<report>cim</report>
+							<report>scm</report>
+						</reports>
+					</reportSet>
+				</reportSets>
+			</plugin>
+		</plugins>
+	</reporting>
+
+	<developers>
+		<developer>
+			<id>schildmeijer</id>
+			<name>Roger Schildmeijer</name>
+			<roles>
+				<role>Committer</role>
+			</roles>
+		</developer>
+		<developer>
+			<id>jmeehan</id>
+			<name>Johnathan Meehan</name>
+			<roles>
+				<role>Committer</role>
+			</roles>
+		</developer>
+		<developer>
+			<id>nwhitehead</id>
+			<name>Nicholas Whitehead</name>
+			<roles>
+				<role>Committer</role>
+			</roles>
+		</developer>
+        <developer>
+            <id>slemesle</id>
+            <name>Séven Le Mesle</name>
+            <roles>
+                <role>Committer</role>
+            </roles>
+        </developer>
+	</developers>
+
+	<contributors>
+		<contributor>
+			<name>Adam Lofts</name>
+		</contributor>
+		<contributor>
+			<name>Julien Vermillard</name>
+		</contributor>
+		<contributor>
+			<name>Michele Zuccalà</name>
+		</contributor>
+	</contributors>
+
+	<issueManagement>
+		<system>JIRA</system>
+		<url>http://issues.apache.org/jira/browse/DEFT</url>
+	</issueManagement>
+
+	<mailingLists>
+		<mailingList>
+			<name>Users</name>
+			<post>deft-user@incubator.apache.org</post>
+			<subscribe>deft-users-subscribe@incubator.apache.org</subscribe>
+			<unsubscribe>deft-users-unsubscribe@incubator.apache.org
+			</unsubscribe>
+			<archive>http://mail-archives.apache.org/mod_mbox/incubator-deft-users/
+			</archive>
+		</mailingList>
+		<mailingList>
+			<name>Development</name>
+			<post>deft-dev@incubator.apache.org</post>
+			<subscribe>deft-dev-subscribe@incubator.apache.org</subscribe>
+			<unsubscribe>deft-dev-unsubscribe@incubator.apache.org</unsubscribe>
+			<archive>http://mail-archives.apache.org/mod_mbox/incubator-deft-dev/
+			</archive>
+		</mailingList>
+		<mailingList>
+			<name>Commits</name>
+			<post>deft-commits@incubator.apache.org</post>
+			<subscribe>deft-commits-subscribe@incubator.apache.org</subscribe>
+			<unsubscribe>deft-commits-unsubscribe@incubator.apache.org
+			</unsubscribe>
+			<archive>http://mail-archives.apache.org/mod_mbox/incubator-deft-commits/
+			</archive>
+		</mailingList>
+	</mailingLists>
+
+	<scm>
+		<connection>scm:svn:http://svn.apache.org/repos/asf/incubator/deft/trunk/
+		</connection>
+		<developerConnection>scm:svn:https://svn.apache.org/repos/asf/incubator/deft/trunk/
+		</developerConnection>
+		<url>http://svn.apache.org/viewvc/incubator/deft/trunk/</url>
+	</scm>
+
+	<ciManagement>
+		<system>Jenkins</system>
+		<url>https://builds.apache.org/job/Deft/</url>
+	</ciManagement>
+
+	<distributionManagement>
+		<site>
+			<id>apache.website</id>
+			<url>scpexe://people.apache.org/www/incubator.apache.org/deft</url>
+		</site>
+	</distributionManagement>
+
+	<licenses>
+		<license>
+			<name>The Apache Software License, Version 2.0</name>
+			<url>http://www.apache.org/licenses/LICENSE-2.0.txt</url>
+		</license>
+	</licenses>
+</project>
\ No newline at end of file

Added: incubator/deft/sandbox/jmeehan/awf-core/src/main/assembly/awf-binary-with-deps.xml
URL: http://svn.apache.org/viewvc/incubator/deft/sandbox/jmeehan/awf-core/src/main/assembly/awf-binary-with-deps.xml?rev=1243316&view=auto
==============================================================================
--- incubator/deft/sandbox/jmeehan/awf-core/src/main/assembly/awf-binary-with-deps.xml (added)
+++ incubator/deft/sandbox/jmeehan/awf-core/src/main/assembly/awf-binary-with-deps.xml Sun Feb 12 20:24:30 2012
@@ -0,0 +1,44 @@
+<?xml version="1.0" encoding="ISO-8859-1"?>
+<!--
+    Licensed to the Apache Software Foundation (ASF) under one or more
+    contributor license agreements.  See the NOTICE file distributed with
+    this work for additional information regarding copyright ownership.
+    The ASF licenses this file to You under the Apache License, Version 2.0
+    (the "License"); you may not use this file except in compliance with
+    the License.  You may obtain a copy of the License at
+
+       http://www.apache.org/licenses/LICENSE-2.0
+
+    Unless required by applicable law or agreed to in writing, software
+    distributed under the License is distributed on an "AS IS" BASIS,
+    WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+    See the License for the specific language governing permissions and
+    limitations under the License.
+-->
+<assembly
+	xmlns="http://maven.apache.org/plugins/maven-assembly-plugin/assembly/1.1.0"
+	xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+	xsi:schemaLocation="http://maven.apache.org/plugins/maven-assembly-plugin/assembly/1.1.0 http://maven.apache.org/xsd/assembly-1.1.0.xsd">
+	<id>binary-with-deps</id>
+	<formats>
+		<format>tar.gz</format>
+		<format>zip</format>
+	</formats>
+	<dependencySets>
+		<dependencySet>
+			<unpack>false</unpack>
+			<scope>runtime</scope>
+			<outputDirectory>lib</outputDirectory>
+		</dependencySet>
+	</dependencySets>
+	<fileSets>
+		<fileSet>
+			<includes>
+				<include>${project.basedir}/README.md</include>
+				<include>${project.basedir}/LICENSE.txt</include>
+				<include>${project.basedir}/NOTICE.txt</include>
+				<include>${project.basedir}/NEWS.txt</include>
+			</includes>
+		</fileSet>
+	</fileSets>
+</assembly>

Added: incubator/deft/sandbox/jmeehan/awf-core/src/main/assembly/awf-binary.xml
URL: http://svn.apache.org/viewvc/incubator/deft/sandbox/jmeehan/awf-core/src/main/assembly/awf-binary.xml?rev=1243316&view=auto
==============================================================================
--- incubator/deft/sandbox/jmeehan/awf-core/src/main/assembly/awf-binary.xml (added)
+++ incubator/deft/sandbox/jmeehan/awf-core/src/main/assembly/awf-binary.xml Sun Feb 12 20:24:30 2012
@@ -0,0 +1,44 @@
+<?xml version="1.0" encoding="ISO-8859-1"?>
+<!--
+    Licensed to the Apache Software Foundation (ASF) under one or more
+    contributor license agreements.  See the NOTICE file distributed with
+    this work for additional information regarding copyright ownership.
+    The ASF licenses this file to You under the Apache License, Version 2.0
+    (the "License"); you may not use this file except in compliance with
+    the License.  You may obtain a copy of the License at
+
+       http://www.apache.org/licenses/LICENSE-2.0
+
+    Unless required by applicable law or agreed to in writing, software
+    distributed under the License is distributed on an "AS IS" BASIS,
+    WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+    See the License for the specific language governing permissions and
+    limitations under the License.
+-->
+<assembly
+	xmlns="http://maven.apache.org/plugins/maven-assembly-plugin/assembly/1.1.0"
+	xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+	xsi:schemaLocation="http://maven.apache.org/plugins/maven-assembly-plugin/assembly/1.1.0 http://maven.apache.org/xsd/assembly-1.1.0.xsd">
+	<id>binary</id>
+	<formats>
+		<format>tar.gz</format>
+		<format>zip</format>
+	</formats>
+	<fileSets>
+		<fileSet>
+			<includes>
+				<include>${project.basedir}/README.md</include>
+				<include>${project.basedir}/LICENSE.txt</include>
+				<include>${project.basedir}/NOTICE.txt</include>
+				<include>${project.basedir}/NEWS.txt</include>
+			</includes>
+		</fileSet>
+		<fileSet>
+			<directory>${project.build.directory}</directory>
+			<includes>
+				<include>*.jar</include>
+			</includes>
+			<outputDirectory>lib</outputDirectory>
+		</fileSet>
+	</fileSets>
+</assembly>

Added: incubator/deft/sandbox/jmeehan/awf-core/src/main/assembly/awf-src.xml
URL: http://svn.apache.org/viewvc/incubator/deft/sandbox/jmeehan/awf-core/src/main/assembly/awf-src.xml?rev=1243316&view=auto
==============================================================================
--- incubator/deft/sandbox/jmeehan/awf-core/src/main/assembly/awf-src.xml (added)
+++ incubator/deft/sandbox/jmeehan/awf-core/src/main/assembly/awf-src.xml Sun Feb 12 20:24:30 2012
@@ -0,0 +1,42 @@
+<?xml version="1.0" encoding="ISO-8859-1"?>
+<!--
+    Licensed to the Apache Software Foundation (ASF) under one or more
+    contributor license agreements.  See the NOTICE file distributed with
+    this work for additional information regarding copyright ownership.
+    The ASF licenses this file to You under the Apache License, Version 2.0
+    (the "License"); you may not use this file except in compliance with
+    the License.  You may obtain a copy of the License at
+
+       http://www.apache.org/licenses/LICENSE-2.0
+
+    Unless required by applicable law or agreed to in writing, software
+    distributed under the License is distributed on an "AS IS" BASIS,
+    WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+    See the License for the specific language governing permissions and
+    limitations under the License.
+-->
+<assembly
+	xmlns="http://maven.apache.org/plugins/maven-assembly-plugin/assembly/1.1.0"
+	xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+	xsi:schemaLocation="http://maven.apache.org/plugins/maven-assembly-plugin/assembly/1.1.0 http://maven.apache.org/xsd/assembly-1.1.0.xsd">
+	<id>src</id>
+	<formats>
+		<format>tar.gz</format>
+		<format>zip</format>
+	</formats>
+	<fileSets>
+		<fileSet>
+			<includes>
+				<include>${project.basedir}/README.md</include>
+				<include>${project.basedir}/LICENSE.txt</include>
+				<include>${project.basedir}/NOTICE.txt</include>
+				<include>${project.basedir}/NEWS.txt</include>
+				<include>${project.basedir}/pom.xml</include>
+			</includes>
+		</fileSet>
+		<fileSet>
+			<directory>${project.basedir}/src</directory>
+			<useDefaultExcludes>true</useDefaultExcludes>
+		</fileSet>
+	</fileSets>
+</assembly>

Added: incubator/deft/sandbox/jmeehan/awf-core/src/main/java/org/apache/awf/annotation/Asynchronous.java
URL: http://svn.apache.org/viewvc/incubator/deft/sandbox/jmeehan/awf-core/src/main/java/org/apache/awf/annotation/Asynchronous.java?rev=1243316&view=auto
==============================================================================
--- incubator/deft/sandbox/jmeehan/awf-core/src/main/java/org/apache/awf/annotation/Asynchronous.java (added)
+++ incubator/deft/sandbox/jmeehan/awf-core/src/main/java/org/apache/awf/annotation/Asynchronous.java Sun Feb 12 20:24:30 2012
@@ -0,0 +1,37 @@
+/*
+ *  Licensed to the Apache Software Foundation (ASF) under one
+ *  or more contributor license agreements.  See the NOTICE file
+ *  distributed with this work for additional information
+ *  regarding copyright ownership.  The ASF licenses this file
+ *  to you under the Apache License, Version 2.0 (the
+ *  "License"); you may not use this file except in compliance
+ *  with the License.  You may obtain a copy of the License at
+ *  
+ *    http://www.apache.org/licenses/LICENSE-2.0
+ *  
+ *  Unless required by applicable law or agreed to in writing,
+ *  software distributed under the License is distributed on an
+ *  "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ *  KIND, either express or implied.  See the License for the
+ *  specific language governing permissions and limitations
+ *  under the License. 
+ *  
+ */
+package org.apache.awf.annotation;
+
+import java.lang.annotation.ElementType;
+import java.lang.annotation.Retention;
+import java.lang.annotation.RetentionPolicy;
+import java.lang.annotation.Target;
+
+import org.apache.awf.web.handler.RequestHandler;
+
+/**
+ * Annotation used by implementation of {@link RequestHandler} to denote a
+ * method as asynchronous (i.e don't close the Http connection until the client
+ * invokes the finish method)
+ */
+@Retention(RetentionPolicy.RUNTIME)
+@Target(ElementType.METHOD)
+public @interface Asynchronous {
+}

Added: incubator/deft/sandbox/jmeehan/awf-core/src/main/java/org/apache/awf/annotation/Authenticated.java
URL: http://svn.apache.org/viewvc/incubator/deft/sandbox/jmeehan/awf-core/src/main/java/org/apache/awf/annotation/Authenticated.java?rev=1243316&view=auto
==============================================================================
--- incubator/deft/sandbox/jmeehan/awf-core/src/main/java/org/apache/awf/annotation/Authenticated.java (added)
+++ incubator/deft/sandbox/jmeehan/awf-core/src/main/java/org/apache/awf/annotation/Authenticated.java Sun Feb 12 20:24:30 2012
@@ -0,0 +1,38 @@
+/*
+ *  Licensed to the Apache Software Foundation (ASF) under one
+ *  or more contributor license agreements.  See the NOTICE file
+ *  distributed with this work for additional information
+ *  regarding copyright ownership.  The ASF licenses this file
+ *  to you under the Apache License, Version 2.0 (the
+ *  "License"); you may not use this file except in compliance
+ *  with the License.  You may obtain a copy of the License at
+ *  
+ *    http://www.apache.org/licenses/LICENSE-2.0
+ *  
+ *  Unless required by applicable law or agreed to in writing,
+ *  software distributed under the License is distributed on an
+ *  "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ *  KIND, either express or implied.  See the License for the
+ *  specific language governing permissions and limitations
+ *  under the License. 
+ *  
+ */
+package org.apache.awf.annotation;
+
+import java.lang.annotation.ElementType;
+import java.lang.annotation.Retention;
+import java.lang.annotation.RetentionPolicy;
+import java.lang.annotation.Target;
+
+import org.apache.awf.web.handler.RequestHandler;
+
+/**
+ * Annotation used by implementation of {@link RequestHandler} to show that a
+ * method requires that the request (current user) is authenticated (i.e your
+ * overridden method {@link RequestHandler#getCurrentUser} returns a non null
+ * value)
+ */
+@Retention(RetentionPolicy.RUNTIME)
+@Target(ElementType.METHOD)
+public @interface Authenticated {
+}

Added: incubator/deft/sandbox/jmeehan/awf-core/src/main/java/org/apache/awf/annotation/Path.java
URL: http://svn.apache.org/viewvc/incubator/deft/sandbox/jmeehan/awf-core/src/main/java/org/apache/awf/annotation/Path.java?rev=1243316&view=auto
==============================================================================
--- incubator/deft/sandbox/jmeehan/awf-core/src/main/java/org/apache/awf/annotation/Path.java (added)
+++ incubator/deft/sandbox/jmeehan/awf-core/src/main/java/org/apache/awf/annotation/Path.java Sun Feb 12 20:24:30 2012
@@ -0,0 +1,52 @@
+/*
+ *  Licensed to the Apache Software Foundation (ASF) under one
+ *  or more contributor license agreements.  See the NOTICE file
+ *  distributed with this work for additional information
+ *  regarding copyright ownership.  The ASF licenses this file
+ *  to you under the Apache License, Version 2.0 (the
+ *  "License"); you may not use this file except in compliance
+ *  with the License.  You may obtain a copy of the License at
+ *  
+ *    http://www.apache.org/licenses/LICENSE-2.0
+ *  
+ *  Unless required by applicable law or agreed to in writing,
+ *  software distributed under the License is distributed on an
+ *  "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ *  KIND, either express or implied.  See the License for the
+ *  specific language governing permissions and limitations
+ *  under the License. 
+ *  
+ */
+package org.apache.awf.annotation;
+
+import java.lang.annotation.ElementType;
+import java.lang.annotation.Retention;
+import java.lang.annotation.RetentionPolicy;
+import java.lang.annotation.Target;
+import java.util.regex.Pattern;
+
+/**
+ * Defines the request path for which the annotated <code>RequestHandler</code>
+ * method is applicable. The path is defined from root, and so for example to
+ * associate a <code>RequestHandler</code> with the top-level directory
+ * "images":
+ * <p>
+ * <code>&#64;Path(&quot;/images/&quot;)</code>
+ * </p>
+ * <p>
+ * Values are a combination of paths and regular expressions as understood by
+ * {@link Pattern}. For example:
+ * </p>
+ * <ul>
+ * <li><code>&#64;Path("/path/([\\w]+)")</code> matches any word character after
+ * the path such as "/path/123", "/path/abc" or "/path/12ab".
+ * <li><code>&#64;Path("/matchThis")</code> matches on the path itself, that is
+ * "http://host/matchThis".
+ * </ul>
+ */
+@Retention(RetentionPolicy.RUNTIME)
+@Target(ElementType.TYPE)
+public @interface Path {
+
+    String value();
+}

Added: incubator/deft/sandbox/jmeehan/awf-core/src/main/java/org/apache/awf/configuration/AnnotationsScanner.java
URL: http://svn.apache.org/viewvc/incubator/deft/sandbox/jmeehan/awf-core/src/main/java/org/apache/awf/configuration/AnnotationsScanner.java?rev=1243316&view=auto
==============================================================================
--- incubator/deft/sandbox/jmeehan/awf-core/src/main/java/org/apache/awf/configuration/AnnotationsScanner.java (added)
+++ incubator/deft/sandbox/jmeehan/awf-core/src/main/java/org/apache/awf/configuration/AnnotationsScanner.java Sun Feb 12 20:24:30 2012
@@ -0,0 +1,151 @@
+/*
+ *  Licensed to the Apache Software Foundation (ASF) under one
+ *  or more contributor license agreements.  See the NOTICE file
+ *  distributed with this work for additional information
+ *  regarding copyright ownership.  The ASF licenses this file
+ *  to you under the Apache License, Version 2.0 (the
+ *  "License"); you may not use this file except in compliance
+ *  with the License.  You may obtain a copy of the License at
+ *  
+ *    http://www.apache.org/licenses/LICENSE-2.0
+ *  
+ *  Unless required by applicable law or agreed to in writing,
+ *  software distributed under the License is distributed on an
+ *  "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ *  KIND, either express or implied.  See the License for the
+ *  specific language governing permissions and limitations
+ *  under the License. 
+ *  
+ */
+package org.apache.awf.configuration;
+
+import java.io.File;
+import java.io.IOException;
+import java.net.URL;
+import java.util.ArrayList;
+import java.util.Enumeration;
+import java.util.HashMap;
+import java.util.List;
+import java.util.Map;
+
+import org.apache.awf.annotation.Path;
+import org.apache.awf.util.ReflectionTools;
+import org.apache.awf.web.handler.RequestHandler;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+
+import com.google.common.base.Strings;
+
+/**
+ * Provides functionality to retrieve known <code>Annotation</code> types and
+ * associated values.
+ */
+public class AnnotationsScanner {
+
+    private final static Logger logger = LoggerFactory.getLogger(AnnotationsScanner.class);
+
+    /**
+     * A <code>Map</code> of <code>RequestHandler</code>s associated with
+     * {@link Path}s.
+     */
+    private Map<String, RequestHandler> pathHandlers = new HashMap<String, RequestHandler>();
+
+    /**
+     * Recursively iterate the given package, and attempt to resolve all
+     * annotated references for <code>RequestHandler</code> implementations.
+     * 
+     * @param handlerPackage the base package to scan, for example
+     *            "org.apache.awf".
+     * @return a <code>Map&lt;String, RequestHandler&gt;</code> of handlers,
+     *         which may be empty but not <code>null</code>.
+     */
+    public Map<String, RequestHandler> findHandlers(String handlerPackage) {
+
+        if (Strings.isNullOrEmpty(handlerPackage)) {
+            logger.warn("No RequestHandler package defined");
+            return pathHandlers;
+        }
+
+        List<Class<?>> classes = findClasses(handlerPackage);
+        for (Class<?> clazz : classes) {
+            if (clazz.isAnnotationPresent(Path.class)) {
+
+                RequestHandler handler = (RequestHandler) ReflectionTools.createInstance(clazz.getCanonicalName());
+                Path path = clazz.getAnnotation(Path.class);
+                pathHandlers.put(path.value(), handler);
+
+                logger.info("Added RequestHandler [" + clazz.getCanonicalName() + "] for Path [" + path.value() + "]");
+            }
+        }
+
+        return pathHandlers;
+    }
+
+    /**
+     * Recursively finds all classes available to the context
+     * <code>ClassLoader</code> from the given package.
+     * 
+     * @param packageName the package from which to commence the scan.
+     * @return A <code>List</code> of <code>Class</code> references.
+     */
+    private List<Class<?>> findClasses(String packageName) {
+
+        List<Class<?>> classes = new ArrayList<Class<?>>();
+
+        ClassLoader loader = Thread.currentThread().getContextClassLoader();
+        if (loader == null) {
+            logger.error("Context ClassLoader was not available");
+            return classes;
+        }
+
+        String path = packageName.replace('.', '/');
+        try {
+            List<File> directories = new ArrayList<File>();
+
+            Enumeration<URL> resources = loader.getResources(path);
+            while (resources.hasMoreElements()) {
+                URL resource = resources.nextElement();
+                directories.add(new File(resource.getFile()));
+            }
+
+            for (File directory : directories) {
+                classes.addAll(findClasses(directory, packageName));
+            }
+        } catch (IOException e) {
+            logger.error("Exception accessing resources for [" + path + "]", e);
+        }
+
+        return classes;
+    }
+
+    /**
+     * Recursively finds all class files available for the given package from
+     * the passed directory.
+     * 
+     * @param packageName the package from which to commence the scan.
+     * @return A <code>List</code> of <code>Class</code> references.
+     */
+    private List<Class<?>> findClasses(File directory, String packageName) {
+
+        List<Class<?>> classes = new ArrayList<Class<?>>();
+        if (directory == null || !directory.exists()) {
+            logger.error("Directory is null value or non-existent, [" + directory + "]");
+            return classes;
+        }
+
+        for (File file : directory.listFiles()) {
+            try {
+                if (file.isDirectory()) {
+                    classes.addAll(findClasses(file, packageName + "." + file.getName()));
+                } else if (file.getName().endsWith(".class")) {
+                    classes.add(Class.forName(packageName + '.'
+                            + file.getName().substring(0, file.getName().length() - 6)));
+                }
+            } catch (ClassNotFoundException e) {
+                logger.error("ClassNotFoundException", e);
+            }
+        }
+
+        return classes;
+    }
+}

Added: incubator/deft/sandbox/jmeehan/awf-core/src/main/java/org/apache/awf/configuration/Configuration.java
URL: http://svn.apache.org/viewvc/incubator/deft/sandbox/jmeehan/awf-core/src/main/java/org/apache/awf/configuration/Configuration.java?rev=1243316&view=auto
==============================================================================
--- incubator/deft/sandbox/jmeehan/awf-core/src/main/java/org/apache/awf/configuration/Configuration.java (added)
+++ incubator/deft/sandbox/jmeehan/awf-core/src/main/java/org/apache/awf/configuration/Configuration.java Sun Feb 12 20:24:30 2012
@@ -0,0 +1,112 @@
+/*
+ *  Licensed to the Apache Software Foundation (ASF) under one
+ *  or more contributor license agreements.  See the NOTICE file
+ *  distributed with this work for additional information
+ *  regarding copyright ownership.  The ASF licenses this file
+ *  to you under the Apache License, Version 2.0 (the
+ *  "License"); you may not use this file except in compliance
+ *  with the License.  You may obtain a copy of the License at
+ *  
+ *    http://www.apache.org/licenses/LICENSE-2.0
+ *  
+ *  Unless required by applicable law or agreed to in writing,
+ *  software distributed under the License is distributed on an
+ *  "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ *  KIND, either express or implied.  See the License for the
+ *  specific language governing permissions and limitations
+ *  under the License. 
+ *  
+ */
+package org.apache.awf.configuration;
+
+import org.apache.awf.web.HttpServer;
+
+import com.google.common.base.Strings;
+
+/**
+ * Simple type to hold configuration options, to be passed to {@link HttpServer}
+ * .
+ */
+public class Configuration {
+
+    /**
+     * The default directory for static content.
+     */
+    static final String DEFAULT_STATIC_DIRECTORY = "static";
+
+    /**
+     * The package under which <code>RequestHandler</code> implementations are
+     * to be found, for example "org.apache.awf".
+     */
+    private String handlerPacakge;
+
+    /**
+     * The directory from which static content should be retrieved.
+     */
+    private String staticDirectory;
+
+    /**
+     * Indicates whether ETags should be generated and applied.
+     */
+    private boolean createETags;
+
+    /**
+     * Retrieve the package under which <code>RequestHandler</code>
+     * implementations are to be found, for example "org.apache.awf".
+     * 
+     * @return the current package name.
+     */
+    public String getHandlerPackage() {
+        return Strings.nullToEmpty(handlerPacakge).trim().isEmpty() ? "" : handlerPacakge;
+    }
+
+    /**
+     * Set package under which <code>RequestHandler</code> implementations are
+     * to be found, for example "org.apache.awf".
+     * 
+     * @param handlerPackage the name of the package.
+     */
+    public void setHandlerPackage(String handlerPackage) {
+        handlerPacakge = handlerPackage;
+    }
+
+    /**
+     * Retrieve directory from which static content should be retrieved.
+     * Defaults to the value of {@link #DEFAULT_STATIC_DIRECTORY} where empty or
+     * <code>null</code>.
+     * 
+     * @return the current name of the static directory.
+     */
+    public String getStaticDirectory() {
+        return Strings.nullToEmpty(staticDirectory).trim().isEmpty() ? "static" : staticDirectory;
+    }
+
+    /**
+     * Set the directory from which static content should be retrieved.
+     * 
+     * @param staticDirectory the directory name for use.
+     */
+    public void setStaticDirectory(String staticDirectory) {
+        this.staticDirectory = staticDirectory;
+    }
+
+    /**
+     * Determine whether ETags should currently be generated and applied.
+     * 
+     * @return <code>true</code> if they are to be created; <code>false</code>
+     *         otherwise.
+     */
+    public boolean shouldCreateETags() {
+        return createETags;
+    }
+
+    /**
+     * Set whether ETags should be generated and applied.
+     * 
+     * @param createETags <code>true</code> to create them; <code>false</code>
+     *            otherwise.
+     */
+    public void setCreateETags(boolean createETags) {
+        this.createETags = createETags;
+    }
+}

Added: incubator/deft/sandbox/jmeehan/awf-core/src/main/java/org/apache/awf/example/ServerExample.java
URL: http://svn.apache.org/viewvc/incubator/deft/sandbox/jmeehan/awf-core/src/main/java/org/apache/awf/example/ServerExample.java?rev=1243316&view=auto
==============================================================================
--- incubator/deft/sandbox/jmeehan/awf-core/src/main/java/org/apache/awf/example/ServerExample.java (added)
+++ incubator/deft/sandbox/jmeehan/awf-core/src/main/java/org/apache/awf/example/ServerExample.java Sun Feb 12 20:24:30 2012
@@ -0,0 +1,49 @@
+/*
+ *  Licensed to the Apache Software Foundation (ASF) under one
+ *  or more contributor license agreements.  See the NOTICE file
+ *  distributed with this work for additional information
+ *  regarding copyright ownership.  The ASF licenses this file
+ *  to you under the Apache License, Version 2.0 (the
+ *  "License"); you may not use this file except in compliance
+ *  with the License.  You may obtain a copy of the License at
+ *  
+ *    http://www.apache.org/licenses/LICENSE-2.0
+ *  
+ *  Unless required by applicable law or agreed to in writing,
+ *  software distributed under the License is distributed on an
+ *  "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ *  KIND, either express or implied.  See the License for the
+ *  specific language governing permissions and limitations
+ *  under the License. 
+ *  
+ */
+package org.apache.awf.example;
+
+import org.apache.awf.configuration.Configuration;
+import org.apache.awf.io.IOLoop;
+import org.apache.awf.web.HttpServer;
+
+/**
+ * A simple example of how to configure and instantiate a server.
+ */
+public class ServerExample {
+
+    public static void main(String[] args) {
+
+        /*
+         * The only required configuration option is the base package, under
+         * which handlers are found. See the sub-package "handler" for examples
+         * and how to view them as part of this example application.
+         */
+        Configuration configuration = new Configuration();
+        configuration.setHandlerPackage("org.apache.awf.example.handler");
+
+        /*
+         * Create an instance of HttpServer with the given Configuration, bind
+         * to a single port and start.
+         */
+        HttpServer server = new HttpServer(configuration);
+        server.listen(8080);
+        IOLoop.INSTANCE.start();
+    }
+}

Added: incubator/deft/sandbox/jmeehan/awf-core/src/main/java/org/apache/awf/example/client/AsynchronousHttpClientGetExample.java
URL: http://svn.apache.org/viewvc/incubator/deft/sandbox/jmeehan/awf-core/src/main/java/org/apache/awf/example/client/AsynchronousHttpClientGetExample.java?rev=1243316&view=auto
==============================================================================
--- incubator/deft/sandbox/jmeehan/awf-core/src/main/java/org/apache/awf/example/client/AsynchronousHttpClientGetExample.java (added)
+++ incubator/deft/sandbox/jmeehan/awf-core/src/main/java/org/apache/awf/example/client/AsynchronousHttpClientGetExample.java Sun Feb 12 20:24:30 2012
@@ -0,0 +1,61 @@
+package org.apache.awf.example.client;
+ 
+import org.apache.awf.io.IOLoop;
+import org.apache.awf.io.timeout.Timeout;
+import org.apache.awf.web.AsyncCallback;
+import org.apache.awf.web.AsyncResult;
+import org.apache.awf.web.http.client.AsynchronousHttpClient;
+import org.apache.awf.web.http.client.Response;
+ 
+/**
+ * Example class to demonstrate usage of <code>AsynchronousHttpClient</code>.
+ */
+public class AsynchronousHttpClientGetExample {
+    /**
+     * A simple example of how to use the <code>AsynchronousHttpClient</code>,
+     * taking the following steps:
+     * <ol>
+     * <li>Create an instance of <code>AsyncResult&lt;Response&gt;</code> and
+     * define the methods <code>onSuccess</code> and <code>onFailure</code>.
+     * This type will become the callback for our operation, and the actions
+     * defined in the method will be executed when that operation succeeds or
+     * fails respectively. In this case, we will detail the exception on failure
+     * and show the response body on success.
+     * <li>Create an instance of <code>AsynchronousHttpClient</code> and perform
+     * a GET action passing the URL to hit and our previously defined callback
+     * type.
+     * <li>Add time-out value to the current <code>IOLoop</code> of one second,
+     * and in the definition of the <code>onCallback</code> method tell the
+     * instance to stop listening when this time limit has been reached.
+     * <li>Start the instance.
+     * </ol>
+     * 
+     * @param args
+     *            the arguments to pass; unused.
+     */
+    public static void main(final String[] args) {
+ 
+        final AsyncResult<Response> callback = new AsyncResult<Response>() {
+ 
+            @Override
+            public void onSuccess(final Response response) { System.out.println("RESPONSE: " + response); }
+
+            @Override
+            public void onFailure(final Throwable caught) { System.out.println("EXCEPTION: " + caught); }
+        };
+
+        final AsynchronousHttpClient client = new AsynchronousHttpClient();
+        client.get("http://incubator.apache.org/deft/", callback);
+
+        IOLoop.INSTANCE.addTimeout(new Timeout(System.currentTimeMillis() + 1000, new AsyncCallback() {
+            @Override
+            public void onCallback() {
+                System.out.println("INSTANCE.stop()");
+                IOLoop.INSTANCE.stop();
+            }
+        }));
+
+        System.out.println("INSTANCE.start()");
+        IOLoop.INSTANCE.start();
+    }
+ }
\ No newline at end of file

Added: incubator/deft/sandbox/jmeehan/awf-core/src/main/java/org/apache/awf/example/client/AsynchronousHttpClientPostExample.java
URL: http://svn.apache.org/viewvc/incubator/deft/sandbox/jmeehan/awf-core/src/main/java/org/apache/awf/example/client/AsynchronousHttpClientPostExample.java?rev=1243316&view=auto
==============================================================================
--- incubator/deft/sandbox/jmeehan/awf-core/src/main/java/org/apache/awf/example/client/AsynchronousHttpClientPostExample.java (added)
+++ incubator/deft/sandbox/jmeehan/awf-core/src/main/java/org/apache/awf/example/client/AsynchronousHttpClientPostExample.java Sun Feb 12 20:24:30 2012
@@ -0,0 +1,92 @@
+/*
+ *  Licensed to the Apache Software Foundation (ASF) under one
+ *  or more contributor license agreements.  See the NOTICE file
+ *  distributed with this work for additional information
+ *  regarding copyright ownership.  The ASF licenses this file
+ *  to you under the Apache License, Version 2.0 (the
+ *  "License"); you may not use this file except in compliance
+ *  with the License.  You may obtain a copy of the License at
+ *  
+ *    http://www.apache.org/licenses/LICENSE-2.0
+ *  
+ *  Unless required by applicable law or agreed to in writing,
+ *  software distributed under the License is distributed on an
+ *  "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ *  KIND, either express or implied.  See the License for the
+ *  specific language governing permissions and limitations
+ *  under the License. 
+ *  
+ */
+package org.apache.awf.example.client;
+
+import org.apache.awf.io.IOLoop;
+import org.apache.awf.io.timeout.Timeout;
+import org.apache.awf.web.AsyncCallback;
+import org.apache.awf.web.AsyncResult;
+import org.apache.awf.web.http.client.AsynchronousHttpClient;
+import org.apache.awf.web.http.client.Request;
+import org.apache.awf.web.http.client.Response;
+import org.apache.awf.web.http.protocol.ContentType;
+import org.apache.awf.web.http.protocol.HttpVerb;
+
+/**
+ * Example class to demonstrate usage of <code>AsynchronousHttpClient</code>.
+ */
+public class AsynchronousHttpClientPostExample {
+
+    /**
+     * A simple example of how to use the <code>AsynchronousHttpClient</code>,
+     * taking the following steps:
+     * <ol>
+     * <li>Create an instance of <code>AsyncResult&lt;Response&gt;</code> and
+     * define the methods <code>onSuccess</code> and <code>onFailure</code>.
+     * This type will become the callback for our operation, and the actions
+     * defined in the method will be executed when that operation succeeds or
+     * fails respectively. In this case, we will detail the exception on failure
+     * and show the response body on success.
+     * <li>Create a <code>Request</code>, providing target URL and HTTP method
+     * as well as body and content type information.
+     * <li>Create an instance of <code>AsynchronousHttpClient</code> and pass
+     * this <code>Request</code> with our previously defined callback.
+     * <li>Add time-out value to the current <code>IOLoop</code> of one second,
+     * and in the definition of the <code>onCallback</code> method tell the
+     * instance to stop listening when this time limit has been reached.
+     * <li>Start the instance.
+     * </ol>
+     * 
+     * @param args the arguments to pass; unused.
+     */
+    public static void main(final String[] args) {
+
+        final AsyncResult<Response> callback = new AsyncResult<Response>() {
+
+            @Override
+            public void onSuccess(final Response response) {
+                System.out.println("RESPONSE: " + response);
+            }
+
+            @Override
+            public void onFailure(final Throwable caught) {
+                System.out.println("EXCEPTION: " + caught);
+            }
+        };
+
+        Request request = new Request("http://incubator.apache.org/deft/", HttpVerb.POST);
+        request.setBody("paramName=paramValue");
+        request.setContentType(ContentType.APPLICATION_FORM_URLENCODED);
+
+        final AsynchronousHttpClient client = new AsynchronousHttpClient();
+        client.fetch(request, callback);
+
+        IOLoop.INSTANCE.addTimeout(new Timeout(System.currentTimeMillis() + 1000, new AsyncCallback() {
+            @Override
+            public void onCallback() {
+                System.out.println("INSTANCE.stop()");
+                IOLoop.INSTANCE.stop();
+            }
+        }));
+
+        System.out.println("INSTANCE.start()");
+        IOLoop.INSTANCE.start();
+    }
+}

Added: incubator/deft/sandbox/jmeehan/awf-core/src/main/java/org/apache/awf/example/configuration/ServerConfigurationExample.java
URL: http://svn.apache.org/viewvc/incubator/deft/sandbox/jmeehan/awf-core/src/main/java/org/apache/awf/example/configuration/ServerConfigurationExample.java?rev=1243316&view=auto
==============================================================================
--- incubator/deft/sandbox/jmeehan/awf-core/src/main/java/org/apache/awf/example/configuration/ServerConfigurationExample.java (added)
+++ incubator/deft/sandbox/jmeehan/awf-core/src/main/java/org/apache/awf/example/configuration/ServerConfigurationExample.java Sun Feb 12 20:24:30 2012
@@ -0,0 +1,61 @@
+/*
+ *  Licensed to the Apache Software Foundation (ASF) under one
+ *  or more contributor license agreements.  See the NOTICE file
+ *  distributed with this work for additional information
+ *  regarding copyright ownership.  The ASF licenses this file
+ *  to you under the Apache License, Version 2.0 (the
+ *  "License"); you may not use this file except in compliance
+ *  with the License.  You may obtain a copy of the License at
+ *  
+ *    http://www.apache.org/licenses/LICENSE-2.0
+ *  
+ *  Unless required by applicable law or agreed to in writing,
+ *  software distributed under the License is distributed on an
+ *  "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ *  KIND, either express or implied.  See the License for the
+ *  specific language governing permissions and limitations
+ *  under the License. 
+ *  
+ */
+package org.apache.awf.example.configuration;
+
+import org.apache.awf.configuration.Configuration;
+import org.apache.awf.io.IOLoop;
+import org.apache.awf.web.HttpServer;
+
+/**
+ * Instantiation of server, describing all configuration options.
+ */
+public class ServerConfigurationExample {
+
+    public static void main(String[] args) {
+
+        /*
+         * The only required configuration option is the base package, under
+         * which handlers are found. See the sub-package "handler" for examples
+         * and how to view them as part of this example application.
+         */
+        Configuration configuration = new Configuration();
+        configuration.setHandlerPackage("org.apache.awf.example.handler");
+
+        /*
+         * The directory from which content is retrieved, which defaults to
+         * "static" where not set.
+         */
+        configuration.setStaticDirectory("myStaticDirectory");
+
+        /*
+         * By default, ETags will not be generated and so this option should be
+         * set if they are required.
+         */
+        configuration.setCreateETags(true);
+
+        /*
+         * Create an instance of HttpServer with the given Configuration, bind
+         * to a single port and start.
+         */
+        HttpServer server = new HttpServer(configuration);
+        server.listen(8080);
+        IOLoop.INSTANCE.start();
+    }
+}

Added: incubator/deft/sandbox/jmeehan/awf-core/src/main/java/org/apache/awf/example/handler/BasicHandlerExample.java
URL: http://svn.apache.org/viewvc/incubator/deft/sandbox/jmeehan/awf-core/src/main/java/org/apache/awf/example/handler/BasicHandlerExample.java?rev=1243316&view=auto
==============================================================================
--- incubator/deft/sandbox/jmeehan/awf-core/src/main/java/org/apache/awf/example/handler/BasicHandlerExample.java (added)
+++ incubator/deft/sandbox/jmeehan/awf-core/src/main/java/org/apache/awf/example/handler/BasicHandlerExample.java Sun Feb 12 20:24:30 2012
@@ -0,0 +1,49 @@
+/*
+ *  Licensed to the Apache Software Foundation (ASF) under one
+ *  or more contributor license agreements.  See the NOTICE file
+ *  distributed with this work for additional information
+ *  regarding copyright ownership.  The ASF licenses this file
+ *  to you under the Apache License, Version 2.0 (the
+ *  "License"); you may not use this file except in compliance
+ *  with the License.  You may obtain a copy of the License at
+ *  
+ *    http://www.apache.org/licenses/LICENSE-2.0
+ *  
+ *  Unless required by applicable law or agreed to in writing,
+ *  software distributed under the License is distributed on an
+ *  "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ *  KIND, either express or implied.  See the License for the
+ *  specific language governing permissions and limitations
+ *  under the License. 
+ *  
+ */
+package org.apache.awf.example.handler;
+
+import org.apache.awf.annotation.Path;
+import org.apache.awf.example.ServerExample;
+import org.apache.awf.web.handler.RequestHandler;
+import org.apache.awf.web.http.HttpRequest;
+import org.apache.awf.web.http.HttpResponse;
+
+/**
+ * This is a basic handler, which does nothing more than write output and associate itself with a path. The {@link Path}
+ * annotation below defines the path on which this handler is invoked. When executed as part of the server example:
+ * <p>
+ * <code>http://localhost:8080/</code>
+ * </p>
+ * <p>
+ * The handler will send a simple message to the caller, and nothing more.
+ * </p>
+ * 
+ * @see Path
+ * @see ServerExample
+ */
+@Path("/")
+public class BasicHandlerExample extends RequestHandler {
+
+    @Override
+    public void get(HttpRequest request, HttpResponse response) {
+
+        response.write("It works!");
+    }
+}

Added: incubator/deft/sandbox/jmeehan/awf-core/src/main/java/org/apache/awf/example/handler/ClonedHandlerExample.java
URL: http://svn.apache.org/viewvc/incubator/deft/sandbox/jmeehan/awf-core/src/main/java/org/apache/awf/example/handler/ClonedHandlerExample.java?rev=1243316&view=auto
==============================================================================
--- incubator/deft/sandbox/jmeehan/awf-core/src/main/java/org/apache/awf/example/handler/ClonedHandlerExample.java (added)
+++ incubator/deft/sandbox/jmeehan/awf-core/src/main/java/org/apache/awf/example/handler/ClonedHandlerExample.java Sun Feb 12 20:24:30 2012
@@ -0,0 +1,60 @@
+/*
+ *  Licensed to the Apache Software Foundation (ASF) under one
+ *  or more contributor license agreements.  See the NOTICE file
+ *  distributed with this work for additional information
+ *  regarding copyright ownership.  The ASF licenses this file
+ *  to you under the Apache License, Version 2.0 (the
+ *  "License"); you may not use this file except in compliance
+ *  with the License.  You may obtain a copy of the License at
+ *  
+ *    http://www.apache.org/licenses/LICENSE-2.0
+ *  
+ *  Unless required by applicable law or agreed to in writing,
+ *  software distributed under the License is distributed on an
+ *  "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ *  KIND, either express or implied.  See the License for the
+ *  specific language governing permissions and limitations
+ *  under the License. 
+ *  
+ */
+package org.apache.awf.example.handler;
+
+import java.util.Date;
+
+import org.apache.awf.annotation.Path;
+import org.apache.awf.example.ServerExample;
+import org.apache.awf.web.handler.RequestHandler;
+import org.apache.awf.web.http.HttpRequest;
+import org.apache.awf.web.http.HttpResponse;
+
+/**
+ * All <code>RequestHandler</code> implementations are cloned. Where there are
+ * mutable fields, the {@link #clone()} method might be explicitly overridden.
+ * <p>
+ * In the example below, note that the <code>String</code> representation of
+ * each handler differs when written to the <code>HttpResponse</code>.
+ * </p>
+ * 
+ * @see Path
+ * @see ServerExample
+ */
+@Path("/clone")
+public class ClonedHandlerExample extends RequestHandler {
+
+    private Date mutableDate = new Date();
+
+    @Override
+    public void get(HttpRequest request, HttpResponse response) {
+
+        response.write("Cloned: " + toString());
+    }
+
+    @Override
+    public Object clone() throws CloneNotSupportedException {
+
+        ClonedHandlerExample handler = (ClonedHandlerExample) super.clone();
+        handler.mutableDate = new Date(mutableDate.getTime());
+
+        return handler;
+    }
+}

Added: incubator/deft/sandbox/jmeehan/awf-core/src/main/java/org/apache/awf/example/handler/CookieHandlerExample.java
URL: http://svn.apache.org/viewvc/incubator/deft/sandbox/jmeehan/awf-core/src/main/java/org/apache/awf/example/handler/CookieHandlerExample.java?rev=1243316&view=auto
==============================================================================
--- incubator/deft/sandbox/jmeehan/awf-core/src/main/java/org/apache/awf/example/handler/CookieHandlerExample.java (added)
+++ incubator/deft/sandbox/jmeehan/awf-core/src/main/java/org/apache/awf/example/handler/CookieHandlerExample.java Sun Feb 12 20:24:30 2012
@@ -0,0 +1,61 @@
+/*
+ *  Licensed to the Apache Software Foundation (ASF) under one
+ *  or more contributor license agreements.  See the NOTICE file
+ *  distributed with this work for additional information
+ *  regarding copyright ownership.  The ASF licenses this file
+ *  to you under the Apache License, Version 2.0 (the
+ *  "License"); you may not use this file except in compliance
+ *  with the License.  You may obtain a copy of the License at
+ *  
+ *    http://www.apache.org/licenses/LICENSE-2.0
+ *  
+ *  Unless required by applicable law or agreed to in writing,
+ *  software distributed under the License is distributed on an
+ *  "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ *  KIND, either express or implied.  See the License for the
+ *  specific language governing permissions and limitations
+ *  under the License. 
+ *  
+ */
+package org.apache.awf.example.handler;
+
+import java.util.UUID;
+
+import org.apache.awf.annotation.Path;
+import org.apache.awf.example.ServerExample;
+import org.apache.awf.web.handler.RequestHandler;
+import org.apache.awf.web.http.HttpRequest;
+import org.apache.awf.web.http.HttpResponse;
+
+/**
+ * This handler demonstrates usage of cookie-related functionality. The {@link Path} annotation below defines the path
+ * on which this handler is invoked. When executed as part of the server example:
+ * <p>
+ * <code>http://localhost:8080/cookie</code>
+ * </p>
+ * <p>
+ * This handler will set a cookie when a page is first viewed, with a limited lifetime and unique identifier. Upon
+ * refresh, this cookie will be cleared.
+ * </p>
+ * 
+ * @see Path
+ * @see ServerExample
+ */
+@Path("/cookie")
+public class CookieHandlerExample extends RequestHandler {
+
+    @Override
+    public void get(HttpRequest request, HttpResponse response) {
+
+        String sessCookie = request.getCookie("awfssid");
+
+        if (sessCookie != null) {
+            response.write("Cookie awfssid: " + sessCookie);
+            response.clearCookie("awfssid");
+        } else {
+            String ssid = UUID.randomUUID().toString();
+            response.setCookie("awfssid", ssid, 1800);
+            response.write("Set cookie awfssid: " + ssid);
+        }
+    }
+}

Added: incubator/deft/sandbox/jmeehan/awf-core/src/main/java/org/apache/awf/example/handler/PatternHandlerExample.java
URL: http://svn.apache.org/viewvc/incubator/deft/sandbox/jmeehan/awf-core/src/main/java/org/apache/awf/example/handler/PatternHandlerExample.java?rev=1243316&view=auto
==============================================================================
--- incubator/deft/sandbox/jmeehan/awf-core/src/main/java/org/apache/awf/example/handler/PatternHandlerExample.java (added)
+++ incubator/deft/sandbox/jmeehan/awf-core/src/main/java/org/apache/awf/example/handler/PatternHandlerExample.java Sun Feb 12 20:24:30 2012
@@ -0,0 +1,55 @@
+/*
+ *  Licensed to the Apache Software Foundation (ASF) under one
+ *  or more contributor license agreements.  See the NOTICE file
+ *  distributed with this work for additional information
+ *  regarding copyright ownership.  The ASF licenses this file
+ *  to you under the Apache License, Version 2.0 (the
+ *  "License"); you may not use this file except in compliance
+ *  with the License.  You may obtain a copy of the License at
+ *  
+ *    http://www.apache.org/licenses/LICENSE-2.0
+ *  
+ *  Unless required by applicable law or agreed to in writing,
+ *  software distributed under the License is distributed on an
+ *  "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ *  KIND, either express or implied.  See the License for the
+ *  specific language governing permissions and limitations
+ *  under the License. 
+ *  
+ */
+package org.apache.awf.example.handler;
+
+import java.util.regex.Pattern;
+
+import org.apache.awf.annotation.Path;
+import org.apache.awf.example.ServerExample;
+import org.apache.awf.web.handler.RequestHandler;
+import org.apache.awf.web.http.HttpRequest;
+import org.apache.awf.web.http.HttpResponse;
+
+/**
+ * This handler is invoked as a result of the combination of path and Regular
+ * Expression. When executed as part of the server example:
+ * <p>
+ * <code>http://localhost:8080/pattern/123</code> will be found.<br/>
+ * <code>http://localhost:8080/pattern/abc</code> will not be found.
+ * </p>
+ * <p>
+ * In the annotation below, the regular expression is "[0-9]+" which indicates
+ * that any number will be matched. Any pattern as understood by {@link Pattern}
+ * is suitable, and the handler will be invoked only when this pattern is
+ * matched.
+ * </p>
+ * 
+ * @see Path
+ * @see ServerExample
+ */
+@Path("/pattern/([0-9]+)")
+public class PatternHandlerExample extends RequestHandler {
+
+    @Override
+    public void get(HttpRequest request, HttpResponse response) {
+
+        response.write("The pattern was parsed successfully.");
+    }
+}

Added: incubator/deft/sandbox/jmeehan/awf-core/src/main/java/org/apache/awf/example/keyvalue/KeyValueStore.java
URL: http://svn.apache.org/viewvc/incubator/deft/sandbox/jmeehan/awf-core/src/main/java/org/apache/awf/example/keyvalue/KeyValueStore.java?rev=1243316&view=auto
==============================================================================
--- incubator/deft/sandbox/jmeehan/awf-core/src/main/java/org/apache/awf/example/keyvalue/KeyValueStore.java (added)
+++ incubator/deft/sandbox/jmeehan/awf-core/src/main/java/org/apache/awf/example/keyvalue/KeyValueStore.java Sun Feb 12 20:24:30 2012
@@ -0,0 +1,121 @@
+/*
+ *  Licensed to the Apache Software Foundation (ASF) under one
+ *  or more contributor license agreements.  See the NOTICE file
+ *  distributed with this work for additional information
+ *  regarding copyright ownership.  The ASF licenses this file
+ *  to you under the Apache License, Version 2.0 (the
+ *  "License"); you may not use this file except in compliance
+ *  with the License.  You may obtain a copy of the License at
+ *  
+ *    http://www.apache.org/licenses/LICENSE-2.0
+ *  
+ *  Unless required by applicable law or agreed to in writing,
+ *  software distributed under the License is distributed on an
+ *  "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ *  KIND, either express or implied.  See the License for the
+ *  specific language governing permissions and limitations
+ *  under the License. 
+ *  
+ */
+package org.apache.awf.example.keyvalue;
+
+import java.io.BufferedReader;
+import java.io.BufferedWriter;
+import java.io.IOException;
+import java.io.InputStreamReader;
+import java.io.OutputStreamWriter;
+import java.net.ServerSocket;
+import java.net.Socket;
+import java.util.HashMap;
+import java.util.Map;
+
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+
+/**
+ * Mocked KeyValueStoreHandler server (accepts a connection and echoes back the
+ * input)
+ * 
+ */
+@SuppressWarnings("serial")
+public class KeyValueStore extends Thread {
+
+    private final static Logger logger = LoggerFactory.getLogger(KeyValueStore.class);
+
+    public static final String HOST = "127.0.0.1";
+    public static final int PORT = 6379;
+
+    private final static Map<String, String> dict = new HashMap<String, String>() {
+        {
+            put("awf", "kickass");
+        }
+    };
+
+    private ServerSocket serverSocket;
+
+    public KeyValueStore() {
+        logger.debug("Initializing KeyValueStore");
+        initialize();
+    }
+
+    @Override
+    public void run() {
+        try {
+            logger.debug("KeyValueStore waiting for clients...");
+            Socket clientSocket = serverSocket.accept();
+            logger.debug("KeyValueStore client connected...");
+            BufferedWriter os = new BufferedWriter(new OutputStreamWriter(clientSocket.getOutputStream()));
+            BufferedReader is = new BufferedReader(new InputStreamReader(clientSocket.getInputStream()));
+            String input = is.readLine();
+            logger.debug("KeyValueStore received input: {}", input);
+            if (input.split("\\s+").length == 2) {
+                input = input.split("\\s+")[1]; // "GET awf" => "awf"
+            }
+            int sleep = 250;
+            if (input != null) {
+                logger.debug("KeyValueStore server sleeps " + sleep + "ms...");
+                try {
+                    Thread.sleep(sleep);
+                } catch (InterruptedException e) {
+                    e.printStackTrace();
+                }
+                logger.debug("KeyValueStore woke up...");
+                String value = dict.get(input) + "\r\n";
+                os.write(value, 0, value.length());
+                logger.debug("KeyValueStore echoed back: " + value);
+                os.flush();
+            }
+
+            try {
+                Thread.sleep(sleep);
+            } catch (InterruptedException e) {
+                e.printStackTrace();
+            }
+            { // cleanup
+                try {
+                    if (is != null) {
+                        is.close();
+                    }
+                    if (os != null) {
+                        os.close();
+                    }
+                    if (clientSocket != null) {
+                        clientSocket.close();
+                    }
+                } catch (IOException ignore) {
+                }
+            }
+        } catch (IOException e) {
+            e.printStackTrace();
+        }
+        logger.debug("Closing KeyValueStore");
+    }
+
+    private void initialize() {
+        try {
+            serverSocket = new ServerSocket(PORT);
+        } catch (IOException e) {
+            e.printStackTrace();
+        }
+    }
+}

Added: incubator/deft/sandbox/jmeehan/awf-core/src/main/java/org/apache/awf/example/keyvalue/KeyValueStoreClient.java
URL: http://svn.apache.org/viewvc/incubator/deft/sandbox/jmeehan/awf-core/src/main/java/org/apache/awf/example/keyvalue/KeyValueStoreClient.java?rev=1243316&view=auto
==============================================================================
--- incubator/deft/sandbox/jmeehan/awf-core/src/main/java/org/apache/awf/example/keyvalue/KeyValueStoreClient.java (added)
+++ incubator/deft/sandbox/jmeehan/awf-core/src/main/java/org/apache/awf/example/keyvalue/KeyValueStoreClient.java Sun Feb 12 20:24:30 2012
@@ -0,0 +1,79 @@
+/*
+ *  Licensed to the Apache Software Foundation (ASF) under one
+ *  or more contributor license agreements.  See the NOTICE file
+ *  distributed with this work for additional information
+ *  regarding copyright ownership.  The ASF licenses this file
+ *  to you under the Apache License, Version 2.0 (the
+ *  "License"); you may not use this file except in compliance
+ *  with the License.  You may obtain a copy of the License at
+ *  
+ *    http://www.apache.org/licenses/LICENSE-2.0
+ *  
+ *  Unless required by applicable law or agreed to in writing,
+ *  software distributed under the License is distributed on an
+ *  "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ *  KIND, either express or implied.  See the License for the
+ *  specific language governing permissions and limitations
+ *  under the License. 
+ *  
+ */
+package org.apache.awf.example.keyvalue;
+
+import java.io.IOException;
+import java.net.InetSocketAddress;
+import java.nio.ByteBuffer;
+import java.nio.channels.SelectionKey;
+import java.nio.channels.SocketChannel;
+
+import org.apache.awf.io.AsynchronousSocket;
+import org.apache.awf.io.IOLoop;
+import org.apache.awf.web.AsyncCallback;
+import org.apache.awf.web.AsyncResult;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+
+public class KeyValueStoreClient {
+
+    private final static Logger logger = LoggerFactory.getLogger(KeyValueStoreClient.class);
+
+    private AsynchronousSocket socket;
+    private SocketChannel channel;
+    private final String host;
+    private final int port;
+
+    public KeyValueStoreClient(String host, int port) {
+        this.host = host;
+        this.port = port;
+    }
+
+    public void connect() {
+        try {
+            channel = SocketChannel.open(new InetSocketAddress(host, port));
+            channel.configureBlocking(false);
+        } catch (IOException e) {
+            e.printStackTrace();
+        }
+        socket = new AsynchronousSocket(channel);
+        IOLoop.INSTANCE.addHandler(channel, socket, SelectionKey.OP_READ, ByteBuffer.allocate(1024));
+    }
+
+    public void get(String value, AsyncResult<byte[]> cb) {
+        socket.write("GET awf\r\n".getBytes(), new WriteCallback(cb));
+    }
+
+    private class WriteCallback implements AsyncCallback {
+
+        private final AsyncResult<byte[]> cb;
+
+        public WriteCallback(AsyncResult<byte[]> cb) {
+            this.cb = cb;
+        }
+
+        @Override
+        public void onCallback() {
+            // write is finished. read response from server
+            logger.debug("readUntil: \r\n");
+            socket.readUntil("\r\n".getBytes(), cb);
+        }
+    }
+}

Added: incubator/deft/sandbox/jmeehan/awf-core/src/main/java/org/apache/awf/example/keyvalue/KeyValueStoreExample.java
URL: http://svn.apache.org/viewvc/incubator/deft/sandbox/jmeehan/awf-core/src/main/java/org/apache/awf/example/keyvalue/KeyValueStoreExample.java?rev=1243316&view=auto
==============================================================================
--- incubator/deft/sandbox/jmeehan/awf-core/src/main/java/org/apache/awf/example/keyvalue/KeyValueStoreExample.java (added)
+++ incubator/deft/sandbox/jmeehan/awf-core/src/main/java/org/apache/awf/example/keyvalue/KeyValueStoreExample.java Sun Feb 12 20:24:30 2012
@@ -0,0 +1,39 @@
+/*
+ *  Licensed to the Apache Software Foundation (ASF) under one
+ *  or more contributor license agreements.  See the NOTICE file
+ *  distributed with this work for additional information
+ *  regarding copyright ownership.  The ASF licenses this file
+ *  to you under the Apache License, Version 2.0 (the
+ *  "License"); you may not use this file except in compliance
+ *  with the License.  You may obtain a copy of the License at
+ *  
+ *    http://www.apache.org/licenses/LICENSE-2.0
+ *  
+ *  Unless required by applicable law or agreed to in writing,
+ *  software distributed under the License is distributed on an
+ *  "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ *  KIND, either express or implied.  See the License for the
+ *  specific language governing permissions and limitations
+ *  under the License. 
+ *  
+ */
+package org.apache.awf.example.keyvalue;
+
+import org.apache.awf.configuration.Configuration;
+import org.apache.awf.io.IOLoop;
+import org.apache.awf.web.HttpServer;
+
+public class KeyValueStoreExample {
+
+    private final static int PORT = 8080;
+
+    public static void main(String[] args) {
+
+        Configuration configuration = new Configuration();
+        configuration.setHandlerPackage("org.apache.awf.example.keyvalue");
+
+        HttpServer server = new HttpServer(configuration);
+        server.listen(PORT);
+        IOLoop.INSTANCE.start();
+    }
+}



Mime
View raw message