You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@jackrabbit.apache.org by Tomasz Dabrowski <To...@cognifide.com> on 2006/02/06 10:49:32 UTC
Export/import versioning node - error?
Hi,
As far as I found after export/import versioning node there is need to
checkin it. I wrote some simple prototype for it. I'm not sure if
version name after checkin node is correct. My scenario is:
1. Create some node with type "mix:versionable" in "default" workspace
(node named by NODE_NAME in my source).
2. Export this node using document view.
3. Create diffrent workspace (named by WORKSPACE_WITH_IMPORTED_DATA in
my source).
4. Login to newly created workspace.
5. Import my data using method on Workspace object.
6. Get my imported node (created in step 1) and check-in it.
7. Print version name for imported node.
Here is output:
10:38:39 INFO - Creating EmbeddedRepository.
10:38:40 INFO - Created EmbeddedRepository successfully in location
[d:/repo_prototyping/].
10:38:40 INFO - Data exported.
10:38:41 INFO - Workspace with name=[importedWorkspace2] created.
10:38:41 ERROR
org.apache.jackrabbit.core.ItemValidator.safeGetJCRPath(ItemValidator.ja
va:237) - 117b4ae6-4ca4-4e12-82a1-5ea284494e6c: failed to build path
10:38:41 INFO - Data imported.
10:38:41 INFO - version name=[rootVersion.1]
10:38:41 INFO - Done.
I'm a bit afraid of this error - "117b4ae6-4ca4-4e12-82a1-5ea284494e6c:
failed to build path". Is it ok?? What about version name
("rootVersion.1")? Shouldn't it be built using only digits?
Kind regards,
Tomek
=========================================================
I attached my source.
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.IOException;
import javax.jcr.ImportUUIDBehavior;
import javax.jcr.Node;
import javax.jcr.Repository;
import javax.jcr.RepositoryException;
import javax.jcr.Session;
import javax.jcr.SimpleCredentials;
import javax.jcr.Workspace;
import org.apache.jackrabbit.core.RepositoryImpl;
import org.apache.jackrabbit.core.WorkspaceImpl;
import org.apache.jackrabbit.core.config.RepositoryConfig;
public class JackrabbitExportTest {
private static final org.apache.commons.logging.Log log =
org.apache.commons.logging.LogFactory.getLog(JackrabbitExportTest.class)
;
public static String REPOSITORY_HOME = "d:/repo_prototyping/";
public static String REPOSITORY_CONFIG = REPOSITORY_HOME +
"repository.xml";
private static final String WORKSPACE_WITH_IMPORTED_DATA =
"importedWorkspace2";
private static final String EXPORT_DOCUMENT_VIEW_FILE_PATH =
"exportDocumentView.xml";
private static final String EXPORT_SYSTEM_VIEW_FILE_PATH =
"exportSystemView.xml";
private static final String NODE_NAME = "node";
public static void main(String[] args) throws RepositoryException,
FileNotFoundException, IOException {
System.setProperty("java.security.auth.login.config",
"jaas_jcr.config");
// login to first repository
log.info("Creating EmbeddedRepository.");
RepositoryConfig config =
RepositoryConfig.create(REPOSITORY_CONFIG, REPOSITORY_HOME);
Repository repository = RepositoryImpl.create(config);
log.info("Created EmbeddedRepository successfully in location ["
+ REPOSITORY_HOME + "].");
Session session = repository.login(new
SimpleCredentials("admin", "admin".toCharArray()));
// create some data
Node root = session.getRootNode();
Node node = null;
if (root.hasNode(NODE_NAME)) {
node = root.getNode(NODE_NAME);
node.checkout();
}
else {
node = root.addNode(NODE_NAME);
node.addMixin("mix:versionable");
}
root.save();
node.checkin();
// export it
try {
String path = "/" + NODE_NAME;
FileOutputStream fos1 = new
FileOutputStream(EXPORT_DOCUMENT_VIEW_FILE_PATH);
session.exportDocumentView(path, fos1, false, false);
fos1.close();
log.info("Data exported.");
}
catch (Exception e) {
e.printStackTrace();
}
// create next workspace in the same repository
String workspaceName = WORKSPACE_WITH_IMPORTED_DATA;
createWorkspace(session, workspaceName);
log.info("Workspace with name=[" + workspaceName + "]
created.");
session.logout();
// import data into created workspace
FileInputStream fis1 = new
FileInputStream(EXPORT_DOCUMENT_VIEW_FILE_PATH);
session = repository.login(new SimpleCredentials("admin",
"admin".toCharArray()), workspaceName);
Workspace workspace = session.getWorkspace();
workspace.importXML("/", fis1,
ImportUUIDBehavior.IMPORT_UUID_COLLISION_REPLACE_EXISTING);
log.info("Data imported.");
// checkin imported node and print its version name
root = session.getRootNode();
node = root.getNode(NODE_NAME);
node.checkin();
log.info("version name=[" + node.getBaseVersion().getName() +
"]");
// close repository
session.logout();
((RepositoryImpl) repository).shutdown();
log.info("Done.");
}
private static void createWorkspace(Session session, String
workspaceName) throws RepositoryException {
((WorkspaceImpl)
session.getWorkspace()).createWorkspace(workspaceName);
}
}
--
Tomasz Dabrowski
email: tomasz.dabrowski@cognifide.com
skype: tomekdab
www: www.cognifide.com