You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@beehive.apache.org by ri...@apache.org on 2004/09/16 21:06:29 UTC

svn commit: rev 46196 - in incubator/beehive/trunk/netui/src: compiler/org/apache/beehive/netui/compiler compiler/org/apache/beehive/netui/compiler/genmodel compiler/org/apache/beehive/netui/compiler/grammar pageflow/org/apache/beehive/netui/pageflow pageflow/org/apache/beehive/netui/pageflow/config pageflow/org/apache/beehive/netui/pageflow/internal scoping/org/apache/beehive/netui/pageflow/scoping scoping/org/apache/beehive/netui/pageflow/scoping/internal

Author: rich
Date: Thu Sep 16 12:06:26 2004
New Revision: 46196

Modified:
   incubator/beehive/trunk/netui/src/compiler/org/apache/beehive/netui/compiler/CompilerUtils.java
   incubator/beehive/trunk/netui/src/compiler/org/apache/beehive/netui/compiler/FlowControllerChecker.java
   incubator/beehive/trunk/netui/src/compiler/org/apache/beehive/netui/compiler/PageFlowChecker.java
   incubator/beehive/trunk/netui/src/compiler/org/apache/beehive/netui/compiler/genmodel/GenActionModel.java
   incubator/beehive/trunk/netui/src/compiler/org/apache/beehive/netui/compiler/genmodel/GenStrutsApp.java
   incubator/beehive/trunk/netui/src/compiler/org/apache/beehive/netui/compiler/genmodel/GenValidationModel.java
   incubator/beehive/trunk/netui/src/compiler/org/apache/beehive/netui/compiler/grammar/BaseValidationRuleGrammar.java
   incubator/beehive/trunk/netui/src/compiler/org/apache/beehive/netui/compiler/grammar/CatchGrammar.java
   incubator/beehive/trunk/netui/src/compiler/org/apache/beehive/netui/compiler/grammar/ForwardGrammar.java
   incubator/beehive/trunk/netui/src/compiler/org/apache/beehive/netui/compiler/grammar/UniqueValueType.java
   incubator/beehive/trunk/netui/src/pageflow/org/apache/beehive/netui/pageflow/FlowController.java
   incubator/beehive/trunk/netui/src/pageflow/org/apache/beehive/netui/pageflow/config/PageFlowFormBeanConfig.java
   incubator/beehive/trunk/netui/src/pageflow/org/apache/beehive/netui/pageflow/internal/InternalUtils.java
   incubator/beehive/trunk/netui/src/scoping/org/apache/beehive/netui/pageflow/scoping/ScopedServletUtils.java
   incubator/beehive/trunk/netui/src/scoping/org/apache/beehive/netui/pageflow/scoping/internal/ScopedRequestImpl.java
Log:
- Fixed a ClassCastException in PageFlowActionServlet (!) that occurred when a page flow contained a public static inner class.
- Fixed a number of NPEs that occurred due to unresolvable types in user code.
- Fixed to ensure that the 'duplicate page flows' error gets added even if the page flow files contain classes with the same names.

DRT: netui (WinXP)
BB: self (linux)



Modified: incubator/beehive/trunk/netui/src/compiler/org/apache/beehive/netui/compiler/CompilerUtils.java
==============================================================================
--- incubator/beehive/trunk/netui/src/compiler/org/apache/beehive/netui/compiler/CompilerUtils.java	(original)
+++ incubator/beehive/trunk/netui/src/compiler/org/apache/beehive/netui/compiler/CompilerUtils.java	Thu Sep 16 12:06:26 2004
@@ -25,6 +25,7 @@
 import com.sun.mirror.type.DeclaredType;
 import com.sun.mirror.type.InterfaceType;
 import com.sun.mirror.util.SourcePosition;
+import com.sun.mirror.util.DeclarationVisitor;
 
 import java.net.URI;
 import java.net.URISyntaxException;
@@ -33,15 +34,20 @@
 import java.util.Map;
 import java.util.List;
 import java.util.Iterator;
+import java.util.Collections;
 import java.io.File;
