org.apache.wicket.pageStore.IPageStore Maven / Gradle / Ivy
Go to download
A module that creates a .jar from the classes in wicket, wicket-util and wicket-request modules in order
to create a valid OSGi bundle of the wicket framework.
/*
* 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.pageStore;
import java.io.Serializable;
import org.apache.wicket.page.IManageablePage;
/**
* {@link IPageStore} role is to mediate the storing and loading of pages done by {@link IDataStore}
* s. {@link IPageStore} may pre-process the pages before passing them to
* {@link IDataStore#storeData(String, int, byte[])} and to post-process them after
* {@link IDataStore#getData(String, int)}.
*
* @see IDataStore
*/
public interface IPageStore
{
/**
* Destroy the store.
*/
void destroy();
/**
* Restores a page from the persistent layer.
*
* @param sessionId
* The session of the page that must be removed
* @param pageId
* The id of the page.
* @return The page
*/
IManageablePage getPage(String sessionId, int pageId);
/**
* Removes a page from the persistent layer.
*
* @param sessionId
* The session of the page that must be removed
* @param pageId
* The id of the page.
*/
void removePage(String sessionId, int pageId);
/**
* Stores the page to a persistent layer. The page should be stored under the id and the version
* number.
*
* @param sessionId
* The session of the page that must be removed
* @param page
* The page to store
*/
void storePage(String sessionId, IManageablePage page);
/**
* The page store should cleanup all the pages for that sessionid.
*
* @param sessionId
* The session of the page that must be removed
*/
void unbind(String sessionId);
/**
* Process the page before the it gets serialized. The page can be either real page instance or
* object returned by {@link #restoreAfterSerialization(Serializable)}.
*
* @param sessionId
* The session of the page that must be removed
* @param page
* @return The Page itself or a SerializedContainer for that page
*/
Serializable prepareForSerialization(String sessionId, Serializable page);
/**
* This method should restore the serialized page to intermediate object that can be converted
* to real page instance using {@link #convertToPage(Object)}.
*
* @param serializable
* @return Page
*/
Object restoreAfterSerialization(Serializable serializable);
/**
* Converts a page representation to an instance of {@link IManageablePage}
*
* @param page
* some kind of page representation
* @return page
*/
IManageablePage convertToPage(Object page);
/**
* @return whether the implementation can be wrapped in {@link AsynchronousPageStore}
*/
boolean canBeAsynchronous();
}