You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@openjpa.apache.org by al...@apache.org on 2012/11/30 17:56:08 UTC

svn commit: r1415738 [4/9] - in /openjpa/site/trunk: content/ original.cwiki.content/

Added: openjpa/site/trunk/original.cwiki.content/enhancement-with-maven.cwiki
URL: http://svn.apache.org/viewvc/openjpa/site/trunk/original.cwiki.content/enhancement-with-maven.cwiki?rev=1415738&view=auto
==============================================================================
--- openjpa/site/trunk/original.cwiki.content/enhancement-with-maven.cwiki (added)
+++ openjpa/site/trunk/original.cwiki.content/enhancement-with-maven.cwiki Fri Nov 30 16:56:02 2012
@@ -0,0 +1,89 @@
+h2. Using the openjpa-maven-plugin
+
+The Maven plugin, formerly provided by the Codehaus project is now part of OpenJPA 2.2.0. The plugins documentation can be found [here|http://people.apache.org/~mikedd/openjpa/openjpa-maven-plugin/] until it finds a permanent home one the openjpa site. 
+
+The previous versions of the plugin can be found at the [Codehaus project|http://mojo.codehaus.org/openjpa-maven-plugin/index.html]
+
+For example, to enhance you source entity classes after they have been compiled (but exclude any POJO classes that rely upon orm.xml maappings), add the openjpa-maven-plugin to the <build> section of your pom.xml, like -
+{code}
+    <build>
+        ...
+        <plugin>
+            <groupId>org.apache.openjpa</groupId>
+            <artifactId>openjpa-maven-plugin</artifactId>
+            <version>2.2.0-SNAPSHOT</version>
+            <configuration>
+                <includes>**/entities/*.class</includes>
+                <excludes>**/entities/XML*.class</excludes>
+                <addDefaultConstructor>true</addDefaultConstructor>
+                <enforcePropertyRestrictions>true</enforcePropertyRestrictions>
+            </configuration>
+            <executions>
+                <execution>
+                    <id>enhancer</id>
+                    <phase>process-classes</phase>
+                    <goals>
+                        <goal>enhance</goal>
+                    </goals>
+                </execution>
+            </executions>
+            <dependencies>
+                <dependency>
+                    <groupId>org.apache.openjpa</groupId>
+                    <artifactId>openjpa</artifactId>
+                    <!-- set the version to be the same as the level in your runtime -->
+                    <version>1.2.2</version>
+                </dependency>
+            </dependencies>
+        </plugin>
+        ...
+    </build>
+{code}
+
+There are other goals available to create the Entity to SQL mapping and Entity to XML Schema mapping, which are documented under the [Goals section|http://mojo.codehaus.org/openjpa-maven-plugin/plugin-info.html] on the plugin website.
+
+h2. Using the maven-antrun-plugin
+
+You can use the maven-antrun-plugin to launch the OpenJPA enhancer task using ANT.  The steps are nearly identical to the ones for [Enhancing with ANT] (again, you may not need to move the persistence.xml file to the build directory, but I did for this write-up).
+
+{code}
+      <build>
+      <!-- Copy the persistence.xml file to the build dir -->
+      <!-- You can skip this step if you put the persistence.xml in src/main/resources/META-INF instead of src/main/java/META-INF -->
+      <resources>
+          <resource>
+            <directory> src/main/java </directory>
+            <includes>
+              <include> **/*.xml </include>
+              </includes>
+          </resource>
+        </resources>
+        <plugins>
+    .....           
+          <plugin>
+            <groupId>org.apache.maven.plugins</groupId>
+            <artifactId>maven-antrun-plugin</artifactId>
+            <version>1.2</version>
+            <executions>
+              <execution>
+                  <phase>process-classes</phase>
+                <configuration>
+                  <tasks>
+                      <taskdef name="openjpac" classname="org.apache.openjpa.ant.PCEnhancerTask" classpathref="maven.compile.classpath"/>
+                      <openjpac>
+                          <classpath refid="maven.compile.classpath"/>
+                      </openjpac>
+                  </tasks>
+                </configuration>
+                <goals>
+                  <goal>run</goal>
+                </goals>
+              </execution>
+            </executions>
+          </plugin>
+        </plugins>
+    ....
+      </build>
+{code}
+
+

Added: openjpa/site/trunk/original.cwiki.content/entity-enhancement.cwiki
URL: http://svn.apache.org/viewvc/openjpa/site/trunk/original.cwiki.content/entity-enhancement.cwiki?rev=1415738&view=auto
==============================================================================
--- openjpa/site/trunk/original.cwiki.content/entity-enhancement.cwiki (added)
+++ openjpa/site/trunk/original.cwiki.content/entity-enhancement.cwiki Fri Nov 30 16:56:02 2012
@@ -0,0 +1,69 @@
+{excerpt:hidden=true}How to enhance entity classes{excerpt}
+
+h1. What is Enhancement Anyway?
+
+The JPA spec requires some type of monitoring of Entity objects, but the spec does not define how to implement this monitoring. Some JPA providers auto-generate new subclasses or proxy objects that front the user's Entity objects at runtime, while others use byte-code weaving technologies to enhance the actual Entity class objects.  OpenJPA supports both mechanisms, but strongly suggests only using the [*byte-code weaving*|#byte-code] enhancement.  The [subclassing|#subclassing] support (as provided by OpenJPA) is not recommended (and is disabled by default in OpenJPA 2.0 and beyond).
+
+For complete details on entity enhancement, please checkout the section in the latest [User's Guide on Enhancement|http://openjpa.apache.org/builds/latest/docs/manual/manual.html#ref_guide_pc_enhance].  The following sections will only cover the high-level concepts and the ways to use the enhancer in different build and runtime setups.
+
+{anchor:byte-code}
+h2. Byte-code Weaving Enhancement
+
+Byte-code weaving is the preferred and recommended method of enhancement to use with OpenJPA.  This byte-code enhancement can be performed at [build-time|#build-time] or dynamically at [run-time|#dynamic].  Whichever approach is selected, the same enhancement processing is performed with the same level of functionality weaved into each Entity class.
+
+{anchor:build-time}
+
+h3. Build Time Enhancement
+
+Build time enhancement is probably the most common enhancement method to use with OpenJPA, especially in an automated JUnit test environment.  The whole OpenJPA JUnit test bucket relies on build-time enhancement.  Please follow the links below based on your development environment:
+
+* [Enhancement with ANT]
+* [Enhancement with Maven]
+* [Enhancement with Eclipse]
+
+{anchor:dynamic}
+
+h3. Dynamic Enhancement
+
+Dynamic run-time enhancement with OpenJPA comes in several different flavors, depending on your environment.  The preferred and most reliable method of dynamic enhancement is via the defined container hook in a [Java EE and OSGi environments|#javaee].  In a [JSE environment|#jse], there are a couple of choices for configuring or using dynamic enhancement.  The choice will depend on your usage patterns.
+
+{anchor:javaee}
+h4. Java EE and OSGi environments
+
+The Java EE specifications outline a mechanism for plugging in a JPA transformer (byte code enhancer) into the container's classloading processing.  Most Java EE application servers (for example, IBM's WebSphere Application Server) support this mechanism.  In addition, several of the OSGi container providers (for example, WebSphere's OSGi container) have followed a similar path and provide this classloading hook for dynamic enhancement.  If your container environment supports this mechanism with OpenJPA, this would be the preferred and easiest method of performing the byte-code enhancement.
+
+{anchor:jse}
+h4. JSE Environment
+h5. Explicit javaagent support
+The recommended way get runtime enhancement for the JSE environment is to provide a javaagent when launching the JVM that OpenJPA is running in. This is a common method to use when executing individual JUnits in a development environment because it is very painless and easy. All that is required to get runtime enhancement is to specify the -javaagent:openjpa-all-2.2.0-SNAPSHOT.jar (as an example) on the JVM configuration.
+
+More information can be found on the [Runtime Enhancement] page.
+
+h5. Implicit javaagent support
+[OPENJPA-952|https://issues.apache.org/jira/browse/OPENJPA-952] added the capability to have OpenJPA attempt to dynamically load the javaagent enhancer. If you see the following message, OpenJPA loaded the enhancer dynamically.
+bq. \[java\] 1453  jpa_app  INFO   \[main\] openjpa.Runtime - OpenJPA dynamically loaded the class enhancer. Any classes that were not enhanced at build time will be enhanced when the are loaded by the JVM.
+This method of enhancement is intended for first time users or developers as it has a number of caveats.
+* It works with both the Sun/Oracle 1.6SDK and IBM 1.6JDK.  The JRE is not sufficient.
+* If any unenhanced Entities are loaded by the JVM before an EntityManagerFactory is created, this method of enhancement will not work. If this condition is encountered, you will see the following warning:
+bq. \[java\] 1047  jpa_app  WARN   \[main\] openjpa.Enhance - Unenhanced classes were detected even though the enhancer has ran. Ensure that the EntityManagerFactory is created prior to creating any Entities.
+
+If your application uses some other method of enhancement, this support can be explicitly disabled by setting the following property in your persistence.xml.
+bq. <property name="openjpa.DynamicEnhancementAgent" value="false"/>
+
+{anchor:subclassing}
+h2. Subclassing Enhancement
+
+{note:title=Not Recommended}
+The use of OpenJPA's subclassing support is not recommended, and is disabled by default in OpenJPA 2.0 and beyond.
+{note}
+When running in a Java SE environment or in a non-Java EE 5 compliant container, OpenJPA can utilize runtime subclassing enhancement. The subclassing enhancement support was added originally as a convenience to new developers to reduce the amount of work to get a 'HelloWorld-ish' OpenJPA application working out of the box. It was never meant to run in production. So you're probably thinking that this sounds great\! OpenJPA handles enhancement automatically for me and I can stop reading this post. Wrong\! Subclassing has two major drawbacks. First off, it isn't nearly as fast as byte-code enhancement and the second drawback is that there are some documented functional problems when using the subclassing support. The moral of the story is, don't use this method of enhancement.
+
+For reference, the property that enables/disables the subclassing support is openjpa.RuntimeUnenhancedClasses.  The value "unsupported" is the recommended and default setting for this property.
+
+Additional information regarding the subclassing enhancement can be found in the [OpenJPA docs|http://openjpa.apache.org/builds/latest/docs/manual/manual.html#ref_guide_pc_enhance].
+
+h2. Author Attribution
+
+The content for this page and sub-pages was adapted from content created by OpenJPA contributor Rick Curtis from the following [WebSphere and Java Persistence|http://webspherepersistence.blogspot.com/] blog entries:
+[http://webspherepersistence.blogspot.com/2009/02/openjpa-enhancement.html]
+[http://webspherepersistence.blogspot.com/2009/04/openjpa-enhancement-eclipse-builder.html]
\ No newline at end of file

Added: openjpa/site/trunk/original.cwiki.content/events-and-news.cwiki
URL: http://svn.apache.org/viewvc/openjpa/site/trunk/original.cwiki.content/events-and-news.cwiki?rev=1415738&view=auto
==============================================================================
--- openjpa/site/trunk/original.cwiki.content/events-and-news.cwiki (added)
+++ openjpa/site/trunk/original.cwiki.content/events-and-news.cwiki Fri Nov 30 16:56:02 2012
@@ -0,0 +1,4 @@
+{excerpt:hidden=true}OpenJPA related events{excerpt} 
+
+h2. News Archive
+{blog-posts}

Added: openjpa/site/trunk/original.cwiki.content/faq.cwiki
URL: http://svn.apache.org/viewvc/openjpa/site/trunk/original.cwiki.content/faq.cwiki?rev=1415738&view=auto
==============================================================================
--- openjpa/site/trunk/original.cwiki.content/faq.cwiki (added)
+++ openjpa/site/trunk/original.cwiki.content/faq.cwiki Fri Nov 30 16:56:02 2012
@@ -0,0 +1,133 @@
+{excerpt:hidden=true}Frequently Asked Questions about the OpenJPA project{excerpt}
+
+h1. FAQ
+
+{toc:style=disc|indent=20px|minLevel=2}
+
+h2. General
+
+h3. What is OpenJPA?
+
+OpenJPA is a 100% open-source implementation of the Java Persistence API (JPA), which is the persistence component for EJB in the [Java EE 5 specification|http://java.sun.com/javaee/].
+
+h3. What is the history of OpenJPA?
+
+OpenJPA has its roots in the popular Kodo product, which was created by SolarMetric, Inc. in 2001. BEA Systems, Inc. purchased SolarMetric in November of 2005, and soon thereafter [announced|http://dev2dev.bea.com/pub/a/2006/02/interview-kodo-opensource.html] that they would be donating the bulk of the code to the Apache Software Foundation. OpenJPA is the result of that donation.
+
+h3. What is the current relationship between Kodo and OpenJPA?
+
+Version 4.1 of Kodo will be based on the OpenJPA code base.
+
+h3. What is the current status of the project?
+
+OpenJPA is a top-level project at the Apache Software Foundation.
+
+h3. Where can I download OpenJPA?
+
+Look at the [Downloads] page.
+
+h3. Does OpenJPA work with my application server or container?
+
+See [Integration].
+
+h3. How can I contribute to OpenJPA?
+
+Check out the [Get Involved] page.
+
+h2. Technical
+
+h3. How do I figure out which version of OpenJPA I am running?
+
+You can get version number and other details of OpenJPA jar you are using by:
+
+{code}java -jar /path/to/your/openjpa.jar{code}
+
+h3. How do I see the SQL that OpenJPA is executing?
+
+OpenJPA provides configurable channel-based logging, as described in the chapter on [Logging|http://openjpa.apache.org/builds/latest/docs/manual/manual.html#ref_guide_logging]. The simplest example of enabling verbose logging is by using the following property in your {{persistence.xml}} file:
+
+{code:XML}
+<persistence xmlns="http://java.sun.com/xml/ns/persistence"
+    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+    version="1.0">
+    <persistence-unit name="example-logging" transaction-type="RESOURCE_LOCAL">
+        <properties>
+            <property name="openjpa.Log" value="SQL=TRACE"/>
+        </properties>
+    </persistence-unit>
+</persistence>
+{code}
+
+
+h3. How do I enable connection pooling in OpenJPA?
+
+As of the 2.1.0 release, OpenJPA includes the [Apache DBCP|http://jakarta.apache.org/commons/dbcp/] connection pool. You can also use any third-party connection pool that is configurable via the JDBC DataSource API (which most are). The following {{persistence.xml}} example shows how to use OpenJPA with a [Apache Derby|http://db.apache.org/derby/] database and the [Apache DBCP|http://jakarta.apache.org/commons/dbcp/] connection pool:
+
+{code:XML}
+<persistence xmlns="http://java.sun.com/xml/ns/persistence"
+    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+    version="1.0">
+    <persistence-unit name="example-derby" transaction-type="RESOURCE_LOCAL">
+        <properties>
+            <property name="openjpa.ConnectionProperties" 
+                value="DriverClassName=org.apache.derby.jdbc.ClientDriver,
+                  Url=jdbc:derby://localhost:1527/database, 
+                  MaxActive=100, 
+                  MaxWait=10000, 
+                  TestOnBorrow=true, 
+                  Username=user, 
+                  Password=secret"/>
+            <property name="openjpa.ConnectionDriverName" 
+                value="org.apache.commons.dbcp.BasicDataSource"/>
+        </properties>
+    </persistence-unit>
+</persistence>
+{code}
+
+See the documentation on [Using a Third-Party DataSource|http://openjpa.apache.org/builds/latest/docs/manual/manual.html#ref_guide_dbsetup_thirdparty] for further details.
+                                                         
+h3. Can OpenJPA reorder SQL statements to satisfy database foreign key constraints?
+
+Yes. OpenJPA can reorder and/or batch the SQL statements using different configurable strategies. The default strategy is capable of reordering the SQL statements to satisfy foreign key constraints. However ,you must tell OpenJPA to read the existing foreign key information from the database schema:
+
+{code:XML}
+<property name="openjpa.jdbc.SchemaFactory" value="native(ForeignKeys=true)"/>
+{code}
+
+
+See the documentation on [Schema Factory|http://openjpa.apache.org/builds/latest/docs/manual/manual.html#ref_guide_schema_info_list] for further details.
+
+h3. Why OpenJPA is not creating foreign key constraints on the database tables?
+
+By default, OpenJPA does not create foreign key constraints on new tables that gets created according to O-R mapping annotation/descriptors. You can change this default behavior via following configuration property
+{code:XML}
+<property name="openjpa.jdbc.MappingDefaults" value="ForeignKeyDeleteAction=restrict, JoinForeignKeyDeleteAction=restrict"/>
+{code}
+to create foreign key constraints on the database tables generated by OpenJPA. 
+
+h3. Can OpenJPA map a one-sided one-many association without a cross table?
+
+Yes. Standard JPA specification use a cross table to map one-sided one-to-many relation without a {{mappedBy}} inverse side. Often, you would like to create a one-to-many association based on an inverse foreign key (logical or actual) in the table of the related type. OpenJPA supports this mapping via {{@ElementJoinColumn}} annotation. The following example will map the collection of {{LineItem}} of a {{Subscription}} via a foreign key of {{LINEITEM}} table referring to primary key of {{SUBSCRIPTION}} table.
+{code:JAVA}
+package org.mag.subscribe;
+
+import org.apache.openjpa.persistence.jdbc.*;
+
+@Entity
+public class LineItem {
+    // has no inverse relation to Subscription
+}
+
+@Entity
+@Table(name="SUB", schema="CNTRCT")
+public class Subscription {
+    @Id 
+    private long id;
+
+    @OneToMany
+    @ElementJoinColumn(name="SUB_ID", referencedColumnName="ID")
+    private Collection<LineItem> items;
+
+    ...
+}
+{code}

Added: openjpa/site/trunk/original.cwiki.content/fetch-statistics.cwiki
URL: http://svn.apache.org/viewvc/openjpa/site/trunk/original.cwiki.content/fetch-statistics.cwiki?rev=1415738&view=auto
==============================================================================
--- openjpa/site/trunk/original.cwiki.content/fetch-statistics.cwiki (added)
+++ openjpa/site/trunk/original.cwiki.content/fetch-statistics.cwiki Fri Nov 30 16:56:02 2012
@@ -0,0 +1,41 @@
+h1. Fetch Statistics
+
+The OpenJPA Fetch Statistics Tool (FST) monitors persistent field access and helps determine which fields in an application are not used. This tool is a development / test time tool that can help a developer properly tune an application.
+
+h2. Note
+
+* Currently, FST only works with runtime enhancement (javaagent or in JEE container hook).
+
+* The persistent fields which satisfy all the following conditions will be tracked :
+** The field is fetched eagerly.
+** The field is not a primary key.
+** The field is not defined as a version field.
+
+h2. Download
+
+The latest OpenJPA FST jar file can be download from the [SNAPSHOT Repository|https://repository.apache.org/content/groups/snapshots/org/apache/openjpa/openjpa-fetch-statistics/] or can be built from the source code in [svn|https://svn.apache.org/repos/asf/openjpa/trunk/openjpa-tools/openjpa-fetch-statistics/] by using Maven 2.2.1 and Java SE 6.
+
+h2. Configuration
+ * JSE - Append the path of openjpa-fetch-statistics-version-SNAPSHOT.jar file to the classpath prior to lanuching the JVM.
+ * [Websphere Application Server|For Websphere Application Server]
+ * OSGi -- ?? -- Probably need another module that creates a proper bundle.
+
+h2. Statistics Collecting and Monitoring
+{warning:title=Performance Consideration}
+There will be a large performance impact when running this tooling. It is not supported, nor recommended for production use. *This tool should not be used on a production machine.*
+{warning} 
+* When this tool is configured, it will be active for all persistence units in the JVM. Statistics will be dumped via the openjpa.Runtime channel with the INFO level every 10 minutes, or when the JVM terminates. 
+
+{info:title=Example output}
+\[7/13/12 9:05:44:265 CDT\] 00000072 Runtime       I   CWWJP9990I: openjpa.Runtime: Info: Successfully collected fetch statistics from Entities \[org.apache.openjpa.test.Address\]. The following fields are FetchType.EAGER and were never fetched [ total 7 ] : 
+org.apache.openjpa.test.Address.city
+org.apache.openjpa.test.Address.country
+org.apache.openjpa.test.Address.phone
+org.apache.openjpa.test.Address.state
+org.apache.openjpa.test.Address.street1
+org.apache.openjpa.test.Address.street2
+org.apache.openjpa.test.Address.zip
+{info} 
+
+h2. Configuration removal
+* Stop the JVM and reverse the steps completed to configure the tool.
\ No newline at end of file

Added: openjpa/site/trunk/original.cwiki.content/findbugs-presentation-notes.cwiki
URL: http://svn.apache.org/viewvc/openjpa/site/trunk/original.cwiki.content/findbugs-presentation-notes.cwiki?rev=1415738&view=auto
==============================================================================
--- openjpa/site/trunk/original.cwiki.content/findbugs-presentation-notes.cwiki (added)
+++ openjpa/site/trunk/original.cwiki.content/findbugs-presentation-notes.cwiki Fri Nov 30 16:56:02 2012
@@ -0,0 +1,36 @@
+Bill Pugh
+
+(side note: compiling with "-target jsr14" will allow us to use generics and compile to JDK 1.4 usable code)
+
+Static analysis
+    Analyzes program w/out executing
+    Not a replacement for testing
+
+Find bugs that are one step removed from a syntax error
+
+Finding different categories of problems
+
+"Embrace and fix your dumb mistakes"
+
+Bad method calls: not using return parameters, not throwing newly constructed exceptions,
+ etc.
+
+OpenJPA 38 issues (35 critical)
+
+Checks for null when subsequent actions would cause an NPE (numerous found in OpenJPA)
+
+Bad practices, like hashCode() w/out equals()
+
+Feedback about API-specific findbugs detectors (e.g., for JPA) would be appreciated
+
+OpenJPA is "good" to "average" in the number of bugs found.
+
+OpenJPA:
+
+ SimpleDateFormat is not thread-safe
+
+
+
+
+
+

Added: openjpa/site/trunk/original.cwiki.content/found-a-bug.cwiki
URL: http://svn.apache.org/viewvc/openjpa/site/trunk/original.cwiki.content/found-a-bug.cwiki?rev=1415738&view=auto
==============================================================================
--- openjpa/site/trunk/original.cwiki.content/found-a-bug.cwiki (added)
+++ openjpa/site/trunk/original.cwiki.content/found-a-bug.cwiki Fri Nov 30 16:56:02 2012
@@ -0,0 +1,37 @@
+{excerpt:hidden=true}How to report a bug you find in OpenJPA{excerpt}
+
+h2. Found a Bug?
+
+If you think you've found a problem with OpenJPA, there are several ways to proceed.
+
+You can begin by raising the issue on the OpenJPA User or Developer mailing lists (see [Mailing Lists]).
+
+You can also search JIRA, our issue-tracking system, to see if the problem has already been noted (visit [JIRA|http://issues.apache.org/jira/browse/OPENJPA]). If the issue is not listed there, you can add a new JIRA issue describing it. Please include detailed steps to reproduce the problem.
+
+If you have a fix for the issue, you can generate a patch file to send the fix to us. You need to check out the current source code from Subversion (see [Source Code]), make the necessary changes (see [Coding Standards]), and then do a full build with all tests enabled (see [Building]) and make sure the unit tests runs as expected (try {{maven clean install}} to run a full build), and of course, confirm that the problem is actually fixed. Then, go to the root directory of your OpenJPA checkout, and run a command like {{svn diff > OPENJPA-<JIRA_NUMBER>-<BRANCH_ID>.patch}} to generate a patch file.
+
+To submit a patch, create an issue in JIRA that describes the problem, add your patch file as an attachment (don't forget to select the "Grant license to ASF for inclusion in ASF works" option), and then edit the JIRA to select the [Patch Available|https://issues.apache.org/jira/secure/IssueNavigator.jspa?mode=hide&requestId=12313253] check box.  Please include detailed steps to reproduce the problem in the issue description, and a test case in the patch where possible (see [Testing]).
+
+For larger contributions, like new features or more complex bug fixes, you should also have an [Individual Contributor License Agreement|http://www.apache.org/licenses/#clas] on file with the ASF.
+
+
+Thanks for working with us to improve Apache OpenJPA!
+
+h2. Reporting Security Vulnerabilities
+
+The Apache Software Foundation takes a very active stance in eliminating security problems and denial of service attacks against the code we provide.
+
+We strongly encourage folks to report any such problems discovered in OpenJPA to our private PMC mailing list [mailto:private@openjpa.apache.org] first, before disclosing them in a public forum.
+
+Please note that the private PMC mailing list should only be used for reporting undisclosed security vulnerabilities and managing the process of fixing such vulnerabilities until they are made public. We will not accept regular bug reports or other general user queries at this address.
+
+If you need to report a bug that is already a disclosed security vulnerability, please use the regular bug reporting process above.
+
+Questions about:
+* how to securely configure OpenJPA
+* if a vulnerability applies to your particular application or OpenJPA level
+* obtaining further information on a published vulnerability
+* availability of patches and/or new releases
+
+should be address to the users mailing list. Please see the [Mailing Lists] page for details of how to subscribe.
+

Added: openjpa/site/trunk/original.cwiki.content/get-involved.cwiki
URL: http://svn.apache.org/viewvc/openjpa/site/trunk/original.cwiki.content/get-involved.cwiki?rev=1415738&view=auto
==============================================================================
--- openjpa/site/trunk/original.cwiki.content/get-involved.cwiki (added)
+++ openjpa/site/trunk/original.cwiki.content/get-involved.cwiki Fri Nov 30 16:56:02 2012
@@ -0,0 +1,38 @@
+{excerpt:hidden=true}Information on getting involved with the OpenJPA project{excerpt}
+
+h2. Join the Apache OpenJPA Community
+
+The Apache OpenJPA project is being built by the open source community for the open source community - we welcome your input and contributions!
+
+h3. What we are looking for
+
+ * Source code and fixes contributions
+ * Test cases for issues encountered during application development 
+ * Documentation assistance
+ * Product and feature suggestions
+ * Detailed and constructive feedback
+ * Articles and whitepapers
+
+h3. How do I Contribute?
+
+ * To discuss Apache OpenJPA topics check out the [mailing lists].
+ * Bugs and other issues can be posted on the project [JIRA|http://issues.apache.org/jira/browse/OPENJPA].
+
+h3. I have encountered an issue with OpenJPA. What do I do now?
+
+  * Post a message to OpenJPA User's list to discuss the issue.
+  * Search existing [issues|http://issues.apache.org/jira/secure/IssueNavigator.jspa?reset=true&mode=hide&pid=12310351] to see whether someone had already encountered the same issue.
+  * If this issue is never encountered before, create a [JIRA issue|http://issues.apache.org/jira/browse/OPENJPA].
+  * Develop a test case to demonstrate the issue.  Here are some [useful tips and guidelines|Writing Test Cases For OpenJPA] on how to develop a test case to contribute to OpenJPA repository. 
+  * Attach the new test to JIRA issue. 
+  * Check out the [Found a Bug] page for more details on creating and submitting patches.
+
+h3. I have encountered an issue with OpenJPA and have fixed it in the OpenJPA source code. How do I get the changes into OpenJPA?
+ * Create a [JIRA issue|http://issues.apache.org/jira/browse/OPENJPA] that describes the changes you've made (you'll need an Apache JIRA account to do this).
+ * Check out the OpenJPA source code and make your changes. 
+ * Create test cases to validate your changes. Here are some [useful tips and guidelines|Writing Test Cases For OpenJPA] on how to develop a test case to contribute to OpenJPA repository. 
+ * {{'svn add'}} any new files.
+ * Run {{'mvn test -Dtest=<MyTestCase>'}} to validate your change. You need to specify the test to run by its simple name without package name.
+ * Run the checkin tests by running {{'mvn test'}} for any possible regression. This should take 20-50 minutes or so depending on the release branch.
+ * Check out the [Found a Bug] page for more details on creating and submitting patches.
+ * Wait for a committer to review and check in your changes.

Added: openjpa/site/trunk/original.cwiki.content/getting-started.cwiki
URL: http://svn.apache.org/viewvc/openjpa/site/trunk/original.cwiki.content/getting-started.cwiki?rev=1415738&view=auto
==============================================================================
--- openjpa/site/trunk/original.cwiki.content/getting-started.cwiki (added)
+++ openjpa/site/trunk/original.cwiki.content/getting-started.cwiki Fri Nov 30 16:56:02 2012
@@ -0,0 +1,45 @@
+h3. Notes
+These instructions detail the steps required to run a give sample for a number of different environments. You can substitute any of the directories in the \[binary download\]\examples\ directory for *hellojpa* in the instructions below to run a different sample.
+
+h3. Getting Started with the Eclipse
+
+# Download the OpenJPA binary release from the [downloads] page and unpack it by double-clicking it.
+# Launch Eclipse (this sample was tested with Eclipse 3.2.1, but any recent version should work).
+# Select the *File* menu, traverse to the *New* sub-menu, and select *Project*.
+# On the *Select a wizard* page, select *Java Project from Existing Ant Buildfile*, then click the *Next* button.
+# Hit the *Browse* button next to the *Ant Buildfile* field, and navigate to the unpacked OpenJPA zip file on the desktop, then traverse through *examples*, then *hellojpa*, and select the *build.xml* file and hit the *Open* button.
+# Hit the *Finish* button on the wizard.
+# A new project will open, containing the OpenJPA jar and all its dependencies.
+# On the *Package Explorer*, expand the top-level folder, then the *examples* folder, then *hellojpa*.
+# Select the *build.xml* file in the *hellojpa* folder (note that there is also a *build.xml* file in the parent folder, which should not be selected). Right-click the *build.xml* file, and select the *Run As* sub-menu, then select *Ant Build*.
+# The database will be initialized (using the stand-alone Derby database, which is included with the OpenJPA distribution) and the *Main.java* class will be run. In the *Console*, you should see the text _Hello Persistence!_.
+# Congratulations! You have run your first sample program using OpenJPA. Examine the *Main.java* example program, as well as the *Message.java* entity class, play with them by adding fields and working on new persistence operations. Have fun!
+
+h3. Getting Started with the Console
+
+# Ensure that you have [Apache Ant|http://ant.apache.org/] installed (this sample was tested with ant 1.6.5, but any recent version should work).
+# Download the OpenJPA binary release from the [downloads] page and unpack it by double-clicking it.
+# Launch a console, such as *cmd.exe* on Windows, *Terminal.app* on Mac, or *xterm* on UNIX.
+# Change directories to the Desktop, then cd to the unpacked OpenJPA folder.
+# cd to the *examples* subdirectory, then to the *hellojpa* subdirectory.
+# Run *ant*, which will compile the classes and run the sample application. At the end of the build, you should see the text _Hello Persistence!_.
+# Congratulations! You have run your first sample program using OpenJPA. Examine the *Main.java* example program, as well as the *Message.java* entity class, play with them by adding fields and working on new persistence operations. Have fun!
+
+h3. Getting Started with Netbeans
+
+# Download the OpenJPA binary release from the [downloads] page and unpack it by double-clicking it.
+# Launch Netbeans (this sample was tested with Netbeans 5.5, but any recent version should work).
+# Select the *File* menu and select *New Project*.
+# On the *New Project* page, select Category:*General* Projects:*Java Project with Existing Ant Script*, then click the *Next* button.
+# Press the *Browse* button next to the *Location* field, and navigate to the unpacked OpenJPA directory
+# Press the *Browse* button next to the *Build Script* field, and navigate to the unpacked OpenJPA directory through *examples*, then *hellojpa*, and select the *build.xml* file and press the *Open* button.
+# Type a name for the project, press *Set as Main Project* and press the *Next* button on the wizard.
+# Press *Next* to accept the *Build and Run Actions*.
+# On the *Source Package Folders* page, press *Add Folder*, select the *examples* folder, and press *Next*.
+# On the *Java Sources Classpath* page, press *Add JAR/Folder* and select the openjpa-x.x.x/lib/geronimo-jpa_3.0_spec-1.0.jar which contains the JPA API classes which is used to compile against.
+# Press *Finish*
+# A new project will open, containing the OpenJPA jar and the examples source files.
+# On the *Package Explorer*, expand the top-level folder, then the *examples* folder, then *hellojpa*.
+# Navigate to the *build.xml* file in the *hellojpa* folder (note that there is also a *build.xml* file in the parent folder, which should not be used). Right-click the *build.xml* file, and select the *Run Target* sub-menu, then select *run*.
+# The database will be initialized (using the stand-alone Derby database, which is included with the OpenJPA distribution) and the *Main.java* class will be run. In the *Console*, you should see the text _Hello Persistence!_.
+# Congratulations! You have run your first sample program using OpenJPA. Examine the *Main.java* example program, as well as the *Message.java* entity class, play with them by adding fields and working on new persistence operations. Have fun!
\ No newline at end of file

Added: openjpa/site/trunk/original.cwiki.content/index-top-link.cwiki
URL: http://svn.apache.org/viewvc/openjpa/site/trunk/original.cwiki.content/index-top-link.cwiki?rev=1415738&view=auto
==============================================================================
--- openjpa/site/trunk/original.cwiki.content/index-top-link.cwiki (added)
+++ openjpa/site/trunk/original.cwiki.content/index-top-link.cwiki Fri Nov 30 16:56:02 2012
@@ -0,0 +1 @@
+[Index]
\ No newline at end of file

Added: openjpa/site/trunk/original.cwiki.content/index.cwiki
URL: http://svn.apache.org/viewvc/openjpa/site/trunk/original.cwiki.content/index.cwiki?rev=1415738&view=auto
==============================================================================
--- openjpa/site/trunk/original.cwiki.content/index.cwiki (added)
+++ openjpa/site/trunk/original.cwiki.content/index.cwiki Fri Nov 30 16:56:02 2012
@@ -0,0 +1,45 @@
+h2. Welcome to the Apache OpenJPA project
+\\
+{include:openjpa:Intro}
+
+\\ 
+
+{hide-from}
+{section}
+{column:width=10%}{column}
+{column:width=20%}{lozenge:icon=!http://openjpa.apache.org/images/fotolia/Fotolia_9174675_Download.png!|link=http://openjpa.apache.org/downloads.html|title=Download Apache OpenJPA|arrow=none|width=100%}
+{lozenge}{column}
+{column:width=10%}{column}
+{column:width=20%}{lozenge:icon=!http://openjpa.apache.org/images/fotolia/Fotolia_9174675_Clock.png!|link=http://openjpa.apache.org/quick-start.html|title=Quick Start Guide|arrow=none|width=100%}
+{lozenge}{column}
+{column:width=10%}{column}
+{column:width=20%}{lozenge:icon=!http://openjpa.apache.org/images/fotolia/Fotolia_9174675_Information.png!|link=http://openjpa.apache.org/documentation.html|title=User's Guide|arrow=none|width=100%}
+{lozenge}{column}
+{column:width=10%}{column}
+{section}
+{hide-from}
+
+\\ 
+
+h2. [News|Events and News] 
+
+\\
+
+{blog-posts:max=5} 
+
+\\
+
+h2. Resources
+
+* [Quick Start Guide to OpenJPA|Quick Start]
+* [Obtaining OpenJPA|Obtaining]
+* [OpenJPA Documentation|Documentation]
+* [Integration with Containers and Application Servers|Integration]
+* [Enhancing entities with Maven2|Entity Enhancement]
+* OpenJPA can be browsed (and checked out using [SVN|http://subversion.tigris.org/] from): [http://svn.apache.org/repos/asf/openjpa/trunk/]
+* Bugs and other issues can be reported at: [http://issues.apache.org/jira/browse/OPENJPA]
+* Development questions can be addressed to: [mailto:dev@openjpa.apache.org] ([archives|http://mail-archives.apache.org/mod_mbox/openjpa-dev/])
+* [OpenJPA development resources|OpenJPA Development Resources]
+ 
+\\
+

Added: openjpa/site/trunk/original.cwiki.content/integration.cwiki
URL: http://svn.apache.org/viewvc/openjpa/site/trunk/original.cwiki.content/integration.cwiki?rev=1415738&view=auto
==============================================================================
--- openjpa/site/trunk/original.cwiki.content/integration.cwiki (added)
+++ openjpa/site/trunk/original.cwiki.content/integration.cwiki Fri Nov 30 16:56:02 2012
@@ -0,0 +1,59 @@
+{excerpt:hidden=true}How to integrate OpenJPA with various containers and application servers{excerpt}
+
+h2. Runtime Dependencies
+
+The binary release download of OpenJPA includes all of the code needed to run in a stand-alone Java SE JVM or within a Java EE application server.
+See [Build and Runtime Dependencies] for details on the required Java levels and runtime artifacts.
+
+
+h2. Integrating with Apache TomEE:
+
+[Apache TomEE|http://tomee.apache.org/] is a distribution of Tomcat bundled with OpenJPA and the other necessary components to make it a Java EE 6 compliant Web Profile implementation.  Apache TomEE 1.0.0 and later include OpenJPA 2.2.x.  TomEE works in [Eclipse using the Tomcat adapter|http://www.youtube.com/watch?v=Lr8pxEACVRI] and you can simply deploy a web archive that contains a persistence unit without the need to include OpenJPA in the webapp.  Unlike putting OpenJPA in Tomcat, TomEE supports full container managed EntityManagers and JTA persistence units.
+
+h2. Integrating with Apache TomEE:
+
+[Apache TomEE|http://tomee.apache.org/] is a distribution of Tomcat bundled with OpenJPA and the other necessary components to make it a Java EE 6 compliant Web Profile implementation.  Apache TomEE 1.0.0 and later include OpenJPA 2.2.x.  TomEE works in [Eclipse using the Tomcat adapter|http://www.youtube.com/watch?v=Lr8pxEACVRI] and you can simply deploy a web archive that contains a persistence unit without the need to include OpenJPA in the webapp.  Unlike putting OpenJPA in Tomcat, TomEE supports full container managed EntityManagers and JTA persistence units.
+
+h2. Integrating with Apache Geronimo:
+
+[Apache Geronimo|http://geronimo.apache.org/] V2.0.2 through 2.1.3 include OpenJPA 1.0.x and you can simply deploy an enterprise archive, web archive, or EJB-JAR that contains a persistence unit.
+Apache Geronimo V2.1.4 includes OpenJPA 1.2.x and you can simply deploy an enterprise archive, web archive, or EJB-JAR that contains a persistence unit.
+
+h2. Integrating with GlassFish:
+
+Since [GlassFish|http://glassfish.dev.java.net] implements the Java Persistence API 1.0 SPI, it is very easy to use OpenJPA in Glassfish. See [Sahoo's blog |http://weblogs.java.net/blog/ss141213/archive/2006/07/using_openjpa_a.html] for further details.
+
+h2. Integrating with Sun Java System Application Server 9.x:
+
+Since Sun Java System Application Server is based on code from the [GlassFish project|http://glassfish.dev.java.net], the instructions to use OpenJPA in GlassFish and Sun Java System Application Server remain the same. 
+
+h2. Integrating with IBM WebSphere Application Server:
+
+See [IBM WebSphere Developer Technical Journal: Leveraging OpenJPA with WebSphere Application Server V6.1|http://www-128.ibm.com/developerworks/websphere/techjournal/0612_barcia/0612_barcia.html].
+Also, WebSphere Application Server V6.1 can download and install the [EJB3 Feature Pack|http://www-01.ibm.com/support/docview.wss?rs=177&uid=swg21287579], which includes OpenJPA 1.0.x.
+[WebSphere Application Server V7.0|http://www.ibm.com/developerworks/downloads/ws/was/] includes OpenJPA 1.2.x and you can simply deploy an enterprise archive, web archive, or EJB-JAR that contains a persistence unit.  
+The [WebSphere Application Server V7 Feature Pack for OSGi Applications and Java Persistence API 2.0|http://www-01.ibm.com/software/webservers/appserv/was/featurepacks/osgi/] includes OpenJPA 2.0 and provides the use of the JPA 2.0 programming model within Java EE5 and OSGi applications.
+
+h2. Integrating with IBM WebSphere Application Server Community Edition:
+
+[WebSphere Application Server Community Edition|http://www.ibm.com/developerworks/websphere/zones/was/wasce.html] V2.0.0.2 through 2.1.1.1 include OpenJPA 1.0.x and you can simply deploy an enterprise archive, web archive, or EJB-JAR that contains a persistence unit.
+WebSphere Application Server Community Edition V2.1.x releases after V2.1.1.1 will include OpenJPA 1.2.x and you can simply deploy an enterprise archive, web archive, or EJB-JAR that contains a persistence unit.
+
+
+h2. Integrating with JOnAS Application Server V 4.X (J2EE 1.4 / EJB2.1 Container):
+
+OpenJPA can successfully be integrated with the JOnAS 4.x Application server family. I succeeded in configuring OpenJPA to use managed JTA transactions of JOnAS, which means that you can use OpenJPA in parallel to EJB 2.1 CMP/BMP  Entity Beans within the SAME container managed transactions of your JOnAS Application Server. See [Hans Prueller's blog entry|http://hanzz.zapto.org/index.php?option=com_content&task=view&id=105&Itemid=31] for further details.
+
+h2. Integrating with BEA Weblogic Server 10:
+
+[BEA WebLogic Server 10|http://www.bea.com/framework.jsp?CNT=index.htm&FP=/content/products/weblogic/] includes OpenJPA. To use OpenJPA in a WebLogic Server environment, you can simply deploy an enterprise archive, web archive, or EJB-JAR that contains a persistence unit. The default persistence provider in WebLogic Server is OpenJPA + Kodo, so you can either leave the <provider> element out of your persistence.xml file, or set it to org.apache.openjpa.persistence.PersistenceProviderImpl.
+
+[BEA Kodo|http://www.bea.com/framework.jsp?CNT=index.htm&FP=/content/products/weblogic/kodo/] is built on top of OpenJPA, and so includes the OpenJPA jars.
+
+h2. Integrating with Spring:
+
+It is not necessary to configure a Spring loadTimeWeaver when using OpenJPA build time enhancement. The following warning message will be logged by OpenJPA when creating an EntityManagerFactory but it can be safely ignored.
+
+bq. WARN   \[main\] openjpa.Runtime - An error occurred while registering a ClassTransformer with PersistenceUnitInfo: name 'PuName', root URL \[file:/.../\]. The error has been consumed. To see it, set your openjpa.Runtime log level to TRACE. Load-time class transformation will not be available.
+
+Please see the [Spring documentation|http://static.springframework.org/spring/docs/2.0.x/reference/orm.html#orm-jpa-setup-lcemfb] for more information.

Added: openjpa/site/trunk/original.cwiki.content/intro.cwiki
URL: http://svn.apache.org/viewvc/openjpa/site/trunk/original.cwiki.content/intro.cwiki?rev=1415738&view=auto
==============================================================================
--- openjpa/site/trunk/original.cwiki.content/intro.cwiki (added)
+++ openjpa/site/trunk/original.cwiki.content/intro.cwiki Fri Nov 30 16:56:02 2012
@@ -0,0 +1,7 @@
+Apache OpenJPA is a Java persistence project at [The Apache Software Foundation|http://apache.org] that can be used as a stand-alone [POJO|http://en.wikipedia.org/wiki/POJO] persistence layer or [integrated|Integration] into any Java EE compliant container and many other lightweight frameworks, such as Tomcat and Spring. 
+
+The [1.x releases|openjpa:Downloads] (1.2.2 is the latest) are a production ready, feature-rich, compliant implementation of the Java Persistence API (JPA) 1.0 part of the [JSR-220 Enterprise Java Beans 3.0|http://jcp.org/en/jsr/detail?id=220] specification, which pass the Sun JPA 1.0b Technology Compatibility Kit.
+
+The [2.x releases|openjpa:Downloads] (2.2.0 is the latest) are a production ready, compliant implementation of the [JSR-317 Java Persistence 2.0|http://jcp.org/en/jsr/detail?id=317] specification, which is backwards compatible to the JPA 1.0 specification and passes the Sun JPA 2.0 Technology Compatibility Kit.
+
+The upcoming 2.3 release is based off of the 2.2.x release stream and will contain some additional features (TBD). 
\ No newline at end of file

Added: openjpa/site/trunk/original.cwiki.content/jconsole-datacache-plugin.cwiki
URL: http://svn.apache.org/viewvc/openjpa/site/trunk/original.cwiki.content/jconsole-datacache-plugin.cwiki?rev=1415738&view=auto
==============================================================================
--- openjpa/site/trunk/original.cwiki.content/jconsole-datacache-plugin.cwiki (added)
+++ openjpa/site/trunk/original.cwiki.content/jconsole-datacache-plugin.cwiki Fri Nov 30 16:56:02 2012
@@ -0,0 +1,29 @@
+h1. JConsole DataCache Plugin
+
+This plugin is used to extend the JConsole that is bundled as part of the [1.5 JDK|http://download.oracle.com/javase/1.5.0/docs/guide/management/jconsole.html]. 
+
+h3. Download
+
+The latest OpenJPA Tools JAR file can be download from the [SNAPSHOT Repository|https://repository.apache.org/content/repositories/snapshots/org/apache/openjpa/tools/openjpa-tools/0.1.0-SNAPSHOT/] or can be built from the source code in [svn|https://svn.apache.org/repos/asf/openjpa/tools/trunk] by using Maven 2.2.1 and Java SE 6.
+
+h3. JSE Usage
+
+bq. This description assumes your application is running the on same machine as JConsole and application JVM matches the JConsole JVM.
+
+# Start an OpenJPA application with the following configuration properties set:
+{code:xml}
+<property name="openjpa.DataCache" value="true"/>
+<property name="openjpa.Instrumentation" value="jmx(Instrument='DataCache')"/>
+{code}
+# Launch JConsole and provide the openjpa-tools.jar via the -pluginpath switch.
+{code}
+> [java_home]\bin\jconsole -pluginpath [path_to_openjpa-tools.jar]
+{code}
+# Select the PID which corresponds to your application.
+  !pid.jpg|thumbnail,border=1!
+# If all goes well, at this point you should see a tab labeled DataCache-\[pu_name\]-\[n\]
+  !screen.jpg|thumbnail,border=1!
+
+h3. JEE Usage
+// In progress
+http://wasdynacache.blogspot.com/2010/03/getting-jconsole-working-with-websphere.html

Added: openjpa/site/trunk/original.cwiki.content/jest-examples.cwiki
URL: http://svn.apache.org/viewvc/openjpa/site/trunk/original.cwiki.content/jest-examples.cwiki?rev=1415738&view=auto
==============================================================================
--- openjpa/site/trunk/original.cwiki.content/jest-examples.cwiki (added)
+++ openjpa/site/trunk/original.cwiki.content/jest-examples.cwiki Fri Nov 30 16:56:02 2012
@@ -0,0 +1,110 @@
+h1. JEST in Action
+
+!welcome-page.JPG|width=1200,height=800!
+
+h2. Description of a Simple JEST-enabled Web Application
+A sample is available to demonstrate JEST usage. You will find the example in OpenJPA code repository under {{openjpa-examples/jest}} tree with its source code and deployment descriptors {{WEB-INF/web.xml}} and {{META-INF/persistence.xml}}. The example is a simple servlet {{demo.SimpleApp}} that instantiates a persistent unit named {{jestdemo}} and populates a database with few sample records of two persistent entities {{demo.Actor}} and {{demo.Movie}}.  
+
+h3. Persistence Unit Initialization
+
+The following code from  {{demo.SimpleApp}} shows the initialization process at the servlet's {{init()}} method.
+
+{code:title=Simple Servlet initializes a pooled Persistent Unit}
+public class SimpleApp extends HttpServlet {
+    EntityManagerFactory _emf;
+    private static String UNIT_NAME = "jestdemo";
+    
+    @Override 
+    public void init(ServletConfig config) throws ServletException {
+        super.init(config);
+        config.getServletContext().log("Initializing persistence unit [" + UNIT_NAME + "]");
+        try {
+            Map<String,Object> props = new HashMap<String, Object>();
+            props.put("openjpa.EntityManagerFactoryPool", "true");
+            _emf = Persistence.createEntityManagerFactory(UNIT_NAME, props);
+            new DataLoader().populate(_emf.createEntityManager());
+        } catch (Exception e) {
+            throw new ServletException(e);
+        }
+        config.getServletContext().log("Initialized with persistence unit [" + UNIT_NAME + "]");
+    }
+
+{code}
+
+It is *important* to notice that the persistent unit is instantiated so that the {{EntityManagerFactory}} is pooled by OpenJPA. The way to achieve that is to set configuration property {{openjpa.EntityManagerFactoryPool}} to {{true}}. It is also important to note that this property is recognized _only_ when passed via runtime and _not_ if it were specified in {{META-INF/persistence.xml}} unlike other OpenJPA configuration properties.
+
+Besides instantiating the persistent unit, the servlet does not do anything else other than serving a welcome {{index.html}} web page as its {{doGet()}} method shows:
+{code:title=Simple Servlet that only serves a single index.html page}
+    /**
+     * The only response by this application is an <code>index.html</code> file.
+     */
+    @Override
+    protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
+        resp.setContentType("text/html");
+        OutputStream out = resp.getOutputStream();
+        InputStream in = getClass().getResourceAsStream("index.html");
+        for (int c = 0; (c = in.read()) != -1;) {
+            out.write((char)c);
+        }
+    }
+
+{code}
+
+h2. Deployment Descriptor to enable JEST
+
+The sample web application deploys {{demo.SimpleApp}} servlet *and* JEST servlet. The essential aspect of the deployment descriptor {{WEB-INF/web.xml}} is shown below
+
+{code:xml|title=web.xml deployment descriptor (edited version)}
+<web-app version="2.4" 
+         xmlns="http://java.sun.com/xml/ns/j2ee" 
+         xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
+         xsi:schemaLocation="http://java.sun.com/xml/ns/j2ee http://java.sun.com/xml/ns/j2ee/web-app_2_4.xsd">
+  <display-name>Demo Application with JEST Servlet</display-name>  
+  <welcome-file-list>
+     <welcome-file>index.html</welcome-file>
+  </welcome-file-list>
+  <servlet>
+    <servlet-name>demo</servlet-name>
+    <servlet-class>demo.SimpleApp</servlet-class>
+  </servlet>
+  <servlet-mapping>
+    <servlet-name>demo</servlet-name>
+    <url-pattern>/*</url-pattern>
+  </servlet-mapping>
+  
+  <servlet>
+    <servlet-name>jest</servlet-name>
+    <servlet-class>org.apache.openjpa.persistence.jest.JESTServlet</servlet-class>
+    <init-param>
+      <param-name>persistence.unit</param-name>
+      <param-value>jestdemo</param-value>
+    </init-param>
+  </servlet>
+  <servlet-mapping>
+    <servlet-name>jest</servlet-name>
+    <url-pattern>/jest/*</url-pattern>
+  </servlet-mapping>
+  
+</web-app>
+{code}
+
+h3. Discovery of Persistent Unit
+As can be seen in {{WEB-INF/web.xml}} above, the JEST servlet {{org.apache.openjpa.persistence.jest.JESTServlet}} needs to know the persistent unit name {{jestdemo}} to _discover_ the actual {{EntityManagerFactory}} instantiated by its sibling {{demo.SimpleApp}} servlet. This discovery of an {{EntityManagerFactory}} instantiated by another component is possible because the said
+{{EntityManagerFactory}} is being pooled by OpenJPA. A more general discovery mechanics where JEST can discover a {{EntityManagerFactory}} instantiated and injected by the container 
+would be available in future. 
+
+h2. Building the sample application
+An Ant build script {{build.xml}} is provided and a {{build.properties}} to adjust for local settings. To suit your local environment, please edit the {{build.properties}} for OpenJPA library and {{META-INF/persistence.xml}} for database specifics. The supplied build file compiles two persistent domain classes {{demo.Actor}} and {{demo.Movie}}, enhanced them and packages them in an web archive {{demo.war}}. The script assumes that the OpenJPA library and the JDBC driver (the sample persistence descriptor uses MySQL, by deafult) are available in shared library of the Servlet Container and hence does _not_ package these libraries in the web archive {{demo.war}}.
+
+h2. Deploying the sample application
+
+The next step is to deploy this simple web archive {{demo.war}} in a Servlet Container such as Tomcat or a a JEE container. We do not describe these steps because they are fairly standard.  
+
+h2. JEST in action
+
+Once the sample web application is deployed, say in Tomcat running on {{localhost:8080}}, open the web browser {{http://localhost:8080/demo}} and you should see the web page  served by {{demo.SimpleApp}}. This step initializes {{demo.SimpleApp}} and hence the persistence unit {{jestdemo}}. 
+
+Now, if you go to URL {{http://localhost:8080/demo/jest/}}, the JEST welcome page will be displayed -- which is JavaScript enabled web page that demonstrates currently available JEST facilities such as finding or querying for instances.  
+
+!welcome-page.JPG!
+ 

Added: openjpa/site/trunk/original.cwiki.content/jest-representation.cwiki
URL: http://svn.apache.org/viewvc/openjpa/site/trunk/original.cwiki.content/jest-representation.cwiki?rev=1415738&view=auto
==============================================================================
--- openjpa/site/trunk/original.cwiki.content/jest-representation.cwiki (added)
+++ openjpa/site/trunk/original.cwiki.content/jest-representation.cwiki Fri Nov 30 16:56:02 2012
@@ -0,0 +1,205 @@
+JEST response is either XML or JSON.
+
+
+h2. XML Representation
+		
+JEST represents persistent Java object graph in a schema-compliant XML. The schema is metamodel-driven and hence invariant to particular domain model. 
+The schema {{jest-instance.xsd}} is as follows:
+		
+{code:xml|title=Metamodel-driven schema for JEST XML}
+<!-- ========================================================================= -->
+<!-- Schema for serialized persistence instance graph                          -->
+<!-- ========================================================================= -->
+<xsd:schema xmlns:xsd="http://www.w3.org/2001/XMLSchema"
+	attributeFormDefault="unqualified" elementFormDefault="qualified"
+	version="1.0">
+
+	<xsd:annotation>
+		<xsd:documentation><![CDATA[
+         Describes closure of managed persistence instance.
+         Each instance is described by all its loaded persistent attribute.
+         The related instances are resolved within the document root.
+         Document root represents zero or more instances. 
+          
+         The file must be named "jest-instance.xsd".
+         ]]>
+		</xsd:documentation>
+	</xsd:annotation>
+
+    <!-- The root element of the document contains zero or more instances -->
+	<xsd:element name="instances">
+		<xsd:complexType>
+			<xsd:sequence>
+			    <xsd:element name="uri"         minOccurs="1" maxOccurs="1" type="xsd:anyURI"/>
+			    <xsd:element name="description" minOccurs="0" maxOccurs="1" type="xsd:string"/>
+				<xsd:element name="instance"    minOccurs="0" maxOccurs="unbounded" type="instance-type" />
+			</xsd:sequence>
+			<xsd:attribute name="version" type="xsd:string" />
+		</xsd:complexType>
+	</xsd:element>
+
+	<!-- The root element for a single instance. Children of this element are persistent attribute -->
+	<!-- Persistent Attributes occur in order. The order is determined by the attribute category.  -->
+	<!-- Attribute category is determined by the enumerated PersistentAttributeType defined in     -->
+	<!-- javax.persistence.metamodel and then further refined by id, version, lob and enum.        -->
+	<!-- See org.apache.openjpa.persistence.jest.MetamodelHelper for further details.              -->
+	<xsd:complexType name="instance-type">
+		<xsd:sequence>
+			<xsd:element name="id"           type="basic-attr-type"      minOccurs="0" maxOccurs="unbounded"/>
+			<xsd:element name="version"      type="basic-attr-type"      minOccurs="0" maxOccurs="unbounded"/>
+			<xsd:element name="basic"        type="basic-attr-type"      minOccurs="0" maxOccurs="unbounded"/>
+			<xsd:element name="enum"         type="basic-attr-type"      minOccurs="0" maxOccurs="unbounded"/>
+			<xsd:element name="embedded"     type="instance-type"        minOccurs="0" maxOccurs="unbounded"/>
+			<xsd:element name="lob"          type="lob-attr-type"        minOccurs="0" maxOccurs="unbounded"/>
+			<xsd:element name="one-to-one"   type="singular-attr-type"   minOccurs="0" maxOccurs="unbounded"/>
+			<xsd:element name="many-to-one"  type="singular-attr-type"	 minOccurs="0" maxOccurs="unbounded"/>
+			<xsd:element name="element-collection" type="collection-attr-type" minOccurs="0" maxOccurs="unbounded"/>
+			<xsd:element name="one-to-many"  type="collection-attr-type" minOccurs="0" maxOccurs="unbounded"/>
+			<xsd:element name="many-to-many" type="map-attr-type"        minOccurs="0" maxOccurs="unbounded"/>
+		</xsd:sequence>
+		<xsd:attribute name="id" type="xsd:ID" use="required" />
+	</xsd:complexType>
+
+	<!-- A reference to another instance within the same(?) document -->
+	<xsd:complexType name="ref-type">
+		<xsd:simpleContent>
+			<xsd:extension base="xsd:string">
+				<xsd:attribute name="id" type="xsd:IDREF" />
+			</xsd:extension>
+		</xsd:simpleContent>
+	</xsd:complexType>
+	
+	<!-- A null reference                                            -->
+	<xsd:complexType name="ref-null">
+		<xsd:simpleContent>
+			<xsd:extension base="xsd:string">
+			</xsd:extension>
+		</xsd:simpleContent>
+	</xsd:complexType>
+
+	<!-- Basic Attribute has a name and its runtime type   -->
+	<!-- non-null value appears as text content.           -->
+	<!-- null value appears as attribute with empty text . -->
+	<xsd:complexType name="basic-attr-type">
+		<xsd:simpleContent>
+			<xsd:extension base="xsd:string">
+				<xsd:attribute name="name" type="xsd:string" use="required" />
+				<xsd:attribute name="type" type="xsd:string" use="required" />
+				<xsd:attribute name="null" type="xsd:boolean" />
+			</xsd:extension>
+		</xsd:simpleContent>
+	</xsd:complexType>
+	
+	<!-- Large Binary Objects (LOB) represented as hex array -->
+	<xsd:complexType name="lob-attr-type">
+		<xsd:simpleContent>
+			<xsd:extension base="xsd:hexBinary">
+				<xsd:attribute name="name" type="xsd:string" use="required" />
+				<xsd:attribute name="type" type="xsd:string" use="required" />
+				<xsd:attribute name="null" type="xsd:boolean" />
+			</xsd:extension>
+		</xsd:simpleContent>
+	</xsd:complexType>
+
+	<!-- Singular attribute is a reference to another instance or a null reference. -->
+	<xsd:complexType name="singular-attr-type">
+		<xsd:choice>
+			<xsd:element name="null" type="ref-null" />
+			<xsd:element name="ref" type="ref-type" />
+		</xsd:choice>
+		<xsd:attribute name="name" type="xsd:string" use="required" />
+		<xsd:attribute name="type" type="xsd:string" use="required" />
+	</xsd:complexType>
+
+	<!-- Collection attributes list their members with their runtime type -->
+	<!-- Members can be basic or other managed instance                   -->
+	<xsd:complexType name="collection-attr-type">
+		<xsd:sequence>
+			<xsd:element name="member" type="member-type" minOccurs="0"
+				maxOccurs="unbounded" />
+		</xsd:sequence>
+		<xsd:attribute name="name" type="xsd:string" use="required" />
+		<xsd:attribute name="type" type="xsd:string" use="required" />
+		<xsd:attribute name="member-type" type="xsd:string" use="required" />
+	</xsd:complexType>
+
+	<!-- Map attributes list their entries with runtime type of key and value    -->
+	<!-- Both key and value can be independently basic or other managed instance -->
+	<xsd:complexType name="map-attr-type">
+		<xsd:sequence>
+			<xsd:element name="entry" type="entry-type" />
+		</xsd:sequence>
+		<xsd:attribute name="name" type="xsd:string" use="required" />
+		<xsd:attribute name="type" type="xsd:string" use="required" />
+		<xsd:attribute name="key-type" type="xsd:string" use="required" />
+		<xsd:attribute name="value-type" type="xsd:string" use="required" />
+	</xsd:complexType>
+
+	<!-- Value of a member of basic type. -->
+	<xsd:complexType name="basic-value-type">
+		<xsd:simpleContent>
+			<xsd:extension base="xsd:string">
+				<xsd:attribute name="null" type="xsd:boolean" />
+			</xsd:extension>
+		</xsd:simpleContent>
+	</xsd:complexType>
+
+	<!-- Value of a member of a collection/map -->
+	<xsd:complexType name="member-type">
+		<xsd:choice>
+			<xsd:element name="basic" type="basic-value-type" />
+			<xsd:element name="null" type="ref-null" />
+			<xsd:element name="ref" type="ref-type" />
+		</xsd:choice>
+	</xsd:complexType>
+
+	<!-- Denotes entry of a map element -->
+	<xsd:complexType name="entry-type">
+		<xsd:sequence>
+			<xsd:element name="key"   type="member-type" minOccurs="1" maxOccurs="1" />
+			<xsd:element name="value" type="member-type" minOccurs="1" maxOccurs="1"  />
+		</xsd:sequence>
+	</xsd:complexType>
+	
+</xsd:schema>
+{code}
+
+h3. Example of a serialized object graph
+The example shows a Person (primary key p1) who is her own partner.
+
+{code:xml|title=Example of Object Graph with Circular Reference}
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<instances>
+  <instance id="Person-p1">
+    <basic name="id" type="String">p1</basic>
+    <basic name="dob" type="Date">Fri Sep 08 00:00:00 CDT 1989</basic>
+    <basic name="firstName" type="String">Mary</basic>
+    <basic name="gender" type="Gender">Female</basic>
+
+    <basic name="lastName" type="String">Smith</basic>
+    <singular name="address" type="Address">
+      <instance id="Address-101">
+        <basic name="id" type="long">101</basic>
+        <basic name="country" type="String">C1</basic>
+        <basic name="state" type="String">State1</basic>
+        <basic name="street" type="String">Street1</basic>
+
+        <basic name="zip" type="int">10001</basic>
+      </instance>
+    </singular>
+    <singular name="partner" type="Person">
+      <ref id="Person-p1"/>
+    </singular>
+  </instance>
+</instances>
+{code}
+
+		 
+h2. JSON Representation
+
+String-based representation of persistent Java object graphs in either XML or more succinct JSON form has to address the critical issue of circular reference, because persistent object graphs
+often contains circular reference. JSON, at this point of writing, does not address circular reference. Hence JEST introduces special semantics within JSON format to refer to 
+instances in a serialized graph. However, the enhanced JSON can be parsed by standard JSON parsers.
+
+Enhanced JSON representation in JEST introduces two _special_ fields named {{$id}} and {{$ref}} to address circular reference. Each JSON object carries a {{$id}} field whose value is the persistent identity of the corresponding entity. When JSON serialization encounters a circular reference a   
+		
\ No newline at end of file

Added: openjpa/site/trunk/original.cwiki.content/jest-syntax.cwiki
URL: http://svn.apache.org/viewvc/openjpa/site/trunk/original.cwiki.content/jest-syntax.cwiki?rev=1415738&view=auto
==============================================================================
--- openjpa/site/trunk/original.cwiki.content/jest-syntax.cwiki (added)
+++ openjpa/site/trunk/original.cwiki.content/jest-syntax.cwiki Fri Nov 30 16:56:02 2012
@@ -0,0 +1,117 @@
+h2. JEST URI Syntax
+
+JEST defines URI syntax to access persistent resources over HTTP. 
+
+For example, to find a persistent Person instance with primary key 1234 and receive the result in {{JSON}} format will be:
+
+           {{http://www.example.com:8080/jest/find/format=json?type=Person&1234}}
+
+The formal notation of a JEST URI is
+
+      {code}URI := http://{host}[:port]/{context}/{action}[/qualifier]* [?argument][&argument]*{code}
+
+The URI syntax rules, in the light of the above example, are as follows:
+
+  * _protocol_ is always {{http}}
+  
+  * _host_ ({{www.example.com}}) and optional _port_ number locates the JEST servlet
+  
+  * _context_ ({{jest}}) identifies the context path of the JEST servlet. The context path is the servlet name
+    as specified in the web deployment descriptor for JEST servlet
+    
+  * _action_ ({{find}}) is the first segment of the servlet path. 
+    Allowed actions are {{find}}, {{query}}, {{domain}}, {{properties}} etc.
+  
+  * zero or more _qualifier_ may constitute the servlet path. Each qualifier is separated by {{/}} character.
+  * A qualifier must have a key and an optional value. 
+  * The qualifier key and value, if present, are separated by {{=}} sign.
+  * A qualifier key is a valid Java identifier. The exact key is conditional on the action. For example, {{find}} action
+    accepts {{format}} qualifier, {{query}} action accepts {{single}}, {{named}}, {{maxResult}}, {{firstResult}}, 
+    {{format}} as qualifiers.
+    In the example above, {{format=json}} qualifies that the response of {{find}} action be formatted as JSON. 
+  * A qualifier may or may not have a value. For example, {{maxResult}} qualifier for {{query}} action must have 
+    an integer value while {{single}} qualifier does not.
+    
+  * zero or more _argument_ may follow after the path by {{?}} character.
+  * each _argument_ is separated by {{&}} character
+  * An _argument_ has an optional key and must have a value.
+  * The _argument_ key, if present, and value are separated by {{=}} sign.
+   
+  * some actions may enforce mandatory argument(s). For example, a {{find}} action must have {{type}} argument 
+    and at least one more argument for the primary key. A {{query}} action must have {{q}} argument etc.
+           
+
+
+
+h3. List of supported actions, qualifiers and arguments
+
+The following sections tabulates the currently supported actions and corresponding qualifiers and arguments.
+A *bold font* denotes qualifier or argument as mandatory.
+ 
+h4. Action: find
+
+Returns the result of a {{find()}} operation.  
+
+||qualifier-key || qualifier-value||          Comment||
+|format          | {{xml}} or {{json}}	 | default is {{xml}}|
+|plan            |                       | name of one or more fetch plan(s). Each name separated by comma character.|
+|                |                       | e.g. {{find/plan=onlyBasicFields?type=Person&1234}}|
+|                |                       | where {{onlyBasicFields}} is name of a pre-defined Fetch Group|
+
+||argument-key  ||argument-value       ||     Comment ||
+|*type*         |entity name           | Fully-qualified Java class name or alias of the entity |
+|               |primary key value     | can be used for simple identity without the id property name|
+|               |                      | e.g. {{/find?type=Person&1234}}|
+|id property    |primary key value     | Used for compound primary keys|
+|               |                      | e.g. {{/find?type=Person&firstName=John&lastName=Doe}}|
+               
+h4. Action : query
+
+Returns the result of a {{Query.getResultList()}} or {{Query.getSingleResult()}} operation.  
+
+||qualifier-key || qualifier-value||          Comment||
+|format         | {{xml}} or {{json}}	 | default is {{xml}}|
+|plan           |               | name of one or more fetch plan(s). Each name separated by comma character.|
+|single         |               | enforces single instance as query result |
+|               |               | e.g. {{/query/single?q=select p from Person p where p.name=:x&x=John}} |
+|named          |               | interprets the q argument value as a named query|
+|               |               | e.g. {{/query/named?q=PersonByName&x=John}} |
+|                |              | where {{PersonByName}} is named query with {{x}} its named parameter|
+
+||argument-key  ||argument-value       ||     Comment ||
+|*q*            |JPQL or Named Query   | e.g. {{/query/named?q=AllPerson}}|
+|               |                      | or {{/query?q=select p from Person p}}|
+|               |                      | e.g. {{/query?q=select p from Person p where p.firstName=:x&x=John}}|
+|bind parameter |parameter value       | the values are converted to match the target type|
+|               |                      | e.g. {{/query?q=select p from Person p where p.gender=:g&g=MALE}}|
+
+h4. Action : domain
+
+Returns the domain model in XML format.
+
+Accepts no qualifier.
+Accepts no argument. 
+
+h4. Action : properties
+
+Returns the configuration properties in HTML format.
+
+Accepts no qualifier.
+Accepts no argument. 
+
+
+h3. Formal syntax:
+
+      {code}URI := http://{host}[:port]/{context}/{action}[/qualifier]* [?argument][&argument]*{code}
+
+{code}
+context   := JEST servlet context root
+action    := find|query|domain|properties
+qualifier := qualifier-key[=qualifier-value]
+argument := [argument-key=]argument-value
+qualifier-key := any valid Java identifier 
+qualifier-value := string
+argument-key   := string 
+argument-value := string
+{code}
+

Added: openjpa/site/trunk/original.cwiki.content/jest-transaction.cwiki
URL: http://svn.apache.org/viewvc/openjpa/site/trunk/original.cwiki.content/jest-transaction.cwiki?rev=1415738&view=auto
==============================================================================
--- openjpa/site/trunk/original.cwiki.content/jest-transaction.cwiki (added)
+++ openjpa/site/trunk/original.cwiki.content/jest-transaction.cwiki Fri Nov 30 16:56:02 2012
@@ -0,0 +1 @@
+We have not figured that out yet!
\ No newline at end of file

Added: openjpa/site/trunk/original.cwiki.content/jest-usage.cwiki
URL: http://svn.apache.org/viewvc/openjpa/site/trunk/original.cwiki.content/jest-usage.cwiki?rev=1415738&view=auto
==============================================================================
--- openjpa/site/trunk/original.cwiki.content/jest-usage.cwiki (added)
+++ openjpa/site/trunk/original.cwiki.content/jest-usage.cwiki Fri Nov 30 16:56:02 2012
@@ -0,0 +1,95 @@
+JEST facilities are available as a HTTP servlet, {{org.apache.openjpa.persistence.jest.JESTServlet}}. 
+ 
+{{JESTServlet}} can be deployed in a servlet container e.g. Tomcat in two possible modes: *primary* or *auxiliary*. 
+
+h4. Deployment Modes
+!deploymentModes.gif!
+ 
+In *primary* mode, the {{JESTServlet}} itself instantiates a persistence unit during initialization. 
+
+In *auxiliary* mode,  the {{JESTServlet}} discovers a persistence unit used by another component {{X}}.
+The sibling component {{X}} must satisfy the following for JEST to discover its persistent unit 
+* The component {{X}} and {{JESTServlet}} must belong to the same deployment unit.
+* The component {{X}} must activate OpenJPA's native {{EntityManagerFactory}} pool. The pool is activated by switching on {{openjpa.EntityManagerFactoryPool}} configuration property to {{true}}. This property is available _only_ via runtime configuration. The following code example ensures that OpenJPA's native {{EntityManagerFactory}} pool is active.
+{code:title=Activation of OpenJPA's native EntityManagerFactory pool}
+  Map<String,Object> props = new HashMap<String, Object>();
+  props.put("openjpa.EntityManagerFactoryPool", "true");
+  EntityManagerFactory emf = Persistence.createEntityManagerFactory("myPU", props);
+{code}   
+
+
+{{JESTServlet}} accepts following initial configuration parameters
+
+||Property||Description||
+|persistence.unit|Name of the persistent unit. Must be specified.|
+|standalone|true implies primary mode. Defaults to false.|
+|debug|true implies verbose tracing of HTTP requests. Defaults to false.|
+
+
+
+The following deployment descriptor {{WEB-INF/web.xml}} deploys {{JESTServlet}} in auxiliary mode
+
+{code:xml|title=JEST Deployment Descriptor in Auxiliary Mode}
+<web-app version="2.4" 
+         xmlns="http://java.sun.com/xml/ns/j2ee" 
+         xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
+         xsi:schemaLocation="http://java.sun.com/xml/ns/j2ee http://java.sun.com/xml/ns/j2ee/web-app_2_4.xsd">
+  <display-name>Demo Application with JEST Servlet</display-name>  
+  <welcome-file-list>
+	<welcome-file>index.html</welcome-file>
+  </welcome-file-list>
+  <description>
+    An example of deploying a simple web application with JEST servlet.
+    This descriptor specifies the Demo Application servlet as well as JEST servlet.
+  </description>
+  
+  <servlet>
+    <description> 
+   	This is the Demo Application Servlet.
+   	The servlet is mapped to URL pattern /app/* so this servlet can be accessed as
+                     http://host:port/demo/app/ 
+   	where "demo" is the name of the deployed web application.
+   		                  
+   	Assume that the Demo Application Servlet is using a persistence unit named 
+   	'jestdemo'. The JEST Servlet will require the persistence unit name to
+   	browse the Demo Application.                  
+    </description>
+   		
+    <servlet-name>demo</servlet-name>
+    <servlet-class>demo.SimpleApp</servlet-class>
+  </servlet>
+  
+  <servlet-mapping>
+    <servlet-name>demo</servlet-name>
+      <url-pattern>/*</url-pattern>
+    </servlet-mapping>
+  
+  <!-- Deployment descriptor for JESTServlet.                                           -->
+  <servlet>
+    <description>
+  	This is the JEST servlet. 
+  	JEST Servlet needs to know the name of the persistence unit used by the Demo Application.
+  	The unit name is specified by mandatory "persistence.unit" parameter during initialization.
+  		
+  	The JEST servlet is mapped to URL pattern /jest/* in servlet mapping section. So to access
+  	JEST servlet, use the following URI
+  	    http://host:port/demo/jest/
+  	Notice the trailing forward slash character is significant.     
+    </description>
+    <servlet-name>jest</servlet-name>
+    <servlet-class>org.apache.openjpa.persistence.jest.JESTServlet</servlet-class>
+    <init-param>
+	<param-name>persistence.unit</param-name>
+	<param-value>jestdemo</param-value>
+    </init-param>
+    <init-param>
+	<param-name>debug</param-name>
+	<param-value>true</param-value>
+    </init-param>
+  </servlet>
+  <servlet-mapping>
+    <servlet-name>jest</servlet-name>
+	<url-pattern>/jest/*</url-pattern>
+    </servlet-mapping>
+</web-app>
+{code}

Added: openjpa/site/trunk/original.cwiki.content/jest.cwiki
URL: http://svn.apache.org/viewvc/openjpa/site/trunk/original.cwiki.content/jest.cwiki?rev=1415738&view=auto
==============================================================================
--- openjpa/site/trunk/original.cwiki.content/jest.cwiki (added)
+++ openjpa/site/trunk/original.cwiki.content/jest.cwiki Fri Nov 30 16:56:02 2012
@@ -0,0 +1,22 @@
+{excerpt:hidden=true}JEST{excerpt}
+
+h1. JEST: REST on OpenJPA
+
+*JEST* is a *REST* style access to any *OpenJPA* runtime. 
+
+The salient principles of JEST are:
+
+* *non-invasive* : Any persistent data managed by OpenJPA can be accessed _without_ any change to POJO classes or to an existing application.
+* *language-neutral* :  A client _not_ necessarily Java-based can access persistent data simply by sending an HTTP request. JEST is URI-based as opposed to API-based. 
+* *schema-free* : The content is self-describing. The client does not require access to persistent Java class definitions.
+
+In [REST|http://en.wikipedia.org/wiki/Representational_State_Transfer] (Representational State Transfer) terminology, 
+
+* *Resource* : the resources are _customizable_ graph of persistent objects. The object graph is _coherent_ in the sense that if any entity {{e}} of the graph has a reference to another entity {{r}}, then  {{r}} is also belongs to the graph. 
+* *Representation*: the representation of resources are in XML or specialized JSON. JSON is specialized to account for any circular reference in the object graph. However, the JSON representation remains consumable by other standard JSON parsers. 
+* *Stateless* : the life time of any computational resources used by JEST is bound by a single HTTP request-response lifetime. 
+ 
+
+JEST is further described under the following sections
+
+{children:all=true|excerpt=true} 
\ No newline at end of file

Added: openjpa/site/trunk/original.cwiki.content/jpa-2.0-development-process.cwiki
URL: http://svn.apache.org/viewvc/openjpa/site/trunk/original.cwiki.content/jpa-2.0-development-process.cwiki?rev=1415738&view=auto
==============================================================================
--- openjpa/site/trunk/original.cwiki.content/jpa-2.0-development-process.cwiki (added)
+++ openjpa/site/trunk/original.cwiki.content/jpa-2.0-development-process.cwiki Fri Nov 30 16:56:02 2012
@@ -0,0 +1,31 @@
+h1. JPA 2.0 Development Process 
+
+h2. JPA 2.0 Roadmap
+The OpenJPA roadmap and iteration detail for developing JPA 2.0 functionality is documented [here|JPA 2.0 Roadmap].  The process to be used for this development effort will be documented on this Development Process page.
+
+h2. Overview
+JPA 2.0 is currently being defined by the Java Community Process under [JSR-317|http://jcp.org/en/jsr/detail?id=317].  The most recent public draft is dated 03/13/2009.  Members of the Apache OpenJPA project continue to monitor and actively participate in JSR-317.  OpenJPA has recently branched off its 1.x efforts and is targeting its next release, OpenJPA 2.0, to in addition to providing new features, be fully spec compliant with JPA 2.0.  While the JPA 2.0 spec is still in the review process, the OpenJPA project will begin implementing JPA 2.0 capabilities as defined by the draft specification.  This will help to ensure a timely delivery of JPA 2.0 functionality in addition to providing experience-based feedback to the JPA committee.
+
+h2. JPA 2.0 Highlights
+The latest draft of the JPA 2.0 specification includes many updates to JPA, from minor updates to major functional enhancements.  Some of these updates and enhancements include:
+* Collections of embeddables and basic types
+* Derived Identity support
+* Relationship support within embeddables
+* Enhancements to persistent map collection support
+* Standard properties for query timeout and persistence configuration
+* Lock mode configuration on entity manager and query
+* Cache interface to access L2 cache
+* Criteria API for programmatic query definition
+* Many JPQL enhancements
+
+
+h2. Contributions
+The OpenJPA 2.0 release needs contributions in the areas of development, testing, and documentation.  If you are simply interested in trying out new capabilities of JPA 2.0, contributing to the test suite is a great way to do that; while making a significant contribution to the project.
+
+h2. Process
+* All new features, spec related or other improvements must have an corresponding JIRA.  Large items should be broken down into manageable sub-tasks.  The JIRA should include design details, decision rationality, and testing information.
+* Use [test driven development|http://en.wikipedia.org/wiki/Test-driven_development] (write tests before code).  Test driven development can be extremely beneficial for gaining an initial understanding the requirements of the feature and will help ensure that the feature is adequately tested.  Too often, tests are the last thing to be written so they can end up incomplete or worse yet, forgotten.  Test driven development in OpenJPA is now more feasible with the recent enhancement in [OPENJPA-766|https://issues.apache.org/jira/browse/OPENJPA-766].
+* Documentation updates/additions, when necessary, must accompany new function.
+* As of iteration 5, OpenJPA 2.0 development will be based on four week iterations (or sprints).  Each iteration will include a set of new features and enhancements.  Features must have accompanying tests and documentation and go through a code review.  A feature must fit within the iteration period.  Larger and/or complex tasks may need to be broken down such that they can be contributed as individual, consumable features. For example, JPA 2.0 defines relationship support within an embedded.  If this task is deemed complex due to the need to support multiple relationship types, relationship type one-to-one could be made available in one iteration and the many-to-one relationship type could be added in subsequent iteration.
+* A call for participation will be posted prior to the start of each iteration.  An iteration plan will be composed based on who can participate and what they plan to contribute.
+* Code reviews will be conducted using the standard Commit-Then-Review (CTR) process (for OpenJPA committers), unless a pre-commit code review is specifically requested.  Artifacts submitted by non-committers must be reviewed before they are committed.
\ No newline at end of file