@Documented
@Retention(value=RUNTIME)
@Target(value={TYPE,METHOD})
public @interface Independent
Repository
to allow a Storable
property or type
to be undefined in the underlying schema. Ordinarily, if a dependent repository cannot
find a matching property, it throws MismatchException
when the Storage
is
first retrieved for the storable. This annotation suppresses that exception, and instead
makes the property or type unsupported. Any subsequent invocation of a property access
method for the independent type or property will cause an UnsupportedOperationException
to be thrown.
One example of when this might be used would be to store a calculated field in the cached representation of the object. It is not necessary to prevent implemented methods of the form "get<value>" from being inadvertently interpreted as properties of the storable; any implementation is by definition not a property.
If a correctly matching property actually is found, then this annotation is ignored and the property or type is defined as usual. If the Repository finds a property whose name matches, but whose type does not match, a MismatchException will be thrown regardless of this annotation.
Independent repositories completely ignore this annotation.
Example:
public interface UserInfo extends Storable<UserInfo> { @Independent String getName(); void setName(String name); ... }Note: If a
versioned
Storable with an independent
property is managed by a replicating repository, updates which modify just
the independent property still update the master Storable, in order to get a
new record version. Therefore, independent properties should not be used as
a performance enhancement which avoids writes to a master repository.Copyright © 2006-2013 Amazon Technologies, Inc.. All Rights Reserved.