You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@cayenne.apache.org by aa...@apache.org on 2010/01/16 17:49:37 UTC

svn commit: r899986 - in /cayenne/main/trunk: assembly/src/main/assembly/ tutorials/ tutorials/tutorial-rop-client/ tutorials/tutorial-rop-client/.settings/ tutorials/tutorial-rop-client/src/ tutorials/tutorial-rop-client/src/main/ tutorials/tutorial-r...

Author: aadamchik
Date: Sat Jan 16 16:49:35 2010
New Revision: 899986

URL: http://svn.apache.org/viewvc?rev=899986&view=rev
Log:
CAY-1216 Improve the Remote-Object-Persistence-Tutorial for 3.0

Added:
    cayenne/main/trunk/tutorials/tutorial-rop-client/
    cayenne/main/trunk/tutorials/tutorial-rop-client/.classpath
    cayenne/main/trunk/tutorials/tutorial-rop-client/.project
    cayenne/main/trunk/tutorials/tutorial-rop-client/.settings/
    cayenne/main/trunk/tutorials/tutorial-rop-client/.settings/org.eclipse.jdt.core.prefs
    cayenne/main/trunk/tutorials/tutorial-rop-client/.settings/org.maven.ide.eclipse.prefs
    cayenne/main/trunk/tutorials/tutorial-rop-client/pom.xml
    cayenne/main/trunk/tutorials/tutorial-rop-client/src/
    cayenne/main/trunk/tutorials/tutorial-rop-client/src/main/
    cayenne/main/trunk/tutorials/tutorial-rop-client/src/main/java/
    cayenne/main/trunk/tutorials/tutorial-rop-client/src/main/java/org/
    cayenne/main/trunk/tutorials/tutorial-rop-client/src/main/java/org/apache/
    cayenne/main/trunk/tutorials/tutorial-rop-client/src/main/java/org/apache/cayenne/
    cayenne/main/trunk/tutorials/tutorial-rop-client/src/main/java/org/apache/cayenne/tutorial/
    cayenne/main/trunk/tutorials/tutorial-rop-client/src/main/java/org/apache/cayenne/tutorial/persistent/
    cayenne/main/trunk/tutorials/tutorial-rop-client/src/main/java/org/apache/cayenne/tutorial/persistent/client/
    cayenne/main/trunk/tutorials/tutorial-rop-client/src/main/java/org/apache/cayenne/tutorial/persistent/client/Artist.java
    cayenne/main/trunk/tutorials/tutorial-rop-client/src/main/java/org/apache/cayenne/tutorial/persistent/client/Gallery.java
    cayenne/main/trunk/tutorials/tutorial-rop-client/src/main/java/org/apache/cayenne/tutorial/persistent/client/Main.java
    cayenne/main/trunk/tutorials/tutorial-rop-client/src/main/java/org/apache/cayenne/tutorial/persistent/client/Painting.java
    cayenne/main/trunk/tutorials/tutorial-rop-client/src/main/java/org/apache/cayenne/tutorial/persistent/client/UntitledDomainMap.java
    cayenne/main/trunk/tutorials/tutorial-rop-client/src/main/java/org/apache/cayenne/tutorial/persistent/client/auto/
    cayenne/main/trunk/tutorials/tutorial-rop-client/src/main/java/org/apache/cayenne/tutorial/persistent/client/auto/_Artist.java
    cayenne/main/trunk/tutorials/tutorial-rop-client/src/main/java/org/apache/cayenne/tutorial/persistent/client/auto/_Gallery.java
    cayenne/main/trunk/tutorials/tutorial-rop-client/src/main/java/org/apache/cayenne/tutorial/persistent/client/auto/_Painting.java
    cayenne/main/trunk/tutorials/tutorial-rop-client/src/main/java/org/apache/cayenne/tutorial/persistent/client/auto/_UntitledDomainMap.java
    cayenne/main/trunk/tutorials/tutorial-rop-client/src/test/
    cayenne/main/trunk/tutorials/tutorial-rop-client/src/test/java/
    cayenne/main/trunk/tutorials/tutorial-rop-client/src/test/java/.gitignore
    cayenne/main/trunk/tutorials/tutorial-rop-client/src/test/resources/
    cayenne/main/trunk/tutorials/tutorial-rop-client/src/test/resources/.gitignore
    cayenne/main/trunk/tutorials/tutorial-rop-server/
    cayenne/main/trunk/tutorials/tutorial-rop-server/.classpath
    cayenne/main/trunk/tutorials/tutorial-rop-server/.project
    cayenne/main/trunk/tutorials/tutorial-rop-server/.settings/
    cayenne/main/trunk/tutorials/tutorial-rop-server/.settings/org.eclipse.jdt.core.prefs
    cayenne/main/trunk/tutorials/tutorial-rop-server/.settings/org.maven.ide.eclipse.prefs
    cayenne/main/trunk/tutorials/tutorial-rop-server/pom.xml
    cayenne/main/trunk/tutorials/tutorial-rop-server/realm.properties
    cayenne/main/trunk/tutorials/tutorial-rop-server/src/
    cayenne/main/trunk/tutorials/tutorial-rop-server/src/main/
    cayenne/main/trunk/tutorials/tutorial-rop-server/src/main/java/
    cayenne/main/trunk/tutorials/tutorial-rop-server/src/main/java/org/
    cayenne/main/trunk/tutorials/tutorial-rop-server/src/main/java/org/apache/
    cayenne/main/trunk/tutorials/tutorial-rop-server/src/main/java/org/apache/cayenne/
    cayenne/main/trunk/tutorials/tutorial-rop-server/src/main/java/org/apache/cayenne/tutorial/
    cayenne/main/trunk/tutorials/tutorial-rop-server/src/main/java/org/apache/cayenne/tutorial/persistent/
    cayenne/main/trunk/tutorials/tutorial-rop-server/src/main/java/org/apache/cayenne/tutorial/persistent/Artist.java
    cayenne/main/trunk/tutorials/tutorial-rop-server/src/main/java/org/apache/cayenne/tutorial/persistent/Gallery.java
    cayenne/main/trunk/tutorials/tutorial-rop-server/src/main/java/org/apache/cayenne/tutorial/persistent/Painting.java
    cayenne/main/trunk/tutorials/tutorial-rop-server/src/main/java/org/apache/cayenne/tutorial/persistent/UntitledDomainMap.java
    cayenne/main/trunk/tutorials/tutorial-rop-server/src/main/java/org/apache/cayenne/tutorial/persistent/auto/
    cayenne/main/trunk/tutorials/tutorial-rop-server/src/main/java/org/apache/cayenne/tutorial/persistent/auto/_Artist.java
    cayenne/main/trunk/tutorials/tutorial-rop-server/src/main/java/org/apache/cayenne/tutorial/persistent/auto/_Gallery.java
    cayenne/main/trunk/tutorials/tutorial-rop-server/src/main/java/org/apache/cayenne/tutorial/persistent/auto/_Painting.java
    cayenne/main/trunk/tutorials/tutorial-rop-server/src/main/java/org/apache/cayenne/tutorial/persistent/auto/_UntitledDomainMap.java
    cayenne/main/trunk/tutorials/tutorial-rop-server/src/main/java/org/apache/cayenne/tutorial/persistent/client/
    cayenne/main/trunk/tutorials/tutorial-rop-server/src/main/java/org/apache/cayenne/tutorial/persistent/client/Artist.java
    cayenne/main/trunk/tutorials/tutorial-rop-server/src/main/java/org/apache/cayenne/tutorial/persistent/client/Gallery.java
    cayenne/main/trunk/tutorials/tutorial-rop-server/src/main/java/org/apache/cayenne/tutorial/persistent/client/Painting.java
    cayenne/main/trunk/tutorials/tutorial-rop-server/src/main/java/org/apache/cayenne/tutorial/persistent/client/UntitledDomainMap.java
    cayenne/main/trunk/tutorials/tutorial-rop-server/src/main/java/org/apache/cayenne/tutorial/persistent/client/auto/
    cayenne/main/trunk/tutorials/tutorial-rop-server/src/main/java/org/apache/cayenne/tutorial/persistent/client/auto/_Artist.java
    cayenne/main/trunk/tutorials/tutorial-rop-server/src/main/java/org/apache/cayenne/tutorial/persistent/client/auto/_Gallery.java
    cayenne/main/trunk/tutorials/tutorial-rop-server/src/main/java/org/apache/cayenne/tutorial/persistent/client/auto/_Painting.java
    cayenne/main/trunk/tutorials/tutorial-rop-server/src/main/java/org/apache/cayenne/tutorial/persistent/client/auto/_UntitledDomainMap.java
    cayenne/main/trunk/tutorials/tutorial-rop-server/src/main/resources/
    cayenne/main/trunk/tutorials/tutorial-rop-server/src/main/resources/UntitledDomainMap.map.xml
    cayenne/main/trunk/tutorials/tutorial-rop-server/src/main/resources/UntitledDomainNode.driver.xml
    cayenne/main/trunk/tutorials/tutorial-rop-server/src/main/resources/cayenne.xml
    cayenne/main/trunk/tutorials/tutorial-rop-server/src/main/webapp/
    cayenne/main/trunk/tutorials/tutorial-rop-server/src/main/webapp/WEB-INF/
    cayenne/main/trunk/tutorials/tutorial-rop-server/src/main/webapp/WEB-INF/web.xml
    cayenne/main/trunk/tutorials/tutorial-rop-server/src/test/
    cayenne/main/trunk/tutorials/tutorial-rop-server/src/test/java/
    cayenne/main/trunk/tutorials/tutorial-rop-server/src/test/java/.gitignore
    cayenne/main/trunk/tutorials/tutorial-rop-server/src/test/resources/
    cayenne/main/trunk/tutorials/tutorial-rop-server/src/test/resources/.gitignore
Modified:
    cayenne/main/trunk/assembly/src/main/assembly/main.xml
    cayenne/main/trunk/tutorials/pom.xml
    cayenne/main/trunk/tutorials/tutorial/pom.xml