+import java.lang.annotation.Annotation;
 
 
 public class CompilerUtils
         implements JpfLanguageConstants
 {
+    private static final ErrorTypeDeclaration ERROR_TYPE_DECLARATION = new ErrorTypeDeclaration();
+    
+    
     public static boolean isJpfAnnotation( AnnotationMirror annotation, String unqualifiedName )
     {
-        String annotationName = annotation.getAnnotationType().getDeclaration().getQualifiedName();
+        String annotationName = getDeclaration( annotation.getAnnotationType() ).getQualifiedName();
         return annotationName.equals( ANNOTATION_QUALIFIER + unqualifiedName );
     }
     
@@ -52,7 +58,7 @@
         
         for ( AnnotationMirror i : annotations )
         {
-            String iName = i.getAnnotationType().getDeclaration().getQualifiedName();
+            String iName = getDeclaration( i.getAnnotationType() ).getQualifiedName();
             if ( unqualifiedName.equals( iName ) ) return i;
         }
         
@@ -105,7 +111,10 @@
         //
         if ( defaultIsNull ) return null;
         
-        for ( AnnotationTypeElementDeclaration j : annotation.getAnnotationType().getDeclaration().getMethods() )
+        AnnotationTypeDeclaration typeDecl = annotation.getAnnotationType().getDeclaration();
+        if ( typeDecl == null ) return null;    // type declaration is null in the case of error type
+        
+        for ( AnnotationTypeElementDeclaration j : typeDecl.getMethods() )
         {
             if ( memberName.equals( j.getSimpleName() ) ) return j.getDefaultValue();
         }
@@ -235,12 +244,12 @@
     
     public static String getQualifiedName( AnnotationMirror annotation )
     {
-        return annotation.getAnnotationType().getDeclaration().getQualifiedName();
+        return getDeclaration( annotation.getAnnotationType() ).getQualifiedName();
     }
     
     public static String getSimpleName( AnnotationMirror annotation )
     {
-        return annotation.getAnnotationType().getDeclaration().getSimpleName();
+        return getDeclaration( annotation.getAnnotationType() ).getSimpleName();
     }
     
     public static AnnotationMirror getAnnotation( AnnotationMirror annotation, String memberName, boolean defaultIsNull )
@@ -289,7 +298,7 @@
         
         if ( superclass != null )
         {
-            return getClassMethod( superclass.getDeclaration(), methodName, desiredAnnotation, true );
+            return getClassMethod( getDeclaration( superclass ), methodName, desiredAnnotation, true );
         }
         
         return null;
@@ -325,7 +334,7 @@
         
         if ( superclass != null )
         {
-            return getClassField( superclass.getDeclaration(), fieldName, desiredAnnotation, true );
+            return getClassField( getDeclaration( superclass ), fieldName, desiredAnnotation, true );
         }
         
         return null;
@@ -362,7 +371,7 @@
         
         if ( superclass != null )
         {
-            getClassMethods( superclass.getDeclaration(), desiredAnnotation, true, results );
+            getClassMethods( getDeclaration( superclass ), desiredAnnotation, true, results );
         }
     }
     
@@ -394,7 +403,7 @@
         
         if ( superclass != null )
         {
-            getClassFields( superclass.getDeclaration(), true, results );
+            getClassFields( getDeclaration( superclass ), true, results );
         }
     }
     
@@ -426,7 +435,7 @@
         
         if ( superclass != null )
         {
-            getClassNestedTypes( superclass.getDeclaration(), true, results );
+            getClassNestedTypes( getDeclaration( superclass ), true, results );
         }
     }
         
@@ -455,7 +464,7 @@
     
     public static String getFormClassName( DeclaredType jclass, AnnotationProcessorEnvironment env )
     {
-        return getFormClassName( jclass.getDeclaration(), env );
+        return getFormClassName( getDeclaration( jclass ), env );
     }
     
     public static boolean isAbsoluteURL( String path )
@@ -473,7 +482,7 @@
     public static boolean isAssignableFrom( String className, TypeMirror type, AnnotationProcessorEnvironment env )
     {
         if ( ! ( type instanceof DeclaredType ) ) return false;
-        return isAssignableFrom( className, ( ( DeclaredType ) type ).getDeclaration(), env );
+        return isAssignableFrom( className, getDeclaration( ( DeclaredType ) type ), env );
     }
     
     public static boolean isAssignableFrom( TypeDeclaration base, TypeDeclaration typeDecl )
@@ -485,13 +494,13 @@
             if ( typeDecl instanceof ClassDeclaration )
             {
                 ClassType superclass = ( ( ClassDeclaration ) typeDecl ).getSuperclass();
-                if ( superclass != null && isAssignableFrom( base, superclass.getDeclaration() ) ) return true;
+                if ( superclass != null && isAssignableFrom( base, getDeclaration( superclass ) ) ) return true;
             }
             
             Collection< InterfaceType > superInterfaces = typeDecl.getSuperinterfaces();
             for ( InterfaceType superInterface : superInterfaces )
             {
-                if ( isAssignableFrom( base, superInterface.getDeclaration() ) ) return true;
+                if ( isAssignableFrom( base, getDeclaration( superInterface ) ) ) return true;
             }
         }
         
