Author: nbelaevski
Date: 2008-02-07 12:03:07 -0500 (Thu, 07 Feb 2008)
New Revision: 5924
Added:
trunk/framework/api/src/main/java/org/ajax4jsf/resource/util/
trunk/framework/api/src/main/java/org/ajax4jsf/resource/util/URLToStreamHelper.java
Removed:
trunk/framework/impl/src/main/java/org/ajax4jsf/resource/util/
Modified:
trunk/framework/api/src/main/java/org/ajax4jsf/context/AjaxContext.java
trunk/framework/api/src/main/java/org/ajax4jsf/resource/InternetResourceBuilder.java
trunk/framework/api/src/main/java/org/richfaces/skin/SkinFactory.java
trunk/framework/impl/src/main/java/org/ajax4jsf/cache/CacheManager.java
trunk/framework/impl/src/main/java/org/ajax4jsf/renderkit/compiler/HtmlCompiler.java
trunk/framework/impl/src/main/java/org/ajax4jsf/resource/InternetResourceService.java
trunk/framework/impl/src/main/java/org/ajax4jsf/resource/JarResource.java
trunk/framework/impl/src/main/java/org/ajax4jsf/resource/cached/CachedResourceBuilder.java
trunk/framework/impl/src/main/java/org/ajax4jsf/util/ServicesUtils.java
trunk/framework/impl/src/main/java/org/ajax4jsf/webapp/ConfigurableXMLFilter.java
trunk/framework/impl/src/main/java/org/ajax4jsf/webapp/tidy/TidyXMLFilter.java
trunk/framework/impl/src/main/java/org/ajax4jsf/xml/serializer/CharInfo.java
trunk/framework/impl/src/main/java/org/ajax4jsf/xml/serializer/OutputPropertiesFactory.java
trunk/framework/impl/src/main/java/org/ajax4jsf/xml/serializer/SecuritySupport.java
trunk/framework/impl/src/main/java/org/ajax4jsf/xml/serializer/SecuritySupport12.java
trunk/framework/impl/src/main/java/org/richfaces/renderkit/TemplateEncoderRendererBase.java
Log:
http://jira.jboss.com/jira/browse/RF-1284
Modified: trunk/framework/api/src/main/java/org/ajax4jsf/context/AjaxContext.java
===================================================================
--- trunk/framework/api/src/main/java/org/ajax4jsf/context/AjaxContext.java 2008-02-07
16:56:08 UTC (rev 5923)
+++ trunk/framework/api/src/main/java/org/ajax4jsf/context/AjaxContext.java 2008-02-07
17:03:07 UTC (rev 5924)
@@ -13,6 +13,8 @@
import javax.faces.context.FacesContext;
import javax.faces.el.VariableResolver;
+import org.ajax4jsf.resource.util.URLToStreamHelper;
+
public abstract class AjaxContext {
/**
@@ -125,8 +127,8 @@
String factoryClassName = DEFAULT_CONTEXT_CLASS;
// Pluggable factories.
InputStream input = null; // loader.getResourceAsStream(SERVICE_RESOURCE);
- input = contextClassLoader
- .getResourceAsStream(SERVICE_RESOURCE);
+ input = URLToStreamHelper.urlToStreamSafe(contextClassLoader
+ .getResource(SERVICE_RESOURCE));
// have services file.
if (input != null) {
try {
Modified:
trunk/framework/api/src/main/java/org/ajax4jsf/resource/InternetResourceBuilder.java
===================================================================
---
trunk/framework/api/src/main/java/org/ajax4jsf/resource/InternetResourceBuilder.java 2008-02-07
16:56:08 UTC (rev 5923)
+++
trunk/framework/api/src/main/java/org/ajax4jsf/resource/InternetResourceBuilder.java 2008-02-07
17:03:07 UTC (rev 5924)
@@ -32,6 +32,7 @@
import javax.faces.context.FacesContext;
import javax.servlet.ServletException;
+import org.ajax4jsf.resource.util.URLToStreamHelper;
import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
@@ -139,7 +140,8 @@
String serviceClassName = "org.ajax4jsf.resource.ResourceBuilderImpl";
String resource = "META-INF/services/"
+ InternetResourceBuilder.class.getName();
- InputStream in = loader.getResourceAsStream(resource);
+ InputStream in = URLToStreamHelper.urlToStreamSafe(
+ loader.getResource(resource));
if (null != in) {
BufferedReader reader = new BufferedReader(
new InputStreamReader(in));
Added:
trunk/framework/api/src/main/java/org/ajax4jsf/resource/util/URLToStreamHelper.java
===================================================================
--- trunk/framework/api/src/main/java/org/ajax4jsf/resource/util/URLToStreamHelper.java
(rev 0)
+++
trunk/framework/api/src/main/java/org/ajax4jsf/resource/util/URLToStreamHelper.java 2008-02-07
17:03:07 UTC (rev 5924)
@@ -0,0 +1,82 @@
+/**
+ * License Agreement.
+ *
+ * JBoss RichFaces - Ajax4jsf Component Library
+ *
+ * Copyright (C) 2007 Exadel, Inc.
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License version 2.1 as published by the Free Software Foundation.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this library; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
+ */
+
+package org.ajax4jsf.resource.util;
+
+import java.io.IOException;
+import java.io.InputStream;
+import java.net.URL;
+import java.net.URLConnection;
+
+import org.apache.commons.logging.Log;
+import org.apache.commons.logging.LogFactory;
+
+/**
+ * Utility class to solve JAR locking issue using {@link
URLConnection#setUseCaches(boolean)} method.
+ * Contains one utility method that gets {@link InputStream} from {@link URL} with
caching disabled.
+ *
+ * Created 07.02.2008
+ * @author Nick Belaevski
+ * @since 3.2
+ */
+
+public final class URLToStreamHelper {
+
+ private static final Log log = LogFactory.getLog(URLToStreamHelper.class);
+
+ private URLToStreamHelper() {
+ super();
+ }
+
+ /**
+ * Returns {@link InputStream} corresponding to argument {@link URL}
+ * but with caching disabled
+ *
+ * @param url {@link URL} of the resource
+ * @return {@link InputStream} instance or <code>null</code>
+ * @throws IOException
+ */
+ public static final InputStream urlToStream(URL url) throws IOException {
+ if (url != null) {
+ URLConnection connection = url.openConnection();
+ try {
+ connection.setUseCaches(false);
+ } catch (IllegalArgumentException e) {
+ log.error(e.getLocalizedMessage(), e);
+ }
+
+ return connection.getInputStream();
+ } else {
+ return null;
+ }
+ }
+
+ public static final InputStream urlToStreamSafe(URL url) {
+ try {
+ return urlToStream(url);
+ } catch (IOException e) {
+ // do nothing
+ }
+
+ return null;
+ }
+
+}
Modified: trunk/framework/api/src/main/java/org/richfaces/skin/SkinFactory.java
===================================================================
--- trunk/framework/api/src/main/java/org/richfaces/skin/SkinFactory.java 2008-02-07
16:56:08 UTC (rev 5923)
+++ trunk/framework/api/src/main/java/org/richfaces/skin/SkinFactory.java 2008-02-07
17:03:07 UTC (rev 5924)
@@ -33,6 +33,7 @@
import javax.faces.context.FacesContext;
import org.ajax4jsf.Messages;
+import org.ajax4jsf.resource.util.URLToStreamHelper;
import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
@@ -74,7 +75,8 @@
if (instance == null) {
// Pluggable factories.
InputStream input = null; // loader.getResourceAsStream(SERVICE_RESOURCE);
- input = loader.getResourceAsStream(SERVICE_RESOURCE);
+ input = URLToStreamHelper.urlToStreamSafe(
+ loader.getResource(SERVICE_RESOURCE));
// have services file.
if (input != null) {
try {
Modified: trunk/framework/impl/src/main/java/org/ajax4jsf/cache/CacheManager.java
===================================================================
--- trunk/framework/impl/src/main/java/org/ajax4jsf/cache/CacheManager.java 2008-02-07
16:56:08 UTC (rev 5923)
+++ trunk/framework/impl/src/main/java/org/ajax4jsf/cache/CacheManager.java 2008-02-07
17:03:07 UTC (rev 5924)
@@ -11,6 +11,7 @@
import java.util.Map;
import java.util.Properties;
+import org.ajax4jsf.resource.util.URLToStreamHelper;
import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
@@ -109,7 +110,8 @@
// try to find services in CLASSPATH
try {
ClassLoader cl = findClassLoader();
- InputStream is = cl.getResourceAsStream("META-INF/services/" +
factoryId);
+ InputStream is = URLToStreamHelper.urlToStreamSafe(
+ cl.getResource("META-INF/services/" + factoryId));
if (is != null) {
BufferedReader r = new BufferedReader(new InputStreamReader(is,
"UTF-8"));
try {
Modified:
trunk/framework/impl/src/main/java/org/ajax4jsf/renderkit/compiler/HtmlCompiler.java
===================================================================
---
trunk/framework/impl/src/main/java/org/ajax4jsf/renderkit/compiler/HtmlCompiler.java 2008-02-07
16:56:08 UTC (rev 5923)
+++
trunk/framework/impl/src/main/java/org/ajax4jsf/renderkit/compiler/HtmlCompiler.java 2008-02-07
17:03:07 UTC (rev 5924)
@@ -36,6 +36,7 @@
import org.ajax4jsf.Messages;
import org.ajax4jsf.renderkit.RendererBase;
+import org.ajax4jsf.resource.util.URLToStreamHelper;
import org.apache.commons.digester.Digester;
import org.apache.commons.digester.Rule;
import org.apache.commons.digester.RulesBase;
@@ -272,7 +273,7 @@
public static PreparedTemplate compileResource(String resource) {
HtmlCompiler compiler = new HtmlCompiler();
ClassLoader loader = Thread.currentThread().getContextClassLoader();
- InputStream input = loader.getResourceAsStream(resource);
+ InputStream input = URLToStreamHelper.urlToStreamSafe(loader.getResource(resource));
// Since parsing exceptions handled by compiler, we can not check parameter.
PreparedTemplate compile = compiler.compile(input, resource);
if(null != input){
Modified:
trunk/framework/impl/src/main/java/org/ajax4jsf/resource/InternetResourceService.java
===================================================================
---
trunk/framework/impl/src/main/java/org/ajax4jsf/resource/InternetResourceService.java 2008-02-07
16:56:08 UTC (rev 5923)
+++
trunk/framework/impl/src/main/java/org/ajax4jsf/resource/InternetResourceService.java 2008-02-07
17:03:07 UTC (rev 5924)
@@ -47,10 +47,7 @@
import org.ajax4jsf.cache.CacheLoader;
import org.ajax4jsf.cache.CacheManager;
import org.ajax4jsf.cache.ServletContextInitMap;
-import org.ajax4jsf.resource.InternetResource;
-import org.ajax4jsf.resource.InternetResourceBuilder;
-import org.ajax4jsf.resource.ResourceContext;
-import org.ajax4jsf.resource.ResourceNotFoundException;
+import org.ajax4jsf.resource.util.URLToStreamHelper;
import org.ajax4jsf.webapp.BaseFilter;
import org.ajax4jsf.webapp.CacheContent;
import org.ajax4jsf.webapp.WebXml;
@@ -265,7 +262,7 @@
*/
protected Properties getProperties(String name) {
Properties properties = new Properties();
- InputStream props = BaseFilter.class.getResourceAsStream(name);
+ InputStream props =
URLToStreamHelper.urlToStreamSafe(BaseFilter.class.getResource(name));
if (null != props) {
try {
properties.load(props);
Modified: trunk/framework/impl/src/main/java/org/ajax4jsf/resource/JarResource.java
===================================================================
--- trunk/framework/impl/src/main/java/org/ajax4jsf/resource/JarResource.java 2008-02-07
16:56:08 UTC (rev 5923)
+++ trunk/framework/impl/src/main/java/org/ajax4jsf/resource/JarResource.java 2008-02-07
17:03:07 UTC (rev 5924)
@@ -21,13 +21,9 @@
package org.ajax4jsf.resource;
-import java.io.IOException;
import java.io.InputStream;
-import java.net.URL;
-import java.net.URLConnection;
-import java.util.Date;
-import org.ajax4jsf.resource.ResourceContext;
+import org.ajax4jsf.resource.util.URLToStreamHelper;
/**
@@ -61,7 +57,7 @@
*/
public InputStream getResourceAsStream(ResourceContext context) {
ClassLoader loader = Thread.currentThread().getContextClassLoader();
- return loader.getResourceAsStream(path);
+ return URLToStreamHelper.urlToStreamSafe(loader.getResource(path));
}
public String getPath() {
Modified:
trunk/framework/impl/src/main/java/org/ajax4jsf/resource/cached/CachedResourceBuilder.java
===================================================================
---
trunk/framework/impl/src/main/java/org/ajax4jsf/resource/cached/CachedResourceBuilder.java 2008-02-07
16:56:08 UTC (rev 5923)
+++
trunk/framework/impl/src/main/java/org/ajax4jsf/resource/cached/CachedResourceBuilder.java 2008-02-07
17:03:07 UTC (rev 5924)
@@ -32,6 +32,7 @@
import org.ajax4jsf.resource.InternetResource;
import org.ajax4jsf.resource.ResourceBuilderImpl;
import org.ajax4jsf.resource.ResourceNotFoundException;
+import org.ajax4jsf.resource.util.URLToStreamHelper;
import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
@@ -174,8 +175,8 @@
*/
protected Properties getProperties(String name) {
Properties properties = new Properties();
- InputStream props = CachedResourceBuilder.class
- .getResourceAsStream(name);
+ InputStream props = URLToStreamHelper.urlToStreamSafe(CachedResourceBuilder.class
+ .getResource(name));
if (null != props) {
try {
properties.load(props);
Modified: trunk/framework/impl/src/main/java/org/ajax4jsf/util/ServicesUtils.java
===================================================================
--- trunk/framework/impl/src/main/java/org/ajax4jsf/util/ServicesUtils.java 2008-02-07
16:56:08 UTC (rev 5923)
+++ trunk/framework/impl/src/main/java/org/ajax4jsf/util/ServicesUtils.java 2008-02-07
17:03:07 UTC (rev 5924)
@@ -30,6 +30,7 @@
import javax.faces.FacesException;
+import org.ajax4jsf.resource.util.URLToStreamHelper;
import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
@@ -108,7 +109,7 @@
Class serviceClass;
try {
String resource = "META-INF/services/" + name;
- InputStream in = loader.getResourceAsStream(resource);
+ InputStream in = URLToStreamHelper.urlToStreamSafe(loader.getResource(resource));
BufferedReader reader = new BufferedReader(
new InputStreamReader(in));
String serviceClassName = reader.readLine();
Modified:
trunk/framework/impl/src/main/java/org/ajax4jsf/webapp/ConfigurableXMLFilter.java
===================================================================
---
trunk/framework/impl/src/main/java/org/ajax4jsf/webapp/ConfigurableXMLFilter.java 2008-02-07
16:56:08 UTC (rev 5923)
+++
trunk/framework/impl/src/main/java/org/ajax4jsf/webapp/ConfigurableXMLFilter.java 2008-02-07
17:03:07 UTC (rev 5924)
@@ -15,6 +15,7 @@
import org.ajax4jsf.Messages;
import org.ajax4jsf.io.parser.FastHtmlParser;
+import org.ajax4jsf.resource.util.URLToStreamHelper;
import org.ajax4jsf.webapp.nekko.NekkoParser;
import org.ajax4jsf.webapp.tidy.TidyParser;
import org.apache.commons.collections.ArrayStack;
@@ -197,8 +198,8 @@
InputStream defaultprops = null;
InputStream props = null;
try {
- defaultprops = TidyParser.class
- .getResourceAsStream("tidy.properties");
+ defaultprops = URLToStreamHelper.urlToStreamSafe(TidyParser.class
+ .getResource("tidy.properties"));
if (null != defaultprops) {
_tidyProperties.load(defaultprops);
if (log.isDebugEnabled()) {
@@ -209,8 +210,8 @@
}
// Second part - user-defined properties.
- props = Thread.currentThread().getContextClassLoader()
- .getResourceAsStream("tidy.properties");
+ props =
URLToStreamHelper.urlToStreamSafe(Thread.currentThread().getContextClassLoader()
+ .getResource("tidy.properties"));
if (null != props) {
_tidyProperties.load(props);
if (log.isDebugEnabled()) {
Modified: trunk/framework/impl/src/main/java/org/ajax4jsf/webapp/tidy/TidyXMLFilter.java
===================================================================
---
trunk/framework/impl/src/main/java/org/ajax4jsf/webapp/tidy/TidyXMLFilter.java 2008-02-07
16:56:08 UTC (rev 5923)
+++
trunk/framework/impl/src/main/java/org/ajax4jsf/webapp/tidy/TidyXMLFilter.java 2008-02-07
17:03:07 UTC (rev 5924)
@@ -27,6 +27,7 @@
import org.ajax4jsf.Messages;
import org.ajax4jsf.io.parser.FastHtmlParser;
+import org.ajax4jsf.resource.util.URLToStreamHelper;
import org.ajax4jsf.webapp.BaseXMLFilter;
import org.ajax4jsf.webapp.HtmlParser;
import org.apache.commons.collections.ArrayStack;
@@ -94,12 +95,14 @@
_tidyProperties = new Properties();
InputStream props = null;
try {
- props = TidyXMLFilter.class.getResourceAsStream("tidy.properties");
+ props = URLToStreamHelper.urlToStreamSafe(
+ TidyXMLFilter.class.getResource("tidy.properties"));
if (null != props) {
_tidyProperties.load(props);
}
// Second part - user-defined properties.
- props =
Thread.currentThread().getContextClassLoader().getResourceAsStream("tidy.properties");
+ props = URLToStreamHelper.urlToStreamSafe(
+ Thread.currentThread().getContextClassLoader().getResource("tidy.properties"));
if (null != props) {
_tidyProperties.load(props);
}
Modified: trunk/framework/impl/src/main/java/org/ajax4jsf/xml/serializer/CharInfo.java
===================================================================
---
trunk/framework/impl/src/main/java/org/ajax4jsf/xml/serializer/CharInfo.java 2008-02-07
16:56:08 UTC (rev 5923)
+++
trunk/framework/impl/src/main/java/org/ajax4jsf/xml/serializer/CharInfo.java 2008-02-07
17:03:07 UTC (rev 5924)
@@ -53,6 +53,7 @@
import javax.xml.transform.TransformerException;
+import org.ajax4jsf.resource.util.URLToStreamHelper;
import org.ajax4jsf.xml.serializer.utils.MsgKey;
import org.ajax4jsf.xml.serializer.utils.SystemIDResolver;
import org.ajax4jsf.xml.serializer.utils.Utils;
@@ -219,13 +220,15 @@
// requires a valid URI as parameter
try {
if (internal) {
- is = CharInfo.class.getResourceAsStream(entitiesResource);
+ is = URLToStreamHelper.urlToStreamSafe(
+ CharInfo.class.getResource(entitiesResource));
} else {
ClassLoader cl = ObjectFactory.findClassLoader();
if (cl == null) {
- is = ClassLoader.getSystemResourceAsStream(entitiesResource);
+ is = URLToStreamHelper.urlToStreamSafe(
+ ClassLoader.getSystemResource(entitiesResource));
} else {
- is = cl.getResourceAsStream(entitiesResource);
+ is =
URLToStreamHelper.urlToStreamSafe(cl.getResource(entitiesResource));
}
if (is == null) {
Modified:
trunk/framework/impl/src/main/java/org/ajax4jsf/xml/serializer/OutputPropertiesFactory.java
===================================================================
---
trunk/framework/impl/src/main/java/org/ajax4jsf/xml/serializer/OutputPropertiesFactory.java 2008-02-07
16:56:08 UTC (rev 5923)
+++
trunk/framework/impl/src/main/java/org/ajax4jsf/xml/serializer/OutputPropertiesFactory.java 2008-02-07
17:03:07 UTC (rev 5924)
@@ -49,6 +49,7 @@
import javax.xml.transform.OutputKeys;
+import org.ajax4jsf.resource.util.URLToStreamHelper;
import org.ajax4jsf.xml.serializer.utils.MsgKey;
import org.ajax4jsf.xml.serializer.utils.Utils;
import org.ajax4jsf.xml.serializer.utils.WrappedRuntimeException;
@@ -401,16 +402,16 @@
.doPrivileged(new PrivilegedAction() {
public Object run()
{
- return OutputPropertiesFactory.class
- .getResourceAsStream(resourceName);
+ return
URLToStreamHelper.urlToStreamSafe(OutputPropertiesFactory.class
+ .getResource(resourceName));
}
});
}
else
{
// User may be using older JDK ( JDK < 1.2 )
- is = OutputPropertiesFactory.class
- .getResourceAsStream(resourceName);
+ is = URLToStreamHelper.urlToStreamSafe(OutputPropertiesFactory.class
+ .getResource(resourceName));
}
bis = new BufferedInputStream(is);
Modified:
trunk/framework/impl/src/main/java/org/ajax4jsf/xml/serializer/SecuritySupport.java
===================================================================
---
trunk/framework/impl/src/main/java/org/ajax4jsf/xml/serializer/SecuritySupport.java 2008-02-07
16:56:08 UTC (rev 5923)
+++
trunk/framework/impl/src/main/java/org/ajax4jsf/xml/serializer/SecuritySupport.java 2008-02-07
17:03:07 UTC (rev 5924)
@@ -45,6 +45,8 @@
import java.io.FileNotFoundException;
import java.io.InputStream;
+import org.ajax4jsf.resource.util.URLToStreamHelper;
+
/**
* This class is duplicated for each Xalan-Java subpackage so keep it in sync.
* It is package private and therefore is not exposed as part of the Xalan-Java
@@ -125,9 +127,9 @@
InputStream getResourceAsStream(ClassLoader cl, String name) {
InputStream ris;
if (cl == null) {
- ris = ClassLoader.getSystemResourceAsStream(name);
+ ris =
URLToStreamHelper.urlToStreamSafe(ClassLoader.getSystemResource(name));
} else {
- ris = cl.getResourceAsStream(name);
+ ris = URLToStreamHelper.urlToStreamSafe(cl.getResource(name));
}
return ris;
}
Modified:
trunk/framework/impl/src/main/java/org/ajax4jsf/xml/serializer/SecuritySupport12.java
===================================================================
---
trunk/framework/impl/src/main/java/org/ajax4jsf/xml/serializer/SecuritySupport12.java 2008-02-07
16:56:08 UTC (rev 5923)
+++
trunk/framework/impl/src/main/java/org/ajax4jsf/xml/serializer/SecuritySupport12.java 2008-02-07
17:03:07 UTC (rev 5924)
@@ -49,6 +49,8 @@
import java.security.PrivilegedActionException;
import java.security.PrivilegedExceptionAction;
+import org.ajax4jsf.resource.util.URLToStreamHelper;
+
/**
* This class is duplicated for each Xalan-Java subpackage so keep it in sync.
* It is package private and therefore is not exposed as part of the Xalan-Java
@@ -132,9 +134,9 @@
public Object run() {
InputStream ris;
if (cl == null) {
- ris = ClassLoader.getSystemResourceAsStream(name);
+ ris =
URLToStreamHelper.urlToStreamSafe(ClassLoader.getSystemResource(name));
} else {
- ris = cl.getResourceAsStream(name);
+ ris = URLToStreamHelper.urlToStreamSafe(cl.getResource(name));
}
return ris;
}
Modified:
trunk/framework/impl/src/main/java/org/richfaces/renderkit/TemplateEncoderRendererBase.java
===================================================================
---
trunk/framework/impl/src/main/java/org/richfaces/renderkit/TemplateEncoderRendererBase.java 2008-02-07
16:56:08 UTC (rev 5923)
+++
trunk/framework/impl/src/main/java/org/richfaces/renderkit/TemplateEncoderRendererBase.java 2008-02-07
17:03:07 UTC (rev 5924)
@@ -24,6 +24,7 @@
import org.ajax4jsf.javascript.JSReference;
import org.ajax4jsf.javascript.ScriptUtils;
import org.ajax4jsf.renderkit.HeaderResourcesRendererBase;
+import org.ajax4jsf.resource.util.URLToStreamHelper;
import org.ajax4jsf.webapp.tidy.TidyParser;
import org.ajax4jsf.webapp.tidy.TidyXMLFilter;
import org.richfaces.component.TemplateComponent;
@@ -59,7 +60,8 @@
Properties tidyProperties = new Properties();
InputStream propertiesStream = null;
try {
- propertiesStream =
TidyXMLFilter.class.getResourceAsStream("tidy.properties");
+ propertiesStream = URLToStreamHelper.urlToStreamSafe(
+ TidyXMLFilter.class.getResource("tidy.properties"));
tidyProperties.load(propertiesStream);
} finally {
if (propertiesStream != null) {