package org.jboss.seam.wicket.international; import static org.jboss.seam.annotations.Install.FRAMEWORK; import java.util.List; import org.jboss.seam.Component; import org.jboss.seam.ScopeType; import org.jboss.seam.annotations.Install; import org.jboss.seam.annotations.Name; import org.jboss.seam.annotations.Scope; import org.jboss.seam.annotations.intercept.BypassInterceptors; import org.jboss.seam.international.StatusMessage; import org.jboss.seam.international.StatusMessages; @Scope(ScopeType.CONVERSATION) @Name(StatusMessages.COMPONENT_NAME) @Install(precedence=FRAMEWORK, classDependencies="org.apache.wicket.Application") @BypassInterceptors public class WicketStatusMessages extends StatusMessages { public void onBeforeRender() { doRunTasks(); } public List<StatusMessage> getKeyedMessages(String id) { return instance().getKeyedMessages().get(id); } public List<StatusMessage> getGlobalMessages() { return instance().getMessages(); } public static WicketStatusMessages instance() { Component component = Component.forName(StatusMessages.COMPONENT_NAME); if(component != null && !component.getScope().isContextActive()) { throw new IllegalStateException("No active "+component.getScope().name()+" context"); } //Attempting to get the instance anyway for backwards compatibility with some potential hack situations. return (WicketStatusMessages) Component.getInstance(StatusMessages.COMPONENT_NAME); } }