[prev in list] [next in list] [prev in thread] [next in thread] 

List:       tapestry-dev
Subject:    svn commit: r1195702 -
From:       hlship () apache ! org
Date:       2011-10-31 22:15:48
Message-ID: 20111031221548.C0C982388AA9 () eris ! apache ! org
[Download RAW message or body]

Author: hlship
Date: Mon Oct 31 22:15:48 2011
New Revision: 1195702

URL: http://svn.apache.org/viewvc?rev=1195702&view=rev
Log:
TAP5-1737: Loading all pages using PageCatalog page fails with \
java.lang.ClassFormatError: Illegal field modifiers in class \
org/apache/tapestry5/corelib/pages/package-info: 0x12

Modified:
    tapestry/tapestry5/branches/5.3/tapestry-ioc/src/main/java/org/apache/tapestry5/ioc/internal/services/ClassNameLocatorImpl.java


Modified: tapestry/tapestry5/branches/5.3/tapestry-ioc/src/main/java/org/apache/tapestry5/ioc/internal/services/ClassNameLocatorImpl.java
                
URL: http://svn.apache.org/viewvc/tapestry/tapestry5/branches/5.3/tapestry-ioc/src/mai \
n/java/org/apache/tapestry5/ioc/internal/services/ClassNameLocatorImpl.java?rev=1195702&r1=1195701&r2=1195702&view=diff
 ==============================================================================
--- tapestry/tapestry5/branches/5.3/tapestry-ioc/src/main/java/org/apache/tapestry5/ioc/internal/services/ClassNameLocatorImpl.java \
                (original)
+++ tapestry/tapestry5/branches/5.3/tapestry-ioc/src/main/java/org/apache/tapestry5/ioc/internal/services/ClassNameLocatorImpl.java \
Mon Oct 31 22:15:48 2011 @@ -33,6 +33,7 @@ import java.util.regex.Pattern;
 public class ClassNameLocatorImpl implements ClassNameLocator
 {
     private static final String CLASS_SUFFIX = ".class";
+    public static final String PACKAGE_INFO = "package-info.class";
 
     private final ClassLoader contextClassLoader = \
Thread.currentThread().getContextClassLoader();  
@@ -247,15 +248,22 @@ public class ClassNameLocatorImpl implem
 
             if (!name.startsWith(packagePath)) continue;
 
-            if (!name.endsWith(CLASS_SUFFIX)) continue;
 
-            if (name.contains("$")) continue;
+            int lastSlashx = name.lastIndexOf('/');
 
-            // Strip off .class and convert the slashes back to periods.
+            String fileName = name.substring(lastSlashx + 1);
 
-            String className = name.substring(0, name.length() - \
CLASS_SUFFIX.length()).replace("/", "."); +            if (isClassName(fileName))
+            {
+
+                // Strip off .class and convert the slashes back to periods.
+                String className =
+                        name.substring(0, lastSlashx + 1).replace('/', '.') +
+                                fileName.substring(0, fileName.length() - \
CLASS_SUFFIX.length());  
-            componentClassNames.add(className);
+
+                componentClassNames.add(className);
+            }
         }
     }
 
@@ -279,7 +287,7 @@ public class ClassNameLocatorImpl implem
                 }
                 // https://issues.apache.org/jira/browse/TAP5-1737
                 // Use of package-info.java leaves these package-info.class files \
                around.
-                else if (fileName.endsWith(CLASS_SUFFIX) && \
!fileName.equals("package-info.class")) +                else if \
(isClassName(fileName))  {
                     String className = packageName + "." + fileName.substring(0,
                             fileName.length() - CLASS_SUFFIX.length());
@@ -289,6 +297,11 @@ public class ClassNameLocatorImpl implem
         }
     }
 
+    private boolean isClassName(String fileName)
+    {
+        return fileName.endsWith(CLASS_SUFFIX) && !fileName.equals(PACKAGE_INFO) && \
!fileName.contains("$"); +    }
+
     /**
      * For URLs to JARs that do not use JarURLConnection - allowed by the servlet \
                spec - attempt to produce a JarFile
      * object all the same. Known servlet engines that function like this include \
Weblogic and OC4J. This is not a full


[prev in list] [next in list] [prev in thread] [next in thread] 

Configure | About | News | Add a list | Sponsored by KoreLogic