svn commit: r1127142 - in /struts/struts2/trunk/xwork-core/src: main/java/com/opensymphony/xwork2/util/URLUtil.java test/java/com/opensymphony/xwork2/util/URLUtilTest.java
Author: mcucchiara Date: Tue May 24 16:53:44 2011 New Revision: 1127142 URL: http://svn.apache.org/viewvc?rev=1127142&view=rev Log: WW-3626 Corrected URLUtil#normalizeToFileProtocol in order to allow the word jar along the path Modified: struts/struts2/trunk/xwork-core/src/main/java/com/opensymphony/xwork2/util/URLUtil.java struts/struts2/trunk/xwork-core/src/test/java/com/opensymphony/xwork2/util/URLUtilTest.java Modified: struts/struts2/trunk/xwork-core/src/main/java/com/opensymphony/xwork2/util/URLUtil.java URL: http://svn.apache.org/viewvc/struts/struts2/trunk/xwork-core/src/main/java/com/opensymphony/xwork2/util/URLUtil.java?rev=1127142&r1=1127141&r2=1127142&view=diff == --- struts/struts2/trunk/xwork-core/src/main/java/com/opensymphony/xwork2/util/URLUtil.java (original) +++ struts/struts2/trunk/xwork-core/src/main/java/com/opensymphony/xwork2/util/URLUtil.java Tue May 24 16:53:44 2011 @@ -32,7 +32,7 @@ public class URLUtil { public static final String JBOSS5_VFSMEMORY = "vfsmemory"; public static final String JBOSS5_VFSFILE = "vfsfile"; -private static final Pattern JAR_PATTERN = Pattern.compile("^(jar:|wsjar:|zip:|vfsfile:|code-source:)?(file:)?(.*?)(\\!/|.jar/)(.*)"); +private static final Pattern JAR_PATTERN = Pattern.compile("^(jar:|wsjar:|zip:|vfsfile:|code-source:)?(file:)?(.*?)(\\!/|\\.jar/)(.*)"); private static final int JAR_FILE_PATH = 3; /** @@ -64,7 +64,7 @@ public class URLUtil { * @param url The url string to verify. * @return a boolean indicating whether the URL seems to be incorrect. */ -public final static boolean verifyUrl(String url) { +public static boolean verifyUrl(String url) { if (url == null) { return false; } Modified: struts/struts2/trunk/xwork-core/src/test/java/com/opensymphony/xwork2/util/URLUtilTest.java URL: http://svn.apache.org/viewvc/struts/struts2/trunk/xwork-core/src/test/java/com/opensymphony/xwork2/util/URLUtilTest.java?rev=1127142&r1=1127141&r2=1127142&view=diff == --- struts/struts2/trunk/xwork-core/src/test/java/com/opensymphony/xwork2/util/URLUtilTest.java (original) +++ struts/struts2/trunk/xwork-core/src/test/java/com/opensymphony/xwork2/util/URLUtilTest.java Tue May 24 16:53:44 2011 @@ -34,6 +34,22 @@ public class URLUtilTest extends TestCas assertEquals("file:c:/somefile.jar", outputURL.toExternalForm()); } +public void testJarFileWithJarWordInsidePath() throws MalformedURLException { +URL url = new URL("jar:file:/c:/workspace/projar/somefile.jar!/"); +URL outputURL = URLUtil.normalizeToFileProtocol(url); + +assertNotNull(outputURL); +assertEquals("file:/c:/workspace/projar/somefile.jar", outputURL.toExternalForm()); + +url = new URL("jar:file:/c:/workspace/projar/somefile.jar!/somestuf/bla/bla"); +outputURL = URLUtil.normalizeToFileProtocol(url); +assertEquals("file:/c:/workspace/projar/somefile.jar", outputURL.toExternalForm()); + +url = new URL("jar:file:c:/workspace/projar/somefile.jar!/somestuf/bla/bla"); +outputURL = URLUtil.normalizeToFileProtocol(url); +assertEquals("file:c:/workspace/projar/somefile.jar", outputURL.toExternalForm()); +} + public void testZipFile() throws MalformedURLException { URL url = new URL("zip:/c:/somefile.zip!/"); URL outputURL = URLUtil.normalizeToFileProtocol(url);
[CONF] Confluence Changes in the last 24 hours
This is a daily summary of all recent changes in Confluence. - Updated Spaces: - Apache ActiveMQ (https://cwiki.apache.org/confluence/display/ACTIVEMQ) Pages - WS Notification edited by akarpe (01:23 PM) https://cwiki.apache.org/confluence/display/ACTIVEMQ/WS+Notification Apache Camel (https://cwiki.apache.org/confluence/display/CAMEL) Pages - JMS edited by njiang (05:06 AM) https://cwiki.apache.org/confluence/display/CAMEL/JMS Apache CXF (https://cwiki.apache.org/confluence/display/CXF) Pages - Roadmap edited by dkulp (03:59 PM) https://cwiki.apache.org/confluence/display/CXF/Roadmap Apache MyFaces Extensions CDI (https://cwiki.apache.org/confluence/display/EXTCDI) Pages - Core Usage edited by gpetracek (05:41 PM) https://cwiki.apache.org/confluence/display/EXTCDI/Core+Usage CODI Versions edited by gpetracek (05:21 PM) https://cwiki.apache.org/confluence/display/EXTCDI/CODI+Versions External edited by gpetracek (05:14 PM) https://cwiki.apache.org/confluence/display/EXTCDI/External Building CODI edited by gpetracek (05:09 PM) https://cwiki.apache.org/confluence/display/EXTCDI/Building+CODI Apache Jackrabbit (https://cwiki.apache.org/confluence/display/JCR) Pages - Welcome to Apache Jackrabbit edited by jukka (09:42 AM) https://cwiki.apache.org/confluence/display/JCR/Welcome+to+Apache+Jackrabbit Apache Mahout (https://cwiki.apache.org/confluence/display/MAHOUT) Pages - Recommender Documentation edited by crishoj (11:49 AM) https://cwiki.apache.org/confluence/display/MAHOUT/Recommender+Documentation Apache Maven (https://cwiki.apache.org/confluence/display/MAVEN) Pages - Plexus-utils replacement created by nicolas (08:59 AM) https://cwiki.apache.org/confluence/display/MAVEN/Plexus-utils+replacement OFBiz (Open For Business) Project Open Wiki (https://cwiki.apache.org/confluence/display/OFBIZ) Pages - Apache OFBiz Service Providers edited by adrianc (01:23 PM) https://cwiki.apache.org/confluence/display/OFBIZ/Apache+OFBiz+Service+Providers OODT (https://cwiki.apache.org/confluence/display/OODT) Pages - RADiX Powered By OODT edited by good...@oodt.apache.org (09:37 AM) https://cwiki.apache.org/confluence/display/OODT/RADiX+Powered+By+OODT OpenEJB (https://cwiki.apache.org/confluence/display/OPENEJB) Pages - HomeLinks edited by karan_malhi (07:56 PM) https://cwiki.apache.org/confluence/display/OPENEJB/HomeLinks News edited by karan_malhi (06:28 PM) https://cwiki.apache.org/confluence/display/OPENEJB/News Apache Santuario (https://cwiki.apache.org/confluence/display/SANTUARIO) Pages - download edited by cohei...@apache.org (05:23 AM) https://cwiki.apache.org/confluence/display/SANTUARIO/download java_1_4_5_release_notes created by cohei...@apache.org (05:20 AM) https://cwiki.apache.org/confluence/display/SANTUARIO/java_1_4_5_release_notes java_release_notes edited by cohei...@apache.org (05:19 AM) https://cwiki.apache.org/confluence/display/SANTUARIO/java_release_notes java_index edited by cohei...@apache.org (05:18 AM) https://cwiki.apache.org/confluence/display/SANTUARIO/java_index old_news edited by cohei...@apache.org (05:17 AM) https://cwiki.apache.org/confluence/display/SANTUARIO/old_news Index edited by cohei...@apache.org (05:17 AM) https://cwiki.apache.org/confluence/display/SANTUARIO/Index Apache Shiro (https://cwiki.apache.org/confluence/display/SHIRO) Pages - Reference edited by lhazlewood (11:47 PM) https://cwiki.apache.org/confluence/display/SHIRO/Reference Architecture edited by lhazlewood (11:46 PM) https://cwiki.apache.org/confluence/display/SHIRO/Architecture Authorization edited by lhazlewood (11:25 PM) https://cwiki.apache.org/confluence/display/SHIRO/Authorization Web edited by lhazlewood (09:36 PM) https://cwiki.apache.org/confluence/display/SHIRO/Web Authentication edited by lhazlewood (04:53 PM) https://cwiki.apache.org/confluence/display/SHIRO/Authentication The New RBAC - Resource-Based Access Control created by lhazlewood (02:59 PM) https://cwi
svn commit: r1127396 - /struts/struts2/trunk/plugins/jasperreports/src/main/java/org/apache/struts2/views/jasperreports/ValueStackDataSource.java
Author: lukaszlenart Date: Wed May 25 06:35:44 2011 New Revision: 1127396 URL: http://svn.apache.org/viewvc?rev=1127396&view=rev Log: WW-2776 - Uses JRRewindableDataSource for JasperReports Modified: struts/struts2/trunk/plugins/jasperreports/src/main/java/org/apache/struts2/views/jasperreports/ValueStackDataSource.java Modified: struts/struts2/trunk/plugins/jasperreports/src/main/java/org/apache/struts2/views/jasperreports/ValueStackDataSource.java URL: http://svn.apache.org/viewvc/struts/struts2/trunk/plugins/jasperreports/src/main/java/org/apache/struts2/views/jasperreports/ValueStackDataSource.java?rev=1127396&r1=1127395&r2=1127396&view=diff == --- struts/struts2/trunk/plugins/jasperreports/src/main/java/org/apache/struts2/views/jasperreports/ValueStackDataSource.java (original) +++ struts/struts2/trunk/plugins/jasperreports/src/main/java/org/apache/struts2/views/jasperreports/ValueStackDataSource.java Wed May 25 06:35:44 2011 @@ -21,23 +21,20 @@ package org.apache.struts2.views.jasperreports; -import java.util.Iterator; - -import net.sf.jasperreports.engine.JRDataSource; +import com.opensymphony.xwork2.util.ValueStack; +import com.opensymphony.xwork2.util.logging.Logger; +import com.opensymphony.xwork2.util.logging.LoggerFactory; import net.sf.jasperreports.engine.JRException; import net.sf.jasperreports.engine.JRField; - +import net.sf.jasperreports.engine.JRRewindableDataSource; import org.apache.struts2.util.MakeIterator; -import com.opensymphony.xwork2.util.ValueStack; -import com.opensymphony.xwork2.util.logging.Logger; -import com.opensymphony.xwork2.util.logging.LoggerFactory; +import java.util.Iterator; /** * Ported to Struts. - * */ -public class ValueStackDataSource implements JRDataSource { +public class ValueStackDataSource implements JRRewindableDataSource { /** * Logger for this class @@ -47,18 +44,20 @@ public class ValueStackDataSource implem Iterator iterator; ValueStack valueStack; +String dataSource; boolean firstTimeThrough = true; /** * Create a value stack data source on the given iterable property * - * @param valueStack The value stack to base the data source on - * @param dataSource The property to iterate over for the report + * @param valueStack The value stack to base the data source on + * @param dataSourceParam The property to iterate over for the report */ -public ValueStackDataSource(ValueStack valueStack, String dataSource) { +public ValueStackDataSource(ValueStack valueStack, String dataSourceParam) { this.valueStack = valueStack; +dataSource = dataSourceParam; Object dataSourceValue = valueStack.findValue(dataSource); if (dataSourceValue != null) { @@ -71,7 +70,7 @@ public class ValueStackDataSource implem } } else { if (LOG.isWarnEnabled()) { - LOG.warn("Data source value for data source " + dataSource + " was null"); +LOG.warn("Data source value for data source " + dataSource + " was null"); } } } @@ -114,6 +113,29 @@ public class ValueStackDataSource implem } /** + * Move to the first item. + * + * @throws JRException if there is a problem with moving to the first + * data element + */ +public void moveFirst() throws JRException { +Object dataSourceValue = valueStack.findValue(dataSource); +if (dataSourceValue != null) { +if (MakeIterator.isIterable(dataSourceValue)) { +iterator = MakeIterator.convert(dataSourceValue); +} else { +Object[] array = new Object[1]; +array[0] = dataSourceValue; +iterator = MakeIterator.convert(array); +} +} else { +if (LOG.isWarnEnabled()) { +LOG.warn("Data source value for data source [" + dataSource + "] was null"); +} +} +} + +/** * Is there any more data * * @return true if there are more elements to iterate over and @@ -131,13 +153,13 @@ public class ValueStackDataSource implem if ((iterator != null) && (iterator.hasNext())) { valueStack.push(iterator.next()); if (LOG.isDebugEnabled()) { - LOG.debug("Pushed next value: " + valueStack.findValue(".")); +LOG.debug("Pushed next value: " + valueStack.findValue(".")); } return true; } else { if (LOG.isDebugEnabled()) { - LOG.debug("No more values"); +LOG.debug("No more values"); } return false;