DS-3280 fix authorization and lazy proxy class cast issues

This commit is contained in:
Andrea Bollini
2016-09-18 16:33:12 +02:00
parent 69326c32f5
commit 29496399da
2 changed files with 7 additions and 1 deletions

View File

@@ -12,6 +12,7 @@ import org.dspace.authorize.AuthorizeException;
import org.dspace.authorize.service.AuthorizeService;
import org.dspace.content.dao.MetadataValueDAO;
import org.dspace.content.factory.ContentServiceFactory;
import org.dspace.content.service.DSpaceObjectService;
import org.dspace.content.service.MetadataValueService;
import org.dspace.core.Constants;
import org.dspace.core.Context;
@@ -80,7 +81,10 @@ public class MetadataValueServiceImpl implements MetadataValueService {
public void update(Context context, MetadataValue metadataValue, boolean updateLastModified) throws SQLException, AuthorizeException {
if(updateLastModified){
authorizeService.authorizeAction(context, metadataValue.getDSpaceObject(), Constants.WRITE);
contentServiceFactory.getDSpaceObjectService(metadataValue.getDSpaceObject()).updateLastModified(context, metadataValue.getDSpaceObject());
DSpaceObjectService<DSpaceObject> dSpaceObjectService = contentServiceFactory.getDSpaceObjectService(metadataValue.getDSpaceObject());
// get the right class for our dspaceobject not the DSpaceObject lazy proxy
DSpaceObject dso = dSpaceObjectService.find(context, metadataValue.getDSpaceObject().getID());
dSpaceObjectService.updateLastModified(context, dso);
}
update(context, metadataValue);
}