Package org.apache.jackrabbit.test.api
Class DocumentViewImportTest
- java.lang.Object
-
- junit.framework.Assert
-
- junit.framework.TestCase
-
- org.apache.jackrabbit.test.JUnitTest
-
- org.apache.jackrabbit.test.AbstractJCRTest
-
- org.apache.jackrabbit.test.api.DocumentViewImportTest
-
- All Implemented Interfaces:
junit.framework.Test
public class DocumentViewImportTest extends AbstractJCRTest
DocumentViewImportTest
Tests importXML and getImportContentHandler methods of the Workspace and Session class. Also tests the UuidBehaviour flag.
-
-
Field Summary
-
Fields inherited from class org.apache.jackrabbit.test.AbstractJCRTest
isReadOnly, jcrBaseVersion, jcrCopiedFrom, jcrCreated, jcrFrozenNode, jcrFrozenUuid, jcrIsCheckedOut, jcrlockIsDeep, jcrLockOwner, jcrMergeFailed, jcrMixinTypes, jcrPredecessors, jcrPrimaryType, jcrRootVersion, jcrSuccessors, jcrSystem, jcrUUID, jcrVersionHistory, mixLockable, mixReferenceable, mixShareable, mixSimpleVersionable, mixTitle, mixVersionable, nodeName1, nodeName2, nodeName3, nodeName4, NS_JCR_URI, NS_MIX_URI, NS_NT_URI, NS_SV_URI, ntActivity, ntBase, ntFrozenNode, ntQuery, ntVersion, ntVersionHistory, ntVersionLabels, propertyName1, propertyName2, superuser, testNodeType, testNodeTypeNoChildren, testNodeTypeTestRoot, testPath, testRoot, testRootNode, vf, workspaceName
-
-
Constructor Summary
Constructors Constructor Description DocumentViewImportTest()
-
Method Summary
All Methods Instance Methods Concrete Methods Modifier and Type Method Description void
checkImportDocumentView_IMPORT_UUID_COLLISION_REMOVE_EXISTING()
Checks ImportUUIDBehavior.IMPORT_UUID_COLLISION_REMOVE_EXISTING i.e that the existing node is removed in case of uuid collision.void
checkImportDocumentView_IMPORT_UUID_COLLISION_REPLACE_EXISTING()
Checks ImportUUIDBehavior.IMPORT_UUID_COLLISION_REPLACE_EXISTING i.e that the existing node is replaced by the imported one node when uuid collision occurs.void
checkImportDocumentView_IMPORT_UUID_COLLISION_THROW()
Checks ImportUUIDBehavior.IMPORT_UUID_COLLISION_THROW i.e that a ItemExistsException is thrown in case of importing with an input stream or a SAXException is thrown in case of importing with a ContentHandler.void
checkImportDocumentView_IMPORT_UUID_CREATE_NEW()
ChecksImportUUIDBehavior.IMPORT_UUID_CREATE_NEW
i.e.void
checkImportSimpleXMLTree()
Tests if the simple xml document defined in createSimpleDocument() is imported correctly according the specification rules given in 7.3.2void
checkNamespaceAdded()
Checks if a namespace not yet existing in the repository is registered after an according document import.void
checkXmlTextNode(Node node)
Tests if xmltext in a body of a xml element is correctly imported to a node with name jcr:xmltext and that the value of the text is stored in the singlevalued jcr:xmlcharacters property of String type.protected Node
createAncestors(String absPath)
String
createReferenceableNode(String name)
Creates a node with given name below the testRootNode which will be referenced by the node nodeName2 and returns the UUID assigned to the created node.Document
createSimpleDocument()
Creates a document with some nodes and props for Namespace adding test and for correct tree structure tests after having imported.void
doTestGetImportContentHandler()
Tests getImportContentHandler method with uuidBehaviour IMPORT_UUID_CREATE_NEW.void
doTestImportXML()
Tests importXML method with uuidBehaviour IMPORT_UUID_CREATE_NEW.void
doTestSameUUIDAtAncestor(boolean withWorkspace, boolean withHandler)
Tests correct failure of importing a element wit the same UUID as the target node or an ancestor of it in case of uuidBehavior IMPORT_UUID_COLLISION_REMOVE_EXISTING.protected String
getUnusedPrefix()
Returns a namespace prefix that currently not used in the namespace registry.protected String
getUnusedURI()
Returns a namespace URI that currently not used in the namespace registry.void
importRefNodeDocument(String absPath, String uuid, int uuidBehaviour, boolean withWorkspace, boolean withHandler)
Creates a document with a element rootElem containing a jcr:uuid attribute with the given uuid as value.void
importWithHandler(String absPath, Document document, int uuidBehaviour, boolean withWorkspace)
Imports a given document using the ContentHandler received either with Workspace.getImportContentHandler or Session.getImportContentHandler.protected void
importXML(String absPath, Document document, int uuidBehaviour, boolean withWorkspace)
Imports a given document using either Workspace.importXML or Session.importXML method.boolean
isMixRefRespected()
Tests if jcr:uuid property of mix:referenceable nodetype is respected.void
serialize(Document document)
void
setUp()
Sets up the fixture for the test cases.boolean
supportsNodeType(String ntName)
void
tearDown()
void
testSameUUIDAtAncestorSession()
void
testSameUUIDAtAncestorSessionHandler()
void
testSameUUIDAtAncestorWorkspace()
void
testSameUUIDAtAncestorWorkspaceHandler()
void
testSessionGetImportContentHandler()
void
testSessionImportXml()
void
testWorkspaceGetImportContentHandler()
void
testWorkspaceImportXml()
-
Methods inherited from class org.apache.jackrabbit.test.AbstractJCRTest
checkSupportedOption, cleanUp, cleanUpTestRoot, createRandomString, ensureCanSetProperty, ensureCanSetProperty, ensureCanSetProperty, ensureKnowsNodeType, ensureLockingSupported, ensureMixinType, ensureMultipleWorkspacesSupported, getHelper, getJcrValue, getLocalName, getNonExistingWorkspaceName, getPrefix, getProperty, getProperty, getQualifiedName, getSize, isSupported, needsMixin, run
-
Methods inherited from class junit.framework.TestCase
assertEquals, assertEquals, assertEquals, assertEquals, assertEquals, assertEquals, assertEquals, assertEquals, assertEquals, assertEquals, assertEquals, assertEquals, assertEquals, assertEquals, assertEquals, assertEquals, assertEquals, assertEquals, assertEquals, assertEquals, assertFalse, assertFalse, assertNotNull, assertNotNull, assertNotSame, assertNotSame, assertNull, assertNull, assertSame, assertSame, assertTrue, assertTrue, countTestCases, createResult, fail, fail, failNotEquals, failNotSame, failSame, format, getName, run, runBare, runTest, setName, toString
-
-
-
-
Field Detail
-
WORKSPACE
protected final boolean WORKSPACE
- See Also:
- Constant Field Values
-
SESSION
protected final boolean SESSION
- See Also:
- Constant Field Values
-
CONTENTHANDLER
protected boolean CONTENTHANDLER
-
STREAM
protected boolean STREAM
-
target
protected String target
-
refTarget
protected String refTarget
-
session
protected Session session
-
workspace
protected Workspace workspace
-
ntManager
protected NodeTypeManager ntManager
-
nsp
protected NamespaceRegistry nsp
-
ntUnstructured
protected String ntUnstructured
-
file
protected File file
-
referenced
protected String referenced
-
referencing
protected String referencing
-
targetNode
protected Node targetNode
-
refTargetNode
protected Node refTargetNode
-
unusedPrefix
protected String unusedPrefix
-
unusedURI
protected String unusedURI
-
TEST_PREFIX
protected final String TEST_PREFIX
- See Also:
- Constant Field Values
-
TEST_URI
protected final String TEST_URI
- See Also:
- Constant Field Values
-
XML_NS
protected final String XML_NS
- See Also:
- Constant Field Values
-
rootElem
protected static final String rootElem
- See Also:
- Constant Field Values
-
refNodeElem
protected static final String refNodeElem
- See Also:
- Constant Field Values
-
xmltextElem
protected static final String xmltextElem
- See Also:
- Constant Field Values
-
childElem
protected static final String childElem
- See Also:
- Constant Field Values
-
grandChildElem
protected static final String grandChildElem
- See Also:
- Constant Field Values
-
encodedElemName
protected static final String encodedElemName
- See Also:
- Constant Field Values
-
decodedElemName
protected static final String decodedElemName
- See Also:
- Constant Field Values
-
attributeName
protected static final String attributeName
- See Also:
- Constant Field Values
-
attributeValue
protected static final String attributeValue
- See Also:
- Constant Field Values
-
encodedAttributeName
protected static final String encodedAttributeName
- See Also:
- Constant Field Values
-
decodedAttributeName
protected static final String decodedAttributeName
- See Also:
- Constant Field Values
-
encodedAttributeValue
protected static final String encodedAttributeValue
- See Also:
- Constant Field Values
-
decodedAttributeValue
protected static final String decodedAttributeValue
- See Also:
- Constant Field Values
-
xmltext
protected String xmltext
-
respectMixRef
protected boolean respectMixRef
-
uuidBehaviour
protected int uuidBehaviour
-
factory
protected DocumentBuilderFactory factory
-
dom
protected DocumentBuilder dom
-
-
Method Detail
-
setUp
public void setUp() throws Exception
Sets up the fixture for the test cases.- Throws:
Exception
-
testWorkspaceGetImportContentHandler
public void testWorkspaceGetImportContentHandler() throws Exception
- Throws:
Exception
-
testSessionGetImportContentHandler
public void testSessionGetImportContentHandler() throws Exception
- Throws:
Exception
-
doTestImportXML
public void doTestImportXML() throws Exception
Tests importXML method with uuidBehaviour IMPORT_UUID_CREATE_NEW. It imports the document created with createSimpleDocument method and checks the imported tree according the rules outlined in chapter 7.3.2 of the specification.Additionally it checks the uuidBehaviour flag if the jcr:uuid property is respected during import.
-
doTestGetImportContentHandler
public void doTestGetImportContentHandler() throws Exception
Tests getImportContentHandler method with uuidBehaviour IMPORT_UUID_CREATE_NEW. It imports the document created with createSimpleDocument method and checks the imported tree according the rules outlined in chapter 7.3.2 of the specification.Additionally it checks the uuidBehaviour flag if the jcr:uuid property is respected during import.
-
checkImportSimpleXMLTree
public void checkImportSimpleXMLTree() throws RepositoryException, IOException
Tests if the simple xml document defined in createSimpleDocument() is imported correctly according the specification rules given in 7.3.2- Throws:
RepositoryException
IOException
-
checkXmlTextNode
public void checkXmlTextNode(Node node) throws RepositoryException, IOException
Tests if xmltext in a body of a xml element is correctly imported to a node with name jcr:xmltext and that the value of the text is stored in the singlevalued jcr:xmlcharacters property of String type.- Throws:
RepositoryException
IOException
-
checkNamespaceAdded
public void checkNamespaceAdded() throws RepositoryException, IOException
Checks if a namespace not yet existing in the repository is registered after an according document import.- Throws:
RepositoryException
IOException
-
checkImportDocumentView_IMPORT_UUID_CREATE_NEW
public void checkImportDocumentView_IMPORT_UUID_CREATE_NEW() throws Exception
ChecksImportUUIDBehavior.IMPORT_UUID_CREATE_NEW
i.e. that a node receives a new uuid when imported in any case.- Throws:
Exception
-
checkImportDocumentView_IMPORT_UUID_COLLISION_REMOVE_EXISTING
public void checkImportDocumentView_IMPORT_UUID_COLLISION_REMOVE_EXISTING() throws Exception
Checks ImportUUIDBehavior.IMPORT_UUID_COLLISION_REMOVE_EXISTING i.e that the existing node is removed in case of uuid collision.- Throws:
Exception
-
checkImportDocumentView_IMPORT_UUID_COLLISION_REPLACE_EXISTING
public void checkImportDocumentView_IMPORT_UUID_COLLISION_REPLACE_EXISTING() throws Exception
Checks ImportUUIDBehavior.IMPORT_UUID_COLLISION_REPLACE_EXISTING i.e that the existing node is replaced by the imported one node when uuid collision occurs.- Throws:
Exception
-
checkImportDocumentView_IMPORT_UUID_COLLISION_THROW
public void checkImportDocumentView_IMPORT_UUID_COLLISION_THROW() throws Exception
Checks ImportUUIDBehavior.IMPORT_UUID_COLLISION_THROW i.e that a ItemExistsException is thrown in case of importing with an input stream or a SAXException is thrown in case of importing with a ContentHandler.- Throws:
RepositoryException
IOException
Exception
-
doTestSameUUIDAtAncestor
public void doTestSameUUIDAtAncestor(boolean withWorkspace, boolean withHandler) throws Exception
Tests correct failure of importing a element wit the same UUID as the target node or an ancestor of it in case of uuidBehavior IMPORT_UUID_COLLISION_REMOVE_EXISTING. The imported document contains a element with jcr:uuid attribute the same as the parent of the import target.- Throws:
Exception
-
testSameUUIDAtAncestorWorkspaceHandler
public void testSameUUIDAtAncestorWorkspaceHandler() throws Exception
- Throws:
Exception
-
testSameUUIDAtAncestorWorkspace
public void testSameUUIDAtAncestorWorkspace() throws Exception
- Throws:
Exception
-
testSameUUIDAtAncestorSessionHandler
public void testSameUUIDAtAncestorSessionHandler() throws Exception
- Throws:
Exception
-
testSameUUIDAtAncestorSession
public void testSameUUIDAtAncestorSession() throws Exception
- Throws:
Exception
-
createSimpleDocument
public Document createSimpleDocument()
Creates a document with some nodes and props for Namespace adding test and for correct tree structure tests after having imported.- Returns:
-
importXML
protected void importXML(String absPath, Document document, int uuidBehaviour, boolean withWorkspace) throws RepositoryException, IOException
Imports a given document using either Workspace.importXML or Session.importXML method.- Parameters:
absPath
- the absPath to the parent node where to import the documentdocument
- the document to importuuidBehaviour
- how the uuid collisions should be handledwithWorkspace
- if workspace or session interface should be used- Throws:
RepositoryException
IOException
-
importWithHandler
public void importWithHandler(String absPath, Document document, int uuidBehaviour, boolean withWorkspace) throws Exception
Imports a given document using the ContentHandler received either with Workspace.getImportContentHandler or Session.getImportContentHandler. This handler is then passed to a XML parser which parses the given document.- Parameters:
absPath
- the absPath to the parent node where to import the documentdocument
- the document to importuuidBehaviour
- how the uuid collisions should be handledwithWorkspace
- if workspace or session interface should be used- Throws:
RepositoryException
SAXException
IOException
Exception
-
isMixRefRespected
public boolean isMixRefRespected() throws RepositoryException, IOException
Tests if jcr:uuid property of mix:referenceable nodetype is respected. This is believed as true when during import with uuidBehaviour IMPORT_UUID_COLLISION_REMOVE_EXISTING a node with the same uuid as a node to be imported will be deleted.- Returns:
- Throws:
RepositoryException
IOException
-
createReferenceableNode
public String createReferenceableNode(String name) throws RepositoryException, NotExecutableException
Creates a node with given name below the testRootNode which will be referenced by the node nodeName2 and returns the UUID assigned to the created node.- Parameters:
name
-- Returns:
- Throws:
RepositoryException
NotExecutableException
- if the created node is not referenceable and cannot be made referenceable by adding mix:referenceable.
-
importRefNodeDocument
public void importRefNodeDocument(String absPath, String uuid, int uuidBehaviour, boolean withWorkspace, boolean withHandler) throws Exception
Creates a document with a element rootElem containing a jcr:uuid attribute with the given uuid as value. This document is imported below the node with path absPath. If nod node at absPth it is created. If there is yet a node rootElem below the then this node is romoved in advance.- Parameters:
uuid
-uuidBehaviour
-withWorkspace
-withHandler
-- Throws:
RepositoryException
IOException
Exception
-
createAncestors
protected Node createAncestors(String absPath) throws RepositoryException
- Throws:
RepositoryException
-
serialize
public void serialize(Document document) throws IOException
- Throws:
IOException
-
supportsNodeType
public boolean supportsNodeType(String ntName) throws RepositoryException
- Throws:
RepositoryException
-
getUnusedPrefix
protected String getUnusedPrefix() throws RepositoryException
Returns a namespace prefix that currently not used in the namespace registry.- Returns:
- an unused namespace prefix.
- Throws:
RepositoryException
-
getUnusedURI
protected String getUnusedURI() throws RepositoryException
Returns a namespace URI that currently not used in the namespace registry.- Returns:
- an unused namespace URI.
- Throws:
RepositoryException
-
-