Issue Details (XML | Word | Printable)

Key: APF-946
Type: Improvement Improvement
Status: Resolved Resolved
Resolution: Fixed
Priority: Major Major
Assignee: Matt Raible
Reporter: Matt Raible
Votes: 0
Watchers: 0
Operations

If you were logged in you would be able to see more operations.
AppFuse

Upgrade to Prototype 1.5 and Scriptaculous 1.8

Created: 07/Nov/07 03:25 PM   Updated: 05/May/08 03:38 AM   Resolved: 05/May/08 03:38 AM
Component/s: Web - General
Affects Version/s: 2.0 Final
Fix Version/s: 2.0.2



Matt Raible added a comment - 14/Nov/07 01:14 AM
Upgrade failed - doesn't seem like Canoo WebTest can handle this latest release.

Embedded error: The following error occurred while executing this line:
/Users/mraible/dev/appfuse-2.0/web/struts/src/test/resources/login.xml:1: JavaScript error loading page http://localhost:9876/appfuse-struts-2.0.1-SNAPSHOT/login.jsp: [object Error] (http://localhost:9876/appfuse-struts-2.0.1-SNAPSHOT/scripts/prototype.js#596)

Line #596 is in the catch block of the following:

var Enumerable = {
  each: function(iterator, context) {
    var index = 0;
    iterator = iterator.bind(context);
    try {
      this._each(function(value) {
        iterator(value, index++);
      });
    } catch (e) {
      if (e != $break) throw e;
    }
    return this;
  },

Matt Raible added a comment - 24/Nov/07 10:08 AM
The latest release (R_1641) of WebTest does not solve this issue:

http://webtest-community.canoo.com/jira/browse/WT-354

Matt Raible made changes - 24/Nov/07 10:09 AM
Field Original Value New Value
Fix Version/s 2.0.2 [ 10110 ]
Fix Version/s 2.0.1 [ 10092 ]
Matt Raible added a comment - 05/May/08 02:39 AM
Upgrading to Scriptaculous 1.8.1 and Canoo WebTest R_1702 seems to work. However, upgrading to R_1702 seems to break JSF's FileUpload. Heres' the stack trace:

FileUpload:
[INFO] [talledLocalContainer] ERROR [http-9876-11] _ErrorPageWriter.handleException(350) | An exception occurred
[INFO] [talledLocalContainer] javax.faces.FacesException: Error calling action method of component with id uploadForm:upload
[INFO] [talledLocalContainer] at org.apache.myfaces.application.ActionListenerImpl.processAction(ActionListenerImpl.java:69)
[INFO] [talledLocalContainer] at javax.faces.component.UICommand.broadcast(UICommand.java:121)
[INFO] [talledLocalContainer] at org.ajax4jsf.framework.ajax.AjaxViewRoot.processEvents(AjaxViewRoot.java:274)
[INFO] [talledLocalContainer] at org.ajax4jsf.framework.ajax.AjaxViewRoot.broadcastEvents(AjaxViewRoot.java:250)
[INFO] [talledLocalContainer] at org.ajax4jsf.framework.ajax.AjaxViewRoot.processApplication(AjaxViewRoot.java:405)
[INFO] [talledLocalContainer] at org.apache.myfaces.lifecycle.InvokeApplicationExecutor.execute(InvokeApplicationExecutor.java:32)
[INFO] [talledLocalContainer] at org.apache.myfaces.lifecycle.LifecycleImpl.executePhase(LifecycleImpl.java:103)
[INFO] [talledLocalContainer] at org.apache.myfaces.lifecycle.LifecycleImpl.execute(LifecycleImpl.java:76)
[INFO] [talledLocalContainer] at javax.faces.webapp.FacesServlet.service(FacesServlet.java:148)
[INFO] [talledLocalContainer] at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:290)
[INFO] [talledLocalContainer] at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
[INFO] [talledLocalContainer] at org.ajax4jsf.framework.ajax.xmlfilter.BaseXMLFilter.doXmlFilter(BaseXMLFilter.java:75)
[INFO] [talledLocalContainer] at org.ajax4jsf.framework.ajax.xmlfilter.BaseFilter.doFilter(BaseFilter.java:213)
[INFO] [talledLocalContainer] at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:235)
[INFO] [talledLocalContainer] at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
[INFO] [talledLocalContainer] at org.apache.myfaces.webapp.filter.ExtensionsFilter.doFilter(ExtensionsFilter.java:147)
[INFO] [talledLocalContainer] at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:235)
[INFO] [talledLocalContainer] at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
[INFO] [talledLocalContainer] at org.appfuse.webapp.filter.MessageFilter.doFilter(MessageFilter.java:46)
[INFO] [talledLocalContainer] at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:235)
[INFO] [talledLocalContainer] at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
[INFO] [talledLocalContainer] at com.opensymphony.module.sitemesh.filter.PageFilter.parsePage(PageFilter.java:118)
[INFO] [talledLocalContainer] at com.opensymphony.module.sitemesh.filter.PageFilter.doFilter(PageFilter.java:52)
[INFO] [talledLocalContainer] at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:235)
[INFO] [talledLocalContainer] at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
[INFO] [talledLocalContainer] at org.tuckey.web.filters.urlrewrite.RuleChain.handleRewrite(RuleChain.java:164)
[INFO] [talledLocalContainer] at org.tuckey.web.filters.urlrewrite.RuleChain.doRules(RuleChain.java:141)
[INFO] [talledLocalContainer] at org.tuckey.web.filters.urlrewrite.UrlRewriter.processRequest(UrlRewriter.java:90)
[INFO] [talledLocalContainer] at org.tuckey.web.filters.urlrewrite.UrlRewriteFilter.doFilter(UrlRewriteFilter.java:406)
[INFO] [talledLocalContainer] at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:235)
[INFO] [talledLocalContainer] at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
[INFO] [talledLocalContainer] at net.sf.ehcache.constructs.web.filter.GzipFilter.doFilter(GzipFilter.java:106)
[INFO] [talledLocalContainer] at net.sf.ehcache.constructs.web.filter.Filter.doFilter(Filter.java:92)
[INFO] [talledLocalContainer] at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:235)
[INFO] [talledLocalContainer] at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
[INFO] [talledLocalContainer] at org.appfuse.webapp.filter.LocaleFilter.doFilterInternal(LocaleFilter.java:74)
[INFO] [talledLocalContainer] at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:76)
[INFO] [talledLocalContainer] at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:235)
[INFO] [talledLocalContainer] at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
[INFO] [talledLocalContainer] at com.opensymphony.clickstream.ClickstreamFilter.doFilter(ClickstreamFilter.java:42)
[INFO] [talledLocalContainer] at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:235)
[INFO] [talledLocalContainer] at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
[INFO] [talledLocalContainer] at org.springframework.security.util.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:359)
[INFO] [talledLocalContainer] at org.springframework.security.intercept.web.FilterSecurityInterceptor.invoke(FilterSecurityInterceptor.java:109)
[INFO] [talledLocalContainer] at org.springframework.security.intercept.web.FilterSecurityInterceptor.doFilter(FilterSecurityInterceptor.java:83)
[INFO] [talledLocalContainer] at org.springframework.security.util.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:371)
[INFO] [talledLocalContainer] at org.springframework.security.ui.ExceptionTranslationFilter.doFilterHttp(ExceptionTranslationFilter.java:101)
[INFO] [talledLocalContainer] at org.springframework.security.ui.SpringSecurityFilter.doFilter(SpringSecurityFilter.java:53)
[INFO] [talledLocalContainer] at org.springframework.security.util.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:371)
[INFO] [talledLocalContainer] at org.springframework.security.providers.anonymous.AnonymousProcessingFilter.doFilterHttp(AnonymousProcessingFilter.java:105)
[INFO] [talledLocalContainer] at org.springframework.security.ui.SpringSecurityFilter.doFilter(SpringSecurityFilter.java:53)
[INFO] [talledLocalContainer] at org.springframework.security.util.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:371)
[INFO] [talledLocalContainer] at org.springframework.security.ui.rememberme.RememberMeProcessingFilter.doFilterHttp(RememberMeProcessingFilter.java:116)
[INFO] [talledLocalContainer] at org.springframework.security.ui.SpringSecurityFilter.doFilter(SpringSecurityFilter.java:53)
[INFO] [talledLocalContainer] at org.springframework.security.util.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:371)
[INFO] [talledLocalContainer] at org.springframework.security.wrapper.SecurityContextHolderAwareRequestFilter.doFilterHttp(SecurityContextHolderAwareRequestFilter.java:91)
[INFO] [talledLocalContainer] at org.springframework.security.ui.SpringSecurityFilter.doFilter(SpringSecurityFilter.java:53)
[INFO] [talledLocalContainer] at org.springframework.security.util.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:371)
[INFO] [talledLocalContainer] at org.springframework.security.ui.basicauth.BasicProcessingFilter.doFilterHttp(BasicProcessingFilter.java:172)
[INFO] [talledLocalContainer] at org.springframework.security.ui.SpringSecurityFilter.doFilter(SpringSecurityFilter.java:53)
[INFO] [talledLocalContainer] at org.springframework.security.util.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:371)
[INFO] [talledLocalContainer] at org.springframework.security.ui.AbstractProcessingFilter.doFilterHttp(AbstractProcessingFilter.java:268)
[INFO] [talledLocalContainer] at org.springframework.security.ui.SpringSecurityFilter.doFilter(SpringSecurityFilter.java:53)
[INFO] [talledLocalContainer] at org.springframework.security.util.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:371)
[INFO] [talledLocalContainer] at org.springframework.security.ui.logout.LogoutFilter.doFilterHttp(LogoutFilter.java:87)
[INFO] [talledLocalContainer] at org.springframework.security.ui.SpringSecurityFilter.doFilter(SpringSecurityFilter.java:53)
[INFO] [talledLocalContainer] at org.springframework.security.util.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:371)
[INFO] [talledLocalContainer] at org.springframework.security.ui.SessionFixationProtectionFilter.doFilterHttp(SessionFixationProtectionFilter.java:61)
[INFO] [talledLocalContainer] at org.springframework.security.ui.SpringSecurityFilter.doFilter(SpringSecurityFilter.java:53)
[INFO] [INFO] [talledLocalContainer] at org.springframework.security.util.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:371)
------------------------------------------------------------------------
[ERROR] BUILD ERROR
[INFO] ------------------------------------------------------------------------
[INFO] [talledLocalContainer] at org.springframework.security.context.HttpSessionContextIntegrationFilter.doFilterHttp(HttpSessionContextIntegrationFilter.java:235)
[INFO] [talledLocalContainer] at org.springframework.security.ui.SpringSecurityFilter.doFilter(SpringSecurityFilter.java:53)
[INFO] Error executing ant tasks

