Repository: cayenne
Updated Branches:
  refs/heads/master 6d7bc02dc -> 6716f6b88


init Java8 time Extensions


Project: http://git-wip-us.apache.org/repos/asf/cayenne/repo
Commit: http://git-wip-us.apache.org/repos/asf/cayenne/commit/e9e82bde
Tree: http://git-wip-us.apache.org/repos/asf/cayenne/tree/e9e82bde
Diff: http://git-wip-us.apache.org/repos/asf/cayenne/diff/e9e82bde

Branch: refs/heads/master
Commit: e9e82bdeee1cfee4bc32bc7b891887ebd84aef56
Parents: 09c924c
Author: Savva Kolbachev <s.kolbac...@gmail.com>
Authored: Fri Nov 28 11:17:37 2014 +0300
Committer: Savva Kolbachev <s.kolbac...@gmail.com>
Committed: Fri Nov 28 11:17:37 2014 +0300

----------------------------------------------------------------------
 cayenne-java8/pom.xml                           | 113 +++++++++++++++++++
 .../cayenne/java8/CayenneJava8Module.java       |  40 +++++++
 .../java8/access/types/LocalDateTimeType.java   |  53 +++++++++
 .../java8/access/types/LocalDateType.java       |  54 +++++++++
 .../java8/access/types/LocalTimeType.java       |  54 +++++++++
 .../org/apache/cayenne/java8/Java8TimesIT.java  |  92 +++++++++++++++
 .../org/apache/cayenne/java8/RuntimeBase.java   |  38 +++++++
 .../java/org/apache/cayenne/java8/db/Java8.java |  18 +++
 .../cayenne/java8/db/LocalDateTestEntity.java   |   9 ++
 .../java8/db/LocalDateTimeTestEntity.java       |   9 ++
 .../cayenne/java8/db/LocalTimeTestEntity.java   |   9 ++
 .../apache/cayenne/java8/db/auto/_Java8.java    |  12 ++
 .../java8/db/auto/_LocalDateTestEntity.java     |  32 ++++++
 .../java8/db/auto/_LocalDateTimeTestEntity.java |  32 ++++++
 .../java8/db/auto/_LocalTimeTestEntity.java     |  32 ++++++
 .../src/test/resources/cayenne-java8.xml        |  21 ++++
 cayenne-java8/src/test/resources/java8.map.xml  |  28 +++++
 pom.xml                                         |   1 +
 18 files changed, 647 insertions(+)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/cayenne/blob/e9e82bde/cayenne-java8/pom.xml
