Author: musachy
Date: Sun Apr 12 18:16:43 2009
New Revision: 764310
URL: http://svn.apache.org/viewvc?rev=764310&view=rev
Log:
WW-3083 fix how packages and actions are scanned for annotations
Added:
struts/struts2/trunk/plugins/convention/src/test/java/org/apache/struts2/convention/actions/parentpackage/sub/
struts/struts2/trunk/plugins/convention/src/test/java/org/apache/struts2/convention/actions/parentpackage/sub/ClassLevelParentPackageChildAction.java
struts/struts2/trunk/plugins/convention/src/test/java/org/apache/struts2/convention/actions/parentpackage/sub/PackageLevelParentPackageChildAction.java
Modified:
struts/struts2/trunk/plugins/convention/src/main/java/org/apache/struts2/convention/annotation/AnnotationTools.java
struts/struts2/trunk/plugins/convention/src/test/java/org/apache/struts2/convention/PackageBasedActionConfigBuilderTest.java
Modified:
struts/struts2/trunk/plugins/convention/src/main/java/org/apache/struts2/convention/annotation/AnnotationTools.java
URL:
http://svn.apache.org/viewvc/struts/struts2/trunk/plugins/convention/src/main/java/org/apache/struts2/convention/annotation/AnnotationTools.java?rev=764310&r1=764309&r2=764310&view=diff
==============================================================================
---
struts/struts2/trunk/plugins/convention/src/main/java/org/apache/struts2/convention/annotation/AnnotationTools.java
(original)
+++
struts/struts2/trunk/plugins/convention/src/main/java/org/apache/struts2/convention/annotation/AnnotationTools.java
Sun Apr 12 18:16:43 2009
@@ -40,7 +40,9 @@
public static <T extends Annotation> T findAnnotation(Class<?> klass,
Class<T> annotationClass) {
T ann = klass.getAnnotation(annotationClass);
while (ann == null && klass != null) {
- ann = klass.getPackage().getAnnotation(annotationClass);
+ ann = klass.getAnnotation(annotationClass);
+ if (ann == null)
+ ann = klass.getPackage().getAnnotation(annotationClass);
if (ann == null) {
klass = klass.getSuperclass();
}
Modified:
struts/struts2/trunk/plugins/convention/src/test/java/org/apache/struts2/convention/PackageBasedActionConfigBuilderTest.java
URL:
http://svn.apache.org/viewvc/struts/struts2/trunk/plugins/convention/src/test/java/org/apache/struts2/convention/PackageBasedActionConfigBuilderTest.java?rev=764310&r1=764309&r2=764310&view=diff
==============================================================================
---
struts/struts2/trunk/plugins/convention/src/test/java/org/apache/struts2/convention/PackageBasedActionConfigBuilderTest.java
(original)
+++
struts/struts2/trunk/plugins/convention/src/test/java/org/apache/struts2/convention/PackageBasedActionConfigBuilderTest.java
Sun Apr 12 18:16:43 2009
@@ -56,6 +56,8 @@
import
org.apache.struts2.convention.actions.params.ActionParamsMethodLevelAction;
import
org.apache.struts2.convention.actions.parentpackage.ClassLevelParentPackageAction;
import
org.apache.struts2.convention.actions.parentpackage.PackageLevelParentPackageAction;
+import
org.apache.struts2.convention.actions.parentpackage.sub.ClassLevelParentPackageChildAction;
+import
org.apache.struts2.convention.actions.parentpackage.sub.PackageLevelParentPackageChildAction;
import org.apache.struts2.convention.actions.result.ActionLevelResultAction;
import org.apache.struts2.convention.actions.result.ActionLevelResultsAction;
import org.apache.struts2.convention.actions.result.ClassLevelResultAction;
@@ -148,8 +150,12 @@
"/interceptor", strutsDefault, null);
PackageConfig packageLevelPkg =
makePackageConfig("org.apache.struts2.convention.actions.parentpackage#package-level#/parentpackage",
"/parentpackage", packageLevelParentPkg, null);
+ PackageConfig packageLevelSubPkg =
makePackageConfig("org.apache.struts2.convention.actions.parentpackage.sub#package-level#/parentpackage/sub",
+ "/parentpackage/sub", packageLevelParentPkg, null);
PackageConfig differentPkg =
makePackageConfig("org.apache.struts2.convention.actions.parentpackage#class-level#/parentpackage",
"/parentpackage", classLevelParentPkg, null);
+ PackageConfig differentSubPkg =
makePackageConfig("org.apache.struts2.convention.actions.parentpackage.sub#class-level#/parentpackage/sub",
+ "/parentpackage/sub", classLevelParentPkg, null);
PackageConfig pkgLevelNamespacePkg =
makePackageConfig("org.apache.struts2.convention.actions.namespace#struts-default#/package-level",
"/package-level", strutsDefault, null);
PackageConfig classLevelNamespacePkg =
makePackageConfig("org.apache.struts2.convention.actions.namespace#struts-default#/class-level",
@@ -234,7 +240,9 @@
/* org.apache.struts2.convention.actions.parentpackage */
expect(resultMapBuilder.build(PackageLevelParentPackageAction.class,
null, "package-level-parent-package", packageLevelPkg)).andReturn(results);
+
expect(resultMapBuilder.build(PackageLevelParentPackageChildAction.class, null,
"package-level-parent-package-child", packageLevelSubPkg)).andReturn(results);
expect(resultMapBuilder.build(ClassLevelParentPackageAction.class,
null, "class-level-parent-package", differentPkg)).andReturn(results);
+
expect(resultMapBuilder.build(ClassLevelParentPackageChildAction.class, null,
"class-level-parent-package-child", differentSubPkg)).andReturn(results);
/* org.apache.struts2.convention.actions.result */
expect(resultMapBuilder.build(ClassLevelResultAction.class, null,
"class-level-result", resultPkg)).andReturn(results);
@@ -443,12 +451,26 @@
assertEquals(1, pkgConfig.getActionConfigs().size());
verifyActionConfig(pkgConfig, "class-level-parent-package",
ClassLevelParentPackageAction.class, "execute", pkgConfig.getName());
+ /* org.apache.struts2.convention.actions.parentpackage.sub class level
*/
+ pkgConfig =
configuration.getPackageConfig("org.apache.struts2.convention.actions.parentpackage.sub#class-level#/parentpackage/sub");
+ assertNotNull(pkgConfig);
+ assertEquals(1, pkgConfig.getActionConfigs().size());
+ verifyActionConfig(pkgConfig, "class-level-parent-package-child",
ClassLevelParentPackageChildAction.class, "execute", pkgConfig.getName());
+ assertEquals("class-level", pkgConfig.getParents().get(0).getName());
+
/* org.apache.struts2.convention.actions.parentpackage package level */
pkgConfig =
configuration.getPackageConfig("org.apache.struts2.convention.actions.parentpackage#package-level#/parentpackage");
assertNotNull(pkgConfig);
assertEquals(1, pkgConfig.getActionConfigs().size());
verifyActionConfig(pkgConfig, "package-level-parent-package",
PackageLevelParentPackageAction.class, "execute", pkgConfig.getName());
+ /* org.apache.struts2.convention.actions.parentpackage.sub package
level */
+ pkgConfig =
configuration.getPackageConfig("org.apache.struts2.convention.actions.parentpackage.sub#package-level#/parentpackage/sub");
+ assertNotNull(pkgConfig);
+ assertEquals(1, pkgConfig.getActionConfigs().size());
+ verifyActionConfig(pkgConfig, "package-level-parent-package-child",
PackageLevelParentPackageChildAction.class, "execute", pkgConfig.getName());
+ assertEquals("package-level", pkgConfig.getParents().get(0).getName());
+
/* org.apache.struts2.convention.actions.result */
pkgConfig =
configuration.getPackageConfig("org.apache.struts2.convention.actions.result#struts-default#/result");
assertNotNull(pkgConfig);
Added:
struts/struts2/trunk/plugins/convention/src/test/java/org/apache/struts2/convention/actions/parentpackage/sub/ClassLevelParentPackageChildAction.java
URL:
http://svn.apache.org/viewvc/struts/struts2/trunk/plugins/convention/src/test/java/org/apache/struts2/convention/actions/parentpackage/sub/ClassLevelParentPackageChildAction.java?rev=764310&view=auto
==============================================================================
---
struts/struts2/trunk/plugins/convention/src/test/java/org/apache/struts2/convention/actions/parentpackage/sub/ClassLevelParentPackageChildAction.java
(added)
+++
struts/struts2/trunk/plugins/convention/src/test/java/org/apache/struts2/convention/actions/parentpackage/sub/ClassLevelParentPackageChildAction.java
Sun Apr 12 18:16:43 2009
@@ -0,0 +1,29 @@
+/*
+ * $Id: ClassLevelParentPackageAction.java 655902 2008-05-13 15:15:12Z
bpontarelli $
+ *
+ * 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.convention.actions.parentpackage.sub;
+
+import
org.apache.struts2.convention.actions.parentpackage.ClassLevelParentPackageAction;
+
+/**
+ * Extends an action that hass a @ParentPackage at the class level
+ */
+public class ClassLevelParentPackageChildAction extends
ClassLevelParentPackageAction {
+}
Added:
struts/struts2/trunk/plugins/convention/src/test/java/org/apache/struts2/convention/actions/parentpackage/sub/PackageLevelParentPackageChildAction.java
URL:
http://svn.apache.org/viewvc/struts/struts2/trunk/plugins/convention/src/test/java/org/apache/struts2/convention/actions/parentpackage/sub/PackageLevelParentPackageChildAction.java?rev=764310&view=auto
==============================================================================
---
struts/struts2/trunk/plugins/convention/src/test/java/org/apache/struts2/convention/actions/parentpackage/sub/PackageLevelParentPackageChildAction.java
(added)
+++
struts/struts2/trunk/plugins/convention/src/test/java/org/apache/struts2/convention/actions/parentpackage/sub/PackageLevelParentPackageChildAction.java
Sun Apr 12 18:16:43 2009
@@ -0,0 +1,29 @@
+/*
+ * $Id: ClassLevelParentPackageAction.java 655902 2008-05-13 15:15:12Z
bpontarelli $
+ *
+ * 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.convention.actions.parentpackage.sub;
+
+import
org.apache.struts2.convention.actions.parentpackage.PackageLevelParentPackageAction;
+
+/**
+ * Extends a class the has a @ParentPackage at the package level
+ */
+public class PackageLevelParentPackageChildAction extends
PackageLevelParentPackageAction {
+}