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:22:16 UTC

svn commit: r399729 - in /incubator/cayenne/examples/trunk/3t-example: ./ webroot/ webroot/WEB-INF/ webroot/WEB-INF/lib/ webroot/WEB-INF/src/ webroot/WEB-INF/src/cayenne3t/ webroot/WEB-INF/src/cayenne3t/example/ webroot/WEB-INF/src/cayenne3t/example/hr...

Author: aadamchik
Date: Thu May  4 08:22:10 2006
New Revision: 399729

URL: http://svn.apache.org/viewcvs?rev=399729&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/.classpath
    incubator/cayenne/examples/trunk/3t-example/.cvsignore
    incubator/cayenne/examples/trunk/3t-example/.project
    incubator/cayenne/examples/trunk/3t-example/build.properties
    incubator/cayenne/examples/trunk/3t-example/build.xml
    incubator/cayenne/examples/trunk/3t-example/webroot/
    incubator/cayenne/examples/trunk/3t-example/webroot/WEB-INF/
    incubator/cayenne/examples/trunk/3t-example/webroot/WEB-INF/.cvsignore
    incubator/cayenne/examples/trunk/3t-example/webroot/WEB-INF/lib/
    incubator/cayenne/examples/trunk/3t-example/webroot/WEB-INF/lib/postgresql-8.0-310.jdbc3.jar   (with props)
    incubator/cayenne/examples/trunk/3t-example/webroot/WEB-INF/log4j.properties
    incubator/cayenne/examples/trunk/3t-example/webroot/WEB-INF/src/
    incubator/cayenne/examples/trunk/3t-example/webroot/WEB-INF/src/cayenne.xml
    incubator/cayenne/examples/trunk/3t-example/webroot/WEB-INF/src/cayenne3t/
    incubator/cayenne/examples/trunk/3t-example/webroot/WEB-INF/src/cayenne3t/example/
    incubator/cayenne/examples/trunk/3t-example/webroot/WEB-INF/src/cayenne3t/example/hr/
    incubator/cayenne/examples/trunk/3t-example/webroot/WEB-INF/src/cayenne3t/example/hr/Department.java
    incubator/cayenne/examples/trunk/3t-example/webroot/WEB-INF/src/cayenne3t/example/hr/Person.java
    incubator/cayenne/examples/trunk/3t-example/webroot/WEB-INF/src/cayenne3t/example/hr/Project.java
    incubator/cayenne/examples/trunk/3t-example/webroot/WEB-INF/src/cayenne3t/example/hr/auto/
    incubator/cayenne/examples/trunk/3t-example/webroot/WEB-INF/src/cayenne3t/example/hr/auto/_Department.java
    incubator/cayenne/examples/trunk/3t-example/webroot/WEB-INF/src/cayenne3t/example/hr/auto/_Person.java
    incubator/cayenne/examples/trunk/3t-example/webroot/WEB-INF/src/cayenne3t/example/hr/auto/_Project.java
    incubator/cayenne/examples/trunk/3t-example/webroot/WEB-INF/src/cayenne3t/example/util/
    incubator/cayenne/examples/trunk/3t-example/webroot/WEB-INF/src/cayenne3t/example/util/RequestFilter.java
    incubator/cayenne/examples/trunk/3t-example/webroot/WEB-INF/src/cayenne3t/example/util/SessionTracker.java
    incubator/cayenne/examples/trunk/3t-example/webroot/WEB-INF/src/hr-db.driver.xml
    incubator/cayenne/examples/trunk/3t-example/webroot/WEB-INF/src/hr.map.xml
    incubator/cayenne/examples/trunk/3t-example/webroot/WEB-INF/web.xml
    incubator/cayenne/examples/trunk/3t-example/webroot/index.html   (with props)

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

Added: incubator/cayenne/examples/trunk/3t-example/.cvsignore
URL: http://svn.apache.org/viewcvs/incubator/cayenne/examples/trunk/3t-example/.cvsignore?rev=399729&view=auto
==============================================================================
--- incubator/cayenne/examples/trunk/3t-example/.cvsignore (added)
+++ incubator/cayenne/examples/trunk/3t-example/.cvsignore Thu May  4 08:22:10 2006
@@ -0,0 +1 @@
+work
\ No newline at end of file

