You are viewing a plain text version of this content. The canonical link for it is here.
Posted to issues@tiles.apache.org by "Bryan Keller (JIRA)" <ji...@apache.org> on 2010/09/07 20:06:32 UTC

[jira] Created: (TILES-515) ResolvingLocaleUrlDefinitionDAO doesn't handle loading from war properly

ResolvingLocaleUrlDefinitionDAO doesn't handle loading from war properly
------------------------------------------------------------------------

                 Key: TILES-515
                 URL: https://issues.apache.org/jira/browse/TILES-515
             Project: Tiles
          Issue Type: Bug
    Affects Versions: 2.2.2
            Reporter: Bryan Keller


The BaseLocaleUrlDefinitionDAO does not handle loading view definitions directly from a war bundle properly. In the loadDefinitionsFromURL() call, it catches a FileNotFoundException if a definition is not found, logs a debug message and continues. This is the proper way to handle situations where a view definition has not been defined for a particular locale. However, when loading from a resource URL (e.g. "classpath:/..." or "bundle:/"), if the view definition is not found, a "FileNotFoundException is not thrown, rather an IOException is. A plain IOException is not consumed, but rather thrown, and prevents Tiles from initializing.

The code is in BaseLocaleUrlDefinitionDAO, line 277. The IOException handling should check if it is a resource not found error and ignore the exception if so.

-- 
This message is automatically generated by JIRA.
-
You can reply to this email to add a comment to the issue online.


[jira] Assigned: (TILES-515) ResolvingLocaleUrlDefinitionDAO doesn't handle loading from war properly

