001package de.deepamehta.core.impl;
002
003import de.deepamehta.core.Association;
004import de.deepamehta.core.AssociationRole;
005import de.deepamehta.core.DeepaMehtaObject;
006
007
008
009/**
010 * An association role that is attached to the {@link PersistenceLayer}.
011 */
012class AssociationRoleImpl extends RoleImpl implements AssociationRole {
013
014    // ---------------------------------------------------------------------------------------------------- Constructors
015
016    AssociationRoleImpl(AssociationRoleModelImpl model, AssociationModelImpl assoc, PersistenceLayer pl) {
017        super(model, assoc, pl);
018    }
019
020    // -------------------------------------------------------------------------------------------------- Public Methods
021
022
023
024    // === Role Implementation ===
025
026    @Override
027    public DeepaMehtaObject getPlayer() {
028        return getModel().getPlayer().instantiate();     // ### TODO: permission check?
029    }
030
031
032
033    // === AssociationRole Implementation ===
034
035    @Override
036    public Association getAssociation() {
037        return (Association) getPlayer();
038    }
039
040
041
042    // === RoleImpl Overrides ===
043
044    @Override
045    public AssociationRoleModelImpl getModel() {
046        return (AssociationRoleModelImpl) model;
047    }
048}