You are viewing a plain text version of this content. The canonical link for it is here.
Posted to oak-commits@jackrabbit.apache.org by md...@apache.org on 2013/03/13 17:27:01 UTC
svn commit: r1456030 - in
/jackrabbit/oak/trunk/oak-jcr/src/main/java/org/apache/jackrabbit/oak/jcr:
SessionImpl.java xml/ImportHandler.java xml/SessionImporter.java
Author: mduerig
Date: Wed Mar 13 16:27:00 2013
New Revision: 1456030
URL: http://svn.apache.org/r1456030
Log:
OAK-672: Avoid JCR APIs calling other JCR APIs
- Clean up ImportHandler and SessionImporter
Modified:
jackrabbit/oak/trunk/oak-jcr/src/main/java/org/apache/jackrabbit/oak/jcr/SessionImpl.java
jackrabbit/oak/trunk/oak-jcr/src/main/java/org/apache/jackrabbit/oak/jcr/xml/ImportHandler.java
jackrabbit/oak/trunk/oak-jcr/src/main/java/org/apache/jackrabbit/oak/jcr/xml/SessionImporter.java
Modified: jackrabbit/oak/trunk/oak-jcr/src/main/java/org/apache/jackrabbit/oak/jcr/SessionImpl.java
URL: http://svn.apache.org/viewvc/jackrabbit/oak/trunk/oak-jcr/src/main/java/org/apache/jackrabbit/oak/jcr/SessionImpl.java?rev=1456030&r1=1456029&r2=1456030&view=diff
==============================================================================
--- jackrabbit/oak/trunk/oak-jcr/src/main/java/org/apache/jackrabbit/oak/jcr/SessionImpl.java (original)
+++ jackrabbit/oak/trunk/oak-jcr/src/main/java/org/apache/jackrabbit/oak/jcr/SessionImpl.java Wed Mar 13 16:27:00 2013
@@ -54,9 +54,7 @@ import org.apache.jackrabbit.oak.jcr.del
import org.apache.jackrabbit.oak.jcr.delegate.SessionOperation;
import org.apache.jackrabbit.oak.jcr.xml.ImportHandler;
import org.apache.jackrabbit.oak.spi.security.authentication.ImpersonationCredentials;
-import org.apache.jackrabbit.oak.spi.security.authorization.AccessControlConfiguration;
import org.apache.jackrabbit.oak.spi.security.authorization.PermissionProvider;
-import org.apache.jackrabbit.oak.spi.security.user.UserConfiguration;
import org.apache.jackrabbit.oak.util.TODO;
import org.apache.jackrabbit.util.Text;
import org.apache.jackrabbit.util.XMLChar;
@@ -348,12 +346,9 @@ public class SessionImpl extends Abstrac
@Override
@Nonnull
- public ContentHandler getImportContentHandler(
- String parentAbsPath, int uuidBehavior) throws RepositoryException {
- UserConfiguration userConfiguration = sessionContext.getUserConfiguration();
- AccessControlConfiguration accessControlConfiguration = sessionContext.getAccessControlConfiguration();
- return new ImportHandler(getNode(parentAbsPath), dlg.getRoot(), this,
- dlg, userConfiguration, accessControlConfiguration, uuidBehavior, sessionContext);
+ public ContentHandler getImportContentHandler(String parentAbsPath, int uuidBehavior)
+ throws RepositoryException {
+ return new ImportHandler(getNode(parentAbsPath), sessionContext, uuidBehavior);
}
@Nonnull
Modified: jackrabbit/oak/trunk/oak-jcr/src/main/java/org/apache/jackrabbit/oak/jcr/xml/ImportHandler.java
URL: http://svn.apache.org/viewvc/jackrabbit/oak/trunk/oak-jcr/src/main/java/org/apache/jackrabbit/oak/jcr/xml/ImportHandler.java?rev=1456030&r1=1456029&r2=1456030&view=diff
==============================================================================
--- jackrabbit/oak/trunk/oak-jcr/src/main/java/org/apache/jackrabbit/oak/jcr/xml/ImportHandler.java (original)
+++ jackrabbit/oak/trunk/oak-jcr/src/main/java/org/apache/jackrabbit/oak/jcr/xml/ImportHandler.java Wed Mar 13 16:27:00 2013
@@ -21,16 +21,11 @@ import java.util.Map;
import javax.jcr.Node;
import javax.jcr.RepositoryException;
-import javax.jcr.Session;
import javax.jcr.ValueFactory;
import org.apache.jackrabbit.commons.NamespaceHelper;
-import org.apache.jackrabbit.oak.api.Root;
import org.apache.jackrabbit.oak.jcr.SessionContext;
-import org.apache.jackrabbit.oak.jcr.delegate.SessionDelegate;
import org.apache.jackrabbit.oak.plugins.name.NamespaceConstants;
-import org.apache.jackrabbit.oak.spi.security.authorization.AccessControlConfiguration;
-import org.apache.jackrabbit.oak.spi.security.user.UserConfiguration;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.xml.sax.Attributes;
@@ -40,48 +35,39 @@ import org.xml.sax.SAXParseException;
import org.xml.sax.helpers.DefaultHandler;
/**
- * An <code>ImportHandler</code> instance can be used to import serialized
+ * An {@code ImportHandler} instance can be used to import serialized
* data in System View XML or Document View XML. Processing of the XML is
- * handled by specialized <code>ContentHandler</code>s
- * (i.e. <code>SysViewImportHandler</code> and <code>DocViewImportHandler</code>).
+ * handled by specialized {@code ContentHandler}s
+ * (i.e. {@code SysViewImportHandler} and {@code DocViewImportHandler}).
* <p/>
* The actual task of importing though is delegated to the implementation of
- * the <code>{@link Importer}</code> interface.
+ * the {@code {@link Importer}} interface.
* <p/>
* <b>Important Note:</b>
* <p/>
* These SAX Event Handlers expect that Namespace URI's and local names are
- * reported in the <code>start/endElement</code> events and that
- * <code>start/endPrefixMapping</code> events are reported
+ * reported in the {@code start/endElement} events and that
+ * {@code start/endPrefixMapping} events are reported
* (i.e. default SAX2 Namespace processing).
*/
public class ImportHandler extends DefaultHandler {
-
- private static Logger log = LoggerFactory.getLogger(ImportHandler.class);
+ private static final Logger log = LoggerFactory.getLogger(ImportHandler.class);
private final Importer importer;
private final NamespaceHelper helper;
private final ValueFactory valueFactory;
protected Locator locator;
- private TargetImportHandler targetHandler = null;
+ private TargetImportHandler targetHandler;
private final Map<String, String> tempPrefixMap = new HashMap<String, String>();
- public ImportHandler(Node importTargetNode, Root root, Session session,
- SessionDelegate dlg, UserConfiguration userConfig,
- AccessControlConfiguration accessControlConfig,
- int uuidBehavior, SessionContext sessionContext)
- throws RepositoryException {
- this.helper = new NamespaceHelper(session);
- this.importer = new SessionImporter(importTargetNode, root, session, dlg, helper, userConfig,
- accessControlConfig, uuidBehavior, sessionContext);
- this.valueFactory = session.getValueFactory();
+ public ImportHandler(Node importTargetNode, SessionContext sessionContext, int uuidBehavior) {
+ this.helper = new NamespaceHelper(sessionContext.getSession());
+ this.importer = new SessionImporter(importTargetNode, sessionContext, helper, uuidBehavior);
+ this.valueFactory = sessionContext.getValueFactory();
}
//---------------------------------------------------------< ErrorHandler >
- /**
- * {@inheritDoc}
- */
@Override
public void warning(SAXParseException e) throws SAXException {
// log exception and carry on...
@@ -90,9 +76,6 @@ public class ImportHandler extends Defau
+ " while parsing XML stream", e);
}
- /**
- * {@inheritDoc}
- */
@Override
public void error(SAXParseException e) throws SAXException {
// log exception and carry on...
@@ -101,9 +84,6 @@ public class ImportHandler extends Defau
+ " while parsing XML stream: " + e.toString());
}
- /**
- * {@inheritDoc}
- */
@Override
public void fatalError(SAXParseException e) throws SAXException {
// log and re-throw exception
@@ -115,9 +95,6 @@ public class ImportHandler extends Defau
//-------------------------------------------------------< ContentHandler >
- /**
- * {@inheritDoc}
- */
@Override
public void endDocument() throws SAXException {
// delegate to target handler
@@ -162,9 +139,6 @@ public class ImportHandler extends Defau
}
}
- /**
- * {@inheritDoc}
- */
@Override
public void startElement(String namespaceURI, String localName, String qName,
Attributes atts) throws SAXException {
@@ -188,9 +162,6 @@ public class ImportHandler extends Defau
targetHandler.startElement(namespaceURI, localName, qName, atts);
}
- /**
- * {@inheritDoc}
- */
@Override
public void characters(char[] ch, int start, int length) throws SAXException {
// delegate to target handler
@@ -208,9 +179,6 @@ public class ImportHandler extends Defau
targetHandler.endElement(namespaceURI, localName, qName);
}
- /**
- * {@inheritDoc}
- */
@Override
public void setDocumentLocator(Locator locator) {
this.locator = locator;
Modified: jackrabbit/oak/trunk/oak-jcr/src/main/java/org/apache/jackrabbit/oak/jcr/xml/SessionImporter.java
URL: http://svn.apache.org/viewvc/jackrabbit/oak/trunk/oak-jcr/src/main/java/org/apache/jackrabbit/oak/jcr/xml/SessionImporter.java?rev=1456030&r1=1456029&r2=1456030&view=diff
==============================================================================
--- jackrabbit/oak/trunk/oak-jcr/src/main/java/org/apache/jackrabbit/oak/jcr/xml/SessionImporter.java (original)
+++ jackrabbit/oak/trunk/oak-jcr/src/main/java/org/apache/jackrabbit/oak/jcr/xml/SessionImporter.java Wed Mar 13 16:27:00 2013
@@ -41,7 +41,6 @@ import org.apache.jackrabbit.JcrConstant
import org.apache.jackrabbit.commons.NamespaceHelper;
import org.apache.jackrabbit.oak.api.Root;
import org.apache.jackrabbit.oak.jcr.SessionContext;
-import org.apache.jackrabbit.oak.jcr.delegate.SessionDelegate;
import org.apache.jackrabbit.oak.namepath.NamePathMapper;
import org.apache.jackrabbit.oak.plugins.nodetype.EffectiveNodeTypeProvider;
import org.apache.jackrabbit.oak.spi.security.authorization.AccessControlConfiguration;
@@ -56,20 +55,18 @@ import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
/**
- * <code>SessionImporter</code> ...
+ * {@code SessionImporter} ...
*/
public class SessionImporter implements Importer {
-
- private static Logger log = LoggerFactory.getLogger(SessionImporter.class);
+ private static final Logger log = LoggerFactory.getLogger(SessionImporter.class);
private final Session session;
private final Node importTargetNode;
private final Root root;
private final int uuidBehavior;
- private final SessionContext sessionContext;
private final NamespaceHelper namespaceHelper;
- private Stack<Node> parents;
+ private final Stack<Node> parents;
/**
* helper object that keeps track of remapped uuid's and imported reference
@@ -83,26 +80,20 @@ public class SessionImporter implements
/**
* Currently active importer for protected nodes.
*/
- private ProtectedNodeImporter pnImporter = null;
+ private ProtectedNodeImporter pnImporter;
/**
- * Creates a new <code>SessionImporter</code> instance.
+ * Creates a new {@code SessionImporter} instance.
*/
public SessionImporter(Node importTargetNode,
- Root root,
- Session session,
- SessionDelegate dlg,
+ SessionContext sessionContext,
NamespaceHelper helper,
- UserConfiguration userConfig,
- AccessControlConfiguration accessControlConfig,
- int uuidBehavior,
- SessionContext sessionContext) throws RepositoryException {
+ int uuidBehavior) {
this.importTargetNode = importTargetNode;
- this.session = session;
- this.root = root;
+ this.session = sessionContext.getSession();
+ this.root = sessionContext.getSessionDelegate().getRoot();
this.namespaceHelper = helper;
this.uuidBehavior = uuidBehavior;
- this.sessionContext = sessionContext;
refTracker = new ReferenceChangeTracker();
@@ -112,12 +103,14 @@ public class SessionImporter implements
pItemImporters.clear();
//TODO clarify how to provide ProtectedItemImporters
+ UserConfiguration userConfig = sessionContext.getUserConfiguration();
NamePathMapper namePathMapper = sessionContext.getNamePathMapper();
for (ProtectedItemImporter importer : userConfig.getProtectedItemImporters()) {
if (importer.init(session, root, namePathMapper, false, uuidBehavior, refTracker)) {
pItemImporters.add(importer);
}
}
+ AccessControlConfiguration accessControlConfig = sessionContext.getAccessControlConfiguration();
for (ProtectedItemImporter importer : accessControlConfig.getProtectedItemImporters()) {
if (importer.init(session, root, namePathMapper, false, uuidBehavior, refTracker)) {
pItemImporters.add(importer);
@@ -282,16 +275,12 @@ public class SessionImporter implements
//-------------------------------------------------------------< Importer >
- /**
- * {@inheritDoc}
- */
+ @Override
public void start() throws RepositoryException {
// nop
}
- /**
- * {@inheritDoc}
- */
+ @Override
public void startNode(NodeInfo nodeInfo, List<PropInfo> propInfos)
throws RepositoryException {
Node parent = parents.peek();
@@ -474,9 +463,7 @@ public class SessionImporter implements
}
- /**
- * {@inheritDoc}
- */
+ @Override
public void endNode(NodeInfo nodeInfo) throws RepositoryException {
Node parent = parents.pop();
if (parent == null) {
@@ -493,9 +480,7 @@ public class SessionImporter implements
}
}
- /**
- * {@inheritDoc}
- */
+ @Override
public void end() throws RepositoryException {
/**
* adjust references that refer to uuid's which have been mapped to