Posted by "Antonio Petrelli (JIRA)" <ji...@apache.org>.
     [ https://issues.apache.org/jira/browse/TILES-515?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ]

Antonio Petrelli reassigned TILES-515:
--------------------------------------

    Assignee: Antonio Petrelli

Thanks for the instructions, I will let you know.

> ResolvingLocaleUrlDefinitionDAO doesn't handle loading from war properly
> ------------------------------------------------------------------------
>
>                 Key: TILES-515
>                 URL: https://issues.apache.org/jira/browse/TILES-515
>             Project: Tiles
>          Issue Type: Bug
>    Affects Versions: 2.2.2
>            Reporter: Bryan Keller
>            Assignee: Antonio Petrelli
>         Attachments: tilestest.zip, tilestest2.zip
>
>
> The BaseLocaleUrlDefinitionDAO does not handle loading view definitions directly from a war bundle properly. In the loadDefinitionsFromURL() call, it catches a FileNotFoundException if a definition is not found, logs a debug message and continues. This is the proper way to handle situations where a view definition has not been defined for a particular locale. However, when loading from a resource URL (e.g. "classpath:/..." or "bundle:/"), if the view definition is not found, a "FileNotFoundException is not thrown, rather an IOException is. A plain IOException is not consumed, but rather thrown, and prevents Tiles from initializing.
> The code is in BaseLocaleUrlDefinitionDAO, line 277. The IOException handling should check if it is a resource not found error and ignore the exception if so.

-- 
This message is automatically generated by JIRA.
-
You can reply to this email to add a comment to the issue online.


[jira] Commented: (TILES-515) ResolvingLocaleUrlDefinitionDAO doesn't handle loading from war properly

Posted by "Antonio Petrelli (JIRA)" <ji...@apache.org>.
    [ https://issues.apache.org/jira/browse/TILES-515?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=12908309#action_12908309 ] 

Antonio Petrelli commented on TILES-515:
----------------------------------------

I followed your instructions and installed the second package, but I have now a strange exception (see below).
However if I launch:
inspect package capability org.apache.felix.framework

I see:
<snip>
org.xml.sax; version=0.0.0.1_006_JavaSE imported by:
   org.ops4j.pax.web.pax-web-jsp [9]
   org.ops4j.pax.web.pax-web-jetty-bundle [8]
   org.ops4j.pax.web.pax-web-extender-war [7]
   org.apache.tiles.core [16]
   org.apache.commons.digester [20]
</snip>

So, in fact, I cannot test the bug you reported yet.
Do you know what can I do? I googled but found nothing.

-----------------

The stack trace of the exception

3362 [Thread-1] ERROR org.ops4j.pax.web.extender.war.internal.RegisterWebAppVisitorWC - Registration exception. Skipping.
java.lang.NoClassDefFoundError: org/xml/sax/SAXException
        at org.apache.tiles.factory.BasicTilesContainerFactory.createDefinitionsReader(BasicTilesContainerFactory.java:333)
        at org.apache.tiles.factory.BasicTilesContainerFactory.createLocaleDefinitionDao(BasicTilesContainerFactory.java:297)
        at org.apache.tiles.factory.BasicTilesContainerFactory.createDefinitionsFactory(BasicTilesContainerFactory.java:242)
        at org.apache.tiles.factory.BasicTilesContainerFactory.createContainer(BasicTilesContainerFactory.java:104)
        at org.apache.tiles.startup.AbstractTilesInitializer.createContainer(AbstractTilesInitializer.java:124)
        at org.apache.tiles.startup.AbstractTilesInitializer.initialize(AbstractTilesInitializer.java:70)
        at org.apache.tiles.web.startup.AbstractTilesListener.contextInitialized(AbstractTilesListener.java:62)
        at org.ops4j.pax.web.service.jetty.internal.HttpServiceContext$1.call(HttpServiceContext.java:163)
        at org.ops4j.pax.web.service.jetty.internal.HttpServiceContext$1.call(HttpServiceContext.java:159)
        at org.ops4j.pax.swissbox.core.ContextClassLoaderUtils.doWithClassLoader(ContextClassLoaderUtils.java:60)
        at org.ops4j.pax.web.service.jetty.internal.HttpServiceContext.addEventListener(HttpServiceContext.java:156)
        at org.ops4j.pax.web.service.jetty.internal.JettyServerImpl.addEventListener(JettyServerImpl.java:242)
        at org.ops4j.pax.web.service.jetty.internal.ServerControllerImpl$Started.addEventListener(ServerControllerImpl.java:258)
        at org.ops4j.pax.web.service.jetty.internal.ServerControllerImpl.addEventListener(ServerControllerImpl.java:119)
        at org.ops4j.pax.web.service.internal.HttpServiceStarted.registerEventListener(HttpServiceStarted.java:339)
        at org.ops4j.pax.web.service.internal.HttpServiceProxy.registerEventListener(HttpServiceProxy.java:131)
        at org.ops4j.pax.web.extender.war.internal.RegisterWebAppVisitorWC.visit(RegisterWebAppVisitorWC.java:264)
        at org.ops4j.pax.web.extender.war.internal.model.WebApp.accept(WebApp.java:513)
        at org.ops4j.pax.web.extender.war.internal.WebAppPublisher$HttpServiceListener.register(WebAppPublisher.java:170)
        at org.ops4j.pax.web.extender.war.internal.WebAppPublisher$HttpServiceListener.serviceChanged(WebAppPublisher.java:155)
        at org.ops4j.pax.web.extender.war.internal.WebAppPublisher$HttpServiceListener.serviceChanged(WebAppPublisher.java:119)
        at org.ops4j.pax.swissbox.tracker.ReplaceableService.setService(ReplaceableService.java:114)
        at org.ops4j.pax.swissbox.tracker.ReplaceableService.access$100(ReplaceableService.java:28)
        at org.ops4j.pax.swissbox.tracker.ReplaceableService$CollectionListener.serviceAdded(ReplaceableService.java:183)
        at org.ops4j.pax.swissbox.tracker.ServiceCollection$Tracker.addingService(ServiceCollection.java:181)
        at org.osgi.util.tracker.ServiceTracker$Tracked.customizerAdding(ServiceTracker.java:896)
        at org.osgi.util.tracker.AbstractTracked.trackAdding(AbstractTracked.java:261)
        at org.osgi.util.tracker.AbstractTracked.track(AbstractTracked.java:233)
        at org.osgi.util.tracker.ServiceTracker$Tracked.serviceChanged(ServiceTracker.java:840)
        at org.apache.felix.framework.util.EventDispatcher.invokeServiceListenerCallback(EventDispatcher.java:864)
        at org.apache.felix.framework.util.EventDispatcher.fireEventImmediately(EventDispatcher.java:732)
        at org.apache.felix.framework.util.EventDispatcher.fireServiceEvent(EventDispatcher.java:662)
        at org.apache.felix.framework.Felix.fireServiceEvent(Felix.java:3726)
        at org.apache.felix.framework.Felix.access$000(Felix.java:80)
        at org.apache.felix.framework.Felix$2.serviceChanged(Felix.java:717)
        at org.apache.felix.framework.ServiceRegistry.registerService(ServiceRegistry.java:107)
        at org.apache.felix.framework.Felix.registerService(Felix.java:2847)
        at org.apache.felix.framework.BundleContextImpl.registerService(BundleContextImpl.java:251)
        at org.ops4j.pax.web.service.internal.Activator.createHttpServiceFactory(Activator.java:98)
        at org.ops4j.pax.web.service.internal.Activator.access$200(Activator.java:47)
        at org.ops4j.pax.web.service.internal.Activator$1.run(Activator.java:76)
        at java.lang.Thread.run(Thread.java:636)
Caused by: java.lang.ClassNotFoundException: org.xml.sax.SAXException
        at org.apache.felix.framework.ModuleImpl.findClassOrResourceByDelegation(ModuleImpl.java:772)
        at org.apache.felix.framework.ModuleImpl.access$200(ModuleImpl.java:73)
        at org.apache.felix.framework.ModuleImpl$ModuleClassLoader.loadClass(ModuleImpl.java:1690)
        at java.lang.ClassLoader.loadClass(ClassLoader.java:266)
        ... 42 more


> ResolvingLocaleUrlDefinitionDAO doesn't handle loading from war properly
> ------------------------------------------------------------------------
>
>                 Key: TILES-515
>                 URL: https://issues.apache.org/jira/browse/TILES-515
>             Project: Tiles
>          Issue Type: Bug
>    Affects Versions: 2.2.2
>            Reporter: Bryan Keller
>            Assignee: Antonio Petrelli
>         Attachments: tilestest.zip, tilestest2.zip
>
>
> The BaseLocaleUrlDefinitionDAO does not handle loading view definitions directly from a war bundle properly. In the loadDefinitionsFromURL() call, it catches a FileNotFoundException if a definition is not found, logs a debug message and continues. This is the proper way to handle situations where a view definition has not been defined for a particular locale. However, when loading from a resource URL (e.g. "classpath:/..." or "bundle:/"), if the view definition is not found, a "FileNotFoundException is not thrown, rather an IOException is. A plain IOException is not consumed, but rather thrown, and prevents Tiles from initializing.
> The code is in BaseLocaleUrlDefinitionDAO, line 277. The IOException handling should check if it is a resource not found error and ignore the exception if so.

-- 
This message is automatically generated by JIRA.
-
You can reply to this email to add a comment to the issue online.


[jira] Updated: (TILES-515) ResolvingLocaleUrlDefinitionDAO doesn't handle loading from war properly

Posted by "Bryan Keller (JIRA)" <ji...@apache.org>.
     [ https://issues.apache.org/jira/browse/TILES-515?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ]

Bryan Keller updated TILES-515:
-------------------------------

    Attachment: tilestest.zip

Tiles test project

> ResolvingLocaleUrlDefinitionDAO doesn't handle loading from war properly
> ------------------------------------------------------------------------
>
>                 Key: TILES-515
>                 URL: https://issues.apache.org/jira/browse/TILES-515
>             Project: Tiles
>          Issue Type: Bug
>    Affects Versions: 2.2.2
>            Reporter: Bryan Keller
>         Attachments: tilestest.zip
>
>
> The BaseLocaleUrlDefinitionDAO does not handle loading view definitions directly from a war bundle properly. In the loadDefinitionsFromURL() call, it catches a FileNotFoundException if a definition is not found, logs a debug message and continues. This is the proper way to handle situations where a view definition has not been defined for a particular locale. However, when loading from a resource URL (e.g. "classpath:/..." or "bundle:/"), if the view definition is not found, a "FileNotFoundException is not thrown, rather an IOException is. A plain IOException is not consumed, but rather thrown, and prevents Tiles from initializing.
> The code is in BaseLocaleUrlDefinitionDAO, line 277. The IOException handling should check if it is a resource not found error and ignore the exception if so.

-- 
This message is automatically generated by JIRA.
-
You can reply to this email to add a comment to the issue online.


[jira] Closed: (TILES-515) ResolvingLocaleUrlDefinitionDAO doesn't handle loading from war properly

Posted by "Antonio Petrelli (JIRA)" <ji...@apache.org>.
     [ https://issues.apache.org/jira/browse/TILES-515?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ]

Antonio Petrelli closed TILES-515.
----------------------------------

    Resolution: Fixed

Closed as the reporter says it is fixed.

> ResolvingLocaleUrlDefinitionDAO doesn't handle loading from war properly
> ------------------------------------------------------------------------
>
>                 Key: TILES-515
>                 URL: https://issues.apache.org/jira/browse/TILES-515
>             Project: Tiles
>          Issue Type: Bug
>          Components: tiles-core
>    Affects Versions: 2.2.2
>            Reporter: Bryan Keller
>            Assignee: Antonio Petrelli
>             Fix For: 2.2.3
>
>         Attachments: tilestest.war, tilestest.zip, tilestest2.zip
>
>
> The BaseLocaleUrlDefinitionDAO does not handle loading view definitions directly from a war bundle properly. In the loadDefinitionsFromURL() call, it catches a FileNotFoundException if a definition is not found, logs a debug message and continues. This is the proper way to handle situations where a view definition has not been defined for a particular locale. However, when loading from a resource URL (e.g. "classpath:/..." or "bundle:/"), if the view definition is not found, a "FileNotFoundException is not thrown, rather an IOException is. A plain IOException is not consumed, but rather thrown, and prevents Tiles from initializing.
> The code is in BaseLocaleUrlDefinitionDAO, line 277. The IOException handling should check if it is a resource not found error and ignore the exception if so.

-- 
This message is automatically generated by JIRA.
-
You can reply to this email to add a comment to the issue online.


[jira] Updated: (TILES-515) ResolvingLocaleUrlDefinitionDAO doesn't handle loading from war properly

Posted by "Bryan Keller (JIRA)" <ji...@apache.org>.
     [ https://issues.apache.org/jira/browse/TILES-515?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ]

Bryan Keller updated TILES-515:
-------------------------------

    Comment: was deleted

(was: Tiles test project)

> ResolvingLocaleUrlDefinitionDAO doesn't handle loading from war properly
> ------------------------------------------------------------------------
>
>                 Key: TILES-515
>                 URL: https://issues.apache.org/jira/browse/TILES-515
>             Project: Tiles
>          Issue Type: Bug
>    Affects Versions: 2.2.2
>            Reporter: Bryan Keller
>         Attachments: tilestest.zip
>
>
> The BaseLocaleUrlDefinitionDAO does not handle loading view definitions directly from a war bundle properly. In the loadDefinitionsFromURL() call, it catches a FileNotFoundException if a definition is not found, logs a debug message and continues. This is the proper way to handle situations where a view definition has not been defined for a particular locale. However, when loading from a resource URL (e.g. "classpath:/..." or "bundle:/"), if the view definition is not found, a "FileNotFoundException is not thrown, rather an IOException is. A plain IOException is not consumed, but rather thrown, and prevents Tiles from initializing.
> The code is in BaseLocaleUrlDefinitionDAO, line 277. The IOException handling should check if it is a resource not found error and ignore the exception if so.

-- 
This message is automatically generated by JIRA.
-
You can reply to this email to add a comment to the issue online.


[jira] Updated: (TILES-515) ResolvingLocaleUrlDefinitionDAO doesn't handle loading from war properly

Posted by "Bryan Keller (JIRA)" <ji...@apache.org>.
     [ https://issues.apache.org/jira/browse/TILES-515?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ]

Bryan Keller updated TILES-515:
-------------------------------

    Attachment: tilestest2.zip

Second test project, this one demonstrates the original problem reported

> ResolvingLocaleUrlDefinitionDAO doesn't handle loading from war properly
> ------------------------------------------------------------------------
>
>                 Key: TILES-515
>                 URL: https://issues.apache.org/jira/browse/TILES-515
>             Project: Tiles
>          Issue Type: Bug
>    Affects Versions: 2.2.2
>            Reporter: Bryan Keller
>         Attachments: tilestest.zip, tilestest2.zip
>
>
> The BaseLocaleUrlDefinitionDAO does not handle loading view definitions directly from a war bundle properly. In the loadDefinitionsFromURL() call, it catches a FileNotFoundException if a definition is not found, logs a debug message and continues. This is the proper way to handle situations where a view definition has not been defined for a particular locale. However, when loading from a resource URL (e.g. "classpath:/..." or "bundle:/"), if the view definition is not found, a "FileNotFoundException is not thrown, rather an IOException is. A plain IOException is not consumed, but rather thrown, and prevents Tiles from initializing.
> The code is in BaseLocaleUrlDefinitionDAO, line 277. The IOException handling should check if it is a resource not found error and ignore the exception if so.

-- 
This message is automatically generated by JIRA.
-
You can reply to this email to add a comment to the issue online.


[jira] Updated: (TILES-515) ResolvingLocaleUrlDefinitionDAO doesn't handle loading from war properly

Posted by "Bryan Keller (JIRA)" <ji...@apache.org>.
     [ https://issues.apache.org/jira/browse/TILES-515?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ]

Bryan Keller updated TILES-515:
-------------------------------

    Attachment: tilestest.zip

Test project to create a tiles test war file

> ResolvingLocaleUrlDefinitionDAO doesn't handle loading from war properly
> ------------------------------------------------------------------------
>
>                 Key: TILES-515
>                 URL: https://issues.apache.org/jira/browse/TILES-515
>             Project: Tiles
>          Issue Type: Bug
>    Affects Versions: 2.2.2
>            Reporter: Bryan Keller
>         Attachments: tilestest.zip
>
>
> The BaseLocaleUrlDefinitionDAO does not handle loading view definitions directly from a war bundle properly. In the loadDefinitionsFromURL() call, it catches a FileNotFoundException if a definition is not found, logs a debug message and continues. This is the proper way to handle situations where a view definition has not been defined for a particular locale. However, when loading from a resource URL (e.g. "classpath:/..." or "bundle:/"), if the view definition is not found, a "FileNotFoundException is not thrown, rather an IOException is. A plain IOException is not consumed, but rather thrown, and prevents Tiles from initializing.
> The code is in BaseLocaleUrlDefinitionDAO, line 277. The IOException handling should check if it is a resource not found error and ignore the exception if so.

-- 
This message is automatically generated by JIRA.
-
You can reply to this email to add a comment to the issue online.


[jira] Commented: (TILES-515) ResolvingLocaleUrlDefinitionDAO doesn't handle loading from war properly

Posted by "Bryan Keller (JIRA)" <ji...@apache.org>.
    [ https://issues.apache.org/jira/browse/TILES-515?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=12907768#action_12907768 ] 

Bryan Keller commented on TILES-515:
------------------------------------

I added a simple Tiles test project to create a war file. This uses a gradle script BTW, so you'll need to download gradle 0.9rc1 to build it as it is. (The manifest needs to be tweaked for OSGi, and I'm not proficient in how to do it w/in a pom.xml).

Once you have the war, you can install it in Tomcat to ensure it works.

After that, download the Apache Felix (http://felix.apache.org/site/downloads.cgi). You'll need the framework distribution, the config admin bundle, and the file install bundle. Download Pax-Web (http://wiki.ops4j.org/display/paxweb/Download). You'll need the Jetty bundle, JSP support bundle , and the WAR extender bundle.

Unzip the Felix distro. Copy the config admin, file intall, and all of the Pax Web bundles into the "bundles" directory. Create a directory named "load" at the root of the Felix directory (same level as bundle, bin, etc). Copy the war file into this "load" directory.

Cd to the root Felix dir. Run Felix with "java -jar bin/felix.jar". Everything should start up. Navigate to "localhost:8080/tilestest/simple.jsp". This should show a page with the date and time, to verify JSPs are working. Now go to "localhost:8080/tilestest". You'll get a tiles exception.

This is a slightly different exception than the one I described initially, however.


> ResolvingLocaleUrlDefinitionDAO doesn't handle loading from war properly
> ------------------------------------------------------------------------
>
>                 Key: TILES-515
>                 URL: https://issues.apache.org/jira/browse/TILES-515
>             Project: Tiles
>          Issue Type: Bug
>    Affects Versions: 2.2.2
>            Reporter: Bryan Keller
>         Attachments: tilestest.zip
>
>
> The BaseLocaleUrlDefinitionDAO does not handle loading view definitions directly from a war bundle properly. In the loadDefinitionsFromURL() call, it catches a FileNotFoundException if a definition is not found, logs a debug message and continues. This is the proper way to handle situations where a view definition has not been defined for a particular locale. However, when loading from a resource URL (e.g. "classpath:/..." or "bundle:/"), if the view definition is not found, a "FileNotFoundException is not thrown, rather an IOException is. A plain IOException is not consumed, but rather thrown, and prevents Tiles from initializing.
> The code is in BaseLocaleUrlDefinitionDAO, line 277. The IOException handling should check if it is a resource not found error and ignore the exception if so.

-- 
This message is automatically generated by JIRA.
-
You can reply to this email to add a comment to the issue online.


[jira] Updated: (TILES-515) ResolvingLocaleUrlDefinitionDAO doesn't handle loading from war properly

Posted by "Bryan Keller (JIRA)" <ji...@apache.org>.
     [ https://issues.apache.org/jira/browse/TILES-515?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ]

Bryan Keller updated TILES-515:
-------------------------------

    Comment: was deleted

(was: Test project to create a tiles test war file)

> ResolvingLocaleUrlDefinitionDAO doesn't handle loading from war properly
> ------------------------------------------------------------------------
>
>                 Key: TILES-515
>                 URL: https://issues.apache.org/jira/browse/TILES-515
>             Project: Tiles
>          Issue Type: Bug
>    Affects Versions: 2.2.2
>            Reporter: Bryan Keller
>         Attachments: tilestest.zip
>
>
> The BaseLocaleUrlDefinitionDAO does not handle loading view definitions directly from a war bundle properly. In the loadDefinitionsFromURL() call, it catches a FileNotFoundException if a definition is not found, logs a debug message and continues. This is the proper way to handle situations where a view definition has not been defined for a particular locale. However, when loading from a resource URL (e.g. "classpath:/..." or "bundle:/"), if the view definition is not found, a "FileNotFoundException is not thrown, rather an IOException is. A plain IOException is not consumed, but rather thrown, and prevents Tiles from initializing.
> The code is in BaseLocaleUrlDefinitionDAO, line 277. The IOException handling should check if it is a resource not found error and ignore the exception if so.

-- 
This message is automatically generated by JIRA.
-
You can reply to this email to add a comment to the issue online.


[jira] Commented: (TILES-515) ResolvingLocaleUrlDefinitionDAO doesn't handle loading from war properly

Posted by "Bryan Keller (JIRA)" <ji...@apache.org>.
    [ https://issues.apache.org/jira/browse/TILES-515?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=12908332#action_12908332 ] 

Bryan Keller commented on TILES-515:
------------------------------------

I have attached a prebuilt war. Can you try with this? Also, what version of Java are you using?  org.xml.sax.SAXException should be part of the Java runtime which is strange.

> ResolvingLocaleUrlDefinitionDAO doesn't handle loading from war properly
> ------------------------------------------------------------------------
>
>                 Key: TILES-515
>                 URL: https://issues.apache.org/jira/browse/TILES-515
>             Project: Tiles
>          Issue Type: Bug
>    Affects Versions: 2.2.2
>            Reporter: Bryan Keller
>            Assignee: Antonio Petrelli
>         Attachments: tilestest.war, tilestest.zip, tilestest2.zip
>
>
> The BaseLocaleUrlDefinitionDAO does not handle loading view definitions directly from a war bundle properly. In the loadDefinitionsFromURL() call, it catches a FileNotFoundException if a definition is not found, logs a debug message and continues. This is the proper way to handle situations where a view definition has not been defined for a particular locale. However, when loading from a resource URL (e.g. "classpath:/..." or "bundle:/"), if the view definition is not found, a "FileNotFoundException is not thrown, rather an IOException is. A plain IOException is not consumed, but rather thrown, and prevents Tiles from initializing.
> The code is in BaseLocaleUrlDefinitionDAO, line 277. The IOException handling should check if it is a resource not found error and ignore the exception if so.

-- 
This message is automatically generated by JIRA.
-
You can reply to this email to add a comment to the issue online.


[jira] Updated: (TILES-515) ResolvingLocaleUrlDefinitionDAO doesn't handle loading from war properly

Posted by "Bryan Keller (JIRA)" <ji...@apache.org>.
     [ https://issues.apache.org/jira/browse/TILES-515?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ]

Bryan Keller updated TILES-515:
-------------------------------

    Attachment:     (was: tilestest.zip)

> ResolvingLocaleUrlDefinitionDAO doesn't handle loading from war properly
> ------------------------------------------------------------------------
>
>                 Key: TILES-515
>                 URL: https://issues.apache.org/jira/browse/TILES-515
>             Project: Tiles
>          Issue Type: Bug
>    Affects Versions: 2.2.2
>            Reporter: Bryan Keller
>         Attachments: tilestest.zip
>
>
> The BaseLocaleUrlDefinitionDAO does not handle loading view definitions directly from a war bundle properly. In the loadDefinitionsFromURL() call, it catches a FileNotFoundException if a definition is not found, logs a debug message and continues. This is the proper way to handle situations where a view definition has not been defined for a particular locale. However, when loading from a resource URL (e.g. "classpath:/..." or "bundle:/"), if the view definition is not found, a "FileNotFoundException is not thrown, rather an IOException is. A plain IOException is not consumed, but rather thrown, and prevents Tiles from initializing.
> The code is in BaseLocaleUrlDefinitionDAO, line 277. The IOException handling should check if it is a resource not found error and ignore the exception if so.

-- 
This message is automatically generated by JIRA.
-
You can reply to this email to add a comment to the issue online.


[jira] Updated: (TILES-515) ResolvingLocaleUrlDefinitionDAO doesn't handle loading from war properly

Posted by "Bryan Keller (JIRA)" <ji...@apache.org>.
     [ https://issues.apache.org/jira/browse/TILES-515?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ]

Bryan Keller updated TILES-515:
-------------------------------

    Attachment: tilestest.war

Prebuilt war

> ResolvingLocaleUrlDefinitionDAO doesn't handle loading from war properly
> ------------------------------------------------------------------------
>
>                 Key: TILES-515
>                 URL: https://issues.apache.org/jira/browse/TILES-515
>             Project: Tiles
>          Issue Type: Bug
>    Affects Versions: 2.2.2
>            Reporter: Bryan Keller
>            Assignee: Antonio Petrelli
>         Attachments: tilestest.war, tilestest.zip, tilestest2.zip
>
>
> The BaseLocaleUrlDefinitionDAO does not handle loading view definitions directly from a war bundle properly. In the loadDefinitionsFromURL() call, it catches a FileNotFoundException if a definition is not found, logs a debug message and continues. This is the proper way to handle situations where a view definition has not been defined for a particular locale. However, when loading from a resource URL (e.g. "classpath:/..." or "bundle:/"), if the view definition is not found, a "FileNotFoundException is not thrown, rather an IOException is. A plain IOException is not consumed, but rather thrown, and prevents Tiles from initializing.
> The code is in BaseLocaleUrlDefinitionDAO, line 277. The IOException handling should check if it is a resource not found error and ignore the exception if so.

-- 
This message is automatically generated by JIRA.
-
You can reply to this email to add a comment to the issue online.


[jira] Commented: (TILES-515) ResolvingLocaleUrlDefinitionDAO doesn't handle loading from war properly

Posted by "Bryan Keller (JIRA)" <ji...@apache.org>.
    [ https://issues.apache.org/jira/browse/TILES-515?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=12908493#action_12908493 ] 

Bryan Keller commented on TILES-515:
------------------------------------

I reviewed the code change and it looks good. The Spring Framework does something similar with resource loading - it treats an IOException on opening a resource as the resource not existing. I'll test out your change today.

> ResolvingLocaleUrlDefinitionDAO doesn't handle loading from war properly
> ------------------------------------------------------------------------
>
>                 Key: TILES-515
>                 URL: https://issues.apache.org/jira/browse/TILES-515
>             Project: Tiles
>          Issue Type: Bug
>    Affects Versions: 2.2.2
>            Reporter: Bryan Keller
>            Assignee: Antonio Petrelli
>         Attachments: tilestest.war, tilestest.zip, tilestest2.zip
>
>
> The BaseLocaleUrlDefinitionDAO does not handle loading view definitions directly from a war bundle properly. In the loadDefinitionsFromURL() call, it catches a FileNotFoundException if a definition is not found, logs a debug message and continues. This is the proper way to handle situations where a view definition has not been defined for a particular locale. However, when loading from a resource URL (e.g. "classpath:/..." or "bundle:/"), if the view definition is not found, a "FileNotFoundException is not thrown, rather an IOException is. A plain IOException is not consumed, but rather thrown, and prevents Tiles from initializing.
> The code is in BaseLocaleUrlDefinitionDAO, line 277. The IOException handling should check if it is a resource not found error and ignore the exception if so.

-- 
This message is automatically generated by JIRA.
-
You can reply to this email to add a comment to the issue online.


[jira] Updated: (TILES-515) ResolvingLocaleUrlDefinitionDAO doesn't handle loading from war properly

Posted by "Antonio Petrelli (JIRA)" <ji...@apache.org>.
     [ https://issues.apache.org/jira/browse/TILES-515?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ]

Antonio Petrelli updated TILES-515:
-----------------------------------

    Fix Version/s: 2.2.3
      Component/s: tiles-core

> ResolvingLocaleUrlDefinitionDAO doesn't handle loading from war properly
> ------------------------------------------------------------------------
>
>                 Key: TILES-515
>                 URL: https://issues.apache.org/jira/browse/TILES-515
>             Project: Tiles
>          Issue Type: Bug
>          Components: tiles-core
>    Affects Versions: 2.2.2
>            Reporter: Bryan Keller
>            Assignee: Antonio Petrelli
>             Fix For: 2.2.3
>
>         Attachments: tilestest.war, tilestest.zip, tilestest2.zip
>
>
> The BaseLocaleUrlDefinitionDAO does not handle loading view definitions directly from a war bundle properly. In the loadDefinitionsFromURL() call, it catches a FileNotFoundException if a definition is not found, logs a debug message and continues. This is the proper way to handle situations where a view definition has not been defined for a particular locale. However, when loading from a resource URL (e.g. "classpath:/..." or "bundle:/"), if the view definition is not found, a "FileNotFoundException is not thrown, rather an IOException is. A plain IOException is not consumed, but rather thrown, and prevents Tiles from initializing.
> The code is in BaseLocaleUrlDefinitionDAO, line 277. The IOException handling should check if it is a resource not found error and ignore the exception if so.

-- 
This message is automatically generated by JIRA.
-
You can reply to this email to add a comment to the issue online.


[jira] Commented: (TILES-515) ResolvingLocaleUrlDefinitionDAO doesn't handle loading from war properly

Posted by "Bryan Keller (JIRA)" <ji...@apache.org>.
    [ https://issues.apache.org/jira/browse/TILES-515?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=12907887#action_12907887 ] 

Bryan Keller commented on TILES-515:
------------------------------------

I left one library out - you also need to download and copy "commons-collections" into the "bundles" dir (this isn't in the 1st test project's war file).

> ResolvingLocaleUrlDefinitionDAO doesn't handle loading from war properly
> ------------------------------------------------------------------------
>
>                 Key: TILES-515
>                 URL: https://issues.apache.org/jira/browse/TILES-515
>             Project: Tiles
>          Issue Type: Bug
>    Affects Versions: 2.2.2
>            Reporter: Bryan Keller
>         Attachments: tilestest.zip, tilestest2.zip
>
>
> The BaseLocaleUrlDefinitionDAO does not handle loading view definitions directly from a war bundle properly. In the loadDefinitionsFromURL() call, it catches a FileNotFoundException if a definition is not found, logs a debug message and continues. This is the proper way to handle situations where a view definition has not been defined for a particular locale. However, when loading from a resource URL (e.g. "classpath:/..." or "bundle:/"), if the view definition is not found, a "FileNotFoundException is not thrown, rather an IOException is. A plain IOException is not consumed, but rather thrown, and prevents Tiles from initializing.
> The code is in BaseLocaleUrlDefinitionDAO, line 277. The IOException handling should check if it is a resource not found error and ignore the exception if so.

-- 
This message is automatically generated by JIRA.
-
You can reply to this email to add a comment to the issue online.


[jira] Commented: (TILES-515) ResolvingLocaleUrlDefinitionDAO doesn't handle loading from war properly

Posted by "Antonio Petrelli (JIRA)" <ji...@apache.org>.
    [ https://issues.apache.org/jira/browse/TILES-515?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=12908352#action_12908352 ] 

Antonio Petrelli commented on TILES-515:
----------------------------------------

Thanks, but it was an error of stupidity, I simply forgot to put the war without the libraries I put under "bundle".
I replicated the exception and now I am deciding what is best...
What I am thinking is ignoring any IOException. In fact "openConnection" only declares to throw "IOException". IOW Tiles uses an undocumented feature.

> ResolvingLocaleUrlDefinitionDAO doesn't handle loading from war properly
> ------------------------------------------------------------------------
>
>                 Key: TILES-515
>                 URL: https://issues.apache.org/jira/browse/TILES-515
>             Project: Tiles
>          Issue Type: Bug
>    Affects Versions: 2.2.2
>            Reporter: Bryan Keller
>            Assignee: Antonio Petrelli
>         Attachments: tilestest.war, tilestest.zip, tilestest2.zip
>
>
> The BaseLocaleUrlDefinitionDAO does not handle loading view definitions directly from a war bundle properly. In the loadDefinitionsFromURL() call, it catches a FileNotFoundException if a definition is not found, logs a debug message and continues. This is the proper way to handle situations where a view definition has not been defined for a particular locale. However, when loading from a resource URL (e.g. "classpath:/..." or "bundle:/"), if the view definition is not found, a "FileNotFoundException is not thrown, rather an IOException is. A plain IOException is not consumed, but rather thrown, and prevents Tiles from initializing.
> The code is in BaseLocaleUrlDefinitionDAO, line 277. The IOException handling should check if it is a resource not found error and ignore the exception if so.

-- 
This message is automatically generated by JIRA.
-
You can reply to this email to add a comment to the issue online.


[jira] Commented: (TILES-515) ResolvingLocaleUrlDefinitionDAO doesn't handle loading from war properly

Posted by "Antonio Petrelli (JIRA)" <ji...@apache.org>.
    [ https://issues.apache.org/jira/browse/TILES-515?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=12906940#action_12906940 ] 

Antonio Petrelli commented on TILES-515:
----------------------------------------

I cannot replicate the problem with "classpath:/" URL, FileNotFoundException is thrown with Tomcat 6.0. For the rest, I need more information.
What container do you use? Do you use some particular configuration?
Have you got a test case? If yes, please attach it. A test case as a Maven project is preferred.

> ResolvingLocaleUrlDefinitionDAO doesn't handle loading from war properly
> ------------------------------------------------------------------------
>
>                 Key: TILES-515
>                 URL: https://issues.apache.org/jira/browse/TILES-515
>             Project: Tiles
>          Issue Type: Bug
>    Affects Versions: 2.2.2
>            Reporter: Bryan Keller
>
> The BaseLocaleUrlDefinitionDAO does not handle loading view definitions directly from a war bundle properly. In the loadDefinitionsFromURL() call, it catches a FileNotFoundException if a definition is not found, logs a debug message and continues. This is the proper way to handle situations where a view definition has not been defined for a particular locale. However, when loading from a resource URL (e.g. "classpath:/..." or "bundle:/"), if the view definition is not found, a "FileNotFoundException is not thrown, rather an IOException is. A plain IOException is not consumed, but rather thrown, and prevents Tiles from initializing.
> The code is in BaseLocaleUrlDefinitionDAO, line 277. The IOException handling should check if it is a resource not found error and ignore the exception if so.

-- 
This message is automatically generated by JIRA.
-
You can reply to this email to add a comment to the issue online.


[jira] Commented: (TILES-515) ResolvingLocaleUrlDefinitionDAO doesn't handle loading from war properly

Posted by "Bryan Keller (JIRA)" <ji...@apache.org>.
    [ https://issues.apache.org/jira/browse/TILES-515?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=12906958#action_12906958 ] 

Bryan Keller commented on TILES-515:
------------------------------------

I am guessing that, because Tomcat unarchives the war to the file system, it will try to read from the file system and not directly from the war file. Thus it works. I'll experiment w/ embedded Jetty, which allows loading directly from a war, and see if I can duplicate.

For me, I'm using Tiles inside a war bundle in an OSGi container (Apache Felix), with an OSGi HttpService implementation (Pax-Web). The war is never unarchived. This setup might be a little more involved, so I'll look at an embedded Jetty example to reproduce.

> ResolvingLocaleUrlDefinitionDAO doesn't handle loading from war properly
> ------------------------------------------------------------------------
>
>                 Key: TILES-515
>                 URL: https://issues.apache.org/jira/browse/TILES-515
>             Project: Tiles
>          Issue Type: Bug
>    Affects Versions: 2.2.2
>            Reporter: Bryan Keller
>
> The BaseLocaleUrlDefinitionDAO does not handle loading view definitions directly from a war bundle properly. In the loadDefinitionsFromURL() call, it catches a FileNotFoundException if a definition is not found, logs a debug message and continues. This is the proper way to handle situations where a view definition has not been defined for a particular locale. However, when loading from a resource URL (e.g. "classpath:/..." or "bundle:/"), if the view definition is not found, a "FileNotFoundException is not thrown, rather an IOException is. A plain IOException is not consumed, but rather thrown, and prevents Tiles from initializing.
> The code is in BaseLocaleUrlDefinitionDAO, line 277. The IOException handling should check if it is a resource not found error and ignore the exception if so.

-- 
This message is automatically generated by JIRA.
-
You can reply to this email to add a comment to the issue online.


[jira] Commented: (TILES-515) ResolvingLocaleUrlDefinitionDAO doesn't handle loading from war properly

Posted by "Antonio Petrelli (JIRA)" <ji...@apache.org>.
    [ https://issues.apache.org/jira/browse/TILES-515?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=12907548#action_12907548 ] 

Antonio Petrelli commented on TILES-515:
----------------------------------------

Personally I would like to support OSGi containers, so I would like to fix it, since we already have fixed some issues that made the use of Tiles under OSGi impossible.
Using the message of and exception is a bad practice and very dangerous, a more specific IOException can be a solution. However I would like to reproduce the problem.
Please, provide a test case and instructions on how to deploy it in an OSGi container.

> ResolvingLocaleUrlDefinitionDAO doesn't handle loading from war properly
> ------------------------------------------------------------------------
>
>                 Key: TILES-515
>                 URL: https://issues.apache.org/jira/browse/TILES-515
>             Project: Tiles
>          Issue Type: Bug
>    Affects Versions: 2.2.2
>            Reporter: Bryan Keller
>
> The BaseLocaleUrlDefinitionDAO does not handle loading view definitions directly from a war bundle properly. In the loadDefinitionsFromURL() call, it catches a FileNotFoundException if a definition is not found, logs a debug message and continues. This is the proper way to handle situations where a view definition has not been defined for a particular locale. However, when loading from a resource URL (e.g. "classpath:/..." or "bundle:/"), if the view definition is not found, a "FileNotFoundException is not thrown, rather an IOException is. A plain IOException is not consumed, but rather thrown, and prevents Tiles from initializing.
> The code is in BaseLocaleUrlDefinitionDAO, line 277. The IOException handling should check if it is a resource not found error and ignore the exception if so.

-- 
This message is automatically generated by JIRA.
-
You can reply to this email to add a comment to the issue online.


[jira] Commented: (TILES-515) ResolvingLocaleUrlDefinitionDAO doesn't handle loading from war properly

Posted by "Antonio Petrelli (JIRA)" <ji...@apache.org>.
    [ https://issues.apache.org/jira/browse/TILES-515?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=12908447#action_12908447 ] 

Antonio Petrelli commented on TILES-515:
----------------------------------------

I found what was the point.
If a file does not exists, under a non-OSGi environment a FileNotFoundException is thrown when getting the input stream.
Under OSGi, instead, an IOException is thrown when calling "url.openConnection".
Separating these two pieces and ignoring an IOException thrown in "openConnection", makes your test case work.
I committed the fix in trunk.
Bryan, can you test it if it works?

> ResolvingLocaleUrlDefinitionDAO doesn't handle loading from war properly
> ------------------------------------------------------------------------
>
>                 Key: TILES-515
>                 URL: https://issues.apache.org/jira/browse/TILES-515
>             Project: Tiles
>          Issue Type: Bug
>    Affects Versions: 2.2.2
>            Reporter: Bryan Keller
>            Assignee: Antonio Petrelli
>         Attachments: tilestest.war, tilestest.zip, tilestest2.zip
>
>
> The BaseLocaleUrlDefinitionDAO does not handle loading view definitions directly from a war bundle properly. In the loadDefinitionsFromURL() call, it catches a FileNotFoundException if a definition is not found, logs a debug message and continues. This is the proper way to handle situations where a view definition has not been defined for a particular locale. However, when loading from a resource URL (e.g. "classpath:/..." or "bundle:/"), if the view definition is not found, a "FileNotFoundException is not thrown, rather an IOException is. A plain IOException is not consumed, but rather thrown, and prevents Tiles from initializing.
> The code is in BaseLocaleUrlDefinitionDAO, line 277. The IOException handling should check if it is a resource not found error and ignore the exception if so.

-- 
This message is automatically generated by JIRA.
-
You can reply to this email to add a comment to the issue online.


[jira] Commented: (TILES-515) ResolvingLocaleUrlDefinitionDAO doesn't handle loading from war properly

Posted by "Bryan Keller (JIRA)" <ji...@apache.org>.
    [ https://issues.apache.org/jira/browse/TILES-515?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=12907885#action_12907885 ] 

Bryan Keller commented on TILES-515:
------------------------------------

I attached a second test project that demonstrates the original problem.

It has the same code but is packaged a bit differently. The war only contains the tiles-jsp jar, as the taglib is not accessible otherwise via the classloader. In this example, you will need to copy the following jars into the Felix "bundle" dir (in addition to Pax-Web and the others): jcl-over-slf4j, slf4j-api, slf4j-simple, tiles-api, tiles-core, tiles-servlet, and tiles-template. (You can build the first test project, extract the war, and copy everything in WEB-INF/lib except for tiles-jsp.)

Once you start Felix and navigate to localhost:8080/tilestest, you will get an error to the effect of "tiles_en.xml not found". This error is the one that is supposed to be ignored, as this process is checking for all of the locale-specific view definitions, but it instead is thrown and causes initialization to fail.

> ResolvingLocaleUrlDefinitionDAO doesn't handle loading from war properly
> ------------------------------------------------------------------------
>
>                 Key: TILES-515
>                 URL: https://issues.apache.org/jira/browse/TILES-515
>             Project: Tiles
>          Issue Type: Bug
>    Affects Versions: 2.2.2
>            Reporter: Bryan Keller
>         Attachments: tilestest.zip, tilestest2.zip
>
>
> The BaseLocaleUrlDefinitionDAO does not handle loading view definitions directly from a war bundle properly. In the loadDefinitionsFromURL() call, it catches a FileNotFoundException if a definition is not found, logs a debug message and continues. This is the proper way to handle situations where a view definition has not been defined for a particular locale. However, when loading from a resource URL (e.g. "classpath:/..." or "bundle:/"), if the view definition is not found, a "FileNotFoundException is not thrown, rather an IOException is. A plain IOException is not consumed, but rather thrown, and prevents Tiles from initializing.
> The code is in BaseLocaleUrlDefinitionDAO, line 277. The IOException handling should check if it is a resource not found error and ignore the exception if so.

-- 
This message is automatically generated by JIRA.
-
You can reply to this email to add a comment to the issue online.


[jira] Commented: (TILES-515) ResolvingLocaleUrlDefinitionDAO doesn't handle loading from war properly

Posted by "Bryan Keller (JIRA)" <ji...@apache.org>.
    [ https://issues.apache.org/jira/browse/TILES-515?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=12908517#action_12908517 ] 

Bryan Keller commented on TILES-515:
------------------------------------

I tested this with both the test project and my larger project. The reported problem is fixed with the latest code.

> ResolvingLocaleUrlDefinitionDAO doesn't handle loading from war properly
> ------------------------------------------------------------------------
>
>                 Key: TILES-515
>                 URL: https://issues.apache.org/jira/browse/TILES-515
>             Project: Tiles
>          Issue Type: Bug
>    Affects Versions: 2.2.2
>            Reporter: Bryan Keller
>            Assignee: Antonio Petrelli
>         Attachments: tilestest.war, tilestest.zip, tilestest2.zip
>
>
> The BaseLocaleUrlDefinitionDAO does not handle loading view definitions directly from a war bundle properly. In the loadDefinitionsFromURL() call, it catches a FileNotFoundException if a definition is not found, logs a debug message and continues. This is the proper way to handle situations where a view definition has not been defined for a particular locale. However, when loading from a resource URL (e.g. "classpath:/..." or "bundle:/"), if the view definition is not found, a "FileNotFoundException is not thrown, rather an IOException is. A plain IOException is not consumed, but rather thrown, and prevents Tiles from initializing.
> The code is in BaseLocaleUrlDefinitionDAO, line 277. The IOException handling should check if it is a resource not found error and ignore the exception if so.

-- 
This message is automatically generated by JIRA.
-
You can reply to this email to add a comment to the issue online.


[jira] Commented: (TILES-515) ResolvingLocaleUrlDefinitionDAO doesn't handle loading from war properly

Posted by "Bryan Keller (JIRA)" <ji...@apache.org>.
    [ https://issues.apache.org/jira/browse/TILES-515?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=12907520#action_12907520 ] 

Bryan Keller commented on TILES-515:
------------------------------------

I cannot reproduce this when running w/ Jetty and not unwar'ing the war file. I can only reproduce when running in an OSGi container with a war file acting as a bundle.

I imaging this is not a supported configuration, but if others run into this issue, my solution was to subclass ResolvingLocaleUrlDefinitionDAO, override getDefinitions(), catch the IOException, and check for the exception message for "Resource not found". Then I use a definitions factory that creates the DAO.

> ResolvingLocaleUrlDefinitionDAO doesn't handle loading from war properly
> ------------------------------------------------------------------------
>
>                 Key: TILES-515
>                 URL: https://issues.apache.org/jira/browse/TILES-515
>             Project: Tiles
>          Issue Type: Bug
>    Affects Versions: 2.2.2
>            Reporter: Bryan Keller
>
> The BaseLocaleUrlDefinitionDAO does not handle loading view definitions directly from a war bundle properly. In the loadDefinitionsFromURL() call, it catches a FileNotFoundException if a definition is not found, logs a debug message and continues. This is the proper way to handle situations where a view definition has not been defined for a particular locale. However, when loading from a resource URL (e.g. "classpath:/..." or "bundle:/"), if the view definition is not found, a "FileNotFoundException is not thrown, rather an IOException is. A plain IOException is not consumed, but rather thrown, and prevents Tiles from initializing.
> The code is in BaseLocaleUrlDefinitionDAO, line 277. The IOException handling should check if it is a resource not found error and ignore the exception if so.

-- 
This message is automatically generated by JIRA.
-
You can reply to this email to add a comment to the issue online.