Index: src/main/java/org/apache/jackrabbit/core/NodeImpl.java
===================================================================
--- src/main/java/org/apache/jackrabbit/core/NodeImpl.java	(revisión: 742459)
+++ src/main/java/org/apache/jackrabbit/core/NodeImpl.java	(copia de trabajo)
@@ -1977,6 +1977,20 @@
      * {@inheritDoc}
      */
     public synchronized Node addNode(String relPath, String nodeTypeName)
+    		throws ItemExistsException, PathNotFoundException,
+    		NoSuchNodeTypeException, VersionException,
+    		ConstraintViolationException, LockException, RepositoryException {
+    	// check state of this instance
+    	sanityCheck();
+    	
+    	NodeTypeImpl nt = (NodeTypeImpl) session.getNodeTypeManager().getNodeType(nodeTypeName);
+    	if (nt.isMixin()) {
+    		throw new RepositoryException(nodeTypeName + ": not a primary node type");
+    	}
+    	return internalAddNode(relPath, nt);
+    }
+
+    public synchronized Node addNode(String relPath, String nodeTypeName, String uuid)
             throws ItemExistsException, PathNotFoundException,
             NoSuchNodeTypeException, VersionException,
             ConstraintViolationException, LockException, RepositoryException {
@@ -1987,7 +2001,7 @@
         if (nt.isMixin()) {
             throw new RepositoryException(nodeTypeName + ": not a primary node type");
         }
-        return internalAddNode(relPath, nt);
+        return internalAddNode(relPath, nt, new NodeId(new UUID(uuid)));
     }
 
     /**
@@ -2931,7 +2945,7 @@
     /**
      * {@inheritDoc}
      */
-    public Version checkin()
+    public Version checkin(Calendar cal)
             throws VersionException, UnsupportedRepositoryOperationException,
             InvalidItemStateException, LockException, RepositoryException {
         // check state of this instance
@@ -2957,7 +2971,7 @@
         // check lock status
         checkLock();
 
-        Version v = session.getVersionManager().checkin(this);
+        Version v = session.getVersionManager().checkin(this, cal);
         internalSetProperty(NameConstants.JCR_ISCHECKEDOUT, InternalValue.create(false));
         internalSetProperty(NameConstants.JCR_BASEVERSION, InternalValue.create(new UUID(v.getUUID())));
         internalSetProperty(NameConstants.JCR_PREDECESSORS, InternalValue.EMPTY_ARRAY, PropertyType.REFERENCE);
@@ -4538,4 +4552,10 @@
             }
         }
     }
+
+	public Version checkin() throws VersionException,
+			UnsupportedRepositoryOperationException, InvalidItemStateException,
+			LockException, RepositoryException {
+		throw new UnsupportedRepositoryOperationException("Mal, mal, mal!");
+	}
 }
Index: src/main/java/org/apache/jackrabbit/core/version/VersionManagerImpl.java
===================================================================
--- src/main/java/org/apache/jackrabbit/core/version/VersionManagerImpl.java	(revisión: 742459)
+++ src/main/java/org/apache/jackrabbit/core/version/VersionManagerImpl.java	(copia de trabajo)
@@ -52,6 +52,7 @@
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 
+import java.util.Calendar;
 import java.util.Collection;
 import java.util.Iterator;
 import java.util.List;
@@ -272,13 +273,13 @@
      * This method must not be synchronized since it could cause deadlocks with
      * item-reading listeners in the observation thread.
      */