Added: incubator/cayenne/examples/trunk/3t-example/.project
URL: http://svn.apache.org/viewcvs/incubator/cayenne/examples/trunk/3t-example/.project?rev=399729&view=auto
==============================================================================
--- incubator/cayenne/examples/trunk/3t-example/.project (added)
+++ incubator/cayenne/examples/trunk/3t-example/.project Thu May  4 08:22:10 2006
@@ -0,0 +1,17 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<projectDescription>
+	<name>3t-example</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/build.properties
URL: http://svn.apache.org/viewcvs/incubator/cayenne/examples/trunk/3t-example/build.properties?rev=399729&view=auto
==============================================================================
--- incubator/cayenne/examples/trunk/3t-example/build.properties (added)
+++ incubator/cayenne/examples/trunk/3t-example/build.properties Thu May  4 08:22:10 2006
@@ -0,0 +1,3 @@
+server.src = webroot/WEB-INF/src
+client.src = ../3t-example-client/src
+cayenne.jar = ../cayenne-ant/dist/cayenne-1.2-dev/lib/cayenne.jar

Added: incubator/cayenne/examples/trunk/3t-example/build.xml
URL: http://svn.apache.org/viewcvs/incubator/cayenne/examples/trunk/3t-example/build.xml?rev=399729&view=auto
==============================================================================
--- incubator/cayenne/examples/trunk/3t-example/build.xml (added)
+++ incubator/cayenne/examples/trunk/3t-example/build.xml Thu May  4 08:22:10 2006
@@ -0,0 +1,35 @@
+<?xml version="1.0"?>
+
+<!-- ================================================= -->
+<!--    Provides a class generator for the client classes.     -->
+<!-- ================================================= -->
+<project name="3t-example" default="class-generator">
+	
+	<property file="build.properties"/>
+	<property name="datamap" value="webroot/WEB-INF/src/hr.map.xml"/>
+	
+	<path id="gen-classpath">
+		<pathelement path="${cayenne.jar}"/>
+	</path>
+	
+	<target name="prepare">
+		<!-- load Cayenne Ant tasks -->
+		<taskdef name="cgen"
+			classname="org.objectstyle.cayenne.tools.CayenneGenerator">
+			<classpath refid="gen-classpath"/>
+		</taskdef>
+	</target>
+	
+	<target name="class-generator"
+		depends="prepare,server-generator,client-generator"/>
+	
+	<target name="server-generator">
+		<cgen map="${datamap}" destDir="${server.src}"
+			superpkg="cayenne3t.example.hr.auto"/>
+	</target>
+	
+	<target name="client-generator" if="client.src">
+		<cgen map="${datamap}" destDir="${client.src}"
+			superpkg="cayenne3t.example.hr.auto" client="true"/>
+	</target>
+</project>
\ No newline at end of file

Added: incubator/cayenne/examples/trunk/3t-example/webroot/WEB-INF/.cvsignore
URL: http://svn.apache.org/viewcvs/incubator/cayenne/examples/trunk/3t-example/webroot/WEB-INF/.cvsignore?rev=399729&view=auto
==============================================================================
--- incubator/cayenne/examples/trunk/3t-example/webroot/WEB-INF/.cvsignore (added)
+++ incubator/cayenne/examples/trunk/3t-example/webroot/WEB-INF/.cvsignore Thu May  4 08:22:10 2006
@@ -0,0 +1 @@
+classes
\ No newline at end of file

Added: incubator/cayenne/examples/trunk/3t-example/webroot/WEB-INF/lib/postgresql-8.0-310.jdbc3.jar
URL: http://svn.apache.org/viewcvs/incubator/cayenne/examples/trunk/3t-example/webroot/WEB-INF/lib/postgresql-8.0-310.jdbc3.jar?rev=399729&view=auto
==============================================================================
Binary file - no diff available.

Propchange: incubator/cayenne/examples/trunk/3t-example/webroot/WEB-INF/lib/postgresql-8.0-310.jdbc3.jar
------------------------------------------------------------------------------
    svn:mime-type = application/octet-stream

Added: incubator/cayenne/examples/trunk/3t-example/webroot/WEB-INF/log4j.properties
URL: http://svn.apache.org/viewcvs/incubator/cayenne/examples/trunk/3t-example/webroot/WEB-INF/log4j.properties?rev=399729&view=auto
==============================================================================
--- incubator/cayenne/examples/trunk/3t-example/webroot/WEB-INF/log4j.properties (added)
+++ incubator/cayenne/examples/trunk/3t-example/webroot/WEB-INF/log4j.properties Thu May  4 08:22:10 2006
@@ -0,0 +1,22 @@
+# Log4J configuration for Cayenne Service
+
+# Common stuff...
+log4j.rootLogger=WARN, A1
+log4j.appender.A1=org.apache.log4j.ConsoleAppender
+log4j.appender.A1.layout=org.apache.log4j.PatternLayout
+log4j.appender.A1.layout.ConversionPattern=/3t-example %-5p [%t %d{MM-dd HH:mm:ss}]: %m%n
+
+# Cayenne loggers...
+
+# remote stuff
+log4j.logger.org.objectstyle.cayenne.remote = DEBUG
+
+# Cayenne SQL Query logging
+log4j.logger.org.objectstyle.cayenne.access.QueryLogger = INFO
+
+# Cayenne Startup Logging 
+# (change to DEBUG to see the progress of Cayenne XML files loading)
+log4j.logger.org.objectstyle.cayenne.conf = INFO
+
+# Custom Loggers....
+log4j.logger.cayenne3t = DEBUG

