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() {