You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@wicket.apache.org by mg...@apache.org on 2017/03/20 20:59:10 UTC

[27/48] wicket git commit: Revert "WicketWICKET-6334 WicketObjects#sizeof() should detach Sessions"

Revert "WicketWICKET-6334 WicketObjects#sizeof() should detach Sessions"

This reverts commit 8b6fcd869ceb96f7b4ea003d3d5665a1626390ad.


Project: http://git-wip-us.apache.org/repos/asf/wicket/repo
Commit: http://git-wip-us.apache.org/repos/asf/wicket/commit/e2481683
Tree: http://git-wip-us.apache.org/repos/asf/wicket/tree/e2481683
Diff: http://git-wip-us.apache.org/repos/asf/wicket/diff/e2481683

Branch: refs/heads/master
Commit: e248168384ef3be71a6cd0b597422dea5a4b9a44
Parents: a6331ce
Author: Martin Tzvetanov Grigorov <mg...@apache.org>
Authored: Mon Mar 13 22:51:56 2017 +0100
Committer: Martin Tzvetanov Grigorov <mg...@apache.org>
Committed: Mon Mar 20 21:42:32 2017 +0100

----------------------------------------------------------------------
 .../main/java/org/apache/wicket/Session.java    |   3 +-
 .../checker/CheckingObjectOutputStream.java     |  17 ++-
 .../checker/DifferentPageCheckerTest.java       |   6 +-
 .../checker/NotDetachedModelCheckerTest.java    | 108 -------------------
 .../objects/checker/SessionCheckerTest.java     |  29 +----
 .../serialize/java/JavaSerializerTest.java      |  43 ++++++++
 .../wicket/util/io/SerializableCheckerTest.java |  43 ++------
 .../inspector/SessionSizeModelTest.java         |  13 +--
 8 files changed, 66 insertions(+), 196 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/wicket/blob/e2481683/wicket-core/src/main/java/org/apache/wicket/Session.java
----------------------------------------------------------------------
diff --git a/wicket-core/src/main/java/org/apache/wicket/Session.java b/wicket-core/src/main/java/org/apache/wicket/Session.java
index 059805f..e7f9c14 100644
--- a/wicket-core/src/main/java/org/apache/wicket/Session.java
+++ b/wicket-core/src/main/java/org/apache/wicket/Session.java
@@ -35,7 +35,6 @@ import org.apache.wicket.event.IEvent;
 import org.apache.wicket.event.IEventSink;
 import org.apache.wicket.feedback.FeedbackMessage;
 import org.apache.wicket.feedback.FeedbackMessages;
-import org.apache.wicket.model.IDetachable;
 import org.apache.wicket.page.IPageManager;
 import org.apache.wicket.page.PageAccessSynchronizer;
 import org.apache.wicket.request.Request;
@@ -107,7 +106,7 @@ import org.slf4j.LoggerFactory;
  * @author Eelco Hillenius
  * @author Igor Vaynberg (ivaynberg)
  */
