deegree 2.2 (2008/12/22 11:33 build-3038-official)

org.deegree.ogcwebservices.wfs.operation
Class LockFeature

java.lang.Object
  extended by org.deegree.ogcwebservices.AbstractOGCWebServiceRequest
      extended by org.deegree.ogcwebservices.wfs.operation.AbstractWFSRequest
          extended by org.deegree.ogcwebservices.wfs.operation.LockFeature
All Implemented Interfaces:
Serializable, OGCWebServiceRequest

public class LockFeature
extends AbstractWFSRequest

Represents a LockFeature request to a web feature service.

Web connections are inherently stateless. Unfortunately, this means that the semantics of serializable transactions are not preserved. To understand the issue consider an UPDATE operation.

The client fetches a feature instance. The feature is then modified on the client side, and submitted back to the database, via a Transaction request for update. Serializability is lost since there is nothing to guarantee that while the feature was being modified on the client side, another client did not come along and update that same feature in the database.

One way to ensure serializability is to require that access to data be done in a mutually exclusive manner; that is while one transaction accesses a data item, no other transaction can modify the same data item. This can be accomplished by using locks that control access to the data.

The purpose of the LockFeature interface is to expose a long term feature locking mechanism to ensure consistency. The lock is considered long term because network latency would make feature locks last relatively longer than native commercial database locks.

The LockFeature interface is optional and need only be implemented if the underlying datastore supports (or can be made to support) data locking. In addition, the implementation of locking is completely opaque to the client.

Version:
$Revision: 9345 $
Author:
Andreas Poth , Markus Schneider, last edited by: $Author: apoth $
See Also:
Serialized Form

Nested Class Summary
static class LockFeature.ALL_SOME_TYPE
          Known lock actions.
 
Field Summary
static String DEFAULT_EXPIRY
          Default value for expiry (in minutes).
static String LOCK_ACTION_ALL
          String value for ALL_SOME_TYPE.ALL.
static String LOCK_ACTION_SOME
          String value for ALL_SOME_TYPE.SOME.
 
Fields inherited from class org.deegree.ogcwebservices.wfs.operation.AbstractWFSRequest
FORMAT_GML2, FORMAT_GML2_WFS100, FORMAT_GML3, FORMAT_XML
 
Constructor Summary
LockFeature(String version, String id, String handle, long expiry, LockFeature.ALL_SOME_TYPE lockAction, List<Lock> locks)
          Creates a new LockFeature instance from the given parameters.
 
Method Summary
static LockFeature create(Map<String,String> kvp)
          Creates a new LockFeature request from the given parameter map.
static LockFeature create(String id, Element root)
          Creates a new LockFeature instance from a document that contains the DOM representation of the request.
static LockFeature create(String version, String id, String handle, long expiry, LockFeature.ALL_SOME_TYPE lockAction, List<Lock> locks)
          Creates a new LockFeature instance from the given parameters.
 long getExpiry()
          Returns the limit on how long the web feature service holds the lock in the event that a transaction is never issued that would release the lock.
 LockFeature.ALL_SOME_TYPE getLockAction()
          Returns the mode for lock acquisition.
 List<Lock> getLocks()
          Returns the contained lock operations.
 boolean lockAllFeatures()
          Returns whether this request requires that all features have to be lockable in order to be performed succesfully.
(package private) static LockFeature.ALL_SOME_TYPE validateLockAction(String lockActionString)
           
 
Methods inherited from class org.deegree.ogcwebservices.wfs.operation.AbstractWFSRequest
checkServiceParameter, checkVersionParameter, extractBBOXFilter, extractFilters, extractNamespaceParameter, extractTypeNames, getHandle, getServiceName
 
Methods inherited from class org.deegree.ogcwebservices.AbstractOGCWebServiceRequest
getId, getParam, getParamAsInt, getParamValues, getRequestParameter, getRequiredParam, getVendorSpecificParameter, getVendorSpecificParameters, getVersion, toString
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, wait, wait, wait
 

Field Detail

DEFAULT_EXPIRY

public static String DEFAULT_EXPIRY
Default value for expiry (in minutes).


LOCK_ACTION_ALL

public static String LOCK_ACTION_ALL
String value for ALL_SOME_TYPE.ALL.


LOCK_ACTION_SOME

public static String LOCK_ACTION_SOME
String value for ALL_SOME_TYPE.SOME.

Constructor Detail

LockFeature

LockFeature(String version,
            String id,
            String handle,
            long expiry,
            LockFeature.ALL_SOME_TYPE lockAction,
            List<Lock> locks)
Creates a new LockFeature instance from the given parameters.

Parameters:
version - request version
id - id of the request
handle - handle of the request
expiry - the limit on how long the web feature service keeps the lock (in milliseconds)
lockAction - method for lock acquisition
locks - contained lock operations
Method Detail

create

public static LockFeature create(String version,
                                 String id,
                                 String handle,
                                 long expiry,
                                 LockFeature.ALL_SOME_TYPE lockAction,
                                 List<Lock> locks)
Creates a new LockFeature instance from the given parameters.

Parameters:
version - request version
id - id of the request
handle - handle of the request
expiry - the limit on how long the web feature service holds the lock (in milliseconds)
lockAction - method for lock acquisition
locks - contained lock operations
Returns:
new LockFeature request

create

public static LockFeature create(String id,
                                 Element root)
                          throws OGCWebServiceException
Creates a new LockFeature instance from a document that contains the DOM representation of the request.

Parameters:
id - of the request
root - element that contains the DOM representation of the request
Returns:
new LockFeature request
Throws:
OGCWebServiceException

create

public static LockFeature create(Map<String,String> kvp)
                          throws InconsistentRequestException,
                                 InvalidParameterValueException
Creates a new LockFeature request from the given parameter map.

Parameters:
kvp - key-value pairs, keys have to be uppercase
Returns:
new LockFeature request
Throws:
InconsistentRequestException
InvalidParameterValueException

getExpiry

public long getExpiry()
Returns the limit on how long the web feature service holds the lock in the event that a transaction is never issued that would release the lock. The expiry limit is specified in milliseconds.

Returns:
the limit on how long the web feature service holds the lock (in milliseconds)

getLockAction

public LockFeature.ALL_SOME_TYPE getLockAction()
Returns the mode for lock acquisition.

Returns:
the mode for lock acquisition
See Also:
LockFeature.ALL_SOME_TYPE

lockAllFeatures

public boolean lockAllFeatures()
Returns whether this request requires that all features have to be lockable in order to be performed succesfully.

Returns:
true, if all features have to be lockable, false otherwise
See Also:
LockFeature.ALL_SOME_TYPE

getLocks

public List<Lock> getLocks()
Returns the contained lock operations.

Returns:
the contained lock operations

validateLockAction

static LockFeature.ALL_SOME_TYPE validateLockAction(String lockActionString)
                                             throws InvalidParameterValueException
Throws:
InvalidParameterValueException

deegree 2.2 (2008/12/22 11:33 build-3038-official)

an open source project founded by lat/lon, Bonn, Germany.
For more information visit: http://deegree.sourceforge.net