Embedded error: The following error occurred while executing this line:
/Users/mraible/Work/appfuse-2.0/web/jsf/src/test/resources/web-tests.xml:208: Wrong document title found!. Expected value ".*File Uploaded Successfully!.*" but got "Error - Error calling action method of component with id uploadForm:upload | AppFuse"

And the root cause:

Caused by: javax.faces.el.EvaluationException: javax.el.ELException: /selectFile.xhtml @40,46 action="#{fileUpload.upload}": java.io.FileNotFoundException: /Users/mraible/Work/appfuse-2.0/web/jsf/target/tomcat5x/container/webapps/appfuse-jsf-2.0.2-SNAPSHOT/resources/admin/Users/mraible/Work/appfuse-2.0/web/jsf/pom.xml (No such file or directory)
        at javax.faces.component._MethodExpressionToMethodBinding.invoke(_MethodExpressionToMethodBinding.java:79)
        at org.apache.myfaces.application.ActionListenerImpl.processAction(ActionListenerImpl.java:54)
        ... 93 more
Caused by: javax.el.ELException: /selectFile.xhtml @40,46 action="#{fileUpload.upload}": java.io.FileNotFoundException: /Users/mraible/Work/appfuse-2.0/web/jsf/target/tomcat5x/container/webapps/appfuse-jsf-2.0.2-SNAPSHOT/resources/admin/Users/mraible/Work/appfuse-2.0/web/jsf/pom.xml (No such file or directory)
        at com.sun.facelets.el.TagMethodExpression.invoke(TagMethodExpression.java:74)
        at javax.faces.component._MethodExpressionToMethodBinding.invoke(_MethodExpressionToMethodBinding.java:75)
        ... 94 more
