public LockFeatureResponseType lockFeature(LockFeatureType request) throws WFSException {
LockFeature lockFeature = new LockFeature(getServiceInfo(), getCatalog(), filterFactory);
LockFeatureRequest.WFS20 requestWrapper = new LockFeatureRequest.WFS20(request);
if (request.getLockId() != null) {
lockFeature.refresh(request.getLockId(), true);
LockFeatureResponse response = requestWrapper.createResponse();
response.setLockId(request.getLockId());
return (LockFeatureResponseType) response.getAdaptee();
} else {
boolean getFeatureById =
GetFeature.expandStoredQueries(
requestWrapper,
request.getAbstractQueryExpression(),
getStoredQueryProvider());
List<Query> queries =
GetFeatureRequest.WFS20.getQueries(request.getAbstractQueryExpression());
GetFeature.expandTypeNames(requestWrapper, queries, getFeatureById, getCatalog());
fixQueriesForLock(request.getAbstractQueryExpression());
return (LockFeatureResponseType) lockFeature.lockFeature(requestWrapper).getAdaptee();
}
}