From e9e82bdeee1cfee4bc32bc7b891887ebd84aef56 Mon Sep 17 00:00:00 2001 From: Savva Kolbachev Date: Fri, 28 Nov 2014 11:17:37 +0300 Subject: [PATCH 1/2] init Java8 time Extensions --- 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 +++++++++ .../apache/cayenne/java8/Java8TimesIT.java | 92 ++++++++++++++ .../org/apache/cayenne/java8/RuntimeBase.java | 38 ++++++ .../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 +++++ .../db/auto/_LocalDateTimeTestEntity.java | 32 +++++ .../java8/db/auto/_LocalTimeTestEntity.java | 32 +++++ .../src/test/resources/cayenne-java8.xml | 21 ++++ .../src/test/resources/java8.map.xml | 28 +++++ pom.xml | 1 + 18 files changed, 647 insertions(+) create mode 100644 cayenne-java8/pom.xml create mode 100644 cayenne-java8/src/main/java/org/apache/cayenne/java8/CayenneJava8Module.java create mode 100644 cayenne-java8/src/main/java/org/apache/cayenne/java8/access/types/LocalDateTimeType.java create mode 100644 cayenne-java8/src/main/java/org/apache/cayenne/java8/access/types/LocalDateType.java create mode 100644 cayenne-java8/src/main/java/org/apache/cayenne/java8/access/types/LocalTimeType.java create mode 100644 cayenne-java8/src/test/java/org/apache/cayenne/java8/Java8TimesIT.java create mode 100644 cayenne-java8/src/test/java/org/apache/cayenne/java8/RuntimeBase.java create mode 100644 cayenne-java8/src/test/java/org/apache/cayenne/java8/db/Java8.java create mode 100644 cayenne-java8/src/test/java/org/apache/cayenne/java8/db/LocalDateTestEntity.java create mode 100644 cayenne-java8/src/test/java/org/apache/cayenne/java8/db/LocalDateTimeTestEntity.java create mode 100644 cayenne-java8/src/test/java/org/apache/cayenne/java8/db/LocalTimeTestEntity.java create mode 100644 cayenne-java8/src/test/java/org/apache/cayenne/java8/db/auto/_Java8.java create mode 100644 cayenne-java8/src/test/java/org/apache/cayenne/java8/db/auto/_LocalDateTestEntity.java create mode 100644 cayenne-java8/src/test/java/org/apache/cayenne/java8/db/auto/_LocalDateTimeTestEntity.java create mode 100644 cayenne-java8/src/test/java/org/apache/cayenne/java8/db/auto/_LocalTimeTestEntity.java create mode 100644 cayenne-java8/src/test/resources/cayenne-java8.xml create mode 100644 cayenne-java8/src/test/resources/java8.map.xml diff --git a/cayenne-java8/pom.xml b/cayenne-java8/pom.xml new file mode 100644 index 0000000000..46af7f0900 --- /dev/null +++ b/cayenne-java8/pom.xml @@ -0,0 +1,113 @@ + + + + cayenne-parent + org.apache.cayenne + 4.0.M2-SNAPSHOT + + 4.0.0 + cayenne-java8 + Cayenne Java8 Extensions + jar + + + + + org.apache.cayenne + cayenne-server + ${project.version} + + + org.apache.cayenne + cayenne-di + ${project.version} + compile + + + + junit + junit + test + + + org.apache.cayenne.build-tools + cayenne-test-utilities + ${project.version} + test + + + org.mockito + mockito-all + test + + + hsqldb + hsqldb + test + + + org.slf4j + jcl-over-slf4j + test + + + org.slf4j + slf4j-api + test + + + org.slf4j + slf4j-simple + test + + + org.apache.derby + derby + test + + + + + + maven-remote-resources-plugin + + + + process + + + + + + org.apache.cayenne.plugins + maven-cayenne-plugin + ${project.version} + + ${project.basedir}/src/test/resources/java8.map.xml + ${project.basedir}/src/test/java + org.apache.cayenne.java8.db + org.apache.cayenne.java8.db.auto + + + + default-cli + + cgen + + + + + + maven-checkstyle-plugin + + + + maven-pmd-plugin + + + + \ No newline at end of file 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 0000000000..1c321ba510 --- /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()); + } + +} 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 0000000000..aa47c22bb9 --- /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; + } +} 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 0000000000..72cfff77b3 --- /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; + } + +} 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 0000000000..2d109baec9 --- /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; + } + +} 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 0000000000..7db3243a4b --- /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()); + + } + +} 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 0000000000..bcff242c3f --- /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); + } + +} 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 0000000000..0e0f242cab --- /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; + } +} 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 0000000000..0b29d55290 --- /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; + +} 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 0000000000..a2fc644570 --- /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; + +} 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 0000000000..21c651e9ca --- /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; + +} 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 0000000000..793c3c85c6 --- /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 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 0000000000..f38668c405 --- /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 DATE = new Property("date"); + + public void setDate(LocalDate date) { + writeProperty("date", date); + } + public LocalDate getDate() { + return (LocalDate)readProperty("date"); + } + +} 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 0000000000..af7eb643af --- /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 TIMESTAMP = new Property("timestamp"); + + public void setTimestamp(LocalDateTime timestamp) { + writeProperty("timestamp", timestamp); + } + public LocalDateTime getTimestamp() { + return (LocalDateTime)readProperty("timestamp"); + } + +} 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 0000000000..563cf26ef5 --- /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 TIME = new Property("time"); + + public void setTime(LocalTime time) { + writeProperty("time", time); + } + public LocalTime getTime() { + return (LocalTime)readProperty("time"); + } + +} 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 0000000000..0f0e8d137e --- /dev/null +++ b/cayenne-java8/src/test/resources/cayenne-java8.xml @@ -0,0 +1,21 @@ + + + + + + + + + + + + + + + + + + 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 0000000000..15d0e8cfae --- /dev/null +++ b/cayenne-java8/src/test/resources/java8.map.xml @@ -0,0 +1,28 @@ + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/pom.xml b/pom.xml index f543fc28db..6037f2dac1 100644 --- a/pom.xml +++ b/pom.xml @@ -61,6 +61,7 @@ tutorials docs assembly + cayenne-java8 jira From c9b2829533832b03a29909175b946849f3d0fdb5 Mon Sep 17 00:00:00 2001 From: Savva Kolbachev Date: Mon, 1 Dec 2014 16:07:28 +0300 Subject: [PATCH 2/2] fix and clean up code --- cayenne-java8/pom.xml | 48 +++++++------------ .../cayenne/java8/CayenneJava8Module.java | 3 ++ .../org/apache/cayenne/java8/RuntimeBase.java | 2 +- .../org/apache/cayenne/java8/db/Java8.java | 18 ------- .../apache/cayenne/java8/db/Java8Times.java | 18 +++++++ .../db/auto/{_Java8.java => _Java8Times.java} | 2 +- ...enne-java8.xml => cayenne-java8-times.xml} | 8 +--- .../{java8.map.xml => java8-times.map.xml} | 12 ++--- .../cayenne/modeler/util/ModelerUtil.java | 32 +++++++------ pom.xml | 10 +++- 10 files changed, 73 insertions(+), 80 deletions(-) delete mode 100644 cayenne-java8/src/test/java/org/apache/cayenne/java8/db/Java8.java create mode 100644 cayenne-java8/src/test/java/org/apache/cayenne/java8/db/Java8Times.java rename cayenne-java8/src/test/java/org/apache/cayenne/java8/db/auto/{_Java8.java => _Java8Times.java} (91%) rename cayenne-java8/src/test/resources/{cayenne-java8.xml => cayenne-java8-times.xml} (66%) rename cayenne-java8/src/test/resources/{java8.map.xml => java8-times.map.xml} (80%) diff --git a/cayenne-java8/pom.xml b/cayenne-java8/pom.xml index 46af7f0900..1f473dd3b9 100644 --- a/cayenne-java8/pom.xml +++ b/cayenne-java8/pom.xml @@ -1,4 +1,14 @@ + @@ -19,12 +29,7 @@ cayenne-server ${project.version} - - org.apache.cayenne - cayenne-di - ${project.version} - compile - + junit @@ -37,36 +42,11 @@ ${project.version} test - - org.mockito - mockito-all - test - hsqldb hsqldb test - - org.slf4j - jcl-over-slf4j - test - - - org.slf4j - slf4j-api - test - - - org.slf4j - slf4j-simple - test - - - org.apache.derby - derby - test - @@ -85,7 +65,7 @@ maven-cayenne-plugin ${project.version} - ${project.basedir}/src/test/resources/java8.map.xml + ${project.basedir}/src/test/resources/java8-times.map.xml ${project.basedir}/src/test/java org.apache.cayenne.java8.db org.apache.cayenne.java8.db.auto @@ -108,6 +88,10 @@ maven-pmd-plugin + + org.apache.maven.plugins + maven-failsafe-plugin + \ No newline at end of file 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 index 1c321ba510..563c3c080b 100644 --- a/cayenne-java8/src/main/java/org/apache/cayenne/java8/CayenneJava8Module.java +++ b/cayenne-java8/src/main/java/org/apache/cayenne/java8/CayenneJava8Module.java @@ -28,6 +28,9 @@ public class CayenneJava8Module implements Module { + public CayenneJava8Module() { + } + @Override public void configure(Binder binder) { binder 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 index bcff242c3f..5379b37669 100644 --- a/cayenne-java8/src/test/java/org/apache/cayenne/java8/RuntimeBase.java +++ b/cayenne-java8/src/test/java/org/apache/cayenne/java8/RuntimeBase.java @@ -32,7 +32,7 @@ public void setUpRuntime() throws Exception { Module java8Module = new CayenneJava8Module(); - this.runtime = new ServerRuntime("cayenne-java8.xml", java8Module); + this.runtime = new ServerRuntime("cayenne-java8-times.xml", java8Module); } } 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 deleted file mode 100644 index 0e0f242cab..0000000000 --- a/cayenne-java8/src/test/java/org/apache/cayenne/java8/db/Java8.java +++ /dev/null @@ -1,18 +0,0 @@ -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; - } -} diff --git a/cayenne-java8/src/test/java/org/apache/cayenne/java8/db/Java8Times.java b/cayenne-java8/src/test/java/org/apache/cayenne/java8/db/Java8Times.java new file mode 100644 index 0000000000..c01f4cce44 --- /dev/null +++ b/cayenne-java8/src/test/java/org/apache/cayenne/java8/db/Java8Times.java @@ -0,0 +1,18 @@ +package org.apache.cayenne.java8.db; + +import org.apache.cayenne.java8.db.auto._Java8Times; + +public class Java8Times extends _Java8Times { + + private static Java8Times instance; + + private Java8Times() {} + + public static Java8Times getInstance() { + if(instance == null) { + instance = new Java8Times(); + } + + return instance; + } +} 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/_Java8Times.java similarity index 91% rename from cayenne-java8/src/test/java/org/apache/cayenne/java8/db/auto/_Java8.java rename to cayenne-java8/src/test/java/org/apache/cayenne/java8/db/auto/_Java8Times.java index 793c3c85c6..1d44ef6b08 100644 --- 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/_Java8Times.java @@ -8,5 +8,5 @@ * since it may be overwritten next time code is regenerated. * If you need to make any customizations, please use subclass. */ -public class _Java8 { +public class _Java8Times { } \ No newline at end of file diff --git a/cayenne-java8/src/test/resources/cayenne-java8.xml b/cayenne-java8/src/test/resources/cayenne-java8-times.xml similarity index 66% rename from cayenne-java8/src/test/resources/cayenne-java8.xml rename to cayenne-java8/src/test/resources/cayenne-java8-times.xml index 0f0e8d137e..bb7a77db99 100644 --- a/cayenne-java8/src/test/resources/cayenne-java8.xml +++ b/cayenne-java8/src/test/resources/cayenne-java8-times.xml @@ -1,17 +1,13 @@ - + - + - - - - diff --git a/cayenne-java8/src/test/resources/java8.map.xml b/cayenne-java8/src/test/resources/java8-times.map.xml similarity index 80% rename from cayenne-java8/src/test/resources/java8.map.xml rename to cayenne-java8/src/test/resources/java8-times.map.xml index 15d0e8cfae..ac170f93ba 100644 --- a/cayenne-java8/src/test/resources/java8.map.xml +++ b/cayenne-java8/src/test/resources/java8-times.map.xml @@ -4,25 +4,25 @@ xsi:schemaLocation="http://cayenne.apache.org/schema/7/modelMap http://cayenne.apache.org/schema/7/modelMap.xsd" project-version="7"> - + - + - + - + - + - + diff --git a/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/util/ModelerUtil.java b/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/util/ModelerUtil.java index 13f81d1bee..844eab346b 100644 --- a/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/util/ModelerUtil.java +++ b/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/util/ModelerUtil.java @@ -19,6 +19,20 @@ package org.apache.cayenne.modeler.util; +import org.apache.cayenne.configuration.DataChannelDescriptor; +import org.apache.cayenne.configuration.DataNodeDescriptor; +import org.apache.cayenne.map.DataMap; +import org.apache.cayenne.map.DbEntity; +import org.apache.cayenne.modeler.Application; +import org.apache.cayenne.modeler.ModelerConstants; +import org.apache.cayenne.modeler.ProjectController; +import org.apache.cayenne.modeler.action.ActionManager; +import org.apache.cayenne.modeler.action.MultipleObjectsAction; +import org.apache.cayenne.reflect.PropertyUtils; +import org.apache.cayenne.util.CayenneMapEntry; + +import javax.swing.Action; +import javax.swing.ImageIcon; import java.awt.Dimension; import java.awt.Point; import java.awt.Window; @@ -40,21 +54,6 @@ import java.util.Set; import java.util.UUID; -import javax.swing.Action; -import javax.swing.ImageIcon; - -import org.apache.cayenne.configuration.DataChannelDescriptor; -import org.apache.cayenne.configuration.DataNodeDescriptor; -import org.apache.cayenne.map.DataMap; -import org.apache.cayenne.map.DbEntity; -import org.apache.cayenne.modeler.Application; -import org.apache.cayenne.modeler.ModelerConstants; -import org.apache.cayenne.modeler.ProjectController; -import org.apache.cayenne.modeler.action.ActionManager; -import org.apache.cayenne.modeler.action.MultipleObjectsAction; -import org.apache.cayenne.reflect.PropertyUtils; -import org.apache.cayenne.util.CayenneMapEntry; - /** * Various unorganized utility methods used by CayenneModeler. * @@ -136,6 +135,9 @@ public static String[] getRegisteredTypeNames() { nonPrimitives.add(Serializable.class.getName()); nonPrimitives.add("java.lang.Character[]"); nonPrimitives.add("java.lang.Byte[]"); + nonPrimitives.add("java.time.LocalDate"); + nonPrimitives.add("java.time.LocalTime"); + nonPrimitives.add("java.time.LocalDateTime"); String[] nonPrimitivesNames = new String[nonPrimitives.size()]; nonPrimitives.toArray(nonPrimitivesNames); diff --git a/pom.xml b/pom.xml index 6037f2dac1..09e0dd9dcd 100644 --- a/pom.xml +++ b/pom.xml @@ -61,7 +61,6 @@ tutorials docs assembly - cayenne-java8 jira @@ -1377,6 +1376,15 @@ -Xdoclint:none + + cayenne-java8-module-to-build + + [1.8,) + + + cayenne-java8 + +