Modified: cayenne/main/trunk/assembly/src/main/assembly/main.xml
URL: http://svn.apache.org/viewvc/cayenne/main/trunk/assembly/src/main/assembly/main.xml?rev=899986&r1=899985&r2=899986&view=diff
==============================================================================
--- cayenne/main/trunk/assembly/src/main/assembly/main.xml (original)
+++ cayenne/main/trunk/assembly/src/main/assembly/main.xml Sat Jan 16 16:49:35 2010
@@ -79,6 +79,8 @@
 			<outputDirectory>tutorials</outputDirectory>
 			<includes>
 				<include>tutorial/**</include>
+				<include>tutorial-rop-server/**</include>
+				<include>tutorial-rop-client/**</include>
 			</includes>
 			<excludes>
 				<exclude>**/target/**</exclude>

Modified: cayenne/main/trunk/tutorials/pom.xml
URL: http://svn.apache.org/viewvc/cayenne/main/trunk/tutorials/pom.xml?rev=899986&r1=899985&r2=899986&view=diff
==============================================================================
--- cayenne/main/trunk/tutorials/pom.xml (original)
+++ cayenne/main/trunk/tutorials/pom.xml Sat Jan 16 16:49:35 2010
@@ -32,5 +32,7 @@
 
 	<modules>
 		<module>tutorial</module>
+		<module>tutorial-rop-server</module>
+		<module>tutorial-rop-client</module>
 	</modules>
 </project>

Added: cayenne/main/trunk/tutorials/tutorial-rop-client/.classpath
URL: http://svn.apache.org/viewvc/cayenne/main/trunk/tutorials/tutorial-rop-client/.classpath?rev=899986&view=auto
==============================================================================
--- cayenne/main/trunk/tutorials/tutorial-rop-client/.classpath (added)
+++ cayenne/main/trunk/tutorials/tutorial-rop-client/.classpath Sat Jan 16 16:49:35 2010
@@ -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"/>
+	<classpathentry kind="con" path="org.maven.ide.eclipse.MAVEN2_CLASSPATH_CONTAINER"/>
+	<classpathentry kind="output" path="target/classes"/>
+</classpath>

Added: cayenne/main/trunk/tutorials/tutorial-rop-client/.project
URL: http://svn.apache.org/viewvc/cayenne/main/trunk/tutorials/tutorial-rop-client/.project?rev=899986&view=auto
==============================================================================
--- cayenne/main/trunk/tutorials/tutorial-rop-client/.project (added)
+++ cayenne/main/trunk/tutorials/tutorial-rop-client/.project Sat Jan 16 16:49:35 2010
@@ -0,0 +1,23 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<projectDescription>
+	<name>tutorial-rop-client</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>

Added: cayenne/main/trunk/tutorials/tutorial-rop-client/.settings/org.eclipse.jdt.core.prefs
URL: http://svn.apache.org/viewvc/cayenne/main/trunk/tutorials/tutorial-rop-client/.settings/org.eclipse.jdt.core.prefs?rev=899986&view=auto
==============================================================================
--- cayenne/main/trunk/tutorials/tutorial-rop-client/.settings/org.eclipse.jdt.core.prefs (added)
+++ cayenne/main/trunk/tutorials/tutorial-rop-client/.settings/org.eclipse.jdt.core.prefs Sat Jan 16 16:49:35 2010
@@ -0,0 +1,5 @@
+#Sat Jan 16 18:32:52 EET 2010
+eclipse.preferences.version=1
+org.eclipse.jdt.core.compiler.codegen.targetPlatform=1.5
+org.eclipse.jdt.core.compiler.compliance=1.5
+org.eclipse.jdt.core.compiler.source=1.5

Added: cayenne/main/trunk/tutorials/tutorial-rop-client/.settings/org.maven.ide.eclipse.prefs
URL: http://svn.apache.org/viewvc/cayenne/main/trunk/tutorials/tutorial-rop-client/.settings/org.maven.ide.eclipse.prefs?rev=899986&view=auto
==============================================================================
--- cayenne/main/trunk/tutorials/tutorial-rop-client/.settings/org.maven.ide.eclipse.prefs (added)
+++ cayenne/main/trunk/tutorials/tutorial-rop-client/.settings/org.maven.ide.eclipse.prefs Sat Jan 16 16:49:35 2010
@@ -0,0 +1,9 @@
+#Sat Jan 16 18:32:52 EET 2010
+activeProfiles=
+eclipse.preferences.version=1
+fullBuildGoals=process-test-resources
+includeModules=false
+resolveWorkspaceProjects=true
+resourceFilterGoals=process-resources resources\:testResources
+skipCompilerPlugin=true
+version=1

Added: cayenne/main/trunk/tutorials/tutorial-rop-client/pom.xml
URL: http://svn.apache.org/viewvc/cayenne/main/trunk/tutorials/tutorial-rop-client/pom.xml?rev=899986&view=auto
==============================================================================
--- cayenne/main/trunk/tutorials/tutorial-rop-client/pom.xml (added)
+++ cayenne/main/trunk/tutorials/tutorial-rop-client/pom.xml Sat Jan 16 16:49:35 2010
@@ -0,0 +1,72 @@
+<!--
+	Licensed to the Apache Software Foundation (ASF) under one or more
+	contributor license agreements. See the NOTICE file distributed with
+	this work for additional information regarding copyright ownership.
+	The ASF licenses this file to you under the Apache License, Version
+	2.0 (the "License"); you may not use this file except in compliance
+	with the License. You may obtain a copy of the License at
+
+	http://www.apache.org/licenses/LICENSE-2.0 Unless required by
+	applicable law or agreed to in writing, software distributed under the
+	License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR
+	CONDITIONS OF ANY KIND, either express or implied. See the License for
+	the specific language governing permissions and limitations under the
+	License.
+-->
+<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+	xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
+	<modelVersion>4.0.0</modelVersion>
+	<groupId>org.apache.cayenne</groupId>
+	<artifactId>tutorial-rop-client</artifactId>
+	<name>Cayenne ROP Client Tutorial</name>
+	<version>3.1-SNAPSHOT</version>
+
+	<dependencies>
+		<dependency>
+			<groupId>org.apache.cayenne</groupId>
+			<artifactId>cayenne-client</artifactId>
+			<version>3.1-SNAPSHOT</version>
+		</dependency>
+		<dependency>
+			<groupId>com.caucho</groupId>
+			<artifactId>resin-hessian</artifactId>
+			<version>3.1.6</version>
+		</dependency>
+	</dependencies>
+	
+	<build>
+		<plugins>
+			<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-deploy-plugin</artifactId>
+				<configuration>
+					<skip>true</skip>
+				</configuration>
+			</plugin>
+		</plugins>
+	</build>
+	
+	<repositories>
+		<repository>
+			<id>caucho</id>
+			<name>Caucho Repository</name>
+			<url>http://caucho.com/m2</url>
+			<layout>default</layout>
+			<snapshots>
+				<enabled>false</enabled>
+			</snapshots>
+			<releases>
+				<enabled>true</enabled>
+			</releases>
+		</repository>
+	</repositories>
+
+</project>
\ No newline at end of file

Added: cayenne/main/trunk/tutorials/tutorial-rop-client/src/main/java/org/apache/cayenne/tutorial/persistent/client/Artist.java
URL: http://svn.apache.org/viewvc/cayenne/main/trunk/tutorials/tutorial-rop-client/src/main/java/org/apache/cayenne/tutorial/persistent/client/Artist.java?rev=899986&view=auto
==============================================================================
--- cayenne/main/trunk/tutorials/tutorial-rop-client/src/main/java/org/apache/cayenne/tutorial/persistent/client/Artist.java (added)
+++ cayenne/main/trunk/tutorials/tutorial-rop-client/src/main/java/org/apache/cayenne/tutorial/persistent/client/Artist.java Sat Jan 16 16:49:35 2010
@@ -0,0 +1,10 @@
+package org.apache.cayenne.tutorial.persistent.client;
+
+import org.apache.cayenne.tutorial.persistent.client.auto._Artist;
+
+/**
+ * A persistent class mapped as "Artist" Cayenne entity.
+ */
+public class Artist extends _Artist {
+
+}

Added: cayenne/main/trunk/tutorials/tutorial-rop-client/src/main/java/org/apache/cayenne/tutorial/persistent/client/Gallery.java
URL: http://svn.apache.org/viewvc/cayenne/main/trunk/tutorials/tutorial-rop-client/src/main/java/org/apache/cayenne/tutorial/persistent/client/Gallery.java?rev=899986&view=auto
==============================================================================
--- cayenne/main/trunk/tutorials/tutorial-rop-client/src/main/java/org/apache/cayenne/tutorial/persistent/client/Gallery.java (added)
+++ cayenne/main/trunk/tutorials/tutorial-rop-client/src/main/java/org/apache/cayenne/tutorial/persistent/client/Gallery.java Sat Jan 16 16:49:35 2010
@@ -0,0 +1,10 @@
+package org.apache.cayenne.tutorial.persistent.client;
+
+import org.apache.cayenne.tutorial.persistent.client.auto._Gallery;
+
+/**
+ * A persistent class mapped as "Gallery" Cayenne entity.
+ */
+public class Gallery extends _Gallery {
+
+}

