[maven-scm] copy for tag wink-1.0-incubating
git-svn-id: https://svn.apache.org/repos/asf/incubator/wink/tags/wink-1.0-incubating@832289 13f79535-47bb-0310-9956-ffa450edef68
diff --git a/LICENSE b/LICENSE
index 8c97405..57bc88a 100644
--- a/LICENSE
+++ b/LICENSE
@@ -200,507 +200,3 @@
See the License for the specific language governing permissions and
limitations under the License.
-================================================================================
-
-APACHE WINK SUBCOMPONENTS:
-
-Apache Wink includes a number of components and libraries with separate
-copyright notices and license terms. Your use of those components are
-subject to the terms and conditions of the following licenses.
-
---------------------------------------------------------------------------------
-JSON (http://json.org/) org.json:json:20080701
-
-Copyright (c) 2002 JSON.org
-
- 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 shall be used for Good, not Evil.
-
- 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.
-
---------------------------------------------------------------------------------
-JSR 311 API (https://jsr311.dev.java.net/) javax.ws.rs:jsr311-api:jar:1.0:compile
-JAXB Reference Implementation project (https://jaxb.dev.java.net/) javax.xml.bind:jaxb-api:jar:2.1:compile
-Sun JAXB Reference Implementation Runtime com.sun.xml.bind:jaxb-impl:jar:2.1.4:compile
-JavaBeans Activation Framework (http://java.sun.com/javase/technologies/desktop/javabeans/jaf/) javax.activation:activation:1.1:compile
-
- COMMON DEVELOPMENT AND DISTRIBUTION LICENSE (CDDL) Version 1.0
-
- 1. Definitions.
-
- 1.1. "Contributor" means each individual or entity that
- creates or contributes to the creation of Modifications.
-
- 1.2. "Contributor Version" means the combination of the
- Original Software, prior Modifications used by a
- Contributor (if any), and the Modifications made by that
- particular Contributor.
-
- 1.3. "Covered Software" means (a) the Original Software, or
- (b) Modifications, or (c) the combination of files
- containing Original Software with files containing
- Modifications, in each case including portions thereof.
-
- 1.4. "Executable" means the Covered Software in any form
- other than Source Code.
-
- 1.5. "Initial Developer" means the individual or entity
- that first makes Original Software available under this
- License.
-
- 1.6. "Larger Work" means a work which combines Covered
- Software or portions thereof with code not governed by the
- terms of this License.
-
- 1.7. "License" means this document.
-
- 1.8. "Licensable" means having the right to grant, to the
- maximum extent possible, whether at the time of the initial
- grant or subsequently acquired, any and all of the rights
- conveyed herein.
-
- 1.9. "Modifications" means the Source Code and Executable
- form of any of the following:
-
- A. Any file that results from an addition to,
- deletion from or modification of the contents of a
- file containing Original Software or previous
- Modifications;
-
- B. Any new file that contains any part of the
- Original Software or previous Modification; or
-
- C. Any new file that is contributed or otherwise made
- available under the terms of this License.
-
- 1.10. "Original Software" means the Source Code and
- Executable form of computer software code that is
- originally released under this License.
-
- 1.11. "Patent Claims" means any patent claim(s), now owned
- or hereafter acquired, including without limitation,
- method, process, and apparatus claims, in any patent
- Licensable by grantor.
-
- 1.12. "Source Code" means (a) the common form of computer
- software code in which modifications are made and (b)
- associated documentation included in or with such code.
-
- 1.13. "You" (or "Your") means an individual or a legal
- entity exercising rights under, and complying with all of
- the terms of, this License. For legal entities, "You"
- includes any entity which controls, is controlled by, or is
- under common control with You. For purposes of this
- definition, "control" means (a) the power, direct or
- indirect, to cause the direction or management of such
- entity, whether by contract or otherwise, or (b) ownership
- of more than fifty percent (50%) of the outstanding shares
- or beneficial ownership of such entity.
-
- 2. License Grants.
-
- 2.1. The Initial Developer Grant.
-
- Conditioned upon Your compliance with Section 3.1 below and
- subject to third party intellectual property claims, the
- Initial Developer hereby grants You a world-wide,
- royalty-free, non-exclusive license:
-
- (a) under intellectual property rights (other than
- patent or trademark) Licensable by Initial Developer,
- to use, reproduce, modify, display, perform,
- sublicense and distribute the Original Software (or
- portions thereof), with or without Modifications,
- and/or as part of a Larger Work; and
-
- (b) under Patent Claims infringed by the making,
- using or selling of Original Software, to make, have
- made, use, practice, sell, and offer for sale, and/or
- otherwise dispose of the Original Software (or
- portions thereof).
-
- (c) The licenses granted in Sections 2.1(a) and (b)
- are effective on the date Initial Developer first
- distributes or otherwise makes the Original Software
- available to a third party under the terms of this
- License.
-
- (d) Notwithstanding Section 2.1(b) above, no patent
- license is granted: (1) for code that You delete from
- the Original Software, or (2) for infringements
- caused by: (i) the modification of the Original
- Software, or (ii) the combination of the Original
- Software with other software or devices.
-
- 2.2. Contributor Grant.
-
- Conditioned upon Your compliance with Section 3.1 below and
- subject to third party intellectual property claims, each
- Contributor hereby grants You a world-wide, royalty-free,
- non-exclusive license:
-
- (a) under intellectual property rights (other than
- patent or trademark) Licensable by Contributor to
- use, reproduce, modify, display, perform, sublicense
- and distribute the Modifications created by such
- Contributor (or portions thereof), either on an
- unmodified basis, with other Modifications, as
- Covered Software and/or as part of a Larger Work; and
-
- (b) under Patent Claims infringed by the making,
- using, or selling of Modifications made by that
- Contributor either alone and/or in combination with
- its Contributor Version (or portions of such
- combination), to make, use, sell, offer for sale,
- have made, and/or otherwise dispose of: (1)
- Modifications made by that Contributor (or portions
- thereof); and (2) the combination of Modifications
- made by that Contributor with its Contributor Version
- (or portions of such combination).
-
- (c) The licenses granted in Sections 2.2(a) and
- 2.2(b) are effective on the date Contributor first
- distributes or otherwise makes the Modifications
- available to a third party.
-
- (d) Notwithstanding Section 2.2(b) above, no patent
- license is granted: (1) for any code that Contributor
- has deleted from the Contributor Version; (2) for
- infringements caused by: (i) third party
- modifications of Contributor Version, or (ii) the
- combination of Modifications made by that Contributor
- with other software (except as part of the
- Contributor Version) or other devices; or (3) under
- Patent Claims infringed by Covered Software in the
- absence of Modifications made by that Contributor.
-
- 3. Distribution Obligations.
-
- 3.1. Availability of Source Code.
-
- Any Covered Software that You distribute or otherwise make
- available in Executable form must also be made available in
- Source Code form and that Source Code form must be
- distributed only under the terms of this License. You must
- include a copy of this License with every copy of the
- Source Code form of the Covered Software You distribute or
- otherwise make available. You must inform recipients of any
- such Covered Software in Executable form as to how they can
- obtain such Covered Software in Source Code form in a
- reasonable manner on or through a medium customarily used
- for software exchange.
-
- 3.2. Modifications.
-
- The Modifications that You create or to which You
- contribute are governed by the terms of this License. You
- represent that You believe Your Modifications are Your
- original creation(s) and/or You have sufficient rights to
- grant the rights conveyed by this License.
-
- 3.3. Required Notices.
-
- You must include a notice in each of Your Modifications
- that identifies You as the Contributor of the Modification.
- You may not remove or alter any copyright, patent or
- trademark notices contained within the Covered Software, or
- any notices of licensing or any descriptive text giving
- attribution to any Contributor or the Initial Developer.
-
- 3.4. Application of Additional Terms.
-
- You may not offer or impose any terms on any Covered
- Software in Source Code form that alters or restricts the
- applicable version of this License or the recipients'
- rights hereunder. You may choose to offer, and to charge a
- fee for, warranty, support, indemnity or liability
- obligations to one or more recipients of Covered Software.
- However, you may do so only on Your own behalf, and not on
- behalf of the Initial Developer or any Contributor. You
- must make it absolutely clear that any such warranty,
- support, indemnity or liability obligation is offered by
- You alone, and You hereby agree to indemnify the Initial
- Developer and every Contributor for any liability incurred
- by the Initial Developer or such Contributor as a result of
- warranty, support, indemnity or liability terms You offer.
-
- 3.5. Distribution of Executable Versions.
-
- You may distribute the Executable form of the Covered
- Software under the terms of this License or under the terms
- of a license of Your choice, which may contain terms
- different from this License, provided that You are in
- compliance with the terms of this License and that the
- license for the Executable form does not attempt to limit
- or alter the recipient's rights in the Source Code form
- from the rights set forth in this License. If You
- distribute the Covered Software in Executable form under a
- different license, You must make it absolutely clear that
- any terms which differ from this License are offered by You
- alone, not by the Initial Developer or Contributor. You
- hereby agree to indemnify the Initial Developer and every
- Contributor for any liability incurred by the Initial
- Developer or such Contributor as a result of any such terms
- You offer.
-
- 3.6. Larger Works.
-
- You may create a Larger Work by combining Covered Software
- with other code not governed by the terms of this License
- and distribute the Larger Work as a single product. In such
- a case, You must make sure the requirements of this License
- are fulfilled for the Covered Software.
-
- 4. Versions of the License.
-
- 4.1. New Versions.
-
- Sun Microsystems, Inc. is the initial license steward and
- may publish revised and/or new versions of this License
- from time to time. Each version will be given a
- distinguishing version number. Except as provided in
- Section 4.3, no one other than the license steward has the
- right to modify this License.
-
- 4.2. Effect of New Versions.
-
- You may always continue to use, distribute or otherwise
- make the Covered Software available under the terms of the
- version of the License under which You originally received
- the Covered Software. If the Initial Developer includes a
- notice in the Original Software prohibiting it from being
- distributed or otherwise made available under any
- subsequent version of the License, You must distribute and
- make the Covered Software available under the terms of the
- version of the License under which You originally received
- the Covered Software. Otherwise, You may also choose to
- use, distribute or otherwise make the Covered Software
- available under the terms of any subsequent version of the
- License published by the license steward.
-
- 4.3. Modified Versions.
-
- When You are an Initial Developer and You want to create a
- new license for Your Original Software, You may create and
- use a modified version of this License if You: (a) rename
- the license and remove any references to the name of the
- license steward (except to note that the license differs
- from this License); and (b) otherwise make it clear that
- the license contains terms which differ from this License.
-
- 5. DISCLAIMER OF WARRANTY.
-
- COVERED SOFTWARE IS PROVIDED UNDER THIS LICENSE ON AN "AS IS"
- BASIS, WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED,
- INCLUDING, WITHOUT LIMITATION, WARRANTIES THAT THE COVERED
- SOFTWARE IS FREE OF DEFECTS, MERCHANTABLE, FIT FOR A PARTICULAR
- PURPOSE OR NON-INFRINGING. THE ENTIRE RISK AS TO THE QUALITY AND
- PERFORMANCE OF THE COVERED SOFTWARE IS WITH YOU. SHOULD ANY
- COVERED SOFTWARE PROVE DEFECTIVE IN ANY RESPECT, YOU (NOT THE
- INITIAL DEVELOPER OR ANY OTHER CONTRIBUTOR) ASSUME THE COST OF
- ANY NECESSARY SERVICING, REPAIR OR CORRECTION. THIS DISCLAIMER OF
- WARRANTY CONSTITUTES AN ESSENTIAL PART OF THIS LICENSE. NO USE OF
- ANY COVERED SOFTWARE IS AUTHORIZED HEREUNDER EXCEPT UNDER THIS
- DISCLAIMER.
-
- 6. TERMINATION.
-
- 6.1. This License and the rights granted hereunder will
- terminate automatically if You fail to comply with terms
- herein and fail to cure such breach within 30 days of
- becoming aware of the breach. Provisions which, by their
- nature, must remain in effect beyond the termination of
- this License shall survive.
-
- 6.2. If You assert a patent infringement claim (excluding
- declaratory judgment actions) against Initial Developer or
- a Contributor (the Initial Developer or Contributor against
- whom You assert such claim is referred to as "Participant")
- alleging that the Participant Software (meaning the
- Contributor Version where the Participant is a Contributor
- or the Original Software where the Participant is the
- Initial Developer) directly or indirectly infringes any
- patent, then any and all rights granted directly or
- indirectly to You by such Participant, the Initial
- Developer (if the Initial Developer is not the Participant)
- and all Contributors under Sections 2.1 and/or 2.2 of this
- License shall, upon 60 days notice from Participant
- terminate prospectively and automatically at the expiration
- of such 60 day notice period, unless if within such 60 day
- period You withdraw Your claim with respect to the
- Participant Software against such Participant either
- unilaterally or pursuant to a written agreement with
- Participant.
-
- 6.3. In the event of termination under Sections 6.1 or 6.2
- above, all end user licenses that have been validly granted
- by You or any distributor hereunder prior to termination
- (excluding licenses granted to You by any distributor)
- shall survive termination.
-
- 7. LIMITATION OF LIABILITY.
-
- UNDER NO CIRCUMSTANCES AND UNDER NO LEGAL THEORY, WHETHER TORT
- (INCLUDING NEGLIGENCE), CONTRACT, OR OTHERWISE, SHALL YOU, THE
- INITIAL DEVELOPER, ANY OTHER CONTRIBUTOR, OR ANY DISTRIBUTOR OF
- COVERED SOFTWARE, OR ANY SUPPLIER OF ANY OF SUCH PARTIES, BE
- LIABLE TO ANY PERSON FOR ANY INDIRECT, SPECIAL, INCIDENTAL, OR
- CONSEQUENTIAL DAMAGES OF ANY CHARACTER INCLUDING, WITHOUT
- LIMITATION, DAMAGES FOR LOST PROFITS, LOSS OF GOODWILL, WORK
- STOPPAGE, COMPUTER FAILURE OR MALFUNCTION, OR ANY AND ALL OTHER
- COMMERCIAL DAMAGES OR LOSSES, EVEN IF SUCH PARTY SHALL HAVE BEEN
- INFORMED OF THE POSSIBILITY OF SUCH DAMAGES. THIS LIMITATION OF
- LIABILITY SHALL NOT APPLY TO LIABILITY FOR DEATH OR PERSONAL
- INJURY RESULTING FROM SUCH PARTY'S NEGLIGENCE TO THE EXTENT
- APPLICABLE LAW PROHIBITS SUCH LIMITATION. SOME JURISDICTIONS DO
- NOT ALLOW THE EXCLUSION OR LIMITATION OF INCIDENTAL OR
- CONSEQUENTIAL DAMAGES, SO THIS EXCLUSION AND LIMITATION MAY NOT
- APPLY TO YOU.
-
- 8. U.S. GOVERNMENT END USERS.
-
- The Covered Software is a "commercial item," as that term is
- defined in 48 C.F.R. 2.101 (Oct. 1995), consisting of "commercial
- computer software" (as that term is defined at 48 C.F.R. �
- 252.227-7014(a)(1)) and "commercial computer software
- documentation" as such terms are used in 48 C.F.R. 12.212 (Sept.
- 1995). Consistent with 48 C.F.R. 12.212 and 48 C.F.R. 227.7202-1
- through 227.7202-4 (June 1995), all U.S. Government End Users
- acquire Covered Software with only those rights set forth herein.
- This U.S. Government Rights clause is in lieu of, and supersedes,
- any other FAR, DFAR, or other clause or provision that addresses
- Government rights in computer software under this License.
-
- 9. MISCELLANEOUS.
-
- This License represents the complete agreement concerning subject
- matter hereof. If any provision of this License is held to be
- unenforceable, such provision shall be reformed only to the
- extent necessary to make it enforceable. This License shall be
- governed by the law of the jurisdiction specified in a notice
- contained within the Original Software (except to the extent
- applicable law, if any, provides otherwise), excluding such
- jurisdiction's conflict-of-law provisions. Any litigation
- relating to this License shall be subject to the jurisdiction of
- the courts located in the jurisdiction and venue specified in a
- notice contained within the Original Software, with the losing
- party responsible for costs, including, without limitation, court
- costs and reasonable attorneys' fees and expenses. The
- application of the United Nations Convention on Contracts for the
- International Sale of Goods is expressly excluded. Any law or
- regulation which provides that the language of a contract shall
- be construed against the drafter shall not apply to this License.
- You agree that You alone are responsible for compliance with the
- United States export administration regulations (and the export
- control laws and regulation of any other countries) when You use,
- distribute or otherwise make available any Covered Software.
-
- 10. RESPONSIBILITY FOR CLAIMS.
-
- As between Initial Developer and the Contributors, each party is
- responsible for claims and damages arising, directly or
- indirectly, out of its utilization of rights under this License
- and You agree to work with Initial Developer and Contributors to
- distribute such responsibility on an equitable basis. Nothing
- herein is intended or shall be deemed to constitute any admission
- of liability.
-
---------------------------------------------------------------------------------
-SLF4J (http://www.slf4j.org/) org.slf4j:slf4j-api:jar:1.5.8:runtime
-SLF4J (http://www.slf4j.org/) org.slf4j:slf4j-simple:jar:1.5.8:runtime
-
- 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.
-
---------------------------------------------------------------------------------
-htmlparser (http://about.validator.nu/htmlparser/) nu.validator.htmlparser:htmlparser:jar:1.0.5
-
-Copyright (c) 2005, 2006, 2007 Henri Sivonen
-Copyright (c) 2007-2008 Mozilla Foundation
-Portions of comments Copyright 2004-2007 Apple Computer, Inc., Mozilla
-Foundation, and Opera Software ASA.
-
-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.
-
---------------------------------------------------------------------------------
-Jaxen (http://jaxen.codehaus.org/) jaxen:jaxen:jar:1.1.1
-
-Copyright 2003-2006 The Werken Company. All Rights Reserved.
-
- Redistribution and use in source and binary forms, with or without
- modification, are permitted provided that the following conditions are
- met:
-
- * Redistributions of source code must retain the above copyright
- notice, this list of conditions and the following disclaimer.
-
- * Redistributions in binary form must reproduce the above copyright
- notice, this list of conditions and the following disclaimer in the
- documentation and/or other materials provided with the distribution.
-
- * Neither the name of the Jaxen Project nor the names of its
- contributors may be used to endorse or promote products derived
- from this software without specific prior written permission.
-
-THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS
-IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED
-TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A
-PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER
-OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
-EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
-PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
-PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
-LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
-NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
-SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
-
diff --git a/NOTICE b/NOTICE
index a5043c1..4e069ed 100644
--- a/NOTICE
+++ b/NOTICE
@@ -4,24 +4,3 @@
This product includes software developed at
The Apache Software Foundation (http://www.apache.org/).
-This product includes software developed by the JSON.org distributed under json license
-
-This product includes software, StAX API (http://stax.codehaus.org/) distributed under Apache-2.0 license
-
-This product includes software developed for the JAXB Reference Implementation project (https://jaxb.dev.java.net/) distributed under CDDL Version 1.0 license
-
-This product includes software, JSR-311 (https://jsr311.dev.java.net/) distributed under CDDL Version 1.0 license
-
-This product includes software, JavaBeans Activation Framework (http://java.sun.com/javase/technologies/desktop/javabeans/jaf/) distributed under CDDL Version 1.0 license
-
-This product includes software, SLF4J (http://www.slf4j.org/) distributed under slf4j license
-
-This product includes software, Spring (http://www.springsource.org/) distributed under Apache-2.0 license
-
-This product includes software, htmlparser (http://about.validator.nu/htmlparser/) distributed under MIT license
-
-This product includes software, Jaxen (http://jaxen.codehaus.org/) distributed under Jaxen license
-
-This product includes software, Jettison (http://jettison.codehaus.org/) distributed under Apache-2.0 license
-
-This product includes software, Woodstox (http://woodstox.codehaus.org/) distributed under Apache-2.0 license
diff --git a/wink-client-apache-httpclient/pom.xml b/wink-client-apache-httpclient/pom.xml
index 401c004..489a1e9 100644
--- a/wink-client-apache-httpclient/pom.xml
+++ b/wink-client-apache-httpclient/pom.xml
@@ -42,6 +42,16 @@
<groupId>org.apache.httpcomponents</groupId>
<artifactId>httpclient</artifactId>
<version>4.0</version>
+ <exclusions>
+ <exclusion>
+ <groupId>commons-logging</groupId>
+ <artifactId>commons-logging</artifactId>
+ </exclusion>
+ </exclusions>
+ </dependency>
+ <dependency>
+ <groupId>org.slf4j</groupId>
+ <artifactId>jcl-over-slf4j</artifactId>
</dependency>
<dependency>
<!--
diff --git a/wink-client-apache-httpclient/src/main/java/org/apache/wink/client/internal/handlers/ApacheHttpClientConnectionHandler.java b/wink-client-apache-httpclient/src/main/java/org/apache/wink/client/internal/handlers/ApacheHttpClientConnectionHandler.java
index a481707..56e659d 100644
--- a/wink-client-apache-httpclient/src/main/java/org/apache/wink/client/internal/handlers/ApacheHttpClientConnectionHandler.java
+++ b/wink-client-apache-httpclient/src/main/java/org/apache/wink/client/internal/handlers/ApacheHttpClientConnectionHandler.java
@@ -63,8 +63,9 @@
}
public ClientResponse handle(ClientRequest request, HandlerContext context) throws Exception {
+ HttpResponse response = null;
try {
- HttpResponse response = processRequest(request, context);
+ response = processRequest(request, context);
return processResponse(request, context, response);
} catch (Exception e) {
throw new RuntimeException(e);
@@ -174,12 +175,25 @@
return response;
}
- private ClientResponse createResponse(ClientRequest request, HttpResponse httpResponse) {
- ClientResponse response = new ClientResponseImpl();
+ private ClientResponse createResponse(ClientRequest request, final HttpResponse httpResponse) {
+ final ClientResponseImpl response = new ClientResponseImpl();
StatusLine statusLine = httpResponse.getStatusLine();
response.setStatusCode(statusLine.getStatusCode());
response.setMessage(statusLine.getReasonPhrase());
response.getAttributes().putAll(request.getAttributes());
+ response.setContentConsumer(new Runnable() {
+
+ public void run() {
+ HttpEntity entity = httpResponse.getEntity();
+ if (entity != null) {
+ try {
+ entity.consumeContent();
+ } catch (IOException e) {
+ throw new RuntimeException(e);
+ }
+ }
+ }
+ });
processResponseHeaders(response, httpResponse);
return response;
}
diff --git a/wink-client/src/main/java/org/apache/wink/client/ClientResponse.java b/wink-client/src/main/java/org/apache/wink/client/ClientResponse.java
index 5324156..4a4610a 100644
--- a/wink-client/src/main/java/org/apache/wink/client/ClientResponse.java
+++ b/wink-client/src/main/java/org/apache/wink/client/ClientResponse.java
@@ -107,4 +107,15 @@
* @param entity response entity to set
*/
public void setEntity(Object entity);
+
+ /**
+ * Consumes entity content. The real behavior of this method depends on the
+ * actual implementation. It's needed to call this method, if the calling
+ * code decides not to handle content.
+ * <p>
+ * There is no need to call this method, if getEntity() was invoked.
+ * <p>
+ * Calling this method multiple times will not cause an error.
+ */
+ public void consumeContent();
}
diff --git a/wink-client/src/main/java/org/apache/wink/client/internal/handlers/ClientResponseImpl.java b/wink-client/src/main/java/org/apache/wink/client/internal/handlers/ClientResponseImpl.java
index 997344b..b1f049a 100644
--- a/wink-client/src/main/java/org/apache/wink/client/internal/handlers/ClientResponseImpl.java
+++ b/wink-client/src/main/java/org/apache/wink/client/internal/handlers/ClientResponseImpl.java
@@ -39,9 +39,10 @@
public class ClientResponseImpl extends BaseRequestResponseImpl implements ClientResponse {
- private Object entity;
- private String message;
- private int status;
+ private Object entity;
+ private String message;
+ private int status;
+ private Runnable contentConsumer;
public <T> T getEntity(Class<T> type) {
return getEntity(type, type);
@@ -127,7 +128,22 @@
throw new ClientRuntimeException(e);
} finally {
RuntimeContextTLS.setRuntimeContext(saved);
+ consumeContent();
}
}
+ public void consumeContent() {
+ if (contentConsumer != null) {
+ contentConsumer.run();
+ }
+ }
+
+ public void setContentConsumer(Runnable contentConsumer) {
+ this.contentConsumer = contentConsumer;
+ }
+
+ public Runnable getContentConsumer() {
+ return contentConsumer;
+ }
+
}
diff --git a/wink-common/src/main/java/org/apache/wink/common/internal/providers/entity/xml/AbstractJAXBProvider.java b/wink-common/src/main/java/org/apache/wink/common/internal/providers/entity/xml/AbstractJAXBProvider.java
index 9ae91ab..ad922df 100644
--- a/wink-common/src/main/java/org/apache/wink/common/internal/providers/entity/xml/AbstractJAXBProvider.java
+++ b/wink-common/src/main/java/org/apache/wink/common/internal/providers/entity/xml/AbstractJAXBProvider.java
@@ -19,9 +19,16 @@
*******************************************************************************/
package org.apache.wink.common.internal.providers.entity.xml;
+import java.lang.ref.SoftReference;
import java.lang.reflect.Method;
-import java.lang.reflect.ParameterizedType;
import java.lang.reflect.Type;
+import java.security.AccessController;
+import java.security.PrivilegedActionException;
+import java.security.PrivilegedExceptionAction;
+import java.util.ArrayList;
+import java.util.Iterator;
+import java.util.List;
+import java.util.concurrent.ConcurrentHashMap;
import javax.ws.rs.WebApplicationException;
import javax.ws.rs.core.Context;
@@ -64,17 +71,106 @@
private static final SoftConcurrentMap<Class<?>, Boolean> jaxbIsXMLTypeCache =
new SoftConcurrentMap<Class<?>, Boolean>();
- protected final Unmarshaller getUnmarshaller(Class<?> type, MediaType mediaType)
- throws JAXBException {
- JAXBContext context = getContext(type, mediaType);
- return context.createUnmarshaller();
+ // the Pool code for the pooling of unmarshallers is from Axis2 Java
+ // http://svn.apache.org/repos/asf/webservices/axis2/trunk/java/modules/jaxws/src/org/apache/axis2/jaxws/message/databinding/JAXBUtils.java
+ private static Pool<JAXBContext, Marshaller> mpool =
+ new Pool<JAXBContext, Marshaller>();
+ private static Pool<JAXBContext, Unmarshaller> upool =
+ new Pool<JAXBContext, Unmarshaller>();
+
+/**
+ * Get the unmarshaller. You must call {@link #releaseJAXBUnmarshaller(JAXBContext, Unmarshaller) to put it back
+ * into the pool.
+ *
+ * @param context the current context
+ * @return Unmarshaller an unmarshaller for the context
+ * @throws JAXBException
+ */
+ protected final Unmarshaller getJAXBUnmarshaller(JAXBContext context) throws JAXBException {
+ Unmarshaller unm = upool.get(context);
+ if (unm == null) {
+ if (logger.isDebugEnabled()) {
+ logger.debug("Unmarshaller created [not in pool]");
+ }
+ unm = internalCreateUnmarshaller(context);
+ } else {
+ if (logger.isDebugEnabled()) {
+ logger.debug("Unmarshaller obtained [from pool]");
+ }
+ }
+ return unm;
}
- protected final Marshaller getMarshaller(Class<?> type, MediaType mediaType)
+ private static Unmarshaller internalCreateUnmarshaller(final JAXBContext context)
throws JAXBException {
- JAXBContext context = getContext(type, mediaType);
- Marshaller marshaller = context.createMarshaller();
- marshaller.setProperty(Marshaller.JAXB_ENCODING, ProviderUtils.getCharset(mediaType));
+ Unmarshaller unm;
+ try {
+ unm = AccessController.doPrivileged(new PrivilegedExceptionAction<Unmarshaller>() {
+ public Unmarshaller run() throws JAXBException {
+ return context.createUnmarshaller();
+ }
+ });
+ } catch (PrivilegedActionException e) {
+ throw (JAXBException)e.getCause();
+ }
+ return unm;
+ }
+
+ /**
+ * Release Unmarshaller. Do not call this method if an exception occurred
+ * while using the Unmarshaller. The object may be in an invalid state.
+ *
+ * @param context JAXBContext the context to key off from
+ * @param unmarshaller the unmarshaller to put back in the pool
+ */
+ protected void releaseJAXBUnmarshaller(JAXBContext context, Unmarshaller unmarshaller) {
+ if (logger.isDebugEnabled()) {
+ logger.debug("Unmarshaller placed back into pool");
+ }
+ unmarshaller.setAttachmentUnmarshaller(null);
+ upool.put(context, unmarshaller);
+ }
+
+ private static Marshaller internalCreateMarshaller(final JAXBContext context)
+ throws JAXBException {
+ Marshaller marshaller;
+ try {
+ marshaller = AccessController.doPrivileged(new PrivilegedExceptionAction<Marshaller>() {
+ public Marshaller run() throws JAXBException {
+ return context.createMarshaller();
+ }
+ });
+ } catch (PrivilegedActionException e) {
+ throw (JAXBException)e.getCause();
+ }
+ return marshaller;
+ }
+
+ /**
+ * Get JAXBMarshaller
+ *
+ * @param context JAXBContext
+ * @return Marshaller
+ * @throws JAXBException
+ */
+ protected Marshaller getJAXBMarshaller(Class<?> type, JAXBContext context, MediaType mediaType)
+ throws JAXBException {
+
+ Marshaller m = mpool.get(context);
+
+ if (m == null) {
+ if (logger.isDebugEnabled()) {
+ logger.debug("Marshaller created [not in pool]");
+ }
+ m = internalCreateMarshaller(context);
+ } else {
+ if (logger.isDebugEnabled()) {
+ logger.debug("Marshaller obtained [from pool]");
+ }
+ }
+
+ // will set to UTF-8 if there isn't a charset
+ m.setProperty(Marshaller.JAXB_ENCODING, ProviderUtils.getCharset(mediaType));
ContextResolver<XmlFormattingOptions> contextResolver =
providers.getContextResolver(XmlFormattingOptions.class, mediaType);
@@ -83,9 +179,26 @@
formatingOptions = contextResolver.getContext(type);
}
if (formatingOptions != null) {
- JAXBUtils.setXmlFormattingOptions(marshaller, formatingOptions);
+ JAXBUtils.setXmlFormattingOptions(m, formatingOptions);
}
- return marshaller;
+
+ return m;
+ }
+
+ /**
+ * Do not call this method if an exception occurred while using the
+ * Marshaller. The object may be in an invalid state.
+ *
+ * @param context JAXBContext
+ * @param marshaller Marshaller
+ */
+ protected void releaseJAXBMarshaller(JAXBContext context, Marshaller marshaller) {
+ if (logger.isDebugEnabled()) {
+ logger.debug("Marshaller placed back into pool");
+ }
+
+ marshaller.setAttachmentMarshaller(null);
+ mpool.put(context, marshaller);
}
protected boolean isSupportedMediaType(MediaType mediaType) {
@@ -121,10 +234,10 @@
}
public static boolean isJAXBElement(Class<?> type, Type genericType) {
- return (type == JAXBElement.class && genericType instanceof ParameterizedType);
+ return (type == JAXBElement.class);
}
- private JAXBContext getContext(Class<?> type, MediaType mediaType) throws JAXBException {
+ protected JAXBContext getContext(Class<?> type, MediaType mediaType) throws JAXBException {
ContextResolver<JAXBContext> contextResolver =
providers.getContextResolver(JAXBContext.class, mediaType);
JAXBContext context = null;
@@ -237,4 +350,107 @@
return new JAXBElement(new QName(typeStr), type, jaxbObject);
}
+ /**
+ * Pool a list of items for a specific key
+ *
+ * @param <K> Key
+ * @param <V> Pooled object
+ */
+ private static class Pool<K, V> {
+ private SoftReference<ConcurrentHashMap<K, ArrayList<V>>> softMap =
+ new SoftReference<ConcurrentHashMap<K, ArrayList<V>>>(
+ new ConcurrentHashMap<K, ArrayList<V>>());
+ /**
+ * Maximum number of JAXBContexts to store
+ */
+ private static int MAX_LOAD_FACTOR = 32;
+
+
+ /** The maps are freed up when a LOAD FACTOR is hit */
+ private static int MAX_LIST_FACTOR = 50;
+
+ /**
+ * @param key
+ * @return removed item from pool or null.
+ */
+ public V get(K key) {
+ List<V> values = getValues(key);
+ synchronized (values) {
+ if (values.size() > 0) {
+ V v = values.remove(values.size() - 1);
+ return v;
+ }
+ }
+ return null;
+ }
+
+ /**
+ * Add item back to pool
+ *
+ * @param key
+ * @param value
+ */
+ public void put(K key, V value) {
+ adjustSize();
+ List<V> values = getValues(key);
+ synchronized (values) {
+ if (values.size() < MAX_LIST_FACTOR) {
+ values.add(value);
+ }
+ }
+ }
+
+ /**
+ * Get or create a list of the values for the key
+ *
+ * @param key
+ * @return list of values (never null)
+ */
+ private List<V> getValues(K key) {
+ ConcurrentHashMap<K, ArrayList<V>> map = softMap.get();
+ ArrayList<V> values = null;
+ if (map != null) {
+ values = map.get(key);
+ if (values != null) {
+ return values;
+ }
+ }
+ synchronized (this) {
+ if (map != null) {
+ values = map.get(key);
+ }
+ if (values == null) {
+ if (map == null) {
+ map = new ConcurrentHashMap<K, ArrayList<V>>();
+ softMap = new SoftReference<ConcurrentHashMap<K, ArrayList<V>>>(map);
+ }
+ values = new ArrayList<V>();
+ map.put(key, values);
+ }
+ return values;
+ }
+ }
+
+ /**
+ * When the number of keys exceeds the maximum load, half of the entries
+ * are deleted. The assumption is that the JAXBContexts, UnMarshallers,
+ * Marshallers, etc. require a large footprint.
+ */
+ private void adjustSize() {
+ ConcurrentHashMap<K, ArrayList<V>> map = softMap.get();
+ if (map != null && map.size() > MAX_LOAD_FACTOR) {
+ // Remove every other Entry in the map.
+ Iterator it = map.entrySet().iterator();
+ boolean removeIt = false;
+ while (it.hasNext()) {
+ it.next();
+ if (removeIt) {
+ it.remove();
+ }
+ removeIt = !removeIt;
+ }
+ }
+ }
+ }
+
}
diff --git a/wink-common/src/main/java/org/apache/wink/common/internal/providers/entity/xml/JAXBElementXmlProvider.java b/wink-common/src/main/java/org/apache/wink/common/internal/providers/entity/xml/JAXBElementXmlProvider.java
index 0a88484..9db877f 100644
--- a/wink-common/src/main/java/org/apache/wink/common/internal/providers/entity/xml/JAXBElementXmlProvider.java
+++ b/wink-common/src/main/java/org/apache/wink/common/internal/providers/entity/xml/JAXBElementXmlProvider.java
@@ -37,6 +37,7 @@
import javax.ws.rs.ext.MessageBodyReader;
import javax.ws.rs.ext.MessageBodyWriter;
import javax.ws.rs.ext.Provider;
+import javax.xml.bind.JAXBContext;
import javax.xml.bind.JAXBElement;
import javax.xml.bind.JAXBException;
import javax.xml.bind.Marshaller;
@@ -77,7 +78,8 @@
Unmarshaller unmarshaller = null;
try {
- unmarshaller = getUnmarshaller(classToFill, mediaType);
+ JAXBContext context = getContext(classToFill, mediaType);
+ unmarshaller = getJAXBUnmarshaller(context);
String charset = ProviderUtils.getCharsetOrNull(mediaType);
if (charset == null) {
// use default
@@ -88,6 +90,8 @@
ModelUtils.unmarshal(unmarshaller, new InputStreamReader(entityStream, Charset
.forName(charset)));
}
+
+ releaseJAXBUnmarshaller(context, unmarshaller);
} catch (JAXBException e) {
logger.error(Messages.getMessage("jaxbFailToUnmarshal"), type.getName());
throw new WebApplicationException(e, Response.Status.BAD_REQUEST);
@@ -118,10 +122,14 @@
MultivaluedMap<String, Object> httpHeaders,
OutputStream entityStream) throws IOException, WebApplicationException {
try {
- Marshaller marshaller = getMarshaller(t.getDeclaredType(), mediaType);
+ Class<?> declaredType = t.getDeclaredType();
+ JAXBContext context = getContext(declaredType, mediaType);
+ Marshaller marshaller = getJAXBMarshaller(declaredType, context, mediaType);
// Use an OutputStream directly instead of a Writer for performance.
marshaller.marshal(t, entityStream);
+
+ releaseJAXBMarshaller(context, marshaller);
} catch (JAXBException e) {
logger.error(Messages.getMessage("jaxbFailToMarshal"), t.getName());
throw new WebApplicationException(e, Response.Status.INTERNAL_SERVER_ERROR);
diff --git a/wink-common/src/main/java/org/apache/wink/common/internal/providers/entity/xml/JAXBXmlProvider.java b/wink-common/src/main/java/org/apache/wink/common/internal/providers/entity/xml/JAXBXmlProvider.java
index acf82d4..125f234 100644
--- a/wink-common/src/main/java/org/apache/wink/common/internal/providers/entity/xml/JAXBXmlProvider.java
+++ b/wink-common/src/main/java/org/apache/wink/common/internal/providers/entity/xml/JAXBXmlProvider.java
@@ -34,6 +34,7 @@
import javax.ws.rs.ext.MessageBodyReader;
import javax.ws.rs.ext.MessageBodyWriter;
import javax.ws.rs.ext.Provider;
+import javax.xml.bind.JAXBContext;
import javax.xml.bind.JAXBException;
import javax.xml.bind.Marshaller;
import javax.xml.bind.Unmarshaller;
@@ -65,17 +66,18 @@
MediaType mediaType,
MultivaluedMap<String, String> httpHeaders,
InputStream entityStream) throws IOException, WebApplicationException {
-
Unmarshaller unmarshaller = null;
Object unmarshaledResource = null;
try {
- unmarshaller = getUnmarshaller(type, mediaType);
+ JAXBContext context = getContext(type, mediaType);
+ unmarshaller = getJAXBUnmarshaller(context);
if (type.isAnnotationPresent(XmlRootElement.class))
unmarshaledResource = unmarshaller.unmarshal(entityStream);
else
unmarshaledResource =
unmarshaller.unmarshal(new StreamSource(entityStream), type).getValue();
+ releaseJAXBUnmarshaller(context, unmarshaller);
} catch (JAXBException e) {
logger.error(Messages.getMessage("jaxbFailToUnmarshal"), type.getName());
throw new WebApplicationException(e, Response.Status.BAD_REQUEST);
@@ -106,11 +108,14 @@
MultivaluedMap<String, Object> httpHeaders,
OutputStream entityStream) throws IOException, WebApplicationException {
try {
- Marshaller marshaller = getMarshaller(type, mediaType);
+ JAXBContext context = getContext(type, mediaType);
+ Marshaller marshaller = getJAXBMarshaller(type, context, mediaType);
Object entityToMarshal = getEntityToMarshal(t, type);
// Use an OutputStream directly instead of a Writer for performance.
marshaller.marshal(entityToMarshal, entityStream);
+
+ releaseJAXBMarshaller(context, marshaller);
} catch (JAXBException e) {
logger.error(Messages.getMessage("jaxbFailToMarshal"), type.getName());
throw new WebApplicationException(e);
diff --git a/wink-itests/pom.xml b/wink-itests/pom.xml
index 8cc9964..6f3845c 100644
--- a/wink-itests/pom.xml
+++ b/wink-itests/pom.xml
@@ -22,7 +22,7 @@
<parent>
<artifactId>wink</artifactId>
<groupId>org.apache.wink</groupId>
- <version>0.2-incubating-SNAPSHOT</version>
+ <version>1.0-incubating-SNAPSHOT</version>
</parent>
<modelVersion>4.0.0</modelVersion>
<artifactId>wink-itests</artifactId>
diff --git a/wink-itests/wink-itest-logging/pom.xml b/wink-itests/wink-itest-logging/pom.xml
index f5e374c..789dc49 100644
--- a/wink-itests/wink-itest-logging/pom.xml
+++ b/wink-itests/wink-itest-logging/pom.xml
@@ -22,7 +22,7 @@
<parent>
<artifactId>wink-itests</artifactId>
<groupId>org.apache.wink</groupId>
- <version>0.2-incubating-SNAPSHOT</version>
+ <version>1.0-incubating-SNAPSHOT</version>
</parent>
<modelVersion>4.0.0</modelVersion>
<artifactId>wink-itest-logging</artifactId>
diff --git a/wink-itests/wink-itest-support/pom.xml b/wink-itests/wink-itest-support/pom.xml
index 4f1134d..a72a495 100644
--- a/wink-itests/wink-itest-support/pom.xml
+++ b/wink-itests/wink-itest-support/pom.xml
@@ -23,7 +23,7 @@
<parent>
<artifactId>wink-itests</artifactId>
<groupId>org.apache.wink</groupId>
- <version>0.2-incubating-SNAPSHOT</version>
+ <version>1.0-incubating-SNAPSHOT</version>
</parent>
<modelVersion>4.0.0</modelVersion>
<artifactId>wink-itest-support</artifactId>
diff --git a/wink-itests/wink-itest/pom.xml b/wink-itests/wink-itest/pom.xml
index c31235c..3209c51 100644
--- a/wink-itests/wink-itest/pom.xml
+++ b/wink-itests/wink-itest/pom.xml
@@ -22,7 +22,7 @@
<parent>
<artifactId>wink-itests</artifactId>
<groupId>org.apache.wink</groupId>
- <version>0.2-incubating-SNAPSHOT</version>
+ <version>1.0-incubating-SNAPSHOT</version>
</parent>
<modelVersion>4.0.0</modelVersion>
<artifactId>wink-itest</artifactId>
diff --git a/wink-itests/wink-itest/wink-example-helloworld/pom.xml b/wink-itests/wink-itest/wink-example-helloworld/pom.xml
index b113962..c947de2 100644
--- a/wink-itests/wink-itest/wink-example-helloworld/pom.xml
+++ b/wink-itests/wink-itest/wink-example-helloworld/pom.xml
@@ -22,7 +22,7 @@
<parent>
<artifactId>wink-itest</artifactId>
<groupId>org.apache.wink</groupId>
- <version>0.2-incubating-SNAPSHOT</version>
+ <version>1.0-incubating-SNAPSHOT</version>
</parent>
<modelVersion>4.0.0</modelVersion>
<groupId>org.apache.wink</groupId>
diff --git a/wink-itests/wink-itest/wink-itest-client/pom.xml b/wink-itests/wink-itest/wink-itest-client/pom.xml
index d573b28..c704daa 100644
--- a/wink-itests/wink-itest/wink-itest-client/pom.xml
+++ b/wink-itests/wink-itest/wink-itest-client/pom.xml
@@ -22,7 +22,7 @@
<parent>
<artifactId>wink-itest</artifactId>
<groupId>org.apache.wink</groupId>
- <version>0.2-incubating-SNAPSHOT</version>
+ <version>1.0-incubating-SNAPSHOT</version>
</parent>
<modelVersion>4.0.0</modelVersion>
<groupId>org.apache.wink</groupId>
diff --git a/wink-itests/wink-itest/wink-itest-context/pom.xml b/wink-itests/wink-itest/wink-itest-context/pom.xml
index 06edc16..bf6f8c3 100644
--- a/wink-itests/wink-itest/wink-itest-context/pom.xml
+++ b/wink-itests/wink-itest/wink-itest-context/pom.xml
@@ -22,7 +22,7 @@
<parent>
<artifactId>wink-itest</artifactId>
<groupId>org.apache.wink</groupId>
- <version>0.2-incubating-SNAPSHOT</version>
+ <version>1.0-incubating-SNAPSHOT</version>
</parent>
<modelVersion>4.0.0</modelVersion>
<artifactId>wink-itest-context</artifactId>
diff --git a/wink-itests/wink-itest/wink-itest-extra-providers/pom.xml b/wink-itests/wink-itest/wink-itest-extra-providers/pom.xml
index 150775f..faab5ee 100644
--- a/wink-itests/wink-itest/wink-itest-extra-providers/pom.xml
+++ b/wink-itests/wink-itest/wink-itest-extra-providers/pom.xml
@@ -20,7 +20,7 @@
<parent>
<artifactId>wink-itest</artifactId>
<groupId>org.apache.wink</groupId>
- <version>0.2-incubating-SNAPSHOT</version>
+ <version>1.0-incubating-SNAPSHOT</version>
</parent>
<modelVersion>4.0.0</modelVersion>
<groupId>org.apache.wink</groupId>
diff --git a/wink-itests/wink-itest/wink-itest-filter/pom.xml b/wink-itests/wink-itest/wink-itest-filter/pom.xml
index ab03c39..e0d7055 100644
--- a/wink-itests/wink-itest/wink-itest-filter/pom.xml
+++ b/wink-itests/wink-itest/wink-itest-filter/pom.xml
@@ -22,7 +22,7 @@
<parent>
<artifactId>wink-itest</artifactId>
<groupId>org.apache.wink</groupId>
- <version>0.2-incubating-SNAPSHOT</version>
+ <version>1.0-incubating-SNAPSHOT</version>
</parent>
<modelVersion>4.0.0</modelVersion>
<artifactId>wink-itest-filter</artifactId>
diff --git a/wink-itests/wink-itest/wink-itest-inheritance/pom.xml b/wink-itests/wink-itest/wink-itest-inheritance/pom.xml
index d984075..fc28d0e 100644
--- a/wink-itests/wink-itest/wink-itest-inheritance/pom.xml
+++ b/wink-itests/wink-itest/wink-itest-inheritance/pom.xml
@@ -21,7 +21,7 @@
<parent>
<artifactId>wink-itest</artifactId>
<groupId>org.apache.wink</groupId>
- <version>0.2-incubating-SNAPSHOT</version>
+ <version>1.0-incubating-SNAPSHOT</version>
</parent>
<modelVersion>4.0.0</modelVersion>
<artifactId>wink-itest-inheritance</artifactId>
diff --git a/wink-itests/wink-itest/wink-itest-params/pom.xml b/wink-itests/wink-itest/wink-itest-params/pom.xml
index 4af2368..430c8c5 100644
--- a/wink-itests/wink-itest/wink-itest-params/pom.xml
+++ b/wink-itests/wink-itest/wink-itest-params/pom.xml
@@ -21,7 +21,7 @@
<parent>
<artifactId>wink-itest</artifactId>
<groupId>org.apache.wink</groupId>
- <version>0.2-incubating-SNAPSHOT</version>
+ <version>1.0-incubating-SNAPSHOT</version>
</parent>
<modelVersion>4.0.0</modelVersion>
<artifactId>wink-itest-params</artifactId>
diff --git a/wink-itests/wink-itest/wink-itest-providers/pom.xml b/wink-itests/wink-itest/wink-itest-providers/pom.xml
index f9514ba..a15c9d3 100644
--- a/wink-itests/wink-itest/wink-itest-providers/pom.xml
+++ b/wink-itests/wink-itest/wink-itest-providers/pom.xml
@@ -22,7 +22,7 @@
<parent>
<artifactId>wink-itest</artifactId>
<groupId>org.apache.wink</groupId>
- <version>0.2-incubating-SNAPSHOT</version>
+ <version>1.0-incubating-SNAPSHOT</version>
</parent>
<modelVersion>4.0.0</modelVersion>
<artifactId>wink-itest-providers</artifactId>
diff --git a/wink-itests/wink-itest/wink-itest-targeting/pom.xml b/wink-itests/wink-itest/wink-itest-targeting/pom.xml
index e404d33..877ba69 100644
--- a/wink-itests/wink-itest/wink-itest-targeting/pom.xml
+++ b/wink-itests/wink-itest/wink-itest-targeting/pom.xml
@@ -21,7 +21,7 @@
<parent>
<artifactId>wink-itest</artifactId>
<groupId>org.apache.wink</groupId>
- <version>0.2-incubating-SNAPSHOT</version>
+ <version>1.0-incubating-SNAPSHOT</version>
</parent>
<modelVersion>4.0.0</modelVersion>
<artifactId>wink-itest-targeting</artifactId>
diff --git a/wink-itests/wink-itest/wink-itest-validation/pom.xml b/wink-itests/wink-itest/wink-itest-validation/pom.xml
index 72aba69..a6e954d 100644
--- a/wink-itests/wink-itest/wink-itest-validation/pom.xml
+++ b/wink-itests/wink-itest/wink-itest-validation/pom.xml
@@ -21,7 +21,7 @@
<parent>
<artifactId>wink-itest</artifactId>
<groupId>org.apache.wink</groupId>
- <version>0.2-incubating-SNAPSHOT</version>
+ <version>1.0-incubating-SNAPSHOT</version>
</parent>
<modelVersion>4.0.0</modelVersion>
<artifactId>wink-itest-validation</artifactId>
diff --git a/wink-providers/wink-abdera-provider/pom.xml b/wink-providers/wink-abdera-provider/pom.xml
index d67553b..cec9ffc 100644
--- a/wink-providers/wink-abdera-provider/pom.xml
+++ b/wink-providers/wink-abdera-provider/pom.xml
@@ -38,6 +38,7 @@
<artifactId>geronimo-activation_1.0.2_spec</artifactId>
</exclusion>
</exclusions>
+ <scope>provided</scope>
</dependency>
<dependency>
<groupId>org.apache.abdera</groupId>
@@ -60,7 +61,16 @@
<groupId>commons-httpclient</groupId>
<artifactId>commons-httpclient</artifactId>
</exclusion>
+ <exclusion>
+ <groupId>xml-apis</groupId>
+ <artifactId>xml-apis</artifactId>
+ </exclusion>
+ <exclusion>
+ <groupId>xerces</groupId>
+ <artifactId>xercesImpl</artifactId>
+ </exclusion>
</exclusions>
+ <scope>provided</scope>
</dependency>
<dependency>
<groupId>org.apache.wink</groupId>
@@ -99,4 +109,4 @@
<url>http://people.apache.org/repo/m2-incubating-repository/</url>
</repository>
</repositories>
-</project>
\ No newline at end of file
+</project>
diff --git a/wink-providers/wink-jettison-provider/pom.xml b/wink-providers/wink-jettison-provider/pom.xml
index 4e5ad00..d4bbf7f 100644
--- a/wink-providers/wink-jettison-provider/pom.xml
+++ b/wink-providers/wink-jettison-provider/pom.xml
@@ -28,6 +28,12 @@
<groupId>org.codehaus.jettison</groupId>
<artifactId>jettison</artifactId>
<version>1.1</version>
+ <exclusions>
+ <exclusion>
+ <groupId>stax</groupId>
+ <artifactId>stax-api</artifactId>
+ </exclusion>
+ </exclusions>
</dependency>
<dependency>
<groupId>org.apache.wink</groupId>
@@ -62,4 +68,4 @@
<scope>test</scope>
</dependency>
</dependencies>
-</project>
\ No newline at end of file
+</project>
diff --git a/wink-providers/wink-jettison-provider/src/main/java/org/apache/wink/providers/jettison/JettisonJAXBElementProvider.java b/wink-providers/wink-jettison-provider/src/main/java/org/apache/wink/providers/jettison/JettisonJAXBElementProvider.java
index 76c028c..ddc2691 100644
--- a/wink-providers/wink-jettison-provider/src/main/java/org/apache/wink/providers/jettison/JettisonJAXBElementProvider.java
+++ b/wink-providers/wink-jettison-provider/src/main/java/org/apache/wink/providers/jettison/JettisonJAXBElementProvider.java
@@ -38,6 +38,7 @@
import javax.ws.rs.ext.MessageBodyReader;
import javax.ws.rs.ext.MessageBodyWriter;
import javax.ws.rs.ext.Provider;
+import javax.xml.bind.JAXBContext;
import javax.xml.bind.JAXBElement;
import javax.xml.bind.JAXBException;
import javax.xml.bind.Marshaller;
@@ -99,7 +100,8 @@
} else {
this.outputConfiguration = new Configuration(new HashMap<String, String>());
}
- // see http://jira.codehaus.org/browse/JETTISON-74 . reading disabled for now
+ // see http://jira.codehaus.org/browse/JETTISON-74 . reading disabled
+ // for now
isReadable = false;
isWritable = true;
}
@@ -132,7 +134,8 @@
Unmarshaller unmarshaller = null;
try {
- unmarshaller = getUnmarshaller(classToFill, mediaType);
+ JAXBContext context = getContext(classToFill, mediaType);
+ unmarshaller = getJAXBUnmarshaller(context);
XMLStreamReader xsr = null;
if (isBadgerFishConventionUsed) {
@@ -177,7 +180,9 @@
MultivaluedMap<String, Object> httpHeaders,
OutputStream entityStream) throws IOException, WebApplicationException {
try {
- Marshaller marshaller = getMarshaller(t.getDeclaredType(), mediaType);
+ Class<?> declaredType = t.getDeclaredType();
+ JAXBContext context = getContext(declaredType, mediaType);
+ Marshaller marshaller = getJAXBMarshaller(declaredType, context, mediaType);
OutputStreamWriter writer =
new OutputStreamWriter(entityStream, ProviderUtils.getCharset(mediaType));
diff --git a/wink-providers/wink-jettison-provider/src/main/java/org/apache/wink/providers/jettison/JettisonJAXBProvider.java b/wink-providers/wink-jettison-provider/src/main/java/org/apache/wink/providers/jettison/JettisonJAXBProvider.java
index 791c3fd..7998b8f 100644
--- a/wink-providers/wink-jettison-provider/src/main/java/org/apache/wink/providers/jettison/JettisonJAXBProvider.java
+++ b/wink-providers/wink-jettison-provider/src/main/java/org/apache/wink/providers/jettison/JettisonJAXBProvider.java
@@ -37,6 +37,7 @@
import javax.ws.rs.ext.MessageBodyReader;
import javax.ws.rs.ext.MessageBodyWriter;
import javax.ws.rs.ext.Provider;
+import javax.xml.bind.JAXBContext;
import javax.xml.bind.JAXBException;
import javax.xml.bind.Marshaller;
import javax.xml.bind.Unmarshaller;
@@ -127,7 +128,8 @@
Unmarshaller unmarshaller = null;
Object unmarshaledResource = null;
try {
- unmarshaller = getUnmarshaller(type, mediaType);
+ JAXBContext context = getContext(type, mediaType);
+ unmarshaller = getJAXBUnmarshaller(context);
XMLStreamReader xsr = null;
if (type.isAnnotationPresent(XmlRootElement.class)) {
@@ -182,7 +184,8 @@
MultivaluedMap<String, Object> httpHeaders,
OutputStream entityStream) throws IOException, WebApplicationException {
try {
- Marshaller marshaller = getMarshaller(type, mediaType);
+ JAXBContext context = getContext(type, mediaType);
+ Marshaller marshaller = getJAXBMarshaller(type, context, mediaType);
Object entityToMarshal = getEntityToMarshal(t, type);
// Use an OutputStream directly instead of a Writer for performance.
diff --git a/wink-providers/wink-jettison-provider/src/test/java/org/apache/wink/providers/jettison/internal/JettisonJAXBBadgerFishTest.java b/wink-providers/wink-jettison-provider/src/test/java/org/apache/wink/providers/jettison/internal/JettisonJAXBBadgerFishTest.java
index 1ae86f8..d3915bf 100644
--- a/wink-providers/wink-jettison-provider/src/test/java/org/apache/wink/providers/jettison/internal/JettisonJAXBBadgerFishTest.java
+++ b/wink-providers/wink-jettison-provider/src/test/java/org/apache/wink/providers/jettison/internal/JettisonJAXBBadgerFishTest.java
@@ -206,62 +206,107 @@
}
public void testPostAtomEntry() throws Exception {
- MockHttpServletRequest request =
- MockRequestConstructor.constructMockRequest("POST",
- "/test/atomentry",
- "application/json");
- request.setContentType("application/json");
- request.setContent(ENTRY_JSON_POST.getBytes());
- MockHttpServletResponse response = invoke(request);
- assertEquals(200, response.getStatus());
+ try {
+ MockHttpServletRequest request =
+ MockRequestConstructor.constructMockRequest("POST",
+ "/test/atomentry",
+ "application/json");
+ request.setContentType("application/json");
+ request.setContent(ENTRY_JSON_POST.getBytes());
+ MockHttpServletResponse response = invoke(request);
+ assertEquals(200, response.getStatus());
- assertTrue(response.getContentAsString(), JSONUtils.equals(JSONUtils
- .objectForString(ENTRY_JSON_POST), JSONUtils.objectForString(response
- .getContentAsString())));
+ assertTrue(response.getContentAsString(), JSONUtils.equals(JSONUtils
+ .objectForString(ENTRY_JSON_POST), JSONUtils.objectForString(response
+ .getContentAsString())) || JSONUtils.equals(JSONUtils
+ .objectForString(ENTRY_JSON_POST2), JSONUtils.objectForString(response
+ .getContentAsString())));
+ } catch (Exception e) {
+ // the Jettison code differs due to a JAXB version implementation difference
+ MockHttpServletRequest request =
+ MockRequestConstructor.constructMockRequest("POST",
+ "/test/atomentry",
+ "application/json");
+ request.setContentType("application/json");
+ request.setContent(ENTRY_JSON_POST2.getBytes());
+
+ MockHttpServletResponse response = invoke(request);
+ assertEquals(200, response.getStatus());
+
+ assertTrue(response.getContentAsString(), JSONUtils.equals(JSONUtils
+ .objectForString(ENTRY_JSON_POST2), JSONUtils.objectForString(response
+ .getContentAsString())) || JSONUtils.equals(JSONUtils
+ .objectForString(ENTRY_JSON_POST3), JSONUtils.objectForString(response
+ .getContentAsString())));
+ }
}
public void testPostAtomEntryElement() throws Exception {
- MockHttpServletRequest request =
- MockRequestConstructor.constructMockRequest("POST",
- "/test/atomentryelement",
- "application/json");
- request.setContentType("application/json");
- request.setContent(ENTRY_JSON_POST.getBytes());
- MockHttpServletResponse response = invoke(request);
- assertEquals(200, response.getStatus());
- System.out.println(response.getContentAsString());
- System.out.println(ENTRY_JSON_POST);
- assertTrue(response.getContentAsString(), JSONUtils.equals(JSONUtils
- .objectForString(ENTRY_JSON_POST), JSONUtils.objectForString(response
- .getContentAsString())));
+ try {
+ MockHttpServletRequest request =
+ MockRequestConstructor.constructMockRequest("POST",
+ "/test/atomentryelement",
+ "application/json");
+ request.setContentType("application/json");
+ request.setContent(ENTRY_JSON_POST.getBytes());
+ MockHttpServletResponse response = invoke(request);
+ assertEquals(200, response.getStatus());
+ assertTrue(response.getContentAsString(), JSONUtils.equals(JSONUtils
+ .objectForString(ENTRY_JSON_POST), JSONUtils.objectForString(response
+ .getContentAsString())) || JSONUtils.equals(JSONUtils
+ .objectForString(ENTRY_JSON_POST2), JSONUtils.objectForString(response
+ .getContentAsString())));
+ } catch (Exception e) {
+ // the Jettison code differs due to a JAXB version implementation difference
+ MockHttpServletRequest request =
+ MockRequestConstructor.constructMockRequest("POST",
+ "/test/atomentryelement",
+ "application/json");
+ request.setContentType("application/json");
+ request.setContent(ENTRY_JSON_POST2.getBytes());
+ MockHttpServletResponse response = invoke(request);
+ assertEquals(200, response.getStatus());
+
+ assertTrue(response.getContentAsString(), JSONUtils.equals(JSONUtils
+ .objectForString(ENTRY_JSON_POST2), JSONUtils.objectForString(response
+ .getContentAsString())) || JSONUtils.equals(JSONUtils
+ .objectForString(ENTRY_JSON_POST3), JSONUtils.objectForString(response
+ .getContentAsString())));
+ }
}
- private static final String ENTRY_STR =
- "<entry xml:base=\"http://b216:8080/reporting/reports\" xmlns=\"http://www.w3.org/2005/Atom\">\n" + " <id>toptenvalidators</id>\n"
- + " <updated>@TIME@</updated>\n"
- + " <title type=\"text\" xml:lang=\"en\">top ten validators</title>\n"
- + " <published>@TIME@</published>\n"
- + " <link href=\"http://b216:8080/reporting/reports/toptenvalidators?alt=application/json\" type=\"application/json\" rel=\"alternate\"/>\n"
- + " <author>\n"
- + " <name>admin</name>\n"
- + " </author>\n"
- + " <category label=\"report definition\" scheme=\"urn:com:systinet:reporting:kind\" term=\"urn:com:systinet:reporting:kind:definition\"/>\n"
- + "</entry>\n";
+ private static final String ENTRY_STR =
+ "<entry xml:base=\"http://b216:8080/reporting/reports\" xmlns=\"http://www.w3.org/2005/Atom\">\n" + " <id>toptenvalidators</id>\n"
+ + " <updated>@TIME@</updated>\n"
+ + " <title type=\"text\" xml:lang=\"en\">top ten validators</title>\n"
+ + " <published>@TIME@</published>\n"
+ + " <link href=\"http://b216:8080/reporting/reports/toptenvalidators?alt=application/json\" type=\"application/json\" rel=\"alternate\"/>\n"
+ + " <author>\n"
+ + " <name>admin</name>\n"
+ + " </author>\n"
+ + " <category label=\"report definition\" scheme=\"urn:com:systinet:reporting:kind\" term=\"urn:com:systinet:reporting:kind:definition\"/>\n"
+ + "</entry>\n";
- private static String ENTRY_STR_JSON =
- "{\"entry\":{\"@xmlns\":{\"ns3\":\"http:\\/\\/www.w3.org\\/1999\\/xhtml\",\"ns2\":\"http:\\/\\/a9.com\\/-\\/spec\\/opensearch\\/1.1\\/\",\"$\":\"http:\\/\\/www.w3.org\\/2005\\/Atom\"},\"@xml:base\":\"http:\\/\\/b216:8080\\/reporting\\/reports\",\"id\":{\"$\":\"toptenvalidators\"},\"updated\":{\"$\":\"@TIME@\"},\"title\":{\"@type\":\"text\",\"@xml:lang\":\"en\",\"$\":\"top ten validators\"},\"published\":{\"$\":\"@TIME@\"},\"link\":{\"@href\":\"http:\\/\\/b216:8080\\/reporting\\/reports\\/toptenvalidators?alt=application\\/json\",\"@type\":\"application\\/json\",\"@rel\":\"alternate\"},\"author\":{\"name\":{\"$\":\"admin\"}},\"category\":{\"@label\":\"report definition\",\"@scheme\":\"urn:com:systinet:reporting:kind\",\"@term\":\"urn:com:systinet:reporting:kind:definition\"}}}";
+ private static String ENTRY_STR_JSON =
+ "{\"entry\":{\"@xmlns\":{\"ns3\":\"http:\\/\\/www.w3.org\\/1999\\/xhtml\",\"ns2\":\"http:\\/\\/a9.com\\/-\\/spec\\/opensearch\\/1.1\\/\",\"$\":\"http:\\/\\/www.w3.org\\/2005\\/Atom\"},\"@xml:base\":\"http:\\/\\/b216:8080\\/reporting\\/reports\",\"id\":{\"$\":\"toptenvalidators\"},\"updated\":{\"$\":\"@TIME@\"},\"title\":{\"@type\":\"text\",\"@xml:lang\":\"en\",\"$\":\"top ten validators\"},\"published\":{\"$\":\"@TIME@\"},\"link\":{\"@href\":\"http:\\/\\/b216:8080\\/reporting\\/reports\\/toptenvalidators?alt=application\\/json\",\"@type\":\"application\\/json\",\"@rel\":\"alternate\"},\"author\":{\"name\":{\"$\":\"admin\"}},\"category\":{\"@label\":\"report definition\",\"@scheme\":\"urn:com:systinet:reporting:kind\",\"@term\":\"urn:com:systinet:reporting:kind:definition\"}}}";
- private static String ENTRY_STR_POST =
- "{\"entry\":" + "{\"@xmlns\":"
- + "{\"ns3\":\"http:\\/\\/www.w3.org\\/1999\\/xhtml\","
- + "\"ns2\":\"http:\\/\\/a9.com\\/-\\/spec\\/opensearch\\/1.1\\/\",\"$\":\"http:\\/\\/www.w3.org\\/2005\\/Atom\"},"
- + "\"id\":{\"$\":\"toptenvalidators\"},"
- + "\"updated\":{\"$\":\"@TIME@\"},"
- + "\"title\":{"
- + "\"$\":\"top ten validators\"},"
- + "\"published\":{\"$\":\"@TIME@\"},"
- + "\"author\":{\"name\":{\"$\":\"admin\"}},"
- + "}}";
+ private static String ENTRY_STR_POST =
+ "{\"entry\":" + "{\"@xmlns\":"
+ + "{\"ns3\":\"http:\\/\\/www.w3.org\\/1999\\/xhtml\","
+ + "\"ns2\":\"http:\\/\\/a9.com\\/-\\/spec\\/opensearch\\/1.1\\/\",\"$\":\"http:\\/\\/www.w3.org\\/2005\\/Atom\"},"
+ + "\"id\":{\"$\":\"toptenvalidators\"},"
+ + "\"updated\":{\"$\":\"@TIME@\"},"
+ + "\"title\":{"
+ + "\"$\":\"top ten validators\"},"
+ + "\"published\":{\"$\":\"@TIME@\"},"
+ + "\"author\":{\"name\":{\"$\":\"admin\"}},"
+ + "}}";
+
+ private static String ENTRY_STR_POST2 =
+ "{\"entry\":{\"@xmlns\":{\"ns3\":\"http:\\/\\/www.w3.org\\/1999\\/xhtml\",\"ns2\":\"http:\\/\\/a9.com\\/-\\/spec\\/opensearch\\/1.1\\/\",\"$\":\"http:\\/\\/www.w3.org\\/2005\\/Atom\"},\"id\":{\"@xmlns\":{\"$\":\"\",\"ns4\":\"http:\\/\\/www.w3.org\\/2005\\/Atom\"},\"$\":\"toptenvalidators\"},\"updated\":{\"@xmlns\":{\"$\":\"\",\"ns4\":\"http:\\/\\/www.w3.org\\/2005\\/Atom\"},\"$\":\"@TIME@\"},\"title\":{\"@xmlns\":{\"$\":\"\",\"ns4\":\"http:\\/\\/www.w3.org\\/2005\\/Atom\"},\"$\":\"top ten validators\"},\"published\":{\"@xmlns\":{\"$\":\"\",\"ns4\":\"http:\\/\\/www.w3.org\\/2005\\/Atom\"},\"$\":\"@TIME@\"},\"author\":{\"@xmlns\":{\"$\":\"\",\"ns4\":\"http:\\/\\/www.w3.org\\/2005\\/Atom\"},\"name\":{\"@xmlns\":{\"$\":\"\",\"ns7\":\"http:\\/\\/www.w3.org\\/2005\\/Atom\"},\"$\":\"admin\"}}}}";
+
+ private static String ENTRY_STR_POST3 =
+ "{\"entry\":{\"@xmlns\":{\"ns3\":\"http:\\/\\/www.w3.org\\/1999\\/xhtml\",\"ns2\":\"http:\\/\\/a9.com\\/-\\/spec\\/opensearch\\/1.1\\/\",\"$\":\"http:\\/\\/www.w3.org\\/2005\\/Atom\"},\"id\":{\"@xmlns\":{\"$\":\"\",\"ns4\":\"http:\\/\\/www.w3.org\\/2005\\/Atom\"},\"$\":\"toptenvalidators\"},\"updated\":{\"@xmlns\":{\"$\":\"\",\"ns4\":\"http:\\/\\/www.w3.org\\/2005\\/Atom\"},\"$\":\"@TIME@\"},\"title\":{\"@xmlns\":{\"$\":\"\",\"ns4\":\"http:\\/\\/www.w3.org\\/2005\\/Atom\"},\"$\":\"top ten validators\"},\"published\":{\"@xmlns\":{\"$\":\"\",\"ns4\":\"http:\\/\\/www.w3.org\\/2005\\/Atom\"},\"$\":\"@TIME@\"},\"author\":{\"@xmlns\":{\"$\":\"\",\"ns4\":\"http:\\/\\/www.w3.org\\/2005\\/Atom\"},\"name\":{\"@xmlns\":{\"ns7\":\"http:\\/\\/www.w3.org\\/2005\\/Atom\"},\"$\":\"admin\"}}}}";
private static final String ENTRY;
@@ -269,6 +314,10 @@
private static final String ENTRY_JSON_POST;
+ private static final String ENTRY_JSON_POST2;
+
+ private static final String ENTRY_JSON_POST3;
+
static {
try {
GregorianCalendar calendar = new GregorianCalendar();
@@ -278,6 +327,8 @@
ENTRY = ENTRY_STR.replaceAll("@TIME@", xmlGregCal.toString());
ENTRY_JSON = ENTRY_STR_JSON.replaceAll("@TIME@", xmlGregCal.toString());
ENTRY_JSON_POST = ENTRY_STR_POST.replaceAll("@TIME@", xmlGregCal.toString());
+ ENTRY_JSON_POST2 = ENTRY_STR_POST2.replaceAll("@TIME@", xmlGregCal.toString());
+ ENTRY_JSON_POST3 = ENTRY_STR_POST3.replaceAll("@TIME@", xmlGregCal.toString());
} catch (DatatypeConfigurationException e) {
throw new RuntimeException(e);
}
diff --git a/wink-providers/wink-json-provider/src/main/java/org/apache/wink/providers/json/JsonArrayProvider.java b/wink-providers/wink-json-provider/src/main/java/org/apache/wink/providers/json/JsonArrayProvider.java
index 49a5627..d5f85b0 100644
--- a/wink-providers/wink-json-provider/src/main/java/org/apache/wink/providers/json/JsonArrayProvider.java
+++ b/wink-providers/wink-json-provider/src/main/java/org/apache/wink/providers/json/JsonArrayProvider.java
@@ -89,8 +89,13 @@
throw new WebApplicationException(e, Response.Status.INTERNAL_SERVER_ERROR);
}
- String callbackParam =
- uriInfo.getQueryParameters().getFirst(RestConstants.REST_PARAM_JSON_CALLBACK);
+ String callbackParam = null;
+ try {
+ callbackParam =
+ uriInfo.getQueryParameters().getFirst(RestConstants.REST_PARAM_JSON_CALLBACK);
+ } catch (Exception e) {
+ logger.debug("Could not get the URI callback param", e);
+ }
OutputStreamWriter writer =
new OutputStreamWriter(entityStream, ProviderUtils.getCharset(mediaType));
if (callbackParam != null) {
diff --git a/wink-scripts/wink-dist/DEPENDENCIES b/wink-scripts/wink-dist/aggregatejar/DEPENDENCIES
similarity index 100%
rename from wink-scripts/wink-dist/DEPENDENCIES
rename to wink-scripts/wink-dist/aggregatejar/DEPENDENCIES
diff --git a/wink-scripts/wink-dist/DISCLAIMER b/wink-scripts/wink-dist/aggregatejar/DISCLAIMER
similarity index 100%
rename from wink-scripts/wink-dist/DISCLAIMER
rename to wink-scripts/wink-dist/aggregatejar/DISCLAIMER
diff --git a/wink-scripts/wink-dist/NOTICE b/wink-scripts/wink-dist/aggregatejar/NOTICE
similarity index 100%
rename from wink-scripts/wink-dist/NOTICE
rename to wink-scripts/wink-dist/aggregatejar/NOTICE
diff --git a/wink-scripts/wink-dist/binarydist/LICENSE b/wink-scripts/wink-dist/binarydist/LICENSE
new file mode 100644
index 0000000..0c5ccfe
--- /dev/null
+++ b/wink-scripts/wink-dist/binarydist/LICENSE
@@ -0,0 +1,851 @@
+ 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.
+
+================================================================================
+
+APACHE WINK SUBCOMPONENTS:
+
+Apache Wink includes a number of components and libraries with separate
+copyright notices and license terms. Your use of those components are
+subject to the terms and conditions of the following licenses.
+
+--------------------------------------------------------------------------------
+commons-lang:commons-lang:jar:2.3
+commons-cli:commons-cli:jar:1.2
+org.apache.httpcomponents:httpclient:jar:4.0
+org.apache.httpcomponents:httpcore:jar:4.0.1
+commons-codec:commons-codec:jar:1.3
+org.apache.geronimo.specs:geronimo-j2ee_1.4_spec:jar:1.1
+Jettison (http://jettison.codehaus.org/) org.codehaus.jettison:jettison:jar:1.1
+Spring Framework (http://www.springsource.org/) org.springframework:spring:jar:2.5
+
+The above are distributed under the terms of the Apache License, Version 2.0
+which is included at the start of this file.
+
+--------------------------------------------------------------------------------
+JSON (http://json.org/) org.json:json:20080701
+
+Copyright (c) 2002 JSON.org
+
+ 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 shall be used for Good, not Evil.
+
+ 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.
+
+--------------------------------------------------------------------------------
+JSR 311 API (https://jsr311.dev.java.net/) javax.ws.rs:jsr311-api:jar:1.0
+JAXB Reference Implementation project (https://jaxb.dev.java.net/) javax.xml.bind:jaxb-api:jar:2.1
+Sun JAXB Reference Implementation Runtime com.sun.xml.bind:jaxb-impl:jar:2.1.4
+JavaBeans Activation Framework (http://java.sun.com/javase/technologies/desktop/javabeans/jaf/) javax.activation:activation:1.1
+Streaming API for XML javax.xml.stream:stax-api:jar:1.0-2:compile
+
+ COMMON DEVELOPMENT AND DISTRIBUTION LICENSE (CDDL) Version 1.0
+
+ 1. Definitions.
+
+ 1.1. "Contributor" means each individual or entity that
+ creates or contributes to the creation of Modifications.
+
+ 1.2. "Contributor Version" means the combination of the
+ Original Software, prior Modifications used by a
+ Contributor (if any), and the Modifications made by that
+ particular Contributor.
+
+ 1.3. "Covered Software" means (a) the Original Software, or
+ (b) Modifications, or (c) the combination of files
+ containing Original Software with files containing
+ Modifications, in each case including portions thereof.
+
+ 1.4. "Executable" means the Covered Software in any form
+ other than Source Code.
+
+ 1.5. "Initial Developer" means the individual or entity
+ that first makes Original Software available under this
+ License.
+
+ 1.6. "Larger Work" means a work which combines Covered
+ Software or portions thereof with code not governed by the
+ terms of this License.
+
+ 1.7. "License" means this document.
+
+ 1.8. "Licensable" means having the right to grant, to the
+ maximum extent possible, whether at the time of the initial
+ grant or subsequently acquired, any and all of the rights
+ conveyed herein.
+
+ 1.9. "Modifications" means the Source Code and Executable
+ form of any of the following:
+
+ A. Any file that results from an addition to,
+ deletion from or modification of the contents of a
+ file containing Original Software or previous
+ Modifications;
+
+ B. Any new file that contains any part of the
+ Original Software or previous Modification; or
+
+ C. Any new file that is contributed or otherwise made
+ available under the terms of this License.
+
+ 1.10. "Original Software" means the Source Code and
+ Executable form of computer software code that is
+ originally released under this License.
+
+ 1.11. "Patent Claims" means any patent claim(s), now owned
+ or hereafter acquired, including without limitation,
+ method, process, and apparatus claims, in any patent
+ Licensable by grantor.
+
+ 1.12. "Source Code" means (a) the common form of computer
+ software code in which modifications are made and (b)
+ associated documentation included in or with such code.
+
+ 1.13. "You" (or "Your") means an individual or a legal
+ entity exercising rights under, and complying with all of
+ the terms of, this License. For legal entities, "You"
+ includes any entity which controls, is controlled by, or is
+ under common control with You. For purposes of this
+ definition, "control" means (a) the power, direct or
+ indirect, to cause the direction or management of such
+ entity, whether by contract or otherwise, or (b) ownership
+ of more than fifty percent (50%) of the outstanding shares
+ or beneficial ownership of such entity.
+
+ 2. License Grants.
+
+ 2.1. The Initial Developer Grant.
+
+ Conditioned upon Your compliance with Section 3.1 below and
+ subject to third party intellectual property claims, the
+ Initial Developer hereby grants You a world-wide,
+ royalty-free, non-exclusive license:
+
+ (a) under intellectual property rights (other than
+ patent or trademark) Licensable by Initial Developer,
+ to use, reproduce, modify, display, perform,
+ sublicense and distribute the Original Software (or
+ portions thereof), with or without Modifications,
+ and/or as part of a Larger Work; and
+
+ (b) under Patent Claims infringed by the making,
+ using or selling of Original Software, to make, have
+ made, use, practice, sell, and offer for sale, and/or
+ otherwise dispose of the Original Software (or
+ portions thereof).
+
+ (c) The licenses granted in Sections 2.1(a) and (b)
+ are effective on the date Initial Developer first
+ distributes or otherwise makes the Original Software
+ available to a third party under the terms of this
+ License.
+
+ (d) Notwithstanding Section 2.1(b) above, no patent
+ license is granted: (1) for code that You delete from
+ the Original Software, or (2) for infringements
+ caused by: (i) the modification of the Original
+ Software, or (ii) the combination of the Original
+ Software with other software or devices.
+
+ 2.2. Contributor Grant.
+
+ Conditioned upon Your compliance with Section 3.1 below and
+ subject to third party intellectual property claims, each
+ Contributor hereby grants You a world-wide, royalty-free,
+ non-exclusive license:
+
+ (a) under intellectual property rights (other than
+ patent or trademark) Licensable by Contributor to
+ use, reproduce, modify, display, perform, sublicense
+ and distribute the Modifications created by such
+ Contributor (or portions thereof), either on an
+ unmodified basis, with other Modifications, as
+ Covered Software and/or as part of a Larger Work; and
+
+ (b) under Patent Claims infringed by the making,
+ using, or selling of Modifications made by that
+ Contributor either alone and/or in combination with
+ its Contributor Version (or portions of such
+ combination), to make, use, sell, offer for sale,
+ have made, and/or otherwise dispose of: (1)
+ Modifications made by that Contributor (or portions
+ thereof); and (2) the combination of Modifications
+ made by that Contributor with its Contributor Version
+ (or portions of such combination).
+
+ (c) The licenses granted in Sections 2.2(a) and
+ 2.2(b) are effective on the date Contributor first
+ distributes or otherwise makes the Modifications
+ available to a third party.
+
+ (d) Notwithstanding Section 2.2(b) above, no patent
+ license is granted: (1) for any code that Contributor
+ has deleted from the Contributor Version; (2) for
+ infringements caused by: (i) third party
+ modifications of Contributor Version, or (ii) the
+ combination of Modifications made by that Contributor
+ with other software (except as part of the
+ Contributor Version) or other devices; or (3) under
+ Patent Claims infringed by Covered Software in the
+ absence of Modifications made by that Contributor.
+
+ 3. Distribution Obligations.
+
+ 3.1. Availability of Source Code.
+
+ Any Covered Software that You distribute or otherwise make
+ available in Executable form must also be made available in
+ Source Code form and that Source Code form must be
+ distributed only under the terms of this License. You must
+ include a copy of this License with every copy of the
+ Source Code form of the Covered Software You distribute or
+ otherwise make available. You must inform recipients of any
+ such Covered Software in Executable form as to how they can
+ obtain such Covered Software in Source Code form in a
+ reasonable manner on or through a medium customarily used
+ for software exchange.
+
+ 3.2. Modifications.
+
+ The Modifications that You create or to which You
+ contribute are governed by the terms of this License. You
+ represent that You believe Your Modifications are Your
+ original creation(s) and/or You have sufficient rights to
+ grant the rights conveyed by this License.
+
+ 3.3. Required Notices.
+
+ You must include a notice in each of Your Modifications
+ that identifies You as the Contributor of the Modification.
+ You may not remove or alter any copyright, patent or
+ trademark notices contained within the Covered Software, or
+ any notices of licensing or any descriptive text giving
+ attribution to any Contributor or the Initial Developer.
+
+ 3.4. Application of Additional Terms.
+
+ You may not offer or impose any terms on any Covered
+ Software in Source Code form that alters or restricts the
+ applicable version of this License or the recipients'
+ rights hereunder. You may choose to offer, and to charge a
+ fee for, warranty, support, indemnity or liability
+ obligations to one or more recipients of Covered Software.
+ However, you may do so only on Your own behalf, and not on
+ behalf of the Initial Developer or any Contributor. You
+ must make it absolutely clear that any such warranty,
+ support, indemnity or liability obligation is offered by
+ You alone, and You hereby agree to indemnify the Initial
+ Developer and every Contributor for any liability incurred
+ by the Initial Developer or such Contributor as a result of
+ warranty, support, indemnity or liability terms You offer.
+
+ 3.5. Distribution of Executable Versions.
+
+ You may distribute the Executable form of the Covered
+ Software under the terms of this License or under the terms
+ of a license of Your choice, which may contain terms
+ different from this License, provided that You are in
+ compliance with the terms of this License and that the
+ license for the Executable form does not attempt to limit
+ or alter the recipient's rights in the Source Code form
+ from the rights set forth in this License. If You
+ distribute the Covered Software in Executable form under a
+ different license, You must make it absolutely clear that
+ any terms which differ from this License are offered by You
+ alone, not by the Initial Developer or Contributor. You
+ hereby agree to indemnify the Initial Developer and every
+ Contributor for any liability incurred by the Initial
+ Developer or such Contributor as a result of any such terms
+ You offer.
+
+ 3.6. Larger Works.
+
+ You may create a Larger Work by combining Covered Software
+ with other code not governed by the terms of this License
+ and distribute the Larger Work as a single product. In such
+ a case, You must make sure the requirements of this License
+ are fulfilled for the Covered Software.
+
+ 4. Versions of the License.
+
+ 4.1. New Versions.
+
+ Sun Microsystems, Inc. is the initial license steward and
+ may publish revised and/or new versions of this License
+ from time to time. Each version will be given a
+ distinguishing version number. Except as provided in
+ Section 4.3, no one other than the license steward has the
+ right to modify this License.
+
+ 4.2. Effect of New Versions.
+
+ You may always continue to use, distribute or otherwise
+ make the Covered Software available under the terms of the
+ version of the License under which You originally received
+ the Covered Software. If the Initial Developer includes a
+ notice in the Original Software prohibiting it from being
+ distributed or otherwise made available under any
+ subsequent version of the License, You must distribute and
+ make the Covered Software available under the terms of the
+ version of the License under which You originally received
+ the Covered Software. Otherwise, You may also choose to
+ use, distribute or otherwise make the Covered Software
+ available under the terms of any subsequent version of the
+ License published by the license steward.
+
+ 4.3. Modified Versions.
+
+ When You are an Initial Developer and You want to create a
+ new license for Your Original Software, You may create and
+ use a modified version of this License if You: (a) rename
+ the license and remove any references to the name of the
+ license steward (except to note that the license differs
+ from this License); and (b) otherwise make it clear that
+ the license contains terms which differ from this License.
+
+ 5. DISCLAIMER OF WARRANTY.
+
+ COVERED SOFTWARE IS PROVIDED UNDER THIS LICENSE ON AN "AS IS"
+ BASIS, WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED,
+ INCLUDING, WITHOUT LIMITATION, WARRANTIES THAT THE COVERED
+ SOFTWARE IS FREE OF DEFECTS, MERCHANTABLE, FIT FOR A PARTICULAR
+ PURPOSE OR NON-INFRINGING. THE ENTIRE RISK AS TO THE QUALITY AND
+ PERFORMANCE OF THE COVERED SOFTWARE IS WITH YOU. SHOULD ANY
+ COVERED SOFTWARE PROVE DEFECTIVE IN ANY RESPECT, YOU (NOT THE
+ INITIAL DEVELOPER OR ANY OTHER CONTRIBUTOR) ASSUME THE COST OF
+ ANY NECESSARY SERVICING, REPAIR OR CORRECTION. THIS DISCLAIMER OF
+ WARRANTY CONSTITUTES AN ESSENTIAL PART OF THIS LICENSE. NO USE OF
+ ANY COVERED SOFTWARE IS AUTHORIZED HEREUNDER EXCEPT UNDER THIS
+ DISCLAIMER.
+
+ 6. TERMINATION.
+
+ 6.1. This License and the rights granted hereunder will
+ terminate automatically if You fail to comply with terms
+ herein and fail to cure such breach within 30 days of
+ becoming aware of the breach. Provisions which, by their
+ nature, must remain in effect beyond the termination of
+ this License shall survive.
+
+ 6.2. If You assert a patent infringement claim (excluding
+ declaratory judgment actions) against Initial Developer or
+ a Contributor (the Initial Developer or Contributor against
+ whom You assert such claim is referred to as "Participant")
+ alleging that the Participant Software (meaning the
+ Contributor Version where the Participant is a Contributor
+ or the Original Software where the Participant is the
+ Initial Developer) directly or indirectly infringes any
+ patent, then any and all rights granted directly or
+ indirectly to You by such Participant, the Initial
+ Developer (if the Initial Developer is not the Participant)
+ and all Contributors under Sections 2.1 and/or 2.2 of this
+ License shall, upon 60 days notice from Participant
+ terminate prospectively and automatically at the expiration
+ of such 60 day notice period, unless if within such 60 day
+ period You withdraw Your claim with respect to the
+ Participant Software against such Participant either
+ unilaterally or pursuant to a written agreement with
+ Participant.
+
+ 6.3. In the event of termination under Sections 6.1 or 6.2
+ above, all end user licenses that have been validly granted
+ by You or any distributor hereunder prior to termination
+ (excluding licenses granted to You by any distributor)
+ shall survive termination.
+
+ 7. LIMITATION OF LIABILITY.
+
+ UNDER NO CIRCUMSTANCES AND UNDER NO LEGAL THEORY, WHETHER TORT
+ (INCLUDING NEGLIGENCE), CONTRACT, OR OTHERWISE, SHALL YOU, THE
+ INITIAL DEVELOPER, ANY OTHER CONTRIBUTOR, OR ANY DISTRIBUTOR OF
+ COVERED SOFTWARE, OR ANY SUPPLIER OF ANY OF SUCH PARTIES, BE
+ LIABLE TO ANY PERSON FOR ANY INDIRECT, SPECIAL, INCIDENTAL, OR
+ CONSEQUENTIAL DAMAGES OF ANY CHARACTER INCLUDING, WITHOUT
+ LIMITATION, DAMAGES FOR LOST PROFITS, LOSS OF GOODWILL, WORK
+ STOPPAGE, COMPUTER FAILURE OR MALFUNCTION, OR ANY AND ALL OTHER
+ COMMERCIAL DAMAGES OR LOSSES, EVEN IF SUCH PARTY SHALL HAVE BEEN
+ INFORMED OF THE POSSIBILITY OF SUCH DAMAGES. THIS LIMITATION OF
+ LIABILITY SHALL NOT APPLY TO LIABILITY FOR DEATH OR PERSONAL
+ INJURY RESULTING FROM SUCH PARTY'S NEGLIGENCE TO THE EXTENT
+ APPLICABLE LAW PROHIBITS SUCH LIMITATION. SOME JURISDICTIONS DO
+ NOT ALLOW THE EXCLUSION OR LIMITATION OF INCIDENTAL OR
+ CONSEQUENTIAL DAMAGES, SO THIS EXCLUSION AND LIMITATION MAY NOT
+ APPLY TO YOU.
+
+ 8. U.S. GOVERNMENT END USERS.
+
+ The Covered Software is a "commercial item," as that term is
+ defined in 48 C.F.R. 2.101 (Oct. 1995), consisting of "commercial
+ computer software" (as that term is defined at 48 C.F.R. �
+ 252.227-7014(a)(1)) and "commercial computer software
+ documentation" as such terms are used in 48 C.F.R. 12.212 (Sept.
+ 1995). Consistent with 48 C.F.R. 12.212 and 48 C.F.R. 227.7202-1
+ through 227.7202-4 (June 1995), all U.S. Government End Users
+ acquire Covered Software with only those rights set forth herein.
+ This U.S. Government Rights clause is in lieu of, and supersedes,
+ any other FAR, DFAR, or other clause or provision that addresses
+ Government rights in computer software under this License.
+
+ 9. MISCELLANEOUS.
+
+ This License represents the complete agreement concerning subject
+ matter hereof. If any provision of this License is held to be
+ unenforceable, such provision shall be reformed only to the
+ extent necessary to make it enforceable. This License shall be
+ governed by the law of the jurisdiction specified in a notice
+ contained within the Original Software (except to the extent
+ applicable law, if any, provides otherwise), excluding such
+ jurisdiction's conflict-of-law provisions. Any litigation
+ relating to this License shall be subject to the jurisdiction of
+ the courts located in the jurisdiction and venue specified in a
+ notice contained within the Original Software, with the losing
+ party responsible for costs, including, without limitation, court
+ costs and reasonable attorneys' fees and expenses. The
+ application of the United Nations Convention on Contracts for the
+ International Sale of Goods is expressly excluded. Any law or
+ regulation which provides that the language of a contract shall
+ be construed against the drafter shall not apply to this License.
+ You agree that You alone are responsible for compliance with the
+ United States export administration regulations (and the export
+ control laws and regulation of any other countries) when You use,
+ distribute or otherwise make available any Covered Software.
+
+ 10. RESPONSIBILITY FOR CLAIMS.
+
+ As between Initial Developer and the Contributors, each party is
+ responsible for claims and damages arising, directly or
+ indirectly, out of its utilization of rights under this License
+ and You agree to work with Initial Developer and Contributors to
+ distribute such responsibility on an equitable basis. Nothing
+ herein is intended or shall be deemed to constitute any admission
+ of liability.
+
+--------------------------------------------------------------------------------
+SLF4J (http://www.slf4j.org/) org.slf4j:slf4j-api:jar:1.5.8
+SLF4J (http://www.slf4j.org/) org.slf4j:slf4j-simple:jar:1.5.8
+SLF4J (http://www.slf4j.org/) org.slf4j:jcl-over-slf4j:jar:1.5.8
+
+ 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.
+
+--------------------------------------------------------------------------------
+
+jcip-annotations (http://www.jcip.net/) net.jcip:jcip-annotations:jar:1.0
+Copyright (c) 2005 Brian Goetz and Tim Peierls and is released under the
+Creative Commons Attribution License
+(http://creativecommons.org/licenses/by/2.5)
+
+THE WORK (AS DEFINED BELOW) IS PROVIDED UNDER THE TERMS OF THIS CREATIVE
+COMMONS PUBLIC LICENSE ("CCPL" OR "LICENSE"). THE WORK IS PROTECTED BY
+COPYRIGHT AND/OR OTHER APPLICABLE LAW. ANY USE OF THE WORK OTHER THAN AS
+AUTHORIZED UNDER THIS LICENSE OR COPYRIGHT LAW IS PROHIBITED.
+
+BY EXERCISING ANY RIGHTS TO THE WORK PROVIDED HERE, YOU ACCEPT AND AGREE TO BE
+BOUND BY THE TERMS OF THIS LICENSE. THE LICENSOR GRANTS YOU THE RIGHTS
+CONTAINED HERE IN CONSIDERATION OF YOUR ACCEPTANCE OF SUCH TERMS AND
+CONDITIONS.
+
+1. Definitions
+
+ a. "Collective Work" means a work, such as a periodical issue, anthology or
+encyclopedia, in which the Work in its entirety in unmodified form, along with
+a number of other contributions, constituting separate and independent works in
+themselves, are assembled into a collective whole. A work that constitutes a
+Collective Work will not be considered a Derivative Work (as defined below) for
+the purposes of this License.
+ b. "Derivative Work" means a work based upon the Work or upon the Work and
+other pre-existing works, such as a translation, musical arrangement,
+dramatization, fictionalization, motion picture version, sound recording, art
+reproduction, abridgment, condensation, or any other form in which the Work may
+be recast, transformed, or adapted, except that a work that constitutes a
+Collective Work will not be considered a Derivative Work for the purpose of
+this License. For the avoidance of doubt, where the Work is a musical
+composition or sound recording, the synchronization of the Work in
+timed-relation with a moving image ("synching") will be considered a Derivative
+Work for the purpose of this License.
+ c. "Licensor" means the individual or entity that offers the Work under the
+terms of this License.
+ d. "Original Author" means the individual or entity who created the Work.
+ e. "Work" means the copyrightable work of authorship offered under the terms
+of this License.
+ f. "You" means an individual or entity exercising rights under this License
+who has not previously violated the terms of this License with respect to the
+Work, or who has received express permission from the Licensor to exercise
+rights under this License despite a previous violation.
+
+2. Fair Use Rights. Nothing in this license is intended to reduce, limit, or
+restrict any rights arising from fair use, first sale or other limitations on
+the exclusive rights of the copyright owner under copyright law or other
+applicable laws.
+
+3. License Grant. Subject to the terms and conditions of this License, Licensor
+hereby grants You a worldwide, royalty-free, non-exclusive, perpetual (for the
+duration of the applicable copyright) license to exercise the rights in the
+Work as stated below:
+
+ a. to reproduce the Work, to incorporate the Work into one or more
+Collective Works, and to reproduce the Work as incorporated in the Collective
+Works;
+ b. to create and reproduce Derivative Works;
+ c. to distribute copies or phonorecords of, display publicly, perform
+publicly, and perform publicly by means of a digital audio transmission the
+Work including as incorporated in Collective Works;
+ d. to distribute copies or phonorecords of, display publicly, perform
+publicly, and perform publicly by means of a digital audio transmission
+Derivative Works.
+ e. For the avoidance of doubt, where the work is a musical composition:
+ i. Performance Royalties Under Blanket Licenses. Licensor waives the
+exclusive right to collect, whether individually or via a performance rights
+society (e.g. ASCAP, BMI, SESAC), royalties for the public performance or
+public digital performance (e.g. webcast) of the Work.
+ ii. Mechanical Rights and Statutory Royalties. Licensor waives the
+exclusive right to collect, whether individually or via a music rights agency
+or designated agent (e.g. Harry Fox Agency), royalties for any phonorecord You
+create from the Work ("cover version") and distribute, subject to the
+compulsory license created by 17 USC Section 115 of the US Copyright Act (or
+the equivalent in other jurisdictions).
+ f. Webcasting Rights and Statutory Royalties. For the avoidance of doubt,
+where the Work is a sound recording, Licensor waives the exclusive right to
+collect, whether individually or via a performance-rights society (e.g.
+SoundExchange), royalties for the public digital performance (e.g. webcast) of
+the Work, subject to the compulsory license created by 17 USC Section 114 of
+the US Copyright Act (or the equivalent in other jurisdictions).
+
+The above rights may be exercised in all media and formats whether now known or
+hereafter devised. The above rights include the right to make such
+modifications as are technically necessary to exercise the rights in other
+media and formats. All rights not expressly granted by Licensor are hereby
+reserved.
+
+4. Restrictions.The license granted in Section 3 above is expressly made
+subject to and limited by the following restrictions:
+
+ a. You may distribute, publicly display, publicly perform, or publicly
+digitally perform the Work only under the terms of this License, and You must
+include a copy of, or the Uniform Resource Identifier for, this License with
+every copy or phonorecord of the Work You distribute, publicly display,
+publicly perform, or publicly digitally perform. You may not offer or impose
+any terms on the Work that alter or restrict the terms of this License or the
+recipients' exercise of the rights granted hereunder. You may not sublicense
+the Work. You must keep intact all notices that refer to this License and to
+the disclaimer of warranties. You may not distribute, publicly display,
+publicly perform, or publicly digitally perform the Work with any technological
+measures that control access or use of the Work in a manner inconsistent with
+the terms of this License Agreement. The above applies to the Work as
+incorporated in a Collective Work, but this does not require the Collective
+Work apart from the Work itself to be made subject to the terms of this
+License. If You create a Collective Work, upon notice from any Licensor You
+must, to the extent practicable, remove from the Collective Work any credit as
+required by clause 4(b), as requested. If You create a Derivative Work, upon
+notice from any Licensor You must, to the extent practicable, remove from the
+Derivative Work any credit as required by clause 4(b), as requested.
+ b. If you distribute, publicly display, publicly perform, or publicly
+digitally perform the Work or any Derivative Works or Collective Works, You
+must keep intact all copyright notices for the Work and provide, reasonable to
+the medium or means You are utilizing: (i) the name of the Original Author (or
+pseudonym, if applicable) if supplied, and/or (ii) if the Original Author
+and/or Licensor designate another party or parties (e.g. a sponsor institute,
+publishing entity, journal) for attribution in Licensor's copyright notice,
+terms of service or by other reasonable means, the name of such party or
+parties; the title of the Work if supplied; to the extent reasonably
+practicable, the Uniform Resource Identifier, if any, that Licensor specifies
+to be associated with the Work, unless such URI does not refer to the copyright
+notice or licensing information for the Work; and in the case of a Derivative
+Work, a credit identifying the use of the Work in the Derivative Work (e.g.,
+"French translation of the Work by Original Author," or "Screenplay based on
+original Work by Original Author"). Such credit may be implemented in any
+reasonable manner; provided, however, that in the case of a Derivative Work or
+Collective Work, at a minimum such credit will appear where any other
+comparable authorship credit appears and in a manner at least as prominent as
+such other comparable authorship credit.
+
+5. Representations, Warranties and Disclaimer
+
+UNLESS OTHERWISE MUTUALLY AGREED TO BY THE PARTIES IN WRITING, LICENSOR OFFERS
+THE WORK AS-IS AND MAKES NO REPRESENTATIONS OR WARRANTIES OF ANY KIND
+CONCERNING THE WORK, EXPRESS, IMPLIED, STATUTORY OR OTHERWISE, INCLUDING,
+WITHOUT LIMITATION, WARRANTIES OF TITLE, MERCHANTIBILITY, FITNESS FOR A
+PARTICULAR PURPOSE, NONINFRINGEMENT, OR THE ABSENCE OF LATENT OR OTHER DEFECTS,
+ACCURACY, OR THE PRESENCE OF ABSENCE OF ERRORS, WHETHER OR NOT DISCOVERABLE.
+SOME JURISDICTIONS DO NOT ALLOW THE EXCLUSION OF IMPLIED WARRANTIES, SO SUCH
+EXCLUSION MAY NOT APPLY TO YOU.
+
+6. Limitation on Liability. EXCEPT TO THE EXTENT REQUIRED BY APPLICABLE LAW, IN
+NO EVENT WILL LICENSOR BE LIABLE TO YOU ON ANY LEGAL THEORY FOR ANY SPECIAL,
+INCIDENTAL, CONSEQUENTIAL, PUNITIVE OR EXEMPLARY DAMAGES ARISING OUT OF THIS
+LICENSE OR THE USE OF THE WORK, EVEN IF LICENSOR HAS BEEN ADVISED OF THE
+POSSIBILITY OF SUCH DAMAGES.
+
+7. Termination
+
+ a. This License and the rights granted hereunder will terminate
+automatically upon any breach by You of the terms of this License. Individuals
+or entities who have received Derivative Works or Collective Works from You
+under this License, however, will not have their licenses terminated provided
+such individuals or entities remain in full compliance with those licenses.
+Sections 1, 2, 5, 6, 7, and 8 will survive any termination of this License.
+ b. Subject to the above terms and conditions, the license granted here is
+perpetual (for the duration of the applicable copyright in the Work).
+Notwithstanding the above, Licensor reserves the right to release the Work
+under different license terms or to stop distributing the Work at any time;
+provided, however that any such election will not serve to withdraw this
+License (or any other license that has been, or is required to be, granted
+under the terms of this License), and this License will continue in full force
+and effect unless terminated as stated above.
+
+8. Miscellaneous
+
+ a. Each time You distribute or publicly digitally perform the Work or a
+Collective Work, the Licensor offers to the recipient a license to the Work on
+the same terms and conditions as the license granted to You under this License.
+ b. Each time You distribute or publicly digitally perform a Derivative Work,
+Licensor offers to the recipient a license to the original Work on the same
+terms and conditions as the license granted to You under this License.
+ c. If any provision of this License is invalid or unenforceable under
+applicable law, it shall not affect the validity or enforceability of the
+remainder of the terms of this License, and without further action by the
+parties to this agreement, such provision shall be reformed to the minimum
+extent necessary to make such provision valid and enforceable.
+ d. No term or provision of this License shall be deemed waived and no breach
+consented to unless such waiver or consent shall be in writing and signed by
+the party to be charged with such waiver or consent.
+ e. This License constitutes the entire agreement between the parties with
+respect to the Work licensed here. There are no understandings, agreements or
+representations with respect to the Work not specified here. Licensor shall not
+be bound by any additional provisions that may appear in any communication from
+You. This License may not be modified without the mutual written agreement of
+the Licensor and You.
+
diff --git a/wink-scripts/wink-dist/binarydist/NOTICE b/wink-scripts/wink-dist/binarydist/NOTICE
new file mode 100644
index 0000000..6d12a9e
--- /dev/null
+++ b/wink-scripts/wink-dist/binarydist/NOTICE
@@ -0,0 +1,17 @@
+Apache Wink
+Copyright 2009 The Apache Software Foundation
+
+This product includes software developed at
+The Apache Software Foundation (http://www.apache.org/).
+
+This product includes software developed for the JAXB Reference Implementation project (https://jaxb.dev.java.net/) distributed under CDDL Version 1.0 license
+
+This product includes software, JSR-311 (https://jsr311.dev.java.net/) distributed under CDDL Version 1.0 license
+
+This product includes software, JavaBeans Activation Framework (http://java.sun.com/javase/technologies/desktop/javabeans/jaf/) distributed under CDDL Version 1.0 license
+
+This product includes software, Streaming API for XML distributed under CDDL Version 1.0 license
+
+jcip-annotations is Copyright (c) 2005 Brian Goetz and Tim Peierls and is released under the Creative
+Commons Attribution License (http://creativecommons.org/licenses/by/2.5).
+
diff --git a/wink-scripts/wink-dist/build.xml b/wink-scripts/wink-dist/build.xml
index d8072bd..169eb53 100644
--- a/wink-scripts/wink-dist/build.xml
+++ b/wink-scripts/wink-dist/build.xml
@@ -222,8 +222,8 @@
<echo>Making root documents</echo>
<copy todir="${dist.root}" flatten="true" includeemptydirs="false">
<fileset dir="${project.root}" includes="DISCLAIMER*" />
- <fileset dir="${project.root}" includes="LICENSE*" />
- <fileset dir="${project.root}" includes="NOTICE*" />
+ <fileset dir="${project.root}/wink-scripts/wink-dist/binarydist" includes="LICENSE*" />
+ <fileset dir="${project.root}/wink-scripts/wink-dist/binarydist" includes="NOTICE*" />
<fileset dir="${project.root}" includes="release_notes.txt" />
</copy>
<!-- Copy PDF Developer Guide that exists under trunk/src/doc/DeveloperGuide into doc directory -->
@@ -269,7 +269,7 @@
<attribute name="X-Compile-Target-JDK" value="${maven.compile.target}" />
</manifest>
- <zipfileset dir="${basedir}" prefix="META-INF">
+ <zipfileset dir="${basedir}/aggregatejar" prefix="META-INF">
<include name="NOTICE" />
<include name="DISCLAIMER" />
<include name="DEPENDENCIES" />
diff --git a/wink-server/src/main/java/org/apache/wink/server/internal/registry/ResourceRegistry.java b/wink-server/src/main/java/org/apache/wink/server/internal/registry/ResourceRegistry.java
index 30fa1fe..788379b 100644
--- a/wink-server/src/main/java/org/apache/wink/server/internal/registry/ResourceRegistry.java
+++ b/wink-server/src/main/java/org/apache/wink/server/internal/registry/ResourceRegistry.java
@@ -49,7 +49,6 @@
import org.apache.wink.common.internal.uritemplate.UriTemplateMatcher;
import org.apache.wink.common.internal.uritemplate.UriTemplateProcessor;
import org.apache.wink.common.internal.utils.MediaTypeUtils;
-import org.apache.wink.common.internal.utils.SimpleMap;
import org.apache.wink.common.internal.utils.SoftConcurrentMap;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
@@ -60,20 +59,20 @@
*/
public class ResourceRegistry {
- private static final Logger logger =
- LoggerFactory
- .getLogger(ResourceRegistry.class);
+ private static final Logger logger =
+ LoggerFactory
+ .getLogger(ResourceRegistry.class);
- private List<ResourceRecord> rootResources;
+ private List<ResourceRecord> rootResources;
- private ResourceRecordFactory resourceRecordsFactory;
+ private ResourceRecordFactory resourceRecordsFactory;
- private Lock readersLock;
- private Lock writersLock;
- private final ApplicationValidator applicationValidator;
+ private Lock readersLock;
+ private Lock writersLock;
+ private final ApplicationValidator applicationValidator;
- private Map<Boolean, SimpleMap<String, List<ResourceRecord>>> uriToResourceCache =
- new HashMap<Boolean, SimpleMap<String, List<ResourceRecord>>>();
+ private HashMap<Boolean, SoftConcurrentMap<String, ArrayList<ResourceRecord>>> uriToResourceCache =
+ new HashMap<Boolean, SoftConcurrentMap<String, ArrayList<ResourceRecord>>>();
public ResourceRegistry(LifecycleManagersRegistry factoryRegistry,
ApplicationValidator applicationValidator) {
@@ -83,9 +82,10 @@
ReadWriteLock readWriteLock = new ReentrantReadWriteLock();
readersLock = readWriteLock.readLock();
writersLock = readWriteLock.writeLock();
- uriToResourceCache.put(Boolean.TRUE, new SoftConcurrentMap<String, List<ResourceRecord>>());
- uriToResourceCache
- .put(Boolean.FALSE, new SoftConcurrentMap<String, List<ResourceRecord>>());
+ uriToResourceCache.put(Boolean.TRUE,
+ new SoftConcurrentMap<String, ArrayList<ResourceRecord>>());
+ uriToResourceCache.put(Boolean.FALSE,
+ new SoftConcurrentMap<String, ArrayList<ResourceRecord>>());
}
/**
@@ -255,27 +255,29 @@
*/
public List<ResourceInstance> getMatchingRootResources(String uri,
boolean isContinuedSearchPolicy) {
- List<ResourceInstance> found = new ArrayList<ResourceInstance>();
+ ArrayList<ResourceInstance> found = new ArrayList<ResourceInstance>(1);
uri = UriTemplateProcessor.normalizeUri(uri);
+ ArrayList<ResourceRecord> previousMatched = null;
+ /*
+ * the previous matches are cached so if a previous URI used is still in
+ * the cache, this will find the resources that matched skipping the
+ * expensive UriTemplateMatcher.matches()
+ */
+ previousMatched = uriToResourceCache.get(isContinuedSearchPolicy).get(uri);
+ if (previousMatched != null) {
+ for (ResourceRecord record : previousMatched) {
+ UriTemplateMatcher matcher = record.getTemplateProcessor().matcher();
+ if (matcher.matches(uri)) {
+ found.add(new ResourceInstance(record, matcher));
+ }
+ }
+ return found;
+ }
+
readersLock.lock();
try {
- List<ResourceRecord> previousMatched = null;
- /*
- * the previous matches are cached so if a previous URI used is
- * still in the cache, this will find the resources that matched
- * skipping the expensive UriTemplateMatcher.matches()
- */
- previousMatched = uriToResourceCache.get(isContinuedSearchPolicy).get(uri);
- if (previousMatched != null) {
- for (ResourceRecord record : previousMatched) {
- UriTemplateMatcher matcher = record.getTemplateProcessor().matcher();
- if (matcher.matches(uri)) {
- found.add(new ResourceInstance(record, matcher));
- }
- }
- return found;
- }
+
previousMatched = new ArrayList<ResourceRecord>();
// the list of root resource records is already sorted
diff --git a/wink-server/src/test/java/org/apache/wink/server/internal/providers/entity/AtomEntryInResponseProviderTest.java b/wink-server/src/test/java/org/apache/wink/server/internal/providers/entity/AtomEntryInResponseProviderTest.java
new file mode 100644
index 0000000..db54661
--- /dev/null
+++ b/wink-server/src/test/java/org/apache/wink/server/internal/providers/entity/AtomEntryInResponseProviderTest.java
@@ -0,0 +1,220 @@
+/*******************************************************************************
+ * 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.wink.server.internal.providers.entity;
+
+import java.io.IOException;
+import java.io.StringReader;
+import java.util.Date;
+import java.util.GregorianCalendar;
+
+import javax.ws.rs.Consumes;
+import javax.ws.rs.GET;
+import javax.ws.rs.POST;
+import javax.ws.rs.Path;
+import javax.ws.rs.Produces;
+import javax.ws.rs.core.Response;
+import javax.xml.bind.JAXBElement;
+import javax.xml.datatype.DatatypeConfigurationException;
+import javax.xml.datatype.DatatypeFactory;
+import javax.xml.datatype.XMLGregorianCalendar;
+
+import org.apache.wink.common.model.atom.AtomEntry;
+import org.apache.wink.common.model.synd.SyndEntry;
+import org.apache.wink.server.internal.servlet.MockServletInvocationTest;
+import org.apache.wink.test.mock.MockRequestConstructor;
+import org.apache.wink.test.mock.TestUtils;
+import org.springframework.mock.web.MockHttpServletRequest;
+import org.springframework.mock.web.MockHttpServletResponse;
+
+public class AtomEntryInResponseProviderTest extends MockServletInvocationTest {
+
+ @Override
+ protected Class<?>[] getClasses() {
+ return new Class<?>[] {TestResource.class};
+ }
+
+ @Path("test")
+ public static class TestResource {
+
+ @GET
+ @Path("atomentry")
+ @Produces("application/atom+xml")
+ public Response getAtomEntry() throws IOException {
+ AtomEntry entry = AtomEntry.unmarshal(new StringReader(ENTRY));
+ return Response.ok(entry).build();
+ }
+
+ @GET
+ @Path("atomentryelement")
+ @Produces("application/atom+xml")
+ public Response getAtomEntryElement() throws IOException {
+ AtomEntry entry = AtomEntry.unmarshal(new StringReader(ENTRY));
+ org.apache.wink.common.model.atom.ObjectFactory of =
+ new org.apache.wink.common.model.atom.ObjectFactory();
+ return Response.ok(of.createEntry(entry)).build();
+ }
+
+ @GET
+ @Path("atomsyndentry")
+ @Produces("application/atom+xml")
+ public Response getSyndEntry() throws IOException {
+ AtomEntry entry = AtomEntry.unmarshal(new StringReader(ENTRY));
+ return Response.ok(entry.toSynd(new SyndEntry())).build();
+ }
+
+ @POST
+ @Path("atomentry")
+ @Produces("application/atom+xml")
+ @Consumes("application/atom+xml")
+ public Response postAtomEntry(AtomEntry entry) {
+ return Response.ok(entry).build();
+ }
+
+ @POST
+ @Path("atomentryelement")
+ @Produces("application/atom+xml")
+ @Consumes("application/atom+xml")
+ public Response postAtomEntryElement(JAXBElement<AtomEntry> entry) {
+ return Response.ok(entry).build();
+ }
+
+ @POST
+ @Path("atomsyndentry")
+ @Produces("application/atom+xml")
+ @Consumes("application/atom+xml")
+ public Response postAtomSyndEntry(SyndEntry entry) {
+ return Response.ok(entry).build();
+ }
+
+ }
+
+ public void testGetAtomEntry() throws Exception {
+ MockHttpServletRequest request =
+ MockRequestConstructor.constructMockRequest("GET",
+ "/test/atomentry",
+ "application/atom+xml");
+ MockHttpServletResponse response = invoke(request);
+ assertEquals(200, response.getStatus());
+ String msg =
+ TestUtils.diffIgnoreUpdateWithAttributeQualifier(ENTRY, response.getContentAsString());
+ assertNull(msg, msg);
+ }
+
+ public void testGetAtomEntryElement() throws Exception {
+ MockHttpServletRequest request =
+ MockRequestConstructor.constructMockRequest("GET",
+ "/test/atomentryelement",
+ "application/atom+xml");
+ MockHttpServletResponse response = invoke(request);
+ assertEquals(200, response.getStatus());
+ String msg =
+ TestUtils.diffIgnoreUpdateWithAttributeQualifier(ENTRY, response.getContentAsString());
+ assertNull(msg, msg);
+ }
+
+ public void testGetAtomSyndEntry() throws Exception {
+ MockHttpServletRequest request =
+ MockRequestConstructor.constructMockRequest("GET",
+ "/test/atomsyndentry",
+ "application/atom+xml");
+ MockHttpServletResponse response = invoke(request);
+ assertEquals(200, response.getStatus());
+ String msg =
+ TestUtils.diffIgnoreUpdateWithAttributeQualifier(ENTRY, response.getContentAsString());
+ assertNull(msg, msg);
+ }
+
+ public void testPostAtomEntry() throws Exception {
+ MockHttpServletRequest request =
+ MockRequestConstructor.constructMockRequest("POST",
+ "/test/atomentry",
+ "application/atom+xml");
+ request.setContentType("application/atom+xml");
+ request.setContent(ENTRY.getBytes());
+ MockHttpServletResponse response = invoke(request);
+ assertEquals(200, response.getStatus());
+ String msg =
+ TestUtils.diffIgnoreUpdateWithAttributeQualifier(ENTRY, response.getContentAsString());
+ assertNull(msg, msg);
+ }
+
+ public void testPostAtomEntryElement() throws Exception {
+ MockHttpServletRequest request =
+ MockRequestConstructor.constructMockRequest("POST",
+ "/test/atomentryelement",
+ "application/atom+xml");
+ request.setContentType("application/atom+xml");
+ request.setContent(ENTRY.getBytes());
+ MockHttpServletResponse response = invoke(request);
+ assertEquals(200, response.getStatus());
+ String msg =
+ TestUtils.diffIgnoreUpdateWithAttributeQualifier(ENTRY, response.getContentAsString());
+ assertNull(msg, msg);
+ }
+
+ public void testPostAtomSyndEntry() throws Exception {
+ MockHttpServletRequest request =
+ MockRequestConstructor.constructMockRequest("POST",
+ "/test/atomsyndentry",
+ "application/atom+xml");
+ request.setContentType("application/atom+xml");
+ request.setContent(ENTRY.getBytes());
+ MockHttpServletResponse response = invoke(request);
+ assertEquals(200, response.getStatus());
+ String msg =
+ TestUtils.diffIgnoreUpdateWithAttributeQualifier(ENTRY, response.getContentAsString());
+ assertNull(msg, msg);
+ }
+
+ private static final String ENTRY_STR =
+ "<entry xml:base=\"http://b216:8080/reporting/reports\" xmlns=\"http://www.w3.org/2005/Atom\">" + "<id>toptenvalidators</id>"
+ + "<updated>@TIME@</updated>"
+ + "<title type=\"text\" xml:lang=\"en\">top ten validators</title>"
+ + "<published>@TIME@</published>"
+ + "<link href=\"http://b216:8080/reporting/reports/toptenvalidators?alt=application/json\" type=\"application/json\" rel=\"alternate\"/>"
+ + "<link href=\"http://b216:8080/reporting/reports/toptenvalidators?alt=text/plain\" type=\"text/plain\" rel=\"alternate\"/>"
+ + "<link href=\"http://b216:8080/reporting/reports/toptenvalidators\" rel=\"self\"/>"
+ + "<link href=\"http://b216:8080/reporting/reports/toptenvalidators?alt=text/xml\" type=\"text/xml\" rel=\"alternate\"/>"
+ + "<link href=\"http://b216:8080/reporting/reports/toptenvalidators/documents/\" type=\"application/atom+xml\" rel=\"execute\"/>"
+ + "<link href=\"http://b216:8080/reporting/reports/toptenvalidators\" type=\"application/atom+xml\" rel=\"edit\"/>"
+ + "<link href=\"http://b216:8080/reporting/reports/toptenvalidators?alt=application/xml\" type=\"application/xml\" rel=\"alternate\"/>"
+ + "<link href=\"http://b216:8080/reporting/reports/toptenvalidators\" type=\"application/xml\" rel=\"edit-media\"/>"
+ + "<author>"
+ + "<name>admin</name>"
+ + "</author>"
+ + "<category label=\"report definition\" scheme=\"urn:com:systinet:reporting:kind\" term=\"urn:com:systinet:reporting:kind:definition\"/>"
+ + "<category label=\"Policy Manager - Homepage Report\" scheme=\"urn:com:systinet:policymgr:report:type\" term=\"aoi\"/>"
+ + "</entry>\n";
+
+ private static final String ENTRY;
+
+ static {
+ try {
+ GregorianCalendar calendar = new GregorianCalendar();
+ calendar.setTimeInMillis((new Date()).getTime());
+ XMLGregorianCalendar xmlGregCal =
+ DatatypeFactory.newInstance().newXMLGregorianCalendar(calendar);
+ ENTRY = ENTRY_STR.replace("@TIME@", xmlGregCal.toXMLFormat());
+ } catch (DatatypeConfigurationException e) {
+ throw new RuntimeException(e);
+ }
+ }
+}