REST writeStats to reuse existing context

This commit is contained in:
Peter Dietz
2014-10-21 10:17:06 -04:00
parent 334d7197f0
commit cbd595e782
5 changed files with 57 additions and 84 deletions

View File

@@ -101,7 +101,7 @@ public class BitstreamResource extends Resource
org.dspace.content.Bitstream dspaceBitstream = findBitstream(context, bitstreamId, org.dspace.core.Constants.READ);
writeStats(dspaceBitstream, UsageEvent.Action.VIEW, user_ip, user_agent, xforwarderfor, headers,
request);
request, context);
bitstream = new Bitstream(dspaceBitstream, expand);
context.complete();
@@ -241,7 +241,7 @@ public class BitstreamResource extends Resource
// reading under administrator permissions
bitstreams.add(new Bitstream(dspaceBitstreams[i], expand));
writeStats(dspaceBitstreams[i], UsageEvent.Action.VIEW, user_ip, user_agent,
xforwarderfor, headers, request);
xforwarderfor, headers, request, context);
}
}
}
@@ -308,7 +308,7 @@ public class BitstreamResource extends Resource
org.dspace.content.Bitstream dspaceBitstream = findBitstream(context, bitstreamId, org.dspace.core.Constants.READ);
writeStats(dspaceBitstream, UsageEvent.Action.VIEW, user_ip, user_agent, xforwarderfor, headers,
request);
request, context);
log.trace("Bitsream(id=" + bitstreamId + ") data was successfully read.");
inputStream = dspaceBitstream.retrieve();
@@ -463,7 +463,7 @@ public class BitstreamResource extends Resource
org.dspace.content.Bitstream dspaceBitstream = findBitstream(context, bitstreamId, org.dspace.core.Constants.WRITE);
writeStats(dspaceBitstream, UsageEvent.Action.UPDATE, user_ip, user_agent, xforwarderfor,
headers, request);
headers, request, context);
log.trace("Updating bitstream metadata.");
dspaceBitstream.setDescription(bitstream.getDescription());
@@ -594,7 +594,7 @@ public class BitstreamResource extends Resource
org.dspace.content.Bitstream dspaceBitstream = findBitstream(context, bitstreamId, org.dspace.core.Constants.WRITE);
writeStats(dspaceBitstream, UsageEvent.Action.UPDATE, user_ip, user_agent, xforwarderfor,
headers, request);
headers, request, context);
log.trace("Creating new bitstream.");
int newBitstreamId = BitstreamStorageManager.store(context, is);
@@ -678,7 +678,7 @@ public class BitstreamResource extends Resource
org.dspace.content.Bitstream dspaceBitstream = findBitstream(context, bitstreamId, org.dspace.core.Constants.DELETE);
writeStats(dspaceBitstream, UsageEvent.Action.DELETE, user_ip, user_agent, xforwarderfor,
headers, request);
headers, request, context);
log.trace("Deleting bitstream from all bundles.");
for (org.dspace.content.Bundle bundle : dspaceBitstream.getBundles())

View File