@@ -501,13 +510,13 @@
     public static boolean isAssignableFrom( TypeMirror base, TypeDeclaration cl )
     {
         if ( ! ( base instanceof DeclaredType ) ) return false;
-        return isAssignableFrom( ( ( DeclaredType ) base ).getDeclaration(), cl );
+        return isAssignableFrom( getDeclaration( ( DeclaredType ) base ), cl );
     }
     
     public static boolean isAssignableFrom( TypeDeclaration base, TypeMirror cl )
     {
         if ( ! ( cl instanceof DeclaredType ) ) return false;
-        return isAssignableFrom( base, ( ( DeclaredType ) cl ).getDeclaration() );
+        return isAssignableFrom( base, getDeclaration( ( DeclaredType ) cl ) );
     }
     
     public static boolean isAssignableFrom( String className, TypeDeclaration cl, AnnotationProcessorEnvironment env )
@@ -519,7 +528,7 @@
     public static boolean isOfClass( TypeMirror type, String className, AnnotationProcessorEnvironment env )
     {
         if ( ! ( type instanceof DeclaredType ) ) return false;
-        return typesAreEqual( ( ( DeclaredType ) type ).getDeclaration(), env.getTypeDeclaration( className ) );
+        return typesAreEqual( getDeclaration( ( DeclaredType ) type ), env.getTypeDeclaration( className ) );
     }
     
     // TODO: this method will be unnecessary when CRXXXX is fixed.
@@ -618,7 +627,7 @@
     
     public static String getLoadableName( DeclaredType jclass )
     {
-        return getLoadableName( jclass.getDeclaration() );
+        return getLoadableName( getDeclaration( jclass ) );
     }
     
     public static boolean getMethodOrClassFlag( AnnotationMirror methodAnnotation, ClassDeclaration jclass,
@@ -883,5 +892,90 @@
         assert pathFromWebappRoot.startsWith( "/" ) : pathFromWebappRoot;
         String className = removeFileExtension( pathFromWebappRoot.substring( 1 ) );
         return env.getTypeDeclaration( className.replace( '/', '.' ) );
+    }
+    
+    public static TypeDeclaration getDeclaration( DeclaredType type )
+    {
+        TypeDeclaration typeDecl = type.getDeclaration();
+        return typeDecl != null ? typeDecl : ERROR_TYPE_DECLARATION;
+    }
+    
+    private static class ErrorTypeDeclaration
+        implements TypeDeclaration
+    {
+        public PackageDeclaration getPackage()
+        {
+            throw new IllegalStateException( "not implemented " );
+        }
+
+        public String getQualifiedName()
+        {
+            return "<error>";
+        }
+
+        public Collection< TypeParameterDeclaration > getFormalTypeParameters()
+        {
+            return Collections.emptyList();
+        }
+
+        public Collection< InterfaceType > getSuperinterfaces()
+        {
+            return Collections.emptyList();
+        }
+
+        public Collection< FieldDeclaration > getFields()
+        {
+            return Collections.emptyList();
+        }
+
+        public Collection< ? extends MethodDeclaration > getMethods()
+        {
+            return Collections.emptyList();
+        }
+
+        public Collection< TypeDeclaration > getNestedTypes()
+        {
+            return Collections.emptyList();
+        }
+
+        public TypeDeclaration getDeclaringType()
+        {
+            return null;
+        }
+
+        public String getDocComment()
+        {
+            throw new IllegalStateException( "not implemented " );
+        }
+
+        public Collection< AnnotationMirror > getAnnotationMirrors()
+        {
+            return Collections.emptyList();
+        }
+
+        public < A extends Annotation > A getAnnotation( Class< A > aClass )
+        {
+            throw new IllegalStateException( "not implemented " );
+        }
+
+        public Collection< Modifier > getModifiers()
+        {
+            return Collections.emptyList();
+        }
+
+        public String getSimpleName()
+        {
+            return getQualifiedName();
+        }
+
+        public SourcePosition getPosition()
+        {
+            throw new IllegalStateException( "not implemented " );
+        }
+
+        public void accept( DeclarationVisitor declarationVisitor )
+        {
+            throw new IllegalStateException( "not implemented " );
+        }
     }
 }

