Use Set instead of Set http://java.net/jira/browse/JAVASERVERFACES-14430
SECTION: Modified Files
----------------------------
M jsf-ri/src/main/java/com/sun/faces/spi/AnnotationProvider.java
- this is the heart of the change.
- public abstract Map,Set>> getAnnotatedClasses(Set urls);
+ public abstract Map,Set>> getAnnotatedClasses(Set urls);
M jsf-ri/src/main/java/com/sun/faces/spi/ConfigurationResourceProvider.java
- Another big top-level change, that impacts the SPI.
- public Collection getResources(ServletContext context);
+ public Collection getResources(ServletContext context);
M jsf-ri/src/main/java/com/sun/faces/config/processor/FacesConfigExtensionProcessor.java
M jsf-ri/src/main/java/com/sun/faces/config/processor/BehaviorConfigProcessor.java
M jsf-ri/src/main/java/com/sun/faces/config/processor/LifecycleConfigProcessor.java
M jsf-ri/src/main/java/com/sun/faces/config/processor/NavigationConfigProcessor.java
M jsf-ri/src/main/java/com/sun/faces/config/processor/ComponentConfigProcessor.java
M jsf-ri/src/main/java/com/sun/faces/config/processor/ManagedBeanConfigProcessor.java
M jsf-ri/src/main/java/com/sun/faces/config/processor/ApplicationConfigProcessor.java
M jsf-ri/src/main/java/com/sun/faces/config/processor/ValidatorConfigProcessor.java
M jsf-ri/src/main/java/com/sun/faces/config/processor/FaceletTaglibConfigProcessor.java
M jsf-ri/src/main/java/com/sun/faces/config/processor/ConverterConfigProcessor.java
M jsf-ri/src/main/java/com/sun/faces/config/processor/FactoryConfigProcessor.java
M jsf-ri/src/main/java/com/sun/faces/config/processor/RenderKitConfigProcessor.java
M jsf-ri/src/main/java/com/sun/faces/config/configprovider/BaseWebConfigResourceProvider.java
M jsf-ri/src/main/java/com/sun/faces/config/configprovider/MojarraFacesConfigResourceProvider.java
M jsf-ri/src/main/java/com/sun/faces/config/configprovider/WebFacesConfigResourceProvider.java
M jsf-ri/src/main/java/com/sun/faces/config/configprovider/MetaInfFaceletTaglibraryConfigProvider.java
M jsf-ri/src/main/java/com/sun/faces/config/configprovider/MetaInfFacesConfigResourceProvider.java
M jsf-ri/src/main/java/com/sun/faces/config/AnnotationScanner.java
M jsf-ri/src/main/java/com/sun/faces/config/ConfigureListener.java
M jsf-ri/src/main/java/com/sun/faces/config/DocumentInfo.java
M jsf-ri/src/main/java/com/sun/faces/config/JavaClassScanningAnnotationScanner.java
M jsf-ri/test/com/sun/faces/renderkit/TestRenderKit.java
- Fallout from the change.
M jsf-ri/src/main/java/com/sun/faces/config/ConfigManager.java
- More fallout, in URITask (formerly URLTask), in the call() method,
account for the fact that third party implementors of the
ConfigurationResourceProvider SPI, such as
glassfish31-1HEAD/web/weld-integration may still implement
- public Collection getResources(ServletContext context);
Thanks to the compromises of generics we can safely accomodate this
change.
SECTION: Diffs
----------------------------
Index: jsf-ri/test/com/sun/faces/renderkit/TestRenderKit.java
===================================================================
--- jsf-ri/test/com/sun/faces/renderkit/TestRenderKit.java (revision 8748)
+++ jsf-ri/test/com/sun/faces/renderkit/TestRenderKit.java (working copy)
@@ -74,6 +74,7 @@
import java.io.ByteArrayOutputStream;
import java.io.IOException;
import java.io.StringWriter;
+import java.net.URI;
import java.util.Iterator;
import java.net.URL;
@@ -493,8 +494,8 @@
}
configProcessors[0].process(servletContext, new DocumentInfo[] {
- new DocumentInfo(defaultDoc, runtime),
- new DocumentInfo(renderKitDoc, renderkit) });
+ new DocumentInfo(defaultDoc, new URI(runtime.toExternalForm())),
+ new DocumentInfo(renderKitDoc, new URI(renderkit.toExternalForm())) });
RenderKitFactory rkf = (RenderKitFactory) FactoryFinder.getFactory(FactoryFinder.RENDER_KIT_FACTORY);
RenderKit rk = rkf.getRenderKit(getFacesContext(), RenderKitFactory.HTML_BASIC_RENDER_KIT);
Index: jsf-ri/src/main/java/com/sun/faces/spi/AnnotationProvider.java
===================================================================
--- jsf-ri/src/main/java/com/sun/faces/spi/AnnotationProvider.java (revision 8748)
+++ jsf-ri/src/main/java/com/sun/faces/spi/AnnotationProvider.java (working copy)
@@ -42,9 +42,9 @@
import javax.servlet.ServletContext;
import java.lang.annotation.Annotation;
+import java.net.URI;
import java.util.Set;
import java.util.Map;
-import java.net.URL;
/**
*
@@ -128,6 +128,6 @@
* @return a Map
of classes mapped to a specific annotation type.
* If no annotations are present, this method returns an empty Map
.
*/
- public abstract Map,Set>> getAnnotatedClasses(Set urls);
+ public abstract Map,Set>> getAnnotatedClasses(Set urls);
} // END AnnotationProvider
Index: jsf-ri/src/main/java/com/sun/faces/spi/ConfigurationResourceProvider.java
===================================================================
--- jsf-ri/src/main/java/com/sun/faces/spi/ConfigurationResourceProvider.java (revision 8748)
+++ jsf-ri/src/main/java/com/sun/faces/spi/ConfigurationResourceProvider.java (working copy)
@@ -40,9 +40,9 @@
package com.sun.faces.spi;
+import java.net.URI;
import javax.servlet.ServletContext;
-import java.net.URL;
import java.util.Collection;
/**
@@ -61,6 +61,6 @@
* @return a List zero or more URL
instances representing
* application configuration resources
*/
- public Collection getResources(ServletContext context);
+ public Collection getResources(ServletContext context);
}
Index: jsf-ri/src/main/java/com/sun/faces/config/processor/FacesConfigExtensionProcessor.java
===================================================================
--- jsf-ri/src/main/java/com/sun/faces/config/processor/FacesConfigExtensionProcessor.java (revision 8748)
+++ jsf-ri/src/main/java/com/sun/faces/config/processor/FacesConfigExtensionProcessor.java (working copy)
@@ -106,7 +106,7 @@
LOGGER.log(Level.FINE,
MessageFormat.format(
"Processing faces-config-extension elements for document: ''{0}''",
- documentInfos[i].getSourceURL()));
+ documentInfos[i].getSourceURI()));
}
Document document = documentInfos[i].getDocument();
String namespace = document.getDocumentElement()
@@ -155,7 +155,7 @@
LOGGER.log(Level.WARNING,
MessageFormat.format(
"Processing faces-config-extension elements for document: ''{0}'', encountered unexpected configuration ''{1}'', ignoring and continuing",
- info.getSourceURL(), getNodeText(childOfInterset)));
+ info.getSourceURI(), getNodeText(childOfInterset)));
}
}
@@ -174,7 +174,7 @@
LOGGER.log(Level.WARNING,
MessageFormat.format(
"Processing faces-config-extension elements for document: ''{0}'', encountered elemnet without expected children",
- info.getSourceURL()));
+ info.getSourceURI()));
}
}
}
Index: jsf-ri/src/main/java/com/sun/faces/config/processor/BehaviorConfigProcessor.java
===================================================================
--- jsf-ri/src/main/java/com/sun/faces/config/processor/BehaviorConfigProcessor.java (revision 8748)
+++ jsf-ri/src/main/java/com/sun/faces/config/processor/BehaviorConfigProcessor.java (working copy)
@@ -101,7 +101,7 @@
LOGGER.log(Level.FINE,
MessageFormat.format(
"Processing behavior elements for document: ''{0}''",
- documentInfos[i].getSourceURL()));
+ documentInfos[i].getSourceURI()));
}
Document document = documentInfos[i].getDocument();
String namespace = document.getDocumentElement()
Index: jsf-ri/src/main/java/com/sun/faces/config/processor/LifecycleConfigProcessor.java
===================================================================
--- jsf-ri/src/main/java/com/sun/faces/config/processor/LifecycleConfigProcessor.java (revision 8748)
+++ jsf-ri/src/main/java/com/sun/faces/config/processor/LifecycleConfigProcessor.java (working copy)
@@ -95,7 +95,7 @@
LOGGER.log(Level.FINE,
MessageFormat.format(
"Processing lifecycle elements for document: ''{0}''",
- documentInfos[i].getSourceURL()));
+ documentInfos[i].getSourceURI()));
}
Document document = documentInfos[i].getDocument();
String namespace =
Index: jsf-ri/src/main/java/com/sun/faces/config/processor/NavigationConfigProcessor.java
===================================================================
--- jsf-ri/src/main/java/com/sun/faces/config/processor/NavigationConfigProcessor.java (revision 8748)
+++ jsf-ri/src/main/java/com/sun/faces/config/processor/NavigationConfigProcessor.java (working copy)
@@ -152,7 +152,7 @@
LOGGER.log(Level.FINE,
MessageFormat.format(
"Processing navigation-rule elements for document: ''{0}''",
- documentInfo.getSourceURL()));
+ documentInfo.getSourceURI()));
}
Document document = documentInfo.getDocument();
String namespace = document.getDocumentElement()
Index: jsf-ri/src/main/java/com/sun/faces/config/processor/ComponentConfigProcessor.java
===================================================================
--- jsf-ri/src/main/java/com/sun/faces/config/processor/ComponentConfigProcessor.java (revision 8748)
+++ jsf-ri/src/main/java/com/sun/faces/config/processor/ComponentConfigProcessor.java (working copy)
@@ -103,7 +103,7 @@
LOGGER.log(Level.FINE,
MessageFormat.format(
"Processing component elements for document: ''{0}''",
- documentInfos[i].getSourceURL()));
+ documentInfos[i].getSourceURI()));
}
Document document = documentInfos[i].getDocument();
String namespace = document.getDocumentElement()
Index: jsf-ri/src/main/java/com/sun/faces/config/processor/ManagedBeanConfigProcessor.java
===================================================================
--- jsf-ri/src/main/java/com/sun/faces/config/processor/ManagedBeanConfigProcessor.java (revision 8748)
+++ jsf-ri/src/main/java/com/sun/faces/config/processor/ManagedBeanConfigProcessor.java (working copy)
@@ -250,7 +250,7 @@
LOGGER.log(Level.FINE,
MessageFormat.format(
"Processing managed-bean elements for document: ''{0}''",
- documentInfos[i].getSourceURL()));
+ documentInfos[i].getSourceURI()));
}
Document document = documentInfos[i].getDocument();
String namespace = document.getDocumentElement().getNamespaceURI();
Index: jsf-ri/src/main/java/com/sun/faces/config/processor/ApplicationConfigProcessor.java
===================================================================
--- jsf-ri/src/main/java/com/sun/faces/config/processor/ApplicationConfigProcessor.java (revision 8748)
+++ jsf-ri/src/main/java/com/sun/faces/config/processor/ApplicationConfigProcessor.java (working copy)
@@ -259,7 +259,7 @@
if (LOGGER.isLoggable(Level.FINE)) {
LOGGER.log(Level.FINE,
MessageFormat.format("Processing application elements for document: ''{0}''",
- documentInfos[i].getSourceURL()));
+ documentInfos[i].getSourceURI()));
}
Document document = documentInfos[i].getDocument();
String namespace =
Index: jsf-ri/src/main/java/com/sun/faces/config/processor/ValidatorConfigProcessor.java
===================================================================
--- jsf-ri/src/main/java/com/sun/faces/config/processor/ValidatorConfigProcessor.java (revision 8748)
+++ jsf-ri/src/main/java/com/sun/faces/config/processor/ValidatorConfigProcessor.java (working copy)
@@ -105,7 +105,7 @@
LOGGER.log(Level.FINE,
MessageFormat.format(
"Processing validator elements for document: ''{0}''",
- documentInfos[i].getSourceURL()));
+ documentInfos[i].getSourceURI()));
}
Document document = documentInfos[i].getDocument();
String namespace = document.getDocumentElement().getNamespaceURI();
Index: jsf-ri/src/main/java/com/sun/faces/config/processor/FaceletTaglibConfigProcessor.java
===================================================================
--- jsf-ri/src/main/java/com/sun/faces/config/processor/FaceletTaglibConfigProcessor.java (revision 8748)
+++ jsf-ri/src/main/java/com/sun/faces/config/processor/FaceletTaglibConfigProcessor.java (working copy)
@@ -248,7 +248,7 @@
LOGGER.log(Level.FINE,
MessageFormat.format(
"Processing facelet-taglibrary document: ''{0}''",
- documentInfos[i].getSourceURL()));
+ documentInfos[i].getSourceURI()));
}
Document document = documentInfos[i].getDocument();
String namespace =
Index: jsf-ri/src/main/java/com/sun/faces/config/processor/ConverterConfigProcessor.java
===================================================================
--- jsf-ri/src/main/java/com/sun/faces/config/processor/ConverterConfigProcessor.java (revision 8748)
+++ jsf-ri/src/main/java/com/sun/faces/config/processor/ConverterConfigProcessor.java (working copy)
@@ -112,7 +112,7 @@
LOGGER.log(Level.FINE,
MessageFormat.format(
"Processing converter elements for document: ''{0}''",
- documentInfos[i].getSourceURL()));
+ documentInfos[i].getSourceURI()));
}
Document document = documentInfos[i].getDocument();
String namespace = document.getDocumentElement()
Index: jsf-ri/src/main/java/com/sun/faces/config/processor/FactoryConfigProcessor.java
===================================================================
--- jsf-ri/src/main/java/com/sun/faces/config/processor/FactoryConfigProcessor.java (revision 8748)
+++ jsf-ri/src/main/java/com/sun/faces/config/processor/FactoryConfigProcessor.java (working copy)
@@ -188,7 +188,7 @@
LOGGER.log(Level.FINE,
MessageFormat.format(
"Processing factory elements for document: ''{0}''",
- documentInfos[i].getSourceURL()));
+ documentInfos[i].getSourceURI()));
}
Document document = documentInfos[i].getDocument();
String namespace = document.getDocumentElement()
Index: jsf-ri/src/main/java/com/sun/faces/config/processor/RenderKitConfigProcessor.java
===================================================================
--- jsf-ri/src/main/java/com/sun/faces/config/processor/RenderKitConfigProcessor.java (revision 8748)
+++ jsf-ri/src/main/java/com/sun/faces/config/processor/RenderKitConfigProcessor.java (working copy)
@@ -147,7 +147,7 @@
LOGGER.log(Level.FINE,
MessageFormat.format(
"Processing render-kit elements for document: ''{0}''",
- documentInfos[i].getSourceURL()));
+ documentInfos[i].getSourceURI()));
}
Document document = documentInfos[i].getDocument();
String namespace = document.getDocumentElement()
Index: jsf-ri/src/main/java/com/sun/faces/config/ConfigManager.java
===================================================================
--- jsf-ri/src/main/java/com/sun/faces/config/ConfigManager.java (revision 8748)
+++ jsf-ri/src/main/java/com/sun/faces/config/ConfigManager.java (working copy)
@@ -111,6 +111,8 @@
import java.util.logging.Level;
import java.util.logging.Logger;
import java.lang.annotation.Annotation;
+import java.net.URI;
+import java.util.Iterator;
import org.w3c.dom.*;
import org.xml.sax.SAXParseException;
@@ -607,11 +609,11 @@
ExecutorService executor,
boolean validating) {
- List>> urlTasks =
- new ArrayList>>(providers.size());
+ List>> urlTasks =
+ new ArrayList>>(providers.size());
for (ConfigurationResourceProvider p : providers) {
- FutureTask> t =
- new FutureTask>(new URLTask(p, sc));
+ FutureTask> t =
+ new FutureTask>(new URITask(p, sc));
urlTasks.add(t);
if (executor != null) {
executor.execute(t);
@@ -623,10 +625,11 @@
List> docTasks =
new ArrayList>(providers.size() << 1);
- for (FutureTask> t : urlTasks) {
+ int i = 0, j = 0;
+ for (FutureTask> t : urlTasks) {
try {
- Collection l = t.get();
- for (URL u : l) {
+ Collection l = t.get();
+ for (URI u : l) {
FutureTask d =
new FutureTask(new ParseTask(validating, u));
docTasks.add(d);
@@ -635,11 +638,13 @@
} else {
d.run();
}
+ j++;
}
} catch (InterruptedException ignored) {
} catch (Exception e) {
throw new ConfigurationException(e);
}
+ i++;
}
List docs = new ArrayList(docTasks.size());
@@ -714,17 +719,17 @@
this.documentInfos = documentInfos;
}
- private Set getAnnotationScanURLs() {
- Set urls = new HashSet(documentInfos.length);
+ private Set getAnnotationScanURLs() {
+ Set urls = new HashSet(documentInfos.length);
Set jarNames = new HashSet(documentInfos.length);
for (DocumentInfo docInfo : documentInfos) {
- Matcher m = JAR_PATTERN.matcher(docInfo.getSourceURL().toString());
+ Matcher m = JAR_PATTERN.matcher(docInfo.getSourceURI().toString());
if (m.matches()) {
String jarName = m.group(2);
if (!jarNames.contains(jarName)) {
FacesConfigInfo configInfo = new FacesConfigInfo(docInfo);
if (!configInfo.isMetadataComplete()) {
- urls.add(docInfo.getSourceURL());
+ urls.add(docInfo.getSourceURI());
jarNames.add(jarName);
}
}
@@ -768,11 +773,11 @@
if (t != null) {
t.startTiming();
}
- Set scanUrls = urlGetter.getAnnotationScanURLs();
+ Set scanUris = urlGetter.getAnnotationScanURLs();
//AnnotationScanner scanner = new AnnotationScanner(sc);
Map,Set>> annotatedClasses =
- provider.getAnnotatedClasses(scanUrls);
+ provider.getAnnotatedClasses(scanUris);
if (t != null) {
t.stopTiming();
@@ -798,7 +803,7 @@
"http://java.sun.com/xml/ns/javaee";
private static final String EMPTY_FACES_CONFIG =
"com/sun/faces/empty-faces-config.xml";
- private URL documentURL;
+ private URI documentURI;
private DocumentBuilderFactory factory;
private boolean validating;
@@ -811,13 +816,13 @@
*
*
* @param validating whether or not we're validating
- * @param documentURL a URL to the configuration resource to be parsed
+ * @param documentURI a URL to the configuration resource to be parsed
* @throws Exception general error
*/
- public ParseTask(boolean validating, URL documentURL)
+ public ParseTask(boolean validating, URI documentURI)
throws Exception {
- this.documentURL = documentURL;
+ this.documentURI = documentURI;
this.factory = DbfFactory.getFactory();
this.validating = validating;
@@ -843,14 +848,14 @@
if (timer != null) {
timer.stopTiming();
- timer.logResult("Parse " + documentURL.toExternalForm());
+ timer.logResult("Parse " + documentURI.toURL().toExternalForm());
}
- return new DocumentInfo(d, documentURL);
+ return new DocumentInfo(d, documentURI);
} catch (Exception e) {
throw new ConfigurationException(MessageFormat.format(
"Unable to parse document ''{0}'': {1}",
- documentURL.toExternalForm(),
+ documentURI.toURL().toExternalForm(),
e.getMessage()), e);
}
}
@@ -860,7 +865,7 @@
/**
- * @return Document
based on documentURL
.
+ * @return Document
based on documentURI
.
* @throws Exception if an error occurs during the process of building a
* Document
*/
@@ -868,8 +873,9 @@
Document returnDoc;
DocumentBuilder db = getNonValidatingBuilder();
+ URL documentURL = documentURI.toURL();
InputSource is = new InputSource(getInputStream(documentURL));
- is.setSystemId(documentURL.toExternalForm());
+ is.setSystemId(documentURI.toURL().toExternalForm());
Document doc = null;
try {
@@ -1073,7 +1079,7 @@
* processing.
*
*/
- private static class URLTask implements Callable> {
+ private static class URITask implements Callable> {
private ConfigurationResourceProvider provider;
private ServletContext sc;
@@ -1083,12 +1089,12 @@
/**
- * Constructs a new URLTask
instance.
+ * Constructs a new URITask
instance.
* @param provider the ConfigurationResourceProvider
from
* which zero or more URL
s will be returned
* @param sc the ServletContext
of the current application
*/
- public URLTask(ConfigurationResourceProvider provider,
+ public URITask(ConfigurationResourceProvider provider,
ServletContext sc) {
this.provider = provider;
this.sc = sc;
@@ -1103,11 +1109,29 @@
* @throws Exception if an Exception is thrown by the underlying
* ConfigurationResourceProvider
*/
- public Collection call() throws Exception {
- return provider.getResources(sc);
+ public Collection call() throws Exception {
+ Collection untypedCollection = provider.getResources(sc);
+ Iterator untypedCollectionIterator = untypedCollection.iterator();
+ Collection result = Collections.emptyList();
+ if (untypedCollectionIterator.hasNext()) {
+ Object cur = untypedCollectionIterator.next();
+ // account for older versions of the provider that return Collection.
+ if (cur instanceof URL) {
+ result = new ArrayList(untypedCollection.size());
+ result.add(new URI(((URL)cur).toExternalForm()));
+ while (untypedCollectionIterator.hasNext()) {
+ cur = untypedCollectionIterator.next();
+ result.add(new URI(((URL)cur).toExternalForm()));
+ }
+ } else {
+ result = (Collection) untypedCollection;
+ }
+ }
+
+ return result;
}
- } // END URLTask
+ } // END URITask
}
Index: jsf-ri/src/main/java/com/sun/faces/config/configprovider/BaseWebConfigResourceProvider.java
===================================================================
--- jsf-ri/src/main/java/com/sun/faces/config/configprovider/BaseWebConfigResourceProvider.java (revision 8748)
+++ jsf-ri/src/main/java/com/sun/faces/config/configprovider/BaseWebConfigResourceProvider.java (working copy)
@@ -58,6 +58,8 @@
import com.sun.faces.util.Util;
import com.sun.faces.util.FacesLogger;
import com.sun.faces.spi.ConfigurationResourceProvider;
+import java.net.URI;
+import java.net.URISyntaxException;
/**
*
@@ -72,16 +74,16 @@
// ------------------------------ Methods from ConfigurationResourceProvider
- public Collection getResources(ServletContext context) {
+ public Collection getResources(ServletContext context) {
WebConfiguration webConfig = WebConfiguration.getInstance(context);
String paths = webConfig.getOptionValue(getParameter());
- Set urls = new LinkedHashSet(6);
+ Set urls = new LinkedHashSet(6);
if (paths != null) {
for (String token : Util.split(context, paths.trim(), getSeparatorRegex())) {
String path = token.trim();
if (!isExcluded(path) && path.length() != 0) {
- URL u = getContextURLForPath(context, path);
+ URI u = getContextURLForPath(context, path);
if (u != null) {
urls.add(u);
} else {
@@ -111,13 +113,20 @@
protected abstract String getSeparatorRegex();
- protected URL getContextURLForPath(ServletContext context, String path) {
+ protected URI getContextURLForPath(ServletContext context, String path) {
+ URI result = null;
try {
- return context.getResource(path);
+ URL url = context.getResource(path);
+ if (null != url) {
+ result = new URI(url.toExternalForm());
+ }
} catch (MalformedURLException mue) {
throw new FacesException(mue);
+ } catch (URISyntaxException use) {
+ throw new FacesException(use);
}
+ return result;
}
Index: jsf-ri/src/main/java/com/sun/faces/config/configprovider/MojarraFacesConfigResourceProvider.java
===================================================================
--- jsf-ri/src/main/java/com/sun/faces/config/configprovider/MojarraFacesConfigResourceProvider.java (revision 8748)
+++ jsf-ri/src/main/java/com/sun/faces/config/configprovider/MojarraFacesConfigResourceProvider.java (working copy)
@@ -42,10 +42,12 @@
import com.sun.faces.spi.ConfigurationResourceProvider;
-import java.net.URL;
+import java.net.URI;
+import java.net.URISyntaxException;
import java.util.ArrayList;
import java.util.Collection;
import java.util.List;
+import javax.faces.FacesException;
import javax.servlet.ServletContext;
@@ -65,14 +67,18 @@
/**
* @see ConfigurationResourceProvider#getResources(javax.servlet.ServletContext)
*/
- public Collection getResources(ServletContext context) {
+ public Collection getResources(ServletContext context) {
- List list = new ArrayList(1);
+ List list = new ArrayList(1);
// Don't use Util.getCurrentLoader(). This config resource should
// be available from the same classloader that loaded this instance.
// Doing so allows us to be more OSGi friendly.
ClassLoader loader = this.getClass().getClassLoader();
- list.add(loader.getResource(JSF_RI_CONFIG));
+ try {
+ list.add(new URI(loader.getResource(JSF_RI_CONFIG).toExternalForm()));
+ } catch (URISyntaxException ex) {
+ throw new FacesException(ex);
+ }
return list;
}
Index: jsf-ri/src/main/java/com/sun/faces/config/configprovider/WebFacesConfigResourceProvider.java
===================================================================
--- jsf-ri/src/main/java/com/sun/faces/config/configprovider/WebFacesConfigResourceProvider.java (revision 8748)
+++ jsf-ri/src/main/java/com/sun/faces/config/configprovider/WebFacesConfigResourceProvider.java (working copy)
@@ -40,6 +40,7 @@
package com.sun.faces.config.configprovider;
+import java.net.URI;
import java.net.URL;
import java.util.Collection;
@@ -71,12 +72,12 @@
/**
* @see com.sun.faces.spi.ConfigurationResourceProvider#getResources(javax.servlet.ServletContext)
*/
- public Collection getResources(ServletContext context) {
+ public Collection getResources(ServletContext context) {
- Collection urls = super.getResources(context);
+ Collection urls = super.getResources(context);
// Step 5, parse "/WEB-INF/faces-config.xml" if it exists
- URL webFacesConfig = getContextURLForPath(context, WEB_INF_RESOURCE);
+ URI webFacesConfig = getContextURLForPath(context, WEB_INF_RESOURCE);
if (webFacesConfig != null) {
urls.add(webFacesConfig);
}
Index: jsf-ri/src/main/java/com/sun/faces/config/configprovider/MetaInfFaceletTaglibraryConfigProvider.java
===================================================================
--- jsf-ri/src/main/java/com/sun/faces/config/configprovider/MetaInfFaceletTaglibraryConfigProvider.java (revision 8748)
+++ jsf-ri/src/main/java/com/sun/faces/config/configprovider/MetaInfFaceletTaglibraryConfigProvider.java (working copy)
@@ -40,6 +40,7 @@
package com.sun.faces.config.configprovider;
+import java.net.URISyntaxException;
import java.net.URL;
import java.util.Collection;
import java.util.List;
@@ -47,6 +48,8 @@
import java.util.Collections;
import java.util.Set;
import java.io.IOException;
+import java.util.logging.Level;
+import java.util.logging.Logger;
import javax.servlet.ServletContext;
import javax.faces.FacesException;
@@ -54,6 +57,7 @@
import com.sun.faces.facelets.util.Classpath;
import com.sun.faces.util.Util;
import com.sun.faces.spi.ConfigurationResourceProvider;
+import java.net.URI;
/**
*
@@ -81,7 +85,7 @@
// -------------------------------------------- Methods from ConfigProcessor
- public Collection getResources(ServletContext context) {
+ public Collection getResources(ServletContext context) {
try {
URL[] urls = Classpath.search(Util.getCurrentLoader(this),
@@ -92,7 +96,7 @@
// but has left the jsf-facelets.jar in the classpath, we
// need to ignore the default configuration resouces from
// that JAR.
- List urlsList = pruneURLs(urls);
+ List urlsList = pruneURLs(urls);
// special case for finding taglib files in WEB-INF/classes/META-INF
Set paths = context.getResourcePaths(WEB_INF_CLASSES);
@@ -100,7 +104,11 @@
for (Object path : paths) {
String p = path.toString();
if (p.endsWith(".taglib.xml")) {
- urlsList.add(context.getResource(p));
+ try {
+ urlsList.add(new URI(context.getResource(p).toExternalForm()));
+ } catch (URISyntaxException ex) {
+ throw new FacesException(ex);
+ }
}
}
}
@@ -115,9 +123,9 @@
// --------------------------------------------------------- Private Methods
- private List pruneURLs(URL[] urls) {
+ private List pruneURLs(URL[] urls) {
- List ret = null;
+ List ret = null;
if (urls != null && urls.length > 0) {
for (URL url : urls) {
String u = url.toString();
@@ -130,9 +138,13 @@
}
if (!found) {
if (ret == null) {
- ret = new ArrayList();
+ ret = new ArrayList();
}
- ret.add(url);
+ try {
+ ret.add(new URI(url.toExternalForm()));
+ } catch (URISyntaxException ex) {
+ throw new FacesException(ex);
+ }
}
}
}
Index: jsf-ri/src/main/java/com/sun/faces/config/configprovider/MetaInfFacesConfigResourceProvider.java
===================================================================
--- jsf-ri/src/main/java/com/sun/faces/config/configprovider/MetaInfFacesConfigResourceProvider.java (revision 8748)
+++ jsf-ri/src/main/java/com/sun/faces/config/configprovider/MetaInfFacesConfigResourceProvider.java (working copy)
@@ -44,10 +44,7 @@
import com.sun.faces.config.WebConfiguration;
import com.sun.faces.facelets.util.Classpath;
import com.sun.faces.spi.ConfigurationResourceProvider;
-import java.net.MalformedURLException;
import java.net.URISyntaxException;
-import java.util.logging.Level;
-import java.util.logging.Logger;
import javax.faces.FacesException;
import javax.servlet.ServletContext;
@@ -63,7 +60,6 @@
import java.util.Collection;
import java.util.Set;
import java.util.HashSet;
-import java.util.Arrays;
import java.util.regex.Pattern;
import java.util.regex.Matcher;
@@ -96,7 +92,7 @@
/**
* @see com.sun.faces.spi.ConfigurationResourceProvider#getResources(javax.servlet.ServletContext)
*/
- public Collection getResources(ServletContext context) {
+ public Collection getResources(ServletContext context) {
WebConfiguration webConfig = WebConfiguration.getInstance(context);
String duplicateJarPattern = webConfig.getOptionValue(WebConfiguration.WebContextInitParameter.DuplicateJARPattern);
@@ -148,16 +144,7 @@
// Then load the unsorted resources
result.addAll(unsortedResourceList);
- List urlResult = new ArrayList(sortedJarMap.size() + unsortedResourceList
- .size());
- for (URI uri : result) {
- try {
- urlResult.add(uri.toURL());
- } catch (MalformedURLException ex) {
- throw new FacesException(ex);
- }
- }
- return urlResult;
+ return result;
}
Index: jsf-ri/src/main/java/com/sun/faces/config/AnnotationScanner.java
===================================================================
--- jsf-ri/src/main/java/com/sun/faces/config/AnnotationScanner.java (revision 8748)
+++ jsf-ri/src/main/java/com/sun/faces/config/AnnotationScanner.java (working copy)
@@ -58,7 +58,7 @@
import javax.faces.validator.FacesValidator;
import javax.servlet.ServletContext;
import java.lang.annotation.Annotation;
-import java.net.URL;
+import java.net.URI;
import java.util.*;
import java.util.logging.Level;
import java.util.logging.Logger;
@@ -144,7 +144,7 @@
* If no annotations are present, or the application is considered
* metadata-complete
null
will be returned.
*/
- public Map,Set>> getAnnotatedClasses(Set urls) {
+ public Map,Set>> getAnnotatedClasses(Set uris) {
Set classList = new HashSet();
Index: jsf-ri/src/main/java/com/sun/faces/config/ConfigureListener.java
===================================================================
--- jsf-ri/src/main/java/com/sun/faces/config/ConfigureListener.java (revision 8748)
+++ jsf-ri/src/main/java/com/sun/faces/config/ConfigureListener.java (working copy)
@@ -73,7 +73,6 @@
import org.xml.sax.SAXException;
import org.xml.sax.helpers.DefaultHandler;
-import javax.el.CompositeELResolver;
import javax.el.ELContext;
import javax.el.ExpressionFactory;
import javax.faces.FactoryFinder;
@@ -106,6 +105,7 @@
import java.io.IOException;
import java.io.InputStream;
import java.io.StringReader;
+import java.net.URI;
import java.net.URL;
import java.net.URLConnection;
import java.text.MessageFormat;
@@ -471,11 +471,11 @@
private void initConfigMonitoring(ServletContext context) {
//noinspection unchecked
- Collection webURLs =
- (Collection) context.getAttribute("com.sun.faces.webresources");
- if (isDevModeEnabled() && webURLs != null && !webURLs.isEmpty()) {
+ Collection webURIs =
+ (Collection) context.getAttribute("com.sun.faces.webresources");
+ if (isDevModeEnabled() && webURIs != null && !webURIs.isEmpty()) {
webResourcePool = new ScheduledThreadPoolExecutor(1, new MojarraThreadFactory("WebResourceMonitor"));
- webResourcePool.scheduleAtFixedRate(new WebConfigResourceMonitor(context, webURLs),
+ webResourcePool.scheduleAtFixedRate(new WebConfigResourceMonitor(context, webURIs),
2000,
2000,
TimeUnit.MILLISECONDS);
@@ -972,21 +972,21 @@
// -------------------------------------------------------- Constructors
- public WebConfigResourceMonitor(ServletContext sc, Collection urls) {
+ public WebConfigResourceMonitor(ServletContext sc, Collection uris) {
- assert (urls != null);
+ assert (uris != null);
this.sc = sc;
- for (URL url : urls) {
+ for (URI uri : uris) {
if (monitors == null) {
- monitors = new ArrayList(urls.size());
+ monitors = new ArrayList(uris.size());
}
try {
- Monitor m = new Monitor(url);
+ Monitor m = new Monitor(uri);
monitors.add(m);
} catch (IOException ioe) {
if (LOGGER.isLoggable(Level.SEVERE)) {
LOGGER.severe("Unable to setup resource monitor for "
- + url.toExternalForm()
+ + uri.toString()
+ ". Resource will not be monitored for changes.");
}
if (LOGGER.isLoggable(Level.FINE)) {
@@ -1020,7 +1020,7 @@
} catch (IOException ioe) {
if (LOGGER.isLoggable(Level.SEVERE)) {
LOGGER.severe("Unable to access url "
- + m.url.toExternalForm()
+ + m.uri.toString()
+ ". Monitoring for this resource will no longer occur.");
}
if (LOGGER.isLoggable(Level.FINE)) {
@@ -1043,20 +1043,20 @@
private class Monitor {
- private URL url;
+ private URI uri;
private long timestamp = -1;
// ---------------------------------------------------- Constructors
- Monitor(URL url) throws IOException {
+ Monitor(URI uri) throws IOException {
- this.url = url;
+ this.uri = uri;
this.timestamp = getLastModified();
if (LOGGER.isLoggable(Level.INFO)) {
LOGGER.log(Level.INFO,
"Monitoring {0} for modifications",
- url.toExternalForm());
+ uri.toURL().toExternalForm());
}
}
@@ -1072,7 +1072,7 @@
if (LOGGER.isLoggable(Level.INFO)) {
LOGGER.log(Level.INFO,
"{0} changed!",
- url.toExternalForm());
+ uri.toURL().toExternalForm());
}
return true;
}
@@ -1088,7 +1088,7 @@
InputStream in = null;
try {
- URLConnection conn = url.openConnection();
+ URLConnection conn = uri.toURL().openConnection();
conn.connect();
in = conn.getInputStream();
return conn.getLastModified();
Index: jsf-ri/src/main/java/com/sun/faces/config/DocumentInfo.java
===================================================================
--- jsf-ri/src/main/java/com/sun/faces/config/DocumentInfo.java (revision 8748)
+++ jsf-ri/src/main/java/com/sun/faces/config/DocumentInfo.java (working copy)
@@ -40,6 +40,7 @@
package com.sun.faces.config;
+import java.net.URI;
import org.w3c.dom.Document;
import java.net.URL;
@@ -51,16 +52,16 @@
public class DocumentInfo {
private Document document;
- private URL sourceURL;
+ private URI sourceURI;
// ------------------------------------------------------------ Constructors
- public DocumentInfo(Document document, URL sourceURL) {
+ public DocumentInfo(Document document, URI sourceURL) {
this.document = document;
- this.sourceURL = sourceURL;
+ this.sourceURI = sourceURL;
}
@@ -75,9 +76,9 @@
}
- public URL getSourceURL() {
+ public URI getSourceURI() {
- return sourceURL;
+ return sourceURI;
}
Index: jsf-ri/src/main/java/com/sun/faces/config/JavaClassScanningAnnotationScanner.java
===================================================================
--- jsf-ri/src/main/java/com/sun/faces/config/JavaClassScanningAnnotationScanner.java (revision 8748)
+++ jsf-ri/src/main/java/com/sun/faces/config/JavaClassScanningAnnotationScanner.java (working copy)
@@ -40,6 +40,7 @@
package com.sun.faces.config;
+import java.net.URI;
import com.sun.faces.util.FacesLogger;
import com.sun.faces.util.Util;
@@ -167,12 +168,12 @@
* metadata-complete
null
will be returned.
*/
@Override
- public Map,Set>> getAnnotatedClasses(Set urls) {
+ public Map,Set>> getAnnotatedClasses(Set uris) {
Set classList = new HashSet();
processWebInfClasses(sc, classList);
- processClasspath(urls, classList);
+ processClasspath(uris, classList);
processScripts(classList);
return processClassList(classList);
@@ -184,16 +185,16 @@
/**
* Scans for annotations on classes within JAR files on the classpath.
*
- * @param urls to a faces-config documents that allow us to refer to
+ * @param uris to a faces-config documents that allow us to refer to
* unique jar files on the classpath
* @param classList the Set
to which annotated classes
* will be added
*/
- private void processClasspath(Set urls, Set classList) {
+ private void processClasspath(Set uris, Set classList) {
- for (URL url : urls) {
+ for (URI uri : uris) {
try {
- Matcher m = JAR_PATTERN.matcher(url.toString());
+ Matcher m = JAR_PATTERN.matcher(uri.toString());
if (m.matches()) {
String jarName = m.group(2);
if (!processJar(jarName)) {
@@ -222,7 +223,7 @@
classList);
} else {
if (LOGGER.isLoggable(Level.FINE)) {
- LOGGER.fine("Unable to match URL to a jar file: " + url
+ LOGGER.fine("Unable to match URL to a jar file: " + uri
.toString());
}
}
@@ -231,7 +232,7 @@
LOGGER.log(Level.SEVERE,
"Unable to process annotations for url, {0}. Reason: "
+ e.toString(),
- new Object[]{url});
+ new Object[]{uri});
LOGGER.log(Level.SEVERE, "", e);
}
}