@@ -99,7 +99,7 @@ public class CollectionsResource extends Resource
org.dspace.content.Collection dspaceCollection = findCollection(context, collectionId, org.dspace.core.Constants.READ);
writeStats(dspaceCollection, UsageEvent.Action.VIEW, user_ip, user_agent, xforwarderfor,
headers, request);
headers, request, context);
collection = new Collection(dspaceCollection, expand, context, limit, offset);
context.complete();
@@ -182,7 +182,7 @@ public class CollectionsResource extends Resource
offset);
collections.add(collection);
writeStats(dspaceCollection, UsageEvent.Action.VIEW, user_ip, user_agent,
xforwarderfor, headers, request);
xforwarderfor, headers, request, context);
}
}
context.complete();
@@ -254,7 +254,7 @@ public class CollectionsResource extends Resource
org.dspace.content.Collection dspaceCollection = findCollection(context, collectionId, org.dspace.core.Constants.READ);
writeStats(dspaceCollection, UsageEvent.Action.VIEW, user_ip, user_agent, xforwarderfor,
headers, request);
headers, request, context);
items = new ArrayList<Item>();
org.dspace.content.ItemIterator dspaceItems = dspaceCollection.getItems();
@@ -267,7 +267,7 @@ public class CollectionsResource extends Resource
{
items.add(new Item(dspaceItem, expand, context));
writeStats(dspaceItem, UsageEvent.Action.VIEW, user_ip, user_agent, xforwarderfor,
headers, request);
headers, request, context);
}
}
}
@@ -335,7 +335,7 @@ public class CollectionsResource extends Resource
org.dspace.core.Constants.WRITE);
writeStats(dspaceCollection, UsageEvent.Action.UPDATE, user_ip, user_agent, xforwarderfor,
headers, request);
headers, request, context);
log.trace("Creating item in collection(id=" + collectionId + ").");
org.dspace.content.WorkspaceItem workspaceItem = org.dspace.content.WorkspaceItem.create(context, dspaceCollection,
@@ -435,7 +435,7 @@ public class CollectionsResource extends Resource
org.dspace.core.Constants.WRITE);
writeStats(dspaceCollection, UsageEvent.Action.UPDATE, user_ip, user_agent, xforwarderfor,
headers, request);
headers, request, context);
dspaceCollection.setMetadata("name", collection.getName());
dspaceCollection.setLicense(collection.getLicense());
@@ -451,7 +451,7 @@ public class CollectionsResource extends Resource
}
catch (ContextException e)
{
processException("Could not update collection(id=" + collectionId + "), ContextEception. Message: " + e.getMessage(),
processException("Could not update collection(id=" + collectionId + "), ContextException. Message: " + e.getMessage(),
context);
}
catch (SQLException e)
@@ -507,7 +507,7 @@ public class CollectionsResource extends Resource
org.dspace.core.Constants.DELETE);
writeStats(dspaceCollection, UsageEvent.Action.REMOVE, user_ip, user_agent, xforwarderfor,
headers, request);
headers, request, context);
org.dspace.content.Community community = (org.dspace.content.Community) dspaceCollection.getParentObject();
community.removeCollection(dspaceCollection);
@@ -610,8 +610,8 @@ public class CollectionsResource extends Resource
}
writeStats(dspaceCollection, UsageEvent.Action.UPDATE, user_ip, user_agent, xforwarderfor,
headers, request);
writeStats(item, UsageEvent.Action.REMOVE, user_ip, user_agent, xforwarderfor, headers, request);
headers, request, context);
writeStats(item, UsageEvent.Action.REMOVE, user_ip, user_agent, xforwarderfor, headers, request, context);
dspaceCollection.removeItem(item);

View File

