trait
Reconcilable[T <: Reconcilable[T]] extends AnyRef
Abstract Value Members
-
abstract
def
reconcile(other: T): T
-
abstract
def
reconcileOver(other: T): T
Concrete Value Members
-
final
def
!=(arg0: AnyRef): Boolean
-
final
def
!=(arg0: Any): Boolean
-
final
def
##(): Int
-
final
def
==(arg0: AnyRef): Boolean
-
final
def
==(arg0: Any): Boolean
-
final
def
asInstanceOf[T0]: T0
-
def
clone(): AnyRef
-
final
def
eq(arg0: AnyRef): Boolean
-
def
equals(arg0: Any): Boolean
-
final
def
getClass(): Class[_]
-
def
hashCode(): Int
-
final
def
isInstanceOf[T0]: Boolean
-
final
def
ne(arg0: AnyRef): Boolean
-
final
def
notify(): Unit
-
final
def
notifyAll(): Unit
-
final
def
synchronized[T0](arg0: ⇒ T0): T0
-
def
toString(): String
-
final
def
wait(arg0: Long, arg1: Int): Unit
-
final
def
wait(arg0: Long): Unit
-
final
def
wait(): Unit
Deprecated Value Members
-
def
finalize(): Unit
Inherited from AnyRef
Inherited from Any
The idea here is to define a kind of value object that may be specified or acquired in a manner that is only partially complete. Information from multiple instances of such Objects may be "reconciled" to yield a more complete description of the business object being modeled.
Data that may sometimes be unspecified should be modeled as Option[_] objects.
Reconciliation can be symmetrical, such that clearly inconsistent data trigger a CantReconcileException, or may be asymmetrical, such that data in higher priority objects shadow conflicting data in lower priority objects. reconcile and reconcileLeaf are symmetrical implementations, reconcileOver and reconcileOverLeaf are asymmetrical implementations.
Reconcilable classes should generally be final. Utility methods only try to reconcile objects of identical implementation class.