| /* |
| * Licensed to the Apache Software Foundation (ASF) under one or more |
| * contributor license agreements. 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. For additional information regarding |
| * copyright in this work, please see the NOTICE file in the top level |
| * directory of this distribution. |
| */ |
| |
| package org.apache.roller.weblogger.ui.struts2.util; |
| |
| import javax.servlet.http.HttpServletRequest; |
| |
| import org.apache.commons.lang3.StringUtils; |
| import org.apache.commons.logging.Log; |
| import org.apache.commons.logging.LogFactory; |
| import org.apache.roller.weblogger.business.WebloggerFactory; |
| import org.apache.roller.weblogger.pojos.Weblog; |
| import org.apache.roller.weblogger.ui.core.RollerSession; |
| import org.apache.struts2.StrutsStatics; |
| |
| import com.opensymphony.xwork2.ActionContext; |
| import com.opensymphony.xwork2.ActionInvocation; |
| import com.opensymphony.xwork2.interceptor.MethodFilterInterceptor; |
| |
| /** |
| * A struts2 interceptor for configuring specifics of the weblogger ui. |
| */ |
| public class UIActionInterceptor extends MethodFilterInterceptor implements |
| StrutsStatics { |
| |
| private static final long serialVersionUID = -6452966127207525616L; |
| private static Log log = LogFactory.getLog(UIActionInterceptor.class); |
| |
| public String doIntercept(ActionInvocation invocation) throws Exception { |
| |
| if (log.isDebugEnabled()) { |
| log.debug("Entering UIActionInterceptor"); |
| } |
| |
| final Object action = invocation.getAction(); |
| final ActionContext context = invocation.getInvocationContext(); |
| |
| HttpServletRequest request = (HttpServletRequest) context |
| .get(HTTP_REQUEST); |
| |
| // is this one of our own UIAction classes? |
| if (action instanceof UIAction) { |
| |
| if (log.isDebugEnabled()) { |
| log.debug("action is a UIAction, setting relevant attributes"); |
| } |
| |
| UIAction theAction = (UIAction) action; |
| |
| // extract the authenticated user and set it |
| RollerSession rses = RollerSession.getRollerSession(request); |
| if (rses != null) { |
| theAction.setAuthenticatedUser(rses.getAuthenticatedUser()); |
| } |
| |
| // extract the work weblog and set it |
| String weblogHandle = theAction.getWeblog(); |
| if (!StringUtils.isEmpty(weblogHandle)) { |
| Weblog weblog = null; |
| try { |
| weblog = WebloggerFactory.getWeblogger().getWeblogManager() |
| .getWeblogByHandle(weblogHandle); |
| if (weblog != null) { |
| theAction.setActionWeblog(weblog); |
| } |
| } catch (Exception e) { |
| log.error("Error looking up action weblog - " |
| + weblogHandle, e); |
| } |
| } |
| } |
| |
| return invocation.invoke(); |
| } |
| |
| } |