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>