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 2014/10/25 01:11:54 UTC
svn commit: r1634154 - in
/sling/trunk/tooling/ide/eclipse-ui/src/org/apache/sling/ide/eclipse/ui/nav/model:
GenericJcrRootFile.java JcrNode.java
Author: rombert
Date: Fri Oct 24 23:11:54 2014
New Revision: 1634154
URL: http://svn.apache.org/r1634154
Log:
SLING-4092: Eclipse runs out of file descriptors due to vault files
being kept open
Ensure that InputStream instances returned from IFile.getContents() are
closed.
Modified:
sling/trunk/tooling/ide/eclipse-ui/src/org/apache/sling/ide/eclipse/ui/nav/model/GenericJcrRootFile.java
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/GenericJcrRootFile.java
URL: http://svn.apache.org/viewvc/sling/trunk/tooling/ide/eclipse-ui/src/org/apache/sling/ide/eclipse/ui/nav/model/GenericJcrRootFile.java?rev=1634154&r1=1634153&r2=1634154&view=diff
==============================================================================
--- sling/trunk/tooling/ide/eclipse-ui/src/org/apache/sling/ide/eclipse/ui/nav/model/GenericJcrRootFile.java (original)
+++ sling/trunk/tooling/ide/eclipse-ui/src/org/apache/sling/ide/eclipse/ui/nav/model/GenericJcrRootFile.java Fri Oct 24 23:11:54 2014
@@ -24,6 +24,7 @@ import java.util.List;
import javax.xml.parsers.ParserConfigurationException;
+import org.apache.commons.io.IOUtils;
import org.apache.sling.ide.eclipse.core.internal.Activator;
import org.eclipse.core.resources.IFile;
import org.eclipse.core.resources.IResource;
@@ -54,8 +55,12 @@ public class GenericJcrRootFile extends
this.domElement = null;
InputStream in = file.getContents();
- this.document = TolerantXMLParser.parse(in, file.getFullPath().toOSString());
- handleJcrRoot(this.document.getRootElement());
+ try {
+ this.document = TolerantXMLParser.parse(in, file.getFullPath().toOSString());
+ handleJcrRoot(this.document.getRootElement());
+ } finally {
+ IOUtils.closeQuietly(in);
+ }
}
@Override
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=1634154&r1=1634153&r2=1634154&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 Fri Oct 24 23:11:54 2014
@@ -37,6 +37,7 @@ import javax.xml.parsers.ParserConfigura
import javax.xml.parsers.SAXParser;
import javax.xml.parsers.SAXParserFactory;
+import org.apache.commons.io.IOUtils;
import org.apache.jackrabbit.util.ISO9075;
import org.apache.sling.ide.eclipse.core.ISlingLaunchpadServer;
import org.apache.sling.ide.eclipse.core.ProjectUtil;
@@ -441,9 +442,13 @@ public class JcrNode implements IAdaptab
SAXParser saxParser = factory.newSAXParser();
JcrRootHandler h = new JcrRootHandler();
- saxParser.parse(new InputSource(file.getContents()), h);
-
- return h.isVaultFile();
+ InputStream contents = file.getContents();
+ try {
+ saxParser.parse(new InputSource(contents), h);
+ return h.isVaultFile();
+ } finally {
+ IOUtils.closeQuietly(contents);
+ }
}
return false;
}
@@ -1436,8 +1441,9 @@ public class JcrNode implements IAdaptab
IFolder contentSyncRoot = ProjectUtil.getSyncDirectory(getProject());
IFile file = (IFile) u.file;
+ InputStream contents = null;
try{
- InputStream contents = file.getContents();
+ contents = file.getContents();
String resourceLocation = file.getFullPath().makeRelativeTo(contentSyncRoot.getFullPath())
.toPortableString();
ResourceProxy resourceProxy = Activator.getDefault()
@@ -1449,6 +1455,8 @@ public class JcrNode implements IAdaptab
return PropertyTypeSupport.propertyTypeOfString(rawValue);
} catch(Exception e) {
Activator.getDefault().getPluginLogger().warn("Exception occurred during analyzing propertyType ("+propertyName+") for "+this, e);
+ } finally {
+ IOUtils.closeQuietly(contents);
}
return -1;
}