Added: incubator/cayenne/examples/trunk/3t-example/webroot/WEB-INF/src/cayenne.xml
URL: http://svn.apache.org/viewcvs/incubator/cayenne/examples/trunk/3t-example/webroot/WEB-INF/src/cayenne.xml?rev=399729&view=auto
==============================================================================
--- incubator/cayenne/examples/trunk/3t-example/webroot/WEB-INF/src/cayenne.xml (added)
+++ incubator/cayenne/examples/trunk/3t-example/webroot/WEB-INF/src/cayenne.xml Thu May  4 08:22:10 2006
@@ -0,0 +1,17 @@
+<?xml version="1.0" encoding="utf-8"?>
+<domains project-version="1.1">
+<domain name="HRDomain">
+	<property name="cayenne.DataRowStore.snapshot.size" value="5000"/>
+	<property name="cayenne.DataDomain.sharedCache" value="false"/>
+	<property name="cayenne.JavaGroupsBridge.mcast.address" value="228.0.0.4"/>
+	<property name="cayenne.DataRowStore.EventBridge.factory" value="org.objectstyle.cayenne.event.JavaGroupsBridgeFactory"/>
+
+	<map name="hr" location="hr.map.xml"/>
+
+	<node name="hr-db"
+		 datasource="hr-db.driver.xml"
+		 factory="org.objectstyle.cayenne.conf.DriverDataSourceFactory">
+			<map-ref name="hr"/>
+	 </node>
+</domain>
+</domains>

Added: incubator/cayenne/examples/trunk/3t-example/webroot/WEB-INF/src/cayenne3t/example/hr/Department.java
URL: http://svn.apache.org/viewcvs/incubator/cayenne/examples/trunk/3t-example/webroot/WEB-INF/src/cayenne3t/example/hr/Department.java?rev=399729&view=auto
==============================================================================
--- incubator/cayenne/examples/trunk/3t-example/webroot/WEB-INF/src/cayenne3t/example/hr/Department.java (added)
+++ incubator/cayenne/examples/trunk/3t-example/webroot/WEB-INF/src/cayenne3t/example/hr/Department.java Thu May  4 08:22:10 2006
@@ -0,0 +1,10 @@
+package cayenne3t.example.hr;
+
+import cayenne3t.example.hr.auto._Department;
+
+public class Department extends _Department {
+
+}
+
+
+

Added: incubator/cayenne/examples/trunk/3t-example/webroot/WEB-INF/src/cayenne3t/example/hr/Person.java
URL: http://svn.apache.org/viewcvs/incubator/cayenne/examples/trunk/3t-example/webroot/WEB-INF/src/cayenne3t/example/hr/Person.java?rev=399729&view=auto
==============================================================================
--- incubator/cayenne/examples/trunk/3t-example/webroot/WEB-INF/src/cayenne3t/example/hr/Person.java (added)
+++ incubator/cayenne/examples/trunk/3t-example/webroot/WEB-INF/src/cayenne3t/example/hr/Person.java Thu May  4 08:22:10 2006
@@ -0,0 +1,10 @@
+package cayenne3t.example.hr;
+
+import cayenne3t.example.hr.auto._Person;
+
+public class Person extends _Person {
+
+}
+
+
+

Added: incubator/cayenne/examples/trunk/3t-example/webroot/WEB-INF/src/cayenne3t/example/hr/Project.java
URL: http://svn.apache.org/viewcvs/incubator/cayenne/examples/trunk/3t-example/webroot/WEB-INF/src/cayenne3t/example/hr/Project.java?rev=399729&view=auto
==============================================================================
--- incubator/cayenne/examples/trunk/3t-example/webroot/WEB-INF/src/cayenne3t/example/hr/Project.java (added)
+++ incubator/cayenne/examples/trunk/3t-example/webroot/WEB-INF/src/cayenne3t/example/hr/Project.java Thu May  4 08:22:10 2006
@@ -0,0 +1,10 @@
+package cayenne3t.example.hr;
+
+import cayenne3t.example.hr.auto._Project;
+
+public class Project extends _Project {
+
+}
+
+
+

