mirror of https://github.com/OpenIdentityPlatform/OpenDJ.git

Jean-Noel Rouvignac
06.13.2013 e42dc413aa0397458248ceb336a667ee314632f0
refs
author Jean-Noel Rouvignac <jean-noel.rouvignac@forgerock.com>
Friday, December 6, 2013 17:13 +0100
committer Jean-Noel Rouvignac <jean-noel.rouvignac@forgerock.com>
Friday, December 6, 2013 17:13 +0100
commite42dc413aa0397458248ceb336a667ee314632f0
tree 9cdbc3e32b69570390e39beb88a362bbba4ba12a tree | zip | gz
parent 46ca4c41238b4d01f40cf203e06629e7e74bdb2b view | diff
OPENDJ-1088 (CR-2677) Wrong error message and result code when deleting branch as a user with insufficient access rights


Fixed ConcurrentModificationException introduced in r7972 for OPENDJ-475: Incorrect behaviour/result code regarding non-critical controls.
The ConcurrentModificationExcepotion was hidden via several method calls, but generally it takes such form:
1. for (Control c : Operation.getRequestControls()) - directly or via indirect calls
2. AccessControlHandler.isAllowed()
2.1. Operation.removeRequestControl()
3. ConcurrentModificationException on next loop iteration at 1.



LocalBackendWorkflowElement.java:
Replaced isControlAllowed() by removeAllDisallowedControls() that uses Iterator.remove() instead of Operation.removeRequestControl().


LocalBackend*Operation.java:
In handleRequestControls(), processControls() and processRequestControls(), called LocalBackendWorkflowElement.removeAllDisallowedControls() before the for loop + removed call to LocalBackendWorkflowElement.isControlAllowed() in the loop body.
Tiny code cleanups.

ExtendedOperationBasis.java, ECLSearchOperation.java:
Used Iterator.remove() instead of Operation.removeRequestControl().

MultimasterReplication.java:
In findDomain(), used Iterator.remove() instead of Operation.removeRequestControl() + simplified the while loop code.


Operation.java, OperationWrapper.java, PreParseOperation.java:
Removed now unused removeRequestControl().

AbstractOperation.java:
Consequence of the change to Operation.
little code tidy up.
15 files modified
338 ■■■■■ changed files
opendj-sdk/opends/src/server/org/opends/server/core/ExtendedOperationBasis.java 9 ●●●●● diff | view | raw | blame | history
opendj-sdk/opends/src/server/org/opends/server/core/OperationWrapper.java 9 ●●●●● diff | view | raw | blame | history
opendj-sdk/opends/src/server/org/opends/server/replication/plugin/MultimasterReplication.java 17 ●●●●● diff | view | raw | blame | history
opendj-sdk/opends/src/server/org/opends/server/types/AbstractOperation.java 30 ●●●● diff | view | raw | blame | history
opendj-sdk/opends/src/server/org/opends/server/types/Operation.java 10 ●●●●● diff | view | raw | blame | history
opendj-sdk/opends/src/server/org/opends/server/types/operation/PreParseOperation.java 22 ●●●● diff | view | raw | blame | history
opendj-sdk/opends/src/server/org/opends/server/workflowelement/externalchangelog/ECLSearchOperation.java 7 ●●●●● diff | view | raw | blame | history
opendj-sdk/opends/src/server/org/opends/server/workflowelement/localbackend/LocalBackendAddOperation.java 13 ●●●●● diff | view | raw | blame | history
opendj-sdk/opends/src/server/org/opends/server/workflowelement/localbackend/LocalBackendBindOperation.java 25 ●●●●● diff | view | raw | blame | history
opendj-sdk/opends/src/server/org/opends/server/workflowelement/localbackend/LocalBackendCompareOperation.java 10 ●●●●● diff | view | raw | blame | history
opendj-sdk/opends/src/server/org/opends/server/workflowelement/localbackend/LocalBackendDeleteOperation.java 42 ●●●●● diff | view | raw | blame | history
opendj-sdk/opends/src/server/org/opends/server/workflowelement/localbackend/LocalBackendModifyDNOperation.java 30 ●●●●● diff | view | raw | blame | history
opendj-sdk/opends/src/server/org/opends/server/workflowelement/localbackend/LocalBackendModifyOperation.java 32 ●●●●● diff | view | raw | blame | history
opendj-sdk/opends/src/server/org/opends/server/workflowelement/localbackend/LocalBackendSearchOperation.java 22 ●●●● diff | view | raw | blame | history
opendj-sdk/opends/src/server/org/opends/server/workflowelement/localbackend/LocalBackendWorkflowElement.java 60 ●●●●● diff | view | raw | blame | history