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 2006/05/04 17:23:59 UTC

svn commit: r399732 - in /incubator/cayenne/examples/trunk: 3t-example-client/ 3t-example-client/src/ 3t-example-client/src/cayenne3t/ 3t-example-client/src/cayenne3t/example/ 3t-example-client/src/cayenne3t/example/client/ 3t-example-client/src/cayenn...

Author: aadamchik
Date: Thu May  4 08:23:56 2006
New Revision: 399732

URL: http://svn.apache.org/viewcvs?rev=399732&view=rev
Log:
moving 3t-examples to Apache. I am the only author of this code, so there should be no IP issues.

Added:
    incubator/cayenne/examples/trunk/3t-example-client/.classpath
    incubator/cayenne/examples/trunk/3t-example-client/.cvsignore
    incubator/cayenne/examples/trunk/3t-example-client/.project
    incubator/cayenne/examples/trunk/3t-example-client/src/
    incubator/cayenne/examples/trunk/3t-example-client/src/cayenne3t/
    incubator/cayenne/examples/trunk/3t-example-client/src/cayenne3t/example/
    incubator/cayenne/examples/trunk/3t-example-client/src/cayenne3t/example/client/
    incubator/cayenne/examples/trunk/3t-example-client/src/cayenne3t/example/client/EventTrace.java
    incubator/cayenne/examples/trunk/3t-example-client/src/cayenne3t/example/client/GraphChangeTrace.java
    incubator/cayenne/examples/trunk/3t-example-client/src/cayenne3t/example/client/Main.java
    incubator/cayenne/examples/trunk/3t-example-client/src/cayenne3t/example/hr/
    incubator/cayenne/examples/trunk/3t-example-client/src/cayenne3t/example/hr/CDepartment.java
    incubator/cayenne/examples/trunk/3t-example-client/src/cayenne3t/example/hr/CPerson.java
    incubator/cayenne/examples/trunk/3t-example-client/src/cayenne3t/example/hr/CProject.java
    incubator/cayenne/examples/trunk/3t-example-client/src/cayenne3t/example/hr/CustomClientObject.java
    incubator/cayenne/examples/trunk/3t-example-client/src/cayenne3t/example/hr/auto/
    incubator/cayenne/examples/trunk/3t-example-client/src/cayenne3t/example/hr/auto/_CDepartment.java
    incubator/cayenne/examples/trunk/3t-example-client/src/cayenne3t/example/hr/auto/_CPerson.java
    incubator/cayenne/examples/trunk/3t-example-client/src/cayenne3t/example/hr/auto/_CProject.java
Modified:
    incubator/cayenne/examples/trunk/3t-example-client/   (props changed)
    incubator/cayenne/examples/trunk/3t-example/webroot/WEB-INF/   (props changed)

Propchange: incubator/cayenne/examples/trunk/3t-example-client/
------------------------------------------------------------------------------
--- svn:ignore (added)
+++ svn:ignore Thu May  4 08:23:56 2006
@@ -0,0 +1 @@
+classes

Added: incubator/cayenne/examples/trunk/3t-example-client/.classpath
URL: http://svn.apache.org/viewcvs/incubator/cayenne/examples/trunk/3t-example-client/.classpath?rev=399732&view=auto
==============================================================================
--- incubator/cayenne/examples/trunk/3t-example-client/.classpath (added)
+++ incubator/cayenne/examples/trunk/3t-example-client/.classpath Thu May  4 08:23:56 2006
@@ -0,0 +1,8 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<classpath>
+	<classpathentry kind="src" path="src"/>
+	<classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER"/>
+	<classpathentry combineaccessrules="false" kind="src" path="/cayenne-java"/>
+	<classpathentry combineaccessrules="false" kind="src" path="/cayenne-java-1.5"/>
+	<classpathentry kind="output" path="classes"/>
+</classpath>

Added: incubator/cayenne/examples/trunk/3t-example-client/.cvsignore
URL: http://svn.apache.org/viewcvs/incubator/cayenne/examples/trunk/3t-example-client/.cvsignore?rev=399732&view=auto
==============================================================================
--- incubator/cayenne/examples/trunk/3t-example-client/.cvsignore (added)
+++ incubator/cayenne/examples/trunk/3t-example-client/.cvsignore Thu May  4 08:23:56 2006
@@ -0,0 +1,2 @@
+classes
+velocity.log

