diff --git a/dspace-api/src/main/java/org/dspace/core/Context.java b/dspace-api/src/main/java/org/dspace/core/Context.java index 7c338a2632..bd33bce5dc 100644 --- a/dspace-api/src/main/java/org/dspace/core/Context.java +++ b/dspace-api/src/main/java/org/dspace/core/Context.java @@ -47,9 +47,6 @@ public class Context { private static final Logger log = Logger.getLogger(Context.class); - /** option flags */ - public static final short READ_ONLY = 0x01; - /** Current user - null means anonymous access */ private EPerson currentUser; @@ -723,15 +720,15 @@ public class Context } public Boolean getCachedAuthorizationResult(DSpaceObject dspaceObject, int action, EPerson eperson) { - if(mode == Mode.READ_ONLY) { + if(isReadOnly()) { return authorizedActionsCache.get(buildAuthorizedActionKey(dspaceObject, action, eperson)); } else { - return false; + return null; } } public void cacheAuthorizedAction(DSpaceObject dspaceObject, int action, EPerson eperson, Boolean result) { - if(mode == Mode.READ_ONLY) { + if(isReadOnly()) { authorizedActionsCache.put(buildAuthorizedActionKey(dspaceObject, action, eperson), result); } } diff --git a/dspace-api/src/main/java/org/dspace/rdf/RDFConsumer.java b/dspace-api/src/main/java/org/dspace/rdf/RDFConsumer.java index 43254d61f9..4b3ea7f9b1 100644 --- a/dspace-api/src/main/java/org/dspace/rdf/RDFConsumer.java +++ b/dspace-api/src/main/java/org/dspace/rdf/RDFConsumer.java @@ -320,7 +320,7 @@ public class RDFConsumer implements Consumer // create a new context, to be sure to work as anonymous user // we don't want to store private data in a triplestore with public // SPARQL endpoint. - ctx = new Context(Context.READ_ONLY); + ctx = new Context(Context.Mode.READ_ONLY); if (toDelete == null) { log.debug("Deletion queue does not exists, creating empty queue."); diff --git a/dspace-api/src/main/java/org/dspace/rdf/RDFizer.java b/dspace-api/src/main/java/org/dspace/rdf/RDFizer.java index 7fa57e7ce7..1bed96cc34 100644 --- a/dspace-api/src/main/java/org/dspace/rdf/RDFizer.java +++ b/dspace-api/src/main/java/org/dspace/rdf/RDFizer.java @@ -84,7 +84,7 @@ public class RDFizer { this.dryrun = false; this.lang = "TURTLE"; this.processed = new CopyOnWriteArraySet(); - this.context = new Context(Context.READ_ONLY); + this.context = new Context(Context.Mode.READ_ONLY); this.configurationService = DSpaceServicesFactory.getInstance().getConfigurationService(); this.contentServiceFactory = ContentServiceFactory.getInstance(); @@ -796,7 +796,7 @@ public class RDFizer { // data into a triple store that provides a public sparql endpoint. // all exported rdf data can be read by anonymous users. // We won't change the database => read_only context will assure this. - Context context = new Context(Context.READ_ONLY); + Context context = new Context(Context.Mode.READ_ONLY); RDFizer myself = null; myself = new RDFizer(); diff --git a/dspace-api/src/test/java/org/dspace/core/ContextTest.java b/dspace-api/src/test/java/org/dspace/core/ContextTest.java index c5e699a181..1416a0f362 100644 --- a/dspace-api/src/test/java/org/dspace/core/ContextTest.java +++ b/dspace-api/src/test/java/org/dspace/core/ContextTest.java @@ -307,7 +307,7 @@ public class ContextTest extends AbstractUnitTest assertThat("testIsReadOnly 0", context.isReadOnly(), equalTo(false)); // Create a new read-only context - Context instance = new Context(Context.READ_ONLY); + Context instance = new Context(Context.Mode.READ_ONLY); assertThat("testIsReadOnly 1", instance.isReadOnly(), equalTo(true)); // Cleanup our context diff --git a/dspace-rdf/src/main/java/org/dspace/rdf/providing/DataProviderServlet.java b/dspace-rdf/src/main/java/org/dspace/rdf/providing/DataProviderServlet.java index 76b952e05e..3ddc0bec0f 100644 --- a/dspace-rdf/src/main/java/org/dspace/rdf/providing/DataProviderServlet.java +++ b/dspace-rdf/src/main/java/org/dspace/rdf/providing/DataProviderServlet.java @@ -87,7 +87,7 @@ public class DataProviderServlet extends HttpServlet { DSpaceObject dso = null; try { - context = new Context(Context.READ_ONLY); + context = new Context(Context.Mode.READ_ONLY); dso = handleService.resolveToObject(context, handle); } catch (SQLException ex) diff --git a/dspace-rdf/src/main/java/org/dspace/rdf/providing/LocalURIRedirectionServlet.java b/dspace-rdf/src/main/java/org/dspace/rdf/providing/LocalURIRedirectionServlet.java index c6127183cd..133fe44d6a 100644 --- a/dspace-rdf/src/main/java/org/dspace/rdf/providing/LocalURIRedirectionServlet.java +++ b/dspace-rdf/src/main/java/org/dspace/rdf/providing/LocalURIRedirectionServlet.java @@ -69,7 +69,7 @@ public class LocalURIRedirectionServlet extends HttpServlet DSpaceObject dso = null; try { - context = new Context(Context.READ_ONLY); + context = new Context(Context.Mode.READ_ONLY); dso = handleService.resolveToObject(context, handle); } catch (SQLException ex) diff --git a/dspace-xmlui/src/main/java/org/dspace/app/xmlui/aspect/artifactbrowser/CommunityBrowser.java b/dspace-xmlui/src/main/java/org/dspace/app/xmlui/aspect/artifactbrowser/CommunityBrowser.java index 0f01a289f8..8ff1f7a4ab 100644 --- a/dspace-xmlui/src/main/java/org/dspace/app/xmlui/aspect/artifactbrowser/CommunityBrowser.java +++ b/dspace-xmlui/src/main/java/org/dspace/app/xmlui/aspect/artifactbrowser/CommunityBrowser.java @@ -40,6 +40,7 @@ import org.dspace.content.Community; import org.dspace.content.DSpaceObject; import org.dspace.content.factory.ContentServiceFactory; import org.dspace.content.service.CommunityService; +import org.dspace.core.Context; import org.dspace.services.factory.DSpaceServicesFactory; import org.dspace.core.Constants; import org.dspace.core.LogManager; @@ -146,7 +147,10 @@ public class CommunityBrowser extends AbstractDSpaceTransformer implements Cache if (validity == null) { try { - DSpaceValidity theValidity = new DSpaceValidity(); + Context.Mode originalMode = context.getCurrentMode(); + context.setMode(Context.Mode.READ_ONLY); + + DSpaceValidity theValidity = new DSpaceValidity(); TreeNode treeRoot = buildTree(communityService.findAllTop(context)); @@ -187,6 +191,8 @@ public class CommunityBrowser extends AbstractDSpaceTransformer implements Cache } this.validity = theValidity.complete(); + + context.setMode(originalMode); } catch (SQLException sqle) { @@ -236,6 +242,9 @@ public class CommunityBrowser extends AbstractDSpaceTransformer implements Cache division.setHead(T_head); division.addPara(T_select); + Context.Mode originalMode = context.getCurrentMode(); + context.setMode(Context.Mode.READ_ONLY); + TreeNode treeRoot = buildTree(communityService.findAllTop(context)); boolean full = DSpaceServicesFactory.getInstance().getConfigurationService().getBooleanProperty("xmlui.community-list.render.full", true); @@ -264,6 +273,8 @@ public class CommunityBrowser extends AbstractDSpaceTransformer implements Cache } } + + context.setMode(originalMode); } /** diff --git a/dspace-xmlui/src/main/java/org/dspace/app/xmlui/aspect/submission/Submissions.java b/dspace-xmlui/src/main/java/org/dspace/app/xmlui/aspect/submission/Submissions.java index 2b4c9c1cec..ca49c4df0c 100644 --- a/dspace-xmlui/src/main/java/org/dspace/app/xmlui/aspect/submission/Submissions.java +++ b/dspace-xmlui/src/main/java/org/dspace/app/xmlui/aspect/submission/Submissions.java @@ -26,6 +26,7 @@ import org.dspace.content.service.ItemService; import org.dspace.content.service.SupervisedItemService; import org.dspace.content.service.WorkspaceItemService; import org.dspace.core.Constants; +import org.dspace.core.Context; import org.dspace.eperson.EPerson; import org.xml.sax.SAXException; @@ -125,6 +126,9 @@ public class Submissions extends AbstractDSpaceTransformer public void addBody(Body body) throws SAXException, WingException, UIException, SQLException, IOException, AuthorizeException { + Context.Mode originalMode = context.getCurrentMode(); + context.setMode(Context.Mode.READ_ONLY); + Request request = ObjectModelHelper.getRequest(objectModel); boolean displayAll = false; //This param decides whether we display all of the user's previous @@ -141,6 +145,8 @@ public class Submissions extends AbstractDSpaceTransformer this.addUnfinishedSubmissions(div); // this.addSubmissionsInWorkflowDiv(div); this.addPreviousSubmissions(div, displayAll); + + context.setMode(originalMode); } /** diff --git a/dspace-xmlui/src/main/java/org/dspace/app/xmlui/aspect/submission/submit/SelectCollectionStep.java b/dspace-xmlui/src/main/java/org/dspace/app/xmlui/aspect/submission/submit/SelectCollectionStep.java index ac7c8a63dd..b2fd99abef 100644 --- a/dspace-xmlui/src/main/java/org/dspace/app/xmlui/aspect/submission/submit/SelectCollectionStep.java +++ b/dspace-xmlui/src/main/java/org/dspace/app/xmlui/aspect/submission/submit/SelectCollectionStep.java @@ -27,6 +27,7 @@ import org.dspace.content.DSpaceObject; import org.dspace.content.factory.ContentServiceFactory; import org.dspace.content.service.CollectionService; import org.dspace.core.Constants; +import org.dspace.core.Context; import org.dspace.handle.HandleServiceImpl; import org.dspace.handle.factory.HandleServiceFactory; import org.dspace.handle.service.HandleService; @@ -78,7 +79,10 @@ public class SelectCollectionStep extends AbstractSubmissionStep public void addBody(Body body) throws SAXException, WingException, UIException, SQLException, IOException, AuthorizeException - { + { + Context.Mode originalMode = context.getCurrentMode(); + context.setMode(Context.Mode.READ_ONLY); + java.util.List collections; // List of possible collections. String actionURL = contextPath + "/submit/" + knot.getId() + ".continue"; DSpaceObject dso = handleService.resolveToObject(context, handle); @@ -113,6 +117,8 @@ public class SelectCollectionStep extends AbstractSubmissionStep Button submit = list.addItem().addButton("submit"); submit.setValue(T_submit_next); + + context.setMode(originalMode); } /**