You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@wicket.apache.org by iv...@apache.org on 2010/04/26 19:50:00 UTC

svn commit: r938151 - in /wicket/trunk/wicket/src: main/java/org/apache/wicket/request/resource/ main/java/org/apache/wicket/util/resource/ test/java/org/apache/wicket/request/resource/ test/java/org/apache/wicket/util/resource/

Author: ivaynberg
Date: Mon Apr 26 17:50:00 2010
New Revision: 938151

URL: http://svn.apache.org/viewvc?rev=938151&view=rev
Log:
ajax not working due to bugs in resource handling
Issue: WICKET-2839

Added:
    wicket/trunk/wicket/src/test/java/org/apache/wicket/request/resource/
    wicket/trunk/wicket/src/test/java/org/apache/wicket/request/resource/WriteCallbackTest.java   (with props)
    wicket/trunk/wicket/src/test/java/org/apache/wicket/util/resource/UrlResourceStreamTest.java   (with props)
Modified:
    wicket/trunk/wicket/src/main/java/org/apache/wicket/request/resource/AbstractResource.java
    wicket/trunk/wicket/src/main/java/org/apache/wicket/util/resource/UrlResourceStream.java

Modified: wicket/trunk/wicket/src/main/java/org/apache/wicket/request/resource/AbstractResource.java
URL: http://svn.apache.org/viewvc/wicket/trunk/wicket/src/main/java/org/apache/wicket/request/resource/AbstractResource.java?rev=938151&r1=938150&r2=938151&view=diff
==============================================================================
--- wicket/trunk/wicket/src/main/java/org/apache/wicket/request/resource/AbstractResource.java (original)
+++ wicket/trunk/wicket/src/main/java/org/apache/wicket/request/resource/AbstractResource.java Mon Apr 26 17:50:00 2010
@@ -463,7 +463,7 @@ public abstract class AbstractResource i
 				@Override
 				public void write(byte[] b, int off, int len) throws IOException
 				{
-					if (off == 0 || len == b.length)
+					if (off == 0 && len == b.length)
 					{
 						write(b);
 					}

Modified: wicket/trunk/wicket/src/main/java/org/apache/wicket/util/resource/UrlResourceStream.java
URL: http://svn.apache.org/viewvc/wicket/trunk/wicket/src/main/java/org/apache/wicket/util/resource/UrlResourceStream.java?rev=938151&r1=938150&r2=938151&view=diff
==============================================================================
--- wicket/trunk/wicket/src/main/java/org/apache/wicket/util/resource/UrlResourceStream.java (original)
+++ wicket/trunk/wicket/src/main/java/org/apache/wicket/util/resource/UrlResourceStream.java Mon Apr 26 17:50:00 2010
@@ -193,26 +193,26 @@ public class UrlResourceStream extends A
 	@Override
 	public Time lastModifiedTime()
 	{
-		if (file != null)
+		try
 		{
-			// in case the file has been removed by now
-			if (file.exists() == false)
+			if (file != null)
 			{
-				return null;
-			}
+				// in case the file has been removed by now
+				if (file.exists() == false)
+				{
+					return null;
+				}
 
-			long lastModified = file.lastModified();
+				long lastModified = file.lastModified();
 
-			// if last modified changed update content length and last modified date
-			if (lastModified != this.lastModified)
-			{
-				this.lastModified = lastModified;
-				contentLength = (int)file.length();
+				// if last modified changed update content length and last modified date
+				if (lastModified != this.lastModified)
+				{
+					this.lastModified = lastModified;
+					setContentLength();
+				}
 			}
-		}
-		else
-		{
-			try
+			else
 			{
 				long lastModified = Connections.getLastModified(url);
 
@@ -221,31 +221,35 @@ public class UrlResourceStream extends A
 				{
 					this.lastModified = lastModified;
 
-					URLConnection connection = url.openConnection();
-					contentLength = connection.getContentLength();
-					Connections.close(connection);
+					setContentLength();
 				}
 			}
-			catch (IOException e)
+			return Time.milliseconds(lastModified);
+		}
+		catch (IOException e)
+		{
+			if (url.toString().indexOf(".jar!") >= 0)
 			{
-				if (url.toString().indexOf(".jar!") >= 0)
+				if (log.isDebugEnabled())
 				{
-					if (log.isDebugEnabled())
-					{
-						log.debug("getLastModified for " + url + " failed: " + e.getMessage());
-					}
+					log.debug("getLastModified for " + url + " failed: " + e.getMessage());
 				}
-				else
-				{
-					log.warn("getLastModified for " + url + " failed: " + e.getMessage());
-				}
-
-				// allow modification watcher to detect the problem
-				return null;
+			}
+			else
+			{
+				log.warn("getLastModified for " + url + " failed: " + e.getMessage());
 			}
 
+			// allow modification watcher to detect the problem
+			return null;
 		}
-		return Time.milliseconds(lastModified);
+	}
+
+	private void setContentLength() throws IOException
+	{
+		URLConnection connection = url.openConnection();
+		contentLength = connection.getContentLength();
+		Connections.close(connection);
 	}
 
 	/**

Added: wicket/trunk/wicket/src/test/java/org/apache/wicket/request/resource/WriteCallbackTest.java
URL: http://svn.apache.org/viewvc/wicket/trunk/wicket/src/test/java/org/apache/wicket/request/resource/WriteCallbackTest.java?rev=938151&view=auto
==============================================================================
--- wicket/trunk/wicket/src/test/java/org/apache/wicket/request/resource/WriteCallbackTest.java (added)
+++ wicket/trunk/wicket/src/test/java/org/apache/wicket/request/resource/WriteCallbackTest.java Mon Apr 26 17:50:00 2010
@@ -0,0 +1,63 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements.  See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License.  You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package org.apache.wicket.request.resource;
+
+import java.io.ByteArrayInputStream;
+import java.io.InputStream;
+import java.util.Arrays;
+
+import junit.framework.TestCase;
+
+import org.apache.wicket.mock.MockWebRequest;
+import org.apache.wicket.request.Url;
+import org.apache.wicket.request.resource.AbstractResource.WriteCallback;
+import org.apache.wicket.request.resource.IResource.Attributes;
+import org.apache.wicket.response.ByteArrayResponse;
+
+
+/**
+ * @author Kent Tong
+ */
+public class WriteCallbackTest extends TestCase
+{
+
+	/**
+	 */
+	public void testWriteStream()
+	{
+		WriteCallback callback = new WriteCallback()
+		{
+
+			@Override
+			public void writeData(Attributes attributes)
+			{
+
+			}
+		};
+		ByteArrayResponse response = new ByteArrayResponse();
+		Attributes attributes = new Attributes(new MockWebRequest(new Url()), response);
+		byte[] srcData = new byte[5000];
+		for (int i = 0; i < srcData.length; i++)
+		{
+			srcData[i] = (byte)i;
+		}
+		InputStream in = new ByteArrayInputStream(srcData);
+		callback.writeStream(attributes, in);
+		assertTrue("Content not equal", Arrays.equals(response.getBytes(), srcData));
+	}
+
+}

Propchange: wicket/trunk/wicket/src/test/java/org/apache/wicket/request/resource/WriteCallbackTest.java
------------------------------------------------------------------------------
    svn:mime-type = text/plain

Added: wicket/trunk/wicket/src/test/java/org/apache/wicket/util/resource/UrlResourceStreamTest.java
URL: http://svn.apache.org/viewvc/wicket/trunk/wicket/src/test/java/org/apache/wicket/util/resource/UrlResourceStreamTest.java?rev=938151&view=auto
==============================================================================
--- wicket/trunk/wicket/src/test/java/org/apache/wicket/util/resource/UrlResourceStreamTest.java (added)
+++ wicket/trunk/wicket/src/test/java/org/apache/wicket/util/resource/UrlResourceStreamTest.java Mon Apr 26 17:50:00 2010
@@ -0,0 +1,46 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements.  See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License.  You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package org.apache.wicket.util.resource;
+
+import java.io.IOException;
+import java.net.URL;
+
+import junit.framework.TestCase;
+
+/**
+ * 
+ * @author Kent Tong
+ */
+public class UrlResourceStreamTest extends TestCase
+{
+	/**
+	 * lastModified() shouldn't change the content length if the file isn't really changed.
+	 * 
+	 * @throws IOException
+	 */
+	public void testLastModifiedForResourceInJar() throws IOException
+	{
+		String anyClassInJarFile = "/java/lang/String.class";
+		URL url = getClass().getResource(anyClassInJarFile);
+		UrlResourceStream stream = new UrlResourceStream(url);
+		long length = stream.length();
+		stream.lastModifiedTime();
+		assertEquals(stream.length(), length);
+		stream.close();
+	}
+
+}

Propchange: wicket/trunk/wicket/src/test/java/org/apache/wicket/util/resource/UrlResourceStreamTest.java
------------------------------------------------------------------------------
    svn:mime-type = text/plain