-public abstract class Session implements IClusterable, IEventSink, IDetachable
+public abstract class Session implements IClusterable, IEventSink
 {
 	private static final long serialVersionUID = 1L;
 

http://git-wip-us.apache.org/repos/asf/wicket/blob/e2481683/wicket-core/src/main/java/org/apache/wicket/core/util/objects/checker/CheckingObjectOutputStream.java
----------------------------------------------------------------------
diff --git a/wicket-core/src/main/java/org/apache/wicket/core/util/objects/checker/CheckingObjectOutputStream.java b/wicket-core/src/main/java/org/apache/wicket/core/util/objects/checker/CheckingObjectOutputStream.java
index 2299e42..4978c0e 100644
--- a/wicket-core/src/main/java/org/apache/wicket/core/util/objects/checker/CheckingObjectOutputStream.java
+++ b/wicket-core/src/main/java/org/apache/wicket/core/util/objects/checker/CheckingObjectOutputStream.java
@@ -36,9 +36,7 @@ import java.util.Map;
 import java.util.Set;
 
 import org.apache.wicket.Component;
-import org.apache.wicket.Page;
 import org.apache.wicket.WicketRuntimeException;
-import org.apache.wicket.page.IManageablePage;
 import org.apache.wicket.util.lang.Classes;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
@@ -350,17 +348,14 @@ public class CheckingObjectOutputStream extends ObjectOutputStream
 		nameStack.add(simpleName);
 		traceStack.add(new TraceSlot(obj, fieldDescription));
 
-		if (obj instanceof IManageablePage || (traceStack.size() > 1 && traceStack.get(0).object instanceof IManageablePage))
+		for (IObjectChecker checker : checkers)
 		{
-			for (IObjectChecker checker : checkers)
+			IObjectChecker.Result result = checker.check(obj);
+			if (result.status == IObjectChecker.Result.Status.FAILURE)
 			{
-				IObjectChecker.Result result = checker.check(obj);
-				if (result.status == IObjectChecker.Result.Status.FAILURE)
-				{
-					String prettyPrintMessage = toPrettyPrintedStack(Classes.name(cls));
-					String exceptionMessage = result.reason + '\n' + prettyPrintMessage;
-					throw new ObjectCheckException(exceptionMessage, result.cause);
-				}
+				String prettyPrintMessage = toPrettyPrintedStack(Classes.name(cls));
+				String exceptionMessage = result.reason + '\n' + prettyPrintMessage;
+				throw new ObjectCheckException(exceptionMessage, result.cause);
 			}
 		}
 

http://git-wip-us.apache.org/repos/asf/wicket/blob/e2481683/wicket-core/src/test/java/org/apache/wicket/core/util/objects/checker/DifferentPageCheckerTest.java
----------------------------------------------------------------------
diff --git a/wicket-core/src/test/java/org/apache/wicket/core/util/objects/checker/DifferentPageCheckerTest.java b/wicket-core/src/test/java/org/apache/wicket/core/util/objects/checker/DifferentPageCheckerTest.java
index 380b00d..8752d2d 100644
--- a/wicket-core/src/test/java/org/apache/wicket/core/util/objects/checker/DifferentPageCheckerTest.java
+++ b/wicket-core/src/test/java/org/apache/wicket/core/util/objects/checker/DifferentPageCheckerTest.java
@@ -21,7 +21,7 @@ import java.io.ObjectOutputStream;
 import java.io.OutputStream;
 
 import org.apache.wicket.Component;
-import org.apache.wicket.MockPageWithOneComponent;
+import org.apache.wicket.MockPageWithLink;
 import org.apache.wicket.Page;
 import org.apache.wicket.markup.html.WebComponent;
 import org.apache.wicket.markup.html.form.login.MockHomePage;
@@ -51,8 +51,8 @@ public class DifferentPageCheckerTest extends WicketTestCase
 			}
 		};
 
-		WebComponent component = new ComponentThatKeepsAReferenceToAnotherPage(MockPageWithOneComponent.COMPONENT_ID);
-		MockPageWithOneComponent rootPage = new MockPageWithOneComponent();
+		WebComponent component = new ComponentThatKeepsAReferenceToAnotherPage(MockPageWithLink.LINK_ID);
+		MockPageWithLink rootPage = new MockPageWithLink();
 		rootPage.add(component);
 		byte[] serialized = serializer.serialize(rootPage);
 		assertNull("The produced byte[] must be null if there was an error", serialized);

