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

org.nakedobjects.plugins.remoting.shared.ObjectEncoder Maven / Gradle / Ivy

package org.nakedobjects.plugins.remoting.shared;

import org.nakedobjects.metamodel.adapter.NakedObject;
import org.nakedobjects.metamodel.adapter.version.Version;
import org.nakedobjects.metamodel.criteria.InstancesCriteria;
import org.nakedobjects.metamodel.spec.NakedObjectSpecification;
import org.nakedobjects.metamodel.spec.feature.NakedObjectAssociation;
import org.nakedobjects.plugins.remoting.shared.data.ClientActionResultData;
import org.nakedobjects.plugins.remoting.shared.data.CriteriaData;
import org.nakedobjects.plugins.remoting.shared.data.Data;
import org.nakedobjects.plugins.remoting.shared.data.EncodeableObjectData;
import org.nakedobjects.plugins.remoting.shared.data.IdentityData;
import org.nakedobjects.plugins.remoting.shared.data.KnownObjects;
import org.nakedobjects.plugins.remoting.shared.data.ObjectData;
import org.nakedobjects.plugins.remoting.shared.data.ReferenceData;
import org.nakedobjects.plugins.remoting.shared.data.ServerActionResultData;


public interface ObjectEncoder {

    //////////////////////////////////////////////////
    // Identity
    //////////////////////////////////////////////////
    
    IdentityData createIdentityData(NakedObject object);


    //////////////////////////////////////////////////
    // restore
    //////////////////////////////////////////////////

    NakedObject restore(Data returned);

    NakedObject restore(Data data, KnownObjects knownObjects);

    
    //////////////////////////////////////////////////
    // Resolves
    //////////////////////////////////////////////////

    Data createForResolveField(NakedObject object, String fieldName);

    
    
    //////////////////////////////////////////////////
    // Actions & Parameters
    //////////////////////////////////////////////////

    ReferenceData createActionTarget(NakedObject target, KnownObjects knownObjects);

    Data[] createParameters(NakedObjectSpecification[] parameterTypes, NakedObject[] parameters, KnownObjects knownObjects);


    ServerActionResultData createServerActionResult(
            NakedObject result,
            ObjectData[] updates,
            ReferenceData[] disposed,
            ObjectData persistedTarget,
            ObjectData[] persistedParameters,
            String[] messages,
            String[] warnings);

    ClientActionResultData createClientActionResult(ReferenceData[] madePersistent, Version[] changedVersion, ObjectData[] updates);


    //////////////////////////////////////////////////
    // Graphs
    //////////////////////////////////////////////////

    /**
     * Creates an {@link ObjectData} that contains all the data for all the transient objects in the specified
     * transient object.
     * 
     * 

* For any referenced persistent object in the graph, only the reference is passed across. */ ObjectData createMakePersistentGraph(NakedObject object, KnownObjects knownObjects); ObjectData createGraphForChangedObject(NakedObject object, KnownObjects knownObjects); /** * Creates a a graph of ReferenceData objects (mirroring the graph of transient objects) to transfer the * OIDs and Versions for each object that was made persistent during the makePersistent call. */ ObjectData createMadePersistentGraph(ObjectData data, NakedObject object); /** * Creates an ObjectData that contains all the data for all the objects in the graph. This allows the * client to receive all data it might need without having to return to the server to get referenced * objects. */ ObjectData createCompletePersistentGraph(NakedObject object); ////////////////////////////////////////////////// // makePersistent ////////////////////////////////////////////////// void madePersistent(NakedObject target, ObjectData persistedTarget); ////////////////////////////////////////////////// // Criteria ////////////////////////////////////////////////// CriteriaData createCriteriaData(InstancesCriteria criteria); InstancesCriteria restoreCriteria(CriteriaData criteriaData); ////////////////////////////////////////////////// // Value ////////////////////////////////////////////////// EncodeableObjectData createValue(NakedObject value); ////////////////////////////////////////////////// // Update ////////////////////////////////////////////////// /** * Creates an {@link ObjectData} that contains the data for the specified object, but not the data for any * referenced objects. * *

* For each referenced object only the reference is passed across. */ ObjectData createForUpdate(NakedObject object); ////////////////////////////////////////////////// // Field Order ////////////////////////////////////////////////// /** * Returns the agreed order to transfer fields within data objects. Both remote parties need to process * the fields in the same order, this is that order. */ NakedObjectAssociation[] getFieldOrder(NakedObjectSpecification specification); } // Copyright (c) Naked Objects Group Ltd.





© 2015 - 2025 Weber Informatics LLC | Privacy Policy