Added: incubator/cayenne/examples/trunk/3t-example/webroot/WEB-INF/src/cayenne3t/example/hr/auto/_Department.java
URL: http://svn.apache.org/viewcvs/incubator/cayenne/examples/trunk/3t-example/webroot/WEB-INF/src/cayenne3t/example/hr/auto/_Department.java?rev=399729&view=auto
==============================================================================
--- incubator/cayenne/examples/trunk/3t-example/webroot/WEB-INF/src/cayenne3t/example/hr/auto/_Department.java (added)
+++ incubator/cayenne/examples/trunk/3t-example/webroot/WEB-INF/src/cayenne3t/example/hr/auto/_Department.java Thu May  4 08:22:10 2006
@@ -0,0 +1,57 @@
+package cayenne3t.example.hr.auto;
+
+import java.util.List;
+
+/** Class _Department 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 _Department extends org.objectstyle.cayenne.CayenneDataObject {
+
+    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";
+
+    public static final String DEPARTMENT_ID_PK_COLUMN = "department_id";
+
+    public void setDescription(String description) {
+        writeProperty("description", description);
+    }
+    public String getDescription() {
+        return (String)readProperty("description");
+    }
+    
+    
+    public void setName(String name) {
+        writeProperty("name", name);
+    }
+    public String getName() {
+        return (String)readProperty("name");
+    }
+    
+    
+    public void addToEmployees(cayenne3t.example.hr.Person obj) {
+        addToManyTarget("employees", obj, true);
+    }
+    public void removeFromEmployees(cayenne3t.example.hr.Person obj) {
+        removeToManyTarget("employees", obj, true);
+    }
+    public List getEmployees() {
+        return (List)readProperty("employees");
+    }
+    
+    
+    public void addToProjects(cayenne3t.example.hr.Project obj) {
+        addToManyTarget("projects", obj, true);
+    }
+    public void removeFromProjects(cayenne3t.example.hr.Project obj) {
+        removeToManyTarget("projects", obj, true);
+    }
+    public List getProjects() {
+        return (List)readProperty("projects");
+    }
+    
+    
+}

Added: incubator/cayenne/examples/trunk/3t-example/webroot/WEB-INF/src/cayenne3t/example/hr/auto/_Person.java
URL: http://svn.apache.org/viewcvs/incubator/cayenne/examples/trunk/3t-example/webroot/WEB-INF/src/cayenne3t/example/hr/auto/_Person.java?rev=399729&view=auto
==============================================================================
--- incubator/cayenne/examples/trunk/3t-example/webroot/WEB-INF/src/cayenne3t/example/hr/auto/_Person.java (added)
+++ incubator/cayenne/examples/trunk/3t-example/webroot/WEB-INF/src/cayenne3t/example/hr/auto/_Person.java Thu May  4 08:22:10 2006
@@ -0,0 +1,76 @@
+package cayenne3t.example.hr.auto;
+
+import java.util.List;
+
+/** Class _Person 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 _Person extends org.objectstyle.cayenne.CayenneDataObject {
+
+    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";
+
+    public static final String PERSON_ID_PK_COLUMN = "person_id";
+
+    public void setBaseSalary(Double baseSalary) {
+        writeProperty("baseSalary", baseSalary);
+    }
+    public Double getBaseSalary() {
+        return (Double)readProperty("baseSalary");
+    }
+    
+    
+    public void setDateHired(java.util.Date dateHired) {
+        writeProperty("dateHired", dateHired);
+    }
+    public java.util.Date getDateHired() {
+        return (java.util.Date)readProperty("dateHired");
+    }
+    
+    
+    public void setFullName(String fullName) {
+        writeProperty("fullName", fullName);
+    }
+    public String getFullName() {
+        return (String)readProperty("fullName");
+    }
+    
+    
+    public void setDepartment(cayenne3t.example.hr.Department department) {
+        setToOneTarget("department", department, true);
+    }
+
+    public cayenne3t.example.hr.Department getDepartment() {
+        return (cayenne3t.example.hr.Department)readProperty("department");
+    } 
+    
+    
+    public void addToManagedProjects(cayenne3t.example.hr.Project obj) {
+        addToManyTarget("managedProjects", obj, true);
+    }
+    public void removeFromManagedProjects(cayenne3t.example.hr.Project obj) {
+        removeToManyTarget("managedProjects", obj, true);
+    }
+    public List getManagedProjects() {
+        return (List)readProperty("managedProjects");
+    }
+    
+    
+    public void addToProjects(cayenne3t.example.hr.Project obj) {
+        addToManyTarget("projects", obj, true);
+    }
+    public void removeFromProjects(cayenne3t.example.hr.Project obj) {
+        removeToManyTarget("projects", obj, true);
+    }
+    public List getProjects() {
+        return (List)readProperty("projects");
+    }
+    
+    
+}

Added: incubator/cayenne/examples/trunk/3t-example/webroot/WEB-INF/src/cayenne3t/example/hr/auto/_Project.java
URL: http://svn.apache.org/viewcvs/incubator/cayenne/examples/trunk/3t-example/webroot/WEB-INF/src/cayenne3t/example/hr/auto/_Project.java?rev=399729&view=auto
==============================================================================
--- incubator/cayenne/examples/trunk/3t-example/webroot/WEB-INF/src/cayenne3t/example/hr/auto/_Project.java (added)
+++ incubator/cayenne/examples/trunk/3t-example/webroot/WEB-INF/src/cayenne3t/example/hr/auto/_Project.java Thu May  4 08:22:10 2006
@@ -0,0 +1,56 @@
+package cayenne3t.example.hr.auto;
+
+import java.util.List;
+
+/** Class _Project 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 _Project extends org.objectstyle.cayenne.CayenneDataObject {
+
+    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";
+
+    public static final String PROJECT_ID_PK_COLUMN = "project_id";
+
+    public void setName(String name) {
+        writeProperty("name", name);
+    }
+    public String getName() {
+        return (String)readProperty("name");
+    }
+    
+    
+    public void setDepartment(cayenne3t.example.hr.Department department) {
+        setToOneTarget("department", department, true);
+    }
+
+    public cayenne3t.example.hr.Department getDepartment() {
+        return (cayenne3t.example.hr.Department)readProperty("department");
+    } 
+    
+    
+    public void setManager(cayenne3t.example.hr.Person manager) {
+        setToOneTarget("manager", manager, true);
+    }
+
+    public cayenne3t.example.hr.Person getManager() {
+        return (cayenne3t.example.hr.Person)readProperty("manager");
+    } 
+    
+    
+    public void addToMembers(cayenne3t.example.hr.Person obj) {
+        addToManyTarget("members", obj, true);
+    }
+    public void removeFromMembers(cayenne3t.example.hr.Person obj) {
+        removeToManyTarget("members", obj, true);
+    }
+    public List getMembers() {
+        return (List)readProperty("members");
+    }
+    
+    
+}

Added: incubator/cayenne/examples/trunk/3t-example/webroot/WEB-INF/src/cayenne3t/example/util/RequestFilter.java
URL: http://svn.apache.org/viewcvs/incubator/cayenne/examples/trunk/3t-example/webroot/WEB-INF/src/cayenne3t/example/util/RequestFilter.java?rev=399729&view=auto
==============================================================================
--- incubator/cayenne/examples/trunk/3t-example/webroot/WEB-INF/src/cayenne3t/example/util/RequestFilter.java (added)
+++ incubator/cayenne/examples/trunk/3t-example/webroot/WEB-INF/src/cayenne3t/example/util/RequestFilter.java Thu May  4 08:22:10 2006
@@ -0,0 +1,90 @@
+package cayenne3t.example.util;
+
+import java.io.IOException;
+import java.net.MalformedURLException;
+import java.net.URL;
+
+import javax.servlet.Filter;
+import javax.servlet.FilterChain;
+import javax.servlet.FilterConfig;
+import javax.servlet.ServletException;
+import javax.servlet.ServletRequest;
+import javax.servlet.ServletResponse;
+import javax.servlet.http.Cookie;
+import javax.servlet.http.HttpServletRequest;
+
+import org.apache.log4j.Logger;
+import org.apache.log4j.PropertyConfigurator;
+
+/**
+ * This is a sample filter that allows to intercept and customize requests sent
+ * to Cayenne RemoteService. This implementation simply dumps request and
+ * response information.
+ * 
+ * @author andrus
+ */
+public class RequestFilter implements Filter {
+
+	static final String LOG4J_CONFIG = "log4j-config";
+
+	final Logger logger = Logger.getLogger(getClass());
+
+	public void init(FilterConfig config) throws ServletException {
+
+		// setup logging..
+		String logFile = config.getInitParameter(LOG4J_CONFIG);
+		if (logFile != null) {
+
+			try {
+				URL loggingURL = config.getServletContext()
+						.getResource(logFile);
+
+				if (loggingURL != null) {
+					PropertyConfigurator.configure(loggingURL);
+				} else {
+					config.getServletContext().log(
+							"Failed to set up logging - can't find Log4J configuration '"
+									+ logFile + "', ignoring.");
+				}
+			} catch (MalformedURLException ex) {
+				config.getServletContext().log(
+						"Error setting up logging, ignoring: "
+								+ ex.getMessage());
+			}
+		}
+	}
+
+	public void destroy() {
+
+	}
+
+	public void doFilter(ServletRequest request, ServletResponse response,
+			FilterChain chain) throws IOException, ServletException {
+
+		logger.debug("[Request] start....");
+		dumpRequest((HttpServletRequest) request);
+		
+		long t0 = System.currentTimeMillis();
+		
+
+		chain.doFilter(request, response);
+		
+		long t1 = System.currentTimeMillis();
+
+		logger.debug("[Request] end ... " + (t1 - t0) + " ms.");
+	}
+
+	private void dumpRequest(HttpServletRequest request) {
+
+		logger.debug("[Request] URL: " + request.getRequestURL());
+
+		Cookie[] cookies = request.getCookies();
+		if (cookies != null && cookies.length > 0) {
+			for (int i = 0; i < cookies.length; i++) {
+				logger.debug("[Request] Cookie: " + cookies[i].getName() + ":" + cookies[i].getValue());
+			}
+		} else {
+			logger.debug("[Request] No cookies");
+		}
+	}
+}