http://git-wip-us.apache.org/repos/asf/wicket/blob/e2481683/wicket-core/src/test/java/org/apache/wicket/core/util/objects/checker/NotDetachedModelCheckerTest.java
----------------------------------------------------------------------
diff --git a/wicket-core/src/test/java/org/apache/wicket/core/util/objects/checker/NotDetachedModelCheckerTest.java b/wicket-core/src/test/java/org/apache/wicket/core/util/objects/checker/NotDetachedModelCheckerTest.java
deleted file mode 100644
index 260178b..0000000
--- a/wicket-core/src/test/java/org/apache/wicket/core/util/objects/checker/NotDetachedModelCheckerTest.java
+++ /dev/null
@@ -1,108 +0,0 @@
-/*
- * 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.core.util.objects.checker;
-
-import static org.hamcrest.Matchers.is;
-import static org.hamcrest.Matchers.notNullValue;
-
-import java.io.IOException;
-import java.io.ObjectOutputStream;
-import java.io.OutputStream;
-
-import org.apache.wicket.MockPageWithOneComponent;
-import org.apache.wicket.markup.html.WebComponent;
-import org.apache.wicket.model.IModel;
-import org.apache.wicket.model.LoadableDetachableModel;
-import org.apache.wicket.serialize.java.JavaSerializer;
-import org.apache.wicket.util.tester.WicketTestCase;
-import org.junit.Test;
-
-/**
- * Tests for {@link NotDetachedModelChecker}.
- * <p>
- * Tests that the serialization fails when a checking ObjectOutputStream is
- * used with NotDetachedModelChecker and there is a non-detached LoadableDetachableModel
- * in the object tree.
- * </p>
- */
-public class NotDetachedModelCheckerTest extends WicketTestCase
-{
-	/**
-	 * https://issues.apache.org/jira/browse/WICKET-4812
-	 * https://issues.apache.org/jira/browse/WICKET-6334
-	 */
-	@Test
-	public void whenSerializingPage_thenItsComponentsShouldBeChecked() {
-		JavaSerializer serializer = new JavaSerializer("JavaSerializerTest")
-		{
-			@Override
-			protected ObjectOutputStream newObjectOutputStream(OutputStream out) throws IOException
-			{
-				IObjectChecker checker = new NotDetachedModelChecker();
-				return new CheckingObjectOutputStream(out, checker);
-			}
-		};
-
-		MockPageWithOneComponent page = new MockPageWithOneComponent();
-		page.add(new ComponentWithAttachedModel(MockPageWithOneComponent.COMPONENT_ID));
-
-		final byte[] serialized = serializer.serialize(page);
-		assertNull("The produced byte[] must be null if there was an error", serialized);
-	}
-
-	/**
-	 * https://issues.apache.org/jira/browse/WICKET-4812
-	 * https://issues.apache.org/jira/browse/WICKET-6334
-	 */
-	@Test
-	public void whenSerializingNonPageComponent_thenItsSubComponentsShouldNotBeChecked() {
-		JavaSerializer serializer = new JavaSerializer("JavaSerializerTest")
-		{
-			@Override
-			protected ObjectOutputStream newObjectOutputStream(OutputStream out) throws IOException
-			{
-				IObjectChecker checker = new NotDetachedModelChecker();
-				return new CheckingObjectOutputStream(out, checker);
-			}
-		};
-
-		final ComponentWithAttachedModel component = new ComponentWithAttachedModel("id");
-
-		final byte[] serialized = serializer.serialize(component);
-		assertThat(serialized, is(notNullValue()));
-	}
-
-	private static class ComponentWithAttachedModel extends WebComponent
-	{
-		private final IModel<String> member = new LoadableDetachableModel<String>()
-		{
-			@Override
-			protected String load()
-			{
-				return "modelObject";
-			}
-		};
-
-		public ComponentWithAttachedModel(final String id)
-		{
-			super(id);
-
-			// attach the model object
-			member.getObject();
-		}
-	}
-}

http://git-wip-us.apache.org/repos/asf/wicket/blob/e2481683/wicket-core/src/test/java/org/apache/wicket/core/util/objects/checker/SessionCheckerTest.java
----------------------------------------------------------------------
diff --git a/wicket-core/src/test/java/org/apache/wicket/core/util/objects/checker/SessionCheckerTest.java b/wicket-core/src/test/java/org/apache/wicket/core/util/objects/checker/SessionCheckerTest.java
index 7a40f3c..94e8ea7 100644
--- a/wicket-core/src/test/java/org/apache/wicket/core/util/objects/checker/SessionCheckerTest.java
+++ b/wicket-core/src/test/java/org/apache/wicket/core/util/objects/checker/SessionCheckerTest.java
@@ -16,14 +16,10 @@
  */
 package org.apache.wicket.core.util.objects.checker;
 
-import static org.hamcrest.Matchers.is;
-import static org.hamcrest.Matchers.notNullValue;
-
 import java.io.IOException;
 import java.io.ObjectOutputStream;
 import java.io.OutputStream;
 
-import org.apache.wicket.MockPageWithOneComponent;
 import org.apache.wicket.Session;
 import org.apache.wicket.markup.html.WebComponent;
 import org.apache.wicket.markup.html.WebMarkupContainer;
@@ -57,36 +53,15 @@ public class SessionCheckerTest extends WicketTestCase
 			}
 		};
 
-		MockPageWithOneComponent page = new MockPageWithOneComponent();
-		WebMarkupContainer container = new WebMarkupContainer(MockPageWithOneComponent.COMPONENT_ID);
-		page.add(container);
+		WebMarkupContainer container = new WebMarkupContainer("container");
 		// WICKET-6196 force container#children to be an array
 		container.add(new Label("id1"));
 		container.add(new ComponentWithAReferenceToTheSession("id2"));
 		
-		byte[] serialized = serializer.serialize(page);
+		byte[] serialized = serializer.serialize(container);
 		assertNull("The produced byte[] must be null if there was an error", serialized);
 	}
 