Added: incubator/cayenne/examples/trunk/3t-example-client/.project
URL: http://svn.apache.org/viewcvs/incubator/cayenne/examples/trunk/3t-example-client/.project?rev=399732&view=auto
==============================================================================
--- incubator/cayenne/examples/trunk/3t-example-client/.project (added)
+++ incubator/cayenne/examples/trunk/3t-example-client/.project Thu May  4 08:23:56 2006
@@ -0,0 +1,17 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<projectDescription>
+	<name>3t-example-client</name>
+	<comment></comment>
+	<projects>
+	</projects>
+	<buildSpec>
+		<buildCommand>
+			<name>org.eclipse.jdt.core.javabuilder</name>
+			<arguments>
+			</arguments>
+		</buildCommand>
+	</buildSpec>
+	<natures>
+		<nature>org.eclipse.jdt.core.javanature</nature>
+	</natures>
+</projectDescription>

Added: incubator/cayenne/examples/trunk/3t-example-client/src/cayenne3t/example/client/EventTrace.java
URL: http://svn.apache.org/viewcvs/incubator/cayenne/examples/trunk/3t-example-client/src/cayenne3t/example/client/EventTrace.java?rev=399732&view=auto
==============================================================================
--- incubator/cayenne/examples/trunk/3t-example-client/src/cayenne3t/example/client/EventTrace.java (added)
+++ incubator/cayenne/examples/trunk/3t-example-client/src/cayenne3t/example/client/EventTrace.java Thu May  4 08:23:56 2006
@@ -0,0 +1,40 @@
+package cayenne3t.example.client;
+
+import org.apache.commons.logging.Log;
+import org.apache.commons.logging.LogFactory;
+import org.objectstyle.cayenne.DataChannelListener;
+import org.objectstyle.cayenne.graph.GraphEvent;
+
+public class EventTrace implements DataChannelListener {
+
+	Log logger;
+
+	GraphChangeTrace graphChangeTrace;
+
+	public EventTrace(String logLabel) {
+		this.logger = LogFactory.getLog(logLabel);
+		this.graphChangeTrace = new GraphChangeTrace(logLabel
+				+ " [graph change] ");
+	}
+
+	public void graphChanged(GraphEvent event) {
+		logger.info("*** Graph Changed");
+		processGraphDiff(event);
+	}
+
+	public void graphFlushed(GraphEvent event) {
+		logger.info("*** Graph Committed:" + event.getSource());
+		processGraphDiff(event);
+	}
+
+	public void graphRolledback(GraphEvent event) {
+		logger.info("*** Graph Rolledback");
+		processGraphDiff(event);
+	}
+
+	void processGraphDiff(GraphEvent e) {
+		if (e.getDiff() != null) {
+			e.getDiff().apply(graphChangeTrace);
+		}
+	}
+}

Added: incubator/cayenne/examples/trunk/3t-example-client/src/cayenne3t/example/client/GraphChangeTrace.java
URL: http://svn.apache.org/viewcvs/incubator/cayenne/examples/trunk/3t-example-client/src/cayenne3t/example/client/GraphChangeTrace.java?rev=399732&view=auto
==============================================================================
--- incubator/cayenne/examples/trunk/3t-example-client/src/cayenne3t/example/client/GraphChangeTrace.java (added)
+++ incubator/cayenne/examples/trunk/3t-example-client/src/cayenne3t/example/client/GraphChangeTrace.java Thu May  4 08:23:56 2006
@@ -0,0 +1,53 @@
+package cayenne3t.example.client;
+
+import org.apache.commons.logging.Log;
+import org.apache.commons.logging.LogFactory;
+import org.objectstyle.cayenne.graph.GraphChangeHandler;
+
+/**
+ * This is an example of a GraphEventListener that logs received events.
+ */
+public class GraphChangeTrace implements GraphChangeHandler {
+
+    Log logger;
+
+    public GraphChangeTrace(String logLabel) {
+        this.logger = LogFactory.getLog(logLabel);
+    }
+    
+    public void arcCreated(Object nodeId, Object targetNodeId, Object arcId) {
+        logger.info("Arc created: " + arcId);
+    }
+
+    public void arcDeleted(Object nodeId, Object targetNodeId, Object arcId) {
+        logger.info("Arc deleted: " + arcId);
+    }
+
+    public void graphCommitted() {
+        logger.info("Graph committed");
+    }
+
+    public void graphRolledback() {
+        logger.info("Graph rolled back");
+    }
+
+    public void nodeCreated(Object nodeId) {
+        logger.info("Node created: " + nodeId);
+    }
+
+    public void nodeIdChanged(Object nodeId, Object newId) {
+        logger.info("Node id changed from " + nodeId + " to " + newId);
+    }
+
+    public void nodePropertyChanged(
+            Object nodeId,
+            String property,
+            Object oldValue,
+            Object newValue) {
+        logger.info("Node property changed: " + property);
+    }
+
+    public void nodeRemoved(Object nodeId) {
+        logger.info("Node removed: " + nodeId);
+    }
+}