Modified: incubator/beehive/trunk/netui/src/compiler/org/apache/beehive/netui/compiler/FlowControllerChecker.java
==============================================================================
--- incubator/beehive/trunk/netui/src/compiler/org/apache/beehive/netui/compiler/FlowControllerChecker.java	(original)
+++ incubator/beehive/trunk/netui/src/compiler/org/apache/beehive/netui/compiler/FlowControllerChecker.java	Thu Sep 16 12:06:26 2004
@@ -226,7 +226,9 @@
 
         for ( AnnotationMirror annotation : annotations )
         {
-            if ( annotation.getAnnotationType().getDeclaration().getSimpleName().equals( CONTROLLER_TAG_NAME ) )
+            AnnotationTypeDeclaration annotationTypeDecl = annotation.getAnnotationType().getDeclaration();
+            
+            if ( annotationTypeDecl != null && annotationTypeDecl.getSimpleName().equals( CONTROLLER_TAG_NAME ) )
             {
                 _controllerGrammar.check( annotation, null, jclass );
             }
@@ -258,7 +260,7 @@
         
         for ( AnnotationMirror annotation : annotations )
         {
-            String annotationName = annotation.getAnnotationType().getDeclaration().getSimpleName();
+            String annotationName = CompilerUtils.getDeclaration( annotation.getAnnotationType() ).getSimpleName();
             
             if ( annotationName.equals( ACTION_TAG_NAME ) )
             {
@@ -300,7 +302,7 @@
             }
             else
             {
-                argTypeDecl = ( ( DeclaredType ) argType ).getDeclaration();
+                argTypeDecl = CompilerUtils.getDeclaration( ( DeclaredType ) argType );
                 
                 if ( ! CompilerUtils.hasDefaultConstructor( argTypeDecl )
                         && ! CompilerUtils.isAssignableFrom( BEA_XMLOBJECT_CLASS_NAME, argType, getEnv() )
@@ -353,9 +355,10 @@
             if ( memberForm != null )
             {
                 TypeMirror memberFormType = memberForm.getType();
-                String memberFormTypeName = ( memberFormType instanceof DeclaredType )
-                                            ? ( ( DeclaredType ) memberFormType ).getDeclaration().getQualifiedName()
-                                            : memberFormType.toString();
+                String memberFormTypeName =
+                        memberFormType instanceof DeclaredType
+                        ? CompilerUtils.getDeclaration( ( DeclaredType ) memberFormType ).getQualifiedName()
+                        : memberFormType.toString();
                 
                 if ( nParameters == 0 )
                 {
@@ -386,7 +389,7 @@
             
             for ( AnnotationMirror ann : annotations )
             {
-                String annotationName = ann.getAnnotationType().getDeclaration().getQualifiedName();
+                String annotationName = CompilerUtils.getDeclaration( ann.getAnnotationType() ).getQualifiedName();
                 int pos = annotationName.indexOf( ANNOTATION_QUALIFIER );
                 
                 if ( pos != -1 )

Modified: incubator/beehive/trunk/netui/src/compiler/org/apache/beehive/netui/compiler/PageFlowChecker.java
==============================================================================
--- incubator/beehive/trunk/netui/src/compiler/org/apache/beehive/netui/compiler/PageFlowChecker.java	(original)
+++ incubator/beehive/trunk/netui/src/compiler/org/apache/beehive/netui/compiler/PageFlowChecker.java	Thu Sep 16 12:06:26 2004
@@ -34,6 +34,8 @@
 import java.util.ArrayList;
 import java.util.Collection;
 import java.util.List;
+import java.util.Set;
+import java.util.HashSet;
 import java.io.File;
 import java.io.FilenameFilter;
 import java.io.IOException;
@@ -41,9 +43,9 @@
 
 public class PageFlowChecker
         extends FlowControllerChecker
-        implements JpfLanguageConstants
 {
     private static final FilenameFilter SHARED_FLOW_FILE_FILTER = new SharedFlowFileFilter();
+    private static final FilenameFilter JPF_FILE_FILTER = new JpfFileFilter();
     
     
     public PageFlowChecker( AnnotationProcessorEnvironment env, Diagnostics diagnostics, FlowControllerInfo fcInfo )    
@@ -51,11 +53,11 @@
         super( env, diagnostics, fcInfo );
     }
 
-    private static class PageFlowFileFilter implements FilenameFilter
+    private static class JpfFileFilter implements FilenameFilter
     {
         public boolean accept( File dir, String name )
         {
-            return name.endsWith( JPF_FILE_EXTENSION_DOT ) || name.endsWith( JAVA_FILE_EXTENSION_DOT );
+            return name.endsWith( JPF_FILE_EXTENSION_DOT );
         }
     }
     
@@ -133,21 +135,52 @@
 
     protected void doAdditionalClassChecks( ClassDeclaration jpfClass, File webappRoot )
     {
+        File jpfFile = CompilerUtils.getOriginalFile( jpfClass );
         PackageDeclaration pkg = jpfClass.getPackage();
         Collection< ClassDeclaration > packageClasses = pkg.getClasses();
-        ArrayList< String > overlapping = new ArrayList< String >();
-        ArrayList< File > overlappingFiles = new ArrayList< File >();
+        Set< String > overlapping = new HashSet< String >();
+        List< File > overlappingFiles = new ArrayList< File >();
         
+        //
+        // First go through the other classes in this package to look for other page flows.
+        //
         for ( ClassDeclaration classDecl : packageClasses )
         {
-            if ( ! classDecl.equals( jpfClass ) && CompilerUtils.isPageFlowClass( classDecl, getEnv() ) )
+            if ( CompilerUtils.isPageFlowClass( classDecl, getEnv() ) )
             {
                 File file = CompilerUtils.getOriginalFile( classDecl );
-                overlapping.add( file.getName() );
-                overlappingFiles.add( file );
+                
+                if ( ! jpfFile.equals( file ) )
+                {
+                    overlapping.add( file.getName() );
+                    overlappingFiles.add( file );
+                }
             }
         }
             
+        //
+        // Additionally, we'll go through the parent directory to make sure there are no other .jpf files.  This is
+        // a double-check for the case where duplicate files have the same class names inside them, which means that
+        // iterating through the list of package classes is hit or miss (only one of them will show up, and it may be
+        // this class or the duplicate class.
+        //
+        File parentDir = jpfFile.getParentFile();
+        File[] peers = parentDir.listFiles( JPF_FILE_FILTER );
+        for ( int i = 0; i < peers.length; i++ )
+        {
+            File peer = peers[i];
+            if ( ! peer.equals( jpfFile ) )
+            {
+                String name = peer.getName();
+                
+                if ( ! overlapping.contains( name ) )
+                {
+                    overlapping.add( name );
+                    overlappingFiles.add( peer );
+                }
+            }
+        }
+
         int len = overlapping.size();
         if ( len > 0 )
         {
@@ -167,7 +200,6 @@
         // Check the package name.
         //
         String jpfPackageName = pkg.getQualifiedName();
-        File parentDir = CompilerUtils.getOriginalFile( jpfClass ).getAbsoluteFile().getParentFile();
         if ( parentDir.equals( webappRoot ) )
         {
             if ( jpfPackageName != null && jpfPackageName.length() > 0 )

Modified: incubator/beehive/trunk/netui/src/compiler/org/apache/beehive/netui/compiler/genmodel/GenActionModel.java
==============================================================================
--- incubator/beehive/trunk/netui/src/compiler/org/apache/beehive/netui/compiler/genmodel/GenActionModel.java	(original)
+++ incubator/beehive/trunk/netui/src/compiler/org/apache/beehive/netui/compiler/genmodel/GenActionModel.java	Thu Sep 16 12:06:26 2004
@@ -170,7 +170,7 @@
     protected String addFormBean( TypeMirror paramType, GenStrutsApp parentApp )
     {
         assert paramType instanceof DeclaredType : paramType.getClass().getName();  // checker should enforce this
-        TypeDeclaration decl = ( ( DeclaredType ) paramType ).getDeclaration();
+        TypeDeclaration decl = CompilerUtils.getDeclaration( ( DeclaredType ) paramType );
         String formBeanName = parentApp.addFormBean( decl, this );
         
         //

Modified: incubator/beehive/trunk/netui/src/compiler/org/apache/beehive/netui/compiler/genmodel/GenStrutsApp.java
==============================================================================
--- incubator/beehive/trunk/netui/src/compiler/org/apache/beehive/netui/compiler/genmodel/GenStrutsApp.java	(original)
+++ incubator/beehive/trunk/netui/src/compiler/org/apache/beehive/netui/compiler/genmodel/GenStrutsApp.java	Thu Sep 16 12:06:26 2004
@@ -218,7 +218,7 @@
                 
                 if ( paramType instanceof DeclaredType )
                 {
-                    getMessageResourcesFromForm( ( ( DeclaredType ) paramType ).getDeclaration(), actionModel );
+                    getMessageResourcesFromForm( CompilerUtils.getDeclaration( ( DeclaredType ) paramType ), actionModel );
                 }
             }
         }

Modified: incubator/beehive/trunk/netui/src/compiler/org/apache/beehive/netui/compiler/genmodel/GenValidationModel.java
==============================================================================
--- incubator/beehive/trunk/netui/src/compiler/org/apache/beehive/netui/compiler/genmodel/GenValidationModel.java	(original)
+++ incubator/beehive/trunk/netui/src/compiler/org/apache/beehive/netui/compiler/genmodel/GenValidationModel.java	Thu Sep 16 12:06:26 2004
@@ -226,7 +226,7 @@
                     // Add the rules.  If the bean is derived from ActionForm, associate the rules with the *name* of
                     // the form; otherwise, associate them with the classname of the bean type.
                     //
-                    String formName = getFormBeanName( beanType.getDeclaration() );
+                    String formName = getFormBeanName( CompilerUtils.getDeclaration( beanType ) );
                     addRulesFromAnnotation( validationFieldAnnotation, formName, propName );
                 }
             }

Modified: incubator/beehive/trunk/netui/src/compiler/org/apache/beehive/netui/compiler/grammar/BaseValidationRuleGrammar.java
==============================================================================
--- incubator/beehive/trunk/netui/src/compiler/org/apache/beehive/netui/compiler/grammar/BaseValidationRuleGrammar.java	(original)
+++ incubator/beehive/trunk/netui/src/compiler/org/apache/beehive/netui/compiler/grammar/BaseValidationRuleGrammar.java	Thu Sep 16 12:06:26 2004
@@ -88,7 +88,7 @@
              && CompilerUtils.getString( annotation, MESSAGE_ATTR, true ) == null )
         {
             addWarning( annotation, "warning.using-default-display-name",
-                        parentAnnotations[0].getAnnotationType().getDeclaration().getSimpleName() );
+                        CompilerUtils.getDeclaration( parentAnnotations[0].getAnnotationType() ).getSimpleName() );
         }
         
         return super.onBeginCheck( annotation, parentAnnotations, classMember );

Modified: incubator/beehive/trunk/netui/src/compiler/org/apache/beehive/netui/compiler/grammar/CatchGrammar.java
==============================================================================
--- incubator/beehive/trunk/netui/src/compiler/org/apache/beehive/netui/compiler/grammar/CatchGrammar.java	(original)
+++ incubator/beehive/trunk/netui/src/compiler/org/apache/beehive/netui/compiler/grammar/CatchGrammar.java	Thu Sep 16 12:06:26 2004
@@ -105,10 +105,10 @@
         {
             TypeMirror handledExceptionType = parameters.iterator().next().getType();
             
-            if ( ! CompilerUtils.isAssignableFrom( handledExceptionType, exceptionType.getDeclaration() ) )
+            if ( ! CompilerUtils.isAssignableFrom( handledExceptionType, CompilerUtils.getDeclaration( exceptionType ) ) )
             {
                 addError( annotation, "error.incompatible-exception-handler", handlerMethod.getSimpleName(),
-                          exceptionType.getDeclaration().getQualifiedName() );
+                          CompilerUtils.getDeclaration( exceptionType ).getQualifiedName() );
             }
         }
 

Modified: incubator/beehive/trunk/netui/src/compiler/org/apache/beehive/netui/compiler/grammar/ForwardGrammar.java
==============================================================================
--- incubator/beehive/trunk/netui/src/compiler/org/apache/beehive/netui/compiler/grammar/ForwardGrammar.java	(original)
+++ incubator/beehive/trunk/netui/src/compiler/org/apache/beehive/netui/compiler/grammar/ForwardGrammar.java	Thu Sep 16 12:06:26 2004
@@ -163,7 +163,10 @@
             }
             
             String actionName = ( String ) value.getValue();
-            String formTypeName = formBeanType != null ? formBeanType.getDeclaration().getQualifiedName() : null;
+            String formTypeName =
+                    formBeanType != null
+                    ? CompilerUtils.getDeclaration( formBeanType ).getQualifiedName()
+                    : null;
             getFlowControllerInfo().addReturnAction( actionName, formTypeName );
         }
         

Modified: incubator/beehive/trunk/netui/src/compiler/org/apache/beehive/netui/compiler/grammar/UniqueValueType.java
==============================================================================
--- incubator/beehive/trunk/netui/src/compiler/org/apache/beehive/netui/compiler/grammar/UniqueValueType.java	(original)
+++ incubator/beehive/trunk/netui/src/compiler/org/apache/beehive/netui/compiler/grammar/UniqueValueType.java	Thu Sep 16 12:06:26 2004
@@ -149,7 +149,8 @@
                 if ( valueToCheck != null && ! valueToCheck.equals( member )
                      && valueToCheck.getValue().equals( memberValue ) )
                 {
-                    String annotationName = parentAnnotation.getAnnotationType().getDeclaration().getSimpleName();
+                    String annotationName =
+                            CompilerUtils.getDeclaration( parentAnnotation.getAnnotationType() ).getSimpleName();
                     
                     if ( includeEntityInMsg )
                     {

Modified: incubator/beehive/trunk/netui/src/pageflow/org/apache/beehive/netui/pageflow/FlowController.java
==============================================================================
--- incubator/beehive/trunk/netui/src/pageflow/org/apache/beehive/netui/pageflow/FlowController.java	(original)
+++ incubator/beehive/trunk/netui/src/pageflow/org/apache/beehive/netui/pageflow/FlowController.java	Thu Sep 16 12:06:26 2004
@@ -56,6 +56,8 @@
 import java.util.Locale;
 import java.util.Map;
 
+import static org.apache.beehive.netui.pageflow.internal.InternalConstants.ATTR_PREFIX;
+
 
 /**
  * Base class for user-written flow controllers - PageFlowControllers and Global.app.
@@ -65,8 +67,8 @@
 {
     private static final Logger _log = Logger.getInstance( FlowController.class );
     
-    private static final String ONCREATE_EXCEPTION_FORWARD = FlowController.class.getName() + ":onCreateException";
-    private static final String CACHEID_ACTION_METHODS = FlowController.class.getName() + ":actions";
+    private static final String ONCREATE_EXCEPTION_FORWARD = ATTR_PREFIX + "onCreateException";
+    private static final String CACHEID_ACTION_METHODS = ATTR_PREFIX + "actionMethods";
     private static final int DEFAULT_MAX_CONCURRENT_REQUEST_COUNT = 4;
     private static final String MAX_CONCURRENT_REQUESTS_PARAM = "pageflow-max-concurrent-requests";
     private static final int EXCEEDED_MAX_CONCURRENT_REQUESTS_ERRORCODE = 503;

Modified: incubator/beehive/trunk/netui/src/pageflow/org/apache/beehive/netui/pageflow/config/PageFlowFormBeanConfig.java
==============================================================================
--- incubator/beehive/trunk/netui/src/pageflow/org/apache/beehive/netui/pageflow/config/PageFlowFormBeanConfig.java	(original)
+++ incubator/beehive/trunk/netui/src/pageflow/org/apache/beehive/netui/pageflow/config/PageFlowFormBeanConfig.java	Thu Sep 16 12:06:26 2004
@@ -18,12 +18,13 @@
 package org.apache.beehive.netui.pageflow.config;
 
 import org.apache.struts.config.FormBeanConfig;
+import org.apache.struts.action.ActionFormBean;
 
 
 /**
  * Class to handle our extensions to the Struts <form-bean> tag.
  */
-public class PageFlowFormBeanConfig extends FormBeanConfig
+public class PageFlowFormBeanConfig extends ActionFormBean
 {
     private String _actualType;  // applicable for non-ActionForm-derived form types
 

Modified: incubator/beehive/trunk/netui/src/pageflow/org/apache/beehive/netui/pageflow/internal/InternalUtils.java
==============================================================================
--- incubator/beehive/trunk/netui/src/pageflow/org/apache/beehive/netui/pageflow/internal/InternalUtils.java	(original)
+++ incubator/beehive/trunk/netui/src/pageflow/org/apache/beehive/netui/pageflow/internal/InternalUtils.java	Thu Sep 16 12:06:26 2004
@@ -63,11 +63,11 @@
     private static final String APACHE_XMLOBJECT_CLASSNAME = "org.apache.xmlbeans.XmlObject";
     private static final Class BEA_XMLOBJECT_CLASS = loadClassNonFatal( BEA_XMLOBJECT_CLASSNAME );
     private static final Class APACHE_XMLOBJECT_CLASS = loadClassNonFatal( APACHE_XMLOBJECT_CLASSNAME );
-    private static final String FORWARDED_OUTPUT_FORM_ATTR = PageFlowUtils.class.getName() + "_forwardedForm";    
-    private static final String SINGLETON_PAGEFLOWS_ATTR_PREFIX = PageFlowUtils.class.getName() + "_singleton:";
-    private static final String ACTIONOUTPUT_MAP_ATTR = PageFlowUtils.class.getName() + "_actionOutputs";
-    private static final String BINDING_UPDATE_ERRORS_ATTR = PageFlowUtils.class.getName() + "_bindingUpdateErrors";
-    private static final String SHARED_FLOW_CLASSNAME_ATTR = PageFlowUtils.class.getName() + "_sharedFlowClass";
+    private static final String FORWARDED_OUTPUT_FORM_ATTR = ATTR_PREFIX + "forwardedForm";    
+    private static final String SINGLETON_PAGEFLOWS_ATTR_PREFIX = ATTR_PREFIX + "singletonPageFlow:";
+    private static final String ACTIONOUTPUT_MAP_ATTR = ATTR_PREFIX + "actionOutputs";
+    private static final String BINDING_UPDATE_ERRORS_ATTR = ATTR_PREFIX + "bindingUpdateErrors";
+    private static final String SHARED_FLOW_CLASSNAME_ATTR = ATTR_PREFIX + "sharedFlowClass";
     private static final String CATALINA_HOME_PROP = "catalina.home";
     private static final String SERVER_ADAPTER_PROP = "pageflow.serveradapter";
     private static final String WL_SERVER_ADAPTER_CLASS = "com.bea.wlw.netui.pageflow.internal.WebLogicServerAdapter";

Modified: incubator/beehive/trunk/netui/src/scoping/org/apache/beehive/netui/pageflow/scoping/ScopedServletUtils.java
==============================================================================
--- incubator/beehive/trunk/netui/src/scoping/org/apache/beehive/netui/pageflow/scoping/ScopedServletUtils.java	(original)
+++ incubator/beehive/trunk/netui/src/scoping/org/apache/beehive/netui/pageflow/scoping/ScopedServletUtils.java	Thu Sep 16 12:06:26 2004
@@ -46,10 +46,11 @@
 {
     public static final String SCOPE_ID_PARAM = "jpfScopeID";
     
-    private static final String OVERRIDE_REQUEST_ATTR = ScopedServletUtils.class.getName() + "_overrideRequest";
-    private static final String OVERRIDE_RESPONSE_ATTR = ScopedServletUtils.class.getName() + "_overrideResponse";
-    private static final String ORIGINAL_URI_ATTR = ScopedServletUtils.class.getName() + "_originalURI";
-    private static final String DECODED_URI_ATTR = ScopedServletUtils.class.getName() + "_decodedURI";
+    static final String ATTR_PREFIX = "_netui:";
+    private static final String OVERRIDE_REQUEST_ATTR = ATTR_PREFIX + "overrideRequest";
+    private static final String OVERRIDE_RESPONSE_ATTR = ATTR_PREFIX + "overrideResponse";
+    private static final String ORIGINAL_URI_ATTR = ATTR_PREFIX + "originalURI";
+    private static final String DECODED_URI_ATTR = ATTR_PREFIX + "decodedURI";
     
     private static final Logger logger = Logger.getLogger( ScopedServletUtils.class );
     
@@ -424,4 +425,12 @@
         request.setAttribute( DECODED_URI_ATTR, decodedURI );
         return decodedURI;
     }
+    
+    /*
+    public static void setAttribute( HttpServletRequest request, boolean hideFromScopedRequests,
+                                     boolean excludeFromAutoPersist )
+    {
+        
+    }
+    */
 }

Modified: incubator/beehive/trunk/netui/src/scoping/org/apache/beehive/netui/pageflow/scoping/internal/ScopedRequestImpl.java
==============================================================================
--- incubator/beehive/trunk/netui/src/scoping/org/apache/beehive/netui/pageflow/scoping/internal/ScopedRequestImpl.java	(original)
+++ incubator/beehive/trunk/netui/src/scoping/org/apache/beehive/netui/pageflow/scoping/internal/ScopedRequestImpl.java	Thu Sep 16 12:06:26 2004
@@ -60,8 +60,9 @@
     private HashMap _additionalParameters;
 
 
-    private static final String OUR_SESSION_ATTR_NAME = ScopedRequest.class.getName() + ".scopedSession";
-    private static final String STORED_ATTRS_ATTR_NAME = ScopedRequest.class.getName() + ".storedAttrs";
+    static final String ATTR_PREFIX = "_netui:";
+    private static final String OUR_SESSION_ATTR_NAME = ATTR_PREFIX + "scopedSession";
+    private static final String STORED_ATTRS_ATTR_NAME = ATTR_PREFIX + "storedAttrs";
 
     private static final Logger logger = Logger.getLogger( ScopedRequestImpl.class );