-	/**
-	 * https://issues.apache.org/jira/browse/WICKET-6334
-	 */
-	@Test
-	public void sessionCheckerShouldNotCheckSerializationOfTheSessionItself() {
-		JavaSerializer serializer = new JavaSerializer("JavaSerializerTest")
-		{
-			@Override
-			protected ObjectOutputStream newObjectOutputStream(OutputStream out) throws IOException
-			{
-				IObjectChecker checker = new SessionChecker();
-				return new CheckingObjectOutputStream(out, checker);
-			}
-		};
-		final Session session = new WebSession(new MockWebRequest(Url.parse("")));
-		final byte[] serialized = serializer.serialize(session);
-		assertThat(serialized, is(notNullValue()));
-	}
-
 	private static class ComponentWithAReferenceToTheSession extends WebComponent
 	{
 		private final Session member = new WebSession(new MockWebRequest(Url.parse("")));

http://git-wip-us.apache.org/repos/asf/wicket/blob/e2481683/wicket-core/src/test/java/org/apache/wicket/serialize/java/JavaSerializerTest.java
----------------------------------------------------------------------
diff --git a/wicket-core/src/test/java/org/apache/wicket/serialize/java/JavaSerializerTest.java b/wicket-core/src/test/java/org/apache/wicket/serialize/java/JavaSerializerTest.java
index 7c09701..c90414c 100644
--- a/wicket-core/src/test/java/org/apache/wicket/serialize/java/JavaSerializerTest.java
+++ b/wicket-core/src/test/java/org/apache/wicket/serialize/java/JavaSerializerTest.java
@@ -29,7 +29,11 @@ import java.io.Serializable;
 
 import org.apache.wicket.WicketRuntimeException;
 import org.apache.wicket.core.util.objects.checker.CheckingObjectOutputStream;
+import org.apache.wicket.core.util.objects.checker.IObjectChecker;
+import org.apache.wicket.core.util.objects.checker.NotDetachedModelChecker;
 import org.apache.wicket.markup.html.WebComponent;
+import org.apache.wicket.model.IModel;
+import org.apache.wicket.model.LoadableDetachableModel;
 import org.apache.wicket.util.io.IOUtils;
 import org.apache.wicket.util.tester.WicketTestCase;
 import org.junit.Test;
@@ -41,6 +45,45 @@ public class JavaSerializerTest extends WicketTestCase
 {
 	/**
 	 * https://issues.apache.org/jira/browse/WICKET-4812
+	 *
+	 * Tests that the serialization fails when a checking ObjectOutputStream is
+	 * used with NotDetachedModelChecker and there is a non-detached LoadableDetachableModel
+	 * in the object tree.
+	 */
+	@Test
+	public void notDetachedModel()
+	{
+		JavaSerializer serializer = new JavaSerializer("JavaSerializerTest")
+		{
+			@Override
+			protected ObjectOutputStream newObjectOutputStream(OutputStream out) throws IOException
+			{
+				IObjectChecker checker = new NotDetachedModelChecker();
+				return new CheckingObjectOutputStream(out, checker);
+			}
+		};
+
+		IModel<String> model = new NotDetachedModel();
+		model.getObject();
+		WebComponent component = new WebComponent("id", model);
+		byte[] serialized = serializer.serialize(component);
+		assertNull("The produced byte[] must be null if there was an error", serialized);
+	}
+
+	/**
+	 * A Model used for #notDetachedModel() test
+	 */
+	private static class NotDetachedModel extends LoadableDetachableModel<String>
+	{
+		@Override
+		protected String load()
+		{
+			return "loaded";
+		}
+	}
+
+	/**
+	 * https://issues.apache.org/jira/browse/WICKET-4812
 	 * 
 	 * Tests that serialization fails when using the default ObjectOutputStream in
 	 * JavaSerializer and some object in the tree is not Serializable

http://git-wip-us.apache.org/repos/asf/wicket/blob/e2481683/wicket-core/src/test/java/org/apache/wicket/util/io/SerializableCheckerTest.java
----------------------------------------------------------------------
diff --git a/wicket-core/src/test/java/org/apache/wicket/util/io/SerializableCheckerTest.java b/wicket-core/src/test/java/org/apache/wicket/util/io/SerializableCheckerTest.java
index 171caf1..0fdce37 100644
--- a/wicket-core/src/test/java/org/apache/wicket/util/io/SerializableCheckerTest.java
+++ b/wicket-core/src/test/java/org/apache/wicket/util/io/SerializableCheckerTest.java
@@ -21,20 +21,23 @@ import static org.hamcrest.Matchers.is;
 import java.io.IOException;
 import java.io.NotSerializableException;
 import java.io.Serializable;
+import java.util.Map;
+import java.util.Set;
 
-import org.apache.wicket.core.util.objects.checker.AbstractObjectChecker;
 import org.apache.wicket.core.util.objects.checker.CheckingObjectOutputStream;
 import org.apache.wicket.core.util.objects.checker.ObjectSerializationChecker;
-import org.apache.wicket.markup.html.WebPage;
-import org.apache.wicket.page.IManageablePage;
-import org.apache.wicket.util.tester.WicketTestCase;
+import org.apache.wicket.core.util.objects.checker.AbstractObjectChecker;
+import org.apache.wicket.core.util.objects.checker.CheckingObjectOutputStream;
+import org.apache.wicket.core.util.objects.checker.IObjectChecker;
 import org.apache.wicket.util.value.ValueMap;
+import org.hamcrest.Matchers;
+import org.junit.Assert;
 import org.junit.Test;
 
 /**
  * @author Pedro Santos
  */
-public class SerializableCheckerTest extends WicketTestCase
+public class SerializableCheckerTest extends Assert
 {
 
 	/**
@@ -117,33 +120,7 @@ public class SerializableCheckerTest extends WicketTestCase
 		assertTrue(exceptionMessage.contains(NonSerializableType.class.getName()));
 	}
 
-	private static class ManageablePage implements IManageablePage
-	{
-		@Override
-		public boolean isPageStateless()
-		{
-			return false;
-		}
-
-		@Override
-		public int getPageId()
-		{
-			return 0;
-		}
-
-		@Override
-		public void detach()
-		{
-		}
-
-		@Override
-		public boolean setFreezePageId(boolean freeze)
-		{
-			return false;
-		}
-	}
-
-	private static class IdentityTestType extends ManageablePage
+	private static class IdentityTestType implements Serializable
 	{
 		private static final long serialVersionUID = 1L;
 
@@ -156,7 +133,7 @@ public class SerializableCheckerTest extends WicketTestCase
 		}
 	}
 
-	private static class TestType2 extends WebPage
+	private static class TestType2 implements Serializable
 	{
 		private static final long serialVersionUID = 1L;
 		ProblematicType problematicType = new ProblematicType();

http://git-wip-us.apache.org/repos/asf/wicket/blob/e2481683/wicket-devutils/src/test/java/org/apache/wicket/devutils/inspector/SessionSizeModelTest.java
----------------------------------------------------------------------
diff --git a/wicket-devutils/src/test/java/org/apache/wicket/devutils/inspector/SessionSizeModelTest.java b/wicket-devutils/src/test/java/org/apache/wicket/devutils/inspector/SessionSizeModelTest.java
index 3af0218..af5b583 100644
--- a/wicket-devutils/src/test/java/org/apache/wicket/devutils/inspector/SessionSizeModelTest.java
+++ b/wicket-devutils/src/test/java/org/apache/wicket/devutils/inspector/SessionSizeModelTest.java
@@ -16,8 +16,6 @@
  */
 package org.apache.wicket.devutils.inspector;
 
-import static org.hamcrest.Matchers.containsString;
-
 import org.apache.wicket.Session;
 import org.apache.wicket.mock.MockApplication;
 import org.apache.wicket.protocol.http.WebSession;
@@ -25,17 +23,13 @@ import org.apache.wicket.request.Request;
 import org.apache.wicket.request.Response;
 import org.apache.wicket.util.tester.WicketTester;
 import org.junit.Assert;
-import org.junit.Rule;
 import org.junit.Test;
-import org.junit.rules.ExpectedException;
 
 /**
  * @author Pedro Santos
  */
 public class SessionSizeModelTest extends Assert
 {
-	@Rule
-	public ExpectedException expectedException = ExpectedException.none();
 
 	/**
 	 * @see <a href="https://issues.apache.org/jira/browse/WICKET-3355">WICKET-3355</a>
@@ -43,11 +37,6 @@ public class SessionSizeModelTest extends Assert
 	@Test
 	public void testToleranceOnProblematicSessions()
 	{
-		expectedException.expect(IllegalStateException.class);
-		expectedException.expectMessage(containsString("A problem occurred while serializing an object. " +
-				"Please check the earlier logs for more details. Problematic object: " +
-				"org.apache.wicket.devutils.inspector.SessionSizeModelTest$TestSession"));
-
 		new WicketTester(new MockApplication()
 		{
 			@Override
@@ -57,7 +46,7 @@ public class SessionSizeModelTest extends Assert
 			}
 		});
 		SessionSizeModel model = new SessionSizeModel();
-		model.getObject();
+		assertEquals(null, model.getObject());
 	}
 
 	/**