Added: cayenne/main/trunk/tutorials/tutorial-rop-client/src/main/java/org/apache/cayenne/tutorial/persistent/client/Main.java
URL: http://svn.apache.org/viewvc/cayenne/main/trunk/tutorials/tutorial-rop-client/src/main/java/org/apache/cayenne/tutorial/persistent/client/Main.java?rev=899986&view=auto
==============================================================================
--- cayenne/main/trunk/tutorials/tutorial-rop-client/src/main/java/org/apache/cayenne/tutorial/persistent/client/Main.java (added)
+++ cayenne/main/trunk/tutorials/tutorial-rop-client/src/main/java/org/apache/cayenne/tutorial/persistent/client/Main.java Sat Jan 16 16:49:35 2010
@@ -0,0 +1,100 @@
+/*****************************************************************
+ *   Licensed to the Apache Software Foundation (ASF) under one
+ *  or more contributor license agreements.  See the NOTICE file
+ *  distributed with this work for additional information
+ *  regarding copyright ownership.  The ASF licenses this file
+ *  to you under the Apache License, Version 2.0 (the
+ *  "License"); you may not use this file except in compliance
+ *  with the License.  You may obtain a copy of the License at
+ *
+ *    http://www.apache.org/licenses/LICENSE-2.0
+ *
+ *  Unless required by applicable law or agreed to in writing,
+ *  software distributed under the License is distributed on an
+ *  "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ *  KIND, either express or implied.  See the License for the
+ *  specific language governing permissions and limitations
+ *  under the License.
+ ****************************************************************/
+package org.apache.cayenne.tutorial.persistent.client;
+
+import java.util.List;
+
+import org.apache.cayenne.CayenneContext;
+import org.apache.cayenne.DataChannel;
+import org.apache.cayenne.DataObjectUtils;
+import org.apache.cayenne.ObjectContext;
+import org.apache.cayenne.exp.Expression;
+import org.apache.cayenne.exp.ExpressionFactory;
+import org.apache.cayenne.query.SelectQuery;
+import org.apache.cayenne.remote.ClientChannel;
+import org.apache.cayenne.remote.ClientConnection;
+import org.apache.cayenne.remote.hessian.HessianConnection;
+
+public class Main {
+
+	public static void main(String[] args) {
+
+		ClientConnection connection = new HessianConnection(
+				"http://localhost:8080/tutorial/cayenne-service",
+				"cayenne-user", "secret", null);
+		DataChannel channel = new ClientChannel(connection);
+		ObjectContext context = new CayenneContext(channel);
+
+		newObjectsTutorial(context);
+		selectTutorial(context);
+		deleteTutorial(context);
+	}
+
+	static void newObjectsTutorial(ObjectContext context) {
+
+		// creating new Artist
+		Artist picasso = context.newObject(Artist.class);
+		picasso.setName("Pablo Picasso");
+
+		// Creating other objects
+		Gallery metropolitan = context.newObject(Gallery.class);
+		metropolitan.setName("Metropolitan Museum of Art");
+
+		Painting girl = context.newObject(Painting.class);
+		girl.setName("Girl Reading at a Table");
+
+		Painting stein = context.newObject(Painting.class);
+		stein.setName("Gertrude Stein");
+
+		// connecting objects together via relationships
+		picasso.addToPaintings(girl);
+		picasso.addToPaintings(stein);
+
+		girl.setGallery(metropolitan);
+		stein.setGallery(metropolitan);
+
+		// saving all the changes above
+		context.commitChanges();
+	}
+
+	static void selectTutorial(ObjectContext context) {
+		// SelectQuery examples
+		SelectQuery select1 = new SelectQuery(Painting.class);
+		List<Painting> paintings1 = context.performQuery(select1);
+
+		Expression qualifier2 = ExpressionFactory.likeIgnoreCaseExp(
+				Painting.NAME_PROPERTY, "gi%");
+		SelectQuery select2 = new SelectQuery(Painting.class, qualifier2);
+		List<Painting> paintings2 = context.performQuery(select2);
+	}
+
+	static void deleteTutorial(ObjectContext context) {
+		// Delete object examples
+		Expression qualifier = ExpressionFactory.matchExp(Artist.NAME_PROPERTY,
+				"Pablo Picasso");
+		SelectQuery selectToDelete = new SelectQuery(Artist.class, qualifier);
+		Artist picasso = (Artist) DataObjectUtils.objectForQuery(context,
+				selectToDelete);
+
+		if (picasso != null) {
+			context.deleteObject(picasso);
+			context.commitChanges();
+		}
+	}
+}

Added: cayenne/main/trunk/tutorials/tutorial-rop-client/src/main/java/org/apache/cayenne/tutorial/persistent/client/Painting.java
URL: http://svn.apache.org/viewvc/cayenne/main/trunk/tutorials/tutorial-rop-client/src/main/java/org/apache/cayenne/tutorial/persistent/client/Painting.java?rev=899986&view=auto
==============================================================================
--- cayenne/main/trunk/tutorials/tutorial-rop-client/src/main/java/org/apache/cayenne/tutorial/persistent/client/Painting.java (added)
+++ cayenne/main/trunk/tutorials/tutorial-rop-client/src/main/java/org/apache/cayenne/tutorial/persistent/client/Painting.java Sat Jan 16 16:49:35 2010
@@ -0,0 +1,10 @@
+package org.apache.cayenne.tutorial.persistent.client;
+
+import org.apache.cayenne.tutorial.persistent.client.auto._Painting;
+
+/**
+ * A persistent class mapped as "Painting" Cayenne entity.
+ */
+public class Painting extends _Painting {
+
+}

Added: cayenne/main/trunk/tutorials/tutorial-rop-client/src/main/java/org/apache/cayenne/tutorial/persistent/client/UntitledDomainMap.java
URL: http://svn.apache.org/viewvc/cayenne/main/trunk/tutorials/tutorial-rop-client/src/main/java/org/apache/cayenne/tutorial/persistent/client/UntitledDomainMap.java?rev=899986&view=auto
==============================================================================
--- cayenne/main/trunk/tutorials/tutorial-rop-client/src/main/java/org/apache/cayenne/tutorial/persistent/client/UntitledDomainMap.java (added)
+++ cayenne/main/trunk/tutorials/tutorial-rop-client/src/main/java/org/apache/cayenne/tutorial/persistent/client/UntitledDomainMap.java Sat Jan 16 16:49:35 2010
@@ -0,0 +1,18 @@
+package org.apache.cayenne.tutorial.persistent.client;
+
+import org.apache.cayenne.tutorial.persistent.client.auto._UntitledDomainMap;
+
+public class UntitledDomainMap extends _UntitledDomainMap {
+
+    private static UntitledDomainMap instance;
+
+    private UntitledDomainMap() {}
+
+    public static UntitledDomainMap getInstance() {
+        if(instance == null) {
+            instance = new UntitledDomainMap();
+        }
+
+        return instance;
+    }
+}

Added: cayenne/main/trunk/tutorials/tutorial-rop-client/src/main/java/org/apache/cayenne/tutorial/persistent/client/auto/_Artist.java
URL: http://svn.apache.org/viewvc/cayenne/main/trunk/tutorials/tutorial-rop-client/src/main/java/org/apache/cayenne/tutorial/persistent/client/auto/_Artist.java?rev=899986&view=auto
==============================================================================
--- cayenne/main/trunk/tutorials/tutorial-rop-client/src/main/java/org/apache/cayenne/tutorial/persistent/client/auto/_Artist.java (added)
+++ cayenne/main/trunk/tutorials/tutorial-rop-client/src/main/java/org/apache/cayenne/tutorial/persistent/client/auto/_Artist.java Sat Jan 16 16:49:35 2010
@@ -0,0 +1,88 @@
+package org.apache.cayenne.tutorial.persistent.client.auto;
+
+import java.util.Date;
+import java.util.List;
+
+import org.apache.cayenne.PersistentObject;
+import org.apache.cayenne.tutorial.persistent.client.Painting;
+
+/**
+ * A generated persistent class mapped as "Artist" Cayenne entity. It is a good idea to
+ * avoid changing this class manually, since it will be overwritten next time code is
+ * regenerated. If you need to make any customizations, put them in a subclass.
+ */
+public abstract class _Artist extends PersistentObject {
+
+    public static final String DATE_OF_BIRTH_PROPERTY = "dateOfBirth";
+    public static final String NAME_PROPERTY = "name";
+    public static final String PAINTINGS_PROPERTY = "paintings";
+
+    protected Date dateOfBirth;
+    protected String name;
+    protected List<Painting> paintings;
+
+    public Date getDateOfBirth() {
+        if(objectContext != null) {
+            objectContext.prepareForAccess(this, "dateOfBirth", false);
+        }
+
+        return dateOfBirth;
+    }
+    public void setDateOfBirth(Date dateOfBirth) {
+        if(objectContext != null) {
+            objectContext.prepareForAccess(this, "dateOfBirth", false);
+        }
+
+        Object oldValue = this.dateOfBirth;
+        this.dateOfBirth = dateOfBirth;
+
+        // notify objectContext about simple property change
+        if(objectContext != null) {
+            objectContext.propertyChanged(this, "dateOfBirth", oldValue, dateOfBirth);
+        }
+    }
+
+    public String getName() {
+        if(objectContext != null) {
+            objectContext.prepareForAccess(this, "name", false);
+        }
+
+        return name;
+    }
+    public void setName(String name) {
+        if(objectContext != null) {
+            objectContext.prepareForAccess(this, "name", false);
+        }
+
+        Object oldValue = this.name;
+        this.name = name;
+
+        // notify objectContext about simple property change
+        if(objectContext != null) {
+            objectContext.propertyChanged(this, "name", oldValue, name);
+        }
+    }
+
+    public List<Painting> getPaintings() {
+        if(objectContext != null) {
+            objectContext.prepareForAccess(this, "paintings", true);
+        }
+
+        return paintings;
+    }
+    public void addToPaintings(Painting object) {
+        if(objectContext != null) {
+            objectContext.prepareForAccess(this, "paintings", true);
+        }
+
+        this.paintings.add(object);
+    }
+    public void removeFromPaintings(Painting object) {
+        if(objectContext != null) {
+            objectContext.prepareForAccess(this, "paintings", true);
+        }
+
+        this.paintings.remove(object);
+    }
+
+}

Added: cayenne/main/trunk/tutorials/tutorial-rop-client/src/main/java/org/apache/cayenne/tutorial/persistent/client/auto/_Gallery.java
URL: http://svn.apache.org/viewvc/cayenne/main/trunk/tutorials/tutorial-rop-client/src/main/java/org/apache/cayenne/tutorial/persistent/client/auto/_Gallery.java?rev=899986&view=auto
==============================================================================
--- cayenne/main/trunk/tutorials/tutorial-rop-client/src/main/java/org/apache/cayenne/tutorial/persistent/client/auto/_Gallery.java (added)
+++ cayenne/main/trunk/tutorials/tutorial-rop-client/src/main/java/org/apache/cayenne/tutorial/persistent/client/auto/_Gallery.java Sat Jan 16 16:49:35 2010
@@ -0,0 +1,64 @@
+package org.apache.cayenne.tutorial.persistent.client.auto;
+
+import java.util.List;
+
+import org.apache.cayenne.PersistentObject;
+import org.apache.cayenne.tutorial.persistent.client.Painting;
+
+/**
+ * A generated persistent class mapped as "Gallery" Cayenne entity. It is a good idea to
+ * avoid changing this class manually, since it will be overwritten next time code is
+ * regenerated. If you need to make any customizations, put them in a subclass.
+ */
+public abstract class _Gallery extends PersistentObject {
+
+    public static final String NAME_PROPERTY = "name";
+    public static final String PAINTINGS_PROPERTY = "paintings";
+
+    protected String name;
+    protected List<Painting> paintings;
+
+    public String getName() {
+        if(objectContext != null) {
+            objectContext.prepareForAccess(this, "name", false);
+        }
+
+        return name;
+    }
+    public void setName(String name) {
+        if(objectContext != null) {
+            objectContext.prepareForAccess(this, "name", false);
+        }
+
+        Object oldValue = this.name;
+        this.name = name;
+
+        // notify objectContext about simple property change
+        if(objectContext != null) {
+            objectContext.propertyChanged(this, "name", oldValue, name);
+        }
+    }
+
+    public List<Painting> getPaintings() {
+        if(objectContext != null) {
+            objectContext.prepareForAccess(this, "paintings", true);
+        }
+
+        return paintings;
+    }
+    public void addToPaintings(Painting object) {
+        if(objectContext != null) {
+            objectContext.prepareForAccess(this, "paintings", true);
+        }
+
+        this.paintings.add(object);
+    }
+    public void removeFromPaintings(Painting object) {
+        if(objectContext != null) {
+            objectContext.prepareForAccess(this, "paintings", true);
+        }
+
+        this.paintings.remove(object);
+    }
+
+}

