Author: mrdon Date: Tue Nov 14 09:29:33 2006 New Revision: 474882 URL: http://svn.apache.org/viewvc?view=rev&rev=474882 Log: Improving check for action impls and action class names by combining into one test (much faster), added unit test WW-1491
Added: struts/struts2/trunk/core/src/test/java/org/apache/struts2/config/cltest/ActionImpl.java Modified: struts/struts2/trunk/core/src/main/java/org/apache/struts2/config/ClasspathConfigurationProvider.java struts/struts2/trunk/core/src/test/java/org/apache/struts2/config/ClasspathConfigurationProviderTest.java Modified: struts/struts2/trunk/core/src/main/java/org/apache/struts2/config/ClasspathConfigurationProvider.java URL: http://svn.apache.org/viewvc/struts/struts2/trunk/core/src/main/java/org/apache/struts2/config/ClasspathConfigurationProvider.java?view=diff&rev=474882&r1=474881&r2=474882 ============================================================================== --- struts/struts2/trunk/core/src/main/java/org/apache/struts2/config/ClasspathConfigurationProvider.java (original) +++ struts/struts2/trunk/core/src/main/java/org/apache/struts2/config/ClasspathConfigurationProvider.java Tue Nov 14 09:29:33 2006 @@ -32,8 +32,8 @@ import org.apache.commons.logging.Log; import org.apache.commons.logging.LogFactory; import org.apache.struts2.StrutsConstants; -import org.apache.struts2.Action; +import com.opensymphony.xwork2.Action; import com.opensymphony.xwork2.ObjectFactory; import com.opensymphony.xwork2.config.Configuration; import com.opensymphony.xwork2.config.ConfigurationException; @@ -46,6 +46,7 @@ import com.opensymphony.xwork2.util.ClassLoaderUtil; import com.opensymphony.xwork2.util.ResolverUtil; import com.opensymphony.xwork2.util.TextUtils; +import com.opensymphony.xwork2.util.ResolverUtil.Test; /** * Loads the configuration by scanning the classpath looking for classes that end in @@ -128,9 +129,15 @@ protected void loadPackages(String[] pkgs) { ResolverUtil<Class> resolver = new ResolverUtil<Class>(); - resolver.findImplementations(Action.class,pkgs); - // TODO: resolver.findAnnotated( ,pkgs); - resolver.findSuffix(ACTION, pkgs); + resolver.find(new Test() { + // Match Action implementations and classes ending with "Action" + public boolean matches(Class type) { + // TODO: should also find annotated classes + return (Action.class.isAssignableFrom(type) || + type.getSimpleName().endsWith("Action")); + } + + }, pkgs); Set actionClasses = resolver.getClasses(); for (Object obj : actionClasses) { Class cls = (Class) obj; @@ -183,8 +190,8 @@ } } - boolean trimSuffix = (actionName.lastIndexOf(ACTION) > 0); - if (trimSuffix) { + // Cut off the Action suffix if found + if (actionName.endsWith(ACTION)) { actionName = actionName.substring(0, actionName.length() - ACTION.length()); } Modified: struts/struts2/trunk/core/src/test/java/org/apache/struts2/config/ClasspathConfigurationProviderTest.java URL: http://svn.apache.org/viewvc/struts/struts2/trunk/core/src/test/java/org/apache/struts2/config/ClasspathConfigurationProviderTest.java?view=diff&rev=474882&r1=474881&r2=474882 ============================================================================== --- struts/struts2/trunk/core/src/test/java/org/apache/struts2/config/ClasspathConfigurationProviderTest.java (original) +++ struts/struts2/trunk/core/src/test/java/org/apache/struts2/config/ClasspathConfigurationProviderTest.java Tue Nov 14 09:29:33 2006 @@ -88,6 +88,13 @@ assertNotNull(acfg); assertEquals(3, acfg.getResults().size()); } + + public void testActionImplementation() { + PackageConfig pkg = config.getPackageConfig("org.apache.struts2.config.cltest"); + assertEquals("/cltest", pkg.getNamespace()); + ActionConfig acfg = pkg.getActionConfigs().get("actionImpl"); + assertNotNull(acfg); + } public void testDynamicResults() { PackageConfig pkg = config.getPackageConfig("org.apache.struts2.config.cltest"); Added: struts/struts2/trunk/core/src/test/java/org/apache/struts2/config/cltest/ActionImpl.java URL: http://svn.apache.org/viewvc/struts/struts2/trunk/core/src/test/java/org/apache/struts2/config/cltest/ActionImpl.java?view=auto&rev=474882 ============================================================================== --- struts/struts2/trunk/core/src/test/java/org/apache/struts2/config/cltest/ActionImpl.java (added) +++ struts/struts2/trunk/core/src/test/java/org/apache/struts2/config/cltest/ActionImpl.java Tue Nov 14 09:29:33 2006 @@ -0,0 +1,31 @@ +/* + * $Id: $ + * + * Licensed to the Apache Software Foundation (ASF) under one + * or more contributor license agreements. See the NOTICE file + * distributed with this work for additional information + * regarding copyright ownership. 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. + */ +package org.apache.struts2.config.cltest; + +import com.opensymphony.xwork2.Action; + +public class ActionImpl implements Action { + + public String execute() throws Exception { + return null; + } + +}