package org.exoplatform.portal.mop.page;
import java.io.Serializable;
import org.exoplatform.portal.mop.SiteKey;
import org.exoplatform.portal.mop.Utils;
import org.gatein.mop.api.workspace.Page;
import org.gatein.mop.api.workspace.Site;
/**
* An immutable page data class.
*
* @author <a href="mailto:julien.viet@exoplatform.com">Julien Viet</a>
*/
class PageData implements Serializable {
/** Useful. */
static final PageData EMPTY = new PageData();
/** . */
final PageKey key;
/** . */
final String id;
/** . */
final PageState state;
private PageData() {
this.key = null;
this.id = null;
this.state = null;
}
PageData(Page page) {
Site site = page.getSite();
//
this.key = new SiteKey(Utils.siteType(site.getObjectType()), site.getName()).page(page.getName());
this.id = page.getObjectId();
this.state = new PageState(page);
}
protected Object readResolve() {
if (key == null && state == null && id == null) {
return EMPTY;
} else {
return this;
}
}
}