Added: cayenne/main/trunk/tutorials/tutorial-rop-client/src/main/java/org/apache/cayenne/tutorial/persistent/client/auto/_Painting.java
URL: http://svn.apache.org/viewvc/cayenne/main/trunk/tutorials/tutorial-rop-client/src/main/java/org/apache/cayenne/tutorial/persistent/client/auto/_Painting.java?rev=899986&view=auto
==============================================================================
--- cayenne/main/trunk/tutorials/tutorial-rop-client/src/main/java/org/apache/cayenne/tutorial/persistent/client/auto/_Painting.java (added)
+++ cayenne/main/trunk/tutorials/tutorial-rop-client/src/main/java/org/apache/cayenne/tutorial/persistent/client/auto/_Painting.java Sat Jan 16 16:49:35 2010
@@ -0,0 +1,74 @@
+package org.apache.cayenne.tutorial.persistent.client.auto;
+
+import org.apache.cayenne.PersistentObject;
+import org.apache.cayenne.ValueHolder;
+import org.apache.cayenne.tutorial.persistent.client.Artist;
+import org.apache.cayenne.tutorial.persistent.client.Gallery;
+
+/**
+ * A generated persistent class mapped as "Painting" Cayenne entity. It is a good idea to
+ * avoid changing this class manually, since it will be overwritten next time code is
+ * regenerated. If you need to make any customizations, put them in a subclass.
+ */
+public abstract class _Painting extends PersistentObject {
+
+    public static final String NAME_PROPERTY = "name";
+    public static final String ARTIST_PROPERTY = "artist";
+    public static final String GALLERY_PROPERTY = "gallery";
+
+    protected String name;
+    protected ValueHolder artist;
+    protected ValueHolder gallery;
+
+    public String getName() {
+        if(objectContext != null) {
+            objectContext.prepareForAccess(this, "name", false);
+        }
+
+        return name;
+    }
+    public void setName(String name) {
+        if(objectContext != null) {
+            objectContext.prepareForAccess(this, "name", false);
+        }
+
+        Object oldValue = this.name;
+        this.name = name;
+
+        // notify objectContext about simple property change
+        if(objectContext != null) {
+            objectContext.propertyChanged(this, "name", oldValue, name);
+        }
+    }
+
+    public Artist getArtist() {
+        if(objectContext != null) {
+            objectContext.prepareForAccess(this, "artist", true);
+        }
+
+        return (Artist) artist.getValue();
+    }
+    public void setArtist(Artist artist) {
+        if(objectContext != null) {
+            objectContext.prepareForAccess(this, "artist", true);
+        }
+
+        this.artist.setValue(artist);
+    }
+
+    public Gallery getGallery() {
+        if(objectContext != null) {
+            objectContext.prepareForAccess(this, "gallery", true);
+        }
+
+        return (Gallery) gallery.getValue();
+    }
+    public void setGallery(Gallery gallery) {
+        if(objectContext != null) {
+            objectContext.prepareForAccess(this, "gallery", true);
+        }
+
+        this.gallery.setValue(gallery);
+    }
+
+}

Added: cayenne/main/trunk/tutorials/tutorial-rop-client/src/main/java/org/apache/cayenne/tutorial/persistent/client/auto/_UntitledDomainMap.java
URL: http://svn.apache.org/viewvc/cayenne/main/trunk/tutorials/tutorial-rop-client/src/main/java/org/apache/cayenne/tutorial/persistent/client/auto/_UntitledDomainMap.java?rev=899986&view=auto
==============================================================================
--- cayenne/main/trunk/tutorials/tutorial-rop-client/src/main/java/org/apache/cayenne/tutorial/persistent/client/auto/_UntitledDomainMap.java (added)
+++ cayenne/main/trunk/tutorials/tutorial-rop-client/src/main/java/org/apache/cayenne/tutorial/persistent/client/auto/_UntitledDomainMap.java Sat Jan 16 16:49:35 2010
@@ -0,0 +1,12 @@
+package org.apache.cayenne.tutorial.persistent.client.auto;
+
+import org.apache.cayenne.PersistentObject;
+
+/**
+ * This class was generated by Cayenne.
+ * It is probably a good idea to avoid changing this class manually,
+ * since it may be overwritten next time code is regenerated.
+ * If you need to make any customizations, please use subclass.
+ */
+public class _UntitledDomainMap {
+}
\ No newline at end of file

Added: cayenne/main/trunk/tutorials/tutorial-rop-client/src/test/java/.gitignore
URL: http://svn.apache.org/viewvc/cayenne/main/trunk/tutorials/tutorial-rop-client/src/test/java/.gitignore?rev=899986&view=auto
==============================================================================
    (empty)

Added: cayenne/main/trunk/tutorials/tutorial-rop-client/src/test/resources/.gitignore
URL: http://svn.apache.org/viewvc/cayenne/main/trunk/tutorials/tutorial-rop-client/src/test/resources/.gitignore?rev=899986&view=auto
==============================================================================
    (empty)

Added: cayenne/main/trunk/tutorials/tutorial-rop-server/.classpath
URL: http://svn.apache.org/viewvc/cayenne/main/trunk/tutorials/tutorial-rop-server/.classpath?rev=899986&view=auto
==============================================================================
--- cayenne/main/trunk/tutorials/tutorial-rop-server/.classpath (added)
+++ cayenne/main/trunk/tutorials/tutorial-rop-server/.classpath Sat Jan 16 16:49:35 2010
@@ -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"/>
+	<classpathentry kind="con" path="org.maven.ide.eclipse.MAVEN2_CLASSPATH_CONTAINER"/>
+	<classpathentry kind="output" path="target/classes"/>
+</classpath>

Added: cayenne/main/trunk/tutorials/tutorial-rop-server/.project
URL: http://svn.apache.org/viewvc/cayenne/main/trunk/tutorials/tutorial-rop-server/.project?rev=899986&view=auto
==============================================================================
--- cayenne/main/trunk/tutorials/tutorial-rop-server/.project (added)
+++ cayenne/main/trunk/tutorials/tutorial-rop-server/.project Sat Jan 16 16:49:35 2010
@@ -0,0 +1,23 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<projectDescription>
+	<name>tutorial-rop-server</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>

Added: cayenne/main/trunk/tutorials/tutorial-rop-server/.settings/org.eclipse.jdt.core.prefs
URL: http://svn.apache.org/viewvc/cayenne/main/trunk/tutorials/tutorial-rop-server/.settings/org.eclipse.jdt.core.prefs?rev=899986&view=auto
==============================================================================
--- cayenne/main/trunk/tutorials/tutorial-rop-server/.settings/org.eclipse.jdt.core.prefs (added)
+++ cayenne/main/trunk/tutorials/tutorial-rop-server/.settings/org.eclipse.jdt.core.prefs Sat Jan 16 16:49:35 2010
@@ -0,0 +1,5 @@
+#Sat Jan 16 18:32:29 EET 2010
+eclipse.preferences.version=1
+org.eclipse.jdt.core.compiler.codegen.targetPlatform=1.5
+org.eclipse.jdt.core.compiler.compliance=1.5
+org.eclipse.jdt.core.compiler.source=1.5

Added: cayenne/main/trunk/tutorials/tutorial-rop-server/.settings/org.maven.ide.eclipse.prefs
URL: http://svn.apache.org/viewvc/cayenne/main/trunk/tutorials/tutorial-rop-server/.settings/org.maven.ide.eclipse.prefs?rev=899986&view=auto
==============================================================================
--- cayenne/main/trunk/tutorials/tutorial-rop-server/.settings/org.maven.ide.eclipse.prefs (added)
+++ cayenne/main/trunk/tutorials/tutorial-rop-server/.settings/org.maven.ide.eclipse.prefs Sat Jan 16 16:49:35 2010
@@ -0,0 +1,9 @@
+#Sat Jan 16 18:32:29 EET 2010
+activeProfiles=
+eclipse.preferences.version=1
+fullBuildGoals=process-test-resources
+includeModules=false
+resolveWorkspaceProjects=true
+resourceFilterGoals=process-resources resources\:testResources
+skipCompilerPlugin=true
+version=1

