Class ContractTypeCompanion<Ct,​Id,​ContractType,​Data>

  • Type Parameters:
    Ct - The specific type of Contract representing contracts from the ledger. Always a subtype of Contract<Id, Data>.
    Id - The code-generated class of ContractIds specific to this template or interface. Always a subtype of ContractId<ContractType>.
    ContractType - The type argument to ContractIds of this contract type. This is the same as Data for templates, but is a pure marker type for interfaces.
    Data - The "payload" data model for a contract. This is the template payload for templates, and the view type for interfaces.
    Direct Known Subclasses:
    ContractCompanion, InterfaceCompanion

    public abstract class ContractTypeCompanion<Ct,​Id,​ContractType,​Data>
    extends java.lang.Object
    The commonality between ContractCompanion and InterfaceCompanion.
    • Field Summary

      Fields 
      Modifier and Type Field Description
      java.util.Map<java.lang.String,​Choice<ContractType,​?,​?>> choices
      The provides a mapping of choice name to Choice.
      Identifier TEMPLATE_ID
      The full template ID of the template or interface that defined this companion.
    • Field Detail

      • TEMPLATE_ID

        public final Identifier TEMPLATE_ID
        The full template ID of the template or interface that defined this companion.
      • choices

        public final java.util.Map<java.lang.String,​Choice<ContractType,​?,​?>> choices
        The provides a mapping of choice name to Choice.
         // if you statically know the name of a choice
         var c1 = Bar.COMPANION.choices.get("Transfer");
         // it is better to retrieve it directly from the generated field
         var c2 = Bar.CHOICE_Transfer;
         
    • Method Detail

      • toContractId

        public final Id toContractId​(ContractId<ContractType> parameterizedContractId)
        Convert from a generic ContractId to the specific contract ID subclass generated as part of this companion's template or interface. Most applications should not need this function, but if your Daml data types include types like ContractId t where t is any type parameter, that is likely to result in code-generated types like ContractId<t> that need to be passed to this function before e.g. exercise* methods can be used.