-
-
Save guffyWave/9e95173d1d8c8b7aaffaaa25daf7364f to your computer and use it in GitHub Desktop.
Revisions
-
alejandrogr revised this gist
Jan 25, 2014 . 2 changed files with 146 additions and 0 deletions.There are no files selected for viewing
This file contains hidden or 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 charactersOriginal file line number Diff line number Diff line change @@ -0,0 +1,109 @@ package com.alejandrogr.gists.ofylistref; import junit.framework.TestCase; import org.junit.After; import org.junit.Before; import org.junit.Test; import com.google.appengine.tools.development.testing.LocalBlobstoreServiceTestConfig; import com.google.appengine.tools.development.testing.LocalDatastoreServiceTestConfig; import com.google.appengine.tools.development.testing.LocalServiceTestHelper; import com.googlecode.objectify.Key; import com.googlecode.objectify.ObjectifyService; import static com.googlecode.objectify.ObjectifyService.ofy; import static junit.framework.Assert.assertEquals; import static junit.framework.Assert.assertNotNull; public class OfyListRefTest extends TestCase{ private final LocalServiceTestHelper helper = new LocalServiceTestHelper( new LocalDatastoreServiceTestConfig().setDefaultHighRepJobPolicyUnappliedJobPercentage(1), new LocalBlobstoreServiceTestConfig()); @Override @Before public void setUp() { this.helper.setUp(); ObjectifyService.register(Person.class); ObjectifyService.register(Car.class); } @Override @After public void tearDown() { this.helper.tearDown(); } @Test public void testCreateCar(){ Person driver = new Person(); driver.setEmail("[email protected]"); driver.setName("Driver"); Key<Person> driverKey = ofy().save().entity(driver).now(); assertNotNull(driverKey); Car car = new Car(); car.setDriver(driver); Key<Car> carKey = ofy().save().entity(car).now(); assertNotNull(carKey); } @Test public void testCreateCarWithPassengers(){ Person driver = new Person(); driver.setEmail("[email protected]"); driver.setName("Driver"); Key<Person> driverKey = ofy().save().entity(driver).now(); Person passenger = new Person(); passenger.setEmail("[email protected]"); passenger.setName("Passenger"); ofy().save().entity(passenger).now(); Person passenger2 = new Person(); passenger2.setEmail("[email protected]"); passenger2.setName("Passenger 2"); ofy().save().entity(passenger2).now(); Person passenger3 = new Person(); passenger3.setEmail("[email protected]"); passenger3.setName("Passenger 3"); ofy().save().entity(passenger3).now(); Car car = new Car(); car.setDriver(driver); car.addPassenger(passenger); car.addPassenger(passenger2); car.addPassenger(passenger3); Key<Car> carKey = ofy().save().entity(car).now(); //clear ofy cache to ensure new objetc from DS ofy().clear(); //check load without group Car carSaved = ofy().load().key( carKey ).now(); assertNotNull(carSaved); assertEquals("The car dosen't have 3 passengers", 3, carSaved.getPassengersRefs().size()); assertEquals("The passengers are loaded", 0, carSaved.getPassengers().size()); //clear ofy cache to ensure new objetc from DS ofy().clear(); //check load with group carSaved = ofy().load().group(Person.Passenger.class).key( carKey ).now(); assertNotNull(carSaved); assertEquals("There are no passengers loaded", 3, carSaved.getPassengers().size()); assertNotNull("Passenger email is empty", carSaved.getPassengers().get(1).getEmail()); } } This file contains hidden or 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 charactersOriginal file line number Diff line number Diff line change @@ -0,0 +1,37 @@ package com.alejandrogr.gists.ofylistref; import com.googlecode.objectify.Key; import com.googlecode.objectify.annotation.Entity; import com.googlecode.objectify.annotation.Id; @Entity public class Person { @Id private String email; private String name; public Key<Person> getKey() { return Key.create(Person.class, email); } public String getEmail() { return email; } public void setEmail(String email) { this.email = email; } public String getName() { return name; } public void setName(String name) { this.name = name; } //empty class just for load group passenger public class Passenger{} } -
alejandrogr revised this gist
Jan 25, 2014 . 1 changed file with 31 additions and 21 deletions.There are no files selected for viewing
This file contains hidden or 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 charactersOriginal file line number Diff line number Diff line change @@ -1,44 +1,54 @@ package com.alejandrogr.gists.ofylistref; import com.googlecode.objectify.Ref; import com.googlecode.objectify.annotation.Entity; import com.googlecode.objectify.annotation.Id; import com.googlecode.objectify.annotation.Ignore; import com.googlecode.objectify.annotation.Load; import com.googlecode.objectify.annotation.OnLoad; import java.util.ArrayList; import java.util.List; @Entity class Car { @Ignore private List<Person> passengers; @Ignore private Person driver; @Id private Long id; @Load private transient Ref<Person> driverRef; // Person is an @Entity @Load(Person.Passenger.class) private transient List<Ref<Person>> passengersRefs; public Car(){ passengersRefs = new ArrayList<Ref<Person>>(); } @OnLoad public void deRef() { if (passengersRefs != null) { passengers = new ArrayList<Person>(); for (Ref<Person> passengerLoaded : passengersRefs) { if (passengerLoaded.isLoaded()) { passengers.add(passengerLoaded.get()); } } } if( driverRef != null ){ driver = driverRef.get(); } } public void addPassenger(Person passenger) { Ref<Person> ref = Ref.create(passenger.getKey()); if (!passengersRefs.contains(ref)) { passengersRefs.add(ref); } } public Person getDriver() { return driverRef.get(); } public void setDriver(Person p_person) { driverRef = Ref.create(p_person.getKey()); } public List<Ref<Person>> getPassengersRefs() { return passengersRefs; } public void setPassengersRefs(List<Ref<Person>> p_passengersRefs) { passengersRefs = p_passengersRefs; } public List<Person> getPassengers() {return passengers;} public void setPassengers(List<Person> p_passengers) {passengers = p_passengers;} } -
alejandrogr renamed this gist
Jan 24, 2014 . 1 changed file with 0 additions and 0 deletions.There are no files selected for viewing
File renamed without changes. -
alejandrogr revised this gist
Jan 24, 2014 . 1 changed file with 9 additions and 0 deletions.There are no files selected for viewing
This file contains hidden or 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 charactersOriginal file line number Diff line number Diff line change @@ -1,5 +1,14 @@ package entity; import com.googlecode.objectify.Ref; import com.googlecode.objectify.annotation.Entity; import com.googlecode.objectify.annotation.Id; import com.googlecode.objectify.annotation.Ignore; import com.googlecode.objectify.annotation.Load; import com.googlecode.objectify.annotation.OnLoad; import entity.Person; import entity.Passenger; @Entity class Car { -
alejandrogr revised this gist
Jan 24, 2014 . 1 changed file with 2 additions and 0 deletions.There are no files selected for viewing
This file contains hidden or 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 charactersOriginal file line number Diff line number Diff line change @@ -1,3 +1,5 @@ package entity; @Entity class Car { -
alejandrogr created this gist
Jan 24, 2014 .There are no files selected for viewing
This file contains hidden or 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 charactersOriginal file line number Diff line number Diff line change @@ -0,0 +1,33 @@ @Entity class Car { @Ignore private List<Passenger> passengers; @Ignore private Person driver; @Id Long id; @Load transient Ref<Person> driverRef; // Person is an @Entity @Load(Passenger.class) transient List<Ref<Passenger>> passengersRefs; public Person getDriver() { return driverRef.get(); } public void setDriver(Person person) { driverRef = Ref.create(person.getKey()); } @OnLoad public void deRef() { if (passengersRefs != null) { passengers = new ArrayList<Passenger>(); for (Ref<Passenger> passengerLoaded : passengersRefs) { if (passengerLoaded.isLoaded()) { passengers.add(passengerLoaded.get()); } } } if( driverRef != null ){ driver = driverRef.get()} } public void addPassenger(Passenger passenger) { Ref<Passenger> ref = Ref.create(passenger.getKey()); if (!this.passengersRefs.contains(ref)) { this.passengersRefs.add(ref); } } }