Added: incubator/cayenne/examples/trunk/3t-example-client/src/cayenne3t/example/client/Main.java
URL: http://svn.apache.org/viewcvs/incubator/cayenne/examples/trunk/3t-example-client/src/cayenne3t/example/client/Main.java?rev=399732&view=auto
==============================================================================
--- incubator/cayenne/examples/trunk/3t-example-client/src/cayenne3t/example/client/Main.java (added)
+++ incubator/cayenne/examples/trunk/3t-example-client/src/cayenne3t/example/client/Main.java Thu May  4 08:23:56 2006
@@ -0,0 +1,207 @@
+package cayenne3t.example.client;
+
+import java.util.Date;
+import java.util.Iterator;
+import java.util.List;
+
+import org.apache.commons.logging.Log;
+import org.apache.commons.logging.LogFactory;
+import org.apache.log4j.BasicConfigurator;
+import org.objectstyle.cayenne.CayenneContext;
+import org.objectstyle.cayenne.DataChannel;
+import org.objectstyle.cayenne.ObjectContext;
+import org.objectstyle.cayenne.QueryResponse;
+import org.objectstyle.cayenne.exp.Expression;
+import org.objectstyle.cayenne.query.NamedQuery;
+import org.objectstyle.cayenne.query.Query;
+import org.objectstyle.cayenne.query.QueryChain;
+import org.objectstyle.cayenne.query.SelectQuery;
+import org.objectstyle.cayenne.remote.ClientChannel;
+import org.objectstyle.cayenne.remote.ClientConnection;
+import org.objectstyle.cayenne.remote.hessian.HessianConnection;
+import org.objectstyle.cayenne.util.EventUtil;
+
+import cayenne3t.example.hr.CDepartment;
+import cayenne3t.example.hr.CPerson;
+
+/**
+ * @author Andrus Adamchik
+ */
+public class Main {
+
+	EventTrace channelTrace;
+	ObjectContext context;
+
+	public static void main(String[] args) {
+		try {
+			new Main().execute();
+		} catch (Throwable th) {
+			th.printStackTrace();
+		}
+	}
+
+	Main() {
+		// init Log4J .. isn't strictly needed as Cayenne Client uses
+		// commons-logging, but
+		// helpful when run from Eclipse.
+		BasicConfigurator.configure();
+
+		// obtain object context
+		ClientConnection connection = new HessianConnection(
+				"http://localhost:8080/3t-example/cayenne", null, null,
+				"shared-session");
+
+		// enable channel events
+		DataChannel channel = new ClientChannel(connection, true);
+
+		// trace ALL context local and remote events ... must keep references to
+		// listeners
+		// to avoid deallocation
+		this.channelTrace = new EventTrace("channel-event");
+		EventUtil.listenForChannelEvents(channel.getEventManager(),
+				channelTrace);
+
+		// enable graph events
+		context = new CayenneContext(channel, true, true);
+	}
+
+	void execute() {
+		Log logger = LogFactory.getLog("3t-client-demo");
+		logger.info("*** 1. Setup data: ");
+
+		// batch a few queries in a single call...
+		Query[] deletes = new Query[2];
+		deletes[0] = new NamedQuery("DeletePerson");
+		deletes[1] = new NamedQuery("DeleteDepartment");
+
+		QueryResponse deleteResponse = context
+				.performGenericQuery(new QueryChain(deletes));
+
+		for (deleteResponse.reset(); deleteResponse.next();) {
+			if (!deleteResponse.isList()) {
+				int[] counts = deleteResponse.currentUpdateCount();
+				for (int i = 0; i < counts.length; i++) {
+					logger.info("   deleted = " + counts[i]);
+				}
+			}
+		}
+
+		// do a single named insert query...
+		Query insert = new NamedQuery("CreateData");
+		QueryResponse insertResponse = context.performGenericQuery(insert);
+		for (insertResponse.reset(); insertResponse.next();) {
+			if (!insertResponse.isList()) {
+				int[] counts = insertResponse.currentUpdateCount();
+				for (int i = 0; i < counts.length; i++) {
+					logger.info("   inserted = " + counts[i]);
+				}
+			}
+		}
+
+		logger.info("=======================================\n\n ");
+		logger.info("*** 2. Select: ");
+		List results = context
+				.performQuery(new NamedQuery("DepartmentWithName"));
+		logger.info("   select results: " + results);
+
+		CDepartment department = (CDepartment) results.get(0);
+		department.setDescription(department.getDescription() + "_");
+
+		logger.info("=======================================\n\n ");
+		logger.info("*** 3. Commit modified: ");
+		context.commitChanges();
+		logger.info("   department: " + department);
+
+		logger.info("=======================================\n\n ");
+		logger.info("*** 4. Commit New Object: ");
+		CPerson person = (CPerson) context.newObject(CPerson.class);
+		person.setBaseSalary(new Double(23000.00));
+		person.setDateHired(new Date());
+		person.setFullName("Test Person");
+
+		context.commitChanges();
+
+		logger.info("   person id: " + person.getObjectId());
+		logger.info("   person: " + person);
+
+		logger.info("=======================================\n\n ");
+		logger.info("*** 5. Setup relationship: ");
+
+		person.setDepartment(department);
+
+		CPerson anotherPerson = (CPerson) context.newObject(CPerson.class);
+		anotherPerson.setBaseSalary(new Double(88000.00));
+		anotherPerson.setDateHired(new Date());
+		anotherPerson.setFullName("Another Test Person");
+		department.addToEmployees(anotherPerson);
+
+		context.commitChanges();
+
+		CPerson yetAnotherPerson = (CPerson) context.newObject(CPerson.class);
+		yetAnotherPerson.setBaseSalary(new Double(1000000.00));
+		yetAnotherPerson.setDateHired(new Date());
+		yetAnotherPerson.setFullName("Yet Another Test Person");
+		department.addToEmployees(yetAnotherPerson);
+
+		context.commitChanges();
+
+		logger.info("=======================================\n\n ");
+		logger.info("*** 6. Delete relationship: ");
+
+		department.removeFromEmployees(anotherPerson);
+		yetAnotherPerson.setDepartment(null);
+		context.commitChanges();
+		logger.info(" employees: " + department.getEmployees());
+
+		logger.info("=======================================\n\n ");
+		logger.info("*** 7. Rollback: ");
+
+		department.setName("xyz");
+		CPerson rolledbackPerson = (CPerson) context.newObject(CPerson.class);
+		department.addToEmployees(rolledbackPerson);
+
+		context.rollbackChanges();
+		logger.info("***  " + department);
+		logger.info("***  " + rolledbackPerson);
+
+		logger.info("=======================================\n\n ");
+		logger.info("*** 8. Arbitrary Select: ");
+
+		// select using entity with qualifier
+		SelectQuery select1 = new SelectQuery("Person", Expression
+				.fromString("fullName like '%Another%'"));
+		List matches1 = context.performQuery(select1);
+		logger.info("results: " + matches1);
+
+		// same select using client class name
+		SelectQuery select2 = new SelectQuery(CPerson.class, Expression
+				.fromString("fullName like '%Another%'"));
+		List matches2 = context.performQuery(select2);
+		logger.info("results: " + matches2);
+
+		logger.info("=======================================\n\n ");
+		logger.info("*** 9. Select with Prefetches: ");
+		SelectQuery select3 = new SelectQuery(CPerson.class, Expression
+				.fromString("fullName like '%Tes%'"));
+		select3.addPrefetch("department");
+		List matches3 = context.performQuery(select3);
+		Iterator it3 = matches3.iterator();
+		while (it3.hasNext()) {
+			CPerson p = (CPerson) it3.next();
+			logger.info("*** result: " + p + ", prefetched: "
+					+ p.getDepartment());
+		}
+		
+		logger.info("=======================================\n\n ");
+		logger.info("*** 10. Paginated Select: ");
+		SelectQuery select4 = new SelectQuery(CPerson.class);
+		select4.setPageSize(2);
+		
+		List matches4 = context.performQuery(select4);
+		Iterator it4 = matches4.iterator();
+		while (it4.hasNext()) {
+			CPerson p = (CPerson) it4.next();
+			logger.info("*** result: " + p);
+		}
+	}
+}
\ No newline at end of file