-    public Version checkin(final NodeImpl node) throws RepositoryException {
+    public Version checkin(final NodeImpl node, final Calendar cal) throws RepositoryException {
         InternalVersion version = (InternalVersion)
                 escFactory.doSourced((SessionImpl) node.getSession(), new SourcedTarget(){
             public Object run() throws RepositoryException {
                 String histUUID = node.getProperty(NameConstants.JCR_VERSIONHISTORY).getString();
                 return checkin((InternalVersionHistoryImpl)
-                        getVersionHistory(NodeId.valueOf(histUUID)), node);
+                        getVersionHistory(NodeId.valueOf(histUUID)), node, cal);
             }
         });
 
Index: src/main/java/org/apache/jackrabbit/core/version/AbstractVersionManager.java
===================================================================
--- src/main/java/org/apache/jackrabbit/core/version/AbstractVersionManager.java	(revisión: 742459)
+++ src/main/java/org/apache/jackrabbit/core/version/AbstractVersionManager.java	(copia de trabajo)
@@ -16,6 +16,8 @@
  */
 package org.apache.jackrabbit.core.version;
 
+import java.util.Calendar;
+
 import EDU.oswego.cs.dl.util.concurrent.ReadWriteLock;
 import EDU.oswego.cs.dl.util.concurrent.ReentrantWriterPreferenceReadWriteLock;
 import org.apache.jackrabbit.core.NodeId;
@@ -385,12 +387,12 @@
      * @throws javax.jcr.RepositoryException if an error occurs
      * @see javax.jcr.Node#checkin()
      */
-    protected InternalVersion checkin(InternalVersionHistoryImpl history, NodeImpl node)
+    protected InternalVersion checkin(InternalVersionHistoryImpl history, NodeImpl node, Calendar cal)
             throws RepositoryException {
         WriteOperation operation = startWriteOperation();
         try {
             String versionName = calculateCheckinVersionName(history, node);
-            InternalVersionImpl v = history.checkin(NameFactoryImpl.getInstance().create("", versionName), node);
+            InternalVersionImpl v = history.checkin(NameFactoryImpl.getInstance().create("", versionName), node, cal);
             operation.save();
             return v;
         } catch (ItemStateException e) {
Index: src/main/java/org/apache/jackrabbit/core/version/XAVersionManager.java
===================================================================
--- src/main/java/org/apache/jackrabbit/core/version/XAVersionManager.java	(revisión: 742459)
+++ src/main/java/org/apache/jackrabbit/core/version/XAVersionManager.java	(copia de trabajo)
@@ -47,6 +47,8 @@
 import javax.jcr.version.Version;
 import javax.jcr.version.VersionException;
 import javax.jcr.version.VersionHistory;
+
+import java.util.Calendar;
 import java.util.HashMap;
 import java.util.Map;
 
@@ -145,14 +147,14 @@
     /**
      * {@inheritDoc}
      */
-    public Version checkin(NodeImpl node) throws RepositoryException {
+    public Version checkin(NodeImpl node, Calendar cal) throws RepositoryException {
         if (isInXA()) {
             String histUUID = node.getProperty(NameConstants.JCR_VERSIONHISTORY).getString();
             InternalVersion version = checkin((InternalVersionHistoryImpl)
-                    getVersionHistory(NodeId.valueOf(histUUID)), node);
+                    getVersionHistory(NodeId.valueOf(histUUID)), node, cal);
             return (Version) ((SessionImpl) node.getSession()).getNodeById(version.getId());
         }
-        return vMgr.checkin(node);
+        return vMgr.checkin(node, cal);
     }
 
     /**
@@ -353,14 +355,14 @@
      * Before modifying version history given, make a local copy of it.
      */
     protected InternalVersion checkin(InternalVersionHistoryImpl history,
-                                      NodeImpl node)
+                                      NodeImpl node, Calendar cal)
             throws RepositoryException {
 
         if (history.getVersionManager() != this) {
             history = makeLocalCopy(history);
             xaItems.put(history.getId(), history);
         }
-        InternalVersion version = super.checkin(history, node);
+        InternalVersion version = super.checkin(history, node, cal);
         NodeId frozenNodeId = version.getFrozenNodeId();
         InternalVersionItem frozenNode = createInternalVersionItem(frozenNodeId);
         if (frozenNode != null) {
Index: src/main/java/org/apache/jackrabbit/core/version/VersionManager.java
===================================================================
--- src/main/java/org/apache/jackrabbit/core/version/VersionManager.java	(revisión: 742459)
+++ src/main/java/org/apache/jackrabbit/core/version/VersionManager.java	(copia de trabajo)
@@ -16,6 +16,8 @@
  */
 package org.apache.jackrabbit.core.version;
 
+import java.util.Calendar;
+
 import org.apache.jackrabbit.core.NodeImpl;
 import org.apache.jackrabbit.core.NodeId;
 import org.apache.jackrabbit.core.state.NodeState;
@@ -78,7 +80,7 @@
      * @return
      * @throws RepositoryException
      */
-    Version checkin(NodeImpl node) throws RepositoryException;
+    Version checkin(NodeImpl node, Calendar cal) throws RepositoryException;
 
     /**
      * Removes the specified version from the given version history.
Index: src/main/java/org/apache/jackrabbit/core/version/InternalVersionHistoryImpl.java
===================================================================
--- src/main/java/org/apache/jackrabbit/core/version/InternalVersionHistoryImpl.java	(revisión: 742459)
+++ src/main/java/org/apache/jackrabbit/core/version/InternalVersionHistoryImpl.java	(copia de trabajo)
@@ -459,7 +459,7 @@
      * @return
      * @throws RepositoryException
      */
-    InternalVersionImpl checkin(Name name, NodeImpl src)
+    InternalVersionImpl checkin(Name name, NodeImpl src, Calendar cal)
             throws RepositoryException {
 
         // copy predecessors from src node
@@ -478,7 +478,7 @@
         NodeStateEx vNode = node.addNode(name, NameConstants.NT_VERSION, versionId, true);
 
         // initialize 'created', 'predecessors' and 'successors'
-        vNode.setPropertyValue(NameConstants.JCR_CREATED, InternalValue.create(Calendar.getInstance()));
+        vNode.setPropertyValue(NameConstants.JCR_CREATED, InternalValue.create(cal));
         vNode.setPropertyValues(NameConstants.JCR_PREDECESSORS, PropertyType.REFERENCE, predecessors);
         vNode.setPropertyValues(NameConstants.JCR_SUCCESSORS, PropertyType.REFERENCE, InternalValue.EMPTY_ARRAY);
 
