forked from infinispan/infinispan
-
Notifications
You must be signed in to change notification settings - Fork 3
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
ISPN-4072 JPA Cache Store fails to clear entity which conatins Elemen…
…tCollection * Fix ISPN-4072 * Add unit tests for entity containing fields with annotations @Embedded and @ElementCollection
- Loading branch information
Showing
5 changed files
with
234 additions
and
5 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
42 changes: 42 additions & 0 deletions
42
test/java/org/infinispan/persistence/jpa/JpaStorePersonEntityTest.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,42 @@ | ||
package org.infinispan.persistence.jpa; | ||
|
||
import org.infinispan.persistence.jpa.entity.Address; | ||
import org.infinispan.persistence.jpa.entity.Person; | ||
import org.mockito.internal.util.collections.Sets; | ||
import org.testng.annotations.Test; | ||
|
||
@Test(groups = "functional", testName = "persistence.JpaStorePersonEntityTest") | ||
public class JpaStorePersonEntityTest extends BaseJpaStoreTest { | ||
@Override | ||
protected Class<?> getEntityClass() { | ||
return Person.class; | ||
} | ||
|
||
@Override | ||
protected TestObject createTestObject(String key) { | ||
|
||
Address adr = new Address(); | ||
adr.setCity("Brno"); | ||
adr.setStreet("Purkynova 2855"); | ||
adr.setZipCode(61200); | ||
|
||
Address secAdr1 = new Address(); | ||
secAdr1.setCity("Brno - Kralovo Pole"); | ||
secAdr1.setStreet("Purkynova 97"); | ||
secAdr1.setZipCode(12345); | ||
|
||
Address secAdr2 = new Address(); | ||
secAdr2.setCity("Kralovo Pole"); | ||
secAdr2.setStreet("Purkynova 97a"); | ||
secAdr2.setZipCode(54321); | ||
|
||
Person person = new Person(); | ||
person.setId(key); | ||
person.setName("test person"); | ||
person.setNickNames(Sets.newSet("nick1", "nick2")); | ||
person.setAddress(adr); | ||
person.setSecondaryAdresses(Sets.newSet(secAdr1, secAdr2)); | ||
|
||
return new TestObject(person.getId(), person); | ||
} | ||
} |
71 changes: 71 additions & 0 deletions
71
test/java/org/infinispan/persistence/jpa/entity/Address.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,71 @@ | ||
package org.infinispan.persistence.jpa.entity; | ||
|
||
import java.io.Serializable; | ||
|
||
import javax.persistence.Embeddable; | ||
|
||
@Embeddable | ||
public class Address implements Serializable { | ||
|
||
private static final long serialVersionUID = 5289488219505339148L; | ||
|
||
private String city; | ||
private String street; | ||
private int zipCode; | ||
|
||
public String getCity() { | ||
return city; | ||
} | ||
|
||
public void setCity(String city) { | ||
this.city = city; | ||
} | ||
|
||
public String getStreet() { | ||
return street; | ||
} | ||
|
||
public void setStreet(String street) { | ||
this.street = street; | ||
} | ||
|
||
public int getZipCode() { | ||
return zipCode; | ||
} | ||
|
||
public void setZipCode(int zipCode) { | ||
this.zipCode = zipCode; | ||
} | ||
|
||
public static long getSerialversionuid() { | ||
return serialVersionUID; | ||
} | ||
|
||
public boolean equals(Object o) { | ||
if (this == o) | ||
return true; | ||
if (o == null || getClass() != o.getClass()) | ||
return false; | ||
|
||
final Address address = (Address) o; | ||
|
||
if (city != null ? !city.equals(address.getCity()) : address.getCity() != null) | ||
return false; | ||
if (street != null ? !street.equals(address.getStreet()) : address.getStreet() != null) | ||
return false; | ||
if (zipCode != address.getZipCode()) | ||
return false; | ||
|
||
return true; | ||
} | ||
|
||
public int hashCode() { | ||
final int prime = 31; | ||
int result; | ||
result = (city != null ? city.hashCode() : 0); | ||
result = prime * result + (street != null ? street.hashCode() : 0); | ||
result = prime * result + zipCode; | ||
return result; | ||
} | ||
|
||
} |
110 changes: 110 additions & 0 deletions
110
test/java/org/infinispan/persistence/jpa/entity/Person.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,110 @@ | ||
package org.infinispan.persistence.jpa.entity; | ||
|
||
import java.io.Serializable; | ||
import java.util.Set; | ||
|
||
import javax.persistence.AttributeOverride; | ||
import javax.persistence.AttributeOverrides; | ||
import javax.persistence.Column; | ||
import javax.persistence.ElementCollection; | ||
import javax.persistence.Embedded; | ||
import javax.persistence.Entity; | ||
import javax.persistence.FetchType; | ||
import javax.persistence.Id; | ||
|
||
@Entity | ||
public class Person implements Serializable { | ||
|
||
private static final long serialVersionUID = 4748311041613897465L; | ||
|
||
@Id | ||
private String id; | ||
|
||
private String name; | ||
|
||
@ElementCollection(fetch = FetchType.EAGER) | ||
private Set<String> nickNames; | ||
|
||
@Embedded | ||
@AttributeOverrides({ @AttributeOverride(name = "zipCode", column = @Column(name = "zip")) }) | ||
private Address address; | ||
|
||
@ElementCollection(fetch = FetchType.EAGER) | ||
private Set<Address> secondaryAdresses; | ||
|
||
public String getId() { | ||
return id; | ||
} | ||
|
||
public void setId(String id) { | ||
this.id = id; | ||
} | ||
|
||
public String getName() { | ||
return name; | ||
} | ||
|
||
public void setName(String name) { | ||
this.name = name; | ||
} | ||
|
||
public Set<String> getNickNames() { | ||
return nickNames; | ||
} | ||
|
||
public void setNickNames(Set<String> nickNames) { | ||
this.nickNames = nickNames; | ||
} | ||
|
||
public Address getAddress() { | ||
return address; | ||
} | ||
|
||
public void setAddress(Address address) { | ||
this.address = address; | ||
} | ||
|
||
public Set<Address> getSecondaryAdresses() { | ||
return secondaryAdresses; | ||
} | ||
|
||
public void setSecondaryAdresses(Set<Address> secondaryAdresses) { | ||
this.secondaryAdresses = secondaryAdresses; | ||
} | ||
|
||
public boolean equals(Object o) { | ||
if (this == o) | ||
return true; | ||
if (o == null || getClass() != o.getClass()) | ||
return false; | ||
|
||
final Person person = (Person) o; | ||
|
||
if (id != null ? !id.equals(person.getId()) : person.getId() != null) | ||
return false; | ||
if (name != null ? !name.equals(person.getName()) : person.getName() != null) | ||
return false; | ||
if ( (nickNames != null && !nickNames.isEmpty()) ? !nickNames.equals(person.getNickNames()) : | ||
(person.getNickNames() != null && !person.getNickNames().isEmpty())) | ||
return false; | ||
if (address != null ? !address.equals(person.getAddress()) : person.getAddress() != null) | ||
return false; | ||
if ( (secondaryAdresses != null && !secondaryAdresses.isEmpty() ) ? !secondaryAdresses.equals(person.getSecondaryAdresses()) : | ||
(person.getSecondaryAdresses() != null && !person.getSecondaryAdresses().isEmpty())) | ||
return false; | ||
|
||
return true; | ||
} | ||
|
||
public int hashCode() { | ||
final int prime = 31; | ||
int result; | ||
result = (id != null ? id.hashCode() : 0); | ||
result = prime * result + (name != null ? name.hashCode() : 0); | ||
result = prime * result + (nickNames != null ? nickNames.hashCode() : 0); | ||
result = prime * result + (address != null ? address.hashCode() : 0); | ||
result = prime * result + (secondaryAdresses != null ? secondaryAdresses.hashCode() : 0); | ||
return result; | ||
} | ||
|
||
} |
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