Added: cayenne/main/trunk/tutorials/tutorial-rop-server/pom.xml
URL: http://svn.apache.org/viewvc/cayenne/main/trunk/tutorials/tutorial-rop-server/pom.xml?rev=899986&view=auto
==============================================================================
--- cayenne/main/trunk/tutorials/tutorial-rop-server/pom.xml (added)
+++ cayenne/main/trunk/tutorials/tutorial-rop-server/pom.xml Sat Jan 16 16:49:35 2010
@@ -0,0 +1,90 @@
+<!--
+	Licensed to the Apache Software Foundation (ASF) under one or more
+	contributor license agreements. See the NOTICE file distributed with
+	this work for additional information regarding copyright ownership.
+	The ASF licenses this file to you under the Apache License, Version
+	2.0 (the "License"); you may not use this file except in compliance
+	with the License. You may obtain a copy of the License at
+
+	http://www.apache.org/licenses/LICENSE-2.0 Unless required by
+	applicable law or agreed to in writing, software distributed under the
+	License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR
+	CONDITIONS OF ANY KIND, either express or implied. See the License for
+	the specific language governing permissions and limitations under the
+	License.
+-->
+<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+	xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
+	<modelVersion>4.0.0</modelVersion>
+	<groupId>org.apache.cayenne</groupId>
+	<artifactId>tutorial-rop-server</artifactId>
+	<name>Cayenne ROP Server Tutorial</name>
+	<version>3.1-SNAPSHOT</version>
+
+	<dependencies>
+		<dependency>
+			<groupId>org.apache.cayenne</groupId>
+			<artifactId>cayenne-server</artifactId>
+			<version>3.1-SNAPSHOT</version>
+		</dependency>
+		<dependency>
+			<groupId>org.apache.derby</groupId>
+			<artifactId>derby</artifactId>
+			<version>10.5.3.0_1</version>
+		</dependency>
+		<dependency>
+			<groupId>com.caucho</groupId>
+			<artifactId>resin-hessian</artifactId>
+			<version>3.1.6</version>
+		</dependency>
+	</dependencies>
+
+	<build>
+		<plugins>
+			<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.mortbay.jetty</groupId>
+				<artifactId>maven-jetty-plugin</artifactId>
+				<version>6.1.22</version>
+				<configuration>
+					<userRealms>
+						<userRealm implementation="org.mortbay.jetty.security.HashUserRealm">
+							<name>Cayenne Realm</name>
+							<config>realm.properties</config>
+						</userRealm>
+					</userRealms>
+				</configuration>
+			</plugin>
+			<plugin>
+				<groupId>org.apache.maven.plugins</groupId>
+				<artifactId>maven-deploy-plugin</artifactId>
+				<configuration>
+					<skip>true</skip>
+				</configuration>
+			</plugin>
+		</plugins>
+	</build>
+
+	<repositories>
+		<repository>
+			<id>caucho</id>
+			<name>Caucho Repository</name>
+			<url>http://caucho.com/m2</url>
+			<layout>default</layout>
+			<snapshots>
+				<enabled>false</enabled>
+			</snapshots>
+			<releases>
+				<enabled>true</enabled>
+			</releases>
+		</repository>
+	</repositories>
+
+</project>
\ No newline at end of file

Added: cayenne/main/trunk/tutorials/tutorial-rop-server/realm.properties
URL: http://svn.apache.org/viewvc/cayenne/main/trunk/tutorials/tutorial-rop-server/realm.properties?rev=899986&view=auto
==============================================================================
--- cayenne/main/trunk/tutorials/tutorial-rop-server/realm.properties (added)
+++ cayenne/main/trunk/tutorials/tutorial-rop-server/realm.properties Sat Jan 16 16:49:35 2010
@@ -0,0 +1 @@
+cayenne-user: secret,cayenne-service-user
\ No newline at end of file

Added: cayenne/main/trunk/tutorials/tutorial-rop-server/src/main/java/org/apache/cayenne/tutorial/persistent/Artist.java
URL: http://svn.apache.org/viewvc/cayenne/main/trunk/tutorials/tutorial-rop-server/src/main/java/org/apache/cayenne/tutorial/persistent/Artist.java?rev=899986&view=auto
==============================================================================
--- cayenne/main/trunk/tutorials/tutorial-rop-server/src/main/java/org/apache/cayenne/tutorial/persistent/Artist.java (added)
+++ cayenne/main/trunk/tutorials/tutorial-rop-server/src/main/java/org/apache/cayenne/tutorial/persistent/Artist.java Sat Jan 16 16:49:35 2010
@@ -0,0 +1,34 @@
+package org.apache.cayenne.tutorial.persistent;
+
+import java.text.ParseException;
+import java.text.SimpleDateFormat;
+import java.util.Date;
+
+import org.apache.cayenne.tutorial.persistent.auto._Artist;
+
+public class Artist extends _Artist {
+
+	static final String DEFAULT_DATE_FORMAT = "yyyyMMdd";
+
+	/**
+	 * Sets date of birth using a string in format yyyyMMdd.
+	 */
+	public void setDateOfBirthString(String yearMonthDay) {
+		if (yearMonthDay == null) {
+			setDateOfBirth(null);
+		} else {
+
+			Date date;
+			try {
+				date = new SimpleDateFormat(DEFAULT_DATE_FORMAT)
+						.parse(yearMonthDay);
+			} catch (ParseException e) {
+				throw new IllegalArgumentException(
+						"A date argument must be in format '"
+								+ DEFAULT_DATE_FORMAT + "': " + yearMonthDay);
+			}
+
+			setDateOfBirth(date);
+		}
+	}
+}

Added: cayenne/main/trunk/tutorials/tutorial-rop-server/src/main/java/org/apache/cayenne/tutorial/persistent/Gallery.java
URL: http://svn.apache.org/viewvc/cayenne/main/trunk/tutorials/tutorial-rop-server/src/main/java/org/apache/cayenne/tutorial/persistent/Gallery.java?rev=899986&view=auto
==============================================================================
--- cayenne/main/trunk/tutorials/tutorial-rop-server/src/main/java/org/apache/cayenne/tutorial/persistent/Gallery.java (added)
+++ cayenne/main/trunk/tutorials/tutorial-rop-server/src/main/java/org/apache/cayenne/tutorial/persistent/Gallery.java Sat Jan 16 16:49:35 2010
@@ -0,0 +1,7 @@
+package org.apache.cayenne.tutorial.persistent;
+
+import org.apache.cayenne.tutorial.persistent.auto._Gallery;
+
+public class Gallery extends _Gallery {
+
+}

Added: cayenne/main/trunk/tutorials/tutorial-rop-server/src/main/java/org/apache/cayenne/tutorial/persistent/Painting.java
URL: http://svn.apache.org/viewvc/cayenne/main/trunk/tutorials/tutorial-rop-server/src/main/java/org/apache/cayenne/tutorial/persistent/Painting.java?rev=899986&view=auto
==============================================================================
--- cayenne/main/trunk/tutorials/tutorial-rop-server/src/main/java/org/apache/cayenne/tutorial/persistent/Painting.java (added)
+++ cayenne/main/trunk/tutorials/tutorial-rop-server/src/main/java/org/apache/cayenne/tutorial/persistent/Painting.java Sat Jan 16 16:49:35 2010
@@ -0,0 +1,7 @@
+package org.apache.cayenne.tutorial.persistent;
+
+import org.apache.cayenne.tutorial.persistent.auto._Painting;
+
+public class Painting extends _Painting {
+
+}

Added: cayenne/main/trunk/tutorials/tutorial-rop-server/src/main/java/org/apache/cayenne/tutorial/persistent/UntitledDomainMap.java
URL: http://svn.apache.org/viewvc/cayenne/main/trunk/tutorials/tutorial-rop-server/src/main/java/org/apache/cayenne/tutorial/persistent/UntitledDomainMap.java?rev=899986&view=auto
==============================================================================
--- cayenne/main/trunk/tutorials/tutorial-rop-server/src/main/java/org/apache/cayenne/tutorial/persistent/UntitledDomainMap.java (added)
+++ cayenne/main/trunk/tutorials/tutorial-rop-server/src/main/java/org/apache/cayenne/tutorial/persistent/UntitledDomainMap.java Sat Jan 16 16:49:35 2010
@@ -0,0 +1,18 @@
+package org.apache.cayenne.tutorial.persistent;
+
+import org.apache.cayenne.tutorial.persistent.auto._UntitledDomainMap;
+
+public class UntitledDomainMap extends _UntitledDomainMap {
+
+    private static UntitledDomainMap instance;
+
+    private UntitledDomainMap() {}
+
+    public static UntitledDomainMap getInstance() {
+        if(instance == null) {
+            instance = new UntitledDomainMap();
+        }
+
+        return instance;
+    }
+}

Added: cayenne/main/trunk/tutorials/tutorial-rop-server/src/main/java/org/apache/cayenne/tutorial/persistent/auto/_Artist.java
URL: http://svn.apache.org/viewvc/cayenne/main/trunk/tutorials/tutorial-rop-server/src/main/java/org/apache/cayenne/tutorial/persistent/auto/_Artist.java?rev=899986&view=auto
==============================================================================
--- cayenne/main/trunk/tutorials/tutorial-rop-server/src/main/java/org/apache/cayenne/tutorial/persistent/auto/_Artist.java (added)
+++ cayenne/main/trunk/tutorials/tutorial-rop-server/src/main/java/org/apache/cayenne/tutorial/persistent/auto/_Artist.java Sat Jan 16 16:49:35 2010
@@ -0,0 +1,49 @@
+package org.apache.cayenne.tutorial.persistent.auto;
+
+import java.util.Date;
+import java.util.List;
+
+import org.apache.cayenne.CayenneDataObject;
+import org.apache.cayenne.tutorial.persistent.Painting;
+
+/**
+ * Class _Artist was generated by Cayenne.
+ * It is probably a good idea to avoid changing this class manually,
+ * since it may be overwritten next time code is regenerated.
+ * If you need to make any customizations, please use subclass.
+ */
+public abstract class _Artist extends CayenneDataObject {
+
+    public static final String DATE_OF_BIRTH_PROPERTY = "dateOfBirth";
+    public static final String NAME_PROPERTY = "name";
+    public static final String PAINTINGS_PROPERTY = "paintings";
+
+    public static final String ID_PK_COLUMN = "ID";
+
+    public void setDateOfBirth(Date dateOfBirth) {
+        writeProperty("dateOfBirth", dateOfBirth);
+    }
+    public Date getDateOfBirth() {
+        return (Date)readProperty("dateOfBirth");
+    }
+
+    public void setName(String name) {
+        writeProperty("name", name);
+    }
+    public String getName() {
+        return (String)readProperty("name");
+    }
+
+    public void addToPaintings(Painting obj) {
+        addToManyTarget("paintings", obj, true);
+    }
+    public void removeFromPaintings(Painting obj) {
+        removeToManyTarget("paintings", obj, true);
+    }
+    @SuppressWarnings("unchecked")
+    public List<Painting> getPaintings() {
+        return (List<Painting>)readProperty("paintings");
+    }
+
+
+}

