stefan 2004/07/09 09:48:55
Modified: proposals/jcrri/src/org/apache/slide/jcr/core/state
NodeState.java
proposals/jcrri/src/org/apache/slide/jcr/core/state/xml
XMLPersistenceManager.java
Log:
jcrri
Revision Changes Path
1.6 +22 -2
jakarta-slide/proposals/jcrri/src/org/apache/slide/jcr/core/state/NodeState.java
Index: NodeState.java
===================================================================
RCS file:
/home/cvs/jakarta-slide/proposals/jcrri/src/org/apache/slide/jcr/core/state/NodeState.java,v
retrieving revision 1.5
retrieving revision 1.6
diff -u -r1.5 -r1.6
--- NodeState.java 7 Jul 2004 16:05:07 -0000 1.5
+++ NodeState.java 9 Jul 2004 16:48:55 -0000 1.6
@@ -56,6 +56,7 @@
protected String uuid;
protected QName nodeTypeName;
+ protected Set mixinTypeNames = new HashSet();
protected NodeDefId defId;
// insertion-ordered collection of ChildNodeEntry objects
@@ -72,6 +73,7 @@
NodeState(NodeState overlayedState, int initialStatus) {
super(overlayedState, initialStatus);
nodeTypeName = overlayedState.getNodeTypeName();
+ mixinTypeNames.addAll(overlayedState.getMixinTypeNames());
defId = overlayedState.getDefinitionId();
uuid = overlayedState.getUUID();
parentUUIDs.addAll(overlayedState.getParentUUIDs());
@@ -114,6 +116,24 @@
*/
public QName getNodeTypeName() {
return nodeTypeName;
+ }
+
+ /**
+ * Returns the names of this node's mixin types.
+ *
+ * @return a set of the names of this node's mixin types.
+ */
+ public synchronized Set getMixinTypeNames() {
+ return Collections.unmodifiableSet(mixinTypeNames);
+ }
+
+ /**
+ * Sets the names of this node's mixin types.
+ * @param names set of names of mixin types
+ */
+ public synchronized void setMixinTypeNames(Set names) {
+ mixinTypeNames.clear();
+ mixinTypeNames.addAll(names);
}
/**
1.7 +28 -2
jakarta-slide/proposals/jcrri/src/org/apache/slide/jcr/core/state/xml/XMLPersistenceManager.java
Index: XMLPersistenceManager.java
===================================================================
RCS file:
/home/cvs/jakarta-slide/proposals/jcrri/src/org/apache/slide/jcr/core/state/xml/XMLPersistenceManager.java,v
retrieving revision 1.6
retrieving revision 1.7
diff -u -r1.6 -r1.7
--- XMLPersistenceManager.java 7 Jul 2004 16:03:43 -0000 1.6
+++ XMLPersistenceManager.java 9 Jul 2004 16:48:55 -0000 1.7
@@ -79,6 +79,9 @@
private static final String PARENTS_ELEMENT = "parents";
private static final String PARENT_ELEMENT = "parent";
+ private static final String MIXINTYPES_ELEMENT = "mixinTypes";
+ private static final String MIXINTYPE_ELEMENT = "mixinType";
+
private static final String PROPERTIES_ELEMENT = "properties";
private static final String PROPERTY_ELEMENT = "property";
private static final String NAME_ATTRIBUTE = "name";
@@ -202,6 +205,20 @@
state.setParentUUIDs(parentUUIDs);
}
+ // mixin types
+ Element mixinsElement = nodeElement.getChild(MIXINTYPES_ELEMENT);
+ if (mixinsElement != null) {
+ iter = mixinsElement.getChildren(MIXINTYPE_ELEMENT).iterator();
+ Set mixins = new HashSet();
+ while (iter.hasNext()) {
+ Element mixinElement = (Element) iter.next();
+
mixins.add(QName.valueOf(mixinElement.getAttributeValue(NAME_ATTRIBUTE)));
+ }
+ if (mixins.size() > 0) {
+ state.setMixinTypeNames(mixins);
+ }
+ }
+
// property entries
iter =
nodeElement.getChild(PROPERTIES_ELEMENT).getChildren(PROPERTY_ELEMENT).iterator();
while (iter.hasNext()) {
@@ -600,6 +617,15 @@
UUID_ATTRIBUTE + "=\"" + iter.next() + "\"/>\n");
}
writer.write("\t</" + PARENTS_ELEMENT + ">\n");
+
+ // mixin types
+ writer.write("\t<" + MIXINTYPES_ELEMENT + ">\n");
+ iter = state.getMixinTypeNames().iterator();
+ while (iter.hasNext()) {
+ writer.write("\t\t<" + MIXINTYPE_ELEMENT + " " +
+ NAME_ATTRIBUTE + "=\"" + iter.next() + "\"/>\n");
+ }
+ writer.write("\t</" + MIXINTYPES_ELEMENT + ">\n");
// properties
writer.write("\t<" + PROPERTIES_ELEMENT + ">\n");
---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]