Friday, 21 September 2007

Upside Down Video Feed


We'll be demoing ICEfaces on the iPhone at AjaxWorld next week, and we needed a good way to display the mobile device for the audience. After setting up a small tripod and a DV camera, we observed that the best physical setup resulted in video displayed upside down on the screen.

So, I put together a simple video pipeline using Quartz Composer. If you have a Mac, and you haven't installed the developer tools and tried Quartz Composer, you should. It's a purely graphical development environment for creating sophisticated media pipelines (such as for screen savers or movie transitions). Creating a pipeline that captures the video input, rotates it, and renders the output was this easy:



In fact, you should be able to see yourself upside down in my jroller blog post.

I'll be presenting Ajax Push for Web 2.0 Collaboration on Monday morning and Steve will be presenting ICEfaces and Mobile Ajax on Tuesday at Lunch. Please contact ICEsoft if you would like a complimentary pass to the show.

Technorati Tags:

Posted by ted.goddard at 12:23 PM in Entries by Ted Goddard

A tricky JSF exception


One of the trickier JSF exceptions we've run into is an UnsupportedOperationException on application startup. This exception is misleading because it's actually thrown during the failure to create a formatted error message, causing the original exception to be lost. You'll see something like the following:
java.lang.UnsupportedOperationException
	at com.sun.faces.config.ConfigureListener$InitFacesContext.getViewRoot(ConfigureListener.java:1690)
	at com.sun.faces.util.MessageFactory.getMessage(MessageFactory.java:113)
	at com.sun.faces.util.MessageUtils.getExceptionMessageString(MessageUtils.java:277)
	at com.sun.faces.util.Util.createInstance(Util.java:477)
	at com.sun.faces.config.ConfigureListener.configure(ConfigureListener.java:578)
	at com.sun.faces.config.ConfigureListener.configure(ConfigureListener.java:503)
	at com.sun.faces.config.ConfigureListener.contextInitialized(ConfigureListener.java:402)
	at org.apache.catalina.core.StandardContext.listenerStart(StandardContext.java:3830)
	at org.apache.catalina.core.StandardContext.start(StandardContext.java:4337)
	at org.apache.catalina.core.ContainerBase.addChildInternal(ContainerBase.java:791)
	at org.apache.catalina.core.ContainerBase.addChild(ContainerBase.java:771)
	at org.apache.catalina.core.StandardHost.addChild(StandardHost.java:525)
	at org.apache.catalina.startup.HostConfig.deployWAR(HostConfig.java:825)
	at org.apache.catalina.startup.HostConfig.deployWARs(HostConfig.java:714)
	at org.apache.catalina.startup.HostConfig.deployApps(HostConfig.java:490)
	at org.apache.catalina.startup.HostConfig.check(HostConfig.java:1206)
	at org.apache.catalina.startup.HostConfig.lifecycleEvent(HostConfig.java:293)
	at org.apache.catalina.util.LifecycleSupport.fireLifecycleEvent(LifecycleSupport.java:117)
	at org.apache.catalina.core.ContainerBase.backgroundProcess(ContainerBase.java:1337)
	at org.apache.catalina.core.ContainerBase$ContainerBackgroundProcessor.processChildren(ContainerBase.java:1601)
	at org.apache.catalina.core.ContainerBase$ContainerBackgroundProcessor.processChildren(ContainerBase.java:1610)
	at org.apache.catalina.core.ContainerBase$ContainerBackgroundProcessor.run(ContainerBase.java:1590)
	at java.lang.Thread.run(Thread.java:613)

The actual line to make note of is:

        com.sun.faces.config.ConfigureListener.configure(ConfigureListener.java:578)

indicating that a ViewHandler, VariableResolver, etc. defined in faces-config.xml is missing (a .jar file is missing) or failing during initialization (in this case, a NavigationHandler is failing instantiation).

Posted by ted.goddard at 12:22 PM in Entries by Ted Goddard

« September »
SMTWTFS
      1
2345678
9101112131415
16171819202122
23242526272829
30