Added: cayenne/main/trunk/tutorials/tutorial-rop-server/src/main/java/org/apache/cayenne/tutorial/persistent/auto/_Gallery.java
URL: http://svn.apache.org/viewvc/cayenne/main/trunk/tutorials/tutorial-rop-server/src/main/java/org/apache/cayenne/tutorial/persistent/auto/_Gallery.java?rev=899986&view=auto
==============================================================================
--- cayenne/main/trunk/tutorials/tutorial-rop-server/src/main/java/org/apache/cayenne/tutorial/persistent/auto/_Gallery.java (added)
+++ cayenne/main/trunk/tutorials/tutorial-rop-server/src/main/java/org/apache/cayenne/tutorial/persistent/auto/_Gallery.java Sat Jan 16 16:49:35 2010
@@ -0,0 +1,40 @@
+package org.apache.cayenne.tutorial.persistent.auto;
+
+import java.util.List;
+
+import org.apache.cayenne.CayenneDataObject;
+import org.apache.cayenne.tutorial.persistent.Painting;
+
+/**
+ * Class _Gallery was generated by Cayenne.
+ * It is probably a good idea to avoid changing this class manually,
+ * since it may be overwritten next time code is regenerated.
+ * If you need to make any customizations, please use subclass.
+ */
+public abstract class _Gallery extends CayenneDataObject {
+
+    public static final String NAME_PROPERTY = "name";
+    public static final String PAINTINGS_PROPERTY = "paintings";
+
+    public static final String ID_PK_COLUMN = "ID";
+
+    public void setName(String name) {
+        writeProperty("name", name);
+    }
+    public String getName() {
+        return (String)readProperty("name");
+    }
+
+    public void addToPaintings(Painting obj) {
+        addToManyTarget("paintings", obj, true);
+    }
+    public void removeFromPaintings(Painting obj) {
+        removeToManyTarget("paintings", obj, true);
+    }
+    @SuppressWarnings("unchecked")
+    public List<Painting> getPaintings() {
+        return (List<Painting>)readProperty("paintings");
+    }
+
+
+}

Added: cayenne/main/trunk/tutorials/tutorial-rop-server/src/main/java/org/apache/cayenne/tutorial/persistent/auto/_Painting.java
URL: http://svn.apache.org/viewvc/cayenne/main/trunk/tutorials/tutorial-rop-server/src/main/java/org/apache/cayenne/tutorial/persistent/auto/_Painting.java?rev=899986&view=auto
==============================================================================
--- cayenne/main/trunk/tutorials/tutorial-rop-server/src/main/java/org/apache/cayenne/tutorial/persistent/auto/_Painting.java (added)
+++ cayenne/main/trunk/tutorials/tutorial-rop-server/src/main/java/org/apache/cayenne/tutorial/persistent/auto/_Painting.java Sat Jan 16 16:49:35 2010
@@ -0,0 +1,46 @@
+package org.apache.cayenne.tutorial.persistent.auto;
+
+import org.apache.cayenne.CayenneDataObject;
+import org.apache.cayenne.tutorial.persistent.Artist;
+import org.apache.cayenne.tutorial.persistent.Gallery;
+
+/**
+ * Class _Painting was generated by Cayenne.
+ * It is probably a good idea to avoid changing this class manually,
+ * since it may be overwritten next time code is regenerated.
+ * If you need to make any customizations, please use subclass.
+ */
+public abstract class _Painting extends CayenneDataObject {
+
+    public static final String NAME_PROPERTY = "name";
+    public static final String ARTIST_PROPERTY = "artist";
+    public static final String GALLERY_PROPERTY = "gallery";
+
+    public static final String ID_PK_COLUMN = "ID";
+
+    public void setName(String name) {
+        writeProperty("name", name);
+    }
+    public String getName() {
+        return (String)readProperty("name");
+    }
+
+    public void setArtist(Artist artist) {
+        setToOneTarget("artist", artist, true);
+    }
+
+    public Artist getArtist() {
+        return (Artist)readProperty("artist");
+    }
+
+
+    public void setGallery(Gallery gallery) {
+        setToOneTarget("gallery", gallery, true);
+    }
+
+    public Gallery getGallery() {
+        return (Gallery)readProperty("gallery");
+    }
+
+
+}

Added: cayenne/main/trunk/tutorials/tutorial-rop-server/src/main/java/org/apache/cayenne/tutorial/persistent/auto/_UntitledDomainMap.java
URL: http://svn.apache.org/viewvc/cayenne/main/trunk/tutorials/tutorial-rop-server/src/main/java/org/apache/cayenne/tutorial/persistent/auto/_UntitledDomainMap.java?rev=899986&view=auto
==============================================================================
--- cayenne/main/trunk/tutorials/tutorial-rop-server/src/main/java/org/apache/cayenne/tutorial/persistent/auto/_UntitledDomainMap.java (added)
+++ cayenne/main/trunk/tutorials/tutorial-rop-server/src/main/java/org/apache/cayenne/tutorial/persistent/auto/_UntitledDomainMap.java Sat Jan 16 16:49:35 2010
@@ -0,0 +1,12 @@
+package org.apache.cayenne.tutorial.persistent.auto;
+
+
+
+/**
+ * This class was generated by Cayenne.
+ * It is probably a good idea to avoid changing this class manually,
+ * since it may be overwritten next time code is regenerated.
+ * If you need to make any customizations, please use subclass.
+ */
+public class _UntitledDomainMap {
+}
\ No newline at end of file

Added: cayenne/main/trunk/tutorials/tutorial-rop-server/src/main/java/org/apache/cayenne/tutorial/persistent/client/Artist.java
URL: http://svn.apache.org/viewvc/cayenne/main/trunk/tutorials/tutorial-rop-server/src/main/java/org/apache/cayenne/tutorial/persistent/client/Artist.java?rev=899986&view=auto
==============================================================================
--- cayenne/main/trunk/tutorials/tutorial-rop-server/src/main/java/org/apache/cayenne/tutorial/persistent/client/Artist.java (added)
+++ cayenne/main/trunk/tutorials/tutorial-rop-server/src/main/java/org/apache/cayenne/tutorial/persistent/client/Artist.java Sat Jan 16 16:49:35 2010
@@ -0,0 +1,10 @@
+package org.apache.cayenne.tutorial.persistent.client;
+
+import org.apache.cayenne.tutorial.persistent.client.auto._Artist;
+
+/**
+ * A persistent class mapped as "Artist" Cayenne entity.
+ */
+public class Artist extends _Artist {
+
+}

Added: cayenne/main/trunk/tutorials/tutorial-rop-server/src/main/java/org/apache/cayenne/tutorial/persistent/client/Gallery.java
URL: http://svn.apache.org/viewvc/cayenne/main/trunk/tutorials/tutorial-rop-server/src/main/java/org/apache/cayenne/tutorial/persistent/client/Gallery.java?rev=899986&view=auto
==============================================================================
--- cayenne/main/trunk/tutorials/tutorial-rop-server/src/main/java/org/apache/cayenne/tutorial/persistent/client/Gallery.java (added)
+++ cayenne/main/trunk/tutorials/tutorial-rop-server/src/main/java/org/apache/cayenne/tutorial/persistent/client/Gallery.java Sat Jan 16 16:49:35 2010
@@ -0,0 +1,10 @@
+package org.apache.cayenne.tutorial.persistent.client;
+
+import org.apache.cayenne.tutorial.persistent.client.auto._Gallery;
+
+/**
+ * A persistent class mapped as "Gallery" Cayenne entity.
+ */
+public class Gallery extends _Gallery {
+
+}

Added: cayenne/main/trunk/tutorials/tutorial-rop-server/src/main/java/org/apache/cayenne/tutorial/persistent/client/Painting.java
URL: http://svn.apache.org/viewvc/cayenne/main/trunk/tutorials/tutorial-rop-server/src/main/java/org/apache/cayenne/tutorial/persistent/client/Painting.java?rev=899986&view=auto
==============================================================================
--- cayenne/main/trunk/tutorials/tutorial-rop-server/src/main/java/org/apache/cayenne/tutorial/persistent/client/Painting.java (added)
+++ cayenne/main/trunk/tutorials/tutorial-rop-server/src/main/java/org/apache/cayenne/tutorial/persistent/client/Painting.java Sat Jan 16 16:49:35 2010
@@ -0,0 +1,10 @@
+package org.apache.cayenne.tutorial.persistent.client;
+
+import org.apache.cayenne.tutorial.persistent.client.auto._Painting;
+
+/**
+ * A persistent class mapped as "Painting" Cayenne entity.
+ */
+public class Painting extends _Painting {
+
+}

Added: cayenne/main/trunk/tutorials/tutorial-rop-server/src/main/java/org/apache/cayenne/tutorial/persistent/client/UntitledDomainMap.java
URL: http://svn.apache.org/viewvc/cayenne/main/trunk/tutorials/tutorial-rop-server/src/main/java/org/apache/cayenne/tutorial/persistent/client/UntitledDomainMap.java?rev=899986&view=auto
==============================================================================
--- cayenne/main/trunk/tutorials/tutorial-rop-server/src/main/java/org/apache/cayenne/tutorial/persistent/client/UntitledDomainMap.java (added)
+++ cayenne/main/trunk/tutorials/tutorial-rop-server/src/main/java/org/apache/cayenne/tutorial/persistent/client/UntitledDomainMap.java Sat Jan 16 16:49:35 2010
@@ -0,0 +1,18 @@
+package org.apache.cayenne.tutorial.persistent.client;
+
+import org.apache.cayenne.tutorial.persistent.client.auto._UntitledDomainMap;
+
+public class UntitledDomainMap extends _UntitledDomainMap {
+
+    private static UntitledDomainMap instance;
+
+    private UntitledDomainMap() {}
+
+    public static UntitledDomainMap getInstance() {
+        if(instance == null) {
+            instance = new UntitledDomainMap();
+        }
+
+        return instance;
+    }
+}

