public JCRNodeWrapper addNode(String name, String type, String identifier, Calendar created, String createdBy, Calendar lastModified, String lastModifiedBy) throws ItemExistsException, PathNotFoundException, NoSuchNodeTypeException, LockException, VersionException, ConstraintViolationException, RepositoryException {
checkLock();
if (objectNode instanceof NodeImpl) {
JahiaSessionImpl jrSession = (JahiaSessionImpl) objectNode.getSession();
jrSession.getNodeTypeInstanceHandler().setCreated(created);
jrSession.getNodeTypeInstanceHandler().setCreatedBy(createdBy);
jrSession.getNodeTypeInstanceHandler().setLastModified(lastModified);
jrSession.getNodeTypeInstanceHandler().setLastModifiedBy(lastModifiedBy);
try {
if (identifier != null) {
org.jahia.services.content.nodetypes.Name jahiaName = new org.jahia.services.content.nodetypes.Name(name, NodeTypeRegistry.getInstance().getNamespaces());
Name qname = NameFactoryImpl.getInstance().create(jahiaName.getUri() == null ? "" : jahiaName.getUri(), jahiaName.getLocalName());
Name typeName = null;
if (type != null) {
org.jahia.services.content.nodetypes.Name jahiaTypeName = NodeTypeRegistry.getInstance()
.getNodeType(type).getNameObject();
typeName = NameFactoryImpl.getInstance().create(jahiaTypeName.getUri(),
jahiaTypeName.getLocalName());
}
Node child = ((NodeImpl) objectNode).addNode(qname, typeName, org.apache.jackrabbit.core.id.NodeId.valueOf(identifier));
return provider.getNodeWrapper(child, buildSubnodePath(name), this, session);
} else {
return addNode(name, type);
}
} finally {
jrSession.getNodeTypeInstanceHandler().setCreated(null);
jrSession.getNodeTypeInstanceHandler().setCreatedBy(null);
jrSession.getNodeTypeInstanceHandler().setLastModified(null);
jrSession.getNodeTypeInstanceHandler().setLastModifiedBy(null);
}
} else {
return addNode(name, type);
}
}