@@ -87,7 +87,7 @@ public class CommunitiesResource extends Resource
org.dspace.content.Community dspaceCommunity = findCommunity(context, communityId, org.dspace.core.Constants.READ);
writeStats(dspaceCommunity, UsageEvent.Action.VIEW, user_ip, user_agent, xforwarderfor, headers,
request);
request, context);
community = new Community(dspaceCommunity, expand, context);
context.complete();
@@ -167,7 +167,7 @@ public class CommunitiesResource extends Resource
{
Community community = new Community(dspaceCommunities[i], expand, context);
writeStats(dspaceCommunities[i], UsageEvent.Action.VIEW, user_ip, user_agent,
xforwarderfor, headers, request);
xforwarderfor, headers, request, context);
communities.add(community);
}
}
@@ -249,7 +249,7 @@ public class CommunitiesResource extends Resource
{
Community community = new Community(dspaceCommunities[i], expand, context);
writeStats(dspaceCommunities[i], UsageEvent.Action.VIEW, user_ip, user_agent,
xforwarderfor, headers, request);
xforwarderfor, headers, request, context);
communities.add(community);
}
}
@@ -317,7 +317,7 @@ public class CommunitiesResource extends Resource
org.dspace.content.Community dspaceCommunity = findCommunity(context, communityId, org.dspace.core.Constants.READ);
writeStats(dspaceCommunity, UsageEvent.Action.VIEW, user_ip, user_agent, xforwarderfor, headers,
request);
request, context);
if (!((limit != null) && (limit >= 0) && (offset != null) && (offset >= 0)))
{
@@ -334,7 +334,7 @@ public class CommunitiesResource extends Resource
{
collections.add(new Collection(dspaceCollections[i], expand, context, 20, 0));
writeStats(dspaceCollections[i], UsageEvent.Action.VIEW, user_ip, user_agent,
xforwarderfor, headers, request);
xforwarderfor, headers, request, context);
}
}
@@ -403,7 +403,7 @@ public class CommunitiesResource extends Resource
org.dspace.content.Community dspaceCommunity = findCommunity(context, communityId, org.dspace.core.Constants.READ);
writeStats(dspaceCommunity, UsageEvent.Action.VIEW, user_ip, user_agent, xforwarderfor, headers,
request);
request, context);
if (!((limit != null) && (limit >= 0) && (offset != null) && (offset >= 0)))
{
@@ -420,7 +420,7 @@ public class CommunitiesResource extends Resource
{
communities.add(new Community(dspaceCommunities[i], expand, context));
writeStats(dspaceCommunities[i], UsageEvent.Action.VIEW, user_ip, user_agent,
xforwarderfor, headers, request);
xforwarderfor, headers, request, context);
}
}
@@ -490,7 +490,7 @@ public class CommunitiesResource extends Resource
org.dspace.content.Community dspaceCommunity = org.dspace.content.Community.create(null, context);
writeStats(dspaceCommunity, UsageEvent.Action.CREATE, user_ip, user_agent, xforwarderfor,
headers, request);
headers, request, context);
dspaceCommunity.setMetadata("name", community.getName());
dspaceCommunity.setMetadata(org.dspace.content.Community.COPYRIGHT_TEXT, community.getCopyrightText());
@@ -563,7 +563,7 @@ public class CommunitiesResource extends Resource
org.dspace.content.Community dspaceCommunity = findCommunity(context, communityId, org.dspace.core.Constants.WRITE);
writeStats(dspaceCommunity, UsageEvent.Action.UPDATE, user_ip, user_agent, xforwarderfor,
headers, request);
headers, request, context);
org.dspace.content.Collection dspaceCollection = dspaceCommunity.createCollection();
dspaceCollection.setLicense(collection.getLicense());
@@ -648,7 +648,7 @@ public class CommunitiesResource extends Resource
org.dspace.core.Constants.WRITE);
writeStats(dspaceParentCommunity, UsageEvent.Action.UPDATE, user_ip, user_agent, xforwarderfor,
headers, request);
headers, request, context);
org.dspace.content.Community dspaceCommunity = org.dspace.content.Community.create(dspaceParentCommunity, context);
dspaceCommunity.setMetadata("name", community.getName());
@@ -726,7 +726,7 @@ public class CommunitiesResource extends Resource
org.dspace.content.Community dspaceCommunity = findCommunity(context, communityId, org.dspace.core.Constants.WRITE);
writeStats(dspaceCommunity, UsageEvent.Action.UPDATE, user_ip, user_agent, xforwarderfor,
headers, request);
headers, request, context);
// dspaceCommunity.setLogo(arg0); // TODO Add this option.
dspaceCommunity.setMetadata("name", community.getName());
@@ -793,7 +793,7 @@ public class CommunitiesResource extends Resource
org.dspace.content.Community community = findCommunity(context, communityId, org.dspace.core.Constants.DELETE);
writeStats(community, UsageEvent.Action.DELETE, user_ip, user_agent, xforwarderfor, headers,
request);
request, context);
community.delete();
context.complete();
@@ -893,9 +893,9 @@ public class CommunitiesResource extends Resource
}
writeStats(community, UsageEvent.Action.UPDATE, user_ip, user_agent, xforwarderfor, headers,
request);
request, context);
writeStats(collection, UsageEvent.Action.DELETE, user_ip, user_agent, xforwarderfor, headers,
request);
request, context);
community.removeCollection(collection);
@@ -1000,9 +1000,9 @@ public class CommunitiesResource extends Resource
}
writeStats(parentCommunity, UsageEvent.Action.UPDATE, user_ip, user_agent, xforwarderfor,
headers, request);
headers, request, context);
writeStats(subcommunity, UsageEvent.Action.DELETE, user_ip, user_agent, xforwarderfor, headers,
request);
request, context);
parentCommunity.removeSubcommunity(subcommunity);
context.complete();

