
org.nakedobjects.nos.remote.command.CommandClient Maven / Gradle / Ivy
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