Added: incubator/cayenne/examples/trunk/3t-example/webroot/WEB-INF/src/cayenne3t/example/util/SessionTracker.java
URL: http://svn.apache.org/viewcvs/incubator/cayenne/examples/trunk/3t-example/webroot/WEB-INF/src/cayenne3t/example/util/SessionTracker.java?rev=399729&view=auto
==============================================================================
--- incubator/cayenne/examples/trunk/3t-example/webroot/WEB-INF/src/cayenne3t/example/util/SessionTracker.java (added)
+++ incubator/cayenne/examples/trunk/3t-example/webroot/WEB-INF/src/cayenne3t/example/util/SessionTracker.java Thu May  4 08:22:10 2006
@@ -0,0 +1,24 @@
+package cayenne3t.example.util;
+
+import javax.servlet.http.HttpSessionEvent;
+import javax.servlet.http.HttpSessionListener;
+
+import org.apache.log4j.Logger;
+
+/**
+ * Tracks session allocation/deallocation.
+ * 
+ * @author andrus
+ */
+public class SessionTracker implements HttpSessionListener {
+
+	final Logger logger = Logger.getLogger(getClass());
+
+	public void sessionCreated(HttpSessionEvent e) {
+		logger.info("**** HTTP Session created: " + e.getSession().getId());
+	}
+
+	public void sessionDestroyed(HttpSessionEvent e) {
+		logger.info("**** HTTP Session destroyed: " + e.getSession().getId());
+	}
+}

