I wouldn't worry about getting the JUnit Tests working. We should probably move to Shale's Testing framework soon to solve issues with testing.
http://shale.apache.org/shale-test/index.html As far as the resource bundle, I believe 1.2 has a way of specifying the resource bundle in faces-config.xml and it'll be made available to the app w/o using loadBundle on each page. If you can get things to compile, you're halfway there. After that, it's just a matter of getting the UI working. We've done a couple of workarounds in some areas that might be able to be fixed with 1.2, so don't be afraid to clean things up. ;-) Matt On 5/27/07, Steve Tynor <[EMAIL PROTECTED]> wrote:
At the risk of revealing my ignorance of JSF... (has anyone else tried to convert appfuse JSF project to use JSF 1.2?) I'm trying to convert a clean appfuse 2.0-M5 basic-jsf project to use the new myfaces 1.2 JSF implementation (I need to integrate with a JSF 1.2 taglib and converting appfuse to 1.2 seems easier (and more useful in the long run to the rest of the appfuse community) than trying to backport the taglib to JSF 1.1). I've decided to try to use the myfaces 1.2.0-SNAPSHOT (from source - see http://wiki.apache.org/myfaces/MyFaces_1.2) since Appfuse has some dependencies on the myfaces api that I'd just as soon not have to change. I get mysterious errors in unit tests that may have to do with configuring the mock servlet support, so I'm trying to debug by bypassing them and directly testing interactively with jetty:run-war -Dmaven.test.skip. I get a good login page, and then after logging in, get the following facelets error: com.sun.facelets.tag.TagAttributeException: /mainMenu.xhtml @6,61 <f:loadBundle basename="#{basePage.bundleName}"> Can't find bundle for base name , locale en (full stack trace below). I don't understand why the bundle is not loaded - the basePage is declared in the (unchanged) faces-config.xml. Note the bundle base name appears to be "" - despite public static final String jstlBundleParam = "javax.servlet.jsp.jstl.fmt.localizationContext"; ... public String getBundleName() { // get name of resource bundle from JSTL settings, JSF makes this too hard return getServletContext().getInitParameter(jstlBundleParam); } and this value is initialized in the servlet context: <context-param> <param-name>javax.servlet.jsp.jstl.fmt.localizationContext</param-name> <param-value>ApplicationResources</param-value> </context-param> I'm not sure where to start. As far as I can tell, the BasePage code for loading the resources is never called. Can anyone advise what config files most likely need to be changed from 1.1 to 1.2. Thanks, Steve -------------------------------------- Diffs of my changes so far(mvn appfuse:full-source of jsf-basic 2.0-m5 project): diff -ru myproject-clean-fullsource/pom.xml myproject/pom.xml --- myproject-clean-fullsource/pom.xml 2007-05-27 12:04:32.702750000 -0400 +++ myproject/pom.xml 2007-05-27 12:35:24.187125000 -0400 @@ -181,7 +181,7 @@ <dependency> <groupId>org.apache.myfaces.core</groupId> <artifactId>myfaces-impl</artifactId> - <version>1.1.5</version> + <version>${myfaces.version}</version> </dependency> <dependency> <groupId>log4j</groupId> @@ -338,18 +338,18 @@ <artifactId>commons-dbcp</artifactId> <version>${commons.dbcp.version}</version> </dependency> - <dependency> + <!--dependency> <groupId>javax.el</groupId> <artifactId>el-api</artifactId> <version>${el.version}</version> - </dependency> + </dependency--> <dependency> <groupId>javax.mail</groupId> <artifactId>mail</artifactId> <version>${javamail.version}</version> </dependency> <dependency> - <groupId>javax.servlet</groupId> + <groupId>javax.servlet.jsp</groupId> <artifactId>jsp-api</artifactId> <version>${jsp.version}</version> <scope>provided</scope> @@ -807,7 +807,7 @@ <commons.dbcp.version>1.2.2</commons.dbcp.version> <jstl.version>1.1.2</jstl.version> <ehcache.version>1.3.0-beta2</ehcache.version> - <myfaces.version>1.1.5</myfaces.version> + <myfaces.version>1.2.0-SNAPSHOT</myfaces.version> <aspectj.version>1.5.3</aspectj.version> <facelets.version>1.1.11</facelets.version> <sitemesh.version>2.2.1</sitemesh.version> @@ -815,7 +815,7 @@ <!-- Testing dependency versions --> <jmock.version>1.1.0</jmock.version> - <jsp.version>2.0</jsp.version> + <jsp.version>2.1</jsp.version> <junit.version>3.8.2</junit.version> <servlet.version>2.4</servlet.version> <wiser.version>1.0.3</wiser.version> diff -ru myproject-clean-fullsource/src/main/java/org/appfuse/webapp/util/FacesUtils.java myproject/src/main/java/org/appfuse/webapp/util/FacesUtils.java --- myproject-clean-fullsource/src/main/java/org/appfuse/webapp/util/FacesUtils.java 2007-05-27 12:04:17.062125000 -0400 +++ myproject/src/main/java/org/appfuse/webapp/util/FacesUtils.java 2007-05- 27 12:12:48.093375000 -0400 @@ -118,31 +118,32 @@ msg, msg) ); } - /** - * Evaluate the integer value of a JSF expression. - * - * @param el the JSF expression - * @return the integer value associated with the JSF expression - */ - public static Integer evalInt(String el) { - if (el == null) { - return null; - } - - if (UIComponentTag.isValueReference(el)) { - Object value = getElValue(el); - - if (value == null) { - return null; - } else if (value instanceof Integer) { - return (Integer) value; - } else { - return new Integer(value.toString()); - } - } else { - return new Integer(el); - } - } +// NOT USED(?) and fails to compile with JSF1.2 +// /** +// * Evaluate the integer value of a JSF expression. +// * +// * @param el the JSF expression +// * @return the integer value associated with the JSF expression +// */ +// public static Integer evalInt(String el) { +// if (el == null) { +// return null; +// } +// +// if (UIComponentTag.isValueReference(el)) { +// Object value = getElValue(el); +// +// if (value == null) { +// return null; +// } else if (value instanceof Integer) { +// return (Integer) value; +// } else { +// return new Integer(value.toString()); +// } +// } else { +// return new Integer(el); +// } +// } private static Application getApplication() { ApplicationFactory appFactory = -------------------------------------- the full stack trace: com.sun.facelets.tag.TagAttributeException: /mainMenu.xhtml @6,61 <f:loadBundle basename="#{basePage.bundleName}"> Can't find bundle for base name , locale en at com.sun.facelets.tag.jsf.core.LoadBundleHandler.apply(LoadBundleHandler.java:197) at com.sun.facelets.tag.CompositeFaceletHandler.apply(CompositeFaceletHandler.java:47) at com.sun.facelets.tag.jsf.core.ViewHandler.apply(ViewHandler.java:109) at com.sun.facelets.tag.CompositeFaceletHandler.apply(CompositeFaceletHandler.java:47) at com.sun.facelets.compiler.NamespaceHandler.apply(NamespaceHandler.java:49) at com.sun.facelets.compiler.EncodingHandler.apply(EncodingHandler.java:25) at com.sun.facelets.impl.DefaultFacelet.apply(DefaultFacelet.java:95) at com.sun.facelets.FaceletViewHandler.buildView(FaceletViewHandler.java:510) at com.sun.facelets.FaceletViewHandler.renderView(FaceletViewHandler.java:553) at org.ajax4jsf.framework.ViewHandlerWrapper.renderView(ViewHandlerWrapper.java:101) at org.ajax4jsf.framework.ajax.AjaxViewHandler.renderView(AjaxViewHandler.java:221) at org.apache.myfaces.lifecycle.RenderResponseExecutor.execute(RenderResponseExecutor.java:41) at org.apache.myfaces.lifecycle.LifecycleImpl.render(LifecycleImpl.java:132) at javax.faces.webapp.FacesServlet.service(FacesServlet.java:138) at org.mortbay.jetty.servlet.ServletHolder.handle(ServletHolder.java:447) at org.mortbay.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1050) at org.ajax4jsf.framework.ajax.xmlfilter.BaseXMLFilter.doXmlFilter(BaseXMLFilter.java:75) at org.ajax4jsf.framework.ajax.xmlfilter.BaseFilter.doFilter(BaseFilter.java:213) at org.mortbay.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1041) at org.apache.myfaces.webapp.filter.ExtensionsFilter.doFilter(ExtensionsFilter.java:147) at org.mortbay.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1041) at org.appfuse.webapp.filter.MessageFilter.doFilter(MessageFilter.java:45) at org.mortbay.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1041) at com.opensymphony.module.sitemesh.filter.PageFilter.parsePage(PageFilter.java:118) at com.opensymphony.module.sitemesh.filter.PageFilter.doFilter(PageFilter.java:52) at org.mortbay.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1041) at org.tuckey.web.filters.urlrewrite.UrlRewriteFilter.doFilter(UrlRewriteFilter.java:350) at org.mortbay.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1041) at net.sf.ehcache.constructs.web.filter.GzipFilter.doFilter(GzipFilter.java:75) at net.sf.ehcache.constructs.web.filter.Filter.doFilter(Filter.java:92) at org.mortbay.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1041) at org.appfuse.webapp.filter.LocaleFilter.doFilterInternal(LocaleFilter.java:64) at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:75) at org.mortbay.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1041) at com.opensymphony.clickstream.ClickstreamFilter.doFilter(ClickstreamFilter.java:42) at org.mortbay.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1041) at org.acegisecurity.util.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:264) at org.acegisecurity.intercept.web.FilterSecurityInterceptor.invoke(FilterSecurityInterceptor.java:107) at org.acegisecurity.intercept.web.FilterSecurityInterceptor.doFilter(FilterSecurityInterceptor.java:72) at org.acegisecurity.util.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:274) at org.acegisecurity.ui.ExceptionTranslationFilter.doFilter(ExceptionTranslationFilter.java:110) at org.acegisecurity.util.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:274) at org.acegisecurity.providers.anonymous.AnonymousProcessingFilter.doFilter(AnonymousProcessingFilter.java:125) at org.acegisecurity.util.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:274) at org.acegisecurity.ui.rememberme.RememberMeProcessingFilter.doFilter(RememberMeProcessingFilter.java:142) at org.acegisecurity.util.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:274) at org.acegisecurity.wrapper.SecurityContextHolderAwareRequestFilter.doFilter(SecurityContextHolderAwareRequestFilter.java:81) at org.acegisecurity.util.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:274) at org.acegisecurity.ui.AbstractProcessingFilter.doFilter(AbstractProcessingFilter.java:217) at org.acegisecurity.util.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:274) at org.acegisecurity.context.HttpSessionContextIntegrationFilter.doFilter(HttpSessionContextIntegrationFilter.java:229) at org.acegisecurity.util.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:274) at org.acegisecurity.util.FilterChainProxy.doFilter(FilterChainProxy.java:148) at org.acegisecurity.util.FilterToBeanProxy.doFilter(FilterToBeanProxy.java:98) at org.mortbay.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1041) at org.springframework.web.filter.CharacterEncodingFilter.doFilterInternal(CharacterEncodingFilter.java:96) at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:75) at org.mortbay.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1041) at org.mortbay.jetty.servlet.ServletHandler.handle(ServletHandler.java:354) at org.mortbay.jetty.security.SecurityHandler.handle(SecurityHandler.java:179) at org.mortbay.jetty.servlet.SessionHandler.handle(SessionHandler.java:226) at org.mortbay.jetty.handler.ContextHandler.handle(ContextHandler.java:621) at org.mortbay.jetty.handler.ContextHandlerCollection.handle(ContextHandlerCollection.java:149) at org.mortbay.jetty.handler.HandlerCollection.handle(HandlerCollection.java:123) at org.mortbay.jetty.handler.HandlerWrapper.handle(HandlerWrapper.java:141) at org.mortbay.jetty.Server.handle(Server.java:269) at org.mortbay.jetty.HttpConnection.handleRequest(HttpConnection.java:430) at org.mortbay.jetty.HttpConnection$RequestHandler.headerComplete(HttpConnection.java:678) at org.mortbay.jetty.HttpParser.parseNext(HttpParser.java:492) at org.mortbay.jetty.HttpParser.parseAvailable(HttpParser.java:199) at org.mortbay.jetty.HttpConnection.handle(HttpConnection.java:339) at org.mortbay.jetty.nio.HttpChannelEndPoint.run(HttpChannelEndPoint.java:270) at org.mortbay.thread.BoundedThreadPool$PoolThread.run(BoundedThreadPool.java:475) Caused by: java.util.MissingResourceException: Can't find bundle for base name , locale en at java.util.ResourceBundle.throwMissingResourceException(ResourceBundle.java:836) at java.util.ResourceBundle.getBundleImpl(ResourceBundle.java:805) at java.util.ResourceBundle.getBundle(ResourceBundle.java:699) at com.sun.facelets.tag.jsf.core.LoadBundleHandler.apply(LoadBundleHandler.java:191) ... 72 more --------------------------------------------------------------------- To unsubscribe, e-mail: [EMAIL PROTECTED] For additional commands, e-mail: [EMAIL PROTECTED]
-- http://raibledesigns.com --------------------------------------------------------------------- To unsubscribe, e-mail: [EMAIL PROTECTED] For additional commands, e-mail: [EMAIL PROTECTED]
