/*
* Copyright 2011 FatWire Corporation. All Rights Reserved.
*
* Licensed 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 com.fatwire.gst.foundation.controller.action;
import javax.servlet.ServletContext;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.NoSuchBeanDefinitionException;
import org.springframework.web.context.WebApplicationContext;
import org.springframework.web.context.support.WebApplicationContextUtils;
import com.fatwire.gst.foundation.controller.action.support.NullActionNameResolver;
import com.fatwire.gst.foundation.controller.support.WebContextUtil;
/**
* @author Dolf Dijkstra
* @since May 27, 2011
*
* @deprecated as of release 12.x, replace GSF Actions with WCS 12c's native Controllers and/or wrappers
*
*/
public final class ActionNameResolverUtils {
protected static final Logger LOG = LoggerFactory.getLogger("tools.gsf.legacy.controller.action.ActionNameResolverUtils");
public static final String ACTION_NAME_RESOLVER_BEAN = "gsfActionNameResolver";
private static final ActionNameResolver nullActionNameResolver = new NullActionNameResolver();
/**
*
*/
private ActionNameResolverUtils() {
}
/**
* Returns the ActionNameResolver as configured by spring framework on the
* WebApplicationContext bean by the name of gsfActionLocator.
*
* @param servletContext the servlet context.
* @return the ActionNameResolver that is configured via the servletContext.
*/
public static ActionNameResolver getActionNameResolver(final ServletContext servletContext) {
return getActionNameResolver(servletContext, ACTION_NAME_RESOLVER_BEAN);
}
private static ActionNameResolver getActionNameResolver(ServletContext servletContext, String actionNameResolverBean) {
return WebContextUtil.getWebAppContext(servletContext)
.getBean(actionNameResolverBean, ActionNameResolver.class);
}
/**
* Returns the ActionNameResolver as configured by spring framework on the
* WebApplicationContext bean by the name 'beanName'.
* @param beanName bean name
* @param servletContext the servlet context.
* @return the ActionNameResolver that is configured via the servletContext.
*/
public static ActionNameResolver getActionNameResolverX(final ServletContext servletContext, String beanName) {
// get the spring web application context
final WebApplicationContext wac = WebApplicationContextUtils.getRequiredWebApplicationContext(servletContext);
// get the bean.
ActionNameResolver resolver;
try {
resolver = (ActionNameResolver) wac.getBean(beanName, ActionNameResolver.class);
if (LOG.isTraceEnabled()) {
LOG.trace("Using ActionNameResolver as configured: " + resolver.getClass().getName());
}
} catch (NoSuchBeanDefinitionException e) {
return nullActionNameResolver;
}
return resolver;
}
}