Author: mgrigorov
Date: Wed Jun 8 19:15:29 2011
New Revision: 1133514
URL: http://svn.apache.org/viewvc?rev=1133514&view=rev
Log:
WICKET-3778 Add possibility to register different page serializer
Introduce ISerializer which can be used to serialize objects to byte arrays.
Default implementation is JavaSerializer which uses Java Serialization API
(Object(Input|Output)Stream.
Added:
wicket/trunk/wicket-core/src/main/java/org/apache/wicket/serialize/
wicket/trunk/wicket-core/src/main/java/org/apache/wicket/serialize/java/
wicket/trunk/wicket-core/src/main/java/org/apache/wicket/serialize/java/JavaSerializer.java
wicket/trunk/wicket-util/src/main/java/org/apache/wicket/serialize/
wicket/trunk/wicket-util/src/main/java/org/apache/wicket/serialize/ISerializer.java
Modified:
wicket/trunk/testing/wicket-threadtest/src/main/java/org/apache/wicket/threadtest/apps/app1/TestApp1.java
wicket/trunk/testing/wicket-threadtest/src/main/java/org/apache/wicket/threadtest/apps/app2/TestApp2.java
wicket/trunk/wicket-core/src/main/java/org/apache/wicket/Application.java
wicket/trunk/wicket-core/src/main/java/org/apache/wicket/DefaultPageManagerProvider.java
wicket/trunk/wicket-core/src/main/java/org/apache/wicket/pageStore/DefaultPageStore.java
wicket/trunk/wicket-core/src/main/java/org/apache/wicket/settings/IFrameworkSettings.java
wicket/trunk/wicket-core/src/main/java/org/apache/wicket/settings/def/FrameworkSettings.java
wicket/trunk/wicket-core/src/main/java/org/apache/wicket/settings/def/StoreSettings.java
wicket/trunk/wicket-core/src/test/java/org/apache/wicket/ApplicationSettingsTest.java
wicket/trunk/wicket-core/src/test/java/org/apache/wicket/page/PersistentPageManagerTest.java
wicket/trunk/wicket-core/src/test/java/org/apache/wicket/request/handler/PageIdPoliticTest.java
wicket/trunk/wicket-core/src/test/java/org/apache/wicket/versioning/PageVersioningTest.java
Modified:
wicket/trunk/testing/wicket-threadtest/src/main/java/org/apache/wicket/threadtest/apps/app1/TestApp1.java
URL:
http://svn.apache.org/viewvc/wicket/trunk/testing/wicket-threadtest/src/main/java/org/apache/wicket/threadtest/apps/app1/TestApp1.java?rev=1133514&r1=1133513&r2=1133514&view=diff
==============================================================================
---
wicket/trunk/testing/wicket-threadtest/src/main/java/org/apache/wicket/threadtest/apps/app1/TestApp1.java
(original)
+++
wicket/trunk/testing/wicket-threadtest/src/main/java/org/apache/wicket/threadtest/apps/app1/TestApp1.java
Wed Jun 8 19:15:29 2011
@@ -29,6 +29,7 @@ import org.apache.wicket.pageStore.IPage
import org.apache.wicket.pageStore.memory.HttpSessionDataStore;
import org.apache.wicket.pageStore.memory.PageNumberEvictionStrategy;
import org.apache.wicket.protocol.http.WebApplication;
+import org.apache.wicket.serialize.java.JavaSerializer;
/**
* Test application
@@ -78,7 +79,8 @@ public class TestApp1 extends WebApplica
{
IDataStore dataStore = new
HttpSessionDataStore(pageManagerContext,
new PageNumberEvictionStrategy(100));
- IPageStore pageStore = new
DefaultPageStore(getName(), dataStore,
+ IPageStore pageStore = new DefaultPageStore(
+ new
JavaSerializer(getApplicationKey()), dataStore,
getStoreSettings().getInmemoryCacheSize());
return new PersistentPageManager(getName(),
pageStore, pageManagerContext);
Modified:
wicket/trunk/testing/wicket-threadtest/src/main/java/org/apache/wicket/threadtest/apps/app2/TestApp2.java
URL:
http://svn.apache.org/viewvc/wicket/trunk/testing/wicket-threadtest/src/main/java/org/apache/wicket/threadtest/apps/app2/TestApp2.java?rev=1133514&r1=1133513&r2=1133514&view=diff
==============================================================================
---
wicket/trunk/testing/wicket-threadtest/src/main/java/org/apache/wicket/threadtest/apps/app2/TestApp2.java
(original)
+++
wicket/trunk/testing/wicket-threadtest/src/main/java/org/apache/wicket/threadtest/apps/app2/TestApp2.java
Wed Jun 8 19:15:29 2011
@@ -29,6 +29,7 @@ import org.apache.wicket.pageStore.IPage
import org.apache.wicket.pageStore.memory.HttpSessionDataStore;
import org.apache.wicket.pageStore.memory.PageNumberEvictionStrategy;
import org.apache.wicket.protocol.http.WebApplication;
+import org.apache.wicket.serialize.java.JavaSerializer;
/**
* Test application
@@ -66,7 +67,8 @@ public class TestApp2 extends WebApplica
{
IDataStore dataStore = new
HttpSessionDataStore(pageManagerContext,
new PageNumberEvictionStrategy(100));
- IPageStore pageStore = new
DefaultPageStore(getName(), dataStore,
+ IPageStore pageStore = new DefaultPageStore(
+ new
JavaSerializer(getApplicationKey()), dataStore,
getStoreSettings().getInmemoryCacheSize());
return new PersistentPageManager(getName(),
pageStore, pageManagerContext);
Modified:
wicket/trunk/wicket-core/src/main/java/org/apache/wicket/Application.java
URL:
http://svn.apache.org/viewvc/wicket/trunk/wicket-core/src/main/java/org/apache/wicket/Application.java?rev=1133514&r1=1133513&r2=1133514&view=diff
==============================================================================
--- wicket/trunk/wicket-core/src/main/java/org/apache/wicket/Application.java
(original)
+++ wicket/trunk/wicket-core/src/main/java/org/apache/wicket/Application.java
Wed Jun 8 19:15:29 2011
@@ -1085,7 +1085,7 @@ public abstract class Application implem
checkSettingsAvailable();
if (frameworkSettings == null)
{
- frameworkSettings = new FrameworkSettings();
+ frameworkSettings = new FrameworkSettings(this);
}
return frameworkSettings;
}
Modified:
wicket/trunk/wicket-core/src/main/java/org/apache/wicket/DefaultPageManagerProvider.java
URL:
http://svn.apache.org/viewvc/wicket/trunk/wicket-core/src/main/java/org/apache/wicket/DefaultPageManagerProvider.java?rev=1133514&r1=1133513&r2=1133514&view=diff
==============================================================================
---
wicket/trunk/wicket-core/src/main/java/org/apache/wicket/DefaultPageManagerProvider.java
(original)
+++
wicket/trunk/wicket-core/src/main/java/org/apache/wicket/DefaultPageManagerProvider.java
Wed Jun 8 19:15:29 2011
@@ -25,6 +25,7 @@ import org.apache.wicket.pageStore.Defau
import org.apache.wicket.pageStore.DiskDataStore;
import org.apache.wicket.pageStore.IDataStore;
import org.apache.wicket.pageStore.IPageStore;
+import org.apache.wicket.serialize.ISerializer;
import org.apache.wicket.settings.IStoreSettings;
import org.apache.wicket.util.lang.Bytes;
@@ -57,7 +58,8 @@ public class DefaultPageManagerProvider
protected IPageStore newPageStore(IDataStore dataStore)
{
int inmemoryCacheSize =
getStoreSettings().getInmemoryCacheSize();
- return new DefaultPageStore(application.getName(), dataStore,
inmemoryCacheSize);
+ ISerializer pageSerializer =
application.getFrameworkSettings().getSerializer();
+ return new DefaultPageStore(pageSerializer, dataStore,
inmemoryCacheSize);
}
protected IDataStore newDataStore()
Modified:
wicket/trunk/wicket-core/src/main/java/org/apache/wicket/pageStore/DefaultPageStore.java
URL:
http://svn.apache.org/viewvc/wicket/trunk/wicket-core/src/main/java/org/apache/wicket/pageStore/DefaultPageStore.java?rev=1133514&r1=1133513&r2=1133514&view=diff
==============================================================================
---
wicket/trunk/wicket-core/src/main/java/org/apache/wicket/pageStore/DefaultPageStore.java
(original)
+++
wicket/trunk/wicket-core/src/main/java/org/apache/wicket/pageStore/DefaultPageStore.java
Wed Jun 8 19:15:29 2011
@@ -23,9 +23,9 @@ import java.util.Iterator;
import java.util.List;
import org.apache.wicket.page.IManageablePage;
+import org.apache.wicket.serialize.ISerializer;
import org.apache.wicket.util.lang.Args;
import org.apache.wicket.util.lang.Objects;
-import org.apache.wicket.util.lang.WicketObjects;
/**
* The {@link IPageStore} that converts {@link IManageablePage} instances to
{@link SerializedPage}s
@@ -35,29 +35,33 @@ import org.apache.wicket.util.lang.Wicke
*/
public class DefaultPageStore implements IPageStore
{
- private final String applicationName;
-
private final SerializedPagesCache serializedPagesCache;
private final IDataStore pageDataStore;
/**
+ * The {@link ISerializer} that will be used to convert pages from/to
byte arrays
+ */
+ private final ISerializer pageSerializer;
+
+ /**
* Construct.
*
- * @param applicationName
+ * @param pageSerializer
+ * the {@link ISerializer} that will be used to convert
pages from/to byte arrays
* @param dataStore
* the {@link IDataStore} that actually stores the pages
* @param cacheSize
* the number of pages to cache in memory before passing
them to
* {@link IDataStore#storeData(String, int, byte[])}
*/
- public DefaultPageStore(final String applicationName, final IDataStore
dataStore,
+ public DefaultPageStore(final ISerializer pageSerializer, final
IDataStore dataStore,
final int cacheSize)
{
- Args.notNull(applicationName, "applicationName");
+ Args.notNull(pageSerializer, "pageSerializer");
Args.notNull(dataStore, "DataStore");
- this.applicationName = applicationName;
+ this.pageSerializer = pageSerializer;
pageDataStore = dataStore;
serializedPagesCache = new SerializedPagesCache(cacheSize);
}
@@ -111,14 +115,6 @@ public class DefaultPageStore implements
pageDataStore.storeData(sessionId, pageId, data);
}
- /**
- * @return application name
- */
- public String getApplicationName()
- {
- return applicationName;
- }
-
public IManageablePage getPage(final String sessionId, final int id)
{
SerializedPage fromCache =
serializedPagesCache.getPage(sessionId, id);
@@ -357,7 +353,7 @@ public class DefaultPageStore implements
Args.notNull(sessionId, "sessionId");
Args.notNull(page, "page");
- byte data[] = WicketObjects.objectToByteArray(page,
applicationName);
+ byte[] data = pageSerializer.serialize(page);
return new SerializedPage(sessionId, page.getPageId(), data);
}
@@ -366,9 +362,10 @@ public class DefaultPageStore implements
* @param data
* @return page data deserialized
*/
- protected IManageablePage deserializePage(final byte data[])
+ protected IManageablePage deserializePage(final byte[] data)
{
- return (IManageablePage)WicketObjects.byteArrayToObject(data);
+ IManageablePage page =
(IManageablePage)pageSerializer.deserialize(data);
+ return page;
}
/**
Added:
wicket/trunk/wicket-core/src/main/java/org/apache/wicket/serialize/java/JavaSerializer.java
URL:
http://svn.apache.org/viewvc/wicket/trunk/wicket-core/src/main/java/org/apache/wicket/serialize/java/JavaSerializer.java?rev=1133514&view=auto
==============================================================================
---
wicket/trunk/wicket-core/src/main/java/org/apache/wicket/serialize/java/JavaSerializer.java
(added)
+++
wicket/trunk/wicket-core/src/main/java/org/apache/wicket/serialize/java/JavaSerializer.java
Wed Jun 8 19:15:29 2011
@@ -0,0 +1,57 @@
+/*
+ * 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.serialize.java;
+
+import org.apache.wicket.application.IClassResolver;
+import org.apache.wicket.serialize.ISerializer;
+import org.apache.wicket.util.io.IObjectStreamFactory;
+import org.apache.wicket.util.lang.WicketObjects;
+
+/**
+ * An implementation of {@link ISerializer} based on Java Serialization
(ObjectOutputStream,
+ * ObjectInputStream)
+ *
+ * @see IObjectStreamFactory
+ */
+public class JavaSerializer implements ISerializer
+{
+ /**
+ * The key of the application which can be used later to find the
proper {@link IClassResolver}
+ */
+ private final String applicationKey;
+
+ /**
+ * Construct.
+ *
+ * @param applicationKey
+ */
+ public JavaSerializer(final String applicationKey)
+ {
+ this.applicationKey = applicationKey;
+ }
+
+ public byte[] serialize(final Object page)
+ {
+ return WicketObjects.objectToByteArray(page, applicationKey);
+ }
+
+ public Object deserialize(final byte[] data)
+ {
+ return WicketObjects.byteArrayToObject(data);
+ }
+
+}
Modified:
wicket/trunk/wicket-core/src/main/java/org/apache/wicket/settings/IFrameworkSettings.java
URL:
http://svn.apache.org/viewvc/wicket/trunk/wicket-core/src/main/java/org/apache/wicket/settings/IFrameworkSettings.java?rev=1133514&r1=1133513&r2=1133514&view=diff
==============================================================================
---
wicket/trunk/wicket-core/src/main/java/org/apache/wicket/settings/IFrameworkSettings.java
(original)
+++
wicket/trunk/wicket-core/src/main/java/org/apache/wicket/settings/IFrameworkSettings.java
Wed Jun 8 19:15:29 2011
@@ -18,6 +18,7 @@ package org.apache.wicket.settings;
import org.apache.wicket.IDetachListener;
import org.apache.wicket.IEventDispatcher;
+import org.apache.wicket.serialize.ISerializer;
/**
* Framework settings for retrieving and configuring framework settings.
@@ -61,4 +62,17 @@ public interface IFrameworkSettings exte
*/
public void add(IEventDispatcher dispatcher);
+
+ /**
+ * Sets the {@link ISerializer} that will be used to convert objects
to/from byte arrays
+ *
+ * @param serializer
+ * the {@link ISerializer} to use
+ */
+ void setSerializer(ISerializer serializer);
+
+ /**
+ * @return the {@link ISerializer} that will be used to convert objects
to/from byte arrays
+ */
+ ISerializer getSerializer();
}
Modified:
wicket/trunk/wicket-core/src/main/java/org/apache/wicket/settings/def/FrameworkSettings.java
URL:
http://svn.apache.org/viewvc/wicket/trunk/wicket-core/src/main/java/org/apache/wicket/settings/def/FrameworkSettings.java?rev=1133514&r1=1133513&r2=1133514&view=diff
==============================================================================
---
wicket/trunk/wicket-core/src/main/java/org/apache/wicket/settings/def/FrameworkSettings.java
(original)
+++
wicket/trunk/wicket-core/src/main/java/org/apache/wicket/settings/def/FrameworkSettings.java
Wed Jun 8 19:15:29 2011
@@ -19,12 +19,15 @@ package org.apache.wicket.settings.def;
import java.util.ArrayList;
import java.util.List;
+import org.apache.wicket.Application;
import org.apache.wicket.Component;
import org.apache.wicket.IComponentAwareEventSink;
import org.apache.wicket.IDetachListener;
import org.apache.wicket.IEventDispatcher;
import org.apache.wicket.event.IEvent;
import org.apache.wicket.event.IEventSink;
+import org.apache.wicket.serialize.ISerializer;
+import org.apache.wicket.serialize.java.JavaSerializer;
import org.apache.wicket.settings.IFrameworkSettings;
import org.apache.wicket.util.lang.Args;
import org.apache.wicket.util.string.Strings;
@@ -42,9 +45,25 @@ import org.apache.wicket.util.string.Str
public class FrameworkSettings implements IFrameworkSettings
{
private IDetachListener detachListener;
+
private List<IEventDispatcher> eventDispatchers = null;
/**
+ * The {@link ISerializer} that will be used to convert the pages
to/from byte arrays
+ */
+ private ISerializer pageSerializer;
+
+ /**
+ * Construct.
+ *
+ * @param application
+ */
+ public FrameworkSettings(final Application application)
+ {
+ pageSerializer = new
JavaSerializer(application.getApplicationKey());
+ }
+
+ /**
* @see org.apache.wicket.settings.IFrameworkSettings#getVersion()
*/
public String getVersion()
@@ -118,4 +137,15 @@ public class FrameworkSettings implement
dispatcher.dispatchEvent(sink, event, component);
}
}
+
+
+ public void setSerializer(ISerializer pageSerializer)
+ {
+ this.pageSerializer = Args.notNull(pageSerializer,
"pageSerializer");
+ }
+
+ public ISerializer getSerializer()
+ {
+ return pageSerializer;
+ }
}
Modified:
wicket/trunk/wicket-core/src/main/java/org/apache/wicket/settings/def/StoreSettings.java
URL:
http://svn.apache.org/viewvc/wicket/trunk/wicket-core/src/main/java/org/apache/wicket/settings/def/StoreSettings.java?rev=1133514&r1=1133513&r2=1133514&view=diff
==============================================================================
---
wicket/trunk/wicket-core/src/main/java/org/apache/wicket/settings/def/StoreSettings.java
(original)
+++
wicket/trunk/wicket-core/src/main/java/org/apache/wicket/settings/def/StoreSettings.java
Wed Jun 8 19:15:29 2011
@@ -50,7 +50,7 @@ public class StoreSettings implements IS
*
* @param application
*/
- public StoreSettings(Application application)
+ public StoreSettings(final Application application)
{
}
Modified:
wicket/trunk/wicket-core/src/test/java/org/apache/wicket/ApplicationSettingsTest.java
URL:
http://svn.apache.org/viewvc/wicket/trunk/wicket-core/src/test/java/org/apache/wicket/ApplicationSettingsTest.java?rev=1133514&r1=1133513&r2=1133514&view=diff
==============================================================================
---
wicket/trunk/wicket-core/src/test/java/org/apache/wicket/ApplicationSettingsTest.java
(original)
+++
wicket/trunk/wicket-core/src/test/java/org/apache/wicket/ApplicationSettingsTest.java
Wed Jun 8 19:15:29 2011
@@ -60,7 +60,7 @@ public class ApplicationSettingsTest
@Test
public void testFrameworkVersion()
{
- IFrameworkSettings settings = new FrameworkSettings();
+ IFrameworkSettings settings = new FrameworkSettings(new
MockApplication());
assertEquals("n/a", settings.getVersion());
}
Modified:
wicket/trunk/wicket-core/src/test/java/org/apache/wicket/page/PersistentPageManagerTest.java
URL:
http://svn.apache.org/viewvc/wicket/trunk/wicket-core/src/test/java/org/apache/wicket/page/PersistentPageManagerTest.java?rev=1133514&r1=1133513&r2=1133514&view=diff
==============================================================================
---
wicket/trunk/wicket-core/src/test/java/org/apache/wicket/page/PersistentPageManagerTest.java
(original)
+++
wicket/trunk/wicket-core/src/test/java/org/apache/wicket/page/PersistentPageManagerTest.java
Wed Jun 8 19:15:29 2011
@@ -30,6 +30,7 @@ import org.apache.wicket.pageStore.Defau
import org.apache.wicket.pageStore.IDataStore;
import org.apache.wicket.pageStore.IPageStore;
import org.apache.wicket.pageStore.memory.DummyPageManagerContext;
+import org.apache.wicket.serialize.java.JavaSerializer;
import org.apache.wicket.util.lang.WicketObjects;
import org.apache.wicket.versioning.InMemoryPageStore;
import org.junit.Test;
@@ -102,7 +103,7 @@ public class PersistentPageManagerTest
private PersistentPageManager newPersistentPageManager(String appName)
{
IDataStore dataStore = new InMemoryPageStore();
- IPageStore pageStore = new DefaultPageStore(appName, dataStore,
4);
+ IPageStore pageStore = new DefaultPageStore(new
JavaSerializer(appName), dataStore, 4);
IPageManagerContext pageManagerContext = new
DummyPageManagerContext();
return new PersistentPageManager(appName, pageStore,
pageManagerContext);
}
Modified:
wicket/trunk/wicket-core/src/test/java/org/apache/wicket/request/handler/PageIdPoliticTest.java
URL:
http://svn.apache.org/viewvc/wicket/trunk/wicket-core/src/test/java/org/apache/wicket/request/handler/PageIdPoliticTest.java?rev=1133514&r1=1133513&r2=1133514&view=diff
==============================================================================
---
wicket/trunk/wicket-core/src/test/java/org/apache/wicket/request/handler/PageIdPoliticTest.java
(original)
+++
wicket/trunk/wicket-core/src/test/java/org/apache/wicket/request/handler/PageIdPoliticTest.java
Wed Jun 8 19:15:29 2011
@@ -34,6 +34,7 @@ import org.apache.wicket.page.Persistent
import org.apache.wicket.pageStore.DefaultPageStore;
import org.apache.wicket.pageStore.IPageStore;
import org.apache.wicket.request.Url;
+import org.apache.wicket.serialize.java.JavaSerializer;
import org.apache.wicket.util.resource.IResourceStream;
import org.apache.wicket.util.resource.StringResourceStream;
import org.apache.wicket.util.tester.WicketTester;
@@ -89,8 +90,8 @@ public class PageIdPoliticTest extends T
{
public IPageManager
get(IPageManagerContext pageManagerContext)
{
- IPageStore pageStore = new
DefaultPageStore(application.getName(),
- dataStore, 4);
+ IPageStore pageStore = new
DefaultPageStore(new JavaSerializer(
+
application.getApplicationKey()), dataStore, 4);
return new
PersistentPageManager(application.getName(), pageStore,
pageManagerContext);
}
Modified:
wicket/trunk/wicket-core/src/test/java/org/apache/wicket/versioning/PageVersioningTest.java
URL:
http://svn.apache.org/viewvc/wicket/trunk/wicket-core/src/test/java/org/apache/wicket/versioning/PageVersioningTest.java?rev=1133514&r1=1133513&r2=1133514&view=diff
==============================================================================
---
wicket/trunk/wicket-core/src/test/java/org/apache/wicket/versioning/PageVersioningTest.java
(original)
+++
wicket/trunk/wicket-core/src/test/java/org/apache/wicket/versioning/PageVersioningTest.java
Wed Jun 8 19:15:29 2011
@@ -28,6 +28,7 @@ import org.apache.wicket.pageStore.Async
import org.apache.wicket.pageStore.DefaultPageStore;
import org.apache.wicket.pageStore.IDataStore;
import org.apache.wicket.protocol.http.WebApplication;
+import org.apache.wicket.serialize.java.JavaSerializer;
import org.apache.wicket.util.tester.WicketTester;
import org.junit.After;
import org.junit.Before;
@@ -65,8 +66,8 @@ public class PageVersioningTest
final IDataStore dataStore =
new InMemoryPageStore();
final AsynchronousDataStore
asyncDS = new AsynchronousDataStore(dataStore);
- final DefaultPageStore
pageStore = new DefaultPageStore(
- application.getName(),
asyncDS, 40);
+ final DefaultPageStore
pageStore = new DefaultPageStore(new JavaSerializer(
+
application.getApplicationKey()), asyncDS, 40);
return new
PersistentPageManager(application.getName(), pageStore,
pageManagerContext);
}
Added:
wicket/trunk/wicket-util/src/main/java/org/apache/wicket/serialize/ISerializer.java
URL:
http://svn.apache.org/viewvc/wicket/trunk/wicket-util/src/main/java/org/apache/wicket/serialize/ISerializer.java?rev=1133514&view=auto
==============================================================================
---
wicket/trunk/wicket-util/src/main/java/org/apache/wicket/serialize/ISerializer.java
(added)
+++
wicket/trunk/wicket-util/src/main/java/org/apache/wicket/serialize/ISerializer.java
Wed Jun 8 19:15:29 2011
@@ -0,0 +1,42 @@
+/*
+ * 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.serialize;
+
+/**
+ * A serializer that can be used to convert an object to byte array and back
+ */
+public interface ISerializer
+{
+
+ /**
+ * Converts the object to byte array
+ *
+ * @param object
+ * the object to serialize
+ * @return the serialized page as byte array
+ */
+ byte[] serialize(Object object);
+
+ /**
+ * Reconstructs the object from its serialized state
+ *
+ * @param data
+ * the serialized state of the object
+ * @return the object reconstructed from its serialized state
+ */
+ Object deserialize(byte[] data);
+}