Added: cayenne/main/trunk/tutorials/tutorial-rop-server/src/main/java/org/apache/cayenne/tutorial/persistent/client/auto/_Artist.java
URL: http://svn.apache.org/viewvc/cayenne/main/trunk/tutorials/tutorial-rop-server/src/main/java/org/apache/cayenne/tutorial/persistent/client/auto/_Artist.java?rev=899986&view=auto
==============================================================================
--- cayenne/main/trunk/tutorials/tutorial-rop-server/src/main/java/org/apache/cayenne/tutorial/persistent/client/auto/_Artist.java (added)
+++ cayenne/main/trunk/tutorials/tutorial-rop-server/src/main/java/org/apache/cayenne/tutorial/persistent/client/auto/_Artist.java Sat Jan 16 16:49:35 2010
@@ -0,0 +1,88 @@
+package org.apache.cayenne.tutorial.persistent.client.auto;
+
+import java.util.Date;
+import java.util.List;
+
+import org.apache.cayenne.PersistentObject;
+import org.apache.cayenne.tutorial.persistent.client.Painting;
+
+/**
+ * A generated persistent class mapped as "Artist" Cayenne entity. It is a good idea to
+ * avoid changing this class manually, since it will be overwritten next time code is
+ * regenerated. If you need to make any customizations, put them in a subclass.
+ */
+public abstract class _Artist extends PersistentObject {
+
+    public static final String DATE_OF_BIRTH_PROPERTY = "dateOfBirth";
+    public static final String NAME_PROPERTY = "name";
+    public static final String PAINTINGS_PROPERTY = "paintings";
+
+    protected Date dateOfBirth;
+    protected String name;
+    protected List<Painting> paintings;
+
+    public Date getDateOfBirth() {
+        if(objectContext != null) {
+            objectContext.prepareForAccess(this, "dateOfBirth", false);
+        }
+
+        return dateOfBirth;
+    }
+    public void setDateOfBirth(Date dateOfBirth) {
+        if(objectContext != null) {
+            objectContext.prepareForAccess(this, "dateOfBirth", false);
+        }
+
+        Object oldValue = this.dateOfBirth;
+        this.dateOfBirth = dateOfBirth;
+
+        // notify objectContext about simple property change
+        if(objectContext != null) {
+            objectContext.propertyChanged(this, "dateOfBirth", oldValue, dateOfBirth);
+        }
+    }
+
+    public String getName() {
+        if(objectContext != null) {
+            objectContext.prepareForAccess(this, "name", false);
+        }
+
+        return name;
+    }
+    public void setName(String name) {
+        if(objectContext != null) {
+            objectContext.prepareForAccess(this, "name", false);
+        }
+
+        Object oldValue = this.name;
+        this.name = name;
+
+        // notify objectContext about simple property change
+        if(objectContext != null) {
+            objectContext.propertyChanged(this, "name", oldValue, name);
+        }
+    }
+
+    public List<Painting> getPaintings() {
+        if(objectContext != null) {
+            objectContext.prepareForAccess(this, "paintings", true);
+        }
+
+        return paintings;
+    }
+    public void addToPaintings(Painting object) {
+        if(objectContext != null) {
+            objectContext.prepareForAccess(this, "paintings", true);
+        }
+
+        this.paintings.add(object);
+    }
+    public void removeFromPaintings(Painting object) {
+        if(objectContext != null) {
+            objectContext.prepareForAccess(this, "paintings", true);
+        }
+
+        this.paintings.remove(object);
+    }
+
+}

Added: cayenne/main/trunk/tutorials/tutorial-rop-server/src/main/java/org/apache/cayenne/tutorial/persistent/client/auto/_Gallery.java
URL: http://svn.apache.org/viewvc/cayenne/main/trunk/tutorials/tutorial-rop-server/src/main/java/org/apache/cayenne/tutorial/persistent/client/auto/_Gallery.java?rev=899986&view=auto
==============================================================================
--- cayenne/main/trunk/tutorials/tutorial-rop-server/src/main/java/org/apache/cayenne/tutorial/persistent/client/auto/_Gallery.java (added)
+++ cayenne/main/trunk/tutorials/tutorial-rop-server/src/main/java/org/apache/cayenne/tutorial/persistent/client/auto/_Gallery.java Sat Jan 16 16:49:35 2010
@@ -0,0 +1,64 @@
+package org.apache.cayenne.tutorial.persistent.client.auto;
+
+import java.util.List;
+
+import org.apache.cayenne.PersistentObject;
+import org.apache.cayenne.tutorial.persistent.client.Painting;
+
+/**
+ * A generated persistent class mapped as "Gallery" Cayenne entity. It is a good idea to
+ * avoid changing this class manually, since it will be overwritten next time code is
+ * regenerated. If you need to make any customizations, put them in a subclass.
+ */
+public abstract class _Gallery extends PersistentObject {
+
+    public static final String NAME_PROPERTY = "name";
+    public static final String PAINTINGS_PROPERTY = "paintings";
+
+    protected String name;
+    protected List<Painting> paintings;
+
+    public String getName() {
+        if(objectContext != null) {
+            objectContext.prepareForAccess(this, "name", false);
+        }
+
+        return name;
+    }
+    public void setName(String name) {
+        if(objectContext != null) {
+            objectContext.prepareForAccess(this, "name", false);
+        }
+
+        Object oldValue = this.name;
+        this.name = name;
+
+        // notify objectContext about simple property change
+        if(objectContext != null) {
+            objectContext.propertyChanged(this, "name", oldValue, name);
+        }
+    }
+
+    public List<Painting> getPaintings() {
+        if(objectContext != null) {
+            objectContext.prepareForAccess(this, "paintings", true);
+        }
+
+        return paintings;
+    }
+    public void addToPaintings(Painting object) {
+        if(objectContext != null) {
+            objectContext.prepareForAccess(this, "paintings", true);
+        }
+
+        this.paintings.add(object);
+    }
+    public void removeFromPaintings(Painting object) {
+        if(objectContext != null) {
+            objectContext.prepareForAccess(this, "paintings", true);
+        }
+
+        this.paintings.remove(object);
+    }
+
+}

Added: cayenne/main/trunk/tutorials/tutorial-rop-server/src/main/java/org/apache/cayenne/tutorial/persistent/client/auto/_Painting.java
URL: http://svn.apache.org/viewvc/cayenne/main/trunk/tutorials/tutorial-rop-server/src/main/java/org/apache/cayenne/tutorial/persistent/client/auto/_Painting.java?rev=899986&view=auto
==============================================================================
--- cayenne/main/trunk/tutorials/tutorial-rop-server/src/main/java/org/apache/cayenne/tutorial/persistent/client/auto/_Painting.java (added)
+++ cayenne/main/trunk/tutorials/tutorial-rop-server/src/main/java/org/apache/cayenne/tutorial/persistent/client/auto/_Painting.java Sat Jan 16 16:49:35 2010
@@ -0,0 +1,74 @@
+package org.apache.cayenne.tutorial.persistent.client.auto;
+
+import org.apache.cayenne.PersistentObject;
+import org.apache.cayenne.ValueHolder;
+import org.apache.cayenne.tutorial.persistent.client.Artist;
+import org.apache.cayenne.tutorial.persistent.client.Gallery;
+
+/**
+ * A generated persistent class mapped as "Painting" Cayenne entity. It is a good idea to
+ * avoid changing this class manually, since it will be overwritten next time code is
+ * regenerated. If you need to make any customizations, put them in a subclass.
+ */
+public abstract class _Painting extends PersistentObject {
+
+    public static final String NAME_PROPERTY = "name";
+    public static final String ARTIST_PROPERTY = "artist";
+    public static final String GALLERY_PROPERTY = "gallery";
+
+    protected String name;
+    protected ValueHolder artist;
+    protected ValueHolder gallery;
+
+    public String getName() {
+        if(objectContext != null) {
+            objectContext.prepareForAccess(this, "name", false);
+        }
+
+        return name;
+    }
+    public void setName(String name) {
+        if(objectContext != null) {
+            objectContext.prepareForAccess(this, "name", false);
+        }
+
+        Object oldValue = this.name;
+        this.name = name;
+
+        // notify objectContext about simple property change
+        if(objectContext != null) {
+            objectContext.propertyChanged(this, "name", oldValue, name);
+        }
+    }
+
+    public Artist getArtist() {
+        if(objectContext != null) {
+            objectContext.prepareForAccess(this, "artist", true);
+        }
+
+        return (Artist) artist.getValue();
+    }
+    public void setArtist(Artist artist) {
+        if(objectContext != null) {
+            objectContext.prepareForAccess(this, "artist", true);
+        }
+
+        this.artist.setValue(artist);
+    }
+
+    public Gallery getGallery() {
+        if(objectContext != null) {
+            objectContext.prepareForAccess(this, "gallery", true);
+        }
+
+        return (Gallery) gallery.getValue();
+    }
+    public void setGallery(Gallery gallery) {
+        if(objectContext != null) {
+            objectContext.prepareForAccess(this, "gallery", true);
+        }
+
+        this.gallery.setValue(gallery);
+    }
+
+}

Added: cayenne/main/trunk/tutorials/tutorial-rop-server/src/main/java/org/apache/cayenne/tutorial/persistent/client/auto/_UntitledDomainMap.java
URL: http://svn.apache.org/viewvc/cayenne/main/trunk/tutorials/tutorial-rop-server/src/main/java/org/apache/cayenne/tutorial/persistent/client/auto/_UntitledDomainMap.java?rev=899986&view=auto
==============================================================================
--- cayenne/main/trunk/tutorials/tutorial-rop-server/src/main/java/org/apache/cayenne/tutorial/persistent/client/auto/_UntitledDomainMap.java (added)
+++ cayenne/main/trunk/tutorials/tutorial-rop-server/src/main/java/org/apache/cayenne/tutorial/persistent/client/auto/_UntitledDomainMap.java Sat Jan 16 16:49:35 2010
@@ -0,0 +1,12 @@
+package org.apache.cayenne.tutorial.persistent.client.auto;
+
+import org.apache.cayenne.PersistentObject;
+
+/**
+ * This class was generated by Cayenne.
+ * It is probably a good idea to avoid changing this class manually,
+ * since it may be overwritten next time code is regenerated.
+ * If you need to make any customizations, please use subclass.
+ */
+public class _UntitledDomainMap {
+}
\ No newline at end of file

