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/21 06:47:10 UTC
svn commit: rev 46957 - in incubator/beehive/trunk/netui: src/compiler/org/apache/beehive/netui/compiler src/compiler/org/apache/beehive/netui/compiler/apt src/compiler/org/apache/beehive/netui/compiler/grammar test/webapps/drt/coreWeb test/webapps/drt/coreWeb/WEB-INF/src/global test/webapps/drt/coreWeb/resources/jsp test/webapps/drt/testRecorder/config
Author: rich
Date: Mon Sep 20 21:47:07 2004
New Revision: 46957
Added:
incubator/beehive/trunk/netui/src/compiler/org/apache/beehive/netui/compiler/FacesBackingInfo.java (contents, props changed)
incubator/beehive/trunk/netui/src/compiler/org/apache/beehive/netui/compiler/SourceFileInfo.java (contents, props changed)
incubator/beehive/trunk/netui/test/webapps/drt/coreWeb/resources/jsp/qaPageSnap.jspf (contents, props changed)
incubator/beehive/trunk/netui/test/webapps/drt/coreWeb/resources/jsp/qaTraceResults.jsp (contents, props changed)
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/FacesBackingChecker.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/FlowControllerInfo.java
incubator/beehive/trunk/netui/src/compiler/org/apache/beehive/netui/compiler/JpfLanguageConstants.java
incubator/beehive/trunk/netui/src/compiler/org/apache/beehive/netui/compiler/apt/PageFlowAnnotationProcessor.java
incubator/beehive/trunk/netui/src/compiler/org/apache/beehive/netui/compiler/apt/PageFlowAnnotationProcessorFactory.java
incubator/beehive/trunk/netui/src/compiler/org/apache/beehive/netui/compiler/grammar/ForwardToExternalPathType.java
incubator/beehive/trunk/netui/src/compiler/org/apache/beehive/netui/compiler/grammar/WebappPathType.java
incubator/beehive/trunk/netui/test/webapps/drt/coreWeb/SharedFlow.jpfs
incubator/beehive/trunk/netui/test/webapps/drt/coreWeb/WEB-INF/src/global/merge-jpf-struts-config.xml
incubator/beehive/trunk/netui/test/webapps/drt/testRecorder/config/testRecorder-config.xml
Log:
- Fixed to avoid warnings for @Jpf.Forwards that contain encoded paths to files with spaces in their names.
- Fixed to avoid warnings for @Jpf.Forwards that contain .jpf paths with "../" in them.
- Added a FacesBackingInfo result object when processing .jsfb ("JSF backing") files. This currently contains the source file, the backing class name, and a list of annotated command handlers.
- Changed the warning about message resources that's printed when forwarding from a @Jpf.ExceptionHandler/@Jpf.Catch to an external page. This is now only shown when the page flow has at least one @Jpf.MessageResource annotation.
- Fixed the StrutsMergeTest2 BVT.
- Fixed to get rid of extraneous warnings from the page flow compiler during DRT app build.
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 Mon Sep 20 21:47:07 2004
@@ -690,7 +690,8 @@
{
int extensionPos = fileRelativePath.lastIndexOf( JAVA_FILE_EXTENSION_DOT );
assert extensionPos != -1 : "expected a .java file: " + fileRelativePath;
- webappRootPath += '/';
+ webappRootPath += File.separatorChar;
+ String base = webappRootPath + fileRelativePath;
// See if we can find the file by chopping out the temp-dir.
File retVal = new File( webappRootPath + fileRelativePath );
@@ -699,26 +700,40 @@
{
// See if we need to replace ".java" with ".jpf" or ".jpfs".
fileRelativePath = fileRelativePath.substring( 0, extensionPos );
- retVal = new File( webappRootPath + fileRelativePath + JPF_FILE_EXTENSION_DOT );
- if ( ! retVal.exists() ) retVal = new File( webappRootPath + fileRelativePath + SHARED_FLOW_FILE_EXTENSION_DOT );
- if ( ! retVal.exists() ) retVal = new File( webappRootPath + fileRelativePath + FACES_BACKING_FILE_EXTENSION_DOT );
+ retVal = getSourceFile( webappRootPath + fileRelativePath );
- // See if the .java file lives in WEB-INF/src.
- if ( ! retVal.exists() )
+ //
+ // See if the file lives in WEB-INF/src.
+ //
+ if ( retVal == null )
{
StringBuilder retValPath = new StringBuilder( webappRootPath );
retValPath.append( WEBINF_DIR_NAME ).append( File.separatorChar );
retValPath.append( "src" ).append( File.separatorChar );
- retValPath.append( fileRelativePath ).append( JAVA_FILE_EXTENSION_DOT );
- retVal = new File( retValPath.toString() );
+ retValPath.append( fileRelativePath );
+ retVal = getSourceFile( retValPath.toString() );
}
-
- if ( ! retVal.exists() ) retVal = null;
}
- if ( retVal.exists() ) retVal = retVal.getAbsoluteFile();
- return retVal;
+ return retVal.exists() ? retVal.getAbsoluteFile() : null;
+ }
+
+ /**
+ * Tries to find the file with '.jpf', '.jpfs', '.jsfb', '.java' extensions.
+ */
+ private static File getSourceFile( String base )
+ {
+ File file = new File( base + JAVA_FILE_EXTENSION_DOT );
+ if ( file.exists() ) return file;
+ file = new File( base + JPF_FILE_EXTENSION_DOT );
+ if ( file.exists() ) return file;
+ file = new File( base + SHARED_FLOW_FILE_EXTENSION_DOT );
+ if ( file.exists() ) return file;
+ file = new File( base + FACES_BACKING_FILE_EXTENSION_DOT );
+ if ( file.exists() ) return file;
+ return null;
}
+
public static boolean annotationsAreEqual( AnnotationMirror a1, AnnotationMirror a2 )
{
Modified: incubator/beehive/trunk/netui/src/compiler/org/apache/beehive/netui/compiler/FacesBackingChecker.java
==============================================================================
--- incubator/beehive/trunk/netui/src/compiler/org/apache/beehive/netui/compiler/FacesBackingChecker.java (original)
+++ incubator/beehive/trunk/netui/src/compiler/org/apache/beehive/netui/compiler/FacesBackingChecker.java Mon Sep 20 21:47:07 2004
@@ -23,6 +23,7 @@
import java.util.Map;
import java.util.Collection;
+import java.util.HashMap;
import org.apache.beehive.netui.compiler.grammar.CommandHandlerGrammar;
@@ -33,9 +34,12 @@
public class FacesBackingChecker
extends BaseChecker
{
- public FacesBackingChecker( AnnotationProcessorEnvironment env, Diagnostics diags )
+ private FacesBackingInfo _facesBackingInfo;
+
+ public FacesBackingChecker( AnnotationProcessorEnvironment env, Diagnostics diags, FacesBackingInfo fbInfo )
{
super( env, diags );
+ _facesBackingInfo = fbInfo;
}
public BaseGenerator getGenerator()
@@ -73,9 +77,12 @@
for ( MethodDeclaration method : methods )
{
+ _facesBackingInfo.addCommandHandler( method.getSimpleName() );
chg.check( CompilerUtils.getAnnotation( method, COMMAND_HANDLER_TAG_NAME ), null, method );
}
- return null;
+ Map checkResultMap = new HashMap();
+ checkResultMap.put( JpfLanguageConstants.ExtraInfoKeys.facesBackingInfo, _facesBackingInfo );
+ return checkResultMap;
}
}
Added: incubator/beehive/trunk/netui/src/compiler/org/apache/beehive/netui/compiler/FacesBackingInfo.java
==============================================================================
--- (empty file)
+++ incubator/beehive/trunk/netui/src/compiler/org/apache/beehive/netui/compiler/FacesBackingInfo.java Mon Sep 20 21:47:07 2004
@@ -0,0 +1,43 @@
+/*
+ * Copyright 2004 The Apache Software Foundation.
+ *
+ * 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.
+ *
+ * $Header:$
+ */
+package org.apache.beehive.netui.compiler;
+
+import java.util.List;
+import java.util.ArrayList;
+import java.io.File;
+
+public class FacesBackingInfo
+ extends SourceFileInfo
+{
+ private List< String > _commandHandlers = new ArrayList< String >();
+
+ public FacesBackingInfo( File sourceFile, String className )
+ {
+ super( sourceFile, className );
+ }
+
+ public List< String > getCommandHandlers()
+ {
+ return _commandHandlers;
+ }
+
+ void addCommandHandler( String commandHandlerName )
+ {
+ _commandHandlers.add( commandHandlerName );
+ }
+}
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 Mon Sep 20 21:47:07 2004
@@ -191,6 +191,8 @@
{
File parentDir = strutsConfigFile.getParentFile();
+ getFlowControllerInfo().addReferencedFile( strutsConfigFile );
+
if ( ! parentDir.isDirectory() )
{
//
Modified: incubator/beehive/trunk/netui/src/compiler/org/apache/beehive/netui/compiler/FlowControllerInfo.java
==============================================================================
--- incubator/beehive/trunk/netui/src/compiler/org/apache/beehive/netui/compiler/FlowControllerInfo.java (original)
+++ incubator/beehive/trunk/netui/src/compiler/org/apache/beehive/netui/compiler/FlowControllerInfo.java Mon Sep 20 21:47:07 2004
@@ -28,14 +28,12 @@
import java.util.HashMap;
import java.io.File;
-import static org.apache.beehive.netui.compiler.JpfLanguageConstants.GLOBALAPP_FULL_CLASSNAME;
-import static org.apache.beehive.netui.compiler.JpfLanguageConstants.WEBINF_SRC_DIR;
-import static org.apache.beehive.netui.compiler.JpfLanguageConstants.GLOBALAPP_PACKAGE;
-import static org.apache.beehive.netui.compiler.JpfLanguageConstants.GLOBALAPP_CLASSNAME;
-import static org.apache.beehive.netui.compiler.JpfLanguageConstants.GLOBALAPP_FILE_EXTENSION_DOT;
public class FlowControllerInfo
+ extends SourceFileInfo
{
+ private static final ActionInfo[] EMPTY_ACTION_INFO_ARRAY = new ActionInfo[0];
+
private Set< ActionInfo > _actions = new HashSet< ActionInfo >();
private boolean _nested = false;
private Set _returnActions = null;
@@ -44,9 +42,7 @@
private List< String > _sharedFlowTypeNameHierarchy;
private List< File > _sharedFlowFileHierarchy;
private List< File > _referencedFiles = new ArrayList< File >();
- private File _sourceFile;
private boolean _isBuilding = false;
- private String _controllerClassName = null;
private Map< String, String > _messageResourcesByKey = new HashMap< String, String >();
@@ -105,8 +101,7 @@
public FlowControllerInfo( File sourceFile, String controllerClassName )
{
- _sourceFile = sourceFile;
- _controllerClassName = controllerClassName;
+ super( sourceFile, controllerClassName );
}
void reset()
@@ -141,7 +136,7 @@
{
if ( _returnActions == null )
{
- return new ActionInfo[0];
+ return EMPTY_ACTION_INFO_ARRAY;
}
return ( ActionInfo[] ) _returnActions.toArray( new ActionInfo[ _returnActions.size() ] );
@@ -205,7 +200,7 @@
public void addReferencedFile( File file )
{
- if ( ! file.equals( _sourceFile ) )
+ if ( ! file.equals( getSourceFile() ) )
{
_referencedFiles.add( file );
}
@@ -254,16 +249,6 @@
_webappRoot = webappRoot;
}
- File getSourceFile()
- {
- return _sourceFile;
- }
-
- public String getControllerClassName()
- {
- return _controllerClassName;
- }
-
public Map< String, String > getMessageResourcesByKey()
{
return _messageResourcesByKey;
@@ -272,5 +257,10 @@
public void addMessageResource( String key, String name )
{
_messageResourcesByKey.put( key, name );
+ }
+
+ public String getControllerClassName()
+ {
+ return getClassName();
}
}
Modified: incubator/beehive/trunk/netui/src/compiler/org/apache/beehive/netui/compiler/JpfLanguageConstants.java
==============================================================================
--- incubator/beehive/trunk/netui/src/compiler/org/apache/beehive/netui/compiler/JpfLanguageConstants.java (original)
+++ incubator/beehive/trunk/netui/src/compiler/org/apache/beehive/netui/compiler/JpfLanguageConstants.java Mon Sep 20 21:47:07 2004
@@ -200,6 +200,7 @@
public enum ExtraInfoKeys
{
flowControllerInfo,
+ facesBackingInfo,
overlappingPageFlowFiles
}
Added: incubator/beehive/trunk/netui/src/compiler/org/apache/beehive/netui/compiler/SourceFileInfo.java
==============================================================================
--- (empty file)
+++ incubator/beehive/trunk/netui/src/compiler/org/apache/beehive/netui/compiler/SourceFileInfo.java Mon Sep 20 21:47:07 2004
@@ -0,0 +1,44 @@
+/*
+ * Copyright 2004 The Apache Software Foundation.
+ *
+ * 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.
+ *
+ * $Header:$
+ */
+package org.apache.beehive.netui.compiler;
+
+import java.io.File;
+
+public class SourceFileInfo
+{
+ private File _sourceFile;
+ private String _className = null;
+
+
+ public SourceFileInfo( File sourceFile, String className )
+ {
+ _sourceFile = sourceFile;
+ _className = className;
+ }
+
+ public File getSourceFile()
+ {
+ return _sourceFile;
+ }
+
+ public String getClassName()
+ {
+ return _className;
+ }
+
+}
Modified: incubator/beehive/trunk/netui/src/compiler/org/apache/beehive/netui/compiler/apt/PageFlowAnnotationProcessor.java
==============================================================================
--- incubator/beehive/trunk/netui/src/compiler/org/apache/beehive/netui/compiler/apt/PageFlowAnnotationProcessor.java (original)
+++ incubator/beehive/trunk/netui/src/compiler/org/apache/beehive/netui/compiler/apt/PageFlowAnnotationProcessor.java Mon Sep 20 21:47:07 2004
@@ -28,6 +28,7 @@
import org.apache.beehive.netui.compiler.PageFlowChecker;
import org.apache.beehive.netui.compiler.SharedFlowChecker;
import org.apache.beehive.netui.compiler.FacesBackingChecker;
+import org.apache.beehive.netui.compiler.FacesBackingInfo;
import static org.apache.beehive.netui.compiler.JpfLanguageConstants.JPF_BASE_CLASS;
import static org.apache.beehive.netui.compiler.JpfLanguageConstants.SHARED_FLOW_BASE_CLASS;
import static org.apache.beehive.netui.compiler.JpfLanguageConstants.GLOBALAPP_BASE_CLASS;
@@ -38,6 +39,8 @@
import static org.apache.beehive.netui.compiler.JpfLanguageConstants.FACES_BACKING_TAG_NAME;
import static org.apache.beehive.netui.compiler.JpfLanguageConstants.ANNOTATIONS_CLASSNAME;
+import java.io.File;
+
public class PageFlowAnnotationProcessor
extends BaseAnnotationProcessor
@@ -49,15 +52,18 @@
protected BaseChecker getChecker( ClassDeclaration classDecl, Diagnostics diagnostics )
{
- FlowControllerInfo fcInfo =
- new FlowControllerInfo( CompilerUtils.getOriginalFile( classDecl ), classDecl.getQualifiedName() );
+ File originalFile = CompilerUtils.getOriginalFile( classDecl );
+ String className = classDecl.getQualifiedName();
if ( CompilerUtils.getAnnotation( classDecl, FACES_BACKING_TAG_NAME ) != null )
{
- return new FacesBackingChecker( getEnv(), diagnostics );
+ FacesBackingInfo fbInfo = new FacesBackingInfo( originalFile, className );
+ return new FacesBackingChecker( getEnv(), diagnostics, fbInfo );
}
else if ( CompilerUtils.isAssignableFrom( JPF_BASE_CLASS, classDecl, getEnv() ) )
{
+ FlowControllerInfo fcInfo = new FlowControllerInfo( originalFile, className );
+
if ( expectControllerAnnotation( classDecl, JPF_FILE_EXTENSION_DOT, JPF_BASE_CLASS, diagnostics ) )
{
return new PageFlowChecker( getEnv(), diagnostics, fcInfo );
@@ -65,6 +71,8 @@
}
else if ( CompilerUtils.isAssignableFrom( SHARED_FLOW_BASE_CLASS, classDecl, getEnv() ) )
{
+ FlowControllerInfo fcInfo = new FlowControllerInfo( originalFile, className );
+
if ( expectControllerAnnotation( classDecl, SHARED_FLOW_FILE_EXTENSION_DOT, SHARED_FLOW_BASE_CLASS,
diagnostics ) )
{
@@ -73,6 +81,8 @@
}
else if ( CompilerUtils.isAssignableFrom( GLOBALAPP_BASE_CLASS, classDecl, getEnv() ) )
{
+ FlowControllerInfo fcInfo = new FlowControllerInfo( originalFile, className );
+
if ( expectControllerAnnotation( classDecl, GLOBALAPP_FILE_EXTENSION_DOT, GLOBALAPP_BASE_CLASS,
diagnostics ) )
{
Modified: incubator/beehive/trunk/netui/src/compiler/org/apache/beehive/netui/compiler/apt/PageFlowAnnotationProcessorFactory.java
==============================================================================
--- incubator/beehive/trunk/netui/src/compiler/org/apache/beehive/netui/compiler/apt/PageFlowAnnotationProcessorFactory.java (original)
+++ incubator/beehive/trunk/netui/src/compiler/org/apache/beehive/netui/compiler/apt/PageFlowAnnotationProcessorFactory.java Mon Sep 20 21:47:07 2004
@@ -33,14 +33,14 @@
public class PageFlowAnnotationProcessorFactory
implements AnnotationProcessorFactory
{
- public Collection<String> supportedAnnotationTypes()
+ public Collection< String > supportedAnnotationTypes()
{
return Collections.unmodifiableCollection( Arrays.asList( new String[]{ "*" } ) );
}
public Collection< String > supportedOptions()
{
- return new ArrayList< String >();
+ return Collections.emptyList();
}
public AnnotationProcessor getProcessorFor( Set< AnnotationTypeDeclaration > annotationTypeDeclarations,
Modified: incubator/beehive/trunk/netui/src/compiler/org/apache/beehive/netui/compiler/grammar/ForwardToExternalPathType.java
==============================================================================
--- incubator/beehive/trunk/netui/src/compiler/org/apache/beehive/netui/compiler/grammar/ForwardToExternalPathType.java (original)
+++ incubator/beehive/trunk/netui/src/compiler/org/apache/beehive/netui/compiler/grammar/ForwardToExternalPathType.java Mon Sep 20 21:47:07 2004
@@ -22,9 +22,13 @@
import com.sun.mirror.declaration.AnnotationValue;
import com.sun.mirror.declaration.AnnotationMirror;
import com.sun.mirror.declaration.MemberDeclaration;
+import com.sun.mirror.declaration.TypeDeclaration;
import org.apache.beehive.netui.compiler.AnnotationGrammar;
import org.apache.beehive.netui.compiler.FlowControllerInfo;
import org.apache.beehive.netui.compiler.AnnotationMemberType;
+import org.apache.beehive.netui.compiler.CompilerUtils;
+
+import java.util.List;
public class ForwardToExternalPathType
extends DelegatingType
@@ -40,9 +44,20 @@
{
String stringValue = ( String ) value.getValue();
+ //
+ // If we're forwarding to an external page, print a warning about error messages on the destination page not
+ // having access to messages defined in the current page flow... *unless* the current page flow has no message
+ // resources defined.
+ //
if ( stringValue.indexOf( '/' ) != -1 )
{
- addWarning( value, "warning.exception-handler-forward-to-external-page", stringValue );
+ TypeDeclaration fcClass = CompilerUtils.getOutermostClass( classMember );
+ List< String > messageResources =
+ CompilerUtils.getStringArrayValue( fcClass, CONTROLLER_TAG_NAME, MESSAGE_RESOURCES_ATTR, true );
+ if ( messageResources != null && messageResources.size() > 0 )
+ {
+ addWarning( value, "warning.exception-handler-forward-to-external-page", stringValue );
+ }
}
return super.onCheck( valueDecl, value, parentAnnotation, classMember );
Modified: incubator/beehive/trunk/netui/src/compiler/org/apache/beehive/netui/compiler/grammar/WebappPathType.java
==============================================================================
--- incubator/beehive/trunk/netui/src/compiler/org/apache/beehive/netui/compiler/grammar/WebappPathType.java (original)
+++ incubator/beehive/trunk/netui/src/compiler/org/apache/beehive/netui/compiler/grammar/WebappPathType.java Mon Sep 20 21:47:07 2004
@@ -30,6 +30,7 @@
import com.sun.mirror.declaration.TypeDeclaration;
import java.net.URISyntaxException;
+import java.net.URI;
import java.io.File;
/**
@@ -62,14 +63,15 @@
public Object onCheck( AnnotationTypeElementDeclaration valueDecl, AnnotationValue value,
AnnotationMirror parentAnnotation, MemberDeclaration classMember )
{
- String stringValue = ( String ) value.getValue();
+ String filePath = ( String ) value.getValue();
//
// First make sure it's a valid URI.
//
try
{
- new java.net.URI( stringValue );
+ URI uri = new URI( filePath );
+ filePath = uri.getPath(); // decodes the path
}
catch ( URISyntaxException e )
{
@@ -84,7 +86,7 @@
boolean isCheckableExtension = false;
for ( int i = 0; i < CHECKABLE_EXTENSIONS.length; ++i )
{
- if ( stringValue.endsWith( CHECKABLE_EXTENSIONS[i] ) )
+ if ( filePath.endsWith( CHECKABLE_EXTENSIONS[i] ) )
{
isCheckableExtension = true;
break;
@@ -101,16 +103,16 @@
File jpfFile = CompilerUtils.getOriginalFile( CompilerUtils.getOuterClass( classMember ) );
File fileToCheck = null;
- if ( stringValue.startsWith( "/" ) ) // relative to webapp root
+ if ( filePath.startsWith( "/" ) ) // relative to webapp root
{
if ( _pathMustBeRelative )
{
addError( value, "error.relative-uri" );
}
- if ( stringValue.endsWith( JPF_FILE_EXTENSION_DOT ) )
+ if ( filePath.endsWith( JPF_FILE_EXTENSION_DOT ) )
{
- TypeDeclaration type = CompilerUtils.inferTypeFromPath( stringValue, getEnv() );
+ TypeDeclaration type = CompilerUtils.inferTypeFromPath( filePath, getEnv() );
fileToCheck = type != null ? CompilerUtils.getOriginalFile( type ) : null;
if ( fileToCheck == null ) fileExists = false;
}
@@ -120,7 +122,7 @@
{
// @TODO cache the stringValue of getWebappRootFromJpf. It's expensive to calculate.
File webappRoot = StrutsApp.getWebappRootFromJpf( jpfFile );
- fileToCheck = new File( webappRoot + stringValue );
+ fileToCheck = new File( webappRoot + filePath );
if ( ! fileToCheck.exists() && ! ( ignoreDirectories() && fileToCheck.isDirectory() ) )
{
@@ -137,12 +139,18 @@
//
// In certain error conditions, we can't determine the file. In this case, just ignore.
//
- else if ( jpfFile != null && stringValue.indexOf( '/' ) != 0 ) // under this pageflow's directory
+ else if ( jpfFile != null && filePath.indexOf( '/' ) != 0 ) // under this pageflow's directory
{
- if ( stringValue.endsWith( JPF_FILE_EXTENSION_DOT ) )
+ if ( filePath.endsWith( JPF_FILE_EXTENSION_DOT ) )
{
- String className = stringValue.substring( 0, stringValue.length() - JPF_FILE_EXTENSION_DOT.length() );
+ String className = filePath.substring( 0, filePath.length() - JPF_FILE_EXTENSION_DOT.length() );
String pkg = CompilerUtils.getOutermostClass( classMember ).getPackage().getQualifiedName();
+ while ( className.startsWith( "../" ) && className.length() > 3 )
+ {
+ className = className.substring( 3 );
+ int lastDot = pkg.lastIndexOf( '.' );
+ pkg = lastDot != -1 ? pkg.substring( 0, lastDot ) : "";
+ }
className = ( pkg.length() > 0 ? pkg + '.' : "" ) + className.replace( '/', '.' );
TypeDeclaration type = getEnv().getTypeDeclaration( className );
fileToCheck = type != null ? CompilerUtils.getOriginalFile( type ) : null;
@@ -158,7 +166,7 @@
// in the web-addressable part of the webapp, unless we're looking for a .jpf (in the
// case that there's a forward to the current page flow from within the page flow).
//
- if ( ! mustBeInPageFlowDir() && ! stringValue.endsWith( JPF_FILE_EXTENSION ) )
+ if ( ! mustBeInPageFlowDir() && ! filePath.endsWith( JPF_FILE_EXTENSION ) )
{
int webinfSrcPos = jpfFilePath.replace( '\\', '/' ).indexOf( WEBINF_SRC_DIR );
if ( webinfSrcPos != -1 )
@@ -169,7 +177,7 @@
}
}
- fileToCheck = new File( parentFile, stringValue );
+ fileToCheck = new File( parentFile, filePath );
if ( ! fileToCheck.exists() && ! ( ignoreDirectories() && fileToCheck.isDirectory() ) )
{
@@ -186,11 +194,11 @@
{
if ( doFatalError() )
{
- addError( value, "error.file-not-found", stringValue );
+ addError( value, "error.file-not-found", filePath );
}
else
{
- addWarning( value, "warning.file-not-found", stringValue );
+ addWarning( value, "warning.file-not-found", filePath );
}
}
Modified: incubator/beehive/trunk/netui/test/webapps/drt/coreWeb/SharedFlow.jpfs
==============================================================================
--- incubator/beehive/trunk/netui/test/webapps/drt/coreWeb/SharedFlow.jpfs (original)
+++ incubator/beehive/trunk/netui/test/webapps/drt/coreWeb/SharedFlow.jpfs Mon Sep 20 21:47:07 2004
@@ -16,7 +16,7 @@
import pageFlowCore.returnToTest.returnToTestController.InputForm;
-@Jpf.Controller
+@Jpf.Controller( strutsMerge="/WEB-INF/src/global/merge-jpf-struts-config.xml" )
public class SharedFlow extends SharedFlowController
{
private String _pageGroupState = "";
@@ -498,7 +498,7 @@
forwards = {
@Jpf.Forward(
name = "success",
- path = "/singletonJpf/jpfTest10/jpf1/jpf1.jpf")
+ path = "/singletonJpf/jpfTest10/jpf1/Jpf1.jpf")
})
public Forward gblJpfTest10()
{
Modified: incubator/beehive/trunk/netui/test/webapps/drt/coreWeb/WEB-INF/src/global/merge-jpf-struts-config.xml
==============================================================================
--- incubator/beehive/trunk/netui/test/webapps/drt/coreWeb/WEB-INF/src/global/merge-jpf-struts-config.xml (original)
+++ incubator/beehive/trunk/netui/test/webapps/drt/coreWeb/WEB-INF/src/global/merge-jpf-struts-config.xml Mon Sep 20 21:47:07 2004
@@ -16,12 +16,9 @@
<!-- ========== Action Mapping Definitions ============================== -->
<action-mappings>
<action
- path="/unKnown"
- parameter="Action (/unKnown) from global.app merge-jpf-struts-config.xml file." >
- </action>
+ path="/unKnown"/>
<action
- path="/unHandledAction"
- parameter="Action (/unHandledAction) from global.app merge-jpf-struts-config.xml file." >
+ path="/unHandledAction">
<forward
contextRelative="true"
path="/strutsMerge/test2/action1.do"
Added: incubator/beehive/trunk/netui/test/webapps/drt/coreWeb/resources/jsp/qaPageSnap.jspf
==============================================================================
--- (empty file)
+++ incubator/beehive/trunk/netui/test/webapps/drt/coreWeb/resources/jsp/qaPageSnap.jspf Mon Sep 20 21:47:07 2004
@@ -0,0 +1,20 @@
+ <!-- QA test harness ---------------------------------------------- -->
+ <script>
+ function snapPage()
+ {
+ var blah = document.getElementById(getNetuiTagName("txtBox"));
+ blah.value = "";
+ blah.value = document.documentElement.outerHTML;
+ return true;
+ }
+ </script>
+
+ <br/><br/>
+ <netui:form tagId="qaForm" action="logPage">
+ <center>
+ <netui:hidden tagId="txtBox" dataSource="{actionForm.pageText}" />
+ <netui:button type="submit" value="QA - LogPage" onClick="return snapPage()"/>
+ </center>
+ </netui:form>
+ <br/><br/>
+ <!-- end QA test harness ------------------------------------------- -->
Added: incubator/beehive/trunk/netui/test/webapps/drt/coreWeb/resources/jsp/qaTraceResults.jsp
==============================================================================
--- (empty file)
+++ incubator/beehive/trunk/netui/test/webapps/drt/coreWeb/resources/jsp/qaTraceResults.jsp Mon Sep 20 21:47:07 2004
@@ -0,0 +1,26 @@
+<%@ page contentType="text/html;charset=UTF-8" language="java" %>
+<%@ taglib uri="netui-tags-html.tld" prefix="netui" %>
+<%@ taglib uri="netui-tags-databinding.tld" prefix="netui-data" %>
+
+<html>
+ <head>
+ <title>QA Trace results</title>
+ </head>
+ <body>
+ <h3 align="center" style="color: green;">QA Trace results - TraceResults.jsp</h3>
+ <hr width="95%"/>
+ <br/>
+ <ul>
+ <netui-data:repeater dataSource="{session.QaTrace.tracePoints}">
+ <li>
+ <netui:label value="{container.item}" />
+ </li>
+ </netui-data:repeater>
+ </ul>
+ <center>
+ <hr width="95%"/>
+ <br/>
+ <a href="done.jsp">Okay</a>
+ </center>
+ </body>
+</html>
Modified: incubator/beehive/trunk/netui/test/webapps/drt/testRecorder/config/testRecorder-config.xml
==============================================================================
--- incubator/beehive/trunk/netui/test/webapps/drt/testRecorder/config/testRecorder-config.xml (original)
+++ incubator/beehive/trunk/netui/test/webapps/drt/testRecorder/config/testRecorder-config.xml Mon Sep 20 21:47:07 2004
@@ -6,8 +6,9 @@
<suffix>jspx</suffix>
<suffix>do</suffix>
<suffix>jpf</suffix>
+ <suffix>faces</suffix>
<suffix></suffix>
</suffixList>
<servletURI>testRecorder</servletURI>
<baseDirectory>@BASE_DIR@</baseDirectory>
-</config>
\ No newline at end of file
+</config>