View File

@@ -104,7 +104,7 @@ public class ItemsResource extends Resource
context = createContext(getUser(headers));
org.dspace.content.Item dspaceItem = findItem(context, itemId, org.dspace.core.Constants.READ);
writeStats(dspaceItem, UsageEvent.Action.VIEW, user_ip, user_agent, xforwarderfor, headers, request);
writeStats(dspaceItem, UsageEvent.Action.VIEW, user_ip, user_agent, xforwarderfor, headers, request, context);
item = new Item(dspaceItem, expand, context);
context.complete();
@@ -182,7 +182,7 @@ public class ItemsResource extends Resource
{
items.add(new Item(dspaceItem, expand, context));
writeStats(dspaceItem, UsageEvent.Action.VIEW, user_ip, user_agent, xforwarderfor,
headers, request);
headers, request, context);
}
}
}
@@ -240,7 +240,7 @@ public class ItemsResource extends Resource
context = createContext(getUser(headers));
org.dspace.content.Item dspaceItem = findItem(context, itemId, org.dspace.core.Constants.READ);
writeStats(dspaceItem, UsageEvent.Action.VIEW, user_ip, user_agent, xforwarderfor, headers, request);
writeStats(dspaceItem, UsageEvent.Action.VIEW, user_ip, user_agent, xforwarderfor, headers, request, context);
metadata = new org.dspace.rest.common.Item(dspaceItem, "metadata", context).getMetadata();
context.complete();
@@ -299,7 +299,7 @@ public class ItemsResource extends Resource
context = createContext(getUser(headers));
org.dspace.content.Item dspaceItem = findItem(context, itemId, org.dspace.core.Constants.READ);
writeStats(dspaceItem, UsageEvent.Action.VIEW, user_ip, user_agent, xforwarderfor, headers, request);
writeStats(dspaceItem, UsageEvent.Action.VIEW, user_ip, user_agent, xforwarderfor, headers, request, context);
List<Bitstream> itemBitstreams = new Item(dspaceItem, "bitstreams", context).getBitstreams();
@@ -370,7 +370,7 @@ public class ItemsResource extends Resource
context = createContext(getUser(headers));
org.dspace.content.Item dspaceItem = findItem(context, itemId, org.dspace.core.Constants.WRITE);
writeStats(dspaceItem, UsageEvent.Action.UPDATE, user_ip, user_agent, xforwarderfor, headers, request);
writeStats(dspaceItem, UsageEvent.Action.UPDATE, user_ip, user_agent, xforwarderfor, headers, request, context);
for (MetadataEntry entry : metadata)
{
@@ -450,7 +450,7 @@ public class ItemsResource extends Resource
context = createContext(getUser(headers));
org.dspace.content.Item dspaceItem = findItem(context, itemId, org.dspace.core.Constants.WRITE);
writeStats(dspaceItem, UsageEvent.Action.UPDATE, user_ip, user_agent, xforwarderfor, headers, request);
writeStats(dspaceItem, UsageEvent.Action.UPDATE, user_ip, user_agent, xforwarderfor, headers, request, context);
// Is better to add bitstream to ORIGINAL bundle or to item own?
log.trace("Creating bitstream in item.");
@@ -616,7 +616,7 @@ public class ItemsResource extends Resource
context = createContext(getUser(headers));
org.dspace.content.Item dspaceItem = findItem(context, itemId, org.dspace.core.Constants.WRITE);
writeStats(dspaceItem, UsageEvent.Action.UPDATE, user_ip, user_agent, xforwarderfor, headers, request);
writeStats(dspaceItem, UsageEvent.Action.UPDATE, user_ip, user_agent, xforwarderfor, headers, request, context);
log.trace("Deleting original metadata from item.");
for (MetadataEntry entry : metadata)
@@ -698,7 +698,7 @@ public class ItemsResource extends Resource
context = createContext(getUser(headers));
org.dspace.content.Item dspaceItem = findItem(context, itemId, org.dspace.core.Constants.DELETE);
writeStats(dspaceItem, UsageEvent.Action.REMOVE, user_ip, user_agent, xforwarderfor, headers, request);
writeStats(dspaceItem, UsageEvent.Action.REMOVE, user_ip, user_agent, xforwarderfor, headers, request, context);
log.trace("Deleting item.");
org.dspace.content.Collection collection = org.dspace.content.Collection.find(context,
@@ -767,7 +767,7 @@ public class ItemsResource extends Resource
context = createContext(getUser(headers));
org.dspace.content.Item dspaceItem = findItem(context, itemId, org.dspace.core.Constants.WRITE);
writeStats(dspaceItem, UsageEvent.Action.UPDATE, user_ip, user_agent, xforwarderfor, headers, request);
writeStats(dspaceItem, UsageEvent.Action.UPDATE, user_ip, user_agent, xforwarderfor, headers, request, context);
log.trace("Deleting metadata.");
// TODO Rewrite without deprecated object. Leave there only generated metadata.
@@ -862,9 +862,9 @@ public class ItemsResource extends Resource
return Response.status(Status.UNAUTHORIZED).build();
}
writeStats(item, UsageEvent.Action.UPDATE, user_ip, user_agent, xforwarderfor, headers, request);
writeStats(item, UsageEvent.Action.UPDATE, user_ip, user_agent, xforwarderfor, headers, request, context);
writeStats(bitstream, UsageEvent.Action.REMOVE, user_ip, user_agent, xforwarderfor, headers,
request);
request, context);
log.trace("Deleting bitstream...");
for (org.dspace.content.Bundle bundle : item.getBundles())
@@ -1005,7 +1005,7 @@ public class ItemsResource extends Resource
org.dspace.core.Constants.READ);
Item item = new Item(dspaceItem, "", context);
writeStats(dspaceItem, UsageEvent.Action.VIEW, user_ip, user_agent, xforwarderfor, headers,
request);
request, context);
items.add(item);
}

