}
@Override
public void onUpdate(NodeContext<N> source, NodeState state) throws NavigationServiceException
{
Navigation sourceNav = session.findObjectById(ObjectType.NAVIGATION, source.data.id);
//
toEvict.add(sourceNav.getObjectId());
Workspace workspace = sourceNav.getSite().getWorkspace();
String reference = state.getPageRef();
if (reference != null)
{
String[] pageChunks = split("::", reference);
ObjectType<? extends Site> siteType = Mapper.parseSiteType(pageChunks[0]);
Site site = workspace.getSite(siteType, pageChunks[1]);
org.gatein.mop.api.workspace.Page target = site.getRootPage().getChild("pages").getChild(pageChunks[2]);
PageLink link = sourceNav.linkTo(ObjectType.PAGE_LINK);
link.setPage(target);
}
else
{
PageLink link = sourceNav.linkTo(ObjectType.PAGE_LINK);
link.setPage(null);
}
//
Described described = sourceNav.adapt(Described.class);
described.setName(state.getLabel());
//
Visible visible = sourceNav.adapt(Visible.class);
visible.setVisibility(state.getVisibility());
//
visible.setStartPublicationDate(state.getStartPublicationDate());
visible.setEndPublicationDate(state.getEndPublicationDate());
//
Attributes attrs = sourceNav.getAttributes();
attrs.setValue(MappedAttributes.ICON, state.getIcon());
//
source.data = new NodeData(sourceNav);
source.state = null;