You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@isis.apache.org by da...@apache.org on 2012/07/15 20:46:23 UTC
svn commit: r1361752 - in /incubator/isis/trunk/framework:
runtimes/dflt/objectstores/jdo/jdo-datanucleus/src/test/java/org/apache/isis/runtimes/dflt/objectstores/jdo/datanucleus/
tck/tck-dom/src/main/java/org/apache/isis/tck/dom/scalars/
Author: danhaywood
Date: Sun Jul 15 18:46:22 2012
New Revision: 1361752
URL: http://svn.apache.org/viewvc?rev=1361752&view=rev
Log:
ISIS-14: adding test for persisting of jdk-valued entities
Added:
incubator/isis/trunk/framework/runtimes/dflt/objectstores/jdo/jdo-datanucleus/src/test/java/org/apache/isis/runtimes/dflt/objectstores/jdo/datanucleus/Persistence_persist_jdkValuedEntity.java
Modified:
incubator/isis/trunk/framework/runtimes/dflt/objectstores/jdo/jdo-datanucleus/src/test/java/org/apache/isis/runtimes/dflt/objectstores/jdo/datanucleus/Utils.java
incubator/isis/trunk/framework/tck/tck-dom/src/main/java/org/apache/isis/tck/dom/scalars/JdkValuedEntity.java
incubator/isis/trunk/framework/tck/tck-dom/src/main/java/org/apache/isis/tck/dom/scalars/PrimitiveValuedEntity.java
incubator/isis/trunk/framework/tck/tck-dom/src/main/java/org/apache/isis/tck/dom/scalars/WrapperValuedEntity.java
Added: incubator/isis/trunk/framework/runtimes/dflt/objectstores/jdo/jdo-datanucleus/src/test/java/org/apache/isis/runtimes/dflt/objectstores/jdo/datanucleus/Persistence_persist_jdkValuedEntity.java
URL: http://svn.apache.org/viewvc/incubator/isis/trunk/framework/runtimes/dflt/objectstores/jdo/jdo-datanucleus/src/test/java/org/apache/isis/runtimes/dflt/objectstores/jdo/datanucleus/Persistence_persist_jdkValuedEntity.java?rev=1361752&view=auto
==============================================================================
--- incubator/isis/trunk/framework/runtimes/dflt/objectstores/jdo/jdo-datanucleus/src/test/java/org/apache/isis/runtimes/dflt/objectstores/jdo/datanucleus/Persistence_persist_jdkValuedEntity.java (added)
+++ incubator/isis/trunk/framework/runtimes/dflt/objectstores/jdo/jdo-datanucleus/src/test/java/org/apache/isis/runtimes/dflt/objectstores/jdo/datanucleus/Persistence_persist_jdkValuedEntity.java Sun Jul 15 18:46:22 2012
@@ -0,0 +1,96 @@
+/*
+ * 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.isis.runtimes.dflt.objectstores.jdo.datanucleus;
+
+import static org.hamcrest.CoreMatchers.is;
+import static org.hamcrest.CoreMatchers.nullValue;
+import static org.junit.Assert.assertThat;
+
+import java.awt.Image;
+import java.math.BigDecimal;
+import java.math.BigInteger;
+import java.sql.Timestamp;
+import java.util.List;
+
+import org.joda.time.LocalDate;
+import org.joda.time.LocalDateTime;
+import org.junit.Rule;
+import org.junit.Test;
+
+import org.apache.isis.runtimes.dflt.testsupport.IsisSystemWithFixtures;
+import org.apache.isis.tck.dom.scalars.JdkValuedEntity;
+import org.apache.isis.tck.dom.scalars.JdkValuedEntityRepository;
+
+public class Persistence_persist_jdkValuedEntity {
+
+ private JdkValuedEntityRepository repo = new JdkValuedEntityRepository();
+
+ @Rule
+ public IsisSystemWithFixtures iswf = Utils.systemBuilder()
+ .with(Utils.listenerToDeleteFrom("JDKVALUEDENTITY"))
+ .withServices(repo)
+ .build();
+
+ @Test
+ public void persistTwo() throws Exception {
+ iswf.beginTran();
+ repo.newEntity().setStringProperty("1");
+ repo.newEntity().setStringProperty("2");
+ iswf.commitTran();
+
+ iswf.bounceSystem();
+
+ iswf.beginTran();
+ List<JdkValuedEntity> list = repo.list();
+ assertThat(list.size(), is(2));
+ iswf.commitTran();
+ }
+
+ @Test
+ public void persistAllValues() throws Exception {
+ iswf.beginTran();
+ JdkValuedEntity entity = repo.newEntity();
+ entity.setStringProperty("1");
+ entity.setBigDecimalProperty(BigDecimal.valueOf(123456789012345L, 2));
+ entity.setBigIntegerProperty(BigInteger.valueOf(543210987654321L));
+ Image image = null; // TODO
+ entity.setImageProperty(image);
+ entity.setJavaSqlDateProperty(new java.sql.Date(Utils.toMillis(2010, 5, 13)));
+ entity.setJavaSqlTimeProperty(new java.sql.Time(Utils.toMillis(1970, 1, 2, 5, 10, 15))); // date portion is unimportant, but is preserved
+ entity.setJavaSqlTimestampProperty(new Timestamp(Utils.toMillis(2010, 5, 13, 10, 15, 20)));
+ entity.setJavaUtilDateProperty(new java.util.Date(Utils.toMillis(2010, 5, 13, 20, 15, 10)));
+
+ iswf.commitTran();
+
+ iswf.bounceSystem();
+
+ iswf.beginTran();
+ JdkValuedEntity entityRetrieved = repo.list().get(0);
+ assertThat(entityRetrieved.getStringProperty(), is("1"));
+ assertThat(entityRetrieved.getBigDecimalProperty(), is(BigDecimal.valueOf(123456789012345L, 2)));
+ assertThat(entityRetrieved.getBigIntegerProperty(), is(BigInteger.valueOf(543210987654321L)));
+ assertThat(entityRetrieved.getImageProperty(), is(nullValue())); // TODO
+ assertThat(entityRetrieved.getJavaSqlDateProperty(), is(new java.sql.Date(Utils.toMillis(2010, 5, 13))));
+ assertThat(entityRetrieved.getJavaSqlTimeProperty(), is(new java.sql.Time(Utils.toMillis(1970, 1, 2, 5, 10, 15))));
+ assertThat(entityRetrieved.getJavaSqlTimestampProperty(), is(new Timestamp(Utils.toMillis(2010, 5, 13, 10, 15, 20))));
+ assertThat(entityRetrieved.getJavaUtilDateProperty(), is(new java.util.Date(Utils.toMillis(2010, 5, 13, 20, 15, 10))));
+
+ iswf.commitTran();
+ }
+}
Modified: incubator/isis/trunk/framework/runtimes/dflt/objectstores/jdo/jdo-datanucleus/src/test/java/org/apache/isis/runtimes/dflt/objectstores/jdo/datanucleus/Utils.java
URL: http://svn.apache.org/viewvc/incubator/isis/trunk/framework/runtimes/dflt/objectstores/jdo/jdo-datanucleus/src/test/java/org/apache/isis/runtimes/dflt/objectstores/jdo/datanucleus/Utils.java?rev=1361752&r1=1361751&r2=1361752&view=diff
==============================================================================
--- incubator/isis/trunk/framework/runtimes/dflt/objectstores/jdo/jdo-datanucleus/src/test/java/org/apache/isis/runtimes/dflt/objectstores/jdo/datanucleus/Utils.java (original)
+++ incubator/isis/trunk/framework/runtimes/dflt/objectstores/jdo/jdo-datanucleus/src/test/java/org/apache/isis/runtimes/dflt/objectstores/jdo/datanucleus/Utils.java Sun Jul 15 18:46:22 2012
@@ -22,6 +22,9 @@ import java.sql.Connection;
import java.sql.Statement;
import java.util.Properties;
+import org.joda.time.LocalDate;
+import org.joda.time.LocalDateTime;
+
import org.apache.isis.core.commons.config.IsisConfiguration;
import org.apache.isis.core.commons.config.IsisConfigurationDefault;
import org.apache.isis.runtimes.dflt.objectstores.jdo.datanucleus.metamodel.specloader.progmodelfacets.DataNucleusProgrammingModelFacets;
@@ -72,10 +75,11 @@ public class Utils {
Properties props = new Properties();
props.put("isis.persistor.datanucleus.impl.javax.jdo.PersistenceManagerFactoryClass", "org.datanucleus.api.jdo.JDOPersistenceManagerFactory");
-
+
+ // last one wins!
+ configureHsqlDbFileBased(props);
+ configureForMsSqlServer(props);
configureHsqlDbInMemory(props);
-// configureHsqlDbFileBased(props);
-// configureForMsSqlServer(props);
props.put("isis.persistor.datanucleus.impl.datanucleus.autoCreateSchema", "true");
props.put("isis.persistor.datanucleus.impl.datanucleus.validateTables", "true");
@@ -106,4 +110,16 @@ public class Utils {
props.put("isis.persistor.datanucleus.impl.javax.jdo.option.ConnectionPassword", "jdopass");
}
+
+
+ static long toMillis(int year, int monthOfYear, int dayOfMonth) {
+ LocalDate d = new LocalDate(year, monthOfYear, dayOfMonth);
+ return d.toDateMidnight().getMillis();
+ }
+
+ static long toMillis(int year, int monthOfYear, int dayOfMonth, int hourOfDay, int minuteOfHour, int secondOfMinute) {
+ LocalDateTime d = new LocalDateTime(year, monthOfYear, dayOfMonth, hourOfDay, minuteOfHour, secondOfMinute);
+ return d.toDateTime().getMillis();
+ }
+
}
Modified: incubator/isis/trunk/framework/tck/tck-dom/src/main/java/org/apache/isis/tck/dom/scalars/JdkValuedEntity.java
URL: http://svn.apache.org/viewvc/incubator/isis/trunk/framework/tck/tck-dom/src/main/java/org/apache/isis/tck/dom/scalars/JdkValuedEntity.java?rev=1361752&r1=1361751&r2=1361752&view=diff
==============================================================================
--- incubator/isis/trunk/framework/tck/tck-dom/src/main/java/org/apache/isis/tck/dom/scalars/JdkValuedEntity.java (original)
+++ incubator/isis/trunk/framework/tck/tck-dom/src/main/java/org/apache/isis/tck/dom/scalars/JdkValuedEntity.java Sun Jul 15 18:46:22 2012
@@ -30,12 +30,20 @@ import org.apache.isis.applib.annotation
import org.apache.isis.applib.annotation.Optional;
import org.apache.isis.applib.annotation.Title;
+@javax.jdo.annotations.PersistenceCapable
+@javax.jdo.annotations.Discriminator("JDKV")
+@javax.jdo.annotations.Query(
+ name="jdkv_findByStringProperty", language="JDOQL",
+ value="SELECT FROM org.apache.isis.tck.dom.scalars.JdkValuedEntity WHERE stringProperty == :i")
+@javax.persistence.Entity
+@javax.persistence.DiscriminatorValue("JDKV")
@ObjectType("JDKV")
public class JdkValuedEntity extends AbstractDomainObject {
// {{ StringProperty (also title)
private String stringProperty;
+ @javax.jdo.annotations.PrimaryKey
@Title
@Optional
@MemberOrder(sequence = "1")
@@ -67,6 +75,7 @@ public class JdkValuedEntity extends Abs
// {{ JavaSqlDateProperty
private java.sql.Date javaSqlDateProperty;
+ @javax.jdo.annotations.Persistent() // since not persistent by default
@Optional
@MemberOrder(sequence = "1")
public java.sql.Date getJavaSqlDateProperty() {
@@ -79,9 +88,27 @@ public class JdkValuedEntity extends Abs
// }}
+ // {{ JavaSqlTimeProperty (property)
+ private java.sql.Time javaSqlTimeProperty;
+
+ @javax.jdo.annotations.Persistent() // since not persistent by default
+ @Optional
+ @MemberOrder(sequence = "1")
+ public java.sql.Time getJavaSqlTimeProperty() {
+ return javaSqlTimeProperty;
+ }
+
+ public void setJavaSqlTimeProperty(final java.sql.Time javaSqlTimeProperty) {
+ this.javaSqlTimeProperty = javaSqlTimeProperty;
+ }
+ // }}
+
+
+
// {{ JavaSqlTimestampProperty
private java.sql.Timestamp javaSqlTimestampProperty;
+ @javax.jdo.annotations.Persistent() // since not persistent by default
@Optional
@MemberOrder(sequence = "1")
public java.sql.Timestamp getJavaSqlTimestampProperty() {
Modified: incubator/isis/trunk/framework/tck/tck-dom/src/main/java/org/apache/isis/tck/dom/scalars/PrimitiveValuedEntity.java
URL: http://svn.apache.org/viewvc/incubator/isis/trunk/framework/tck/tck-dom/src/main/java/org/apache/isis/tck/dom/scalars/PrimitiveValuedEntity.java?rev=1361752&r1=1361751&r2=1361752&view=diff
==============================================================================
--- incubator/isis/trunk/framework/tck/tck-dom/src/main/java/org/apache/isis/tck/dom/scalars/PrimitiveValuedEntity.java (original)
+++ incubator/isis/trunk/framework/tck/tck-dom/src/main/java/org/apache/isis/tck/dom/scalars/PrimitiveValuedEntity.java Sun Jul 15 18:46:22 2012
@@ -155,7 +155,8 @@ public class PrimitiveValuedEntity exten
// {{ CharProperty
private char charProperty;
- @javax.jdo.annotations.Column(jdbcType="char", length=1)
+ @javax.jdo.annotations.Column(jdbcType="char", length=1) // for hsqldb
+ //@javax.jdo.annotations.Column(jdbcType="char", length=1, sqlType="char") // for mssqlserver
@MemberOrder(sequence = "1")
public char getCharProperty() {
return charProperty;
Modified: incubator/isis/trunk/framework/tck/tck-dom/src/main/java/org/apache/isis/tck/dom/scalars/WrapperValuedEntity.java
URL: http://svn.apache.org/viewvc/incubator/isis/trunk/framework/tck/tck-dom/src/main/java/org/apache/isis/tck/dom/scalars/WrapperValuedEntity.java?rev=1361752&r1=1361751&r2=1361752&view=diff
==============================================================================
--- incubator/isis/trunk/framework/tck/tck-dom/src/main/java/org/apache/isis/tck/dom/scalars/WrapperValuedEntity.java (original)
+++ incubator/isis/trunk/framework/tck/tck-dom/src/main/java/org/apache/isis/tck/dom/scalars/WrapperValuedEntity.java Sun Jul 15 18:46:22 2012
@@ -44,6 +44,7 @@ public class WrapperValuedEntity extends
// {{ StringProperty
private String stringProperty;
+ @javax.jdo.annotations.PrimaryKey
@Optional
@MemberOrder(sequence = "1")
public String getStringProperty() {
@@ -163,6 +164,8 @@ public class WrapperValuedEntity extends
// {{ CharacterProperty (property)
private Character characterProperty;
+ @javax.jdo.annotations.Column(jdbcType="char", length=1) // works for hsqldb
+ //@javax.jdo.annotations.Column(jdbcType="char", length=1, sqlType="char") // works for mssqlserver
@Optional
@MemberOrder(sequence = "1")
public Character getCharacterProperty() {