Added: incubator/cayenne/examples/trunk/3t-example-client/src/cayenne3t/example/hr/CDepartment.java
URL: http://svn.apache.org/viewcvs/incubator/cayenne/examples/trunk/3t-example-client/src/cayenne3t/example/hr/CDepartment.java?rev=399732&view=auto
==============================================================================
--- incubator/cayenne/examples/trunk/3t-example-client/src/cayenne3t/example/hr/CDepartment.java (added)
+++ incubator/cayenne/examples/trunk/3t-example-client/src/cayenne3t/example/hr/CDepartment.java Thu May  4 08:23:56 2006
@@ -0,0 +1,7 @@
+package cayenne3t.example.hr;
+
+import cayenne3t.example.hr.auto._CDepartment;
+
+public class CDepartment extends _CDepartment {
+
+}

Added: incubator/cayenne/examples/trunk/3t-example-client/src/cayenne3t/example/hr/CPerson.java
URL: http://svn.apache.org/viewcvs/incubator/cayenne/examples/trunk/3t-example-client/src/cayenne3t/example/hr/CPerson.java?rev=399732&view=auto
==============================================================================
--- incubator/cayenne/examples/trunk/3t-example-client/src/cayenne3t/example/hr/CPerson.java (added)
+++ incubator/cayenne/examples/trunk/3t-example-client/src/cayenne3t/example/hr/CPerson.java Thu May  4 08:23:56 2006
@@ -0,0 +1,11 @@
+package cayenne3t.example.hr;
+
+import cayenne3t.example.hr.auto._CPerson;
+
+public class CPerson extends _CPerson {
+
+    public CPerson() {
+        // init defaults
+        this.baseSalary = new Double(0);
+    }
+}

