Return-Path: X-Original-To: apmail-aries-commits-archive@www.apache.org Delivered-To: apmail-aries-commits-archive@www.apache.org Received: from mail.apache.org (hermes.apache.org [140.211.11.3]) by minotaur.apache.org (Postfix) with SMTP id 2E2FA18C20 for ; Tue, 19 May 2015 15:01:38 +0000 (UTC) Received: (qmail 41758 invoked by uid 500); 19 May 2015 15:01:38 -0000 Delivered-To: apmail-aries-commits-archive@aries.apache.org Received: (qmail 41685 invoked by uid 500); 19 May 2015 15:01:38 -0000 Mailing-List: contact commits-help@aries.apache.org; run by ezmlm Precedence: bulk List-Help: List-Unsubscribe: List-Post: List-Id: Reply-To: dev@aries.apache.org Delivered-To: mailing list commits@aries.apache.org Received: (qmail 41673 invoked by uid 99); 19 May 2015 15:01:38 -0000 Received: from eris.apache.org (HELO hades.apache.org) (140.211.11.105) by apache.org (qpsmtpd/0.29) with ESMTP; Tue, 19 May 2015 15:01:38 +0000 Received: from hades.apache.org (localhost [127.0.0.1]) by hades.apache.org (ASF Mail Server at hades.apache.org) with ESMTP id B7A11AC073F for ; Tue, 19 May 2015 15:01:37 +0000 (UTC) Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit Subject: svn commit: r1680310 - in /aries/trunk/jpa/examples: ./ tasklist-blueprint/ tasklist-blueprint/src/main/java/org/apache/aries/jpa/example/tasklist/blueprint/impl/ tasklist-blueprint/src/main/resources/OSGI-INF/blueprint/ tasklist-ds/ tasklist-ds/src/ma... Date: Tue, 19 May 2015 15:01:37 -0000 To: commits@aries.apache.org From: cschneider@apache.org X-Mailer: svnmailer-1.0.9 Message-Id: <20150519150137.B7A11AC073F@hades.apache.org> Author: cschneider Date: Tue May 19 15:01:36 2015 New Revision: 1680310 URL: http://svn.apache.org/r1680310 Log: [ARIES-1325] Improvements for jpa examples Added: aries/trunk/jpa/examples/tasklist-blueprint/src/main/java/org/apache/aries/jpa/example/tasklist/blueprint/impl/TasklistServlet.java aries/trunk/jpa/examples/tasklist-ds/LICENSE aries/trunk/jpa/examples/tasklist-ds/NOTICE aries/trunk/jpa/examples/tasklist-ds/src/main/java/org/apache/aries/jpa/example/ aries/trunk/jpa/examples/tasklist-ds/src/main/java/org/apache/aries/jpa/example/tasklist/ aries/trunk/jpa/examples/tasklist-ds/src/main/java/org/apache/aries/jpa/example/tasklist/ds/ aries/trunk/jpa/examples/tasklist-ds/src/main/java/org/apache/aries/jpa/example/tasklist/ds/impl/ aries/trunk/jpa/examples/tasklist-ds/src/main/java/org/apache/aries/jpa/example/tasklist/ds/impl/TaskServiceImpl.java - copied, changed from r1680273, aries/trunk/jpa/examples/tasklist-ds/src/main/java/org/apache/aries/jpa/tasklist/closure/impl/TaskServiceImpl.java aries/trunk/jpa/examples/tasklist-ds/src/main/java/org/apache/aries/jpa/example/tasklist/ds/impl/TasklistAdder.java - copied, changed from r1680273, aries/trunk/jpa/examples/tasklist-ds/src/main/java/org/apache/aries/jpa/tasklist/closure/impl/TasklistAdder.java aries/trunk/jpa/examples/tasklist-ds/src/main/java/org/apache/aries/jpa/example/tasklist/ds/impl/TasklistServlet.java Removed: aries/trunk/jpa/examples/tasklist-ds/src/main/java/org/apache/aries/jpa/tasklist/closure/impl/TaskServiceImpl.java aries/trunk/jpa/examples/tasklist-ds/src/main/java/org/apache/aries/jpa/tasklist/closure/impl/TasklistAdder.java Modified: aries/trunk/jpa/examples/README.md aries/trunk/jpa/examples/tasklist-blueprint/pom.xml aries/trunk/jpa/examples/tasklist-blueprint/src/main/resources/OSGI-INF/blueprint/context.xml aries/trunk/jpa/examples/tasklist-ds/pom.xml aries/trunk/jpa/examples/tasklist-ds/src/test/java/org/apache/aries/jpa/tasklist/closure/impl/TaskServiceImplTest.java Modified: aries/trunk/jpa/examples/README.md URL: http://svn.apache.org/viewvc/aries/trunk/jpa/examples/README.md?rev=1680310&r1=1680309&r2=1680310&view=diff ============================================================================== --- aries/trunk/jpa/examples/README.md (original) +++ aries/trunk/jpa/examples/README.md Tue May 19 15:01:36 2015 @@ -1,28 +1,27 @@ -# jpa-experiments -Exploring better ways than current aries-jpa to support jpa in OSGi +# Installation instructions for jpa-examples # copy DataSource config -cat https://raw.githubusercontent.com/cschneider/jpa-experiments/master/org.ops4j.datasource-tasklist.cfg | tac -f etc/org.ops4j.datasource-tasklist.cfg +cat https://svn.apache.org/repos/asf/aries/trunk/jpa/examples/org.ops4j.datasource-tasklist.cfg | tac -f etc/org.ops4j.datasource-tasklist.cfg -feature:repo-add mvn:org.ops4j.pax.jdbc/pax-jdbc-features/0.5.0/xml/features +feature:repo-add mvn:org.ops4j.pax.jdbc/pax-jdbc-features/0.6.0-SNAPSHOT/xml/features feature:install scr transaction pax-jdbc-config pax-jdbc-h2 pax-jdbc-pool-dbcp2 http-whiteboard install -s mvn:org.hibernate.javax.persistence/hibernate-jpa-2.1-api/1.0.0.Final # Hibernate + Dependencies -# Normally we would use the karaf feature but it install aries jpa which we do not want -install -s mvn:org.apache.servicemix.bundles/org.apache.servicemix.bundles.antlr/2.7.7_5 -install -s mvn:org.apache.servicemix.bundles/org.apache.servicemix.bundles.ant/1.8.2_2 -install -s mvn:org.apache.servicemix.bundles/org.apache.servicemix.bundles.dom4j/1.6.1_5 -install -s mvn:org.apache.servicemix.bundles/org.apache.servicemix.bundles.serp/1.14.1_1 -install -s mvn:com.fasterxml/classmate/0.9.0 -install -s mvn:org.javassist/javassist/3.18.1-GA -install -s mvn:org.jboss.spec.javax.security.jacc/jboss-jacc-api_1.4_spec/1.0.2.Final -install -s mvn:org.jboss/jandex/1.2.2.Final -install -s mvn:org.jboss.logging/jboss-logging/3.1.4.GA -install -s mvn:org.hibernate.common/hibernate-commons-annotations/4.0.4.Final -install -s mvn:org.hibernate/hibernate-core/4.3.6.Final -install -s mvn:org.hibernate/hibernate-entitymanager/4.3.6.Final +# Normally we would use the karaf feature but it installs the old aries jpa which we do not want +install -s mvn:org.apache.servicemix.bundles/org.apache.servicemix.bundles.antlr/2.7.7_5 +install -s mvn:org.apache.servicemix.bundles/org.apache.servicemix.bundles.ant/1.8.2_2 +install -s mvn:org.apache.servicemix.bundles/org.apache.servicemix.bundles.dom4j/1.6.1_5 +install -s mvn:org.apache.servicemix.bundles/org.apache.servicemix.bundles.serp/1.14.1_1 +install -s mvn:com.fasterxml/classmate/0.9.0 +install -s mvn:org.javassist/javassist/3.18.1-GA +install -s mvn:org.jboss.spec.javax.security.jacc/jboss-jacc-api_1.4_spec/1.0.2.Final +install -s mvn:org.jboss/jandex/1.2.2.Final +install -s mvn:org.jboss.logging/jboss-logging/3.1.4.GA +install -s mvn:org.hibernate.common/hibernate-commons-annotations/4.0.4.Final +install -s mvn:org.hibernate/hibernate-core/4.3.6.Final +install -s mvn:org.hibernate/hibernate-entitymanager/4.3.6.Final install -s mvn:org.hibernate/hibernate-osgi/4.3.6.Final # Eclipselink + Dependencies @@ -41,13 +40,31 @@ install -s mvn:org.apache.aries.jpa/org. install -s mvn:org.apache.aries.jpa/org.apache.aries.jpa.support/2.0.0-SNAPSHOT # Closure based example. (Make sure to start karaf with JDK 8) -install -s mvn:org.apache.aries.jpa.example/jpa-example-tasklist-model/2.0.0-SNAPSHOT -install -s mvn:org.apache.aries.jpa.example/jpa-example-tasklist-closure/2.0.0-SNAPSHOT -install -s mvn:org.apache.aries.jpa.example/jpa-example-tasklist-ui/2.0.0-SNAPSHOT +install -s mvn:org.apache.aries.jpa.example/org.apache.aries.jpa.example.tasklist.model/2.0.0-SNAPSHOT +install -s mvn:org.apache.aries.jpa.example/org.apache.aries.jpa.example.tasklist.ds/2.0.0-SNAPSHOT # Blueprint based example install -s mvn:org.apache.aries.jpa/org.apache.aries.jpa.blueprint/2.0.0-SNAPSHOT install -s mvn:org.apache.aries.jpa.example/org.apache.aries.jpa.example.tasklist.model/2.0.0-SNAPSHOT install -s mvn:org.apache.aries.jpa.example/org.apache.aries.jpa.example.tasklist.blueprint/2.0.0-SNAPSHOT -install -s mvn:org.apache.aries.jpa.example/jpa-example-tasklist-ui/2.0.0-SNAPSHOT + + +After installing the examples you can check for the services. + +service:list EntityManagerFactory + +You should see a service for the persistence unit "tasklist". + +service:list TaskService + +You should see a service provided by either the tasklist.blueprint or tasklist.ds bundle depending on the example you installed. + +http://localhost:8181/tasklist + +If you open the above url in a webbrowser you should see a list with one task. +Now add a task: +http://localhost:8181/tasklist?add&taskId=4&title=Buy more coffee + +and check it is added to the list +http://localhost:8181/tasklist Modified: aries/trunk/jpa/examples/tasklist-blueprint/pom.xml URL: http://svn.apache.org/viewvc/aries/trunk/jpa/examples/tasklist-blueprint/pom.xml?rev=1680310&r1=1680309&r2=1680310&view=diff ============================================================================== --- aries/trunk/jpa/examples/tasklist-blueprint/pom.xml (original) +++ aries/trunk/jpa/examples/tasklist-blueprint/pom.xml Tue May 19 15:01:36 2015 @@ -39,6 +39,11 @@ org.apache.aries.transaction.blueprint 1.0.2 + + javax.servlet + servlet-api + 2.5 + org.apache.aries.jpa Added: aries/trunk/jpa/examples/tasklist-blueprint/src/main/java/org/apache/aries/jpa/example/tasklist/blueprint/impl/TasklistServlet.java URL: http://svn.apache.org/viewvc/aries/trunk/jpa/examples/tasklist-blueprint/src/main/java/org/apache/aries/jpa/example/tasklist/blueprint/impl/TasklistServlet.java?rev=1680310&view=auto ============================================================================== --- aries/trunk/jpa/examples/tasklist-blueprint/src/main/java/org/apache/aries/jpa/example/tasklist/blueprint/impl/TasklistServlet.java (added) +++ aries/trunk/jpa/examples/tasklist-blueprint/src/main/java/org/apache/aries/jpa/example/tasklist/blueprint/impl/TasklistServlet.java Tue May 19 15:01:36 2015 @@ -0,0 +1,74 @@ +package org.apache.aries.jpa.example.tasklist.blueprint.impl; + +import java.io.IOException; +import java.io.PrintWriter; +import java.text.SimpleDateFormat; +import java.util.Collection; + +import javax.servlet.ServletException; +import javax.servlet.http.HttpServlet; +import javax.servlet.http.HttpServletRequest; +import javax.servlet.http.HttpServletResponse; + +import org.apache.aries.jpa.example.tasklist.model.Task; +import org.apache.aries.jpa.example.tasklist.model.TaskService; +import org.osgi.service.component.annotations.Reference; + +public class TasklistServlet extends HttpServlet { + + TaskService taskService; + + private static final long serialVersionUID = 34992072289535683L; + + @Override + protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, + IOException { + String add = req.getParameter("add"); + String taskId = req.getParameter("taskId"); + String title = req.getParameter("title"); + PrintWriter writer = resp.getWriter(); + if (add != null) { + addTask(taskId, title); + } else if (taskId != null && taskId.length() > 0) { + showTask(writer, taskId); + } else { + showTaskList(writer); + } + } + + private void addTask(String taskId, String title) { + Task task = new Task(); + task.setId(new Integer(taskId)); + task.setTitle(title); + taskService.addTask(task ); + } + + private void showTaskList(PrintWriter writer) { + writer.println("