View File

@@ -19,6 +19,7 @@ import javax.ws.rs.core.Response;
import org.apache.log4j.Logger;
import org.dspace.content.DSpaceObject;
import org.dspace.core.ConfigurationManager;
import org.dspace.core.Context;
import org.dspace.eperson.EPerson;
import org.dspace.rest.exceptions.ContextException;
import org.dspace.usage.UsageEvent;
@@ -99,22 +100,16 @@ public class Resource
* @param xforwarderfor
* @param headers
* @param request
* @param context
*/
protected void writeStats(DSpaceObject dspaceObject, UsageEvent.Action action,
String user_ip, String user_agent, String xforwarderfor, HttpHeaders headers, HttpServletRequest request)
String user_ip, String user_agent, String xforwarderfor, HttpHeaders headers, HttpServletRequest request, Context context)
{
if (!writeStatistics)
{
return;
}
org.dspace.core.Context context = null;
try
{
context = createContext(getUser(headers));
if ((user_ip == null) || (user_ip.length() == 0))
{
new DSpace().getEventService().fireEvent(new UsageEvent(action, request, context, dspaceObject));
@@ -126,28 +121,6 @@ public class Resource
}
log.debug("fired event");
context.complete();
}
catch (SQLException e)
{
if ((context != null) && (context.isValid()))
{
context.abort();
}
log.error("Could not write usageEvent, SQLException. Message: " + e);
}
catch (ContextException e)
{
log.error("Could not write usageEvent, ContextException. Message: " + e.getMessage());
}
finally
{
if ((context != null) && (context.isValid()))
{
context.abort();
log.error("Something get wrong. Aborting context in finally statement.");
}
}
}
/**