Added: incubator/cayenne/examples/trunk/3t-example-client/src/cayenne3t/example/hr/CProject.java
URL: http://svn.apache.org/viewcvs/incubator/cayenne/examples/trunk/3t-example-client/src/cayenne3t/example/hr/CProject.java?rev=399732&view=auto
==============================================================================
--- incubator/cayenne/examples/trunk/3t-example-client/src/cayenne3t/example/hr/CProject.java (added)
+++ incubator/cayenne/examples/trunk/3t-example-client/src/cayenne3t/example/hr/CProject.java Thu May  4 08:23:56 2006
@@ -0,0 +1,7 @@
+package cayenne3t.example.hr;
+
+import cayenne3t.example.hr.auto._CProject;
+
+public class CProject extends _CProject {
+
+}

Added: incubator/cayenne/examples/trunk/3t-example-client/src/cayenne3t/example/hr/CustomClientObject.java
URL: http://svn.apache.org/viewcvs/incubator/cayenne/examples/trunk/3t-example-client/src/cayenne3t/example/hr/CustomClientObject.java?rev=399732&view=auto
==============================================================================
--- incubator/cayenne/examples/trunk/3t-example-client/src/cayenne3t/example/hr/CustomClientObject.java (added)
+++ incubator/cayenne/examples/trunk/3t-example-client/src/cayenne3t/example/hr/CustomClientObject.java Thu May  4 08:23:56 2006
@@ -0,0 +1,12 @@
+package cayenne3t.example.hr;
+
+import org.objectstyle.cayenne.PersistentObject;
+
+/**
+ * This is a test "wedge" client-side superclass.
+ * 
+ * @author Andrus Adamchik
+ */
+public class CustomClientObject extends PersistentObject {
+
+}