Added: incubator/cayenne/examples/trunk/3t-example/webroot/WEB-INF/src/hr-db.driver.xml
URL: http://svn.apache.org/viewcvs/incubator/cayenne/examples/trunk/3t-example/webroot/WEB-INF/src/hr-db.driver.xml?rev=399729&view=auto
==============================================================================
--- incubator/cayenne/examples/trunk/3t-example/webroot/WEB-INF/src/hr-db.driver.xml (added)
+++ incubator/cayenne/examples/trunk/3t-example/webroot/WEB-INF/src/hr-db.driver.xml Thu May  4 08:22:10 2006
@@ -0,0 +1,6 @@
+<?xml version="1.0" encoding="utf-8"?>
+<driver project-version="1.1" class="org.postgresql.Driver">
+	<url value="jdbc:postgresql://localhost:5432/hr"/>
+	<connectionPool min="1" max="1" />
+	<login userName="andrus" password="andrus"/>
+</driver>

Added: incubator/cayenne/examples/trunk/3t-example/webroot/WEB-INF/src/hr.map.xml
URL: http://svn.apache.org/viewcvs/incubator/cayenne/examples/trunk/3t-example/webroot/WEB-INF/src/hr.map.xml?rev=399729&view=auto
==============================================================================
--- incubator/cayenne/examples/trunk/3t-example/webroot/WEB-INF/src/hr.map.xml (added)
+++ incubator/cayenne/examples/trunk/3t-example/webroot/WEB-INF/src/hr.map.xml Thu May  4 08:22:10 2006
@@ -0,0 +1,93 @@
+<?xml version="1.0" encoding="utf-8"?>
+<data-map project-version="1.1">
+	<property name="defaultPackage" value="cayenne3t.example.hr"/>
+	<property name="clientSupported" value="true"/>
+	<property name="defaultClientPackage" value="cayenne3t.example.hr"/>
+	<db-entity name="department">
+		<db-attribute name="department_id" type="INTEGER" isPrimaryKey="true" isMandatory="true"/>
+		<db-attribute name="description" type="VARCHAR" length="100"/>
+		<db-attribute name="name" type="VARCHAR" isMandatory="true" length="50"/>
+	</db-entity>
+	<db-entity name="person">
+		<db-attribute name="base_salary" type="DOUBLE" isMandatory="true"/>
+		<db-attribute name="date_hired" type="DATE" isMandatory="true"/>
+		<db-attribute name="department_id" type="INTEGER"/>
+		<db-attribute name="full_name" type="VARCHAR" isMandatory="true" length="100"/>
+		<db-attribute name="person_id" type="INTEGER" isPrimaryKey="true" isMandatory="true"/>
+	</db-entity>
+	<db-entity name="project">
+		<db-attribute name="department_id" type="INTEGER"/>
+		<db-attribute name="manager_id" type="INTEGER"/>
+		<db-attribute name="name" type="VARCHAR" isMandatory="true" length="100"/>
+		<db-attribute name="project_id" type="INTEGER" isPrimaryKey="true" isMandatory="true"/>
+	</db-entity>
+	<db-entity name="project_member">
+		<db-attribute name="person_id" type="INTEGER" isPrimaryKey="true" isMandatory="true"/>
+		<db-attribute name="project_id" type="INTEGER" isPrimaryKey="true" isMandatory="true"/>
+	</db-entity>
+	<obj-entity name="Department" className="cayenne3t.example.hr.Department" clientClassName="cayenne3t.example.hr.CDepartment" dbEntityName="department">
+		<obj-attribute name="description" type="java.lang.String" db-attribute-path="description"/>
+		<obj-attribute name="name" type="java.lang.String" db-attribute-path="name"/>
+	</obj-entity>
+	<obj-entity name="Person" className="cayenne3t.example.hr.Person" clientClassName="cayenne3t.example.hr.CPerson" dbEntityName="person" clientSuperClassName="cayenne3t.example.hr.CustomClientObject">
+		<obj-attribute name="baseSalary" type="java.lang.Double" db-attribute-path="base_salary"/>
+		<obj-attribute name="dateHired" type="java.util.Date" db-attribute-path="date_hired"/>
+		<obj-attribute name="fullName" type="java.lang.String" db-attribute-path="full_name"/>
+	</obj-entity>
+	<obj-entity name="Project" className="cayenne3t.example.hr.Project" clientClassName="cayenne3t.example.hr.CProject" dbEntityName="project">
+		<obj-attribute name="name" type="java.lang.String" db-attribute-path="name"/>
+	</obj-entity>
+	<db-relationship name="employees" source="department" target="person" toMany="true">
+		<db-attribute-pair source="department_id" target="department_id"/>
+	</db-relationship>
+	<db-relationship name="projects" source="department" target="project" toMany="true">
+		<db-attribute-pair source="department_id" target="department_id"/>
+	</db-relationship>
+	<db-relationship name="department" source="person" target="department" toMany="false">
+		<db-attribute-pair source="department_id" target="department_id"/>
+	</db-relationship>
+	<db-relationship name="managedProjects" source="person" target="project" toMany="true">
+		<db-attribute-pair source="person_id" target="manager_id"/>
+	</db-relationship>
+	<db-relationship name="projects" source="person" target="project_member" toDependentPK="true" toMany="true">
+		<db-attribute-pair source="person_id" target="person_id"/>
+	</db-relationship>
+	<db-relationship name="department" source="project" target="department" toMany="false">
+		<db-attribute-pair source="department_id" target="department_id"/>
+	</db-relationship>
+	<db-relationship name="manager" source="project" target="person" toMany="false">
+		<db-attribute-pair source="manager_id" target="person_id"/>
+	</db-relationship>
+	<db-relationship name="members" source="project" target="project_member" toDependentPK="true" toMany="true">
+		<db-attribute-pair source="project_id" target="project_id"/>
+	</db-relationship>
+	<db-relationship name="person" source="project_member" target="person" toMany="false">
+		<db-attribute-pair source="person_id" target="person_id"/>
+	</db-relationship>
+	<db-relationship name="project" source="project_member" target="project" toMany="false">
+		<db-attribute-pair source="project_id" target="project_id"/>
+	</db-relationship>
+	<obj-relationship name="employees" source="Department" target="Person" deleteRule="Cascade" db-relationship-path="employees"/>
+	<obj-relationship name="projects" source="Department" target="Project" deleteRule="Cascade" db-relationship-path="projects"/>
+	<obj-relationship name="department" source="Person" target="Department" deleteRule="Nullify" db-relationship-path="department"/>
+	<obj-relationship name="managedProjects" source="Person" target="Project" deleteRule="Nullify" db-relationship-path="managedProjects"/>
+	<obj-relationship name="projects" source="Person" target="Project" db-relationship-path="projects.project"/>
+	<obj-relationship name="department" source="Project" target="Department" db-relationship-path="department"/>
+	<obj-relationship name="manager" source="Project" target="Person" db-relationship-path="manager"/>
+	<obj-relationship name="members" source="Project" target="Person" db-relationship-path="members.person"/>
+	<query name="CreateData" factory="org.objectstyle.cayenne.map.SQLTemplateBuilder" root="data-map" root-name="hr">
+		<sql><![CDATA[insert into department (department_id, name, description) 
+values (1, 'IT', 'Information Technology Department')]]></sql>
+	</query>
+	<query name="DeleteDepartment" factory="org.objectstyle.cayenne.map.SQLTemplateBuilder" root="data-map" root-name="hr">
+		<sql><![CDATA[delete from department]]></sql>
+	</query>
+	<query name="DeletePerson" factory="org.objectstyle.cayenne.map.SQLTemplateBuilder" root="data-map" root-name="hr">
+		<property name="cayenne.GenericSelectQuery.fetchingDataRows" value="true"/>
+		<sql><![CDATA[delete from person]]></sql>
+	</query>
+	<query name="DepartmentWithName" factory="org.objectstyle.cayenne.map.SelectQueryBuilder" root="obj-entity" root-name="Department">
+		<qualifier><![CDATA[name likeIgnoreCase $name]]></qualifier>
+		<ordering><![CDATA[name]]></ordering>
+	</query>
+</data-map>

