-
Notifications
You must be signed in to change notification settings - Fork 17
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
MappingException when querying object with List<Enum> using Embedded (#2
- Loading branch information
1 parent
d8e6a35
commit 60025a7
Showing
12 changed files
with
502 additions
and
0 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,14 @@ | ||
# Repro project for issue-359 | ||
|
||
## Configuring | ||
|
||
First, check out and update the versions in the `pom.xml` to match yours | ||
|
||
- the `neo4j-ogm.version` | ||
|
||
You can also override the version of Neo4j java drivers. | ||
|
||
## Logging | ||
|
||
This project contains a `logback-test.xml` file in `src/test/resources` that you | ||
may wish to configure to emit more detailed logging. |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,67 @@ | ||
<?xml version="1.0" encoding="UTF-8"?> | ||
<project xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://maven.apache.org/POM/4.0.0" | ||
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"> | ||
<modelVersion>4.0.0</modelVersion> | ||
|
||
<artifactId>issue-359</artifactId> | ||
<version>1.0.0-SNAPSHOT</version> | ||
<packaging>jar</packaging> | ||
|
||
<name>Neo4j OGM 2.x Test Case Template</name> | ||
<description>Use this template to report bugs with Neo4j OGM</description> | ||
|
||
<parent> | ||
<groupId>org.neo4j.ogm.testcasetemplate</groupId> | ||
<artifactId>testcasetemplate</artifactId> | ||
<version>1.0.0-SNAPSHOT</version> | ||
<relativePath>../pom.xml</relativePath> | ||
</parent> | ||
|
||
<properties> | ||
|
||
<!-- change with your versions here --> | ||
<neo4j-ogm.version>2.1.2</neo4j-ogm.version> | ||
|
||
<!-- if overriding the driver version, also uncomment the driver dependency below --> | ||
<!--<neo4j-java-driver.version>1.2.2</neo4j-java-driver.version>--> | ||
</properties> | ||
|
||
<dependencies> | ||
<!--<dependency>--> | ||
<!--<groupId>org.neo4j.driver</groupId>--> | ||
<!--<artifactId>neo4j-java-driver</artifactId>--> | ||
<!--<version>${neo4j-java-driver.version}</version>--> | ||
<!--</dependency>--> | ||
<dependency> | ||
<groupId>org.neo4j</groupId> | ||
<artifactId>neo4j-ogm-core</artifactId> | ||
<version>2.1.2</version> | ||
</dependency> | ||
<dependency> | ||
<groupId>org.neo4j</groupId> | ||
<artifactId>neo4j-ogm-embedded-driver</artifactId> | ||
<version>2.1.2</version> | ||
<scope>runtime</scope> | ||
</dependency> | ||
<dependency> | ||
<groupId>org.neo4j</groupId> | ||
<artifactId>neo4j-ogm-http-driver</artifactId> | ||
<version>2.1.2</version> | ||
<scope>runtime</scope> | ||
</dependency> | ||
<dependency> | ||
<groupId>org.neo4j</groupId> | ||
<artifactId>neo4j-ogm-test</artifactId> | ||
<version>2.1.2</version> | ||
<scope>test</scope> | ||
<exclusions> <!-- necessary to get logs in tests --> | ||
<exclusion> | ||
<groupId>org.slf4j</groupId> | ||
<artifactId>slf4j-nop</artifactId> | ||
</exclusion> | ||
</exclusions> | ||
</dependency> | ||
|
||
</dependencies> | ||
|
||
</project> |
23 changes: 23 additions & 0 deletions
23
issue-359/src/main/java/org/neo4j/ogm/test/domain/Role.java
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,23 @@ | ||
package org.neo4j.ogm.test.domain; | ||
|
||
/** | ||
* @author jarhanco | ||
*/ | ||
public enum Role { | ||
MANAGER("manager"), | ||
ARCHITECT("architect"), | ||
DEV("dev"), | ||
INTERN("intern"); | ||
|
||
private String value; | ||
|
||
Role(String value) { | ||
this.value = value; | ||
} | ||
|
||
public String getValue() { | ||
return this.value; | ||
} | ||
|
||
|
||
} |
55 changes: 55 additions & 0 deletions
55
issue-359/src/main/java/org/neo4j/ogm/test/domain/User.java
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,55 @@ | ||
package org.neo4j.ogm.test.domain; | ||
|
||
import org.neo4j.ogm.annotation.GraphId; | ||
import org.neo4j.ogm.annotation.NodeEntity; | ||
|
||
import java.util.List; | ||
|
||
@NodeEntity | ||
public class User { | ||
|
||
@GraphId | ||
private Long id; | ||
|
||
private String firstName; | ||
|
||
private String lastName; | ||
|
||
private List<Role> roles; | ||
|
||
private String email; | ||
|
||
public User() { | ||
// required by | ||
} | ||
|
||
public User(String email, String firstName, String lastName) { | ||
this.firstName = firstName; | ||
this.lastName = lastName; | ||
this.email = email; | ||
} | ||
|
||
public Long getId() { | ||
return this.id; | ||
} | ||
|
||
public String getFirstName() { | ||
return firstName; | ||
} | ||
|
||
public String getLastName() { | ||
return lastName; | ||
} | ||
|
||
public String getEmail() { | ||
return email; | ||
} | ||
|
||
public List<Role> getRoles() { | ||
return roles; | ||
} | ||
|
||
public void setRoles(List<Role> roles) { | ||
this.roles = roles; | ||
} | ||
} |
61 changes: 61 additions & 0 deletions
61
issue-359/src/test/java/org/neo4j/ogm/test/OgmTestCase.java
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,61 @@ | ||
package org.neo4j.ogm.test; | ||
|
||
import org.junit.Before; | ||
import org.junit.Rule; | ||
import org.junit.Test; | ||
import org.neo4j.harness.junit.Neo4jRule; | ||
import org.neo4j.ogm.model.Result; | ||
import org.neo4j.ogm.session.Session; | ||
import org.neo4j.ogm.session.SessionFactory; | ||
import org.neo4j.ogm.test.domain.Role; | ||
import org.neo4j.ogm.test.domain.User; | ||
|
||
import java.util.Arrays; | ||
import java.util.Collection; | ||
import java.util.Collections; | ||
|
||
import static org.assertj.core.api.Assertions.assertThat; | ||
|
||
public class OgmTestCase { | ||
|
||
@Rule | ||
public Neo4jRule neoServer = new Neo4jRule(); | ||
private Session session; | ||
|
||
@Before | ||
public void setUp() throws Exception { | ||
|
||
org.neo4j.ogm.config.Configuration configuration = new org.neo4j.ogm.config.Configuration(); | ||
configuration.driverConfiguration() | ||
.setDriverClassName("org.neo4j.ogm.drivers.embedded.driver.EmbeddedDriver"); | ||
|
||
SessionFactory sessionFactory = new SessionFactory(configuration, "org.neo4j.ogm.test.domain"); | ||
session = sessionFactory.openSession(); | ||
session.purgeDatabase(); | ||
} | ||
|
||
@Test | ||
public void sampleTest() { | ||
User user = new User("noone@nowhere.com", "No", "One"); | ||
session.save(user); | ||
|
||
user.setRoles(Arrays.asList(Role.ARCHITECT, Role.DEV)); | ||
session.save(user); | ||
session.clear(); | ||
|
||
user = session.load(User.class, user.getId(), 0); | ||
assertThat(!user.getRoles().isEmpty()); | ||
session.clear(); | ||
|
||
// observe proper behavior | ||
Iterable<User> result1 = session.query(User.class, "MATCH (n:User) WHERE ID(n)=" + user.getId() + " RETURN n", Collections.EMPTY_MAP); | ||
assertThat(!result1.iterator().next().getRoles().isEmpty()); | ||
session.clear(); | ||
|
||
// classCastException here | ||
Result result2 = session.query("MATCH (n:User) WHERE ID(n)=" + user.getId() + " RETURN n", Collections.EMPTY_MAP); | ||
assertThat(null != result2); | ||
|
||
|
||
} | ||
} |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,29 @@ | ||
<?xml version="1.0" encoding="UTF-8"?> | ||
<!-- | ||
~ Copyright (c) 2002-2016 "Neo Technology," | ||
~ Network Engine for Objects in Lund AB [http://neotechnology.com] | ||
~ | ||
~ This product is licensed to you under the Apache License, Version 2.0 (the "License"). | ||
~ You may not use this product except in compliance with the License. | ||
~ | ||
~ This product may include a number of subcomponents with | ||
~ separate copyright notices and license terms. Your use of the source | ||
~ code for these subcomponents is subject to the terms and | ||
~ conditions of the subcomponent's license, as noted in the LICENSE file. | ||
--> | ||
|
||
<configuration> | ||
|
||
<appender name="console" class="ch.qos.logback.core.ConsoleAppender"> | ||
<encoder> | ||
<pattern>%d %5p %40.40c:%4L - %m%n</pattern> | ||
</encoder> | ||
</appender> | ||
|
||
<logger name="org.neo4j.ogm" level="debug"/> | ||
|
||
<root level="warn"> | ||
<appender-ref ref="console"/> | ||
</root> | ||
|
||
</configuration> |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,14 @@ | ||
# Repro project for issue-361 | ||
|
||
## Configuring | ||
|
||
First, check out and update the versions in the `pom.xml` to match yours | ||
|
||
- the `neo4j-ogm.version` | ||
|
||
You can also override the version of Neo4j java drivers. | ||
|
||
## Logging | ||
|
||
This project contains a `logback-test.xml` file in `src/test/resources` that you | ||
may wish to configure to emit more detailed logging. |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,67 @@ | ||
<?xml version="1.0" encoding="UTF-8"?> | ||
<project xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://maven.apache.org/POM/4.0.0" | ||
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"> | ||
<modelVersion>4.0.0</modelVersion> | ||
|
||
<artifactId>issue-359</artifactId> | ||
<version>1.0.0-SNAPSHOT</version> | ||
<packaging>jar</packaging> | ||
|
||
<name>Neo4j OGM 2.x Test Case Template</name> | ||
<description>Use this template to report bugs with Neo4j OGM</description> | ||
|
||
<parent> | ||
<groupId>org.neo4j.ogm.testcasetemplate</groupId> | ||
<artifactId>testcasetemplate</artifactId> | ||
<version>1.0.0-SNAPSHOT</version> | ||
<relativePath>../pom.xml</relativePath> | ||
</parent> | ||
|
||
<properties> | ||
|
||
<!-- change with your versions here --> | ||
<neo4j-ogm.version>2.1.2</neo4j-ogm.version> | ||
|
||
<!-- if overriding the driver version, also uncomment the driver dependency below --> | ||
<!--<neo4j-java-driver.version>1.2.2</neo4j-java-driver.version>--> | ||
</properties> | ||
|
||
<dependencies> | ||
<!--<dependency>--> | ||
<!--<groupId>org.neo4j.driver</groupId>--> | ||
<!--<artifactId>neo4j-java-driver</artifactId>--> | ||
<!--<version>${neo4j-java-driver.version}</version>--> | ||
<!--</dependency>--> | ||
<dependency> | ||
<groupId>org.neo4j</groupId> | ||
<artifactId>neo4j-ogm-core</artifactId> | ||
<version>2.1.2</version> | ||
</dependency> | ||
<dependency> | ||
<groupId>org.neo4j</groupId> | ||
<artifactId>neo4j-ogm-embedded-driver</artifactId> | ||
<version>2.1.2</version> | ||
<scope>runtime</scope> | ||
</dependency> | ||
<dependency> | ||
<groupId>org.neo4j</groupId> | ||
<artifactId>neo4j-ogm-http-driver</artifactId> | ||
<version>2.1.2</version> | ||
<scope>runtime</scope> | ||
</dependency> | ||
<dependency> | ||
<groupId>org.neo4j</groupId> | ||
<artifactId>neo4j-ogm-test</artifactId> | ||
<version>2.1.2</version> | ||
<scope>test</scope> | ||
<exclusions> <!-- necessary to get logs in tests --> | ||
<exclusion> | ||
<groupId>org.slf4j</groupId> | ||
<artifactId>slf4j-nop</artifactId> | ||
</exclusion> | ||
</exclusions> | ||
</dependency> | ||
|
||
</dependencies> | ||
|
||
</project> |
48 changes: 48 additions & 0 deletions
48
issue-361/src/main/java/org/neo4j/ogm/test/domain/Company.java
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,48 @@ | ||
package org.neo4j.ogm.test.domain; | ||
|
||
import org.neo4j.ogm.annotation.GraphId; | ||
import org.neo4j.ogm.annotation.NodeEntity; | ||
|
||
import java.util.List; | ||
|
||
/** | ||
* @author jarhanco | ||
*/ | ||
@NodeEntity | ||
public class Company { | ||
|
||
@GraphId | ||
private Long id; | ||
|
||
private User owner; | ||
|
||
private List<User> staff; | ||
|
||
|
||
public Company() { | ||
} | ||
|
||
public Company(User owner) { | ||
this.owner = owner; | ||
} | ||
|
||
public Long getId() { | ||
return id; | ||
} | ||
|
||
public User getOwner() { | ||
return owner; | ||
} | ||
|
||
public void setOwner(User owner) { | ||
this.owner = owner; | ||
} | ||
|
||
public List<User> getStaff() { | ||
return staff; | ||
} | ||
|
||
public void setStaff(List<User> staff) { | ||
this.staff = staff; | ||
} | ||
} |
Oops, something went wrong.