Tasks

"); + Collection tasks = taskService.getTasks(); + for (Task task : tasks) { + writer.println("" + task.getTitle() + "
"); + } + } + + private void showTask(PrintWriter writer, String taskId) { + SimpleDateFormat sdf = new SimpleDateFormat(); + Task task = taskService.getTask(new Integer(taskId)); + if (task != null) { + writer.println("

Task " + task.getTitle() + "

"); + if (task.getDueDate() != null) { + writer.println("Due date: " + sdf.format(task.getDueDate()) + "
"); + } + writer.println(task.getDescription()); + } else { + writer.println("Task with id " + taskId + " not found"); + } + + } + + @Reference + public void setTaskService(TaskService taskService) { + this.taskService = taskService; + } + +} Modified: aries/trunk/jpa/examples/tasklist-blueprint/src/main/resources/OSGI-INF/blueprint/context.xml URL: http://svn.apache.org/viewvc/aries/trunk/jpa/examples/tasklist-blueprint/src/main/resources/OSGI-INF/blueprint/context.xml?rev=1680310&r1=1680309&r2=1680310&view=diff ============================================================================== --- aries/trunk/jpa/examples/tasklist-blueprint/src/main/resources/OSGI-INF/blueprint/context.xml (original) +++ aries/trunk/jpa/examples/tasklist-blueprint/src/main/resources/OSGI-INF/blueprint/context.xml Tue May 19 15:01:36 2015 @@ -13,7 +13,7 @@ xmlns:jpa="http://aries.apache.org/xmlns/jpan/v1.0.0" xmlns:tx="http://aries.apache.org/xmlns/transactions/v1.2.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" - xsi:schemaLocation="http://www.osgi.org/xmlns/blueprint/v1.0.0"> + xsi:schemaLocation="http://www.osgi.org/xmlns/blueprint/v1.0.0 https://osgi.org/xmlns/blueprint/v1.0.0/blueprint.xsd"> @@ -24,4 +24,17 @@ + + + + + + + + + + \ No newline at end of file Added: aries/trunk/jpa/examples/tasklist-ds/LICENSE URL: http://svn.apache.org/viewvc/aries/trunk/jpa/examples/tasklist-ds/LICENSE?rev=1680310&view=auto ============================================================================== --- aries/trunk/jpa/examples/tasklist-ds/LICENSE (added) +++ aries/trunk/jpa/examples/tasklist-ds/LICENSE Tue May 19 15:01:36 2015 @@ -0,0 +1,203 @@ + + 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. + Added: aries/trunk/jpa/examples/tasklist-ds/NOTICE URL: http://svn.apache.org/viewvc/aries/trunk/jpa/examples/tasklist-ds/NOTICE?rev=1680310&view=auto ============================================================================== --- aries/trunk/jpa/examples/tasklist-ds/NOTICE (added) +++ aries/trunk/jpa/examples/tasklist-ds/NOTICE Tue May 19 15:01:36 2015 @@ -0,0 +1,8 @@ + +Apache Aries +Copyright 2009-2011 The Apache Software Foundation + +This product includes software developed at +The Apache Software Foundation (http://www.apache.org/). + + Modified: aries/trunk/jpa/examples/tasklist-ds/pom.xml URL: http://svn.apache.org/viewvc/aries/trunk/jpa/examples/tasklist-ds/pom.xml?rev=1680310&r1=1680309&r2=1680310&view=diff ============================================================================== --- aries/trunk/jpa/examples/tasklist-ds/pom.xml (original) +++ aries/trunk/jpa/examples/tasklist-ds/pom.xml Tue May 19 15:01:36 2015 @@ -65,6 +65,11 @@ slf4j-jdk14 1.7.10
+ + javax.servlet + servlet-api + 2.5 + @@ -72,13 +77,10 @@ org.apache.felix maven-bundle-plugin - 2.5.3 + 2.5.4 true - - *, org.hibernate.proxy, - javassist.util.proxy <_dsannotations>* Copied: aries/trunk/jpa/examples/tasklist-ds/src/main/java/org/apache/aries/jpa/example/tasklist/ds/impl/TaskServiceImpl.java (from r1680273, aries/trunk/jpa/examples/tasklist-ds/src/main/java/org/apache/aries/jpa/tasklist/closure/impl/TaskServiceImpl.java) URL: http://svn.apache.org/viewvc/aries/trunk/jpa/examples/tasklist-ds/src/main/java/org/apache/aries/jpa/example/tasklist/ds/impl/TaskServiceImpl.java?p2=aries/trunk/jpa/examples/tasklist-ds/src/main/java/org/apache/aries/jpa/example/tasklist/ds/impl/TaskServiceImpl.java&p1=aries/trunk/jpa/examples/tasklist-ds/src/main/java/org/apache/aries/jpa/tasklist/closure/impl/TaskServiceImpl.java&r1=1680273&r2=1680310&rev=1680310&view=diff ============================================================================== --- aries/trunk/jpa/examples/tasklist-ds/src/main/java/org/apache/aries/jpa/tasklist/closure/impl/TaskServiceImpl.java (original) +++ aries/trunk/jpa/examples/tasklist-ds/src/main/java/org/apache/aries/jpa/example/tasklist/ds/impl/TaskServiceImpl.java Tue May 19 15:01:36 2015 @@ -16,7 +16,7 @@ * specific language governing permissions and limitations * under the License. */ -package org.apache.aries.jpa.tasklist.closure.impl; +package org.apache.aries.jpa.example.tasklist.ds.impl; import java.util.Collection; Copied: aries/trunk/jpa/examples/tasklist-ds/src/main/java/org/apache/aries/jpa/example/tasklist/ds/impl/TasklistAdder.java (from r1680273, aries/trunk/jpa/examples/tasklist-ds/src/main/java/org/apache/aries/jpa/tasklist/closure/impl/TasklistAdder.java) URL: http://svn.apache.org/viewvc/aries/trunk/jpa/examples/tasklist-ds/src/main/java/org/apache/aries/jpa/example/tasklist/ds/impl/TasklistAdder.java?p2=aries/trunk/jpa/examples/tasklist-ds/src/main/java/org/apache/aries/jpa/example/tasklist/ds/impl/TasklistAdder.java&p1=aries/trunk/jpa/examples/tasklist-ds/src/main/java/org/apache/aries/jpa/tasklist/closure/impl/TasklistAdder.java&r1=1680273&r2=1680310&rev=1680310&view=diff ============================================================================== --- aries/trunk/jpa/examples/tasklist-ds/src/main/java/org/apache/aries/jpa/tasklist/closure/impl/TasklistAdder.java (original) +++ aries/trunk/jpa/examples/tasklist-ds/src/main/java/org/apache/aries/jpa/example/tasklist/ds/impl/TasklistAdder.java Tue May 19 15:01:36 2015 @@ -16,7 +16,7 @@ * specific language governing permissions and limitations * under the License. */ -package org.apache.aries.jpa.tasklist.closure.impl; +package org.apache.aries.jpa.example.tasklist.ds.impl; import org.apache.aries.jpa.example.tasklist.model.Task; import org.apache.aries.jpa.example.tasklist.model.TaskService; Added: aries/trunk/jpa/examples/tasklist-ds/src/main/java/org/apache/aries/jpa/example/tasklist/ds/impl/TasklistServlet.java URL: http://svn.apache.org/viewvc/aries/trunk/jpa/examples/tasklist-ds/src/main/java/org/apache/aries/jpa/example/tasklist/ds/impl/TasklistServlet.java?rev=1680310&view=auto ============================================================================== --- aries/trunk/jpa/examples/tasklist-ds/src/main/java/org/apache/aries/jpa/example/tasklist/ds/impl/TasklistServlet.java (added) +++ aries/trunk/jpa/examples/tasklist-ds/src/main/java/org/apache/aries/jpa/example/tasklist/ds/impl/TasklistServlet.java Tue May 19 15:01:36 2015 @@ -0,0 +1,80 @@ +package org.apache.aries.jpa.example.tasklist.ds.impl; + +import java.io.IOException; +import java.io.PrintWriter; +import java.text.SimpleDateFormat; +import java.util.Collection; + +import javax.servlet.Servlet; +import javax.servlet.ServletException; +import javax.servlet.http.HttpServlet; +import javax.servlet.http.HttpServletRequest; +import javax.servlet.http.HttpServletResponse; + +import org.apache.aries.jpa.example.tasklist.model.Task; +import org.apache.aries.jpa.example.tasklist.model.TaskService; +import org.osgi.service.component.annotations.Component; +import org.osgi.service.component.annotations.Reference; + +@Component(immediate = true, + service = { Servlet.class }, + property = { "alias:String=/tasklist" } +) +public class TasklistServlet extends HttpServlet { + + TaskService taskService; + + private static final long serialVersionUID = 34992072289535683L; + + @Override + protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, + IOException { + String add = req.getParameter("add"); + String taskId = req.getParameter("taskId"); + String title = req.getParameter("title"); + PrintWriter writer = resp.getWriter(); + if (add != null) { + addTask(taskId, title); + } else if (taskId != null && taskId.length() > 0) { + showTask(writer, taskId); + } else { + showTaskList(writer); + } + } + + private void addTask(String taskId, String title) { + Task task = new Task(); + task.setId(new Integer(taskId)); + task.setTitle(title); + taskService.addTask(task ); + } + + private void showTaskList(PrintWriter writer) { + writer.println("

