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

org.nakedobjects.nos.remote.command.CommandClient Maven / Gradle / Ivy

There is a newer version: 3.0.3
Show newest version
package org.nakedobjects.nos.remote.command;

import java.util.Properties;

import org.apache.log4j.Logger;
import org.nakedobjects.noa.adapter.Oid;
import org.nakedobjects.noa.security.Session;
import org.nakedobjects.nof.reflect.remote.NakedObjectsRemoteException;
import org.nakedobjects.nof.reflect.remote.data.ClientActionResultData;
import org.nakedobjects.nof.reflect.remote.data.CriteriaData;
import org.nakedobjects.nof.reflect.remote.data.Data;
import org.nakedobjects.nof.reflect.remote.data.Distribution;
import org.nakedobjects.nof.reflect.remote.data.IdentityData;
import org.nakedobjects.nof.reflect.remote.data.ObjectData;
import org.nakedobjects.nof.reflect.remote.data.ReferenceData;
import org.nakedobjects.nof.reflect.remote.data.ServerActionResultData;
import org.nakedobjects.nof.reflect.remote.data.ValueData;


public class CommandClient implements Distribution {
    private static final Logger LOG = Logger.getLogger(CommandClient.class);
    private CommandClientConnection connection;

    public Session authenticate(String data) {
        Authenticate request = new Authenticate(data);
        execute(request);
        return request.getSession();
    }

    public boolean authoriseUsability(final Session session, final String data) {
        final AuthoriseUsability request = new AuthoriseUsability(session, data);
        execute(request);
        return request.getAuthorised();

    }

    public boolean authoriseVisibility(final Session session, final String data) {
        final AuthoriseVisibility request = new AuthoriseVisibility(session, data);
        execute(request);
        return request.getAuthorised();
    }

    public ObjectData[] clearAssociation(
            final Session session,
            final String fieldIdentifier,
            final IdentityData target,
            final IdentityData associate) {
        ClearAssociation request = new ClearAssociation(session, fieldIdentifier, target, associate);
        execute(request);
        return request.getChanges();
    }

    public ObjectData[] clearValue(final Session session, final String fieldIdentifier, final IdentityData target) {
        ClearValue request = new ClearValue(session, fieldIdentifier, target);
        execute(request);
        return request.getChanges();
    }

    public void closeSession(Session session) {
        CloseSession request = new CloseSession(session);
        execute(request);
    }

    public ServerActionResultData executeServerAction(
            final Session session,
            final String actionType,
            final String actionIdentifier,
            final ReferenceData target,
            final Data[] parameters) {
        ExecuteServerAction request = new ExecuteServerAction(session, actionType, actionIdentifier, target, parameters);
        execute(request);
        return request.getActionResult();
    }

    public ClientActionResultData executeClientAction(final Session session, final ReferenceData[] data, final int[] types) {
        ExecuteClientAction request = new ExecuteClientAction(session, data, types);
        execute(request);
        return request.getActionResult();
    }

    public ObjectData[] findInstances(final Session session, final CriteriaData criteria) {
        FindInstances request = new FindInstances(session, criteria);
        execute(request);
        return request.getInstances();
    }

    public ObjectData getObject(Session session, Oid oid, String specificationName) {
        GetObject request = new GetObject(session, oid, specificationName);
        execute(request);
        return request.getObject();
    }

    public Properties getProperties() {
        GetProperties request = new GetProperties();
        execute(request);
        return request.getProperties();
    }

    public ObjectData resolveImmediately(final Session session, final IdentityData target) {
        Resolve request = new Resolve(session, target);
        execute(request);
        return request.getUpdateData();
    }

    public Data resolveField(final Session session, final IdentityData target, final String name) {
        ResolveField request = new ResolveField(session, target, name);
        execute(request);
        return request.getUpdateData();
    }

    public boolean hasInstances(final Session session, final String fullName) {
        HasInstances request = new HasInstances(session, fullName);
        execute(request);
        return request.getFlag();
    }

    public void init() {
        connection.init();
    }

    public IdentityData oidForService(Session session, String id) {
        OidForService request = new OidForService(session, id);
        execute(request);
        return request.getData();
    }

    private void execute(final Request request) {
        synchronized (connection) {
            Response response = connection.executeRemotely(request);
            if (request.getId() != response.getId()) {
                throw new NakedObjectsRemoteException("Response out of sequence with respect to the request: " + request.getId()
                        + " & " + response.getId() + " respectively");
            }
            LOG.debug("response " + response);
            request.setResponse(response.getObject());
        }
    }

    protected final Response executeRemotely(final Request request) {
        return null;
    }

    public ObjectData[] setAssociation(
            final Session session,
            final String fieldIdentifier,
            final IdentityData target,
            final IdentityData associate) {
        SetAssociation request = new SetAssociation(session, fieldIdentifier, target, associate);
        execute(request);
        return request.getChanges();

    }

    public ObjectData[] setValue(
            final Session session,
            final String fieldIdentifier,
            final IdentityData target,
            final ValueData value) {
        SetValue request = new SetValue(session, fieldIdentifier, target, value);
        execute(request);
        return request.getChanges();
    }

    /**
     * .NET Property
     * 
     * @property
     */
    public void set_Connection(CommandClientConnection connection) {
        setConnection(connection);
    }

    public void setConnection(CommandClientConnection connection) {
        this.connection = connection;
    }

    public void shutdown() {
        connection.shutdown();
    }

}
// Copyright (c) Naked Objects Group Ltd.




© 2015 - 2025 Weber Informatics LLC | Privacy Policy