You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@isis.apache.org by da...@apache.org on 2010/11/06 09:46:39 UTC
svn commit: r1031974 [2/4] - in /incubator/isis/trunk/alternatives/remoting:
common/src/main/java/org/apache/isis/remoting/client/
common/src/main/java/org/apache/isis/remoting/client/authentication/
common/src/main/java/org/apache/isis/remoting/client...
Modified: incubator/isis/trunk/alternatives/remoting/common/src/main/java/org/apache/isis/remoting/facade/ServerFacadeLogger.java
URL: http://svn.apache.org/viewvc/incubator/isis/trunk/alternatives/remoting/common/src/main/java/org/apache/isis/remoting/facade/ServerFacadeLogger.java?rev=1031974&r1=1031973&r2=1031974&view=diff
==============================================================================
--- incubator/isis/trunk/alternatives/remoting/common/src/main/java/org/apache/isis/remoting/facade/ServerFacadeLogger.java (original)
+++ incubator/isis/trunk/alternatives/remoting/common/src/main/java/org/apache/isis/remoting/facade/ServerFacadeLogger.java Sat Nov 6 08:46:35 2010
@@ -17,483 +17,479 @@
* under the License.
*/
+package org.apache.isis.remoting.facade;
-package org.apache.isis.remoting.facade;
-
-import java.util.ArrayList;
-import java.util.List;
-import java.util.Properties;
-import java.util.Vector;
-
-import org.apache.isis.metamodel.adapter.oid.Oid;
-import org.apache.isis.metamodel.adapter.version.Version;
-import org.apache.isis.metamodel.authentication.AuthenticationSession;
-import org.apache.isis.metamodel.spec.ObjectSpecification;
-import org.apache.isis.metamodel.spec.feature.ObjectActionType;
-import org.apache.isis.metamodel.spec.feature.ObjectAssociation;
-import org.apache.isis.remoting.client.transaction.ClientTransactionEvent;
-import org.apache.isis.remoting.data.Data;
-import org.apache.isis.remoting.data.common.CollectionData;
-import org.apache.isis.remoting.data.common.EncodableObjectData;
-import org.apache.isis.remoting.data.common.IdentityData;
-import org.apache.isis.remoting.data.common.NullData;
-import org.apache.isis.remoting.data.common.ObjectData;
-import org.apache.isis.remoting.data.common.ReferenceData;
-import org.apache.isis.remoting.data.query.PersistenceQueryData;
-import org.apache.isis.remoting.exchange.AuthorizationRequestUsability;
-import org.apache.isis.remoting.exchange.AuthorizationRequestVisibility;
-import org.apache.isis.remoting.exchange.ClearAssociationRequest;
-import org.apache.isis.remoting.exchange.ClearValueRequest;
-import org.apache.isis.remoting.exchange.CloseSessionRequest;
-import org.apache.isis.remoting.exchange.ExecuteClientActionRequest;
-import org.apache.isis.remoting.exchange.ExecuteServerActionRequest;
-import org.apache.isis.remoting.exchange.FindInstancesRequest;
-import org.apache.isis.remoting.exchange.GetObjectRequest;
-import org.apache.isis.remoting.exchange.GetPropertiesRequest;
-import org.apache.isis.remoting.exchange.GetPropertiesResponse;
-import org.apache.isis.remoting.exchange.HasInstancesRequest;
-import org.apache.isis.remoting.exchange.OidForServiceRequest;
-import org.apache.isis.remoting.exchange.OpenSessionRequest;
-import org.apache.isis.remoting.exchange.OpenSessionResponse;
-import org.apache.isis.remoting.exchange.AuthorizationResponse;
-import org.apache.isis.remoting.exchange.ClearAssociationResponse;
-import org.apache.isis.remoting.exchange.ClearValueResponse;
-import org.apache.isis.remoting.exchange.CloseSessionResponse;
-import org.apache.isis.remoting.exchange.ExecuteClientActionResponse;
-import org.apache.isis.remoting.exchange.ExecuteServerActionResponse;
-import org.apache.isis.remoting.exchange.FindInstancesResponse;
-import org.apache.isis.remoting.exchange.GetObjectResponse;
-import org.apache.isis.remoting.exchange.HasInstancesResponse;
-import org.apache.isis.remoting.exchange.OidForServiceResponse;
-import org.apache.isis.remoting.exchange.ResolveFieldRequest;
-import org.apache.isis.remoting.exchange.ResolveFieldResponse;
-import org.apache.isis.remoting.exchange.ResolveObjectRequest;
-import org.apache.isis.remoting.exchange.ResolveObjectResponse;
-import org.apache.isis.remoting.exchange.SetAssociationRequest;
-import org.apache.isis.remoting.exchange.SetAssociationResponse;
-import org.apache.isis.remoting.exchange.SetValueRequest;
-import org.apache.isis.remoting.exchange.SetValueResponse;
-import org.apache.isis.remoting.protocol.encoding.internal.ObjectEncoderDecoder;
-import org.apache.isis.runtime.context.IsisContext;
-import org.apache.isis.runtime.logging.Logger;
-
-import com.google.inject.internal.Lists;
-
-
-/**
- * previously called <tt>DistributionLogger</tt>.
- */
-public class ServerFacadeLogger extends Logger implements ServerFacade {
-
- private static String PADDING = " ";
-
- private final ObjectEncoderDecoder encoder;
- private final ServerFacade decorated;
-
- public ServerFacadeLogger(final ObjectEncoderDecoder encoder, final ServerFacade decorated, final String level) {
- super(level);
- this.encoder = encoder;
- this.decorated = decorated;
- }
-
- public ServerFacadeLogger(final ObjectEncoderDecoder encoder, final ServerFacade decorated) {
- this(encoder, decorated, null);
- }
-
-
-
- @Override
- protected Class getDecoratedClass() {
- return decorated.getClass();
- }
-
- //////////////////////////////////////////////////////////////////
- // init, shutdown
- //////////////////////////////////////////////////////////////////
-
- public void init() {
- decorated.init();
- }
-
- public void shutdown() {
- decorated.shutdown();
- }
-
-
-
- //////////////////////////////////////////////////////////////////
- // authentication, authorization
- //////////////////////////////////////////////////////////////////
-
- public OpenSessionResponse openSession(OpenSessionRequest request) {
- log("authenticate");
- return decorated.openSession(request);
- }
-
- public AuthorizationResponse authorizeUsability(AuthorizationRequestUsability request) {
- log("authoriseUsability");
- return decorated.authorizeUsability(request);
- }
-
- public AuthorizationResponse authorizeVisibility(AuthorizationRequestVisibility request) {
- log("authoriseVisibility");
- return decorated.authorizeVisibility(request);
- }
-
- //////////////////////////////////////////////////////////////////
- // session
- //////////////////////////////////////////////////////////////////
-
- public CloseSessionResponse closeSession(CloseSessionRequest request) {
- AuthenticationSession session = request.getSession();
- log("close session " + session);
- CloseSessionResponse response = decorated.closeSession(request);
- return response;
- }
-
-
- //////////////////////////////////////////////////////////////////
- // setAssociation, setValue, clearAssociation, clearValue
- //////////////////////////////////////////////////////////////////
-
- public SetAssociationResponse setAssociation(
- SetAssociationRequest request) {
-
- String fieldIdentifier = request.getFieldIdentifier();
- IdentityData targetData = request.getTarget();
- IdentityData associateData = request.getAssociate();
-
- log("set association " + fieldIdentifier + indentedNewLine() + "target: " + dump(targetData) + indentedNewLine()
- + "associate: " + dump(associateData));
- SetAssociationResponse response = decorated.setAssociation(request);
- final ObjectData[] changes = response.getUpdates();
- log(" <-- changes: " + dump(changes));
- return response;
- }
-
- public SetValueResponse setValue(
- final SetValueRequest request) {
-
- String fieldIdentifier = request.getFieldIdentifier();
- IdentityData target = request.getTarget();
- EncodableObjectData value = request.getValue();
-
- log("set value " + fieldIdentifier + indentedNewLine() + "target: " + dump(target) + indentedNewLine() + "value: "
- + value);
- SetValueResponse response = decorated.setValue(request);
- final ObjectData[] updates = response.getUpdates();
- log(" <-- changes: " + dump(updates));
- return response;
- }
-
- public ClearAssociationResponse clearAssociation(
- final ClearAssociationRequest request) {
- String fieldIdentifier = request.getFieldIdentifier();
- IdentityData target = request.getTarget();
- IdentityData associate = request.getAssociate();
-
- log("clear association " + fieldIdentifier + indentedNewLine() + "target: " + dump(target) + indentedNewLine()
- + "associate: " + dump(associate));
- ClearAssociationResponse response = decorated.clearAssociation(request);
- final ObjectData[] updates = response.getUpdates();
- log(" <-- changes: " + dump(updates));
- return response;
- }
-
- public ClearValueResponse clearValue(
- final ClearValueRequest request) {
-
- String fieldIdentifier = request.getFieldIdentifier();
- IdentityData target = request.getTarget();
-
- log("clear value " + fieldIdentifier + indentedNewLine() + "target: " + dump(target));
- ClearValueResponse response = decorated.clearValue(request);
- final ObjectData[] updates = response.getUpdates();
- log(" <-- changes: " + dump(updates));
- return response;
- }
-
- //////////////////////////////////////////////////////////////////
- // executeClientAction, executeServerAction
- //////////////////////////////////////////////////////////////////
-
- public ExecuteServerActionResponse executeServerAction(
- final ExecuteServerActionRequest request) {
-
- ObjectActionType actionType = request.getActionType();
- String actionIdentifier = request.getActionIdentifier();
- ReferenceData target = request.getTarget();
- Data[] parameters = request.getParameters();
-
- log("execute action " + actionIdentifier + "/" + actionType + indentedNewLine() + "target: " + dump(target)
- + indentedNewLine() + "parameters: " + dump(parameters));
- ExecuteServerActionResponse result;
- try {
- result = decorated.executeServerAction(request);
- log(" <-- returns: " + dump(result.getReturn()));
- log(" <-- persisted target: " + dump(result.getPersistedTarget()));
- log(" <-- persisted parameters: " + dump(result.getPersistedParameters()));
- log(" <-- updates: " + dump(result.getUpdates()));
- log(" <-- disposed: " + dump(result.getDisposed()));
- } catch (final RuntimeException e) {
- log(" <-- exception: " + e.getClass().getName() + " " + e.getMessage());
- throw e;
- }
- return result;
- }
-
- public ExecuteClientActionResponse executeClientAction(
- ExecuteClientActionRequest request) {
-
- ReferenceData[] data = request.getData();
- int[] types = request.getTypes();
-
- List<Data> complete = Lists.newArrayList();
- StringBuilder str = new StringBuilder();
- for (int i = 0; i < data.length; i++) {
- str.append(indentedNewLine());
- str.append("[");
- str.append(i + 1);
- str.append("] ");
- switch (types[i]) {
- case ClientTransactionEvent.ADD:
- str.append("persisted: ");
- break;
- case ClientTransactionEvent.CHANGE:
- str.append("changed: ");
- break;
- case ClientTransactionEvent.DELETE:
- str.append("deleted: ");
- break;
- }
- dump(str, data[i], 3, complete);
- }
- log("execute client action " + str);
-
- final ExecuteClientActionResponse results = decorated.executeClientAction(request);
-
- complete = new Vector();
- str = new StringBuilder();
- final ReferenceData[] persistedUpdates = results.getPersisted();
- final Version[] changedVersions = results.getChanged();
- for (int i = 0; i < persistedUpdates.length; i++) {
- str.append(indentedNewLine());
- str.append("[");
- str.append(i + 1);
- str.append("] ");
- switch (types[i]) {
- case ClientTransactionEvent.ADD:
- str.append("persisted: ");
- dump(str, persistedUpdates[i], 3, complete);
- break;
- case ClientTransactionEvent.CHANGE:
- str.append("changed: ");
- str.append(changedVersions[i]);
- break;
- }
- }
- log(" <--- execute client action results" + str);
- /*
- * log(" <-- persisted: " + dump(results.getPersisted())); log(" <-- changed: " +
- * dump(results.getChanged()));
- */
- return results;
- }
-
-
- //////////////////////////////////////////////////////////////////
- // getObject, resolveXxx
- //////////////////////////////////////////////////////////////////
-
- public GetObjectResponse getObject(
- GetObjectRequest request) {
-
- Oid oid = request.getOid();
-
- log("get object " + oid);
- GetObjectResponse response = decorated.getObject(request);
- final ObjectData data = response.getObjectData();
- log(" <-- data: " + data);
- return response;
- }
-
- public ResolveFieldResponse resolveField(
- ResolveFieldRequest request) {
-
- IdentityData target = request.getTarget();
- String fieldIdentifier = request.getFieldIdentifier();
-
- log("resolve field " + fieldIdentifier + " - " + dump(target));
- ResolveFieldResponse response = decorated.resolveField(request);
- final Data result = response.getData();
- log(" <-- data: " + dump(result));
- return response;
- }
-
- public ResolveObjectResponse resolveImmediately(
- ResolveObjectRequest request) {
-
- IdentityData target = request.getTarget();
-
- log("resolve immediately" + dump(target));
- ResolveObjectResponse response = decorated.resolveImmediately(request);
- final ObjectData objectData = response.getObjectData();
- log(" <-- data: " + dump(objectData));
- return response;
- }
-
-
- //////////////////////////////////////////////////////////////////
- // findInstances, hasInstances
- //////////////////////////////////////////////////////////////////
-
- public FindInstancesResponse findInstances(
- FindInstancesRequest request) {
-
- PersistenceQueryData criteria = request.getCriteria();
-
- log("find instances " + criteria);
- FindInstancesResponse response = decorated.findInstances(request);
- final ObjectData[] instances = response.getInstances();
- log(" <-- instances: " + dump(instances));
- return response;
- }
-
- public HasInstancesResponse hasInstances(
- HasInstancesRequest request) {
-
- String specificationName = request.getSpecificationName();
-
- log("has instances " + specificationName);
- HasInstancesResponse response = decorated.hasInstances(request);
- final boolean hasInstances = response.hasInstances();
- log(" <-- instances: " + (hasInstances ? "yes" : "no"));
- return response;
- }
-
- //////////////////////////////////////////////////////////////////
- // getProperties
- //////////////////////////////////////////////////////////////////
-
- public GetPropertiesResponse getProperties(GetPropertiesRequest request) {
- log("get properties");
- GetPropertiesResponse response = decorated.getProperties(request);
- final Properties properties = response.getProperties();
- log(" <-- data: " + properties);
- return response;
- }
-
- //////////////////////////////////////////////////////////////////
- // services
- //////////////////////////////////////////////////////////////////
-
- public OidForServiceResponse oidForService(
- OidForServiceRequest request) {
-
- String serviceId = request.getServiceId();
-
- log("oid for resource " + serviceId);
-
- OidForServiceResponse response = decorated.oidForService(request);
- final IdentityData oidData = response.getOidData();
- log(" <-- data: " + dump(oidData));
- return response;
- }
-
-
- //////////////////////////////////////////////////////////////////
- // Helpers
- //////////////////////////////////////////////////////////////////
-
- private String dump(final Data data) {
- final StringBuilder str = new StringBuilder();
- dump(str, data, 1, new ArrayList<Data>());
- return str.toString();
- }
-
- private String dump(final Data[] data) {
- final StringBuilder str = new StringBuilder();
- for (int i = 0; i < data.length; i++) {
- str.append("\n [");
- str.append(i + 1);
- str.append("] ");
- dump(str, data[i], 3, new ArrayList<Data>());
- }
- return str.toString();
- }
-
- private void dump(final StringBuilder str, final Data data, final int indent, final List<Data> complete) {
- if (data == null) {
- str.append("null");
- } else if (data instanceof NullData) {
- str.append("NULL (NullData object)");
- } else if (data instanceof EncodableObjectData) {
- final EncodableObjectData encodeableObjectData = ((EncodableObjectData) data);
- str.append("ValueData@" + Integer.toHexString(encodeableObjectData.hashCode()) + " " + encodeableObjectData.getType()
- + ":" + encodeableObjectData.getEncodedObjectData());
- } else if (data instanceof IdentityData) {
- final IdentityData referenceData = (IdentityData) data;
- str.append("ReferenceData@" + Integer.toHexString(referenceData.hashCode()) + " " + referenceData.getType() + ":"
- + referenceData.getOid() + ":" + referenceData.getVersion());
- } else if (data instanceof ObjectData) {
- dumpObjectData(str, data, indent, complete);
- } else if (data instanceof CollectionData) {
- dumpCollectionData(str, data, indent, complete);
- } else {
- str.append("Unknown: " + data);
- }
- }
-
- private void dumpCollectionData(final StringBuilder str, final Data data, final int indent, final List<Data> complete) {
- final CollectionData objectData = ((CollectionData) data);
- str.append("CollectionData@" + Integer.toHexString(objectData.hashCode()) + " " + objectData.getType() + ":"
- + objectData.getOid() + ":" + (objectData.hasAllElements() ? "A" : "-") + ":" + objectData.getVersion());
- final Object[] elements = objectData.getElements();
- for (int i = 0; elements != null && i < elements.length; i++) {
- str.append("\n");
- str.append(padding(indent));
- str.append(i + 1);
- str.append(") ");
- dump(str, (Data) elements[i], indent + 1, complete);
- }
- }
-
- private void dumpObjectData(final StringBuilder str, final Data data, final int indent, final List<Data> complete) {
- final ObjectData objectData = ((ObjectData) data);
- str.append("ObjectData@" + Integer.toHexString(objectData.hashCode()) + " " + objectData.getType() + ":"
- + objectData.getOid() + ":" + (objectData.hasCompleteData() ? "C" : "-") + ":" + objectData.getVersion());
-
- if (complete.contains(objectData)) {
- str.append(" (already detailed)");
- return;
- }
-
- complete.add(objectData);
- final ObjectSpecification spec = IsisContext.getSpecificationLoader().loadSpecification(data.getType());
- final ObjectAssociation[] fs = encoder.getFieldOrder(spec);
- final Object[] fields = objectData.getFieldContent();
- for (int i = 0; fields != null && i < fields.length; i++) {
- str.append("\n");
- str.append(padding(indent));
- str.append(i + 1);
- str.append(") ");
- str.append(fs[i].getId());
- str.append(": ");
- dump(str, (Data) fields[i], indent + 1, complete);
- }
- }
-
- private String indentedNewLine() {
- return "\n" + padding(2);
- }
-
- private String padding(final int indent) {
- final int length = indent * 3;
- while (length > PADDING.length()) {
- PADDING += PADDING;
- }
- return PADDING.substring(0, length);
- }
-
-
-}
+import java.util.ArrayList;
+import java.util.List;
+import java.util.Properties;
+import java.util.Vector;
+
+import org.apache.isis.metamodel.adapter.oid.Oid;
+import org.apache.isis.metamodel.adapter.version.Version;
+import org.apache.isis.metamodel.authentication.AuthenticationSession;
+import org.apache.isis.metamodel.spec.ObjectSpecification;
+import org.apache.isis.metamodel.spec.feature.ObjectActionType;
+import org.apache.isis.metamodel.spec.feature.ObjectAssociation;
+import org.apache.isis.remoting.client.transaction.ClientTransactionEvent;
+import org.apache.isis.remoting.data.Data;
+import org.apache.isis.remoting.data.common.CollectionData;
+import org.apache.isis.remoting.data.common.EncodableObjectData;
+import org.apache.isis.remoting.data.common.IdentityData;
+import org.apache.isis.remoting.data.common.NullData;
+import org.apache.isis.remoting.data.common.ObjectData;
+import org.apache.isis.remoting.data.common.ReferenceData;
+import org.apache.isis.remoting.data.query.PersistenceQueryData;
+import org.apache.isis.remoting.exchange.AuthorizationRequestUsability;
+import org.apache.isis.remoting.exchange.AuthorizationRequestVisibility;
+import org.apache.isis.remoting.exchange.AuthorizationResponse;
+import org.apache.isis.remoting.exchange.ClearAssociationRequest;
+import org.apache.isis.remoting.exchange.ClearAssociationResponse;
+import org.apache.isis.remoting.exchange.ClearValueRequest;
+import org.apache.isis.remoting.exchange.ClearValueResponse;
+import org.apache.isis.remoting.exchange.CloseSessionRequest;
+import org.apache.isis.remoting.exchange.CloseSessionResponse;
+import org.apache.isis.remoting.exchange.ExecuteClientActionRequest;
+import org.apache.isis.remoting.exchange.ExecuteClientActionResponse;
+import org.apache.isis.remoting.exchange.ExecuteServerActionRequest;
+import org.apache.isis.remoting.exchange.ExecuteServerActionResponse;
+import org.apache.isis.remoting.exchange.FindInstancesRequest;
+import org.apache.isis.remoting.exchange.FindInstancesResponse;
+import org.apache.isis.remoting.exchange.GetObjectRequest;
+import org.apache.isis.remoting.exchange.GetObjectResponse;
+import org.apache.isis.remoting.exchange.GetPropertiesRequest;
+import org.apache.isis.remoting.exchange.GetPropertiesResponse;
+import org.apache.isis.remoting.exchange.HasInstancesRequest;
+import org.apache.isis.remoting.exchange.HasInstancesResponse;
+import org.apache.isis.remoting.exchange.OidForServiceRequest;
+import org.apache.isis.remoting.exchange.OidForServiceResponse;
+import org.apache.isis.remoting.exchange.OpenSessionRequest;
+import org.apache.isis.remoting.exchange.OpenSessionResponse;
+import org.apache.isis.remoting.exchange.ResolveFieldRequest;
+import org.apache.isis.remoting.exchange.ResolveFieldResponse;
+import org.apache.isis.remoting.exchange.ResolveObjectRequest;
+import org.apache.isis.remoting.exchange.ResolveObjectResponse;
+import org.apache.isis.remoting.exchange.SetAssociationRequest;
+import org.apache.isis.remoting.exchange.SetAssociationResponse;
+import org.apache.isis.remoting.exchange.SetValueRequest;
+import org.apache.isis.remoting.exchange.SetValueResponse;
+import org.apache.isis.remoting.protocol.ObjectEncoderDecoder;
+import org.apache.isis.runtime.context.IsisContext;
+import org.apache.isis.runtime.logging.Logger;
+
+import com.google.inject.internal.Lists;
+
+/**
+ * previously called <tt>DistributionLogger</tt>.
+ */
+public class ServerFacadeLogger extends Logger implements ServerFacade {
+
+ private static String PADDING = " ";
+
+ private final ObjectEncoderDecoder encoder;
+ private final ServerFacade decorated;
+
+ public ServerFacadeLogger(final ObjectEncoderDecoder encoder, final ServerFacade decorated, final String level) {
+ super(level);
+ this.encoder = encoder;
+ this.decorated = decorated;
+ }
+
+ public ServerFacadeLogger(final ObjectEncoderDecoder encoder, final ServerFacade decorated) {
+ this(encoder, decorated, null);
+ }
+
+ @Override
+ protected Class getDecoratedClass() {
+ return decorated.getClass();
+ }
+
+ // ////////////////////////////////////////////////////////////////
+ // init, shutdown
+ // ////////////////////////////////////////////////////////////////
+
+ @Override
+ public void init() {
+ decorated.init();
+ }
+
+ @Override
+ public void shutdown() {
+ decorated.shutdown();
+ }
+
+ // ////////////////////////////////////////////////////////////////
+ // authentication, authorization
+ // ////////////////////////////////////////////////////////////////
+
+ @Override
+ public OpenSessionResponse openSession(OpenSessionRequest request) {
+ log("authenticate");
+ return decorated.openSession(request);
+ }
+
+ @Override
+ public AuthorizationResponse authorizeUsability(AuthorizationRequestUsability request) {
+ log("authoriseUsability");
+ return decorated.authorizeUsability(request);
+ }
+
+ @Override
+ public AuthorizationResponse authorizeVisibility(AuthorizationRequestVisibility request) {
+ log("authoriseVisibility");
+ return decorated.authorizeVisibility(request);
+ }
+
+ // ////////////////////////////////////////////////////////////////
+ // session
+ // ////////////////////////////////////////////////////////////////
+
+ @Override
+ public CloseSessionResponse closeSession(CloseSessionRequest request) {
+ AuthenticationSession session = request.getSession();
+ log("close session " + session);
+ CloseSessionResponse response = decorated.closeSession(request);
+ return response;
+ }
+
+ // ////////////////////////////////////////////////////////////////
+ // setAssociation, setValue, clearAssociation, clearValue
+ // ////////////////////////////////////////////////////////////////
+
+ @Override
+ public SetAssociationResponse setAssociation(SetAssociationRequest request) {
+
+ String fieldIdentifier = request.getFieldIdentifier();
+ IdentityData targetData = request.getTarget();
+ IdentityData associateData = request.getAssociate();
+
+ log("set association " + fieldIdentifier + indentedNewLine() + "target: " + dump(targetData)
+ + indentedNewLine() + "associate: " + dump(associateData));
+ SetAssociationResponse response = decorated.setAssociation(request);
+ final ObjectData[] changes = response.getUpdates();
+ log(" <-- changes: " + dump(changes));
+ return response;
+ }
+
+ @Override
+ public SetValueResponse setValue(final SetValueRequest request) {
+
+ String fieldIdentifier = request.getFieldIdentifier();
+ IdentityData target = request.getTarget();
+ EncodableObjectData value = request.getValue();
+
+ log("set value " + fieldIdentifier + indentedNewLine() + "target: " + dump(target) + indentedNewLine()
+ + "value: " + value);
+ SetValueResponse response = decorated.setValue(request);
+ final ObjectData[] updates = response.getUpdates();
+ log(" <-- changes: " + dump(updates));
+ return response;
+ }
+
+ @Override
+ public ClearAssociationResponse clearAssociation(final ClearAssociationRequest request) {
+ String fieldIdentifier = request.getFieldIdentifier();
+ IdentityData target = request.getTarget();
+ IdentityData associate = request.getAssociate();
+
+ log("clear association " + fieldIdentifier + indentedNewLine() + "target: " + dump(target) + indentedNewLine()
+ + "associate: " + dump(associate));
+ ClearAssociationResponse response = decorated.clearAssociation(request);
+ final ObjectData[] updates = response.getUpdates();
+ log(" <-- changes: " + dump(updates));
+ return response;
+ }
+
+ @Override
+ public ClearValueResponse clearValue(final ClearValueRequest request) {
+
+ String fieldIdentifier = request.getFieldIdentifier();
+ IdentityData target = request.getTarget();
+
+ log("clear value " + fieldIdentifier + indentedNewLine() + "target: " + dump(target));
+ ClearValueResponse response = decorated.clearValue(request);
+ final ObjectData[] updates = response.getUpdates();
+ log(" <-- changes: " + dump(updates));
+ return response;
+ }
+
+ // ////////////////////////////////////////////////////////////////
+ // executeClientAction, executeServerAction
+ // ////////////////////////////////////////////////////////////////
+
+ @Override
+ public ExecuteServerActionResponse executeServerAction(final ExecuteServerActionRequest request) {
+
+ ObjectActionType actionType = request.getActionType();
+ String actionIdentifier = request.getActionIdentifier();
+ ReferenceData target = request.getTarget();
+ Data[] parameters = request.getParameters();
+
+ log("execute action " + actionIdentifier + "/" + actionType + indentedNewLine() + "target: " + dump(target)
+ + indentedNewLine() + "parameters: " + dump(parameters));
+ ExecuteServerActionResponse result;
+ try {
+ result = decorated.executeServerAction(request);
+ log(" <-- returns: " + dump(result.getReturn()));
+ log(" <-- persisted target: " + dump(result.getPersistedTarget()));
+ log(" <-- persisted parameters: " + dump(result.getPersistedParameters()));
+ log(" <-- updates: " + dump(result.getUpdates()));
+ log(" <-- disposed: " + dump(result.getDisposed()));
+ } catch (final RuntimeException e) {
+ log(" <-- exception: " + e.getClass().getName() + " " + e.getMessage());
+ throw e;
+ }
+ return result;
+ }
+
+ @Override
+ public ExecuteClientActionResponse executeClientAction(ExecuteClientActionRequest request) {
+
+ ReferenceData[] data = request.getData();
+ int[] types = request.getTypes();
+
+ List<Data> complete = Lists.newArrayList();
+ StringBuilder str = new StringBuilder();
+ for (int i = 0; i < data.length; i++) {
+ str.append(indentedNewLine());
+ str.append("[");
+ str.append(i + 1);
+ str.append("] ");
+ switch (types[i]) {
+ case ClientTransactionEvent.ADD:
+ str.append("persisted: ");
+ break;
+ case ClientTransactionEvent.CHANGE:
+ str.append("changed: ");
+ break;
+ case ClientTransactionEvent.DELETE:
+ str.append("deleted: ");
+ break;
+ }
+ dump(str, data[i], 3, complete);
+ }
+ log("execute client action " + str);
+
+ final ExecuteClientActionResponse results = decorated.executeClientAction(request);
+
+ complete = new Vector();
+ str = new StringBuilder();
+ final ReferenceData[] persistedUpdates = results.getPersisted();
+ final Version[] changedVersions = results.getChanged();
+ for (int i = 0; i < persistedUpdates.length; i++) {
+ str.append(indentedNewLine());
+ str.append("[");
+ str.append(i + 1);
+ str.append("] ");
+ switch (types[i]) {
+ case ClientTransactionEvent.ADD:
+ str.append("persisted: ");
+ dump(str, persistedUpdates[i], 3, complete);
+ break;
+ case ClientTransactionEvent.CHANGE:
+ str.append("changed: ");
+ str.append(changedVersions[i]);
+ break;
+ }
+ }
+ log(" <--- execute client action results" + str);
+ /*
+ * log(" <-- persisted: " + dump(results.getPersisted())); log(" <-- changed: " + dump(results.getChanged()));
+ */
+ return results;
+ }
+
+ // ////////////////////////////////////////////////////////////////
+ // getObject, resolveXxx
+ // ////////////////////////////////////////////////////////////////
+
+ @Override
+ public GetObjectResponse getObject(GetObjectRequest request) {
+
+ Oid oid = request.getOid();
+
+ log("get object " + oid);
+ GetObjectResponse response = decorated.getObject(request);
+ final ObjectData data = response.getObjectData();
+ log(" <-- data: " + data);
+ return response;
+ }
+
+ @Override
+ public ResolveFieldResponse resolveField(ResolveFieldRequest request) {
+
+ IdentityData target = request.getTarget();
+ String fieldIdentifier = request.getFieldIdentifier();
+
+ log("resolve field " + fieldIdentifier + " - " + dump(target));
+ ResolveFieldResponse response = decorated.resolveField(request);
+ final Data result = response.getData();
+ log(" <-- data: " + dump(result));
+ return response;
+ }
+
+ @Override
+ public ResolveObjectResponse resolveImmediately(ResolveObjectRequest request) {
+
+ IdentityData target = request.getTarget();
+
+ log("resolve immediately" + dump(target));
+ ResolveObjectResponse response = decorated.resolveImmediately(request);
+ final ObjectData objectData = response.getObjectData();
+ log(" <-- data: " + dump(objectData));
+ return response;
+ }
+
+ // ////////////////////////////////////////////////////////////////
+ // findInstances, hasInstances
+ // ////////////////////////////////////////////////////////////////
+
+ @Override
+ public FindInstancesResponse findInstances(FindInstancesRequest request) {
+
+ PersistenceQueryData criteria = request.getCriteria();
+
+ log("find instances " + criteria);
+ FindInstancesResponse response = decorated.findInstances(request);
+ final ObjectData[] instances = response.getInstances();
+ log(" <-- instances: " + dump(instances));
+ return response;
+ }
+
+ @Override
+ public HasInstancesResponse hasInstances(HasInstancesRequest request) {
+
+ String specificationName = request.getSpecificationName();
+
+ log("has instances " + specificationName);
+ HasInstancesResponse response = decorated.hasInstances(request);
+ final boolean hasInstances = response.hasInstances();
+ log(" <-- instances: " + (hasInstances ? "yes" : "no"));
+ return response;
+ }
+
+ // ////////////////////////////////////////////////////////////////
+ // getProperties
+ // ////////////////////////////////////////////////////////////////
+
+ @Override
+ public GetPropertiesResponse getProperties(GetPropertiesRequest request) {
+ log("get properties");
+ GetPropertiesResponse response = decorated.getProperties(request);
+ final Properties properties = response.getProperties();
+ log(" <-- data: " + properties);
+ return response;
+ }
+
+ // ////////////////////////////////////////////////////////////////
+ // services
+ // ////////////////////////////////////////////////////////////////
+
+ @Override
+ public OidForServiceResponse oidForService(OidForServiceRequest request) {
+
+ String serviceId = request.getServiceId();
+
+ log("oid for resource " + serviceId);
+
+ OidForServiceResponse response = decorated.oidForService(request);
+ final IdentityData oidData = response.getOidData();
+ log(" <-- data: " + dump(oidData));
+ return response;
+ }
+
+ // ////////////////////////////////////////////////////////////////
+ // Helpers
+ // ////////////////////////////////////////////////////////////////
+
+ private String dump(final Data data) {
+ final StringBuilder str = new StringBuilder();
+ dump(str, data, 1, new ArrayList<Data>());
+ return str.toString();
+ }
+
+ private String dump(final Data[] data) {
+ final StringBuilder str = new StringBuilder();
+ for (int i = 0; i < data.length; i++) {
+ str.append("\n [");
+ str.append(i + 1);
+ str.append("] ");
+ dump(str, data[i], 3, new ArrayList<Data>());
+ }
+ return str.toString();
+ }
+
+ private void dump(final StringBuilder str, final Data data, final int indent, final List<Data> complete) {
+ if (data == null) {
+ str.append("null");
+ } else if (data instanceof NullData) {
+ str.append("NULL (NullData object)");
+ } else if (data instanceof EncodableObjectData) {
+ final EncodableObjectData encodeableObjectData = ((EncodableObjectData) data);
+ str.append("ValueData@" + Integer.toHexString(encodeableObjectData.hashCode()) + " "
+ + encodeableObjectData.getType() + ":" + encodeableObjectData.getEncodedObjectData());
+ } else if (data instanceof IdentityData) {
+ final IdentityData referenceData = (IdentityData) data;
+ str.append("ReferenceData@" + Integer.toHexString(referenceData.hashCode()) + " " + referenceData.getType()
+ + ":" + referenceData.getOid() + ":" + referenceData.getVersion());
+ } else if (data instanceof ObjectData) {
+ dumpObjectData(str, data, indent, complete);
+ } else if (data instanceof CollectionData) {
+ dumpCollectionData(str, data, indent, complete);
+ } else {
+ str.append("Unknown: " + data);
+ }
+ }
+
+ private void dumpCollectionData(final StringBuilder str, final Data data, final int indent,
+ final List<Data> complete) {
+ final CollectionData objectData = ((CollectionData) data);
+ str.append("CollectionData@" + Integer.toHexString(objectData.hashCode()) + " " + objectData.getType() + ":"
+ + objectData.getOid() + ":" + (objectData.hasAllElements() ? "A" : "-") + ":" + objectData.getVersion());
+ final Object[] elements = objectData.getElements();
+ for (int i = 0; elements != null && i < elements.length; i++) {
+ str.append("\n");
+ str.append(padding(indent));
+ str.append(i + 1);
+ str.append(") ");
+ dump(str, (Data) elements[i], indent + 1, complete);
+ }
+ }
+
+ private void dumpObjectData(final StringBuilder str, final Data data, final int indent, final List<Data> complete) {
+ final ObjectData objectData = ((ObjectData) data);
+ str.append("ObjectData@" + Integer.toHexString(objectData.hashCode()) + " " + objectData.getType() + ":"
+ + objectData.getOid() + ":" + (objectData.hasCompleteData() ? "C" : "-") + ":" + objectData.getVersion());
+
+ if (complete.contains(objectData)) {
+ str.append(" (already detailed)");
+ return;
+ }
+
+ complete.add(objectData);
+ final ObjectSpecification spec = IsisContext.getSpecificationLoader().loadSpecification(data.getType());
+ final ObjectAssociation[] fs = encoder.getFieldOrder(spec);
+ final Object[] fields = objectData.getFieldContent();
+ for (int i = 0; fields != null && i < fields.length; i++) {
+ str.append("\n");
+ str.append(padding(indent));
+ str.append(i + 1);
+ str.append(") ");
+ str.append(fs[i].getId());
+ str.append(": ");
+ dump(str, (Data) fields[i], indent + 1, complete);
+ }
+ }
+
+ private String indentedNewLine() {
+ return "\n" + padding(2);
+ }
+
+ private String padding(final int indent) {
+ final int length = indent * 3;
+ while (length > PADDING.length()) {
+ PADDING += PADDING;
+ }
+ return PADDING.substring(0, length);
+ }
+
+}
Modified: incubator/isis/trunk/alternatives/remoting/common/src/main/java/org/apache/isis/remoting/facade/impl/ServerFacadeImpl.java
URL: http://svn.apache.org/viewvc/incubator/isis/trunk/alternatives/remoting/common/src/main/java/org/apache/isis/remoting/facade/impl/ServerFacadeImpl.java?rev=1031974&r1=1031973&r2=1031974&view=diff
==============================================================================
--- incubator/isis/trunk/alternatives/remoting/common/src/main/java/org/apache/isis/remoting/facade/impl/ServerFacadeImpl.java (original)
+++ incubator/isis/trunk/alternatives/remoting/common/src/main/java/org/apache/isis/remoting/facade/impl/ServerFacadeImpl.java Sat Nov 6 08:46:35 2010
@@ -93,7 +93,7 @@ import org.apache.isis.remoting.exchange
import org.apache.isis.remoting.exchange.SetValueRequest;
import org.apache.isis.remoting.exchange.SetValueResponse;
import org.apache.isis.remoting.facade.ServerFacade;
-import org.apache.isis.remoting.protocol.encoding.internal.ObjectEncoderDecoder;
+import org.apache.isis.remoting.protocol.ObjectEncoderDecoder;
import org.apache.isis.runtime.authentication.AuthenticationManager;
import org.apache.isis.runtime.authentication.AuthenticationRequestPassword;
import org.apache.isis.runtime.context.IsisContext;
Copied: incubator/isis/trunk/alternatives/remoting/common/src/main/java/org/apache/isis/remoting/marshalling/ClientMarshaller.java (from r1031826, incubator/isis/trunk/alternatives/remoting/common/src/main/java/org/apache/isis/remoting/protocol/ClientMarshaller.java)
URL: http://svn.apache.org/viewvc/incubator/isis/trunk/alternatives/remoting/common/src/main/java/org/apache/isis/remoting/marshalling/ClientMarshaller.java?p2=incubator/isis/trunk/alternatives/remoting/common/src/main/java/org/apache/isis/remoting/marshalling/ClientMarshaller.java&p1=incubator/isis/trunk/alternatives/remoting/common/src/main/java/org/apache/isis/remoting/protocol/ClientMarshaller.java&r1=1031826&r2=1031974&rev=1031974&view=diff
==============================================================================
--- incubator/isis/trunk/alternatives/remoting/common/src/main/java/org/apache/isis/remoting/protocol/ClientMarshaller.java (original)
+++ incubator/isis/trunk/alternatives/remoting/common/src/main/java/org/apache/isis/remoting/marshalling/ClientMarshaller.java Sat Nov 6 08:46:35 2010
@@ -18,7 +18,7 @@
*/
-package org.apache.isis.remoting.protocol;
+package org.apache.isis.remoting.marshalling;
import java.io.IOException;
Copied: incubator/isis/trunk/alternatives/remoting/common/src/main/java/org/apache/isis/remoting/marshalling/Marshaller.java (from r1031826, incubator/isis/trunk/alternatives/remoting/common/src/main/java/org/apache/isis/remoting/protocol/Marshaller.java)
URL: http://svn.apache.org/viewvc/incubator/isis/trunk/alternatives/remoting/common/src/main/java/org/apache/isis/remoting/marshalling/Marshaller.java?p2=incubator/isis/trunk/alternatives/remoting/common/src/main/java/org/apache/isis/remoting/marshalling/Marshaller.java&p1=incubator/isis/trunk/alternatives/remoting/common/src/main/java/org/apache/isis/remoting/protocol/Marshaller.java&r1=1031826&r2=1031974&rev=1031974&view=diff
==============================================================================
--- incubator/isis/trunk/alternatives/remoting/common/src/main/java/org/apache/isis/remoting/protocol/Marshaller.java (original)
+++ incubator/isis/trunk/alternatives/remoting/common/src/main/java/org/apache/isis/remoting/marshalling/Marshaller.java Sat Nov 6 08:46:35 2010
@@ -18,7 +18,7 @@
*/
-package org.apache.isis.remoting.protocol;
+package org.apache.isis.remoting.marshalling;
import org.apache.isis.commons.components.ApplicationScopedComponent;
Copied: incubator/isis/trunk/alternatives/remoting/common/src/main/java/org/apache/isis/remoting/marshalling/MarshallerAbstract.java (from r1031826, incubator/isis/trunk/alternatives/remoting/common/src/main/java/org/apache/isis/remoting/protocol/MarshallerAbstract.java)
URL: http://svn.apache.org/viewvc/incubator/isis/trunk/alternatives/remoting/common/src/main/java/org/apache/isis/remoting/marshalling/MarshallerAbstract.java?p2=incubator/isis/trunk/alternatives/remoting/common/src/main/java/org/apache/isis/remoting/marshalling/MarshallerAbstract.java&p1=incubator/isis/trunk/alternatives/remoting/common/src/main/java/org/apache/isis/remoting/protocol/MarshallerAbstract.java&r1=1031826&r2=1031974&rev=1031974&view=diff
==============================================================================
--- incubator/isis/trunk/alternatives/remoting/common/src/main/java/org/apache/isis/remoting/protocol/MarshallerAbstract.java (original)
+++ incubator/isis/trunk/alternatives/remoting/common/src/main/java/org/apache/isis/remoting/marshalling/MarshallerAbstract.java Sat Nov 6 08:46:35 2010
@@ -18,7 +18,7 @@
*/
-package org.apache.isis.remoting.protocol;
+package org.apache.isis.remoting.marshalling;
import java.io.IOException;
@@ -49,7 +49,7 @@ public abstract class MarshallerAbstract
public void init() {
transport.init();
- keepAlive = getConfiguration().getBoolean(ProtocolConstants.KEEPALIVE_KEY, ProtocolConstants.KEEPALIVE_DEFAULT);
+ keepAlive = getConfiguration().getBoolean(MarshallingConstants.KEEPALIVE_KEY, MarshallingConstants.KEEPALIVE_DEFAULT);
if (LOG.isInfoEnabled()) {
LOG.info("keepAlive=" + keepAlive);
}
Copied: incubator/isis/trunk/alternatives/remoting/common/src/main/java/org/apache/isis/remoting/marshalling/MarshallingConstants.java (from r1031826, incubator/isis/trunk/alternatives/remoting/common/src/main/java/org/apache/isis/remoting/protocol/encoding/EncodingProtocolConstants.java)
URL: http://svn.apache.org/viewvc/incubator/isis/trunk/alternatives/remoting/common/src/main/java/org/apache/isis/remoting/marshalling/MarshallingConstants.java?p2=incubator/isis/trunk/alternatives/remoting/common/src/main/java/org/apache/isis/remoting/marshalling/MarshallingConstants.java&p1=incubator/isis/trunk/alternatives/remoting/common/src/main/java/org/apache/isis/remoting/protocol/encoding/EncodingProtocolConstants.java&r1=1031826&r2=1031974&rev=1031974&view=diff
==============================================================================
--- incubator/isis/trunk/alternatives/remoting/common/src/main/java/org/apache/isis/remoting/protocol/encoding/EncodingProtocolConstants.java (original)
+++ incubator/isis/trunk/alternatives/remoting/common/src/main/java/org/apache/isis/remoting/marshalling/MarshallingConstants.java Sat Nov 6 08:46:35 2010
@@ -17,16 +17,23 @@
* under the License.
*/
+package org.apache.isis.remoting.marshalling;
-package org.apache.isis.remoting.protocol.encoding;
-
-import org.apache.isis.metamodel.config.ConfigurationConstants;
-
-public final class EncodingProtocolConstants {
-
- public static final String ENCODER_CLASS_NAME_LIST_DEPRECATED = ConfigurationConstants.ROOT + "criteria.encoders";
- public static final String ENCODER_CLASS_NAME_LIST = ConfigurationConstants.ROOT + "persistence-query.encoders";
-
- private EncodingProtocolConstants() {}
-
-}
+import org.apache.isis.metamodel.config.ConfigurationConstants;
+import org.apache.isis.remoting.protocol.ProtocolConstants;
+import org.apache.isis.remoting.protocol.ProtocolInstaller;
+
+public final class MarshallingConstants {
+
+ public static final String ROOT = ConfigurationConstants.ROOT + ProtocolInstaller.TYPE + ".";
+
+ public static final String KEEPALIVE_KEY = MarshallingConstants.ROOT + "keepalive";
+ public static final boolean KEEPALIVE_DEFAULT = false;
+
+ public static final String DEBUGGING_KEY = ProtocolConstants.ROOT + "debugging";
+ public static final boolean DEBUGGING_DEFAULT = false;
+
+ private MarshallingConstants() {
+ }
+
+}
Added: incubator/isis/trunk/alternatives/remoting/common/src/main/java/org/apache/isis/remoting/marshalling/MarshallingInstaller.java
URL: http://svn.apache.org/viewvc/incubator/isis/trunk/alternatives/remoting/common/src/main/java/org/apache/isis/remoting/marshalling/MarshallingInstaller.java?rev=1031974&view=auto
==============================================================================
--- incubator/isis/trunk/alternatives/remoting/common/src/main/java/org/apache/isis/remoting/marshalling/MarshallingInstaller.java (added)
+++ incubator/isis/trunk/alternatives/remoting/common/src/main/java/org/apache/isis/remoting/marshalling/MarshallingInstaller.java Sat Nov 6 08:46:35 2010
@@ -0,0 +1,30 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+
+package org.apache.isis.remoting.marshalling;
+
+import org.apache.isis.commons.components.Installer;
+
+/**
+ * TODO: not yet in use, but holds the {@link #TYPE} constant.
+ */
+public interface MarshallingInstaller extends Installer {
+
+ public static String TYPE = "marshalling";
+}
Copied: incubator/isis/trunk/alternatives/remoting/common/src/main/java/org/apache/isis/remoting/marshalling/ServerMarshaller.java (from r1031826, incubator/isis/trunk/alternatives/remoting/common/src/main/java/org/apache/isis/remoting/protocol/ServerMarshaller.java)
URL: http://svn.apache.org/viewvc/incubator/isis/trunk/alternatives/remoting/common/src/main/java/org/apache/isis/remoting/marshalling/ServerMarshaller.java?p2=incubator/isis/trunk/alternatives/remoting/common/src/main/java/org/apache/isis/remoting/marshalling/ServerMarshaller.java&p1=incubator/isis/trunk/alternatives/remoting/common/src/main/java/org/apache/isis/remoting/protocol/ServerMarshaller.java&r1=1031826&r2=1031974&rev=1031974&view=diff
==============================================================================
--- incubator/isis/trunk/alternatives/remoting/common/src/main/java/org/apache/isis/remoting/protocol/ServerMarshaller.java (original)
+++ incubator/isis/trunk/alternatives/remoting/common/src/main/java/org/apache/isis/remoting/marshalling/ServerMarshaller.java Sat Nov 6 08:46:35 2010
@@ -18,7 +18,7 @@
*/
-package org.apache.isis.remoting.protocol;
+package org.apache.isis.remoting.marshalling;
import java.io.IOException;
Copied: incubator/isis/trunk/alternatives/remoting/common/src/main/java/org/apache/isis/remoting/protocol/ObjectEncoderDecoder.java (from r1031826, incubator/isis/trunk/alternatives/remoting/common/src/main/java/org/apache/isis/remoting/protocol/encoding/internal/ObjectEncoderDecoder.java)
URL: http://svn.apache.org/viewvc/incubator/isis/trunk/alternatives/remoting/common/src/main/java/org/apache/isis/remoting/protocol/ObjectEncoderDecoder.java?p2=incubator/isis/trunk/alternatives/remoting/common/src/main/java/org/apache/isis/remoting/protocol/ObjectEncoderDecoder.java&p1=incubator/isis/trunk/alternatives/remoting/common/src/main/java/org/apache/isis/remoting/protocol/encoding/internal/ObjectEncoderDecoder.java&r1=1031826&r2=1031974&rev=1031974&view=diff
==============================================================================
--- incubator/isis/trunk/alternatives/remoting/common/src/main/java/org/apache/isis/remoting/protocol/encoding/internal/ObjectEncoderDecoder.java (original)
+++ incubator/isis/trunk/alternatives/remoting/common/src/main/java/org/apache/isis/remoting/protocol/ObjectEncoderDecoder.java Sat Nov 6 08:46:35 2010
@@ -18,7 +18,7 @@
*/
-package org.apache.isis.remoting.protocol.encoding.internal;
+package org.apache.isis.remoting.protocol;
import org.apache.isis.metamodel.adapter.ObjectAdapter;
import org.apache.isis.metamodel.adapter.version.Version;
Copied: incubator/isis/trunk/alternatives/remoting/common/src/main/java/org/apache/isis/remoting/protocol/PersistenceQueryEncoder.java (from r1031826, incubator/isis/trunk/alternatives/remoting/common/src/main/java/org/apache/isis/remoting/protocol/encoding/internal/PersistenceQueryEncoder.java)
URL: http://svn.apache.org/viewvc/incubator/isis/trunk/alternatives/remoting/common/src/main/java/org/apache/isis/remoting/protocol/PersistenceQueryEncoder.java?p2=incubator/isis/trunk/alternatives/remoting/common/src/main/java/org/apache/isis/remoting/protocol/PersistenceQueryEncoder.java&p1=incubator/isis/trunk/alternatives/remoting/common/src/main/java/org/apache/isis/remoting/protocol/encoding/internal/PersistenceQueryEncoder.java&r1=1031826&r2=1031974&rev=1031974&view=diff
==============================================================================
--- incubator/isis/trunk/alternatives/remoting/common/src/main/java/org/apache/isis/remoting/protocol/encoding/internal/PersistenceQueryEncoder.java (original)
+++ incubator/isis/trunk/alternatives/remoting/common/src/main/java/org/apache/isis/remoting/protocol/PersistenceQueryEncoder.java Sat Nov 6 08:46:35 2010
@@ -17,12 +17,10 @@
* under the License.
*/
-
-package org.apache.isis.remoting.protocol.encoding.internal;
+package org.apache.isis.remoting.protocol;
import org.apache.isis.metamodel.config.IsisConfiguration;
import org.apache.isis.remoting.data.query.PersistenceQueryData;
-import org.apache.isis.remoting.protocol.encoding.EncodingProtocolConstants;
import org.apache.isis.runtime.persistence.query.PersistenceQuery;
/**
@@ -31,16 +29,14 @@ import org.apache.isis.runtime.persisten
public interface PersistenceQueryEncoder {
Class<?> getPersistenceQueryClass();
-
+
/**
- * Injected directly after instantiation (note that encoders can potentially be loaded
- * reflectively, from the {@link IsisConfiguration configuration} using the
- * {@value EncodingProtocolConstants#ENCODER_CLASS_NAME_LIST} key.
+ * Injected directly after instantiation (note that encoders can potentially be loaded reflectively, from the
+ * {@link IsisConfiguration configuration} using the {@value ProtocolConstants#ENCODER_CLASS_NAME_LIST} key.
*/
void setObjectEncoder(ObjectEncoderDecoder objectEncoder);
-
+
PersistenceQueryData encode(PersistenceQuery persistenceQuery);
PersistenceQuery decode(PersistenceQueryData persistenceQueryData);
}
-
Modified: incubator/isis/trunk/alternatives/remoting/common/src/main/java/org/apache/isis/remoting/protocol/ProtocolConstants.java
URL: http://svn.apache.org/viewvc/incubator/isis/trunk/alternatives/remoting/common/src/main/java/org/apache/isis/remoting/protocol/ProtocolConstants.java?rev=1031974&r1=1031973&r2=1031974&view=diff
==============================================================================
--- incubator/isis/trunk/alternatives/remoting/common/src/main/java/org/apache/isis/remoting/protocol/ProtocolConstants.java (original)
+++ incubator/isis/trunk/alternatives/remoting/common/src/main/java/org/apache/isis/remoting/protocol/ProtocolConstants.java Sat Nov 6 08:46:35 2010
@@ -25,15 +25,10 @@ import org.apache.isis.metamodel.config.
public final class ProtocolConstants {
- private static final String ROOT =
- ConfigurationConstants.ROOT + ProtocolInstaller.TYPE + ".";
-
- public static final String KEEPALIVE_KEY = ROOT + "keepalive";
- public static final boolean KEEPALIVE_DEFAULT = false;
-
- public static final String DEBUGGING_KEY = ROOT + "debugging";
- public static final boolean DEBUGGING_DEFAULT = false;
-
+ public static final String ROOT =
+ ConfigurationConstants.ROOT + ProtocolInstaller.TYPE + ".";
+ public static final String ENCODER_CLASS_NAME_LIST = ConfigurationConstants.ROOT + "persistence-query.encoders";
+ public static final String ENCODER_CLASS_NAME_LIST_DEPRECATED = ConfigurationConstants.ROOT + "criteria.encoders";
private ProtocolConstants() {}
Copied: incubator/isis/trunk/alternatives/remoting/common/src/main/java/org/apache/isis/remoting/protocol/internal/FieldOrderCache.java (from r1031826, incubator/isis/trunk/alternatives/remoting/common/src/main/java/org/apache/isis/remoting/protocol/encoding/internal/FieldOrderCache.java)
URL: http://svn.apache.org/viewvc/incubator/isis/trunk/alternatives/remoting/common/src/main/java/org/apache/isis/remoting/protocol/internal/FieldOrderCache.java?p2=incubator/isis/trunk/alternatives/remoting/common/src/main/java/org/apache/isis/remoting/protocol/internal/FieldOrderCache.java&p1=incubator/isis/trunk/alternatives/remoting/common/src/main/java/org/apache/isis/remoting/protocol/encoding/internal/FieldOrderCache.java&r1=1031826&r2=1031974&rev=1031974&view=diff
==============================================================================
--- incubator/isis/trunk/alternatives/remoting/common/src/main/java/org/apache/isis/remoting/protocol/encoding/internal/FieldOrderCache.java (original)
+++ incubator/isis/trunk/alternatives/remoting/common/src/main/java/org/apache/isis/remoting/protocol/internal/FieldOrderCache.java Sat Nov 6 08:46:35 2010
@@ -18,13 +18,13 @@
*/
-package org.apache.isis.remoting.protocol.encoding.internal;
+package org.apache.isis.remoting.protocol.internal;
-import java.util.Hashtable;
-import java.util.Vector;
-
-import org.apache.isis.metamodel.spec.ObjectSpecification;
-import org.apache.isis.metamodel.spec.feature.ObjectAssociation;
+import java.util.Hashtable;
+import java.util.Vector;
+
+import org.apache.isis.metamodel.spec.ObjectSpecification;
+import org.apache.isis.metamodel.spec.feature.ObjectAssociation;
/**
* Caches a sorted version of the fields for a specified ObjectSpecification. This is used to counteract
Copied: incubator/isis/trunk/alternatives/remoting/common/src/main/java/org/apache/isis/remoting/protocol/internal/ObjectDeserializer.java (from r1031826, incubator/isis/trunk/alternatives/remoting/common/src/main/java/org/apache/isis/remoting/protocol/encoding/internal/ObjectDeserializer.java)
URL: http://svn.apache.org/viewvc/incubator/isis/trunk/alternatives/remoting/common/src/main/java/org/apache/isis/remoting/protocol/internal/ObjectDeserializer.java?p2=incubator/isis/trunk/alternatives/remoting/common/src/main/java/org/apache/isis/remoting/protocol/internal/ObjectDeserializer.java&p1=incubator/isis/trunk/alternatives/remoting/common/src/main/java/org/apache/isis/remoting/protocol/encoding/internal/ObjectDeserializer.java&r1=1031826&r2=1031974&rev=1031974&view=diff
==============================================================================
--- incubator/isis/trunk/alternatives/remoting/common/src/main/java/org/apache/isis/remoting/protocol/encoding/internal/ObjectDeserializer.java (original)
+++ incubator/isis/trunk/alternatives/remoting/common/src/main/java/org/apache/isis/remoting/protocol/internal/ObjectDeserializer.java Sat Nov 6 08:46:35 2010
@@ -18,11 +18,10 @@
*/
-package org.apache.isis.remoting.protocol.encoding.internal;
+package org.apache.isis.remoting.protocol.internal;
import java.util.Enumeration;
-import org.apache.log4j.Logger;
import org.apache.isis.commons.exceptions.UnknownTypeException;
import org.apache.isis.metamodel.adapter.ObjectAdapter;
import org.apache.isis.metamodel.adapter.ResolveState;
@@ -53,6 +52,7 @@ import org.apache.isis.runtime.persisten
import org.apache.isis.runtime.persistence.adaptermanager.AdapterManager;
import org.apache.isis.runtime.persistence.objectstore.PersistenceSessionObjectStore;
import org.apache.isis.runtime.transaction.updatenotifier.UpdateNotifier;
+import org.apache.log4j.Logger;
public class ObjectDeserializer {
Copied: incubator/isis/trunk/alternatives/remoting/common/src/main/java/org/apache/isis/remoting/protocol/internal/ObjectEncoderDecoderDefault.java (from r1031826, incubator/isis/trunk/alternatives/remoting/common/src/main/java/org/apache/isis/remoting/protocol/encoding/internal/ObjectEncoderDecoderDefault.java)
URL: http://svn.apache.org/viewvc/incubator/isis/trunk/alternatives/remoting/common/src/main/java/org/apache/isis/remoting/protocol/internal/ObjectEncoderDecoderDefault.java?p2=incubator/isis/trunk/alternatives/remoting/common/src/main/java/org/apache/isis/remoting/protocol/internal/ObjectEncoderDecoderDefault.java&p1=incubator/isis/trunk/alternatives/remoting/common/src/main/java/org/apache/isis/remoting/protocol/encoding/internal/ObjectEncoderDecoderDefault.java&r1=1031826&r2=1031974&rev=1031974&view=diff
==============================================================================
--- incubator/isis/trunk/alternatives/remoting/common/src/main/java/org/apache/isis/remoting/protocol/encoding/internal/ObjectEncoderDecoderDefault.java (original)
+++ incubator/isis/trunk/alternatives/remoting/common/src/main/java/org/apache/isis/remoting/protocol/internal/ObjectEncoderDecoderDefault.java Sat Nov 6 08:46:35 2010
@@ -17,14 +17,12 @@
* under the License.
*/
-
-package org.apache.isis.remoting.protocol.encoding.internal;
+package org.apache.isis.remoting.protocol.internal;
import java.util.HashMap;
import java.util.Iterator;
import java.util.Map;
-import org.apache.log4j.Logger;
import org.apache.isis.commons.ensure.Assert;
import org.apache.isis.commons.exceptions.UnknownTypeException;
import org.apache.isis.commons.factory.InstanceFactory;
@@ -67,105 +65,108 @@ import org.apache.isis.remoting.exchange
import org.apache.isis.remoting.exchange.SetAssociationRequest;
import org.apache.isis.remoting.exchange.SetValueRequest;
import org.apache.isis.remoting.facade.impl.ServerFacadeImpl;
-import org.apache.isis.remoting.protocol.encoding.EncodingProtocolConstants;
+import org.apache.isis.remoting.protocol.ObjectEncoderDecoder;
+import org.apache.isis.remoting.protocol.PersistenceQueryEncoder;
+import org.apache.isis.remoting.protocol.ProtocolConstants;
import org.apache.isis.runtime.context.IsisContext;
import org.apache.isis.runtime.persistence.PersistorUtil;
import org.apache.isis.runtime.persistence.query.PersistenceQuery;
+import org.apache.log4j.Logger;
public class ObjectEncoderDecoderDefault implements ObjectEncoderDecoder {
-
- private final static Logger LOG = Logger.getLogger(ObjectEncoderDecoderDefault.class);
-
- public static final int DEFAULT_CLIENT_SIDE_ADD_OBJECT_GRAPH_DEPTH = 1;
- public static final int DEFAULT_CLIENT_SIDE_UPDATE_OBJECT_GRAPH_DEPTH = 1;
- public static final int DEFAULT_CLIENT_SIDE_ACTION_TARGET_GRAPH_DEPTH = 0;
- public static final int DEFAULT_CLIENT_SIDE_ACTION_PARAMETER_GRAPH_DEPTH = 0;
-
- public static final int DEFAULT_SERVER_SIDE_RETRIEVED_OBJECT_GRAPH_DEPTH = 100;
- public static final int DEFAULT_SERVER_SIDE_TOUCHED_OBJECT_GRAPH_DEPTH = 1;
+
+ private final static Logger LOG = Logger.getLogger(ObjectEncoderDecoderDefault.class);
+
+ public static final int DEFAULT_CLIENT_SIDE_ADD_OBJECT_GRAPH_DEPTH = 1;
+ public static final int DEFAULT_CLIENT_SIDE_UPDATE_OBJECT_GRAPH_DEPTH = 1;
+ public static final int DEFAULT_CLIENT_SIDE_ACTION_TARGET_GRAPH_DEPTH = 0;
+ public static final int DEFAULT_CLIENT_SIDE_ACTION_PARAMETER_GRAPH_DEPTH = 0;
+
+ public static final int DEFAULT_SERVER_SIDE_RETRIEVED_OBJECT_GRAPH_DEPTH = 100;
+ public static final int DEFAULT_SERVER_SIDE_TOUCHED_OBJECT_GRAPH_DEPTH = 1;
private final ObjectSerializer serializer;
private final ObjectDeserializer deserializer;
private final FieldOrderCache fieldOrderCache;
private final DataFactory dataFactory;
-
- private final Map<Class<?>, PersistenceQueryEncoder> persistenceEncoderByClass = new HashMap<Class<?>, PersistenceQueryEncoder>();
-
- private int clientSideAddGraphDepth = DEFAULT_CLIENT_SIDE_ADD_OBJECT_GRAPH_DEPTH;
- private int clientSideUpdateGraphDepth = DEFAULT_CLIENT_SIDE_UPDATE_OBJECT_GRAPH_DEPTH;
- private int clientSideActionTargetRemotelyGraphDepth = DEFAULT_CLIENT_SIDE_ACTION_TARGET_GRAPH_DEPTH;
- private int clientSideActionParameterGraphDepth = DEFAULT_CLIENT_SIDE_ACTION_PARAMETER_GRAPH_DEPTH;
-
- private int serverSideTouchedObjectGraphDepth = DEFAULT_SERVER_SIDE_TOUCHED_OBJECT_GRAPH_DEPTH;
- private int serverSideRetrievedObjectGraphDepth = DEFAULT_SERVER_SIDE_RETRIEVED_OBJECT_GRAPH_DEPTH;
+ private final Map<Class<?>, PersistenceQueryEncoder> persistenceEncoderByClass =
+ new HashMap<Class<?>, PersistenceQueryEncoder>();
+
+ private final int clientSideAddGraphDepth = DEFAULT_CLIENT_SIDE_ADD_OBJECT_GRAPH_DEPTH;
+ private final int clientSideUpdateGraphDepth = DEFAULT_CLIENT_SIDE_UPDATE_OBJECT_GRAPH_DEPTH;
+ private final int clientSideActionTargetRemotelyGraphDepth = DEFAULT_CLIENT_SIDE_ACTION_TARGET_GRAPH_DEPTH;
+ private final int clientSideActionParameterGraphDepth = DEFAULT_CLIENT_SIDE_ACTION_PARAMETER_GRAPH_DEPTH;
+
+ private final int serverSideTouchedObjectGraphDepth = DEFAULT_SERVER_SIDE_TOUCHED_OBJECT_GRAPH_DEPTH;
+ private final int serverSideRetrievedObjectGraphDepth = DEFAULT_SERVER_SIDE_RETRIEVED_OBJECT_GRAPH_DEPTH;
/**
* Factory method.
*/
- public static ObjectEncoderDecoderDefault create(final IsisConfiguration configuration) {
-
- ObjectEncoderDecoderDefault encoderDecoder = new ObjectEncoderDecoderDefault();
- addPersistenceEncoders(configuration, encoderDecoder, EncodingProtocolConstants.ENCODER_CLASS_NAME_LIST);
- addPersistenceEncoders(configuration, encoderDecoder, EncodingProtocolConstants.ENCODER_CLASS_NAME_LIST_DEPRECATED);
- return encoderDecoder;
- }
-
- private static void addPersistenceEncoders(
- final IsisConfiguration configuration,
- final ObjectEncoderDecoderDefault encoder, String encoderClassNameList) {
- String[] encoders = configuration.getList(encoderClassNameList);
- for (int i = 0; i < encoders.length; i++) {
- final PersistenceQueryEncoder encoding = InstanceFactory.createInstance(encoders[i], PersistenceQueryEncoder.class);
- encoder.addPersistenceQueryEncoder(encoding);
- }
- }
-
- /**
- * Package-level visibility (for tests to use only)
- */
- public ObjectEncoderDecoderDefault(){
- this.fieldOrderCache = new FieldOrderCache();
- this.dataFactory = new DataFactoryDefault();
+ public static ObjectEncoderDecoderDefault create(final IsisConfiguration configuration) {
+
+ ObjectEncoderDecoderDefault encoderDecoder = new ObjectEncoderDecoderDefault();
+ addPersistenceEncoders(configuration, encoderDecoder, ProtocolConstants.ENCODER_CLASS_NAME_LIST);
+ addPersistenceEncoders(configuration, encoderDecoder,
+ ProtocolConstants.ENCODER_CLASS_NAME_LIST_DEPRECATED);
+ return encoderDecoder;
+ }
+
+ private static void addPersistenceEncoders(final IsisConfiguration configuration,
+ final ObjectEncoderDecoderDefault encoder, String encoderClassNameList) {
+ String[] encoders = configuration.getList(encoderClassNameList);
+ for (int i = 0; i < encoders.length; i++) {
+ final PersistenceQueryEncoder encoding =
+ InstanceFactory.createInstance(encoders[i], PersistenceQueryEncoder.class);
+ encoder.addPersistenceQueryEncoder(encoding);
+ }
+ }
+
+ /**
+ * Package-level visibility (for tests to use only)
+ */
+ public ObjectEncoderDecoderDefault() {
+ this.fieldOrderCache = new FieldOrderCache();
+ this.dataFactory = new DataFactoryDefault();
this.serializer = new ObjectSerializer(dataFactory, fieldOrderCache);
this.deserializer = new ObjectDeserializer(fieldOrderCache);
-
addPersistenceQueryEncoder(new PersistenceQueryFindAllInstancesEncoder());
addPersistenceQueryEncoder(new PersistenceQueryFindByTitleEncoder());
addPersistenceQueryEncoder(new PersistenceQueryFindByPatternEncoder());
addPersistenceQueryEncoder(new PersistenceQueryFindUsingApplibQueryDefaultEncoder());
addPersistenceQueryEncoder(new PersistenceQueryFindUsingApplibQuerySerializableEncoder());
-
+
// TODO: look up overrides of depths from Configuration.
}
-
+
public void addPersistenceQueryEncoder(final PersistenceQueryEncoder encoder) {
- encoder.setObjectEncoder(this);
+ encoder.setObjectEncoder(this);
persistenceEncoderByClass.put(encoder.getPersistenceQueryClass(), encoder);
}
-
- ///////////////////////////////////////////////////////////
+ // /////////////////////////////////////////////////////////
// called both client- and server-side only
- ///////////////////////////////////////////////////////////
+ // /////////////////////////////////////////////////////////
/**
- * Creates a ReferenceData that contains the type, version and OID for the specified object. This can only
- * be used for persistent objects.
+ * Creates a ReferenceData that contains the type, version and OID for the specified object. This can only be used
+ * for persistent objects.
*
* <p>
- * Called both client and server-side, in multiple locations.
+ * Called both client and server-side, in multiple locations.
*/
+ @Override
public final IdentityData encodeIdentityData(final ObjectAdapter object) {
Assert.assertNotNull("OID needed for reference", object, object.getOid());
- return dataFactory.createIdentityData(object.getSpecification().getFullName(), object.getOid(), object.getVersion());
+ return dataFactory.createIdentityData(object.getSpecification().getFullName(), object.getOid(),
+ object.getVersion());
}
-
- ///////////////////////////////////////////////////////////
+ // /////////////////////////////////////////////////////////
// client-side encoding
- ///////////////////////////////////////////////////////////
+ // /////////////////////////////////////////////////////////
/**
* Called client-side only:
@@ -173,6 +174,7 @@ public class ObjectEncoderDecoderDefault
* <li>by {@link ClientSideTransactionManager#endTransaction()}
* </ul>
*/
+ @Override
public ObjectData encodeMakePersistentGraph(final ObjectAdapter adapter, final KnownObjectsRequest knownObjects) {
Assert.assertTrue("transient", adapter.isTransient());
return (ObjectData) encode(adapter, clientSideAddGraphDepth, knownObjects);
@@ -184,6 +186,7 @@ public class ObjectEncoderDecoderDefault
* <li>by {@link ClientSideTransactionManager#endTransaction()}
* </ul>
*/
+ @Override
public ObjectData encodeGraphForChangedObject(final ObjectAdapter object, final KnownObjectsRequest knownObjects) {
return (ObjectData) encode(object, clientSideUpdateGraphDepth, knownObjects);
}
@@ -194,6 +197,7 @@ public class ObjectEncoderDecoderDefault
* <li>by {@link PropertySetterFacetWrapProxy#setProperty(ObjectAdapter, ObjectAdapter)}
* </ul>
*/
+ @Override
public EncodableObjectData encodeAsValue(final ObjectAdapter value) {
return serializer.serializeEncodeable(value);
}
@@ -201,9 +205,10 @@ public class ObjectEncoderDecoderDefault
/**
* Called client-side only:
* <ul>
- * <li> by {@link ActionInvocationFacetWrapProxy#invoke(ObjectAdapter, ObjectAdapter[])} (calling remotely)
+ * <li>by {@link ActionInvocationFacetWrapProxy#invoke(ObjectAdapter, ObjectAdapter[])} (calling remotely)
* </ul>
*/
+ @Override
public ReferenceData encodeActionTarget(final ObjectAdapter target, final KnownObjectsRequest knownObjects) {
return serializer.serializeAdapter(target, clientSideActionTargetRemotelyGraphDepth, knownObjects);
}
@@ -216,10 +221,9 @@ public class ObjectEncoderDecoderDefault
* <li>by hibernate's equivalent encoder
* </ul>
*/
- public final Data[] encodeActionParameters(
- final ObjectSpecification[] parameterTypes,
- final ObjectAdapter[] parameters,
- final KnownObjectsRequest knownObjects) {
+ @Override
+ public final Data[] encodeActionParameters(final ObjectSpecification[] parameterTypes,
+ final ObjectAdapter[] parameters, final KnownObjectsRequest knownObjects) {
final Data parameterData[] = new Data[parameters.length];
for (int i = 0; i < parameters.length; i++) {
final ObjectAdapter parameter = parameters[i];
@@ -235,15 +239,15 @@ public class ObjectEncoderDecoderDefault
* <li>by {@link PersistenceSessionProxy#findInstances(PersistenceQuery)}
* </ul>
*/
+ @Override
public PersistenceQueryData encodePersistenceQuery(final PersistenceQuery criteria) {
final PersistenceQueryEncoder strategy = findPersistenceQueryEncoder(criteria.getClass());
return strategy.encode(criteria);
}
-
- ///////////////////////////////////////////////////////////
+ // /////////////////////////////////////////////////////////
// client-side decoding
- ///////////////////////////////////////////////////////////
+ // /////////////////////////////////////////////////////////
/**
* Called client-side only:
@@ -251,6 +255,7 @@ public class ObjectEncoderDecoderDefault
* <li>by {@link ActionInvocationFacetWrapProxy#invoke(ObjectAdapter, ObjectAdapter[])}
* </ul>
*/
+ @Override
public void madePersistent(final ObjectAdapter target, final ObjectData persistedTarget) {
deserializer.madePersistent(target, persistedTarget);
}
@@ -258,31 +263,32 @@ public class ObjectEncoderDecoderDefault
/**
* Called client-side only, in multiple locations.
*/
+ @Override
public ObjectAdapter decode(final Data data) {
return deserializer.deserialize(data);
}
+ @Override
public void decode(final ObjectData[] dataArray) {
for (int i = 0; i < dataArray.length; i++) {
- if (LOG.isDebugEnabled()) {
- LOG.debug("update " + dataArray[i].getOid());
- }
- this.decode(dataArray[i]);
- }
+ if (LOG.isDebugEnabled()) {
+ LOG.debug("update " + dataArray[i].getOid());
+ }
+ this.decode(dataArray[i]);
+ }
}
-
- ///////////////////////////////////////////////////////////
+ // /////////////////////////////////////////////////////////
// server-side decoding
- ///////////////////////////////////////////////////////////
+ // /////////////////////////////////////////////////////////
/**
* Called server-side only:
* <ul>
* <li>by {@link ServerFacadeImpl#executeClientAction(ExecuteClientActionRequest)}
- * <li>by {@link ServerFacadeImpl#executeServerAction(ExecuteServerActionRequest)
- * </ul>
+ * <li>by {@link ServerFacadeImpl#executeServerAction(ExecuteServerActionRequest) </ul>
*/
+ @Override
public ObjectAdapter decode(final Data data, final KnownObjectsRequest knownObjects) {
return deserializer.deserialize(data, knownObjects);
}
@@ -290,9 +296,9 @@ public class ObjectEncoderDecoderDefault
/**
* Called server-side only:
* <ul>
- * <li>by {@link ServerFacadeImpl#findInstances(FindInstancesRequest)
- * </ul>
+ * <li>by {@link ServerFacadeImpl#findInstances(FindInstancesRequest) </ul>
*/
+ @Override
public PersistenceQuery decodePersistenceQuery(final PersistenceQueryData persistenceQueryData) {
final Class<?> criteriaClass = persistenceQueryData.getPersistenceQueryClass();
final PersistenceQueryEncoder encoderDecoder = findPersistenceQueryEncoder(criteriaClass);
@@ -307,26 +313,25 @@ public class ObjectEncoderDecoderDefault
return encoder;
}
-
- ///////////////////////////////////////////////////////////
+ // /////////////////////////////////////////////////////////
// server-side encoding
- ///////////////////////////////////////////////////////////
+ // /////////////////////////////////////////////////////////
- public AuthorizationResponse encodeAuthorizeResponse(boolean authorized) {
- return new AuthorizationResponse(authorized);
- }
+ @Override
+ public AuthorizationResponse encodeAuthorizeResponse(boolean authorized) {
+ return new AuthorizationResponse(authorized);
+ }
/**
* Called server-side only:
* <ul>
- * <li> by {@link ServerFacadeImpl#executeClientAction(ExecuteClientActionRequest)}
+ * <li>by {@link ServerFacadeImpl#executeClientAction(ExecuteClientActionRequest)}
* </ul>
*/
- public ExecuteClientActionResponse encodeClientActionResult(
- final ReferenceData[] madePersistent,
- final Version[] changedVersion,
- final ObjectData[] updates) {
- return new ExecuteClientActionResponse(madePersistent, changedVersion, updates);
+ @Override
+ public ExecuteClientActionResponse encodeClientActionResult(final ReferenceData[] madePersistent,
+ final Version[] changedVersion, final ObjectData[] updates) {
+ return new ExecuteClientActionResponse(madePersistent, changedVersion, updates);
}
/**
@@ -335,11 +340,12 @@ public class ObjectEncoderDecoderDefault
* <p>
* Called server-side only, in several locations:
* <ul>
- * <li> by {@link ServerFacadeImpl#findInstances(FindInstancesRequest)}
- * <li> by {@link ServerFacadeImpl#executeServerAction(ExecuteServerActionRequest)}
- * <li> by {@link ServerFacadeImpl#resolveImmediately(ResolveObjectRequest)}
+ * <li>by {@link ServerFacadeImpl#findInstances(FindInstancesRequest)}
+ * <li>by {@link ServerFacadeImpl#executeServerAction(ExecuteServerActionRequest)}
+ * <li>by {@link ServerFacadeImpl#resolveImmediately(ResolveObjectRequest)}
* </ul>
*/
+ @Override
public final ObjectData encodeCompletePersistentGraph(final ObjectAdapter object) {
return encode(object, serverSideRetrievedObjectGraphDepth);
}
@@ -351,14 +357,14 @@ public class ObjectEncoderDecoderDefault
* Called server-side only:
* <ul>
* <li>by {@link ServerFacadeImpl#getObject(GetObjectRequest)}
- * <li>by {@link ServerFacadeImpl#clearAssociation(ClearAssociationRequest)
- * <li>by {@link ServerFacadeImpl#clearValue(ClearValueRequest)
- * <li>by {@link ServerFacadeImpl#executeClientAction(ExecuteClientActionRequest)
- * <li>by {@link ServerFacadeImpl#executeServerAction(ExecuteServerActionRequest)
- * <li>by {@link ServerFacadeImpl#setAssociation(SetAssociationRequest)
- * <li>by {@link ServerFacadeImpl#setValue(SetValueRequest)
- * </ul>
+ * <li>by {@link ServerFacadeImpl#clearAssociation(ClearAssociationRequest) <li><li> by
+ * {@link ServerFacadeImpl#clearValue(ClearValueRequest) <li><li> by
+ * {@link ServerFacadeImpl#executeClientAction(ExecuteClientActionRequest) <li><li> by
+ * {@link ServerFacadeImpl#executeServerAction(ExecuteServerActionRequest) <li><li> by
+ * {@link ServerFacadeImpl#setAssociation(SetAssociationRequest) <li><li> by
+ * {@link ServerFacadeImpl#setValue(SetValueRequest) </ul>
*/
+ @Override
public ObjectData encodeForUpdate(final ObjectAdapter object) {
final ResolveState resolveState = object.getResolveState();
if (resolveState.isSerializing() || resolveState.isGhost()) {
@@ -373,6 +379,7 @@ public class ObjectEncoderDecoderDefault
* <li>by {@link ServerFacadeImpl#resolveField(ResolveFieldRequest)}
* </ul>
*/
+ @Override
public Data encodeForResolveField(final ObjectAdapter adapter, final String fieldName) {
final Oid oid = adapter.getOid();
final ObjectSpecification specification = adapter.getSpecification();
@@ -393,10 +400,12 @@ public class ObjectEncoderDecoderDefault
} else if (fields[i].getSpecification().isEncodeable()) {
fieldContent[i] = serializer.serializeEncodeable(field);
} else if (fields[i].isOneToManyAssociation()) {
- fieldContent[i] = serializer.serializeCollection(field, serverSideRetrievedObjectGraphDepth, knownObjects);
+ fieldContent[i] =
+ serializer.serializeCollection(field, serverSideRetrievedObjectGraphDepth, knownObjects);
} else {
IsisContext.getPersistenceSession().resolveImmediately(field);
- fieldContent[i] = serializer.serializeAdapter(field, serverSideRetrievedObjectGraphDepth, knownObjects);
+ fieldContent[i] =
+ serializer.serializeAdapter(field, serverSideRetrievedObjectGraphDepth, knownObjects);
}
break;
}
@@ -407,7 +416,8 @@ public class ObjectEncoderDecoderDefault
// resolving (is not a ghost) yet it has no version number
// return createObjectData(oid, type, fieldContent, resolveState.isResolved(),
// !resolveState.isGhost(), object.getVersion());
- final ObjectData data = dataFactory.createObjectData(type, oid, resolveState.isResolved(), adapter.getVersion());
+ final ObjectData data =
+ dataFactory.createObjectData(type, oid, resolveState.isResolved(), adapter.getVersion());
data.setFieldContent(fieldContent);
return data;
// return createObjectData(oid, type, fieldContent, resolveState.isResolved(), object.getVersion());
@@ -419,6 +429,7 @@ public class ObjectEncoderDecoderDefault
* <li>by {@link ServerFacadeImpl#executeServerAction(ExecuteServerActionRequest)}
* </ul>
*/
+ @Override
public ObjectData encodeMadePersistentGraph(final ObjectData data, final ObjectAdapter object) {
final Oid objectsOid = object.getOid();
Assert.assertNotNull(objectsOid);
@@ -445,7 +456,8 @@ public class ObjectEncoderDecoderDefault
}
} else if (fields[i].isOneToManyAssociation()) {
final ObjectAdapter fieldReference = fields[i].get(object);
- persistentContents[i] = createMadePersistentCollection((CollectionData) fieldData, fieldReference);
+ persistentContents[i] =
+ createMadePersistentCollection((CollectionData) fieldData, fieldReference);
}
}
persistedData.setFieldContent(persistentContents);
@@ -470,52 +482,49 @@ public class ObjectEncoderDecoderDefault
return collectionData;
}
-
/**
* Called server-side only:
* <ul>
* <li>by {@link ServerFacadeImpl#executeServerAction(ExecuteServerActionRequest)}
* </ul>
*/
- public ExecuteServerActionResponse encodeServerActionResult(
- final ObjectAdapter result,
- final ObjectData[] updatesData,
- final ReferenceData[] disposedData,
- final ObjectData persistedTargetData,
- final ObjectData[] persistedParametersData,
- final String[] messages,
- final String[] warnings) {
+ @Override
+ public ExecuteServerActionResponse encodeServerActionResult(final ObjectAdapter result,
+ final ObjectData[] updatesData, final ReferenceData[] disposedData, final ObjectData persistedTargetData,
+ final ObjectData[] persistedParametersData, final String[] messages, final String[] warnings) {
Data resultData;
if (result == null) {
resultData = dataFactory.createNullData("");
} else if (result.getSpecification().isCollection()) {
- resultData = serializer.serializeCollection(result, serverSideRetrievedObjectGraphDepth, new KnownObjectsRequest());
+ resultData =
+ serializer.serializeCollection(result, serverSideRetrievedObjectGraphDepth, new KnownObjectsRequest());
} else if (result.getSpecification().isNotCollection()) {
resultData = encodeCompletePersistentGraph(result);
} else {
throw new UnknownTypeException(result);
}
- return new ExecuteServerActionResponse(resultData, updatesData, disposedData, persistedTargetData, persistedParametersData, messages, warnings);
+ return new ExecuteServerActionResponse(resultData, updatesData, disposedData, persistedTargetData,
+ persistedParametersData, messages, warnings);
}
/**
* Called server-side only:
* <ul>
* <li>by {@link ServerFacadeImpl#resolveField(ResolveFieldRequest)}
- * <li>by {@link ServerFacadeImpl#executeServerAction(ExecuteServerActionRequest)
- * </ul>
+ * <li>by {@link ServerFacadeImpl#executeServerAction(ExecuteServerActionRequest) </ul>
*/
+ @Override
public ObjectAssociation[] getFieldOrder(final ObjectSpecification specification) {
return fieldOrderCache.getFields(specification);
}
-
- /////////////////////////////////////////////////////////////////
+ // ///////////////////////////////////////////////////////////////
// Helpers
- /////////////////////////////////////////////////////////////////
+ // ///////////////////////////////////////////////////////////////
- private final Data createParameter(final String type, final ObjectAdapter adapter, final KnownObjectsRequest knownObjects) {
+ private final Data createParameter(final String type, final ObjectAdapter adapter,
+ final KnownObjectsRequest knownObjects) {
if (adapter == null) {
return dataFactory.createNullData(type);
}
@@ -523,22 +532,20 @@ public class ObjectEncoderDecoderDefault
if (!adapter.getSpecification().isNotCollection()) {
throw new UnknownTypeException(adapter.getSpecification());
}
-
+
if (adapter.getSpecification().isEncodeable()) {
- return serializer.serializeEncodeable(adapter);
- } else {
- return encode(adapter, clientSideActionParameterGraphDepth, knownObjects);
- }
+ return serializer.serializeEncodeable(adapter);
+ } else {
+ return encode(adapter, clientSideActionParameterGraphDepth, knownObjects);
+ }
}
private ObjectData encode(final ObjectAdapter adapter, int depth) {
- return (ObjectData) encode(adapter, depth, new KnownObjectsRequest());
+ return (ObjectData) encode(adapter, depth, new KnownObjectsRequest());
}
-
- private ReferenceData encode(final ObjectAdapter adapter,
- int depth, final KnownObjectsRequest knownObjects) {
- return serializer.serializeAdapter(adapter, depth, knownObjects);
- }
-}
+ private ReferenceData encode(final ObjectAdapter adapter, int depth, final KnownObjectsRequest knownObjects) {
+ return serializer.serializeAdapter(adapter, depth, knownObjects);
+ }
+}