/** * Same as key() but conforms to JavaBeans conventions in case this is being processed by a JSON * converter or expression language. */ final public Key<T> getKey() { return key(); }
/** Renders some info about the key */ @Override public String toString() { return this.getClass().getSimpleName() + "(" + key() + ")"; } }
/** Hash code is simply that of key */ @Override public int hashCode() { return key().hashCode(); }
@Override public void serialize(Ref value, JsonGenerator jgen, SerializerProvider provider) throws IOException, JsonProcessingException { jgen.writeFieldName(value.key().getString()); } }
/** Type safe comparison for key equivalence */ public boolean equivalent(Key<T> other) { return key().equivalent(other); }
/** * Callback that we found a Ref in the object graph. Subclasses of this context may want to do something * special with this. */ public Key saveRef(final Ref<?> value, final LoadConditions loadConditions) { return value.key().getRaw(); } }
/** A type-safe equivalence comparison */ public boolean equivalent(final Ref<T> other) { return (other != null) && equals(other.key()); }
@Override public <E> LoadResult<E> ref(final Ref<E> ref) { return key(ref.key()); }
/** * Obtain the entity value, throwing an exception if the entity was not found. * * @return the entity referenced. Never returns null. * @throws NotFoundException if the specified entity was not found */ final public T safe() throws NotFoundException { T t = this.get(); if (t == null) throw new NotFoundException(key()); else return t; }
@Override public com.google.cloud.datastore.Key saveRef(Ref<?> value, LoadConditions loadConditions) { com.google.cloud.datastore.Key key = super.saveRef(value, loadConditions); if (loadEngine.shouldLoad(loadConditions)) { log.trace("Upgrading key {}", key); loadEngine.load(value.key()); } return key; } };
@Override public void serialize(Ref value, JsonGenerator jgen, SerializerProvider provider) throws IOException, JsonProcessingException { Object obj = value.getValue(); if (obj != null) { // writeObject() abandons the serialization context and breaks @JsonView //jgen.writeObject(obj); // Tatu says that this is better: provider.defaultSerializeValue(value.getValue(), jgen); } else { jgen.writeString(value.key().getString()); } } }
/** * <p>Gets the raw datstore Key given an object that might be a Key, Key<T>, or entity.</p> * * @param keyOrEntity must be a Key, Key<T>, or registered entity. * @throws NullPointerException if keyOrEntity is null * @throws IllegalArgumentException if keyOrEntity is not a Key, Key<T>, or registered entity */ public com.google.cloud.datastore.Key anythingToRawKey(final Object keyOrEntity) { if (keyOrEntity instanceof com.google.cloud.datastore.Key) return (com.google.cloud.datastore.Key)keyOrEntity; else if (keyOrEntity instanceof Key<?>) return ((Key<?>)keyOrEntity).getRaw(); else if (keyOrEntity instanceof Ref) return ((Ref<?>)keyOrEntity).key().getRaw(); else if (keyOrEntity instanceof FullEntity<?>) return getKey((FullEntity<?>)keyOrEntity); else return rawKeyOf(keyOrEntity); }
/** * <p>Gets the Key<T> given an object that might be a Key, Key<T>, or entity.</p> * * @param keyOrEntity must be a Key, Key<T>, or registered entity. * @throws NullPointerException if keyOrEntity is null * @throws IllegalArgumentException if keyOrEntity is not a Key, Key<T>, or registered entity */ @SuppressWarnings("unchecked") public <T> Key<T> anythingToKey(final Object keyOrEntity) { if (keyOrEntity instanceof Key<?>) return (Key<T>)keyOrEntity; else if (keyOrEntity instanceof com.google.cloud.datastore.Key) return Key.create((com.google.cloud.datastore.Key)keyOrEntity); else if (keyOrEntity instanceof Ref) return ((Ref<T>)keyOrEntity).key(); else if (keyOrEntity instanceof FullEntity<?>) return Key.create(getKey((FullEntity<?>)keyOrEntity)); else return keyOf((T)keyOrEntity); }
@Override public void serialize( Ref ref, JsonGenerator jgen, SerializerProvider provider ) throws IOException { jgen.writeStartObject(); boolean includeNull = Include.NON_NULL != provider.getConfig().getDefaultPropertyInclusion().getValueInclusion(); if ( ref.key() != null || includeNull ) { jgen.writeObjectField( RefConstant.KEY, ref.key() ); } if ( ref.getValue() != null || includeNull ) { jgen.writeObjectField( RefConstant.VALUE, ref.getValue() ); } jgen.writeEndObject(); }