All Downloads are FREE. Search and download functionalities are using the official Maven repository.

org.nakedobjects.metamodel.interactions.ActionArgumentContext Maven / Gradle / Ivy

The newest version!
package org.nakedobjects.metamodel.interactions;

import static org.nakedobjects.metamodel.util.NakedObjectUtils.unwrap;

import org.nakedobjects.applib.Identifier;
import org.nakedobjects.applib.events.ActionArgumentEvent;
import org.nakedobjects.metamodel.adapter.NakedObject;
import org.nakedobjects.metamodel.authentication.AuthenticationSession;
import org.nakedobjects.metamodel.consent.InteractionContextType;
import org.nakedobjects.metamodel.consent.InteractionInvocationMethod;


/**
 * See {@link InteractionContext} for overview; analogous to {@link ActionArgumentEvent}.
 */
public class ActionArgumentContext extends ValidityContext implements ProposedHolder {

    private final NakedObject[] args;
    private final int position;
    private final NakedObject proposed;

    public ActionArgumentContext(
            final AuthenticationSession session,
            final InteractionInvocationMethod invocationMethod,
            final NakedObject target,
            final Identifier id,
            final NakedObject[] args,
            final int position) {
        super(InteractionContextType.ACTION_PROPOSED_ARGUMENT, session, invocationMethod, id, target);

        this.args = args;
        this.position = position;
        this.proposed = args[position];
    }

    public NakedObject[] getArgs() {
        return args;
    }

    public int getPosition() {
        return position;
    }

    public NakedObject getProposed() {
        return proposed;
    }

    @Override
    public ActionArgumentEvent createInteractionEvent() {
        return new ActionArgumentEvent(unwrap(getTarget()), getIdentifier(), unwrap(getArgs()), getPosition());
    }

}




© 2015 - 2024 Weber Informatics LLC | Privacy Policy