Package com.googlecode.objectify.test

Source Code of com.googlecode.objectify.test.RefTests$HasRef$Foo

/*
*/

package com.googlecode.objectify.test;

import com.google.appengine.api.memcache.MemcacheService;
import com.google.appengine.api.memcache.MemcacheServiceFactory;
import com.googlecode.objectify.Key;
import com.googlecode.objectify.LoadResult;
import com.googlecode.objectify.Ref;
import com.googlecode.objectify.annotation.Entity;
import com.googlecode.objectify.annotation.Id;
import com.googlecode.objectify.annotation.Load;
import com.googlecode.objectify.test.entity.Trivial;
import com.googlecode.objectify.test.util.TestBase;
import org.testng.annotations.BeforeMethod;
import org.testng.annotations.Test;

import java.io.Serializable;
import java.util.ArrayList;
import java.util.List;

import static com.googlecode.objectify.test.util.TestObjectifyService.fact;
import static com.googlecode.objectify.test.util.TestObjectifyService.ofy;

/**
* Tests the behavior of Refs.
*
* @author Jeff Schnitzer <jeff@infohazard.org>
*/
public class RefTests extends TestBase
{
  Trivial t1;
  Trivial t2;
  Key<Trivial> k1;
  Key<Trivial> k2;
  Key<Trivial> kNone;

  /** */
  @BeforeMethod
  public void createTwo() {
    fact().register(Trivial.class);

    t1 = new Trivial("foo", 11);
    k1 = ofy().save().entity(t1).now();

    t2 = new Trivial("bar", 22);
    k2 = ofy().save().entity(t2).now();

    kNone = Key.create(Trivial.class, 12345L);

    ofy().clear();
  }

//  /** */
//  @Test
//  public void testGet() throws Exception {
//    TestObjectify ofy = fact().begin();
//
//    Ref<Trivial> ref = Ref.create(k1);
//
//    ofy().getRef(ref);
//    assert ref.value().getSomeString().equals(t1);
//
//    try {
//      ofy().getRef(Ref.create(kNone));
//      assert false;
//    } catch (NotFoundException ex) {}
//  }

  /** */
  @Test
  public void simpleRefIsNotLoaded() throws Exception {
    Ref<Trivial> ref = Ref.create(k1);
    assert !ref.isLoaded();
  }

  /** */
  @Test
  public void standaloneLoad() throws Exception {
    Ref<Trivial> ref = Ref.create(k1);

    Trivial loaded = ref.get();
    assert ref.isLoaded();
    assert loaded.getSomeString().equals(t1.getSomeString());
  }

  /** */
  @Test
  public void loadRefFromOfy() throws Exception {
    Ref<Trivial> ref = Ref.create(k1);

    LoadResult<Trivial> result = ofy().load().ref(ref);
    assert ref.isLoaded();

    assert result.now().getSomeString().equals(t1.getSomeString());
  }

  /** */
  @Test
  public void testGetRefsVarargs() throws Exception {
    Ref<Trivial> ref1 = Ref.create(k1);
    Ref<Trivial> ref2 = Ref.create(k2);
    Ref<Trivial> refNone = Ref.create(kNone);

    @SuppressWarnings({ "unused", "unchecked" })
    Object foo = ofy().load().refs(ref1, ref2, refNone);

    assert ref1.isLoaded();
    assert ref2.isLoaded();
    assert refNone.isLoaded();

    assert ref1.get().getSomeString().equals(t1.getSomeString());
    assert ref2.get().getSomeString().equals(t2.getSomeString());
    assert refNone.get() == null;
  }

  /** */
  @Test
  public void testGetRefsIterable() throws Exception {
    Ref<Trivial> ref1 = Ref.create(k1);
    Ref<Trivial> ref2 = Ref.create(k2);
    Ref<Trivial> refNone = Ref.create(kNone);

    List<Ref<Trivial>> list = new ArrayList<>();
    list.add(ref1);
    list.add(ref2);
    list.add(refNone);

    ofy().load().refs(list);

    assert ref1.isLoaded();
    assert ref2.isLoaded();
    assert refNone.isLoaded();

    assert ref1.get().getSomeString().equals(t1.getSomeString());
    assert ref2.get().getSomeString().equals(t2.getSomeString());
    assert refNone.get() == null;
  }

  /** */
  @Entity
  static class HasRef implements Serializable {
    private static final long serialVersionUID = 1L;
    public static class Foo {}

    public @Id Long id;
    public @Load(Foo.class) Ref<Trivial> triv;
  }

  /** */
  @Test
  public void refsMustBeSerializable() throws Exception {
    fact().register(HasRef.class);

    HasRef hr = new HasRef();
    hr.triv = Ref.create(k1);

    HasRef fetched = ofy().saveClearLoad(hr);

    // Now try to serialize it in memcache.
    MemcacheService ms = MemcacheServiceFactory.getMemcacheService();
    ms.put("thing", fetched);

    HasRef serialized = (HasRef)ms.get("thing");
    assert serialized.id.equals(hr.id);
  }

  /** */
  @Test
  public void refsLoadedMustBeSerializable() throws Exception {
    fact().register(HasRef.class);

    HasRef hr = new HasRef();
    hr.triv = Ref.create(k1);

    ofy().save().entity(hr).now();
    ofy().clear();
    HasRef fetched = ofy().load().group(HasRef.Foo.class).entity(hr).now();

    // Now try to serialize it in memcache.
    MemcacheService ms = MemcacheServiceFactory.getMemcacheService();
    ms.put("thing", fetched);

    HasRef serialized = (HasRef)ms.get("thing");
    assert serialized.id.equals(hr.id);
    assert serialized.triv.get().getSomeString().equals(t1.getSomeString());
  }
}
TOP

Related Classes of com.googlecode.objectify.test.RefTests$HasRef$Foo

TOP
Copyright © 2018 www.massapi.com. All rights reserved.
All source code are property of their respective owners. Java is a trademark of Sun Microsystems, Inc and owned by ORACLE Inc. Contact coftware#gmail.com.