Added: incubator/cayenne/examples/trunk/3t-example/webroot/WEB-INF/web.xml
URL: http://svn.apache.org/viewcvs/incubator/cayenne/examples/trunk/3t-example/webroot/WEB-INF/web.xml?rev=399729&view=auto
==============================================================================
--- incubator/cayenne/examples/trunk/3t-example/webroot/WEB-INF/web.xml (added)
+++ incubator/cayenne/examples/trunk/3t-example/webroot/WEB-INF/web.xml Thu May  4 08:22:10 2006
@@ -0,0 +1,61 @@
+<?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>
+	<!-- tracks client sesssions .. used for session debugging -->
+	<listener>
+		<listener-class>cayenne3t.example.util.SessionTracker</listener-class>
+	</listener>
+	
+	<!-- on session timeout server-side DataContext will be deallocated
+	     shared DataChannels will be deallocated when no sessions are using them 
+	-->
+	<session-config>
+		<session-timeout>10</session-timeout>
+	</session-config>
+	
+	<!-- Deploying Cayenne distributed service using Hessian OPP transport -->
+	<servlet>
+		<servlet-name>cayenne</servlet-name>
+		<servlet-class>org.objectstyle.cayenne.remote.hessian.service.HessianServlet</servlet-class>
+		
+		<!-- client-server events setup -->
+		<!-- 
+		<init-param>
+			<param-name>cayenne.RemoteService.EventBridge.factory</param-name>
+			<param-value>org.objectstyle.cayenne.event.XMPPBridgeFactory</param-value>
+		</init-param>
+		<init-param>
+			<param-name>cayenne.XMPPBridge.xmppHost</param-name>
+			<param-value>localhost</param-value>
+		</init-param>
+		<init-param>
+			<param-name>cayenne.XMPPBridge.xmppPort</param-name>
+			<param-value>5222</param-value>
+		</init-param>
+		<init-param>
+			<param-name>cayenne.XMPPBridge.xmppChatService</param-name>
+			<param-value>conference</param-value>
+		</init-param> -->
+	</servlet>
+	<servlet-mapping>
+		<servlet-name>cayenne</servlet-name>
+		<url-pattern>/cayenne</url-pattern>
+	</servlet-mapping>
+	
+	<!-- helper filter that sets up logging and debugs requests. This is optional -->
+	<filter>
+		<filter-name>cayenne-web-service-filter</filter-name>
+		<filter-class>cayenne3t.example.util.RequestFilter</filter-class>
+		<init-param>
+			<param-name>log4j-config</param-name>
+			<param-value>/WEB-INF/log4j.properties</param-value>
+		</init-param>
+	</filter>
+	
+	<filter-mapping>
+		<filter-name>cayenne-web-service-filter</filter-name>
+		<servlet-name>cayenne</servlet-name>
+	</filter-mapping>
+</web-app>
\ No newline at end of file

Added: incubator/cayenne/examples/trunk/3t-example/webroot/index.html
URL: http://svn.apache.org/viewcvs/incubator/cayenne/examples/trunk/3t-example/webroot/index.html?rev=399729&view=auto
==============================================================================
--- incubator/cayenne/examples/trunk/3t-example/webroot/index.html (added)
+++ incubator/cayenne/examples/trunk/3t-example/webroot/index.html Thu May  4 08:22:10 2006
@@ -0,0 +1,8 @@
+<html>
+<head>
+<title>Cayenne 3-Tier Server Application</title>
+</head>
+<body>
+<h1>Cayenne 3-Tier Server Application</h1>
+</body>
+</html>
\ No newline at end of file

Propchange: incubator/cayenne/examples/trunk/3t-example/webroot/index.html
------------------------------------------------------------------------------
    svn:eol-style = native