Latest News

§B Changes between versions

§B.1 Paragraphs changed between versions↑ §B

(1) Between OTJLD 1.0 and OTJLD 1.1

  • §3.2.(a) : Parameter mappings

    Disallow parameter mappings in a role interface.

  • §4.5.(d) : Replace bindings

    Disallow unsafe use of polymorphism and primitive type conversions.

  • §6.1.(a) : Signatures of reflective methods

    Made two methods generic so that return values can be used without the need of casting.

  • §7.2 : Confined roles

    Improved explanation.

(2) Between OTJLD 1.1 and OTJLD 1.2

  • §1.2.1.(e): Visibility of role features

    Clarification has been added that a role can always access all the features that its enclosing team has access to.

  • §2.1.2.(e): Generic roles/bases

    Relaxed the rules about generic bound roles. This change also subsumes what previously was a specific restriction in §4.1.(b).

  • §3.1.(i) and §3.5.(f): Visibility of shorthand callout

    A role method defined by a shorthand callout binding can now specify a visibility modifier (see also §A.3.2), otherwise it inherits the visibility modifier of it's bound base method/field.

  • §3.1.(j) and §3.5.(h): Visibility of inferred callout

    Role methods inferred as a callout binding are either public (inferred via interface) or private inferred from self call / field access.

  • §3.5.(h): No explicit use of inferred callout to field

    Clarification has been added that an accessor method generated for an inferred callout to field can not be explicitly invoked.

  • §4.1.(b): No callin in generic role

    A restriction has been made explicit that a generic role cannot define callin bindings.

  • §4.2.(d) : Callin methods

    Slightly rephrased and extended the rule to make explicit that a callin method can indeed be intercepted using a second level callin binding.

  • §6.1.(a) : Reflective methods getAllRoles

    More precision: answer only bound roles.

§B.2 Additions between versions↑ §B

(1) Between OTJLD 1.0 and OTJLD 1.1

  • §1.2.4.(c): Role class literal

    Made existing feature explicit and introduce new qualified class literal for externalized roles.

  • §3.1.(j) and §3.5.(h) : Inferred callout

    New feature.

  • §4.6.(a) : Callin-binding private methods from super classes

    Added a necessary restriction.

  • §4.9 : Callin inheritance

    Clarified issues that where under-specified or insufficiently explained, specifically:

    • Effect of callin bindings on inherited or overridden base methods (§4.9.1).
    • Interplay of callin bindings and base methods with covariant return types (§4.9.3)
  • §4.10: Generic replace bindings

    Reconcile type safety of replace bindings as introduced in §4.5.(d) with desirable flexibility by using type parameters.

  • §7.2.(b) : Arrays of Confined

    Added a necessary restriction.

(2) Between OTJLD 1.1 and OTJLD 1.2

  • §1.2.2.(h) : Externalized creation

    Added alternative syntax using value parameter and changed title.

  • §1.2.5.(f) : Imports in role files

    Added a missing rule defining the effect of imports in role files.

  • §1.3.1.(c) : @Override annotation for roles

    The regular @Override annotation (Java ≥5) has been extended to apply to role classes, too.

  • §1.3.1.(k) : Covariant return types

    Necessary constraint for covariant return types in the presence of both implicit and explicit inheritance.

  • §2.1.2.(c) : Binding to final base class

    It has been added that binding to a final base class is now considered as decapsulation, too.

  • §2.2.(f) : Ambiguous lowering

    A diagnostic has been added to detect situations where lowering might be intended but fails because the declared type is java.lang.Object, which makes a potential lowering translation unnecessary and thus ambiguous.

  • §2.3.2.(e) : Generic declared lifting

    Support passing unrelated base types into the same method with declared lifting.

  • §2.6.(g) : Decapsulation via base reference

    Extended applicability of decapsulation to two more positions.

  • §4.3.(f) : Base super call

    Support base calls directly to the super version of the bound base method, thus bypassing both the exact bound base method and also any further callins relating to this base method or its super version.

  • §5.4.(b) : Side-effects in guard predicates

    Migrate previous note about a future feature to a regular paragraph.

  • §5.4.(c) : Exceptions in guard predicates

    Clarify the effect of exceptions thrown from a guard predicate.

  • §6.2.(d) : LiftingVetoException

    Added documentation for the mostly internal LiftingVetoException and how it could actually be used in client code.

  • §6.2.(e) : Role migration

    Added two interfaces to add migration capabilities to a role class.