You are viewing a plain text version of this content. The canonical link for it is here.
Posted to awf-commits@incubator.apache.org by jm...@apache.org on 2012/02/13 23:07:51 UTC
svn commit: r1243729 [1/7] - in /incubator/deft/trunk: ./ awf-core/
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-core/src/main/java/org/apache/aw...
Author: jmeehan
Date: Mon Feb 13 23:07:46 2012
New Revision: 1243729
URL: http://svn.apache.org/viewvc?rev=1243729&view=rev
Log:
DEFT-198 - New Project: Apache AWF Core
Added:
incubator/deft/trunk/awf-core/
incubator/deft/trunk/awf-core/CHANGES.txt
incubator/deft/trunk/awf-core/LICENSE.txt
incubator/deft/trunk/awf-core/NEWS.txt
incubator/deft/trunk/awf-core/NOTICE.txt
incubator/deft/trunk/awf-core/README.md
incubator/deft/trunk/awf-core/pom.xml
incubator/deft/trunk/awf-core/src/
incubator/deft/trunk/awf-core/src/main/
incubator/deft/trunk/awf-core/src/main/assembly/
incubator/deft/trunk/awf-core/src/main/assembly/awf-binary-with-deps.xml
incubator/deft/trunk/awf-core/src/main/assembly/awf-binary.xml
incubator/deft/trunk/awf-core/src/main/assembly/awf-src.xml
incubator/deft/trunk/awf-core/src/main/java/
incubator/deft/trunk/awf-core/src/main/java/org/
incubator/deft/trunk/awf-core/src/main/java/org/apache/
incubator/deft/trunk/awf-core/src/main/java/org/apache/awf/
incubator/deft/trunk/awf-core/src/main/java/org/apache/awf/annotation/
incubator/deft/trunk/awf-core/src/main/java/org/apache/awf/annotation/Asynchronous.java
incubator/deft/trunk/awf-core/src/main/java/org/apache/awf/annotation/Authenticated.java
incubator/deft/trunk/awf-core/src/main/java/org/apache/awf/annotation/Path.java
incubator/deft/trunk/awf-core/src/main/java/org/apache/awf/configuration/
incubator/deft/trunk/awf-core/src/main/java/org/apache/awf/configuration/AnnotationsScanner.java
incubator/deft/trunk/awf-core/src/main/java/org/apache/awf/configuration/Configuration.java
incubator/deft/trunk/awf-core/src/main/java/org/apache/awf/io/
incubator/deft/trunk/awf-core/src/main/java/org/apache/awf/io/AsynchronousSocket.java
incubator/deft/trunk/awf-core/src/main/java/org/apache/awf/io/IOHandler.java
incubator/deft/trunk/awf-core/src/main/java/org/apache/awf/io/IOLoop.java
incubator/deft/trunk/awf-core/src/main/java/org/apache/awf/io/IOLoopMXBean.java
incubator/deft/trunk/awf-core/src/main/java/org/apache/awf/io/buffer/
incubator/deft/trunk/awf-core/src/main/java/org/apache/awf/io/buffer/DynamicByteBuffer.java
incubator/deft/trunk/awf-core/src/main/java/org/apache/awf/io/callback/
incubator/deft/trunk/awf-core/src/main/java/org/apache/awf/io/callback/CallbackManager.java
incubator/deft/trunk/awf-core/src/main/java/org/apache/awf/io/callback/CallbackManagerMXBean.java
incubator/deft/trunk/awf-core/src/main/java/org/apache/awf/io/callback/JMXDebuggableCallbackManager.java
incubator/deft/trunk/awf-core/src/main/java/org/apache/awf/io/callback/PeriodicCallback.java
incubator/deft/trunk/awf-core/src/main/java/org/apache/awf/io/timeout/
incubator/deft/trunk/awf-core/src/main/java/org/apache/awf/io/timeout/JMXDebuggableTimeoutManager.java
incubator/deft/trunk/awf-core/src/main/java/org/apache/awf/io/timeout/Timeout.java
incubator/deft/trunk/awf-core/src/main/java/org/apache/awf/io/timeout/TimeoutManager.java
incubator/deft/trunk/awf-core/src/main/java/org/apache/awf/io/timeout/TimeoutManagerMXBean.java
incubator/deft/trunk/awf-core/src/main/java/org/apache/awf/util/
incubator/deft/trunk/awf-core/src/main/java/org/apache/awf/util/AcceptUtil.java
incubator/deft/trunk/awf-core/src/main/java/org/apache/awf/util/ArrayUtil.java
incubator/deft/trunk/awf-core/src/main/java/org/apache/awf/util/Closeables.java
incubator/deft/trunk/awf-core/src/main/java/org/apache/awf/util/CookieUtil.java
incubator/deft/trunk/awf-core/src/main/java/org/apache/awf/util/DateUtil.java
incubator/deft/trunk/awf-core/src/main/java/org/apache/awf/util/HttpUtil.java
incubator/deft/trunk/awf-core/src/main/java/org/apache/awf/util/KnuthMorrisPrattAlgorithm.java
incubator/deft/trunk/awf-core/src/main/java/org/apache/awf/util/MXBeanUtil.java
incubator/deft/trunk/awf-core/src/main/java/org/apache/awf/util/NopAsyncResult.java
incubator/deft/trunk/awf-core/src/main/java/org/apache/awf/util/Pair.java
incubator/deft/trunk/awf-core/src/main/java/org/apache/awf/util/ReflectionTools.java
incubator/deft/trunk/awf-core/src/main/java/org/apache/awf/util/UrlUtil.java
incubator/deft/trunk/awf-core/src/main/java/org/apache/awf/web/
incubator/deft/trunk/awf-core/src/main/java/org/apache/awf/web/Application.java
incubator/deft/trunk/awf-core/src/main/java/org/apache/awf/web/AsyncCallback.java
incubator/deft/trunk/awf-core/src/main/java/org/apache/awf/web/AsyncResult.java
incubator/deft/trunk/awf-core/src/main/java/org/apache/awf/web/HttpServer.java
incubator/deft/trunk/awf-core/src/main/java/org/apache/awf/web/handler/
incubator/deft/trunk/awf-core/src/main/java/org/apache/awf/web/handler/BadRequestRequestHandler.java
incubator/deft/trunk/awf-core/src/main/java/org/apache/awf/web/handler/ForbiddenRequestHandler.java
incubator/deft/trunk/awf-core/src/main/java/org/apache/awf/web/handler/HttpContinueRequestHandler.java
incubator/deft/trunk/awf-core/src/main/java/org/apache/awf/web/handler/NotFoundRequestHandler.java
incubator/deft/trunk/awf-core/src/main/java/org/apache/awf/web/handler/RequestHandler.java
incubator/deft/trunk/awf-core/src/main/java/org/apache/awf/web/handler/RequestHandlerFactory.java
incubator/deft/trunk/awf-core/src/main/java/org/apache/awf/web/handler/StaticContentHandler.java
incubator/deft/trunk/awf-core/src/main/java/org/apache/awf/web/http/
incubator/deft/trunk/awf-core/src/main/java/org/apache/awf/web/http/HttpBufferedLexer.java
incubator/deft/trunk/awf-core/src/main/java/org/apache/awf/web/http/HttpException.java
incubator/deft/trunk/awf-core/src/main/java/org/apache/awf/web/http/HttpParsingContext.java
incubator/deft/trunk/awf-core/src/main/java/org/apache/awf/web/http/HttpProtocol.java
incubator/deft/trunk/awf-core/src/main/java/org/apache/awf/web/http/HttpRequest.java
incubator/deft/trunk/awf-core/src/main/java/org/apache/awf/web/http/HttpRequestDispatcher.java
incubator/deft/trunk/awf-core/src/main/java/org/apache/awf/web/http/HttpRequestImpl.java
incubator/deft/trunk/awf-core/src/main/java/org/apache/awf/web/http/HttpRequestParser.java
incubator/deft/trunk/awf-core/src/main/java/org/apache/awf/web/http/HttpResponse.java
incubator/deft/trunk/awf-core/src/main/java/org/apache/awf/web/http/HttpResponseImpl.java
incubator/deft/trunk/awf-core/src/main/java/org/apache/awf/web/http/HttpServerDescriptor.java
incubator/deft/trunk/awf-core/src/main/java/org/apache/awf/web/http/MalFormedHttpRequest.java
incubator/deft/trunk/awf-core/src/main/java/org/apache/awf/web/http/client/
incubator/deft/trunk/awf-core/src/main/java/org/apache/awf/web/http/client/AsynchronousHttpClient.java
incubator/deft/trunk/awf-core/src/main/java/org/apache/awf/web/http/client/Request.java
incubator/deft/trunk/awf-core/src/main/java/org/apache/awf/web/http/client/Response.java
incubator/deft/trunk/awf-core/src/main/java/org/apache/awf/web/http/protocol/
incubator/deft/trunk/awf-core/src/main/java/org/apache/awf/web/http/protocol/ContentType.java
incubator/deft/trunk/awf-core/src/main/java/org/apache/awf/web/http/protocol/HttpStatus.java
incubator/deft/trunk/awf-core/src/main/java/org/apache/awf/web/http/protocol/HttpVerb.java
incubator/deft/trunk/awf-core/src/main/resources/
incubator/deft/trunk/awf-core/src/main/resources/logback.xml
incubator/deft/trunk/awf-core/src/main/site/
incubator/deft/trunk/awf-core/src/main/site/resources/
incubator/deft/trunk/awf-core/src/main/site/resources/css/
incubator/deft/trunk/awf-core/src/main/site/resources/css/site.css
incubator/deft/trunk/awf-core/src/main/site/resources/images/
incubator/deft/trunk/awf-core/src/main/site/resources/images/apache-incubator-logo.png (with props)
incubator/deft/trunk/awf-core/src/main/site/resources/images/awf-logo.png (with props)
incubator/deft/trunk/awf-core/src/main/site/xdoc/
incubator/deft/trunk/awf-core/src/main/site/xdoc/api-guide.xml
incubator/deft/trunk/awf-core/src/main/site/xdoc/configuration-guide.xml
incubator/deft/trunk/awf-core/src/main/site/xdoc/contributor-guide.xml
incubator/deft/trunk/awf-core/src/main/site/xdoc/faq.xml
incubator/deft/trunk/awf-core/src/main/site/xdoc/index.xml
incubator/deft/trunk/awf-core/src/main/site/xdoc/irc.xml
incubator/deft/trunk/awf-core/src/main/site/xdoc/quick-start-guide.xml
incubator/deft/trunk/awf-core/src/main/site/xdoc/release-notes.xml
incubator/deft/trunk/awf-core/src/main/site/xdoc/road-map.xml
incubator/deft/trunk/awf-core/src/main/site/xdoc/xdoc.xsl
incubator/deft/trunk/awf-core/src/test/
incubator/deft/trunk/awf-core/src/test/java/
incubator/deft/trunk/awf-core/src/test/java/org/
incubator/deft/trunk/awf-core/src/test/java/org/apache/
incubator/deft/trunk/awf-core/src/test/java/org/apache/awf/
incubator/deft/trunk/awf-core/src/test/java/org/apache/awf/configuration/
incubator/deft/trunk/awf-core/src/test/java/org/apache/awf/configuration/AnnotationsScannerTest.java
incubator/deft/trunk/awf-core/src/test/java/org/apache/awf/configuration/ConfigurationTest.java
incubator/deft/trunk/awf-core/src/test/java/org/apache/awf/configuration/TestHandler.java
incubator/deft/trunk/awf-core/src/test/java/org/apache/awf/io/
incubator/deft/trunk/awf-core/src/test/java/org/apache/awf/io/AsynchronousSocketTest.java
incubator/deft/trunk/awf-core/src/test/java/org/apache/awf/io/buffer/
incubator/deft/trunk/awf-core/src/test/java/org/apache/awf/io/buffer/DynamicByteBufferTest.java
incubator/deft/trunk/awf-core/src/test/java/org/apache/awf/io/callback/
incubator/deft/trunk/awf-core/src/test/java/org/apache/awf/io/callback/JMXDebuggableCallbackManagerTest.java
incubator/deft/trunk/awf-core/src/test/java/org/apache/awf/io/callback/PeriodicCallbackTest.java
incubator/deft/trunk/awf-core/src/test/java/org/apache/awf/io/timeout/
incubator/deft/trunk/awf-core/src/test/java/org/apache/awf/io/timeout/JMXDebuggableTimeoutManagerTest.java
incubator/deft/trunk/awf-core/src/test/java/org/apache/awf/io/timeout/TimeoutTest.java
incubator/deft/trunk/awf-core/src/test/java/org/apache/awf/util/
incubator/deft/trunk/awf-core/src/test/java/org/apache/awf/util/DateUtilTest.java
incubator/deft/trunk/awf-core/src/test/java/org/apache/awf/util/HttpRequestHelper.java
incubator/deft/trunk/awf-core/src/test/java/org/apache/awf/util/ReflectionToolsTest.java
incubator/deft/trunk/awf-core/src/test/java/org/apache/awf/util/UrlUtilTest.java
incubator/deft/trunk/awf-core/src/test/java/org/apache/awf/web/
incubator/deft/trunk/awf-core/src/test/java/org/apache/awf/web/ApplicationTest.java
incubator/deft/trunk/awf-core/src/test/java/org/apache/awf/web/HttpServerTest.java
incubator/deft/trunk/awf-core/src/test/java/org/apache/awf/web/SystemTest.java
incubator/deft/trunk/awf-core/src/test/java/org/apache/awf/web/SystemTestHandlers.java
incubator/deft/trunk/awf-core/src/test/java/org/apache/awf/web/handler/
incubator/deft/trunk/awf-core/src/test/java/org/apache/awf/web/handler/RequestHandlerFactoryTest.java
incubator/deft/trunk/awf-core/src/test/java/org/apache/awf/web/handler/RequestHandlerTest.java
incubator/deft/trunk/awf-core/src/test/java/org/apache/awf/web/http/
incubator/deft/trunk/awf-core/src/test/java/org/apache/awf/web/http/HttpBufferedLexerTest.java
incubator/deft/trunk/awf-core/src/test/java/org/apache/awf/web/http/HttpExceptionTest.java
incubator/deft/trunk/awf-core/src/test/java/org/apache/awf/web/http/HttpProtocolTest.java
incubator/deft/trunk/awf-core/src/test/java/org/apache/awf/web/http/HttpRequestDispatcherTest.java
incubator/deft/trunk/awf-core/src/test/java/org/apache/awf/web/http/HttpRequestImplTest.java
incubator/deft/trunk/awf-core/src/test/java/org/apache/awf/web/http/HttpRequestParserTest.java
incubator/deft/trunk/awf-core/src/test/java/org/apache/awf/web/http/client/
incubator/deft/trunk/awf-core/src/test/java/org/apache/awf/web/http/client/AsynchronousHttpClientTest.java
incubator/deft/trunk/awf-core/src/test/java/org/apache/awf/web/http/client/RequestTest.java
incubator/deft/trunk/awf-core/src/test/java/org/apache/awf/web/http/protocol/
incubator/deft/trunk/awf-core/src/test/java/org/apache/awf/web/http/protocol/ContentTypeTest.java
incubator/deft/trunk/awf-core/src/test/java/org/apache/awf/web/http/protocol/HttpStatusTest.java
incubator/deft/trunk/awf-core/src/test/java/org/apache/awf/web/http/protocol/HttpVerbTest.java
incubator/deft/trunk/awf-core/src/test/resources/
incubator/deft/trunk/awf-core/src/test/resources/apache_feather.png (with props)
incubator/deft/trunk/awf-core/src/test/resources/f4_impact.jpg (with props)
incubator/deft/trunk/awf-core/src/test/resources/test.txt
Modified:
incubator/deft/trunk/ (props changed)
Propchange: incubator/deft/trunk/
------------------------------------------------------------------------------
--- ignore (added)
+++ ignore Mon Feb 13 23:07:46 2012
@@ -0,0 +1,6 @@
+.classpath
+.settings
+.tmp
+.class
+.project
+
Added: incubator/deft/trunk/awf-core/CHANGES.txt
URL: http://svn.apache.org/viewvc/incubator/deft/trunk/awf-core/CHANGES.txt?rev=1243729&view=auto
==============================================================================
--- incubator/deft/trunk/awf-core/CHANGES.txt (added)
+++ incubator/deft/trunk/awf-core/CHANGES.txt Mon Feb 13 23:07:46 2012
@@ -0,0 +1,31 @@
+#############################################################################
+# 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.
+#############################################################################
+0.4.0
+ * Renaming org.apache.web.http.client.{HttpRequest.java -> Request.java} and
+ org.apache.web.http.client.{HttpResponse.java -> Response.java}.
+ * o.d.io.timeout.Timeout.newKeepAliveTimeout now requires that you specifies an ioloop explicitly (previously the
+ global singleton was used implicitly.)
+ * AsynchronousSocket no longer accepts SelectableChannel. Instead SocketChannel is used.
+ * AsynchronousSocket's read methods (readUntil and readBytes) returns raw byte[] instead of String. (DEFT-115)
+ * RequestHandler implementations are now configured through annotation (DEFT-100).
+ * Package renamed "org.apache.deft", from "org.deftserver" (DEFT-157).
+
+0.1.1
+ * #56 (Support for all response status codes)
+ * #55 (Don't set Etag response header if payload is empty)
+ * #54 (Make parsing of HttpRequest more robust)
+ * #61 (Wrong 'Cache-Control' header in SCH)
Added: incubator/deft/trunk/awf-core/LICENSE.txt
URL: http://svn.apache.org/viewvc/incubator/deft/trunk/awf-core/LICENSE.txt?rev=1243729&view=auto
==============================================================================
--- incubator/deft/trunk/awf-core/LICENSE.txt (added)
+++ incubator/deft/trunk/awf-core/LICENSE.txt Mon Feb 13 23:07:46 2012
@@ -0,0 +1,446 @@
+
+ Apache License
+ Version 2.0, January 2004
+ http://www.apache.org/licenses/
+
+ TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION
+
+ 1. Definitions.
+
+ "License" shall mean the terms and conditions for use, reproduction,
+ and distribution as defined by Sections 1 through 9 of this document.
+
+ "Licensor" shall mean the copyright owner or entity authorized by
+ the copyright owner that is granting the License.
+
+ "Legal Entity" shall mean the union of the acting entity and all
+ other entities that control, are controlled by, or are under common
+ control with that entity. For the purposes of this definition,
+ "control" means (i) the power, direct or indirect, to cause the
+ direction or management of such entity, whether by contract or
+ otherwise, or (ii) ownership of fifty percent (50%) or more of the
+ outstanding shares, or (iii) beneficial ownership of such entity.
+
+ "You" (or "Your") shall mean an individual or Legal Entity
+ exercising permissions granted by this License.
+
+ "Source" form shall mean the preferred form for making modifications,
+ including but not limited to software source code, documentation
+ source, and configuration files.
+
+ "Object" form shall mean any form resulting from mechanical
+ transformation or translation of a Source form, including but
+ not limited to compiled object code, generated documentation,
+ and conversions to other media types.
+
+ "Work" shall mean the work of authorship, whether in Source or
+ Object form, made available under the License, as indicated by a
+ copyright notice that is included in or attached to the work
+ (an example is provided in the Appendix below).
+
+ "Derivative Works" shall mean any work, whether in Source or Object
+ form, that is based on (or derived from) the Work and for which the
+ editorial revisions, annotations, elaborations, or other modifications
+ represent, as a whole, an original work of authorship. For the purposes
+ of this License, Derivative Works shall not include works that remain
+ separable from, or merely link (or bind by name) to the interfaces of,
+ the Work and Derivative Works thereof.
+
+ "Contribution" shall mean any work of authorship, including
+ the original version of the Work and any modifications or additions
+ to that Work or Derivative Works thereof, that is intentionally
+ submitted to Licensor for inclusion in the Work by the copyright owner
+ or by an individual or Legal Entity authorized to submit on behalf of
+ the copyright owner. For the purposes of this definition, "submitted"
+ means any form of electronic, verbal, or written communication sent
+ to the Licensor or its representatives, including but not limited to
+ communication on electronic mailing lists, source code control systems,
+ and issue tracking systems that are managed by, or on behalf of, the
+ Licensor for the purpose of discussing and improving the Work, but
+ excluding communication that is conspicuously marked or otherwise
+ designated in writing by the copyright owner as "Not a Contribution."
+
+ "Contributor" shall mean Licensor and any individual or Legal Entity
+ on behalf of whom a Contribution has been received by Licensor and
+ subsequently incorporated within the Work.
+
+ 2. Grant of Copyright License. Subject to the terms and conditions of
+ this License, each Contributor hereby grants to You a perpetual,
+ worldwide, non-exclusive, no-charge, royalty-free, irrevocable
+ copyright license to reproduce, prepare Derivative Works of,
+ publicly display, publicly perform, sublicense, and distribute the
+ Work and such Derivative Works in Source or Object form.
+
+ 3. Grant of Patent License. Subject to the terms and conditions of
+ this License, each Contributor hereby grants to You a perpetual,
+ worldwide, non-exclusive, no-charge, royalty-free, irrevocable
+ (except as stated in this section) patent license to make, have made,
+ use, offer to sell, sell, import, and otherwise transfer the Work,
+ where such license applies only to those patent claims licensable
+ by such Contributor that are necessarily infringed by their
+ Contribution(s) alone or by combination of their Contribution(s)
+ with the Work to which such Contribution(s) was submitted. If You
+ institute patent litigation against any entity (including a
+ cross-claim or counterclaim in a lawsuit) alleging that the Work
+ or a Contribution incorporated within the Work constitutes direct
+ or contributory patent infringement, then any patent licenses
+ granted to You under this License for that Work shall terminate
+ as of the date such litigation is filed.
+
+ 4. Redistribution. You may reproduce and distribute copies of the
+ Work or Derivative Works thereof in any medium, with or without
+ modifications, and in Source or Object form, provided that You
+ meet the following conditions:
+
+ (a) You must give any other recipients of the Work or
+ Derivative Works a copy of this License; and
+
+ (b) You must cause any modified files to carry prominent notices
+ stating that You changed the files; and
+
+ (c) You must retain, in the Source form of any Derivative Works
+ that You distribute, all copyright, patent, trademark, and
+ attribution notices from the Source form of the Work,
+ excluding those notices that do not pertain to any part of
+ the Derivative Works; and
+
+ (d) If the Work includes a "NOTICE" text file as part of its
+ distribution, then any Derivative Works that You distribute must
+ include a readable copy of the attribution notices contained
+ within such NOTICE file, excluding those notices that do not
+ pertain to any part of the Derivative Works, in at least one
+ of the following places: within a NOTICE text file distributed
+ as part of the Derivative Works; within the Source form or
+ documentation, if provided along with the Derivative Works; or,
+ within a display generated by the Derivative Works, if and
+ wherever such third-party notices normally appear. The contents
+ of the NOTICE file are for informational purposes only and
+ do not modify the License. You may add Your own attribution
+ notices within Derivative Works that You distribute, alongside
+ or as an addendum to the NOTICE text from the Work, provided
+ that such additional attribution notices cannot be construed
+ as modifying the License.
+
+ You may add Your own copyright statement to Your modifications and
+ may provide additional or different license terms and conditions
+ for use, reproduction, or distribution of Your modifications, or
+ for any such Derivative Works as a whole, provided Your use,
+ reproduction, and distribution of the Work otherwise complies with
+ the conditions stated in this License.
+
+ 5. Submission of Contributions. Unless You explicitly state otherwise,
+ any Contribution intentionally submitted for inclusion in the Work
+ by You to the Licensor shall be under the terms and conditions of
+ this License, without any additional terms or conditions.
+ Notwithstanding the above, nothing herein shall supersede or modify
+ the terms of any separate license agreement you may have executed
+ with Licensor regarding such Contributions.
+
+ 6. Trademarks. This License does not grant permission to use the trade
+ names, trademarks, service marks, or product names of the Licensor,
+ except as required for reasonable and customary use in describing the
+ origin of the Work and reproducing the content of the NOTICE file.
+
+ 7. Disclaimer of Warranty. Unless required by applicable law or
+ agreed to in writing, Licensor provides the Work (and each
+ Contributor provides its Contributions) on an "AS IS" BASIS,
+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
+ implied, including, without limitation, any warranties or conditions
+ of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A
+ PARTICULAR PURPOSE. You are solely responsible for determining the
+ appropriateness of using or redistributing the Work and assume any
+ risks associated with Your exercise of permissions under this License.
+
+ 8. Limitation of Liability. In no event and under no legal theory,
+ whether in tort (including negligence), contract, or otherwise,
+ unless required by applicable law (such as deliberate and grossly
+ negligent acts) or agreed to in writing, shall any Contributor be
+ liable to You for damages, including any direct, indirect, special,
+ incidental, or consequential damages of any character arising as a
+ result of this License or out of the use or inability to use the
+ Work (including but not limited to damages for loss of goodwill,
+ work stoppage, computer failure or malfunction, or any and all
+ other commercial damages or losses), even if such Contributor
+ has been advised of the possibility of such damages.
+
+ 9. Accepting Warranty or Additional Liability. While redistributing
+ the Work or Derivative Works thereof, You may choose to offer,
+ and charge a fee for, acceptance of support, warranty, indemnity,
+ or other liability obligations and/or rights consistent with this
+ License. However, in accepting such obligations, You may act only
+ on Your own behalf and on Your sole responsibility, not on behalf
+ of any other Contributor, and only if You agree to indemnify,
+ defend, and hold each Contributor harmless for any liability
+ incurred by, or claims asserted against, such Contributor by reason
+ of your accepting any such warranty or additional liability.
+
+ END OF TERMS AND CONDITIONS
+
+ APPENDIX: How to apply the Apache License to your work.
+
+ To apply the Apache License to your work, attach the following
+ boilerplate notice, with the fields enclosed by brackets "[]"
+ replaced with your own identifying information. (Don't include
+ the brackets!) The text should be enclosed in the appropriate
+ comment syntax for the file format. We also recommend that a
+ file or class name and description of purpose be included on the
+ same "printed page" as the copyright notice for easier
+ identification within third-party archives.
+
+ Copyright [yyyy] [name of copyright owner]
+
+ Licensed 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.
+
+
+=========================================================================
+== SLF4J License ==
+=========================================================================
+
+SLF4J source code and binaries are distributed under the MIT license.
+Copyright (c) 2004-2008 QOS.ch All rights reserved. Permission is hereby
+granted, free of charge, to any person obtaining a copy of this software
+and associated documentation files (the "Software"), to deal in the
+Software without restriction, including without limitation the rights to
+use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+copies of the Software, and to permit persons to whom the Software is
+furnished to do so, subject to the following conditions: The above copyright
+notice and this permission notice shall be included in all copies or substantial
+portions of the Software.
+
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED,
+INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A
+PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT
+HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
+ OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE
+ SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+
+These terms are identical to those of the MIT License, also called the X License or
+the X11 License, which is a simple, permissive non-copyleft free software license.
+It is deemed compatible with virtually all types of licenses, commercial or otherwise.
+In particular, the Free Software Foundation has declared it compatible with GNU GPL.
+It is also known to be approved by the Apache Software Foundation as compatible with
+Apache Software License.
+
+
+=========================================================================
+== Logback License ==
+=========================================================================
+
+As of relase 0.9.18, logback source code and binaries are dual-licensed under
+EPL v1.0 and the LGPL 2.1, or more formally:
+
+Logback: the reliable, generic, fast and flexible logging framework.
+Copyright (C) 1999-2009, QOS.ch. All rights reserved. This program and the
+accompanying materials are dual-licensed under either the terms of the Eclipse
+Public License v1.0 as published by the Eclipse Foundation or
+(per the licensee's choosing) under the terms of the GNU Lesser General Public
+License version 2.1 as published by the Free Software Foundation.
+The EPL/LGPL dual-license serves several purposes. The LGPL license ensures continuity
+in terms of licensing of the logback project. Prior to version 0.9.18, logback was
+licensed (exlusively) under the LGPL v2.1. Moreover, since the EPL is deemed
+incompatible by the Free Software Foundation, the LGPL will allow various licensees, in
+particular software distributors who may be already bound by the terms of the GPL or
+the LGPL, to distribute our software.
+On the other hand, the EPL license will placate organizations which refuse certain
+restrictions imposed by the LGPL.
+Please note that logback-classic is intended to be used behind the SLF4J API, which is
+licensed under the MIT license.
+
+If you wish to make a significant contribution to the logback project, you are invited
+to file Contributor License Agreement. The purpose of this agreement is to formalize the
+terms of your contribution and to protect the project in case of litigation.
+Upon request, we may exempt open-source projects from LGPL and EPL's reciprocity clauses
+so that the said pojects can develop logback extensions under the license of their choice.
+Exemptions are granted on a case by case basis.
+
+
+=========================================================================
+== Guava License ==
+=========================================================================
+
+ Apache License
+ Version 2.0, January 2004
+ http://www.apache.org/licenses/
+
+ TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION
+
+ 1. Definitions.
+
+ "License" shall mean the terms and conditions for use, reproduction,
+ and distribution as defined by Sections 1 through 9 of this document.
+
+ "Licensor" shall mean the copyright owner or entity authorized by
+ the copyright owner that is granting the License.
+
+ "Legal Entity" shall mean the union of the acting entity and all
+ other entities that control, are controlled by, or are under common
+ control with that entity. For the purposes of this definition,
+ "control" means (i) the power, direct or indirect, to cause the
+ direction or management of such entity, whether by contract or
+ otherwise, or (ii) ownership of fifty percent (50%) or more of the
+ outstanding shares, or (iii) beneficial ownership of such entity.
+
+ "You" (or "Your") shall mean an individual or Legal Entity
+ exercising permissions granted by this License.
+
+ "Source" form shall mean the preferred form for making modifications,
+ including but not limited to software source code, documentation
+ source, and configuration files.
+
+ "Object" form shall mean any form resulting from mechanical
+ transformation or translation of a Source form, including but
+ not limited to compiled object code, generated documentation,
+ and conversions to other media types.
+
+ "Work" shall mean the work of authorship, whether in Source or
+ Object form, made available under the License, as indicated by a
+ copyright notice that is included in or attached to the work
+ (an example is provided in the Appendix below).
+
+ "Derivative Works" shall mean any work, whether in Source or Object
+ form, that is based on (or derived from) the Work and for which the
+ editorial revisions, annotations, elaborations, or other modifications
+ represent, as a whole, an original work of authorship. For the purposes
+ of this License, Derivative Works shall not include works that remain
+ separable from, or merely link (or bind by name) to the interfaces of,
+ the Work and Derivative Works thereof.
+
+ "Contribution" shall mean any work of authorship, including
+ the original version of the Work and any modifications or additions
+ to that Work or Derivative Works thereof, that is intentionally
+ submitted to Licensor for inclusion in the Work by the copyright owner
+ or by an individual or Legal Entity authorized to submit on behalf of
+ the copyright owner. For the purposes of this definition, "submitted"
+ means any form of electronic, verbal, or written communication sent
+ to the Licensor or its representatives, including but not limited to
+ communication on electronic mailing lists, source code control systems,
+ and issue tracking systems that are managed by, or on behalf of, the
+ Licensor for the purpose of discussing and improving the Work, but
+ excluding communication that is conspicuously marked or otherwise
+ designated in writing by the copyright owner as "Not a Contribution."
+
+ "Contributor" shall mean Licensor and any individual or Legal Entity
+ on behalf of whom a Contribution has been received by Licensor and
+ subsequently incorporated within the Work.
+
+ 2. Grant of Copyright License. Subject to the terms and conditions of
+ this License, each Contributor hereby grants to You a perpetual,
+ worldwide, non-exclusive, no-charge, royalty-free, irrevocable
+ copyright license to reproduce, prepare Derivative Works of,
+ publicly display, publicly perform, sublicense, and distribute the
+ Work and such Derivative Works in Source or Object form.
+
+ 3. Grant of Patent License. Subject to the terms and conditions of
+ this License, each Contributor hereby grants to You a perpetual,
+ worldwide, non-exclusive, no-charge, royalty-free, irrevocable
+ (except as stated in this section) patent license to make, have made,
+ use, offer to sell, sell, import, and otherwise transfer the Work,
+ where such license applies only to those patent claims licensable
+ by such Contributor that are necessarily infringed by their
+ Contribution(s) alone or by combination of their Contribution(s)
+ with the Work to which such Contribution(s) was submitted. If You
+ institute patent litigation against any entity (including a
+ cross-claim or counterclaim in a lawsuit) alleging that the Work
+ or a Contribution incorporated within the Work constitutes direct
+ or contributory patent infringement, then any patent licenses
+ granted to You under this License for that Work shall terminate
+ as of the date such litigation is filed.
+
+ 4. Redistribution. You may reproduce and distribute copies of the
+ Work or Derivative Works thereof in any medium, with or without
+ modifications, and in Source or Object form, provided that You
+ meet the following conditions:
+
+ (a) You must give any other recipients of the Work or
+ Derivative Works a copy of this License; and
+
+ (b) You must cause any modified files to carry prominent notices
+ stating that You changed the files; and
+
+ (c) You must retain, in the Source form of any Derivative Works
+ that You distribute, all copyright, patent, trademark, and
+ attribution notices from the Source form of the Work,
+ excluding those notices that do not pertain to any part of
+ the Derivative Works; and
+
+ (d) If the Work includes a "NOTICE" text file as part of its
+ distribution, then any Derivative Works that You distribute must
+ include a readable copy of the attribution notices contained
+ within such NOTICE file, excluding those notices that do not
+ pertain to any part of the Derivative Works, in at least one
+ of the following places: within a NOTICE text file distributed
+ as part of the Derivative Works; within the Source form or
+ documentation, if provided along with the Derivative Works; or,
+ within a display generated by the Derivative Works, if and
+ wherever such third-party notices normally appear. The contents
+ of the NOTICE file are for informational purposes only and
+ do not modify the License. You may add Your own attribution
+ notices within Derivative Works that You distribute, alongside
+ or as an addendum to the NOTICE text from the Work, provided
+ that such additional attribution notices cannot be construed
+ as modifying the License.
+
+ You may add Your own copyright statement to Your modifications and
+ may provide additional or different license terms and conditions
+ for use, reproduction, or distribution of Your modifications, or
+ for any such Derivative Works as a whole, provided Your use,
+ reproduction, and distribution of the Work otherwise complies with
+ the conditions stated in this License.
+
+ 5. Submission of Contributions. Unless You explicitly state otherwise,
+ any Contribution intentionally submitted for inclusion in the Work
+ by You to the Licensor shall be under the terms and conditions of
+ this License, without any additional terms or conditions.
+ Notwithstanding the above, nothing herein shall supersede or modify
+ the terms of any separate license agreement you may have executed
+ with Licensor regarding such Contributions.
+
+ 6. Trademarks. This License does not grant permission to use the trade
+ names, trademarks, service marks, or product names of the Licensor,
+ except as required for reasonable and customary use in describing the
+ origin of the Work and reproducing the content of the NOTICE file.
+
+ 7. Disclaimer of Warranty. Unless required by applicable law or
+ agreed to in writing, Licensor provides the Work (and each
+ Contributor provides its Contributions) on an "AS IS" BASIS,
+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
+ implied, including, without limitation, any warranties or conditions
+ of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A
+ PARTICULAR PURPOSE. You are solely responsible for determining the
+ appropriateness of using or redistributing the Work and assume any
+ risks associated with Your exercise of permissions under this License.
+
+ 8. Limitation of Liability. In no event and under no legal theory,
+ whether in tort (including negligence), contract, or otherwise,
+ unless required by applicable law (such as deliberate and grossly
+ negligent acts) or agreed to in writing, shall any Contributor be
+ liable to You for damages, including any direct, indirect, special,
+ incidental, or consequential damages of any character arising as a
+ result of this License or out of the use or inability to use the
+ Work (including but not limited to damages for loss of goodwill,
+ work stoppage, computer failure or malfunction, or any and all
+ other commercial damages or losses), even if such Contributor
+ has been advised of the possibility of such damages.
+
+ 9. Accepting Warranty or Additional Liability. While redistributing
+ the Work or Derivative Works thereof, You may choose to offer,
+ and charge a fee for, acceptance of support, warranty, indemnity,
+ or other liability obligations and/or rights consistent with this
+ License. However, in accepting such obligations, You may act only
+ on Your own behalf and on Your sole responsibility, not on behalf
+ of any other Contributor, and only if You agree to indemnify,
+ defend, and hold each Contributor harmless for any liability
+ incurred by, or claims asserted against, such Contributor by reason
+ of your accepting any such warranty or additional liability.
+
+ END OF TERMS AND CONDITIONS
Added: incubator/deft/trunk/awf-core/NEWS.txt
URL: http://svn.apache.org/viewvc/incubator/deft/trunk/awf-core/NEWS.txt?rev=1243729&view=auto
==============================================================================
--- incubator/deft/trunk/awf-core/NEWS.txt (added)
+++ incubator/deft/trunk/awf-core/NEWS.txt Mon Feb 13 23:07:46 2012
@@ -0,0 +1,93 @@
+0.4.0
+=====
+
+Features / Improvements
+-----------------------
+ - Asynchronous HTTP client has configurable redirect support (HTTP status code 301 & 302) (#118)
+ - Asynchronous HTTP client supports 'Transfer-Encoding: chunked' (#116)
+ - Multi-threaded web server support (#139)
+ - Experimental support for large static files. (Nb. will memory map the entire file) (#75)
+ - Improved documentation for the AsynchronousSocket (#152)
+ - Using the AsynchronousSocket for server operations is officially supported (#150)
+ - Bug fix. Non deterministic behaviour when multiple timeouts have exact same deadline (DEFT-156)
+ - AsynchronousSocket accepts SocketChannel instead of SelectableChannel (DEFT-162)
+ - Improved error handling in AsynchronousSocket (DEFT-154)
+ - Bug fix. NPE when using AsynchronousSocket.write (DEFT-155)
+ - Asynchronous HTTP client supports POST and PUT (DEFT-117)
+ - Support for HTTP Cookies (DEFT-52)
+ - Request handlers now configured through annotations (DEFT-100)
+
+Configuration
+-------------
+ - See org.apache.deft.example.DeftServerExample (or www.deftserver.org) for
+ configuration and usage hints.
+
+
+
+0.3.0
+=====
+
+Features
+--------
+ - Authentication support (#83)
+ - Header names are now case-insensitive (#48)
+ - Generic callbacks in IOLoop (#93)
+ - Bug fix. ConcurrentModificationException if a new timeout was added in a timeout callback (#89)
+ - Http HEAD support (#58)
+ - Bug fix. RequestHandler not found if query parameters is present. (#104)
+ - Periodic callbacks. Schedule a job to be executed by the IOLoop every nth ms. (#90)
+ - Bug Fix. Selector timeout tuning. (#108)
+ - Asynchronous socket to help third party developers. (#109)
+ - Asynchronous HTTP client (#97)
+ - IOLoop.addCallback is thread safe (#103)
+ - Bug fix. Proper 'keep-alive' management in web server component (#99)
+
+Configuration
+------------
+ - See org.deftserver.example.DeftServerExample (or www.deftserver.org) for
+ configuration and usage hints.
+
+
+
+0.2.0
+=====
+
+Features
+--------
+ - Asynchronous writes done right (#63).
+ - Support for third party libraries to work within Deft's IOLoop (#62)
+ (Thanks to github.com/williame and github.com/sris for inspiration and implementation details).
+ - Improved write performance (Using the fact that a java.nio socket write buffer is always writable as long
+ its space left in the write buffer, #74)
+ - Closed HTTP request premature in HttpResponse.finish() (#72)
+ - JMX monitoring (read only) for IOLoop (#68)
+ - Configurable knobs, e.g. keep-alive timeout, read/write buffer sizes. (#57, #67)
+ - java.nio.ByteBuffer reuse (byte[] allocation is expensive) (#77)
+ - Timeouts (JMX debuggable) (#80, #85)
+ - HTTP Post support (#50, #71)
+
+Configuration
+------------
+ - See org.deftserver.example.DeftServerExample (or www.deftserver.org) for
+ configuration and usage hints.
+
+
+
+0.1.0
+=====
+
+Features
+--------
+ - Date headers are always sent in http response (#29).
+ - Support for non-blocking, asynchronous requests (#11).
+ - Regular expressions (with capturing groups) in URL mapping (#10).
+ - Support for HTTP GET parameters (#35).
+ - Persistent connections ('Connection: Keep-Alive') (#19).
+ - Static resources (#21 and #28, thanks to github.com/williame for pointing in right direction).
+ - JMX api for monitoring 'keep-alive' connections.
+
+Configuration
+------------
+ - See org.deftserver.example.DeftServerExample (or www.deftserver.org) for
+ configuration and usage hints.
+
\ No newline at end of file
Added: incubator/deft/trunk/awf-core/NOTICE.txt
URL: http://svn.apache.org/viewvc/incubator/deft/trunk/awf-core/NOTICE.txt?rev=1243729&view=auto
==============================================================================
--- incubator/deft/trunk/awf-core/NOTICE.txt (added)
+++ incubator/deft/trunk/awf-core/NOTICE.txt Mon Feb 13 23:07:46 2012
@@ -0,0 +1,21 @@
+Deft web server
+
+Alternative collection types provided by guava-libraries (superset of the old Google Collections Library)
+http://code.google.com/p/guava-libraries/
+Copyright (C) 2007 Google Inc.
+
+Logging library (successor to the popular log4j project).
+http://logback.qos.ch/
+Copyright (C) 2010 QOS.ch
+
+Http client library used by unit tests.
+http://hc.apache.org/
+Copyright (C) 2005-2010 Apache Software Foundation
+
+javax.activation (using javax.activation.MimetypesFileTypeMap for mime-type header deduction)
+http://download.oracle.com/javase/6/docs/api/javax/activation/package-summary.html
+Copyright (C) 1993, 2010, Oracle and/or its affiliates.
+
+Asynchronous Http client library used by unit tests.
+https://github.com/AsyncHttpClient/async-http-client
+Copyright 2010 Ning Inc
\ No newline at end of file
Added: incubator/deft/trunk/awf-core/README.md
URL: http://svn.apache.org/viewvc/incubator/deft/trunk/awf-core/README.md?rev=1243729&view=auto
==============================================================================
--- incubator/deft/trunk/awf-core/README.md (added)
+++ incubator/deft/trunk/awf-core/README.md Mon Feb 13 23:07:46 2012
@@ -0,0 +1,18 @@
+Deft has been accepted to the ASF incubator (http://markmail.org/message/qkbl7djiqwg7eofo)
+Migration work (jira, wiki, vcs, mailing lists, accounts, cla) has started...
+
+# Deft
+Deft is a single threaded, asynchronous, event driven high performance web server running on the JVM.
+
+The Deft web server is an open source projected (licensed under [Apache version 2]). Deft was intitially inspired by [facebook/tornado]
+
+Source and issue tracker: [http://github.com/rschildmeijer/deft]
+
+Documentation: [http://www.deftserver.org]
+
+CI Server: [https://builds.apache.org/job/Deft/]
+
+[Apache version 2]: http://www.apache.org/licenses/LICENSE-2.0.html
+[facebook/tornado]: http://github.com/facebook/tornado
+[http://github.com/rschildmeijer/deft]: http://github.com/rschildmeijer/deft
+[http://www.deftserver.org]: http://www.deftserver.org
Added: incubator/deft/trunk/awf-core/pom.xml
URL: http://svn.apache.org/viewvc/incubator/deft/trunk/awf-core/pom.xml?rev=1243729&view=auto
==============================================================================
--- incubator/deft/trunk/awf-core/pom.xml (added)
+++ incubator/deft/trunk/awf-core/pom.xml Mon Feb 13 23:07:46 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/trunk/awf-core/src/main/assembly/awf-binary-with-deps.xml
URL: http://svn.apache.org/viewvc/incubator/deft/trunk/awf-core/src/main/assembly/awf-binary-with-deps.xml?rev=1243729&view=auto
==============================================================================
--- incubator/deft/trunk/awf-core/src/main/assembly/awf-binary-with-deps.xml (added)
+++ incubator/deft/trunk/awf-core/src/main/assembly/awf-binary-with-deps.xml Mon Feb 13 23:07:46 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/trunk/awf-core/src/main/assembly/awf-binary.xml
URL: http://svn.apache.org/viewvc/incubator/deft/trunk/awf-core/src/main/assembly/awf-binary.xml?rev=1243729&view=auto
==============================================================================
--- incubator/deft/trunk/awf-core/src/main/assembly/awf-binary.xml (added)
+++ incubator/deft/trunk/awf-core/src/main/assembly/awf-binary.xml Mon Feb 13 23:07:46 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/trunk/awf-core/src/main/assembly/awf-src.xml
URL: http://svn.apache.org/viewvc/incubator/deft/trunk/awf-core/src/main/assembly/awf-src.xml?rev=1243729&view=auto
==============================================================================
--- incubator/deft/trunk/awf-core/src/main/assembly/awf-src.xml (added)
+++ incubator/deft/trunk/awf-core/src/main/assembly/awf-src.xml Mon Feb 13 23:07:46 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/trunk/awf-core/src/main/java/org/apache/awf/annotation/Asynchronous.java
URL: http://svn.apache.org/viewvc/incubator/deft/trunk/awf-core/src/main/java/org/apache/awf/annotation/Asynchronous.java?rev=1243729&view=auto
==============================================================================
--- incubator/deft/trunk/awf-core/src/main/java/org/apache/awf/annotation/Asynchronous.java (added)
+++ incubator/deft/trunk/awf-core/src/main/java/org/apache/awf/annotation/Asynchronous.java Mon Feb 13 23:07:46 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/trunk/awf-core/src/main/java/org/apache/awf/annotation/Authenticated.java
URL: http://svn.apache.org/viewvc/incubator/deft/trunk/awf-core/src/main/java/org/apache/awf/annotation/Authenticated.java?rev=1243729&view=auto
==============================================================================
--- incubator/deft/trunk/awf-core/src/main/java/org/apache/awf/annotation/Authenticated.java (added)
+++ incubator/deft/trunk/awf-core/src/main/java/org/apache/awf/annotation/Authenticated.java Mon Feb 13 23:07:46 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/trunk/awf-core/src/main/java/org/apache/awf/annotation/Path.java
URL: http://svn.apache.org/viewvc/incubator/deft/trunk/awf-core/src/main/java/org/apache/awf/annotation/Path.java?rev=1243729&view=auto
==============================================================================
--- incubator/deft/trunk/awf-core/src/main/java/org/apache/awf/annotation/Path.java (added)
+++ incubator/deft/trunk/awf-core/src/main/java/org/apache/awf/annotation/Path.java Mon Feb 13 23:07:46 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>@Path("/images/")</code>
+ * </p>
+ * <p>
+ * Values are a combination of paths and regular expressions as understood by
+ * {@link Pattern}. For example:
+ * </p>
+ * <ul>
+ * <li><code>@Path("/path/([\\w]+)")</code> matches any word character after
+ * the path such as "/path/123", "/path/abc" or "/path/12ab".
+ * <li><code>@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/trunk/awf-core/src/main/java/org/apache/awf/configuration/AnnotationsScanner.java
URL: http://svn.apache.org/viewvc/incubator/deft/trunk/awf-core/src/main/java/org/apache/awf/configuration/AnnotationsScanner.java?rev=1243729&view=auto
==============================================================================
--- incubator/deft/trunk/awf-core/src/main/java/org/apache/awf/configuration/AnnotationsScanner.java (added)
+++ incubator/deft/trunk/awf-core/src/main/java/org/apache/awf/configuration/AnnotationsScanner.java Mon Feb 13 23:07:46 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<String, RequestHandler></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/trunk/awf-core/src/main/java/org/apache/awf/configuration/Configuration.java
URL: http://svn.apache.org/viewvc/incubator/deft/trunk/awf-core/src/main/java/org/apache/awf/configuration/Configuration.java?rev=1243729&view=auto
==============================================================================
--- incubator/deft/trunk/awf-core/src/main/java/org/apache/awf/configuration/Configuration.java (added)
+++ incubator/deft/trunk/awf-core/src/main/java/org/apache/awf/configuration/Configuration.java Mon Feb 13 23:07:46 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;
+ }
+}