Code Review
/
controller.git
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
review
|
tree
raw
|
inline
| side by side
Use careful byte-masking/shifting in Mg Input
[controller.git]
/
opendaylight
/
md-sal
/
sal-clustering-commons
/
src
/
main
/
java
/
org
/
opendaylight
/
controller
/
cluster
/
datastore
/
node
/
utils
/
stream
/
AbstractMagnesiumDataInput.java
diff --git
a/opendaylight/md-sal/sal-clustering-commons/src/main/java/org/opendaylight/controller/cluster/datastore/node/utils/stream/AbstractMagnesiumDataInput.java
b/opendaylight/md-sal/sal-clustering-commons/src/main/java/org/opendaylight/controller/cluster/datastore/node/utils/stream/AbstractMagnesiumDataInput.java
index d8302e5bcd1c6be22d1449d08e49d064d07a9fcf..a51b121a4fc73801b833568a641c1835007ba3c9 100644
(file)
--- a/
opendaylight/md-sal/sal-clustering-commons/src/main/java/org/opendaylight/controller/cluster/datastore/node/utils/stream/AbstractMagnesiumDataInput.java
+++ b/
opendaylight/md-sal/sal-clustering-commons/src/main/java/org/opendaylight/controller/cluster/datastore/node/utils/stream/AbstractMagnesiumDataInput.java
@@
-258,7
+258,7
@@
abstract class AbstractMagnesiumDataInput extends AbstractNormalizedNodeDataInpu
final NodeIdentifier nodeId = decodeNodeIdentifier(nodeHeader, parent);
final int size;
final NodeIdentifier nodeId = decodeNodeIdentifier(nodeHeader, parent);
final int size;
- switch (
nodeHeader & MagnesiumNode.PREDICATE_MASK
) {
+ switch (
mask(nodeHeader, MagnesiumNode.PREDICATE_MASK)
) {
case MagnesiumNode.PREDICATE_ZERO:
size = 0;
break;
case MagnesiumNode.PREDICATE_ZERO:
size = 0;
break;
@@
-434,7
+434,7
@@
abstract class AbstractMagnesiumDataInput extends AbstractNormalizedNodeDataInpu
}
private AugmentationIdentifier readAugmentationIdentifier(final byte header) throws IOException {
}
private AugmentationIdentifier readAugmentationIdentifier(final byte header) throws IOException {
- final
int count = header & MagnesiumPathArgument.AID_COUNT_MASK
;
+ final
byte count = mask(header, MagnesiumPathArgument.AID_COUNT_MASK)
;
switch (count) {
case MagnesiumPathArgument.AID_COUNT_1B:
return readAugmentationIdentifier(input.readUnsignedByte());
switch (count) {
case MagnesiumPathArgument.AID_COUNT_1B:
return readAugmentationIdentifier(input.readUnsignedByte());
@@
-443,7
+443,7
@@
abstract class AbstractMagnesiumDataInput extends AbstractNormalizedNodeDataInpu
case MagnesiumPathArgument.AID_COUNT_4B:
return readAugmentationIdentifier(input.readInt());
default:
case MagnesiumPathArgument.AID_COUNT_4B:
return readAugmentationIdentifier(input.readInt());
default:
- return readAugmentationIdentifier(
count >>> MagnesiumPathArgument.AID_COUNT_SHIFT
);
+ return readAugmentationIdentifier(
rshift(count, MagnesiumPathArgument.AID_COUNT_SHIFT)
);
}
}
}
}
@@
-482,7
+482,7
@@
abstract class AbstractMagnesiumDataInput extends AbstractNormalizedNodeDataInpu
private NodeIdentifierWithPredicates readNodeIdentifierWithPredicates(final byte header) throws IOException {
final QName qname = readNodeIdentifier(header).getNodeType();
private NodeIdentifierWithPredicates readNodeIdentifierWithPredicates(final byte header) throws IOException {
final QName qname = readNodeIdentifier(header).getNodeType();
- switch (
header & MagnesiumPathArgument.SIZE_MASK
) {
+ switch (
mask(header, MagnesiumPathArgument.SIZE_MASK)
) {
case MagnesiumPathArgument.SIZE_1B:
return readNodeIdentifierWithPredicates(qname, input.readUnsignedByte());
case MagnesiumPathArgument.SIZE_2B:
case MagnesiumPathArgument.SIZE_1B:
return readNodeIdentifierWithPredicates(qname, input.readUnsignedByte());
case MagnesiumPathArgument.SIZE_2B:
@@
-490,7
+490,7
@@
abstract class AbstractMagnesiumDataInput extends AbstractNormalizedNodeDataInpu
case MagnesiumPathArgument.SIZE_4B:
return readNodeIdentifierWithPredicates(qname, input.readInt());
default:
case MagnesiumPathArgument.SIZE_4B:
return readNodeIdentifierWithPredicates(qname, input.readInt());
default:
- return readNodeIdentifierWithPredicates(qname,
header >>> MagnesiumPathArgument.SIZE_SHIFT
);
+ return readNodeIdentifierWithPredicates(qname,
rshift(header, MagnesiumPathArgument.SIZE_SHIFT)
);
}
}
}
}
@@
-517,7
+517,7
@@
abstract class AbstractMagnesiumDataInput extends AbstractNormalizedNodeDataInpu
}
private static void verifyPathIdentifierOnly(final byte header) throws InvalidNormalizedNodeStreamException {
}
private static void verifyPathIdentifierOnly(final byte header) throws InvalidNormalizedNodeStreamException {
- if (
(header &
MagnesiumPathArgument.SIZE_MASK) != 0) {
+ if (
mask(header,
MagnesiumPathArgument.SIZE_MASK) != 0) {
throw new InvalidNormalizedNodeStreamException("Invalid path argument header " + header);
}
}
throw new InvalidNormalizedNodeStreamException("Invalid path argument header " + header);
}
}
@@
-845,4
+845,12
@@
abstract class AbstractMagnesiumDataInput extends AbstractNormalizedNodeDataInpu
throw new InvalidNormalizedNodeStreamException("Invalid bits length " + size);
}
}
throw new InvalidNormalizedNodeStreamException("Invalid bits length " + size);
}
}
+
+ private static byte mask(final byte header, final byte mask) {
+ return (byte) (header & mask);
+ }
+
+ private static int rshift(final byte header, final byte shift) {
+ return (header & 0xFF) >>> shift;
+ }
}
}