initial checkin from dm Server sample-greenpages repository commit 2216c74dd71e11f7cb59cde5c83987bc39e6724b
diff --git a/.gitignore b/.gitignore
new file mode 100644
index 0000000..1de5659
--- /dev/null
+++ b/.gitignore
@@ -0,0 +1 @@
+target
\ No newline at end of file
diff --git a/.gitmodules b/.gitmodules
new file mode 100644
index 0000000..1f9ea18
--- /dev/null
+++ b/.gitmodules
@@ -0,0 +1,3 @@
+[submodule "virgo-build"]
+	path = virgo-build
+	url = git://git.eclipse.org/gitroot/virgo/org.eclipse.virgo.virgo-build.git
diff --git a/build-greenpages/build.xml b/build-greenpages/build.xml
new file mode 100644
index 0000000..a43aa76
--- /dev/null
+++ b/build-greenpages/build.xml
@@ -0,0 +1,14 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<project name="build-greenpages" default="package">
+
+	<path id="bundles"/>
+
+	<property name="integration.repo.dir" value="${basedir}/../integration-repo"/>
+	<property name="ivy.cache.dir" value="${basedir}/../ivy-cache"/>
+	<property file="${basedir}/../build.properties"/>
+	<property file="${basedir}/../build.versions"/>
+	<import file="${basedir}/package-top-level.xml"/>
+	<import file="${basedir}/publish-top-level.xml"/>
+	<import file="${basedir}/../virgo-build/multi-bundle/default.xml"/>
+
+</project>
diff --git a/build-greenpages/package-top-level.xml b/build-greenpages/package-top-level.xml
new file mode 100644
index 0000000..1c18083
--- /dev/null
+++ b/build-greenpages/package-top-level.xml
@@ -0,0 +1,35 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<project name="package-top-level">
+
+	<target name="package" description="Creates the release package for this project">
+		<delete dir="${package.output.dir}" quiet="true"/>
+		<mkdir dir="${package.output.dir}"/>
+		<delete file="${package.output.file}" quiet="true"/>
+		<mkdir dir="${artifacts.dir}"/>
+
+		<copy todir="${package.output.dir}">
+			<fileset dir="${basedir}/resources"/>
+		</copy>
+
+		<copy todir="${package.output.dir}">
+			<fileset dir="${basedir}/..">
+				<include name="db/**"/>
+				<include name="start/**"/>
+				<include name="solution/**"/>
+				<exclude name="**/target/**"/>
+			</fileset>
+		</copy>
+
+		<chmod perm="755">
+			<fileset dir="${package.output.dir}">
+				<include name="**/*.sh"/>
+			</fileset>
+		</chmod>
+
+		<zip destfile="${package.output.file}">
+			<zipfileset dir="${package.dir}" includes="${package.basename}/**/*.sh" filemode="755"/>
+			<zipfileset dir="${package.dir}" excludes="${package.basename}/**/*.sh"/>
+		</zip>
+	</target>
+
+</project>
diff --git a/build-greenpages/publish-top-level.xml b/build-greenpages/publish-top-level.xml
new file mode 100644
index 0000000..321c87c
--- /dev/null
+++ b/build-greenpages/publish-top-level.xml
@@ -0,0 +1,7 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<project name="publish-top-level">
+
+	<target name="publish" depends="publish-package"
+			description="Publishes the package artifact"/>
+
+</project>
\ No newline at end of file
diff --git a/build-greenpages/resources/About.html b/build-greenpages/resources/About.html
new file mode 100644
index 0000000..9e8bc96
--- /dev/null
+++ b/build-greenpages/resources/About.html
@@ -0,0 +1,128 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
+<!-- saved from url=(0047)http://www.eclipse.org/legal/epl/longabout.html -->
+<HTML xmlns="http://www.w3.org/1999/xhtml"><HEAD><META http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
+
+<TITLE>About</TITLE>
+</HEAD><BODY lang="EN-US">
+<H2>About This Content</H2>
+ 
+<P>&lt;<EM>insert current release date here, e.g., June 5, 2007</EM>&gt;</P>	
+<H3>License</H3>
+
+<P>The Eclipse Foundation makes available all content in this plug-in ("Content").  Unless otherwise 
+indicated below, the Content is provided to you under the terms and conditions of the
+Eclipse Public License Version 1.0 ("EPL").  A copy of the EPL is available 
+at <A href="http://www.eclipse.org/legal/epl-v10.html">http://www.eclipse.org/legal/epl-v10.html</A>.
+For purposes of the EPL, "Program" will mean the Content.</P>
+
+<P>If you did not receive this Content directly from the Eclipse Foundation, the Content is 
+being redistributed by another party ("Redistributor") and different terms and conditions may
+apply to your use of any object code in the Content.  Check the Redistributor's license that was 
+provided with the Content.  If no such license exists, contact the Redistributor.  Unless otherwise
+indicated below, the terms and conditions of the EPL still apply to any source code in the Content
+and such source code may be obtained at <A href="http://www.eclipse.org/">http://www.eclipse.org</A>.</P>
+
+		
+		<H3>Third Party Content</H3>
+		<P>The Content includes items that have been sourced from third parties as set out below. If you 
+		did not receive this Content directly from the Eclipse Foundation, the following is provided 
+		for informational purposes only, and you should look to the Redistributor's license for 
+		terms and conditions of use.</P>
+		<P><EM>
+		<STRONG>Replace these sections with the relevant content, as described below. One section
+		will be required for each third-party component contained within the plug-in</STRONG><BR><BR>
+		<STRONG>Name of first package including version number</STRONG> <BR><BR>
+		Please include in this section information about the package including 
+		where it was obtained from, outbound licensing 
+		terms and notices that may apply, and anything else necessary to meet the obligations of 
+		redistribution (and possibly modification, etc.) under the inbound license.  If the source 
+		code for the package is not available at eclipse.org, please include instructions on how to 
+		get it regardless of whether you are obligated to do so by the license.
+		<BR><BR>
+		<STRONG>Name of second package including version number</STRONG><BR><BR>
+		Please include in this section information about the package including 
+		where it was obtained from, outbound licensing 
+		terms and notices that may apply, and anything else necessary to meet the obligations of 
+		redistribution (and possibly modification, etc.) under the inbound license.  If the source 
+		code for the package is not available at eclipse.org, please include instructions on how to
+		get it regardless of whether you are obligated to do so by the license. 
+		</EM></P>
+		
+		<h4>
+			<a href="http://www.apache.org/licenses/LICENSE-2.0.html">Apache License 2.0</a>
+		</h4>
+		<ul>
+			<li>Apache Commons IO
+			</li>
+			<li>Apache Commons Logging
+			</li>
+			<li>Apache Felix Configuration Admin
+			</li>
+			<li>Apache Felix Event Admin
+			</li>
+			<li>Apache Felix Log Service
+			</li>
+			<li>Apache Standard Taglibs
+			</li>
+			<li>Apache Tomcat
+			</li>
+			<li>Spring Dynamic Modules
+			</li>
+			<li>Spring Framework
+			</li>
+		</ul>
+		<h4>
+			<a href="http://www.sun.com/cddl/cddl.html">Common Development and Distribution License 1.0</a>
+		</h4>
+		<ul>
+			<li>javax.activation
+			</li>
+			<li>javax.annotation
+			</li>
+			<li>javax.ejb
+			</li>
+			<li>javax.el
+			</li>
+			<li>javax.jms
+			</li>
+			<li>javax.mail
+			</li>
+			<li>javax.persistence
+			</li>
+			<li>javax.servlet
+			</li>
+			<li>javax.servlet.jsp
+			</li>
+			<li>javax.servlet.jsp.jstl
+			</li>
+			<li>javax.transaction
+			</li>
+			<li>javax.xml.bind
+			</li>
+			<li>javax.xml.rpc
+			</li>
+			<li>javax.xml.soap
+			</li>
+			<li>javax.xml.stream
+			</li>
+			<li>javax.xml.ws
+			</li>
+		</ul>
+		<h4>
+			<a href="http://asm.objectweb.org/license.html">ASM License</a>
+		</h4>
+		<ul>
+			<li>ASM
+			</li>
+		</ul>
+		<h4>
+			<a href="http://www.slf4j.org/license.html">SLF4J License</a>
+		</h4>
+		<ul>
+			<li>SLF4J
+			</li>
+		</ul>
+
+
+
+</BODY></HTML>
\ No newline at end of file
diff --git a/build-greenpages/resources/about_files/LICENSE-AspectJ.html b/build-greenpages/resources/about_files/LICENSE-AspectJ.html
new file mode 100644
index 0000000..8f7d0a4
--- /dev/null
+++ b/build-greenpages/resources/about_files/LICENSE-AspectJ.html
@@ -0,0 +1,91 @@
+<html>
+
+<head>
+<title>AspectJ License</title>
+
+
+</head>
+
+<BODY BGCOLOR="white">
+
+<h2 align="center"><b>AspectJ<sup><small>TM</small></sup>
+                      Compiler and Core Tools License</b></h2>
+
+<p>This is a binary-only release.&nbsp; Source code
+is available from
+<a href="http://eclipse.org/aspectj">http://eclipse.org/aspectj</a></p>
+
+<p>The Eclipse Foundation makes available all content in this distribution ("Content").  
+		Unless otherwise indicated below, the Content is provided to you under the terms and conditions of the
+		Eclipse Public License Version 1.0 ("EPL").  A copy of the EPL is available 
+		at <a href="../../org/documents/epl-v10.php">http://www.eclipse.org/legal/epl-v10.html</a>.
+		For purposes of the EPL, "Program" will mean the Content.</p>
+
+		<p>If you did not receive this Content directly from the Eclipse Foundation, the Content is 
+		being redistributed by another party ("Redistributor") and different terms and conditions may
+		apply to your use of any object code in the Content.  Check the Redistributor's license 
+		that was provided with the Content.  If no such license exists, contact the Redistributor.  Unless otherwise
+		indicated below, the terms and conditions of the EPL still apply to any source code in the Content
+		and such source code may be obtained at <a href="/">http://www.eclipse.org</a>.</p>
+
+		
+		<h3>Third Party Content</h3>
+		<p>The Content includes items that have been sourced from third parties as set out below. If you 
+		did not receive this Content directly from the Eclipse Foundation, the following is provided 
+		for informational purposes only, and you should look to the Redistributor?s license for 
+		terms and conditions of use.</p>
+		<em>
+
+		<h4>BCEL v5.1</h4>
+		<p>This product contains software developed by the
+         Apache Software Foundation (<a href="http://www.apache.org/">http://www.apache.org</a>).</p>
+ 
+		<p>AspectJ includes a modified version of the Apache Jakarta Byte Code Engineering Library (BCEL) v5.1.
+		BCEL is available at <a href="http://jakarta.apache.org/bcel/">http://jakarta.apache.org/bcel/</a>. Source
+		code for the modified version of BCEL is available at Eclipse.org in the AspectJ source tree. This code
+		is made available under the Apache Software License v1.1</p>
+		
+		<h4>ASM v2.2.1</h4> 
+		<p>AspectJ includes a binary version of ASM v2.2.1 (<a href="http://asm.objectweb.org/index.html">http://asm.objectweb.org/</a>)
+		The source code for ASM is available from the ObjectWeb download site at 
+		<a href="http://asm.objectweb.org/download/">http://asm.objectweb.org/download/</a>. 
+		<p>The ASM license is available at <a href="http://asm.objectweb.org/license.html">http://asm.objectweb.org/license.html</a>. 
+		The license is also reproduced here:
+		</p>
+
+<pre>Copyright (c) 2000-2005 INRIA, France Telecom
+All rights reserved.
+
+Redistribution and use in source and binary forms, with or without
+modification, are permitted provided that the following conditions
+are met:
+
+1. Redistributions of source code must retain the above copyright
+   notice, this list of conditions and the following disclaimer.
+
+2. Redistributions in binary form must reproduce the above copyright
+   notice, this list of conditions and the following disclaimer in the
+   documentation and/or other materials provided with the distribution.
+
+3. Neither the name of the copyright holders nor the names of its
+   contributors may be used to endorse or promote products derived from
+   this software without specific prior written permission.
+
+THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
+AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
+ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE
+LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
+CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
+SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
+INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
+CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
+ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF
+THE POSSIBILITY OF SUCH DAMAGE.
+</pre>
+
+</em>
+
+</body>
+
+</html>
diff --git a/build-greenpages/resources/about_files/apache-v20.txt b/build-greenpages/resources/about_files/apache-v20.txt
new file mode 100644
index 0000000..d645695
--- /dev/null
+++ b/build-greenpages/resources/about_files/apache-v20.txt
@@ -0,0 +1,202 @@
+
+                                 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.
diff --git a/build-greenpages/resources/about_files/asm.txt b/build-greenpages/resources/about_files/asm.txt
new file mode 100644
index 0000000..75ad085
--- /dev/null
+++ b/build-greenpages/resources/about_files/asm.txt
@@ -0,0 +1,29 @@
+Copyright (c) 2000-2005 INRIA, France Telecom
+All rights reserved.
+
+Redistribution and use in source and binary forms, with or without
+modification, are permitted provided that the following conditions
+are met:
+
+1. Redistributions of source code must retain the above copyright
+   notice, this list of conditions and the following disclaimer.
+
+2. Redistributions in binary form must reproduce the above copyright
+   notice, this list of conditions and the following disclaimer in the
+   documentation and/or other materials provided with the distribution.
+
+3. Neither the name of the copyright holders nor the names of its
+   contributors may be used to endorse or promote products derived from
+   this software without specific prior written permission.
+
+THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
+AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
+ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE
+LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
+CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
+SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
+INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
+CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
+ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF
+THE POSSIBILITY OF SUCH DAMAGE.
diff --git a/build-greenpages/resources/about_files/cddl-10.txt b/build-greenpages/resources/about_files/cddl-10.txt
new file mode 100644
index 0000000..3bc759f
--- /dev/null
+++ b/build-greenpages/resources/about_files/cddl-10.txt
@@ -0,0 +1,382 @@
+COMMON DEVELOPMENT AND DISTRIBUTION LICENSE (CDDL) Version 1.0
+Thu, 2007-06-07 16:10 — nelson
+COMMON DEVELOPMENT AND DISTRIBUTION LICENSE (CDDL) Version 1.0
+
+1. Definitions.
+
+1.1. "Contributor" means each individual or entity that
+creates or contributes to the creation of Modifications.
+
+1.2. "Contributor Version" means the combination of the
+Original Software, prior Modifications used by a
+Contributor (if any), and the Modifications made by that
+particular Contributor.
+
+1.3. "Covered Software" means (a) the Original Software, or
+(b) Modifications, or (c) the combination of files
+containing Original Software with files containing
+Modifications, in each case including portions thereof.
+
+1.4. "Executable" means the Covered Software in any form
+other than Source Code.
+
+1.5. "Initial Developer" means the individual or entity
+that first makes Original Software available under this
+License.
+
+1.6. "Larger Work" means a work which combines Covered
+Software or portions thereof with code not governed by the
+terms of this License.
+
+1.7. "License" means this document.
+
+1.8. "Licensable" means having the right to grant, to the
+maximum extent possible, whether at the time of the initial
+grant or subsequently acquired, any and all of the rights
+conveyed herein.
+
+1.9. "Modifications" means the Source Code and Executable
+form of any of the following:
+
+A. Any file that results from an addition to,
+deletion from or modification of the contents of a
+file containing Original Software or previous
+Modifications;
+
+B. Any new file that contains any part of the
+Original Software or previous Modification; or
+
+C. Any new file that is contributed or otherwise made
+available under the terms of this License.
+
+1.10. "Original Software" means the Source Code and
+Executable form of computer software code that is
+originally released under this License.
+
+1.11. "Patent Claims" means any patent claim(s), now owned
+or hereafter acquired, including without limitation,
+method, process, and apparatus claims, in any patent
+Licensable by grantor.
+
+1.12. "Source Code" means (a) the common form of computer
+software code in which modifications are made and (b)
+associated documentation included in or with such code.
+
+1.13. "You" (or "Your") means an individual or a legal
+entity exercising rights under, and complying with all of
+the terms of, this License. For legal entities, "You"
+includes any entity which controls, is controlled by, or is
+under common control with You. For purposes of this
+definition, "control" means (a) the power, direct or
+indirect, to cause the direction or management of such
+entity, whether by contract or otherwise, or (b) ownership
+of more than fifty percent (50%) of the outstanding shares
+or beneficial ownership of such entity.
+
+2. License Grants.
+
+2.1. The Initial Developer Grant.
+
+Conditioned upon Your compliance with Section 3.1 below and
+subject to third party intellectual property claims, the
+Initial Developer hereby grants You a world-wide,
+royalty-free, non-exclusive license:
+
+(a) under intellectual property rights (other than
+patent or trademark) Licensable by Initial Developer,
+to use, reproduce, modify, display, perform,
+sublicense and distribute the Original Software (or
+portions thereof), with or without Modifications,
+and/or as part of a Larger Work; and
+
+(b) under Patent Claims infringed by the making,
+using or selling of Original Software, to make, have
+made, use, practice, sell, and offer for sale, and/or
+otherwise dispose of the Original Software (or
+portions thereof).
+
+(c) The licenses granted in Sections 2.1(a) and (b)
+are effective on the date Initial Developer first
+distributes or otherwise makes the Original Software
+available to a third party under the terms of this
+License.
+
+(d) Notwithstanding Section 2.1(b) above, no patent
+license is granted: (1) for code that You delete from
+the Original Software, or (2) for infringements
+caused by: (i) the modification of the Original
+Software, or (ii) the combination of the Original
+Software with other software or devices.
+
+2.2. Contributor Grant.
+
+Conditioned upon Your compliance with Section 3.1 below and
+subject to third party intellectual property claims, each
+Contributor hereby grants You a world-wide, royalty-free,
+non-exclusive license:
+
+(a) under intellectual property rights (other than
+patent or trademark) Licensable by Contributor to
+use, reproduce, modify, display, perform, sublicense
+and distribute the Modifications created by such
+Contributor (or portions thereof), either on an
+unmodified basis, with other Modifications, as
+Covered Software and/or as part of a Larger Work; and
+
+(b) under Patent Claims infringed by the making,
+using, or selling of Modifications made by that
+Contributor either alone and/or in combination with
+its Contributor Version (or portions of such
+combination), to make, use, sell, offer for sale,
+have made, and/or otherwise dispose of: (1)
+Modifications made by that Contributor (or portions
+thereof); and (2) the combination of Modifications
+made by that Contributor with its Contributor Version
+(or portions of such combination).
+
+(c) The licenses granted in Sections 2.2(a) and
+2.2(b) are effective on the date Contributor first
+distributes or otherwise makes the Modifications
+available to a third party.
+
+(d) Notwithstanding Section 2.2(b) above, no patent
+license is granted: (1) for any code that Contributor
+has deleted from the Contributor Version; (2) for
+infringements caused by: (i) third party
+modifications of Contributor Version, or (ii) the
+combination of Modifications made by that Contributor
+with other software (except as part of the
+Contributor Version) or other devices; or (3) under
+Patent Claims infringed by Covered Software in the
+absence of Modifications made by that Contributor.
+
+3. Distribution Obligations.
+
+3.1. Availability of Source Code.
+
+Any Covered Software that You distribute or otherwise make
+available in Executable form must also be made available in
+Source Code form and that Source Code form must be
+distributed only under the terms of this License. You must
+include a copy of this License with every copy of the
+Source Code form of the Covered Software You distribute or
+otherwise make available. You must inform recipients of any
+such Covered Software in Executable form as to how they can
+obtain such Covered Software in Source Code form in a
+reasonable manner on or through a medium customarily used
+for software exchange.
+
+3.2. Modifications.
+
+The Modifications that You create or to which You
+contribute are governed by the terms of this License. You
+represent that You believe Your Modifications are Your
+original creation(s) and/or You have sufficient rights to
+grant the rights conveyed by this License.
+
+3.3. Required Notices.
+
+You must include a notice in each of Your Modifications
+that identifies You as the Contributor of the Modification.
+You may not remove or alter any copyright, patent or
+trademark notices contained within the Covered Software, or
+any notices of licensing or any descriptive text giving
+attribution to any Contributor or the Initial Developer.
+
+3.4. Application of Additional Terms.
+
+You may not offer or impose any terms on any Covered
+Software in Source Code form that alters or restricts the
+applicable version of this License or the recipients'
+rights hereunder. You may choose to offer, and to charge a
+fee for, warranty, support, indemnity or liability
+obligations to one or more recipients of Covered Software.
+However, you may do so only on Your own behalf, and not on
+behalf of the Initial Developer or any Contributor. You
+must make it absolutely clear that any such warranty,
+support, indemnity or liability obligation is offered by
+You alone, and You hereby agree to indemnify the Initial
+Developer and every Contributor for any liability incurred
+by the Initial Developer or such Contributor as a result of
+warranty, support, indemnity or liability terms You offer.
+
+3.5. Distribution of Executable Versions.
+
+You may distribute the Executable form of the Covered
+Software under the terms of this License or under the terms
+of a license of Your choice, which may contain terms
+different from this License, provided that You are in
+compliance with the terms of this License and that the
+license for the Executable form does not attempt to limit
+or alter the recipient's rights in the Source Code form
+from the rights set forth in this License. If You
+distribute the Covered Software in Executable form under a
+different license, You must make it absolutely clear that
+any terms which differ from this License are offered by You
+alone, not by the Initial Developer or Contributor. You
+hereby agree to indemnify the Initial Developer and every
+Contributor for any liability incurred by the Initial
+Developer or such Contributor as a result of any such terms
+You offer.
+
+3.6. Larger Works.
+
+You may create a Larger Work by combining Covered Software
+with other code not governed by the terms of this License
+and distribute the Larger Work as a single product. In such
+a case, You must make sure the requirements of this License
+are fulfilled for the Covered Software.
+
+4. Versions of the License.
+
+4.1. New Versions.
+
+Sun Microsystems, Inc. is the initial license steward and
+may publish revised and/or new versions of this License
+from time to time. Each version will be given a
+distinguishing version number. Except as provided in
+Section 4.3, no one other than the license steward has the
+right to modify this License.
+
+4.2. Effect of New Versions.
+
+You may always continue to use, distribute or otherwise
+make the Covered Software available under the terms of the
+version of the License under which You originally received
+the Covered Software. If the Initial Developer includes a
+notice in the Original Software prohibiting it from being
+distributed or otherwise made available under any
+subsequent version of the License, You must distribute and
+make the Covered Software available under the terms of the
+version of the License under which You originally received
+the Covered Software. Otherwise, You may also choose to
+use, distribute or otherwise make the Covered Software
+available under the terms of any subsequent version of the
+License published by the license steward.
+
+4.3. Modified Versions.
+
+When You are an Initial Developer and You want to create a
+new license for Your Original Software, You may create and
+use a modified version of this License if You: (a) rename
+the license and remove any references to the name of the
+license steward (except to note that the license differs
+from this License); and (b) otherwise make it clear that
+the license contains terms which differ from this License.
+
+5. DISCLAIMER OF WARRANTY.
+
+COVERED SOFTWARE IS PROVIDED UNDER THIS LICENSE ON AN "AS IS"
+BASIS, WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED,
+INCLUDING, WITHOUT LIMITATION, WARRANTIES THAT THE COVERED
+SOFTWARE IS FREE OF DEFECTS, MERCHANTABLE, FIT FOR A PARTICULAR
+PURPOSE OR NON-INFRINGING. THE ENTIRE RISK AS TO THE QUALITY AND
+PERFORMANCE OF THE COVERED SOFTWARE IS WITH YOU. SHOULD ANY
+COVERED SOFTWARE PROVE DEFECTIVE IN ANY RESPECT, YOU (NOT THE
+INITIAL DEVELOPER OR ANY OTHER CONTRIBUTOR) ASSUME THE COST OF
+ANY NECESSARY SERVICING, REPAIR OR CORRECTION. THIS DISCLAIMER OF
+WARRANTY CONSTITUTES AN ESSENTIAL PART OF THIS LICENSE. NO USE OF
+ANY COVERED SOFTWARE IS AUTHORIZED HEREUNDER EXCEPT UNDER THIS
+DISCLAIMER.
+
+6. TERMINATION.
+
+6.1. This License and the rights granted hereunder will
+terminate automatically if You fail to comply with terms
+herein and fail to cure such breach within 30 days of
+becoming aware of the breach. Provisions which, by their
+nature, must remain in effect beyond the termination of
+this License shall survive.
+
+6.2. If You assert a patent infringement claim (excluding
+declaratory judgment actions) against Initial Developer or
+a Contributor (the Initial Developer or Contributor against
+whom You assert such claim is referred to as "Participant")
+alleging that the Participant Software (meaning the
+Contributor Version where the Participant is a Contributor
+or the Original Software where the Participant is the
+Initial Developer) directly or indirectly infringes any
+patent, then any and all rights granted directly or
+indirectly to You by such Participant, the Initial
+Developer (if the Initial Developer is not the Participant)
+and all Contributors under Sections 2.1 and/or 2.2 of this
+License shall, upon 60 days notice from Participant
+terminate prospectively and automatically at the expiration
+of such 60 day notice period, unless if within such 60 day
+period You withdraw Your claim with respect to the
+Participant Software against such Participant either
+unilaterally or pursuant to a written agreement with
+Participant.
+
+6.3. In the event of termination under Sections 6.1 or 6.2
+above, all end user licenses that have been validly granted
+by You or any distributor hereunder prior to termination
+(excluding licenses granted to You by any distributor)
+shall survive termination.
+
+7. LIMITATION OF LIABILITY.
+
+UNDER NO CIRCUMSTANCES AND UNDER NO LEGAL THEORY, WHETHER TORT
+(INCLUDING NEGLIGENCE), CONTRACT, OR OTHERWISE, SHALL YOU, THE
+INITIAL DEVELOPER, ANY OTHER CONTRIBUTOR, OR ANY DISTRIBUTOR OF
+COVERED SOFTWARE, OR ANY SUPPLIER OF ANY OF SUCH PARTIES, BE
+LIABLE TO ANY PERSON FOR ANY INDIRECT, SPECIAL, INCIDENTAL, OR
+CONSEQUENTIAL DAMAGES OF ANY CHARACTER INCLUDING, WITHOUT
+LIMITATION, DAMAGES FOR LOST PROFITS, LOSS OF GOODWILL, WORK
+STOPPAGE, COMPUTER FAILURE OR MALFUNCTION, OR ANY AND ALL OTHER
+COMMERCIAL DAMAGES OR LOSSES, EVEN IF SUCH PARTY SHALL HAVE BEEN
+INFORMED OF THE POSSIBILITY OF SUCH DAMAGES. THIS LIMITATION OF
+LIABILITY SHALL NOT APPLY TO LIABILITY FOR DEATH OR PERSONAL
+INJURY RESULTING FROM SUCH PARTY'S NEGLIGENCE TO THE EXTENT
+APPLICABLE LAW PROHIBITS SUCH LIMITATION. SOME JURISDICTIONS DO
+NOT ALLOW THE EXCLUSION OR LIMITATION OF INCIDENTAL OR
+CONSEQUENTIAL DAMAGES, SO THIS EXCLUSION AND LIMITATION MAY NOT
+APPLY TO YOU.
+
+8. U.S. GOVERNMENT END USERS.
+
+The Covered Software is a "commercial item," as that term is
+defined in 48 C.F.R. 2.101 (Oct. 1995), consisting of "commercial
+computer software" (as that term is defined at 48 C.F.R. ¤
+252.227-7014(a)(1)) and "commercial computer software
+documentation" as such terms are used in 48 C.F.R. 12.212 (Sept.
+1995). Consistent with 48 C.F.R. 12.212 and 48 C.F.R. 227.7202-1
+through 227.7202-4 (June 1995), all U.S. Government End Users
+acquire Covered Software with only those rights set forth herein.
+This U.S. Government Rights clause is in lieu of, and supersedes,
+any other FAR, DFAR, or other clause or provision that addresses
+Government rights in computer software under this License.
+
+9. MISCELLANEOUS.
+
+This License represents the complete agreement concerning subject
+matter hereof. If any provision of this License is held to be
+unenforceable, such provision shall be reformed only to the
+extent necessary to make it enforceable. This License shall be
+governed by the law of the jurisdiction specified in a notice
+contained within the Original Software (except to the extent
+applicable law, if any, provides otherwise), excluding such
+jurisdiction's conflict-of-law provisions. Any litigation
+relating to this License shall be subject to the jurisdiction of
+the courts located in the jurisdiction and venue specified in a
+notice contained within the Original Software, with the losing
+party responsible for costs, including, without limitation, court
+costs and reasonable attorneys' fees and expenses. The
+application of the United Nations Convention on Contracts for the
+International Sale of Goods is expressly excluded. Any law or
+regulation which provides that the language of a contract shall
+be construed against the drafter shall not apply to this License.
+You agree that You alone are responsible for compliance with the
+United States export administration regulations (and the export
+control laws and regulation of any other countries) when You use,
+distribute or otherwise make available any Covered Software.
+
+10. RESPONSIBILITY FOR CLAIMS.
+
+As between Initial Developer and the Contributors, each party is
+responsible for claims and damages arising, directly or
+indirectly, out of its utilization of rights under this License
+and You agree to work with Initial Developer and Contributors to
+distribute such responsibility on an equitable basis. Nothing
+herein is intended or shall be deemed to constitute any admission
+of liability.
diff --git a/build-greenpages/resources/about_files/slf4j.txt b/build-greenpages/resources/about_files/slf4j.txt
new file mode 100644
index 0000000..371607c
--- /dev/null
+++ b/build-greenpages/resources/about_files/slf4j.txt
@@ -0,0 +1,20 @@
+Copyright (c) 2004-2008 QOS.ch
+All rights reserved.
+
+Permission is hereby granted, free of charge, to any person obtaining a copy
+of this software and associated documentation files (the "Software"), to deal
+in the Software without restriction, including without limitation the rights
+to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+copies of the Software, and to permit persons to whom the Software is
+furnished to do so, subject to the following conditions:
+
+The above copyright notice and this permission notice shall be included in
+all copies or substantial portions of the Software.
+
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
+THE SOFTWARE.
diff --git a/build-greenpages/resources/epl-v10.html b/build-greenpages/resources/epl-v10.html
new file mode 100644
index 0000000..4da2302
--- /dev/null
+++ b/build-greenpages/resources/epl-v10.html
@@ -0,0 +1,258 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml"><head>
+
+
+
+
+<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
+<title>Eclipse Public License - Version 1.0</title>
+<style type="text/css">
+  body {
+    size: 8.5in 11.0in;
+    margin: 0.25in 0.5in 0.25in 0.5in;
+    tab-interval: 0.5in;
+    }
+  p {  	
+    margin-left: auto;
+    margin-top:  0.5em;
+    margin-bottom: 0.5em;
+    }
+  p.list {
+  	margin-left: 0.5in;
+    margin-top:  0.05em;
+    margin-bottom: 0.05em;
+    }
+  </style>
+
+</head><body lang="EN-US">
+
+<p align="center"><b>Eclipse Public License - v 1.0</b></p>
+
+<p>THE ACCOMPANYING PROGRAM IS PROVIDED UNDER THE TERMS OF THIS ECLIPSE
+PUBLIC LICENSE ("AGREEMENT"). ANY USE, REPRODUCTION OR
+DISTRIBUTION OF THE PROGRAM CONSTITUTES RECIPIENT'S ACCEPTANCE OF THIS
+AGREEMENT.</p>
+
+<p><b>1. DEFINITIONS</b></p>
+
+<p>"Contribution" means:</p>
+
+<p class="list">a) in the case of the initial Contributor, the initial
+code and documentation distributed under this Agreement, and</p>
+<p class="list">b) in the case of each subsequent Contributor:</p>
+<p class="list">i) changes to the Program, and</p>
+<p class="list">ii) additions to the Program;</p>
+<p class="list">where such changes and/or additions to the Program
+originate from and are distributed by that particular Contributor. A
+Contribution 'originates' from a Contributor if it was added to the
+Program by such Contributor itself or anyone acting on such
+Contributor's behalf. Contributions do not include additions to the
+Program which: (i) are separate modules of software distributed in
+conjunction with the Program under their own license agreement, and (ii)
+are not derivative works of the Program.</p>
+
+<p>"Contributor" means any person or entity that distributes
+the Program.</p>
+
+<p>"Licensed Patents" mean patent claims licensable by a
+Contributor which are necessarily infringed by the use or sale of its
+Contribution alone or when combined with the Program.</p>
+
+<p>"Program" means the Contributions distributed in accordance
+with this Agreement.</p>
+
+<p>"Recipient" means anyone who receives the Program under
+this Agreement, including all Contributors.</p>
+
+<p><b>2. GRANT OF RIGHTS</b></p>
+
+<p class="list">a) Subject to the terms of this Agreement, each
+Contributor hereby grants Recipient a non-exclusive, worldwide,
+royalty-free copyright license to reproduce, prepare derivative works
+of, publicly display, publicly perform, distribute and sublicense the
+Contribution of such Contributor, if any, and such derivative works, in
+source code and object code form.</p>
+
+<p class="list">b) Subject to the terms of this Agreement, each
+Contributor hereby grants Recipient a non-exclusive, worldwide,
+royalty-free patent license under Licensed Patents to make, use, sell,
+offer to sell, import and otherwise transfer the Contribution of such
+Contributor, if any, in source code and object code form. This patent
+license shall apply to the combination of the Contribution and the
+Program if, at the time the Contribution is added by the Contributor,
+such addition of the Contribution causes such combination to be covered
+by the Licensed Patents. The patent license shall not apply to any other
+combinations which include the Contribution. No hardware per se is
+licensed hereunder.</p>
+
+<p class="list">c) Recipient understands that although each Contributor
+grants the licenses to its Contributions set forth herein, no assurances
+are provided by any Contributor that the Program does not infringe the
+patent or other intellectual property rights of any other entity. Each
+Contributor disclaims any liability to Recipient for claims brought by
+any other entity based on infringement of intellectual property rights
+or otherwise. As a condition to exercising the rights and licenses
+granted hereunder, each Recipient hereby assumes sole responsibility to
+secure any other intellectual property rights needed, if any. For
+example, if a third party patent license is required to allow Recipient
+to distribute the Program, it is Recipient's responsibility to acquire
+that license before distributing the Program.</p>
+
+<p class="list">d) Each Contributor represents that to its knowledge it
+has sufficient copyright rights in its Contribution, if any, to grant
+the copyright license set forth in this Agreement.</p>
+
+<p><b>3. REQUIREMENTS</b></p>
+
+<p>A Contributor may choose to distribute the Program in object code
+form under its own license agreement, provided that:</p>
+
+<p class="list">a) it complies with the terms and conditions of this
+Agreement; and</p>
+
+<p class="list">b) its license agreement:</p>
+
+<p class="list">i) effectively disclaims on behalf of all Contributors
+all warranties and conditions, express and implied, including warranties
+or conditions of title and non-infringement, and implied warranties or
+conditions of merchantability and fitness for a particular purpose;</p>
+
+<p class="list">ii) effectively excludes on behalf of all Contributors
+all liability for damages, including direct, indirect, special,
+incidental and consequential damages, such as lost profits;</p>
+
+<p class="list">iii) states that any provisions which differ from this
+Agreement are offered by that Contributor alone and not by any other
+party; and</p>
+
+<p class="list">iv) states that source code for the Program is available
+from such Contributor, and informs licensees how to obtain it in a
+reasonable manner on or through a medium customarily used for software
+exchange.</p>
+
+<p>When the Program is made available in source code form:</p>
+
+<p class="list">a) it must be made available under this Agreement; and</p>
+
+<p class="list">b) a copy of this Agreement must be included with each
+copy of the Program.</p>
+
+<p>Contributors may not remove or alter any copyright notices contained
+within the Program.</p>
+
+<p>Each Contributor must identify itself as the originator of its
+Contribution, if any, in a manner that reasonably allows subsequent
+Recipients to identify the originator of the Contribution.</p>
+
+<p><b>4. COMMERCIAL DISTRIBUTION</b></p>
+
+<p>Commercial distributors of software may accept certain
+responsibilities with respect to end users, business partners and the
+like. While this license is intended to facilitate the commercial use of
+the Program, the Contributor who includes the Program in a commercial
+product offering should do so in a manner which does not create
+potential liability for other Contributors. Therefore, if a Contributor
+includes the Program in a commercial product offering, such Contributor
+("Commercial Contributor") hereby agrees to defend and
+indemnify every other Contributor ("Indemnified Contributor")
+against any losses, damages and costs (collectively "Losses")
+arising from claims, lawsuits and other legal actions brought by a third
+party against the Indemnified Contributor to the extent caused by the
+acts or omissions of such Commercial Contributor in connection with its
+distribution of the Program in a commercial product offering. The
+obligations in this section do not apply to any claims or Losses
+relating to any actual or alleged intellectual property infringement. In
+order to qualify, an Indemnified Contributor must: a) promptly notify
+the Commercial Contributor in writing of such claim, and b) allow the
+Commercial Contributor to control, and cooperate with the Commercial
+Contributor in, the defense and any related settlement negotiations. The
+Indemnified Contributor may participate in any such claim at its own
+expense.</p>
+
+<p>For example, a Contributor might include the Program in a commercial
+product offering, Product X. That Contributor is then a Commercial
+Contributor. If that Commercial Contributor then makes performance
+claims, or offers warranties related to Product X, those performance
+claims and warranties are such Commercial Contributor's responsibility
+alone. Under this section, the Commercial Contributor would have to
+defend claims against the other Contributors related to those
+performance claims and warranties, and if a court requires any other
+Contributor to pay any damages as a result, the Commercial Contributor
+must pay those damages.</p>
+
+<p><b>5. NO WARRANTY</b></p>
+
+<p>EXCEPT AS EXPRESSLY SET FORTH IN THIS AGREEMENT, THE PROGRAM IS
+PROVIDED 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. Each Recipient is solely
+responsible for determining the appropriateness of using and
+distributing the Program and assumes all risks associated with its
+exercise of rights under this Agreement , including but not limited to
+the risks and costs of program errors, compliance with applicable laws,
+damage to or loss of data, programs or equipment, and unavailability or
+interruption of operations.</p>
+
+<p><b>6. DISCLAIMER OF LIABILITY</b></p>
+
+<p>EXCEPT AS EXPRESSLY SET FORTH IN THIS AGREEMENT, NEITHER RECIPIENT
+NOR ANY CONTRIBUTORS SHALL HAVE ANY LIABILITY FOR ANY DIRECT, INDIRECT,
+INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING
+WITHOUT LIMITATION LOST PROFITS), HOWEVER CAUSED AND ON ANY THEORY OF
+LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
+NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OR
+DISTRIBUTION OF THE PROGRAM OR THE EXERCISE OF ANY RIGHTS GRANTED
+HEREUNDER, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGES.</p>
+
+<p><b>7. GENERAL</b></p>
+
+<p>If any provision of this Agreement is invalid or unenforceable under
+applicable law, it shall not affect the validity or enforceability of
+the remainder of the terms of this Agreement, and without further action
+by the parties hereto, such provision shall be reformed to the minimum
+extent necessary to make such provision valid and enforceable.</p>
+
+<p>If Recipient institutes patent litigation against any entity
+(including a cross-claim or counterclaim in a lawsuit) alleging that the
+Program itself (excluding combinations of the Program with other
+software or hardware) infringes such Recipient's patent(s), then such
+Recipient's rights granted under Section 2(b) shall terminate as of the
+date such litigation is filed.</p>
+
+<p>All Recipient's rights under this Agreement shall terminate if it
+fails to comply with any of the material terms or conditions of this
+Agreement and does not cure such failure in a reasonable period of time
+after becoming aware of such noncompliance. If all Recipient's rights
+under this Agreement terminate, Recipient agrees to cease use and
+distribution of the Program as soon as reasonably practicable. However,
+Recipient's obligations under this Agreement and any licenses granted by
+Recipient relating to the Program shall continue and survive.</p>
+
+<p>Everyone is permitted to copy and distribute copies of this
+Agreement, but in order to avoid inconsistency the Agreement is
+copyrighted and may only be modified in the following manner. The
+Agreement Steward reserves the right to publish new versions (including
+revisions) of this Agreement from time to time. No one other than the
+Agreement Steward has the right to modify this Agreement. The Eclipse
+Foundation is the initial Agreement Steward. The Eclipse Foundation may
+assign the responsibility to serve as the Agreement Steward to a
+suitable separate entity. Each new version of the Agreement will be
+given a distinguishing version number. The Program (including
+Contributions) may always be distributed subject to the version of the
+Agreement under which it was received. In addition, after a new version
+of the Agreement is published, Contributor may elect to distribute the
+Program (including its Contributions) under the new version. Except as
+expressly stated in Sections 2(a) and 2(b) above, Recipient receives no
+rights or licenses to the intellectual property of any Contributor under
+this Agreement, whether expressly, by implication, estoppel or
+otherwise. All rights in the Program not expressly granted under this
+Agreement are reserved.</p>
+
+<p>This Agreement is governed by the laws of the State of New York and
+the intellectual property laws of the United States of America. No party
+to this Agreement will bring a legal action under this Agreement more
+than one year after the cause of action arose. Each party waives its
+rights to a jury trial in any resulting litigation.</p>
+
+</body></html>
\ No newline at end of file
diff --git a/build-greenpages/resources/notice.html b/build-greenpages/resources/notice.html
new file mode 100644
index 0000000..0ee73f4
--- /dev/null
+++ b/build-greenpages/resources/notice.html
@@ -0,0 +1,104 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
+<!-- saved from url=(0044)http://www.eclipse.org/legal/epl/notice.html -->
+<HTML xmlns="http://www.w3.org/1999/xhtml"><HEAD><META http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
+
+<TITLE>Eclipse Foundation Software User Agreement</TITLE>
+</HEAD><BODY lang="EN-US">
+<H2>Eclipse Foundation Software User Agreement</H2>
+<P>April 14, 2010</P>
+
+<H3>Usage Of Content</H3>
+
+<P>THE ECLIPSE FOUNDATION MAKES AVAILABLE SOFTWARE, DOCUMENTATION, INFORMATION AND/OR OTHER MATERIALS FOR OPEN SOURCE PROJECTS
+   (COLLECTIVELY "CONTENT").  USE OF THE CONTENT IS GOVERNED BY THE TERMS AND CONDITIONS OF THIS AGREEMENT AND/OR THE TERMS AND
+   CONDITIONS OF LICENSE AGREEMENTS OR NOTICES INDICATED OR REFERENCED BELOW.  BY USING THE CONTENT, YOU AGREE THAT YOUR USE
+   OF THE CONTENT IS GOVERNED BY THIS AGREEMENT AND/OR THE TERMS AND CONDITIONS OF ANY APPLICABLE LICENSE AGREEMENTS OR
+   NOTICES INDICATED OR REFERENCED BELOW.  IF YOU DO NOT AGREE TO THE TERMS AND CONDITIONS OF THIS AGREEMENT AND THE TERMS AND
+   CONDITIONS OF ANY APPLICABLE LICENSE AGREEMENTS OR NOTICES INDICATED OR REFERENCED BELOW, THEN YOU MAY NOT USE THE CONTENT.</P>
+
+<H3>Applicable Licenses</H3>
+
+<P>Unless otherwise indicated, all Content made available by the Eclipse Foundation is provided to you under the terms and conditions of the Eclipse Public License Version 1.0
+   ("EPL").  A copy of the EPL is provided with this Content and is also available at <A href="http://www.eclipse.org/legal/epl-v10.html">http://www.eclipse.org/legal/epl-v10.html</A>.
+   For purposes of the EPL, "Program" will mean the Content.</P>
+
+<P>Content includes, but is not limited to, source code, object code, documentation and other files maintained in the Eclipse Foundation source code
+   repository ("Repository") in software modules ("Modules") and made available as downloadable archives ("Downloads").</P>
+
+<UL>
+       <LI>Content may be structured and packaged into modules to facilitate delivering, extending, and upgrading the Content.  Typical modules may include plug-ins ("Plug-ins"), plug-in fragments ("Fragments"), and features ("Features").</LI>
+       <LI>Each Plug-in or Fragment may be packaged as a sub-directory or JAR (Java™ ARchive) in a directory named "plugins".</LI>
+       <LI>A Feature is a bundle of one or more Plug-ins and/or Fragments and associated material.  Each Feature may be packaged as a sub-directory in a directory named "features".  Within a Feature, files named "feature.xml" may contain a list of the names and version numbers of the Plug-ins
+      and/or Fragments associated with that Feature.</LI>
+       <LI>Features may also include other Features ("Included Features"). Within a Feature, files named "feature.xml" may contain a list of the names and version numbers of Included Features.</LI>
+</UL>
+
+<P>The terms and conditions governing Plug-ins and Fragments should be contained in files named "about.html" ("Abouts"). The terms and conditions governing Features and
+Included Features should be contained in files named "license.html" ("Feature Licenses").  Abouts and Feature Licenses may be located in any directory of a Download or Module
+including, but not limited to the following locations:</P>
+
+<UL>
+       <LI>The top-level (root) directory</LI>
+       <LI>Plug-in and Fragment directories</LI>
+       <LI>Inside Plug-ins and Fragments packaged as JARs</LI>
+       <LI>Sub-directories of the directory named "src" of certain Plug-ins</LI>
+       <LI>Feature directories</LI>
+</UL>
+
+<P>Note: if a Feature made available by the Eclipse Foundation is installed using the Provisioning Technology (as defined below), you must agree to a license ("Feature Update License") during the
+installation process.  If the Feature contains Included Features, the Feature Update License should either provide you with the terms and conditions governing the Included Features or
+inform you where you can locate them.  Feature Update Licenses may be found in the "license" property of files named "feature.properties" found within a Feature.
+Such Abouts, Feature Licenses, and Feature Update Licenses contain the terms and conditions (or references to such terms and conditions) that govern your use of the associated Content in
+that directory.</P>
+
+<P>THE ABOUTS, FEATURE LICENSES, AND FEATURE UPDATE LICENSES MAY REFER TO THE EPL OR OTHER LICENSE AGREEMENTS, NOTICES OR TERMS AND CONDITIONS.  SOME OF THESE
+OTHER LICENSE AGREEMENTS MAY INCLUDE (BUT ARE NOT LIMITED TO):</P>
+
+<UL>
+       <LI>Common Public License Version 1.0 (available at <A href="http://www.eclipse.org/legal/cpl-v10.html">http://www.eclipse.org/legal/cpl-v10.html</A>)</LI>
+       <LI>Apache Software License 1.1 (available at <A href="http://www.apache.org/licenses/LICENSE">http://www.apache.org/licenses/LICENSE</A>)</LI>
+       <LI>Apache Software License 2.0 (available at <A href="http://www.apache.org/licenses/LICENSE-2.0">http://www.apache.org/licenses/LICENSE-2.0</A>)</LI>
+       <LI>Metro Link Public License 1.00 (available at <A href="http://www.opengroup.org/openmotif/supporters/metrolink/license.html">http://www.opengroup.org/openmotif/supporters/metrolink/license.html</A>)</LI>
+       <LI>Mozilla Public License Version 1.1 (available at <A href="http://www.mozilla.org/MPL/MPL-1.1.html">http://www.mozilla.org/MPL/MPL-1.1.html</A>)</LI>
+</UL>
+
+<P>IT IS YOUR OBLIGATION TO READ AND ACCEPT ALL SUCH TERMS AND CONDITIONS PRIOR TO USE OF THE CONTENT.  If no About, Feature License, or Feature Update License is provided, please
+contact the Eclipse Foundation to determine what terms and conditions govern that particular Content.</P>
+
+
+<H3>Use of Provisioning Technology</H3>
+
+<P>The Eclipse Foundation makes available provisioning software, examples of which include, but are not limited to, p2 and the Eclipse
+   Update Manager ("Provisioning Technology") for the purpose of allowing users to install software, documentation, information and/or
+   other materials (collectively "Installable Software"). This capability is provided with the intent of allowing such users to
+   install, extend and update Eclipse-based products. Information about packaging Installable Software is available at <A href="http://eclipse.org/equinox/p2/repository_packaging.html">http://eclipse.org/equinox/p2/repository_packaging.html</A>
+   ("Specification").</P>
+
+<P>You may use Provisioning Technology to allow other parties to install Installable Software. You shall be responsible for enabling the
+   applicable license agreements relating to the Installable Software to be presented to, and accepted by, the users of the Provisioning Technology
+   in accordance with the Specification. By using Provisioning Technology in such a manner and making it available in accordance with the
+   Specification, you further acknowledge your agreement to, and the acquisition of all necessary rights to permit the following:</P>
+
+<OL>
+       <LI>A series of actions may occur ("Provisioning Process") in which a user may execute the Provisioning Technology
+       on a machine ("Target Machine") with the intent of installing, extending or updating the functionality of an Eclipse-based
+       product.</LI>
+       <LI>During the Provisioning Process, the Provisioning Technology may cause third party Installable Software or a portion thereof to be
+       accessed and copied to the Target Machine.</LI>
+       <LI>Pursuant to the Specification, you will provide to the user the terms and conditions that govern the use of the Installable
+       Software ("Installable Software Agreement") and such Installable Software Agreement shall be accessed from the Target
+       Machine in accordance with the Specification. Such Installable Software Agreement must inform the user of the terms and conditions that govern
+       the Installable Software and must solicit acceptance by the end user in the manner prescribed in such Installable Software Agreement. Upon such
+       indication of agreement by the user, the provisioning Technology will complete installation of the Installable Software.</LI>
+</OL>
+
+<H3>Cryptography</H3>
+
+<P>Content may contain encryption software. The country in which you are currently may have restrictions on the import, possession, and use, and/or re-export to
+   another country, of encryption software. BEFORE using any encryption software, please check the country's laws, regulations and policies concerning the import,
+   possession, or use, and re-export of encryption software, to see if this is permitted.</P>
+
+<P><SMALL>Java and all Java-based trademarks are trademarks of Oracle Corporation in the United States, other countries, or both.</SMALL></P>
+
+
+</BODY></HTML>
\ No newline at end of file
diff --git a/build.properties b/build.properties
new file mode 100644
index 0000000..2cffe0c
--- /dev/null
+++ b/build.properties
@@ -0,0 +1,7 @@
+version=2.2.0
+release.type=integration
+natural.name=greenpages
+project.name=Virgo Web Server Samples
+project.key=VWSS
+ivy.cache.dir=${basedir}/../ivy-cache
+integration.repo.dir=${basedir}/../integration-repo
diff --git a/db/data.bat b/db/data.bat
new file mode 100755
index 0000000..69b814f
--- /dev/null
+++ b/db/data.bat
@@ -0,0 +1,5 @@
+@echo off

+setlocal

+

+call h2

+java -cp "%H2CP%" org.h2.tools.RunScript -url jdbc:h2:tcp://localhost/~/greenpages-db/greenpages -user greenpages -password pass -script db.sql
\ No newline at end of file
diff --git a/db/data.sh b/db/data.sh
new file mode 100755
index 0000000..7744e9d
--- /dev/null
+++ b/db/data.sh
@@ -0,0 +1,4 @@
+#!/usr/bin/env bash
+. ./h2.sh
+
+java -cp $CLASSPATH org.h2.tools.RunScript -url jdbc:h2:tcp://localhost/~/greenpages-db/greenpages -user greenpages -password pass -script ./db.sql
diff --git a/db/db.sql b/db/db.sql
new file mode 100644
index 0000000..394c60c
--- /dev/null
+++ b/db/db.sql
@@ -0,0 +1,17 @@
+DROP TABLE IF EXISTS LISTING;
+
+CREATE TABLE LISTING (
+	LISTING_NUMBER INT PRIMARY KEY,
+	FIRST_NAME VARCHAR(255),
+	LAST_NAME VARCHAR(255),
+	EMAIL_ADDRESS VARCHAR(255)
+);
+
+INSERT INTO LISTING VALUES(1, 'Rod', 'Johnson', 'rod.johnson@springsource.com');
+INSERT INTO LISTING VALUES(2, 'Rob', 'Harrop', 'rob.harrop@springsource.com');
+INSERT INTO LISTING VALUES(3, 'Glyn', 'Normington', 'glyn.normington@springsource.com');
+INSERT INTO LISTING VALUES(4, 'Andy', 'Wilkinson', 'andy.wilkinson@springsource.com');
+INSERT INTO LISTING VALUES(5, 'Ben', 'Hale', 'ben.hale@springsource.com');
+INSERT INTO LISTING VALUES(6, 'Chris', 'Frost', 'chris.frost@springsource.com');
+INSERT INTO LISTING VALUES(7, 'Steve', 'Powell', 'steve.powell@springsource.com');
+INSERT INTO LISTING VALUES(8, 'Christian', 'Dupuis', 'christian.dupuis@springsource.com');
diff --git a/db/h2.bat b/db/h2.bat
new file mode 100755
index 0000000..e79da93
--- /dev/null
+++ b/db/h2.bat
@@ -0,0 +1,9 @@
+for /r "%HOMEPATH%\.m2" %%X in (*h2*.jar) do (set H2CP=%H2CP%;%%X)

+

+if "%H2CP%" == "" (goto h2NotFound) else goto end

+

+:h2NotFound

+echo Cannot find H2 jars in .m2 Maven repository

+exit /b -1s

+

+:end

diff --git a/db/h2.sh b/db/h2.sh
new file mode 100755
index 0000000..e83c106
--- /dev/null
+++ b/db/h2.sh
@@ -0,0 +1,13 @@
+#!/usr/bin/env bash
+JARS=`find $HOME/.m2 -iname "com.springsource.org.h2*"`
+
+for JAR in $JARS
+do
+	CLASSPATH=$CLASSPATH:$JAR
+done
+
+if [ -z $CLASSPATH ]
+then
+	echo "Cannot find H2 jars in .m2 Maven repository"
+	exit -1
+fi
\ No newline at end of file
diff --git a/db/run.bat b/db/run.bat
new file mode 100755
index 0000000..57a0394
--- /dev/null
+++ b/db/run.bat
@@ -0,0 +1,5 @@
+@echo off

+setlocal

+

+call h2

+start java -cp "%H2CP%" org.h2.tools.Server
\ No newline at end of file
diff --git a/db/run.sh b/db/run.sh
new file mode 100755
index 0000000..c3403e4
--- /dev/null
+++ b/db/run.sh
@@ -0,0 +1,5 @@
+#!/usr/bin/env bash
+. ./h2.sh
+
+java -cp $CLASSPATH org.h2.tools.Server
+
diff --git a/solution/greenpages.app/.classpath b/solution/greenpages.app/.classpath
new file mode 100644
index 0000000..0c8581d
--- /dev/null
+++ b/solution/greenpages.app/.classpath
@@ -0,0 +1,13 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<classpath>
+	<classpathentry kind="src" output="target/classes" path="src/main/java"/>
+	<classpathentry excluding="**" kind="src" output="target/classes" path="src/main/resources"/>
+	<classpathentry kind="con" path="org.maven.ide.eclipse.MAVEN2_CLASSPATH_CONTAINER"/>
+	<classpathentry kind="con" path="org.eclipse.jst.server.core.container/com.springsource.server.ide.server.core.runtime.classpath/SpringSource dm Server (Runtime) v2.0">
+		<attributes>
+			<attribute name="owner.project.facets" value="jst.utility"/>
+		</attributes>
+	</classpathentry>
+	<classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER/org.eclipse.jdt.internal.debug.ui.launcher.StandardVMType/JavaSE-1.6"/>
+	<classpathentry kind="output" path="target/classes"/>
+</classpath>
diff --git a/solution/greenpages.app/.project b/solution/greenpages.app/.project
new file mode 100644
index 0000000..736d5b3
--- /dev/null
+++ b/solution/greenpages.app/.project
@@ -0,0 +1,48 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<projectDescription>
+	<name>greenpages.app-solution</name>
+	<comment></comment>
+	<projects>
+	</projects>
+	<buildSpec>
+		<buildCommand>
+			<name>org.eclipse.wst.common.project.facet.core.builder</name>
+			<arguments>
+			</arguments>
+		</buildCommand>
+		<buildCommand>
+			<name>org.eclipse.jdt.core.javabuilder</name>
+			<arguments>
+			</arguments>
+		</buildCommand>
+		<buildCommand>
+			<name>org.springframework.ide.eclipse.core.springbuilder</name>
+			<arguments>
+			</arguments>
+		</buildCommand>
+		<buildCommand>
+			<name>org.maven.ide.eclipse.maven2Builder</name>
+			<arguments>
+			</arguments>
+		</buildCommand>
+		<buildCommand>
+			<name>com.springsource.server.ide.bundlor.core.builder</name>
+			<arguments>
+			</arguments>
+		</buildCommand>
+		<buildCommand>
+			<name>org.eclipse.wst.validation.validationbuilder</name>
+			<arguments>
+			</arguments>
+		</buildCommand>
+	</buildSpec>
+	<natures>
+		<nature>org.eclipse.jem.workbench.JavaEMFNature</nature>
+		<nature>org.eclipse.wst.common.modulecore.ModuleCoreNature</nature>
+		<nature>com.springsource.server.ide.facet.core.bundlenature</nature>
+		<nature>org.maven.ide.eclipse.maven2Nature</nature>
+		<nature>org.eclipse.jdt.core.javanature</nature>
+		<nature>org.springframework.ide.eclipse.core.springnature</nature>
+		<nature>org.eclipse.wst.common.project.facet.core.nature</nature>
+	</natures>
+</projectDescription>
diff --git a/solution/greenpages.app/.settings/org.eclipse.wst.common.component b/solution/greenpages.app/.settings/org.eclipse.wst.common.component
new file mode 100644
index 0000000..0c40711
--- /dev/null
+++ b/solution/greenpages.app/.settings/org.eclipse.wst.common.component
@@ -0,0 +1,7 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<project-modules id="moduleCoreId" project-version="1.5.0">
+    <wb-module deploy-name="greenpages.app-solution">
+        <wb-resource deploy-path="/" source-path="/src/main/java"/>
+        <wb-resource deploy-path="/" source-path="/src/main/resources"/>
+    </wb-module>
+</project-modules>
diff --git a/solution/greenpages.app/.settings/org.eclipse.wst.common.project.facet.core.xml b/solution/greenpages.app/.settings/org.eclipse.wst.common.project.facet.core.xml
new file mode 100644
index 0000000..339a5e5
--- /dev/null
+++ b/solution/greenpages.app/.settings/org.eclipse.wst.common.project.facet.core.xml
@@ -0,0 +1,7 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<faceted-project>
+  <runtime name="SpringSource dm Server (Runtime) v2.0"/>
+  <installed facet="jst.java" version="6.0"/>
+  <installed facet="com.springsource.server.bundle" version="1.0"/>
+  <installed facet="jst.utility" version="1.0"/>
+</faceted-project>
diff --git a/solution/greenpages.app/.settings/org.maven.ide.eclipse.prefs b/solution/greenpages.app/.settings/org.maven.ide.eclipse.prefs
new file mode 100644
index 0000000..36f8d7b
--- /dev/null
+++ b/solution/greenpages.app/.settings/org.maven.ide.eclipse.prefs
@@ -0,0 +1,9 @@
+#Tue Apr 21 16:53:30 BST 2009
+activeProfiles=
+eclipse.preferences.version=1
+fullBuildGoals=process-test-resources
+includeModules=false
+resolveWorkspaceProjects=true
+resourceFilterGoals=process-resources resources\:testResources
+skipCompilerPlugin=true
+version=1
diff --git a/solution/greenpages.app/.springBeans b/solution/greenpages.app/.springBeans
new file mode 100644
index 0000000..4cdca85
--- /dev/null
+++ b/solution/greenpages.app/.springBeans
@@ -0,0 +1,15 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<beansProjectDescription>
+	<version>1</version>
+	<pluginVersion><![CDATA[2.2.2.v200901262210]]></pluginVersion>
+	<configSuffixes>
+		<configSuffix><![CDATA[xml]]></configSuffix>
+	</configSuffixes>
+	<enableImports><![CDATA[false]]></enableImports>
+	<configs>
+		<config>src/main/resources/META-INF/spring/module-context.xml</config>
+		<config>src/main/resources/META-INF/spring/osgi-context.xml</config>
+	</configs>
+	<configSets>
+	</configSets>
+</beansProjectDescription>
diff --git a/solution/greenpages.app/pom.xml b/solution/greenpages.app/pom.xml
new file mode 100644
index 0000000..354124d
--- /dev/null
+++ b/solution/greenpages.app/pom.xml
@@ -0,0 +1,32 @@
+<?xml version="1.0" encoding="UTF-8"?>

+<project

+		xmlns="http://maven.apache.org/POM/4.0.0"

+		xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"

+		xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">

+

+	<parent>

+		<groupId>com.springsource.dmserver</groupId>

+		<artifactId>greenpages.parent-solution</artifactId>

+		<version>2.0.1.SNAPSHOT</version>

+		<relativePath>../parent</relativePath>

+	</parent>

+

+	<modelVersion>4.0.0</modelVersion>

+	<groupId>com.springsource.dmserver</groupId>

+	<artifactId>greenpages.app-solution</artifactId>

+	<name>greenpages.app</name>

+	<packaging>jar</packaging>

+

+	<dependencies>

+		<dependency>

+		    <groupId>org.springframework</groupId>

+		    <artifactId>org.springframework.spring-library</artifactId>

+			<type>libd</type>

+		</dependency>

+		<dependency>

+			<groupId>org.junit</groupId>

+			<artifactId>com.springsource.org.junit</artifactId>

+		</dependency>

+	</dependencies>

+

+</project>
\ No newline at end of file
diff --git a/solution/greenpages.app/src/main/java/greenpages/Directory.java b/solution/greenpages.app/src/main/java/greenpages/Directory.java
new file mode 100644
index 0000000..08ddb9e
--- /dev/null
+++ b/solution/greenpages.app/src/main/java/greenpages/Directory.java
@@ -0,0 +1,43 @@
+/*******************************************************************************
+ * Copyright (c) 2008, 2010 VMware Inc.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ *   VMware Inc. - initial contribution
+ *******************************************************************************/
+
+package greenpages;
+
+import java.util.List;
+
+/**
+ * Main business interface for the GreenPages application.
+ * 
+ * <p>
+ * Using this interface you can {@link #search(String) search} the directory for a {@link Listing} and you can access a
+ * <code>Listing</code> {@link #findListing(int) by ID}.
+ * 
+ * @see Listing
+ */
+public interface Directory {
+
+    /**
+     * Searches the directory for all {@link Listing Listings} that match the supplied term. Matching is done against
+     * the {@link Listing#getLastName() last name} of all known <code>Listings</code>.
+     * 
+     * @param term the search criteria.
+     * @return the search results or an empty {@link List} if no matches are found.
+     */
+    List<Listing> search(String term);
+
+    /**
+     * Finds the {@link Listing} with the supplied ID.
+     * 
+     * @param id the ID of the <code>Listing</code>
+     * @return the <code>Listing</code> or <code>null</code> if no match is found.
+     */
+    Listing findListing(int id);
+}
diff --git a/solution/greenpages.app/src/main/java/greenpages/Listing.java b/solution/greenpages.app/src/main/java/greenpages/Listing.java
new file mode 100644
index 0000000..65e1c0e
--- /dev/null
+++ b/solution/greenpages.app/src/main/java/greenpages/Listing.java
@@ -0,0 +1,28 @@
+/*******************************************************************************
+ * Copyright (c) 2008, 2010 VMware Inc.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ *   VMware Inc. - initial contribution
+ *******************************************************************************/
+
+package greenpages;
+
+/**
+ * Represents a listing in the GreenPages {@link Directory}.
+ * 
+ * @see Directory
+ */
+public interface Listing {
+
+    Integer getListingNumber();
+
+    String getFirstName();
+
+    String getLastName();
+
+    String getEmailAddress();
+}
diff --git a/solution/greenpages.app/src/main/java/greenpages/internal/DirectoryImpl.java b/solution/greenpages.app/src/main/java/greenpages/internal/DirectoryImpl.java
new file mode 100644
index 0000000..8d8be60
--- /dev/null
+++ b/solution/greenpages.app/src/main/java/greenpages/internal/DirectoryImpl.java
@@ -0,0 +1,61 @@
+/*******************************************************************************
+ * Copyright (c) 2008, 2010 VMware Inc.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ *   VMware Inc. - initial contribution
+ *******************************************************************************/
+
+package greenpages.internal;
+
+import java.util.Collections;
+import java.util.List;
+
+import org.springframework.stereotype.Component;
+
+import greenpages.Directory;
+import greenpages.Listing;
+
+/**
+ * Stub implementation of {@link Directory} that allows for simple testing without a database.
+ *
+ * Uses Spring 2.* component scanning to find this class and create a bean. The name for this bean
+ * is extracted from the {@link Component} annotation.
+ */
+@Component("directory")
+public class DirectoryImpl implements Directory {
+
+    private static final Listing ROD_JOHNSON = new ImmutableListing(1, "Rod", "Johnson", "rod.johnson@springsource.com");
+
+    /**
+     * {@inheritDoc}
+     * 
+     * Stub implementation will match only for term '<code>johnson</code>'.
+     */
+    public List<Listing> search(String term) {
+        if (ROD_JOHNSON.getLastName().equalsIgnoreCase(term)) {
+            Listing l = ROD_JOHNSON;
+
+            return Collections.singletonList(l);
+        } else {
+            return Collections.emptyList();
+        }
+    }
+
+    /**
+     * {@inheritDoc}
+     * 
+     * Stub implementation will return a {@link Listing} for ID 1.
+     */
+    public Listing findListing(int id) {
+        if (id == ROD_JOHNSON.getListingNumber()) {
+            return ROD_JOHNSON;
+        } else {
+            return null;
+        }
+    }
+
+}
diff --git a/solution/greenpages.app/src/main/java/greenpages/internal/ImmutableListing.java b/solution/greenpages.app/src/main/java/greenpages/internal/ImmutableListing.java
new file mode 100644
index 0000000..b15494c
--- /dev/null
+++ b/solution/greenpages.app/src/main/java/greenpages/internal/ImmutableListing.java
@@ -0,0 +1,50 @@
+/*******************************************************************************
+ * Copyright (c) 2008, 2010 VMware Inc.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ *   VMware Inc. - initial contribution
+ *******************************************************************************/
+
+package greenpages.internal;
+
+import greenpages.Listing;
+
+final class ImmutableListing implements Listing {
+
+	private final Integer listingNumber;
+	
+	private final String  firstName;
+	
+	private final String lastName;
+	
+	private final String  emailAddress;
+	
+	public ImmutableListing(int listingNumber, String firstName,String lastName, String emailAddress) {
+		
+		this.listingNumber = listingNumber;
+		this.firstName = firstName;
+		this.lastName = lastName;
+		this.emailAddress = emailAddress;
+	}
+	
+	public Integer getListingNumber() {
+		return listingNumber;
+	}
+	
+	public String getFirstName() {
+		return firstName;
+	}
+	
+	public String getLastName() {
+		return lastName;
+	}
+	
+	public String getEmailAddress() {
+		return emailAddress;
+	}
+	
+}
diff --git a/solution/greenpages.app/src/main/resources/META-INF/MANIFEST.MF b/solution/greenpages.app/src/main/resources/META-INF/MANIFEST.MF
new file mode 100644
index 0000000..fc4d7c9
--- /dev/null
+++ b/solution/greenpages.app/src/main/resources/META-INF/MANIFEST.MF
@@ -0,0 +1,11 @@
+Manifest-Version: 1.0

+Bundle-Name: GreenPages Service

+Bundle-Classpath: .

+Import-Package: org.springframework.stereotype;version="[3.0, 3.1)"

+Bundle-ManifestVersion: 2

+Bundle-Vendor: SpringSource Inc.

+Bundle-SymbolicName: greenpages

+Tool: Bundlor 1.0.0.M6

+Export-Package: greenpages;version="2.0"

+Bundle-Version: 2.0

+

diff --git a/solution/greenpages.app/src/main/resources/META-INF/spring/module-context.xml b/solution/greenpages.app/src/main/resources/META-INF/spring/module-context.xml
new file mode 100644
index 0000000..bb39866
--- /dev/null
+++ b/solution/greenpages.app/src/main/resources/META-INF/spring/module-context.xml
@@ -0,0 +1,11 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<beans xmlns="http://www.springframework.org/schema/beans"
+	xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+	xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd
+		http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context.xsd"
+	xmlns:context="http://www.springframework.org/schema/context">
+

+	<!--  enables classpath component scanning for this module -->
+	<context:component-scan base-package="greenpages.internal" />

+

+</beans>
diff --git a/solution/greenpages.app/src/main/resources/META-INF/spring/osgi-context.xml b/solution/greenpages.app/src/main/resources/META-INF/spring/osgi-context.xml
new file mode 100644
index 0000000..0dab573
--- /dev/null
+++ b/solution/greenpages.app/src/main/resources/META-INF/spring/osgi-context.xml
@@ -0,0 +1,12 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<beans xmlns="http://www.springframework.org/schema/beans"
+	xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+	xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd
+		http://www.springframework.org/schema/osgi http://www.springframework.org/schema/osgi/spring-osgi.xsd"
+	xmlns:osgi="http://www.springframework.org/schema/osgi">
+
+	<!-- uncomment the line below to publish the mock Directory into the OSGi service registry -->
+	
+	<!-- <osgi:service interface="greenpages.Directory" ref="directory"/> --> 
+	                                                                  
+</beans>
diff --git a/solution/greenpages.app/template.mf b/solution/greenpages.app/template.mf
new file mode 100644
index 0000000..e138d7e
--- /dev/null
+++ b/solution/greenpages.app/template.mf
@@ -0,0 +1,10 @@
+Manifest-Version: 1.0
+Bundle-ManifestVersion: 2
+Bundle-Name: GreenPages Service
+Bundle-SymbolicName: greenpages
+Bundle-Vendor: SpringSource Inc.
+Bundle-Version: 2.0
+Import-Template: 
+ org.springframework.*;version="[3.0, 3.1)"
+Excluded-Exports: 
+ greenpages.internal
diff --git a/solution/greenpages.db/.classpath b/solution/greenpages.db/.classpath
new file mode 100644
index 0000000..c89be4a
--- /dev/null
+++ b/solution/greenpages.db/.classpath
@@ -0,0 +1,7 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<classpath>
+	<classpathentry excluding="**" kind="src" output="target/classes" path="src/main/resources"/>
+	<classpathentry kind="con" path="org.maven.ide.eclipse.MAVEN2_CLASSPATH_CONTAINER"/>
+	<classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER/org.eclipse.jdt.internal.debug.ui.launcher.StandardVMType/JavaSE-1.6"/>
+	<classpathentry kind="output" path="target/classes"/>
+</classpath>
diff --git a/solution/greenpages.db/.project b/solution/greenpages.db/.project
new file mode 100644
index 0000000..f2ef02a
--- /dev/null
+++ b/solution/greenpages.db/.project
@@ -0,0 +1,41 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<projectDescription>
+	<name>greenpages.db-solution</name>
+	<comment></comment>
+	<projects>
+	</projects>
+	<buildSpec>
+		<buildCommand>
+			<name>org.eclipse.wst.common.project.facet.core.builder</name>
+			<arguments>
+			</arguments>
+		</buildCommand>
+		<buildCommand>
+			<name>org.eclipse.jdt.core.javabuilder</name>
+			<arguments>
+			</arguments>
+		</buildCommand>
+		<buildCommand>
+			<name>org.springframework.ide.eclipse.core.springbuilder</name>
+			<arguments>
+			</arguments>
+		</buildCommand>
+		<buildCommand>
+			<name>org.maven.ide.eclipse.maven2Builder</name>
+			<arguments>
+			</arguments>
+		</buildCommand>
+		<buildCommand>
+			<name>com.springsource.server.ide.bundlor.core.builder</name>
+			<arguments>
+			</arguments>
+		</buildCommand>
+	</buildSpec>
+	<natures>
+		<nature>com.springsource.server.ide.facet.core.bundlenature</nature>
+		<nature>org.maven.ide.eclipse.maven2Nature</nature>
+		<nature>org.eclipse.jdt.core.javanature</nature>
+		<nature>org.springframework.ide.eclipse.core.springnature</nature>
+		<nature>org.eclipse.wst.common.project.facet.core.nature</nature>
+	</natures>
+</projectDescription>
diff --git a/solution/greenpages.db/.settings/org.eclipse.wst.common.project.facet.core.xml b/solution/greenpages.db/.settings/org.eclipse.wst.common.project.facet.core.xml
new file mode 100644
index 0000000..78a155d
--- /dev/null
+++ b/solution/greenpages.db/.settings/org.eclipse.wst.common.project.facet.core.xml
@@ -0,0 +1,6 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<faceted-project>
+  <runtime name="SpringSource dm Server (Runtime) v2.0"/>
+  <installed facet="jst.java" version="6.0"/>
+  <installed facet="com.springsource.server.bundle" version="1.0"/>
+</faceted-project>
diff --git a/solution/greenpages.db/.springBeans b/solution/greenpages.db/.springBeans
new file mode 100644
index 0000000..4cdca85
--- /dev/null
+++ b/solution/greenpages.db/.springBeans
@@ -0,0 +1,15 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<beansProjectDescription>
+	<version>1</version>
+	<pluginVersion><![CDATA[2.2.2.v200901262210]]></pluginVersion>
+	<configSuffixes>
+		<configSuffix><![CDATA[xml]]></configSuffix>
+	</configSuffixes>
+	<enableImports><![CDATA[false]]></enableImports>
+	<configs>
+		<config>src/main/resources/META-INF/spring/module-context.xml</config>
+		<config>src/main/resources/META-INF/spring/osgi-context.xml</config>
+	</configs>
+	<configSets>
+	</configSets>
+</beansProjectDescription>
diff --git a/solution/greenpages.db/pom.xml b/solution/greenpages.db/pom.xml
new file mode 100644
index 0000000..26458b1
--- /dev/null
+++ b/solution/greenpages.db/pom.xml
@@ -0,0 +1,53 @@
+<?xml version="1.0" encoding="UTF-8"?>

+<project

+		xmlns="http://maven.apache.org/POM/4.0.0"

+		xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"

+		xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">

+

+	<parent>

+		<groupId>com.springsource.dmserver</groupId>

+		<artifactId>greenpages.parent-solution</artifactId>

+		<version>2.0.1.SNAPSHOT</version>

+		<relativePath>../parent</relativePath>

+	</parent>

+

+	<modelVersion>4.0.0</modelVersion>

+	<groupId>com.springsource.dmserver</groupId>

+	<artifactId>greenpages.db-solution</artifactId>

+	<name>greenpages.db</name>

+	<packaging>jar</packaging>

+

+	<dependencies>

+		<dependency>

+			<groupId>javax.persistence</groupId>

+			<artifactId>com.springsource.javax.persistence</artifactId>

+		</dependency>

+		<dependency>

+			<groupId>org.springframework</groupId>

+			<artifactId>org.springframework.spring-library</artifactId>

+			<type>libd</type>

+		</dependency>

+		<dependency>

+			<groupId>org.eclipse.persistence</groupId>

+			<artifactId>com.springsource.org.eclipse.persistence</artifactId>

+		</dependency>

+		<dependency>

+			<groupId>org.eclipse.persistence</groupId>

+			<artifactId>com.springsource.org.eclipse.persistence.jpa</artifactId>

+		</dependency>

+		<dependency>

+			<groupId>org.apache.commons</groupId>

+			<artifactId>com.springsource.org.apache.commons.dbcp</artifactId>

+		</dependency>

+		<dependency>

+			<groupId>com.h2database</groupId>

+			<artifactId>com.springsource.org.h2</artifactId>

+		</dependency>

+		<dependency>

+			<groupId>org.aspectj</groupId>

+			<artifactId>org.aspectj-library</artifactId>

+			<type>libd</type>

+		</dependency>

+	</dependencies>

+

+</project>
\ No newline at end of file
diff --git a/solution/greenpages.db/src/main/resources/META-INF/MANIFEST.MF b/solution/greenpages.db/src/main/resources/META-INF/MANIFEST.MF
new file mode 100644
index 0000000..f6d6de8
--- /dev/null
+++ b/solution/greenpages.db/src/main/resources/META-INF/MANIFEST.MF
@@ -0,0 +1,11 @@
+Manifest-Version: 1.0

+Bundle-Name: GreenPages DataSource

+Bundle-Classpath: .

+Import-Package: javax.sql;version="0",org.apache.commons.dbcp;version=

+ "[1.2.2.osgi, 1.2.2.osgi]",org.h2;version="[1.0.71, 1.0.71]"

+Bundle-ManifestVersion: 2

+Bundle-Vendor: SpringSource Inc.

+Bundle-SymbolicName: greenpages.db

+Tool: Bundlor 1.0.0.M6

+Bundle-Version: 2.0

+

diff --git a/solution/greenpages.db/src/main/resources/META-INF/spring/module-context.xml b/solution/greenpages.db/src/main/resources/META-INF/spring/module-context.xml
new file mode 100644
index 0000000..5337e8a
--- /dev/null
+++ b/solution/greenpages.db/src/main/resources/META-INF/spring/module-context.xml
@@ -0,0 +1,12 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<beans xmlns="http://www.springframework.org/schema/beans"
+	xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+	xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd"
+	xmlns:p="http://www.springframework.org/schema/p">
+

+	<bean id="dataSource" class="org.apache.commons.dbcp.BasicDataSource" 
+	 		p:driverClassName="org.h2.Driver" p:url="jdbc:h2:~/greenpages-db/greenpages"
+	 		p:username="greenpages" p:password="pass"
+	 		init-method="createDataSource" destroy-method="close"/>
+

+</beans>
diff --git a/solution/greenpages.db/src/main/resources/META-INF/spring/osgi-context.xml b/solution/greenpages.db/src/main/resources/META-INF/spring/osgi-context.xml
new file mode 100644
index 0000000..92962cd
--- /dev/null
+++ b/solution/greenpages.db/src/main/resources/META-INF/spring/osgi-context.xml
@@ -0,0 +1,10 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<beans xmlns="http://www.springframework.org/schema/beans"
+	xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+	xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd
+		http://www.springframework.org/schema/osgi http://www.springframework.org/schema/osgi/spring-osgi.xsd"
+	xmlns:osgi="http://www.springframework.org/schema/osgi">
+

+	<osgi:service ref="dataSource" interface="javax.sql.DataSource"/>

+

+</beans>
diff --git a/solution/greenpages.db/template.mf b/solution/greenpages.db/template.mf
new file mode 100644
index 0000000..a7cdb91
--- /dev/null
+++ b/solution/greenpages.db/template.mf
@@ -0,0 +1,11 @@
+Manifest-Version: 1.0
+Bundle-ManifestVersion: 2
+Bundle-Name: GreenPages DataSource
+Bundle-SymbolicName: greenpages.db
+Bundle-Vendor: SpringSource Inc.
+Bundle-Version: 2.0
+Import-Package: 
+ org.h2;version="[1.0.71, 1.0.71]"
+Import-Template: 
+ org.apache.commons.dbcp.*;version="[1.2.2.osgi, 1.2.2.osgi]",
+ javax.sql;version="0"
diff --git a/solution/greenpages.jpa/.classpath b/solution/greenpages.jpa/.classpath
new file mode 100644
index 0000000..edcdd6b
--- /dev/null
+++ b/solution/greenpages.jpa/.classpath
@@ -0,0 +1,10 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<classpath>
+	<classpathentry kind="src" output="target/classes" path="src/main/java"/>
+	<classpathentry excluding="**" kind="src" output="target/classes" path="src/main/resources"/>
+	<classpathentry kind="src" output="target/test-classes" path="src/test/java"/>
+	<classpathentry excluding="**" kind="src" output="target/test-classes" path="src/test/resources"/>
+	<classpathentry kind="con" path="org.maven.ide.eclipse.MAVEN2_CLASSPATH_CONTAINER"/>
+	<classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER/org.eclipse.jdt.internal.debug.ui.launcher.StandardVMType/JavaSE-1.6"/>
+	<classpathentry kind="output" path="target/classes"/>
+</classpath>
diff --git a/solution/greenpages.jpa/.project b/solution/greenpages.jpa/.project
new file mode 100644
index 0000000..c3ed622
--- /dev/null
+++ b/solution/greenpages.jpa/.project
@@ -0,0 +1,41 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<projectDescription>
+	<name>greenpages.jpa-solution</name>
+	<comment></comment>
+	<projects>
+	</projects>
+	<buildSpec>
+		<buildCommand>
+			<name>org.eclipse.wst.common.project.facet.core.builder</name>
+			<arguments>
+			</arguments>
+		</buildCommand>
+		<buildCommand>
+			<name>org.eclipse.jdt.core.javabuilder</name>
+			<arguments>
+			</arguments>
+		</buildCommand>
+		<buildCommand>
+			<name>org.springframework.ide.eclipse.core.springbuilder</name>
+			<arguments>
+			</arguments>
+		</buildCommand>
+		<buildCommand>
+			<name>org.maven.ide.eclipse.maven2Builder</name>
+			<arguments>
+			</arguments>
+		</buildCommand>
+		<buildCommand>
+			<name>com.springsource.server.ide.bundlor.core.builder</name>
+			<arguments>
+			</arguments>
+		</buildCommand>
+	</buildSpec>
+	<natures>
+		<nature>com.springsource.server.ide.facet.core.bundlenature</nature>
+		<nature>org.maven.ide.eclipse.maven2Nature</nature>
+		<nature>org.eclipse.jdt.core.javanature</nature>
+		<nature>org.springframework.ide.eclipse.core.springnature</nature>
+		<nature>org.eclipse.wst.common.project.facet.core.nature</nature>
+	</natures>
+</projectDescription>
diff --git a/solution/greenpages.jpa/.settings/JpaDirectorySpringContextTests-solution.launch b/solution/greenpages.jpa/.settings/JpaDirectorySpringContextTests-solution.launch
new file mode 100644
index 0000000..2bc8cde
--- /dev/null
+++ b/solution/greenpages.jpa/.settings/JpaDirectorySpringContextTests-solution.launch
@@ -0,0 +1,19 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<launchConfiguration type="org.eclipse.jdt.junit.launchconfig">
+<stringAttribute key="bad_container_name" value="/greenpages.jpa-solution/.setting"/>
+<listAttribute key="org.eclipse.debug.core.MAPPED_RESOURCE_PATHS">
+<listEntry value="/greenpages.jpa-solution/src/test/java/greenpages/jpa/JpaDirectorySpringContextTests.java"/>
+</listAttribute>
+<listAttribute key="org.eclipse.debug.core.MAPPED_RESOURCE_TYPES">
+<listEntry value="1"/>
+</listAttribute>
+<stringAttribute key="org.eclipse.jdt.junit.CONTAINER" value=""/>
+<booleanAttribute key="org.eclipse.jdt.junit.KEEPRUNNING_ATTR" value="false"/>
+<stringAttribute key="org.eclipse.jdt.junit.TESTNAME" value=""/>
+<stringAttribute key="org.eclipse.jdt.junit.TEST_KIND" value="org.eclipse.jdt.junit.loader.junit4"/>
+<stringAttribute key="org.eclipse.jdt.launching.CLASSPATH_PROVIDER" value="org.maven.ide.eclipse.launchconfig.classpathProvider"/>
+<stringAttribute key="org.eclipse.jdt.launching.MAIN_TYPE" value="greenpages.jpa.JpaDirectorySpringContextTests"/>
+<stringAttribute key="org.eclipse.jdt.launching.PROJECT_ATTR" value="greenpages.jpa-solution"/>
+<stringAttribute key="org.eclipse.jdt.launching.SOURCE_PATH_PROVIDER" value="org.maven.ide.eclipse.launchconfig.sourcepathProvider"/>
+<stringAttribute key="org.eclipse.jdt.launching.VM_ARGUMENTS" value="-javaagent:${system_property:user.home}/.m2/repository/org/springframework/org.springframework.instrument/3.0.0.M3/org.springframework.instrument-3.0.0.M3.jar"/>
+</launchConfiguration>
diff --git a/solution/greenpages.jpa/.settings/org.eclipse.jst.common.project.facet.core.prefs b/solution/greenpages.jpa/.settings/org.eclipse.jst.common.project.facet.core.prefs
new file mode 100644
index 0000000..0a93787
--- /dev/null
+++ b/solution/greenpages.jpa/.settings/org.eclipse.jst.common.project.facet.core.prefs
@@ -0,0 +1,3 @@
+#Wed Jun 24 12:42:34 BST 2009
+classpath.helper/org.eclipse.jdt.launching.JRE_CONTAINER\:\:org.eclipse.jdt.internal.launching.macosx.MacOSXType\:\:JVM\ 1.6.0/owners=jst.java\:6.0
+eclipse.preferences.version=1
diff --git a/solution/greenpages.jpa/.settings/org.eclipse.wst.common.project.facet.core.xml b/solution/greenpages.jpa/.settings/org.eclipse.wst.common.project.facet.core.xml
new file mode 100644
index 0000000..78a155d
--- /dev/null
+++ b/solution/greenpages.jpa/.settings/org.eclipse.wst.common.project.facet.core.xml
@@ -0,0 +1,6 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<faceted-project>
+  <runtime name="SpringSource dm Server (Runtime) v2.0"/>
+  <installed facet="jst.java" version="6.0"/>
+  <installed facet="com.springsource.server.bundle" version="1.0"/>
+</faceted-project>
diff --git a/solution/greenpages.jpa/.settings/org.maven.ide.eclipse.prefs b/solution/greenpages.jpa/.settings/org.maven.ide.eclipse.prefs
new file mode 100644
index 0000000..8f47b36
--- /dev/null
+++ b/solution/greenpages.jpa/.settings/org.maven.ide.eclipse.prefs
@@ -0,0 +1,9 @@
+#Tue Apr 21 16:53:36 BST 2009
+activeProfiles=
+eclipse.preferences.version=1
+fullBuildGoals=process-test-resources
+includeModules=false
+resolveWorkspaceProjects=true
+resourceFilterGoals=process-resources resources\:testResources
+skipCompilerPlugin=true
+version=1
diff --git a/solution/greenpages.jpa/.springBeans b/solution/greenpages.jpa/.springBeans
new file mode 100644
index 0000000..974ce77
--- /dev/null
+++ b/solution/greenpages.jpa/.springBeans
@@ -0,0 +1,16 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<beansProjectDescription>
+	<version>1</version>
+	<pluginVersion><![CDATA[2.2.2.RC]]></pluginVersion>
+	<configSuffixes>
+		<configSuffix><![CDATA[xml]]></configSuffix>
+	</configSuffixes>
+	<enableImports><![CDATA[false]]></enableImports>
+	<configs>
+		<config>src/main/resources/META-INF/spring/osgi-context.xml</config>
+		<config>src/main/resources/META-INF/spring/module-context.xml</config>
+		<config>src/test/resources/META-INF/spring/test-context.xml</config>
+	</configs>
+	<configSets>
+	</configSets>
+</beansProjectDescription>
diff --git a/solution/greenpages.jpa/.~/greenpages-db/greenpages.10.log.db b/solution/greenpages.jpa/.~/greenpages-db/greenpages.10.log.db
new file mode 100644
index 0000000..de9e2a0
--- /dev/null
+++ b/solution/greenpages.jpa/.~/greenpages-db/greenpages.10.log.db
Binary files differ
diff --git a/solution/greenpages.jpa/.~/greenpages-db/greenpages.data.db b/solution/greenpages.jpa/.~/greenpages-db/greenpages.data.db
new file mode 100644
index 0000000..be5e9a5
--- /dev/null
+++ b/solution/greenpages.jpa/.~/greenpages-db/greenpages.data.db
Binary files differ
diff --git a/solution/greenpages.jpa/.~/greenpages-db/greenpages.index.db b/solution/greenpages.jpa/.~/greenpages-db/greenpages.index.db
new file mode 100644
index 0000000..b2427f4
--- /dev/null
+++ b/solution/greenpages.jpa/.~/greenpages-db/greenpages.index.db
Binary files differ
diff --git a/solution/greenpages.jpa/pom.xml b/solution/greenpages.jpa/pom.xml
new file mode 100644
index 0000000..5e0df37
--- /dev/null
+++ b/solution/greenpages.jpa/pom.xml
@@ -0,0 +1,79 @@
+<?xml version="1.0" encoding="UTF-8"?>

+<project

+		xmlns="http://maven.apache.org/POM/4.0.0"

+		xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"

+		xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">

+

+	<parent>

+		<groupId>com.springsource.dmserver</groupId>

+		<artifactId>greenpages.parent-solution</artifactId>

+		<version>2.0.1.SNAPSHOT</version>

+		<relativePath>../parent</relativePath>

+	</parent>

+

+	<modelVersion>4.0.0</modelVersion>

+	<groupId>com.springsource.dmserver</groupId>

+	<artifactId>greenpages.jpa-solution</artifactId>

+	<name>greenpages.jpa</name>

+	<packaging>jar</packaging>

+

+	<dependencies>

+		<dependency>

+			<groupId>com.springsource.dmserver</groupId>

+			<artifactId>greenpages.app-solution</artifactId>

+			<version>${project.version}</version>

+		</dependency>

+		<dependency>

+		    <groupId>org.springframework</groupId>

+		    <artifactId>org.springframework.spring-library</artifactId>

+			<type>libd</type>

+		</dependency>

+		<dependency>

+		    <groupId>javax.persistence</groupId>

+		    <artifactId>com.springsource.javax.persistence</artifactId>

+		</dependency>

+		<dependency>

+		    <groupId>org.eclipse.persistence</groupId>

+		    <artifactId>com.springsource.org.eclipse.persistence</artifactId>

+		</dependency>

+		<dependency>

+		    <groupId>org.eclipse.persistence</groupId>

+		    <artifactId>com.springsource.org.eclipse.persistence.jpa</artifactId>

+		</dependency>

+		<dependency>

+			<groupId>org.junit</groupId>

+			<artifactId>com.springsource.org.junit</artifactId>

+			<scope>test</scope>

+		</dependency>

+		<dependency>

+		    <groupId>org.springframework</groupId>

+		    <artifactId>org.springframework.test</artifactId>

+			<scope>test</scope>

+		</dependency>

+		<dependency>

+		    <groupId>org.springframework</groupId>

+		    <artifactId>org.springframework.instrument</artifactId>

+		</dependency>

+		<dependency>

+		    <groupId>org.springframework</groupId>

+		    <artifactId>org.springframework.aspects</artifactId>

+			<scope>provided</scope>

+		</dependency>

+		<dependency>

+			<groupId>org.apache.commons</groupId>

+			<artifactId>com.springsource.org.apache.commons.dbcp</artifactId>

+			<scope>test</scope>

+		</dependency>

+		<dependency>

+			<groupId>com.h2database</groupId>

+			<artifactId>com.springsource.org.h2</artifactId>

+			<scope>test</scope>

+		</dependency>

+		<dependency>

+		    <groupId>org.aspectj</groupId>

+		    <artifactId>org.aspectj-library</artifactId>

+			<type>libd</type>

+		</dependency>

+	</dependencies>

+

+</project>

diff --git a/solution/greenpages.jpa/src/main/java/greenpages/jpa/JpaDirectory.java b/solution/greenpages.jpa/src/main/java/greenpages/jpa/JpaDirectory.java
new file mode 100644
index 0000000..c51200d
--- /dev/null
+++ b/solution/greenpages.jpa/src/main/java/greenpages/jpa/JpaDirectory.java
@@ -0,0 +1,52 @@
+/*******************************************************************************
+ * Copyright (c) 2008, 2010 VMware Inc.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ *   VMware Inc. - initial contribution
+ *******************************************************************************/
+
+package greenpages.jpa;
+
+import greenpages.Directory;
+import greenpages.Listing;
+
+import java.util.List;
+
+import javax.persistence.EntityManager;
+import javax.persistence.PersistenceContext;
+
+import org.springframework.stereotype.Repository;
+import org.springframework.transaction.annotation.Transactional;
+
+/**
+ * Implementation of {@link Directory} that uses JPA for persistence.<p />
+ * 
+ * This class is marked as {@link Transactional}. The Spring configuration for this module, enables AspectJ weaving for
+ * adding transaction demarcation to classes annotated with <code>@Transactional</code>.
+ */
+@Transactional
+@Repository
+final class JpaDirectory implements Directory {
+
+    private static final String SEARCH_QUERY = "select l from Listing l where upper(l.lastName) like :term";
+
+    /**
+     * Spring will inject a managed JPA {@link EntityManager} into this field.
+     */
+    @PersistenceContext
+    private EntityManager em;
+
+    public Listing findListing(int id) {
+        return em.find(JpaListing.class, id);
+    }
+
+    @SuppressWarnings("unchecked")
+    public List<Listing> search(String term) {
+        return em.createQuery(SEARCH_QUERY).setParameter("term", "%" + term.toUpperCase() + "%").getResultList();
+    }
+
+}
diff --git a/solution/greenpages.jpa/src/main/java/greenpages/jpa/JpaListing.java b/solution/greenpages.jpa/src/main/java/greenpages/jpa/JpaListing.java
new file mode 100644
index 0000000..1965495
--- /dev/null
+++ b/solution/greenpages.jpa/src/main/java/greenpages/jpa/JpaListing.java
@@ -0,0 +1,61 @@
+/*******************************************************************************
+ * Copyright (c) 2008, 2010 VMware Inc.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ *   VMware Inc. - initial contribution
+ *******************************************************************************/
+
+package greenpages.jpa;
+
+import greenpages.Listing;
+
+/**
+ * Basic implementation of {@link Listing} that is configured as a persistent type in JPA.
+ */
+public class JpaListing implements Listing {
+
+    private Integer listingNumber;
+
+    private String firstName;
+
+    private String lastName;
+
+    private String emailAddress;
+
+    public Integer getListingNumber() {
+        return listingNumber;
+    }
+
+    public void setListingNumber(Integer listingNumber) {
+        this.listingNumber = listingNumber;
+    }
+
+    public String getFirstName() {
+        return firstName;
+    }
+
+    public void setFirstName(String firstName) {
+        this.firstName = firstName;
+    }
+
+    public String getLastName() {
+        return lastName;
+    }
+
+    public void setLastName(String lastName) {
+        this.lastName = lastName;
+    }
+
+    public String getEmailAddress() {
+        return emailAddress;
+    }
+
+    public void setEmailAddress(String emailAddress) {
+        this.emailAddress = emailAddress;
+    }
+
+}
diff --git a/solution/greenpages.jpa/src/main/resources/META-INF/MANIFEST.MF b/solution/greenpages.jpa/src/main/resources/META-INF/MANIFEST.MF
new file mode 100644
index 0000000..bf77d36
--- /dev/null
+++ b/solution/greenpages.jpa/src/main/resources/META-INF/MANIFEST.MF
@@ -0,0 +1,21 @@
+Manifest-Version: 1.0

+Bundle-Name: GreenPages JPA

+Import-Bundle: com.springsource.org.eclipse.persistence;version="[1.0.

+ 0, 1.0.0]",com.springsource.org.eclipse.persistence.jpa;version="[1.0

+ .0, 1.0.0]"

+Import-Package: greenpages;version="[2.0, 2.1)",javax.persistence;vers

+ ion="[1.0.0, 1.0.0]",javax.sql;version="0",org.apache.commons.dbcp;ve

+ rsion="[1.2.2.osgi, 1.2.2.osgi]",org.springframework.beans.factory.an

+ notation;version="[3.0, 3.1)",org.springframework.context.weaving;ver

+ sion="[3.0, 3.1)",org.springframework.core.io;version="[3.0, 3.1)",or

+ g.springframework.dao.annotation;version="[3.0, 3.1)",org.springframe

+ work.orm.jpa;version="[3.0, 3.1)",org.springframework.orm.jpa.vendor;

+ version="[3.0, 3.1)",org.springframework.stereotype;version="[3.0, 3.

+ 1)",org.springframework.transaction.annotation;version="[3.0, 3.1)",o

+ rg.springframework.transaction.aspectj;version="[3.0, 3.1)"

+Bundle-ManifestVersion: 2

+Bundle-Vendor: SpringSource Inc.

+Bundle-SymbolicName: greenpages.jpa

+Tool: Bundlor 1.0.0.M6

+Bundle-Version: 2.0

+

diff --git a/solution/greenpages.jpa/src/main/resources/META-INF/orm.xml b/solution/greenpages.jpa/src/main/resources/META-INF/orm.xml
new file mode 100644
index 0000000..66352f0
--- /dev/null
+++ b/solution/greenpages.jpa/src/main/resources/META-INF/orm.xml
@@ -0,0 +1,25 @@
+<?xml version="1.0" encoding="UTF-8" ?>
+<entity-mappings xmlns="http://java.sun.com/xml/ns/persistence/orm"
+    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+    xsi:schemaLocation="http://java.sun.com/xml/ns/persistence/orm http://java.sun.com/xml/ns/persistence/orm_1_0.xsd"
+    version="1.0">
+    <package>greenpages.jpa</package>
+    <entity class="greenpages.jpa.JpaListing" name="Listing">
+        <table name="LISTING"/>
+        <attributes>
+            <id name="listingNumber">
+                <column name="LISTING_NUMBER"/>
+                <generated-value strategy="TABLE"/>
+            </id>
+            <basic name="firstName">
+                <column name="FIRST_NAME"/>
+            </basic>
+            <basic name="lastName">
+                <column name="LAST_NAME"/>
+            </basic>
+            <basic name="emailAddress">
+                <column name="EMAIL_ADDRESS"/>
+            </basic>
+        </attributes>
+    </entity>
+</entity-mappings>
\ No newline at end of file
diff --git a/solution/greenpages.jpa/src/main/resources/META-INF/persistence.xml b/solution/greenpages.jpa/src/main/resources/META-INF/persistence.xml
new file mode 100644
index 0000000..df42af5
--- /dev/null
+++ b/solution/greenpages.jpa/src/main/resources/META-INF/persistence.xml
@@ -0,0 +1,10 @@
+<persistence xmlns="http://java.sun.com/xml/ns/persistence"
+		xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+		xsi:schemaLocation="http://java.sun.com/xml/ns/persistence http://java.sun.com/xml/ns/persistence/persistence_1_0.xsd"
+		version="1.0">
+
+	<persistence-unit name="GreenPages" transaction-type="RESOURCE_LOCAL">
+		<class>greenpages.jpa.JpaListing</class>
+	</persistence-unit>
+
+</persistence>
diff --git a/solution/greenpages.jpa/src/main/resources/META-INF/spring/module-context.xml b/solution/greenpages.jpa/src/main/resources/META-INF/spring/module-context.xml
new file mode 100644
index 0000000..3fc3b2a
--- /dev/null
+++ b/solution/greenpages.jpa/src/main/resources/META-INF/spring/module-context.xml
@@ -0,0 +1,65 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+	Application context definition for GreenPages JPA.
+-->
+<beans xmlns="http://www.springframework.org/schema/beans" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+		xmlns:p="http://www.springframework.org/schema/p"
+		xmlns:context="http://www.springframework.org/schema/context"
+		xmlns:tx="http://www.springframework.org/schema/tx"
+		xsi:schemaLocation="
+			http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-2.5.xsd
+			http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context-2.5.xsd
+			http://www.springframework.org/schema/tx http://www.springframework.org/schema/tx/spring-tx-2.5.xsd">
+
+	<!-- ========================= RESOURCE DEFINITIONS ========================= -->
+
+	<!--
+		Activates a load-time weaver for the context. Any bean within the context that
+		implements LoadTimeWeaverAware (such as LocalContainerEntityManagerFactoryBean)
+		will receive a reference to the autodetected load-time weaver.
+	-->
+	<context:load-time-weaver aspectj-weaving="on"/>
+	
+	<!-- JPA EntityManagerFactory -->
+	<bean id="entityManagerFactory" class="org.springframework.orm.jpa.LocalContainerEntityManagerFactoryBean" p:dataSource-ref="dataSource">
+		<property name="jpaVendorAdapter">
+			<bean id="jpaVendorAdapter" class="org.springframework.orm.jpa.vendor.EclipseLinkJpaVendorAdapter"
+					p:databasePlatform="org.eclipse.persistence.platform.database.HSQLPlatform" p:showSql="true"/>
+		</property>
+	</bean>
+
+	<!-- Transaction manager for a single JPA EntityManagerFactory (alternative to JTA) -->
+	<bean id="transactionManager" class="org.springframework.orm.jpa.JpaTransactionManager"
+			p:entityManagerFactory-ref="entityManagerFactory"/>
+
+
+	<!-- ========================= BUSINESS OBJECT DEFINITIONS ========================= -->
+
+	<!--
+		Activates various annotations to be detected in bean classes: Spring's
+		@Required and @Autowired, as well as JSR 250's @PostConstruct,
+		@PreDestroy and @Resource (if available) and JPA's @PersistenceContext
+		and @PersistenceUnit (if available).
+	-->
+	<context:annotation-config/>
+
+	<!--
+		Instruct Spring to perform declarative transaction management
+		automatically on annotated classes.
+	-->
+	<tx:annotation-driven mode="aspectj"/>
+
+	<!--
+		Post-processor to perform exception translation on @Repository classes (from native
+		exceptions such as JPA PersistenceExceptions to Spring's DataAccessException hierarchy).
+	-->
+	<bean class="org.springframework.dao.annotation.PersistenceExceptionTranslationPostProcessor"/>
+
+	<!--
+		Will automatically be transactional due to @Transactional.
+		EntityManager will be auto-injected due to @PersistenceContext.
+		PersistenceExceptions will be auto-translated due to @Repository.
+	-->
+	<bean id="directory" class="greenpages.jpa.JpaDirectory"/>
+	 
+</beans>
diff --git a/solution/greenpages.jpa/src/main/resources/META-INF/spring/osgi-context.xml b/solution/greenpages.jpa/src/main/resources/META-INF/spring/osgi-context.xml
new file mode 100644
index 0000000..c527d76
--- /dev/null
+++ b/solution/greenpages.jpa/src/main/resources/META-INF/spring/osgi-context.xml
@@ -0,0 +1,16 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<beans xmlns="http://www.springframework.org/schema/beans"
+	xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+	xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd
+		http://www.springframework.org/schema/osgi http://www.springframework.org/schema/osgi/spring-osgi.xsd"
+	xmlns:osgi="http://www.springframework.org/schema/osgi">
+
+	<!-- import the DataSource from OSGi -->
+	<osgi:reference id="dataSource" interface="javax.sql.DataSource"/>
+	
+
+	<!-- export the directory bean to OSGi under the Directory interface -->
+	<osgi:service ref="directory" interface="greenpages.Directory"/>
+
+
+</beans>
diff --git a/solution/greenpages.jpa/src/test/java/greenpages/jpa/JpaDirectorySpringContextTests.java b/solution/greenpages.jpa/src/test/java/greenpages/jpa/JpaDirectorySpringContextTests.java
new file mode 100644
index 0000000..7ecd706
--- /dev/null
+++ b/solution/greenpages.jpa/src/test/java/greenpages/jpa/JpaDirectorySpringContextTests.java
@@ -0,0 +1,47 @@
+/*******************************************************************************
+ * Copyright (c) 2008, 2010 VMware Inc.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ *   VMware Inc. - initial contribution
+ *******************************************************************************/
+
+package greenpages.jpa;
+
+import static org.junit.Assert.assertEquals;
+import static org.junit.Assert.assertNotNull;
+import greenpages.Directory;
+import greenpages.Listing;
+
+import java.util.List;
+
+import org.junit.Test;
+import org.junit.runner.RunWith;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.test.context.ContextConfiguration;
+import org.springframework.test.context.TestExecutionListeners;
+import org.springframework.test.context.junit4.SpringJUnit4ClassRunner;
+import org.springframework.test.context.support.DependencyInjectionTestExecutionListener;
+
+@RunWith(SpringJUnit4ClassRunner.class)
+@ContextConfiguration(locations = { "classpath:/META-INF/spring/module-context.xml", "classpath:/META-INF/spring/test-context.xml" })
+@TestExecutionListeners(value = DependencyInjectionTestExecutionListener.class)
+public class JpaDirectorySpringContextTests {
+
+    @Autowired
+    private Directory directory;
+
+    @Test
+    public void search() {
+        List<Listing> results = this.directory.search("johnson");
+        assertNotNull(results);
+        assertEquals(1, results.size());
+
+        Listing listing = results.get(0);
+        assertNotNull(listing);
+        assertEquals("Johnson", listing.getLastName());
+    }
+}
diff --git a/solution/greenpages.jpa/src/test/java/greenpages/jpa/TestDataPopulator.java b/solution/greenpages.jpa/src/test/java/greenpages/jpa/TestDataPopulator.java
new file mode 100644
index 0000000..24f779b
--- /dev/null
+++ b/solution/greenpages.jpa/src/test/java/greenpages/jpa/TestDataPopulator.java
@@ -0,0 +1,96 @@
+/*******************************************************************************
+ * Copyright (c) 2008, 2010 VMware Inc.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ *   VMware Inc. - initial contribution
+ *******************************************************************************/
+
+package greenpages.jpa;
+
+import java.io.BufferedReader;
+import java.io.BufferedWriter;
+import java.io.IOException;
+import java.io.InputStream;
+import java.io.InputStreamReader;
+import java.io.StringWriter;
+import java.sql.Connection;
+import java.sql.SQLException;
+import java.sql.Statement;
+
+import javax.sql.DataSource;
+
+import org.springframework.core.io.Resource;
+
+/**
+ * A class that populates a datasource with test data
+ */
+public class TestDataPopulator {
+
+    private final DataSource dataSource;
+
+    private final Resource testDataLocation;
+
+    public TestDataPopulator(DataSource dataSource, Resource testDataLocation) {
+        this.dataSource = dataSource;
+        this.testDataLocation = testDataLocation;
+    }
+
+    public void populate() {
+        Connection connection = null;
+        try {
+            connection = dataSource.getConnection();
+            insertTestData(connection);
+        } catch (SQLException e) {
+            throw new RuntimeException("SQL exception occurred acquiring connection", e);
+        } finally {
+            if (connection != null) {
+                try {
+                    connection.close();
+                } catch (SQLException e) {
+                }
+            }
+        }
+    }
+
+    private void insertTestData(Connection connection) {
+        try {
+            String sql = parseSqlIn(testDataLocation);
+            executeSql(sql, connection);
+        } catch (IOException e) {
+            throw new RuntimeException("I/O exception occurred accessing the test data file", e);
+        } catch (SQLException e) {
+            throw new RuntimeException("SQL exception occurred loading test data", e);
+        }
+    }
+
+    private String parseSqlIn(Resource resource) throws IOException {
+        InputStream is = null;
+        try {
+            is = resource.getInputStream();
+            BufferedReader reader = new BufferedReader(new InputStreamReader(is));
+
+            StringWriter sw = new StringWriter();
+            BufferedWriter writer = new BufferedWriter(sw);
+
+            for (int c = reader.read(); c != -1; c = reader.read()) {
+                writer.write(c);
+            }
+            writer.flush();
+            return sw.toString();
+
+        } finally {
+            if (is != null) {
+                is.close();
+            }
+        }
+    }
+
+    private void executeSql(String sql, Connection connection) throws SQLException {
+        Statement statement = connection.createStatement();
+        statement.execute(sql);
+    }
+}
diff --git a/solution/greenpages.jpa/src/test/resources/META-INF/spring/test-context.xml b/solution/greenpages.jpa/src/test/resources/META-INF/spring/test-context.xml
new file mode 100644
index 0000000..beb679a
--- /dev/null
+++ b/solution/greenpages.jpa/src/test/resources/META-INF/spring/test-context.xml
@@ -0,0 +1,17 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<beans xmlns="http://www.springframework.org/schema/beans"
+	xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+	xmlns:p="http://www.springframework.org/schema/p"
+	xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd">
+
+	<bean id="dataSource" class="org.apache.commons.dbcp.BasicDataSource" 
+	 		p:driverClassName="org.h2.Driver" p:url="jdbc:h2:.~/greenpages-db/greenpages"
+	 		p:username="greenpages" p:password="pass"
+	 		init-method="createDataSource" destroy-method="close"/>
+
+	<bean class="greenpages.jpa.TestDataPopulator" init-method="populate">
+		<constructor-arg ref="dataSource"/>
+		<constructor-arg value="file:../../db/db.sql"/>
+	</bean>
+
+</beans>
diff --git a/solution/greenpages.jpa/template.mf b/solution/greenpages.jpa/template.mf
new file mode 100644
index 0000000..2db1397
--- /dev/null
+++ b/solution/greenpages.jpa/template.mf
@@ -0,0 +1,23 @@
+Manifest-Version: 1.0
+Bundle-ManifestVersion: 2
+Bundle-Name: GreenPages JPA
+Bundle-SymbolicName: greenpages.jpa
+Bundle-Vendor: SpringSource Inc.
+Bundle-Version: 2.0
+Import-Template: 
+ org.springframework.*;version="[3.0, 3.1)",
+ greenpages;version="[2.0, 2.1)",
+ javax.persistence;version="[1.0.0, 1.0.0]",
+ org.apache.commons.dbcp.*;version="[1.2.2.osgi, 1.2.2.osgi]",
+ javax.sql;version="0"
+Import-Bundle: 
+ com.springsource.org.eclipse.persistence;version="[1.0.0, 1.0.0]",
+ com.springsource.org.eclipse.persistence.jpa;version="[1.0.0, 1.0.0]"
+Import-Package: 
+ org.springframework.context.weaving;version="[3.0, 3.1)",
+ org.springframework.transaction.aspectj;version="[3.0, 3.1)"
+Excluded-Exports: 
+ greenpages.jpa
+Excluded-Imports: 
+ org.springframework.test.*,
+ org.junit.*
\ No newline at end of file
diff --git a/solution/greenpages.web/.classpath b/solution/greenpages.web/.classpath
new file mode 100644
index 0000000..679c7f5
--- /dev/null
+++ b/solution/greenpages.web/.classpath
@@ -0,0 +1,15 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<classpath>
+	<classpathentry kind="src" output="target/classes" path="src/main/java"/>
+	<classpathentry kind="src" output="target/test-classes" path="src/test/java"/>
+	<classpathentry excluding="**" kind="src" output="target/test-classes" path="src/test/resources"/>
+	<classpathentry kind="con" path="org.maven.ide.eclipse.MAVEN2_CLASSPATH_CONTAINER">
+		<attributes>
+			<attribute name="org.eclipse.jst.component.dependency" value="/WEB-INF/lib"/>
+		</attributes>
+	</classpathentry>
+	<classpathentry kind="con" path="org.eclipse.jst.j2ee.internal.web.container"/>
+	<classpathentry kind="con" path="org.eclipse.jst.j2ee.internal.module.container"/>
+	<classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER/org.eclipse.jdt.internal.debug.ui.launcher.StandardVMType/JavaSE-1.6"/>
+	<classpathentry kind="output" path="target/classes"/>
+</classpath>
diff --git a/solution/greenpages.web/.project b/solution/greenpages.web/.project
new file mode 100644
index 0000000..a686b48
--- /dev/null
+++ b/solution/greenpages.web/.project
@@ -0,0 +1,49 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<projectDescription>
+	<name>greenpages.web-solution</name>
+	<comment></comment>
+	<projects>
+	</projects>
+	<buildSpec>
+		<buildCommand>
+			<name>org.eclipse.wst.common.project.facet.core.builder</name>
+			<arguments>
+			</arguments>
+		</buildCommand>
+		<buildCommand>
+			<name>org.eclipse.jdt.core.javabuilder</name>
+			<arguments>
+			</arguments>
+		</buildCommand>
+		<buildCommand>
+			<name>org.eclipse.wst.validation.validationbuilder</name>
+			<arguments>
+			</arguments>
+		</buildCommand>
+		<buildCommand>
+			<name>org.springframework.ide.eclipse.core.springbuilder</name>
+			<arguments>
+			</arguments>
+		</buildCommand>
+		<buildCommand>
+			<name>com.springsource.server.ide.bundlor.core.builder</name>
+			<arguments>
+			</arguments>
+		</buildCommand>
+		<buildCommand>
+			<name>org.maven.ide.eclipse.maven2Builder</name>
+			<arguments>
+			</arguments>
+		</buildCommand>
+	</buildSpec>
+	<natures>
+		<nature>org.maven.ide.eclipse.maven2Nature</nature>
+		<nature>com.springsource.server.ide.facet.core.bundlenature</nature>
+		<nature>org.eclipse.jem.workbench.JavaEMFNature</nature>
+		<nature>org.eclipse.wst.common.modulecore.ModuleCoreNature</nature>
+		<nature>org.eclipse.jdt.core.javanature</nature>
+		<nature>org.springframework.ide.eclipse.core.springnature</nature>
+		<nature>org.eclipse.wst.common.project.facet.core.nature</nature>
+		<nature>org.eclipse.wst.jsdt.core.jsNature</nature>
+	</natures>
+</projectDescription>
diff --git a/solution/greenpages.web/.settings/.jsdtscope b/solution/greenpages.web/.settings/.jsdtscope
new file mode 100644
index 0000000..99cc012
--- /dev/null
+++ b/solution/greenpages.web/.settings/.jsdtscope
@@ -0,0 +1,16 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<classpath>
+	<classpathentry kind="con" path="org.eclipse.wst.jsdt.launching.JRE_CONTAINER"/>
+	<classpathentry kind="con" path="org.eclipse.wst.jsdt.launching.WebProject">
+		<attributes>
+			<attribute name="hide" value="true"/>
+		</attributes>
+	</classpathentry>
+	<classpathentry kind="con" path="org.eclipse.wst.jsdt.launching.baseBrowserLibrary"/>
+	<classpathentry kind="con" path="org.eclipse.wst.jsdt.launching.WebProject">
+		<attributes>
+			<attribute name="hide" value="false"/>
+		</attributes>
+	</classpathentry>
+	<classpathentry kind="output" path=""/>
+</classpath>
diff --git a/solution/greenpages.web/.settings/GreenPagesSpringContextTests-solution.launch b/solution/greenpages.web/.settings/GreenPagesSpringContextTests-solution.launch
new file mode 100644
index 0000000..237e9ce
--- /dev/null
+++ b/solution/greenpages.web/.settings/GreenPagesSpringContextTests-solution.launch
@@ -0,0 +1,18 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<launchConfiguration type="org.eclipse.jdt.junit.launchconfig">
+<listAttribute key="org.eclipse.debug.core.MAPPED_RESOURCE_PATHS">
+<listEntry value="/greenpages.web-solution/src/test/java/greenpages/web/GreenPagesSpringContextTests.java"/>
+</listAttribute>
+<listAttribute key="org.eclipse.debug.core.MAPPED_RESOURCE_TYPES">
+<listEntry value="1"/>
+</listAttribute>
+<stringAttribute key="org.eclipse.jdt.junit.CONTAINER" value=""/>
+<booleanAttribute key="org.eclipse.jdt.junit.KEEPRUNNING_ATTR" value="false"/>
+<stringAttribute key="org.eclipse.jdt.junit.TESTNAME" value=""/>
+<stringAttribute key="org.eclipse.jdt.junit.TEST_KIND" value="org.eclipse.jdt.junit.loader.junit4"/>
+<stringAttribute key="org.eclipse.jdt.launching.CLASSPATH_PROVIDER" value="org.maven.ide.eclipse.launchconfig.classpathProvider"/>
+<stringAttribute key="org.eclipse.jdt.launching.MAIN_TYPE" value="greenpages.web.GreenPagesSpringContextTests"/>
+<stringAttribute key="org.eclipse.jdt.launching.PROJECT_ATTR" value="greenpages.web-solution"/>
+<stringAttribute key="org.eclipse.jdt.launching.SOURCE_PATH_PROVIDER" value="org.maven.ide.eclipse.launchconfig.sourcepathProvider"/>
+<stringAttribute key="org.eclipse.jdt.launching.VM_ARGUMENTS" value="-javaagent:${system_property:user.home}/.m2/repository/org/springframework/org.springframework.instrument/3.0.0.M3/org.springframework.instrument-3.0.0.M3.jar"/>
+</launchConfiguration>
diff --git a/solution/greenpages.web/.settings/org.eclipse.wst.common.component b/solution/greenpages.web/.settings/org.eclipse.wst.common.component
new file mode 100644
index 0000000..3bf0ff1
--- /dev/null
+++ b/solution/greenpages.web/.settings/org.eclipse.wst.common.component
@@ -0,0 +1,14 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<project-modules id="moduleCoreId" project-version="1.5.0">
+<wb-module deploy-name="greenpages.web-solution">
+<wb-resource deploy-path="/WEB-INF/classes" source-path="/src/main/java"/>
+<wb-resource deploy-path="/WEB-INF/classes" source-path="/src/main/resources"/>
+<wb-resource deploy-path="/" source-path="/src/main/webapp"/>
+<wb-resource deploy-path="/WEB-INF/classes" source-path="/src/test/resources"/>
+<dependent-module deploy-path="/WEB-INF/lib" handle="module:/resource/greenpages.app-solution/greenpages.app-solution">
+<dependency-type>uses</dependency-type>
+</dependent-module>
+<property name="context-root" value="greenpages"/>
+<property name="java-output-path"/>
+</wb-module>
+</project-modules>
diff --git a/solution/greenpages.web/.settings/org.eclipse.wst.common.project.facet.core.xml b/solution/greenpages.web/.settings/org.eclipse.wst.common.project.facet.core.xml
new file mode 100644
index 0000000..96e2d7e
--- /dev/null
+++ b/solution/greenpages.web/.settings/org.eclipse.wst.common.project.facet.core.xml
@@ -0,0 +1,6 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<faceted-project>
+  <installed facet="com.springsource.server.bundle" version="1.0"/>
+  <installed facet="jst.web" version="2.5"/>
+  <installed facet="jst.java" version="6.0"/>
+</faceted-project>
diff --git a/solution/greenpages.web/.settings/org.eclipse.wst.jsdt.ui.superType.container b/solution/greenpages.web/.settings/org.eclipse.wst.jsdt.ui.superType.container
new file mode 100644
index 0000000..3bd5d0a
--- /dev/null
+++ b/solution/greenpages.web/.settings/org.eclipse.wst.jsdt.ui.superType.container
@@ -0,0 +1 @@
+org.eclipse.wst.jsdt.launching.baseBrowserLibrary
\ No newline at end of file
diff --git a/solution/greenpages.web/.settings/org.eclipse.wst.jsdt.ui.superType.name b/solution/greenpages.web/.settings/org.eclipse.wst.jsdt.ui.superType.name
new file mode 100644
index 0000000..05bd71b
--- /dev/null
+++ b/solution/greenpages.web/.settings/org.eclipse.wst.jsdt.ui.superType.name
@@ -0,0 +1 @@
+Window
\ No newline at end of file
diff --git a/solution/greenpages.web/.settings/org.maven.ide.eclipse.prefs b/solution/greenpages.web/.settings/org.maven.ide.eclipse.prefs
new file mode 100644
index 0000000..a79cc8e
--- /dev/null
+++ b/solution/greenpages.web/.settings/org.maven.ide.eclipse.prefs
@@ -0,0 +1,9 @@
+#Tue Dec 15 14:27:45 GMT 2009
+activeProfiles=
+eclipse.preferences.version=1
+fullBuildGoals=process-test-resources
+includeModules=false
+resolveWorkspaceProjects=true
+resourceFilterGoals=process-resources resources\:testResources
+skipCompilerPlugin=true
+version=1
diff --git a/solution/greenpages.web/.settings/org.springframework.ide.eclipse.beans.core.prefs b/solution/greenpages.web/.settings/org.springframework.ide.eclipse.beans.core.prefs
new file mode 100644
index 0000000..af8ab8b
--- /dev/null
+++ b/solution/greenpages.web/.settings/org.springframework.ide.eclipse.beans.core.prefs
@@ -0,0 +1,3 @@
+#Mon Mar 09 17:11:56 GMT 2009
+eclipse.preferences.version=1
+org.springframework.ide.eclipse.beans.core.ignoreMissingNamespaceHandler=false
diff --git a/solution/greenpages.web/.springBeans b/solution/greenpages.web/.springBeans
new file mode 100644
index 0000000..618a258
--- /dev/null
+++ b/solution/greenpages.web/.springBeans
@@ -0,0 +1,13 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<beansProjectDescription>
+	<version>1</version>
+	<pluginVersion><![CDATA[2.2.8.200911091054-RELEASE]]></pluginVersion>
+	<configSuffixes>
+		<configSuffix><![CDATA[xml]]></configSuffix>
+	</configSuffixes>
+	<enableImports><![CDATA[false]]></enableImports>
+	<configs>
+	</configs>
+	<configSets>
+	</configSets>
+</beansProjectDescription>
diff --git a/solution/greenpages.web/.~/greenpages-db/greenpages.10.log.db b/solution/greenpages.web/.~/greenpages-db/greenpages.10.log.db
new file mode 100644
index 0000000..de9e2a0
--- /dev/null
+++ b/solution/greenpages.web/.~/greenpages-db/greenpages.10.log.db
Binary files differ
diff --git a/solution/greenpages.web/.~/greenpages-db/greenpages.data.db b/solution/greenpages.web/.~/greenpages-db/greenpages.data.db
new file mode 100644
index 0000000..d9bf4ba
--- /dev/null
+++ b/solution/greenpages.web/.~/greenpages-db/greenpages.data.db
Binary files differ
diff --git a/solution/greenpages.web/.~/greenpages-db/greenpages.index.db b/solution/greenpages.web/.~/greenpages-db/greenpages.index.db
new file mode 100644
index 0000000..b2427f4
--- /dev/null
+++ b/solution/greenpages.web/.~/greenpages-db/greenpages.index.db
Binary files differ
diff --git a/solution/greenpages.web/pom.xml b/solution/greenpages.web/pom.xml
new file mode 100644
index 0000000..aea771d
--- /dev/null
+++ b/solution/greenpages.web/pom.xml
@@ -0,0 +1,98 @@
+<?xml version="1.0" encoding="UTF-8"?>

+<project

+		xmlns="http://maven.apache.org/POM/4.0.0"

+		xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"

+		xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">

+

+	<parent>

+		<groupId>com.springsource.dmserver</groupId>

+		<artifactId>greenpages.parent-solution</artifactId>

+		<version>2.0.1.SNAPSHOT</version>

+		<relativePath>../parent</relativePath>

+	</parent>

+

+	<modelVersion>4.0.0</modelVersion>

+	<groupId>com.springsource.dmserver</groupId>

+	<artifactId>greenpages.web-solution</artifactId>

+	<name>greenpages.web</name>

+	<packaging>war</packaging>

+

+	<dependencies>

+		<dependency>

+			<groupId>com.springsource.dmserver</groupId>

+			<artifactId>greenpages.app-solution</artifactId>

+			<version>${project.version}</version>

+		</dependency>

+		<dependency>

+			<groupId>org.springframework</groupId>

+			<artifactId>org.springframework.spring-library</artifactId>

+			<type>libd</type>

+			<scope>provided</scope>

+		</dependency>

+		<dependency>

+			<groupId>org.freemarker</groupId>

+			<artifactId>com.springsource.freemarker</artifactId>

+			<scope>compile</scope>

+		</dependency>

+		<dependency>

+			<groupId>javax.servlet</groupId>

+			<artifactId>com.springsource.javax.servlet</artifactId>

+			<scope>provided</scope>

+		</dependency>

+		<dependency>

+			<groupId>com.springsource.dmserver</groupId>

+			<artifactId>greenpages.jpa-solution</artifactId>

+			<version>${project.version}</version>

+			<scope>test</scope>

+		</dependency>

+		<dependency>

+			<groupId>org.junit</groupId>

+			<artifactId>com.springsource.org.junit</artifactId>

+			<scope>test</scope>

+		</dependency>

+		<dependency>

+			<groupId>org.springframework</groupId>

+			<artifactId>org.springframework.test</artifactId>

+			<scope>test</scope>

+		</dependency>

+		<dependency>

+			<groupId>org.springframework</groupId>

+			<artifactId>org.springframework.aspects</artifactId>

+			<scope>test</scope>

+		</dependency>

+		<dependency>

+			<groupId>org.springframework</groupId>

+			<artifactId>org.springframework.instrument</artifactId>

+			<scope>test</scope>

+		</dependency>

+		<dependency>

+			<groupId>org.apache.commons</groupId>

+			<artifactId>com.springsource.org.apache.commons.dbcp</artifactId>

+			<scope>test</scope>

+		</dependency>

+		<dependency>

+			<groupId>com.h2database</groupId>

+			<artifactId>com.springsource.org.h2</artifactId>

+			<scope>test</scope>

+		</dependency>

+		<dependency>

+			<groupId>org.aspectj</groupId>

+			<artifactId>org.aspectj-library</artifactId>

+			<type>libd</type>

+			<scope>test</scope>

+		</dependency>

+	</dependencies>

+

+	<build>

+	<plugins>

+		<plugin>

+			<artifactId>maven-war-plugin</artifactId>

+			<version>2.1-beta-1</version>

+			<configuration>

+				<packagingExcludes>WEB-INF/lib/**</packagingExcludes>

+			</configuration>

+		</plugin>

+	</plugins>

+	</build>

+

+</project>

diff --git a/solution/greenpages.web/src/main/java/greenpages/web/GreenPagesController.java b/solution/greenpages.web/src/main/java/greenpages/web/GreenPagesController.java
new file mode 100644
index 0000000..56463fc
--- /dev/null
+++ b/solution/greenpages.web/src/main/java/greenpages/web/GreenPagesController.java
@@ -0,0 +1,57 @@
+/*******************************************************************************
+ * Copyright (c) 2008, 2010 VMware Inc.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ *   VMware Inc. - initial contribution
+ *******************************************************************************/
+
+package greenpages.web;
+
+import greenpages.Directory;
+import greenpages.Listing;
+
+import java.util.List;
+
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Controller;
+import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.web.bind.annotation.RequestParam;
+
+/**
+ * Controller class for GreenPages web application.<p/>
+ * 
+ * This class is configured using Spring 2.5-style MVC annotations. Documentation for this feature can be found <a
+ * href="http://static.springframework.org/spring/docs/2.5.x/reference/mvc.html#mvc-annotation">here</a>.<p/>
+ * 
+ * The use of {@link Controller} makes this class eligible for autodetection by &lt;context:component-scan/&gt; in the
+ * context configuration.
+ */
+@Controller
+public class GreenPagesController {
+
+    /**
+     * This field is injected automatically by Spring. For this injection to be satisfied, the greenpages.web module
+     * must either declare a bean of type {@link Directory} or it must import a <code>Directory</code> from OSGi.
+     */
+	@Autowired
+	private Directory directory;   
+
+
+    @RequestMapping("/home.htm")
+    public void home() {
+    }
+
+    @RequestMapping("/search.htm")
+    public List<Listing> search(@RequestParam("query") String query) {
+        return this.directory.search(query);
+    }
+
+    @RequestMapping("/entry.htm")
+    public Listing entry(@RequestParam("id") int id) {
+        return this.directory.findListing(id);
+    }
+}
diff --git a/solution/greenpages.web/src/main/webapp/META-INF/MANIFEST.MF b/solution/greenpages.web/src/main/webapp/META-INF/MANIFEST.MF
new file mode 100644
index 0000000..465b7ac
--- /dev/null
+++ b/solution/greenpages.web/src/main/webapp/META-INF/MANIFEST.MF
@@ -0,0 +1,21 @@
+Manifest-Version: 1.0

+Bundle-Name: GreenPages Web

+Import-Library: org.springframework.spring;version="[3.0, 3.1)"

+Bundle-Classpath: .

+Import-Bundle: com.springsource.org.apache.taglibs.standard;version="[

+ 1.1.2,1.3)"

+Web-ContextPath: greenpages

+Import-Package: org.eclipse.virgo.web.dm;version="[2.0.0, 3.0.0)

+ ",freemarker.cache;version="[2.3.15,2.3.15]",greenpages;version="[2.0

+ , 2.1)",javax.servlet.jsp.jstl.core;version="[1.1.2,1.2.0)",javax.sql

+ ,org.apache.commons.dbcp,org.springframework.beans.factory.annotation

+ ;version="[3.0, 3.1)",org.springframework.core.io;version="[3.0, 3.1)

+ ",org.springframework.stereotype;version="[3.0, 3.1)",org.springframe

+ work.web.bind.annotation;version="[3.0, 3.1)",org.springframework.web

+ .context;version="[3.0, 3.1)",org.springframework.web.servlet;version

+ ="[3.0, 3.1)"

+Bundle-ManifestVersion: 2

+Bundle-SymbolicName: greenpages.web

+Tool: Bundlor 1.0.0.M6

+Bundle-Version: 2.0

+

diff --git a/solution/greenpages.web/src/main/webapp/WEB-INF/applicationContext.xml b/solution/greenpages.web/src/main/webapp/WEB-INF/applicationContext.xml
new file mode 100644
index 0000000..36b743e
--- /dev/null
+++ b/solution/greenpages.web/src/main/webapp/WEB-INF/applicationContext.xml
@@ -0,0 +1,13 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<beans xmlns="http://www.springframework.org/schema/beans"
+	xmlns:osgi="http://www.springframework.org/schema/osgi"
+	xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+	xmlns:context="http://www.springframework.org/schema/context"
+	xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-2.5.xsd
+		http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context-2.5.xsd
+		http://www.springframework.org/schema/osgi http://www.springframework.org/schema/osgi/spring-osgi.xsd">
+	
+	<!-- import a service from OSGi implementing the Directory interface and make available as a bean called directory -->

+	<osgi:reference id="directory" interface="greenpages.Directory" />

+

+</beans>

diff --git a/solution/greenpages.web/src/main/webapp/WEB-INF/ftl/entry.ftl b/solution/greenpages.web/src/main/webapp/WEB-INF/ftl/entry.ftl
new file mode 100644
index 0000000..504e6ec
--- /dev/null
+++ b/solution/greenpages.web/src/main/webapp/WEB-INF/ftl/entry.ftl
@@ -0,0 +1,49 @@
+<!DOCTYPE HTML>
+<html>
+<head>
+<title>GreenPages</title>
+  <link rel="stylesheet" href="/greenpages/styles/main.css" type="text/css" />
+  <link rel="stylesheet" href="/greenpages/styles/local.css" type="text/css" />
+  <link rel="stylesheet" href="/greenpages/styles/print.css" type="text/css" media="print" />
+</head>
+<body class="main tundra">
+    <div id="page">
+        <div id="mini-header">
+			<div id="mini-header-left"></div>
+			<div id="mini-header-right"></div>
+        </div> <!-- /mini-header -->
+
+	    <div id="primary-navigation">
+	        <div id="primary-left">
+	            <ul>
+	                <li><a href="/greenpages" title="Admin Console">GreenPages</a></li>
+	            </ul>
+	        </div>
+	        <img id="left-curve" src="/greenpages/images/menu-curve-left.png"/>
+	        <div id="primary-right">
+	            <ul>
+	                <li><a href="/admin" title="Admin Console">Admin Console</a></li>
+	                <li><a href="http://www.eclipse.org/virgo" title="Admin Console">Virgo</a></li>
+	            </ul>
+	        </div>
+	        <img id="right-curve" src="/greenpages/images/menu-curve-right.png"/>
+	    </div><!-- /primary-navigation -->
+
+    <div id="container">
+        <div id="content-no-nav">
+			<h1>Virgo Web Server - Greenpages sample</h1>
+        	<p/>
+            <h2>${listing.firstName} ${listing.lastName}</h2>
+			<a href="mailto:${listing.emailAddress}">${listing.emailAddress}</a>
+        </div> <!-- /content -->
+    </div> <!-- /container -->
+    
+    <div id="footer-wrapper">
+        <div id="footer-left">&copy; Copyright 2008, 2010 VMware Inc. Licensed under the Eclipse Public License v1.0.</div>
+        <div id="footer-right"></div> 
+    </div> <!-- /footer-wrapper -->
+
+  </div> <!-- /page -->
+
+</body>
+</html>
\ No newline at end of file
diff --git a/solution/greenpages.web/src/main/webapp/WEB-INF/ftl/home.ftl b/solution/greenpages.web/src/main/webapp/WEB-INF/ftl/home.ftl
new file mode 100644
index 0000000..bec4830
--- /dev/null
+++ b/solution/greenpages.web/src/main/webapp/WEB-INF/ftl/home.ftl
@@ -0,0 +1,50 @@
+<!DOCTYPE HTML>
+<html>
+<head>
+<title>GreenPages</title>
+  <link rel="stylesheet" href="/greenpages/styles/main.css" type="text/css" />
+  <link rel="stylesheet" href="/greenpages/styles/local.css" type="text/css" />
+  <link rel="stylesheet" href="/greenpages/styles/print.css" type="text/css" media="print" />
+</head>
+<body class="main tundra">
+    <div id="page">
+        <div id="mini-header">
+			<div id="mini-header-left"></div>
+			<div id="mini-header-right"></div>
+        </div> <!-- /mini-header -->
+
+	    <div id="primary-navigation">
+	        <div id="primary-left">
+	            <ul>
+	                <li><a href="/greenpages" title="Admin Console">GreenPages</a></li>
+	            </ul>
+	        </div>
+	        <img id="left-curve" src="/greenpages/images/menu-curve-left.png"/>
+	        <div id="primary-right">
+	            <ul>
+	                <li><a href="/admin" title="Admin Console">Admin Console</a></li>
+	                <li><a href="http://www.eclipse.org/virgo" title="Admin Console">Virgo</a></li>
+	            </ul>
+	        </div>
+	        <img id="right-curve" src="/greenpages/images/menu-curve-right.png"/>
+	    </div><!-- /primary-navigation -->
+
+    <div id="container">
+      <div id="content-no-nav">
+		<h1>Virgo Web Server - Greenpages sample</h1>
+        <p/>
+            <form name="searchForm" method="GET" action="search.htm">
+				<input name="query" type="text"/> <input type="submit"/>
+			</form>
+        </div> <!-- /content -->
+    </div> <!-- /container -->
+    
+    <div id="footer-wrapper">
+        <div id="footer-left">&copy; Copyright 2008, 2010 VMware Inc. Licensed under the Eclipse Public License v1.0.</div>
+        <div id="footer-right"></div> 
+    </div> <!-- /footer-wrapper -->
+
+  </div> <!-- /page -->
+
+</body>
+</html>
\ No newline at end of file
diff --git a/solution/greenpages.web/src/main/webapp/WEB-INF/ftl/search.ftl b/solution/greenpages.web/src/main/webapp/WEB-INF/ftl/search.ftl
new file mode 100644
index 0000000..f116e48
--- /dev/null
+++ b/solution/greenpages.web/src/main/webapp/WEB-INF/ftl/search.ftl
@@ -0,0 +1,72 @@
+<!DOCTYPE HTML>
+<html>
+<head>
+<title>GreenPages</title>
+  <link rel="stylesheet" href="/greenpages/styles/main.css" type="text/css" />
+  <link rel="stylesheet" href="/greenpages/styles/local.css" type="text/css" />
+  <link rel="stylesheet" href="/greenpages/styles/print.css" type="text/css" media="print" />
+</head>
+<body class="main tundra">
+	<div id="page">
+		<div id="mini-header">
+			<div id="mini-header-left"></div>
+			<div id="mini-header-right"></div>
+		</div> <!-- /mini-header -->
+
+		<div id="primary-navigation">
+			<div id="primary-left">
+				<ul>
+					<li><a href="/greenpages" title="Admin Console">GreenPages</a></li>
+				</ul>
+			</div>
+			<img id="left-curve" src="/greenpages/images/menu-curve-left.png"/>
+			<div id="primary-right">
+				<ul>
+					<li><a href="/admin" title="Admin Console">Admin Console</a></li>
+					<li><a href="http://www.eclipse.org/virgo" title="Admin Console">Virgo</a></li>
+				</ul>
+			</div>
+			<img id="right-curve" src="/greenpages/images/menu-curve-right.png"/>
+		</div><!-- /primary-navigation -->
+
+		<div id="container">
+		<div id="content-no-nav">
+			<h1>Virgo Web Server - Greenpages sample</h1>
+			<p/>
+			<form name="searchForm" method="GET" action="search.htm">
+				<input name="query" type="text"/> <input type="submit"/>
+			</form>
+			<#if listingList?? && (listingList?size > 0)>
+				<table id="results">
+					<thead>
+						<tr>
+							<th>Last Name</th>
+							<th>First Name</th>
+							<th>&nbsp;</th>
+						</tr>
+					</thead>
+					<tbody>
+						<#list listingList as listing>
+							<tr>
+								<td>${listing.lastName}</td>
+								<td>${listing.firstName}</td>
+								<td><a href="entry.htm?id=${listing.listingNumber}">view</a></td>
+							</tr>
+						</#list>
+					</tbody>
+				</table>
+			<#else>
+				<h2>No results found.</h2>
+			</#if>
+		</div> <!-- /content -->
+		</div> <!-- /container -->
+    
+    <div id="footer-wrapper">
+        <div id="footer-left">&copy; Copyright 2008, 2010 VMware Inc. Licensed under the Eclipse Public License v1.0.</div>
+        <div id="footer-right"></div> 
+    </div> <!-- /footer-wrapper -->
+
+  </div> <!-- /page -->
+
+</body>
+</html>
\ No newline at end of file
diff --git a/solution/greenpages.web/src/main/webapp/WEB-INF/greenpages-servlet.xml b/solution/greenpages.web/src/main/webapp/WEB-INF/greenpages-servlet.xml
new file mode 100644
index 0000000..61d2256
--- /dev/null
+++ b/solution/greenpages.web/src/main/webapp/WEB-INF/greenpages-servlet.xml
@@ -0,0 +1,24 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<beans xmlns="http://www.springframework.org/schema/beans"
+	xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+	xmlns:context="http://www.springframework.org/schema/context"
+	xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-2.5.xsd 
+		http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context-2.5.xsd">
+
+	<!-- enable classpath scanning -->
+	<context:component-scan base-package="greenpages.web" />
+
+	<!-- enable anntotation-driven controllers -->
+	<bean class="org.springframework.web.servlet.mvc.annotation.AnnotationMethodHandlerAdapter" />
+
+
+	<!-- configure FreeMarker support -->
+	<bean id="freemarkerConfig" class="org.springframework.web.servlet.view.freemarker.FreeMarkerConfigurer">
+		<property name="templateLoaderPath" value="/WEB-INF/ftl/" />
+	</bean>
+
+	<bean id="viewResolver"	class="org.springframework.web.servlet.view.freemarker.FreeMarkerViewResolver">
+		<property name="cache" value="true" />
+		<property name="suffix" value=".ftl" />
+	</bean>
+</beans>
diff --git a/solution/greenpages.web/src/main/webapp/WEB-INF/web.xml b/solution/greenpages.web/src/main/webapp/WEB-INF/web.xml
new file mode 100644
index 0000000..adf7d6c
--- /dev/null
+++ b/solution/greenpages.web/src/main/webapp/WEB-INF/web.xml
@@ -0,0 +1,37 @@
+<?xml version="1.0" encoding="ISO-8859-1"?>
+<web-app xmlns="http://java.sun.com/xml/ns/javaee" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+  xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd" version="2.5">
+
+  <display-name>Greenpages solution - web</display-name>
+
+
+  <welcome-file-list>
+    <welcome-file>index.jsp</welcome-file>
+    <welcome-file>index.html</welcome-file>
+    <welcome-file>index.htm</welcome-file>
+  </welcome-file-list>
+
+<!-- CONFIGURE A PARENT APPLICATION CONTEXT -->
+
+  <context-param>
+    <param-name>contextClass</param-name>
+    <param-value>org.eclipse.virgo.web.dm.ServerOsgiBundleXmlWebApplicationContext</param-value>
+  </context-param>
+
+  <listener>
+    <listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>
+  </listener>
+
+
+  <!-- DISPATCHER SERVLET CONFIG -->
+  <servlet>
+    <servlet-name>greenpages</servlet-name>
+    <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
+  </servlet>
+
+  <servlet-mapping>
+    <servlet-name>greenpages</servlet-name>
+    <url-pattern>/app/*</url-pattern>
+  </servlet-mapping>
+
+</web-app>
\ No newline at end of file
diff --git a/solution/greenpages.web/src/main/webapp/images/favicon.ico b/solution/greenpages.web/src/main/webapp/images/favicon.ico
new file mode 100755
index 0000000..9244a9c
--- /dev/null
+++ b/solution/greenpages.web/src/main/webapp/images/favicon.ico
Binary files differ
diff --git a/solution/greenpages.web/src/main/webapp/images/footer-left.png b/solution/greenpages.web/src/main/webapp/images/footer-left.png
new file mode 100644
index 0000000..8bfe3b1
--- /dev/null
+++ b/solution/greenpages.web/src/main/webapp/images/footer-left.png
Binary files differ
diff --git a/solution/greenpages.web/src/main/webapp/images/footer-right.png b/solution/greenpages.web/src/main/webapp/images/footer-right.png
new file mode 100644
index 0000000..51527ad
--- /dev/null
+++ b/solution/greenpages.web/src/main/webapp/images/footer-right.png
Binary files differ
diff --git a/solution/greenpages.web/src/main/webapp/images/footer-stretch.png b/solution/greenpages.web/src/main/webapp/images/footer-stretch.png
new file mode 100644
index 0000000..c58f721
--- /dev/null
+++ b/solution/greenpages.web/src/main/webapp/images/footer-stretch.png
Binary files differ
diff --git a/solution/greenpages.web/src/main/webapp/images/header-left.png b/solution/greenpages.web/src/main/webapp/images/header-left.png
new file mode 100644
index 0000000..4920a0a
--- /dev/null
+++ b/solution/greenpages.web/src/main/webapp/images/header-left.png
Binary files differ
diff --git a/solution/greenpages.web/src/main/webapp/images/header-right.png b/solution/greenpages.web/src/main/webapp/images/header-right.png
new file mode 100644
index 0000000..09b0a59
--- /dev/null
+++ b/solution/greenpages.web/src/main/webapp/images/header-right.png
Binary files differ
diff --git a/solution/greenpages.web/src/main/webapp/images/loader-white-large.gif b/solution/greenpages.web/src/main/webapp/images/loader-white-large.gif
new file mode 100644
index 0000000..aa4ec5a
--- /dev/null
+++ b/solution/greenpages.web/src/main/webapp/images/loader-white-large.gif
Binary files differ
diff --git a/solution/greenpages.web/src/main/webapp/images/loader-white-small.gif b/solution/greenpages.web/src/main/webapp/images/loader-white-small.gif
new file mode 100644
index 0000000..75ad2b3
--- /dev/null
+++ b/solution/greenpages.web/src/main/webapp/images/loader-white-small.gif
Binary files differ
diff --git a/solution/greenpages.web/src/main/webapp/images/menu-curve-left.png b/solution/greenpages.web/src/main/webapp/images/menu-curve-left.png
new file mode 100644
index 0000000..c48a2e0
--- /dev/null
+++ b/solution/greenpages.web/src/main/webapp/images/menu-curve-left.png
Binary files differ
diff --git a/solution/greenpages.web/src/main/webapp/images/menu-curve-right.png b/solution/greenpages.web/src/main/webapp/images/menu-curve-right.png
new file mode 100644
index 0000000..1f3b100
--- /dev/null
+++ b/solution/greenpages.web/src/main/webapp/images/menu-curve-right.png
Binary files differ
diff --git a/solution/greenpages.web/src/main/webapp/images/menu-stretch.png b/solution/greenpages.web/src/main/webapp/images/menu-stretch.png
new file mode 100644
index 0000000..0ca66f7
--- /dev/null
+++ b/solution/greenpages.web/src/main/webapp/images/menu-stretch.png
Binary files differ
diff --git a/solution/greenpages.web/src/main/webapp/images/mini-header-left.png b/solution/greenpages.web/src/main/webapp/images/mini-header-left.png
new file mode 100644
index 0000000..72551e7
--- /dev/null
+++ b/solution/greenpages.web/src/main/webapp/images/mini-header-left.png
Binary files differ
diff --git a/solution/greenpages.web/src/main/webapp/images/mini-header-right.png b/solution/greenpages.web/src/main/webapp/images/mini-header-right.png
new file mode 100644
index 0000000..8aaf50c
--- /dev/null
+++ b/solution/greenpages.web/src/main/webapp/images/mini-header-right.png
Binary files differ
diff --git a/solution/greenpages.web/src/main/webapp/images/s2ap_soda_can.png b/solution/greenpages.web/src/main/webapp/images/s2ap_soda_can.png
new file mode 100644
index 0000000..8eb53a8
--- /dev/null
+++ b/solution/greenpages.web/src/main/webapp/images/s2ap_soda_can.png
Binary files differ
diff --git a/solution/greenpages.web/src/main/webapp/images/spring.png b/solution/greenpages.web/src/main/webapp/images/spring.png
new file mode 100644
index 0000000..05a1940
--- /dev/null
+++ b/solution/greenpages.web/src/main/webapp/images/spring.png
Binary files differ
diff --git a/solution/greenpages.web/src/main/webapp/images/table-header-background.png b/solution/greenpages.web/src/main/webapp/images/table-header-background.png
new file mode 100644
index 0000000..8f2ba1b
--- /dev/null
+++ b/solution/greenpages.web/src/main/webapp/images/table-header-background.png
Binary files differ
diff --git a/solution/greenpages.web/src/main/webapp/index.html b/solution/greenpages.web/src/main/webapp/index.html
new file mode 100644
index 0000000..a541368
--- /dev/null
+++ b/solution/greenpages.web/src/main/webapp/index.html
@@ -0,0 +1,10 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
+<html>
+	<head>
+		<title>GreenPages</title>
+		<meta http-equiv="REFRESH" content="0;url=/greenpages/app/home.htm">
+	</head>
+	<body>
+	
+	</body>
+</html>
\ No newline at end of file
diff --git a/solution/greenpages.web/src/main/webapp/styles/local.css b/solution/greenpages.web/src/main/webapp/styles/local.css
new file mode 100644
index 0000000..8302e89
--- /dev/null
+++ b/solution/greenpages.web/src/main/webapp/styles/local.css
@@ -0,0 +1,40 @@
+/* 
+ *  Local style information for the Virgo Splash Screen
+ *
+ *  Contains both style and colour information and 
+ *  overrides content from the dojo/tundra style.
+ *
+ *  Christopher Frost - March 2010
+ *
+ */
+ 
+#mini-header, #mini-header-left, #mini-header-right {
+	height: 7px;
+	width: 7px;
+	margin: 0px;
+	padding: 0px;
+}
+
+#mini-header {
+	width: 100%;
+	background-color: #002e62; 
+}
+
+#mini-header-left {
+	background-image: url(../images/mini-header-left.png); 
+	background-repeat: no-repeat; 
+	background-position: left top;
+	float: left;
+}
+
+#mini-header-right {
+	background-image: url(../images/mini-header-right.png); 
+	background-repeat: no-repeat scroll; 
+	background-position: right top;
+	float: right;
+}
+ 
+#content-no-nav {
+	background: transparent url(../images/s2ap_soda_can.png) no-repeat bottom right;
+	height: 400px;
+}
\ No newline at end of file
diff --git a/solution/greenpages.web/src/main/webapp/styles/main.css b/solution/greenpages.web/src/main/webapp/styles/main.css
new file mode 100644
index 0000000..8eac83a
--- /dev/null
+++ b/solution/greenpages.web/src/main/webapp/styles/main.css
@@ -0,0 +1,290 @@
+/* 
+ * MAIN CSS
+ *
+ * All styles for the screen, other than color-specific styles,
+ * should be included here.  
+ *
+ * COMMON STYLES
+ */
+body {
+	font: 12px Helvetica, Arial, "Bitstream Vera Sans", sans-serif;
+	background-color: #dfdfdf;
+}
+
+#page {
+	margin: auto;
+	width: 800px;
+	color: #333;
+}
+
+/*
+ * HEADER STYLES
+ */
+#header {
+	background: #fff url(../images/header-right.png) no-repeat scroll right top;
+	width: 100%;
+	height: 100px;
+}
+
+#name-and-company {
+	background: transparent url(../images/header-left.png) no-repeat top left;
+	width: 100%;
+	height: 100px;
+	top: 0px;
+	left: 0px;
+}
+
+#site-name {
+	background: transparent url(../images/header-title-left.png) no-repeat scroll center center;
+	height: 100px;
+	width: 345px;
+}
+
+#site-name a, #site-name a:hover {
+	height: 60px;
+	width: 190px;
+}
+
+#company-name a, #site-name a:hover {
+	height: 60px;
+	width: 190px;
+}
+
+
+/*
+ * TEXT FORMATTING STYLES
+ */
+h1 {
+	font-size: 1.4em;
+	padding: 12px 0 5px 0;
+	line-height: 125%;
+	color: #002E62;
+	border-bottom: 1px solid #BAD9EC;
+}
+
+h2 {
+	font-size: 1.2em;
+	padding: 10px 0 2px 0;
+	color: #002E62;
+}
+
+h3 {
+	font-size: 1em;
+	padding: 8px 0 5px 0;
+	color: #002E62;
+}
+
+h4 {
+	font-size: 1em;
+	padding-top: 8px;
+	color: #333;
+}
+
+h5 {
+	font-size: 1em;
+	padding-top: 6px;
+	color: #333;
+}
+
+/*
+ * LINK STYLES
+ */
+ 
+a:link, a:visited {
+	color: #333;
+	text-decoration: underline;
+}
+
+a:hover, a:focus {
+	color: #0093CF;
+	text-decoration: underline;
+}
+
+a:active, a.active { 
+	color: #0093CF;
+}
+  
+/*
+ * MENU STYLES
+ */
+#primary-navigation {
+	background: #fff url(../images/menu-stretch.png) repeat-x scroll 0 0;
+	height:29px;
+	margin:0;
+	padding:0;
+	position: relative;
+}
+
+#primary-left {
+	background: #002E62;
+	float: left;
+	height: 26px;
+	line-height: normal;
+	padding: 3px 0 0;
+	position: relative;
+}
+
+#primary-right {
+	background: #002E62;
+	float: right;
+	height: 26px;
+	line-height: normal;
+	padding: 3px 0 0;
+	position: relative;
+}
+
+#primary-left ul, #primary-right ul {
+	padding: 0 4px 0 4px;
+	margin: 2px 0 0 0;
+	list-style: none;
+}
+
+#primary-left li, #primary-right li {
+	display: inline;
+}
+
+#primary-left a, #primary-right a {
+	color: #ffffff;
+	display: block;
+	float: left;
+	font-weight:normal;
+	margin: 0 1px 0 1px;
+	padding: 7px 8px 4px 10px;
+	text-decoration: none;
+}
+
+#primary-left a:hover, #primary-right a:hover, .selected-menu {
+	background: #ffffff;
+	color:#002E62;
+	text-decoration: none;
+}
+
+#left-curve {
+	float: left;
+}
+
+#right-curve {
+	float: right;
+}
+
+/*
+ * CONTAINER STYLES
+ */
+#content-no-nav {
+	display: block;
+	margin: 0px 22px 20px 22px;
+	padding: 0;
+}
+ 
+#container {
+	margin: 0;
+	padding-bottom: 20px;
+	overflow:hidden;
+	background:#fff;
+}
+
+/*
+ * TABLE STYLES
+ */
+table {
+	border-spacing: 0;
+	margin: 0;
+	border-collapse: collapse;
+	color:#666;
+}
+
+th {
+	height: 19px;
+	text-align: left;
+	font-weight: bold;
+	margin: 0;
+	padding: 3px 6px 0 6px;
+	line-height: 19px;
+	color:#333;
+}
+ 
+.bordered-table {
+	border:1px solid #BAD9EC;
+}
+
+.bordered-table th {
+	background-image: url(../images/table-header-background.png);
+	background-repeat: repeat-x;
+	white-space: nowrap;
+	border-bottom: 1px solid #BAD9EC;
+}
+
+td {
+	margin: 0;
+	padding: 4px 6px 4px 6px;
+	vertical-align: top;
+}
+
+td.table-icon {
+	padding-top: 2px;
+	padding-bottom: 1px;
+}
+
+.sublevel1-odd {
+	background:#fff;
+}
+ 
+.sublevel1-even {
+	background:#E8F6FF;
+}
+
+.two-tables {
+	width:100%;
+}
+
+.two-tables .left {
+	float:left;
+}
+
+.two-tables .right {
+	float:right;
+}
+
+/*
+ * FOOTER STYLES
+ */
+#footer-wrapper {
+	clear: both;
+	margin: 0;
+	background-image: url(../images/footer-stretch.png);
+	background-repeat: repeat-x;
+	height: 29px;
+	width: 100%;
+}
+
+#footer-left, #footer-right {
+	margin: 0;
+	font-size: 85%;
+	padding: 1em;
+	height: 29px;
+    color: #bbb;
+}
+
+#footer-left {
+	text-align: left;
+	background-image: url(../images/footer-left.png);
+	background-repeat: no-repeat;
+	position: relative;
+	left: 0;
+	float: left;
+}
+
+#footer-right {
+	text-align: right;
+	background-image: url(../images/footer-right.png);
+	background-repeat: no-repeat;
+	background-position: top right;
+	position: relative;
+	right: 0;
+	float: right;
+}
+
+#footer-left a, #footer-right a {
+    color: #999;
+    text-decoration:none;
+}
diff --git a/solution/greenpages.web/src/main/webapp/styles/print.css b/solution/greenpages.web/src/main/webapp/styles/print.css
new file mode 100644
index 0000000..f325cfc
--- /dev/null
+++ b/solution/greenpages.web/src/main/webapp/styles/print.css
@@ -0,0 +1,46 @@
+/* White background, black text, arial font, decent font size */
+body {
+	background-color: #fff;
+	color: #000;
+	font-family: Arial, Helvetica, "Bitstream Vera Sans", sans-serif;
+	font-size: 10pt;
+	width: 100%;
+}
+
+/* Change the layout to remove columns */
+html body {
+	background: transparent;
+	width: auto;
+}
+
+#main,#container {
+	width: 100%;
+}
+
+#page {
+	margin: 0;
+	width: 90%;
+}
+
+#content {
+	margin: 0;
+	overflow: visible;
+}
+
+/* Hide header and nav elements */
+#header,#primary-navigation,#secondary-navigation,#footer-wrapper {
+	visibility: hidden;
+	display: none;
+}
+
+/* Style links */
+a:link,a:visited {
+	color: #520;
+	background: transparent;
+	text-decoration: underline !important;
+}
+
+/* Remove table header graphic */
+.bordered-table th {
+	background-image: none;
+}
\ No newline at end of file
diff --git a/solution/greenpages.web/src/test/java/greenpages/web/GreenPagesSpringContextTests.java b/solution/greenpages.web/src/test/java/greenpages/web/GreenPagesSpringContextTests.java
new file mode 100644
index 0000000..dd3086e
--- /dev/null
+++ b/solution/greenpages.web/src/test/java/greenpages/web/GreenPagesSpringContextTests.java
@@ -0,0 +1,54 @@
+/*******************************************************************************
+ * Copyright (c) 2008, 2010 VMware Inc.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ *   VMware Inc. - initial contribution
+ *******************************************************************************/
+
+package greenpages.web;
+
+import static org.junit.Assert.assertEquals;
+import static org.junit.Assert.assertNotNull;
+import greenpages.Listing;
+import greenpages.web.GreenPagesController;
+
+import java.util.List;
+
+import org.junit.Test;
+import org.junit.runner.RunWith;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.test.context.ContextConfiguration;
+import org.springframework.test.context.TestExecutionListeners;
+import org.springframework.test.context.junit4.SpringJUnit4ClassRunner;
+import org.springframework.test.context.support.DependencyInjectionTestExecutionListener;
+
+@RunWith(SpringJUnit4ClassRunner.class)
+@ContextConfiguration(locations = { "classpath*:/META-INF/spring/module-context.xml", "file:src/main/webapp/WEB-INF/greenpages-servlet.xml", "classpath:/META-INF/spring/test-context.xml" })
+@TestExecutionListeners(value = DependencyInjectionTestExecutionListener.class)
+public class GreenPagesSpringContextTests {
+
+    @Autowired
+    private GreenPagesController controller;
+
+    @Test
+    public void search() {
+        List<Listing> results = this.controller.search("johnson");
+        assertNotNull(results);
+        assertEquals(1, results.size());
+
+        Listing listing = results.get(0);
+        assertNotNull(listing);
+        assertEquals("Johnson", listing.getLastName());
+    }
+
+    @Test
+    public void entry() {
+        Listing listing = this.controller.entry(1);
+        assertNotNull(listing);
+        assertEquals("Johnson", listing.getLastName());
+    }
+}
diff --git a/solution/greenpages.web/src/test/java/greenpages/web/TestDataPopulator.java b/solution/greenpages.web/src/test/java/greenpages/web/TestDataPopulator.java
new file mode 100644
index 0000000..945c19a
--- /dev/null
+++ b/solution/greenpages.web/src/test/java/greenpages/web/TestDataPopulator.java
@@ -0,0 +1,96 @@
+/*******************************************************************************
+ * Copyright (c) 2008, 2010 VMware Inc.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ *   VMware Inc. - initial contribution
+ *******************************************************************************/
+
+package greenpages.web;
+
+import java.io.BufferedReader;
+import java.io.BufferedWriter;
+import java.io.IOException;
+import java.io.InputStream;
+import java.io.InputStreamReader;
+import java.io.StringWriter;
+import java.sql.Connection;
+import java.sql.SQLException;
+import java.sql.Statement;
+
+import javax.sql.DataSource;
+
+import org.springframework.core.io.Resource;
+
+/**
+ * A class that populates a datasource with test data
+ */
+public class TestDataPopulator {
+
+    private final DataSource dataSource;
+
+    private final Resource testDataLocation;
+
+    public TestDataPopulator(DataSource dataSource, Resource testDataLocation) {
+        this.dataSource = dataSource;
+        this.testDataLocation = testDataLocation;
+    }
+
+    public void populate() {
+        Connection connection = null;
+        try {
+            connection = dataSource.getConnection();
+            insertTestData(connection);
+        } catch (SQLException e) {
+            throw new RuntimeException("SQL exception occurred acquiring connection", e);
+        } finally {
+            if (connection != null) {
+                try {
+                    connection.close();
+                } catch (SQLException e) {
+                }
+            }
+        }
+    }
+
+    private void insertTestData(Connection connection) {
+        try {
+            String sql = parseSqlIn(testDataLocation);
+            executeSql(sql, connection);
+        } catch (IOException e) {
+            throw new RuntimeException("I/O exception occurred accessing the test data file", e);
+        } catch (SQLException e) {
+            throw new RuntimeException("SQL exception occurred loading test data", e);
+        }
+    }
+
+    private String parseSqlIn(Resource resource) throws IOException {
+        InputStream is = null;
+        try {
+            is = resource.getInputStream();
+            BufferedReader reader = new BufferedReader(new InputStreamReader(is));
+
+            StringWriter sw = new StringWriter();
+            BufferedWriter writer = new BufferedWriter(sw);
+
+            for (int c = reader.read(); c != -1; c = reader.read()) {
+                writer.write(c);
+            }
+            writer.flush();
+            return sw.toString();
+
+        } finally {
+            if (is != null) {
+                is.close();
+            }
+        }
+    }
+
+    private void executeSql(String sql, Connection connection) throws SQLException {
+        Statement statement = connection.createStatement();
+        statement.execute(sql);
+    }
+}
diff --git a/solution/greenpages.web/src/test/resources/META-INF/spring/test-context.xml b/solution/greenpages.web/src/test/resources/META-INF/spring/test-context.xml
new file mode 100644
index 0000000..c1d14b4
--- /dev/null
+++ b/solution/greenpages.web/src/test/resources/META-INF/spring/test-context.xml
@@ -0,0 +1,17 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<beans xmlns="http://www.springframework.org/schema/beans"
+	xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+	xmlns:p="http://www.springframework.org/schema/p"
+	xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd">
+
+	<bean id="dataSource" class="org.apache.commons.dbcp.BasicDataSource" 
+	 		p:driverClassName="org.h2.Driver" p:url="jdbc:h2:.~/greenpages-db/greenpages"
+	 		p:username="greenpages" p:password="pass"
+	 		init-method="createDataSource" destroy-method="close"/>
+
+	<bean class="greenpages.web.TestDataPopulator" init-method="populate">
+		<constructor-arg ref="dataSource"/>
+		<constructor-arg value="file:../../db/db.sql"/>
+	</bean>
+
+</beans>
diff --git a/solution/greenpages.web/template.mf b/solution/greenpages.web/template.mf
new file mode 100644
index 0000000..b63162c
--- /dev/null
+++ b/solution/greenpages.web/template.mf
@@ -0,0 +1,24 @@
+Manifest-Version: 1.0
+Bundle-ManifestVersion: 2
+Bundle-Name: GreenPages Web
+Bundle-SymbolicName: greenpages.web
+Bundle-Version: 2.0
+Web-ContextPath: greenpages
+Import-Template: 
+ org.springframework.*;version="[3.0, 3.1)",
+ greenpages.*;version="[2.0, 2.1)"
+Import-Package: 
+ javax.servlet.jsp.jstl.core;version="[1.1.2,1.2.0)",
+ org.eclipse.virgo.web.dm;version="[2.0.0, 3.0.0)",
+ org.springframework.web.context;version="[3.0, 3.1)",
+ freemarker.cache;version="[2.3.15,2.3.15]"
+Import-Bundle: 
+ com.springsource.org.apache.taglibs.standard;version="[1.1.2,1.3)"
+Import-Library: 
+ org.springframework.spring;version="[3.0, 3.1)"
+Excluded-Exports: 
+ greenpages.tests,
+ greenpages.web
+Excluded-Imports: 
+ org.springframework.test.*,
+ org.junit.*
diff --git a/solution/greenpages/.classpath b/solution/greenpages/.classpath
new file mode 100644
index 0000000..a225f00
--- /dev/null
+++ b/solution/greenpages/.classpath
@@ -0,0 +1,6 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<classpath>
+	<classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER"/>
+	<classpathentry kind="con" path="org.maven.ide.eclipse.MAVEN2_CLASSPATH_CONTAINER"/>
+	<classpathentry kind="output" path="target/classes"/>
+</classpath>
diff --git a/solution/greenpages/.project b/solution/greenpages/.project
new file mode 100644
index 0000000..c04b5ad
--- /dev/null
+++ b/solution/greenpages/.project
@@ -0,0 +1,36 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<projectDescription>
+	<name>greenpages-solution</name>
+	<comment></comment>
+	<projects>
+	</projects>
+	<buildSpec>
+		<buildCommand>
+			<name>org.eclipse.jdt.core.javabuilder</name>
+			<arguments>
+			</arguments>
+		</buildCommand>
+		<buildCommand>
+			<name>org.eclipse.wst.common.project.facet.core.builder</name>
+			<arguments>
+			</arguments>
+		</buildCommand>
+		<buildCommand>
+			<name>org.springframework.ide.eclipse.core.springbuilder</name>
+			<arguments>
+			</arguments>
+		</buildCommand>
+		<buildCommand>
+			<name>org.maven.ide.eclipse.maven2Builder</name>
+			<arguments>
+			</arguments>
+		</buildCommand>
+	</buildSpec>
+	<natures>
+		<nature>org.eclipse.jdt.core.javanature</nature>
+		<nature>org.maven.ide.eclipse.maven2Nature</nature>
+		<nature>com.springsource.server.ide.facet.core.parnature</nature>
+		<nature>org.springframework.ide.eclipse.core.springnature</nature>
+		<nature>org.eclipse.wst.common.project.facet.core.nature</nature>
+	</natures>
+</projectDescription>
diff --git a/solution/greenpages/.settings/com.springsource.server.ide.runtime.core.par.xml b/solution/greenpages/.settings/com.springsource.server.ide.runtime.core.par.xml
new file mode 100644
index 0000000..655afb3
--- /dev/null
+++ b/solution/greenpages/.settings/com.springsource.server.ide.runtime.core.par.xml
@@ -0,0 +1,7 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<com.springsource.server.ide.par:Par xmi:version="2.0" xmlns:xmi="http://www.omg.org/XMI" xmlns:com.springsource.server.ide.par="http:///com/springsource/server/ide/par.ecore">
+  <bundle symbolicName="greenpages.app-solution"/>
+  <bundle symbolicName="greenpages.db-solution"/>
+  <bundle symbolicName="greenpages.jpa-solution"/>
+  <bundle symbolicName="greenpages.web-solution"/>
+</com.springsource.server.ide.par:Par>
diff --git a/solution/greenpages/.settings/org.eclipse.wst.common.project.facet.core.xml b/solution/greenpages/.settings/org.eclipse.wst.common.project.facet.core.xml
new file mode 100644
index 0000000..f856a12
--- /dev/null
+++ b/solution/greenpages/.settings/org.eclipse.wst.common.project.facet.core.xml
@@ -0,0 +1,4 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<faceted-project>
+  <installed facet="com.springsource.server.par" version="1.0"/>
+</faceted-project>
diff --git a/solution/greenpages/.settings/org.maven.ide.eclipse.prefs b/solution/greenpages/.settings/org.maven.ide.eclipse.prefs
new file mode 100644
index 0000000..97f7bba
--- /dev/null
+++ b/solution/greenpages/.settings/org.maven.ide.eclipse.prefs
@@ -0,0 +1,9 @@
+#Tue Apr 21 16:53:20 BST 2009
+activeProfiles=
+eclipse.preferences.version=1
+fullBuildGoals=process-test-resources
+includeModules=false
+resolveWorkspaceProjects=true
+resourceFilterGoals=process-resources resources\:testResources
+skipCompilerPlugin=true
+version=1
diff --git a/solution/greenpages/.springBeans b/solution/greenpages/.springBeans
new file mode 100644
index 0000000..5d8d5a5
--- /dev/null
+++ b/solution/greenpages/.springBeans
@@ -0,0 +1,13 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<beansProjectDescription>
+	<version>1</version>
+	<pluginVersion><![CDATA[2.2.0.v200809261800]]></pluginVersion>
+	<configSuffixes>
+		<configSuffix><![CDATA[xml]]></configSuffix>
+	</configSuffixes>
+	<enableImports><![CDATA[false]]></enableImports>
+	<configs>
+	</configs>
+	<configSets>
+	</configSets>
+</beansProjectDescription>
diff --git a/solution/greenpages/META-INF/MANIFEST.MF b/solution/greenpages/META-INF/MANIFEST.MF
new file mode 100644
index 0000000..4198c7e
--- /dev/null
+++ b/solution/greenpages/META-INF/MANIFEST.MF
@@ -0,0 +1,5 @@
+Manifest-Version: 1.0

+Application-SymbolicName: greenpages

+Application-Version: 2.0.0

+Application-Name: Greenpages PAR

+

diff --git a/solution/greenpages/pom.xml b/solution/greenpages/pom.xml
new file mode 100644
index 0000000..134a0f5
--- /dev/null
+++ b/solution/greenpages/pom.xml
@@ -0,0 +1,82 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<project
+		xmlns="http://maven.apache.org/POM/4.0.0"
+		xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+		xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
+
+	<parent>
+		<groupId>com.springsource.dmserver</groupId>
+		<artifactId>greenpages.parent-solution</artifactId>
+		<version>2.0.1.SNAPSHOT</version>
+		<relativePath>../parent</relativePath>
+	</parent>
+
+	<modelVersion>4.0.0</modelVersion>
+	<groupId>com.springsource.dmserver</groupId>
+	<artifactId>greenpages-solution</artifactId>
+	<name>GreenPages PAR</name>
+	<description>GreenPages PAR</description>
+	<packaging>par</packaging>
+
+	<dependencies>
+		<dependency>
+			<groupId>com.springsource.dmserver</groupId>
+			<artifactId>greenpages.app-solution</artifactId>
+			<version>${project.version}</version>
+		</dependency>
+		<dependency>
+			<groupId>com.springsource.dmserver</groupId>
+			<artifactId>greenpages.jpa-solution</artifactId>
+			<version>${project.version}</version>
+		</dependency>
+		<dependency>
+			<groupId>com.springsource.dmserver</groupId>
+			<artifactId>greenpages.db-solution</artifactId>
+			<version>${project.version}</version>
+		</dependency>
+		<dependency>
+			<groupId>com.springsource.dmserver</groupId>
+			<artifactId>greenpages.web-solution</artifactId>
+			<version>${project.version}</version>
+			<type>war</type>
+		</dependency>
+		<!-- Required for the web bundle as dependancies are not propagated up from war build types -->
+		<dependency>
+			<groupId>org.freemarker</groupId>
+			<artifactId>com.springsource.freemarker</artifactId>
+			<scope>provided</scope>
+		</dependency>
+	</dependencies>
+
+	<build>
+		<plugins>
+			<plugin>
+				<groupId>org.apache.maven.plugins</groupId>
+				<artifactId>maven-par-plugin</artifactId>
+				<version>1.0.0.RELEASE</version>
+				<configuration>
+					<applicationSymbolicName>greenpages</applicationSymbolicName>
+				</configuration>
+			</plugin>
+			<plugin>
+				<groupId>org.apache.maven.plugins</groupId>
+				<artifactId>maven-dependency-plugin</artifactId>
+				<executions>
+					<execution>
+						<id>copy-dependencies</id>
+						<phase>package</phase>
+						<goals>
+							<goal>copy-dependencies</goal>
+						</goals>
+						<configuration>
+							<outputDirectory>${project.build.directory}/par-provided</outputDirectory>
+							<overWriteIfNewer>true</overWriteIfNewer>
+							<excludeGroupIds>com.springsource.dmserver,org.apache.log4j</excludeGroupIds>
+						</configuration>
+					</execution>
+				</executions>
+			</plugin>
+		</plugins>
+	</build>
+
+</project>
diff --git a/solution/parent/.classpath b/solution/parent/.classpath
new file mode 100644
index 0000000..473e0cf
--- /dev/null
+++ b/solution/parent/.classpath
@@ -0,0 +1,6 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<classpath>
+<classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER/org.eclipse.jdt.internal.debug.ui.launcher.StandardVMType/JavaSE-1.6"/>
+	<classpathentry kind="con" path="org.maven.ide.eclipse.MAVEN2_CLASSPATH_CONTAINER"/>
+	<classpathentry kind="output" path="target/classes"/>
+</classpath>
diff --git a/solution/parent/.project b/solution/parent/.project
new file mode 100644
index 0000000..537c91f
--- /dev/null
+++ b/solution/parent/.project
@@ -0,0 +1,23 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<projectDescription>
+	<name>greenpages.parent-solution</name>
+	<comment></comment>
+	<projects>
+	</projects>
+	<buildSpec>
+		<buildCommand>
+			<name>org.eclipse.jdt.core.javabuilder</name>
+			<arguments>
+			</arguments>
+		</buildCommand>
+		<buildCommand>
+			<name>org.maven.ide.eclipse.maven2Builder</name>
+			<arguments>
+			</arguments>
+		</buildCommand>
+	</buildSpec>
+	<natures>
+		<nature>org.eclipse.jdt.core.javanature</nature>
+		<nature>org.maven.ide.eclipse.maven2Nature</nature>
+	</natures>
+</projectDescription>
diff --git a/solution/parent/.settings/org.maven.ide.eclipse.prefs b/solution/parent/.settings/org.maven.ide.eclipse.prefs
new file mode 100644
index 0000000..980e36e
--- /dev/null
+++ b/solution/parent/.settings/org.maven.ide.eclipse.prefs
@@ -0,0 +1,9 @@
+#Tue Jun 23 10:37:10 BST 2009
+activeProfiles=
+eclipse.preferences.version=1
+fullBuildGoals=process-test-resources
+includeModules=false
+resolveWorkspaceProjects=true
+resourceFilterGoals=process-resources resources\:testResources
+skipCompilerPlugin=true
+version=1
diff --git a/solution/parent/pom.xml b/solution/parent/pom.xml
new file mode 100644
index 0000000..a018b20
--- /dev/null
+++ b/solution/parent/pom.xml
@@ -0,0 +1,212 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<project
+		xmlns="http://maven.apache.org/POM/4.0.0"
+		xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+		xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
+
+	<modelVersion>4.0.0</modelVersion>
+	<groupId>com.springsource.dmserver</groupId>
+	<artifactId>greenpages.parent-solution</artifactId>
+	<version>2.0.1.SNAPSHOT</version>
+	<name>greenpages.parent</name>
+	<packaging>pom</packaging>
+
+	<dependencyManagement>
+		<dependencies>
+			<dependency>
+			    <groupId>org.springframework</groupId>
+			    <artifactId>org.springframework.spring-library</artifactId>
+			    <type>libd</type>
+			    <version>3.0.0.M3</version>
+				<scope>provided</scope>
+			</dependency>
+			<dependency>
+			    <groupId>org.apache.commons</groupId>
+			    <artifactId>com.springsource.org.apache.commons.dbcp</artifactId>
+			    <version>1.2.2.osgi</version>
+				<scope>compile</scope>
+			</dependency>
+			<dependency>
+			    <groupId>com.h2database</groupId>
+			    <artifactId>com.springsource.org.h2</artifactId>
+			    <version>1.0.71</version>
+				<scope>compile</scope>
+			</dependency>
+			<dependency>
+			    <groupId>javax.persistence</groupId>
+			    <artifactId>com.springsource.javax.persistence</artifactId>
+			    <version>1.0.0</version>
+				<scope>compile</scope>
+			</dependency>
+			<dependency>
+			    <groupId>org.eclipse.persistence</groupId>
+			    <artifactId>com.springsource.org.eclipse.persistence</artifactId>
+			    <version>1.0.0</version>
+				<scope>compile</scope>
+			</dependency>
+			<dependency>
+			    <groupId>org.eclipse.persistence</groupId>
+			    <artifactId>com.springsource.org.eclipse.persistence.jpa</artifactId>
+			    <version>1.0.0</version>
+				<scope>compile</scope>
+			</dependency>
+			<dependency>
+			    <groupId>org.aspectj</groupId>
+			    <artifactId>org.aspectj-library</artifactId>
+			    <type>libd</type>
+			    <version>1.6.2.RELEASE</version>
+				<scope>provided</scope>
+			</dependency>
+			<dependency>
+			    <groupId>org.freemarker</groupId>
+			    <artifactId>com.springsource.freemarker</artifactId>
+			    <version>2.3.15</version>
+				<scope>compile</scope>
+			</dependency>
+			<dependency>
+				<groupId>org.junit</groupId>
+				<artifactId>com.springsource.org.junit</artifactId>
+				<version>4.5.0</version>
+				<scope>test</scope>
+			</dependency>
+			<dependency>
+				<groupId>org.springframework</groupId>
+				<artifactId>org.springframework.test</artifactId>
+			    <version>3.0.0.M3</version>
+				<scope>test</scope>
+			</dependency>
+			<dependency>
+				<groupId>org.springframework</groupId>
+				<artifactId>org.springframework.instrument</artifactId>
+			    <version>3.0.0.M3</version>
+				<scope>test</scope>
+			</dependency>
+			<dependency>
+				<groupId>org.springframework</groupId>
+				<artifactId>org.springframework.aspects</artifactId>
+			    <version>3.0.0.M3</version>
+				<scope>test</scope>
+			</dependency>
+			<dependency>
+				<groupId>javax.servlet</groupId>
+				<artifactId>com.springsource.javax.servlet</artifactId>
+				<version>2.5.0</version>
+				<scope>provided</scope>
+			</dependency>
+		</dependencies>
+	</dependencyManagement>
+
+	<repositories>
+		<repository>
+		    <id>com.springsource.repository.bundles.snapshot</id>
+		    <name>SpringSource Enterprise Bundle Repository - SpringSource Bundle Snapshot</name>
+			<url>http://repository.springsource.com/maven/bundles/snapshot</url>
+		</repository>
+		<repository>
+		    <id>com.springsource.repository.bundles.release</id>
+		    <name>SpringSource Enterprise Bundle Repository - SpringSource Bundle Releases</name>
+			<url>http://repository.springsource.com/maven/bundles/release</url>
+		</repository>
+		<repository>
+			<id>com.springsource.repository.bundle.external</id>
+			<name>SpringSource Enterprise Bundle Repository - External Bundle Releases</name>
+			<url>http://repository.springsource.com/maven/bundles/external</url>
+		</repository>
+		<repository>
+			<id>com.springsource.repository.bundle.milestone</id>
+		    <name>SpringSource Enterprise Bundle Repository - SpringSource Bundle Milestones</name>
+			<url>http://repository.springsource.com/maven/bundles/milestone</url>
+		</repository>
+
+		<repository>
+		    <id>com.springsource.repository.libraries.release</id>
+		    <name>SpringSource Enterprise Bundle Repository - SpringSource Library Releases</name>
+		    <url>http://repository.springsource.com/maven/libraries/release</url>
+		</repository>
+		<repository>
+		    <id>com.springsource.repository.libraries.external</id>
+		    <name>SpringSource Enterprise Bundle Repository - External Library Releases</name>
+		    <url>http://repository.springsource.com/maven/libraries/external</url>
+		</repository>
+		<repository>
+		    <id>com.springsource.repository.libraries.milestone</id>
+		    <name>SpringSource Enterprise Bundle Repository - Milestone Library Releases</name>
+		    <url>http://repository.springsource.com/maven/libraries/milestone</url>
+		</repository>
+		<repository>
+		    <id>com.springsource.repository.libraries.snapshot</id>
+		    <name>SpringSource Enterprise Bundle Repository - Snapshot Library Releases</name>
+		    <url>http://repository.springsource.com/maven/libraries/snapshot</url>
+		</repository>
+	</repositories>
+
+	<properties>
+		<maven.test.failure.ignore>true</maven.test.failure.ignore>
+	</properties>
+
+	<pluginRepositories>
+		<pluginRepository>
+			<id>com.springsource.repository.bundles.release</id>
+			<name>SpringSource Enterprise Bundle Repository - Releases</name>
+			<url>http://repository.springsource.com/maven/bundles/release</url>
+		</pluginRepository>
+		<pluginRepository>
+			<id>com.springsource.repository.bundles.milestone</id>
+			<name>SpringSource Enterprise Bundle Repository - Milestone</name>
+			<url>http://repository.springsource.com/maven/bundles/milestone</url>
+		</pluginRepository>
+	</pluginRepositories>
+
+	<build>
+		<plugins>
+			<plugin>
+				<groupId>com.springsource.bundlor</groupId>
+				<artifactId>com.springsource.bundlor.maven</artifactId>
+				<version>1.0.0.M2</version>
+				<executions>
+					<execution>
+						<id>bundlor</id>
+						<goals>
+							<goal>transform</goal>
+						</goals>
+						<phase>package</phase>
+					</execution>
+				</executions>
+			</plugin>
+			<plugin>
+				<groupId>org.apache.maven.plugins</groupId>
+				<artifactId>maven-compiler-plugin</artifactId>
+				<configuration>
+					<source>1.5</source>
+					<target>1.5</target>
+				</configuration>
+			</plugin>
+			<plugin>
+				<groupId>org.apache.maven.plugins</groupId>
+				<artifactId>maven-jar-plugin</artifactId>
+				<configuration>
+					<archive>
+						<manifestFile>
+							src/main/resources/META-INF/MANIFEST.MF
+						</manifestFile>
+					</archive>
+				</configuration>
+			</plugin>
+			<plugin>
+				<groupId>org.apache.maven.plugins</groupId>
+				<artifactId>maven-surefire-plugin</artifactId>
+				<configuration>
+					<includes>
+						<include>**/*Tests.java</include>
+					</includes>
+					<excludes>
+						<exclude>**/Abstract*.java</exclude>
+					</excludes>
+					<junitArtifactName>org.junit:com.springsource.org.junit</junitArtifactName>
+					<argLine>-javaagent:${user.home}/.m2/repository/org/springframework/org.springframework.instrument/3.0.0.M3/org.springframework.instrument-3.0.0.M3.jar</argLine>
+				</configuration>
+			</plugin>
+		</plugins>
+	</build>
+
+</project>
diff --git a/solution/pom.xml b/solution/pom.xml
new file mode 100644
index 0000000..fe36de6
--- /dev/null
+++ b/solution/pom.xml
@@ -0,0 +1,21 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<project
+		xmlns="http://maven.apache.org/POM/4.0.0"
+		xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+		xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
+
+	<modelVersion>4.0.0</modelVersion>
+	<groupId>com.springsource.dmserver</groupId>
+	<artifactId>greenpages-top-level-solution</artifactId>
+	<version>2.0.1.SNAPSHOT</version>
+    <name>GreenPages App Build</name>
+	<packaging>pom</packaging>
+	<modules>
+		<module>parent</module>
+		<module>greenpages.db</module>
+		<module>greenpages.app</module>
+		<module>greenpages.jpa</module>
+		<module>greenpages.web</module>
+		<module>greenpages</module>
+	</modules>
+</project>
diff --git a/start/greenpages.app/.classpath b/start/greenpages.app/.classpath
new file mode 100644
index 0000000..fb2f7c1
--- /dev/null
+++ b/start/greenpages.app/.classpath
@@ -0,0 +1,8 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<classpath>
+	<classpathentry kind="src" output="target/classes" path="src/main/java"/>
+	<classpathentry excluding="**" kind="src" output="target/classes" path="src/main/resources"/>
+	<classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER/org.eclipse.jdt.internal.debug.ui.launcher.StandardVMType/JavaSE-1.6"/>
+	<classpathentry kind="con" path="org.maven.ide.eclipse.MAVEN2_CLASSPATH_CONTAINER"/>
+	<classpathentry kind="output" path="target/classes"/>
+</classpath>
diff --git a/start/greenpages.app/.project b/start/greenpages.app/.project
new file mode 100644
index 0000000..c5e2b47
--- /dev/null
+++ b/start/greenpages.app/.project
@@ -0,0 +1,36 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<projectDescription>
+	<name>greenpages.app</name>
+	<comment></comment>
+	<projects>
+	</projects>
+	<buildSpec>
+		<buildCommand>
+			<name>org.eclipse.wst.common.project.facet.core.builder</name>
+			<arguments>
+			</arguments>
+		</buildCommand>
+		<buildCommand>
+			<name>org.eclipse.jdt.core.javabuilder</name>
+			<arguments>
+			</arguments>
+		</buildCommand>
+		<buildCommand>
+			<name>org.springframework.ide.eclipse.core.springbuilder</name>
+			<arguments>
+			</arguments>
+		</buildCommand>
+		<buildCommand>
+			<name>org.maven.ide.eclipse.maven2Builder</name>
+			<arguments>
+			</arguments>
+		</buildCommand>
+	</buildSpec>
+	<natures>
+		<nature>org.maven.ide.eclipse.maven2Nature</nature>
+		<nature>org.eclipse.jdt.core.javanature</nature>
+		<nature>org.springframework.ide.eclipse.core.springnature</nature>
+		<nature>org.eclipse.wst.common.project.facet.core.nature</nature>
+		<nature>com.springsource.server.ide.facet.core.bundlenature</nature>
+	</natures>
+</projectDescription>
diff --git a/start/greenpages.app/.settings/org.eclipse.wst.common.project.facet.core.xml b/start/greenpages.app/.settings/org.eclipse.wst.common.project.facet.core.xml
new file mode 100644
index 0000000..7f43a0b
--- /dev/null
+++ b/start/greenpages.app/.settings/org.eclipse.wst.common.project.facet.core.xml
@@ -0,0 +1,6 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<faceted-project>
+  <installed facet="com.springsource.server.bundle" version="1.0"/>
+  <installed facet="jst.java" version="6.0"/>
+  <installed facet="jst.utility" version="1.0"/>
+</faceted-project>
diff --git a/start/greenpages.app/.settings/org.maven.ide.eclipse.prefs b/start/greenpages.app/.settings/org.maven.ide.eclipse.prefs
new file mode 100644
index 0000000..36f8d7b
--- /dev/null
+++ b/start/greenpages.app/.settings/org.maven.ide.eclipse.prefs
@@ -0,0 +1,9 @@
+#Tue Apr 21 16:53:30 BST 2009
+activeProfiles=
+eclipse.preferences.version=1
+fullBuildGoals=process-test-resources
+includeModules=false
+resolveWorkspaceProjects=true
+resourceFilterGoals=process-resources resources\:testResources
+skipCompilerPlugin=true
+version=1
diff --git a/start/greenpages.app/.springBeans b/start/greenpages.app/.springBeans
new file mode 100644
index 0000000..4cdca85
--- /dev/null
+++ b/start/greenpages.app/.springBeans
@@ -0,0 +1,15 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<beansProjectDescription>
+	<version>1</version>
+	<pluginVersion><![CDATA[2.2.2.v200901262210]]></pluginVersion>
+	<configSuffixes>
+		<configSuffix><![CDATA[xml]]></configSuffix>
+	</configSuffixes>
+	<enableImports><![CDATA[false]]></enableImports>
+	<configs>
+		<config>src/main/resources/META-INF/spring/module-context.xml</config>
+		<config>src/main/resources/META-INF/spring/osgi-context.xml</config>
+	</configs>
+	<configSets>
+	</configSets>
+</beansProjectDescription>
diff --git a/start/greenpages.app/pom.xml b/start/greenpages.app/pom.xml
new file mode 100644
index 0000000..0d5b078
--- /dev/null
+++ b/start/greenpages.app/pom.xml
@@ -0,0 +1,32 @@
+<?xml version="1.0" encoding="UTF-8"?>

+<project

+		xmlns="http://maven.apache.org/POM/4.0.0"

+		xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"

+		xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">

+

+	<parent>

+		<groupId>com.springsource.dmserver</groupId>

+		<artifactId>greenpages.parent</artifactId>

+		<version>2.0.1.SNAPSHOT</version>

+		<relativePath>../parent</relativePath>

+	</parent>

+

+	<modelVersion>4.0.0</modelVersion>

+	<groupId>com.springsource.dmserver</groupId>

+	<artifactId>greenpages.app</artifactId>

+	<name>greenpages.app</name>

+	<packaging>jar</packaging>

+

+	<dependencies>

+		<dependency>

+		    <groupId>org.springframework</groupId>

+		    <artifactId>org.springframework.spring-library</artifactId>

+			<type>libd</type>

+		</dependency>

+		<dependency>

+			<groupId>org.junit</groupId>

+			<artifactId>com.springsource.org.junit</artifactId>

+		</dependency>

+	</dependencies>

+

+</project>
\ No newline at end of file
diff --git a/start/greenpages.app/src/main/java/greenpages/Directory.java b/start/greenpages.app/src/main/java/greenpages/Directory.java
new file mode 100644
index 0000000..08ddb9e
--- /dev/null
+++ b/start/greenpages.app/src/main/java/greenpages/Directory.java
@@ -0,0 +1,43 @@
+/*******************************************************************************
+ * Copyright (c) 2008, 2010 VMware Inc.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ *   VMware Inc. - initial contribution
+ *******************************************************************************/
+
+package greenpages;
+
+import java.util.List;
+
+/**
+ * Main business interface for the GreenPages application.
+ * 
+ * <p>
+ * Using this interface you can {@link #search(String) search} the directory for a {@link Listing} and you can access a
+ * <code>Listing</code> {@link #findListing(int) by ID}.
+ * 
+ * @see Listing
+ */
+public interface Directory {
+
+    /**
+     * Searches the directory for all {@link Listing Listings} that match the supplied term. Matching is done against
+     * the {@link Listing#getLastName() last name} of all known <code>Listings</code>.
+     * 
+     * @param term the search criteria.
+     * @return the search results or an empty {@link List} if no matches are found.
+     */
+    List<Listing> search(String term);
+
+    /**
+     * Finds the {@link Listing} with the supplied ID.
+     * 
+     * @param id the ID of the <code>Listing</code>
+     * @return the <code>Listing</code> or <code>null</code> if no match is found.
+     */
+    Listing findListing(int id);
+}
diff --git a/start/greenpages.app/src/main/java/greenpages/Listing.java b/start/greenpages.app/src/main/java/greenpages/Listing.java
new file mode 100644
index 0000000..65e1c0e
--- /dev/null
+++ b/start/greenpages.app/src/main/java/greenpages/Listing.java
@@ -0,0 +1,28 @@
+/*******************************************************************************
+ * Copyright (c) 2008, 2010 VMware Inc.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ *   VMware Inc. - initial contribution
+ *******************************************************************************/
+
+package greenpages;
+
+/**
+ * Represents a listing in the GreenPages {@link Directory}.
+ * 
+ * @see Directory
+ */
+public interface Listing {
+
+    Integer getListingNumber();
+
+    String getFirstName();
+
+    String getLastName();
+
+    String getEmailAddress();
+}
diff --git a/start/greenpages.app/src/main/java/greenpages/internal/DirectoryImpl.java b/start/greenpages.app/src/main/java/greenpages/internal/DirectoryImpl.java
new file mode 100644
index 0000000..b39904c
--- /dev/null
+++ b/start/greenpages.app/src/main/java/greenpages/internal/DirectoryImpl.java
@@ -0,0 +1,59 @@
+/*******************************************************************************
+ * Copyright (c) 2008, 2010 VMware Inc.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ *   VMware Inc. - initial contribution
+ *******************************************************************************/
+
+package greenpages.internal;
+
+import java.util.Collections;
+import java.util.List;
+
+import greenpages.Directory;
+import greenpages.Listing;
+
+/**
+ * Stub implementation of {@link Directory} that allows for simple testing without a database.
+ *
+ * Uses Spring 2.* component scanning to find this class and create a bean. The name for this bean
+ * is extracted from the {@link Component} annotation.
+ */
+
+public class DirectoryImpl implements Directory {
+
+    private static final Listing ANDY_WILKINSON = new ImmutableListing(1, "Andy", "Wilkinson", "andy.wilkinson@springsource.com");
+
+    /**
+     * {@inheritDoc}
+     * 
+     * Stub implementation will match only for term '<code>johnson</code>'.
+     */
+    public List<Listing> search(String term) {
+        if (ANDY_WILKINSON.getLastName().equalsIgnoreCase(term)) {
+            Listing l = ANDY_WILKINSON;
+
+            return Collections.singletonList(l);
+        } else {
+            return Collections.emptyList();
+        }
+    }
+
+    /**
+     * {@inheritDoc}
+     * 
+     * Stub implementation will return a {@link Listing} for ID 1.
+     */
+    public Listing findListing(int id) {
+        if (id == ANDY_WILKINSON.getListingNumber()) {
+            return ANDY_WILKINSON;
+        } else {
+            return null;
+        }
+    }
+
+}
diff --git a/start/greenpages.app/src/main/java/greenpages/internal/ImmutableListing.java b/start/greenpages.app/src/main/java/greenpages/internal/ImmutableListing.java
new file mode 100644
index 0000000..b15494c
--- /dev/null
+++ b/start/greenpages.app/src/main/java/greenpages/internal/ImmutableListing.java
@@ -0,0 +1,50 @@
+/*******************************************************************************
+ * Copyright (c) 2008, 2010 VMware Inc.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ *   VMware Inc. - initial contribution
+ *******************************************************************************/
+
+package greenpages.internal;
+
+import greenpages.Listing;
+
+final class ImmutableListing implements Listing {
+
+	private final Integer listingNumber;
+	
+	private final String  firstName;
+	
+	private final String lastName;
+	
+	private final String  emailAddress;
+	
+	public ImmutableListing(int listingNumber, String firstName,String lastName, String emailAddress) {
+		
+		this.listingNumber = listingNumber;
+		this.firstName = firstName;
+		this.lastName = lastName;
+		this.emailAddress = emailAddress;
+	}
+	
+	public Integer getListingNumber() {
+		return listingNumber;
+	}
+	
+	public String getFirstName() {
+		return firstName;
+	}
+	
+	public String getLastName() {
+		return lastName;
+	}
+	
+	public String getEmailAddress() {
+		return emailAddress;
+	}
+	
+}
diff --git a/start/greenpages.app/src/main/resources/META-INF/MANIFEST.MF b/start/greenpages.app/src/main/resources/META-INF/MANIFEST.MF
new file mode 100644
index 0000000..43db230
--- /dev/null
+++ b/start/greenpages.app/src/main/resources/META-INF/MANIFEST.MF
@@ -0,0 +1,11 @@
+Manifest-Version: 1.0

+Export-Package: greenpages;version="2.0",greenpages.internal;version="

+ 2.0";uses:="greenpages"

+Bundle-Vendor: SpringSource Inc.

+Bundle-Version: 2.0

+Tool: Bundlor 1.0.0.BUILD-20090616142719

+Bundle-Name: GreenPages Service

+Bundle-ManifestVersion: 2

+Bundle-SymbolicName: greenpages

+Import-Package: org.springframework.stereotype;version="[3.0, 3.1)"

+

diff --git a/start/greenpages.app/src/main/resources/META-INF/spring/module-context.xml b/start/greenpages.app/src/main/resources/META-INF/spring/module-context.xml
new file mode 100644
index 0000000..0c595e9
--- /dev/null
+++ b/start/greenpages.app/src/main/resources/META-INF/spring/module-context.xml
@@ -0,0 +1,11 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<beans xmlns="http://www.springframework.org/schema/beans"
+	xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+	xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd
+		http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context.xsd"
+	xmlns:context="http://www.springframework.org/schema/context">
+

+	<!--  enables classpath component scanning for this module -->
+	

+

+</beans>
diff --git a/start/greenpages.app/src/main/resources/META-INF/spring/osgi-context.xml b/start/greenpages.app/src/main/resources/META-INF/spring/osgi-context.xml
new file mode 100644
index 0000000..7cc7faa
--- /dev/null
+++ b/start/greenpages.app/src/main/resources/META-INF/spring/osgi-context.xml
@@ -0,0 +1,10 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<beans xmlns="http://www.springframework.org/schema/beans"
+	xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+	xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd
+		http://www.springframework.org/schema/osgi http://www.springframework.org/schema/osgi/spring-osgi.xsd"
+	xmlns:osgi="http://www.springframework.org/schema/osgi">
+
+
+
+</beans>
diff --git a/start/greenpages.app/template.mf b/start/greenpages.app/template.mf
new file mode 100644
index 0000000..abd59e6
--- /dev/null
+++ b/start/greenpages.app/template.mf
@@ -0,0 +1,8 @@
+Manifest-Version: 1.0
+Bundle-ManifestVersion: 2
+Bundle-Name: GreenPages Service
+Bundle-SymbolicName: greenpages
+Bundle-Vendor: SpringSource Inc.
+Bundle-Version: 2.0
+Import-Template: 
+ org.springframework.*;version="[3.0, 3.1)"
diff --git a/start/greenpages.jpa/.classpath b/start/greenpages.jpa/.classpath
new file mode 100644
index 0000000..7c3d14f
--- /dev/null
+++ b/start/greenpages.jpa/.classpath
@@ -0,0 +1,10 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<classpath>
+	<classpathentry kind="src" output="target/classes" path="src/main/java"/>
+	<classpathentry excluding="**" kind="src" output="target/classes" path="src/main/resources"/>
+	<classpathentry kind="src" output="target/test-classes" path="src/test/java"/>
+	<classpathentry excluding="**" kind="src" output="target/test-classes" path="src/test/resources"/>
+	<classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER/org.eclipse.jdt.internal.debug.ui.launcher.StandardVMType/JavaSE-1.6"/>
+	<classpathentry kind="con" path="org.maven.ide.eclipse.MAVEN2_CLASSPATH_CONTAINER"/>
+	<classpathentry kind="output" path="target/classes"/>
+</classpath>
diff --git a/start/greenpages.jpa/.project b/start/greenpages.jpa/.project
new file mode 100644
index 0000000..e342065
--- /dev/null
+++ b/start/greenpages.jpa/.project
@@ -0,0 +1,37 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<projectDescription>
+	<name>greenpages.jpa</name>
+	<comment></comment>
+	<projects>
+		<project>greenpages.app</project>
+	</projects>
+	<buildSpec>
+		<buildCommand>
+			<name>org.eclipse.wst.common.project.facet.core.builder</name>
+			<arguments>
+			</arguments>
+		</buildCommand>
+		<buildCommand>
+			<name>org.eclipse.jdt.core.javabuilder</name>
+			<arguments>
+			</arguments>
+		</buildCommand>
+		<buildCommand>
+			<name>org.springframework.ide.eclipse.core.springbuilder</name>
+			<arguments>
+			</arguments>
+		</buildCommand>
+		<buildCommand>
+			<name>org.maven.ide.eclipse.maven2Builder</name>
+			<arguments>
+			</arguments>
+		</buildCommand>
+	</buildSpec>
+	<natures>
+		<nature>org.maven.ide.eclipse.maven2Nature</nature>
+		<nature>org.eclipse.jdt.core.javanature</nature>
+		<nature>org.springframework.ide.eclipse.core.springnature</nature>
+		<nature>org.eclipse.wst.common.project.facet.core.nature</nature>
+		<nature>com.springsource.server.ide.facet.core.bundlenature</nature>
+	</natures>
+</projectDescription>
diff --git a/start/greenpages.jpa/.settings/JpaDirectorySpringContextTests.launch b/start/greenpages.jpa/.settings/JpaDirectorySpringContextTests.launch
new file mode 100644
index 0000000..267c841
--- /dev/null
+++ b/start/greenpages.jpa/.settings/JpaDirectorySpringContextTests.launch
@@ -0,0 +1,19 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<launchConfiguration type="org.eclipse.jdt.junit.launchconfig">
+<stringAttribute key="bad_container_name" value="/greenpages.jpa/.setting"/>
+<listAttribute key="org.eclipse.debug.core.MAPPED_RESOURCE_PATHS">
+<listEntry value="/greenpages.jpa/src/test/java/greenpages/jpa/JpaDirectorySpringContextTests.java"/>
+</listAttribute>
+<listAttribute key="org.eclipse.debug.core.MAPPED_RESOURCE_TYPES">
+<listEntry value="1"/>
+</listAttribute>
+<stringAttribute key="org.eclipse.jdt.junit.CONTAINER" value=""/>
+<booleanAttribute key="org.eclipse.jdt.junit.KEEPRUNNING_ATTR" value="false"/>
+<stringAttribute key="org.eclipse.jdt.junit.TESTNAME" value=""/>
+<stringAttribute key="org.eclipse.jdt.junit.TEST_KIND" value="org.eclipse.jdt.junit.loader.junit4"/>
+<stringAttribute key="org.eclipse.jdt.launching.CLASSPATH_PROVIDER" value="org.maven.ide.eclipse.launchconfig.classpathProvider"/>
+<stringAttribute key="org.eclipse.jdt.launching.MAIN_TYPE" value="greenpages.jpa.JpaDirectorySpringContextTests"/>
+<stringAttribute key="org.eclipse.jdt.launching.PROJECT_ATTR" value="greenpages.jpa"/>
+<stringAttribute key="org.eclipse.jdt.launching.SOURCE_PATH_PROVIDER" value="org.maven.ide.eclipse.launchconfig.sourcepathProvider"/>
+<stringAttribute key="org.eclipse.jdt.launching.VM_ARGUMENTS" value="-javaagent:${system_property:user.home}/.m2/repository/org/springframework/org.springframework.instrument/3.0.0.M3/org.springframework.instrument-3.0.0.M3.jar"/>
+</launchConfiguration>
diff --git a/start/greenpages.jpa/.settings/com.springsource.server.ide.jdt.core.xml b/start/greenpages.jpa/.settings/com.springsource.server.ide.jdt.core.xml
new file mode 100644
index 0000000..cdf435e
--- /dev/null
+++ b/start/greenpages.jpa/.settings/com.springsource.server.ide.jdt.core.xml
@@ -0,0 +1,533 @@
+<classpath>
+<classpathentry kind="lib" path="/opt/springsource-dm-server-1.0.2.RELEASE/repository/bundles/ext/com.springsource.javax.persistence-1.0.0.jar">
+	<attributes>
+		<attribute name="com.springsource.server.ide.jdt.core.CLASSPATH_ENTRY" value="true"/>
+	</attributes>
+	<accessrules>
+		<accessrule kind="accessible" pattern="javax/persistence/*"/>
+		<accessrule ignoreifbetter="true" kind="nonaccessible" pattern="**/*"/>
+	</accessrules>
+</classpathentry>
+<classpathentry kind="lib" path="/opt/springsource-dm-server-1.0.2.RELEASE/repository/bundles/ext/com.springsource.org.aopalliance-1.0.0.jar">
+	<attributes>
+		<attribute name="com.springsource.server.ide.jdt.core.CLASSPATH_ENTRY" value="true"/>
+	</attributes>
+	<accessrules>
+		<accessrule kind="accessible" pattern="org/aopalliance/aop/*"/>
+		<accessrule kind="accessible" pattern="org/aopalliance/intercept/*"/>
+		<accessrule ignoreifbetter="true" kind="nonaccessible" pattern="**/*"/>
+	</accessrules>
+</classpathentry>
+<classpathentry kind="lib" path="/opt/springsource-dm-server-1.0.2.RELEASE/repository/bundles/ext/com.springsource.org.aspectj.runtime-1.6.2.RELEASE.jar">
+	<attributes>
+		<attribute name="com.springsource.server.ide.jdt.core.CLASSPATH_ENTRY" value="true"/>
+	</attributes>
+	<accessrules>
+		<accessrule kind="accessible" pattern="org/aspectj/internal/lang/annotation/*"/>
+		<accessrule kind="accessible" pattern="org/aspectj/internal/lang/reflect/*"/>
+		<accessrule kind="accessible" pattern="org/aspectj/lang/*"/>
+		<accessrule kind="accessible" pattern="org/aspectj/lang/annotation/*"/>
+		<accessrule kind="accessible" pattern="org/aspectj/lang/internal/lang/*"/>
+		<accessrule kind="accessible" pattern="org/aspectj/lang/reflect/*"/>
+		<accessrule kind="accessible" pattern="org/aspectj/runtime/*"/>
+		<accessrule kind="accessible" pattern="org/aspectj/runtime/internal/*"/>
+		<accessrule kind="accessible" pattern="org/aspectj/runtime/internal/cflowstack/*"/>
+		<accessrule kind="accessible" pattern="org/aspectj/runtime/reflect/*"/>
+		<accessrule ignoreifbetter="true" kind="nonaccessible" pattern="**/*"/>
+	</accessrules>
+</classpathentry>
+<classpathentry kind="lib" path="/opt/springsource-dm-server-1.0.2.RELEASE/repository/bundles/usr/com.springsource.org.eclipse.persistence-1.0.0.jar" sourcepath="/Users/robharrop/dev/dmserver/greenpages/ivy-cache/repository/org.eclipse.persistence/com.springsource.org.eclipse.persistence/1.0.0/com.springsource.org.eclipse.persistence-sources-1.0.0.jar">
+	<attributes>
+		<attribute name="com.springsource.server.ide.jdt.core.CLASSPATH_ENTRY" value="true"/>
+	</attributes>
+	<accessrules>
+		<accessrule kind="accessible" pattern="org/eclipse/persistence/*"/>
+		<accessrule kind="accessible" pattern="org/eclipse/persistence/annotations/*"/>
+		<accessrule kind="accessible" pattern="org/eclipse/persistence/config/*"/>
+		<accessrule kind="accessible" pattern="org/eclipse/persistence/descriptors/*"/>
+		<accessrule kind="accessible" pattern="org/eclipse/persistence/descriptors/changetracking/*"/>
+		<accessrule kind="accessible" pattern="org/eclipse/persistence/descriptors/copying/*"/>
+		<accessrule kind="accessible" pattern="org/eclipse/persistence/descriptors/invalidation/*"/>
+		<accessrule kind="accessible" pattern="org/eclipse/persistence/eis/*"/>
+		<accessrule kind="accessible" pattern="org/eclipse/persistence/eis/adapters/jms/*"/>
+		<accessrule kind="accessible" pattern="org/eclipse/persistence/eis/adapters/xmlfile/*"/>
+		<accessrule kind="accessible" pattern="org/eclipse/persistence/eis/interactions/*"/>
+		<accessrule kind="accessible" pattern="org/eclipse/persistence/eis/mappings/*"/>
+		<accessrule kind="accessible" pattern="org/eclipse/persistence/exceptions/*"/>
+		<accessrule kind="accessible" pattern="org/eclipse/persistence/exceptions/i18n/*"/>
+		<accessrule kind="accessible" pattern="org/eclipse/persistence/expressions/*"/>
+		<accessrule kind="accessible" pattern="org/eclipse/persistence/expressions/spatial/*"/>
+		<accessrule kind="accessible" pattern="org/eclipse/persistence/history/*"/>
+		<accessrule kind="accessible" pattern="org/eclipse/persistence/indirection/*"/>
+		<accessrule kind="accessible" pattern="org/eclipse/persistence/internal/codegen/*"/>
+		<accessrule kind="accessible" pattern="org/eclipse/persistence/internal/databaseaccess/*"/>
+		<accessrule kind="accessible" pattern="org/eclipse/persistence/internal/descriptors/*"/>
+		<accessrule kind="accessible" pattern="org/eclipse/persistence/internal/descriptors/changetracking/*"/>
+		<accessrule kind="accessible" pattern="org/eclipse/persistence/internal/eis/adapters/jms/*"/>
+		<accessrule kind="accessible" pattern="org/eclipse/persistence/internal/eis/adapters/xmlfile/*"/>
+		<accessrule kind="accessible" pattern="org/eclipse/persistence/internal/eis/cobol/*"/>
+		<accessrule kind="accessible" pattern="org/eclipse/persistence/internal/eis/cobol/helper/*"/>
+		<accessrule kind="accessible" pattern="org/eclipse/persistence/internal/expressions/*"/>
+		<accessrule kind="accessible" pattern="org/eclipse/persistence/internal/helper/*"/>
+		<accessrule kind="accessible" pattern="org/eclipse/persistence/internal/helper/linkedlist/*"/>
+		<accessrule kind="accessible" pattern="org/eclipse/persistence/internal/history/*"/>
+		<accessrule kind="accessible" pattern="org/eclipse/persistence/internal/identitymaps/*"/>
+		<accessrule kind="accessible" pattern="org/eclipse/persistence/internal/indirection/*"/>
+		<accessrule kind="accessible" pattern="org/eclipse/persistence/internal/jpa/*"/>
+		<accessrule kind="accessible" pattern="org/eclipse/persistence/internal/jpa/deployment/*"/>
+		<accessrule kind="accessible" pattern="org/eclipse/persistence/internal/jpa/parsing/*"/>
+		<accessrule kind="accessible" pattern="org/eclipse/persistence/internal/jpa/parsing/jpql/*"/>
+		<accessrule kind="accessible" pattern="org/eclipse/persistence/internal/jpa/parsing/jpql/antlr/*"/>
+		<accessrule kind="accessible" pattern="org/eclipse/persistence/internal/localization/*"/>
+		<accessrule kind="accessible" pattern="org/eclipse/persistence/internal/localization/i18n/*"/>
+		<accessrule kind="accessible" pattern="org/eclipse/persistence/internal/oxm/*"/>
+		<accessrule kind="accessible" pattern="org/eclipse/persistence/internal/oxm/conversion/*"/>
+		<accessrule kind="accessible" pattern="org/eclipse/persistence/internal/oxm/documentpreservation/*"/>
+		<accessrule kind="accessible" pattern="org/eclipse/persistence/internal/oxm/record/*"/>
+		<accessrule kind="accessible" pattern="org/eclipse/persistence/internal/oxm/record/deferred/*"/>
+		<accessrule kind="accessible" pattern="org/eclipse/persistence/internal/oxm/schema/*"/>
+		<accessrule kind="accessible" pattern="org/eclipse/persistence/internal/oxm/schema/model/*"/>
+		<accessrule kind="accessible" pattern="org/eclipse/persistence/internal/queries/*"/>
+		<accessrule kind="accessible" pattern="org/eclipse/persistence/internal/security/*"/>
+		<accessrule kind="accessible" pattern="org/eclipse/persistence/internal/sequencing/*"/>
+		<accessrule kind="accessible" pattern="org/eclipse/persistence/internal/sessions/*"/>
+		<accessrule kind="accessible" pattern="org/eclipse/persistence/internal/sessions/coordination/*"/>
+		<accessrule kind="accessible" pattern="org/eclipse/persistence/internal/sessions/coordination/broadcast/*"/>
+		<accessrule kind="accessible" pattern="org/eclipse/persistence/internal/sessions/coordination/corba/*"/>
+		<accessrule kind="accessible" pattern="org/eclipse/persistence/internal/sessions/coordination/corba/sun/*"/>
+		<accessrule kind="accessible" pattern="org/eclipse/persistence/internal/sessions/coordination/jms/*"/>
+		<accessrule kind="accessible" pattern="org/eclipse/persistence/internal/sessions/coordination/rmi/*"/>
+		<accessrule kind="accessible" pattern="org/eclipse/persistence/internal/sessions/coordination/rmi/iiop/*"/>
+		<accessrule kind="accessible" pattern="org/eclipse/persistence/internal/sessions/factories/*"/>
+		<accessrule kind="accessible" pattern="org/eclipse/persistence/internal/sessions/factories/model/*"/>
+		<accessrule kind="accessible" pattern="org/eclipse/persistence/internal/sessions/factories/model/event/*"/>
+		<accessrule kind="accessible" pattern="org/eclipse/persistence/internal/sessions/factories/model/log/*"/>
+		<accessrule kind="accessible" pattern="org/eclipse/persistence/internal/sessions/factories/model/login/*"/>
+		<accessrule kind="accessible" pattern="org/eclipse/persistence/internal/sessions/factories/model/platform/*"/>
+		<accessrule kind="accessible" pattern="org/eclipse/persistence/internal/sessions/factories/model/pool/*"/>
+		<accessrule kind="accessible" pattern="org/eclipse/persistence/internal/sessions/factories/model/project/*"/>
+		<accessrule kind="accessible" pattern="org/eclipse/persistence/internal/sessions/factories/model/property/*"/>
+		<accessrule kind="accessible" pattern="org/eclipse/persistence/internal/sessions/factories/model/rcm/*"/>
+		<accessrule kind="accessible" pattern="org/eclipse/persistence/internal/sessions/factories/model/rcm/command/*"/>
+		<accessrule kind="accessible" pattern="org/eclipse/persistence/internal/sessions/factories/model/sequencing/*"/>
+		<accessrule kind="accessible" pattern="org/eclipse/persistence/internal/sessions/factories/model/session/*"/>
+		<accessrule kind="accessible" pattern="org/eclipse/persistence/internal/sessions/factories/model/transport/*"/>
+		<accessrule kind="accessible" pattern="org/eclipse/persistence/internal/sessions/factories/model/transport/discovery/*"/>
+		<accessrule kind="accessible" pattern="org/eclipse/persistence/internal/sessions/factories/model/transport/naming/*"/>
+		<accessrule kind="accessible" pattern="org/eclipse/persistence/internal/sessions/remote/*"/>
+		<accessrule kind="accessible" pattern="org/eclipse/persistence/internal/weaving/*"/>
+		<accessrule kind="accessible" pattern="org/eclipse/persistence/logging/*"/>
+		<accessrule kind="accessible" pattern="org/eclipse/persistence/mappings/*"/>
+		<accessrule kind="accessible" pattern="org/eclipse/persistence/mappings/converters/*"/>
+		<accessrule kind="accessible" pattern="org/eclipse/persistence/mappings/foundation/*"/>
+		<accessrule kind="accessible" pattern="org/eclipse/persistence/mappings/querykeys/*"/>
+		<accessrule kind="accessible" pattern="org/eclipse/persistence/mappings/structures/*"/>
+		<accessrule kind="accessible" pattern="org/eclipse/persistence/mappings/transformers/*"/>
+		<accessrule kind="accessible" pattern="org/eclipse/persistence/oxm/*"/>
+		<accessrule kind="accessible" pattern="org/eclipse/persistence/oxm/attachment/*"/>
+		<accessrule kind="accessible" pattern="org/eclipse/persistence/oxm/documentpreservation/*"/>
+		<accessrule kind="accessible" pattern="org/eclipse/persistence/oxm/mappings/*"/>
+		<accessrule kind="accessible" pattern="org/eclipse/persistence/oxm/mappings/converters/*"/>
+		<accessrule kind="accessible" pattern="org/eclipse/persistence/oxm/mappings/nullpolicy/*"/>
+		<accessrule kind="accessible" pattern="org/eclipse/persistence/oxm/platform/*"/>
+		<accessrule kind="accessible" pattern="org/eclipse/persistence/oxm/record/*"/>
+		<accessrule kind="accessible" pattern="org/eclipse/persistence/oxm/schema/*"/>
+		<accessrule kind="accessible" pattern="org/eclipse/persistence/oxm/sequenced/*"/>
+		<accessrule kind="accessible" pattern="org/eclipse/persistence/oxm/unmapped/*"/>
+		<accessrule kind="accessible" pattern="org/eclipse/persistence/platform/database/*"/>
+		<accessrule kind="accessible" pattern="org/eclipse/persistence/platform/database/converters/*"/>
+		<accessrule kind="accessible" pattern="org/eclipse/persistence/platform/database/jdbc/*"/>
+		<accessrule kind="accessible" pattern="org/eclipse/persistence/platform/database/oracle/*"/>
+		<accessrule kind="accessible" pattern="org/eclipse/persistence/platform/server/*"/>
+		<accessrule kind="accessible" pattern="org/eclipse/persistence/platform/server/jboss/*"/>
+		<accessrule kind="accessible" pattern="org/eclipse/persistence/platform/server/oc4j/*"/>
+		<accessrule kind="accessible" pattern="org/eclipse/persistence/platform/server/sunas/*"/>
+		<accessrule kind="accessible" pattern="org/eclipse/persistence/platform/server/was/*"/>
+		<accessrule kind="accessible" pattern="org/eclipse/persistence/platform/server/wls/*"/>
+		<accessrule kind="accessible" pattern="org/eclipse/persistence/platform/xml/*"/>
+		<accessrule kind="accessible" pattern="org/eclipse/persistence/platform/xml/jaxp/*"/>
+		<accessrule kind="accessible" pattern="org/eclipse/persistence/queries/*"/>
+		<accessrule kind="accessible" pattern="org/eclipse/persistence/sequencing/*"/>
+		<accessrule kind="accessible" pattern="org/eclipse/persistence/services/*"/>
+		<accessrule kind="accessible" pattern="org/eclipse/persistence/services/mbean/*"/>
+		<accessrule kind="accessible" pattern="org/eclipse/persistence/sessions/*"/>
+		<accessrule kind="accessible" pattern="org/eclipse/persistence/sessions/broker/*"/>
+		<accessrule kind="accessible" pattern="org/eclipse/persistence/sessions/changesets/*"/>
+		<accessrule kind="accessible" pattern="org/eclipse/persistence/sessions/coordination/*"/>
+		<accessrule kind="accessible" pattern="org/eclipse/persistence/sessions/coordination/broadcast/*"/>
+		<accessrule kind="accessible" pattern="org/eclipse/persistence/sessions/coordination/corba/*"/>
+		<accessrule kind="accessible" pattern="org/eclipse/persistence/sessions/coordination/corba/sun/*"/>
+		<accessrule kind="accessible" pattern="org/eclipse/persistence/sessions/coordination/jms/*"/>
+		<accessrule kind="accessible" pattern="org/eclipse/persistence/sessions/coordination/rmi/*"/>
+		<accessrule kind="accessible" pattern="org/eclipse/persistence/sessions/factories/*"/>
+		<accessrule kind="accessible" pattern="org/eclipse/persistence/sessions/interceptors/*"/>
+		<accessrule kind="accessible" pattern="org/eclipse/persistence/sessions/remote/*"/>
+		<accessrule kind="accessible" pattern="org/eclipse/persistence/sessions/remote/corba/sun/*"/>
+		<accessrule kind="accessible" pattern="org/eclipse/persistence/sessions/remote/rmi/*"/>
+		<accessrule kind="accessible" pattern="org/eclipse/persistence/sessions/remote/rmi/iiop/*"/>
+		<accessrule kind="accessible" pattern="org/eclipse/persistence/sessions/server/*"/>
+		<accessrule kind="accessible" pattern="org/eclipse/persistence/tools/*"/>
+		<accessrule kind="accessible" pattern="org/eclipse/persistence/tools/file/*"/>
+		<accessrule kind="accessible" pattern="org/eclipse/persistence/tools/profiler/*"/>
+		<accessrule kind="accessible" pattern="org/eclipse/persistence/tools/schemaframework/*"/>
+		<accessrule kind="accessible" pattern="org/eclipse/persistence/transaction/*"/>
+		<accessrule kind="accessible" pattern="org/eclipse/persistence/transaction/jboss/*"/>
+		<accessrule kind="accessible" pattern="org/eclipse/persistence/transaction/oc4j/*"/>
+		<accessrule kind="accessible" pattern="org/eclipse/persistence/transaction/sunas/*"/>
+		<accessrule kind="accessible" pattern="org/eclipse/persistence/transaction/was/*"/>
+		<accessrule kind="accessible" pattern="org/eclipse/persistence/transaction/wls/*"/>
+		<accessrule ignoreifbetter="true" kind="nonaccessible" pattern="**/*"/>
+	</accessrules>
+</classpathentry>
+<classpathentry kind="lib" path="/opt/springsource-dm-server-1.0.2.RELEASE/repository/bundles/usr/com.springsource.org.eclipse.persistence.jpa-1.0.0.jar" sourcepath="/Users/robharrop/dev/dmserver/greenpages/ivy-cache/repository/org.eclipse.persistence/com.springsource.org.eclipse.persistence/1.0.0/com.springsource.org.eclipse.persistence-sources-1.0.0.jar">
+	<attributes>
+		<attribute name="com.springsource.server.ide.jdt.core.CLASSPATH_ENTRY" value="true"/>
+	</attributes>
+	<accessrules>
+		<accessrule kind="accessible" pattern="org/eclipse/persistence/internal/jpa/*"/>
+		<accessrule kind="accessible" pattern="org/eclipse/persistence/internal/jpa/deployment/*"/>
+		<accessrule kind="accessible" pattern="org/eclipse/persistence/internal/jpa/deployment/osgi/*"/>
+		<accessrule kind="accessible" pattern="org/eclipse/persistence/internal/jpa/deployment/xml/parser/*"/>
+		<accessrule kind="accessible" pattern="org/eclipse/persistence/internal/jpa/jdbc/*"/>
+		<accessrule kind="accessible" pattern="org/eclipse/persistence/internal/jpa/metadata/*"/>
+		<accessrule kind="accessible" pattern="org/eclipse/persistence/internal/jpa/metadata/accessors/*"/>
+		<accessrule kind="accessible" pattern="org/eclipse/persistence/internal/jpa/metadata/accessors/classes/*"/>
+		<accessrule kind="accessible" pattern="org/eclipse/persistence/internal/jpa/metadata/accessors/mappings/*"/>
+		<accessrule kind="accessible" pattern="org/eclipse/persistence/internal/jpa/metadata/accessors/objects/*"/>
+		<accessrule kind="accessible" pattern="org/eclipse/persistence/internal/jpa/metadata/cache/*"/>
+		<accessrule kind="accessible" pattern="org/eclipse/persistence/internal/jpa/metadata/changetracking/*"/>
+		<accessrule kind="accessible" pattern="org/eclipse/persistence/internal/jpa/metadata/columns/*"/>
+		<accessrule kind="accessible" pattern="org/eclipse/persistence/internal/jpa/metadata/converters/*"/>
+		<accessrule kind="accessible" pattern="org/eclipse/persistence/internal/jpa/metadata/copypolicy/*"/>
+		<accessrule kind="accessible" pattern="org/eclipse/persistence/internal/jpa/metadata/inheritance/*"/>
+		<accessrule kind="accessible" pattern="org/eclipse/persistence/internal/jpa/metadata/listeners/*"/>
+		<accessrule kind="accessible" pattern="org/eclipse/persistence/internal/jpa/metadata/locking/*"/>
+		<accessrule kind="accessible" pattern="org/eclipse/persistence/internal/jpa/metadata/queries/*"/>
+		<accessrule kind="accessible" pattern="org/eclipse/persistence/internal/jpa/metadata/sequencing/*"/>
+		<accessrule kind="accessible" pattern="org/eclipse/persistence/internal/jpa/metadata/tables/*"/>
+		<accessrule kind="accessible" pattern="org/eclipse/persistence/internal/jpa/metadata/transformers/*"/>
+		<accessrule kind="accessible" pattern="org/eclipse/persistence/internal/jpa/metadata/xml/*"/>
+		<accessrule kind="accessible" pattern="org/eclipse/persistence/internal/jpa/transaction/*"/>
+		<accessrule kind="accessible" pattern="org/eclipse/persistence/internal/weaving/*"/>
+		<accessrule kind="accessible" pattern="org/eclipse/persistence/jpa/*"/>
+		<accessrule kind="accessible" pattern="org/eclipse/persistence/jpa/osgi/*"/>
+		<accessrule kind="accessible" pattern="org/eclipse/persistence/queries/*"/>
+		<accessrule kind="accessible" pattern="org/eclipse/persistence/tools/weaving/jpa/*"/>
+		<accessrule ignoreifbetter="true" kind="nonaccessible" pattern="**/*"/>
+	</accessrules>
+</classpathentry>
+<classpathentry combineaccessrules="false" kind="src" path="/greenpages.app">
+	<attributes>
+		<attribute name="com.springsource.server.ide.jdt.core.CLASSPATH_ENTRY" value="true"/>
+	</attributes>
+	<accessrules>
+		<accessrule kind="accessible" pattern="greenpages/*"/>
+		<accessrule ignoreifbetter="true" kind="nonaccessible" pattern="**/*"/>
+	</accessrules>
+</classpathentry>
+<classpathentry kind="lib" path="/opt/springsource-dm-server-1.0.2.RELEASE/repository/bundles/ext/org.springframework.aop-2.5.6.A.jar">
+	<attributes>
+		<attribute name="com.springsource.server.ide.jdt.core.CLASSPATH_ENTRY" value="true"/>
+	</attributes>
+	<accessrules>
+		<accessrule kind="accessible" pattern="org/springframework/aop/*"/>
+		<accessrule kind="accessible" pattern="org/springframework/aop/aspectj/*"/>
+		<accessrule kind="accessible" pattern="org/springframework/aop/aspectj/annotation/*"/>
+		<accessrule kind="accessible" pattern="org/springframework/aop/aspectj/autoproxy/*"/>
+		<accessrule kind="accessible" pattern="org/springframework/aop/config/*"/>
+		<accessrule kind="accessible" pattern="org/springframework/aop/framework/*"/>
+		<accessrule kind="accessible" pattern="org/springframework/aop/framework/adapter/*"/>
+		<accessrule kind="accessible" pattern="org/springframework/aop/framework/autoproxy/*"/>
+		<accessrule kind="accessible" pattern="org/springframework/aop/framework/autoproxy/target/*"/>
+		<accessrule kind="accessible" pattern="org/springframework/aop/interceptor/*"/>
+		<accessrule kind="accessible" pattern="org/springframework/aop/scope/*"/>
+		<accessrule kind="accessible" pattern="org/springframework/aop/support/*"/>
+		<accessrule kind="accessible" pattern="org/springframework/aop/support/annotation/*"/>
+		<accessrule kind="accessible" pattern="org/springframework/aop/target/*"/>
+		<accessrule kind="accessible" pattern="org/springframework/aop/target/dynamic/*"/>
+		<accessrule ignoreifbetter="true" kind="nonaccessible" pattern="**/*"/>
+	</accessrules>
+</classpathentry>
+<classpathentry kind="lib" path="/opt/springsource-dm-server-1.0.2.RELEASE/repository/bundles/ext/org.springframework.aspects-2.5.6.A.jar">
+	<attributes>
+		<attribute name="com.springsource.server.ide.jdt.core.CLASSPATH_ENTRY" value="true"/>
+	</attributes>
+	<accessrules>
+		<accessrule kind="accessible" pattern="org/springframework/beans/factory/aspectj/*"/>
+		<accessrule kind="accessible" pattern="org/springframework/transaction/aspectj/*"/>
+		<accessrule ignoreifbetter="true" kind="nonaccessible" pattern="**/*"/>
+	</accessrules>
+</classpathentry>
+<classpathentry kind="lib" path="/opt/springsource-dm-server-1.0.2.RELEASE/repository/bundles/ext/org.springframework.beans-2.5.6.A.jar">
+	<attributes>
+		<attribute name="com.springsource.server.ide.jdt.core.CLASSPATH_ENTRY" value="true"/>
+	</attributes>
+	<accessrules>
+		<accessrule kind="accessible" pattern="org/springframework/beans/*"/>
+		<accessrule kind="accessible" pattern="org/springframework/beans/annotation/*"/>
+		<accessrule kind="accessible" pattern="org/springframework/beans/factory/*"/>
+		<accessrule kind="accessible" pattern="org/springframework/beans/factory/access/*"/>
+		<accessrule kind="accessible" pattern="org/springframework/beans/factory/access/el/*"/>
+		<accessrule kind="accessible" pattern="org/springframework/beans/factory/annotation/*"/>
+		<accessrule kind="accessible" pattern="org/springframework/beans/factory/config/*"/>
+		<accessrule kind="accessible" pattern="org/springframework/beans/factory/generic/*"/>
+		<accessrule kind="accessible" pattern="org/springframework/beans/factory/parsing/*"/>
+		<accessrule kind="accessible" pattern="org/springframework/beans/factory/serviceloader/*"/>
+		<accessrule kind="accessible" pattern="org/springframework/beans/factory/support/*"/>
+		<accessrule kind="accessible" pattern="org/springframework/beans/factory/wiring/*"/>
+		<accessrule kind="accessible" pattern="org/springframework/beans/factory/xml/*"/>
+		<accessrule kind="accessible" pattern="org/springframework/beans/propertyeditors/*"/>
+		<accessrule kind="accessible" pattern="org/springframework/beans/support/*"/>
+		<accessrule ignoreifbetter="true" kind="nonaccessible" pattern="**/*"/>
+	</accessrules>
+</classpathentry>
+<classpathentry kind="lib" path="/opt/springsource-dm-server-1.0.2.RELEASE/repository/bundles/ext/org.springframework.context-2.5.6.A.jar">
+	<attributes>
+		<attribute name="com.springsource.server.ide.jdt.core.CLASSPATH_ENTRY" value="true"/>
+	</attributes>
+	<accessrules>
+		<accessrule kind="accessible" pattern="org/springframework/context/*"/>
+		<accessrule kind="accessible" pattern="org/springframework/context/access/*"/>
+		<accessrule kind="accessible" pattern="org/springframework/context/annotation/*"/>
+		<accessrule kind="accessible" pattern="org/springframework/context/config/*"/>
+		<accessrule kind="accessible" pattern="org/springframework/context/event/*"/>
+		<accessrule kind="accessible" pattern="org/springframework/context/i18n/*"/>
+		<accessrule kind="accessible" pattern="org/springframework/context/support/*"/>
+		<accessrule kind="accessible" pattern="org/springframework/context/weaving/*"/>
+		<accessrule kind="accessible" pattern="org/springframework/ejb/access/*"/>
+		<accessrule kind="accessible" pattern="org/springframework/ejb/config/*"/>
+		<accessrule kind="accessible" pattern="org/springframework/ejb/interceptor/*"/>
+		<accessrule kind="accessible" pattern="org/springframework/ejb/support/*"/>
+		<accessrule kind="accessible" pattern="org/springframework/instrument/classloading/*"/>
+		<accessrule kind="accessible" pattern="org/springframework/instrument/classloading/glassfish/*"/>
+		<accessrule kind="accessible" pattern="org/springframework/instrument/classloading/oc4j/*"/>
+		<accessrule kind="accessible" pattern="org/springframework/instrument/classloading/weblogic/*"/>
+		<accessrule kind="accessible" pattern="org/springframework/jmx/*"/>
+		<accessrule kind="accessible" pattern="org/springframework/jmx/access/*"/>
+		<accessrule kind="accessible" pattern="org/springframework/jmx/export/*"/>
+		<accessrule kind="accessible" pattern="org/springframework/jmx/export/annotation/*"/>
+		<accessrule kind="accessible" pattern="org/springframework/jmx/export/assembler/*"/>
+		<accessrule kind="accessible" pattern="org/springframework/jmx/export/metadata/*"/>
+		<accessrule kind="accessible" pattern="org/springframework/jmx/export/naming/*"/>
+		<accessrule kind="accessible" pattern="org/springframework/jmx/export/notification/*"/>
+		<accessrule kind="accessible" pattern="org/springframework/jmx/support/*"/>
+		<accessrule kind="accessible" pattern="org/springframework/jndi/*"/>
+		<accessrule kind="accessible" pattern="org/springframework/jndi/support/*"/>
+		<accessrule kind="accessible" pattern="org/springframework/remoting/*"/>
+		<accessrule kind="accessible" pattern="org/springframework/remoting/rmi/*"/>
+		<accessrule kind="accessible" pattern="org/springframework/remoting/soap/*"/>
+		<accessrule kind="accessible" pattern="org/springframework/remoting/support/*"/>
+		<accessrule kind="accessible" pattern="org/springframework/scheduling/*"/>
+		<accessrule kind="accessible" pattern="org/springframework/scheduling/backportconcurrent/*"/>
+		<accessrule kind="accessible" pattern="org/springframework/scheduling/concurrent/*"/>
+		<accessrule kind="accessible" pattern="org/springframework/scheduling/support/*"/>
+		<accessrule kind="accessible" pattern="org/springframework/scheduling/timer/*"/>
+		<accessrule kind="accessible" pattern="org/springframework/scripting/*"/>
+		<accessrule kind="accessible" pattern="org/springframework/scripting/bsh/*"/>
+		<accessrule kind="accessible" pattern="org/springframework/scripting/config/*"/>
+		<accessrule kind="accessible" pattern="org/springframework/scripting/groovy/*"/>
+		<accessrule kind="accessible" pattern="org/springframework/scripting/jruby/*"/>
+		<accessrule kind="accessible" pattern="org/springframework/scripting/support/*"/>
+		<accessrule kind="accessible" pattern="org/springframework/stereotype/*"/>
+		<accessrule kind="accessible" pattern="org/springframework/ui/*"/>
+		<accessrule kind="accessible" pattern="org/springframework/ui/context/*"/>
+		<accessrule kind="accessible" pattern="org/springframework/ui/context/support/*"/>
+		<accessrule kind="accessible" pattern="org/springframework/validation/*"/>
+		<accessrule kind="accessible" pattern="org/springframework/validation/support/*"/>
+		<accessrule ignoreifbetter="true" kind="nonaccessible" pattern="**/*"/>
+	</accessrules>
+</classpathentry>
+<classpathentry kind="lib" path="/opt/springsource-dm-server-1.0.2.RELEASE/repository/bundles/ext/org.springframework.context.support-2.5.6.A.jar">
+	<attributes>
+		<attribute name="com.springsource.server.ide.jdt.core.CLASSPATH_ENTRY" value="true"/>
+	</attributes>
+	<accessrules>
+		<accessrule kind="accessible" pattern="org/springframework/cache/ehcache/*"/>
+		<accessrule kind="accessible" pattern="org/springframework/mail/*"/>
+		<accessrule kind="accessible" pattern="org/springframework/mail/javamail/*"/>
+		<accessrule kind="accessible" pattern="org/springframework/scheduling/commonj/*"/>
+		<accessrule kind="accessible" pattern="org/springframework/scheduling/quartz/*"/>
+		<accessrule kind="accessible" pattern="org/springframework/ui/freemarker/*"/>
+		<accessrule kind="accessible" pattern="org/springframework/ui/jasperreports/*"/>
+		<accessrule kind="accessible" pattern="org/springframework/ui/velocity/*"/>
+		<accessrule ignoreifbetter="true" kind="nonaccessible" pattern="**/*"/>
+	</accessrules>
+</classpathentry>
+<classpathentry kind="lib" path="/opt/springsource-dm-server-1.0.2.RELEASE/repository/bundles/ext/org.springframework.core-2.5.6.A.jar">
+	<attributes>
+		<attribute name="com.springsource.server.ide.jdt.core.CLASSPATH_ENTRY" value="true"/>
+	</attributes>
+	<accessrules>
+		<accessrule kind="accessible" pattern="org/springframework/asm/*"/>
+		<accessrule kind="accessible" pattern="org/springframework/asm/commons/*"/>
+		<accessrule kind="accessible" pattern="org/springframework/asm/signature/*"/>
+		<accessrule kind="accessible" pattern="org/springframework/core/*"/>
+		<accessrule kind="accessible" pattern="org/springframework/core/annotation/*"/>
+		<accessrule kind="accessible" pattern="org/springframework/core/enums/*"/>
+		<accessrule kind="accessible" pattern="org/springframework/core/io/*"/>
+		<accessrule kind="accessible" pattern="org/springframework/core/io/support/*"/>
+		<accessrule kind="accessible" pattern="org/springframework/core/style/*"/>
+		<accessrule kind="accessible" pattern="org/springframework/core/task/*"/>
+		<accessrule kind="accessible" pattern="org/springframework/core/task/support/*"/>
+		<accessrule kind="accessible" pattern="org/springframework/core/type/*"/>
+		<accessrule kind="accessible" pattern="org/springframework/core/type/classreading/*"/>
+		<accessrule kind="accessible" pattern="org/springframework/core/type/filter/*"/>
+		<accessrule kind="accessible" pattern="org/springframework/metadata/*"/>
+		<accessrule kind="accessible" pattern="org/springframework/metadata/commons/*"/>
+		<accessrule kind="accessible" pattern="org/springframework/util/*"/>
+		<accessrule kind="accessible" pattern="org/springframework/util/comparator/*"/>
+		<accessrule kind="accessible" pattern="org/springframework/util/xml/*"/>
+		<accessrule ignoreifbetter="true" kind="nonaccessible" pattern="**/*"/>
+	</accessrules>
+</classpathentry>
+<classpathentry kind="lib" path="/opt/springsource-dm-server-1.0.2.RELEASE/repository/bundles/ext/org.springframework.jdbc-2.5.6.A.jar">
+	<attributes>
+		<attribute name="com.springsource.server.ide.jdt.core.CLASSPATH_ENTRY" value="true"/>
+	</attributes>
+	<accessrules>
+		<accessrule kind="accessible" pattern="org/springframework/jdbc/*"/>
+		<accessrule kind="accessible" pattern="org/springframework/jdbc/core/*"/>
+		<accessrule kind="accessible" pattern="org/springframework/jdbc/core/metadata/*"/>
+		<accessrule kind="accessible" pattern="org/springframework/jdbc/core/namedparam/*"/>
+		<accessrule kind="accessible" pattern="org/springframework/jdbc/core/simple/*"/>
+		<accessrule kind="accessible" pattern="org/springframework/jdbc/core/support/*"/>
+		<accessrule kind="accessible" pattern="org/springframework/jdbc/datasource/*"/>
+		<accessrule kind="accessible" pattern="org/springframework/jdbc/datasource/lookup/*"/>
+		<accessrule kind="accessible" pattern="org/springframework/jdbc/object/*"/>
+		<accessrule kind="accessible" pattern="org/springframework/jdbc/support/*"/>
+		<accessrule kind="accessible" pattern="org/springframework/jdbc/support/incrementer/*"/>
+		<accessrule kind="accessible" pattern="org/springframework/jdbc/support/lob/*"/>
+		<accessrule kind="accessible" pattern="org/springframework/jdbc/support/nativejdbc/*"/>
+		<accessrule kind="accessible" pattern="org/springframework/jdbc/support/rowset/*"/>
+		<accessrule kind="accessible" pattern="org/springframework/jdbc/support/xml/*"/>
+		<accessrule ignoreifbetter="true" kind="nonaccessible" pattern="**/*"/>
+	</accessrules>
+</classpathentry>
+<classpathentry kind="lib" path="/opt/springsource-dm-server-1.0.2.RELEASE/repository/bundles/ext/org.springframework.jms-2.5.6.A.jar">
+	<attributes>
+		<attribute name="com.springsource.server.ide.jdt.core.CLASSPATH_ENTRY" value="true"/>
+	</attributes>
+	<accessrules>
+		<accessrule kind="accessible" pattern="org/springframework/jms/*"/>
+		<accessrule kind="accessible" pattern="org/springframework/jms/config/*"/>
+		<accessrule kind="accessible" pattern="org/springframework/jms/connection/*"/>
+		<accessrule kind="accessible" pattern="org/springframework/jms/core/*"/>
+		<accessrule kind="accessible" pattern="org/springframework/jms/core/support/*"/>
+		<accessrule kind="accessible" pattern="org/springframework/jms/listener/*"/>
+		<accessrule kind="accessible" pattern="org/springframework/jms/listener/adapter/*"/>
+		<accessrule kind="accessible" pattern="org/springframework/jms/listener/endpoint/*"/>
+		<accessrule kind="accessible" pattern="org/springframework/jms/listener/serversession/*"/>
+		<accessrule kind="accessible" pattern="org/springframework/jms/remoting/*"/>
+		<accessrule kind="accessible" pattern="org/springframework/jms/support/*"/>
+		<accessrule kind="accessible" pattern="org/springframework/jms/support/converter/*"/>
+		<accessrule kind="accessible" pattern="org/springframework/jms/support/destination/*"/>
+		<accessrule ignoreifbetter="true" kind="nonaccessible" pattern="**/*"/>
+	</accessrules>
+</classpathentry>
+<classpathentry kind="lib" path="/opt/springsource-dm-server-1.0.2.RELEASE/repository/bundles/ext/org.springframework.orm-2.5.6.A.jar">
+	<attributes>
+		<attribute name="com.springsource.server.ide.jdt.core.CLASSPATH_ENTRY" value="true"/>
+	</attributes>
+	<accessrules>
+		<accessrule kind="accessible" pattern="org/springframework/orm/*"/>
+		<accessrule kind="accessible" pattern="org/springframework/orm/hibernate3/*"/>
+		<accessrule kind="accessible" pattern="org/springframework/orm/hibernate3/annotation/*"/>
+		<accessrule kind="accessible" pattern="org/springframework/orm/hibernate3/support/*"/>
+		<accessrule kind="accessible" pattern="org/springframework/orm/ibatis/*"/>
+		<accessrule kind="accessible" pattern="org/springframework/orm/ibatis/support/*"/>
+		<accessrule kind="accessible" pattern="org/springframework/orm/jdo/*"/>
+		<accessrule kind="accessible" pattern="org/springframework/orm/jdo/support/*"/>
+		<accessrule kind="accessible" pattern="org/springframework/orm/jpa/*"/>
+		<accessrule kind="accessible" pattern="org/springframework/orm/jpa/persistenceunit/*"/>
+		<accessrule kind="accessible" pattern="org/springframework/orm/jpa/support/*"/>
+		<accessrule kind="accessible" pattern="org/springframework/orm/jpa/vendor/*"/>
+		<accessrule kind="accessible" pattern="org/springframework/orm/toplink/*"/>
+		<accessrule kind="accessible" pattern="org/springframework/orm/toplink/support/*"/>
+		<accessrule ignoreifbetter="true" kind="nonaccessible" pattern="**/*"/>
+	</accessrules>
+</classpathentry>
+<classpathentry kind="lib" path="/opt/springsource-dm-server-1.0.2.RELEASE/repository/bundles/ext/org.springframework.transaction-2.5.6.A.jar">
+	<attributes>
+		<attribute name="com.springsource.server.ide.jdt.core.CLASSPATH_ENTRY" value="true"/>
+	</attributes>
+	<accessrules>
+		<accessrule kind="accessible" pattern="org/springframework/dao/*"/>
+		<accessrule kind="accessible" pattern="org/springframework/dao/annotation/*"/>
+		<accessrule kind="accessible" pattern="org/springframework/dao/support/*"/>
+		<accessrule kind="accessible" pattern="org/springframework/jca/cci/*"/>
+		<accessrule kind="accessible" pattern="org/springframework/jca/cci/connection/*"/>
+		<accessrule kind="accessible" pattern="org/springframework/jca/cci/core/*"/>
+		<accessrule kind="accessible" pattern="org/springframework/jca/cci/core/support/*"/>
+		<accessrule kind="accessible" pattern="org/springframework/jca/cci/object/*"/>
+		<accessrule kind="accessible" pattern="org/springframework/jca/context/*"/>
+		<accessrule kind="accessible" pattern="org/springframework/jca/endpoint/*"/>
+		<accessrule kind="accessible" pattern="org/springframework/jca/support/*"/>
+		<accessrule kind="accessible" pattern="org/springframework/jca/work/*"/>
+		<accessrule kind="accessible" pattern="org/springframework/jca/work/glassfish/*"/>
+		<accessrule kind="accessible" pattern="org/springframework/jca/work/jboss/*"/>
+		<accessrule kind="accessible" pattern="org/springframework/transaction/*"/>
+		<accessrule kind="accessible" pattern="org/springframework/transaction/annotation/*"/>
+		<accessrule kind="accessible" pattern="org/springframework/transaction/config/*"/>
+		<accessrule kind="accessible" pattern="org/springframework/transaction/interceptor/*"/>
+		<accessrule kind="accessible" pattern="org/springframework/transaction/jta/*"/>
+		<accessrule kind="accessible" pattern="org/springframework/transaction/support/*"/>
+		<accessrule ignoreifbetter="true" kind="nonaccessible" pattern="**/*"/>
+	</accessrules>
+</classpathentry>
+<classpathentry kind="lib" path="/opt/springsource-dm-server-1.0.2.RELEASE/repository/bundles/ext/org.springframework.web-2.5.6.A.jar">
+	<attributes>
+		<attribute name="com.springsource.server.ide.jdt.core.CLASSPATH_ENTRY" value="true"/>
+	</attributes>
+	<accessrules>
+		<accessrule kind="accessible" pattern="org/springframework/remoting/caucho/*"/>
+		<accessrule kind="accessible" pattern="org/springframework/remoting/httpinvoker/*"/>
+		<accessrule kind="accessible" pattern="org/springframework/remoting/jaxrpc/*"/>
+		<accessrule kind="accessible" pattern="org/springframework/remoting/jaxrpc/support/*"/>
+		<accessrule kind="accessible" pattern="org/springframework/remoting/jaxws/*"/>
+		<accessrule kind="accessible" pattern="org/springframework/web/*"/>
+		<accessrule kind="accessible" pattern="org/springframework/web/context/*"/>
+		<accessrule kind="accessible" pattern="org/springframework/web/context/request/*"/>
+		<accessrule kind="accessible" pattern="org/springframework/web/context/support/*"/>
+		<accessrule kind="accessible" pattern="org/springframework/web/filter/*"/>
+		<accessrule kind="accessible" pattern="org/springframework/web/jsf/*"/>
+		<accessrule kind="accessible" pattern="org/springframework/web/jsf/el/*"/>
+		<accessrule kind="accessible" pattern="org/springframework/web/util/*"/>
+		<accessrule ignoreifbetter="true" kind="nonaccessible" pattern="**/*"/>
+	</accessrules>
+</classpathentry>
+<classpathentry kind="lib" path="/opt/springsource-dm-server-1.0.2.RELEASE/repository/bundles/ext/org.springframework.web.servlet-2.5.6.A.jar">
+	<attributes>
+		<attribute name="com.springsource.server.ide.jdt.core.CLASSPATH_ENTRY" value="true"/>
+	</attributes>
+	<accessrules>
+		<accessrule kind="accessible" pattern="org/springframework/web/bind/*"/>
+		<accessrule kind="accessible" pattern="org/springframework/web/bind/annotation/*"/>
+		<accessrule kind="accessible" pattern="org/springframework/web/bind/annotation/support/*"/>
+		<accessrule kind="accessible" pattern="org/springframework/web/bind/support/*"/>
+		<accessrule kind="accessible" pattern="org/springframework/web/multipart/*"/>
+		<accessrule kind="accessible" pattern="org/springframework/web/multipart/commons/*"/>
+		<accessrule kind="accessible" pattern="org/springframework/web/multipart/support/*"/>
+		<accessrule kind="accessible" pattern="org/springframework/web/servlet/*"/>
+		<accessrule kind="accessible" pattern="org/springframework/web/servlet/handler/*"/>
+		<accessrule kind="accessible" pattern="org/springframework/web/servlet/handler/metadata/*"/>
+		<accessrule kind="accessible" pattern="org/springframework/web/servlet/i18n/*"/>
+		<accessrule kind="accessible" pattern="org/springframework/web/servlet/mvc/*"/>
+		<accessrule kind="accessible" pattern="org/springframework/web/servlet/mvc/annotation/*"/>
+		<accessrule kind="accessible" pattern="org/springframework/web/servlet/mvc/multiaction/*"/>
+		<accessrule kind="accessible" pattern="org/springframework/web/servlet/mvc/support/*"/>
+		<accessrule kind="accessible" pattern="org/springframework/web/servlet/mvc/throwaway/*"/>
+		<accessrule kind="accessible" pattern="org/springframework/web/servlet/support/*"/>
+		<accessrule kind="accessible" pattern="org/springframework/web/servlet/tags/*"/>
+		<accessrule kind="accessible" pattern="org/springframework/web/servlet/tags/form/*"/>
+		<accessrule kind="accessible" pattern="org/springframework/web/servlet/theme/*"/>
+		<accessrule kind="accessible" pattern="org/springframework/web/servlet/view/*"/>
+		<accessrule kind="accessible" pattern="org/springframework/web/servlet/view/document/*"/>
+		<accessrule kind="accessible" pattern="org/springframework/web/servlet/view/freemarker/*"/>
+		<accessrule kind="accessible" pattern="org/springframework/web/servlet/view/jasperreports/*"/>
+		<accessrule kind="accessible" pattern="org/springframework/web/servlet/view/tiles2/*"/>
+		<accessrule kind="accessible" pattern="org/springframework/web/servlet/view/velocity/*"/>
+		<accessrule kind="accessible" pattern="org/springframework/web/servlet/view/xslt/*"/>
+		<accessrule ignoreifbetter="true" kind="nonaccessible" pattern="**/*"/>
+	</accessrules>
+</classpathentry>
+</classpath>
diff --git a/start/greenpages.jpa/.settings/org.eclipse.jdt.core.prefs b/start/greenpages.jpa/.settings/org.eclipse.jdt.core.prefs
new file mode 100644
index 0000000..2c3501a
--- /dev/null
+++ b/start/greenpages.jpa/.settings/org.eclipse.jdt.core.prefs
@@ -0,0 +1,12 @@
+#Wed Jul 01 15:38:07 BST 2009
+eclipse.preferences.version=1
+org.eclipse.jdt.core.compiler.codegen.inlineJsrBytecode=enabled
+org.eclipse.jdt.core.compiler.codegen.targetPlatform=1.6
+org.eclipse.jdt.core.compiler.codegen.unusedLocal=preserve
+org.eclipse.jdt.core.compiler.compliance=1.6
+org.eclipse.jdt.core.compiler.debug.lineNumber=generate
+org.eclipse.jdt.core.compiler.debug.localVariable=generate
+org.eclipse.jdt.core.compiler.debug.sourceFile=generate
+org.eclipse.jdt.core.compiler.problem.assertIdentifier=error
+org.eclipse.jdt.core.compiler.problem.enumIdentifier=error
+org.eclipse.jdt.core.compiler.source=1.6
diff --git a/start/greenpages.jpa/.settings/org.eclipse.wst.common.project.facet.core.xml b/start/greenpages.jpa/.settings/org.eclipse.wst.common.project.facet.core.xml
new file mode 100644
index 0000000..801f856
--- /dev/null
+++ b/start/greenpages.jpa/.settings/org.eclipse.wst.common.project.facet.core.xml
@@ -0,0 +1,4 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<faceted-project>
+  <installed facet="com.springsource.server.bundle" version="1.0"/>
+</faceted-project>
diff --git a/start/greenpages.jpa/.settings/org.maven.ide.eclipse.prefs b/start/greenpages.jpa/.settings/org.maven.ide.eclipse.prefs
new file mode 100644
index 0000000..8f47b36
--- /dev/null
+++ b/start/greenpages.jpa/.settings/org.maven.ide.eclipse.prefs
@@ -0,0 +1,9 @@
+#Tue Apr 21 16:53:36 BST 2009
+activeProfiles=
+eclipse.preferences.version=1
+fullBuildGoals=process-test-resources
+includeModules=false
+resolveWorkspaceProjects=true
+resourceFilterGoals=process-resources resources\:testResources
+skipCompilerPlugin=true
+version=1
diff --git a/start/greenpages.jpa/.springBeans b/start/greenpages.jpa/.springBeans
new file mode 100644
index 0000000..27e7084
--- /dev/null
+++ b/start/greenpages.jpa/.springBeans
@@ -0,0 +1,15 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<beansProjectDescription>
+	<version>1</version>
+	<pluginVersion><![CDATA[2.2.5.200906231226-RC1]]></pluginVersion>
+	<configSuffixes>
+		<configSuffix><![CDATA[xml]]></configSuffix>
+	</configSuffixes>
+	<enableImports><![CDATA[false]]></enableImports>
+	<configs>
+		<config>src/main/resources/META-INF/spring/osgi-context.xml</config>
+		<config>src/main/resources/META-INF/spring/module-context.xml</config>
+	</configs>
+	<configSets>
+	</configSets>
+</beansProjectDescription>
diff --git a/start/greenpages.jpa/pom.xml b/start/greenpages.jpa/pom.xml
new file mode 100644
index 0000000..f6559f6
--- /dev/null
+++ b/start/greenpages.jpa/pom.xml
@@ -0,0 +1,59 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<project
+		xmlns="http://maven.apache.org/POM/4.0.0"
+		xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+		xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
+
+	<parent>
+		<groupId>com.springsource.dmserver</groupId>
+		<artifactId>greenpages.parent</artifactId>
+		<version>2.0.1.SNAPSHOT</version>
+		<relativePath>../parent</relativePath>
+	</parent>
+
+	<modelVersion>4.0.0</modelVersion>
+	<groupId>com.springsource.dmserver</groupId>
+	<artifactId>greenpages.jpa</artifactId>
+	<name>greenpages.jpa</name>
+	<packaging>jar</packaging>
+
+	<dependencies>
+		<dependency>
+			<groupId>com.springsource.dmserver</groupId>
+			<artifactId>greenpages.app</artifactId>
+			<version>${project.version}</version>
+		</dependency>
+		<dependency>
+			<groupId>org.junit</groupId>
+			<artifactId>com.springsource.org.junit</artifactId>
+		</dependency>
+		<dependency>
+		    <groupId>org.springframework</groupId>
+		    <artifactId>org.springframework.test</artifactId>
+		</dependency>
+		<dependency>
+		    <groupId>org.springframework</groupId>
+		    <artifactId>org.springframework.instrument</artifactId>
+		</dependency>
+		<dependency>
+		    <groupId>org.springframework</groupId>
+		    <artifactId>org.springframework.aspects</artifactId>
+		</dependency>
+		<dependency>
+			<groupId>org.apache.commons</groupId>
+			<artifactId>com.springsource.org.apache.commons.dbcp</artifactId>
+			<scope>test</scope>
+		</dependency>
+		<dependency>
+			<groupId>com.h2database</groupId>
+			<artifactId>com.springsource.org.h2</artifactId>
+			<scope>test</scope>
+		</dependency>
+		<dependency>
+		    <groupId>org.aspectj</groupId>
+		    <artifactId>org.aspectj-library</artifactId>
+			<type>libd</type>
+		</dependency>
+	</dependencies>
+
+</project>
diff --git a/start/greenpages.jpa/src/main/java/greenpages/jpa/JpaDirectory.java b/start/greenpages.jpa/src/main/java/greenpages/jpa/JpaDirectory.java
new file mode 100644
index 0000000..b6cfe72
--- /dev/null
+++ b/start/greenpages.jpa/src/main/java/greenpages/jpa/JpaDirectory.java
@@ -0,0 +1,30 @@
+/*******************************************************************************
+ * Copyright (c) 2008, 2010 VMware Inc.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ *   VMware Inc. - initial contribution
+ *******************************************************************************/
+
+package greenpages.jpa;
+
+import greenpages.Directory;
+import greenpages.Listing;
+
+import java.util.List;
+
+final class JpaDirectory implements Directory {
+
+    private static final String SEARCH_QUERY = "select l from Listing l where upper(l.lastName) like :term";
+
+    public Listing findListing(int id) {
+    	return null;
+    }
+
+    public List<Listing> search(String term) {
+    	return null;
+    }
+}
diff --git a/start/greenpages.jpa/src/main/java/greenpages/jpa/JpaListing.java b/start/greenpages.jpa/src/main/java/greenpages/jpa/JpaListing.java
new file mode 100644
index 0000000..1965495
--- /dev/null
+++ b/start/greenpages.jpa/src/main/java/greenpages/jpa/JpaListing.java
@@ -0,0 +1,61 @@
+/*******************************************************************************
+ * Copyright (c) 2008, 2010 VMware Inc.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ *   VMware Inc. - initial contribution
+ *******************************************************************************/
+
+package greenpages.jpa;
+
+import greenpages.Listing;
+
+/**
+ * Basic implementation of {@link Listing} that is configured as a persistent type in JPA.
+ */
+public class JpaListing implements Listing {
+
+    private Integer listingNumber;
+
+    private String firstName;
+
+    private String lastName;
+
+    private String emailAddress;
+
+    public Integer getListingNumber() {
+        return listingNumber;
+    }
+
+    public void setListingNumber(Integer listingNumber) {
+        this.listingNumber = listingNumber;
+    }
+
+    public String getFirstName() {
+        return firstName;
+    }
+
+    public void setFirstName(String firstName) {
+        this.firstName = firstName;
+    }
+
+    public String getLastName() {
+        return lastName;
+    }
+
+    public void setLastName(String lastName) {
+        this.lastName = lastName;
+    }
+
+    public String getEmailAddress() {
+        return emailAddress;
+    }
+
+    public void setEmailAddress(String emailAddress) {
+        this.emailAddress = emailAddress;
+    }
+
+}
diff --git a/start/greenpages.jpa/src/main/resources/META-INF/MANIFEST.MF b/start/greenpages.jpa/src/main/resources/META-INF/MANIFEST.MF
new file mode 100644
index 0000000..59720d7
--- /dev/null
+++ b/start/greenpages.jpa/src/main/resources/META-INF/MANIFEST.MF
@@ -0,0 +1,6 @@
+Manifest-Version: 1.0

+Bundle-ManifestVersion: 2

+Bundle-Name: GreenPages JPA

+Bundle-SymbolicName: greenpages.jpa

+Bundle-Vendor: SpringSource Inc.

+Bundle-Version: 1.0
\ No newline at end of file
diff --git a/start/greenpages.jpa/src/main/resources/META-INF/spring/module-context.xml b/start/greenpages.jpa/src/main/resources/META-INF/spring/module-context.xml
new file mode 100644
index 0000000..d776245
--- /dev/null
+++ b/start/greenpages.jpa/src/main/resources/META-INF/spring/module-context.xml
@@ -0,0 +1,14 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+	Application context definition for GreenPages JPA.
+-->
+<beans xmlns="http://www.springframework.org/schema/beans" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+		xmlns:p="http://www.springframework.org/schema/p"
+		xmlns:context="http://www.springframework.org/schema/context"
+		xmlns:tx="http://www.springframework.org/schema/tx"
+		xsi:schemaLocation="
+			http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-2.5.xsd
+			http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context-2.5.xsd
+			http://www.springframework.org/schema/tx http://www.springframework.org/schema/tx/spring-tx-2.5.xsd">
+	 
+</beans>
diff --git a/start/greenpages.jpa/src/main/resources/META-INF/spring/osgi-context.xml b/start/greenpages.jpa/src/main/resources/META-INF/spring/osgi-context.xml
new file mode 100644
index 0000000..82041ec
--- /dev/null
+++ b/start/greenpages.jpa/src/main/resources/META-INF/spring/osgi-context.xml
@@ -0,0 +1,8 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<beans xmlns="http://www.springframework.org/schema/beans"
+	xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+	xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd
+		http://www.springframework.org/schema/osgi http://www.springframework.org/schema/osgi/spring-osgi.xsd"
+	xmlns:osgi="http://www.springframework.org/schema/osgi">
+
+</beans>
diff --git a/start/greenpages.jpa/src/test/java/greenpages/jpa/JpaDirectorySpringContextTests.java b/start/greenpages.jpa/src/test/java/greenpages/jpa/JpaDirectorySpringContextTests.java
new file mode 100644
index 0000000..5f3e1ac
--- /dev/null
+++ b/start/greenpages.jpa/src/test/java/greenpages/jpa/JpaDirectorySpringContextTests.java
@@ -0,0 +1,39 @@
+/*******************************************************************************
+ * Copyright (c) 2008, 2010 VMware Inc.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ *   VMware Inc. - initial contribution
+ *******************************************************************************/
+
+package greenpages.jpa;
+
+import static org.junit.Assert.assertEquals;
+import static org.junit.Assert.assertNotNull;
+import greenpages.Directory;
+import greenpages.Listing;
+
+import java.util.List;
+
+import org.junit.Test;
+import org.springframework.beans.factory.annotation.Autowired;
+
+public class JpaDirectorySpringContextTests {
+
+    @Autowired
+    private Directory directory;
+
+    @Test
+    public void search() {
+        List<Listing> results = this.directory.search("johnson");
+        assertNotNull(results);
+        assertEquals(1, results.size());
+
+        Listing listing = results.get(0);
+        assertNotNull(listing);
+        assertEquals("Johnson", listing.getLastName());
+    }
+}
diff --git a/start/greenpages.jpa/src/test/java/greenpages/jpa/TestDataPopulator.java b/start/greenpages.jpa/src/test/java/greenpages/jpa/TestDataPopulator.java
new file mode 100644
index 0000000..24f779b
--- /dev/null
+++ b/start/greenpages.jpa/src/test/java/greenpages/jpa/TestDataPopulator.java
@@ -0,0 +1,96 @@
+/*******************************************************************************
+ * Copyright (c) 2008, 2010 VMware Inc.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ *   VMware Inc. - initial contribution
+ *******************************************************************************/
+
+package greenpages.jpa;
+
+import java.io.BufferedReader;
+import java.io.BufferedWriter;
+import java.io.IOException;
+import java.io.InputStream;
+import java.io.InputStreamReader;
+import java.io.StringWriter;
+import java.sql.Connection;
+import java.sql.SQLException;
+import java.sql.Statement;
+
+import javax.sql.DataSource;
+
+import org.springframework.core.io.Resource;
+
+/**
+ * A class that populates a datasource with test data
+ */
+public class TestDataPopulator {
+
+    private final DataSource dataSource;
+
+    private final Resource testDataLocation;
+
+    public TestDataPopulator(DataSource dataSource, Resource testDataLocation) {
+        this.dataSource = dataSource;
+        this.testDataLocation = testDataLocation;
+    }
+
+    public void populate() {
+        Connection connection = null;
+        try {
+            connection = dataSource.getConnection();
+            insertTestData(connection);
+        } catch (SQLException e) {
+            throw new RuntimeException("SQL exception occurred acquiring connection", e);
+        } finally {
+            if (connection != null) {
+                try {
+                    connection.close();
+                } catch (SQLException e) {
+                }
+            }
+        }
+    }
+
+    private void insertTestData(Connection connection) {
+        try {
+            String sql = parseSqlIn(testDataLocation);
+            executeSql(sql, connection);
+        } catch (IOException e) {
+            throw new RuntimeException("I/O exception occurred accessing the test data file", e);
+        } catch (SQLException e) {
+            throw new RuntimeException("SQL exception occurred loading test data", e);
+        }
+    }
+
+    private String parseSqlIn(Resource resource) throws IOException {
+        InputStream is = null;
+        try {
+            is = resource.getInputStream();
+            BufferedReader reader = new BufferedReader(new InputStreamReader(is));
+
+            StringWriter sw = new StringWriter();
+            BufferedWriter writer = new BufferedWriter(sw);
+
+            for (int c = reader.read(); c != -1; c = reader.read()) {
+                writer.write(c);
+            }
+            writer.flush();
+            return sw.toString();
+
+        } finally {
+            if (is != null) {
+                is.close();
+            }
+        }
+    }
+
+    private void executeSql(String sql, Connection connection) throws SQLException {
+        Statement statement = connection.createStatement();
+        statement.execute(sql);
+    }
+}
diff --git a/start/greenpages.jpa/src/test/resources/META-INF/spring/test-context.xml b/start/greenpages.jpa/src/test/resources/META-INF/spring/test-context.xml
new file mode 100644
index 0000000..578d192
--- /dev/null
+++ b/start/greenpages.jpa/src/test/resources/META-INF/spring/test-context.xml
@@ -0,0 +1,7 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<beans xmlns="http://www.springframework.org/schema/beans"
+	xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+	xmlns:p="http://www.springframework.org/schema/p"
+	xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd">
+
+</beans>
diff --git a/start/greenpages.jpa/template.mf b/start/greenpages.jpa/template.mf
new file mode 100644
index 0000000..ddf54bc
--- /dev/null
+++ b/start/greenpages.jpa/template.mf
@@ -0,0 +1,11 @@
+Manifest-Version: 1.0
+Bundle-ManifestVersion: 2
+Bundle-Name: GreenPages JPA
+Bundle-SymbolicName: greenpages.jpa
+Bundle-Vendor: SpringSource Inc.
+Bundle-Version: 2.0
+Import-Template: 
+ org.apache.commons.dbcp.*;version="[1.2.2.osgi, 1.2.2.osgi]"
+Excluded-Imports: 
+ org.springframework.test.*,
+ org.junit.*
\ No newline at end of file
diff --git a/start/greenpages.web/.classpath b/start/greenpages.web/.classpath
new file mode 100644
index 0000000..ff5c3ef
--- /dev/null
+++ b/start/greenpages.web/.classpath
@@ -0,0 +1,13 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<classpath>
+	<classpathentry kind="src" output="target/classes" path="src/main/java"/>
+	<classpathentry excluding="**" kind="src" output="target/test-classes" path="src/test/resources"/>
+	<classpathentry kind="src" output="target/test-classes" path="src/test/java"/>
+	<classpathentry kind="con" path="org.maven.ide.eclipse.MAVEN2_CLASSPATH_CONTAINER">
+		<attributes>
+			<attribute name="org.eclipse.jst.component.dependency" value="/WEB-INF/lib"/>
+		</attributes>
+	</classpathentry>
+	<classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER/org.eclipse.jdt.internal.debug.ui.launcher.StandardVMType/JavaSE-1.6"/>
+	<classpathentry kind="output" path="target/classes"/>
+</classpath>
diff --git a/start/greenpages.web/.project b/start/greenpages.web/.project
new file mode 100644
index 0000000..11b1821
--- /dev/null
+++ b/start/greenpages.web/.project
@@ -0,0 +1,44 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<projectDescription>
+	<name>greenpages.web</name>
+	<comment></comment>
+	<projects>
+	</projects>
+	<buildSpec>
+		<buildCommand>
+			<name>org.eclipse.wst.common.project.facet.core.builder</name>
+			<arguments>
+			</arguments>
+		</buildCommand>
+		<buildCommand>
+			<name>org.eclipse.jdt.core.javabuilder</name>
+			<arguments>
+			</arguments>
+		</buildCommand>
+		<buildCommand>
+			<name>org.eclipse.wst.validation.validationbuilder</name>
+			<arguments>
+			</arguments>
+		</buildCommand>
+		<buildCommand>
+			<name>org.springframework.ide.eclipse.core.springbuilder</name>
+			<arguments>
+			</arguments>
+		</buildCommand>
+		<buildCommand>
+			<name>org.maven.ide.eclipse.maven2Builder</name>
+			<arguments>
+			</arguments>
+		</buildCommand>
+	</buildSpec>
+	<natures>
+		<nature>org.maven.ide.eclipse.maven2Nature</nature>
+		<nature>com.springsource.server.ide.facet.core.bundlenature</nature>
+		<nature>org.eclipse.jem.workbench.JavaEMFNature</nature>
+		<nature>org.eclipse.wst.common.modulecore.ModuleCoreNature</nature>
+		<nature>org.eclipse.jdt.core.javanature</nature>
+		<nature>org.springframework.ide.eclipse.core.springnature</nature>
+		<nature>org.eclipse.wst.common.project.facet.core.nature</nature>
+		<nature>org.eclipse.wst.jsdt.core.jsNature</nature>
+	</natures>
+</projectDescription>
diff --git a/start/greenpages.web/.settings/.jsdtscope b/start/greenpages.web/.settings/.jsdtscope
new file mode 100644
index 0000000..bbb8e68
--- /dev/null
+++ b/start/greenpages.web/.settings/.jsdtscope
@@ -0,0 +1,11 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<classpath>
+	<classpathentry kind="con" path="org.eclipse.wst.jsdt.launching.JRE_CONTAINER"/>
+	<classpathentry kind="con" path="org.eclipse.wst.jsdt.launching.WebProject">
+		<attributes>
+			<attribute name="hide" value="true"/>
+		</attributes>
+	</classpathentry>
+	<classpathentry kind="con" path="org.eclipse.wst.jsdt.launching.baseBrowserLibrary"/>
+	<classpathentry kind="output" path=""/>
+</classpath>
diff --git a/start/greenpages.web/.settings/GreenPagesSpringContextTests.launch b/start/greenpages.web/.settings/GreenPagesSpringContextTests.launch
new file mode 100644
index 0000000..e0dbecb
--- /dev/null
+++ b/start/greenpages.web/.settings/GreenPagesSpringContextTests.launch
@@ -0,0 +1,18 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<launchConfiguration type="org.eclipse.jdt.junit.launchconfig">
+<listAttribute key="org.eclipse.debug.core.MAPPED_RESOURCE_PATHS">
+<listEntry value="/greenpages.web/src/test/java/greenpages/tests/GreenPagesSpringContextTests.java"/>
+</listAttribute>
+<listAttribute key="org.eclipse.debug.core.MAPPED_RESOURCE_TYPES">
+<listEntry value="1"/>
+</listAttribute>
+<stringAttribute key="org.eclipse.jdt.junit.CONTAINER" value=""/>
+<booleanAttribute key="org.eclipse.jdt.junit.KEEPRUNNING_ATTR" value="false"/>
+<stringAttribute key="org.eclipse.jdt.junit.TESTNAME" value=""/>
+<stringAttribute key="org.eclipse.jdt.junit.TEST_KIND" value="org.eclipse.jdt.junit.loader.junit4"/>
+<stringAttribute key="org.eclipse.jdt.launching.CLASSPATH_PROVIDER" value="org.maven.ide.eclipse.launchconfig.classpathProvider"/>
+<stringAttribute key="org.eclipse.jdt.launching.MAIN_TYPE" value="greenpages.tests.GreenPagesSpringContextTests"/>
+<stringAttribute key="org.eclipse.jdt.launching.PROJECT_ATTR" value="greenpages.web"/>
+<stringAttribute key="org.eclipse.jdt.launching.SOURCE_PATH_PROVIDER" value="org.maven.ide.eclipse.launchconfig.sourcepathProvider"/>
+<stringAttribute key="org.eclipse.jdt.launching.VM_ARGUMENTS" value="-javaagent:${system_property:user.home}/.m2/repository/org/springframework/org.springframework.instrument/3.0.0.M3/org.springframework.instrument-3.0.0.M3.jar"/>
+</launchConfiguration>
diff --git a/start/greenpages.web/.settings/org.eclipse.wst.common.component b/start/greenpages.web/.settings/org.eclipse.wst.common.component
new file mode 100644
index 0000000..60d1ce0
--- /dev/null
+++ b/start/greenpages.web/.settings/org.eclipse.wst.common.component
@@ -0,0 +1,10 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<project-modules id="moduleCoreId" project-version="1.5.0">
+<wb-module deploy-name="greenpages.web">
+<wb-resource deploy-path="/" source-path="/src/main/webapp"/>
+<wb-resource deploy-path="/WEB-INF/classes" source-path="/src/main/java"/>
+<wb-resource deploy-path="/WEB-INF/classes" source-path="/src/main/resources"/>
+<property name="context-root" value="greenpages"/>
+<property name="java-output-path"/>
+</wb-module>
+</project-modules>
diff --git a/start/greenpages.web/.settings/org.eclipse.wst.common.project.facet.core.xml b/start/greenpages.web/.settings/org.eclipse.wst.common.project.facet.core.xml
new file mode 100644
index 0000000..0ce7597
--- /dev/null
+++ b/start/greenpages.web/.settings/org.eclipse.wst.common.project.facet.core.xml
@@ -0,0 +1,6 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<faceted-project>
+  <installed facet="com.springsource.server.bundle" version="1.0"/>
+  <installed facet="jst.java" version="6.0"/>
+  <installed facet="jst.web" version="2.5"/>
+</faceted-project>
diff --git a/start/greenpages.web/.settings/org.eclipse.wst.jsdt.ui.superType.container b/start/greenpages.web/.settings/org.eclipse.wst.jsdt.ui.superType.container
new file mode 100644
index 0000000..3bd5d0a
--- /dev/null
+++ b/start/greenpages.web/.settings/org.eclipse.wst.jsdt.ui.superType.container
@@ -0,0 +1 @@
+org.eclipse.wst.jsdt.launching.baseBrowserLibrary
\ No newline at end of file
diff --git a/start/greenpages.web/.settings/org.eclipse.wst.jsdt.ui.superType.name b/start/greenpages.web/.settings/org.eclipse.wst.jsdt.ui.superType.name
new file mode 100644
index 0000000..05bd71b
--- /dev/null
+++ b/start/greenpages.web/.settings/org.eclipse.wst.jsdt.ui.superType.name
@@ -0,0 +1 @@
+Window
\ No newline at end of file
diff --git a/start/greenpages.web/.settings/org.maven.ide.eclipse.prefs b/start/greenpages.web/.settings/org.maven.ide.eclipse.prefs
new file mode 100644
index 0000000..6f0c672
--- /dev/null
+++ b/start/greenpages.web/.settings/org.maven.ide.eclipse.prefs
@@ -0,0 +1,9 @@
+#Tue Dec 15 16:06:27 GMT 2009
+activeProfiles=
+eclipse.preferences.version=1
+fullBuildGoals=process-test-resources
+includeModules=false
+resolveWorkspaceProjects=true
+resourceFilterGoals=process-resources resources\:testResources
+skipCompilerPlugin=true
+version=1
diff --git a/start/greenpages.web/.settings/org.springframework.ide.eclipse.beans.core.prefs b/start/greenpages.web/.settings/org.springframework.ide.eclipse.beans.core.prefs
new file mode 100644
index 0000000..af8ab8b
--- /dev/null
+++ b/start/greenpages.web/.settings/org.springframework.ide.eclipse.beans.core.prefs
@@ -0,0 +1,3 @@
+#Mon Mar 09 17:11:56 GMT 2009
+eclipse.preferences.version=1
+org.springframework.ide.eclipse.beans.core.ignoreMissingNamespaceHandler=false
diff --git a/start/greenpages.web/.springBeans b/start/greenpages.web/.springBeans
new file mode 100644
index 0000000..618a258
--- /dev/null
+++ b/start/greenpages.web/.springBeans
@@ -0,0 +1,13 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<beansProjectDescription>
+	<version>1</version>
+	<pluginVersion><![CDATA[2.2.8.200911091054-RELEASE]]></pluginVersion>
+	<configSuffixes>
+		<configSuffix><![CDATA[xml]]></configSuffix>
+	</configSuffixes>
+	<enableImports><![CDATA[false]]></enableImports>
+	<configs>
+	</configs>
+	<configSets>
+	</configSets>
+</beansProjectDescription>
diff --git a/start/greenpages.web/pom.xml b/start/greenpages.web/pom.xml
new file mode 100644
index 0000000..cfa2ebb
--- /dev/null
+++ b/start/greenpages.web/pom.xml
@@ -0,0 +1,74 @@
+<?xml version="1.0" encoding="UTF-8"?>

+<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"

+	xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">

+

+	<parent>

+		<groupId>com.springsource.dmserver</groupId>

+		<artifactId>greenpages.parent</artifactId>

+		<version>2.0.1.SNAPSHOT</version>

+		<relativePath>../parent</relativePath>

+	</parent>

+

+	<modelVersion>4.0.0</modelVersion>

+	<groupId>com.springsource.dmserver</groupId>

+	<artifactId>greenpages.web</artifactId>

+	<name>greenpages.web</name>

+	<packaging>war</packaging>

+

+	<dependencies>

+		<dependency>

+			<groupId>org.springframework</groupId>

+			<artifactId>org.springframework.spring-library</artifactId>

+			<type>libd</type>

+			<scope>provided</scope>

+		</dependency>

+		<dependency>

+			<groupId>org.freemarker</groupId>

+			<artifactId>com.springsource.freemarker</artifactId>

+			<scope>compile</scope>

+		</dependency>

+		<dependency>

+			<groupId>javax.servlet</groupId>

+			<artifactId>com.springsource.javax.servlet</artifactId>

+			<scope>provided</scope>

+		</dependency>

+		<dependency>

+			<groupId>org.junit</groupId>

+			<artifactId>com.springsource.org.junit</artifactId>

+			<scope>test</scope>

+		</dependency>

+		<dependency>

+			<groupId>org.springframework</groupId>

+			<artifactId>org.springframework.test</artifactId>

+			<scope>test</scope>

+		</dependency>

+		<dependency>

+			<groupId>org.springframework</groupId>

+			<artifactId>org.springframework.aspects</artifactId>

+			<scope>test</scope>

+		</dependency>

+		<dependency>

+			<groupId>org.springframework</groupId>

+			<artifactId>org.springframework.instrument</artifactId>

+			<scope>test</scope>

+		</dependency>

+		<dependency>

+			<groupId>org.apache.commons</groupId>

+			<artifactId>com.springsource.org.apache.commons.dbcp</artifactId>

+			<scope>test</scope>

+		</dependency>

+		<dependency>

+			<groupId>com.h2database</groupId>

+			<artifactId>com.springsource.org.h2</artifactId>

+			<scope>test</scope>

+		</dependency>

+		<dependency>

+			<groupId>org.aspectj</groupId>

+			<artifactId>org.aspectj-library</artifactId>

+			<type>libd</type>

+			<scope>test</scope>

+		</dependency>

+

+	</dependencies>

+

+</project>

diff --git a/start/greenpages.web/src/main/java/greenpages/web/.gitignore b/start/greenpages.web/src/main/java/greenpages/web/.gitignore
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/start/greenpages.web/src/main/java/greenpages/web/.gitignore
diff --git a/start/greenpages.web/src/main/webapp/META-INF/MANIFEST.MF b/start/greenpages.web/src/main/webapp/META-INF/MANIFEST.MF
new file mode 100644
index 0000000..795ff6e
--- /dev/null
+++ b/start/greenpages.web/src/main/webapp/META-INF/MANIFEST.MF
@@ -0,0 +1,16 @@
+Manifest-Version: 1.0

+Bundle-Name: GreenPages Web

+Import-Library: org.springframework.spring;version="[3.0, 3.1)"

+Import-Bundle: com.springsource.org.apache.taglibs.standard;version="[

+ 1.1.2,1.3)"

+Import-Package: org.eclipse.virgo.web.dm;version="[2.0.0, 3.0.0)

+ ",freemarker.cache;version="[2.3.15,2.3.15]",javax.servlet.jsp.jstl.c

+ ore;version="[1.1.2,1.2.0)",javax.sql,org.apache.commons.dbcp,org.spr

+ ingframework.core.io,org.springframework.stereotype,org.springframewo

+ rk.web.bind.annotation,org.springframework.web.context,org.springfram

+ ework.web.servlet

+Bundle-ManifestVersion: 2

+Bundle-SymbolicName: greenpages.web

+Tool: Bundlor 1.0.0.M6

+Bundle-Version: 2.0

+

diff --git a/start/greenpages.web/src/main/webapp/WEB-INF/applicationContext.xml b/start/greenpages.web/src/main/webapp/WEB-INF/applicationContext.xml
new file mode 100644
index 0000000..47967d3
--- /dev/null
+++ b/start/greenpages.web/src/main/webapp/WEB-INF/applicationContext.xml
@@ -0,0 +1,11 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<beans xmlns="http://www.springframework.org/schema/beans"
+	xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+	xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd
+		http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context.xsd
+		http://www.springframework.org/schema/osgi http://www.springframework.org/schema/osgi/spring-osgi.xsd"
+	xmlns:context="http://www.springframework.org/schema/context"
+	xmlns:osgi="http://www.springframework.org/schema/osgi">
+	

+

+</beans>
diff --git a/start/greenpages.web/src/main/webapp/WEB-INF/ftl/entry.ftl b/start/greenpages.web/src/main/webapp/WEB-INF/ftl/entry.ftl
new file mode 100644
index 0000000..504e6ec
--- /dev/null
+++ b/start/greenpages.web/src/main/webapp/WEB-INF/ftl/entry.ftl
@@ -0,0 +1,49 @@
+<!DOCTYPE HTML>
+<html>
+<head>
+<title>GreenPages</title>
+  <link rel="stylesheet" href="/greenpages/styles/main.css" type="text/css" />
+  <link rel="stylesheet" href="/greenpages/styles/local.css" type="text/css" />
+  <link rel="stylesheet" href="/greenpages/styles/print.css" type="text/css" media="print" />
+</head>
+<body class="main tundra">
+    <div id="page">
+        <div id="mini-header">
+			<div id="mini-header-left"></div>
+			<div id="mini-header-right"></div>
+        </div> <!-- /mini-header -->
+
+	    <div id="primary-navigation">
+	        <div id="primary-left">
+	            <ul>
+	                <li><a href="/greenpages" title="Admin Console">GreenPages</a></li>
+	            </ul>
+	        </div>
+	        <img id="left-curve" src="/greenpages/images/menu-curve-left.png"/>
+	        <div id="primary-right">
+	            <ul>
+	                <li><a href="/admin" title="Admin Console">Admin Console</a></li>
+	                <li><a href="http://www.eclipse.org/virgo" title="Admin Console">Virgo</a></li>
+	            </ul>
+	        </div>
+	        <img id="right-curve" src="/greenpages/images/menu-curve-right.png"/>
+	    </div><!-- /primary-navigation -->
+
+    <div id="container">
+        <div id="content-no-nav">
+			<h1>Virgo Web Server - Greenpages sample</h1>
+        	<p/>
+            <h2>${listing.firstName} ${listing.lastName}</h2>
+			<a href="mailto:${listing.emailAddress}">${listing.emailAddress}</a>
+        </div> <!-- /content -->
+    </div> <!-- /container -->
+    
+    <div id="footer-wrapper">
+        <div id="footer-left">&copy; Copyright 2008, 2010 VMware Inc. Licensed under the Eclipse Public License v1.0.</div>
+        <div id="footer-right"></div> 
+    </div> <!-- /footer-wrapper -->
+
+  </div> <!-- /page -->
+
+</body>
+</html>
\ No newline at end of file
diff --git a/start/greenpages.web/src/main/webapp/WEB-INF/ftl/home.ftl b/start/greenpages.web/src/main/webapp/WEB-INF/ftl/home.ftl
new file mode 100644
index 0000000..bec4830
--- /dev/null
+++ b/start/greenpages.web/src/main/webapp/WEB-INF/ftl/home.ftl
@@ -0,0 +1,50 @@
+<!DOCTYPE HTML>
+<html>
+<head>
+<title>GreenPages</title>
+  <link rel="stylesheet" href="/greenpages/styles/main.css" type="text/css" />
+  <link rel="stylesheet" href="/greenpages/styles/local.css" type="text/css" />
+  <link rel="stylesheet" href="/greenpages/styles/print.css" type="text/css" media="print" />
+</head>
+<body class="main tundra">
+    <div id="page">
+        <div id="mini-header">
+			<div id="mini-header-left"></div>
+			<div id="mini-header-right"></div>
+        </div> <!-- /mini-header -->
+
+	    <div id="primary-navigation">
+	        <div id="primary-left">
+	            <ul>
+	                <li><a href="/greenpages" title="Admin Console">GreenPages</a></li>
+	            </ul>
+	        </div>
+	        <img id="left-curve" src="/greenpages/images/menu-curve-left.png"/>
+	        <div id="primary-right">
+	            <ul>
+	                <li><a href="/admin" title="Admin Console">Admin Console</a></li>
+	                <li><a href="http://www.eclipse.org/virgo" title="Admin Console">Virgo</a></li>
+	            </ul>
+	        </div>
+	        <img id="right-curve" src="/greenpages/images/menu-curve-right.png"/>
+	    </div><!-- /primary-navigation -->
+
+    <div id="container">
+      <div id="content-no-nav">
+		<h1>Virgo Web Server - Greenpages sample</h1>
+        <p/>
+            <form name="searchForm" method="GET" action="search.htm">
+				<input name="query" type="text"/> <input type="submit"/>
+			</form>
+        </div> <!-- /content -->
+    </div> <!-- /container -->
+    
+    <div id="footer-wrapper">
+        <div id="footer-left">&copy; Copyright 2008, 2010 VMware Inc. Licensed under the Eclipse Public License v1.0.</div>
+        <div id="footer-right"></div> 
+    </div> <!-- /footer-wrapper -->
+
+  </div> <!-- /page -->
+
+</body>
+</html>
\ No newline at end of file
diff --git a/start/greenpages.web/src/main/webapp/WEB-INF/ftl/search.ftl b/start/greenpages.web/src/main/webapp/WEB-INF/ftl/search.ftl
new file mode 100644
index 0000000..f116e48
--- /dev/null
+++ b/start/greenpages.web/src/main/webapp/WEB-INF/ftl/search.ftl
@@ -0,0 +1,72 @@
+<!DOCTYPE HTML>
+<html>
+<head>
+<title>GreenPages</title>
+  <link rel="stylesheet" href="/greenpages/styles/main.css" type="text/css" />
+  <link rel="stylesheet" href="/greenpages/styles/local.css" type="text/css" />
+  <link rel="stylesheet" href="/greenpages/styles/print.css" type="text/css" media="print" />
+</head>
+<body class="main tundra">
+	<div id="page">
+		<div id="mini-header">
+			<div id="mini-header-left"></div>
+			<div id="mini-header-right"></div>
+		</div> <!-- /mini-header -->
+
+		<div id="primary-navigation">
+			<div id="primary-left">
+				<ul>
+					<li><a href="/greenpages" title="Admin Console">GreenPages</a></li>
+				</ul>
+			</div>
+			<img id="left-curve" src="/greenpages/images/menu-curve-left.png"/>
+			<div id="primary-right">
+				<ul>
+					<li><a href="/admin" title="Admin Console">Admin Console</a></li>
+					<li><a href="http://www.eclipse.org/virgo" title="Admin Console">Virgo</a></li>
+				</ul>
+			</div>
+			<img id="right-curve" src="/greenpages/images/menu-curve-right.png"/>
+		</div><!-- /primary-navigation -->
+
+		<div id="container">
+		<div id="content-no-nav">
+			<h1>Virgo Web Server - Greenpages sample</h1>
+			<p/>
+			<form name="searchForm" method="GET" action="search.htm">
+				<input name="query" type="text"/> <input type="submit"/>
+			</form>
+			<#if listingList?? && (listingList?size > 0)>
+				<table id="results">
+					<thead>
+						<tr>
+							<th>Last Name</th>
+							<th>First Name</th>
+							<th>&nbsp;</th>
+						</tr>
+					</thead>
+					<tbody>
+						<#list listingList as listing>
+							<tr>
+								<td>${listing.lastName}</td>
+								<td>${listing.firstName}</td>
+								<td><a href="entry.htm?id=${listing.listingNumber}">view</a></td>
+							</tr>
+						</#list>
+					</tbody>
+				</table>
+			<#else>
+				<h2>No results found.</h2>
+			</#if>
+		</div> <!-- /content -->
+		</div> <!-- /container -->
+    
+    <div id="footer-wrapper">
+        <div id="footer-left">&copy; Copyright 2008, 2010 VMware Inc. Licensed under the Eclipse Public License v1.0.</div>
+        <div id="footer-right"></div> 
+    </div> <!-- /footer-wrapper -->
+
+  </div> <!-- /page -->
+
+</body>
+</html>
\ No newline at end of file
diff --git a/start/greenpages.web/src/main/webapp/WEB-INF/greenpages-servlet.xml b/start/greenpages.web/src/main/webapp/WEB-INF/greenpages-servlet.xml
new file mode 100644
index 0000000..e5a784c
--- /dev/null
+++ b/start/greenpages.web/src/main/webapp/WEB-INF/greenpages-servlet.xml
@@ -0,0 +1,24 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<beans xmlns="http://www.springframework.org/schema/beans"
+	xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+	xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd
+		http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context.xsd"
+	xmlns:context="http://www.springframework.org/schema/context">
+
+	<!-- enable classpath scanning -->
+
+
+	<!-- enable anntotation-driven controllers -->
+	<bean class="org.springframework.web.servlet.mvc.annotation.AnnotationMethodHandlerAdapter" />
+
+
+	<!-- configure FreeMarker support -->
+	<bean id="freemarkerConfig" class="org.springframework.web.servlet.view.freemarker.FreeMarkerConfigurer">
+		<property name="templateLoaderPath" value="/WEB-INF/ftl/" />
+	</bean>
+
+	<bean id="viewResolver"	class="org.springframework.web.servlet.view.freemarker.FreeMarkerViewResolver">
+		<property name="cache" value="true" />
+		<property name="suffix" value=".ftl" />
+	</bean>
+</beans>
diff --git a/start/greenpages.web/src/main/webapp/WEB-INF/web.xml b/start/greenpages.web/src/main/webapp/WEB-INF/web.xml
new file mode 100644
index 0000000..f5a6641
--- /dev/null
+++ b/start/greenpages.web/src/main/webapp/WEB-INF/web.xml
@@ -0,0 +1,37 @@
+<?xml version="1.0" encoding="ISO-8859-1"?>
+<web-app xmlns="http://java.sun.com/xml/ns/javaee" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+  xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd" version="2.5">
+
+  <display-name>Greenpages - web</display-name>
+
+
+  <welcome-file-list>
+    <welcome-file>index.jsp</welcome-file>
+    <welcome-file>index.html</welcome-file>
+    <welcome-file>index.htm</welcome-file>
+  </welcome-file-list>
+
+<!-- CONFIGURE A PARENT APPLICATION CONTEXT -->
+
+  <context-param>
+    <param-name>contextClass</param-name>
+    <param-value>org.eclipse.virgo.web.dm.ServerOsgiBundleXmlWebApplicationContext</param-value>
+  </context-param>
+
+  <listener>
+    <listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>
+  </listener>
+
+
+  <!-- DISPATCHER SERVLET CONFIG -->
+  <servlet>
+    <servlet-name>greenpages</servlet-name>
+    <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
+  </servlet>
+
+  <servlet-mapping>
+    <servlet-name>greenpages</servlet-name>
+    <url-pattern>/app/*</url-pattern>
+  </servlet-mapping>
+
+</web-app>
\ No newline at end of file
diff --git a/start/greenpages.web/src/main/webapp/images/favicon.ico b/start/greenpages.web/src/main/webapp/images/favicon.ico
new file mode 100755
index 0000000..9244a9c
--- /dev/null
+++ b/start/greenpages.web/src/main/webapp/images/favicon.ico
Binary files differ
diff --git a/start/greenpages.web/src/main/webapp/images/footer-left.png b/start/greenpages.web/src/main/webapp/images/footer-left.png
new file mode 100644
index 0000000..8bfe3b1
--- /dev/null
+++ b/start/greenpages.web/src/main/webapp/images/footer-left.png
Binary files differ
diff --git a/start/greenpages.web/src/main/webapp/images/footer-right.png b/start/greenpages.web/src/main/webapp/images/footer-right.png
new file mode 100644
index 0000000..51527ad
--- /dev/null
+++ b/start/greenpages.web/src/main/webapp/images/footer-right.png
Binary files differ
diff --git a/start/greenpages.web/src/main/webapp/images/footer-stretch.png b/start/greenpages.web/src/main/webapp/images/footer-stretch.png
new file mode 100644
index 0000000..c58f721
--- /dev/null
+++ b/start/greenpages.web/src/main/webapp/images/footer-stretch.png
Binary files differ
diff --git a/start/greenpages.web/src/main/webapp/images/header-left.png b/start/greenpages.web/src/main/webapp/images/header-left.png
new file mode 100644
index 0000000..4920a0a
--- /dev/null
+++ b/start/greenpages.web/src/main/webapp/images/header-left.png
Binary files differ
diff --git a/start/greenpages.web/src/main/webapp/images/header-right.png b/start/greenpages.web/src/main/webapp/images/header-right.png
new file mode 100644
index 0000000..09b0a59
--- /dev/null
+++ b/start/greenpages.web/src/main/webapp/images/header-right.png
Binary files differ
diff --git a/start/greenpages.web/src/main/webapp/images/loader-white-large.gif b/start/greenpages.web/src/main/webapp/images/loader-white-large.gif
new file mode 100644
index 0000000..aa4ec5a
--- /dev/null
+++ b/start/greenpages.web/src/main/webapp/images/loader-white-large.gif
Binary files differ
diff --git a/start/greenpages.web/src/main/webapp/images/loader-white-small.gif b/start/greenpages.web/src/main/webapp/images/loader-white-small.gif
new file mode 100644
index 0000000..75ad2b3
--- /dev/null
+++ b/start/greenpages.web/src/main/webapp/images/loader-white-small.gif
Binary files differ
diff --git a/start/greenpages.web/src/main/webapp/images/menu-curve-left.png b/start/greenpages.web/src/main/webapp/images/menu-curve-left.png
new file mode 100644
index 0000000..c48a2e0
--- /dev/null
+++ b/start/greenpages.web/src/main/webapp/images/menu-curve-left.png
Binary files differ
diff --git a/start/greenpages.web/src/main/webapp/images/menu-curve-right.png b/start/greenpages.web/src/main/webapp/images/menu-curve-right.png
new file mode 100644
index 0000000..1f3b100
--- /dev/null
+++ b/start/greenpages.web/src/main/webapp/images/menu-curve-right.png
Binary files differ
diff --git a/start/greenpages.web/src/main/webapp/images/menu-stretch.png b/start/greenpages.web/src/main/webapp/images/menu-stretch.png
new file mode 100644
index 0000000..0ca66f7
--- /dev/null
+++ b/start/greenpages.web/src/main/webapp/images/menu-stretch.png
Binary files differ
diff --git a/start/greenpages.web/src/main/webapp/images/mini-header-left.png b/start/greenpages.web/src/main/webapp/images/mini-header-left.png
new file mode 100644
index 0000000..72551e7
--- /dev/null
+++ b/start/greenpages.web/src/main/webapp/images/mini-header-left.png
Binary files differ
diff --git a/start/greenpages.web/src/main/webapp/images/mini-header-right.png b/start/greenpages.web/src/main/webapp/images/mini-header-right.png
new file mode 100644
index 0000000..8aaf50c
--- /dev/null
+++ b/start/greenpages.web/src/main/webapp/images/mini-header-right.png
Binary files differ
diff --git a/start/greenpages.web/src/main/webapp/images/s2ap_soda_can.png b/start/greenpages.web/src/main/webapp/images/s2ap_soda_can.png
new file mode 100644
index 0000000..8eb53a8
--- /dev/null
+++ b/start/greenpages.web/src/main/webapp/images/s2ap_soda_can.png
Binary files differ
diff --git a/start/greenpages.web/src/main/webapp/images/spring.png b/start/greenpages.web/src/main/webapp/images/spring.png
new file mode 100644
index 0000000..05a1940
--- /dev/null
+++ b/start/greenpages.web/src/main/webapp/images/spring.png
Binary files differ
diff --git a/start/greenpages.web/src/main/webapp/images/table-header-background.png b/start/greenpages.web/src/main/webapp/images/table-header-background.png
new file mode 100644
index 0000000..8f2ba1b
--- /dev/null
+++ b/start/greenpages.web/src/main/webapp/images/table-header-background.png
Binary files differ
diff --git a/start/greenpages.web/src/main/webapp/index.html b/start/greenpages.web/src/main/webapp/index.html
new file mode 100644
index 0000000..a541368
--- /dev/null
+++ b/start/greenpages.web/src/main/webapp/index.html
@@ -0,0 +1,10 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
+<html>
+	<head>
+		<title>GreenPages</title>
+		<meta http-equiv="REFRESH" content="0;url=/greenpages/app/home.htm">
+	</head>
+	<body>
+	
+	</body>
+</html>
\ No newline at end of file
diff --git a/start/greenpages.web/src/main/webapp/styles/local.css b/start/greenpages.web/src/main/webapp/styles/local.css
new file mode 100644
index 0000000..8302e89
--- /dev/null
+++ b/start/greenpages.web/src/main/webapp/styles/local.css
@@ -0,0 +1,40 @@
+/* 
+ *  Local style information for the Virgo Splash Screen
+ *
+ *  Contains both style and colour information and 
+ *  overrides content from the dojo/tundra style.
+ *
+ *  Christopher Frost - March 2010
+ *
+ */
+ 
+#mini-header, #mini-header-left, #mini-header-right {
+	height: 7px;
+	width: 7px;
+	margin: 0px;
+	padding: 0px;
+}
+
+#mini-header {
+	width: 100%;
+	background-color: #002e62; 
+}
+
+#mini-header-left {
+	background-image: url(../images/mini-header-left.png); 
+	background-repeat: no-repeat; 
+	background-position: left top;
+	float: left;
+}
+
+#mini-header-right {
+	background-image: url(../images/mini-header-right.png); 
+	background-repeat: no-repeat scroll; 
+	background-position: right top;
+	float: right;
+}
+ 
+#content-no-nav {
+	background: transparent url(../images/s2ap_soda_can.png) no-repeat bottom right;
+	height: 400px;
+}
\ No newline at end of file
diff --git a/start/greenpages.web/src/main/webapp/styles/main.css b/start/greenpages.web/src/main/webapp/styles/main.css
new file mode 100644
index 0000000..8eac83a
--- /dev/null
+++ b/start/greenpages.web/src/main/webapp/styles/main.css
@@ -0,0 +1,290 @@
+/* 
+ * MAIN CSS
+ *
+ * All styles for the screen, other than color-specific styles,
+ * should be included here.  
+ *
+ * COMMON STYLES
+ */
+body {
+	font: 12px Helvetica, Arial, "Bitstream Vera Sans", sans-serif;
+	background-color: #dfdfdf;
+}
+
+#page {
+	margin: auto;
+	width: 800px;
+	color: #333;
+}
+
+/*
+ * HEADER STYLES
+ */
+#header {
+	background: #fff url(../images/header-right.png) no-repeat scroll right top;
+	width: 100%;
+	height: 100px;
+}
+
+#name-and-company {
+	background: transparent url(../images/header-left.png) no-repeat top left;
+	width: 100%;
+	height: 100px;
+	top: 0px;
+	left: 0px;
+}
+
+#site-name {
+	background: transparent url(../images/header-title-left.png) no-repeat scroll center center;
+	height: 100px;
+	width: 345px;
+}
+
+#site-name a, #site-name a:hover {
+	height: 60px;
+	width: 190px;
+}
+
+#company-name a, #site-name a:hover {
+	height: 60px;
+	width: 190px;
+}
+
+
+/*
+ * TEXT FORMATTING STYLES
+ */
+h1 {
+	font-size: 1.4em;
+	padding: 12px 0 5px 0;
+	line-height: 125%;
+	color: #002E62;
+	border-bottom: 1px solid #BAD9EC;
+}
+
+h2 {
+	font-size: 1.2em;
+	padding: 10px 0 2px 0;
+	color: #002E62;
+}
+
+h3 {
+	font-size: 1em;
+	padding: 8px 0 5px 0;
+	color: #002E62;
+}
+
+h4 {
+	font-size: 1em;
+	padding-top: 8px;
+	color: #333;
+}
+
+h5 {
+	font-size: 1em;
+	padding-top: 6px;
+	color: #333;
+}
+
+/*
+ * LINK STYLES
+ */
+ 
+a:link, a:visited {
+	color: #333;
+	text-decoration: underline;
+}
+
+a:hover, a:focus {
+	color: #0093CF;
+	text-decoration: underline;
+}
+
+a:active, a.active { 
+	color: #0093CF;
+}
+  
+/*
+ * MENU STYLES
+ */
+#primary-navigation {
+	background: #fff url(../images/menu-stretch.png) repeat-x scroll 0 0;
+	height:29px;
+	margin:0;
+	padding:0;
+	position: relative;
+}
+
+#primary-left {
+	background: #002E62;
+	float: left;
+	height: 26px;
+	line-height: normal;
+	padding: 3px 0 0;
+	position: relative;
+}
+
+#primary-right {
+	background: #002E62;
+	float: right;
+	height: 26px;
+	line-height: normal;
+	padding: 3px 0 0;
+	position: relative;
+}
+
+#primary-left ul, #primary-right ul {
+	padding: 0 4px 0 4px;
+	margin: 2px 0 0 0;
+	list-style: none;
+}
+
+#primary-left li, #primary-right li {
+	display: inline;
+}
+
+#primary-left a, #primary-right a {
+	color: #ffffff;
+	display: block;
+	float: left;
+	font-weight:normal;
+	margin: 0 1px 0 1px;
+	padding: 7px 8px 4px 10px;
+	text-decoration: none;
+}
+
+#primary-left a:hover, #primary-right a:hover, .selected-menu {
+	background: #ffffff;
+	color:#002E62;
+	text-decoration: none;
+}
+
+#left-curve {
+	float: left;
+}
+
+#right-curve {
+	float: right;
+}
+
+/*
+ * CONTAINER STYLES
+ */
+#content-no-nav {
+	display: block;
+	margin: 0px 22px 20px 22px;
+	padding: 0;
+}
+ 
+#container {
+	margin: 0;
+	padding-bottom: 20px;
+	overflow:hidden;
+	background:#fff;
+}
+
+/*
+ * TABLE STYLES
+ */
+table {
+	border-spacing: 0;
+	margin: 0;
+	border-collapse: collapse;
+	color:#666;
+}
+
+th {
+	height: 19px;
+	text-align: left;
+	font-weight: bold;
+	margin: 0;
+	padding: 3px 6px 0 6px;
+	line-height: 19px;
+	color:#333;
+}
+ 
+.bordered-table {
+	border:1px solid #BAD9EC;
+}
+
+.bordered-table th {
+	background-image: url(../images/table-header-background.png);
+	background-repeat: repeat-x;
+	white-space: nowrap;
+	border-bottom: 1px solid #BAD9EC;
+}
+
+td {
+	margin: 0;
+	padding: 4px 6px 4px 6px;
+	vertical-align: top;
+}
+
+td.table-icon {
+	padding-top: 2px;
+	padding-bottom: 1px;
+}
+
+.sublevel1-odd {
+	background:#fff;
+}
+ 
+.sublevel1-even {
+	background:#E8F6FF;
+}
+
+.two-tables {
+	width:100%;
+}
+
+.two-tables .left {
+	float:left;
+}
+
+.two-tables .right {
+	float:right;
+}
+
+/*
+ * FOOTER STYLES
+ */
+#footer-wrapper {
+	clear: both;
+	margin: 0;
+	background-image: url(../images/footer-stretch.png);
+	background-repeat: repeat-x;
+	height: 29px;
+	width: 100%;
+}
+
+#footer-left, #footer-right {
+	margin: 0;
+	font-size: 85%;
+	padding: 1em;
+	height: 29px;
+    color: #bbb;
+}
+
+#footer-left {
+	text-align: left;
+	background-image: url(../images/footer-left.png);
+	background-repeat: no-repeat;
+	position: relative;
+	left: 0;
+	float: left;
+}
+
+#footer-right {
+	text-align: right;
+	background-image: url(../images/footer-right.png);
+	background-repeat: no-repeat;
+	background-position: top right;
+	position: relative;
+	right: 0;
+	float: right;
+}
+
+#footer-left a, #footer-right a {
+    color: #999;
+    text-decoration:none;
+}
diff --git a/start/greenpages.web/src/main/webapp/styles/print.css b/start/greenpages.web/src/main/webapp/styles/print.css
new file mode 100644
index 0000000..f325cfc
--- /dev/null
+++ b/start/greenpages.web/src/main/webapp/styles/print.css
@@ -0,0 +1,46 @@
+/* White background, black text, arial font, decent font size */
+body {
+	background-color: #fff;
+	color: #000;
+	font-family: Arial, Helvetica, "Bitstream Vera Sans", sans-serif;
+	font-size: 10pt;
+	width: 100%;
+}
+
+/* Change the layout to remove columns */
+html body {
+	background: transparent;
+	width: auto;
+}
+
+#main,#container {
+	width: 100%;
+}
+
+#page {
+	margin: 0;
+	width: 90%;
+}
+
+#content {
+	margin: 0;
+	overflow: visible;
+}
+
+/* Hide header and nav elements */
+#header,#primary-navigation,#secondary-navigation,#footer-wrapper {
+	visibility: hidden;
+	display: none;
+}
+
+/* Style links */
+a:link,a:visited {
+	color: #520;
+	background: transparent;
+	text-decoration: underline !important;
+}
+
+/* Remove table header graphic */
+.bordered-table th {
+	background-image: none;
+}
\ No newline at end of file
diff --git a/start/greenpages.web/src/test/java/greenpages/tests/GreenPagesSpringContextTests.java b/start/greenpages.web/src/test/java/greenpages/tests/GreenPagesSpringContextTests.java
new file mode 100644
index 0000000..47deaf1
--- /dev/null
+++ b/start/greenpages.web/src/test/java/greenpages/tests/GreenPagesSpringContextTests.java
@@ -0,0 +1,44 @@
+/*******************************************************************************
+ * Copyright (c) 2008, 2010 VMware Inc.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ *   VMware Inc. - initial contribution
+ *******************************************************************************/
+
+package greenpages.tests;
+
+//import static org.junit.Assert.assertEquals;
+//import static org.junit.Assert.assertNotNull;
+//import greenpages.Listing;
+//import java.util.List;
+//import org.springframework.beans.factory.annotation.Autowired;
+
+import org.junit.Test;
+
+public class GreenPagesSpringContextTests {
+
+//    @Autowired
+//    private GreenPagesController controller;
+
+    @Test
+    public void search() {
+//        List<Listing> results = this.controller.search("johnson");
+//        assertNotNull(results);
+//        assertEquals(1, results.size());
+//
+//        Listing listing = results.get(0);
+//        assertNotNull(listing);
+//        assertEquals("Johnson", listing.getLastName());
+    }
+
+    @Test
+    public void entry() {
+//        Listing listing = this.controller.entry(1);
+//        assertNotNull(listing);
+//        assertEquals("Johnson", listing.getLastName());
+    }
+}
diff --git a/start/greenpages.web/src/test/java/greenpages/tests/TestDataPopulator.java b/start/greenpages.web/src/test/java/greenpages/tests/TestDataPopulator.java
new file mode 100644
index 0000000..0283b9b
--- /dev/null
+++ b/start/greenpages.web/src/test/java/greenpages/tests/TestDataPopulator.java
@@ -0,0 +1,96 @@
+/*******************************************************************************
+ * Copyright (c) 2008, 2010 VMware Inc.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ *   VMware Inc. - initial contribution
+ *******************************************************************************/
+
+package greenpages.tests;
+
+import java.io.BufferedReader;
+import java.io.BufferedWriter;
+import java.io.IOException;
+import java.io.InputStream;
+import java.io.InputStreamReader;
+import java.io.StringWriter;
+import java.sql.Connection;
+import java.sql.SQLException;
+import java.sql.Statement;
+
+import javax.sql.DataSource;
+
+import org.springframework.core.io.Resource;
+
+/**
+ * A class that populates a datasource with test data
+ */
+public class TestDataPopulator {
+
+    private final DataSource dataSource;
+
+    private final Resource testDataLocation;
+
+    public TestDataPopulator(DataSource dataSource, Resource testDataLocation) {
+        this.dataSource = dataSource;
+        this.testDataLocation = testDataLocation;
+    }
+
+    public void populate() {
+        Connection connection = null;
+        try {
+            connection = dataSource.getConnection();
+            insertTestData(connection);
+        } catch (SQLException e) {
+            throw new RuntimeException("SQL exception occurred acquiring connection", e);
+        } finally {
+            if (connection != null) {
+                try {
+                    connection.close();
+                } catch (SQLException e) {
+                }
+            }
+        }
+    }
+
+    private void insertTestData(Connection connection) {
+        try {
+            String sql = parseSqlIn(testDataLocation);
+            executeSql(sql, connection);
+        } catch (IOException e) {
+            throw new RuntimeException("I/O exception occurred accessing the test data file", e);
+        } catch (SQLException e) {
+            throw new RuntimeException("SQL exception occurred loading test data", e);
+        }
+    }
+
+    private String parseSqlIn(Resource resource) throws IOException {
+        InputStream is = null;
+        try {
+            is = resource.getInputStream();
+            BufferedReader reader = new BufferedReader(new InputStreamReader(is));
+
+            StringWriter sw = new StringWriter();
+            BufferedWriter writer = new BufferedWriter(sw);
+
+            for (int c = reader.read(); c != -1; c = reader.read()) {
+                writer.write(c);
+            }
+            writer.flush();
+            return sw.toString();
+
+        } finally {
+            if (is != null) {
+                is.close();
+            }
+        }
+    }
+
+    private void executeSql(String sql, Connection connection) throws SQLException {
+        Statement statement = connection.createStatement();
+        statement.execute(sql);
+    }
+}
diff --git a/start/greenpages.web/src/test/resources/META-INF/spring/test-context.xml b/start/greenpages.web/src/test/resources/META-INF/spring/test-context.xml
new file mode 100644
index 0000000..39c88f1
--- /dev/null
+++ b/start/greenpages.web/src/test/resources/META-INF/spring/test-context.xml
@@ -0,0 +1,17 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<beans xmlns="http://www.springframework.org/schema/beans"
+	xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+	xmlns:p="http://www.springframework.org/schema/p"
+	xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd">
+
+	<bean id="dataSource" class="org.apache.commons.dbcp.BasicDataSource" 
+	 		p:driverClassName="org.h2.Driver" p:url="jdbc:h2:.~/greenpages-db/greenpages"
+	 		p:username="greenpages" p:password="pass"
+	 		init-method="createDataSource" destroy-method="close"/>
+
+	<bean class="greenpages.tests.TestDataPopulator" init-method="populate">
+		<constructor-arg ref="dataSource"/>
+		<constructor-arg value="file:../../db/db.sql"/>
+	</bean>
+
+</beans>
diff --git a/start/greenpages.web/template.mf b/start/greenpages.web/template.mf
new file mode 100644
index 0000000..00ba4ff
--- /dev/null
+++ b/start/greenpages.web/template.mf
@@ -0,0 +1,19 @@
+Manifest-Version: 1.0
+Bundle-ManifestVersion: 2
+Bundle-Name: GreenPages Web
+Bundle-SymbolicName: greenpages.web
+Bundle-Version: 2.0
+Import-Package: 
+ javax.servlet.jsp.jstl.core;version="[1.1.2,1.2.0)",
+ org.eclipse.virgo.web.dm;version="[2.0.0, 3.0.0)",
+ freemarker.cache;version="[2.3.15,2.3.15]"
+Import-Bundle: 
+ com.springsource.org.apache.taglibs.standard;version="[1.1.2,1.3)"
+Import-Library: 
+ org.springframework.spring;version="[3.0, 3.1)"
+Excluded-Exports: 
+ greenpages.tests,
+ greenpages.web
+Excluded-Imports: 
+ org.springframework.test.*,
+ org.junit.*
diff --git a/start/parent/.classpath b/start/parent/.classpath
new file mode 100644
index 0000000..25df935
--- /dev/null
+++ b/start/parent/.classpath
@@ -0,0 +1,6 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<classpath>
+	<classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER/org.eclipse.jdt.internal.debug.ui.launcher.StandardVMType/JavaSE-1.6"/>
+	<classpathentry kind="con" path="org.maven.ide.eclipse.MAVEN2_CLASSPATH_CONTAINER"/>
+	<classpathentry kind="output" path="target/classes"/>
+</classpath>
diff --git a/start/parent/.project b/start/parent/.project
new file mode 100644
index 0000000..1b729b7
--- /dev/null
+++ b/start/parent/.project
@@ -0,0 +1,23 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<projectDescription>
+	<name>greenpages.parent</name>
+	<comment></comment>
+	<projects>
+	</projects>
+	<buildSpec>
+		<buildCommand>
+			<name>org.eclipse.jdt.core.javabuilder</name>
+			<arguments>
+			</arguments>
+		</buildCommand>
+		<buildCommand>
+			<name>org.maven.ide.eclipse.maven2Builder</name>
+			<arguments>
+			</arguments>
+		</buildCommand>
+	</buildSpec>
+	<natures>
+		<nature>org.eclipse.jdt.core.javanature</nature>
+		<nature>org.maven.ide.eclipse.maven2Nature</nature>
+	</natures>
+</projectDescription>
diff --git a/start/parent/.settings/org.maven.ide.eclipse.prefs b/start/parent/.settings/org.maven.ide.eclipse.prefs
new file mode 100644
index 0000000..980e36e
--- /dev/null
+++ b/start/parent/.settings/org.maven.ide.eclipse.prefs
@@ -0,0 +1,9 @@
+#Tue Jun 23 10:37:10 BST 2009
+activeProfiles=
+eclipse.preferences.version=1
+fullBuildGoals=process-test-resources
+includeModules=false
+resolveWorkspaceProjects=true
+resourceFilterGoals=process-resources resources\:testResources
+skipCompilerPlugin=true
+version=1
diff --git a/start/parent/pom.xml b/start/parent/pom.xml
new file mode 100644
index 0000000..72182b0
--- /dev/null
+++ b/start/parent/pom.xml
@@ -0,0 +1,210 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<project
+		xmlns="http://maven.apache.org/POM/4.0.0"
+		xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+		xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
+
+	<modelVersion>4.0.0</modelVersion>
+	<groupId>com.springsource.dmserver</groupId>
+	<artifactId>greenpages.parent</artifactId>
+	<version>2.0.1.SNAPSHOT</version>
+	<name>greenpages.parent</name>
+	<packaging>pom</packaging>
+
+	<dependencyManagement>
+		<dependencies>
+			<dependency>
+			    <groupId>org.springframework</groupId>
+			    <artifactId>org.springframework.spring-library</artifactId>
+			    <type>libd</type>
+			    <version>3.0.0.M3</version>
+				<scope>provided</scope>
+			</dependency>
+			<dependency>
+			    <groupId>org.apache.commons</groupId>
+			    <artifactId>com.springsource.org.apache.commons.dbcp</artifactId>
+			    <version>1.2.2.osgi</version>
+				<scope>compile</scope>
+			</dependency>
+			<dependency>
+			    <groupId>com.h2database</groupId>
+			    <artifactId>com.springsource.org.h2</artifactId>
+			    <version>1.0.71</version>
+				<scope>compile</scope>
+			</dependency>
+			<dependency>
+			    <groupId>javax.persistence</groupId>
+			    <artifactId>com.springsource.javax.persistence</artifactId>
+			    <version>1.0.0</version>
+				<scope>compile</scope>
+			</dependency>
+			<dependency>
+			    <groupId>org.eclipse.persistence</groupId>
+			    <artifactId>com.springsource.org.eclipse.persistence</artifactId>
+			    <version>1.0.0</version>
+				<scope>compile</scope>
+			</dependency>
+			<dependency>
+			    <groupId>org.eclipse.persistence</groupId>
+			    <artifactId>com.springsource.org.eclipse.persistence.jpa</artifactId>
+			    <version>1.0.0</version>
+				<scope>compile</scope>
+			</dependency>
+			<dependency>
+			    <groupId>org.aspectj</groupId>
+			    <artifactId>org.aspectj-library</artifactId>
+			    <type>libd</type>
+			    <version>1.6.2.RELEASE</version>
+				<scope>provided</scope>
+			</dependency>
+			<dependency>
+			    <groupId>org.freemarker</groupId>
+			    <artifactId>com.springsource.freemarker</artifactId>
+			    <version>2.3.15</version>
+				<scope>compile</scope>
+			</dependency>
+			<dependency>
+				<groupId>org.junit</groupId>
+				<artifactId>com.springsource.org.junit</artifactId>
+				<version>4.5.0</version>
+				<scope>test</scope>
+			</dependency>
+			<dependency>
+				<groupId>org.springframework</groupId>
+				<artifactId>org.springframework.test</artifactId>
+			    <version>3.0.0.M3</version>
+				<scope>test</scope>
+			</dependency>
+			<dependency>
+				<groupId>org.springframework</groupId>
+				<artifactId>org.springframework.instrument</artifactId>
+			    <version>3.0.0.M3</version>
+				<scope>test</scope>
+			</dependency>
+			<dependency>
+				<groupId>org.springframework</groupId>
+				<artifactId>org.springframework.aspects</artifactId>
+			    <version>3.0.0.M3</version>
+				<scope>test</scope>
+			</dependency>
+			<dependency>
+				<groupId>javax.servlet</groupId>
+				<artifactId>com.springsource.javax.servlet</artifactId>
+				<version>2.5.0</version>
+				<scope>provided</scope>
+			</dependency>
+		</dependencies>
+	</dependencyManagement>
+
+	<repositories>
+		<repository>
+		    <id>com.springsource.repository.bundles.snapshot</id>
+		    <name>SpringSource Enterprise Bundle Repository - SpringSource Bundle Snapshot</name>
+			<url>http://repository.springsource.com/maven/bundles/snapshot</url>
+		</repository>
+		<repository>
+		    <id>com.springsource.repository.bundles.release</id>
+		    <name>SpringSource Enterprise Bundle Repository - SpringSource Bundle Releases</name>
+			<url>http://repository.springsource.com/maven/bundles/release</url>
+		</repository>
+		<repository>
+			<id>com.springsource.repository.bundle.external</id>
+			<name>SpringSource Enterprise Bundle Repository - External Bundle Releases</name>
+			<url>http://repository.springsource.com/maven/bundles/external</url>
+		</repository>
+		<repository>
+			<id>com.springsource.repository.bundle.milestone</id>
+		    <name>SpringSource Enterprise Bundle Repository - SpringSource Bundle Milestones</name>
+			<url>http://repository.springsource.com/maven/bundles/milestone</url>
+		</repository>
+
+		<repository>
+		    <id>com.springsource.repository.libraries.release</id>
+		    <name>SpringSource Enterprise Bundle Repository - SpringSource Library Releases</name>
+		    <url>http://repository.springsource.com/maven/libraries/release</url>
+		</repository>
+		<repository>
+		    <id>com.springsource.repository.libraries.external</id>
+		    <name>SpringSource Enterprise Bundle Repository - External Library Releases</name>
+		    <url>http://repository.springsource.com/maven/libraries/external</url>
+		</repository>
+		<repository>
+		    <id>com.springsource.repository.libraries.milestone</id>
+		    <name>SpringSource Enterprise Bundle Repository - Milestone Library Releases</name>
+		    <url>http://repository.springsource.com/maven/libraries/milestone</url>
+		</repository>
+		<repository>
+		    <id>com.springsource.repository.libraries.snapshot</id>
+		    <name>SpringSource Enterprise Bundle Repository - Snapshot Library Releases</name>
+		    <url>http://repository.springsource.com/maven/libraries/snapshot</url>
+		</repository>
+	</repositories>
+
+	<properties>
+		<maven.test.failure.ignore>true</maven.test.failure.ignore>
+	</properties>
+
+	<pluginRepositories>
+		<pluginRepository>
+			<id>com.springsource.repository.bundles.release</id>
+			<name>SpringSource Enterprise Bundle Repository - Releases</name>
+			<url>http://repository.springsource.com/maven/bundles/release</url>
+		</pluginRepository>
+		<pluginRepository>
+			<id>com.springsource.repository.bundles.milestone</id>
+			<name>SpringSource Enterprise Bundle Repository - Milestone</name>
+			<url>http://repository.springsource.com/maven/bundles/milestone</url>
+		</pluginRepository>
+	</pluginRepositories>
+
+	<build>
+		<plugins>
+			<plugin>
+				<groupId>com.springsource.bundlor</groupId>
+				<artifactId>com.springsource.bundlor.maven</artifactId>
+				<version>1.0.0.M2</version>
+				<executions>
+					<execution>
+						<id>bundlor</id>
+						<goals>
+							<goal>transform</goal>
+						</goals>
+						<phase>package</phase>
+					</execution>
+				</executions>
+			</plugin>
+			<plugin>
+				<groupId>org.apache.maven.plugins</groupId>
+				<artifactId>maven-compiler-plugin</artifactId>
+				<configuration>
+					<source>1.5</source>
+					<target>1.5</target>
+				</configuration>
+			</plugin>
+			<plugin>
+				<groupId>org.apache.maven.plugins</groupId>
+				<artifactId>maven-jar-plugin</artifactId>
+				<configuration>
+					<archive>
+						<manifestFile>
+							src/main/resources/META-INF/MANIFEST.MF
+						</manifestFile>
+					</archive>
+				</configuration>
+			</plugin>
+			<plugin>
+				<groupId>org.apache.maven.plugins</groupId>
+				<artifactId>maven-surefire-plugin</artifactId>
+				<configuration>
+					<includes>
+						<include>**/*Tests.java</include>
+					</includes>
+					<excludes>
+						<exclude>**/Abstract*.java</exclude>
+					</excludes>
+				</configuration>
+			</plugin>
+		</plugins>
+	</build>
+
+</project>
diff --git a/start/pom.xml b/start/pom.xml
new file mode 100644
index 0000000..f9e2fdf
--- /dev/null
+++ b/start/pom.xml
@@ -0,0 +1,20 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<project
+		xmlns="http://maven.apache.org/POM/4.0.0"
+		xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+		xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
+
+	<modelVersion>4.0.0</modelVersion>
+	<groupId>com.springsource.dmserver</groupId>
+	<artifactId>greenpages-top-level</artifactId>
+	<version>2.0.1.SNAPSHOT</version>
+    <name>GreenPages App Build</name>
+	<packaging>pom</packaging>
+	<modules>
+		<module>parent</module>
+		<module>greenpages.db</module>
+		<module>greenpages.app</module>
+		<module>greenpages.jpa</module>
+		<module>greenpages.web</module>
+	</modules>
+</project>
diff --git a/virgo-build b/virgo-build
new file mode 160000
index 0000000..aa4ba9b
--- /dev/null
+++ b/virgo-build
@@ -0,0 +1 @@
+Subproject commit aa4ba9be8018222f3ec7cb1fdf39615641d504b6