You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@jackrabbit.apache.org by ju...@apache.org on 2010/09/29 15:12:51 UTC
svn commit: r1002606 - in
/jackrabbit/trunk/jackrabbit-core/src/main/java/org/apache/jackrabbit/core/persistence/util:
BundleBinding.java ItemStateBinding.java
Author: jukka
Date: Wed Sep 29 13:12:51 2010
New Revision: 1002606
URL: http://svn.apache.org/viewvc?rev=1002606&view=rev
Log:
JCR-2762: Optimize bundle serialization
Remove duplicate code in ItemStateBinding by merging readID to readNodeId and writeID to writeNodeId.
Modified:
jackrabbit/trunk/jackrabbit-core/src/main/java/org/apache/jackrabbit/core/persistence/util/BundleBinding.java
jackrabbit/trunk/jackrabbit-core/src/main/java/org/apache/jackrabbit/core/persistence/util/ItemStateBinding.java
Modified: jackrabbit/trunk/jackrabbit-core/src/main/java/org/apache/jackrabbit/core/persistence/util/BundleBinding.java
URL: http://svn.apache.org/viewvc/jackrabbit/trunk/jackrabbit-core/src/main/java/org/apache/jackrabbit/core/persistence/util/BundleBinding.java?rev=1002606&r1=1002605&r2=1002606&view=diff
==============================================================================
--- jackrabbit/trunk/jackrabbit-core/src/main/java/org/apache/jackrabbit/core/persistence/util/BundleBinding.java (original)
+++ jackrabbit/trunk/jackrabbit-core/src/main/java/org/apache/jackrabbit/core/persistence/util/BundleBinding.java Wed Sep 29 13:12:51 2010
@@ -92,7 +92,7 @@ public class BundleBinding extends ItemS
bundle.setNodeTypeName(nodeTypeName);
// parentUUID
- bundle.setParentId(readID(in));
+ bundle.setParentId(readNodeId(in));
// definitionId
in.readUTF();
@@ -127,10 +127,10 @@ public class BundleBinding extends ItemS
bundle.setReferenceable(in.readBoolean());
// child nodes (list of uuid/name pairs)
- NodeId childId = readID(in);
+ NodeId childId = readNodeId(in);
while (childId != null) {
bundle.addChildNodeEntry(readQName(in), childId);
- childId = readID(in);
+ childId = readNodeId(in);
}
// read modcount, since version 1.0
@@ -142,10 +142,10 @@ public class BundleBinding extends ItemS
Set<NodeId> sharedSet = new HashSet<NodeId>();
if (version >= VERSION_2) {
// shared set (list of parent uuids)
- NodeId parentId = readID(in);
+ NodeId parentId = readNodeId(in);
while (parentId != null) {
sharedSet.add(parentId);
- parentId = readID(in);
+ parentId = readNodeId(in);
}
}
bundle.setSharedSet(sharedSet);
@@ -181,7 +181,7 @@ public class BundleBinding extends ItemS
return false;
}
try {
- NodeId parentId = readID(in);
+ NodeId parentId = readNodeId(in);
log.debug("ParentUUID: " + parentId);
} catch (IOException e) {
log.error("Error while reading ParentUUID: " + e);
@@ -225,11 +225,11 @@ public class BundleBinding extends ItemS
return false;
}
try {
- NodeId cneId = readID(in);
+ NodeId cneId = readNodeId(in);
while (cneId != null) {
Name cneName = readQName(in);
log.debug("ChildNodentry: " + cneId + ":" + cneName);
- cneId = readID(in);
+ cneId = readNodeId(in);
}
} catch (IOException e) {
log.error("Error while reading child node entry: " + e);
@@ -265,7 +265,7 @@ public class BundleBinding extends ItemS
out.writeInt(nameIndex.stringToIndex(bundle.getNodeTypeName().getLocalName()));
// parentUUID
- writeID(out, bundle.getParentId());
+ writeNodeId(out, bundle.getParentId());
// definitionId
out.writeUTF("");
@@ -299,19 +299,19 @@ public class BundleBinding extends ItemS
// child nodes (list of uuid/name pairs)
for (NodePropBundle.ChildNodeEntry entry : bundle.getChildNodeEntries()) {
- writeID(out, entry.getId()); // uuid
+ writeNodeId(out, entry.getId()); // uuid
writeQName(out, entry.getName()); // name
}
- writeID(out, null);
+ writeNodeId(out, null);
// write mod count
writeModCount(out, bundle.getModCount());
// write shared set
for (NodeId nodeId: bundle.getSharedSet()) {
- writeID(out, nodeId);
+ writeNodeId(out, nodeId);
}
- writeID(out, null);
+ writeNodeId(out, null);
// set size of bundle
bundle.setSize(out.size() - size);
@@ -390,10 +390,10 @@ public class BundleBinding extends ItemS
val = InternalValue.create(readQName(in));
break;
case PropertyType.WEAKREFERENCE:
- val = InternalValue.create(readID(in), true);
+ val = InternalValue.create(readNodeId(in), true);
break;
case PropertyType.REFERENCE:
- val = InternalValue.create(readID(in), false);
+ val = InternalValue.create(readNodeId(in), false);
break;
default:
// because writeUTF(String) has a size limit of 64k,
@@ -544,7 +544,7 @@ public class BundleBinding extends ItemS
case PropertyType.WEAKREFERENCE:
case PropertyType.REFERENCE:
try {
- NodeId id = readID(in);
+ NodeId id = readNodeId(in);
log.debug(" reference: " + id);
} catch (IOException e) {
log.error("Error while reading reference value: " + e);
@@ -717,7 +717,7 @@ public class BundleBinding extends ItemS
break;
case PropertyType.WEAKREFERENCE:
case PropertyType.REFERENCE:
- writeID(out, val.getNodeId());
+ writeNodeId(out, val.getNodeId());
break;
default:
// because writeUTF(String) has a size limit of 64k,
Modified: jackrabbit/trunk/jackrabbit-core/src/main/java/org/apache/jackrabbit/core/persistence/util/ItemStateBinding.java
URL: http://svn.apache.org/viewvc/jackrabbit/trunk/jackrabbit-core/src/main/java/org/apache/jackrabbit/core/persistence/util/ItemStateBinding.java?rev=1002606&r1=1002605&r2=1002606&view=diff
==============================================================================
--- jackrabbit/trunk/jackrabbit-core/src/main/java/org/apache/jackrabbit/core/persistence/util/ItemStateBinding.java (original)
+++ jackrabbit/trunk/jackrabbit-core/src/main/java/org/apache/jackrabbit/core/persistence/util/ItemStateBinding.java Wed Sep 29 13:12:51 2010
@@ -155,7 +155,7 @@ public class ItemStateBinding {
state.setNodeTypeName(NameFactoryImpl.getInstance().create(uri, local));
// parentUUID
- state.setParentId(readID(in));
+ state.setParentId(readNodeId(in));
// definitionId
in.readUTF();
@@ -177,7 +177,7 @@ public class ItemStateBinding {
count = in.readInt(); // count
for (int i = 0; i < count; i++) {
Name name = readQName(in);
- NodeId parentId = readID(in);
+ NodeId parentId = readNodeId(in);
state.addChildNodeEntry(name, parentId);
}
@@ -188,7 +188,7 @@ public class ItemStateBinding {
// shared set (list of parent uuids)
count = in.readInt(); // count
for (int i = 0; i < count; i++) {
- state.addShare(readID(in));
+ state.addShare(readNodeId(in));
}
}
return state;
@@ -207,7 +207,7 @@ public class ItemStateBinding {
out.writeInt((VERSION_CURRENT << 24) | nsIndex.stringToIndex(state.getNodeTypeName().getNamespaceURI()));
out.writeUTF(state.getNodeTypeName().getLocalName());
// parentUUID
- writeID(out, state.getParentId());
+ writeNodeId(out, state.getParentId());
// definitionId
out.writeUTF("");
// mixin types
@@ -229,7 +229,7 @@ public class ItemStateBinding {
for (Iterator<ChildNodeEntry> iter = collChild.iterator(); iter.hasNext();) {
ChildNodeEntry entry = iter.next();
writeQName(out, entry.getName()); // name
- writeID(out, entry.getId()); // uuid
+ writeNodeId(out, entry.getId()); // uuid
}
writeModCount(out, state.getModCount());
@@ -237,7 +237,7 @@ public class ItemStateBinding {
Collection<NodeId> collShared = state.getSharedSet();
out.writeInt(collShared.size()); // count
for (Iterator<NodeId> iter = collShared.iterator(); iter.hasNext();) {
- writeID(out, iter.next());
+ writeNodeId(out, iter.next());
}
}
@@ -263,12 +263,12 @@ public class ItemStateBinding {
* @param id the node id
* @throws IOException in an I/O error occurs.
*/
- public void writeNodeId(DataOutputStream out, String id) throws IOException {
+ public void writeNodeId(DataOutputStream out, NodeId id) throws IOException {
if (id == null) {
out.writeBoolean(false);
} else {
out.writeBoolean(true);
- out.write(new NodeId(id).getRawBytes());
+ out.write(id.getRawBytes());
}
}
@@ -304,40 +304,6 @@ public class ItemStateBinding {
}
/**
- * Deserializes a NodeID
- * @param in the input stream
- * @return the uuid
- * @throws IOException in an I/O error occurs.
- */
- public NodeId readID(DataInputStream in) throws IOException {
- if (in.readBoolean()) {
- byte[] bytes = new byte[16];
- int pos = 0;
- while (pos < 16) {
- pos += in.read(bytes, pos, 16 - pos);
- }
- return new NodeId(bytes);
- } else {
- return null;
- }
- }
-
- /**
- * Serializes a node id
- * @param out the output stream
- * @param id the id
- * @throws IOException in an I/O error occurs.
- */
- public void writeID(DataOutputStream out, NodeId id) throws IOException {
- if (id == null) {
- out.writeBoolean(false);
- } else {
- out.writeBoolean(true);
- out.write(id.getRawBytes());
- }
- }
-
- /**
* Deserializes a Name
* @param in the input stream
* @return the qname
@@ -419,7 +385,7 @@ public class ItemStateBinding {
* @throws IOException in an I/O error occurs.
*/
public void writePropertyId(DataOutputStream out, PropertyId id) throws IOException {
- writeID(out, id.getParentId());
+ writeNodeId(out, id.getParentId());
writeQName(out, id.getName());
}