Added: incubator/cayenne/examples/trunk/3t-example-client/src/cayenne3t/example/hr/auto/_CDepartment.java
URL: http://svn.apache.org/viewcvs/incubator/cayenne/examples/trunk/3t-example-client/src/cayenne3t/example/hr/auto/_CDepartment.java?rev=399732&view=auto
==============================================================================
--- incubator/cayenne/examples/trunk/3t-example-client/src/cayenne3t/example/hr/auto/_CDepartment.java (added)
+++ incubator/cayenne/examples/trunk/3t-example-client/src/cayenne3t/example/hr/auto/_CDepartment.java Thu May  4 08:23:56 2006
@@ -0,0 +1,115 @@
+package cayenne3t.example.hr.auto;
+
+import java.util.List;
+
+import org.objectstyle.cayenne.PersistentObject;
+
+import cayenne3t.example.hr.CPerson;
+import cayenne3t.example.hr.CProject;
+
+/**
+ * A generated persistent class mapped as "Department" 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 class _CDepartment extends PersistentObject {
+
+    public static final String DESCRIPTION_PROPERTY = "description";
+    public static final String NAME_PROPERTY = "name";
+    public static final String EMPLOYEES_PROPERTY = "employees";
+    public static final String PROJECTS_PROPERTY = "projects";
+
+    protected String description;
+    protected String name;
+    protected List employees;
+    protected List projects;
+
+    public String getDescription() {
+        if(objectContext != null) {
+            objectContext.prepareForAccess(this, "description");
+        }
+        
+        return description;
+    }
+    public void setDescription(String description) {
+        if(objectContext != null) {
+            objectContext.prepareForAccess(this, "description");
+        }
+        
+        Object oldValue = this.description;
+        this.description = description;
+        
+        // notify objectContext about simple property change
+        if(objectContext != null) {
+            objectContext.propertyChanged(this, "description", oldValue, description);
+        }
+    }
+    
+    
+    public String getName() {
+        if(objectContext != null) {
+            objectContext.prepareForAccess(this, "name");
+        }
+        
+        return name;
+    }
+    public void setName(String name) {
+        if(objectContext != null) {
+            objectContext.prepareForAccess(this, "name");
+        }
+        
+        Object oldValue = this.name;
+        this.name = name;
+        
+        // notify objectContext about simple property change
+        if(objectContext != null) {
+            objectContext.propertyChanged(this, "name", oldValue, name);
+        }
+    }
+    
+    
+    public List getEmployees() {
+        if(objectContext != null) {
+            objectContext.prepareForAccess(this, "employees");
+        }
+        
+        return employees;
+    }
+    public void addToEmployees(CPerson object) {
+        if(objectContext != null) {
+            objectContext.prepareForAccess(this, "employees");
+        }
+        
+        this.employees.add(object);
+    }
+    public void removeFromEmployees(CPerson object) {
+        if(objectContext != null) {
+            objectContext.prepareForAccess(this, "employees");
+        }
+        
+        this.employees.remove(object);
+    }
+    
+    public List getProjects() {
+        if(objectContext != null) {
+            objectContext.prepareForAccess(this, "projects");
+        }
+        
+        return projects;
+    }
+    public void addToProjects(CProject object) {
+        if(objectContext != null) {
+            objectContext.prepareForAccess(this, "projects");
+        }
+        
+        this.projects.add(object);
+    }
+    public void removeFromProjects(CProject object) {
+        if(objectContext != null) {
+            objectContext.prepareForAccess(this, "projects");
+        }
+        
+        this.projects.remove(object);
+    }
+    
+}
\ No newline at end of file

Added: incubator/cayenne/examples/trunk/3t-example-client/src/cayenne3t/example/hr/auto/_CPerson.java
URL: http://svn.apache.org/viewcvs/incubator/cayenne/examples/trunk/3t-example-client/src/cayenne3t/example/hr/auto/_CPerson.java?rev=399732&view=auto
==============================================================================
--- incubator/cayenne/examples/trunk/3t-example-client/src/cayenne3t/example/hr/auto/_CPerson.java (added)
+++ incubator/cayenne/examples/trunk/3t-example-client/src/cayenne3t/example/hr/auto/_CPerson.java Thu May  4 08:23:56 2006
@@ -0,0 +1,158 @@
+package cayenne3t.example.hr.auto;
+
+import java.util.Date;
+import java.util.List;
+
+import org.objectstyle.cayenne.ValueHolder;
+
+import cayenne3t.example.hr.CDepartment;
+import cayenne3t.example.hr.CProject;
+import cayenne3t.example.hr.CustomClientObject;
+
+/**
+ * A generated persistent class mapped as "Person" 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 class _CPerson extends CustomClientObject {
+
+    public static final String BASE_SALARY_PROPERTY = "baseSalary";
+    public static final String DATE_HIRED_PROPERTY = "dateHired";
+    public static final String FULL_NAME_PROPERTY = "fullName";
+    public static final String DEPARTMENT_PROPERTY = "department";
+    public static final String MANAGED_PROJECTS_PROPERTY = "managedProjects";
+    public static final String PROJECTS_PROPERTY = "projects";
+
+    protected Double baseSalary;
+    protected Date dateHired;
+    protected String fullName;
+    protected ValueHolder department;
+    protected List managedProjects;
+    protected List projects;
+
+    public Double getBaseSalary() {
+        if(objectContext != null) {
+            objectContext.prepareForAccess(this, "baseSalary");
+        }
+        
+        return baseSalary;
+    }
+    public void setBaseSalary(Double baseSalary) {
+        if(objectContext != null) {
+            objectContext.prepareForAccess(this, "baseSalary");
+        }
+        
+        Object oldValue = this.baseSalary;
+        this.baseSalary = baseSalary;
+        
+        // notify objectContext about simple property change
+        if(objectContext != null) {
+            objectContext.propertyChanged(this, "baseSalary", oldValue, baseSalary);
+        }
+    }
+    
+    
+    public Date getDateHired() {
+        if(objectContext != null) {
+            objectContext.prepareForAccess(this, "dateHired");
+        }
+        
+        return dateHired;
+    }
+    public void setDateHired(Date dateHired) {
+        if(objectContext != null) {
+            objectContext.prepareForAccess(this, "dateHired");
+        }
+        
+        Object oldValue = this.dateHired;
+        this.dateHired = dateHired;
+        
+        // notify objectContext about simple property change
+        if(objectContext != null) {
+            objectContext.propertyChanged(this, "dateHired", oldValue, dateHired);
+        }
+    }
+    
+    
+    public String getFullName() {
+        if(objectContext != null) {
+            objectContext.prepareForAccess(this, "fullName");
+        }
+        
+        return fullName;
+    }
+    public void setFullName(String fullName) {
+        if(objectContext != null) {
+            objectContext.prepareForAccess(this, "fullName");
+        }
+        
+        Object oldValue = this.fullName;
+        this.fullName = fullName;
+        
+        // notify objectContext about simple property change
+        if(objectContext != null) {
+            objectContext.propertyChanged(this, "fullName", oldValue, fullName);
+        }
+    }
+    
+    
+    public CDepartment getDepartment() {
+        if(objectContext != null) {
+            objectContext.prepareForAccess(this, "department");
+        }
+        
+        return (CDepartment) department.getValue();
+    }
+    public void setDepartment(CDepartment department) {
+        if(objectContext != null) {
+            objectContext.prepareForAccess(this, "department");
+        }
+        
+        this.department.setValue(department);
+    }
+    
+    public List getManagedProjects() {
+        if(objectContext != null) {
+            objectContext.prepareForAccess(this, "managedProjects");
+        }
+        
+        return managedProjects;
+    }
+    public void addToManagedProjects(CProject object) {
+        if(objectContext != null) {
+            objectContext.prepareForAccess(this, "managedProjects");
+        }
+        
+        this.managedProjects.add(object);
+    }
+    public void removeFromManagedProjects(CProject object) {
+        if(objectContext != null) {
+            objectContext.prepareForAccess(this, "managedProjects");
+        }
+        
+        this.managedProjects.remove(object);
+    }
+    
+    public List getProjects() {
+        if(objectContext != null) {
+            objectContext.prepareForAccess(this, "projects");
+        }
+        
+        return projects;
+    }
+    public void addToProjects(CProject object) {
+        if(objectContext != null) {
+            objectContext.prepareForAccess(this, "projects");
+        }
+        
+        this.projects.add(object);
+    }
+    public void removeFromProjects(CProject object) {
+        if(objectContext != null) {
+            objectContext.prepareForAccess(this, "projects");
+        }
+        
+        this.projects.remove(object);
+    }
+    
+}
\ No newline at end of file

Added: incubator/cayenne/examples/trunk/3t-example-client/src/cayenne3t/example/hr/auto/_CProject.java
URL: http://svn.apache.org/viewcvs/incubator/cayenne/examples/trunk/3t-example-client/src/cayenne3t/example/hr/auto/_CProject.java?rev=399732&view=auto
==============================================================================
--- incubator/cayenne/examples/trunk/3t-example-client/src/cayenne3t/example/hr/auto/_CProject.java (added)
+++ incubator/cayenne/examples/trunk/3t-example-client/src/cayenne3t/example/hr/auto/_CProject.java Thu May  4 08:23:56 2006
@@ -0,0 +1,102 @@
+package cayenne3t.example.hr.auto;
+
+import java.util.List;
+
+import org.objectstyle.cayenne.PersistentObject;
+import org.objectstyle.cayenne.ValueHolder;
+
+import cayenne3t.example.hr.CDepartment;
+import cayenne3t.example.hr.CPerson;
+
+/**
+ * A generated persistent class mapped as "Project" 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 class _CProject extends PersistentObject {
+
+    public static final String NAME_PROPERTY = "name";
+    public static final String DEPARTMENT_PROPERTY = "department";
+    public static final String MANAGER_PROPERTY = "manager";
+    public static final String MEMBERS_PROPERTY = "members";
+
+    protected String name;
+    protected ValueHolder department;
+    protected ValueHolder manager;
+    protected List members;
+
+    public String getName() {
+        if(objectContext != null) {
+            objectContext.prepareForAccess(this, "name");
+        }
+        
+        return name;
+    }
+    public void setName(String name) {
+        if(objectContext != null) {
+            objectContext.prepareForAccess(this, "name");
+        }
+        
+        Object oldValue = this.name;
+        this.name = name;
+        
+        // notify objectContext about simple property change
+        if(objectContext != null) {
+            objectContext.propertyChanged(this, "name", oldValue, name);
+        }
+    }
+    
+    
+    public CDepartment getDepartment() {
+        if(objectContext != null) {
+            objectContext.prepareForAccess(this, "department");
+        }
+        
+        return (CDepartment) department.getValue();
+    }
+    public void setDepartment(CDepartment department) {
+        if(objectContext != null) {
+            objectContext.prepareForAccess(this, "department");
+        }
+        
+        this.department.setValue(department);
+    }
+    
+    public CPerson getManager() {
+        if(objectContext != null) {
+            objectContext.prepareForAccess(this, "manager");
+        }
+        
+        return (CPerson) manager.getValue();
+    }
+    public void setManager(CPerson manager) {
+        if(objectContext != null) {
+            objectContext.prepareForAccess(this, "manager");
+        }
+        
+        this.manager.setValue(manager);
+    }
+    
+    public List getMembers() {
+        if(objectContext != null) {
+            objectContext.prepareForAccess(this, "members");
+        }
+        
+        return members;
+    }
+    public void addToMembers(CPerson object) {
+        if(objectContext != null) {
+            objectContext.prepareForAccess(this, "members");
+        }
+        
+        this.members.add(object);
+    }
+    public void removeFromMembers(CPerson object) {
+        if(objectContext != null) {
+            objectContext.prepareForAccess(this, "members");
+        }
+        
+        this.members.remove(object);
+    }
+    
+}
\ No newline at end of file

Propchange: incubator/cayenne/examples/trunk/3t-example/webroot/WEB-INF/
------------------------------------------------------------------------------
--- svn:ignore (added)
+++ svn:ignore Thu May  4 08:23:56 2006
@@ -0,0 +1 @@
+classes