Skip to content

Commit 76a8d77

Browse files
YanaDePauwjonas-atmire
authored andcommitted
71698: Fix to service init to happen before param retrieval
1 parent b4bcbd6 commit 76a8d77

File tree

1 file changed

+58
-48
lines changed

1 file changed

+58
-48
lines changed

dspace/modules/atmire-statistics-exporter/atmire-statistics-exporter-api/src/main/java/com/atmire/statistics/export/ExportUsageEventListener.java

Lines changed: 58 additions & 48 deletions
Original file line numberDiff line numberDiff line change
@@ -29,12 +29,32 @@
2929
*/
3030
package com.atmire.statistics.export;
3131

32+
import java.io.BufferedReader;
33+
import java.io.IOException;
34+
import java.io.InputStreamReader;
35+
import java.io.UnsupportedEncodingException;
36+
import java.net.HttpURLConnection;
37+
import java.net.URL;
38+
import java.net.URLConnection;
39+
import java.net.URLEncoder;
40+
import java.sql.SQLException;
41+
import java.util.ArrayList;
42+
import java.util.Date;
43+
import java.util.List;
44+
import java.util.UUID;
45+
import javax.servlet.http.HttpServletRequest;
46+
3247
import com.atmire.statistics.export.factory.OpenURLTrackerLoggerServiceFactory;
3348
import com.atmire.statistics.export.service.OpenURLTrackerLoggerService;
3449
import org.apache.commons.lang.StringUtils;
3550
import org.apache.log4j.Logger;
3651
import org.dspace.app.util.Util;
37-
import org.dspace.content.*;
52+
import org.dspace.content.Bitstream;
53+
import org.dspace.content.Bundle;
54+
import org.dspace.content.DCDate;
55+
import org.dspace.content.Item;
56+
import org.dspace.content.MetadataField;
57+
import org.dspace.content.MetadataValue;
3858
import org.dspace.content.factory.ContentServiceFactory;
3959
import org.dspace.content.service.MetadataFieldService;
4060
import org.dspace.core.Context;
@@ -46,21 +66,6 @@
4666
import org.dspace.usage.AbstractUsageEventListener;
4767
import org.dspace.usage.UsageEvent;
4868

49-
import javax.servlet.http.HttpServletRequest;
50-
import java.io.BufferedReader;
51-
import java.io.IOException;
52-
import java.io.InputStreamReader;
53-
import java.io.UnsupportedEncodingException;
54-
import java.net.HttpURLConnection;
55-
import java.net.URL;
56-
import java.net.URLConnection;
57-
import java.net.URLEncoder;
58-
import java.sql.SQLException;
59-
import java.util.ArrayList;
60-
import java.util.Date;
61-
import java.util.List;
62-
import java.util.UUID;
63-
6469
/**
6570
* User: kevin (kevin at atmire.com)
6671
* Date: 30-mrt-2010
@@ -126,11 +131,13 @@ public void init(Context context) {
126131
}
127132

128133
public void receiveEvent(Event event) {
129-
boolean irusEnabled = configurationService.getBooleanProperty("stats.tracker.enabled");
130-
if (irusEnabled && event instanceof UsageEvent) {
134+
if (event instanceof UsageEvent) {
131135
UsageEvent ue = (UsageEvent) event;
132136
Context context = ue.getContext();
133-
try {
137+
init(context);
138+
boolean irusEnabled = configurationService.getBooleanProperty("stats.tracker.enabled");
139+
if (irusEnabled) {
140+
try {
134141
//Check for item investigation
135142
if (ue.getObject() instanceof Item) {
136143
Item item = (Item) ue.getObject();
@@ -143,43 +150,46 @@ public void receiveEvent(Event event) {
143150
}
144151
}
145152
//Check for bitstream download
146-
if (ue.getObject() instanceof Bitstream) {
147-
Bitstream bit = (Bitstream) ue.getObject();
148-
//Check for an item
149-
if (0 < bit.getBundles().size()) {
150-
if (!SpiderDetector.isSpider(ue.getRequest())) {
151-
Bundle bundle = bit.getBundles().get(0);
152-
if (bundle.getName() == null || !bundle.getName().equals("ORIGINAL"))
153-
return;
154-
155-
if (0 < bundle.getItems().size()) {
156-
Item item = bundle.getItems().get(0);
157-
158-
if(item.isArchived() && !ContentServiceFactory.getInstance().getItemService().canEdit(context, item)) {
159-
//Check if we have a valid type of item !
160-
init(context);
153+
if (ue.getObject() instanceof Bitstream) {
154+
Bitstream bit = (Bitstream) ue.getObject();
155+
//Check for an item
156+
if (0 < bit.getBundles().size()) {
157+
if (!SpiderDetector.isSpider(ue.getRequest())) {
158+
Bundle bundle = bit.getBundles().get(0);
159+
if (bundle.getName() == null || !bundle.getName().equals("ORIGINAL"))
160+
return;
161+
162+
if (0 < bundle.getItems().size()) {
163+
Item item = bundle.getItems().get(0);
164+
165+
if (item.isArchived() && !ContentServiceFactory.getInstance().getItemService()
166+
.canEdit(context, item)) {
167+
//Check if we have a valid type of item !
161168
if (shouldProcessItem(item)) {
162169
processItem(ue.getContext(), item, bit, ue.getRequest(), BITSTREAM_DOWNLOAD);
170+
}
163171
}
164172
}
173+
} else {
174+
log.info("Robot (" + ue.getRequest().getHeader("user-agent") + ") accessed " + bit
175+
.getName() + "/" + bit.getSource());
165176
}
166-
} else {
167-
log.info("Robot (" + ue.getRequest().getHeader("user-agent") + ") accessed " + bit.getName() + "/" + bit.getSource());
168177
}
169178
}
179+
} catch (Exception e) {
180+
UUID id;
181+
id = ue.getObject().getID();
182+
183+
int type;
184+
try {
185+
type = ue.getObject().getType();
186+
} catch (Exception e1) {
187+
type = -1;
188+
}
189+
log.error(LogManager.getHeader(ue.getContext(), "Error while processing export of use event",
190+
"Id: " + id + " type: " + type), e);
191+
e.printStackTrace();
170192
}
171-
} catch (Exception e) {
172-
UUID id;
173-
id = ue.getObject().getID();
174-
175-
int type;
176-
try {
177-
type = ue.getObject().getType();
178-
} catch (Exception e1) {
179-
type = -1;
180-
}
181-
log.error(LogManager.getHeader(ue.getContext(), "Error while processing export of use event", "Id: " + id + " type: " + type), e);
182-
e.printStackTrace();
183193
}
184194
}
185195
}

0 commit comments

Comments
 (0)