You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@sling.apache.org by ro...@apache.org on 2015/01/27 22:28:56 UTC

svn commit: r1655167 - /sling/trunk/tooling/ide/eclipse-ui/src/org/apache/sling/ide/eclipse/ui/nav/model/JcrNode.java

Author: rombert
Date: Tue Jan 27 21:28:56 2015
New Revision: 1655167

URL: http://svn.apache.org/r1655167
Log:
SLING-4105 -  Content Navigator should not read all the jcr_root when
initialized

Delegate detection of serialization files to the SerializationManager,
which is more lightweight.

This is a workaround rather than the proper fix, but it does seem to
improve the responsiveness quite a lot.

There is a slight behaviour change as the SerializationManager considers
any file named .content.xml a FileVault file, but at least the behaviour
is more consistent.

Modified:
    sling/trunk/tooling/ide/eclipse-ui/src/org/apache/sling/ide/eclipse/ui/nav/model/JcrNode.java

Modified: sling/trunk/tooling/ide/eclipse-ui/src/org/apache/sling/ide/eclipse/ui/nav/model/JcrNode.java
URL: http://svn.apache.org/viewvc/sling/trunk/tooling/ide/eclipse-ui/src/org/apache/sling/ide/eclipse/ui/nav/model/JcrNode.java?rev=1655167&r1=1655166&r2=1655167&view=diff
==============================================================================
--- sling/trunk/tooling/ide/eclipse-ui/src/org/apache/sling/ide/eclipse/ui/nav/model/JcrNode.java (original)
+++ sling/trunk/tooling/ide/eclipse-ui/src/org/apache/sling/ide/eclipse/ui/nav/model/JcrNode.java Tue Jan 27 21:28:56 2015
@@ -34,8 +34,6 @@ import javax.jcr.PropertyType;
 import javax.jcr.nodetype.NodeType;
 import javax.jcr.nodetype.PropertyDefinition;
 import javax.xml.parsers.ParserConfigurationException;
-import javax.xml.parsers.SAXParser;
-import javax.xml.parsers.SAXParserFactory;
 
 import org.apache.commons.io.IOUtils;
 import org.apache.jackrabbit.util.ISO9075;
@@ -92,10 +90,7 @@ import org.eclipse.ui.part.ResourceTrans
 import org.eclipse.ui.views.properties.IPropertySource;
 import org.eclipse.ui.views.properties.tabbed.ITabbedPropertySheetPageContributor;
 import org.eclipse.wst.server.core.IServer;
-import org.xml.sax.Attributes;
-import org.xml.sax.InputSource;
 import org.xml.sax.SAXException;
-import org.xml.sax.helpers.DefaultHandler;
 
 import de.pdark.decentxml.Attribute;
 import de.pdark.decentxml.Document;
@@ -108,32 +103,6 @@ import de.pdark.decentxml.XMLTokenizer.T
 /** WIP: model object for a jcr node shown in the content package view in project explorer **/
 public class JcrNode implements IAdaptable {
 
-    private final class JcrRootHandler extends DefaultHandler {
-		boolean firstElement = true;
-		boolean isVaultFile = false;
-
-		public boolean isVaultFile() {
-			return isVaultFile;
-		}
-
-		@Override
-		public void startElement(String uri, String localName,
-				String qName, Attributes attributes)
-				throws SAXException {
-			if (!firstElement) {
-				return;
-			}
-			firstElement = false;
-			if ("jcr:root".equals(qName)) {
-				String ns = attributes.getValue("xmlns:jcr");
-				if (ns!=null && ns.startsWith("http://www.jcp.org/jcr")) {
-					// then this is a vault file with a jcr:root at the beginning
-					isVaultFile = true;
-				}
-			}
-		}
-	}
-
 	private final static WorkbenchLabelProvider workbenchLabelProvider = new WorkbenchLabelProvider();
 	
 	final GenericJcrRootFile underlying;
@@ -437,28 +406,10 @@ public class JcrNode implements IAdaptab
         return res.getType() == IResource.FILE && res.getName().equals(".vlt");
     }
 
-    private boolean isVaultFile(IResource iResource)
-			throws ParserConfigurationException, SAXException, IOException,
-			CoreException {
-		if (iResource.getName().endsWith(".xml")) {
-			// then it could potentially be a vlt file. 
-			// let's check if it contains a jcr:root element with the appropriate namespace
-			
-			IFile file = (IFile)iResource;
-			
-		    SAXParserFactory factory = SAXParserFactory.newInstance();
-		    SAXParser saxParser = factory.newSAXParser();
+    private boolean isVaultFile(IResource iResource) {
 
-		    JcrRootHandler h = new JcrRootHandler();
-			InputStream contents = file.getContents();
-            try {
-                saxParser.parse(new InputSource(contents), h);
-                return h.isVaultFile();
-            } finally {
-                IOUtils.closeQuietly(contents);
-            }
-		}
-		return false;
+        return Activator.getDefault().getSerializationManager()
+                .isSerializationFile(iResource.getLocation().toOSString());
 	}
 
 	public void setResource(IResource resource) {
@@ -479,12 +430,7 @@ public class JcrNode implements IAdaptab
 		typeFile |= (resource!=null && primaryType==null);
 		boolean typeUnstructured = primaryType!=null && ((primaryType.equals("nt:unstructured")));
 		
-		boolean isVaultFile = false;
-		try {
-			isVaultFile = resource!=null && isVaultFile(resource);
-		} catch (Exception e) {
-			// this empty catch is okay
-		}
+        boolean isVaultFile = resource != null && isVaultFile(resource);
 		
 		String mimeType = null;
 		mimeType = getJcrContentProperty("jcr:mimeType");