----------------------------------------------------------------------
diff --git a/cayenne-java8/pom.xml b/cayenne-java8/pom.xml
new file mode 100644
index 0000000..46af7f0
--- /dev/null
+++ b/cayenne-java8/pom.xml
@@ -0,0 +1,113 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<project xmlns="http://maven.apache.org/POM/4.0.0";
+         xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance";
+         xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 
http://maven.apache.org/xsd/maven-4.0.0.xsd";>
+    <parent>
+        <artifactId>cayenne-parent</artifactId>
+        <groupId>org.apache.cayenne</groupId>
+        <version>4.0.M2-SNAPSHOT</version>
+    </parent>
+    <modelVersion>4.0.0</modelVersion>
+    <artifactId>cayenne-java8</artifactId>
+    <name>Cayenne Java8 Extensions</name>
+    <packaging>jar</packaging>
+    <dependencies>
+
+        <!-- Compile dependencies -->
+        <dependency>
+            <groupId>org.apache.cayenne</groupId>
+            <artifactId>cayenne-server</artifactId>
+            <version>${project.version}</version>
+        </dependency>
+        <dependency>
+            <groupId>org.apache.cayenne</groupId>
+            <artifactId>cayenne-di</artifactId>
+            <version>${project.version}</version>
+            <scope>compile</scope>
+        </dependency>
+        <!-- Test dependencies -->
+        <dependency>
+            <groupId>junit</groupId>
+            <artifactId>junit</artifactId>
+            <scope>test</scope>
+        </dependency>
+        <dependency>
+            <groupId>org.apache.cayenne.build-tools</groupId>
+            <artifactId>cayenne-test-utilities</artifactId>
+            <version>${project.version}</version>
+            <scope>test</scope>
+        </dependency>
+        <dependency>
+            <groupId>org.mockito</groupId>
+            <artifactId>mockito-all</artifactId>
+            <scope>test</scope>
+        </dependency>
+        <dependency>
+            <groupId>hsqldb</groupId>
+            <artifactId>hsqldb</artifactId>
+            <scope>test</scope>
+        </dependency>
+        <dependency>
+            <groupId>org.slf4j</groupId>
+            <artifactId>jcl-over-slf4j</artifactId>
+            <scope>test</scope>
+        </dependency>
+        <dependency>
+            <groupId>org.slf4j</groupId>
+            <artifactId>slf4j-api</artifactId>
+            <scope>test</scope>
+        </dependency>
+        <dependency>
+            <groupId>org.slf4j</groupId>
+            <artifactId>slf4j-simple</artifactId>
+            <scope>test</scope>
+        </dependency>
+        <dependency>
+            <groupId>org.apache.derby</groupId>
+            <artifactId>derby</artifactId>
+            <scope>test</scope>
+        </dependency>
+    </dependencies>
+    <build>
+        <plugins>
+            <plugin>
+                <artifactId>maven-remote-resources-plugin</artifactId>
+                <executions>
+                    <execution>
+                        <goals>
+                            <goal>process</goal>
+                        </goals>
+                    </execution>
+                </executions>
+            </plugin>
+            <plugin>
+                <groupId>org.apache.cayenne.plugins</groupId>
+                <artifactId>maven-cayenne-plugin</artifactId>
+                <version>${project.version}</version>
+                <configuration>
+                    
<map>${project.basedir}/src/test/resources/java8.map.xml</map>
+                    <destDir>${project.basedir}/src/test/java</destDir>
+                    
<defaultPackage>org.apache.cayenne.java8.db</defaultPackage>
+                    <superPkg>org.apache.cayenne.java8.db.auto</superPkg>
+                </configuration>
+                <executions>
+                    <execution>
+                        <id>default-cli</id>
+                        <goals>
+                            <goal>cgen</goal>
+                        </goals>
+                    </execution>
+                </executions>
+            </plugin>
+            <plugin>
+                <artifactId>maven-checkstyle-plugin</artifactId>
+                <!--<configuration>
+                    
<suppressionsLocation>${project.basedir}/cayenne-checkstyle-suppression.xml</suppressionsLocation>
+                </configuration>-->
+            </plugin>
+            <plugin>
+                <artifactId>maven-pmd-plugin</artifactId>
+            </plugin>
+        </plugins>
+    </build>
+</project>
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/cayenne/blob/e9e82bde/cayenne-java8/src/main/java/org/apache/cayenne/java8/CayenneJava8Module.java
----------------------------------------------------------------------
diff --git 
a/cayenne-java8/src/main/java/org/apache/cayenne/java8/CayenneJava8Module.java 
b/cayenne-java8/src/main/java/org/apache/cayenne/java8/CayenneJava8Module.java
new file mode 100644
index 0000000..1c321ba
--- /dev/null
+++ 
b/cayenne-java8/src/main/java/org/apache/cayenne/java8/CayenneJava8Module.java
@@ -0,0 +1,40 @@
+/*****************************************************************
+ *   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.java8;
+
+import org.apache.cayenne.configuration.Constants;
+import org.apache.cayenne.di.Binder;
+import org.apache.cayenne.di.Module;
+import org.apache.cayenne.java8.access.types.LocalDateTimeType;
+import org.apache.cayenne.java8.access.types.LocalDateType;
+import org.apache.cayenne.java8.access.types.LocalTimeType;
+
+public class CayenneJava8Module implements Module {
+
+    @Override
+    public void configure(Binder binder) {
+        binder
+                .bindList(Constants.SERVER_DEFAULT_TYPES_LIST)
+                .add(new LocalDateType())
+                .add(new LocalTimeType())
+                .add(new LocalDateTimeType());
+    }
+
+}

http://git-wip-us.apache.org/repos/asf/cayenne/blob/e9e82bde/cayenne-java8/src/main/java/org/apache/cayenne/java8/access/types/LocalDateTimeType.java
----------------------------------------------------------------------
diff --git 
a/cayenne-java8/src/main/java/org/apache/cayenne/java8/access/types/LocalDateTimeType.java
 
b/cayenne-java8/src/main/java/org/apache/cayenne/java8/access/types/LocalDateTimeType.java
new file mode 100644
index 0000000..aa47c22
--- /dev/null
+++ 
b/cayenne-java8/src/main/java/org/apache/cayenne/java8/access/types/LocalDateTimeType.java
@@ -0,0 +1,53 @@
+/*****************************************************************
+ *   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.java8.access.types;
+
+import org.apache.cayenne.access.types.ExtendedType;
+
+import java.sql.CallableStatement;
+import java.sql.PreparedStatement;
+import java.sql.ResultSet;
+import java.sql.Timestamp;
+import java.time.LocalDateTime;
+
+public class LocalDateTimeType implements ExtendedType {
+
+    @Override
+    public String getClassName() {
+        return LocalDateTime.class.getName();
+    }
+
+    @Override
+    public void setJdbcObject(PreparedStatement statement, Object value, int 
pos, int type, int scale) throws Exception {
+        statement.setTimestamp(pos, Timestamp.valueOf((LocalDateTime) value));
+    }
+
+    @Override
+    public LocalDateTime materializeObject(ResultSet rs, int index, int type) 
throws Exception {
+        Timestamp timestamp = rs.getTimestamp(index);
+        return timestamp != null ? timestamp.toLocalDateTime() : null;
+    }
+
+    @Override
+    public Object materializeObject(CallableStatement rs, int index, int type) 
throws Exception {
+        Timestamp timestamp = rs.getTimestamp(index);
+        return timestamp != null ? timestamp.toLocalDateTime() : null;
+    }
+}

http://git-wip-us.apache.org/repos/asf/cayenne/blob/e9e82bde/cayenne-java8/src/main/java/org/apache/cayenne/java8/access/types/LocalDateType.java
----------------------------------------------------------------------
diff --git 
a/cayenne-java8/src/main/java/org/apache/cayenne/java8/access/types/LocalDateType.java
 
b/cayenne-java8/src/main/java/org/apache/cayenne/java8/access/types/LocalDateType.java
new file mode 100644
index 0000000..72cfff7
--- /dev/null
+++ 
b/cayenne-java8/src/main/java/org/apache/cayenne/java8/access/types/LocalDateType.java
@@ -0,0 +1,54 @@
+/*****************************************************************
+ *   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.java8.access.types;
+
+import org.apache.cayenne.access.types.ExtendedType;
+
+import java.sql.CallableStatement;
+import java.sql.Date;
+import java.sql.PreparedStatement;
+import java.sql.ResultSet;
+import java.time.LocalDate;
+
+public class LocalDateType implements ExtendedType {
+
+    @Override
+    public String getClassName() {
+        return LocalDate.class.getName();
+    }
+
+    @Override
+    public void setJdbcObject(PreparedStatement statement, Object value, int 
pos, int type, int scale) throws Exception {
+        statement.setDate(pos, Date.valueOf((LocalDate) value));
+    }
+
+    @Override
+    public LocalDate materializeObject(ResultSet rs, int index, int type) 
throws Exception {
+        Date date = rs.getDate(index);
+        return date != null ? date.toLocalDate() : null;
+    }
+
+    @Override
+    public LocalDate materializeObject(CallableStatement rs, int index, int 
type) throws Exception {
+        Date date = rs.getDate(index);
+        return date != null ? date.toLocalDate() : null;
+    }
+
+}

http://git-wip-us.apache.org/repos/asf/cayenne/blob/e9e82bde/cayenne-java8/src/main/java/org/apache/cayenne/java8/access/types/LocalTimeType.java
----------------------------------------------------------------------
diff --git 
a/cayenne-java8/src/main/java/org/apache/cayenne/java8/access/types/LocalTimeType.java
 
b/cayenne-java8/src/main/java/org/apache/cayenne/java8/access/types/LocalTimeType.java
new file mode 100644
index 0000000..2d109ba
--- /dev/null
+++ 
b/cayenne-java8/src/main/java/org/apache/cayenne/java8/access/types/LocalTimeType.java
@@ -0,0 +1,54 @@
+/*****************************************************************
+ *   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.java8.access.types;
+
+import org.apache.cayenne.access.types.ExtendedType;
+
+import java.sql.CallableStatement;
+import java.sql.PreparedStatement;
+import java.sql.ResultSet;
+import java.sql.Time;
+import java.time.LocalTime;
+
+public class LocalTimeType implements ExtendedType {
+
+    @Override
+    public String getClassName() {
+        return LocalTime.class.getName();
+    }
+
+    @Override
+    public void setJdbcObject(PreparedStatement statement, Object value, int 
pos, int type, int scale) throws Exception {
+        statement.setTime(pos, Time.valueOf((LocalTime) value));
+    }
+
+    @Override
+    public LocalTime materializeObject(ResultSet rs, int index, int type) 
throws Exception {
+        Time time = rs.getTime(index);
+        return time != null ? time.toLocalTime() : null;
+    }
+
+    @Override
+    public Object materializeObject(CallableStatement rs, int index, int type) 
throws Exception {
+        Time time = rs.getTime(index);
+        return time != null ? time.toLocalTime() : null;
+    }
+
+}

http://git-wip-us.apache.org/repos/asf/cayenne/blob/e9e82bde/cayenne-java8/src/test/java/org/apache/cayenne/java8/Java8TimesIT.java
----------------------------------------------------------------------
diff --git 
a/cayenne-java8/src/test/java/org/apache/cayenne/java8/Java8TimesIT.java 
b/cayenne-java8/src/test/java/org/apache/cayenne/java8/Java8TimesIT.java
new file mode 100644
index 0000000..7db3243
--- /dev/null
+++ b/cayenne-java8/src/test/java/org/apache/cayenne/java8/Java8TimesIT.java
@@ -0,0 +1,92 @@
+/*****************************************************************
+ *   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.java8;
+
+import org.apache.cayenne.ObjectContext;
+import org.apache.cayenne.java8.db.LocalDateTestEntity;
+import org.apache.cayenne.java8.db.LocalDateTimeTestEntity;
+import org.apache.cayenne.java8.db.LocalTimeTestEntity;
+import org.apache.cayenne.query.SelectQuery;
+import org.junit.Test;
+
+import java.time.LocalDate;
+import java.time.LocalDateTime;
+import java.time.LocalTime;
+
+import static org.junit.Assert.assertEquals;
+import static org.junit.Assert.assertNotNull;
+
+public class Java8TimesIT extends RuntimeBase {
+
+    @Test
+    public void testJava8LocalDate() {
+        ObjectContext context = runtime.newContext();
+
+        LocalDateTestEntity localDateTestEntity = 
context.newObject(LocalDateTestEntity.class);
+        LocalDate localDate = LocalDate.now();
+        localDateTestEntity.setDate(localDate);
+
+        context.commitChanges();
+
+        SelectQuery q = new SelectQuery(LocalDateTestEntity.class);
+        LocalDateTestEntity testRead = (LocalDateTestEntity) 
context.performQuery(q).get(0);
+        assertNotNull(testRead.getDate());
+        assertEquals(localDate, testRead.getDate());
+        assertEquals(LocalDate.class, testRead.getDate().getClass());
+
+    }
+
+    @Test
+    public void testJava8LocalTime() {
+        ObjectContext context = runtime.newContext();
+
+        LocalTimeTestEntity localTimeTestEntity = 
context.newObject(LocalTimeTestEntity.class);
+        LocalTime localTime = LocalTime.now();
+        localTimeTestEntity.setTime(localTime);
+
+        context.commitChanges();
+
+        SelectQuery q = new SelectQuery(LocalTimeTestEntity.class);
+        LocalTimeTestEntity testRead = (LocalTimeTestEntity) 
context.performQuery(q).get(0);
+        assertNotNull(testRead.getTime());
+        assertEquals(localTime.toSecondOfDay(), 
testRead.getTime().toSecondOfDay());
+        assertEquals(LocalTime.class, testRead.getTime().getClass());
+
+    }
+
+    @Test
+    public void testJava8LocalDateTime() {
+        ObjectContext context = runtime.newContext();
+
+        LocalDateTimeTestEntity localDateTimeTestEntity = 
context.newObject(LocalDateTimeTestEntity.class);
+        LocalDateTime localDateTime = LocalDateTime.now();
+        localDateTimeTestEntity.setTimestamp(localDateTime);
+
+        context.commitChanges();
+
+        SelectQuery q = new SelectQuery(LocalDateTimeTestEntity.class);
+        LocalDateTimeTestEntity testRead = (LocalDateTimeTestEntity) 
context.performQuery(q).get(0);
+        assertNotNull(testRead.getTimestamp());
+        assertEquals(localDateTime, testRead.getTimestamp());
+        assertEquals(LocalDateTime.class, testRead.getTimestamp().getClass());
+
+    }
+
+}

http://git-wip-us.apache.org/repos/asf/cayenne/blob/e9e82bde/cayenne-java8/src/test/java/org/apache/cayenne/java8/RuntimeBase.java
----------------------------------------------------------------------
diff --git 
a/cayenne-java8/src/test/java/org/apache/cayenne/java8/RuntimeBase.java 
b/cayenne-java8/src/test/java/org/apache/cayenne/java8/RuntimeBase.java
new file mode 100644
index 0000000..bcff242
--- /dev/null
+++ b/cayenne-java8/src/test/java/org/apache/cayenne/java8/RuntimeBase.java
@@ -0,0 +1,38 @@
+/*****************************************************************
+ *   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.java8;
+
+import org.apache.cayenne.configuration.server.ServerRuntime;
+import org.apache.cayenne.di.Module;
+import org.junit.Before;
+
+public class RuntimeBase {
+
+    protected ServerRuntime runtime;
+
+    @Before
+    public void setUpRuntime() throws Exception {
+
+        Module java8Module = new CayenneJava8Module();
+
+        this.runtime = new ServerRuntime("cayenne-java8.xml", java8Module);
+    }
+
+}

http://git-wip-us.apache.org/repos/asf/cayenne/blob/e9e82bde/cayenne-java8/src/test/java/org/apache/cayenne/java8/db/Java8.java
----------------------------------------------------------------------
diff --git a/cayenne-java8/src/test/java/org/apache/cayenne/java8/db/Java8.java 
b/cayenne-java8/src/test/java/org/apache/cayenne/java8/db/Java8.java
new file mode 100644
index 0000000..0e0f242
--- /dev/null
+++ b/cayenne-java8/src/test/java/org/apache/cayenne/java8/db/Java8.java
@@ -0,0 +1,18 @@
+package org.apache.cayenne.java8.db;
+
+import org.apache.cayenne.java8.db.auto._Java8;
+
+public class Java8 extends _Java8 {
+
+    private static Java8 instance;
+
+    private Java8() {}
+
+    public static Java8 getInstance() {
+        if(instance == null) {
+            instance = new Java8();
+        }
+
+        return instance;
+    }
+}

http://git-wip-us.apache.org/repos/asf/cayenne/blob/e9e82bde/cayenne-java8/src/test/java/org/apache/cayenne/java8/db/LocalDateTestEntity.java
----------------------------------------------------------------------
diff --git 
a/cayenne-java8/src/test/java/org/apache/cayenne/java8/db/LocalDateTestEntity.java
 
b/cayenne-java8/src/test/java/org/apache/cayenne/java8/db/LocalDateTestEntity.java
new file mode 100644
index 0000000..0b29d55
--- /dev/null
+++ 
b/cayenne-java8/src/test/java/org/apache/cayenne/java8/db/LocalDateTestEntity.java
@@ -0,0 +1,9 @@
+package org.apache.cayenne.java8.db;
+
+import org.apache.cayenne.java8.db.auto._LocalDateTestEntity;
+
+public class LocalDateTestEntity extends _LocalDateTestEntity {
+
+    private static final long serialVersionUID = 1L; 
+
+}

http://git-wip-us.apache.org/repos/asf/cayenne/blob/e9e82bde/cayenne-java8/src/test/java/org/apache/cayenne/java8/db/LocalDateTimeTestEntity.java
----------------------------------------------------------------------
diff --git 
a/cayenne-java8/src/test/java/org/apache/cayenne/java8/db/LocalDateTimeTestEntity.java
 
b/cayenne-java8/src/test/java/org/apache/cayenne/java8/db/LocalDateTimeTestEntity.java
new file mode 100644
index 0000000..a2fc644
--- /dev/null
+++ 
b/cayenne-java8/src/test/java/org/apache/cayenne/java8/db/LocalDateTimeTestEntity.java
@@ -0,0 +1,9 @@
+package org.apache.cayenne.java8.db;
+
+import org.apache.cayenne.java8.db.auto._LocalDateTimeTestEntity;
+
+public class LocalDateTimeTestEntity extends _LocalDateTimeTestEntity {
+
+    private static final long serialVersionUID = 1L; 
+
+}

http://git-wip-us.apache.org/repos/asf/cayenne/blob/e9e82bde/cayenne-java8/src/test/java/org/apache/cayenne/java8/db/LocalTimeTestEntity.java
----------------------------------------------------------------------
diff --git 
a/cayenne-java8/src/test/java/org/apache/cayenne/java8/db/LocalTimeTestEntity.java
 
b/cayenne-java8/src/test/java/org/apache/cayenne/java8/db/LocalTimeTestEntity.java
new file mode 100644
index 0000000..21c651e
--- /dev/null
+++ 
b/cayenne-java8/src/test/java/org/apache/cayenne/java8/db/LocalTimeTestEntity.java
@@ -0,0 +1,9 @@
+package org.apache.cayenne.java8.db;
+
+import org.apache.cayenne.java8.db.auto._LocalTimeTestEntity;
+
+public class LocalTimeTestEntity extends _LocalTimeTestEntity {
+
+    private static final long serialVersionUID = 1L; 
+
+}

http://git-wip-us.apache.org/repos/asf/cayenne/blob/e9e82bde/cayenne-java8/src/test/java/org/apache/cayenne/java8/db/auto/_Java8.java
----------------------------------------------------------------------
diff --git 
a/cayenne-java8/src/test/java/org/apache/cayenne/java8/db/auto/_Java8.java 
b/cayenne-java8/src/test/java/org/apache/cayenne/java8/db/auto/_Java8.java
new file mode 100644
index 0000000..793c3c8
--- /dev/null
+++ b/cayenne-java8/src/test/java/org/apache/cayenne/java8/db/auto/_Java8.java
@@ -0,0 +1,12 @@
+package org.apache.cayenne.java8.db.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 _Java8 {
+}
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/cayenne/blob/e9e82bde/cayenne-java8/src/test/java/org/apache/cayenne/java8/db/auto/_LocalDateTestEntity.java
----------------------------------------------------------------------
diff --git 
a/cayenne-java8/src/test/java/org/apache/cayenne/java8/db/auto/_LocalDateTestEntity.java
 
b/cayenne-java8/src/test/java/org/apache/cayenne/java8/db/auto/_LocalDateTestEntity.java
new file mode 100644
index 0000000..f38668c
--- /dev/null
+++ 
b/cayenne-java8/src/test/java/org/apache/cayenne/java8/db/auto/_LocalDateTestEntity.java
@@ -0,0 +1,32 @@
+package org.apache.cayenne.java8.db.auto;
+
+import java.time.LocalDate;
+
+import org.apache.cayenne.CayenneDataObject;
+import org.apache.cayenne.exp.Property;
+
+/**
+ * Class _LocalDateTestEntity 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 _LocalDateTestEntity extends CayenneDataObject {
+
+    private static final long serialVersionUID = 1L; 
+
+    @Deprecated
+    public static final String DATE_PROPERTY = "date";
+
+    public static final String ID_PK_COLUMN = "ID";
+
+    public static final Property<LocalDate> DATE = new 
Property<LocalDate>("date");
+
+    public void setDate(LocalDate date) {
+        writeProperty("date", date);
+    }
+    public LocalDate getDate() {
+        return (LocalDate)readProperty("date");
+    }
+
+}

http://git-wip-us.apache.org/repos/asf/cayenne/blob/e9e82bde/cayenne-java8/src/test/java/org/apache/cayenne/java8/db/auto/_LocalDateTimeTestEntity.java
----------------------------------------------------------------------
diff --git 
a/cayenne-java8/src/test/java/org/apache/cayenne/java8/db/auto/_LocalDateTimeTestEntity.java
 
b/cayenne-java8/src/test/java/org/apache/cayenne/java8/db/auto/_LocalDateTimeTestEntity.java
new file mode 100644
index 0000000..af7eb64
--- /dev/null
+++ 
b/cayenne-java8/src/test/java/org/apache/cayenne/java8/db/auto/_LocalDateTimeTestEntity.java
@@ -0,0 +1,32 @@
+package org.apache.cayenne.java8.db.auto;
+
+import java.time.LocalDateTime;
+
+import org.apache.cayenne.CayenneDataObject;
+import org.apache.cayenne.exp.Property;
+
+/**
+ * Class _LocalDateTimeTestEntity 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 _LocalDateTimeTestEntity extends CayenneDataObject {
+
+    private static final long serialVersionUID = 1L; 
+
+    @Deprecated
+    public static final String TIMESTAMP_PROPERTY = "timestamp";
+
+    public static final String ID_PK_COLUMN = "ID";
+
+    public static final Property<LocalDateTime> TIMESTAMP = new 
Property<LocalDateTime>("timestamp");
+
+    public void setTimestamp(LocalDateTime timestamp) {
+        writeProperty("timestamp", timestamp);
+    }
+    public LocalDateTime getTimestamp() {
+        return (LocalDateTime)readProperty("timestamp");
+    }
+
+}

http://git-wip-us.apache.org/repos/asf/cayenne/blob/e9e82bde/cayenne-java8/src/test/java/org/apache/cayenne/java8/db/auto/_LocalTimeTestEntity.java
----------------------------------------------------------------------
diff --git 
a/cayenne-java8/src/test/java/org/apache/cayenne/java8/db/auto/_LocalTimeTestEntity.java
 
b/cayenne-java8/src/test/java/org/apache/cayenne/java8/db/auto/_LocalTimeTestEntity.java
new file mode 100644
index 0000000..563cf26
--- /dev/null
+++ 
b/cayenne-java8/src/test/java/org/apache/cayenne/java8/db/auto/_LocalTimeTestEntity.java
@@ -0,0 +1,32 @@
+package org.apache.cayenne.java8.db.auto;
+
+import java.time.LocalTime;
+
+import org.apache.cayenne.CayenneDataObject;
+import org.apache.cayenne.exp.Property;
+
+/**
+ * Class _LocalTimeTestEntity 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 _LocalTimeTestEntity extends CayenneDataObject {
+
+    private static final long serialVersionUID = 1L; 
+
+    @Deprecated
+    public static final String TIME_PROPERTY = "time";
+
+    public static final String ID_PK_COLUMN = "ID";
+
+    public static final Property<LocalTime> TIME = new 
Property<LocalTime>("time");
+
+    public void setTime(LocalTime time) {
+        writeProperty("time", time);
+    }
+    public LocalTime getTime() {
+        return (LocalTime)readProperty("time");
+    }
+
+}

http://git-wip-us.apache.org/repos/asf/cayenne/blob/e9e82bde/cayenne-java8/src/test/resources/cayenne-java8.xml
----------------------------------------------------------------------
diff --git a/cayenne-java8/src/test/resources/cayenne-java8.xml 
b/cayenne-java8/src/test/resources/cayenne-java8.xml
new file mode 100644
index 0000000..0f0e8d1
--- /dev/null
+++ b/cayenne-java8/src/test/resources/cayenne-java8.xml
@@ -0,0 +1,21 @@
+<?xml version="1.0" encoding="utf-8"?>
+<domain project-version="7">
+       <map name="java8"/>
+
+       <node name="datanode"
+                
factory="org.apache.cayenne.configuration.server.XMLPoolingDataSourceFactory"
+                
schema-update-strategy="org.apache.cayenne.access.dbsync.CreateIfNoSchemaStrategy"
+               >
+               <map-ref name="java8"/>
+               <data-source>
+                       <!--<driver 
value="org.apache.derby.jdbc.EmbeddedDriver"/>-->
+                       <!--<url 
value="jdbc:derby:memory:java8;create=true"/>-->
+                       <!--<connectionPool min="1" max="1"/>-->
+                       <!--<login/>-->
+                       <driver value="org.hsqldb.jdbcDriver"/>
+                       <url value="jdbc:hsqldb:mem:java8"/>
+                       <connectionPool min="1" max="1"/>
+                       <login userName="sa"/>
+               </data-source>
+       </node>
+</domain>

http://git-wip-us.apache.org/repos/asf/cayenne/blob/e9e82bde/cayenne-java8/src/test/resources/java8.map.xml
----------------------------------------------------------------------
diff --git a/cayenne-java8/src/test/resources/java8.map.xml 
b/cayenne-java8/src/test/resources/java8.map.xml
new file mode 100644
index 0000000..15d0e8c
--- /dev/null
+++ b/cayenne-java8/src/test/resources/java8.map.xml
@@ -0,0 +1,28 @@
+<?xml version="1.0" encoding="utf-8"?>
+<data-map xmlns="http://cayenne.apache.org/schema/7/modelMap";
+        xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance";
+        xsi:schemaLocation="http://cayenne.apache.org/schema/7/modelMap 
http://cayenne.apache.org/schema/7/modelMap.xsd";
+        project-version="7">
+       <property name="defaultPackage" value="org.apache.cayenne.java8.db"/>
+       <db-entity name="LocalDateTest">
+               <db-attribute name="Date" type="DATE"/>
+               <db-attribute name="ID" type="INTEGER" isPrimaryKey="true" 
isMandatory="true"/>
+       </db-entity>
+       <db-entity name="LocalDateTimeTest">
+               <db-attribute name="ID" type="INTEGER" isPrimaryKey="true" 
isMandatory="true"/>
+               <db-attribute name="Timestamp" type="TIMESTAMP"/>
+       </db-entity>
+       <db-entity name="LocalTimeTest">
+               <db-attribute name="ID" type="INTEGER" isPrimaryKey="true" 
isMandatory="true"/>
+               <db-attribute name="Time" type="TIME"/>
+       </db-entity>
+       <obj-entity name="LocalDateTest" 
className="org.apache.cayenne.java8.db.LocalDateTestEntity" 
dbEntityName="LocalDateTest">
+               <obj-attribute name="date" type="java.time.LocalDate" 
db-attribute-path="Date"/>
+       </obj-entity>
+       <obj-entity name="LocalDateTimeTest" 
className="org.apache.cayenne.java8.db.LocalDateTimeTestEntity" 
dbEntityName="LocalDateTimeTest">
+               <obj-attribute name="timestamp" type="java.time.LocalDateTime" 
db-attribute-path="Timestamp"/>
+       </obj-entity>
+       <obj-entity name="LocalTimeTest" 
className="org.apache.cayenne.java8.db.LocalTimeTestEntity" 
dbEntityName="LocalTimeTest">
+               <obj-attribute name="time" type="java.time.LocalTime" 
db-attribute-path="Time"/>
+       </obj-entity>
+</data-map>

http://git-wip-us.apache.org/repos/asf/cayenne/blob/e9e82bde/pom.xml
----------------------------------------------------------------------
diff --git a/pom.xml b/pom.xml
index f543fc2..6037f2d 100644
--- a/pom.xml
+++ b/pom.xml
@@ -61,6 +61,7 @@
                <module>tutorials</module>
                <module>docs</module>
                <module>assembly</module>
+               <module>cayenne-java8</module>
        </modules>
        <issueManagement>
                <system>jira</system>

Reply via email to