You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@wicket.apache.org by kn...@apache.org on 2009/03/30 23:06:47 UTC

svn commit: r760173 - in /wicket/trunk/wicket/src/main/java/org/apache/wicket/util: io/IObjectStreamFactory.java lang/Objects.java

Author: knopp
Date: Mon Mar 30 21:06:47 2009
New Revision: 760173

URL: http://svn.apache.org/viewvc?rev=760173&view=rev
Log:

Issue: WICKET-1967

Modified:
    wicket/trunk/wicket/src/main/java/org/apache/wicket/util/io/IObjectStreamFactory.java
    wicket/trunk/wicket/src/main/java/org/apache/wicket/util/lang/Objects.java

Modified: wicket/trunk/wicket/src/main/java/org/apache/wicket/util/io/IObjectStreamFactory.java
URL: http://svn.apache.org/viewvc/wicket/trunk/wicket/src/main/java/org/apache/wicket/util/io/IObjectStreamFactory.java?rev=760173&r1=760172&r2=760173&view=diff
==============================================================================
--- wicket/trunk/wicket/src/main/java/org/apache/wicket/util/io/IObjectStreamFactory.java (original)
+++ wicket/trunk/wicket/src/main/java/org/apache/wicket/util/io/IObjectStreamFactory.java Mon Mar 30 21:06:47 2009
@@ -81,6 +81,8 @@
 					try
 					{
 						// Can the application always be taken??
+						// Should be if serialization happened in thread with application set
+						// (WICKET-2195)
 						Application application = Application.get();
 						IApplicationSettings applicationSettings = application.getApplicationSettings();
 						IClassResolver classResolver = applicationSettings.getClassResolver();

Modified: wicket/trunk/wicket/src/main/java/org/apache/wicket/util/lang/Objects.java
URL: http://svn.apache.org/viewvc/wicket/trunk/wicket/src/main/java/org/apache/wicket/util/lang/Objects.java?rev=760173&r1=760172&r2=760173&view=diff
==============================================================================
--- wicket/trunk/wicket/src/main/java/org/apache/wicket/util/lang/Objects.java (original)
+++ wicket/trunk/wicket/src/main/java/org/apache/wicket/util/lang/Objects.java Mon Mar 30 21:06:47 2009
@@ -392,13 +392,28 @@
 		{
 			final ByteArrayInputStream in = new ByteArrayInputStream(data);
 			ObjectInputStream ois = null;
+			boolean unsetApplication = false;
 			try
 			{
 				ois = objectStreamFactory.newObjectInputStream(in);
+				String applicationName = (String)ois.readObject();
+				if (applicationName != null && !Application.exists())
+				{
+					Application app = Application.get(applicationName);
+					if (app != null)
+					{
+						Application.set(app);
+						unsetApplication = true;
+					}
+				}
 				return ois.readObject();
 			}
 			finally
 			{
+				if (unsetApplication)
+				{
+					Application.unset();
+				}
 				if (ois != null)
 				{
 					ois.close();
@@ -1094,6 +1109,14 @@
 			try
 			{
 				oos = objectStreamFactory.newObjectOutputStream(out);
+				if (Application.exists())
+				{
+					oos.writeObject(Application.get().getApplicationKey());
+				}
+				else
+				{
+					oos.writeObject(null);
+				}
 				oos.writeObject(object);
 			}
 			finally