Tasks

"); + Collection tasks = taskService.getTasks(); + for (Task task : tasks) { + writer.println("" + task.getTitle() + "
"); + } + } + + private void showTask(PrintWriter writer, String taskId) { + SimpleDateFormat sdf = new SimpleDateFormat(); + Task task = taskService.getTask(new Integer(taskId)); + if (task != null) { + writer.println("

Task " + task.getTitle() + "

"); + if (task.getDueDate() != null) { + writer.println("Due date: " + sdf.format(task.getDueDate()) + "
"); + } + writer.println(task.getDescription()); + } else { + writer.println("Task with id " + taskId + " not found"); + } + + } + + @Reference + public void setTaskService(TaskService taskService) { + this.taskService = taskService; + } + +} Modified: aries/trunk/jpa/examples/tasklist-ds/src/test/java/org/apache/aries/jpa/tasklist/closure/impl/TaskServiceImplTest.java URL: http://svn.apache.org/viewvc/aries/trunk/jpa/examples/tasklist-ds/src/test/java/org/apache/aries/jpa/tasklist/closure/impl/TaskServiceImplTest.java?rev=1680310&r1=1680309&r2=1680310&view=diff ============================================================================== --- aries/trunk/jpa/examples/tasklist-ds/src/test/java/org/apache/aries/jpa/tasklist/closure/impl/TaskServiceImplTest.java (original) +++ aries/trunk/jpa/examples/tasklist-ds/src/test/java/org/apache/aries/jpa/tasklist/closure/impl/TaskServiceImplTest.java Tue May 19 15:01:36 2015 @@ -24,6 +24,7 @@ import java.util.Map; import javax.persistence.EntityManagerFactory; import javax.persistence.Persistence; +import org.apache.aries.jpa.example.tasklist.ds.impl.TaskServiceImpl; import org.apache.aries.jpa.example.tasklist.model.Task; import org.apache.aries.jpa.support.impl.EMSupplierImpl; import org.apache.aries.jpa.support.impl.ResourceLocalJpaTemplate;