Added: cayenne/main/trunk/tutorials/tutorial-rop-server/src/main/resources/UntitledDomainMap.map.xml
URL: http://svn.apache.org/viewvc/cayenne/main/trunk/tutorials/tutorial-rop-server/src/main/resources/UntitledDomainMap.map.xml?rev=899986&view=auto
==============================================================================
--- cayenne/main/trunk/tutorials/tutorial-rop-server/src/main/resources/UntitledDomainMap.map.xml (added)
+++ cayenne/main/trunk/tutorials/tutorial-rop-server/src/main/resources/UntitledDomainMap.map.xml Sat Jan 16 16:49:35 2010
@@ -0,0 +1,50 @@
+<?xml version="1.0" encoding="utf-8"?>
+<data-map xmlns="http://cayenne.apache.org/schema/3.0/modelMap"
+  xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+  xsi:schemaLocation="http://cayenne.apache.org/schema/3.0/modelMap http://cayenne.apache.org/schema/3.0/modelMap.xsd"
+  project-version="3.0.0.1">
+	<property name="defaultPackage" value="org.apache.cayenne.tutorial.persistent"/>
+	<property name="clientSupported" value="true"/>
+	<property name="defaultClientPackage" value="org.apache.cayenne.tutorial.persistent.client"/>
+	<db-entity name="ARTIST">
+		<db-attribute name="DATE_OF_BIRTH" type="DATE"/>
+		<db-attribute name="ID" type="INTEGER" isPrimaryKey="true" isMandatory="true"/>
+		<db-attribute name="NAME" type="VARCHAR" length="200"/>
+	</db-entity>
+	<db-entity name="GALLERY">
+		<db-attribute name="ID" type="INTEGER" isPrimaryKey="true" isMandatory="true"/>
+		<db-attribute name="NAME" type="VARCHAR" length="200"/>
+	</db-entity>
+	<db-entity name="PAINTING">
+		<db-attribute name="ARTIST_ID" type="INTEGER"/>
+		<db-attribute name="GALLERY_ID" type="INTEGER"/>
+		<db-attribute name="ID" type="INTEGER" isPrimaryKey="true" isMandatory="true"/>
+		<db-attribute name="NAME" type="VARCHAR" length="200"/>
+	</db-entity>
+	<obj-entity name="Artist" className="org.apache.cayenne.tutorial.persistent.Artist" clientClassName="org.apache.cayenne.tutorial.persistent.client.Artist" dbEntityName="ARTIST">
+		<obj-attribute name="dateOfBirth" type="java.util.Date" db-attribute-path="DATE_OF_BIRTH"/>
+		<obj-attribute name="name" type="java.lang.String" db-attribute-path="NAME"/>
+	</obj-entity>
+	<obj-entity name="Gallery" className="org.apache.cayenne.tutorial.persistent.Gallery" clientClassName="org.apache.cayenne.tutorial.persistent.client.Gallery" dbEntityName="GALLERY">
+		<obj-attribute name="name" type="java.lang.String" db-attribute-path="NAME"/>
+	</obj-entity>
+	<obj-entity name="Painting" className="org.apache.cayenne.tutorial.persistent.Painting" clientClassName="org.apache.cayenne.tutorial.persistent.client.Painting" dbEntityName="PAINTING">
+		<obj-attribute name="name" type="java.lang.String" db-attribute-path="NAME"/>
+	</obj-entity>
+	<db-relationship name="paintings" source="ARTIST" target="PAINTING" toMany="true">
+		<db-attribute-pair source="ID" target="ARTIST_ID"/>
+	</db-relationship>
+	<db-relationship name="paintings" source="GALLERY" target="PAINTING" toMany="true">
+		<db-attribute-pair source="ID" target="GALLERY_ID"/>
+	</db-relationship>
+	<db-relationship name="artist" source="PAINTING" target="ARTIST" toMany="false">
+		<db-attribute-pair source="ARTIST_ID" target="ID"/>
+	</db-relationship>
+	<db-relationship name="gallery" source="PAINTING" target="GALLERY" toMany="false">
+		<db-attribute-pair source="GALLERY_ID" target="ID"/>
+	</db-relationship>
+	<obj-relationship name="paintings" source="Artist" target="Painting" deleteRule="Cascade" db-relationship-path="paintings"/>
+	<obj-relationship name="paintings" source="Gallery" target="Painting" deleteRule="Nullify" db-relationship-path="paintings"/>
+	<obj-relationship name="artist" source="Painting" target="Artist" deleteRule="Nullify" db-relationship-path="artist"/>
+	<obj-relationship name="gallery" source="Painting" target="Gallery" deleteRule="Nullify" db-relationship-path="gallery"/>
+</data-map>

Added: cayenne/main/trunk/tutorials/tutorial-rop-server/src/main/resources/UntitledDomainNode.driver.xml
URL: http://svn.apache.org/viewvc/cayenne/main/trunk/tutorials/tutorial-rop-server/src/main/resources/UntitledDomainNode.driver.xml?rev=899986&view=auto
==============================================================================
--- cayenne/main/trunk/tutorials/tutorial-rop-server/src/main/resources/UntitledDomainNode.driver.xml (added)
+++ cayenne/main/trunk/tutorials/tutorial-rop-server/src/main/resources/UntitledDomainNode.driver.xml Sat Jan 16 16:49:35 2010
@@ -0,0 +1,6 @@
+<?xml version="1.0" encoding="utf-8"?>
+<driver project-version="3.0.0.1" class="org.apache.derby.jdbc.EmbeddedDriver">
+	<url value="jdbc:derby:memory:testdb;create=true "/>
+	<connectionPool min="1" max="1"/>
+	<login/>
+</driver>

Added: cayenne/main/trunk/tutorials/tutorial-rop-server/src/main/resources/cayenne.xml
URL: http://svn.apache.org/viewvc/cayenne/main/trunk/tutorials/tutorial-rop-server/src/main/resources/cayenne.xml?rev=899986&view=auto
==============================================================================
--- cayenne/main/trunk/tutorials/tutorial-rop-server/src/main/resources/cayenne.xml (added)
+++ cayenne/main/trunk/tutorials/tutorial-rop-server/src/main/resources/cayenne.xml Sat Jan 16 16:49:35 2010
@@ -0,0 +1,13 @@
+<?xml version="1.0" encoding="utf-8"?>
+<domains project-version="3.0.0.1">
+<domain name="UntitledDomain">
+	<map name="UntitledDomainMap" location="UntitledDomainMap.map.xml"/>
+
+	<node name="UntitledDomainNode"
+		 datasource="UntitledDomainNode.driver.xml"
+		 factory="org.apache.cayenne.conf.DriverDataSourceFactory"
+		 schema-update-strategy="org.apache.cayenne.access.dbsync.CreateIfNoSchemaStrategy">
+			<map-ref name="UntitledDomainMap"/>
+	 </node>
+</domain>
+</domains>

Added: cayenne/main/trunk/tutorials/tutorial-rop-server/src/main/webapp/WEB-INF/web.xml
URL: http://svn.apache.org/viewvc/cayenne/main/trunk/tutorials/tutorial-rop-server/src/main/webapp/WEB-INF/web.xml?rev=899986&view=auto
==============================================================================
--- cayenne/main/trunk/tutorials/tutorial-rop-server/src/main/webapp/WEB-INF/web.xml (added)
+++ cayenne/main/trunk/tutorials/tutorial-rop-server/src/main/webapp/WEB-INF/web.xml Sat Jan 16 16:49:35 2010
@@ -0,0 +1,35 @@
+<?xml version="1.0" encoding="utf-8"?>
+ <!DOCTYPE web-app
+   PUBLIC "-//Sun Microsystems, Inc.//DTD Web Application 2.3//EN"
+   "http://java.sun.com/dtd/web-app_2_3.dtd">
+<web-app>
+	<display-name>Cayenne Tutorial</display-name>
+	<servlet>
+		<servlet-name>cayenne-service</servlet-name>
+		<servlet-class>org.apache.cayenne.remote.hessian.service.HessianServlet</servlet-class>
+		<load-on-startup>0</load-on-startup>
+	</servlet>
+	<servlet-mapping>
+		<servlet-name>cayenne-service</servlet-name>
+		<url-pattern>/cayenne-service</url-pattern>
+	</servlet-mapping>
+	
+	<security-constraint>
+        <web-resource-collection>
+            <web-resource-name>CayenneService</web-resource-name>
+            <url-pattern>/cayenne-service</url-pattern>
+        </web-resource-collection>
+        <auth-constraint>
+            <role-name>cayenne-service-user</role-name>
+        </auth-constraint>
+    </security-constraint>
+    
+    <login-config>
+        <auth-method>BASIC</auth-method>
+        <realm-name>Cayenne Realm</realm-name>
+    </login-config>
+	
+    <security-role>
+        <role-name>cayenne-service-user</role-name>
+    </security-role>
+</web-app>
\ No newline at end of file

Added: cayenne/main/trunk/tutorials/tutorial-rop-server/src/test/java/.gitignore
URL: http://svn.apache.org/viewvc/cayenne/main/trunk/tutorials/tutorial-rop-server/src/test/java/.gitignore?rev=899986&view=auto
==============================================================================
    (empty)

Added: cayenne/main/trunk/tutorials/tutorial-rop-server/src/test/resources/.gitignore
URL: http://svn.apache.org/viewvc/cayenne/main/trunk/tutorials/tutorial-rop-server/src/test/resources/.gitignore?rev=899986&view=auto
==============================================================================
    (empty)

Modified: cayenne/main/trunk/tutorials/tutorial/pom.xml
URL: http://svn.apache.org/viewvc/cayenne/main/trunk/tutorials/tutorial/pom.xml?rev=899986&r1=899985&r2=899986&view=diff
==============================================================================
--- cayenne/main/trunk/tutorials/tutorial/pom.xml (original)
+++ cayenne/main/trunk/tutorials/tutorial/pom.xml Sat Jan 16 16:49:35 2010
@@ -1,23 +1,22 @@
+<!--
+	Licensed to the Apache Software Foundation (ASF) under one or more
+	contributor license agreements. See the NOTICE file distributed with
+	this work for additional information regarding copyright ownership.
+	The ASF licenses this file to you under the Apache License, Version
+	2.0 (the "License"); you may not use this file except in compliance
+	with the License. You may obtain a copy of the License at
 
-	<!--
-		Licensed to the Apache Software Foundation (ASF) under one or more
-		contributor license agreements. See the NOTICE file distributed with
-		this work for additional information regarding copyright ownership.
-		The ASF licenses this file to you under the Apache License, Version
-		2.0 (the "License"); you may not use this file except in compliance
-		with the License. You may obtain a copy of the License at
-
-		http://www.apache.org/licenses/LICENSE-2.0 Unless required by
-		applicable law or agreed to in writing, software distributed under the
-		License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR
-		CONDITIONS OF ANY KIND, either express or implied. See the License for
-		the specific language governing permissions and limitations under the
-		License.
-	-->
+	http://www.apache.org/licenses/LICENSE-2.0 Unless required by
+	applicable law or agreed to in writing, software distributed under the
+	License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR
+	CONDITIONS OF ANY KIND, either express or implied. See the License for
+	the specific language governing permissions and limitations under the
+	License.
+-->
 <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
 	xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
 	<modelVersion>4.0.0</modelVersion>
-	<groupId>org.example.cayenne</groupId>
+	<groupId>org.apache.cayenne</groupId>
 	<artifactId>tutorial</artifactId>
 	<name>Cayenne Tutorial</name>
 	<version>3.1-SNAPSHOT</version>