You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@myfaces.apache.org by bs...@apache.org on 2013/02/15 03:30:32 UTC
svn commit: r1446429 - in
/myfaces/trinidad/trunk/trinidad-api/src/main/java/org/apache/myfaces/trinidad/resource:
AggregatingResourceLoader.java DynamicResourceLoader.java
Author: bsullivan
Date: Fri Feb 15 02:30:32 2013
New Revision: 1446429
URL: http://svn.apache.org/r1446429
Log:
Fix threading issues
Modified:
myfaces/trinidad/trunk/trinidad-api/src/main/java/org/apache/myfaces/trinidad/resource/AggregatingResourceLoader.java
myfaces/trinidad/trunk/trinidad-api/src/main/java/org/apache/myfaces/trinidad/resource/DynamicResourceLoader.java
Modified: myfaces/trinidad/trunk/trinidad-api/src/main/java/org/apache/myfaces/trinidad/resource/AggregatingResourceLoader.java
URL: http://svn.apache.org/viewvc/myfaces/trinidad/trunk/trinidad-api/src/main/java/org/apache/myfaces/trinidad/resource/AggregatingResourceLoader.java?rev=1446429&r1=1446428&r2=1446429&view=diff
==============================================================================
--- myfaces/trinidad/trunk/trinidad-api/src/main/java/org/apache/myfaces/trinidad/resource/AggregatingResourceLoader.java (original)
+++ myfaces/trinidad/trunk/trinidad-api/src/main/java/org/apache/myfaces/trinidad/resource/AggregatingResourceLoader.java Fri Feb 15 02:30:32 2013
@@ -18,15 +18,16 @@
*/
package org.apache.myfaces.trinidad.resource;
+import java.io.IOException;
import java.io.InputStream;
import java.io.SequenceInputStream;
-import java.net.URL;
+import java.net.URL;
import java.net.URLConnection;
import java.net.URLStreamHandler;
-import java.util.ArrayList;
-import java.io.IOException;
+import java.util.Arrays;
+import java.util.ArrayList;
import java.util.Enumeration;
import java.util.NoSuchElementException;
@@ -55,8 +56,9 @@ public class AggregatingResourceLoader e
ResourceLoader parent)
{
super(path, parent);
- if (paths == null)
- throw new NullPointerException();
+
+ if ((paths == null) || (paths.length == 0))
+ throw new IllegalArgumentException("No paths specified");
if (target == null)
throw new NullPointerException();
@@ -116,17 +118,26 @@ public class AggregatingResourceLoader e
}
}
- urls.trimToSize();
- URL[] urlArray = urls.toArray(new URL[urls.size()]);
+ if (!urls.isEmpty())
+ {
+ urls.trimToSize();
+ URL[] urlArray = urls.toArray(new URL[urls.size()]);
- AggregatingURLStreamHandler handler = new AggregatingURLStreamHandler(urlArray, _separator);
- return new URL("aggregating", null, -1, path, handler);
+ AggregatingURLStreamHandler handler = new AggregatingURLStreamHandler(urlArray, _separator);
+ return new URL("aggregating", null, -1, path, handler);
+ }
+ else
+ {
+ // none of the paths worked, throw a meaninful exception
+ throw new IOException("Could not find any of:" + Arrays.toString(_paths));
+ }
}
-
- private String[] _paths;
- private ResourceLoader _target;
- private String _separator;
- static private final TrinidadLogger _LOG = TrinidadLogger.createTrinidadLogger(AggregatingResourceLoader.class);
+
+ private final String[] _paths;
+ private final ResourceLoader _target;
+ private volatile String _separator;
+
+ private static final TrinidadLogger _LOG = TrinidadLogger.createTrinidadLogger(AggregatingResourceLoader.class);
/**
* This is a Stream Handler which can be used to construct a URL that is an Aggregate of a list of
@@ -155,10 +166,11 @@ public class AggregatingResourceLoader e
*/
public AggregatingURLStreamHandler(URL[] urls, String separator)
{
- if(urls == null)
+ if ((urls == null) || (urls.length == 0))
{
- throw new NullPointerException();
+ throw new IllegalArgumentException("No URLS specified");
}
+
_urls = urls.clone();
_separator = separator;
}
@@ -184,8 +196,8 @@ public class AggregatingResourceLoader e
return new AggregatingURLConnection(u, conn, _separator);
}
- private URL[] _urls;
- private String _separator;
+ private final URL[] _urls;
+ private final String _separator;
}
@@ -194,12 +206,12 @@ public class AggregatingResourceLoader e
public AggregatingURLConnection(URL url, URLConnection[] connections, String separator)
{
super(url);
+
+ if ((connections == null) || (connections.length == 0))
+ throw new IllegalArgumentException("No connections specified");
+
_connections = connections;
-
- if(separator != null)
- {
- _separator = separator.getBytes();
- }
+ _separator = (separator != null) ? separator.getBytes() : null;
}
@Override
@@ -335,9 +347,9 @@ public class AggregatingResourceLoader e
}
}
- private int _contentLength = Integer.MIN_VALUE;
- private URLConnection[] _connections;
- private byte[] _separator;
+ private volatile int _contentLength = Integer.MIN_VALUE;
+ private final URLConnection[] _connections;
+ private final byte[] _separator;
}
@@ -345,6 +357,9 @@ public class AggregatingResourceLoader e
{
public ArrayEnumeration(T[] array)
{
+ if (array == null)
+ throw new NullPointerException();
+
_array = array;
_len = array.length;
}
@@ -371,9 +386,9 @@ public class AggregatingResourceLoader e
return hasNext();
}
- private T[] _array;
- private int _len;
- private int _pointer = 0;
+ private final T[] _array;
+ private final int _len;
+ private volatile int _pointer = 0;
}
static private class SeparatorInputStream extends InputStream
@@ -441,8 +456,8 @@ public class AggregatingResourceLoader e
return _length - _index;
}
- private byte[] _separator;
- private int _length;
- private int _index = 0;
+ private final byte[] _separator;
+ private final int _length;
+ private volatile int _index = 0;
}
}
Modified: myfaces/trinidad/trunk/trinidad-api/src/main/java/org/apache/myfaces/trinidad/resource/DynamicResourceLoader.java
URL: http://svn.apache.org/viewvc/myfaces/trinidad/trunk/trinidad-api/src/main/java/org/apache/myfaces/trinidad/resource/DynamicResourceLoader.java?rev=1446429&r1=1446428&r2=1446429&view=diff
==============================================================================
--- myfaces/trinidad/trunk/trinidad-api/src/main/java/org/apache/myfaces/trinidad/resource/DynamicResourceLoader.java (original)
+++ myfaces/trinidad/trunk/trinidad-api/src/main/java/org/apache/myfaces/trinidad/resource/DynamicResourceLoader.java Fri Feb 15 02:30:32 2013
@@ -54,7 +54,7 @@ public abstract class DynamicResourceLoa
{
super(parent);
- if(path==null)
+ if (path==null)
{
throw new NullPointerException();
}
@@ -91,6 +91,6 @@ public abstract class DynamicResourceLoa
*/
protected abstract URL getURL(String path) throws IOException;
- private String _path;
-
+ private final String _path;
+
}