Index: /home/ntoper/workspace/jackrabbit/java/org/apache/jackrabbit/core/xml/PropInfo.java
===================================================================
--- /home/ntoper/workspace/jackrabbit/java/org/apache/jackrabbit/core/xml/PropInfo.java	(revision 440759)
+++ /home/ntoper/workspace/jackrabbit/java/org/apache/jackrabbit/core/xml/PropInfo.java	(working copy)
@@ -74,6 +74,11 @@
     private final TextValue[] values;
 
     /**
+     * Indicate whether or not we skip protected node
+     */
+    private boolean skipProtected = true;
+
+    /**
      * Creates a proprety information instance.
      *
      * @param name name of the property being imported
@@ -120,7 +125,7 @@
     public void apply(NodeImpl node, NamespaceResolver resolver, ReferenceChangeTracker refTracker) throws RepositoryException, ConstraintViolationException, ValueFormatException, VersionException, LockException, ItemNotFoundException {
         // find applicable definition
         PropDef def = getApplicablePropertyDef(node.getEffectiveNodeType());
-        if (def.isProtected()) {
+        if (skipProtected && def.isProtected()) {
             // skip protected property
             log.debug("skipping protected property " + name);
             return;
@@ -125,7 +130,7 @@
             log.debug("skipping protected property " + name);
             return;
         }
-        
+
         // convert serialized values to Value objects
         Value[] va = new Value[values.length];
         int targetType = getTargetType(def);
@@ -132,7 +137,7 @@
         for (int i = 0; i < values.length; i++) {
             va[i] = values[i].getValue(targetType, resolver);
         }
-        
+
         // multi- or single-valued property?
         if (va.length == 1) {
             // could be single- or multi-valued (n == 1)
@@ -165,7 +170,7 @@
             PropertyId idExisting = new PropertyId(node.getNodeId(), name);
             prop = (PropertyState) itemOps.getItemState(idExisting);
             def = ntReg.getPropDef(prop.getDefinitionId());
-            if (def.isProtected()) {
+            if (skipProtected && def.isProtected()) {
                 // skip protected property
                 log.debug("skipping protected property "
                         + itemOps.safeGetJCRPath(idExisting));
@@ -180,7 +185,7 @@
             // there's no property with that name,
             // find applicable definition
             def = getApplicablePropertyDef(itemOps.getEffectiveNodeType(node));
-            if (def.isProtected()) {
+            if (skipProtected && def.isProtected()) {
                 // skip protected property
                 log.debug("skipping protected property " + name);
                 return;
@@ -185,7 +190,7 @@
                 log.debug("skipping protected property " + name);
                 return;
             }
-            
+
             // create new property
             prop = itemOps.createPropertyState(node, name, type, def);
         }
@@ -218,4 +223,12 @@
         itemOps.store(prop);
     }
 
+    public boolean skipProtected() {
+        return skipProtected;
+    }
+
+    public void setSkipProtected(boolean skipProtected2) {
+        skipProtected = skipProtected2;
+    }
+
 }
