You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@polygene.apache.org by pa...@apache.org on 2015/07/20 17:32:37 UTC
[1/6] zest-qi4j git commit: Build, minor edits
Repository: zest-qi4j
Updated Branches:
refs/heads/develop 3a2f6c948 -> 9f02f2ca0
Build, minor edits
Project: http://git-wip-us.apache.org/repos/asf/zest-qi4j/repo
Commit: http://git-wip-us.apache.org/repos/asf/zest-qi4j/commit/7b827e6e
Tree: http://git-wip-us.apache.org/repos/asf/zest-qi4j/tree/7b827e6e
Diff: http://git-wip-us.apache.org/repos/asf/zest-qi4j/diff/7b827e6e
Branch: refs/heads/develop
Commit: 7b827e6e0b15e9199249ce0721c145a2a7586472
Parents: 3a2f6c9
Author: Paul Merlin <pa...@apache.org>
Authored: Mon Jul 20 14:21:01 2015 +0200
Committer: Paul Merlin <pa...@apache.org>
Committed: Mon Jul 20 14:21:01 2015 +0200
----------------------------------------------------------------------
.../valueserialization-jackson/build.gradle | 2 +-
.../src/test/resources/logback-test.xml | 34 -------------------
.../valueserialization-orgjson/build.gradle | 2 +-
extensions/valueserialization-stax/build.gradle | 2 +-
.../src/test/resources/logback-test.xml | 35 --------------------
5 files changed, 3 insertions(+), 72 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/zest-qi4j/blob/7b827e6e/extensions/valueserialization-jackson/build.gradle
----------------------------------------------------------------------
diff --git a/extensions/valueserialization-jackson/build.gradle b/extensions/valueserialization-jackson/build.gradle
index f821472..616e01b 100644
--- a/extensions/valueserialization-jackson/build.gradle
+++ b/extensions/valueserialization-jackson/build.gradle
@@ -29,7 +29,7 @@ dependencies {
testCompile project(":org.qi4j.core:org.qi4j.core.testsupport")
testRuntime project(":org.qi4j.core:org.qi4j.core.runtime")
- testRuntime libraries.logback
+ testRuntime libraries.slf4j_simple
}
http://git-wip-us.apache.org/repos/asf/zest-qi4j/blob/7b827e6e/extensions/valueserialization-jackson/src/test/resources/logback-test.xml
----------------------------------------------------------------------
diff --git a/extensions/valueserialization-jackson/src/test/resources/logback-test.xml b/extensions/valueserialization-jackson/src/test/resources/logback-test.xml
deleted file mode 100644
index 22be2c1..0000000
--- a/extensions/valueserialization-jackson/src/test/resources/logback-test.xml
+++ /dev/null
@@ -1,34 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!--
- 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.
--->
-<configuration>
-
- <appender name="stdout" class="ch.qos.logback.core.ConsoleAppender">
- <layout class="ch.qos.logback.classic.PatternLayout">
- <Pattern>%-5level %logger{24} - %msg%n</Pattern>
- </layout>
- </appender>
-
- <root level="info">
- <appender-ref ref="stdout" />
- </root>
-
- <logger name="org.qi4j.spi.value" level="trace"/>
- <logger name="org.qi4j.test.value" level="trace"/>
- <logger name="org.qi4j.stateserializer" level="trace"/>
-
-</configuration>
\ No newline at end of file
http://git-wip-us.apache.org/repos/asf/zest-qi4j/blob/7b827e6e/extensions/valueserialization-orgjson/build.gradle
----------------------------------------------------------------------
diff --git a/extensions/valueserialization-orgjson/build.gradle b/extensions/valueserialization-orgjson/build.gradle
index a06c1de..a919f4e 100644
--- a/extensions/valueserialization-orgjson/build.gradle
+++ b/extensions/valueserialization-orgjson/build.gradle
@@ -28,7 +28,7 @@ dependencies {
testCompile project(":org.qi4j.core:org.qi4j.core.testsupport")
testRuntime project(":org.qi4j.core:org.qi4j.core.runtime")
- testRuntime libraries.logback
+ testRuntime libraries.slf4j_simple
}
http://git-wip-us.apache.org/repos/asf/zest-qi4j/blob/7b827e6e/extensions/valueserialization-stax/build.gradle
----------------------------------------------------------------------
diff --git a/extensions/valueserialization-stax/build.gradle b/extensions/valueserialization-stax/build.gradle
index c89c7a1..ea05136 100644
--- a/extensions/valueserialization-stax/build.gradle
+++ b/extensions/valueserialization-stax/build.gradle
@@ -29,7 +29,7 @@ dependencies {
testCompile project(":org.qi4j.core:org.qi4j.core.testsupport")
testRuntime project(":org.qi4j.core:org.qi4j.core.runtime")
- testRuntime libraries.logback
+ testRuntime libraries.slf4j_simple
}
http://git-wip-us.apache.org/repos/asf/zest-qi4j/blob/7b827e6e/extensions/valueserialization-stax/src/test/resources/logback-test.xml
----------------------------------------------------------------------
diff --git a/extensions/valueserialization-stax/src/test/resources/logback-test.xml b/extensions/valueserialization-stax/src/test/resources/logback-test.xml
deleted file mode 100644
index 199f328..0000000
--- a/extensions/valueserialization-stax/src/test/resources/logback-test.xml
+++ /dev/null
@@ -1,35 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!--
- 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.
--->
-<configuration>
-
- <appender name="stdout" class="ch.qos.logback.core.ConsoleAppender">
- <layout class="ch.qos.logback.classic.PatternLayout">
- <Pattern>%-5level %logger{24} - %msg%n</Pattern>
- </layout>
- </appender>
-
- <root level="info">
- <appender-ref ref="stdout" />
- </root>
-
- <logger name="org.qi4j.spi.value" level="debug"/>
- <logger name="org.qi4j.test.value" level="debug"/>
- <logger name="org.qi4j.valueserializer" level="debug"/>
- <logger name="org.qi4j.valueserialization" level="debug"/>
-
-</configuration>
\ No newline at end of file
[3/6] zest-qi4j git commit: ValueSerialization tests: better DateTime
construction for equality test
Posted by pa...@apache.org.
ValueSerialization tests: better DateTime construction for equality test
Project: http://git-wip-us.apache.org/repos/asf/zest-qi4j/repo
Commit: http://git-wip-us.apache.org/repos/asf/zest-qi4j/commit/eaeba9ca
Tree: http://git-wip-us.apache.org/repos/asf/zest-qi4j/tree/eaeba9ca
Diff: http://git-wip-us.apache.org/repos/asf/zest-qi4j/diff/eaeba9ca
Branch: refs/heads/develop
Commit: eaeba9cac092c059b91afa93ab5989aa44a6bdc6
Parents: 3e3e89d
Author: Paul Merlin <pa...@apache.org>
Authored: Mon Jul 20 16:48:14 2015 +0200
Committer: Paul Merlin <pa...@apache.org>
Committed: Mon Jul 20 16:48:14 2015 +0200
----------------------------------------------------------------------
.../qi4j/test/value/AbstractPlainValueSerializationTest.java | 2 ++
.../test/value/AbstractValueCompositeSerializationTest.java | 5 ++++-
2 files changed, 6 insertions(+), 1 deletion(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/zest-qi4j/blob/eaeba9ca/core/testsupport/src/main/java/org/qi4j/test/value/AbstractPlainValueSerializationTest.java
----------------------------------------------------------------------
diff --git a/core/testsupport/src/main/java/org/qi4j/test/value/AbstractPlainValueSerializationTest.java b/core/testsupport/src/main/java/org/qi4j/test/value/AbstractPlainValueSerializationTest.java
index a99b1f2..218cca6 100644
--- a/core/testsupport/src/main/java/org/qi4j/test/value/AbstractPlainValueSerializationTest.java
+++ b/core/testsupport/src/main/java/org/qi4j/test/value/AbstractPlainValueSerializationTest.java
@@ -190,6 +190,8 @@ public abstract class AbstractPlainValueSerializationTest
@Test
public void givenDateTimeValueWhenSerializingAndDeserializingExpectEquals()
{
+ // We specify the TimeZone explicitely here so that serialized/deserialized is equals
+ // See https://github.com/JodaOrg/joda-time/issues/106
String serialized = valueSerialization.serialize( new DateTime( "2020-03-04T13:24:35", forOffsetHours( 1 ) ) );
assertThat( serialized, equalTo( "2020-03-04T13:24:35.000+01:00" ) );
DateTime deserialized = valueSerialization.deserialize( DateTime.class, serialized );
http://git-wip-us.apache.org/repos/asf/zest-qi4j/blob/eaeba9ca/core/testsupport/src/main/java/org/qi4j/test/value/AbstractValueCompositeSerializationTest.java
----------------------------------------------------------------------
diff --git a/core/testsupport/src/main/java/org/qi4j/test/value/AbstractValueCompositeSerializationTest.java b/core/testsupport/src/main/java/org/qi4j/test/value/AbstractValueCompositeSerializationTest.java
index 4bece76..71135a0 100644
--- a/core/testsupport/src/main/java/org/qi4j/test/value/AbstractValueCompositeSerializationTest.java
+++ b/core/testsupport/src/main/java/org/qi4j/test/value/AbstractValueCompositeSerializationTest.java
@@ -24,6 +24,7 @@ import java.util.Date;
import java.util.List;
import java.util.Map;
import org.joda.time.DateTime;
+import org.joda.time.DateTimeZone;
import org.joda.time.LocalDate;
import org.joda.time.LocalDateTime;
import org.junit.Before;
@@ -152,7 +153,9 @@ public abstract class AbstractValueCompositeSerializationTest
proto.string2().set( "/Foo/bar" );
proto.number().set( 42L );
proto.date().set( new Date() );
- proto.dateTime().set( new DateTime() );
+ // We specify the TimeZone explicitely here so that serialized/deserialized is equals
+ // See https://github.com/JodaOrg/joda-time/issues/106
+ proto.dateTime().set( new DateTime( "2020-03-04T13:24:35", DateTimeZone.forOffsetHours( 1 ) ) );
proto.localDate().set( new LocalDate() );
proto.localDateTime().set( new LocalDateTime() );
proto.entityReference().set( EntityReference.parseEntityReference( "12345" ) );
[4/6] zest-qi4j git commit: ValueSerialization tests: comment
arrayOfValues as it is not supported
Posted by pa...@apache.org.
ValueSerialization tests: comment arrayOfValues as it is not supported
Commented Property<SomeValue[]> usage in
AbstractValueCompositeSerializationTest as arrays are not supported.
Project: http://git-wip-us.apache.org/repos/asf/zest-qi4j/repo
Commit: http://git-wip-us.apache.org/repos/asf/zest-qi4j/commit/bb14d5b0
Tree: http://git-wip-us.apache.org/repos/asf/zest-qi4j/tree/bb14d5b0
Diff: http://git-wip-us.apache.org/repos/asf/zest-qi4j/diff/bb14d5b0
Branch: refs/heads/develop
Commit: bb14d5b07dbc0a3a3a45a11d77d308d2d3129b9f
Parents: eaeba9c
Author: Paul Merlin <pa...@apache.org>
Authored: Mon Jul 20 16:51:42 2015 +0200
Committer: Paul Merlin <pa...@apache.org>
Committed: Mon Jul 20 16:51:42 2015 +0200
----------------------------------------------------------------------
.../qi4j/test/value/AbstractValueCompositeSerializationTest.java | 4 ++--
1 file changed, 2 insertions(+), 2 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/zest-qi4j/blob/bb14d5b0/core/testsupport/src/main/java/org/qi4j/test/value/AbstractValueCompositeSerializationTest.java
----------------------------------------------------------------------
diff --git a/core/testsupport/src/main/java/org/qi4j/test/value/AbstractValueCompositeSerializationTest.java b/core/testsupport/src/main/java/org/qi4j/test/value/AbstractValueCompositeSerializationTest.java
index 71135a0..82947e9 100644
--- a/core/testsupport/src/main/java/org/qi4j/test/value/AbstractValueCompositeSerializationTest.java
+++ b/core/testsupport/src/main/java/org/qi4j/test/value/AbstractValueCompositeSerializationTest.java
@@ -171,7 +171,7 @@ public abstract class AbstractValueCompositeSerializationTest
proto.stringValueMap().get().put( "foo", anotherValue1 );
proto.another().set( anotherValue1 );
- proto.arrayOfValues().set( new AnotherValue[] { anotherValue1, anotherValue2, anotherValue3 } );
+ // proto.arrayOfValues().set( new AnotherValue[] { anotherValue1, anotherValue2, anotherValue3 } );
proto.serializable().set( new SerializableObject() );
proto.foo().set( module.newValue( FooValue.class ) );
proto.fooValue().set( module.newValue( FooValue.class ) );
@@ -261,7 +261,7 @@ public abstract class AbstractValueCompositeSerializationTest
Property<AnotherValue> another();
- Property<AnotherValue[]> arrayOfValues();
+ // Property<AnotherValue[]> arrayOfValues();
@Optional
Property<AnotherValue> anotherNull();
[5/6] zest-qi4j git commit: Update DOAP file to be on par with
https://zest.apache.org/doap.rdf
Posted by pa...@apache.org.
Update DOAP file to be on par with https://zest.apache.org/doap.rdf
Project: http://git-wip-us.apache.org/repos/asf/zest-qi4j/repo
Commit: http://git-wip-us.apache.org/repos/asf/zest-qi4j/commit/06d80149
Tree: http://git-wip-us.apache.org/repos/asf/zest-qi4j/tree/06d80149
Diff: http://git-wip-us.apache.org/repos/asf/zest-qi4j/diff/06d80149
Branch: refs/heads/develop
Commit: 06d80149bf41c0ac4b441350b4056a9dbd5c55af
Parents: bb14d5b
Author: Paul Merlin <pa...@apache.org>
Authored: Mon Jul 20 16:52:49 2015 +0200
Committer: Paul Merlin <pa...@apache.org>
Committed: Mon Jul 20 16:52:49 2015 +0200
----------------------------------------------------------------------
doap.rdf | 38 ++++++++++++++++++--------------------
1 file changed, 18 insertions(+), 20 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/zest-qi4j/blob/06d80149/doap.rdf
----------------------------------------------------------------------
diff --git a/doap.rdf b/doap.rdf
index 5c24e5f..537a6a0 100644
--- a/doap.rdf
+++ b/doap.rdf
@@ -1,4 +1,5 @@
<?xml version="1.0"?>
+<?xml-stylesheet type="text/xsl"?>
<!--
Licensed to the Apache Software Foundation (ASF) under one or more
contributor license agreements. See the NOTICE file distributed with
@@ -15,8 +16,6 @@
See the License for the specific language governing permissions and
limitations under the License.
-->
-
-<?xml-stylesheet type="text/xsl"?>
<rdf:RDF xml:lang="en"
xmlns="http://usefulinc.com/ns/doap#"
xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
@@ -34,29 +33,28 @@
<created>2008-12-17</created>
<license rdf:resource="http://usefulinc.com/doap/licenses/asl20" />
<name>Apache Zest</name>
- <homepage rdf:resource="http://zest.apache.org/" />
- <asfext:pmc rdf:resource="http://zest.apache.org/" />
- <shortdesc>Apache Zest is an open source platform for composite oriented programming.</shortdesc>
- <description>Apache Zest is an open source platform for composite oriented programming. Zest is home for Qi4j,
- the composite oriented programming platform for Java, and Qi4Net a port to the .NET CLR.
- Composite oriented programming allows developers to work with 'fragments', smaller than classes, and 'compose'
- fragments into larger 'composites' which acts like the regular objects. Zest also tackles the enforcement
- of application composition, i.e. composites are declared in modules, modules are contained in layers and access
- between layers are controlled/enforced.
- </description>
- <bug-database rdf:resource="http://issues.apache.org/jira/browse/ZEST" />
- <mailing-list rdf:resource="http://zest.apache.org/community/get_help.html" />
- <download-page rdf:resource="http://zest.apache.org/download.html" />
-
+ <homepage rdf:resource="https://zest.apache.org/" />
+ <asfext:pmc rdf:resource="https://zest.apache.org" />
+ <shortdesc>Apache Zest is a community based effort exploring Composite Oriented Programming for domain centric application development.</shortdesc>
+ <description>Apache Zest is a community based effort exploring Composite Oriented Programming for domain centric application development. This includes evolved concepts from Aspect Oriented Programming, Dependency Injection and Domain Driven Design. Composite Oriented Programming allows developers to work with 'fragments', smaller than classes, and 'compose' fragments into larger 'composites' which acts like the regular objects. Zest also tackles the enforcement of application composition, i.e. composites are declared in modules, modules are contained in layers and access between layers are controlled/enforced. Apache Zestâ„¢ (Java Edition), first Apache Zest sub-project, is an implementation of Composite Oriented Programming, using the standard Java platform, without the use of any pre-processors or new language elements. Everything you know from Java still applies and you can leverage both your experience and toolkits to become more productive with Composite Oriented Programmi
ng today.</description>
+ <bug-database rdf:resource="https://issues.apache.org/jira/browse/ZEST" />
+ <mailing-list rdf:resource="https://www.apache.org/foundation/mailinglists.html" />
+ <download-page rdf:resource="https://zest.apache.org/download.html" />
<programming-language>Java</programming-language>
<programming-language>C#</programming-language>
- <programming-language>JavaScript</programming-language>
- <programming-language>Ruby</programming-language>
<programming-language>Scala</programming-language>
- <category rdf:resource="http://projects.apache.org/category/osgi" />
+ <programming-language>Groovy</programming-language>
+ <programming-language>JavaScript</programming-language>
+ <category rdf:resource="http://projects.apache.org/category/library" />
+ <repository>
+ <SVNRepository>
+ <location rdf:resource="http://svn.apache.org/repos/asf/zest/"/>
+ <browse rdf:resource="http://svn.apache.org/viewcvs.cgi/zest/"/>
+ </SVNRepository>
+ </repository>
<repository>
<GitRepository>
- <location rdf:resource="https://github.com/apache/zest-qi4j.git"/>
+ <location rdf:resource="https://git-wip-us.apache.org/repos/asf/zest-qi4j.git"/>
<browse rdf:resource="https://github.com/apache/zest-qi4j"/>
</GitRepository>
</repository>
[6/6] zest-qi4j git commit: EventSourcing: fix Memory EventStore
backward source & stabilize test
Posted by pa...@apache.org.
EventSourcing: fix Memory EventStore backward source & stabilize test
Project: http://git-wip-us.apache.org/repos/asf/zest-qi4j/repo
Commit: http://git-wip-us.apache.org/repos/asf/zest-qi4j/commit/9f02f2ca
Tree: http://git-wip-us.apache.org/repos/asf/zest-qi4j/tree/9f02f2ca
Diff: http://git-wip-us.apache.org/repos/asf/zest-qi4j/diff/9f02f2ca
Branch: refs/heads/develop
Commit: 9f02f2ca05ff778df7200880dc941dd645576aa3
Parents: 06d8014
Author: Paul Merlin <pa...@apache.org>
Authored: Mon Jul 20 17:32:15 2015 +0200
Committer: Paul Merlin <pa...@apache.org>
Committed: Mon Jul 20 17:32:15 2015 +0200
----------------------------------------------------------------------
.../MemoryApplicationEventStoreService.java | 22 +++++++----------
.../application/ApplicationEventTest.java | 25 ++++++++++++++------
2 files changed, 26 insertions(+), 21 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/zest-qi4j/blob/9f02f2ca/libraries/eventsourcing/src/main/java/org/qi4j/library/eventsourcing/application/source/memory/MemoryApplicationEventStoreService.java
----------------------------------------------------------------------
diff --git a/libraries/eventsourcing/src/main/java/org/qi4j/library/eventsourcing/application/source/memory/MemoryApplicationEventStoreService.java b/libraries/eventsourcing/src/main/java/org/qi4j/library/eventsourcing/application/source/memory/MemoryApplicationEventStoreService.java
index cce6cf4..6fa2bce 100644
--- a/libraries/eventsourcing/src/main/java/org/qi4j/library/eventsourcing/application/source/memory/MemoryApplicationEventStoreService.java
+++ b/libraries/eventsourcing/src/main/java/org/qi4j/library/eventsourcing/application/source/memory/MemoryApplicationEventStoreService.java
@@ -109,25 +109,19 @@ public interface MemoryApplicationEventStoreService
public <ReceiverThrowableType extends Throwable> void sendTo( Receiver<? super TransactionApplicationEvents, ReceiverThrowableType> receiver )
throws ReceiverThrowableType, IOException
{
- ListIterator<TransactionApplicationEvents> iterator = store.listIterator();
+ Iterator<TransactionApplicationEvents> iterator = store.descendingIterator();
- while( iterator.hasNext() )
+ long count = 0;
+
+ while( iterator.hasNext() && count < maxTransactions )
{
TransactionApplicationEvents next = iterator.next();
- if( next.timestamp().get() >= beforeTimestamp )
+ if( next.timestamp().get() < beforeTimestamp )
{
- break;
+ receiver.receive( next );
+ count++;
}
}
-
- long count = 0;
-
- while( iterator.hasPrevious() && count < maxTransactions )
- {
- TransactionApplicationEvents next = iterator.previous();
- receiver.receive( next );
- count++;
- }
}
});
}
@@ -142,7 +136,7 @@ public interface MemoryApplicationEventStoreService
@Override
protected void storeEvents( TransactionApplicationEvents transactionDomain ) throws IOException
{
- store.add(transactionDomain);
+ store.add( transactionDomain );
}
}
}
http://git-wip-us.apache.org/repos/asf/zest-qi4j/blob/9f02f2ca/libraries/eventsourcing/src/test/java/org/qi4j/library/eventsourcing/application/ApplicationEventTest.java
----------------------------------------------------------------------
diff --git a/libraries/eventsourcing/src/test/java/org/qi4j/library/eventsourcing/application/ApplicationEventTest.java b/libraries/eventsourcing/src/test/java/org/qi4j/library/eventsourcing/application/ApplicationEventTest.java
index f566db8..7ccf0a2 100644
--- a/libraries/eventsourcing/src/test/java/org/qi4j/library/eventsourcing/application/ApplicationEventTest.java
+++ b/libraries/eventsourcing/src/test/java/org/qi4j/library/eventsourcing/application/ApplicationEventTest.java
@@ -92,7 +92,7 @@ public class ApplicationEventTest
@Test
- public void testApplicationEvent() throws UnitOfWorkCompletionException, IOException
+ public void testApplicationEvent() throws Exception
{
Users users = module.newTransient( Users.class );
@@ -107,20 +107,23 @@ public class ApplicationEventTest
UnitOfWork uow1 = module.newUnitOfWork( UsecaseBuilder.newUsecase( "User signup" ) );
uow1.setMetaInfo( administratorPrincipal );
- users.signup( null, "user1", Arrays.asList( "news1", "news2" ) );
+ users.signup( null, "user1", Arrays.asList( "news-a", "news-b" ) );
uow1.complete();
+ Thread.sleep( 1 ); // For UoWs not getting the same `currentTime`
+
UnitOfWork uow2 = module.newUnitOfWork();
uow2.setMetaInfo( administratorPrincipal );
users.signup( null, "user2", Collections.EMPTY_LIST );
uow2.complete();
+ Thread.sleep( 1 ); // For UoWs not getting the same `currentTime`
+
UnitOfWork uow3 = module.newUnitOfWork();
uow3.setMetaInfo( administratorPrincipal );
- users.signup( null, "user3", Collections.singletonList( "news1" ) );
+ users.signup( null, "user3", Collections.singletonList( "news-c" ) );
uow3.complete();
-
// receive events from uow2 and later forwards
EventsInbox afterInbox = new EventsInbox();
eventSource.transactionsAfter( uow2.currentTime() - 1, Integer.MAX_VALUE ).transferTo( afterInbox );
@@ -128,24 +131,32 @@ public class ApplicationEventTest
assertEquals( 2, afterInbox.getEvents().size() );
ApplicationEvent signupEvent2 = afterInbox.getEvents().get( 0 ).events().get().get( 0 );
+ ApplicationEvent signupEvent3 = afterInbox.getEvents().get( 1 ).events().get().get( 0 );
assertEquals( "signup", signupEvent2.name().get() );
assertEquals( "user2", ApplicationEventParameters.getParameter( signupEvent2, "param1" ) );
assertEquals( "[]", ApplicationEventParameters.getParameter( signupEvent2, "param2" ) );
+ assertEquals( "signup", signupEvent3.name().get() );
+ assertEquals( "user3", ApplicationEventParameters.getParameter( signupEvent3, "param1" ) );
+ assertEquals( "[\"news-c\"]", ApplicationEventParameters.getParameter( signupEvent3, "param2" ) );
+
// receive events from uow2 backwards
EventsInbox beforeInbox = new EventsInbox();
eventSource.transactionsBefore( uow3.currentTime(), Integer.MAX_VALUE ).transferTo( beforeInbox );
assertEquals( 2, beforeInbox.getEvents().size() );
+ signupEvent2 = beforeInbox.getEvents().get( 0 ).events().get().get( 0 );
ApplicationEvent signupEvent1 = beforeInbox.getEvents().get( 1 ).events().get().get( 0 );
+ assertEquals( "signup", signupEvent2.name().get() );
+ assertEquals( "user2", ApplicationEventParameters.getParameter( signupEvent2, "param1" ) );
+ assertEquals( "[]", ApplicationEventParameters.getParameter( signupEvent2, "param2" ) );
+
assertEquals( "signup", signupEvent1.name().get());
assertEquals( "user1", ApplicationEventParameters.getParameter( signupEvent1, "param1" ) );
- assertEquals( "[\"news1\",\"news2\"]", ApplicationEventParameters.getParameter( signupEvent1, "param2" ) );
-
-
+ assertEquals( "[\"news-a\",\"news-b\"]", ApplicationEventParameters.getParameter( signupEvent1, "param2" ) );
}
static class EventsInbox implements Output<TransactionApplicationEvents, RuntimeException>
[2/6] zest-qi4j git commit: ZEST-69 Fix and assert NamedAssociation
equals/hashcode & serialization
Posted by pa...@apache.org.
ZEST-69 Fix and assert NamedAssociation equals/hashcode & serialization
Project: http://git-wip-us.apache.org/repos/asf/zest-qi4j/repo
Commit: http://git-wip-us.apache.org/repos/asf/zest-qi4j/commit/3e3e89d8
Tree: http://git-wip-us.apache.org/repos/asf/zest-qi4j/tree/3e3e89d8
Diff: http://git-wip-us.apache.org/repos/asf/zest-qi4j/diff/3e3e89d8
Branch: refs/heads/develop
Commit: 3e3e89d824772095925cbc89a1868abbdadb2bd6
Parents: 7b827e6
Author: Paul Merlin <pa...@apache.org>
Authored: Mon Jul 20 14:31:27 2015 +0200
Committer: Paul Merlin <pa...@apache.org>
Committed: Mon Jul 20 16:44:46 2015 +0200
----------------------------------------------------------------------
.../runtime/entity/EntityStateInstance.java | 2 +-
.../value/NamedAssociationValueState.java | 21 ------
.../org/qi4j/runtime/value/ValueInstance.java | 12 ++++
.../qi4j/runtime/value/ValueStateInstance.java | 5 +-
.../org/qi4j/runtime/value/ValueStateModel.java | 2 +-
.../association/AssociationEqualityTest.java | 75 ++++++++++++++++++--
.../qi4j/spi/value/ValueSerializerAdapter.java | 2 +-
...AbstractValueCompositeSerializationTest.java | 14 +++-
.../stax/StaxValueDeserializer.java | 16 +++--
9 files changed, 110 insertions(+), 39 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/zest-qi4j/blob/3e3e89d8/core/runtime/src/main/java/org/qi4j/runtime/entity/EntityStateInstance.java
----------------------------------------------------------------------
diff --git a/core/runtime/src/main/java/org/qi4j/runtime/entity/EntityStateInstance.java b/core/runtime/src/main/java/org/qi4j/runtime/entity/EntityStateInstance.java
index d44a3f9..505509b 100644
--- a/core/runtime/src/main/java/org/qi4j/runtime/entity/EntityStateInstance.java
+++ b/core/runtime/src/main/java/org/qi4j/runtime/entity/EntityStateInstance.java
@@ -248,7 +248,7 @@ public final class EntityStateInstance
constraints.checkConstraints( association.get() );
}
- // TODO Should ManyAssociations be checked too?
+ // TODO Should ManyAssociations and NamedAssociations be checked too?
}
private Map<AccessibleObject, Object> state()
http://git-wip-us.apache.org/repos/asf/zest-qi4j/blob/3e3e89d8/core/runtime/src/main/java/org/qi4j/runtime/value/NamedAssociationValueState.java
----------------------------------------------------------------------
diff --git a/core/runtime/src/main/java/org/qi4j/runtime/value/NamedAssociationValueState.java b/core/runtime/src/main/java/org/qi4j/runtime/value/NamedAssociationValueState.java
index 694be18..4f3030d 100644
--- a/core/runtime/src/main/java/org/qi4j/runtime/value/NamedAssociationValueState.java
+++ b/core/runtime/src/main/java/org/qi4j/runtime/value/NamedAssociationValueState.java
@@ -81,25 +81,4 @@ public class NamedAssociationValueState
{
return references.keySet().iterator();
}
-
- @Override
- public boolean equals( Object o )
- {
- if( this == o )
- {
- return true;
- }
- if( o == null || getClass() != o.getClass() )
- {
- return false;
- }
- NamedAssociationValueState strings = (NamedAssociationValueState) o;
- return references.equals( strings.references );
- }
-
- @Override
- public int hashCode()
- {
- return references.hashCode();
- }
}
http://git-wip-us.apache.org/repos/asf/zest-qi4j/blob/3e3e89d8/core/runtime/src/main/java/org/qi4j/runtime/value/ValueInstance.java
----------------------------------------------------------------------
diff --git a/core/runtime/src/main/java/org/qi4j/runtime/value/ValueInstance.java b/core/runtime/src/main/java/org/qi4j/runtime/value/ValueInstance.java
index fc7c95e..3b11c04 100644
--- a/core/runtime/src/main/java/org/qi4j/runtime/value/ValueInstance.java
+++ b/core/runtime/src/main/java/org/qi4j/runtime/value/ValueInstance.java
@@ -21,6 +21,7 @@ import org.qi4j.api.composite.CompositeInstance;
import org.qi4j.api.value.ValueComposite;
import org.qi4j.runtime.association.AssociationModel;
import org.qi4j.runtime.association.ManyAssociationModel;
+import org.qi4j.runtime.association.NamedAssociationModel;
import org.qi4j.runtime.composite.MixinsInstance;
import org.qi4j.runtime.composite.TransientInstance;
import org.qi4j.runtime.property.PropertyInstance;
@@ -124,6 +125,12 @@ public final class ValueInstance
state().manyAssociationFor( associationDescriptor.accessor() )
.setAssociationInfo( associationDescriptor.getBuilderInfo() );
}
+
+ for( NamedAssociationModel associationDescriptor : descriptor().state().namedAssociations() )
+ {
+ state().namedAssociationFor( associationDescriptor.accessor() )
+ .setAssociationInfo( associationDescriptor.getBuilderInfo() );
+ }
}
/**
@@ -148,6 +155,11 @@ public final class ValueInstance
{
state().manyAssociationFor( associationDescriptor.accessor() ).setAssociationInfo( associationDescriptor );
}
+
+ for( NamedAssociationModel associationDescriptor : descriptor().state().namedAssociations() )
+ {
+ state().namedAssociationFor( associationDescriptor.accessor() ).setAssociationInfo( associationDescriptor );
+ }
}
/**
http://git-wip-us.apache.org/repos/asf/zest-qi4j/blob/3e3e89d8/core/runtime/src/main/java/org/qi4j/runtime/value/ValueStateInstance.java
----------------------------------------------------------------------
diff --git a/core/runtime/src/main/java/org/qi4j/runtime/value/ValueStateInstance.java b/core/runtime/src/main/java/org/qi4j/runtime/value/ValueStateInstance.java
index 3d41470..c66734f 100644
--- a/core/runtime/src/main/java/org/qi4j/runtime/value/ValueStateInstance.java
+++ b/core/runtime/src/main/java/org/qi4j/runtime/value/ValueStateInstance.java
@@ -25,7 +25,6 @@ import java.util.List;
import java.util.Map;
import org.qi4j.api.association.AssociationDescriptor;
import org.qi4j.api.association.AssociationStateHolder;
-import org.qi4j.api.association.NamedAssociation;
import org.qi4j.api.entity.EntityReference;
import org.qi4j.api.property.PropertyDescriptor;
import org.qi4j.runtime.association.AssociationInfo;
@@ -181,7 +180,7 @@ public final class ValueStateInstance
@Override
@SuppressWarnings( "unchecked" )
- public <T> NamedAssociation<T> namedAssociationFor( AccessibleObject accessor )
+ public <T> NamedAssociationInstance<T> namedAssociationFor( AccessibleObject accessor )
{
NamedAssociationInstance<T> namedAssociation = (NamedAssociationInstance<T>) namedAssociations.get( accessor );
@@ -194,7 +193,7 @@ public final class ValueStateInstance
}
@Override
- public Iterable<? extends NamedAssociation<?>> allNamedAssociations()
+ public Iterable<? extends NamedAssociationInstance<?>> allNamedAssociations()
{
return namedAssociations.values();
}
http://git-wip-us.apache.org/repos/asf/zest-qi4j/blob/3e3e89d8/core/runtime/src/main/java/org/qi4j/runtime/value/ValueStateModel.java
----------------------------------------------------------------------
diff --git a/core/runtime/src/main/java/org/qi4j/runtime/value/ValueStateModel.java b/core/runtime/src/main/java/org/qi4j/runtime/value/ValueStateModel.java
index d3f8060..76e4bb8 100644
--- a/core/runtime/src/main/java/org/qi4j/runtime/value/ValueStateModel.java
+++ b/core/runtime/src/main/java/org/qi4j/runtime/value/ValueStateModel.java
@@ -105,7 +105,7 @@ public final class ValueStateModel
}
@Override
- public Iterable<? extends AssociationDescriptor> namedAssociations()
+ public Iterable<NamedAssociationModel> namedAssociations()
{
return namedAssociationsModel.namedAssociations();
}
http://git-wip-us.apache.org/repos/asf/zest-qi4j/blob/3e3e89d8/core/runtime/src/test/java/org/qi4j/runtime/association/AssociationEqualityTest.java
----------------------------------------------------------------------
diff --git a/core/runtime/src/test/java/org/qi4j/runtime/association/AssociationEqualityTest.java b/core/runtime/src/test/java/org/qi4j/runtime/association/AssociationEqualityTest.java
index 1c3852e..7aabc8c 100644
--- a/core/runtime/src/test/java/org/qi4j/runtime/association/AssociationEqualityTest.java
+++ b/core/runtime/src/test/java/org/qi4j/runtime/association/AssociationEqualityTest.java
@@ -20,6 +20,7 @@ import org.junit.Test;
import org.qi4j.api.association.Association;
import org.qi4j.api.association.AssociationDescriptor;
import org.qi4j.api.association.ManyAssociation;
+import org.qi4j.api.association.NamedAssociation;
import org.qi4j.api.common.Optional;
import org.qi4j.api.unitofwork.UnitOfWork;
import org.qi4j.api.value.ValueBuilder;
@@ -33,7 +34,7 @@ import static org.hamcrest.CoreMatchers.not;
import static org.junit.Assert.assertThat;
/**
- * Assert that Association and ManyAssociation equals/hashcode methods combine AssociationDescriptor and State.
+ * Assert that Association, ManyAssociation and NamedAssociation equals/hashcode methods combine AssociationDescriptor and State.
*/
public class AssociationEqualityTest
extends AbstractQi4jTest
@@ -62,6 +63,8 @@ public class AssociationEqualityTest
Association<AnEntity> anEntity();
ManyAssociation<AnEntity> manyEntities();
+
+ NamedAssociation<AnEntity> namedEntities();
}
public interface OtherWithAssociations
@@ -71,6 +74,8 @@ public class AssociationEqualityTest
Association<AnEntity> anEntity();
ManyAssociation<AnEntity> manyEntities();
+
+ NamedAssociation<AnEntity> namedEntities();
}
//
@@ -87,10 +92,12 @@ public class AssociationEqualityTest
SomeWithAssociations some = buildSomeWithAssociation( anEntity );
AssociationDescriptor someAssocDesc = qi4j.api().associationDescriptorFor( some.anEntity() );
AssociationDescriptor someManyAssocDesc = qi4j.api().associationDescriptorFor( some.manyEntities() );
+ AssociationDescriptor someNamedAssocDesc = qi4j.api().associationDescriptorFor( some.namedEntities() );
SomeWithAssociations some2 = buildSomeWithAssociation( anEntity );
AssociationDescriptor some2AssocDesc = qi4j.api().associationDescriptorFor( some2.anEntity() );
AssociationDescriptor some2ManyAssocDesc = qi4j.api().associationDescriptorFor( some2.manyEntities() );
+ AssociationDescriptor some2NamedAssocDesc = qi4j.api().associationDescriptorFor( some2.namedEntities() );
assertThat( "AssociationDescriptor equal",
someAssocDesc,
@@ -104,6 +111,12 @@ public class AssociationEqualityTest
assertThat( "ManyAssociationDescriptor hashcode equal",
someManyAssocDesc.hashCode(),
equalTo( some2ManyAssocDesc.hashCode() ) );
+ assertThat( "NamedAssociationDescriptor equal",
+ someNamedAssocDesc,
+ equalTo( some2NamedAssocDesc ) );
+ assertThat( "NamedAssociationDescriptor hashcode equal",
+ someNamedAssocDesc.hashCode(),
+ equalTo( some2NamedAssocDesc.hashCode() ) );
}
finally
{
@@ -120,10 +133,12 @@ public class AssociationEqualityTest
SomeWithAssociations some = buildSomeWithAssociation( uow.newEntity( AnEntity.class ) );
AssociationDescriptor someAssocDesc = qi4j.api().associationDescriptorFor( some.anEntity() );
AssociationDescriptor someManyAssocDesc = qi4j.api().associationDescriptorFor( some.manyEntities() );
+ AssociationDescriptor someNamedAssocDesc = qi4j.api().associationDescriptorFor( some.namedEntities() );
SomeWithAssociations some2 = buildSomeWithAssociation( uow.newEntity( AnEntity.class ) );
AssociationDescriptor some2AssocDesc = qi4j.api().associationDescriptorFor( some2.anEntity() );
AssociationDescriptor some2ManyAssocDesc = qi4j.api().associationDescriptorFor( some2.manyEntities() );
+ AssociationDescriptor some2NamedAssocDesc = qi4j.api().associationDescriptorFor( some2.namedEntities() );
assertThat( "AssociationDescriptor equal",
someAssocDesc,
@@ -137,6 +152,12 @@ public class AssociationEqualityTest
assertThat( "ManyAssociationDescriptor hashcode equal",
someManyAssocDesc.hashCode(),
equalTo( some2ManyAssocDesc.hashCode() ) );
+ assertThat( "NamedAssociationDescriptor equal",
+ someNamedAssocDesc,
+ equalTo( some2NamedAssocDesc ) );
+ assertThat( "NamedAssociationDescriptor hashcode equal",
+ someNamedAssocDesc.hashCode(),
+ equalTo( some2NamedAssocDesc.hashCode() ) );
}
finally
{
@@ -155,10 +176,12 @@ public class AssociationEqualityTest
SomeWithAssociations some = buildSomeWithAssociation( anEntity );
AssociationDescriptor someAssocDesc = qi4j.api().associationDescriptorFor( some.anEntity() );
AssociationDescriptor someManyAssocDesc = qi4j.api().associationDescriptorFor( some.manyEntities() );
+ AssociationDescriptor someNamedAssocDesc = qi4j.api().associationDescriptorFor( some.namedEntities() );
OtherWithAssociations other = buildOtherWithAssociation( anEntity );
AssociationDescriptor otherAssocDesc = qi4j.api().associationDescriptorFor( other.anEntity() );
- AssociationDescriptor some2ManyAssocDesc = qi4j.api().associationDescriptorFor( other.manyEntities() );
+ AssociationDescriptor otherManyAssocDesc = qi4j.api().associationDescriptorFor( other.manyEntities() );
+ AssociationDescriptor otherNamedAssocDesc = qi4j.api().associationDescriptorFor( other.namedEntities() );
assertThat( "AssociationDescriptor not equal",
someAssocDesc,
@@ -168,10 +191,16 @@ public class AssociationEqualityTest
not( equalTo( otherAssocDesc.hashCode() ) ) );
assertThat( "ManyAssociationDescriptor not equal",
someManyAssocDesc,
- not( equalTo( some2ManyAssocDesc ) ) );
+ not( equalTo( otherManyAssocDesc ) ) );
assertThat( "ManyAssociationDescriptor hashcode not equal",
someManyAssocDesc.hashCode(),
- not( equalTo( some2ManyAssocDesc.hashCode() ) ) );
+ not( equalTo( otherManyAssocDesc.hashCode() ) ) );
+ assertThat( "NamedAssociationDescriptor not equal",
+ someNamedAssocDesc,
+ not( equalTo( otherNamedAssocDesc ) ) );
+ assertThat( "NamedAssociationDescriptor hashcode not equal",
+ someNamedAssocDesc.hashCode(),
+ not( equalTo( otherNamedAssocDesc.hashCode() ) ) );
}
finally
{
@@ -203,6 +232,12 @@ public class AssociationEqualityTest
assertThat( "ManyAssociation State hashcode not equal",
some.manyEntities().toList().hashCode(),
not( equalTo( some2.manyEntities().toList().hashCode() ) ) );
+ assertThat( "NamedAssociation State not equal",
+ some.namedEntities().toMap(),
+ not( equalTo( some2.namedEntities().toMap() ) ) );
+ assertThat( "NamedAssociation State hashcode not equal",
+ some.namedEntities().toMap().hashCode(),
+ not( equalTo( some2.namedEntities().toMap().hashCode() ) ) );
}
finally
{
@@ -233,6 +268,12 @@ public class AssociationEqualityTest
assertThat( "ManyAssociation State hashcode equal",
some.manyEntities().toList().hashCode(),
equalTo( other.manyEntities().toList().hashCode() ) );
+ assertThat( "NamedAssociation State equal",
+ some.namedEntities().toMap(),
+ equalTo( other.namedEntities().toMap() ) );
+ assertThat( "NamedAssociation State hashcode equal",
+ some.namedEntities().toMap().hashCode(),
+ equalTo( other.namedEntities().toMap().hashCode() ) );
}
finally
{
@@ -266,6 +307,12 @@ public class AssociationEqualityTest
assertThat( "ManyAssociation hashcode equal",
some.manyEntities().hashCode(),
equalTo( some2.manyEntities().hashCode() ) );
+ assertThat( "NamedAssociation equal",
+ some.namedEntities(),
+ equalTo( some2.namedEntities() ) );
+ assertThat( "NamedAssociation hashcode equal",
+ some.namedEntities().hashCode(),
+ equalTo( some2.namedEntities().hashCode() ) );
}
finally
{
@@ -294,6 +341,12 @@ public class AssociationEqualityTest
assertThat( "ManyAssociation hashcode not equal",
some.manyEntities().hashCode(),
not( equalTo( some2.manyEntities().hashCode() ) ) );
+ assertThat( "NamedAssociation not equal",
+ some.namedEntities(),
+ not( equalTo( some2.namedEntities() ) ) );
+ assertThat( "NamedAssociation hashcode not equal",
+ some.namedEntities().hashCode(),
+ not( equalTo( some2.namedEntities().hashCode() ) ) );
}
finally
{
@@ -324,6 +377,12 @@ public class AssociationEqualityTest
assertThat( "ManyAssociation hashcode not equal",
some.manyEntities().hashCode(),
not( equalTo( other.manyEntities().hashCode() ) ) );
+ assertThat( "NamedAssociation not equal",
+ some.namedEntities(),
+ not( equalTo( other.namedEntities() ) ) );
+ assertThat( "NamedAssociation hashcode not equal",
+ some.namedEntities().hashCode(),
+ not( equalTo( other.namedEntities().hashCode() ) ) );
}
finally
{
@@ -352,6 +411,12 @@ public class AssociationEqualityTest
assertThat( "ManyAssociation hashcode not equal",
some.manyEntities().hashCode(),
not( equalTo( other.manyEntities().hashCode() ) ) );
+ assertThat( "NamedAssociation not equal",
+ some.namedEntities(),
+ not( equalTo( other.namedEntities() ) ) );
+ assertThat( "NamedAssociation hashcode not equal",
+ some.namedEntities().hashCode(),
+ not( equalTo( other.namedEntities().hashCode() ) ) );
}
finally
{
@@ -369,6 +434,7 @@ public class AssociationEqualityTest
ValueBuilder<SomeWithAssociations> builder = module.newValueBuilder( SomeWithAssociations.class );
builder.prototype().anEntity().set( associated );
builder.prototype().manyEntities().add( associated );
+ builder.prototype().namedEntities().put( "someKey", associated );
some = builder.newInstance();
}
return some;
@@ -381,6 +447,7 @@ public class AssociationEqualityTest
ValueBuilder<OtherWithAssociations> builder = module.newValueBuilder( OtherWithAssociations.class );
builder.prototype().anEntity().set( associated );
builder.prototype().manyEntities().add( associated );
+ builder.prototype().namedEntities().put( "someKey", associated );
some = builder.newInstance();
}
return some;
http://git-wip-us.apache.org/repos/asf/zest-qi4j/blob/3e3e89d8/core/spi/src/main/java/org/qi4j/spi/value/ValueSerializerAdapter.java
----------------------------------------------------------------------
diff --git a/core/spi/src/main/java/org/qi4j/spi/value/ValueSerializerAdapter.java b/core/spi/src/main/java/org/qi4j/spi/value/ValueSerializerAdapter.java
index 004745a..6f17569 100644
--- a/core/spi/src/main/java/org/qi4j/spi/value/ValueSerializerAdapter.java
+++ b/core/spi/src/main/java/org/qi4j/spi/value/ValueSerializerAdapter.java
@@ -479,7 +479,7 @@ public abstract class ValueSerializerAdapter<OutputType>
onFieldStart( output, name );
onValueStart( output );
EntityReference ref = namedAssociation.referenceOf( name );
- onValue( output, ( (Identity) namedAssociation.get( name ) ).identity().get() );
+ onValue( output, ref.identity() );
onValueEnd( output );
onFieldEnd( output );
}
http://git-wip-us.apache.org/repos/asf/zest-qi4j/blob/3e3e89d8/core/testsupport/src/main/java/org/qi4j/test/value/AbstractValueCompositeSerializationTest.java
----------------------------------------------------------------------
diff --git a/core/testsupport/src/main/java/org/qi4j/test/value/AbstractValueCompositeSerializationTest.java b/core/testsupport/src/main/java/org/qi4j/test/value/AbstractValueCompositeSerializationTest.java
index 01d2f51..4bece76 100644
--- a/core/testsupport/src/main/java/org/qi4j/test/value/AbstractValueCompositeSerializationTest.java
+++ b/core/testsupport/src/main/java/org/qi4j/test/value/AbstractValueCompositeSerializationTest.java
@@ -32,6 +32,7 @@ import org.junit.Test;
import org.junit.rules.TestName;
import org.qi4j.api.association.Association;
import org.qi4j.api.association.ManyAssociation;
+import org.qi4j.api.association.NamedAssociation;
import org.qi4j.api.common.Optional;
import org.qi4j.api.common.UseDefaults;
import org.qi4j.api.common.Visibility;
@@ -58,7 +59,6 @@ import static org.junit.Assert.assertThat;
/**
* Assert that ValueSerialization behaviour on ValueComposites is correct.
*/
-// TODO Assert Association, ManyAssociation and NamedAssociation serialization behaviour!
// TODO Assert Arrays behaviour!
// TODO Assert Generics behaviour!
public abstract class AbstractValueCompositeSerializationTest
@@ -105,7 +105,7 @@ public abstract class AbstractValueCompositeSerializationTest
SomeValue some2 = module.newValueFromSerializedState( SomeValue.class, stateString );
assertThat( "Same value toString", some.toString(), equalTo( some2.toString() ) );
-// assertThat( "Same value", some, equalTo( some2 ) );
+ assertThat( "Same value", some, equalTo( some2 ) );
assertThat( "Same JSON value toString", stateString, equalTo( some2.toString() ) );
assertThat( "Same JSON value", some.customFoo().get() instanceof CustomFooValue, is( true ) );
assertThat( "Same JSON value explicit", some.customFooValue().get() instanceof CustomFooValue, is( true ) );
@@ -193,6 +193,10 @@ public abstract class AbstractValueCompositeSerializationTest
proto.barManyAssociation().add( buildBarEntity( "bazar TWO in barManyAssociation" ) );
proto.barEntityManyAssociation().add( buildBarEntity( "bazar ONE in barEntityManyAssociation" ) );
proto.barEntityManyAssociation().add( buildBarEntity( "bazar TWO in barEntityManyAssociation" ) );
+ proto.barNamedAssociation().put( "bazar", buildBarEntity( "bazar in barNamedAssociation" ) );
+ proto.barNamedAssociation().put( "cathedral", buildBarEntity( "cathedral in barNamedAssociation" ) );
+ proto.barEntityNamedAssociation().put( "bazar", buildBarEntity( "bazar in barEntityNamedAssociation" ) );
+ proto.barEntityNamedAssociation().put( "cathedral", buildBarEntity( "cathedral in barEntityNamedAssociation" ) );
return builder.newInstance();
}
@@ -309,6 +313,12 @@ public abstract class AbstractValueCompositeSerializationTest
ManyAssociation<Bar> barManyAssociation();
ManyAssociation<BarEntity> barEntityManyAssociation();
+
+ NamedAssociation<Bar> barNamedAssociationEmpty();
+
+ NamedAssociation<Bar> barNamedAssociation();
+
+ NamedAssociation<BarEntity> barEntityNamedAssociation();
}
public interface SpecificCollection
http://git-wip-us.apache.org/repos/asf/zest-qi4j/blob/3e3e89d8/extensions/valueserialization-stax/src/main/java/org/qi4j/valueserialization/stax/StaxValueDeserializer.java
----------------------------------------------------------------------
diff --git a/extensions/valueserialization-stax/src/main/java/org/qi4j/valueserialization/stax/StaxValueDeserializer.java b/extensions/valueserialization-stax/src/main/java/org/qi4j/valueserialization/stax/StaxValueDeserializer.java
index 2051eb7..6c61ffb 100644
--- a/extensions/valueserialization-stax/src/main/java/org/qi4j/valueserialization/stax/StaxValueDeserializer.java
+++ b/extensions/valueserialization-stax/src/main/java/org/qi4j/valueserialization/stax/StaxValueDeserializer.java
@@ -432,14 +432,18 @@ public class StaxValueDeserializer
{
return;
}
- NodeList entriesNodes = inputNode.getChildNodes();
- for( int idx = 0; idx < entriesNodes.getLength(); idx++ )
+ if( !"object".equals( inputNode.getLocalName() ) )
{
- Node entryNode = entriesNodes.item( idx );
- String key = ((Element) entryNode).getTagName();
- V value = getObjectFieldValue( entryNode, "value", valueDeserializer );
- if( key != null )
+ throw new ValueSerializationException( "Expected an <object/> but got " + inputNode );
+ }
+ NodeList fieldsNodes = inputNode.getChildNodes();
+ for( int idx = 0; idx < fieldsNodes.getLength(); idx++ )
+ {
+ Node fieldNode = fieldsNodes.item( idx );
+ String key = getDirectChildNode( fieldNode, "name" ).getTextContent();
+ if( key != null && key.length() > 0 )
{
+ V value = getObjectFieldValue( inputNode, key, valueDeserializer );
map.put( key, value );
}
}