Caused by: java.io.FileNotFoundException: /Users/mraible/Work/appfuse-2.0/web/jsf/target/tomcat5x/container/webapps/appfuse-jsf-2.0.2-SNAPSHOT/resources/admin/Users/mraible/Work/appfuse-2.0/web/jsf/pom.xml (No such file or directory)
        at java.io.FileOutputStream.open(Native Method)
        at java.io.FileOutputStream.<init>(FileOutputStream.java:179)
        at java.io.FileOutputStream.<init>(FileOutputStream.java:70)
        at org.appfuse.webapp.action.FileUpload.upload(FileUpload.java:74)
        at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
        at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
        at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
        at java.lang.reflect.Method.invoke(Method.java:585)
        at org.apache.el.parser.AstValue.invoke(AstValue.java:152)
        at org.apache.el.MethodExpressionImpl.invoke(MethodExpressionImpl.java:276)
        at com.sun.facelets.el.TagMethodExpression.invoke(TagMethodExpression.java:68)
        ... 95 more

3134 by  Matt Raible (23 files)
05/May/08 03:37 AM (20 months, 25 days ago)
APF-1061: Upgrade to Canoo Web Test R_1702 which has *much* better JavaScript support.
APF-946: Upgrade to Scriptaculous 1.8.1
appfuse: trunk/web/common/src/main/webapp/scripts/sound.js 3134 history download (+55) new
appfuse: trunk/web/jsf/src/main/java/org/appfuse/webapp/action/FileUpload.java 3134 history download (+7 -2) diffs
appfuse: trunk/archetypes/appfuse-modular-spring/src/main/resources/archetype-resources/pom.xml 3134 history download (+1 -1) diffs
appfuse: trunk/web/common/src/main/webapp/scripts/builder.js 3134 history download (+12 -7) diffs
appfuse: trunk/archetypes/appfuse-basic-struts/src/main/resources/archetype-resources/pom.xml 3134 history download (+1 -1) diffs
appfuse: trunk/web/spring/src/test/resources/web-tests.xml 3134 history download (+2 -2) diffs
appfuse: trunk/web/common/src/main/webapp/scripts/controls.js 3134 history download (+480 -350) diffs
appfuse: trunk/web/common/src/main/webapp/scripts/slider.js 3134 history download (+40 -43) diffs
appfuse: trunk/archetypes/appfuse-modular-jsf/src/main/resources/archetype-resources/pom.xml 3134 history download (+1 -1) diffs
appfuse: trunk/web/common/src/main/webapp/scripts/scriptaculous.js 3134 history download (+15 -8) diffs
appfuse: trunk/web/struts/src/test/resources/web-tests.xml 3134 history download (+2 -2) diffs
appfuse: trunk/archetypes/appfuse-basic-jsf/src/main/resources/archetype-resources/pom.xml 3134 history download (+1 -1) diffs
appfuse: trunk/archetypes/appfuse-basic-spring/src/main/resources/archetype-resources/pom.xml 3134 history download (+1 -1) diffs
appfuse: trunk/pom.xml 3134 history download (+1 -1) diffs
appfuse: trunk/archetypes/appfuse-modular-struts/src/main/resources/archetype-resources/pom.xml 3134 history download (+1 -1) diffs
appfuse: trunk/web/common/src/main/webapp/scripts/README.txt 3134 history download (+3 -2) diffs
appfuse: trunk/web/jsf/src/test/resources/web-tests.xml 3134 history download (+2 -2) diffs
appfuse: trunk/web/common/src/main/webapp/scripts/dragdrop.js 3134 history download (+82 -52) diffs
appfuse: trunk/web/common/src/main/webapp/scripts/effects.js 3134 history download (+361 -329) diffs
appfuse: trunk/archetypes/appfuse-basic-tapestry/src/main/resources/archetype-resources/pom.xml 3134 history download (+1 -1) diffs
appfuse: trunk/web/tapestry/src/test/resources/web-tests.xml 3134 history download (+2 -2) diffs
appfuse: trunk/archetypes/appfuse-modular-tapestry/src/main/resources/archetype-resources/pom.xml 3134 history download (+1 -1) diffs
appfuse: trunk/web/common/src/main/webapp/scripts/prototype.js 3134 history download (+2758 -1104) diffs

Matt Raible added a comment - 05/May/08 03:38 AM
FileUpload.java has:

        // APF-758: Fix for Internet Explorer's shortcomings
        if (filename.indexOf("\\") != -1) {
            int slash = filename.lastIndexOf("\\");
            if (slash != -1) {
                filename = filename.substring(slash + 1);
            }
            // Windows doesn't like /'s either
            int slash2 = filename.lastIndexOf("/");
            if (slash2 != -1) {
                filename = filename.substring(slash2 + 1);
            }
            // In case the name is C:foo.txt
            int slash3 = filename.lastIndexOf(":");
            if (slash3 != -1) {
                filename = filename.substring(slash3 + 1);
            }
        }

Adding the following before it is a workaround that allows R_1702 to work with JSF.

        // APF-946: Canoo Web Tests R_1702 sets full path as name instead of only file name
        if (filename.indexOf("/") > -1) {
            filename = filename.substring(filename.lastIndexOf("/") + 1);
        }

Matt Raible made changes - 05/May/08 03:38 AM
Status Open [ 1 ] Resolved [ 5 ]
Resolution Fixed [ 1 ]