<?xml version="1.0" encoding="UTF-8"?>
<?xml-stylesheet type="text/xsl" media="screen" href="/~d/styles/rss2full.xsl"?><?xml-stylesheet type="text/css" media="screen" href="http://feeds.dzone.com/~d/styles/itemcontent.css"?><rss xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:feedburner="http://rssnamespace.org/feedburner/ext/1.0" version="2.0">
<channel>
  <title>JRoller</title>
  <link>http://www.jroller.com</link>
  
  <description>Javalobby Community Weblog Service</description>
  <language>en-us</language>
  <copyright>Copyright 2007</copyright>
  <lastBuildDate>Tue, 17 Jul 2007 11:08:23 -0400</lastBuildDate>
  <generator>Apache Roller (incubating) 3.1 (20070421020349:dave)</generator>
        <atom10:link xmlns:atom10="http://www.w3.org/2005/Atom" rel="self" href="http://jroller.com/rss" type="application/rss+xml" /><feedburner:feedFlare href="http://add.my.yahoo.com/rss?url=http%3A%2F%2Fjroller.com%2Frss" src="http://us.i1.yimg.com/us.yimg.com/i/us/my/addtomyyahoo4.gif">Subscribe with My Yahoo!</feedburner:feedFlare><feedburner:feedFlare href="http://www.newsgator.com/ngs/subscriber/subext.aspx?url=http%3A%2F%2Fjroller.com%2Frss" src="http://www.newsgator.com/images/ngsub1.gif">Subscribe with NewsGator</feedburner:feedFlare><feedburner:feedFlare href="http://feeds.my.aol.com/add.jsp?url=http%3A%2F%2Fjroller.com%2Frss" src="http://o.aolcdn.com/favorites.my.aol.com/webmaster/ffclient/webroot/locale/en-US/images/myAOLButtonSmall.gif">Subscribe with My AOL</feedburner:feedFlare><feedburner:feedFlare href="http://www.bloglines.com/sub/http://jroller.com/rss" src="http://www.bloglines.com/images/sub_modern11.gif">Subscribe with Bloglines</feedburner:feedFlare><feedburner:feedFlare href="http://www.netvibes.com/subscribe.php?url=http%3A%2F%2Fjroller.com%2Frss" src="http://www.netvibes.com/img/add2netvibes.gif">Subscribe with Netvibes</feedburner:feedFlare><feedburner:feedFlare href="http://fusion.google.com/add?feedurl=http%3A%2F%2Fjroller.com%2Frss" src="http://buttons.googlesyndication.com/fusion/add.gif">Subscribe with Google</feedburner:feedFlare><feedburner:feedFlare href="http://www.pageflakes.com/subscribe.aspx?url=http%3A%2F%2Fjroller.com%2Frss" src="http://www.pageflakes.com/ImageFile.ashx?instanceId=Static_4&amp;fileName=ATP_blu_91x17.gif">Subscribe with Pageflakes</feedburner:feedFlare><item>
    <guid isPermaLink="false">http://www.jroller.com/evans/entry/intellij_has_better_support_for</guid>
    <title>Intellij Has Better Support for Scala</title>
    <dc:creator>evans</dc:creator>
    <link>http://feeds.dzone.com/~r/jroller/frontpage/~3/fLIrJ3iiiqY/intellij_has_better_support_for</link>
        <pubDate>Sat, 11 Jul 2009 10:31:44 -0400</pubDate>
    <category>Java</category>
            <description>&lt;p /&gt;
The support for &lt;a href="http://www.amazon.com/dp/0981531601/?tag=bolala-20"&gt;Scala in Intellij&lt;/a&gt; does a good job of supporting mixed Java / Scala projects. At the moment Scala support in Intellij is better than that of Scala IDE for Eclipse.
&lt;p /&gt;
As a long time Eclipse user I recently tried installing the Scala IDE on Eclipse 3.3 which already had &lt;a href="http://www.amazon.com/dp/0596516215/?tag=bolala-20"&gt;Flex Builder&lt;/a&gt; plug-in installed, but this was not successful, not sure why, but ran into numerous errors. One would expect that mixed &lt;a href="http://www.amazon.com/dp/0981531601/?tag=bolala-20"&gt;Java /Scala&lt;/a&gt; support on Eclipse would be seamless, but that's totally not the case. 
&lt;p /&gt;
However, on installing Scala IDE on &lt;a href="http://www.amazon.com/dp/1932394443/?tag=bolala-20"&gt;Intellij&lt;/a&gt;, everything worked right without errors or conflicts. I have been able to run different projects on it including Google App Engine and &lt;a href="http://www.amazon.com/dp/159059584X/?tag=bolala-20"&gt;Spring MVC&lt;/a&gt; for the UI on Intellij. The plugins for Intellij are a great help. Though it is still early days and there are occasional problems. (for instance the Scala plugin compiler does not seem to like JDO enhanced Java classes too much...there is a work around and I am sure this bug will be fixed soon).&lt;img src="http://feeds.feedburner.com/~r/jroller/frontpage/~4/fLIrJ3iiiqY" height="1" width="1"/&gt;</description>          <feedburner:origLink>http://www.jroller.com/evans/entry/intellij_has_better_support_for</feedburner:origLink></item>
    <item>
    <guid isPermaLink="false">http://www.jroller.com/RickHigh/entry/gtk_drawing_example_done_in</guid>
    <title>GTK Drawing example done in C</title>
    <dc:creator>Rick Hightower</dc:creator>
    <link>http://feeds.dzone.com/~r/jroller/frontpage/~3/PWV5IFCxI7I/gtk_drawing_example_done_in</link>
        <pubDate>Fri, 10 Jul 2009 20:48:40 -0400</pubDate>
    <category>technology</category>
            <description>&lt;p&gt;I took bits of the example out of the GTK tutorial and started to adapt it. This is just a proof of concept application. I am trying to understand some issues we are having with an application and I wanted to better understand GTK.&lt;/p&gt;&lt;p&gt;I did quite a bit of Swing programming in the past (about 10 years ago). And before that... I did a lot of Windows programming with the C API then later OWL and then later MFC (graphing software for semiconductor test, which was a lot of damn fun). &lt;/p&gt;&lt;p&gt;Eventually this example will do an XY scatter plot. For now, it just draws rectangles based on mouse click and drag events. One must start somewhere. You may notice that it tries to pretend to be a Java class... this was for my own sanity. It is hard to give up on this (pun intentional).&lt;/p&gt;&lt;p&gt;&lt;font face="courier new,courier,monospace"&gt;#include &amp;lt;gtk/gtk.h&amp;gt;&lt;br /&gt;&lt;br /&gt;typedef struct _components {&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; GtkWidget *window;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; GtkWidget *previous;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; GtkWidget *next;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; GtkWidget *graphNavigationPanel;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; GtkWidget *mainPanel;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; GtkWidget *drawingArea;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; GdkPixmap *pixMap;&lt;br /&gt;} components;&lt;br /&gt;&lt;br /&gt;static &amp;nbsp;&amp;nbsp;&amp;nbsp; components this;&lt;br /&gt;&lt;br /&gt;static void next_handler( GtkWidget *widget,&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; gpointer&amp;nbsp;&amp;nbsp; data )&lt;br /&gt;{&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; g_print (&amp;quot;next %s \n&amp;quot;, (gchar *) data);&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;static void previous_handler( GtkWidget *widget,&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; gpointer&amp;nbsp;&amp;nbsp; data )&lt;br /&gt;{&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; g_print (&amp;quot;previous %s \n&amp;quot;, (gchar *) data);&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;static gboolean delete_event( GtkWidget *widget,&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; GdkEvent&amp;nbsp; *event,&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; gpointer&amp;nbsp;&amp;nbsp; data )&lt;br /&gt;{&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; return FALSE;&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;/* Another callback */&lt;br /&gt;static void destroy( GtkWidget *widget,&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; gpointer&amp;nbsp;&amp;nbsp; data )&lt;br /&gt;{&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; gtk_main_quit ();&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;static void createWindow() {&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; this.window = gtk_window_new (GTK_WINDOW_TOPLEVEL);&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; gtk_container_set_border_width (GTK_CONTAINER (this.window), 10);&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; gtk_window_set_title (GTK_WINDOW (this.window), &amp;quot;Graph Window&amp;quot;);&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; g_signal_connect (G_OBJECT (this.window), &amp;quot;delete_event&amp;quot;,&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; G_CALLBACK (delete_event), NULL);&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; g_signal_connect (G_OBJECT (this.window), &amp;quot;destroy&amp;quot;,&lt;br /&gt;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; G_CALLBACK (destroy), NULL);&lt;br /&gt;&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;static void createButtons() {&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; this.next = gtk_button_new_with_label (&amp;quot;Next&amp;quot;);&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; this.previous = gtk_button_new_with_label (&amp;quot;Previous&amp;quot;);&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; g_signal_connect (G_OBJECT (this.next), &amp;quot;clicked&amp;quot;, G_CALLBACK (next_handler), NULL);&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; g_signal_connect (G_OBJECT (this.previous), &amp;quot;clicked&amp;quot;, G_CALLBACK (previous_handler), NULL);&lt;br /&gt;&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;static void layoutWidgets() {&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; /* Create the graph navigation panel and add it to the window. */&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; this.graphNavigationPanel = gtk_hbox_new (FALSE, 0);&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; this.mainPanel = gtk_vbox_new(FALSE, 0);&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; gtk_container_add&amp;nbsp; (GTK_CONTAINER (this.window), this.mainPanel);&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; /* Add the buttons to the graph navigation panel. */&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; gtk_box_pack_start (GTK_BOX(this.graphNavigationPanel), this.previous, TRUE, TRUE, 0);&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; gtk_box_pack_start (GTK_BOX(this.graphNavigationPanel), this.next,&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; TRUE, TRUE, 0);&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; /*Add the graph navigation panel to the main panel. */&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; gtk_box_pack_start (GTK_BOX(this.mainPanel), this.graphNavigationPanel, TRUE, TRUE, 0);&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; /* Add the draw-able area to the main panel. */&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; gtk_box_pack_start (GTK_BOX(this.mainPanel), this.drawingArea, TRUE, TRUE, 0);&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;static void show() {&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; gtk_widget_show (this.drawingArea);&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; gtk_widget_show (this.mainPanel);&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; gtk_widget_show (this.next);&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; gtk_widget_show (this.previous);&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; gtk_widget_show (this.graphNavigationPanel);&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; gtk_widget_show (this.window);&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;/* Draw a rectangle on the screen */&lt;br /&gt;static void&lt;br /&gt;draw_brush (GtkWidget *widget, gdouble x, gdouble y)&lt;br /&gt;{&lt;br /&gt;&amp;nbsp; GdkRectangle update_rect;&lt;br /&gt;&lt;br /&gt;&amp;nbsp; update_rect.x = x - 5;&lt;br /&gt;&amp;nbsp; update_rect.y = y - 5;&lt;br /&gt;&amp;nbsp; update_rect.width = 10;&lt;br /&gt;&amp;nbsp; update_rect.height = 10;&lt;br /&gt;&amp;nbsp; gdk_draw_rectangle (this.pixMap,&lt;br /&gt;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; widget-&amp;gt;style-&amp;gt;black_gc,&lt;br /&gt;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; TRUE,&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; update_rect.x, update_rect.y,&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; update_rect.width, update_rect.height);&lt;br /&gt;&amp;nbsp; gtk_widget_queue_draw_area (widget,&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; update_rect.x, update_rect.y,&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; update_rect.width, update_rect.height);&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;/* Redraw the screen from the backing pixmap */&lt;br /&gt;static gboolean&lt;br /&gt;expose_event( GtkWidget *widget, GdkEventExpose *event )&lt;br /&gt;{&lt;br /&gt;&amp;nbsp; gdk_draw_drawable(widget-&amp;gt;window,&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; widget-&amp;gt;style-&amp;gt;fg_gc[GTK_WIDGET_STATE (widget)],&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; this.pixMap,&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; event-&amp;gt;area.x, event-&amp;gt;area.y,&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; event-&amp;gt;area.x, event-&amp;gt;area.y,&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; event-&amp;gt;area.width, event-&amp;gt;area.height);&lt;br /&gt;&lt;br /&gt;&amp;nbsp; return FALSE;&lt;br /&gt;}&lt;br /&gt;/* Create a new backing pixmap of the appropriate size */&lt;br /&gt;static gboolean&lt;br /&gt;configure_event( GtkWidget *widget, GdkEventConfigure *event )&lt;br /&gt;{&lt;br /&gt;&amp;nbsp; if (this.pixMap)&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; g_object_unref(this.pixMap);&lt;br /&gt;&lt;br /&gt;&amp;nbsp; this.pixMap = gdk_pixmap_new(widget-&amp;gt;window,&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp; widget-&amp;gt;allocation.width,&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp; widget-&amp;gt;allocation.height,&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp; -1);&lt;br /&gt;&lt;br /&gt;&amp;nbsp; gdk_draw_rectangle (this.pixMap,&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; widget-&amp;gt;style-&amp;gt;white_gc,&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; TRUE,&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 0, 0,&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; widget-&amp;gt;allocation.width,&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; widget-&amp;gt;allocation.height);&lt;br /&gt;&lt;br /&gt;&amp;nbsp; return TRUE;&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;static gboolean&lt;br /&gt;button_press_event( GtkWidget *widget, GdkEventButton *event )&lt;br /&gt;{&lt;br /&gt;&amp;nbsp; if (event-&amp;gt;button == 1 &amp;amp;&amp;amp; this.pixMap != NULL)&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; draw_brush (widget, event-&amp;gt;x, event-&amp;gt;y);&lt;br /&gt;&lt;br /&gt;&amp;nbsp; return TRUE;&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;static gboolean&lt;br /&gt;motion_notify_event( GtkWidget *widget, GdkEventMotion *event )&lt;br /&gt;{&lt;br /&gt;&amp;nbsp; int x, y;&lt;br /&gt;&amp;nbsp; GdkModifierType state;&lt;br /&gt;&lt;br /&gt;&amp;nbsp; if (event-&amp;gt;is_hint)&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; gdk_window_get_pointer (event-&amp;gt;window, &amp;amp;x, &amp;amp;y, &amp;amp;state);&lt;br /&gt;&amp;nbsp; else&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; {&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; x = event-&amp;gt;x;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; y = event-&amp;gt;y;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; state = event-&amp;gt;state;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;br /&gt;&lt;br /&gt;&amp;nbsp; if (state &amp;amp; GDK_BUTTON1_MASK &amp;amp;&amp;amp; this.pixMap != NULL)&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; draw_brush (widget, x, y);&lt;br /&gt;&lt;br /&gt;&amp;nbsp; return TRUE;&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;static void createDrawingArea() {&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; this.drawingArea = gtk_drawing_area_new();&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; gtk_signal_connect (GTK_OBJECT (this.drawingArea), &amp;quot;expose_event&amp;quot;,&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; (GtkSignalFunc) expose_event, NULL);&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; gtk_signal_connect (GTK_OBJECT(this.drawingArea),&amp;quot;configure_event&amp;quot;,&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; (GtkSignalFunc) configure_event, NULL);&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; gtk_signal_connect (GTK_OBJECT (this.drawingArea), &amp;quot;motion_notify_event&amp;quot;,&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; (GtkSignalFunc) motion_notify_event, NULL);&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; gtk_signal_connect (GTK_OBJECT (this.drawingArea), &amp;quot;button_press_event&amp;quot;,&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; (GtkSignalFunc) button_press_event, NULL);&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; gtk_widget_set_events (this.drawingArea, GDK_EXPOSURE_MASK&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;| GDK_LEAVE_NOTIFY_MASK&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;| GDK_BUTTON_PRESS_MASK&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;| GDK_POINTER_MOTION_MASK&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;| GDK_POINTER_MOTION_HINT_MASK);&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; gtk_drawing_area_size(this.drawingArea, 200, 200);&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;int main( int&amp;nbsp;&amp;nbsp; argc,&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; char *argv[] )&lt;br /&gt;{&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; gtk_init (&amp;amp;argc, &amp;amp;argv);&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; createWindow();&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; createButtons();&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; createDrawingArea();&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; layoutWidgets();&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; show();&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; gtk_main ();&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; return 0;&lt;br /&gt;}&lt;br /&gt;&lt;/font&gt;&lt;/p&gt;&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;p&gt;&lt;font face="arial,helvetica,sans-serif"&gt;If you want to know the why's and how's of the above code check out: http://library.gnome.org/devel/gtk-tutorial/stable/c2424.html&lt;/font&gt; &lt;/p&gt;&lt;p&gt;Seems I am the architect for the next version of this application. Perhaps it will be time to switch to Java Swing, or Java SWT.... (must run on Linux).&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/jroller/frontpage/~4/PWV5IFCxI7I" height="1" width="1"/&gt;</description>          <feedburner:origLink>http://www.jroller.com/RickHigh/entry/gtk_drawing_example_done_in</feedburner:origLink></item>
    <item>
    <guid isPermaLink="false">http://www.jroller.com/xtecuan/entry/solo_puedo_decir_gracias_selecta</guid>
    <title>Solo Puedo Decir Gracias Selecta</title>
    <dc:creator>Julian Rivera Pineda</dc:creator>
    <link>http://feeds.dzone.com/~r/jroller/frontpage/~3/_wVMxyLXnxU/solo_puedo_decir_gracias_selecta</link>
        <pubDate>Fri, 10 Jul 2009 20:38:47 -0400</pubDate>
    <category>Java</category>
            <description>&lt;a href="http://ntrock-blog.kuriel.co.cc/wordpress/?p=34"&gt;http://ntrock-blog.kuriel.co.cc/wordpress/?p=34&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;+1&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;img src="http://feeds.feedburner.com/~r/jroller/frontpage/~4/_wVMxyLXnxU" height="1" width="1"/&gt;</description>          <feedburner:origLink>http://www.jroller.com/xtecuan/entry/solo_puedo_decir_gracias_selecta</feedburner:origLink></item>
    <item>
    <guid isPermaLink="false">http://www.jroller.com/xtecuan/entry/jvm_internals_series_part_1</guid>
    <title>JVM Internals Series -Part 1</title>
    <dc:creator>Julian Rivera Pineda</dc:creator>
    <link>http://feeds.dzone.com/~r/jroller/frontpage/~3/y0SoixOIdjM/jvm_internals_series_part_1</link>
        <pubDate>Fri, 10 Jul 2009 14:54:46 -0400</pubDate>
    <category>Java</category>
            <description>&lt;a href="http://maneeshchaturvedi.wordpress.com/2009/07/08/jvm-internals-series-part-1/"&gt;http://maneeshchaturvedi.wordpress.com/2009/07/08/jvm-internals-series-part-1/&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;img src="http://feeds.feedburner.com/~r/jroller/frontpage/~4/y0SoixOIdjM" height="1" width="1"/&gt;</description>          <feedburner:origLink>http://www.jroller.com/xtecuan/entry/jvm_internals_series_part_1</feedburner:origLink></item>
    <item>
    <guid isPermaLink="false">http://www.jroller.com/holy/entry/injecting_timing_aspect_into_junit</guid>
    <title>Injecting timing aspect into JUnit test in Eclipse using AspectJ, AJDT</title>
    <dc:creator>Jakub Holý (Holy)</dc:creator>
    <link>http://feeds.dzone.com/~r/jroller/frontpage/~3/Tdou7C2uSTQ/injecting_timing_aspect_into_junit</link>
        <pubDate>Fri, 10 Jul 2009 10:45:51 -0400</pubDate>
    <category>Java</category>
    <category>ajdt</category>
    <category>aop</category>
    <category>aspectj</category>
    <category>eclipse</category>
    <category>junit</category>
    <atom:summary type="html">&lt;p&gt;This blog describes my experience with using &lt;a href="http://en.wikipedia.org/wiki/Aspect-oriented_programming"&gt;AOP&lt;/a&gt;,
namely AspectJ, to measure the individual execution times and their
average of a particular low-level method invoked many times during a
JUnit test, invoked from within Eclipse. It concentrates on creating
the aspect and integrating (weaving) it into the JUnit test execution.&lt;/p&gt;&lt;p&gt;The environment is AspectJ 1.6, Eclipse 3.4 with &lt;a href="http://www.eclipse.org/ajdt/"&gt;AJDT&lt;/a&gt; (AspectJ Development Tools), and &lt;a href="http://www.eclipse.org/aspectj/"&gt;AspectJ&lt;/a&gt; 5, Java 5.&lt;br /&gt;&lt;/p&gt;</atom:summary>        <description>&lt;h2&gt;&amp;nbsp;Introduction&lt;/h2&gt;&lt;p&gt;This blog describes my experience with using &lt;a href="http://en.wikipedia.org/wiki/Aspect-oriented_programming"&gt;AOP&lt;/a&gt;, namely AspectJ, to measure the individual execution times and their average of a particular low-level method invoked many times during a JUnit test run from within Eclipse. It concentrates on creating the aspect and integrating (weaving) it into the JUnit test execution.&lt;/p&gt;&lt;p&gt;Of course it would be easier to use e.g. profiler but I wanted to play with AOP/AspectJ to learn it better because it's an incredibly useful tool for a number of problems and you can use it even if you don't have access to the application's source code and/or cannot control the runtime environment (such as running it in a profiler).&lt;br /&gt;&lt;/p&gt;&lt;h3&gt;Why AspectJ?&lt;/h3&gt;&lt;p&gt;There are also other AOP tools for Java but it seems that AspectJ is the most wide-spread one, especially since its merge with AspectWerkz. I used to dislike it because it required a special extended Java syntax and compiler but this isn't true anymnore (more on that later).&lt;br /&gt;&lt;/p&gt;&lt;h2&gt;Disclaimer&lt;/h2&gt;&lt;p&gt;I'm only learning AspectJ, so the solution may be not and likely isn't the best one. I appreciate improvement suggestions.&lt;br /&gt;&lt;/p&gt;&lt;h2&gt;Preparing the environment&lt;/h2&gt;&lt;p&gt;I use &lt;a href="http://www.poweredbypulse.com/"&gt;Pulse&lt;/a&gt; to set up my Eclipse environment. For this I'll use:&lt;/p&gt;&lt;ul&gt;&lt;li&gt;Eclipse 3.4 for Java EE (Pulse doesn't yet support 3.5)&lt;/li&gt;&lt;li&gt;AJDT 2.0.0&lt;br /&gt;&lt;/li&gt;&lt;li&gt;AspectJ 1.6.5&lt;br /&gt;&lt;/li&gt;&lt;li&gt;JUnit 4&lt;/li&gt;&lt;li&gt;JDK 1.5.0.18 (the test fails with 1.6 due to xml libs incompatibility) and Java 5.0 syntax&lt;br /&gt;&lt;/li&gt;&lt;/ul&gt;&lt;h2&gt; Implementing the timing aspect&lt;/h2&gt;&lt;p&gt;My goal is to create an aspect invoked around the method in question that will measure the time it takes for the method to execute, log it, and compute and log the average execution time.&lt;/p&gt;&lt;p&gt;Since AspectJ 5 we have two options - either using the older custom AspectJ syntax with AspectJ compiler or using annotations. I'll explore both possibilities.&lt;/p&gt;&lt;h3&gt;Project structure&lt;/h3&gt;&lt;p&gt;First, we have a Java project with the junit test that we want to run with the timing aspect. It depends on another project with the actual class and method whose performance we want to measure.&lt;/p&gt;&lt;p&gt; &lt;b&gt;MyLibraryProject&lt;/b&gt;&lt;/p&gt;&lt;ul&gt;&lt;li&gt;/src/main/java/com/tonbeller/jpivot/xmla/XMLA_SOAP.java &lt;br /&gt;&lt;/li&gt;&lt;/ul&gt;&lt;p&gt;&lt;b&gt;MyTestProject&lt;/b&gt;&lt;/p&gt;&lt;ul&gt;&lt;li&gt;/src/main/java/&lt;/li&gt;&lt;ul&gt;&lt;li&gt;eu/ibacz/studna/jpivot/OLAPModelStructure.java&lt;br /&gt;- calls (indirectly) XMLA_SOAP.discoverMem during its execution&lt;br /&gt;&lt;/li&gt;&lt;/ul&gt;&lt;li&gt;/src/test/java/&lt;/li&gt;&lt;ul&gt;&lt;li&gt;eu/ibacz/studna/jpivot/OLAPModelStructurePerformanceTest.java&lt;br /&gt;- standard JUnit4 test case&lt;/li&gt;&lt;/ul&gt;&lt;/ul&gt;&lt;p&gt;We create another project to hold our new shiny aspect: File &amp;gt; New &amp;gt; Other... &amp;gt; AspectJ &amp;gt; AspectJ Project =&amp;gt;&lt;/p&gt;&lt;p&gt;&lt;b&gt;MyAspectProject&lt;/b&gt;&lt;/p&gt;&lt;ul&gt;&lt;li&gt;/src/&lt;/li&gt;&lt;ul&gt;&lt;li&gt;eu/ibacz/pbns/util/aspect/TimingAspect.aj (solution 1)&lt;/li&gt;&lt;li&gt;eu/ibacz/pbns/util/aspect/TimingAnnotatedAspect.java (solution 2)&lt;/li&gt;&lt;/ul&gt;&lt;/ul&gt;&lt;h3&gt;Solution 1: using custom ApectJ syntax&lt;/h3&gt;&lt;p&gt;Before AspectJ 5 this was the only option and it is still more powerful and has better support of AJDT (according to the &lt;a href="http://www.eclipse.org/aspectj/doc/released/faq.php#q:codeversusannotationstyles"&gt;FAQ&lt;/a&gt;). Basically you write the aspect in an extended Java syntax in an .aj file and compile it with a special AspectJ compiler - though this is done behind the scene for you thanks to having created an AspectJ project, which also provides you with a special AspectJ/Java editor for .aj and .java aspect files.&lt;/p&gt;&lt;p&gt;Enough talking, let's see the aspect:&lt;/p&gt;&lt;p&gt;File&lt;b&gt; eu/ibacz/pbns/util/aspect/TimingAspect.aj:&lt;/b&gt;&lt;/p&gt;

&lt;pre&gt;&lt;font color="#000000"&gt;&lt;font color="#009966"&gt;&lt;b&gt;package&lt;/b&gt;&lt;/font&gt; eu.ibacz.pbns.util.aspect;&lt;br /&gt;&lt;br /&gt;&lt;font color="#009966"&gt;&lt;b&gt;import&lt;/b&gt;&lt;/font&gt; ...&lt;br /&gt;&lt;br /&gt;&lt;font color="#006699"&gt;&lt;b&gt;public&lt;/b&gt;&lt;/font&gt; aspect TimingAspect &lt;font color="#000000"&gt;&lt;b&gt;{&lt;/b&gt;&lt;/font&gt;&lt;br /&gt;&lt;br /&gt;    &lt;font color="#ff8400"&gt;//&lt;/font&gt;&lt;font color="#ff8400"&gt; &lt;/font&gt;&lt;font color="#ff8400"&gt;instance/class&lt;/font&gt;&lt;font color="#ff8400"&gt; &lt;/font&gt;&lt;font color="#ff8400"&gt;field&lt;/font&gt;&lt;font color="#ff8400"&gt; &lt;/font&gt;&lt;font color="#ff8400"&gt;...&lt;/font&gt;&lt;br /&gt;&lt;br /&gt;    &lt;font color="#006699"&gt;&lt;b&gt;public&lt;/b&gt;&lt;/font&gt; &lt;font color="#9966ff"&gt;TimingAspect&lt;/font&gt;&lt;font color="#000000"&gt;&lt;b&gt;(&lt;/b&gt;&lt;/font&gt;&lt;font color="#000000"&gt;&lt;b&gt;)&lt;/b&gt;&lt;/font&gt; &lt;font color="#000000"&gt;&lt;b&gt;{&lt;/b&gt;&lt;/font&gt;&lt;br /&gt;        formatter &lt;font color="#000000"&gt;&lt;b&gt;=&lt;/b&gt;&lt;/font&gt; NumberFormat.&lt;font color="#9966ff"&gt;getIntegerInstance&lt;/font&gt;&lt;font color="#000000"&gt;&lt;b&gt;(&lt;/b&gt;&lt;/font&gt;&lt;font color="#000000"&gt;&lt;b&gt;)&lt;/b&gt;&lt;/font&gt;;&lt;br /&gt;        formatter.&lt;font color="#9966ff"&gt;setMinimumIntegerDigits&lt;/font&gt;&lt;font color="#000000"&gt;&lt;b&gt;(&lt;/b&gt;&lt;/font&gt;&lt;font color="#ff0000"&gt;3&lt;/font&gt;&lt;font color="#000000"&gt;&lt;b&gt;)&lt;/b&gt;&lt;/font&gt;;&lt;br /&gt;        System.out.&lt;font color="#9966ff"&gt;println&lt;/font&gt;&lt;font color="#000000"&gt;&lt;b&gt;(&lt;/b&gt;&lt;/font&gt;&lt;font color="#9966ff"&gt;getClass&lt;/font&gt;&lt;font color="#000000"&gt;&lt;b&gt;(&lt;/b&gt;&lt;/font&gt;&lt;font color="#000000"&gt;&lt;b&gt;)&lt;/b&gt;&lt;/font&gt; &lt;font color="#000000"&gt;&lt;b&gt;+&lt;/b&gt;&lt;/font&gt; &lt;font color="#ff00cc"&gt;&amp;quot;&lt;/font&gt;&lt;font color="#ff00cc"&gt; &lt;/font&gt;&lt;font color="#ff00cc"&gt;instantiated!&lt;/font&gt;&lt;font color="#ff00cc"&gt;&amp;quot;&lt;/font&gt;&lt;font color="#000000"&gt;&lt;b&gt;)&lt;/b&gt;&lt;/font&gt;;&lt;br /&gt;    &lt;font color="#000000"&gt;&lt;b&gt;}&lt;/b&gt;&lt;/font&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;font color="#ff8400"&gt;//&lt;/font&gt;&lt;font color="#ff8400"&gt;  &lt;/font&gt;&lt;font color="#ff8400"&gt;before():&lt;/font&gt;&lt;font color="#ff8400"&gt; &lt;/font&gt;&lt;font color="#ff8400"&gt;execution(public&lt;/font&gt;&lt;font color="#ff8400"&gt; &lt;/font&gt;&lt;font color="#ff8400"&gt;*&lt;/font&gt;&lt;font color="#ff8400"&gt; &lt;/font&gt;&lt;font color="#ff8400"&gt;com.tonbeller.jpivot..XMLA_SOAP.*(..)&lt;/font&gt;&lt;font color="#ff8400"&gt; &lt;/font&gt;&lt;font color="#ff8400"&gt;)&lt;/font&gt;&lt;font color="#ff8400"&gt; &lt;/font&gt;&lt;font color="#ff8400"&gt;{&lt;/font&gt;&lt;br /&gt;&lt;font color="#ff8400"&gt;//&lt;/font&gt;&lt;font color="#ff8400"&gt;  &lt;/font&gt;&lt;font color="#ff8400"&gt;    &lt;/font&gt;&lt;font color="#ff8400"&gt;System.err.println(&amp;quot;About&lt;/font&gt;&lt;font color="#ff8400"&gt; &lt;/font&gt;&lt;font color="#ff8400"&gt;to&lt;/font&gt;&lt;font color="#ff8400"&gt; &lt;/font&gt;&lt;font color="#ff8400"&gt;call&lt;/font&gt;&lt;font color="#ff8400"&gt; &lt;/font&gt;&lt;font color="#ff8400"&gt;&amp;quot;&lt;/font&gt;&lt;font color="#ff8400"&gt; &lt;/font&gt;&lt;font color="#ff8400"&gt;+&lt;/font&gt;&lt;font color="#ff8400"&gt; &lt;/font&gt;&lt;font color="#ff8400"&gt;thisJoinPoint.getSignature().toShortString() + &amp;quot;, args:&amp;quot; + Arrays.toString(thisJoinPoint.getArgs()) );&lt;/font&gt;&lt;br /&gt;&lt;font color="#ff8400"&gt;//&lt;/font&gt;&lt;font color="#ff8400"&gt;  &lt;/font&gt;&lt;font color="#ff8400"&gt;}&lt;/font&gt;&lt;br /&gt;&lt;br /&gt;    Object &lt;font color="#9966ff"&gt;around&lt;/font&gt;&lt;font color="#000000"&gt;&lt;b&gt;(&lt;/b&gt;&lt;/font&gt;&lt;font color="#000000"&gt;&lt;b&gt;)&lt;/b&gt;&lt;/font&gt; : &lt;font color="#9966ff"&gt;execution&lt;/font&gt;&lt;font color="#000000"&gt;&lt;b&gt;(&lt;/b&gt;&lt;/font&gt; &lt;font color="#000000"&gt;&lt;b&gt;*&lt;/b&gt;&lt;/font&gt; com.tonbeller.jpivot..XMLA_SOAP.&lt;font color="#9966ff"&gt;discoverMem&lt;/font&gt;&lt;font color="#000000"&gt;&lt;b&gt;(&lt;/b&gt;&lt;/font&gt;..&lt;font color="#000000"&gt;&lt;b&gt;)&lt;/b&gt;&lt;/font&gt; &lt;font color="#000000"&gt;&lt;b&gt;)&lt;/b&gt;&lt;/font&gt; &lt;font color="#000000"&gt;&lt;b&gt;{&lt;/b&gt;&lt;/font&gt;&lt;br /&gt;&lt;br /&gt;        &lt;font color="#006699"&gt;&lt;b&gt;final&lt;/b&gt;&lt;/font&gt; &lt;font color="#0099ff"&gt;&lt;b&gt;long&lt;/b&gt;&lt;/font&gt; startTimeCpuMs &lt;font color="#000000"&gt;&lt;b&gt;=&lt;/b&gt;&lt;/font&gt; &lt;font color="#9966ff"&gt;getCurrentTimeMs&lt;/font&gt;&lt;font color="#000000"&gt;&lt;b&gt;(&lt;/b&gt;&lt;/font&gt;&lt;font color="#000000"&gt;&lt;b&gt;)&lt;/b&gt;&lt;/font&gt;;&lt;br /&gt;        &lt;font color="#006699"&gt;&lt;b&gt;final&lt;/b&gt;&lt;/font&gt; &lt;font color="#0099ff"&gt;&lt;b&gt;long&lt;/b&gt;&lt;/font&gt; startTimeMs &lt;font color="#000000"&gt;&lt;b&gt;=&lt;/b&gt;&lt;/font&gt; System.&lt;font color="#9966ff"&gt;currentTimeMillis&lt;/font&gt;&lt;font color="#000000"&gt;&lt;b&gt;(&lt;/b&gt;&lt;/font&gt;&lt;font color="#000000"&gt;&lt;b&gt;)&lt;/b&gt;&lt;/font&gt;;&lt;br /&gt;&lt;br /&gt;        Object result &lt;font color="#000000"&gt;&lt;b&gt;=&lt;/b&gt;&lt;/font&gt; &lt;font color="#9966ff"&gt;proceed&lt;/font&gt;&lt;font color="#000000"&gt;&lt;b&gt;(&lt;/b&gt;&lt;/font&gt;&lt;font color="#000000"&gt;&lt;b&gt;)&lt;/b&gt;&lt;/font&gt;;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;        &lt;font color="#006699"&gt;&lt;b&gt;final&lt;/b&gt;&lt;/font&gt; &lt;font color="#0099ff"&gt;&lt;b&gt;long&lt;/b&gt;&lt;/font&gt; endTimeMs &lt;font color="#000000"&gt;&lt;b&gt;=&lt;/b&gt;&lt;/font&gt; System.&lt;font color="#9966ff"&gt;currentTimeMillis&lt;/font&gt;&lt;font color="#000000"&gt;&lt;b&gt;(&lt;/b&gt;&lt;/font&gt;&lt;font color="#000000"&gt;&lt;b&gt;)&lt;/b&gt;&lt;/font&gt;;&lt;br /&gt;        &lt;font color="#006699"&gt;&lt;b&gt;final&lt;/b&gt;&lt;/font&gt; &lt;font color="#0099ff"&gt;&lt;b&gt;long&lt;/b&gt;&lt;/font&gt; endTimeCpuMs &lt;font color="#000000"&gt;&lt;b&gt;=&lt;/b&gt;&lt;/font&gt; &lt;font color="#9966ff"&gt;getCurrentTimeMs&lt;/font&gt;&lt;font color="#000000"&gt;&lt;b&gt;(&lt;/b&gt;&lt;/font&gt;&lt;font color="#000000"&gt;&lt;b&gt;)&lt;/b&gt;&lt;/font&gt;;&lt;br /&gt;&lt;br /&gt;        &lt;font color="#006699"&gt;&lt;b&gt;final&lt;/b&gt;&lt;/font&gt; &lt;font color="#0099ff"&gt;&lt;b&gt;long&lt;/b&gt;&lt;/font&gt; execTimeMs &lt;font color="#000000"&gt;&lt;b&gt;=&lt;/b&gt;&lt;/font&gt; endTimeMs &lt;font color="#000000"&gt;&lt;b&gt;-&lt;/b&gt;&lt;/font&gt; startTimeMs;&lt;br /&gt;        &lt;font color="#006699"&gt;&lt;b&gt;final&lt;/b&gt;&lt;/font&gt; &lt;font color="#0099ff"&gt;&lt;b&gt;long&lt;/b&gt;&lt;/font&gt; execTimeCpuMs &lt;font color="#000000"&gt;&lt;b&gt;=&lt;/b&gt;&lt;/font&gt; endTimeCpuMs &lt;font color="#000000"&gt;&lt;b&gt;-&lt;/b&gt;&lt;/font&gt; startTimeCpuMs;&lt;br /&gt;&lt;br /&gt;        &lt;font color="#000000"&gt;&lt;b&gt;+&lt;/b&gt;&lt;/font&gt;&lt;font color="#000000"&gt;&lt;b&gt;+&lt;/b&gt;&lt;/font&gt;totalExecutionCount;&lt;br /&gt;        totalExecutionTimeMs &lt;font color="#000000"&gt;&lt;b&gt;+&lt;/b&gt;&lt;/font&gt;&lt;font color="#000000"&gt;&lt;b&gt;=&lt;/b&gt;&lt;/font&gt; execTimeMs;&lt;br /&gt;        totalCpuExecutionTimeMs &lt;font color="#000000"&gt;&lt;b&gt;+&lt;/b&gt;&lt;/font&gt;&lt;font color="#000000"&gt;&lt;b&gt;=&lt;/b&gt;&lt;/font&gt; execTimeCpuMs;&lt;br /&gt;&lt;br /&gt;        &lt;font color="#006699"&gt;&lt;b&gt;final&lt;/b&gt;&lt;/font&gt; String msg &lt;font color="#000000"&gt;&lt;b&gt;=&lt;/b&gt;&lt;/font&gt; &lt;font color="#ff00cc"&gt;&amp;quot;&lt;/font&gt;&lt;font color="#ff00cc"&gt;executing&lt;/font&gt;&lt;font color="#ff00cc"&gt; &lt;/font&gt;&lt;font color="#ff00cc"&gt;discoverMem&lt;/font&gt;&lt;font color="#ff00cc"&gt; &lt;/font&gt;&lt;font color="#ff00cc"&gt;#&lt;/font&gt;&lt;font color="#ff00cc"&gt;&amp;quot;&lt;/font&gt; &lt;font color="#000000"&gt;&lt;b&gt;+&lt;/b&gt;&lt;/font&gt; formatter.&lt;font color="#9966ff"&gt;format&lt;/font&gt;&lt;font color="#000000"&gt;&lt;b&gt;(&lt;/b&gt;&lt;/font&gt;totalExecutionCount&lt;font color="#000000"&gt;&lt;b&gt;)&lt;/b&gt;&lt;/font&gt; &lt;font color="#000000"&gt;&lt;b&gt;+&lt;/b&gt;&lt;/font&gt;&lt;br /&gt;                &lt;font color="#ff00cc"&gt;&amp;quot;&lt;/font&gt;&lt;font color="#ff00cc"&gt; &lt;/font&gt;&lt;font color="#ff00cc"&gt;took&lt;/font&gt;&lt;font color="#ff00cc"&gt; &lt;/font&gt;&lt;font color="#ff00cc"&gt;&amp;quot;&lt;/font&gt; &lt;font color="#000000"&gt;&lt;b&gt;+&lt;/b&gt;&lt;/font&gt; execTimeCpuMs &lt;font color="#000000"&gt;&lt;b&gt;+&lt;/b&gt;&lt;/font&gt; &lt;font color="#ff00cc"&gt;&amp;quot;&lt;/font&gt;&lt;font color="#ff00cc"&gt;ms&lt;/font&gt;&lt;font color="#ff00cc"&gt; &lt;/font&gt;&lt;font color="#ff00cc"&gt;of&lt;/font&gt;&lt;font color="#ff00cc"&gt; &lt;/font&gt;&lt;font color="#ff00cc"&gt;CPU,&lt;/font&gt;&lt;font color="#ff00cc"&gt; &lt;/font&gt;&lt;font color="#ff00cc"&gt;&amp;quot;&lt;/font&gt; &lt;font color="#000000"&gt;&lt;b&gt;+&lt;/b&gt;&lt;/font&gt;&lt;br /&gt;                execTimeMs &lt;font color="#000000"&gt;&lt;b&gt;+&lt;/b&gt;&lt;/font&gt; &lt;font color="#ff00cc"&gt;&amp;quot;&lt;/font&gt;&lt;font color="#ff00cc"&gt;ms&lt;/font&gt;&lt;font color="#ff00cc"&gt; &lt;/font&gt;&lt;font color="#ff00cc"&gt;real;&lt;/font&gt;&lt;font color="#ff00cc"&gt; &lt;/font&gt;&lt;font color="#ff00cc"&gt;current&lt;/font&gt;&lt;font color="#ff00cc"&gt; &lt;/font&gt;&lt;font color="#ff00cc"&gt;average&lt;/font&gt;&lt;font color="#ff00cc"&gt; &lt;/font&gt;&lt;font color="#ff00cc"&gt;is&lt;/font&gt;&lt;font color="#ff00cc"&gt; &lt;/font&gt;&lt;font color="#ff00cc"&gt;[ms/call]:&lt;/font&gt;&lt;font color="#ff00cc"&gt; &lt;/font&gt;&lt;font color="#ff00cc"&gt;&amp;quot;&lt;/font&gt; &lt;font color="#000000"&gt;&lt;b&gt;+&lt;/b&gt;&lt;/font&gt;&lt;br /&gt;                totalCpuExecutionTimeMs &lt;font color="#000000"&gt;&lt;b&gt;/&lt;/b&gt;&lt;/font&gt; totalExecutionCount &lt;font color="#000000"&gt;&lt;b&gt;+&lt;/b&gt;&lt;/font&gt; &lt;font color="#ff00cc"&gt;&amp;quot;&lt;/font&gt;&lt;font color="#ff00cc"&gt; &lt;/font&gt;&lt;font color="#ff00cc"&gt;for&lt;/font&gt;&lt;font color="#ff00cc"&gt; &lt;/font&gt;&lt;font color="#ff00cc"&gt;CPU,&lt;/font&gt;&lt;font color="#ff00cc"&gt; &lt;/font&gt;&lt;font color="#ff00cc"&gt;&amp;quot;&lt;/font&gt; &lt;font color="#000000"&gt;&lt;b&gt;+&lt;/b&gt;&lt;/font&gt;&lt;br /&gt;                totalExecutionTimeMs &lt;font color="#000000"&gt;&lt;b&gt;/&lt;/b&gt;&lt;/font&gt; totalExecutionCount &lt;font color="#000000"&gt;&lt;b&gt;+&lt;/b&gt;&lt;/font&gt; &lt;font color="#ff00cc"&gt;&amp;quot;&lt;/font&gt;&lt;font color="#ff00cc"&gt; &lt;/font&gt;&lt;font color="#ff00cc"&gt;real&lt;/font&gt;&lt;font color="#ff00cc"&gt; &lt;/font&gt;&lt;font color="#ff00cc"&gt;time.&lt;/font&gt;&lt;font color="#ff00cc"&gt;&amp;quot;&lt;/font&gt;;&lt;br /&gt;        System.out.&lt;font color="#9966ff"&gt;println&lt;/font&gt;&lt;font color="#000000"&gt;&lt;b&gt;(&lt;/b&gt;&lt;/font&gt;&lt;font color="#9966ff"&gt;getClass&lt;/font&gt;&lt;font color="#000000"&gt;&lt;b&gt;(&lt;/b&gt;&lt;/font&gt;&lt;font color="#000000"&gt;&lt;b&gt;)&lt;/b&gt;&lt;/font&gt;.&lt;font color="#9966ff"&gt;getName&lt;/font&gt;&lt;font color="#000000"&gt;&lt;b&gt;(&lt;/b&gt;&lt;/font&gt;&lt;font color="#000000"&gt;&lt;b&gt;)&lt;/b&gt;&lt;/font&gt; &lt;font color="#000000"&gt;&lt;b&gt;+&lt;/b&gt;&lt;/font&gt; &lt;font color="#ff00cc"&gt;&amp;quot;&lt;/font&gt;&lt;font color="#ff00cc"&gt;:&lt;/font&gt;&lt;font color="#ff00cc"&gt; &lt;/font&gt;&lt;font color="#ff00cc"&gt;&amp;quot;&lt;/font&gt; &lt;font color="#000000"&gt;&lt;b&gt;+&lt;/b&gt;&lt;/font&gt; msg&lt;font color="#000000"&gt;&lt;b&gt;)&lt;/b&gt;&lt;/font&gt;;&lt;br /&gt;&lt;br /&gt;        &lt;font color="#006699"&gt;&lt;b&gt;return&lt;/b&gt;&lt;/font&gt; result;&lt;br /&gt;    &lt;font color="#000000"&gt;&lt;b&gt;}&lt;/b&gt;&lt;/font&gt;&lt;br /&gt;&lt;br /&gt;&lt;font color="#000000"&gt;&lt;b&gt;}&lt;/b&gt;&lt;/font&gt;&lt;br /&gt;&lt;/font&gt;&lt;br /&gt;&lt;/pre&gt;

&lt;p&gt;(I've ommited the fields and some methods for brevity.)&lt;/p&gt;&lt;p&gt;PS: You can use the commented-out before adivce to print all methods called on XMLA_SOAP including their name and arguments. This is useful to find out whether the method you're trying to measure is actually called at all.&lt;br /&gt;&lt;/p&gt;

&lt;h3&gt;Solution 2: using annotation (@AspectJ)&lt;/h3&gt;&lt;p&gt;Since AspectJ 5 we can use a normal Java class with special annotations to define an aspect. It's less powerful (see above) but more familiar to a Java developer and more comfortable to use since it doesn't need any special compiler (the annotations are processed by AspectJ during weaving).&lt;/p&gt;&lt;p&gt;File &lt;b&gt;eu/ibacz/pbns/util/aspect/TimingAnnotatedAspect.java&lt;/b&gt;:&lt;/p&gt;

&lt;pre&gt;&lt;font color="#000000"&gt;&lt;font color="#009966"&gt;&lt;b&gt;package&lt;/b&gt;&lt;/font&gt; eu.ibacz.pbns.util.aspect;&lt;br /&gt;&lt;br /&gt;&lt;font color="#009966"&gt;&lt;b&gt;import&lt;/b&gt;&lt;/font&gt; ...&lt;br /&gt;&lt;br /&gt;&lt;font color="#66ccff"&gt;&lt;b&gt;@&lt;/b&gt;&lt;/font&gt; Aspect&lt;br /&gt;&lt;font color="#006699"&gt;&lt;b&gt;public&lt;/b&gt;&lt;/font&gt; &lt;font color="#0099ff"&gt;&lt;b&gt;class&lt;/b&gt;&lt;/font&gt; TimingAnnotatedAspect &lt;font color="#000000"&gt;&lt;b&gt;{&lt;/b&gt;&lt;/font&gt;&lt;br /&gt;&lt;br /&gt;    &lt;font color="#ff8400"&gt;//&lt;/font&gt;&lt;font color="#ff8400"&gt; &lt;/font&gt;&lt;font color="#ff8400"&gt;instance/class&lt;/font&gt;&lt;font color="#ff8400"&gt; &lt;/font&gt;&lt;font color="#ff8400"&gt;fields&lt;/font&gt;&lt;font color="#ff8400"&gt; &lt;/font&gt;&lt;font color="#ff8400"&gt;...&lt;/font&gt;&lt;font color="#ff8400"&gt;    &lt;/font&gt;&lt;br /&gt;&lt;br /&gt;    &lt;font color="#006699"&gt;&lt;b&gt;public&lt;/b&gt;&lt;/font&gt; &lt;font color="#9966ff"&gt;TimingAnnotatedAspect&lt;/font&gt;&lt;font color="#000000"&gt;&lt;b&gt;(&lt;/b&gt;&lt;/font&gt;&lt;font color="#000000"&gt;&lt;b&gt;)&lt;/b&gt;&lt;/font&gt; &lt;font color="#000000"&gt;&lt;b&gt;{&lt;/b&gt;&lt;/font&gt;&lt;br /&gt;        formatter &lt;font color="#000000"&gt;&lt;b&gt;=&lt;/b&gt;&lt;/font&gt; NumberFormat.&lt;font color="#9966ff"&gt;getIntegerInstance&lt;/font&gt;&lt;font color="#000000"&gt;&lt;b&gt;(&lt;/b&gt;&lt;/font&gt;&lt;font color="#000000"&gt;&lt;b&gt;)&lt;/b&gt;&lt;/font&gt;;&lt;br /&gt;        formatter.&lt;font color="#9966ff"&gt;setMinimumIntegerDigits&lt;/font&gt;&lt;font color="#000000"&gt;&lt;b&gt;(&lt;/b&gt;&lt;/font&gt;&lt;font color="#ff0000"&gt;3&lt;/font&gt;&lt;font color="#000000"&gt;&lt;b&gt;)&lt;/b&gt;&lt;/font&gt;;&lt;br /&gt;        System.out.&lt;font color="#9966ff"&gt;println&lt;/font&gt;&lt;font color="#000000"&gt;&lt;b&gt;(&lt;/b&gt;&lt;/font&gt;&lt;font color="#9966ff"&gt;getClass&lt;/font&gt;&lt;font color="#000000"&gt;&lt;b&gt;(&lt;/b&gt;&lt;/font&gt;&lt;font color="#000000"&gt;&lt;b&gt;)&lt;/b&gt;&lt;/font&gt; &lt;font color="#000000"&gt;&lt;b&gt;+&lt;/b&gt;&lt;/font&gt; &lt;font color="#ff00cc"&gt;&amp;quot;&lt;/font&gt;&lt;font color="#ff00cc"&gt; &lt;/font&gt;&lt;font color="#ff00cc"&gt;instantiated!&lt;/font&gt;&lt;font color="#ff00cc"&gt;&amp;quot;&lt;/font&gt;&lt;font color="#000000"&gt;&lt;b&gt;)&lt;/b&gt;&lt;/font&gt;;&lt;br /&gt;    &lt;font color="#000000"&gt;&lt;b&gt;}&lt;/b&gt;&lt;/font&gt;&lt;br /&gt;&lt;br /&gt;    &lt;font color="#66ccff"&gt;&lt;b&gt;@&lt;/b&gt;&lt;/font&gt;&lt;font color="#66ccff"&gt;&lt;b&gt;Around&lt;/b&gt;&lt;/font&gt;&lt;font color="#000000"&gt;&lt;b&gt;(&lt;/b&gt;&lt;/font&gt;&lt;font color="#ff00cc"&gt;&amp;quot;&lt;/font&gt;&lt;font color="#ff00cc"&gt;execution(&lt;/font&gt;&lt;font color="#ff00cc"&gt; &lt;/font&gt;&lt;font color="#ff00cc"&gt;*&lt;/font&gt;&lt;font color="#ff00cc"&gt; &lt;/font&gt;&lt;font color="#ff00cc"&gt;com.tonbeller.jpivot..XMLA_SOAP.discoverMem(..)&lt;/font&gt;&lt;font color="#ff00cc"&gt; &lt;/font&gt;&lt;font color="#ff00cc"&gt;)&lt;/font&gt;&lt;font color="#ff00cc"&gt;&amp;quot;&lt;/font&gt;&lt;font color="#000000"&gt;&lt;b&gt;)&lt;/b&gt;&lt;/font&gt;&lt;br /&gt;    &lt;font color="#006699"&gt;&lt;b&gt;public&lt;/b&gt;&lt;/font&gt; Object &lt;font color="#9966ff"&gt;measureTime&lt;/font&gt;&lt;font color="#000000"&gt;&lt;b&gt;(&lt;/b&gt;&lt;/font&gt;ProceedingJoinPoint pjp&lt;font color="#000000"&gt;&lt;b&gt;)&lt;/b&gt;&lt;/font&gt; &lt;font color="#006699"&gt;&lt;b&gt;throws&lt;/b&gt;&lt;/font&gt; Throwable &lt;font color="#000000"&gt;&lt;b&gt;{&lt;/b&gt;&lt;/font&gt;&lt;br /&gt;&lt;br /&gt;        &lt;font color="#006699"&gt;&lt;b&gt;final&lt;/b&gt;&lt;/font&gt; &lt;font color="#0099ff"&gt;&lt;b&gt;long&lt;/b&gt;&lt;/font&gt; startTimeCpuMs &lt;font color="#000000"&gt;&lt;b&gt;=&lt;/b&gt;&lt;/font&gt; &lt;font color="#9966ff"&gt;getCurrentTimeMs&lt;/font&gt;&lt;font color="#000000"&gt;&lt;b&gt;(&lt;/b&gt;&lt;/font&gt;&lt;font color="#000000"&gt;&lt;b&gt;)&lt;/b&gt;&lt;/font&gt;;&lt;br /&gt;        &lt;font color="#006699"&gt;&lt;b&gt;final&lt;/b&gt;&lt;/font&gt; &lt;font color="#0099ff"&gt;&lt;b&gt;long&lt;/b&gt;&lt;/font&gt; startTimeMs &lt;font color="#000000"&gt;&lt;b&gt;=&lt;/b&gt;&lt;/font&gt; System.&lt;font color="#9966ff"&gt;currentTimeMillis&lt;/font&gt;&lt;font color="#000000"&gt;&lt;b&gt;(&lt;/b&gt;&lt;/font&gt;&lt;font color="#000000"&gt;&lt;b&gt;)&lt;/b&gt;&lt;/font&gt;;&lt;br /&gt;&lt;br /&gt;        Object result &lt;font color="#000000"&gt;&lt;b&gt;=&lt;/b&gt;&lt;/font&gt; pjp.&lt;font color="#9966ff"&gt;proceed&lt;/font&gt;&lt;font color="#000000"&gt;&lt;b&gt;(&lt;/b&gt;&lt;/font&gt;&lt;font color="#000000"&gt;&lt;b&gt;)&lt;/b&gt;&lt;/font&gt;;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;        &lt;font color="#006699"&gt;&lt;b&gt;final&lt;/b&gt;&lt;/font&gt; &lt;font color="#0099ff"&gt;&lt;b&gt;long&lt;/b&gt;&lt;/font&gt; endTimeMs &lt;font color="#000000"&gt;&lt;b&gt;=&lt;/b&gt;&lt;/font&gt; System.&lt;font color="#9966ff"&gt;currentTimeMillis&lt;/font&gt;&lt;font color="#000000"&gt;&lt;b&gt;(&lt;/b&gt;&lt;/font&gt;&lt;font color="#000000"&gt;&lt;b&gt;)&lt;/b&gt;&lt;/font&gt;;&lt;br /&gt;        &lt;font color="#006699"&gt;&lt;b&gt;final&lt;/b&gt;&lt;/font&gt; &lt;font color="#0099ff"&gt;&lt;b&gt;long&lt;/b&gt;&lt;/font&gt; endTimeCpuMs &lt;font color="#000000"&gt;&lt;b&gt;=&lt;/b&gt;&lt;/font&gt; &lt;font color="#9966ff"&gt;getCurrentTimeMs&lt;/font&gt;&lt;font color="#000000"&gt;&lt;b&gt;(&lt;/b&gt;&lt;/font&gt;&lt;font color="#000000"&gt;&lt;b&gt;)&lt;/b&gt;&lt;/font&gt;;&lt;br /&gt;&lt;br /&gt;        &lt;font color="#006699"&gt;&lt;b&gt;final&lt;/b&gt;&lt;/font&gt; &lt;font color="#0099ff"&gt;&lt;b&gt;long&lt;/b&gt;&lt;/font&gt; execTimeMs &lt;font color="#000000"&gt;&lt;b&gt;=&lt;/b&gt;&lt;/font&gt; endTimeMs &lt;font color="#000000"&gt;&lt;b&gt;-&lt;/b&gt;&lt;/font&gt; startTimeMs;&lt;br /&gt;        &lt;font color="#006699"&gt;&lt;b&gt;final&lt;/b&gt;&lt;/font&gt; &lt;font color="#0099ff"&gt;&lt;b&gt;long&lt;/b&gt;&lt;/font&gt; execTimeCpuMs &lt;font color="#000000"&gt;&lt;b&gt;=&lt;/b&gt;&lt;/font&gt; endTimeCpuMs &lt;font color="#000000"&gt;&lt;b&gt;-&lt;/b&gt;&lt;/font&gt; startTimeCpuMs;&lt;br /&gt;&lt;br /&gt;        &lt;font color="#000000"&gt;&lt;b&gt;+&lt;/b&gt;&lt;/font&gt;&lt;font color="#000000"&gt;&lt;b&gt;+&lt;/b&gt;&lt;/font&gt;totalExecutionCount;&lt;br /&gt;        totalExecutionTimeMs &lt;font color="#000000"&gt;&lt;b&gt;+&lt;/b&gt;&lt;/font&gt;&lt;font color="#000000"&gt;&lt;b&gt;=&lt;/b&gt;&lt;/font&gt; execTimeMs;&lt;br /&gt;        totalCpuExecutionTimeMs &lt;font color="#000000"&gt;&lt;b&gt;+&lt;/b&gt;&lt;/font&gt;&lt;font color="#000000"&gt;&lt;b&gt;=&lt;/b&gt;&lt;/font&gt; execTimeCpuMs;&lt;br /&gt;&lt;br /&gt;        &lt;font color="#006699"&gt;&lt;b&gt;final&lt;/b&gt;&lt;/font&gt; String msg &lt;font color="#000000"&gt;&lt;b&gt;=&lt;/b&gt;&lt;/font&gt; &lt;font color="#ff00cc"&gt;&amp;quot;&lt;/font&gt;&lt;font color="#ff00cc"&gt;executing&lt;/font&gt;&lt;font color="#ff00cc"&gt; &lt;/font&gt;&lt;font color="#ff00cc"&gt;discoverMem&lt;/font&gt;&lt;font color="#ff00cc"&gt; &lt;/font&gt;&lt;font color="#ff00cc"&gt;#&lt;/font&gt;&lt;font color="#ff00cc"&gt;&amp;quot;&lt;/font&gt; &lt;font color="#000000"&gt;&lt;b&gt;+&lt;/b&gt;&lt;/font&gt; formatter.&lt;font color="#9966ff"&gt;format&lt;/font&gt;&lt;font color="#000000"&gt;&lt;b&gt;(&lt;/b&gt;&lt;/font&gt;totalExecutionCount&lt;font color="#000000"&gt;&lt;b&gt;)&lt;/b&gt;&lt;/font&gt; &lt;font color="#000000"&gt;&lt;b&gt;+&lt;/b&gt;&lt;/font&gt;&lt;br /&gt;                &lt;font color="#ff00cc"&gt;&amp;quot;&lt;/font&gt;&lt;font color="#ff00cc"&gt; &lt;/font&gt;&lt;font color="#ff00cc"&gt;took&lt;/font&gt;&lt;font color="#ff00cc"&gt; &lt;/font&gt;&lt;font color="#ff00cc"&gt;&amp;quot;&lt;/font&gt; &lt;font color="#000000"&gt;&lt;b&gt;+&lt;/b&gt;&lt;/font&gt; execTimeCpuMs &lt;font color="#000000"&gt;&lt;b&gt;+&lt;/b&gt;&lt;/font&gt; &lt;font color="#ff00cc"&gt;&amp;quot;&lt;/font&gt;&lt;font color="#ff00cc"&gt;ms&lt;/font&gt;&lt;font color="#ff00cc"&gt; &lt;/font&gt;&lt;font color="#ff00cc"&gt;of&lt;/font&gt;&lt;font color="#ff00cc"&gt; &lt;/font&gt;&lt;font color="#ff00cc"&gt;CPU,&lt;/font&gt;&lt;font color="#ff00cc"&gt; &lt;/font&gt;&lt;font color="#ff00cc"&gt;&amp;quot;&lt;/font&gt; &lt;font color="#000000"&gt;&lt;b&gt;+&lt;/b&gt;&lt;/font&gt;&lt;br /&gt;                execTimeMs &lt;font color="#000000"&gt;&lt;b&gt;+&lt;/b&gt;&lt;/font&gt; &lt;font color="#ff00cc"&gt;&amp;quot;&lt;/font&gt;&lt;font color="#ff00cc"&gt;ms&lt;/font&gt;&lt;font color="#ff00cc"&gt; &lt;/font&gt;&lt;font color="#ff00cc"&gt;real;&lt;/font&gt;&lt;font color="#ff00cc"&gt; &lt;/font&gt;&lt;font color="#ff00cc"&gt;current&lt;/font&gt;&lt;font color="#ff00cc"&gt; &lt;/font&gt;&lt;font color="#ff00cc"&gt;average&lt;/font&gt;&lt;font color="#ff00cc"&gt; &lt;/font&gt;&lt;font color="#ff00cc"&gt;is&lt;/font&gt;&lt;font color="#ff00cc"&gt; &lt;/font&gt;&lt;font color="#ff00cc"&gt;[ms/call]:&lt;/font&gt;&lt;font color="#ff00cc"&gt; &lt;/font&gt;&lt;font color="#ff00cc"&gt;&amp;quot;&lt;/font&gt; &lt;font color="#000000"&gt;&lt;b&gt;+&lt;/b&gt;&lt;/font&gt;&lt;br /&gt;                totalCpuExecutionTimeMs &lt;font color="#000000"&gt;&lt;b&gt;/&lt;/b&gt;&lt;/font&gt; totalExecutionCount &lt;font color="#000000"&gt;&lt;b&gt;+&lt;/b&gt;&lt;/font&gt; &lt;font color="#ff00cc"&gt;&amp;quot;&lt;/font&gt;&lt;font color="#ff00cc"&gt; &lt;/font&gt;&lt;font color="#ff00cc"&gt;for&lt;/font&gt;&lt;font color="#ff00cc"&gt; &lt;/font&gt;&lt;font color="#ff00cc"&gt;CPU,&lt;/font&gt;&lt;font color="#ff00cc"&gt; &lt;/font&gt;&lt;font color="#ff00cc"&gt;&amp;quot;&lt;/font&gt; &lt;font color="#000000"&gt;&lt;b&gt;+&lt;/b&gt;&lt;/font&gt;&lt;br /&gt;                totalExecutionTimeMs &lt;font color="#000000"&gt;&lt;b&gt;/&lt;/b&gt;&lt;/font&gt; totalExecutionCount &lt;font color="#000000"&gt;&lt;b&gt;+&lt;/b&gt;&lt;/font&gt; &lt;font color="#ff00cc"&gt;&amp;quot;&lt;/font&gt;&lt;font color="#ff00cc"&gt; &lt;/font&gt;&lt;font color="#ff00cc"&gt;real&lt;/font&gt;&lt;font color="#ff00cc"&gt; &lt;/font&gt;&lt;font color="#ff00cc"&gt;time.&lt;/font&gt;&lt;font color="#ff00cc"&gt;&amp;quot;&lt;/font&gt;;&lt;br /&gt;        System.out.&lt;font color="#9966ff"&gt;println&lt;/font&gt;&lt;font color="#000000"&gt;&lt;b&gt;(&lt;/b&gt;&lt;/font&gt;&lt;font color="#9966ff"&gt;getClass&lt;/font&gt;&lt;font color="#000000"&gt;&lt;b&gt;(&lt;/b&gt;&lt;/font&gt;&lt;font color="#000000"&gt;&lt;b&gt;)&lt;/b&gt;&lt;/font&gt;.&lt;font color="#9966ff"&gt;getName&lt;/font&gt;&lt;font color="#000000"&gt;&lt;b&gt;(&lt;/b&gt;&lt;/font&gt;&lt;font color="#000000"&gt;&lt;b&gt;)&lt;/b&gt;&lt;/font&gt; &lt;font color="#000000"&gt;&lt;b&gt;+&lt;/b&gt;&lt;/font&gt; &lt;font color="#ff00cc"&gt;&amp;quot;&lt;/font&gt;&lt;font color="#ff00cc"&gt;:&lt;/font&gt;&lt;font color="#ff00cc"&gt; &lt;/font&gt;&lt;font color="#ff00cc"&gt;&amp;quot;&lt;/font&gt; &lt;font color="#000000"&gt;&lt;b&gt;+&lt;/b&gt;&lt;/font&gt; msg&lt;font color="#000000"&gt;&lt;b&gt;)&lt;/b&gt;&lt;/font&gt;;&lt;br /&gt;&lt;br /&gt;        &lt;font color="#006699"&gt;&lt;b&gt;return&lt;/b&gt;&lt;/font&gt; result;&lt;br /&gt;    &lt;font color="#000000"&gt;&lt;b&gt;}&lt;/b&gt;&lt;/font&gt;&lt;br /&gt;&lt;font color="#000000"&gt;&lt;b&gt;}&lt;/b&gt;&lt;/font&gt;&lt;br /&gt;&lt;/font&gt;&lt;/pre&gt;

&lt;p&gt;As you can see, we've replaced the special AspectJ syntactical elements with annotationes @Aspect and @Around (there is also @Pointcut and others).&lt;br /&gt;&lt;/p&gt;&lt;p&gt;(I've ommited the fields and some methods for brevity.)&lt;/p&gt;&lt;h3&gt;Common project info&lt;br /&gt;&lt;/h3&gt;&lt;p&gt;For both project we need to have the class to modify with the aspect, in our case XMLA_SOAP, on the classpath, to get some special support from AJDT (see below). &lt;br /&gt;&lt;/p&gt;&lt;p&gt;The good thing when using AJDT is that if a pointcut definition (such as the execution(...) above) doesn't match an existing class/method, you will be warned about it - in Eclipse there will be the standard warning marker with text like &amp;quot;&lt;i&gt;no match for this type name: XMLA_SOAP [Xlint:invalidAbsoluteTypeName]&lt;/i&gt;&amp;quot;. This works both for .aj and .java files though it may not discover all issues.&lt;/p&gt;&lt;p&gt;The common code, if you're interested:&lt;/p&gt;

&lt;pre&gt;    &lt;font color="#006699"&gt;&lt;b&gt;private&lt;/b&gt;&lt;/font&gt; ThreadMXBean threadMxb;&lt;br /&gt;&lt;br /&gt;    &lt;font color="#6600cc"&gt;/**&lt;/font&gt;&lt;br /&gt;&lt;font color="#6600cc"&gt;    &lt;/font&gt;&lt;font color="#6600cc"&gt; &lt;/font&gt;&lt;font color="#6600cc"&gt;*&lt;/font&gt;&lt;font color="#6600cc"&gt; &lt;/font&gt;&lt;font color="#6600cc"&gt;Return&lt;/font&gt;&lt;font color="#6600cc"&gt; &lt;/font&gt;&lt;font color="#6600cc"&gt;the&lt;/font&gt;&lt;font color="#6600cc"&gt; &lt;/font&gt;&lt;font color="#6600cc"&gt;current&lt;/font&gt;&lt;font color="#6600cc"&gt; &lt;/font&gt;&lt;font color="#6600cc"&gt;time&lt;/font&gt;&lt;font color="#6600cc"&gt; &lt;/font&gt;&lt;font color="#6600cc"&gt;in&lt;/font&gt;&lt;font color="#6600cc"&gt; &lt;/font&gt;&lt;font color="#6600cc"&gt;miliseconds&lt;/font&gt;&lt;font color="#6600cc"&gt;,&lt;/font&gt;&lt;font color="#6600cc"&gt; &lt;/font&gt;&lt;font color="#6600cc"&gt;if&lt;/font&gt;&lt;font color="#6600cc"&gt; &lt;/font&gt;&lt;font color="#6600cc"&gt;possible&lt;/font&gt;&lt;font color="#6600cc"&gt;,&lt;/font&gt;&lt;font color="#6600cc"&gt; &lt;/font&gt;&lt;font color="#6600cc"&gt;return&lt;/font&gt;&lt;font color="#6600cc"&gt; &lt;/font&gt;&lt;font color="#6600cc"&gt;only&lt;/font&gt;&lt;font color="#6600cc"&gt; &lt;/font&gt;&lt;font color="#6600cc"&gt;the&lt;/font&gt;&lt;font color="#6600cc"&gt; &lt;/font&gt;&lt;font color="#6600cc"&gt;current&lt;/font&gt;&lt;font color="#6600cc"&gt; &lt;/font&gt;&lt;font color="#6600cc"&gt;thread&lt;/font&gt;&lt;font color="#6600cc"&gt;'&lt;/font&gt;&lt;font color="#6600cc"&gt;s&lt;/font&gt;&lt;font color="#6600cc"&gt; &lt;/font&gt;&lt;font color="#6600cc"&gt;CPU&lt;/font&gt;&lt;font color="#6600cc"&gt; &lt;/font&gt;&lt;font color="#6600cc"&gt;time&lt;/font&gt;&lt;font color="#6600cc"&gt;,&lt;/font&gt;&lt;font color="#6600cc"&gt; &lt;/font&gt;&lt;font color="#6600cc"&gt;if&lt;/font&gt;&lt;font color="#6600cc"&gt; &lt;/font&gt;&lt;font color="#6600cc"&gt;not&lt;/font&gt;&lt;font color="#6600cc"&gt;,&lt;/font&gt;&lt;br /&gt;&lt;font color="#6600cc"&gt;    &lt;/font&gt;&lt;font color="#6600cc"&gt; &lt;/font&gt;&lt;font color="#6600cc"&gt;*&lt;/font&gt;&lt;font color="#6600cc"&gt; &lt;/font&gt;&lt;font color="#6600cc"&gt;return&lt;/font&gt;&lt;font color="#6600cc"&gt; &lt;/font&gt;&lt;font color="#6600cc"&gt;system&lt;/font&gt;&lt;font color="#6600cc"&gt; &lt;/font&gt;&lt;font color="#6600cc"&gt;time&lt;/font&gt;&lt;font color="#6600cc"&gt;.&lt;/font&gt;&lt;br /&gt;&lt;font color="#6600cc"&gt;    &lt;/font&gt;&lt;font color="#6600cc"&gt; &lt;/font&gt;&lt;font color="#6600cc"&gt;*&lt;/font&gt;&lt;font color="#6600cc"&gt; &lt;/font&gt;&lt;font color="#0000ff"&gt;&amp;lt;&lt;/font&gt;&lt;font color="#0000ff"&gt;p&lt;/font&gt;&lt;font color="#0000ff"&gt;&amp;gt;&lt;/font&gt;&lt;br /&gt;&lt;font color="#6600cc"&gt;    &lt;/font&gt;&lt;font color="#6600cc"&gt; &lt;/font&gt;&lt;font color="#6600cc"&gt;*&lt;/font&gt;&lt;font color="#6600cc"&gt; &lt;/font&gt;&lt;font color="#6600cc"&gt;thread&lt;/font&gt;&lt;font color="#6600cc"&gt;'&lt;/font&gt;&lt;font color="#6600cc"&gt;s&lt;/font&gt;&lt;font color="#6600cc"&gt; &lt;/font&gt;&lt;font color="#6600cc"&gt;CPU&lt;/font&gt;&lt;font color="#6600cc"&gt; &lt;/font&gt;&lt;font color="#6600cc"&gt;time&lt;/font&gt;&lt;font color="#6600cc"&gt; &lt;/font&gt;&lt;font color="#6600cc"&gt;is&lt;/font&gt;&lt;font color="#6600cc"&gt; &lt;/font&gt;&lt;font color="#6600cc"&gt;usually&lt;/font&gt;&lt;font color="#6600cc"&gt; &lt;/font&gt;&lt;font color="#6600cc"&gt;few&lt;/font&gt;&lt;font color="#6600cc"&gt; &lt;/font&gt;&lt;font color="#6600cc"&gt;times&lt;/font&gt;&lt;font color="#6600cc"&gt; &lt;/font&gt;&lt;font color="#6600cc"&gt;less&lt;/font&gt;&lt;font color="#6600cc"&gt; &lt;/font&gt;&lt;font color="#6600cc"&gt;than&lt;/font&gt;&lt;font color="#6600cc"&gt; &lt;/font&gt;&lt;font color="#6600cc"&gt;the&lt;/font&gt;&lt;font color="#6600cc"&gt; &lt;/font&gt;&lt;font color="#6600cc"&gt;absolute&lt;/font&gt;&lt;font color="#6600cc"&gt; &lt;/font&gt;&lt;font color="#6600cc"&gt;time&lt;/font&gt;&lt;font color="#6600cc"&gt; &lt;/font&gt;&lt;font color="#6600cc"&gt;between&lt;/font&gt;&lt;br /&gt;&lt;font color="#6600cc"&gt;    &lt;/font&gt;&lt;font color="#6600cc"&gt; &lt;/font&gt;&lt;font color="#6600cc"&gt;*&lt;/font&gt;&lt;font color="#6600cc"&gt; &lt;/font&gt;&lt;font color="#6600cc"&gt;its&lt;/font&gt;&lt;font color="#6600cc"&gt; &lt;/font&gt;&lt;font color="#6600cc"&gt;start&lt;/font&gt;&lt;font color="#6600cc"&gt; &lt;/font&gt;&lt;font color="#6600cc"&gt;and&lt;/font&gt;&lt;font color="#6600cc"&gt; &lt;/font&gt;&lt;font color="#6600cc"&gt;end&lt;/font&gt;&lt;font color="#6600cc"&gt; &lt;/font&gt;&lt;font color="#6600cc"&gt;due&lt;/font&gt;&lt;font color="#6600cc"&gt; &lt;/font&gt;&lt;font color="#6600cc"&gt;to&lt;/font&gt;&lt;font color="#6600cc"&gt; &lt;/font&gt;&lt;font color="#6600cc"&gt;the&lt;/font&gt;&lt;font color="#6600cc"&gt; &lt;/font&gt;&lt;font color="#6600cc"&gt;fact&lt;/font&gt;&lt;font color="#6600cc"&gt; &lt;/font&gt;&lt;font color="#6600cc"&gt;that&lt;/font&gt;&lt;font color="#6600cc"&gt; &lt;/font&gt;&lt;font color="#6600cc"&gt;it&lt;/font&gt;&lt;font color="#6600cc"&gt; &lt;/font&gt;&lt;font color="#6600cc"&gt;has&lt;/font&gt;&lt;font color="#6600cc"&gt; &lt;/font&gt;&lt;font color="#6600cc"&gt;to&lt;/font&gt;&lt;font color="#6600cc"&gt; &lt;/font&gt;&lt;font color="#6600cc"&gt;share&lt;/font&gt;&lt;font color="#6600cc"&gt; &lt;/font&gt;&lt;font color="#6600cc"&gt;the&lt;/font&gt;&lt;font color="#6600cc"&gt; &lt;/font&gt;&lt;font color="#6600cc"&gt;CPU&lt;/font&gt;&lt;font color="#6600cc"&gt; &lt;/font&gt;&lt;font color="#6600cc"&gt;with&lt;/font&gt;&lt;font color="#6600cc"&gt; &lt;/font&gt;&lt;font color="#6600cc"&gt;other&lt;/font&gt;&lt;font color="#6600cc"&gt; &lt;/font&gt;&lt;font color="#6600cc"&gt;processes&lt;/font&gt;&lt;font color="#6600cc"&gt;/&lt;/font&gt;&lt;font color="#6600cc"&gt;threads&lt;/font&gt;&lt;font color="#6600cc"&gt;.&lt;/font&gt;&lt;br /&gt;&lt;font color="#6600cc"&gt;    &lt;/font&gt;&lt;font color="#6600cc"&gt; &lt;/font&gt;&lt;font color="#6600cc"&gt;*/&lt;/font&gt;&lt;br /&gt;    &lt;font color="#006699"&gt;&lt;b&gt;private&lt;/b&gt;&lt;/font&gt; &lt;font color="#0099ff"&gt;&lt;b&gt;long&lt;/b&gt;&lt;/font&gt; &lt;font color="#9966ff"&gt;getCurrentTimeMs&lt;/font&gt;&lt;font color="#000000"&gt;&lt;b&gt;(&lt;/b&gt;&lt;/font&gt;&lt;font color="#000000"&gt;&lt;b&gt;)&lt;/b&gt;&lt;/font&gt; &lt;font color="#000000"&gt;&lt;b&gt;{&lt;/b&gt;&lt;/font&gt;&lt;br /&gt;        &lt;font color="#006699"&gt;&lt;b&gt;return&lt;/b&gt;&lt;/font&gt; &lt;font color="#9966ff"&gt;getThreadMxBean&lt;/font&gt;&lt;font color="#000000"&gt;&lt;b&gt;(&lt;/b&gt;&lt;/font&gt;&lt;font color="#000000"&gt;&lt;b&gt;)&lt;/b&gt;&lt;/font&gt;.&lt;font color="#9966ff"&gt;isCurrentThreadCpuTimeSupported&lt;/font&gt;&lt;font color="#000000"&gt;&lt;b&gt;(&lt;/b&gt;&lt;/font&gt;&lt;font color="#000000"&gt;&lt;b&gt;)&lt;/b&gt;&lt;/font&gt;?&lt;br /&gt;                threadMxb.&lt;font color="#9966ff"&gt;getCurrentThreadCpuTime&lt;/font&gt;&lt;font color="#000000"&gt;&lt;b&gt;(&lt;/b&gt;&lt;/font&gt;&lt;font color="#000000"&gt;&lt;b&gt;)&lt;/b&gt;&lt;/font&gt; &lt;font color="#000000"&gt;&lt;b&gt;/&lt;/b&gt;&lt;/font&gt; &lt;font color="#ff0000"&gt;1000000&lt;/font&gt; : System.&lt;font color="#9966ff"&gt;currentTimeMillis&lt;/font&gt;&lt;font color="#000000"&gt;&lt;b&gt;(&lt;/b&gt;&lt;/font&gt;&lt;font color="#000000"&gt;&lt;b&gt;)&lt;/b&gt;&lt;/font&gt;;&lt;br /&gt;&lt;br /&gt;    &lt;font color="#000000"&gt;&lt;b&gt;}&lt;/b&gt;&lt;/font&gt; &lt;font color="#cc0000"&gt;/*&lt;/font&gt;&lt;font color="#cc0000"&gt; &lt;/font&gt;&lt;font color="#cc0000"&gt;getCurrentTimeNano&lt;/font&gt;&lt;font color="#cc0000"&gt; &lt;/font&gt;&lt;font color="#cc0000"&gt;*/&lt;/font&gt;&lt;br /&gt;&lt;br /&gt;    &lt;font color="#6600cc"&gt;/**&lt;/font&gt;&lt;font color="#6600cc"&gt; &lt;/font&gt;&lt;font color="#6600cc"&gt;Lazy&lt;/font&gt;&lt;font color="#6600cc"&gt;-&lt;/font&gt;&lt;font color="#6600cc"&gt;init&lt;/font&gt;&lt;font color="#6600cc"&gt; &lt;/font&gt;&lt;font color="#6600cc"&gt;getter&lt;/font&gt;&lt;font color="#6600cc"&gt;.&lt;/font&gt;&lt;font color="#6600cc"&gt; &lt;/font&gt;&lt;font color="#6600cc"&gt;*/&lt;/font&gt;&lt;br /&gt;    &lt;font color="#006699"&gt;&lt;b&gt;private&lt;/b&gt;&lt;/font&gt; ThreadMXBean &lt;font color="#9966ff"&gt;getThreadMxBean&lt;/font&gt;&lt;font color="#000000"&gt;&lt;b&gt;(&lt;/b&gt;&lt;/font&gt;&lt;font color="#000000"&gt;&lt;b&gt;)&lt;/b&gt;&lt;/font&gt; &lt;font color="#000000"&gt;&lt;b&gt;{&lt;/b&gt;&lt;/font&gt;&lt;br /&gt;        &lt;font color="#006699"&gt;&lt;b&gt;if&lt;/b&gt;&lt;/font&gt; &lt;font color="#000000"&gt;&lt;b&gt;(&lt;/b&gt;&lt;/font&gt;threadMxb &lt;font color="#000000"&gt;&lt;b&gt;=&lt;/b&gt;&lt;/font&gt;&lt;font color="#000000"&gt;&lt;b&gt;=&lt;/b&gt;&lt;/font&gt; &lt;font color="#cc00cc"&gt;null&lt;/font&gt;&lt;font color="#000000"&gt;&lt;b&gt;)&lt;/b&gt;&lt;/font&gt; &lt;font color="#000000"&gt;&lt;b&gt;{&lt;/b&gt;&lt;/font&gt;&lt;br /&gt;            threadMxb &lt;font color="#000000"&gt;&lt;b&gt;=&lt;/b&gt;&lt;/font&gt; ManagementFactory.&lt;font color="#9966ff"&gt;getThreadMXBean&lt;/font&gt;&lt;font color="#000000"&gt;&lt;b&gt;(&lt;/b&gt;&lt;/font&gt;&lt;font color="#000000"&gt;&lt;b&gt;)&lt;/b&gt;&lt;/font&gt;;&lt;br /&gt;&lt;br /&gt;            &lt;font color="#006699"&gt;&lt;b&gt;if&lt;/b&gt;&lt;/font&gt; &lt;font color="#000000"&gt;&lt;b&gt;(&lt;/b&gt;&lt;/font&gt;threadMxb.&lt;font color="#9966ff"&gt;isThreadCpuTimeSupported&lt;/font&gt;&lt;font color="#000000"&gt;&lt;b&gt;(&lt;/b&gt;&lt;/font&gt;&lt;font color="#000000"&gt;&lt;b&gt;)&lt;/b&gt;&lt;/font&gt;&lt;font color="#000000"&gt;&lt;b&gt;)&lt;/b&gt;&lt;/font&gt; &lt;font color="#000000"&gt;&lt;b&gt;{&lt;/b&gt;&lt;/font&gt;&lt;br /&gt;                LOG.&lt;font color="#9966ff"&gt;info&lt;/font&gt;&lt;font color="#000000"&gt;&lt;b&gt;(&lt;/b&gt;&lt;/font&gt;&lt;font color="#ff00cc"&gt;&amp;quot;&lt;/font&gt;&lt;font color="#ff00cc"&gt;Thread&lt;/font&gt;&lt;font color="#ff00cc"&gt; &lt;/font&gt;&lt;font color="#ff00cc"&gt;user/cpu&lt;/font&gt;&lt;font color="#ff00cc"&gt; &lt;/font&gt;&lt;font color="#ff00cc"&gt;time&lt;/font&gt;&lt;font color="#ff00cc"&gt; &lt;/font&gt;&lt;font color="#ff00cc"&gt;monitoring&lt;/font&gt;&lt;font color="#ff00cc"&gt; &lt;/font&gt;&lt;font color="#ff00cc"&gt;supported.&lt;/font&gt;&lt;font color="#ff00cc"&gt;&amp;quot;&lt;/font&gt;&lt;font color="#000000"&gt;&lt;b&gt;)&lt;/b&gt;&lt;/font&gt;;&lt;br /&gt;                &lt;font color="#006699"&gt;&lt;b&gt;if&lt;/b&gt;&lt;/font&gt; &lt;font color="#000000"&gt;&lt;b&gt;(&lt;/b&gt;&lt;/font&gt;threadMxb.&lt;font color="#9966ff"&gt;isThreadCpuTimeSupported&lt;/font&gt;&lt;font color="#000000"&gt;&lt;b&gt;(&lt;/b&gt;&lt;/font&gt;&lt;font color="#000000"&gt;&lt;b&gt;)&lt;/b&gt;&lt;/font&gt; &lt;font color="#000000"&gt;&lt;b&gt;&amp;amp;&lt;/b&gt;&lt;/font&gt;&lt;font color="#000000"&gt;&lt;b&gt;&amp;amp;&lt;/b&gt;&lt;/font&gt; threadMxb.&lt;font color="#9966ff"&gt;isThreadCpuTimeEnabled&lt;/font&gt;&lt;font color="#000000"&gt;&lt;b&gt;(&lt;/b&gt;&lt;/font&gt;&lt;font color="#000000"&gt;&lt;b&gt;)&lt;/b&gt;&lt;/font&gt;&lt;font color="#000000"&gt;&lt;b&gt;)&lt;/b&gt;&lt;/font&gt; &lt;font color="#000000"&gt;&lt;b&gt;{&lt;/b&gt;&lt;/font&gt;&lt;br /&gt;                        LOG.&lt;font color="#9966ff"&gt;info&lt;/font&gt;&lt;font color="#000000"&gt;&lt;b&gt;(&lt;/b&gt;&lt;/font&gt;&lt;font color="#ff00cc"&gt;&amp;quot;&lt;/font&gt;&lt;font color="#ff00cc"&gt;Thread&lt;/font&gt;&lt;font color="#ff00cc"&gt; &lt;/font&gt;&lt;font color="#ff00cc"&gt;user/cpu&lt;/font&gt;&lt;font color="#ff00cc"&gt; &lt;/font&gt;&lt;font color="#ff00cc"&gt;time&lt;/font&gt;&lt;font color="#ff00cc"&gt; &lt;/font&gt;&lt;font color="#ff00cc"&gt;monitoring&lt;/font&gt;&lt;font color="#ff00cc"&gt; &lt;/font&gt;&lt;font color="#ff00cc"&gt;supported&amp;amp;enabled.&lt;/font&gt;&lt;font color="#ff00cc"&gt;&amp;quot;&lt;/font&gt;&lt;font color="#000000"&gt;&lt;b&gt;)&lt;/b&gt;&lt;/font&gt;; &lt;font color="#ff8400"&gt;//&lt;/font&gt;&lt;font color="#ff8400"&gt; &lt;/font&gt;&lt;font color="#ff8400"&gt;TODO&lt;/font&gt;&lt;font color="#ff8400"&gt; &lt;/font&gt;&lt;font color="#ff8400"&gt;do&lt;/font&gt;&lt;font color="#ff8400"&gt; &lt;/font&gt;&lt;font color="#ff8400"&gt;only&lt;/font&gt;&lt;font color="#ff8400"&gt; &lt;/font&gt;&lt;font color="#ff8400"&gt;once&lt;/font&gt;&lt;br /&gt;                &lt;font color="#000000"&gt;&lt;b&gt;}&lt;/b&gt;&lt;/font&gt; &lt;font color="#006699"&gt;&lt;b&gt;else&lt;/b&gt;&lt;/font&gt; &lt;font color="#000000"&gt;&lt;b&gt;{&lt;/b&gt;&lt;/font&gt;&lt;br /&gt;                    LOG.&lt;font color="#9966ff"&gt;warn&lt;/font&gt;&lt;font color="#000000"&gt;&lt;b&gt;(&lt;/b&gt;&lt;/font&gt;&lt;font color="#ff00cc"&gt;&amp;quot;&lt;/font&gt;&lt;font color="#ff00cc"&gt;Thread&lt;/font&gt;&lt;font color="#ff00cc"&gt; &lt;/font&gt;&lt;font color="#ff00cc"&gt;user/cpu&lt;/font&gt;&lt;font color="#ff00cc"&gt; &lt;/font&gt;&lt;font color="#ff00cc"&gt;time&lt;/font&gt;&lt;font color="#ff00cc"&gt; &lt;/font&gt;&lt;font color="#ff00cc"&gt;monitoring&lt;/font&gt;&lt;font color="#ff00cc"&gt; &lt;/font&gt;&lt;font color="#ff00cc"&gt;supported&lt;/font&gt;&lt;font color="#ff00cc"&gt; &lt;/font&gt;&lt;font color="#ff00cc"&gt;but&lt;/font&gt;&lt;font color="#ff00cc"&gt; &lt;/font&gt;&lt;font color="#ff00cc"&gt;disabled.&lt;/font&gt;&lt;font color="#ff00cc"&gt;&amp;quot;&lt;/font&gt;&lt;font color="#000000"&gt;&lt;b&gt;)&lt;/b&gt;&lt;/font&gt;;&lt;br /&gt;                &lt;font color="#000000"&gt;&lt;b&gt;}&lt;/b&gt;&lt;/font&gt;&lt;br /&gt;            &lt;font color="#000000"&gt;&lt;b&gt;}&lt;/b&gt;&lt;/font&gt; &lt;font color="#006699"&gt;&lt;b&gt;else&lt;/b&gt;&lt;/font&gt; &lt;font color="#000000"&gt;&lt;b&gt;{&lt;/b&gt;&lt;/font&gt;&lt;br /&gt;                LOG.&lt;font color="#9966ff"&gt;warn&lt;/font&gt;&lt;font color="#000000"&gt;&lt;b&gt;(&lt;/b&gt;&lt;/font&gt;&lt;font color="#ff00cc"&gt;&amp;quot;&lt;/font&gt;&lt;font color="#ff00cc"&gt;Thread&lt;/font&gt;&lt;font color="#ff00cc"&gt; &lt;/font&gt;&lt;font color="#ff00cc"&gt;user/cpu&lt;/font&gt;&lt;font color="#ff00cc"&gt; &lt;/font&gt;&lt;font color="#ff00cc"&gt;time&lt;/font&gt;&lt;font color="#ff00cc"&gt; &lt;/font&gt;&lt;font color="#ff00cc"&gt;monitoring&lt;/font&gt;&lt;font color="#ff00cc"&gt; &lt;/font&gt;&lt;font color="#ff00cc"&gt;NOT&lt;/font&gt;&lt;font color="#ff00cc"&gt; &lt;/font&gt;&lt;font color="#ff00cc"&gt;supported.&lt;/font&gt;&lt;font color="#ff00cc"&gt;&amp;quot;&lt;/font&gt;&lt;font color="#000000"&gt;&lt;b&gt;)&lt;/b&gt;&lt;/font&gt;;&lt;br /&gt;            &lt;font color="#000000"&gt;&lt;b&gt;}&lt;/b&gt;&lt;/font&gt; &lt;font color="#ff8400"&gt;//&lt;/font&gt;&lt;font color="#ff8400"&gt; &lt;/font&gt;&lt;font color="#ff8400"&gt;supported&lt;/font&gt;&lt;font color="#ff8400"&gt; &lt;/font&gt;&lt;font color="#ff8400"&gt;thr.&lt;/font&gt;&lt;font color="#ff8400"&gt; &lt;/font&gt;&lt;font color="#ff8400"&gt;time&lt;/font&gt;&lt;br /&gt;        &lt;font color="#000000"&gt;&lt;b&gt;}&lt;/b&gt;&lt;/font&gt;&lt;br /&gt;&lt;br /&gt;        &lt;font color="#006699"&gt;&lt;b&gt;return&lt;/b&gt;&lt;/font&gt; threadMxb;&lt;br /&gt;    &lt;font color="#000000"&gt;&lt;b&gt;}&lt;/b&gt;&lt;/font&gt; &lt;font color="#cc0000"&gt;/*&lt;/font&gt;&lt;font color="#cc0000"&gt; &lt;/font&gt;&lt;font color="#cc0000"&gt;getThreadMxBean&lt;/font&gt;&lt;font color="#cc0000"&gt; &lt;/font&gt;&lt;font color="#cc0000"&gt;*/&lt;/font&gt;&lt;br /&gt;&lt;/pre&gt;

&lt;p&gt;.&lt;br /&gt;&lt;/p&gt;&lt;h2&gt;Integrating the aspect into the JUnit test&lt;/h2&gt;&lt;p&gt;Our tracing aspect is ready and we want to apply it to XMLA_SOAP.discoverMem when running our JUnit test OLAPModelStructurePerformanceTest. Unfortunately AJDT doesn't provide any support for running JUnit tests with AspectJ support though it does that for normal java programs via the additional Run As... &amp;gt; AspectJ/Java Application menu item therefore we will need to do it manually. Maybe there is a better way but this is what I did:&lt;/p&gt;&lt;ol&gt;&lt;li&gt;Get aspectjweaver.jar - it includes complete AspectJ runtime plus Java 5 agent lib.&lt;/li&gt;&lt;li&gt;Modify the Run configuration of the JUnit test (Run &amp;gt; Run Configurations) as follows:&lt;/li&gt;&lt;ol&gt;&lt;li&gt;On the tab Arguments, add the VM argument &lt;br /&gt;-javaagent:/path/to/aspectjweaver.jar&lt;/li&gt;&lt;li&gt;On the tab Classpath, click on User Entries and add there the project MyAspectProject so that it can see the aspect.&lt;br /&gt;&lt;/li&gt;&lt;/ol&gt;&lt;li&gt;In the project MyTestProject create under /src/test/java/ (or any other source folder) META-INF/aop.xml with the content shown below.&lt;br /&gt;&lt;/li&gt;&lt;/ol&gt;&lt;p&gt;File &lt;b&gt;aop.xml&lt;/b&gt; :&lt;/p&gt;

&lt;pre&gt;&lt;font color="#000000"&gt;&lt;font color="#0000ff"&gt;&amp;lt;&lt;/font&gt;&lt;font color="#0000ff"&gt;aspectj&lt;/font&gt;&lt;font color="#0000ff"&gt;&amp;gt;&lt;/font&gt;&lt;br /&gt;    &lt;font color="#0000ff"&gt;&amp;lt;&lt;/font&gt;&lt;font color="#0000ff"&gt;aspects&lt;/font&gt;&lt;font color="#0000ff"&gt;&amp;gt;&lt;/font&gt;&lt;br /&gt;        &lt;font color="#cc0000"&gt;&amp;lt;!--&lt;/font&gt;&lt;font color="#cc0000"&gt; &lt;/font&gt;&lt;font color="#cc0000"&gt;aspect&lt;/font&gt;&lt;font color="#cc0000"&gt; &lt;/font&gt;&lt;font color="#cc0000"&gt;name=&amp;quot;eu.ibacz.pbns.util.aspect.TimingAspect&amp;quot;/&lt;/font&gt;&lt;font color="#cc0000"&gt;--&amp;gt;&lt;/font&gt; &lt;font color="#cc0000"&gt;&amp;lt;!--&lt;/font&gt;&lt;font color="#cc0000"&gt; &lt;/font&gt;&lt;font color="#cc0000"&gt; &lt;/font&gt;&lt;font color="#cc0000"&gt;fails&lt;/font&gt;&lt;font color="#cc0000"&gt; &lt;/font&gt;&lt;font color="#cc0000"&gt;if&lt;/font&gt;&lt;font color="#cc0000"&gt; &lt;/font&gt;&lt;font color="#cc0000"&gt;not&lt;/font&gt;&lt;font color="#cc0000"&gt; &lt;/font&gt;&lt;font color="#cc0000"&gt;found&lt;/font&gt;&lt;font color="#cc0000"&gt; &lt;/font&gt;&lt;font color="#cc0000"&gt;--&amp;gt;&lt;/font&gt;&lt;br /&gt;        &lt;font color="#0000ff"&gt;&amp;lt;&lt;/font&gt;&lt;font color="#0000ff"&gt;aspect&lt;/font&gt;&lt;font color="#0000ff"&gt; &lt;/font&gt;&lt;font color="#0000ff"&gt;name&lt;/font&gt;&lt;font color="#0000ff"&gt;=&lt;/font&gt;&lt;font color="#ff00cc"&gt;&amp;quot;&lt;/font&gt;&lt;font color="#ff00cc"&gt;eu.ibacz.pbns.util.aspect.TimingAnnotatedAspect&lt;/font&gt;&lt;font color="#ff00cc"&gt;&amp;quot;&lt;/font&gt;&lt;font color="#0000ff"&gt;/&lt;/font&gt;&lt;font color="#0000ff"&gt;&amp;gt;&lt;/font&gt;&lt;br /&gt;    &lt;font color="#0000ff"&gt;&amp;lt;&lt;/font&gt;&lt;font color="#0000ff"&gt;/&lt;/font&gt;&lt;font color="#0000ff"&gt;aspects&lt;/font&gt;&lt;font color="#0000ff"&gt;&amp;gt;&lt;/font&gt;&lt;br /&gt;&lt;font color="#0000ff"&gt;&amp;lt;&lt;/font&gt;&lt;font color="#0000ff"&gt;/&lt;/font&gt;&lt;font color="#0000ff"&gt;aspectj&lt;/font&gt;&lt;font color="#0000ff"&gt;&amp;gt;&lt;/font&gt;&lt;br /&gt;&lt;/font&gt;&lt;/pre&gt;

&lt;p&gt;This file tells AspectJ's Load-Time Weaver what aspects to introduce into the existing classes. Without it no instrumentation would occur. You can configure here which of the 2 aspects to use.&lt;br /&gt;&lt;/p&gt;

&lt;h2&gt;Troubleshooting load-time weaving &lt;/h2&gt;&lt;p&gt;If you need to learn more about what AspectJ does during the weaving and whether it does modify the target class or not (e.g. due to wrong pointcut match pattern or classpath order) you may enable some logging using either some properties on the command-line or by specifying this in the aop.xml:&lt;/p&gt;

&lt;pre&gt;&lt;font color="#000000"&gt;&lt;font color="#0000ff"&gt;&amp;lt;&lt;/font&gt;&lt;font color="#0000ff"&gt;aspectj&lt;/font&gt;&lt;font color="#0000ff"&gt;&amp;gt;&lt;/font&gt;&lt;br /&gt;    &lt;font color="#0000ff"&gt;&amp;lt;&lt;/font&gt;&lt;font color="#0000ff"&gt;aspects&lt;/font&gt;&lt;font color="#0000ff"&gt;&amp;gt;&lt;/font&gt;&lt;br /&gt;        &lt;font color="#cc0000"&gt;&amp;lt;!--&lt;/font&gt;&lt;font color="#cc0000"&gt; &lt;/font&gt;&lt;font color="#cc0000"&gt;aspect&lt;/font&gt;&lt;font color="#cc0000"&gt; &lt;/font&gt;&lt;font color="#cc0000"&gt;name=&amp;quot;eu.ibacz.pbns.util.aspect.TimingAspect&amp;quot;/&lt;/font&gt;&lt;font color="#cc0000"&gt;--&amp;gt;&lt;/font&gt; &lt;font color="#cc0000"&gt;&amp;lt;!--&lt;/font&gt;&lt;font color="#cc0000"&gt; &lt;/font&gt;&lt;font color="#cc0000"&gt; &lt;/font&gt;&lt;font color="#cc0000"&gt;fails&lt;/font&gt;&lt;font color="#cc0000"&gt; &lt;/font&gt;&lt;font color="#cc0000"&gt;if&lt;/font&gt;&lt;font color="#cc0000"&gt; &lt;/font&gt;&lt;font color="#cc0000"&gt;not&lt;/font&gt;&lt;font color="#cc0000"&gt; &lt;/font&gt;&lt;font color="#cc0000"&gt;found&lt;/font&gt;&lt;font color="#cc0000"&gt; &lt;/font&gt;&lt;font color="#cc0000"&gt;--&amp;gt;&lt;/font&gt;&lt;br /&gt;        &lt;font color="#0000ff"&gt;&amp;lt;&lt;/font&gt;&lt;font color="#0000ff"&gt;aspect&lt;/font&gt;&lt;font color="#0000ff"&gt; &lt;/font&gt;&lt;font color="#0000ff"&gt;name&lt;/font&gt;&lt;font color="#0000ff"&gt;=&lt;/font&gt;&lt;font color="#ff00cc"&gt;&amp;quot;&lt;/font&gt;&lt;font color="#ff00cc"&gt;eu.ibacz.pbns.util.aspect.TimingAnnotatedAspect&lt;/font&gt;&lt;font color="#ff00cc"&gt;&amp;quot;&lt;/font&gt;&lt;font color="#0000ff"&gt;/&lt;/font&gt;&lt;font color="#0000ff"&gt;&amp;gt;&lt;/font&gt;&lt;br /&gt;    &lt;font color="#0000ff"&gt;&amp;lt;&lt;/font&gt;&lt;font color="#0000ff"&gt;/&lt;/font&gt;&lt;font color="#0000ff"&gt;aspects&lt;/font&gt;&lt;font color="#0000ff"&gt;&amp;gt;&lt;/font&gt;&lt;br /&gt;    &lt;font color="#0000ff"&gt;&amp;lt;&lt;/font&gt;&lt;font color="#0000ff"&gt;weaver&lt;/font&gt;&lt;font color="#0000ff"&gt; &lt;/font&gt;&lt;font color="#0000ff"&gt;options&lt;/font&gt;&lt;font color="#0000ff"&gt;=&lt;/font&gt;&lt;font color="#ff00cc"&gt;&amp;quot;&lt;/font&gt;&lt;font color="#ff00cc"&gt;-verbose&lt;/font&gt;&lt;font color="#ff00cc"&gt; &lt;/font&gt;&lt;font color="#ff00cc"&gt;-showWeaveInfo&lt;/font&gt;&lt;font color="#ff00cc"&gt; &lt;/font&gt;&lt;font color="#ff00cc"&gt;&amp;quot;&lt;/font&gt;&lt;font color="#0000ff"&gt;&amp;gt;&lt;/font&gt; &lt;font color="#cc0000"&gt;&amp;lt;!--&lt;/font&gt;&lt;font color="#cc0000"&gt; -debug&lt;/font&gt;&lt;font color="#cc0000"&gt; &lt;/font&gt;&lt;font color="#cc0000"&gt; &lt;/font&gt;&lt;font color="#cc0000"&gt;--&amp;gt;&lt;/font&gt;&lt;br /&gt;        &lt;font color="#0000ff"&gt;&amp;lt;&lt;/font&gt;&lt;font color="#0000ff"&gt;include&lt;/font&gt;&lt;font color="#0000ff"&gt; &lt;/font&gt;&lt;font color="#0000ff"&gt;within&lt;/font&gt;&lt;font color="#0000ff"&gt;=&lt;/font&gt;&lt;font color="#ff00cc"&gt;&amp;quot;&lt;/font&gt;&lt;font color="#ff00cc"&gt;com.tonbeller.jpivot.xmla.*&lt;/font&gt;&lt;font color="#ff00cc"&gt;&amp;quot;&lt;/font&gt;&lt;font color="#0000ff"&gt;/&lt;/font&gt;&lt;font color="#0000ff"&gt;&amp;gt;&lt;/font&gt;&lt;br /&gt;        &lt;font color="#0000ff"&gt;&amp;lt;&lt;/font&gt;&lt;font color="#0000ff"&gt;include&lt;/font&gt;&lt;font color="#0000ff"&gt; &lt;/font&gt;&lt;font color="#0000ff"&gt;within&lt;/font&gt;&lt;font color="#0000ff"&gt;=&lt;/font&gt;&lt;font color="#ff00cc"&gt;&amp;quot;&lt;/font&gt;&lt;font color="#ff00cc"&gt;eu.ibacz.*&lt;/font&gt;&lt;font color="#ff00cc"&gt;&amp;quot;&lt;/font&gt;&lt;font color="#0000ff"&gt;/&lt;/font&gt;&lt;font color="#0000ff"&gt;&amp;gt;&lt;/font&gt;&lt;br /&gt;    &lt;font color="#0000ff"&gt;&amp;lt;&lt;/font&gt;&lt;font color="#0000ff"&gt;/&lt;/font&gt;&lt;font color="#0000ff"&gt;weaver&lt;/font&gt;&lt;font color="#0000ff"&gt;&amp;gt;&lt;/font&gt;&lt;br /&gt;&lt;font color="#0000ff"&gt;&amp;lt;&lt;/font&gt;&lt;font color="#0000ff"&gt;/&lt;/font&gt;&lt;font color="#0000ff"&gt;aspectj&lt;/font&gt;&lt;font color="#0000ff"&gt;&amp;gt;&lt;/font&gt;&lt;br /&gt;&lt;/font&gt;&lt;/pre&gt;

&lt;p&gt;If the weaving proceeds as expected, this should produce an output similar to the one below:&lt;/p&gt;

&lt;pre&gt;[AppClassLoader@1858610] info AspectJ Weaver Version DEVELOPMENT built on Friday Aug 29, 2008 at 00:25:33 GMT&lt;br /&gt;[AppClassLoader@1858610] info register classloader sun.misc.Launcher$AppClassLoader@1858610&lt;br /&gt;[AppClassLoader@1858610] info using configuration /home/jholy/devel/MyTestProject/target/classes/META-INF/aop.xml&lt;br /&gt;[AppClassLoader@1858610] info register aspect eu.ibacz.pbns.util.aspect.TimingAspect&lt;br /&gt;[AppClassLoader@1858610] info processing reweavable type com.tonbeller.jpivot.xmla.XMLA_Model: com/tonbeller/jpivot/xmla/XMLA_Model.java&lt;br /&gt;[AppClassLoader@1858610] info successfully verified type eu.ibacz.pbns.util.aspect.TimingAspect exists.  Originates from eu/ibacz/pbns/util/aspect//home/jholy/devel/MyAspectProject/src/eu/ibacz/pbns/util/aspect/TimingAspect.aj&lt;br /&gt;[AppClassLoader@1858610] weaveinfo Join point 'method-execution(void com.tonbeller.jpivot.xmla.XMLA_Model.retrieveMemberChildren(com.tonbeller.jpivot.xmla.XMLA_Member))' in Type 'com.tonbeller.jpivot.xmla.XMLA_Model' (XMLA_Model.java:1094) advised by around advice from 'eu.ibacz.pbns.util.aspect.TimingAspect' (TimingAspect.aj:56)&lt;br /&gt;&lt;/pre&gt;
&lt;p&gt;The line '&lt;i&gt;info register aspect eu.ibacz.pbns.util.aspect.TimingAspect&lt;/i&gt;'&amp;nbsp; tells us that AspectJ has found the aspect referenced from aop.xml. If the aspect class didn't exist that it would print an error message.&lt;br /&gt;&lt;/p&gt;&lt;p&gt;The line '&lt;i&gt;weaveinfo Join point ...&lt;/i&gt;'&amp;nbsp; tells us that AspectJ has actually found and modified the target.&lt;/p&gt;&lt;p&gt;If you enabled -debug in aop.xml, AspectJ would print the list of classes that it has processed (whether there was an aspect to apply or not) - this can help you to verify that it doesn't ignore your target class.&lt;br /&gt;&lt;/p&gt;&lt;h2&gt;Conclusion&lt;br /&gt;&lt;/h2&gt;&lt;p&gt;It works! :-)&lt;/p&gt;&lt;h2&gt;Resources&lt;/h2&gt;&lt;ul&gt;&lt;li&gt;&lt;a href="http://www.eclipse.org/aspectj/doc/released/quick5.pdf"&gt;AspectJ Quick Reference&lt;/a&gt; - pdf, 4 pages.&lt;br /&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="http://www.eclipse.org/aspectj/doc/released/progguide/semantics-pointcuts.html"&gt;AspectJ: Semantics of pointcuts&lt;/a&gt; - we need the Type patterns described close to the very end&lt;br /&gt;&lt;/li&gt;&lt;/ul&gt;&lt;img src="http://feeds.feedburner.com/~r/jroller/frontpage/~4/Tdou7C2uSTQ" height="1" width="1"/&gt;</description>          <feedburner:origLink>http://www.jroller.com/holy/entry/injecting_timing_aspect_into_junit</feedburner:origLink></item>
    <item>
    <guid isPermaLink="false">http://www.jroller.com/ksevindik/entry/how_to_create_a_custom</guid>
    <title>How to create a custom FacesContext</title>
    <dc:creator>Kenan Sevindik</dc:creator>
    <link>http://feeds.dzone.com/~r/jroller/frontpage/~3/WR_r8B3EYbg/how_to_create_a_custom</link>
        <pubDate>Fri, 10 Jul 2009 07:32:36 -0400</pubDate>
    <category>Java</category>
        <description>&lt;img src="http://feeds.feedburner.com/~r/jroller/frontpage/~4/WR_r8B3EYbg" height="1" width="1"/&gt;</description>              <feedburner:origLink>http://www.jroller.com/ksevindik/entry/how_to_create_a_custom</feedburner:origLink></item>
    <item>
    <guid isPermaLink="false">http://www.jroller.com/sebastianKuebeck/entry/why_wolfram_alpha_really_fails</guid>
    <title>Why Wolfram Alpha Really Fails</title>
    <dc:creator>Sebastian Kübeck</dc:creator>
    <link>http://feeds.dzone.com/~r/jroller/frontpage/~3/ArSfPso8r5Y/why_wolfram_alpha_really_fails</link>
        <pubDate>Fri, 10 Jul 2009 06:36:24 -0400</pubDate>
    <category>Developer</category>
    <category>design</category>
    <category>ui</category>
            <description>&lt;p&gt;In a recent &lt;a href="http://unqualified-reservations.blogspot.com/2009/07/wolfram-alpha-and-hubristic-user.html"&gt;post&lt;/a&gt;, Mencius Moldbug criticises &lt;a href="http://www.wolframalpha.com/"&gt;Wolfram Alpha&lt;/a&gt; and claims that natural language interfaces don't work for application control but do work for search engines.  &lt;br/&gt;
&lt;blockquote&gt;&lt;br/&gt;
They create an incomplete model of the giant electronic brain in their own, non-giant, non-electronic brains. Of course, since the giant electronic brain is a million lines of code which is constantly changing, this is a painful, inadequate and error-prone task.&lt;br/&gt;
&lt;/blockquote&gt;&lt;br/&gt;
It doesn't come as a surprise that Joel Spolsky, the man that declared the &lt;a href="http://www.jroller.com/sebastianKuebeck/entry/joel_spolsky_talks_on_stackoverflow"&gt;usability problem is solved&lt;/a&gt;, &lt;a href="http://www.joelonsoftware.com/items/2009/07/09.html"&gt;agrees with him&lt;/a&gt;. Great minds think alike, don't they?&lt;br/&gt;
Let's have a look at the example he provides as proof of his hypothesis:&lt;br/&gt;
&lt;blockquote&gt;&lt;br/&gt;
The site was also bedeviled by an inflexible natural-language interface. For example, if you searched for "Isaac Newton birth," you got Newton's birth date (December 25, 1642; you also learned that the moon was in the waxing-crescent phase that day). But if you searched for "Isaac Newton born," Alpha choked. Aaronson tested it with me and found it couldn't answer "Who invented the Web?" and didn't know state-level GDP figures, only national ones.&lt;br/&gt;
&lt;/blockquote&gt;&lt;br/&gt;
Trying "Isaac Newton born" got me the following result:&lt;br/&gt;
&lt;blockquote&gt;&lt;b&gt;&lt;i&gt;Wolfram|Alpha isn't sure what to do with your input.&lt;/i&gt;&lt;/b&gt;&lt;/blockquote&gt; &lt;h3&gt;What is the Problem?&lt;/h3&gt;So what is the problem here? The user's inability to formulate the request properly? The fact that Wolfram Alpha can't deal with the request or the response?&lt;br/&gt;
Anyone with just the slightest experience in user interface design (that is, no former Microsoft or Sun employee) will know the answer: &lt;br/&gt;
&lt;blockquote&gt;&lt;b&gt;The response is not helpful! It doesn't even contain any useful information!&lt;/b&gt;&lt;/blockquote&gt; The natural language interface as such is &lt;i&gt;not&lt;/i&gt; the problem nor is the lack of Alpha's knowledge the problem. It's just the response. &lt;br/&gt;
&lt;h3&gt;Possible Solutions&lt;/h3&gt; How could this problem be solved? Well, Alpha got at least &lt;i&gt;some&lt;/i&gt; useful information: "Isaac Newton", it just doesn't know the last word so why doesn't Alpha show what it knows about Isaac Newton? This could look like the following:&lt;br/&gt;
&lt;blockquote&gt;&lt;br/&gt;
&lt;b&gt;Unfortunately, I could not process your input so please help me out.&lt;br/&gt;
Does the following summary contain the functionality or information you are looking for?&lt;/b&gt;&lt;/p&gt;


&lt;p&gt;Isaac Newton&lt;br/&gt;
From Wikipedia, the free encyclopedia&lt;/p&gt;


&lt;p&gt;Sir Isaac Newton, FRS (4 January 1643  – 31 March 1727 [OS: 25 December 1642 – 20 March 1727])[1], was an English physicist, mathematician, astronomer, natural philosopher, alchemist, and theologian. His Philosophiæ Naturalis Principia Mathematica, ...&lt;/p&gt;


&lt;p&gt;[read more]&lt;br/&gt;
&lt;b&gt;&lt;br/&gt;
If you found the response you were looking for, please let me know: __________________&lt;br/&gt;
&lt;/b&gt;&lt;br/&gt;
[Submit]&lt;/p&gt;


&lt;p&gt;---&lt;/p&gt;


&lt;p&gt;&lt;b&gt;Thank you four your contribution!&lt;/b&gt;&lt;br/&gt;
&lt;/blockquote&gt; The last line would make sure that Alpha knows the answer next time. &lt;br/&gt;
&lt;h3&gt;Conclusion&lt;/h3&gt; Note that most people out there are helpful. They don't require that applications are perfect or even omniscient, they just don't want to be treated like idiots.&lt;/p&gt;


&lt;p&gt;For more information, see &lt;a href="http://www.jroller.com/sebastianKuebeck/entry/why_is_alan_cooper_doing"&gt;Alan Cooper's&lt;/a&gt; books on interaction design.&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/jroller/frontpage/~4/ArSfPso8r5Y" height="1" width="1"/&gt;</description>          <feedburner:origLink>http://www.jroller.com/sebastianKuebeck/entry/why_wolfram_alpha_really_fails</feedburner:origLink></item>
    <item>
    <guid isPermaLink="false">http://www.jroller.com/francoisledroff/entry/compte_rendu_de_la_soir%C3%A9e</guid>
    <title>Compte rendu de la soirée RIA au ParisJUG</title>
    <dc:creator>Le Droff</dc:creator>
    <link>http://feeds.dzone.com/~r/jroller/frontpage/~3/DENM7VGc3l0/compte_rendu_de_la_soir%C3%A9e</link>
        <pubDate>Fri, 10 Jul 2009 05:29:51 -0400</pubDate>
    <category>Java</category>
    <category>flashcatalyst</category>
    <category>flex</category>
    <category>javafx</category>
    <category>security</category>
    <category>spring</category>
    <category>spring-flex</category>
    <category>wiimote</category>
            <description>&lt;p&gt;Voici mon compte rendu de la &lt;span class="wikiexternallink"&gt;&lt;a href="http://www.parisjug.org/xwiki/bin/view/Meeting/20090707"&gt;Soirée RIA au ParisJUG&lt;/a&gt;&lt;/span&gt;&lt;p&gt;
J'y ai donc tenté(*) de présenter :
&lt;ul class="star"&gt;
&lt;li&gt;rapidement l'offre RIA Adobe (pour les nombreux juggers qui ne la connaissaient pas)&lt;/li&gt;
&lt;li&gt;puis la mise en place des services Flex (remoting, messaging et data-management) avec &lt;span class="wikiexternallink"&gt;&lt;a href="http://www.springsource.org/spring-flex"&gt;Spring-Flex&lt;/a&gt;&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;et enfin un rapide aperçu de &lt;span class="wikiexternallink"&gt;&lt;a href="http://labs.adobe.com/technologies/flashcatalyst/"&gt;FlashCatalyst&lt;/a&gt;&lt;/span&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;(*) l'exercice était assez difficile, j'ai du faire avec quelques petits problèmes techniques: micro, ampli et écran (pour l'écran, c'était de ma faute, j'aurai mieux fait de cloner mon écran sur le projo, c'eût été bien plus simple pour les démo...) m'enfin… &lt;img src="http://www.jroller.com/images/smileys/smile.gif" class="smiley" alt=":-)" title=":-)" /&gt;, voici les slides :&lt;p&gt;

&lt;div style="width:425px;text-align:left" id="__ss_1703887"&gt;&lt;a style="font:14px Helvetica,Arial,Sans-serif;display:block;margin:12px 0 3px 0;text-decoration:underline;" href="http://www.slideshare.net/francoisledroff/flex-services-and-spring-with-springflex-parisjug" title="Flex Services And Spring with Spring-Flex ParisJug"&gt;Flex Services And Spring with Spring-Flex ParisJug&lt;/a&gt;&lt;object style="margin:0px" width="425" height="355"&gt;&lt;param name="movie" value="http://static.slidesharecdn.com/swf/ssplayer2.swf?doc=07-flexandspringjug-v2-090710015614-phpapp01&amp;stripped_title=flex-services-and-spring-with-springflex-parisjug" /&gt;&lt;param name="allowFullScreen" value="true"/&gt;&lt;param name="allowScriptAccess" value="always"/&gt;&lt;embed src="http://static.slidesharecdn.com/swf/ssplayer2.swf?doc=07-flexandspringjug-v2-090710015614-phpapp01&amp;stripped_title=flex-services-and-spring-with-springflex-parisjug" type="application/x-shockwave-flash" allowscriptaccess="always" allowfullscreen="true" width="425" height="355"&gt;&lt;/embed&gt;&lt;/object&gt;&lt;div style="font-size:11px;font-family:tahoma,arial;height:26px;padding-top:2px;"&gt;View more &lt;a style="text-decoration:underline;" href="http://www.slideshare.net/"&gt;documents&lt;/a&gt; from &lt;a style="text-decoration:underline;" href="http://www.slideshare.net/francoisledroff"&gt;francoisledroff&lt;/a&gt;.&lt;/div&gt;&lt;/div&gt;

&lt;p&gt;
Contrairement à ce qu'indique Le &lt;span class="wikiexternallink"&gt;&lt;a href="http://www.touilleur-express.fr/2009/07/09/paris-jug-retour-sur-la-soiree-ria-adobe-flex-et-javafx-partie-1/"&gt;Touilleur&lt;/a&gt;&lt;/span&gt; dans son blog, les articles de &lt;span class="wikiexternallink"&gt;&lt;a href="http://fponchel.developpez.com/tutoriel/flex3/integration/blazeds-spring/"&gt;Franck&lt;/a&gt;&lt;/span&gt; et &lt;span class="wikiexternallink"&gt;&lt;a href="http://www.adobe.com/devnet/flex/articles/fullstack_pt1.html"&gt;Sébastien&lt;/a&gt;&lt;/span&gt; ne présentent pas cette technologie mais l'ancienne approche, la première intégration du Flex Remoting offerte par Jeff Vroom à travers sa SpringFactory. Ce qu'il faut retenir c'est que Spring-Flex (ce nouveau socle technique issu d'un &lt;strong&gt;partenariat Adobe Spring-Source&lt;/strong&gt;) va beaucoup plus loin et facilite énormément la mise en place d'un front-end Flex au dessus d'un back-end (Spring) java. Il permet par exemple:
&lt;/p&gt;&lt;ul class="star"&gt;
&lt;li&gt;de mettre d'exposer un service Flex Remoting avec une simple annotation org.springframework.flex.remoting.RemotingDestination&lt;/li&gt;
&lt;li&gt;de sécuriser les canaux de communication de façon quasi transparent avec Spring-Security&lt;/li&gt;

&lt;/ul&gt;Pour plus de détails, voir:
&lt;ul class="star"&gt;
&lt;li&gt;mes &lt;span class="wikiexternallink"&gt;&lt;a href="http://www.slideshare.net/francoisledroff/flex-services-and-spring-with-springflex-parisjug"&gt;slides&lt;/a&gt;&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;Le "test drive" de &lt;span class="wikiexternallink"&gt;&lt;a href="http://coenraets.org/blog/2009/05/new-update-to-the-spring-blazeds-integration-test-drive/"&gt;Christophe Coenraets&lt;/a&gt;&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span class="wikiexternallink"&gt;&lt;a href="http://www.springbyexample.org/examples/simple-flex-webapp.html"&gt;Spring By Example&lt;/a&gt;&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span class="wikiexternallink"&gt;&lt;a href="http://static.springsource.org/spring-flex/docs/1.0.x/reference/html/index.html"&gt;La doc complète de Spring-Flex&lt;/a&gt;&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;ou encore le code source (mavenisé) de ma démo &lt;span class="wikiexternallink"&gt;&lt;a href="http://fna-v2.googlecode.com/svn/trunk/samples/riveria_jug/spring_flex_todo/"&gt;http://fna-v2.googlecode.com/svn/trunk/samples/riveria_jug/spring_flex_todo/&lt;/a&gt;&lt;/span&gt; donnée également au &lt;span class="wikiexternallink"&gt;&lt;a href="http://jroller.com/francoisledroff/entry/the_spring_of_flex_remoting"&gt;RiveriaJUG&lt;/a&gt;&lt;/span&gt;&lt;/li&gt;

&lt;/ul&gt;J'ai terminé ma session par une démo trop rapide de ce que l'on peut faire avec &lt;span class="wikiexternallink"&gt;&lt;a href="http://labs.adobe.com/technologies/flashcatalyst/"&gt;FlashCatalyst&lt;/a&gt;&lt;/span&gt;, (j'aurai du faire abstraction de 75% des juggers utilisateurs de spring  présents dans la salle et commencer par ça. La session aurait été bien plus fun et moins rébarbative, Le sujet spring-flex était en effet plus adapté pour un lab ou une formation...)

&lt;p&gt;
Voici donc en bonus quelques slides présentant FlashCatalyst :
&lt;/p&gt;

&lt;div style="width:425px;text-align:left" id="__ss_1704149"&gt;&lt;a style="font:14px Helvetica,Arial,Sans-serif;display:block;margin:12px 0 3px 0;text-decoration:underline;" href="http://www.slideshare.net/francoisledroff/flash-catalyst-jug" title="Flash Catalyst Jug"&gt;Flash Catalyst Jug&lt;/a&gt;&lt;object style="margin:0px" width="425" height="355"&gt;&lt;param name="movie" value="http://static.slidesharecdn.com/swf/ssplayer2.swf?doc=03-flashcatalystjug-v2-090710034145-phpapp02&amp;stripped_title=flash-catalyst-jug" /&gt;&lt;param name="allowFullScreen" value="true"/&gt;&lt;param name="allowScriptAccess" value="always"/&gt;&lt;embed src="http://static.slidesharecdn.com/swf/ssplayer2.swf?doc=03-flashcatalystjug-v2-090710034145-phpapp02&amp;stripped_title=flash-catalyst-jug" type="application/x-shockwave-flash" allowscriptaccess="always" allowfullscreen="true" width="425" height="355"&gt;&lt;/embed&gt;&lt;/object&gt;&lt;div style="font-size:11px;font-family:tahoma,arial;height:26px;padding-top:2px;"&gt;View more &lt;a style="text-decoration:underline;" href="http://www.slideshare.net/"&gt;documents&lt;/a&gt; from &lt;a style="text-decoration:underline;" href="http://www.slideshare.net/francoisledroff"&gt;francoisledroff&lt;/a&gt;.&lt;/div&gt;&lt;/div&gt;

&lt;p&gt;Pour la démo, je pars donc d'un design réalisé sous Illustrator, je passe par Catalyst pour en faire une DataList Flex4, et hop sous Eclipse/FlashBuider, j'incorpore le composant DataList skinné:&lt;/p&gt;&lt;p&gt;
&lt;img width="500" src="http://francois.le.droff.com/xwiki/bin/download/Geek/ParisJUG-Spring-flex/white315.jpg" alt="http://francois.le.droff.com/xwiki/bin/download/Geek/ParisJUG-Spring-flex/white315.jpg" title="http://francois.le.droff.com/xwiki/bin/download/Geek/ParisJUG-Spring-flex/white315.jpg"&gt;&lt;/p&gt;&lt;p&gt;


On notera que pour ce petit composant, le code source généré par FlashCatalyst reste propre et ne pollue en rien mon projet de départ, pour preuve, je vous ai mis à disposition le code source de la démo sur google-code : &lt;span class="wikiexternallink"&gt;&lt;a href="http://fna-v2.googlecode.com/svn/trunk/samples/riveria_jug/simple_fc_skinned_i18n_todo_client/"&gt;http://fna-v2.googlecode.com/svn/trunk/samples/riveria_jug/simple_fc_skinned_i18n_todo_client/&lt;/a&gt;&lt;/span&gt;.&lt;/p&gt;&lt;p&gt;
Si vous voulez essayer cette techno, allez donc faire un tour sur le blog de Thibault, il y a publié le résultat de son « évangelisation » catalyst :
&lt;span class="wikiexternallink"&gt;&lt;a href="http://www.bytearray.org/?p=839"&gt;http://www.bytearray.org/?p=839&lt;/a&gt;&lt;/span&gt;. Vous y trouverez tout pour skinner une appli de type « adobe directory » avec Flex4 et FlashCatalyst (et en français!).&lt;/p&gt;&lt;p&gt;

Après la pause, c'était Simon Ritters qui présentait JavaFX, &lt;span class="wikiexternallink"&gt;&lt;a href="http://codemoiunmouton.wordpress.com/2009/07/08/quelle-strategie-pour-sun-javafx/"&gt;Michael nous en a fait un compte rendu&lt;/a&gt;&lt;/span&gt;. Ceux qui ont aimé la &lt;span class="wikiexternallink"&gt;&lt;a href="http://blog.ostyn.fr/index.php?post/2009/07/09/JavaFX-%3A-une-demo-bluffante"&gt;démo wiimote de JavaFx&lt;/a&gt;&lt;/span&gt; vont forcement adoré &lt;span class="wikiexternallink"&gt;&lt;a href="http://tv.adobe.com/fr/#vi+f15278v1039"&gt;les démos de Thibault&lt;/a&gt;&lt;/span&gt; et de son &lt;span class="wikiexternallink"&gt;&lt;a href="http://wiiflash.bytearray.org/"&gt;wiiFlash&lt;/a&gt;&lt;/span&gt;. (Et dire que Simon et Thibault sont payés pour faire ça !! nous sommes forcement tous jaloux !! &lt;img src="http://www.jroller.com/images/smileys/smile.gif" class="smiley" alt=":-)" title=":-)" /&gt;)&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/jroller/frontpage/~4/DENM7VGc3l0" height="1" width="1"/&gt;</description>          <feedburner:origLink>http://www.jroller.com/francoisledroff/entry/compte_rendu_de_la_soir%C3%A9e</feedburner:origLink></item>
    <item>
    <guid isPermaLink="false">http://www.jroller.com/nivanov/entry/world_shortest_mapreduce_application</guid>
    <title>World-Shortest MapReduce Application</title>
    <dc:creator>Nikita Ivanov</dc:creator>
    <link>http://feeds.dzone.com/~r/jroller/frontpage/~3/YxZjyy2l6RE/world_shortest_mapreduce_application</link>
        <pubDate>Fri, 10 Jul 2009 03:58:18 -0400</pubDate>
    <category>Technology</category>
    <category>cloud</category>
    <category>computing</category>
    <category>grid</category>
            <description>Developer's productivity is one of the key concerns for us in GridGain project and I just found a little piece of code that demonstrates this so well... As part of 3.0 mega-release we are all working on right now we will be shipping two new annotations for automatic grid-enabling:
&lt;ul&gt;
&lt;li&gt;&lt;tt&gt;@GridifySetToSet&lt;/tt&gt;
&lt;li&gt;&lt;tt&gt;@GridifySetToValue&lt;/tt&gt;
&lt;/ul&gt;
I already blogged about details on these but here's the perfect example of probably the world-shortest full fledged MapReduce application (finding max element in the collection on the grid): 
&lt;pre name="code" class="java"&gt;
@GridifySetToValue(threshold=200)
public &amp;lt;T extends Comparable&amp;lt;? super T&amp;gt;&amp;gt; T findMaxOnCloud(Collection&amp;lt;T&amp;gt; input) {
    return Collections.max(input);
}
&lt;/pre&gt;
&lt;b&gt;That's all.&lt;/b&gt; This method will find maximum value in the input collection by splitting the input collection into multiple sub-collection (unless input collection has fewer than 200 elements, as in our example), shipping those collections to remote nodes on the grid (local cluster, cloud, EC2, etc.), find max value in those sub-collection and then find max value among max values from the sub-collection to finally get the actual max value of the input collection. &lt;b&gt;4 lines of code all in all&lt;/b&gt; give you load balancing, automatic failover, peer-to-peer class loading, collision and topology resolution, auto-discovery and plenty other core GridGain features out-of-the-box - while you just write those 4 lines of code...
&lt;p&gt;
As always with GridGain this mini-application will work exactly the same way on 1 node, 2 nodes or 1024 nodes - either on your laptop or on the largest Java-based EC2 cloud. And any idempotent methods with set-to-set or set-to-value reduction semantics will be able to get grid-enabled in the same way - just one annotation. 
&lt;p&gt;
Exciting!&lt;img src="http://feeds.feedburner.com/~r/jroller/frontpage/~4/YxZjyy2l6RE" height="1" width="1"/&gt;</description>          <feedburner:origLink>http://www.jroller.com/nivanov/entry/world_shortest_mapreduce_application</feedburner:origLink></item>
    <item>
    <guid isPermaLink="false">http://www.jroller.com/rezaghp/entry/left_handed_laptop</guid>
    <title>Left Handed Laptop</title>
    <dc:creator>Reza Ghaffaripour</dc:creator>
    <link>http://feeds.dzone.com/~r/jroller/frontpage/~3/byOClYMyS1o/left_handed_laptop</link>
        <pubDate>Fri, 10 Jul 2009 00:58:25 -0400</pubDate>
    <category>Technology</category>
    <category>hand</category>
    <category>laptop</category>
    <category>left</category>
            <description>&lt;p&gt;&lt;p&gt;I am looking for a left handed laptop! It might seem odd but I am serious.&lt;/p&gt;&lt;/p&gt;

	&lt;p&gt;&lt;p&gt;I have a Lenovo SL300. The problem with that is the heat exhaust is on the left and sometimes I can't use my own wired mouse as it will burn my hand!&lt;/p&gt;&lt;/p&gt;

	&lt;p&gt;&lt;p&gt;Other problem I remember from my old DELL (and my current one too) was that the Wireless board (or hard drive?) was under the left palm rest area and it used to get really hot!&lt;/p&gt;&lt;/p&gt;

	&lt;p&gt;&lt;p&gt;I wonder if manufacturers really care or not. The least thing I expect is to exactly indicate which ports (USB, power slot, etc.) are located where on the laptop. Also where is the location of component that might get warm such as HDD, wireless, CPU, etc. This shouldn't be among those things they would change without notice!&lt;/p&gt;&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/jroller/frontpage/~4/byOClYMyS1o" height="1" width="1"/&gt;</description>          <feedburner:origLink>http://www.jroller.com/rezaghp/entry/left_handed_laptop</feedburner:origLink></item>
    <item>
    <guid isPermaLink="false">http://www.jroller.com/hasant/entry/fileupload_with_gwt</guid>
    <title>FileUpload with GWT</title>
    <dc:creator>Hasan Turksoy</dc:creator>
    <link>http://feeds.dzone.com/~r/jroller/frontpage/~3/SvKsexxtHMk/fileupload_with_gwt</link>
        <pubDate>Thu, 9 Jul 2009 18:03:10 -0400</pubDate>
    <category>Java</category>
    <category>fileupload</category>
    <category>gwt</category>
    <category>java</category>
            <description>&lt;p&gt;I need a file upload solution in my Google Web Toolkit (GWT) project. While googling, I have found many related posts asking about the subject. Also, there are some projects arround providing this functionality. But, I couldn't find any tutorial explaining the file upload solution from start to end or building a sample application to demonstrate the ability on GWT. So that, I have decided to write my experiences here to help to the developers in need.&lt;/p&gt;
&lt;p&gt;If you don't want to use/depend any other (may be not mature and extendible enough) third party library just to make a simple file upload operation, and want to develope your clean and extendible solution, then, go on and follow the steps below :)&lt;/p&gt;
&lt;p&gt;GWT provides an RPC (Remote Procedure Call) infrastructure to make Ajax calls easily but RPC mechanism implies reading the file which violates the whole browser flow being achieved through javascript. Browser should be responsible from reading and submitting the file. Therefore, we can not use RPC for file upload operations. We have to submit the file somehow.&lt;/p&gt;
&lt;p&gt;There are alternative solutions for file upload like flash based approaches as &lt;a href="http://mike.kruckenberg.com/archieves/2008/02/inline-web-browser-file-upload.html" target="_blank"&gt;here&lt;/a&gt;, or by the help of Google Gears (which will necessitate your users installing Gears), or using pure JavaScript as &lt;a href="http://igstan.blogspot.com/2009/01/pure-javascript-file-upload.html" target="_blank"&gt;here&lt;/a&gt;... But it is apperant that the most common way is using plain Servlet technology. I will demonstrate this solution in this post.&lt;/p&gt;
&lt;h4&gt;File Upload using Servlet&lt;/h4&gt;
&lt;h5&gt;Client Side:&lt;/h5&gt;
&lt;p&gt;In the client side, GWT provides a &lt;a href="http://google-web-toolkit.googlecode.com/svn/javadoc/1.6/com/google/gwt/user/client/ui/FileUpload.html" target="_blank"&gt;FileUpload&lt;/a&gt; widget which must be used in a &lt;a href="http://google-web-toolkit.googlecode.com/svn/javadoc/1.6/com/google/gwt/user/client/ui/FormPanel.html" target="_blank"&gt;FormPanel&lt;/a&gt; to make a submit to the server. Make sure, you need to give a name (via setName(String)) to all of the fields under the FormPanel so that the HttpServlet can identify them. Below is the slightly modified GWT client code from FileUpload javadoc, which includes the FileUpload widget together with several normal fields.&lt;/p&gt;

&lt;!-- ======================================================== --&gt;
&lt;!-- = Java Sourcecode to HTML automatically converted code = --&gt;
&lt;!-- =   Java2Html Converter 5.0 [2006-02-26] by Markus Gebhard  markus@jave.de   = --&gt;
&lt;!-- =     Further information: http://www.java2html.de     = --&gt;
&lt;div align="left" class="java"&gt;
&lt;table cellpadding="3" cellspacing="0" class="codeframe"&gt;
  &lt;!-- start headline --&gt;
   &lt;tr&gt;
    &lt;td colspan="2" class="codetitle"&gt;
     &lt;center&gt;
       &lt;font size="+2"&gt;
      &lt;code&gt;&lt;b&gt;
GWT File Upload Client Code&lt;/b&gt;&lt;/code&gt;
     &lt;/font&gt;
     &lt;/center&gt;
    &lt;/td&gt;
   &lt;/tr&gt;
  &lt;!-- end headline --&gt;
   &lt;tr&gt;
  &lt;!-- start source code --&gt;
   &lt;td nowrap="nowrap" valign="top" align="left"&gt;
    &lt;code&gt;
&lt;font color="#808080"&gt;01&lt;/font&gt;&amp;nbsp;&lt;font color="#3f5fbf"&gt;/**&lt;/font&gt;&lt;br /&gt;
&lt;font color="#808080"&gt;02&lt;/font&gt;&amp;nbsp;&lt;font color="#ffffff"&gt;&amp;nbsp;&lt;/font&gt;&lt;font color="#3f5fbf"&gt;*&amp;nbsp;GWT&amp;nbsp;entry&amp;nbsp;point&amp;nbsp;class.&lt;/font&gt;&lt;br /&gt;
&lt;font color="#808080"&gt;03&lt;/font&gt;&amp;nbsp;&lt;font color="#ffffff"&gt;&amp;nbsp;&lt;/font&gt;&lt;font color="#3f5fbf"&gt;*&amp;nbsp;&lt;/font&gt;&lt;br /&gt;
&lt;font color="#808080"&gt;04&lt;/font&gt;&amp;nbsp;&lt;font color="#ffffff"&gt;&amp;nbsp;&lt;/font&gt;&lt;font color="#3f5fbf"&gt;*&amp;nbsp;&lt;/font&gt;&lt;font color="#7f9fbf"&gt;@author&amp;nbsp;&lt;/font&gt;&lt;font color="#3f5fbf"&gt;hturksoy&lt;/font&gt;&lt;br /&gt;
&lt;font color="#808080"&gt;05&lt;/font&gt;&amp;nbsp;&lt;font color="#ffffff"&gt;&amp;nbsp;&lt;/font&gt;&lt;font color="#3f5fbf"&gt;*/&lt;/font&gt;&lt;br /&gt;
&lt;font color="#808080"&gt;06&lt;/font&gt;&amp;nbsp;&lt;font color="#7f0055"&gt;&lt;b&gt;public&amp;nbsp;class&amp;nbsp;&lt;/b&gt;&lt;/font&gt;&lt;font color="#000000"&gt;GWTFileUpload&amp;nbsp;&lt;/font&gt;&lt;font color="#7f0055"&gt;&lt;b&gt;implements&amp;nbsp;&lt;/b&gt;&lt;/font&gt;&lt;font color="#000000"&gt;EntryPoint&amp;nbsp;&lt;/font&gt;&lt;font color="#000000"&gt;{&lt;/font&gt;&lt;br /&gt;
&lt;font color="#808080"&gt;07&lt;/font&gt;&amp;nbsp;&lt;font color="#ffffff"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/font&gt;&lt;font color="#7f0055"&gt;&lt;b&gt;private&amp;nbsp;static&amp;nbsp;final&amp;nbsp;&lt;/b&gt;&lt;/font&gt;&lt;font color="#000000"&gt;String&amp;nbsp;UPLOAD_ACTION_URL&amp;nbsp;=&amp;nbsp;GWT.getModuleBaseURL&lt;/font&gt;&lt;font color="#000000"&gt;()&amp;nbsp;&lt;/font&gt;&lt;font color="#000000"&gt;+&amp;nbsp;&lt;/font&gt;&lt;font color="#2a00ff"&gt;&amp;#34;upload&amp;#34;&lt;/font&gt;&lt;font color="#000000"&gt;;&lt;/font&gt;&lt;br /&gt;
&lt;font color="#808080"&gt;08&lt;/font&gt;&amp;nbsp;&lt;font color="#ffffff"&gt;&lt;/font&gt;&lt;br /&gt;
&lt;font color="#808080"&gt;09&lt;/font&gt;&amp;nbsp;&lt;font color="#ffffff"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/font&gt;&lt;font color="#3f5fbf"&gt;/**&lt;/font&gt;&lt;br /&gt;
&lt;font color="#808080"&gt;10&lt;/font&gt;&amp;nbsp;&lt;font color="#ffffff"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/font&gt;&lt;font color="#3f5fbf"&gt;*&amp;nbsp;This&amp;nbsp;is&amp;nbsp;the&amp;nbsp;entry&amp;nbsp;point&amp;nbsp;method.&lt;/font&gt;&lt;br /&gt;
&lt;font color="#808080"&gt;11&lt;/font&gt;&amp;nbsp;&lt;font color="#ffffff"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/font&gt;&lt;font color="#3f5fbf"&gt;*/&lt;/font&gt;&lt;br /&gt;
&lt;font color="#808080"&gt;12&lt;/font&gt;&amp;nbsp;&lt;font color="#ffffff"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/font&gt;&lt;font color="#7f0055"&gt;&lt;b&gt;public&amp;nbsp;&lt;/b&gt;&lt;/font&gt;&lt;font color="#7f0055"&gt;&lt;b&gt;void&amp;nbsp;&lt;/b&gt;&lt;/font&gt;&lt;font color="#000000"&gt;onModuleLoad&lt;/font&gt;&lt;font color="#000000"&gt;()&amp;nbsp;{&lt;/font&gt;&lt;br /&gt;
&lt;font color="#808080"&gt;13&lt;/font&gt;&amp;nbsp;&lt;font color="#ffffff"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/font&gt;&lt;font color="#3f7f5f"&gt;//&amp;nbsp;Create&amp;nbsp;a&amp;nbsp;FormPanel&amp;nbsp;and&amp;nbsp;point&amp;nbsp;it&amp;nbsp;at&amp;nbsp;a&amp;nbsp;service.&lt;/font&gt;&lt;br /&gt;
&lt;font color="#808080"&gt;14&lt;/font&gt;&amp;nbsp;&lt;font color="#ffffff"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/font&gt;&lt;font color="#7f0055"&gt;&lt;b&gt;final&amp;nbsp;&lt;/b&gt;&lt;/font&gt;&lt;font color="#000000"&gt;FormPanel&amp;nbsp;form&amp;nbsp;=&amp;nbsp;&lt;/font&gt;&lt;font color="#7f0055"&gt;&lt;b&gt;new&amp;nbsp;&lt;/b&gt;&lt;/font&gt;&lt;font color="#000000"&gt;FormPanel&lt;/font&gt;&lt;font color="#000000"&gt;()&lt;/font&gt;&lt;font color="#000000"&gt;;&lt;/font&gt;&lt;br /&gt;
&lt;font color="#808080"&gt;15&lt;/font&gt;&amp;nbsp;&lt;font color="#ffffff"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/font&gt;&lt;font color="#000000"&gt;form.setAction&lt;/font&gt;&lt;font color="#000000"&gt;(&lt;/font&gt;&lt;font color="#000000"&gt;UPLOAD_ACTION_URL&lt;/font&gt;&lt;font color="#000000"&gt;)&lt;/font&gt;&lt;font color="#000000"&gt;;&lt;/font&gt;&lt;br /&gt;
&lt;font color="#808080"&gt;16&lt;/font&gt;&amp;nbsp;&lt;font color="#ffffff"&gt;&lt;/font&gt;&lt;br /&gt;
&lt;font color="#808080"&gt;17&lt;/font&gt;&amp;nbsp;&lt;font color="#ffffff"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/font&gt;&lt;font color="#3f7f5f"&gt;//&amp;nbsp;Because&amp;nbsp;we're&amp;nbsp;going&amp;nbsp;to&amp;nbsp;add&amp;nbsp;a&amp;nbsp;FileUpload&amp;nbsp;widget,&amp;nbsp;we'll&amp;nbsp;need&amp;nbsp;to&amp;nbsp;set&amp;nbsp;the&lt;/font&gt;&lt;br /&gt;
&lt;font color="#808080"&gt;18&lt;/font&gt;&amp;nbsp;&lt;font color="#ffffff"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/font&gt;&lt;font color="#3f7f5f"&gt;//&amp;nbsp;form&amp;nbsp;to&amp;nbsp;use&amp;nbsp;the&amp;nbsp;POST&amp;nbsp;method,&amp;nbsp;and&amp;nbsp;multipart&amp;nbsp;MIME&amp;nbsp;encoding.&lt;/font&gt;&lt;br /&gt;
&lt;font color="#808080"&gt;19&lt;/font&gt;&amp;nbsp;&lt;font color="#ffffff"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/font&gt;&lt;font color="#000000"&gt;form.setEncoding&lt;/font&gt;&lt;font color="#000000"&gt;(&lt;/font&gt;&lt;font color="#000000"&gt;FormPanel.ENCODING_MULTIPART&lt;/font&gt;&lt;font color="#000000"&gt;)&lt;/font&gt;&lt;font color="#000000"&gt;;&lt;/font&gt;&lt;br /&gt;
&lt;font color="#808080"&gt;20&lt;/font&gt;&amp;nbsp;&lt;font color="#ffffff"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/font&gt;&lt;font color="#000000"&gt;form.setMethod&lt;/font&gt;&lt;font color="#000000"&gt;(&lt;/font&gt;&lt;font color="#000000"&gt;FormPanel.METHOD_POST&lt;/font&gt;&lt;font color="#000000"&gt;)&lt;/font&gt;&lt;font color="#000000"&gt;;&lt;/font&gt;&lt;br /&gt;
&lt;font color="#808080"&gt;21&lt;/font&gt;&amp;nbsp;&lt;font color="#ffffff"&gt;&lt;/font&gt;&lt;br /&gt;
&lt;font color="#808080"&gt;22&lt;/font&gt;&amp;nbsp;&lt;font color="#ffffff"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/font&gt;&lt;font color="#3f7f5f"&gt;//&amp;nbsp;Create&amp;nbsp;a&amp;nbsp;panel&amp;nbsp;to&amp;nbsp;hold&amp;nbsp;all&amp;nbsp;of&amp;nbsp;the&amp;nbsp;form&amp;nbsp;widgets.&lt;/font&gt;&lt;br /&gt;
&lt;font color="#808080"&gt;23&lt;/font&gt;&amp;nbsp;&lt;font color="#ffffff"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/font&gt;&lt;font color="#000000"&gt;VerticalPanel&amp;nbsp;panel&amp;nbsp;=&amp;nbsp;&lt;/font&gt;&lt;font color="#7f0055"&gt;&lt;b&gt;new&amp;nbsp;&lt;/b&gt;&lt;/font&gt;&lt;font color="#000000"&gt;VerticalPanel&lt;/font&gt;&lt;font color="#000000"&gt;()&lt;/font&gt;&lt;font color="#000000"&gt;;&lt;/font&gt;&lt;br /&gt;
&lt;font color="#808080"&gt;24&lt;/font&gt;&amp;nbsp;&lt;font color="#ffffff"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/font&gt;&lt;font color="#000000"&gt;form.setWidget&lt;/font&gt;&lt;font color="#000000"&gt;(&lt;/font&gt;&lt;font color="#000000"&gt;panel&lt;/font&gt;&lt;font color="#000000"&gt;)&lt;/font&gt;&lt;font color="#000000"&gt;;&lt;/font&gt;&lt;br /&gt;
&lt;font color="#808080"&gt;25&lt;/font&gt;&amp;nbsp;&lt;font color="#ffffff"&gt;&lt;/font&gt;&lt;br /&gt;
&lt;font color="#808080"&gt;26&lt;/font&gt;&amp;nbsp;&lt;font color="#ffffff"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/font&gt;&lt;font color="#3f7f5f"&gt;//&amp;nbsp;Create&amp;nbsp;a&amp;nbsp;TextBox,&amp;nbsp;giving&amp;nbsp;it&amp;nbsp;a&amp;nbsp;name&amp;nbsp;so&amp;nbsp;that&amp;nbsp;it&amp;nbsp;will&amp;nbsp;be&amp;nbsp;submitted.&lt;/font&gt;&lt;br /&gt;
&lt;font color="#808080"&gt;27&lt;/font&gt;&amp;nbsp;&lt;font color="#ffffff"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/font&gt;&lt;font color="#7f0055"&gt;&lt;b&gt;final&amp;nbsp;&lt;/b&gt;&lt;/font&gt;&lt;font color="#000000"&gt;TextBox&amp;nbsp;tb&amp;nbsp;=&amp;nbsp;&lt;/font&gt;&lt;font color="#7f0055"&gt;&lt;b&gt;new&amp;nbsp;&lt;/b&gt;&lt;/font&gt;&lt;font color="#000000"&gt;TextBox&lt;/font&gt;&lt;font color="#000000"&gt;()&lt;/font&gt;&lt;font color="#000000"&gt;;&lt;/font&gt;&lt;br /&gt;
&lt;font color="#808080"&gt;28&lt;/font&gt;&amp;nbsp;&lt;font color="#ffffff"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/font&gt;&lt;font color="#000000"&gt;tb.setName&lt;/font&gt;&lt;font color="#000000"&gt;(&lt;/font&gt;&lt;font color="#2a00ff"&gt;&amp;#34;textBoxFormElement&amp;#34;&lt;/font&gt;&lt;font color="#000000"&gt;)&lt;/font&gt;&lt;font color="#000000"&gt;;&lt;/font&gt;&lt;br /&gt;
&lt;font color="#808080"&gt;29&lt;/font&gt;&amp;nbsp;&lt;font color="#ffffff"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/font&gt;&lt;font color="#000000"&gt;panel.add&lt;/font&gt;&lt;font color="#000000"&gt;(&lt;/font&gt;&lt;font color="#000000"&gt;tb&lt;/font&gt;&lt;font color="#000000"&gt;)&lt;/font&gt;&lt;font color="#000000"&gt;;&lt;/font&gt;&lt;br /&gt;
&lt;font color="#808080"&gt;30&lt;/font&gt;&amp;nbsp;&lt;font color="#ffffff"&gt;&lt;/font&gt;&lt;br /&gt;
&lt;font color="#808080"&gt;31&lt;/font&gt;&amp;nbsp;&lt;font color="#ffffff"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/font&gt;&lt;font color="#3f7f5f"&gt;//&amp;nbsp;Create&amp;nbsp;a&amp;nbsp;ListBox,&amp;nbsp;giving&amp;nbsp;it&amp;nbsp;a&amp;nbsp;name&amp;nbsp;and&amp;nbsp;some&amp;nbsp;values&amp;nbsp;to&amp;nbsp;be&amp;nbsp;associated&lt;/font&gt;&lt;br /&gt;
&lt;font color="#808080"&gt;32&lt;/font&gt;&amp;nbsp;&lt;font color="#ffffff"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/font&gt;&lt;font color="#3f7f5f"&gt;//&amp;nbsp;with&amp;nbsp;its&amp;nbsp;options.&lt;/font&gt;&lt;br /&gt;
&lt;font color="#808080"&gt;33&lt;/font&gt;&amp;nbsp;&lt;font color="#ffffff"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/font&gt;&lt;font color="#000000"&gt;ListBox&amp;nbsp;lb&amp;nbsp;=&amp;nbsp;&lt;/font&gt;&lt;font color="#7f0055"&gt;&lt;b&gt;new&amp;nbsp;&lt;/b&gt;&lt;/font&gt;&lt;font color="#000000"&gt;ListBox&lt;/font&gt;&lt;font color="#000000"&gt;()&lt;/font&gt;&lt;font color="#000000"&gt;;&lt;/font&gt;&lt;br /&gt;
&lt;font color="#808080"&gt;34&lt;/font&gt;&amp;nbsp;&lt;font color="#ffffff"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/font&gt;&lt;font color="#000000"&gt;lb.setName&lt;/font&gt;&lt;font color="#000000"&gt;(&lt;/font&gt;&lt;font color="#2a00ff"&gt;&amp;#34;listBoxFormElement&amp;#34;&lt;/font&gt;&lt;font color="#000000"&gt;)&lt;/font&gt;&lt;font color="#000000"&gt;;&lt;/font&gt;&lt;br /&gt;
&lt;font color="#808080"&gt;35&lt;/font&gt;&amp;nbsp;&lt;font color="#ffffff"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/font&gt;&lt;font color="#000000"&gt;lb.addItem&lt;/font&gt;&lt;font color="#000000"&gt;(&lt;/font&gt;&lt;font color="#2a00ff"&gt;&amp;#34;foo&amp;#34;&lt;/font&gt;&lt;font color="#000000"&gt;,&amp;nbsp;&lt;/font&gt;&lt;font color="#2a00ff"&gt;&amp;#34;fooValue&amp;#34;&lt;/font&gt;&lt;font color="#000000"&gt;)&lt;/font&gt;&lt;font color="#000000"&gt;;&lt;/font&gt;&lt;br /&gt;
&lt;font color="#808080"&gt;36&lt;/font&gt;&amp;nbsp;&lt;font color="#ffffff"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/font&gt;&lt;font color="#000000"&gt;lb.addItem&lt;/font&gt;&lt;font color="#000000"&gt;(&lt;/font&gt;&lt;font color="#2a00ff"&gt;&amp;#34;bar&amp;#34;&lt;/font&gt;&lt;font color="#000000"&gt;,&amp;nbsp;&lt;/font&gt;&lt;font color="#2a00ff"&gt;&amp;#34;barValue&amp;#34;&lt;/font&gt;&lt;font color="#000000"&gt;)&lt;/font&gt;&lt;font color="#000000"&gt;;&lt;/font&gt;&lt;br /&gt;
&lt;font color="#808080"&gt;37&lt;/font&gt;&amp;nbsp;&lt;font color="#ffffff"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/font&gt;&lt;font color="#000000"&gt;lb.addItem&lt;/font&gt;&lt;font color="#000000"&gt;(&lt;/font&gt;&lt;font color="#2a00ff"&gt;&amp;#34;baz&amp;#34;&lt;/font&gt;&lt;font color="#000000"&gt;,&amp;nbsp;&lt;/font&gt;&lt;font color="#2a00ff"&gt;&amp;#34;bazValue&amp;#34;&lt;/font&gt;&lt;font color="#000000"&gt;)&lt;/font&gt;&lt;font color="#000000"&gt;;&lt;/font&gt;&lt;br /&gt;
&lt;font color="#808080"&gt;38&lt;/font&gt;&amp;nbsp;&lt;font color="#ffffff"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/font&gt;&lt;font color="#000000"&gt;panel.add&lt;/font&gt;&lt;font color="#000000"&gt;(&lt;/font&gt;&lt;font color="#000000"&gt;lb&lt;/font&gt;&lt;font color="#000000"&gt;)&lt;/font&gt;&lt;font color="#000000"&gt;;&lt;/font&gt;&lt;br /&gt;
&lt;font color="#808080"&gt;39&lt;/font&gt;&amp;nbsp;&lt;font color="#ffffff"&gt;&lt;/font&gt;&lt;br /&gt;
&lt;font color="#808080"&gt;40&lt;/font&gt;&amp;nbsp;&lt;font color="#ffffff"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/font&gt;&lt;font color="#3f7f5f"&gt;//&amp;nbsp;Create&amp;nbsp;a&amp;nbsp;FileUpload&amp;nbsp;widget.&lt;/font&gt;&lt;br /&gt;
&lt;font color="#808080"&gt;41&lt;/font&gt;&amp;nbsp;&lt;font color="#ffffff"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/font&gt;&lt;font color="#000000"&gt;FileUpload&amp;nbsp;upload&amp;nbsp;=&amp;nbsp;&lt;/font&gt;&lt;font color="#7f0055"&gt;&lt;b&gt;new&amp;nbsp;&lt;/b&gt;&lt;/font&gt;&lt;font color="#000000"&gt;FileUpload&lt;/font&gt;&lt;font color="#000000"&gt;()&lt;/font&gt;&lt;font color="#000000"&gt;;&lt;/font&gt;&lt;br /&gt;
&lt;font color="#808080"&gt;42&lt;/font&gt;&amp;nbsp;&lt;font color="#ffffff"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/font&gt;&lt;font color="#000000"&gt;upload.setName&lt;/font&gt;&lt;font color="#000000"&gt;(&lt;/font&gt;&lt;font color="#2a00ff"&gt;&amp;#34;uploadFormElement&amp;#34;&lt;/font&gt;&lt;font color="#000000"&gt;)&lt;/font&gt;&lt;font color="#000000"&gt;;&lt;/font&gt;&lt;br /&gt;
&lt;font color="#808080"&gt;43&lt;/font&gt;&amp;nbsp;&lt;font color="#ffffff"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/font&gt;&lt;font color="#000000"&gt;panel.add&lt;/font&gt;&lt;font color="#000000"&gt;(&lt;/font&gt;&lt;font color="#000000"&gt;upload&lt;/font&gt;&lt;font color="#000000"&gt;)&lt;/font&gt;&lt;font color="#000000"&gt;;&lt;/font&gt;&lt;br /&gt;
&lt;font color="#808080"&gt;44&lt;/font&gt;&amp;nbsp;&lt;font color="#ffffff"&gt;&lt;/font&gt;&lt;br /&gt;
&lt;font color="#808080"&gt;45&lt;/font&gt;&amp;nbsp;&lt;font color="#ffffff"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/font&gt;&lt;font color="#3f7f5f"&gt;//&amp;nbsp;Add&amp;nbsp;a&amp;nbsp;'submit'&amp;nbsp;button.&lt;/font&gt;&lt;br /&gt;
&lt;font color="#808080"&gt;46&lt;/font&gt;&amp;nbsp;&lt;font color="#ffffff"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/font&gt;&lt;font color="#000000"&gt;panel.add&lt;/font&gt;&lt;font color="#000000"&gt;(&lt;/font&gt;&lt;font color="#7f0055"&gt;&lt;b&gt;new&amp;nbsp;&lt;/b&gt;&lt;/font&gt;&lt;font color="#000000"&gt;Button&lt;/font&gt;&lt;font color="#000000"&gt;(&lt;/font&gt;&lt;font color="#2a00ff"&gt;&amp;#34;Submit&amp;#34;&lt;/font&gt;&lt;font color="#000000"&gt;,&amp;nbsp;&lt;/font&gt;&lt;font color="#7f0055"&gt;&lt;b&gt;new&amp;nbsp;&lt;/b&gt;&lt;/font&gt;&lt;font color="#000000"&gt;ClickHandler&lt;/font&gt;&lt;font color="#000000"&gt;()&amp;nbsp;{&lt;/font&gt;&lt;br /&gt;
&lt;font color="#808080"&gt;47&lt;/font&gt;&amp;nbsp;&lt;font color="#ffffff"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/font&gt;&lt;font color="#7f0055"&gt;&lt;b&gt;public&amp;nbsp;&lt;/b&gt;&lt;/font&gt;&lt;font color="#7f0055"&gt;&lt;b&gt;void&amp;nbsp;&lt;/b&gt;&lt;/font&gt;&lt;font color="#000000"&gt;onClick&lt;/font&gt;&lt;font color="#000000"&gt;(&lt;/font&gt;&lt;font color="#000000"&gt;ClickEvent&amp;nbsp;event&lt;/font&gt;&lt;font color="#000000"&gt;)&amp;nbsp;{&lt;/font&gt;&lt;br /&gt;
&lt;font color="#808080"&gt;48&lt;/font&gt;&amp;nbsp;&lt;font color="#ffffff"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/font&gt;&lt;font color="#000000"&gt;form.submit&lt;/font&gt;&lt;font color="#000000"&gt;()&lt;/font&gt;&lt;font color="#000000"&gt;;&lt;/font&gt;&lt;br /&gt;
&lt;font color="#808080"&gt;49&lt;/font&gt;&amp;nbsp;&lt;font color="#ffffff"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/font&gt;&lt;font color="#000000"&gt;}&lt;/font&gt;&lt;br /&gt;
&lt;font color="#808080"&gt;50&lt;/font&gt;&amp;nbsp;&lt;font color="#ffffff"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/font&gt;&lt;font color="#000000"&gt;}))&lt;/font&gt;&lt;font color="#000000"&gt;;&lt;/font&gt;&lt;br /&gt;
&lt;font color="#808080"&gt;51&lt;/font&gt;&amp;nbsp;&lt;font color="#ffffff"&gt;&lt;/font&gt;&lt;br /&gt;
&lt;font color="#808080"&gt;52&lt;/font&gt;&amp;nbsp;&lt;font color="#ffffff"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/font&gt;&lt;font color="#3f7f5f"&gt;//&amp;nbsp;Add&amp;nbsp;an&amp;nbsp;event&amp;nbsp;handler&amp;nbsp;to&amp;nbsp;the&amp;nbsp;form.&lt;/font&gt;&lt;br /&gt;
&lt;font color="#808080"&gt;53&lt;/font&gt;&amp;nbsp;&lt;font color="#ffffff"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/font&gt;&lt;font color="#000000"&gt;form.addSubmitHandler&lt;/font&gt;&lt;font color="#000000"&gt;(&lt;/font&gt;&lt;font color="#7f0055"&gt;&lt;b&gt;new&amp;nbsp;&lt;/b&gt;&lt;/font&gt;&lt;font color="#000000"&gt;FormPanel.SubmitHandler&lt;/font&gt;&lt;font color="#000000"&gt;()&amp;nbsp;{&lt;/font&gt;&lt;br /&gt;
&lt;font color="#808080"&gt;54&lt;/font&gt;&amp;nbsp;&lt;font color="#ffffff"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/font&gt;&lt;font color="#7f0055"&gt;&lt;b&gt;public&amp;nbsp;&lt;/b&gt;&lt;/font&gt;&lt;font color="#7f0055"&gt;&lt;b&gt;void&amp;nbsp;&lt;/b&gt;&lt;/font&gt;&lt;font color="#000000"&gt;onSubmit&lt;/font&gt;&lt;font color="#000000"&gt;(&lt;/font&gt;&lt;font color="#000000"&gt;SubmitEvent&amp;nbsp;event&lt;/font&gt;&lt;font color="#000000"&gt;)&amp;nbsp;{&lt;/font&gt;&lt;br /&gt;
&lt;font color="#808080"&gt;55&lt;/font&gt;&amp;nbsp;&lt;font color="#ffffff"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/font&gt;&lt;font color="#3f7f5f"&gt;//&amp;nbsp;This&amp;nbsp;event&amp;nbsp;is&amp;nbsp;fired&amp;nbsp;just&amp;nbsp;before&amp;nbsp;the&amp;nbsp;form&amp;nbsp;is&amp;nbsp;submitted.&amp;nbsp;We&amp;nbsp;can&lt;/font&gt;&lt;br /&gt;
&lt;font color="#808080"&gt;56&lt;/font&gt;&amp;nbsp;&lt;font color="#ffffff"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/font&gt;&lt;font color="#3f7f5f"&gt;//&amp;nbsp;take&amp;nbsp;this&amp;nbsp;opportunity&amp;nbsp;to&amp;nbsp;perform&amp;nbsp;validation.&lt;/font&gt;&lt;br /&gt;
&lt;font color="#808080"&gt;57&lt;/font&gt;&amp;nbsp;&lt;font color="#ffffff"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/font&gt;&lt;font color="#7f0055"&gt;&lt;b&gt;if&amp;nbsp;&lt;/b&gt;&lt;/font&gt;&lt;font color="#000000"&gt;(&lt;/font&gt;&lt;font color="#000000"&gt;tb.getText&lt;/font&gt;&lt;font color="#000000"&gt;()&lt;/font&gt;&lt;font color="#000000"&gt;.length&lt;/font&gt;&lt;font color="#000000"&gt;()&amp;nbsp;&lt;/font&gt;&lt;font color="#000000"&gt;==&amp;nbsp;&lt;/font&gt;&lt;font color="#990000"&gt;0&lt;/font&gt;&lt;font color="#000000"&gt;)&amp;nbsp;{&lt;/font&gt;&lt;br /&gt;
&lt;font color="#808080"&gt;58&lt;/font&gt;&amp;nbsp;&lt;font color="#ffffff"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/font&gt;&lt;font color="#000000"&gt;Window.alert&lt;/font&gt;&lt;font color="#000000"&gt;(&lt;/font&gt;&lt;font color="#2a00ff"&gt;&amp;#34;The&amp;nbsp;text&amp;nbsp;box&amp;nbsp;must&amp;nbsp;not&amp;nbsp;be&amp;nbsp;empty&amp;#34;&lt;/font&gt;&lt;font color="#000000"&gt;)&lt;/font&gt;&lt;font color="#000000"&gt;;&lt;/font&gt;&lt;br /&gt;
&lt;font color="#808080"&gt;59&lt;/font&gt;&amp;nbsp;&lt;font color="#ffffff"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/font&gt;&lt;font color="#000000"&gt;event.cancel&lt;/font&gt;&lt;font color="#000000"&gt;()&lt;/font&gt;&lt;font color="#000000"&gt;;&lt;/font&gt;&lt;br /&gt;
&lt;font color="#808080"&gt;60&lt;/font&gt;&amp;nbsp;&lt;font color="#ffffff"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/font&gt;&lt;font color="#000000"&gt;}&lt;/font&gt;&lt;br /&gt;
&lt;font color="#808080"&gt;61&lt;/font&gt;&amp;nbsp;&lt;font color="#ffffff"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/font&gt;&lt;font color="#000000"&gt;}&lt;/font&gt;&lt;br /&gt;
&lt;font color="#808080"&gt;62&lt;/font&gt;&amp;nbsp;&lt;font color="#ffffff"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/font&gt;&lt;font color="#000000"&gt;})&lt;/font&gt;&lt;font color="#000000"&gt;;&lt;/font&gt;&lt;br /&gt;
&lt;font color="#808080"&gt;63&lt;/font&gt;&amp;nbsp;&lt;font color="#ffffff"&gt;&lt;/font&gt;&lt;br /&gt;
&lt;font color="#808080"&gt;64&lt;/font&gt;&amp;nbsp;&lt;font color="#ffffff"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/font&gt;&lt;font color="#000000"&gt;form.addSubmitCompleteHandler&lt;/font&gt;&lt;font color="#000000"&gt;(&lt;/font&gt;&lt;font color="#7f0055"&gt;&lt;b&gt;new&amp;nbsp;&lt;/b&gt;&lt;/font&gt;&lt;font color="#000000"&gt;FormPanel.SubmitCompleteHandler&lt;/font&gt;&lt;font color="#000000"&gt;()&amp;nbsp;{&lt;/font&gt;&lt;br /&gt;
&lt;font color="#808080"&gt;65&lt;/font&gt;&amp;nbsp;&lt;font color="#ffffff"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/font&gt;&lt;font color="#7f0055"&gt;&lt;b&gt;public&amp;nbsp;&lt;/b&gt;&lt;/font&gt;&lt;font color="#7f0055"&gt;&lt;b&gt;void&amp;nbsp;&lt;/b&gt;&lt;/font&gt;&lt;font color="#000000"&gt;onSubmitComplete&lt;/font&gt;&lt;font color="#000000"&gt;(&lt;/font&gt;&lt;font color="#000000"&gt;SubmitCompleteEvent&amp;nbsp;event&lt;/font&gt;&lt;font color="#000000"&gt;)&amp;nbsp;{&lt;/font&gt;&lt;br /&gt;
&lt;font color="#808080"&gt;66&lt;/font&gt;&amp;nbsp;&lt;font color="#ffffff"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/font&gt;&lt;font color="#3f7f5f"&gt;//&amp;nbsp;When&amp;nbsp;the&amp;nbsp;form&amp;nbsp;submission&amp;nbsp;is&amp;nbsp;successfully&amp;nbsp;completed,&amp;nbsp;this&lt;/font&gt;&lt;br /&gt;
&lt;font color="#808080"&gt;67&lt;/font&gt;&amp;nbsp;&lt;font color="#ffffff"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/font&gt;&lt;font color="#3f7f5f"&gt;//&amp;nbsp;event&amp;nbsp;is&amp;nbsp;fired.&amp;nbsp;Assuming&amp;nbsp;the&amp;nbsp;service&amp;nbsp;returned&amp;nbsp;a&amp;nbsp;response&amp;nbsp;of&amp;nbsp;type&lt;/font&gt;&lt;br /&gt;
&lt;font color="#808080"&gt;68&lt;/font&gt;&amp;nbsp;&lt;font color="#ffffff"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/font&gt;&lt;font color="#3f7f5f"&gt;//&amp;nbsp;text/html,&amp;nbsp;we&amp;nbsp;can&amp;nbsp;get&amp;nbsp;the&amp;nbsp;result&amp;nbsp;text&amp;nbsp;here&amp;nbsp;(see&amp;nbsp;the&amp;nbsp;FormPanel&lt;/font&gt;&lt;br /&gt;
&lt;font color="#808080"&gt;69&lt;/font&gt;&amp;nbsp;&lt;font color="#ffffff"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/font&gt;&lt;font color="#3f7f5f"&gt;//&amp;nbsp;documentation&amp;nbsp;for&amp;nbsp;further&amp;nbsp;explanation).&lt;/font&gt;&lt;br /&gt;
&lt;font color="#808080"&gt;70&lt;/font&gt;&amp;nbsp;&lt;font color="#ffffff"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/font&gt;&lt;font color="#000000"&gt;Window.alert&lt;/font&gt;&lt;font color="#000000"&gt;(&lt;/font&gt;&lt;font color="#000000"&gt;event.getResults&lt;/font&gt;&lt;font color="#000000"&gt;())&lt;/font&gt;&lt;font color="#000000"&gt;;&lt;/font&gt;&lt;br /&gt;
&lt;font color="#808080"&gt;71&lt;/font&gt;&amp;nbsp;&lt;font color="#ffffff"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/font&gt;&lt;font color="#000000"&gt;}&lt;/font&gt;&lt;br /&gt;
&lt;font color="#808080"&gt;72&lt;/font&gt;&amp;nbsp;&lt;font color="#ffffff"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/font&gt;&lt;font color="#000000"&gt;})&lt;/font&gt;&lt;font color="#000000"&gt;;&lt;/font&gt;&lt;br /&gt;
&lt;font color="#808080"&gt;73&lt;/font&gt;&amp;nbsp;&lt;font color="#ffffff"&gt;&lt;/font&gt;&lt;br /&gt;
&lt;font color="#808080"&gt;74&lt;/font&gt;&amp;nbsp;&lt;font color="#ffffff"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/font&gt;&lt;font color="#000000"&gt;RootPanel.get&lt;/font&gt;&lt;font color="#000000"&gt;()&lt;/font&gt;&lt;font color="#000000"&gt;.add&lt;/font&gt;&lt;font color="#000000"&gt;(&lt;/font&gt;&lt;font color="#000000"&gt;form&lt;/font&gt;&lt;font color="#000000"&gt;)&lt;/font&gt;&lt;font color="#000000"&gt;;&lt;/font&gt;&lt;br /&gt;
&lt;font color="#808080"&gt;75&lt;/font&gt;&amp;nbsp;&lt;font color="#ffffff"&gt;&lt;/font&gt;&lt;br /&gt;
&lt;font color="#808080"&gt;76&lt;/font&gt;&amp;nbsp;&lt;font color="#ffffff"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/font&gt;&lt;font color="#000000"&gt;}&lt;/font&gt;&lt;br /&gt;
&lt;font color="#808080"&gt;77&lt;/font&gt;&amp;nbsp;&lt;font color="#ffffff"&gt;&lt;/font&gt;&lt;br /&gt;
&lt;font color="#808080"&gt;78&lt;/font&gt;&amp;nbsp;&lt;font color="#000000"&gt;}&lt;/font&gt;&lt;/code&gt;
    
   &lt;/td&gt;
  &lt;!-- end source code --&gt;
   &lt;/tr&gt;
&lt;/table&gt;
&lt;/div&gt;
&lt;!-- =       END of automatically generated HTML code       = --&gt;
&lt;!-- ======================================================== --&gt;

&lt;p&gt;
There are a few points to remember;&lt;/p&gt;
&lt;ul&gt;
  &lt;li&gt;@line 14-20: set the form to use POST method and mutipart MIME encoding&lt;/li&gt;
  &lt;li&gt;@line 48: you have to submit the form to send data to the server&lt;/li&gt;
  &lt;li&gt;@line 53: you can set a &lt;a href="http://google-web-toolkit.googlecode.com/svn/javadoc/1.6/com/google/gwt/user/client/ui/FormPanel.SubmitHandler.html" target="_blank"&gt;SubmitHandler&lt;/a&gt; for your FormPanel widget to make necessary operations just before the form is submitted&lt;/li&gt;
  &lt;li&gt;@line 64: you can set a &lt;a href="http://google-web-toolkit.googlecode.com/svn/javadoc/1.6/com/google/gwt/user/client/ui/FormPanel.SubmitCompleteHandler.html" target="_blank"&gt;SubmitCompleteHandler&lt;/a&gt; to handle returning result(response) to your submit request&lt;/li&gt;
&lt;/ul&gt;
&lt;h5&gt;Server Side:&lt;/h5&gt;
&lt;p&gt;At server side, our Servlet will handle only multipart requests and process only fileupload request item(s). After writing the file to a system directory, sends a success response. Alternatively, you can put incoming file content into server session, or use it for other server side purposes. Our Servlet code is as below;&lt;/p&gt;


&lt;!-- ======================================================== --&gt;
&lt;!-- = Java Sourcecode to HTML automatically converted code = --&gt;
&lt;!-- =   Java2Html Converter 5.0 [2006-02-26] by Markus Gebhard  markus@jave.de   = --&gt;
&lt;!-- =     Further information: http://www.java2html.de     = --&gt;
&lt;div align="left" class="java"&gt;
&lt;table cellpadding="3" cellspacing="0" class="codeframe"&gt;
  &lt;!-- start headline --&gt;
   &lt;tr&gt;
    &lt;td colspan="2" class="codetitle"&gt;
     &lt;center&gt;
       &lt;font size="+2"&gt;
      &lt;code&gt;&lt;b&gt;
File Upload Servlet&lt;/b&gt;&lt;/code&gt;
     &lt;/font&gt;
     &lt;/center&gt;
    &lt;/td&gt;
   &lt;/tr&gt;
  &lt;!-- end headline --&gt;
   &lt;tr&gt;
  &lt;!-- start source code --&gt;
   &lt;td nowrap="nowrap" valign="top" align="left"&gt;
    &lt;code&gt;
&lt;font color="#808080"&gt;01&lt;/font&gt;&amp;nbsp;&lt;font color="#3f5fbf"&gt;/**&lt;/font&gt;&lt;br /&gt;
&lt;font color="#808080"&gt;02&lt;/font&gt;&amp;nbsp;&lt;font color="#ffffff"&gt;&amp;nbsp;&lt;/font&gt;&lt;font color="#3f5fbf"&gt;*&amp;nbsp;servlet&amp;nbsp;to&amp;nbsp;handle&amp;nbsp;file&amp;nbsp;upload&amp;nbsp;requests&lt;/font&gt;&lt;br /&gt;
&lt;font color="#808080"&gt;03&lt;/font&gt;&amp;nbsp;&lt;font color="#ffffff"&gt;&amp;nbsp;&lt;/font&gt;&lt;font color="#3f5fbf"&gt;*&amp;nbsp;&lt;/font&gt;&lt;br /&gt;
&lt;font color="#808080"&gt;04&lt;/font&gt;&amp;nbsp;&lt;font color="#ffffff"&gt;&amp;nbsp;&lt;/font&gt;&lt;font color="#3f5fbf"&gt;*&amp;nbsp;&lt;/font&gt;&lt;font color="#7f9fbf"&gt;@author&amp;nbsp;&lt;/font&gt;&lt;font color="#3f5fbf"&gt;hturksoy&lt;/font&gt;&lt;br /&gt;
&lt;font color="#808080"&gt;05&lt;/font&gt;&amp;nbsp;&lt;font color="#ffffff"&gt;&amp;nbsp;&lt;/font&gt;&lt;font color="#3f5fbf"&gt;*&amp;nbsp;&lt;/font&gt;&lt;br /&gt;
&lt;font color="#808080"&gt;06&lt;/font&gt;&amp;nbsp;&lt;font color="#ffffff"&gt;&amp;nbsp;&lt;/font&gt;&lt;font color="#3f5fbf"&gt;*/&lt;/font&gt;&lt;br /&gt;
&lt;font color="#808080"&gt;07&lt;/font&gt;&amp;nbsp;&lt;font color="#7f0055"&gt;&lt;b&gt;public&amp;nbsp;class&amp;nbsp;&lt;/b&gt;&lt;/font&gt;&lt;font color="#000000"&gt;FileUploadServlet&amp;nbsp;&lt;/font&gt;&lt;font color="#7f0055"&gt;&lt;b&gt;extends&amp;nbsp;&lt;/b&gt;&lt;/font&gt;&lt;font color="#000000"&gt;HttpServlet&amp;nbsp;&lt;/font&gt;&lt;font color="#000000"&gt;{&lt;/font&gt;&lt;br /&gt;
&lt;font color="#808080"&gt;08&lt;/font&gt;&amp;nbsp;&lt;font color="#ffffff"&gt;&lt;/font&gt;&lt;br /&gt;
&lt;font color="#808080"&gt;09&lt;/font&gt;&amp;nbsp;&lt;font color="#ffffff"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/font&gt;&lt;font color="#7f0055"&gt;&lt;b&gt;private&amp;nbsp;static&amp;nbsp;final&amp;nbsp;&lt;/b&gt;&lt;/font&gt;&lt;font color="#000000"&gt;String&amp;nbsp;UPLOAD_DIRECTORY&amp;nbsp;=&amp;nbsp;&lt;/font&gt;&lt;font color="#2a00ff"&gt;&amp;#34;d:\\uploaded\\&amp;#34;&lt;/font&gt;&lt;font color="#000000"&gt;;&lt;/font&gt;&lt;br /&gt;
&lt;font color="#808080"&gt;10&lt;/font&gt;&amp;nbsp;&lt;font color="#ffffff"&gt;&lt;/font&gt;&lt;br /&gt;
&lt;font color="#808080"&gt;11&lt;/font&gt;&amp;nbsp;&lt;font color="#ffffff"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/font&gt;&lt;font color="#646464"&gt;@Override&lt;/font&gt;&lt;br /&gt;
&lt;font color="#808080"&gt;12&lt;/font&gt;&amp;nbsp;&lt;font color="#ffffff"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/font&gt;&lt;font color="#7f0055"&gt;&lt;b&gt;protected&amp;nbsp;&lt;/b&gt;&lt;/font&gt;&lt;font color="#7f0055"&gt;&lt;b&gt;void&amp;nbsp;&lt;/b&gt;&lt;/font&gt;&lt;font color="#000000"&gt;doGet&lt;/font&gt;&lt;font color="#000000"&gt;(&lt;/font&gt;&lt;font color="#000000"&gt;HttpServletRequest&amp;nbsp;req,&amp;nbsp;HttpServletResponse&amp;nbsp;resp&lt;/font&gt;&lt;font color="#000000"&gt;)&lt;/font&gt;&lt;br /&gt;
&lt;font color="#808080"&gt;13&lt;/font&gt;&amp;nbsp;&lt;font color="#ffffff"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/font&gt;&lt;font color="#7f0055"&gt;&lt;b&gt;throws&amp;nbsp;&lt;/b&gt;&lt;/font&gt;&lt;font color="#000000"&gt;ServletException,&amp;nbsp;IOException&amp;nbsp;&lt;/font&gt;&lt;font color="#000000"&gt;{&lt;/font&gt;&lt;br /&gt;
&lt;font color="#808080"&gt;14&lt;/font&gt;&amp;nbsp;&lt;font color="#ffffff"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/font&gt;&lt;font color="#7f0055"&gt;&lt;b&gt;super&lt;/b&gt;&lt;/font&gt;&lt;font color="#000000"&gt;.doGet&lt;/font&gt;&lt;font color="#000000"&gt;(&lt;/font&gt;&lt;font color="#000000"&gt;req,&amp;nbsp;resp&lt;/font&gt;&lt;font color="#000000"&gt;)&lt;/font&gt;&lt;font color="#000000"&gt;;&lt;/font&gt;&lt;br /&gt;
&lt;font color="#808080"&gt;15&lt;/font&gt;&amp;nbsp;&lt;font color="#ffffff"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/font&gt;&lt;font color="#000000"&gt;}&lt;/font&gt;&lt;br /&gt;
&lt;font color="#808080"&gt;16&lt;/font&gt;&amp;nbsp;&lt;font color="#ffffff"&gt;&lt;/font&gt;&lt;br /&gt;
&lt;font color="#808080"&gt;17&lt;/font&gt;&amp;nbsp;&lt;font color="#ffffff"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/font&gt;&lt;font color="#646464"&gt;@Override&lt;/font&gt;&lt;br /&gt;
&lt;font color="#808080"&gt;18&lt;/font&gt;&amp;nbsp;&lt;font color="#ffffff"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/font&gt;&lt;font color="#7f0055"&gt;&lt;b&gt;protected&amp;nbsp;&lt;/b&gt;&lt;/font&gt;&lt;font color="#7f0055"&gt;&lt;b&gt;void&amp;nbsp;&lt;/b&gt;&lt;/font&gt;&lt;font color="#000000"&gt;doPost&lt;/font&gt;&lt;font color="#000000"&gt;(&lt;/font&gt;&lt;font color="#000000"&gt;HttpServletRequest&amp;nbsp;req,&amp;nbsp;HttpServletResponse&amp;nbsp;resp&lt;/font&gt;&lt;font color="#000000"&gt;)&lt;/font&gt;&lt;br /&gt;
&lt;font color="#808080"&gt;19&lt;/font&gt;&amp;nbsp;&lt;font color="#ffffff"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/font&gt;&lt;font color="#7f0055"&gt;&lt;b&gt;throws&amp;nbsp;&lt;/b&gt;&lt;/font&gt;&lt;font color="#000000"&gt;ServletException,&amp;nbsp;IOException&amp;nbsp;&lt;/font&gt;&lt;font color="#000000"&gt;{&lt;/font&gt;&lt;br /&gt;
&lt;font color="#808080"&gt;20&lt;/font&gt;&amp;nbsp;&lt;font color="#ffffff"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/font&gt;&lt;br /&gt;
&lt;font color="#808080"&gt;21&lt;/font&gt;&amp;nbsp;&lt;font color="#ffffff"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/font&gt;&lt;font color="#3f7f5f"&gt;//&amp;nbsp;process&amp;nbsp;only&amp;nbsp;multipart&amp;nbsp;requests&lt;/font&gt;&lt;br /&gt;
&lt;font color="#808080"&gt;22&lt;/font&gt;&amp;nbsp;&lt;font color="#ffffff"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/font&gt;&lt;font color="#7f0055"&gt;&lt;b&gt;if&amp;nbsp;&lt;/b&gt;&lt;/font&gt;&lt;font color="#000000"&gt;(&lt;/font&gt;&lt;font color="#000000"&gt;ServletFileUpload.isMultipartContent&lt;/font&gt;&lt;font color="#000000"&gt;(&lt;/font&gt;&lt;font color="#000000"&gt;req&lt;/font&gt;&lt;font color="#000000"&gt;))&amp;nbsp;{&lt;/font&gt;&lt;br /&gt;
&lt;font color="#808080"&gt;23&lt;/font&gt;&amp;nbsp;&lt;font color="#ffffff"&gt;&lt;/font&gt;&lt;br /&gt;
&lt;font color="#808080"&gt;24&lt;/font&gt;&amp;nbsp;&lt;font color="#ffffff"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/font&gt;&lt;font color="#3f7f5f"&gt;//&amp;nbsp;Create&amp;nbsp;a&amp;nbsp;factory&amp;nbsp;for&amp;nbsp;disk-based&amp;nbsp;file&amp;nbsp;items&lt;/font&gt;&lt;br /&gt;
&lt;font color="#808080"&gt;25&lt;/font&gt;&amp;nbsp;&lt;font color="#ffffff"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/font&gt;&lt;font color="#000000"&gt;FileItemFactory&amp;nbsp;factory&amp;nbsp;=&amp;nbsp;&lt;/font&gt;&lt;font color="#7f0055"&gt;&lt;b&gt;new&amp;nbsp;&lt;/b&gt;&lt;/font&gt;&lt;font color="#000000"&gt;DiskFileItemFactory&lt;/font&gt;&lt;font color="#000000"&gt;()&lt;/font&gt;&lt;font color="#000000"&gt;;&lt;/font&gt;&lt;br /&gt;
&lt;font color="#808080"&gt;26&lt;/font&gt;&amp;nbsp;&lt;font color="#ffffff"&gt;&lt;/font&gt;&lt;br /&gt;
&lt;font color="#808080"&gt;27&lt;/font&gt;&amp;nbsp;&lt;font color="#ffffff"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/font&gt;&lt;font color="#3f7f5f"&gt;//&amp;nbsp;Create&amp;nbsp;a&amp;nbsp;new&amp;nbsp;file&amp;nbsp;upload&amp;nbsp;handler&lt;/font&gt;&lt;br /&gt;
&lt;font color="#808080"&gt;28&lt;/font&gt;&amp;nbsp;&lt;font color="#ffffff"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/font&gt;&lt;font color="#000000"&gt;ServletFileUpload&amp;nbsp;upload&amp;nbsp;=&amp;nbsp;&lt;/font&gt;&lt;font color="#7f0055"&gt;&lt;b&gt;new&amp;nbsp;&lt;/b&gt;&lt;/font&gt;&lt;font color="#000000"&gt;ServletFileUpload&lt;/font&gt;&lt;font color="#000000"&gt;(&lt;/font&gt;&lt;font color="#000000"&gt;factory&lt;/font&gt;&lt;font color="#000000"&gt;)&lt;/font&gt;&lt;font color="#000000"&gt;;&lt;/font&gt;&lt;br /&gt;
&lt;font color="#808080"&gt;29&lt;/font&gt;&amp;nbsp;&lt;font color="#ffffff"&gt;&lt;/font&gt;&lt;br /&gt;
&lt;font color="#808080"&gt;30&lt;/font&gt;&amp;nbsp;&lt;font color="#ffffff"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/font&gt;&lt;font color="#3f7f5f"&gt;//&amp;nbsp;Parse&amp;nbsp;the&amp;nbsp;request&lt;/font&gt;&lt;br /&gt;
&lt;font color="#808080"&gt;31&lt;/font&gt;&amp;nbsp;&lt;font color="#ffffff"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/font&gt;&lt;font color="#7f0055"&gt;&lt;b&gt;try&amp;nbsp;&lt;/b&gt;&lt;/font&gt;&lt;font color="#000000"&gt;{&lt;/font&gt;&lt;br /&gt;
&lt;font color="#808080"&gt;32&lt;/font&gt;&amp;nbsp;&lt;font color="#ffffff"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/font&gt;&lt;font color="#000000"&gt;List&amp;lt;FileItem&amp;gt;&amp;nbsp;items&amp;nbsp;=&amp;nbsp;upload.parseRequest&lt;/font&gt;&lt;font color="#000000"&gt;(&lt;/font&gt;&lt;font color="#000000"&gt;req&lt;/font&gt;&lt;font color="#000000"&gt;)&lt;/font&gt;&lt;font color="#000000"&gt;;&lt;/font&gt;&lt;br /&gt;
&lt;font color="#808080"&gt;33&lt;/font&gt;&amp;nbsp;&lt;font color="#ffffff"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/font&gt;&lt;font color="#7f0055"&gt;&lt;b&gt;for&amp;nbsp;&lt;/b&gt;&lt;/font&gt;&lt;font color="#000000"&gt;(&lt;/font&gt;&lt;font color="#000000"&gt;FileItem&amp;nbsp;item&amp;nbsp;:&amp;nbsp;items&lt;/font&gt;&lt;font color="#000000"&gt;)&amp;nbsp;{&lt;/font&gt;&lt;br /&gt;
&lt;font color="#808080"&gt;34&lt;/font&gt;&amp;nbsp;&lt;font color="#ffffff"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/font&gt;&lt;font color="#3f7f5f"&gt;//&amp;nbsp;process&amp;nbsp;only&amp;nbsp;file&amp;nbsp;upload - discard other form item types&lt;/font&gt;&lt;br /&gt;
&lt;font color="#808080"&gt;35&lt;/font&gt;&amp;nbsp;&lt;font color="#ffffff"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/font&gt;&lt;font color="#7f0055"&gt;&lt;b&gt;if&amp;nbsp;&lt;/b&gt;&lt;/font&gt;&lt;font color="#000000"&gt;(&lt;/font&gt;&lt;font color="#000000"&gt;item.isFormField&lt;/font&gt;&lt;font color="#000000"&gt;())&amp;nbsp;&lt;/font&gt;&lt;font color="#7f0055"&gt;&lt;b&gt;continue&lt;/b&gt;&lt;/font&gt;&lt;font color="#000000"&gt;;&lt;/font&gt;&lt;br /&gt;
&lt;font color="#808080"&gt;36&lt;/font&gt;&amp;nbsp;&lt;font color="#ffffff"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/font&gt;&lt;br /&gt;
&lt;font color="#808080"&gt;37&lt;/font&gt;&amp;nbsp;&lt;font color="#ffffff"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/font&gt;&lt;font color="#000000"&gt;String&amp;nbsp;fileName&amp;nbsp;=&amp;nbsp;item.getName&lt;/font&gt;&lt;font color="#000000"&gt;()&lt;/font&gt;&lt;font color="#000000"&gt;;&lt;/font&gt;&lt;br /&gt;
&lt;font color="#808080"&gt;38&lt;/font&gt;&amp;nbsp;&lt;font color="#ffffff"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/font&gt;&lt;font color="#3f7f5f"&gt;//&amp;nbsp;get&amp;nbsp;only&amp;nbsp;the&amp;nbsp;file&amp;nbsp;name&amp;nbsp;not&amp;nbsp;whole&amp;nbsp;path&lt;/font&gt;&lt;br /&gt;
&lt;font color="#808080"&gt;39&lt;/font&gt;&amp;nbsp;&lt;font color="#ffffff"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/font&gt;&lt;font color="#7f0055"&gt;&lt;b&gt;if&amp;nbsp;&lt;/b&gt;&lt;/font&gt;&lt;font color="#000000"&gt;(&lt;/font&gt;&lt;font color="#000000"&gt;fileName&amp;nbsp;!=&amp;nbsp;&lt;/font&gt;&lt;font color="#7f0055"&gt;&lt;b&gt;null&lt;/b&gt;&lt;/font&gt;&lt;font color="#000000"&gt;)&amp;nbsp;{&lt;/font&gt;&lt;br /&gt;
&lt;font color="#808080"&gt;40&lt;/font&gt;&amp;nbsp;&lt;font color="#ffffff"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/font&gt;&lt;font color="#000000"&gt;fileName&amp;nbsp;=&amp;nbsp;FilenameUtils.&amp;nbsp;getName&lt;/font&gt;&lt;font color="#000000"&gt;(&lt;/font&gt;&lt;font color="#000000"&gt;fileName&lt;/font&gt;&lt;font color="#000000"&gt;)&lt;/font&gt;&lt;font color="#000000"&gt;;&lt;/font&gt;&lt;br /&gt;
&lt;font color="#808080"&gt;41&lt;/font&gt;&amp;nbsp;&lt;font color="#ffffff"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/font&gt;&lt;font color="#000000"&gt;}&lt;/font&gt;&lt;br /&gt;
&lt;font color="#808080"&gt;42&lt;/font&gt;&amp;nbsp;&lt;font color="#ffffff"&gt;&lt;/font&gt;&lt;br /&gt;
&lt;font color="#808080"&gt;43&lt;/font&gt;&amp;nbsp;&lt;font color="#ffffff"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/font&gt;&lt;font color="#000000"&gt;File&amp;nbsp;uploadedFile&amp;nbsp;=&amp;nbsp;&lt;/font&gt;&lt;font color="#7f0055"&gt;&lt;b&gt;new&amp;nbsp;&lt;/b&gt;&lt;/font&gt;&lt;font color="#000000"&gt;File&lt;/font&gt;&lt;font color="#000000"&gt;(&lt;/font&gt;&lt;font color="#000000"&gt;UPLOAD_DIRECTORY,&amp;nbsp;fileName&lt;/font&gt;&lt;font color="#000000"&gt;)&lt;/font&gt;&lt;font color="#000000"&gt;;&lt;/font&gt;&lt;br /&gt;
&lt;font color="#808080"&gt;44&lt;/font&gt;&amp;nbsp;&lt;font color="#ffffff"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/font&gt;&lt;font color="#7f0055"&gt;&lt;b&gt;if&amp;nbsp;&lt;/b&gt;&lt;/font&gt;&lt;font color="#000000"&gt;(&lt;/font&gt;&lt;font color="#000000"&gt;uploadedFile.createNewFile&lt;/font&gt;&lt;font color="#000000"&gt;())&amp;nbsp;{&lt;/font&gt;&lt;br /&gt;
&lt;font color="#808080"&gt;45&lt;/font&gt;&amp;nbsp;&lt;font color="#ffffff"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/font&gt;&lt;font color="#000000"&gt;item.write&lt;/font&gt;&lt;font color="#000000"&gt;(&lt;/font&gt;&lt;font color="#000000"&gt;uploadedFile&lt;/font&gt;&lt;font color="#000000"&gt;)&lt;/font&gt;&lt;font color="#000000"&gt;;&lt;/font&gt;&lt;br /&gt;
&lt;font color="#808080"&gt;46&lt;/font&gt;&amp;nbsp;&lt;font color="#ffffff"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/font&gt;&lt;font color="#000000"&gt;resp.setStatus&lt;/font&gt;&lt;font color="#000000"&gt;(&lt;/font&gt;&lt;font color="#000000"&gt;HttpServletResponse.SC_CREATED&lt;/font&gt;&lt;font color="#000000"&gt;)&lt;/font&gt;&lt;font color="#000000"&gt;;&lt;/font&gt;&lt;br /&gt;
&lt;font color="#808080"&gt;47&lt;/font&gt;&amp;nbsp;&lt;font color="#ffffff"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/font&gt;&lt;font color="#000000"&gt;resp.getWriter&lt;/font&gt;&lt;font color="#000000"&gt;()&lt;/font&gt;&lt;font color="#000000"&gt;.print&lt;/font&gt;&lt;font color="#000000"&gt;(&lt;/font&gt;&lt;font color="#2a00ff"&gt;&amp;#34;The&amp;nbsp;file&amp;nbsp;was&amp;nbsp;created&amp;nbsp;successfully.&amp;#34;&lt;/font&gt;&lt;font color="#000000"&gt;)&lt;/font&gt;&lt;font color="#000000"&gt;;&lt;/font&gt;&lt;br /&gt;
&lt;font color="#808080"&gt;48&lt;/font&gt;&amp;nbsp;&lt;font color="#ffffff"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/font&gt;&lt;font color="#000000"&gt;resp.flushBuffer&lt;/font&gt;&lt;font color="#000000"&gt;()&lt;/font&gt;&lt;font color="#000000"&gt;;&lt;/font&gt;&lt;br /&gt;
&lt;font color="#808080"&gt;49&lt;/font&gt;&amp;nbsp;&lt;font color="#ffffff"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/font&gt;&lt;font color="#000000"&gt;}&amp;nbsp;&lt;/font&gt;&lt;font color="#7f0055"&gt;&lt;b&gt;else&lt;/b&gt;&lt;/font&gt;&lt;br /&gt;
&lt;font color="#808080"&gt;50&lt;/font&gt;&amp;nbsp;&lt;font color="#ffffff"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/font&gt;&lt;font color="#7f0055"&gt;&lt;b&gt;throw&amp;nbsp;new&amp;nbsp;&lt;/b&gt;&lt;/font&gt;&lt;font color="#000000"&gt;IOException&lt;/font&gt;&lt;font color="#000000"&gt;(&lt;/font&gt;&lt;font color="#2a00ff"&gt;&amp;#34;The&amp;nbsp;file&amp;nbsp;already&amp;nbsp;exists&amp;nbsp;in&amp;nbsp;repository.&amp;#34;&lt;/font&gt;&lt;font color="#000000"&gt;)&lt;/font&gt;&lt;font color="#000000"&gt;;&lt;/font&gt;&lt;br /&gt;
&lt;font color="#808080"&gt;51&lt;/font&gt;&amp;nbsp;&lt;font color="#ffffff"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/font&gt;&lt;font color="#000000"&gt;}&lt;/font&gt;&lt;br /&gt;
&lt;font color="#808080"&gt;52&lt;/font&gt;&amp;nbsp;&lt;font color="#ffffff"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/font&gt;&lt;font color="#000000"&gt;}&amp;nbsp;&lt;/font&gt;&lt;font color="#7f0055"&gt;&lt;b&gt;catch&amp;nbsp;&lt;/b&gt;&lt;/font&gt;&lt;font color="#000000"&gt;(&lt;/font&gt;&lt;font color="#000000"&gt;Exception&amp;nbsp;e&lt;/font&gt;&lt;font color="#000000"&gt;)&amp;nbsp;{&lt;/font&gt;&lt;br /&gt;
&lt;font color="#808080"&gt;53&lt;/font&gt;&amp;nbsp;&lt;font color="#ffffff"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/font&gt;&lt;font color="#000000"&gt;resp.sendError&lt;/font&gt;&lt;font color="#000000"&gt;(&lt;/font&gt;&lt;font color="#000000"&gt;HttpServletResponse.SC_INTERNAL_SERVER_ERROR,&lt;/font&gt;&lt;br /&gt;
&lt;font color="#808080"&gt;54&lt;/font&gt;&amp;nbsp;&lt;font color="#ffffff"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/font&gt;&lt;font color="#2a00ff"&gt;&amp;#34;An&amp;nbsp;error&amp;nbsp;occurred&amp;nbsp;while&amp;nbsp;creating&amp;nbsp;the&amp;nbsp;file&amp;nbsp;:&amp;nbsp;&amp;#34;&amp;nbsp;&lt;/font&gt;&lt;font color="#000000"&gt;+&amp;nbsp;e.getMessage&lt;/font&gt;&lt;font color="#000000"&gt;())&lt;/font&gt;&lt;font color="#000000"&gt;;&lt;/font&gt;&lt;br /&gt;
&lt;font color="#808080"&gt;55&lt;/font&gt;&amp;nbsp;&lt;font color="#ffffff"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/font&gt;&lt;font color="#000000"&gt;}&lt;/font&gt;&lt;br /&gt;
&lt;font color="#808080"&gt;56&lt;/font&gt;&amp;nbsp;&lt;font color="#ffffff"&gt;&lt;/font&gt;&lt;br /&gt;
&lt;font color="#808080"&gt;57&lt;/font&gt;&amp;nbsp;&lt;font color="#ffffff"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/font&gt;&lt;font color="#000000"&gt;}&amp;nbsp;&lt;/font&gt;&lt;font color="#7f0055"&gt;&lt;b&gt;else&amp;nbsp;&lt;/b&gt;&lt;/font&gt;&lt;font color="#000000"&gt;{&lt;/font&gt;&lt;br /&gt;
&lt;font color="#808080"&gt;58&lt;/font&gt;&amp;nbsp;&lt;font color="#ffffff"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/font&gt;&lt;font color="#000000"&gt;resp.sendError&lt;/font&gt;&lt;font color="#000000"&gt;(&lt;/font&gt;&lt;font color="#000000"&gt;HttpServletResponse.SC_UNSUPPORTED_MEDIA_TYPE,&lt;/font&gt;&lt;br /&gt;
&lt;font color="#808080"&gt;59&lt;/font&gt;&amp;nbsp;&lt;font color="#ffffff"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/font&gt;&lt;font color="#2a00ff"&gt;&amp;#34;Request&amp;nbsp;contents&amp;nbsp;type&amp;nbsp;is&amp;nbsp;not&amp;nbsp;supported&amp;nbsp;by&amp;nbsp;the&amp;nbsp;servlet.&amp;#34;&lt;/font&gt;&lt;font color="#000000"&gt;)&lt;/font&gt;&lt;font color="#000000"&gt;;&lt;/font&gt;&lt;br /&gt;
&lt;font color="#808080"&gt;60&lt;/font&gt;&amp;nbsp;&lt;font color="#ffffff"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/font&gt;&lt;font color="#000000"&gt;}&lt;/font&gt;&lt;br /&gt;
&lt;font color="#808080"&gt;61&lt;/font&gt;&amp;nbsp;&lt;font color="#ffffff"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/font&gt;&lt;font color="#000000"&gt;}&lt;/font&gt;&lt;br /&gt;
&lt;font color="#808080"&gt;62&lt;/font&gt;&amp;nbsp;&lt;font color="#000000"&gt;}&lt;/font&gt;&lt;/code&gt;
    
   &lt;/td&gt;
  &lt;!-- end source code --&gt;
   &lt;/tr&gt;
&lt;/table&gt;
&lt;/div&gt;
&lt;!-- =       END of automatically generated HTML code       = --&gt;
&lt;!-- ======================================================== --&gt;

&lt;p&gt;A few things to remember;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;@line 9: this upload directory must exist (of course you can create it on the fly using java.io.File#&lt;a href="http://java.sun.com/j2se/1.5.0/docs/api/java/io/File.html#mkdirs()" target="_blank"&gt;mkdirs&lt;/a&gt; method)&lt;/li&gt;
&lt;li&gt;@line 50: throws an error if the uploaded file already exists in the repository. You can use alternative algorithms here like appending unique numbers to the name of the duplicate files. I just skip these for simplicity&lt;/li&gt;
&lt;/ul&gt;
&lt;h5&gt;Configuration:&lt;/h5&gt;
&lt;p&gt;That's all about development. Below are the extra activities to make the project run.&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;get the commons-fileupload and commons-io jars, and put them in your lib dir (war/WEB-INF/lib) and classpath. Current versions are commons-fileupload-v1.2.1, commons-io-v1.4&lt;/li&gt;
&lt;li&gt;configure your file upload servlet mapping in web.xml like below;&lt;br&gt;&lt;br&gt;

&lt;!-- ======================================================== --&gt;
&lt;!-- = Java Sourcecode to HTML automatically converted code = --&gt;
&lt;!-- =   Java2Html Converter 5.0 [2006-02-26] by Markus Gebhard  markus@jave.de   = --&gt;
&lt;!-- =     Further information: http://www.java2html.de     = --&gt;
&lt;div align="left" class="java"&gt;
&lt;table cellpadding="3" cellspacing="0" class="codeframe"&gt;
  &lt;!-- start headline --&gt;
   &lt;tr&gt;
    &lt;td colspan="2" class="codetitle"&gt;
     &lt;center&gt;
       &lt;font size="+2"&gt;
      &lt;code&gt;&lt;b&gt;
web.xml
      &lt;/b&gt;&lt;/code&gt;
     &lt;/font&gt;
     &lt;/center&gt;
    &lt;/td&gt;
   &lt;/tr&gt;
  &lt;!-- end headline --&gt;
   &lt;tr&gt;
  &lt;!-- start source code --&gt;
   &lt;td nowrap="nowrap" valign="top" align="left"&gt;
    &lt;code&gt;
&lt;font color="#ffffff"&gt;&amp;nbsp;&amp;nbsp;&lt;/font&gt;&lt;font color="#000000"&gt;&amp;lt;!--&amp;nbsp;Servlets&amp;nbsp;--&amp;gt;&lt;/font&gt;&lt;br /&gt;
&lt;font color="#ffffff"&gt;&amp;nbsp;&amp;nbsp;&lt;/font&gt;&lt;font color="#000000"&gt;&amp;lt;servlet&amp;gt;&lt;/font&gt;&lt;br /&gt;
&lt;font color="#ffffff"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/font&gt;&lt;font color="#000000"&gt;&amp;lt;servlet-name&amp;gt;uploadServlet&amp;lt;/servlet-name&amp;gt;&lt;/font&gt;&lt;br /&gt;
&lt;font color="#ffffff"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/font&gt;&lt;font color="#000000"&gt;&amp;lt;servlet-&lt;/font&gt;&lt;font color="#7f0055"&gt;&lt;b&gt;class&lt;/b&gt;&lt;/font&gt;&lt;font color="#000000"&gt;&amp;gt;com.hsn.demo.gwtfileupload.server.FileUploadServlet&amp;lt;/servlet-&lt;/font&gt;&lt;font color="#7f0055"&gt;&lt;b&gt;class&lt;/b&gt;&lt;/font&gt;&lt;font color="#000000"&gt;&amp;gt;&lt;/font&gt;&lt;br /&gt;
&lt;font color="#ffffff"&gt;&amp;nbsp;&amp;nbsp;&lt;/font&gt;&lt;font color="#000000"&gt;&amp;lt;/servlet&amp;gt;&lt;/font&gt;&lt;br /&gt;
&lt;font color="#ffffff"&gt;&amp;nbsp;&amp;nbsp;&lt;/font&gt;&lt;br /&gt;
&lt;font color="#ffffff"&gt;&amp;nbsp;&amp;nbsp;&lt;/font&gt;&lt;font color="#000000"&gt;&amp;lt;servlet-mapping&amp;gt;&lt;/font&gt;&lt;br /&gt;
&lt;font color="#ffffff"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/font&gt;&lt;font color="#000000"&gt;&amp;lt;servlet-name&amp;gt;uploadServlet&amp;lt;/servlet-name&amp;gt;&lt;/font&gt;&lt;br /&gt;
&lt;font color="#ffffff"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/font&gt;&lt;font color="#000000"&gt;&amp;lt;url-pattern&amp;gt;/gwtfileupload/upload&amp;lt;/url-pattern&amp;gt;&lt;/font&gt;&lt;br /&gt;
&lt;font color="#ffffff"&gt;&amp;nbsp;&amp;nbsp;&lt;/font&gt;&lt;font color="#000000"&gt;&amp;lt;/servlet-mapping&amp;gt;&lt;/font&gt;&lt;/code&gt;
    
   &lt;/td&gt;
  &lt;!-- end source code --&gt;
   &lt;/tr&gt;
&lt;/table&gt;
&lt;/div&gt;
&lt;!-- =       END of automatically generated HTML code       = --&gt;
&lt;!-- ======================================================== --&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;That's all!... You can build your own file upload on GWT by following above steps, or, you can get the working project from &lt;a href="http://code.google.com/p/faculty-gwt/source/browse/#svn/trunk/examples/gwtfileupload" target="_blank"&gt;here&lt;/a&gt; ;).&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/jroller/frontpage/~4/SvKsexxtHMk" height="1" width="1"/&gt;</description>          <feedburner:origLink>http://www.jroller.com/hasant/entry/fileupload_with_gwt</feedburner:origLink></item>
    <item>
    <guid isPermaLink="false">http://www.jroller.com/burckart/entry/web_communications_enhancing_interactions</guid>
    <title>Web Communications enhancing interactions</title>
    <dc:creator>Erik Burckart</dc:creator>
    <link>http://feeds.dzone.com/~r/jroller/frontpage/~3/WsE0RvNf_fY/web_communications_enhancing_interactions</link>
        <pubDate>Thu, 9 Jul 2009 16:03:22 -0400</pubDate>
    <category>WebSphere</category>
            <description>&lt;p&gt;One of the common questions as people are learning about our WebSphere Communications Enabled Applications (CEA) function is if we are trying to replace interactions with "real people" when they see features such as the cobrowsing. The real idea behind CEA is using an interactions via the web to enhance real time communications which could be phone calls or instant messaging. There are several scenarios that we try to show in the demo video below, but here are some of the common issues that a web based interaction could solve in a contact center:&lt;/p&gt;


&lt;p&gt;&lt;a href="http://ibmcea.blogspot.com/2009/07/web-communications-enhancing.html"&gt;- More -&lt;/a&gt;&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/jroller/frontpage/~4/WsE0RvNf_fY" height="1" width="1"/&gt;</description>          <feedburner:origLink>http://www.jroller.com/burckart/entry/web_communications_enhancing_interactions</feedburner:origLink></item>
    <item>
    <guid isPermaLink="false">http://www.jroller.com/mert/entry/jsfcal_month_view_jsf_component</guid>
    <title>JSFCAL - month-view JSF Component</title>
    <dc:creator>Mert Caliskan</dc:creator>
    <link>http://feeds.dzone.com/~r/jroller/frontpage/~3/CzqELdRf_iU/jsfcal_month_view_jsf_component</link>
        <pubDate>Thu, 9 Jul 2009 12:05:35 -0400</pubDate>
    <category>JSF</category>
    <category>calendar</category>
    <category>jquery</category>
    <category>jsf</category>
            <description>&lt;br/&gt;&lt;br/&gt;
&lt;a href="http://code.google.com/p/jsfcal"&gt;http://code.google.com/p/jsfcal&lt;/a&gt;
&lt;br/&gt;&lt;br/&gt;
This project contains a month-view calendar, which is based on the &lt;a href="http://arshaw.com/fullcalendar"&gt;fullcalendar&lt;/a&gt;, with drag&amp;drop abilities on the events. 
It also supports exporting events of a month to &lt;a href="http://en.wikipedia.org/wiki/ICal"&gt;iCal&lt;/a&gt;. All actions are implemented via PL. Here is how it looks.
&lt;br/&gt;
&lt;img src="http://jsfcal.googlecode.com/files/jsfcal_shot.jpg" onclick="document.location='http://jsfcal.googlecode.com/files/jsfcal_shot.jpg'" /&gt;
&lt;br/&gt;
&lt;b&gt;How to use it with Maven?&lt;/b&gt;
&lt;br/&gt;&lt;br/&gt;
just add repo definition to your pom.xml
&lt;br/&gt;&lt;br/&gt;
&lt;div align="left" class="java"&gt;
&lt;table border="0" cellpadding="3" cellspacing="0" bgcolor="#ffffff"&gt;
   &lt;tr&gt;
   &lt;td nowrap="nowrap" valign="top" align="left"&gt;
    &lt;code&gt;
&lt;font color="#ffffff"&gt;&lt;/font&gt;&lt;br /&gt;
&lt;font color="#7f0055"&gt;&lt;b&gt;public&amp;nbsp;class&amp;nbsp;&lt;/b&gt;&lt;/font&gt;&lt;font color="#000000"&gt;Test&amp;nbsp;&lt;/font&gt;&lt;font color="#000000"&gt;{&lt;/font&gt;&lt;br /&gt;
&lt;font color="#ffffff"&gt;&lt;/font&gt;&lt;br /&gt;
&lt;font color="#ffffff"&gt;&amp;nbsp;&amp;nbsp;&lt;/font&gt;&lt;font color="#000000"&gt;&amp;lt;repository&amp;gt;&lt;/font&gt;&lt;br /&gt;
&lt;font color="#ffffff"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/font&gt;&lt;font color="#000000"&gt;&amp;lt;id&amp;gt;jsfcal-repo&amp;lt;/id&amp;gt;&lt;/font&gt;&lt;br /&gt;
&lt;font color="#ffffff"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/font&gt;&lt;font color="#000000"&gt;&amp;lt;name&amp;gt;JSFCal&amp;nbsp;Repository&amp;lt;/name&amp;gt;&lt;/font&gt;&lt;br /&gt;
&lt;font color="#ffffff"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/font&gt;&lt;font color="#000000"&gt;&amp;lt;url&amp;gt;http:&lt;/font&gt;&lt;font color="#3f7f5f"&gt;//jsfcal.googlecode.com/svn/trunk/mavenrepo/&amp;lt;/url&amp;gt;&lt;/font&gt;&lt;br /&gt;
&lt;font color="#ffffff"&gt;&amp;nbsp;&amp;nbsp;&lt;/font&gt;&lt;font color="#000000"&gt;&amp;lt;/repository&amp;gt;&lt;/font&gt;&lt;br /&gt;
&lt;font color="#ffffff"&gt;&lt;/font&gt;&lt;br /&gt;
   &lt;/td&gt;
   &lt;/tr&gt;
&lt;/table&gt;
&lt;/div&gt;
&lt;br/&gt;&lt;br/&gt;and then add the dependency. Then you're good to go.&lt;br/&gt;&lt;br/&gt;
&lt;div align="left" class="java"&gt;
&lt;table border="0" cellpadding="3" cellspacing="0" bgcolor="#ffffff"&gt;
   &lt;tr&gt;
   &lt;td nowrap="nowrap" valign="top" align="left"&gt;
    &lt;code&gt;
&lt;font color="#ffffff"&gt;&amp;nbsp;&amp;nbsp;&lt;/font&gt;&lt;font color="#000000"&gt;&amp;lt;dependency&amp;gt;&lt;/font&gt;&lt;br /&gt;
&lt;font color="#ffffff"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/font&gt;&lt;font color="#000000"&gt;&amp;lt;groupId&amp;gt;tr.richfacesext&amp;lt;/groupId&amp;gt;&lt;/font&gt;&lt;br /&gt;
&lt;font color="#ffffff"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/font&gt;&lt;font color="#000000"&gt;&amp;lt;artifactId&amp;gt;jsfcal-core&amp;lt;/artifactId&amp;gt;&lt;/font&gt;&lt;br /&gt;
&lt;font color="#ffffff"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/font&gt;&lt;font color="#000000"&gt;&amp;lt;version&amp;gt;&lt;/font&gt;&lt;font color="#990000"&gt;0.1&lt;/font&gt;&lt;font color="#000000"&gt;&amp;lt;/version&amp;gt;&lt;/font&gt;&lt;br /&gt;
&lt;font color="#ffffff"&gt;&amp;nbsp;&amp;nbsp;&lt;/font&gt;&lt;font color="#000000"&gt;&amp;lt;/dependency&amp;gt;&lt;/font&gt;&lt;br /&gt;
&lt;font color="#000000"&gt;}&lt;/font&gt;&lt;/code&gt;
   &lt;/td&gt;
   &lt;/tr&gt;
&lt;/table&gt;
&lt;/div&gt;
You can also download artifacts for v0.1 (jar, war) &lt;a href="http://code.google.com/p/jsfcal/downloads/list"&gt;here&lt;/a&gt;.
&lt;br/&gt;&lt;br/&gt;
&lt;b&gt;What do I need on the coding side?&lt;/b&gt;
&lt;br/&gt;&lt;br/&gt;
You have to supply a Collection&lt;Event&gt; as a value to the component. The tr.richfacesext.components.jsfcal. 
Event interface contract is given below. You can find a concrete impl. of Event &lt;a href="http://jsfcal.googlecode.com/svn/trunk/jsfcal-examples/src/main/java/tr/richfacesext/jsfcal/CalEvent.java"&gt;here&lt;/a&gt;. 
&lt;br/&gt;&lt;br/&gt;
&lt;div align="left" class="java"&gt;
&lt;table border="0" cellpadding="3" cellspacing="0" bgcolor="#ffffff"&gt;
   &lt;tr&gt;
   &lt;td nowrap="nowrap" valign="top" align="left"&gt;
    &lt;code&gt;
&lt;font color="#7f0055"&gt;&lt;b&gt;package&amp;nbsp;&lt;/b&gt;&lt;/font&gt;&lt;font color="#000000"&gt;tr.richfacesext.components.jsfcal;&lt;/font&gt;&lt;br /&gt;
&lt;font color="#ffffff"&gt;&lt;/font&gt;&lt;br /&gt;
&lt;font color="#7f0055"&gt;&lt;b&gt;import&amp;nbsp;&lt;/b&gt;&lt;/font&gt;&lt;font color="#000000"&gt;java.io.Serializable;&lt;/font&gt;&lt;br /&gt;
&lt;font color="#7f0055"&gt;&lt;b&gt;import&amp;nbsp;&lt;/b&gt;&lt;/font&gt;&lt;font color="#000000"&gt;java.util.Date;&lt;/font&gt;&lt;br /&gt;

&lt;font color="#ffffff"&gt;&lt;/font&gt;&lt;br /&gt;
&lt;font color="#3f5fbf"&gt;/**&lt;/font&gt;&lt;br /&gt;
&lt;font color="#ffffff"&gt;&amp;nbsp;&lt;/font&gt;&lt;font color="#3f5fbf"&gt;*&amp;nbsp;&lt;/font&gt;&lt;br /&gt;
&lt;font color="#ffffff"&gt;&amp;nbsp;&lt;/font&gt;&lt;font color="#3f5fbf"&gt;*&amp;nbsp;&lt;/font&gt;&lt;font color="#7f9fbf"&gt;@author&amp;nbsp;&lt;/font&gt;&lt;font color="#3f5fbf"&gt;mert&lt;/font&gt;&lt;br /&gt;
&lt;font color="#ffffff"&gt;&amp;nbsp;&lt;/font&gt;&lt;font color="#3f5fbf"&gt;*&lt;/font&gt;&lt;br /&gt;
&lt;font color="#ffffff"&gt;&amp;nbsp;&lt;/font&gt;&lt;font color="#3f5fbf"&gt;*/&lt;/font&gt;&lt;br /&gt;
&lt;font color="#7f0055"&gt;&lt;b&gt;public&amp;nbsp;interface&amp;nbsp;&lt;/b&gt;&lt;/font&gt;&lt;font color="#000000"&gt;Event&amp;nbsp;&lt;/font&gt;&lt;font color="#7f0055"&gt;&lt;b&gt;extends&amp;nbsp;&lt;/b&gt;&lt;/font&gt;&lt;font color="#000000"&gt;Serializable&amp;nbsp;&lt;/font&gt;&lt;font color="#000000"&gt;{&lt;/font&gt;&lt;br /&gt;

&lt;font color="#ffffff"&gt;&lt;/font&gt;&lt;br /&gt;
&lt;font color="#ffffff"&gt;&amp;nbsp;&amp;nbsp;&lt;/font&gt;&lt;font color="#000000"&gt;Long&amp;nbsp;getEventId&lt;/font&gt;&lt;font color="#000000"&gt;()&lt;/font&gt;&lt;font color="#000000"&gt;;&lt;/font&gt;&lt;br /&gt;
&lt;font color="#ffffff"&gt;&amp;nbsp;&amp;nbsp;&lt;/font&gt;&lt;br /&gt;
&lt;font color="#ffffff"&gt;&amp;nbsp;&amp;nbsp;&lt;/font&gt;&lt;font color="#000000"&gt;String&amp;nbsp;getTitle&lt;/font&gt;&lt;font color="#000000"&gt;()&lt;/font&gt;&lt;font color="#000000"&gt;;&lt;/font&gt;&lt;br /&gt;
&lt;font color="#ffffff"&gt;&amp;nbsp;&amp;nbsp;&lt;/font&gt;&lt;br /&gt;
&lt;font color="#ffffff"&gt;&amp;nbsp;&amp;nbsp;&lt;/font&gt;&lt;font color="#000000"&gt;String&amp;nbsp;getDescription&lt;/font&gt;&lt;font color="#000000"&gt;()&lt;/font&gt;&lt;font color="#000000"&gt;;&lt;/font&gt;&lt;br /&gt;

&lt;font color="#ffffff"&gt;&amp;nbsp;&amp;nbsp;&lt;/font&gt;&lt;br /&gt;
&lt;font color="#ffffff"&gt;&amp;nbsp;&amp;nbsp;&lt;/font&gt;&lt;font color="#000000"&gt;Date&amp;nbsp;getStartDate&lt;/font&gt;&lt;font color="#000000"&gt;()&lt;/font&gt;&lt;font color="#000000"&gt;;&lt;/font&gt;&lt;br /&gt;
&lt;font color="#ffffff"&gt;&amp;nbsp;&amp;nbsp;&lt;/font&gt;&lt;br /&gt;
&lt;font color="#ffffff"&gt;&amp;nbsp;&amp;nbsp;&lt;/font&gt;&lt;font color="#000000"&gt;Date&amp;nbsp;getEndDate&lt;/font&gt;&lt;font color="#000000"&gt;()&lt;/font&gt;&lt;font color="#000000"&gt;;&lt;/font&gt;&lt;br /&gt;
&lt;font color="#ffffff"&gt;&amp;nbsp;&amp;nbsp;&lt;/font&gt;&lt;br /&gt;
&lt;font color="#ffffff"&gt;&amp;nbsp;&amp;nbsp;&lt;/font&gt;&lt;font color="#7f0055"&gt;&lt;b&gt;boolean&amp;nbsp;&lt;/b&gt;&lt;/font&gt;&lt;font color="#000000"&gt;isReadOnly&lt;/font&gt;&lt;font color="#000000"&gt;()&lt;/font&gt;&lt;font color="#000000"&gt;;&lt;/font&gt;&lt;br /&gt;
&lt;font color="#000000"&gt;}&lt;/font&gt;&lt;/code&gt;
   &lt;/td&gt;
   &lt;/tr&gt;
&lt;/table&gt;
&lt;/div&gt;
&lt;br/&gt;
With facelets, add namespace declaration like,
&lt;br/&gt;&lt;br/&gt;
xmlns:jsfcal="http://code.google.com/p/jsfcal"
&lt;br/&gt;&lt;br/&gt;
and use the month-view component like,
&lt;br/&gt;&lt;br/&gt;
&amp;lt;jsfcal:month id="monthView" value="#{monthViewController.events}" /&amp;gt;
&lt;br/&gt;&lt;br/&gt;
&lt;b&gt;What attributes does the component have?&lt;/b&gt;
&lt;br/&gt;&lt;br/&gt;
&lt;b&gt;initYear&lt;/b&gt; : The year that will be displayed when the calendar first loads. By default it's the current year.&lt;br/&gt;
&lt;b&gt;initMonth&lt;/b&gt; : The month that will be displayed when the calendar first loads. By default it's the current month.&lt;br/&gt;
&lt;b&gt;readOnly&lt;/b&gt; : When set to true, events couldn't be dragged. By default it's false.&lt;br/&gt;
&lt;b&gt;width&lt;/b&gt; : Width of the calendar. By default it's 650px.&lt;br/&gt;
&lt;b&gt;height&lt;/b&gt; : Height of the calendar. By default it's 550px.&lt;br/&gt;
&lt;b&gt;abbrevDayHeadings&lt;/b&gt; : Whether to display 'Sun' versus 'Sunday' for days of the week. By default it's true.&lt;br/&gt;
&lt;b&gt;title&lt;/b&gt; : Determines whether a title such as 'January 2009' will be displayed at the top of the calendar. By default it's true.&lt;br/&gt;
&lt;b&gt;language&lt;/b&gt; : See Localization section for detailed info. &lt;br/&gt;
&lt;br/&gt;&lt;br/&gt;
&lt;b&gt;Localization&lt;/b&gt;
&lt;br/&gt;&lt;br/&gt;
Component has a property named language to set the locale in a declarative way (values are given in supported locales part).&lt;br/&gt; 
If that property is not set, it uses context.getViewRoot().getLocale().getLanguage() to identify the locale.&lt;br/&gt;
If you've provided locale settings in your faces-config properly, the FacesServlet will take care of setting it while creating the view.&lt;br/&gt;
And JSFCal will use it. Start day of the week is being set according to the locale also.&lt;br/&gt;
&lt;br/&gt;&lt;br/&gt;
Supported locales are: tr, de, en, es, fr, it, ro, ru.
&lt;br/&gt;&lt;br/&gt;&lt;img src="http://feeds.feedburner.com/~r/jroller/frontpage/~4/CzqELdRf_iU" height="1" width="1"/&gt;</description>          <feedburner:origLink>http://www.jroller.com/mert/entry/jsfcal_month_view_jsf_component</feedburner:origLink></item>
    <item>
    <guid isPermaLink="false">http://www.jroller.com/alexRuiz/entry/writing_edt_safe_swing_ui</guid>
    <title>Writing EDT-safe Swing UI tests</title>
    <dc:creator>Alex Ruiz</dc:creator>
    <link>http://feeds.dzone.com/~r/jroller/frontpage/~3/knESmmf8DcM/writing_edt_safe_swing_ui</link>
        <pubDate>Thu, 9 Jul 2009 11:33:01 -0400</pubDate>
    <category>Java</category>
    <category>fest</category>
    <category>java</category>
    <category>swing</category>
    <category>testing</category>
    <category>tips</category>
            <description>&lt;p&gt;
Lately, I noticed that one of the main topics in the &lt;a href="http://fest.easytesting.org" target="_blank"&gt;FEST&lt;/a&gt; &lt;a href="http://groups.google.com/group/easytesting" target="_blank"&gt;mailing list&lt;/a&gt; is violation of Swing's &lt;a href="http://java.sun.com/javase/6/docs/api/javax/swing/package-summary.html#threading" target="_blank"&gt;threading policy&lt;/a&gt; in UI tests. Surprisingly, this subject is not really referenced directly. Most of the time, it appears in the form of questions, code snippets or test cases not related to Swing threading at all. It seems like we are still not fully aware of the &lt;a href="http://java.sun.com/docs/books/tutorial/uiswing/concurrency/dispatch.html" target="_blank"&gt;event dispatch thread&lt;/a&gt; (EDT,) even though it has been around for many years (10+ maybe?) 
&lt;/p&gt;
&lt;p&gt;
Rest of blog post can be found &lt;a href="http://alexruiz.developerblogs.com/?p=160"&gt;here&lt;/a&gt;.
&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/jroller/frontpage/~4/knESmmf8DcM" height="1" width="1"/&gt;</description>          <feedburner:origLink>http://www.jroller.com/alexRuiz/entry/writing_edt_safe_swing_ui</feedburner:origLink></item>
    <item>
    <guid isPermaLink="false">http://www.jroller.com/agoubard/entry/xins_2_3_alpha1_released</guid>
    <title>XINS 2.3-alpha1 released with Google App Engine support</title>
    <dc:creator>Anthony Goubard</dc:creator>
    <link>http://feeds.dzone.com/~r/jroller/frontpage/~3/0RKjVUj5f44/xins_2_3_alpha1_released</link>
        <pubDate>Thu, 9 Jul 2009 07:32:29 -0400</pubDate>
    <category>Java</category>
    <category>appengine</category>
    <category>engine</category>
    <category>gae</category>
    <category>google</category>
    <category>xins</category>
            <description>&lt;p&gt;Yesterday I've released &lt;a href="http://xins.sourceforge.net"&gt;XINS 2.3-alpha1&lt;/a&gt;.&lt;br/&gt;
The main feature of this release is the possibility to deploy the web services created with XINS in &lt;a href="http://appengine.google.com"&gt;Google App Engine&lt;/a&gt; for Java.&lt;br/&gt;
The changes include modification in the XINS engine to handle the ClassNotFoundError thrown by GAE and a new &lt;i&gt;appengine&lt;/i&gt; target to help you deploy the web service in GAE.&lt;/p&gt;


&lt;p&gt;See a demo at &lt;a href="http://xins.sourceforge.net/demo/specdocs/myproject/index.html"&gt;http://xins.sourceforge.net/demo/specdocs/myproject/index.html&lt;/a&gt;&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/jroller/frontpage/~4/0RKjVUj5f44" height="1" width="1"/&gt;</description>          <feedburner:origLink>http://www.jroller.com/agoubard/entry/xins_2_3_alpha1_released</feedburner:origLink></item>
    <item>
    <guid isPermaLink="false">http://www.jroller.com/xtecuan/entry/developing_a_python_application_using</guid>
    <title>Developing a Python Application Using NetBeans IDE</title>
    <dc:creator>Julian Rivera Pineda</dc:creator>
    <link>http://feeds.dzone.com/~r/jroller/frontpage/~3/AaxTxp6qlec/developing_a_python_application_using</link>
        <pubDate>Thu, 9 Jul 2009 04:36:07 -0400</pubDate>
    <category>Java</category>
            <description>&lt;a href="http://www.netbeans.org/kb/docs/python/python-quickstart.html"&gt;http://www.netbeans.org/kb/docs/python/python-quickstart.html&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;img src="http://feeds.feedburner.com/~r/jroller/frontpage/~4/AaxTxp6qlec" height="1" width="1"/&gt;</description>          <feedburner:origLink>http://www.jroller.com/xtecuan/entry/developing_a_python_application_using</feedburner:origLink></item>
    <item>
    <guid isPermaLink="false">http://www.jroller.com/xtecuan/entry/working_with_qt_applications_netbeans</guid>
    <title>Working with Qt Applications - NetBeans IDE 6.7 Tutorial</title>
    <dc:creator>Julian Rivera Pineda</dc:creator>
    <link>http://feeds.dzone.com/~r/jroller/frontpage/~3/OavcOue7cGk/working_with_qt_applications_netbeans</link>
        <pubDate>Thu, 9 Jul 2009 04:33:50 -0400</pubDate>
    <category>Java</category>
            <description>&lt;a href="http://www.netbeans.org/kb/docs/cnd/qt-applications.html"&gt;http://www.netbeans.org/kb/docs/cnd/qt-applications.html&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;img src="http://feeds.feedburner.com/~r/jroller/frontpage/~4/OavcOue7cGk" height="1" width="1"/&gt;</description>          <feedburner:origLink>http://www.jroller.com/xtecuan/entry/working_with_qt_applications_netbeans</feedburner:origLink></item>
    <item>
    <guid isPermaLink="false">http://www.jroller.com/kaiulrich/entry/spring_json_view_1_2</guid>
    <title>spring-json view 1.2 added to maven 2 repository</title>
    <dc:creator>Kai Ulrich</dc:creator>
    <link>http://feeds.dzone.com/~r/jroller/frontpage/~3/NBNVzK3KcDA/spring_json_view_1_2</link>
        <pubDate>Thu, 9 Jul 2009 04:08:47 -0400</pubDate>
    <category>Java</category>
    <category>java</category>
    <category>json</category>
    <category>mvc</category>
    <category>spring</category>
            <description>&lt;p&gt;&lt;p&gt;&lt;a href="http://spring-json.sourceforge.net/" title="http://spring-json.sourceforge.net/"&gt;http://spring-json.sourceforge.net/&lt;/a&gt;&lt;/p&gt;&lt;p&gt;Spring Json-View adds JavaScript Object Notation (JSON) support to&lt;br/&gt;
Spring-MVC. Now spring-json 1.2 is added to the maven 2 central repository :&lt;/p&gt;&lt;p&gt;&lt;a class="externalLink" href="http://repo1.maven.org/maven2" title="http://repo1.maven.org/maven2"&gt;http://repo1.maven.org/maven2&lt;/a&gt;&lt;/p&gt;&lt;p&gt;usage: &lt;br /&gt;&lt;/p&gt;&amp;lt;dependency&amp;gt;&lt;br /&gt;&lt;br/&gt;
    &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;lt;groupId&amp;gt;net.sf.spring-json&amp;lt;/groupId&amp;gt;&lt;br /&gt;&lt;br/&gt;
    &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;lt;artifactId&amp;gt;spring-json&amp;lt;/artifactId&amp;gt;&lt;br /&gt;&lt;br/&gt;
    &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;lt;version&amp;gt;1.2&amp;lt;/version&amp;gt;&lt;br /&gt;&lt;br/&gt;
    &amp;lt;/dependency&amp;gt;&amp;nbsp;&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/jroller/frontpage/~4/NBNVzK3KcDA" height="1" width="1"/&gt;</description>          <feedburner:origLink>http://www.jroller.com/kaiulrich/entry/spring_json_view_1_2</feedburner:origLink></item>
    <item>
    <guid isPermaLink="false">http://www.jroller.com/xtecuan/entry/localhost_sweet_localhost</guid>
    <title>localhost sweet localhost</title>
    <dc:creator>Julian Rivera Pineda</dc:creator>
    <link>http://feeds.dzone.com/~r/jroller/frontpage/~3/eSwNXyTF1Ho/localhost_sweet_localhost</link>
        <pubDate>Wed, 8 Jul 2009 19:29:06 -0400</pubDate>
    <category>Java</category>
            <description>&lt;div align="center"&gt;&lt;img src="http://xtecuannet.ath.cx/roller/xtecuan/resource/localhost.jpeg" height="657" width="439" /&gt;&lt;/div&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;img src="http://feeds.feedburner.com/~r/jroller/frontpage/~4/eSwNXyTF1Ho" height="1" width="1"/&gt;</description>          <feedburner:origLink>http://www.jroller.com/xtecuan/entry/localhost_sweet_localhost</feedburner:origLink></item>
    <item>
    <guid isPermaLink="false">http://www.jroller.com/mwessendorf/entry/cross_browser_window_communication</guid>
    <title>cross-browser-window-communication</title>
    <dc:creator>Matthias Wessendorf</dc:creator>
    <link>http://feeds.dzone.com/~r/jroller/frontpage/~3/7RMbowNH8p4/cross_browser_window_communication</link>
        <pubDate>Wed, 8 Jul 2009 15:40:34 -0400</pubDate>
    <category>Java</category>
    <category>comet</category>
    <category>html</category>
    <category>push</category>
            <description>&lt;a href="http://bit.ly/48hHIv"&gt;Helps to avoid some shortcuts for current comet solutions...&lt;/a&gt;&lt;img src="http://feeds.feedburner.com/~r/jroller/frontpage/~4/7RMbowNH8p4" height="1" width="1"/&gt;</description>          <feedburner:origLink>http://www.jroller.com/mwessendorf/entry/cross_browser_window_communication</feedburner:origLink></item>
    <item>
    <guid isPermaLink="false">http://www.jroller.com/sebastianKuebeck/entry/some_thoughts_on_google_chrome</guid>
    <title>Some Thoughts on Google Chrome OS</title>
    <dc:creator>Sebastian Kübeck</dc:creator>
    <link>http://feeds.dzone.com/~r/jroller/frontpage/~3/n4n27YTeSNA/some_thoughts_on_google_chrome</link>
        <pubDate>Wed, 8 Jul 2009 05:59:09 -0400</pubDate>
    <category>Developer</category>
            <description>&lt;p&gt;&lt;i&gt;Google recently &lt;a href="http://googleblog.blogspot.com/2009/07/introducing-google-chrome-os.html"&gt;announced&lt;/a&gt; that they are building a new operating system. They are primarily targeting the netbook marked but Chrome OS will run on notebooks and PCs too. [Added: Kent Beck's reaction] &lt;/i&gt;&lt;blockquote&gt;&lt;br /&gt;
Speed, simplicity and security are the key aspects of Google Chrome OS. We&amp;#8216;re designing the OS to be fast and lightweight, to start up and get you onto the web in a few seconds. The user interface is minimal to stay out of your way, and most of the user experience takes place on the web. And as we did for the Google Chrome browser, we are going back to the basics and completely redesigning the underlying security architecture of the OS so that users don&amp;#8216;t have to deal with viruses, malware and security updates. It should just work.&lt;br /&gt;
&lt;/blockquote&gt;&lt;br /&gt;
Although it&amp;#8216;s true that Chrome OS will not be able to compete with the huge number of applications for other operating systems any time soon, Google is hitting several pain points of existing operation systems:&lt;br /&gt;
&lt;h3&gt;Less Skilled Users&lt;/h3&gt; Over time, computers got more and more popular but the technical skills of people using computers are constantly declining at average. Nowadays operating systems however have their roots in the seventies and before. They were made for users with pretty high technical skills. The vast majority of nowadays users neither have those skills nor are they able to acquirer them (just think about elder people without technical background). On the other hand, there is a lot of of social pressure for those people to use the web.&lt;br /&gt;
&lt;h3&gt;Decreasing Importance of Desktop Applications&lt;/h3&gt; Operating system vendors are pointing at the huge number of applications that are available for their products but that asset gets less important given the following facts:&lt;br /&gt;
&lt;ul&gt;&lt;/p&gt;
	&lt;p&gt;&lt;li&gt;More and more applications are replaced by web based ones&lt;/li&gt;&lt;br /&gt;
&lt;li&gt;The aforementioned new users hardly ever use applications beyond the web browser&lt;/li&gt;&lt;br /&gt;
&lt;li&gt;There is a lot of tinkering involved to keep current operating systems running. As a result, less skilled users have to beg more skilled friends and relatives to help them with their computer problems. However, nobody likes to be dependent on others so those users will sacrifice a great deal of functionality to reduce that dependency.&lt;/li&gt;&lt;br /&gt;
&lt;/ul&gt;&lt;/p&gt;
	&lt;p&gt;&lt;h3&gt;More Influence for Hardware Vendors&lt;/h3&gt; Computer hardware vendors are rather tied to Microsoft&amp;#8216;s operating systems (except from Apple of course) and it seems that they aren&amp;#8216;t too happy with that constraint. So it did not come as a surprise that &lt;span class="caps"&gt;IBM&lt;/span&gt;, HP and others have been more or less openly supporting Linux to reduce the dependency on Microsoft products. That way, they are about to gain more influence on Microsoft&amp;#8216;s product strategies.&lt;br /&gt;
&lt;h3&gt;Conclusion&lt;/h3&gt; After years of stagnation on the desktop (note that those desktops got more and more features, they got prettier along the way but the basic mechanisms haven&amp;#8216;t changed in almost thirty years), we will see things moving again. Exciting, isn&amp;#8216;t it?&lt;/p&gt;

	&lt;p&gt;&lt;b&gt;Added 0709/2009:&lt;/b&gt; Kent Beck: &lt;a href="http://www.threeriversinstitute.org/blog/?p=273"&gt;Chrome OS is Worse, That’s the Point&lt;/a&gt;&lt;br /&gt;
&lt;blockquote&gt; The next step in the innovator’s dilemma script is predictable. The existing participants will ignore Chrome (they may fuss, but they aren’t going to introduce something even simpler, even better, even cheaper–that’s just not how they think). Chrome OS will grow better and better, and be attractive on bigger and bigger hardware. More and more of the necessary apps will migrate to the browser or be replaced by inferior-but-good-enough entrants (do you hear that, Skype?) Since Chrome OS is genuinely better along some dimensions, the motivation is there for users, for application developers, and for Google to continue the march.&lt;/p&gt;

	&lt;p&gt;After a decade of nibble, nibble, nibble, Apple and Microsoft will occupy highly-profitable but miniscule markets. If I had to guess I would say that Apple will have the very best high end desktops and Microsoft will be strong on servers. By that time, though, Chrome OS will have grown bloated with seemingly-indispensible features and will be ripe for a little nibble, nibble, nibble of its own.&lt;br /&gt;
[...]&lt;br /&gt;
The current desktops are dead, even though they will linger for a decade or more. Welcome, Chrome OS. Here’s to a worse future.&lt;br /&gt;
&lt;/blockquote&gt;&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/jroller/frontpage/~4/n4n27YTeSNA" height="1" width="1"/&gt;</description>          <feedburner:origLink>http://www.jroller.com/sebastianKuebeck/entry/some_thoughts_on_google_chrome</feedburner:origLink></item>
    <item>
    <guid isPermaLink="false">http://www.jroller.com/dgilbert/entry/better_looking_charts</guid>
    <title>Better Looking Charts</title>
    <dc:creator>David Gilbert</dc:creator>
    <link>http://feeds.dzone.com/~r/jroller/frontpage/~3/m8BscvogDC8/better_looking_charts</link>
        <pubDate>Wed, 8 Jul 2009 04:36:46 -0400</pubDate>
    <category>Java</category>
    <category>jfreechart</category>
            <description>A simple technique to make a chart more attractive is to use a suitable background image.  This has been supported in &lt;a href="http://www.jfree.org/jfreechart/"&gt;JFreeChart&lt;/a&gt; for a long time, but I haven't done a lot to promote the feature.  Recently a friend (not a JFreeChart user) asked me for some advice on jazzing up some charts for a presentation he was giving to senior executives at the bank he works for.  I played about with some images from &lt;a href="http://www.istockphoto.com/index.php?refnum=ObjectRefineryLtd"&gt;iStockPhoto.com&lt;/a&gt; and came up with a couple of examples.  The first is a sales chart:
&lt;br&gt;&lt;br&gt;
&lt;img src="http://www.object-refinery.com/jfreechart/BackgroundImageDemo1.png" alt="BackgroundImageDemo1.png" /&gt;
&lt;br&gt;&lt;br&gt;
The second is a quadrant chart (these are quite popular in management circles):
&lt;br&gt;&lt;br&gt;
&lt;img src="http://www.object-refinery.com/jfreechart/QuadrantChartDemo1.png" alt="QuadrantChartDemo1.png" /&gt;
&lt;br&gt;&lt;br&gt;
The source code for the latter chart is &lt;a href="http://www.object-refinery.com/jfreechart/QuadrantChartDemo1.java"&gt;here&lt;/a&gt;, and both examples will be added to the demo collection that ships with the &lt;a href="http://www.jfree.org/jfreechart/devguide.html"&gt;JFreeChart Developer Guide&lt;/a&gt; (that thing that provides most of the funding for JFreeChart).
&lt;br&gt;&lt;br&gt;
I'm also running short of paid work right now, so if you have a Java project that could benefit from integrating charts like these, please take a look at my &lt;a href="http://www.object-refinery.com/profile.pdf"&gt;profile&lt;/a&gt; and give me a call.&lt;img src="http://feeds.feedburner.com/~r/jroller/frontpage/~4/m8BscvogDC8" height="1" width="1"/&gt;</description>          <feedburner:origLink>http://www.jroller.com/dgilbert/entry/better_looking_charts</feedburner:origLink></item>
    <item>
    <guid isPermaLink="false">http://www.jroller.com/tedgoddard/entry/visual_jpa_with_ajax_push</guid>
    <title>Visual JPA with Ajax Push</title>
    <dc:creator>Ted Goddard</dc:creator>
    <link>http://feeds.dzone.com/~r/jroller/frontpage/~3/HRu-ssP0w1A/visual_jpa_with_ajax_push</link>
        <pubDate>Tue, 7 Jul 2009 16:21:46 -0400</pubDate>
    <category>Java</category>
    <category>ajax</category>
    <category>icefaces</category>
    <category>java</category>
    <category>jpa</category>
    <category>netbeans</category>
    <category>push</category>
            <description>&lt;br&gt;
&lt;p&gt;Bilal Ahamed has put together a tutorial on &lt;a href="http://wiki.netbeans.org/UsingVWICEfacesWithNetBeans"&gt;Using Java Persistence API in a Visual Web ICEfaces framework and NetBeans including Ajax Push&lt;/a&gt;.
&lt;/p&gt;

&lt;p&gt;
An interesting variation would be to try the SessionRenderer in this application (instead of the RenderManager APIs that were used). So in init()
&lt;/p&gt;
&lt;p&gt;
&lt;pre&gt;
&lt;code&gt;
    public void init() {
        ...
        SessionRenderer.addCurrentSession("userGroup"); 
    }
&lt;/code&gt;
&lt;/pre&gt;
&lt;/p&gt;
&lt;p&gt;
And at the end of  saveButton_processAction():
&lt;/p&gt;
&lt;p&gt;
&lt;pre&gt;
&lt;code&gt;
public void saveButton_processAction(ActionEvent ae) {
        ...
        SessionRenderer.render("userGroup"); 
    }
&lt;/code&gt;
&lt;/pre&gt;
&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/jroller/frontpage/~4/HRu-ssP0w1A" height="1" width="1"/&gt;</description>          <feedburner:origLink>http://www.jroller.com/tedgoddard/entry/visual_jpa_with_ajax_push</feedburner:origLink></item>
    <item>
    <guid isPermaLink="false">http://www.jroller.com/mattdud/entry/scala_gaining_ground</guid>
    <title>Scala Gaining Ground</title>
    <dc:creator>Matt Dudbridge</dc:creator>
    <link>http://feeds.dzone.com/~r/jroller/frontpage/~3/_P7ss7BF3zI/scala_gaining_ground</link>
        <pubDate>Tue, 7 Jul 2009 11:09:52 -0400</pubDate>
    <category>Java</category>
    <category>javac</category>
    <category>scala</category>
            <description>&lt;p&gt;Taken from &lt;a href="http://macstrac.blogspot.com/2009/04/scala-as-long-term-replacement-for.html"&gt;James Strachan's&lt;/a&gt; blog:&lt;/p&gt;

	&lt;p&gt;&lt;blockquote&gt;&lt;br /&gt;
&amp;#8221;Given that &lt;a href="http://www.adam-bien.com/roller/abien/entry/java_net_javaone_which_programming"&gt;Mr Java&lt;/a&gt;, &lt;a href="http://blog.headius.com/2009/04/future-part-one.html"&gt;Mr JRuby&lt;/a&gt; and &lt;a href="http://macstrac.blogspot.com/"&gt;Mr Groovy&lt;/a&gt; are all tipping Scala as javac&amp;#8216;s long term replacement, there might be something in it.&amp;#8221;&lt;br /&gt;
&lt;/blockquote&gt;&lt;/p&gt;

	&lt;p&gt;&lt;br/&gt;&lt;/p&gt;

	&lt;p&gt;Looks like &lt;a href="http://www.scala-lang.org/"&gt;Scala&lt;/a&gt; could soon be taking over!&lt;/p&gt;

	&lt;p&gt;Scala has some interesting features, not least that it merges object-oriented and functional languages into a single paradigm. Scala programs run on the Java VM and are byte code compatible with Java so you can make full use of existing Java libraries and existing application code.&lt;/p&gt;

	&lt;p&gt;Scala code is claimed to be as fast as Java, with the added benefit that code sizes are typically reduced by a factor of two or three.&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/jroller/frontpage/~4/_P7ss7BF3zI" height="1" width="1"/&gt;</description>          <feedburner:origLink>http://www.jroller.com/mattdud/entry/scala_gaining_ground</feedburner:origLink></item>
    <item>
    <guid isPermaLink="false">http://www.jroller.com/javawug/entry/javawug_bof_50_summertime</guid>
    <title>JAVAWUG BOF 50 Summertime!</title>
    <dc:creator>Peter Pilgrim</dc:creator>
    <link>http://feeds.dzone.com/~r/jroller/frontpage/~3/eVH-i-Wu5pM/javawug_bof_50_summertime</link>
        <pubDate>Tue, 7 Jul 2009 08:07:23 -0400</pubDate>
    <category>Java</category>
    <category>50</category>
    <category>bof</category>
    <category>eclipse</category>
    <category>galileo</category>
    <category>java</category>
    <category>javafx</category>
    <category>javawug</category>
    <category>seam</category>
    <category>summertime</category>
            <description>&lt;br id="b5hq"&gt;
&lt;h1 id="b5hq0"&gt;
 JAVAWUG BOF 50 Summertime!&lt;br&gt;
&lt;/h1&gt;
&lt;table class="zeroBorder" id="b5hq1" style="float: right; text-align: left;" border="0" cellpadding="3" cellspacing="0" hspace="25" vspace="25" width="275"&gt;
 
&lt;tbody id="b5hq2"&gt;
 
&lt;tr id="b5hq3"&gt;
 
&lt;td id="b5hq4" align="center" bgcolor="#f0f0ff"&gt;
 
&lt;div id="b5hq5" style="background: white none repeat scroll 0% 50%; -moz-background-clip: -moz-initial; -moz-background-origin: -moz-initial; -moz-background-inline-policy: -moz-initial;"&gt;
 &lt;a href="http://www.javawug.com" id="b5hq6"&gt; &lt;img id="b5hq7" src="http://www.jroller.com/javawug/resource/JAVAWUG07-256w266h.png" border="0" height="256" hspace="10" vspace="10" width="266"&gt;&lt;/a&gt;
 &lt;/div&gt;
 &lt;/td&gt;
 &lt;/tr&gt;
 
&lt;tr id="b5hq8"&gt;
 
&lt;td id="b5hq9" align="center" bgcolor="#f0f0ff"&gt;
 &lt;font id="b5hq10" color="#000000" size="+1"&gt; &lt;b id="b5hq11"&gt;Birds-of-a-Feather 50&lt;br id="b5hq12"&gt;
 Tuesday, 21&lt;sup&gt;st&lt;/sup&gt; July 2008&lt;br id="b5hq14"&gt;
 &lt;/b&gt; Skills Matter, London, UK&lt;/font&gt;
 &lt;/td&gt;
 &lt;/tr&gt;
 &lt;/tbody&gt;
&lt;/table&gt;
&lt;p id="b5hq17"&gt;
 Dear All
&lt;/p&gt;
&lt;br id="b5hq18"&gt;
&lt;p id="yv-m"&gt;
 I would like to formally announce that &lt;b id="b5hq27"&gt;JAVAWUG&lt;/b&gt; (Java Web User Group) is holding the Fifty Birds-of-Feather (Meet-up 50) at &lt;b id="b5hq28"&gt;Skills Matter&lt;/b&gt; on Tuesday, 21&lt;sup id="b5hq29"&gt;th&lt;/sup&gt; July 2009 from 18:30 until 20:30.&lt;/p&gt;
&lt;p id="sqn9"&gt;&lt;br&gt;
&lt;/p&gt;
&lt;br&gt;
&lt;p id="f3pt"&gt;&lt;/p&gt;
&lt;br&gt;
&lt;div id="fyfz" style="text-align: left;"&gt;
 &lt;img src="http://docs.google.com/File?id=df5jk3g7_191g476jvfw_b" height="307" width="292"&gt;
 &lt;/div&gt;
 &lt;font size="1"&gt;(Creative Commons Attribution, John Schneider, &lt;a href="http://www.flickr.com/people/85941395@N00/" id="wftw" title="JSchneid"&gt;JSchneid&lt;/a&gt; Flickr: The RCA 40A)&lt;/font&gt;&lt;br&gt;
 

&lt;p id="s_8c"&gt;&lt;br&gt;
&lt;/p&gt;
&lt;p id="f-jz"&gt;It is summer time again in London. Another year and another step in the pertual change of progress: let us consider the state of the art please. We have a bunch of wonderful technologies awaiting our pleasure of development, including &lt;b&gt;&lt;a title="OpenJDK 7" href="http://openjdk.java.net/" id="z9m2"&gt;OpenJDK 7&lt;/a&gt;&lt;/b&gt;, &lt;b&gt;&lt;a title="JDK 7" href="https://jdk7.dev.java.net/" id="k3p_"&gt;JDK 7&lt;/a&gt;&lt;/b&gt;, &lt;b&gt;&lt;a title="Scala" href="http://www.scala-lang.org/" id="pvda"&gt;Scala&lt;/a&gt;&lt;/b&gt;, &lt;b&gt;&lt;a title="Groovy" href="http://groovy.codehaus.org/" id="piyr"&gt;Groovy&lt;/a&gt;&lt;/b&gt;, &lt;b&gt;&lt;a title="Grails" href="http://grails.org/" id="tefd"&gt;Grails&lt;/a&gt;&lt;/b&gt;, &lt;b&gt;&lt;a title="JavaFX" href="http://javafx.com/" id="fa7w"&gt;JavaFX&lt;/a&gt;&lt;/b&gt;, &lt;b&gt;&lt;a title="Griffon" href="http://groovy.codehaus.org/Griffon" id="vayf"&gt;Griffon&lt;/a&gt;&lt;/b&gt;, &lt;b&gt;&lt;a title="SEAM Framework" href="http://seamframework.org/" id="hvyz"&gt;SEAM Framework&lt;/a&gt;&lt;/b&gt;, &lt;b&gt;&lt;a title="JavaServer Faces" href="http://java.sun.com/javaee/javaserverfaces/" id="d.dd"&gt;JavaServer Faces&lt;/a&gt;&lt;/b&gt;, &lt;b&gt;&lt;a title="Fan" href="http://fandev.org/" id="faxj"&gt;Fan&lt;/a&gt;&lt;/b&gt;, &lt;b&gt;&lt;a title="JRuby" href="http://jruby.codehaus.org/" id="u6e9"&gt;JRuby&lt;/a&gt;&lt;/b&gt;, &lt;b&gt;&lt;a title="Jython" href="http://www.jython.org/" id="a-3d"&gt;Jython&lt;/a&gt;&lt;/b&gt; and many others in known use, if not yet common use. It feels like a wonderful summer again in terms of software development and design. &lt;br&gt;
&lt;/p&gt;
&lt;p id="pc4_"&gt;&lt;br&gt;
&lt;/p&gt;
&lt;p id="n9f8"&gt;
&lt;/p&gt;
&lt;p id="obye"&gt;&lt;br&gt;
&lt;/p&gt;
&lt;p id="k846"&gt;&lt;/p&gt;
&lt;div id="bthp" style="text-align: left;"&gt;
&lt;div id="f5ye" style="text-align: left;"&gt;&lt;img src="http://docs.google.com/File?id=df5jk3g7_2932pqfr43w_b" height="390" width="434"&gt;&lt;/div&gt;
&lt;br&gt;
 &lt;font size="1"&gt;(Creative Commons Attribution, Nancy Waldman,&lt;/font&gt; &lt;font size="1"&gt;&lt;a href="http://www.flickr.com/photos/nuanc/" id="ltj3" title="nuanc"&gt;nuanc&lt;/a&gt; Flickr: red summer)&lt;br&gt;
&lt;br&gt;
&lt;br&gt;
&lt;/font&gt;&lt;/div&gt;
&lt;h2&gt;Context&lt;/h2&gt;
Whither Java? Are we facing &lt;i&gt;&lt;a title="a winter of discontent" href="http://en.wikipedia.org/wiki/Winter_of_Discontent" id="oyjt"&gt;a winter of discontent&lt;/a&gt;&lt;/i&gt;? Will it be a period of autumn, malnutrition of innovation, fragmentation and digital anti-socialism, which may in turn transform in to blustery winds of disharmony and technological market dislocation? In this [financial and] economic environment, we now need to learn new skills as fast as possible. This is a &lt;i&gt;need&lt;/i&gt;. The changes in Java are slowing down and this happening coindentally with&amp;nbsp; the market downtown. Developers are asking themselves the question: &lt;i&gt;Am I invested enough in the right technology? Should I keep betting on Java?&lt;/i&gt; In fact, the JDK engineering team are currently only concerned with small changes to the Java langauge, &lt;b&gt;&lt;a title="Project Coin" href="http://openjdk.java.net/projects/coin/" id="jn4i"&gt;Project Coin&lt;/a&gt;&lt;/b&gt; and &lt;b&gt;&lt;a title="Jigsaw" href="http://openjdk.java.net/projects/jigsaw/" id="zjzb"&gt;Jigsaw&lt;/a&gt;&lt;/b&gt;. All of these, former, subjects are currently controversial topics and warrant further discussion than I have space here. Clearly many developers want extreme change in Java development, some have already left the platform to move on to Ruby and C# (dot net) in order to find it. Every one knows that is &lt;i&gt;olde&lt;/i&gt; news. A lot of us have stayed with the Java platform. We are the loyal ones. Why? The new news is what exactly going to happen to those of us, who through love, passion or just professional need, stayed with the Java platform? Without any doubt the Java language and platform will remain important for another decade, at least. A grounding in programming Java is still essential to any computer science student graduating this year, still the platform is expanding with new brand new possibilities. It is pretty clear to most of us in the business that the question is really, &lt;i&gt;Java and &lt;b&gt;X&lt;/b&gt;&lt;/i&gt; and just what is that &lt;b&gt;&lt;a title="X-factor" href="http://dictionary.reference.com/browse/x+factor" id="c6o4"&gt;X-factor&lt;/a&gt;&lt;/b&gt;, the other thing called X? What technology do we really want to invest our precious time and energy to learn other than Java. This brings me to point of this entire discourse, and I know you have probably seen this inquiry before, is this really the end of summer of Java? Is this the season of Java's autumn coming to us sooner or much later? [This all reads like good prose for an &lt;a title="AudioBoo" href="http://audioboo.fm/boos/38872" id="ew4m8"&gt;AudioBoo&lt;/a&gt; to me *PP*]&lt;br&gt;
&lt;br&gt;
&lt;br&gt;

 
&lt;div id="zv:0" style="text-align: left;"&gt;&lt;img src="http://docs.google.com/File?id=df5jk3g7_294cmn859g5_b" height="298" width="464"&gt;&lt;/div&gt;
 &lt;font size="1"&gt;(Creative Commons Attribution, &lt;/font&gt;Pheonix,AZ, fparking [at] gmail.com&lt;font size="1"&gt;,&lt;/font&gt; &lt;font size="1"&gt;&lt;a href="http://www.flickr.com/photos/freeparking/" id="gp9e" title="freeparking"&gt;freeparking&lt;/a&gt; Flickr: dying flowers)&lt;br&gt;

&lt;/font&gt;

&lt;p id="b5hq20"&gt;
&lt;/p&gt;
 
&lt;br&gt;
&lt;br id="b5hq32"&gt;
&lt;div id="auhp" style="text-align: left;"&gt;
&lt;div id="xj9s" style="text-align: left;"&gt;
&lt;h2&gt;
Talks

&lt;/h2&gt;
&lt;br&gt;
What are the talks about?&lt;br&gt;
&lt;br&gt;
Once again, as did in &lt;a title="BOF 48 Celebrate! Five Year Anniversary" href="http://www.jroller.com/javawug/entry/javawug_bof48_five_year_anniversary" id="jb3p"&gt;BOF 48 Celebrate! Five Year Anniversary&lt;/a&gt;, &lt;a title="BOF 43 Open Mike" href="http://www.jroller.com/javawug/entry/javawug_bof_43_open_mike" id="pyv4"&gt;BOF 43 Open Mike&lt;/a&gt; , we are turning the event over to an &lt;i style="color: rgb(204, 0, 0);"&gt;"Open Mike"&lt;/i&gt; session. You can volunteer to talk about any related Java Virtual Machine technology for up to 15 minutes or general software architecture and practice. You must submit your talk to the organisers (Peter Pilgrim, Emin Tatosian) before the event. All you will need is a laptop with DVI connection to a projector, dutch courage and, most importantly, passion to deliver.&lt;br&gt;
&lt;br&gt;
Caveat Emptor. We are going to strictly limit the time of each talk to strictly 20 minutes and we have room for three or four slots.&lt;br&gt;
&lt;br&gt;
In summary, you can talk about:&lt;br&gt;
&lt;br&gt;
&lt;ul&gt;
 &lt;li&gt;
 A technology that runs on the JVM or &amp;nbsp;
 &lt;/li&gt;
 &lt;li&gt;
 Software architecture and practice in your organisation
 &lt;/li&gt;
&lt;/ul&gt;
&lt;br&gt;
There is a very short time to go the event. So get your presentation in now. Send an email to the organiser right now! Comment on the blog! &lt;br&gt;
&lt;br&gt;
&lt;h2&gt;Prizes&lt;/h2&gt;
&lt;ul&gt;&lt;li&gt;&lt;b&gt;Java Rebel&lt;/b&gt; (&lt;a title="http://www.zeroturnaround.com/javarebel/" href="http://www.zeroturnaround.com/javarebel/" id="n_es"&gt;http://www.zeroturnaround.com/javarebel/&lt;/a&gt; ) and &lt;b&gt;JetBrains IDEA 8.1&lt;/b&gt; (&lt;a title="http://jetbrains.com/" href="http://jetbrains.com/" id="sx7g"&gt;http://jetbrains.com/&lt;/a&gt; ) Licene Giveaways.&lt;/li&gt;&lt;/ul&gt;
&lt;br&gt;
&lt;br&gt;
&lt;h3&gt;
 Slot 1
&lt;/h3&gt;
&lt;div style="text-align: right;"&gt;
Time: 18:40-19:00&lt;br&gt;
&lt;/div&gt;
Author: Peter Pilgrim&lt;br&gt;
Subject: &lt;b&gt;Essential JavaFX Mix with XStream, Jersey and Nelson FX&lt;/b&gt;&lt;br&gt;
URL:&amp;nbsp; http://jroller.com/peter_pilgrim/the_nelson_framework/&lt;br&gt;
&lt;br&gt;
Abstract: &lt;a title="JavaFX 1.2" href="http://javafx.com/download" id="bo1t"&gt;JavaFX 1.2&lt;/a&gt; was released during JavaOne 2009 and has improved functionality including a brand suite of UI controls. These standard controls are an important contribution in order to developers to build Enterprise application. Peter Pilgrim talks about the new controls and how to connect a JavaFX application to a remote server application. Generally JavaFX client side application can call &lt;a title="web services" href="http://en.wikipedia.org/wiki/Web_services" id="id1j"&gt;web services&lt;/a&gt; with relative ease. On the server side several developers are writing RESTful end points with the new JAX RS framework, &lt;a title="Project Jersey" href="http://jersey.dev.java.net/" id="cogl"&gt;Project Jersey&lt;/a&gt; is an example of &lt;a title="JAX-RS (JSR 311)" href="https://jsr311.dev.java.net/" id="xcf5"&gt;JAX-RS (JSR 311)&lt;/a&gt; implementation. Peter Pilgrim will also talk about using the XStream framework in order to quickly produce XML output. Recently Peter open sourced the &lt;a title="Nelson Framework" href="http://www.jroller.com/peter_pilgrim/entry/the_nelson_framework" id="utzx"&gt;Nelson Framework&lt;/a&gt; for JavaFX.&lt;br&gt;
&lt;h3&gt;
 Slot 2
&lt;/h3&gt;
&lt;p style="text-align: right;"&gt;
 Time: 19:05-19:25&lt;br&gt;
&lt;/p&gt;
&lt;p&gt;
 Author: Neil Bartlett&lt;br&gt;
 Subject: &lt;b&gt;What's New Eclipse 3.5 Gallileo&lt;/b&gt;?&lt;br&gt;
 URL: &lt;a title="http://www.eclipse.org/galileo/" href="http://www.eclipse.org/galileo/" id="w7kl"&gt;http://www.eclipse.org/galileo/&lt;/a&gt; 
&lt;/p&gt;
&lt;p&gt;
 &lt;br&gt;
&lt;/p&gt;
Abstract:&amp;nbsp;
&lt;h3&gt;
 Slot 3
&lt;/h3&gt;
&lt;p style="text-align: right;"&gt;
 Time: 19:30 - 19:50&lt;br&gt;
&lt;/p&gt;
&lt;p&gt;
 
 Author: Mike Burton &lt;br&gt;
 Subject: &lt;b&gt;Integrating Javascript and JBoss Seam&amp;nbsp;&lt;/b&gt;&lt;br&gt;
&lt;/p&gt;
&lt;div style="text-align: right;"&gt;&lt;br&gt;
&lt;/div&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
Abstract: For a recent requirement one of my web applications needed to know the client/browser PC's screen resolution. This talk will show how to do this using Javascript, Richfaces/Ajax4Jsf, Facelets and JBoss Seam.&lt;br&gt;
&lt;br&gt;

 
&lt;h3&gt;Slot 4
&lt;/h3&gt;
&lt;div style="text-align: right;"&gt;
Time: 19:55-20:15 &lt;br&gt;
&lt;/div&gt;

 Author: Who&lt;br&gt;
 Subject: TBC&lt;br&gt;
 URL: &lt;br&gt;
&lt;br&gt;
Abstract&lt;br&gt;
&lt;h3&gt;Slot 5
&lt;/h3&gt;
&lt;div style="text-align: right;"&gt;
Time: 20:20-20:35&lt;br&gt;
&lt;/div&gt;

 Author: Who&lt;br&gt;
 Subject: &lt;b&gt;TBC&lt;/b&gt;&lt;br&gt;
 URL: &lt;br&gt;
&lt;br&gt;
Abstract&lt;br&gt;
&lt;br&gt;
&lt;h2 id="r4-q"&gt;
 Celebrate!
&lt;/h2&gt;
The Java Web User Group is five years this year! We have also reach the half-ton milestone in birds-of-a-feather events. It is time to celebrate again. &lt;br style="color: rgb(153, 0, 0);"&gt;
&amp;nbsp;
&lt;br&gt;
&lt;img src="http://docs.google.com/File?id=df5jk3g7_192c4tgqfg6_b" style="margin: 1em 0pt 0pt 1em; width: 320px; height: 240px; float: right;"&gt;
&lt;h2&gt;
 After Party
&lt;/h2&gt;
We will be definitely heading to the pub afterwards and we will find somewhere to eat as well, if required. &lt;br&gt;
&lt;br&gt;
&lt;font style="color: rgb(153, 0, 0);" size="4"&gt;If we are lucky, we will probably get sponsorship for Pizzas&lt;br id="b5hq36"&gt;
&lt;/font&gt;
&lt;p id="b5hq37"&gt;
 &lt;br id="b5hq38"&gt;
&lt;/p&gt;
&lt;h2 id="b5hq39"&gt;
 Biographies&lt;br id="b5hq40"&gt;
&lt;/h2&gt;
Who are the speakers?&lt;br&gt;
&lt;p&gt;
 &lt;br&gt;
 
&lt;/p&gt;
&lt;h3&gt;
 Peter Pilgrim
&lt;/h3&gt;
&lt;p&gt;
 Most of you already know about Peter, he is the founder and organiser of the JAVAWUG. He has a lot of J2EE experience under the belt for several years. Recently, he has been really interested in Sun's vision to "reinvigorate the desktop" with JavaFX. Peter is a Sun Certified Java Architect for the Java EE 5 platform. He presented a quickie session at &lt;a href="http://www.devoxx.com/display/JV08/JavaFX+-+Animations%2C+Timelines+and+Collision+Analysis+for+Games" id="zym4" title="Devoxx 2008 &amp;quot;JavaFX: Animation, Timelines and Collision Analysis For Games&amp;quot;"&gt;Devoxx 2008 "JavaFX: Animation, Timelines and Collision Analysis For Games"&lt;/a&gt; .&lt;br&gt;
&lt;/p&gt;
 &lt;br id="b5hq41"&gt;
&lt;h2 id="ew4m"&gt;
 Registration
&lt;/h2&gt;
&lt;br&gt;
&lt;p id="b5hq48"&gt;
 The address is:
&lt;/p&gt;

&lt;p id="xty8" style="background-color: rgb(255, 102, 0); color: rgb(255, 255, 255);"&gt;Skills Matter Limited&lt;br id="b5hq50"&gt;
 1 Sekforde Street&lt;br id="b5hq51"&gt;
 LONDON EC1R 0BE&lt;br id="b5hq52"&gt;
 Phone: 020 7107 2620&lt;br id="b5hq53"&gt;
 Fax: 020 7107 2621&lt;/p&gt;
&lt;p id="v-ip"&gt;
 &lt;br id="i70t"&gt;
&lt;/p&gt;
&lt;p id="rixb58"&gt;
 If you would like to attend:
&lt;/p&gt;
&lt;ol id="rixb59"&gt;
 &lt;li id="rixb60"&gt;
 &lt;b id="rixb61"&gt;Please REGISTER&lt;/b&gt; so that you can be added to the &lt;a href="http://skillsmatter.com/event/java-jee/birds-of-a-feather-50" id="rixb62" title="SECURITY DETAIL with EMC/Conchango"&gt;&lt;b id="rixb63"&gt;SECURITY DETAIL with SkillsMatter&lt;/b&gt;&lt;/a&gt;.
 &lt;/li&gt;
 &lt;li id="rixb64"&gt;
 If you aren't a &lt;b id="pxk4"&gt;JAVAWUG member&lt;/b&gt; why not join the &lt;a href="http://groups.google.com/group/javawug" id="rixb65"&gt;&lt;b id="rixb66"&gt;JAVAWUG at Google Groups&lt;/b&gt;&lt;/a&gt;?&lt;br id="meba"&gt;
 &lt;/li&gt;
&lt;/ol&gt;
&lt;br id="pxk40"&gt;
For problems, send an email to &lt;b id="rixb67"&gt;peter (dot) pilgrim (at) gmail (dot) com&lt;/b&gt; and &lt;b id="v9ur"&gt;emin (dot) tatosian (at) gmail (dot) com&lt;/b&gt;. &lt;br&gt;
&lt;br id="i70t0"&gt;
&lt;p id="b5hq69"&gt;
 Here is some relevant travel information:
&lt;/p&gt;
&lt;ul id="b5hq70"&gt;&lt;li id="b5hq71"&gt;
 By Underground: -&lt;br id="b5hq72"&gt;
 &lt;a href="http://www.tfl.gov.uk/tube/travelinfo/realtime/default.asp?station=1000080&amp;amp;line=metropolitan&amp;amp;time=now" id="b5hq73"&gt;&lt;b id="b5hq74"&gt;Farringdon &lt;/b&gt;&lt;/a&gt;:
Come out the station turn left and left again. Walk up Turnmill Street,
cross the Clerkenwell Road. At the road head to the right on Aylesbury
St. Walk past the Crown Tavern pub and you will see the building 1
Sekforde. You can't really miss it. &lt;/li&gt;
&lt;li id="b5hq75"&gt;
 Map: &lt;a href="http://maps.google.co.uk/maps?f=q&amp;amp;hl=en&amp;amp;q=skills+matter+ec1r&amp;amp;om=1&amp;amp;ie=UTF8&amp;amp;ll=51.524752,-0.108404&amp;amp;spn=0.015326,0.02768" id="b5hq76"&gt;&lt;b id="b5hq77"&gt; Google Maps Link to 1 Sekforde Street &lt;/b&gt;&lt;/a&gt;
 &lt;/li&gt;&lt;/ul&gt;
&lt;p id="b5hq78"&gt;
 &lt;br id="b5hq79"&gt;
&lt;/p&gt;
&lt;p id="wpqu"&gt;
 The venue has graciously been organised by &lt;b id="ck43"&gt;Skills Matter&lt;/b&gt; team. We all appreciate this generous gift.
&lt;/p&gt;
&lt;p id="mzaf"&gt;
 &lt;a href="http://www.javawug.com/" id="bog-"&gt;JAVAWUG.com&lt;/a&gt;
&lt;/p&gt;
&lt;br&gt;
&lt;br&gt;
&lt;div id="cclicense" style="background: rgb(224, 224, 255) none repeat scroll 0% 0%; -moz-background-clip: -moz-initial; -moz-background-origin: -moz-initial; -moz-background-inline-policy: -moz-initial; float: right;"&gt;
 &lt;a href="http://creativecommons.org/licenses/by-nc-sa/2.0/uk/" rel="license"&gt;&lt;img alt="Creative Commons License" src="http://i.creativecommons.org/l/by-nc-sa/2.0/uk/88x31.png" style="border-width: 0pt;"&gt;&lt;/a&gt;&lt;br&gt;
 &lt;b&gt;&lt;span href="http://purl.org/dc/dcmitype/MovingImage" rel="dc:type"&gt;JAVAWUG BOF Videos&lt;/span&gt;&lt;/b&gt; by &lt;a href="http://jroller.com/javawug" rel="cc:attributionURL"&gt;Peter Pilgrim&lt;/a&gt; is licensed under a &lt;a href="http://creativecommons.org/licenses/by-nc-sa/2.0/uk/" rel="license"&gt;Creative Commons Attribution-Non-Commercial-Share Alike 2.0 UK: England &amp;amp; Wales License&lt;/a&gt;.&lt;br&gt;
 &lt;br&gt;
 Based on a work at &lt;a href="http://jroller.com/javawug" rel="dc:source"&gt;http://jroller.com/javawug&lt;/a&gt;.
&lt;/div&gt;
&lt;h2 id="b1i0"&gt;
 Media Copyright Notice&lt;br id="zeq.0"&gt;
&lt;/h2&gt;
&lt;i id="itqp"&gt;JAVAWUG BOF Events&lt;/i&gt; are video recorded, edited and published freely. We normally record the speaker and administrators. You can find examples on &lt;a href="http://www.vimeo.com/videos/search:JAVAWUG" id="ack4" title="JAVAWUG BOF Videos on Vimeo.com"&gt;Vimeo&lt;/a&gt; and &lt;a href="http://video.google.com/videosearch?q=javawug&amp;amp;sitesearch=#" id="u:fs" title="JAVAWUG Videos on Google Video"&gt;Google Video&lt;/a&gt;. On the rare occasion we do record some audience members. Please let us know if you &lt;i id="qw4j"&gt;personally &lt;/i&gt;would rather not been filmed. We reserved &lt;i&gt;Some of the Copyright 2008/2009 &lt;/i&gt;©© JAVAWUG Video Productions, &lt;a href="http://www.creativecommons.org/" id="lrjb" target="_blank" title="Creative Commons License"&gt;Creative Commons License&lt;/a&gt; (Attributions: &lt;b id="h_-_"&gt;Attribution&lt;/b&gt; (by): Licensees may copy, distribute, display and perform the work and make derivative works based on it only if they give the author or licensor the credits in the manner specified by these conditions.).&lt;br id="zeq.1"&gt;
&lt;br id="zeq.2"&gt;
&lt;p id="xscb"&gt;
&lt;/p&gt;
&lt;p id="b5hq86"&gt;
 This is &lt;a href="http://jroller.com/page/peter_pilgrim" id="b5hq87"&gt;Peter Pilgrim&lt;/a&gt;, Out.
&lt;/p&gt;
&lt;br id="b5hq88"&gt;
&lt;font size="1"&gt;(John Schneider Photograph, Creative Commons Attribution, Flickr 2007. The RCA40A microphone was introduced in the early 1930'. It was the first ribbon ("velocity") microphone on the market, to be succeeded by RCA's famous 44BX and 77DX microphones.&lt;/font&gt;&lt;font size="1"&gt;)&lt;/font&gt;&lt;br&gt;
&lt;br&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;br&gt;
&lt;br&gt;
&lt;br&gt;&lt;img src="http://feeds.feedburner.com/~r/jroller/frontpage/~4/eVH-i-Wu5pM" height="1" width="1"/&gt;</description>          <feedburner:origLink>http://www.jroller.com/javawug/entry/javawug_bof_50_summertime</feedburner:origLink></item>
    <item>
    <guid isPermaLink="false">http://www.jroller.com/janniche/entry/ddd_javazone</guid>
    <title>DDD @ JavaZone</title>
    <dc:creator>Janniche Haugen</dc:creator>
    <link>http://feeds.dzone.com/~r/jroller/frontpage/~3/B3goPFmfRNI/ddd_javazone</link>
        <pubDate>Mon, 6 Jul 2009 18:41:43 -0400</pubDate>
    <category>Java</category>
    <category>ddd</category>
    <category>java</category>
    <category>javazone</category>
    <category>talk</category>
            <description>My talk about domain driven design and good object orientation was accepted at JavaZone. I know what I'll be doing this summer :)&lt;img src="http://feeds.feedburner.com/~r/jroller/frontpage/~4/B3goPFmfRNI" height="1" width="1"/&gt;</description>          <feedburner:origLink>http://www.jroller.com/janniche/entry/ddd_javazone</feedburner:origLink></item>
    <item>
    <guid isPermaLink="false">http://www.jroller.com/xtecuan/entry/una_mujer_tras_las_cortinas</guid>
    <title>Una mujer tras las cortinas</title>
    <dc:creator>Julian Rivera Pineda</dc:creator>
    <link>http://feeds.dzone.com/~r/jroller/frontpage/~3/dYHPAJrJtcc/una_mujer_tras_las_cortinas</link>
        <pubDate>Mon, 6 Jul 2009 14:39:50 -0400</pubDate>
    <category>Java</category>
            <description>&lt;a href="http://www.renuevodeplenitud.com/reflexiones-una-mujer-tras-las-cortinas.html"&gt;http://www.renuevodeplenitud.com/reflexiones-una-mujer-tras-las-cortinas.html&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;img src="http://feeds.feedburner.com/~r/jroller/frontpage/~4/dYHPAJrJtcc" height="1" width="1"/&gt;</description>          <feedburner:origLink>http://www.jroller.com/xtecuan/entry/una_mujer_tras_las_cortinas</feedburner:origLink></item>
    <item>
    <guid isPermaLink="false">http://www.jroller.com/xtecuan/entry/cosa_seria_lula</guid>
    <title>Cosa Seria Lula</title>
    <dc:creator>Julian Rivera Pineda</dc:creator>
    <link>http://feeds.dzone.com/~r/jroller/frontpage/~3/9Hj1Ddt8Ci4/cosa_seria_lula</link>
        <pubDate>Mon, 6 Jul 2009 14:11:03 -0400</pubDate>
    <category>Java</category>
            <description>&lt;div align="center"&gt;&lt;img style="max-width: 800px;" src="http://xtecuannet.ath.cx:8084/roller/xtecuan/resource/LulaSoftwareLibre.jpg" /&gt;&lt;br /&gt;&lt;a href="http://www.flickr.com/photos/webmink/3668906393/in/photostream/"&gt;http://www.flickr.com/photos/webmink/3668906393/in/photostream/&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;/div&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;img src="http://feeds.feedburner.com/~r/jroller/frontpage/~4/9Hj1Ddt8Ci4" height="1" width="1"/&gt;</description>          <feedburner:origLink>http://www.jroller.com/xtecuan/entry/cosa_seria_lula</feedburner:origLink></item>
    <item>
    <guid isPermaLink="false">http://www.jroller.com/xtecuan/entry/lula_s_java_ring</guid>
    <title>Lula's Java Ring</title>
    <dc:creator>Julian Rivera Pineda</dc:creator>
    <link>http://feeds.dzone.com/~r/jroller/frontpage/~3/Et9hxqUS9dw/lula_s_java_ring</link>
        <pubDate>Mon, 6 Jul 2009 14:06:36 -0400</pubDate>
    <category>Java</category>
            <description>&lt;div align="center"&gt;&lt;img style="max-width: 800px;" src="http://xtecuannet.ath.cx:8084/roller/xtecuan/resource/LulaJavaRing.jpg" /&gt;&lt;/div&gt;&lt;h1 id="title_div3691262570" property="dc:title" align="center"&gt;&lt;a href="http://www.flickr.com/photos/webmink/3691262570/"&gt;Lula's Java Ring&lt;/a&gt;&lt;/h1&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;img src="http://feeds.feedburner.com/~r/jroller/frontpage/~4/Et9hxqUS9dw" height="1" width="1"/&gt;</description>          <feedburner:origLink>http://www.jroller.com/xtecuan/entry/lula_s_java_ring</feedburner:origLink></item>
    <item>
    <guid isPermaLink="false">http://www.jroller.com/phidias/entry/grag_1_1_released</guid>
    <title>GRAG 1.1 Released</title>
    <dc:creator>Mark Fortner</dc:creator>
    <link>http://feeds.dzone.com/~r/jroller/frontpage/~3/P-PL7fICLHM/grag_1_1_released</link>
        <pubDate>Mon, 6 Jul 2009 11:59:54 -0400</pubDate>
    <category>Java</category>
    <category>grails</category>
            <description>I've been blogging about &lt;a href="http://grag.sf.net"&gt;GRAG &lt;/a&gt;recently, and the latest version 1.1 was released.&amp;nbsp; Thanks Rudie (and the rest of the GRAG team)!&lt;img src="http://feeds.feedburner.com/~r/jroller/frontpage/~4/P-PL7fICLHM" height="1" width="1"/&gt;</description>          <feedburner:origLink>http://www.jroller.com/phidias/entry/grag_1_1_released</feedburner:origLink></item>
    <item>
    <guid isPermaLink="false">http://www.jroller.com/desmax/entry/springframework_meeting_2009_photos</guid>
    <title>SpringFramework Meeting 2009 Photos</title>
    <dc:creator>Massimiliano Dessì</dc:creator>
    <link>http://feeds.dzone.com/~r/jroller/frontpage/~3/a21yTHrqhn0/springframework_meeting_2009_photos</link>
        <pubDate>Mon, 6 Jul 2009 10:30:47 -0400</pubDate>
    <category>Developer</category>
    <category>3.0</category>
    <category>alfresco</category>
    <category>gae</category>
    <category>lambdaj</category>
    <category>rest</category>
    <category>springframework</category>
    <category>springsecurity</category>
            <description>&lt;p&gt;&lt;p&gt;&lt;p&gt;&lt;img vspace="0" hspace="0" border="0" align="baseline" alt="Alfe Arendsen SpringSource Jteam" src="http://farm3.static.flickr.com/2449/3693760506_544d477ec4.jpg?v=0" /&gt;&lt;/p&gt;&lt;p&gt;Mr. Alef Arendsen, &lt;i&gt;SpringSource&lt;/i&gt; &lt;i&gt;JTeam&lt;/i&gt; &amp;quot;&lt;b&gt;SpringFramework 3.0&lt;/b&gt;&amp;quot;&lt;/p&gt;&lt;p&gt;&lt;img vspace="0" hspace="0" border="0" align="baseline" alt="Luca Marrocco Exmachina" src="http://farm4.static.flickr.com/3555/3693756368_fd1cab15cb.jpg?v=0" /&gt;&amp;nbsp;&lt;/p&gt;&lt;p&gt;Mr. Luca Marrocco, &lt;i&gt;Exmachina&lt;/i&gt; &amp;quot;&lt;b&gt;Google App Engine&lt;/b&gt;&amp;quot; &lt;/p&gt;&lt;p&gt;&lt;img vspace="0" hspace="0" border="0" align="baseline" alt="Massimiliano Dessì Pronetics Sourcesense" src="http://farm4.static.flickr.com/3662/3693765076_58df60b8ce.jpg?v=0" /&gt;&lt;/p&gt;&lt;p&gt;Mr. Massimiliano Dessì, &lt;i&gt;Pronetics Sourcesense&lt;/i&gt; &amp;quot;&lt;b&gt;The hidden gems of SpringSecurity&lt;/b&gt;&amp;quot;&lt;/p&gt;&lt;p&gt;&lt;img vspace="0" hspace="0" border="0" align="baseline" alt="Mario Fusco Exmachina" src="http://farm4.static.flickr.com/3653/3693767824_2fcd467643.jpg?v=0" /&gt;&lt;/p&gt;&lt;p&gt;Mr. Mario Fusco, &lt;i&gt;Exmachina&lt;/i&gt; &amp;quot;&lt;b&gt;Lambdaj&lt;/b&gt;&amp;quot;&lt;/p&gt;&lt;p&gt;&lt;img vspace="0" hspace="0" border="0" align="baseline" alt="Piergiorgio Lucidi" src="http://farm4.static.flickr.com/3663/3693769074_9c2f057cf5.jpg?v=0" /&gt;&lt;/p&gt;&lt;p&gt;Mr. Piergiorgio Lucidi, &lt;i&gt;Sourcesense&lt;/i&gt; &amp;quot;&lt;b&gt;A success story: Spring in Alfresco ECM&lt;/b&gt;&amp;quot;&lt;br /&gt;
&lt;/p&gt;&lt;p&gt;&lt;br/&gt;&lt;br /&gt;
&lt;/p&gt;&lt;/p&gt;&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/jroller/frontpage/~4/a21yTHrqhn0" height="1" width="1"/&gt;</description>          <feedburner:origLink>http://www.jroller.com/desmax/entry/springframework_meeting_2009_photos</feedburner:origLink></item>
    <item>
    <guid isPermaLink="false">http://www.jroller.com/phidias/entry/generating_grails_apps_from_uml</guid>
    <title>Generating Grails Apps From UML Models</title>
    <dc:creator>Mark Fortner</dc:creator>
    <link>http://feeds.dzone.com/~r/jroller/frontpage/~3/31GZI27_65c/generating_grails_apps_from_uml</link>
        <pubDate>Mon, 6 Jul 2009 10:19:53 -0400</pubDate>
    <category>Java</category>
    <category>grails</category>
            <description>In my &lt;a id="slck" href="http://www.jroller.com/page/phidias/?anchor=generating_a_grails_app_using" title="previous blog entry"&gt;previous blog entry&lt;/a&gt; I described how to reverse engineer a Grails application using &lt;a id="k4bj" href="http://grag.sf.net" title="GRAG"&gt;GRAG&lt;/a&gt; (the GRails Application Generator).&amp;nbsp; In this entry, I'll walk through a couple examples of how to create a GRAILS application using a UML model.&lt;br /&gt;&lt;br /&gt;GRAG has the ability to export a project configuration as a UML model, by simply selecting the &lt;b&gt;File &amp;gt; Export UML Model&lt;/b&gt; menu item.&amp;nbsp; This generates an XMI file that you can then import into your favorite UML tool.&amp;nbsp; In my case, I loaded the file into ArgoUML.&lt;br /&gt;&lt;br /&gt;When you load an XMI file into ArgoUML, the first thing that you notice is that the model doesn't include any diagrams.&amp;nbsp; So if you're expecting to see diagrams, at this point you'll be pretty disappointed.&amp;nbsp; The second thing that you notice is that the model also includes stereotypes like DataSource, Entity, Primary, Key and Required.&amp;nbsp; Your model is automatically created in a package called &amp;quot;model&amp;quot; since GRAG doesn't support packages (or &amp;quot;namespaces&amp;quot; in UML parlance) yet.&amp;nbsp; &lt;br /&gt;&lt;br /&gt;To add the Entities to a class diagram, simply select the Entities from ArgoUML's project pane (on the left side of the window) and then right-click and select &lt;b&gt;Add to Diagram &lt;/b&gt;from the popup menu.&amp;nbsp; The Entities and all of their relationships will be added to the diagram.&amp;nbsp;&amp;nbsp;&amp;nbsp; If you select Arrange &amp;gt; Layout, ArgoUML will automatically layout the classes on the page.&amp;nbsp; You may then want to spend a little time cleaning up the diagram.&lt;br /&gt;&lt;br /&gt;At this point you have a pretty functional diagram that shows the relationships between the Entities, and gives you a starting point for your own modeling efforts.&amp;nbsp; You can now edit the diagram to your heart's delight, add new classes, change the packaging, etc.&amp;nbsp; You can save the project as an ArgoUML project, and then re-export the XMI with your new changes. You then open the XMI file in GRAG and re-generate your application.&lt;br /&gt;&lt;br /&gt;&lt;b&gt;Creating Your Own Profile&lt;/b&gt;&lt;br /&gt;If you're going to be creating your own models from scratch you'll need to export the stereotypes from an existing GRAG model.&amp;nbsp; This package of types and stereotypes is called a profile. To create a profile:&lt;br /&gt;&lt;br /&gt;&lt;ol&gt;&lt;li&gt;Export the model as an XMI file from ArgoUML.&lt;/li&gt;&lt;li&gt;Create a new ArgoUML project.&lt;/li&gt;&lt;li&gt;Import the profile by right-clicking on the &amp;quot;Profile Configuration&amp;quot; folder in the ArgoUML project pane.&lt;/li&gt;&lt;li&gt;Click the &amp;quot;Load profile from file&amp;quot; and select the XMI file that you created in step 1.&amp;nbsp; The &lt;b&gt;grag &lt;/b&gt;profile will now appear in the dialog box.&lt;br /&gt;&lt;/li&gt;&lt;li&gt;Click on the grag profile and click the &amp;quot;&amp;gt;&amp;gt;&amp;quot; button to add the profile to the list of Active Profiles, then click the OK button.&lt;/li&gt;&lt;li&gt;Back in the Profile Configuration folder you should now see grag listed as one of the profiles.&amp;nbsp; If you open this profile folder, you'll see the DataSource, Entity and other Grails-specific stereotypes listed.&lt;br /&gt;&lt;/li&gt;&lt;/ol&gt;&lt;b&gt;&lt;br /&gt;Creating Your Own Models&lt;/b&gt;&lt;br /&gt;To create your own models, start by importing the grag profile into your current project (steps 3-5 in the previous section).&amp;nbsp; Add any classes that you want to your model.&amp;nbsp; To make your model useable by GRAG, you'll need to:&lt;br /&gt;&lt;ul&gt;&lt;li&gt;Apply the Entity stereotype to each class that you want to be able to use as a domain class.&lt;/li&gt;&lt;li&gt;Apply the PrimaryKey stereotype to the appropriate key fields in your classes.&lt;/li&gt;&lt;li&gt;Apply the Required stereotype to any field that is not nullable.&lt;/li&gt;&lt;/ul&gt;&lt;br /&gt;When adding relationships between entities you'll need to use the &lt;b&gt;foreign-field&lt;/b&gt;, &lt;b&gt;multiplicity&lt;/b&gt;, and &lt;b&gt;bidirectional &lt;/b&gt;tag data fields to the associations.&amp;nbsp; You can use an existing model to give you some examples on how to define these relationships.&amp;nbsp; To draw the relationship, you click on the association icon (shown below in red).&amp;nbsp; You may need to click the down arrow next to the icon in order to switch between different association types.&lt;br /&gt;&lt;br /&gt;&lt;div style="text-align: left;" id="f8xq"&gt;&lt;img src="http://docs.google.com/File?id=dgrjp73c_201csc3d9c2_b" style="width: 259px; height: 30px;" /&gt;&lt;/div&gt;&lt;br /&gt;That's pretty much all there is to it.&amp;nbsp; You can now create your own Grails applications by either reverse engineering an existing database, or by generating an application from a de novo model.&lt;br /&gt;&lt;img src="http://feeds.feedburner.com/~r/jroller/frontpage/~4/31GZI27_65c" height="1" width="1"/&gt;</description>          <feedburner:origLink>http://www.jroller.com/phidias/entry/generating_grails_apps_from_uml</feedburner:origLink></item>
    <item>
    <guid isPermaLink="false">http://www.jroller.com/evans/entry/2_year_old_smoking_a</guid>
    <title>[OT] 2 year old smoking a cigarette</title>
    <dc:creator>evans</dc:creator>
    <link>http://feeds.dzone.com/~r/jroller/frontpage/~3/GUlu_OsDvWc/2_year_old_smoking_a</link>
        <pubDate>Mon, 6 Jul 2009 09:55:07 -0400</pubDate>
    <category>Java</category>
            <description>&lt;p&gt;&lt;span style="display:block;width:425px;margin:0 auto;"&gt;  &lt;embed src='http://widgets.vodpod.com/w/video_embed/Groupvideo.2862025' type='application/x-shockwave-flash' AllowScriptAccess='always' pluginspage='http://www.macromedia.com/go/getflashplayer' wmode='transparent' flashvars='urlPage=http://livesteez.com/watch/7fdbjG/Two-Year-Old-Smokes-Cigarettes&amp;amp;flv=http://mmgllc.vo.llnwd.net/o21/videos/1246454396_8940.flv&amp;amp;thumb=http://static.livesteez.com/img/flvimg/1246454396_8940.jpg&amp;amp;host=http://livesteez.com/' width='425' height='350' /&gt;
&lt;div style="font-size:10px;"&gt;   


&lt;/div&gt;
&lt;p&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p /&gt;
Wow thats disgusting a child so young smoking…….to think they believe it is funny i say social services all the way!!!!
&lt;p /&gt;&lt;img src="http://feeds.feedburner.com/~r/jroller/frontpage/~4/GUlu_OsDvWc" height="1" width="1"/&gt;</description>          <feedburner:origLink>http://www.jroller.com/evans/entry/2_year_old_smoking_a</feedburner:origLink></item>
    <item>
    <guid isPermaLink="false">http://www.jroller.com/desmax/entry/spring_meeting_cagliari_slides_and</guid>
    <title>Spring Meeting Cagliari Slides and Photos</title>
    <dc:creator>Massimiliano Dessì</dc:creator>
    <link>http://feeds.dzone.com/~r/jroller/frontpage/~3/8v-u9vETo2I/spring_meeting_cagliari_slides_and</link>
        <pubDate>Mon, 6 Jul 2009 05:56:12 -0400</pubDate>
    <category>Developer</category>
    <category>3.0</category>
    <category>alfresco</category>
    <category>gae</category>
    <category>lambdaj</category>
    <category>rest</category>
    <category>springframework</category>
    <category>springsecurity</category>
            <description>&lt;p&gt;&lt;p&gt;&lt;p&gt;Slides and photos of the &lt;a href="http://it.groups.yahoo.com/group/SpringFramework-it" target="_blank" title="Spring Italian User Group"&gt;Spring Italian User Group&lt;/a&gt; Meeting , 27 June 2009 in Cagliari &lt;br /&gt;
&lt;/p&gt;&lt;p&gt;&lt;a href="http://www.jugsardegna.org/vqwiki/jsp/Wiki?27giugno2009" target="_blank" title="Slides"&gt;Slides&lt;/a&gt;&lt;/p&gt;&lt;p&gt;&lt;a href="http://www.flickr.com/photos/96509429@N00/sets/72157621029791686/" target="_blank" title="Photos"&gt;Photos &lt;/a&gt;&lt;br /&gt;
&lt;/p&gt;&lt;/p&gt;&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/jroller/frontpage/~4/8v-u9vETo2I" height="1" width="1"/&gt;</description>          <feedburner:origLink>http://www.jroller.com/desmax/entry/spring_meeting_cagliari_slides_and</feedburner:origLink></item>
    <item>
    <guid isPermaLink="false">http://www.jroller.com/cagataycivici/entry/user_idlemonitor</guid>
    <title>User IdleMonitor</title>
    <dc:creator>Cagatay Civici</dc:creator>
    <link>http://feeds.dzone.com/~r/jroller/frontpage/~3/4c1hJtReDdA/user_idlemonitor</link>
        <pubDate>Mon, 6 Jul 2009 04:32:39 -0400</pubDate>
    <category>Java</category>
            <description>&lt;p&gt;A JSF component to monitor user actions;&lt;/p&gt;&lt;p&gt;&lt;a href="http://cagataycivici.wordpress.com/2009/07/06/user-idlemonitor/"&gt;http://cagataycivici.wordpress.com/2009/07/06/user-idlemonitor/&lt;/a&gt; &lt;br /&gt;&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/jroller/frontpage/~4/4c1hJtReDdA" height="1" width="1"/&gt;</description>          <feedburner:origLink>http://www.jroller.com/cagataycivici/entry/user_idlemonitor</feedburner:origLink></item>
    <item>
    <guid isPermaLink="false">http://www.jroller.com/eyallupu/entry/content_negotiation_using_spring_mvc</guid>
    <title>Content Negotiation using Spring MVC's ContentNegotiatingViewResolver</title>
    <dc:creator>Eyal Lupu</dc:creator>
    <link>http://feeds.dzone.com/~r/jroller/frontpage/~3/BTtKKl0BLA0/content_negotiation_using_spring_mvc</link>
        <pubDate>Mon, 6 Jul 2009 03:37:43 -0400</pubDate>
    <category>Spring Framework</category>
    <category>howto</category>
    <category>java</category>
    <category>spring</category>
    <category>web</category>
    <atom:summary type="html">One of the new features in Spring 3.0 is REST support, REST clients can use
the restTemplate class and servers have support as part of the MVC framework. 
One of the new interesting features is content negotiation using the a new view resolver - &lt;em&gt;ContentNegotiatingViewResolver&lt;/em&gt;. Lately I
was invited to give a lecture about the new Spring 3.0 features and I prepared
a detailed HOWTO example of REST content negotiation which I decided to load to
my blog, here it is</atom:summary>        <description>&lt;p style="TEXT-ALIGN: justify"&gt;Hi all,&lt;/p&gt;

&lt;p&gt;One of the new features in Spring 3.0 is REST support, REST clients can use
the restTemplate class and servers have support as part of the MVC framework. 
One of the new interesting features is content negotiation using the a new view resolver - &lt;em&gt;ContentNegotiatingViewResolver&lt;/em&gt;. Lately I
was invited to give a lecture about the new Spring 3.0 features and I prepared
a detailed HOWTO example (if you want to skip the theory go to &lt;a
href="#HOWTO"&gt;here&lt;/a&gt;) of REST content negotiation which I decided to load to
my blog, here it is&lt;/p&gt;

&lt;h3&gt;What is Content Negotiation?&lt;/h3&gt;

&lt;p&gt;Sometimes different HTTP clients would like to get different representations
of a the same resource, for example the resource
http://localhost/app/rest/users will list all of the users in a specific server
- however one client would like to get the result as a XML document, another in
a JSON format and the third as a human readable fancy HTML table - the process
in which a client notifying the server about the preferred format (or formats)
is named "content negotiation". &lt;/p&gt;

&lt;p&gt;Content negotiation is part of the HTTP specification which defines two
types of content negotiation - "server-driven negotiation" and "agent-driven
negotiation". The scenario implemented by ContentNegotiatingViewResolver is
server-driven negotiation. In abstract the specification defines server-driven
negotiation as the following sequence:&lt;/p&gt;
&lt;ol&gt;
  &lt;li&gt;The agent (e.g., a browser) can include the following HTTP headers in a
    request: Accept, Accept-Charset, Accept-Encoding, Accept-Language, and
    User-Agent.&lt;/li&gt;
  &lt;li&gt;Base on these headers the sever selects the best format (based on the
    server's internal logic) that match these criteria and send it to the
  client&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;It is important to notice that the specification recommend using the above
headers but it also states that: "&lt;em&gt;However, an origin server is not limited
to these dimensions and MAY vary the response based on any aspect of the
request, including information outside the request-header fields or within
extension header fields not defined by this specification.&lt;/em&gt;" (&lt;a
href="http://tools.ietf.org/html/rfc2616#section-12" target="_blank"&gt;here&lt;/a&gt;).
I mention it since Spring's ContentNegotiatingViewResolver is doing just
that.&lt;/p&gt;

&lt;p&gt;&lt;/p&gt;

&lt;h3&gt;The ContentNegotiatingViewResolver&lt;/h3&gt;

&lt;p&gt;The ContentNegotiatingViewResolver is a view resolver which instead of
dispatching a view it delegates to another view resolver. The "secret" is in
the way it decides to which resolver it should delegate to. The
ContentNegotiatingViewResolver determines the client's preferred presentation
form (a.k.a., the content or media type) based on the following algorithm:&lt;/p&gt;
&lt;ol&gt;
  &lt;li&gt;First it checks the request path extension (for example
    .../showUsers&lt;strong&gt;.xml&lt;/strong&gt; vs. .../showUsers&lt;strong&gt;.pdf&lt;/strong&gt;)
    against the ContentNegotiatingViewResolver defaults to determine the media
    type&lt;/li&gt;
  &lt;li&gt;If there was no match on step 1, and if JAF is present on the environment
    it uses the FileTypeMap (javax.activation.FileTypeMap) to get the media
    type using the requested filename.&lt;/li&gt;
  &lt;li&gt;As a last option it uses the Accept header&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;Once a media type was determined it asks each of the other view resolvers
for a "candidate" view and checks to see if this view supports the requested
media type, if so the request is delegated to the appropriate resolver (not to
the candidate view, but to the resolver). &lt;/p&gt;

&lt;p&gt;From steps 1 and 2 on above we can see that, as motioned before, Spring uses
variant of request attributes to try and guess the media type and it doesn't
stick only to the accept header.&lt;/p&gt;

&lt;h3&gt;&lt;a name="HOWTO" id="HOWTO"&gt;&lt;/a&gt;Example&lt;/h3&gt;

&lt;h4&gt;Environment&lt;/h4&gt;
&lt;ul&gt;
  &lt;li&gt;Spring 3.0.M3&lt;/li&gt;
  &lt;li&gt;Jetty 6.1.14&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;/p&gt;

&lt;p&gt;In my example I have a "user details" service that can be queried for users
using username prefixes, I would like to render the output as XML, HTML and a
"toString" format (a format I "invented" for the example in which I renders the
user objects using the toString() method). My controller is as simple as it can
be:&lt;/p&gt;

&lt;p&gt;&lt;/p&gt;
&lt;pre class="java-code"&gt;&lt;code&gt;import java.util.Collection;
import java.util.Date;
import java.util.HashMap;
import java.util.LinkedList;
import java.util.Map;
import java.util.Map.Entry;

import org.springframework.stereotype.Controller;
import org.springframework.ui.Model;
import org.springframework.web.bind.annotation.PathVariable;
import org.springframework.web.bind.annotation.RequestMapping;

@Controller
public class UsersController {

  private Map&amp;lt;String, UserDetails&amp;gt; users = new HashMap&amp;lt;String, UserDetails&amp;gt;();

  {
    UserDetails user = new UserDetails("eyal", new Date(), true);
    users.put(user.getName(), user);

    user = new UserDetails("john", new Date(), false);
    users.put(user.getName(), user);

    user = new UserDetails("emily", new Date(), true);
    users.put(user.getName(), user);

    user = new UserDetails("mark", new Date(), false);
    users.put(user.getName(), user);
  }

  &lt;span class="java-code-strong"&gt;@RequestMapping("/users/{namePrefix}")&lt;/span&gt;
  public String getUsers(&lt;span class="java-code-strong"&gt;@PathVariable("namePrefix")&lt;/span&gt; String prefix, Model model) {

    Collection&amp;lt;UserDetails&amp;gt; result = new LinkedList&amp;lt;UserDetails&amp;gt;();

    for (Entry&amp;lt;String, UserDetails&amp;gt; entry : users.entrySet()) {
      if (entry.getKey().startsWith(prefix)) {
        result.add(entry.getValue());
      }
    }
    model.addAttribute("users", result);
    return "&lt;span class="java-code-strong"&gt;usersListView&lt;/span&gt;";
  }
}&lt;/code&gt;&lt;/pre&gt;

&lt;p&gt;&lt;/p&gt;

&lt;br/&gt;
&lt;center&gt;
&lt;script type="text/javascript"&gt;&lt;!--
google_ad_client = "pub-7548643028974164";
google_ad_width = 468;
google_ad_height = 60;
google_ad_format = "468x60_as";
google_ad_type = "image";
google_ad_channel = "";
google_color_border = "9191CD";
google_color_bg = "FFFFFF";
google_color_link = "0000FF";
google_color_text = "000000";
google_color_url = "008000";
//--&gt;&lt;/script&gt;
&lt;script type="text/javascript"
  src="http://pagead2.googlesyndication.com/pagead/show_ads.js"&gt;
&lt;/script&gt;
&lt;/center&gt;
&lt;br/&gt;

&lt;p&gt;I map the controller using the @RequestMapping annotation to server any
request which ends with any of the following patterns:/users/{namePrefix},
/users/{namePrefix}.*, and /users/{namePrefix}/. In my web.xml I map Spring's
DispatcherServlet to the /rest/* url pattern so, for example,
http://localhost:8080/&amp;lt;context&amp;gt;/rest/users/e,
http://localhost:8080/&amp;lt;context&amp;gt;/rest/users/e.xml and
http://localhost:8080/&amp;lt;context&amp;gt;/rest/users/.toString are all valid urls
that will invoke my controller.&lt;/p&gt;

&lt;p&gt;&lt;/p&gt;

&lt;p&gt;The controller returns the "usersListView" as the name of the next view to
dispatch, technically I could do the content negotiation myself by adding the
controller some logic that dispatches different views based on the request -
for example if the file extension was '.xml' then I would try to dispatch the
"usersListViewXML" and if it was '.htm' I would try to dispatch the
"usersListViewHTM" view. But in a big application this can be very complicated
to maintain - this is where the ContentNegotiatingViewResolver can help us by
externalizing this logic. My controller will always return the "usersListView"
as the next view but the actual view will be resolved using data from the
actual HTTP request. Here is my application context:&lt;/p&gt;

&lt;p&gt;&lt;/p&gt;
&lt;pre class="java-code"&gt;&lt;code&gt;&amp;lt;?xml version="1.0" encoding="UTF-8"?&amp;gt;
&amp;lt;beans xmlns="http://www.springframework.org/schema/beans"
   xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
   xmlns:context="http://www.springframework.org/schema/context"
   xmlns:p="http://www.springframework.org/schema/p"
   xsi:schemaLocation="http://www.springframework.org/schema/context
   http://www.springframework.org/schema/context/spring-context-2.5.xsd http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-2.5.xsd"&amp;gt;

&amp;lt;context:component-scan base-package="**/eyallupu/**" /&amp;gt;

&amp;lt;bean id="contentNegotiatingViewResolver" 
   class="&lt;span class="java-code-strong"&gt;org.springframework.web.servlet.view.ContentNegotiatingViewResolver&lt;/span&gt;"
   p:order="#{T(org.springframework.core.Ordered).HIGHEST_PRECEDENCE}"&amp;gt;
      &amp;lt;property name="mediaTypes"&amp;gt;
         &amp;lt;map&amp;gt;
            &amp;lt;entry key="xml" value="application/xml" /&amp;gt;
            &lt;span class="java-code-strong"&gt;&amp;lt;entry key="tostring" value="text/toString" /&amp;gt;&lt;/span&gt;
            &amp;lt;entry key="html" value="text/html" /&amp;gt;
         &amp;lt;/map&amp;gt;
      &amp;lt;/property&amp;gt;
&amp;lt;/bean&amp;gt;

&amp;lt;bean id="marshallingViewResolver" class="com.jroller.blogs.eyallupu.rest.views.SingleViewViewResolver"
   p:order="#{contentNegotiatingViewResolver.order+1}"&amp;gt;
      &amp;lt;constructor-arg&amp;gt;
         &amp;lt;bean class="org.springframework.web.servlet.view.xml.MarshallingView"&amp;gt;
            &amp;lt;constructor-arg&amp;gt;
               &amp;lt;bean class="org.springframework.oxm.xstream.XStreamMarshaller" /&amp;gt;
            &amp;lt;/constructor-arg&amp;gt;
         &amp;lt;/bean&amp;gt;
      &amp;lt;/constructor-arg&amp;gt;
&amp;lt;/bean&amp;gt;

&amp;lt;bean id="toStringViewResolver" class="com.jroller.blogs.eyallupu.rest.views.SingleViewViewResolver"
  p:order="#{marshallingViewResolver.order+1}"&amp;gt;
      &amp;lt;constructor-arg&amp;gt;
         &amp;lt;bean class="com.jroller.blogs.eyallupu.rest.views.ToStringView"
            p:contentType="text/toString" /&amp;gt;
      &amp;lt;/constructor-arg&amp;gt;
&amp;lt;/bean&amp;gt;

&amp;lt;bean id="urlBasedViewRewsolver" class="org.springframework.web.servlet.view.InternalResourceViewResolver"
   p:prefix="/WEB-INF/jsp/" p:suffix=".jsp" p:order="#{toStringViewResolver.order+1}" /&amp;gt;

&amp;lt;/beans&amp;gt;&lt;/code&gt;&lt;/pre&gt;

&lt;p&gt;&lt;/p&gt;

&lt;p&gt;In the configuration above it is worth noticing the following&lt;/p&gt;

&lt;h4&gt;Registration of new media type&lt;/h4&gt;

&lt;p&gt;I set a value into the 'mediaTypes' property which maps file name extensions
into media types. In traditional configuration I could skip it and let Spring
use the defaults (as described in the beginning of this entry - filename
extensions, JAF, and accept header) but since I wanted to illustrate how do I
register a new media types (text/toString in this example) I set a value into
this property. Using this configuration any request ends with '.toString' (case
insensitive) will be mapped to the 'text/toString' media type.&lt;/p&gt;

&lt;h4&gt;The target View Resolvers&lt;/h4&gt;

&lt;p&gt;Other important components in this configuration is the view resolvers. I
create three view resolvers - two of the SingleViewViewResolver type (more on
that &lt;a href="#L227"&gt;soon&lt;/a&gt;) and one is an instance of Spring's
InternalResourceViewResolver. The ContentNegotiatingViewResolver will
automatically locate these three resolvers and delegate to the first one that
can serve a view with the required content type. The order of the resolvers is
important and must follow the following rules:&lt;/p&gt;
&lt;ol&gt;
  &lt;li&gt;The ContentNegotiatingViewResolver itself must be with the highest
    precedence (I set that using the
    #{T(org.springframework.core.Ordered).HIGHEST_PRECEDENCE} expression)&lt;/li&gt;
  &lt;li&gt;If more than one resolver can serve the same content type I must decide
    on their order to set my preferences&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;In my example I used Spring EL (SpEL) to explicitly set the order for the
different resolvers, starting with the ContentNegotiationResolver as the first
and continuing with the marshalling, toString and URL based view resolvers.&lt;/p&gt;

&lt;p&gt;&lt;/p&gt;

&lt;h4&gt;&lt;a name="L227" id="L227"&gt;&lt;/a&gt;What is the SingleViewViewResolver?&lt;/h4&gt;

&lt;p&gt;I have two "generic views" - toString and XML, both are generated
automatically using a view instance (ToStringView and MarshallingView) without
a need for any concrete JSP or other template. I wanted to have an easy way to
dispatch these views based on their bean names. But here is a catch - my
controller returns the "usersListView" as the next view, but I can have only
&lt;em&gt;one&lt;/em&gt; bean named "usersListView" in my context, meaning that I cannot
use the BeanNameViewResolver. One alternative - which was mentioned earlier -
is to return a custom view name from the controller ("usersListViewXML" and
"usersListViewToString") and to create two different beans (or actually to
alias two generic beans with the concrete view name - for example a
"toStringView" generic bean can be aliased as "usersListViewToString"). I
choose a different way: I wrote a small view resolver which wraps one view and
always returns it. By wrapping my views in a resolver I can register them into
the ContentNegotiatingViewResolver and have them participating in the view
selection process. &lt;/p&gt;

&lt;br/&gt;
&lt;center&gt;
&lt;script type="text/javascript"&gt;&lt;!--
google_ad_client = "pub-7548643028974164";
google_ad_width = 468;
google_ad_height = 60;
google_ad_format = "468x60_as";
google_ad_type = "image";
google_ad_channel = "";
google_color_border = "9191CD";
google_color_bg = "FFFFFF";
google_color_link = "0000FF";
google_color_text = "000000";
google_color_url = "008000";
//--&gt;&lt;/script&gt;
&lt;script type="text/javascript"
  src="http://pagead2.googlesyndication.com/pagead/show_ads.js"&gt;
&lt;/script&gt;
&lt;/center&gt;
&lt;br/&gt;

&lt;h3&gt;Putting It All Together&lt;/h3&gt;

&lt;p&gt;Let's assume that the following request arrives to my server:
http://localhost:8080/spring30/rest/users/e.xml. What would happen?&lt;/p&gt;
&lt;ol&gt;
  &lt;li&gt;The DispatcherServlet will forward the request to my controller
    (UsersController)&lt;/li&gt;
  &lt;li&gt;The users controller will find all of the users starting with 'e' put
    them in the model and select the "usersListView" as the next view&lt;/li&gt;
  &lt;li&gt;The first resolver Spring MVC consults is ContentNegotiatingViewResolver
    (since it has the highest priority)&lt;/li&gt;
  &lt;li&gt;The resolver figures out that the request media type is 'application/xml'
    and it starts to iterate and interview other resolvers (by their order)&lt;/li&gt;
  &lt;li&gt;The first resolver interviewed is the instance of SingleViewViewResolver
    which wraps the MarshallingView, it returns that view &lt;/li&gt;
  &lt;li&gt;The ContentNegotiationViewResolver checks to see if that view supports
    the 'application/xml' media type - it is&lt;/li&gt;
  &lt;li&gt;The request is forward to the SingleViewViewResolver which will forward
    it to the MarshallingView&lt;/li&gt;
  &lt;li&gt;The marshaling view creates the XML and returns it to the client&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;If the request would end with .html both instance of SingleViewViewResolver
would fail to return a view which satisfies the need for a 'text/html' media
type and the third view resolver would be invoked. This resolver dispatches the
request to 'usersListView.jsp' which renders the response as an HTML page.&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/jroller/frontpage/~4/BTtKKl0BLA0" height="1" width="1"/&gt;</description>          <feedburner:origLink>http://www.jroller.com/eyallupu/entry/content_negotiation_using_spring_mvc</feedburner:origLink></item>
    <item>
    <guid isPermaLink="false">http://www.jroller.com/francoisledroff/entry/demain_soir%C3%A9e_ria_flex_et</guid>
    <title>Demain Soirée RIA (Flex et JavaFX) au ParisJUG </title>
    <dc:creator>Le Droff</dc:creator>
    <link>http://feeds.dzone.com/~r/jroller/frontpage/~3/svNU7nZsXOQ/demain_soir%C3%A9e_ria_flex_et</link>
        <pubDate>Mon, 6 Jul 2009 03:32:39 -0400</pubDate>
    <category>Java</category>
    <category>adobe</category>
    <category>flex</category>
    <category>java</category>
    <category>parisjug</category>
            <description>&lt;p&gt;Je serai présent demain soir au &lt;a href="http://www.parisjug.org/xwiki/bin/view/Main/" target="_blank"&gt;Paris JUG&lt;/a&gt;, le groupe d'utilisateurs du langage Java qui se
retrouve mensuellement à Paris.&lt;/p&gt;

&lt;p&gt;La conf. aura lieu dans les locaux de l'&lt;a href="http://www.parisjug.org/xwiki/bin/view/Location/ISEP" target="_blank"&gt;ISEP&lt;/a&gt; à partir 19h30.&lt;/p&gt;

&lt;p lang="fr-FR"&gt;&lt;b&gt;&lt;strong&gt;&lt;a href="http://www.jugevents.org/jugevents/event/show.html?id=17909" target="_blank"&gt;N'oubliez
pas de vous inscrire&lt;/a&gt; !&lt;/strong&gt;&lt;/b&gt;&lt;/p&gt;

&lt;p&gt;Ma présentation vous donnera (je l'espère &lt;img src="http://www.jroller.com/images/smileys/smile.gif" class="smiley" alt=":-)" title=":-)" /&gt; ) un bon aperçu des
possibilités offertes par le framework Flex et son écosystème
pour la création de &lt;a href="http://fr.wikipedia.org/wiki/Rich_Internet_Application" target="_blank"&gt;RIA&lt;/a&gt;
d’entreprise dans un "environnement" Java/JEE, ceci notamment à
travers démonstrations et découvertes des dernières
nouveautés des solutions Adobe : &lt;a href="http://www.springsource.org/spring-flex" target="_blank"&gt;Spring-Flex&lt;/a&gt;,
&lt;a href="http://labs.adobe.com/technologies/livecycle_dataservices3/" target="_blank"&gt;LCDS3&lt;/a&gt;,
&lt;a href="http://opensource.adobe.com/wiki/display/flexsdk/Flex+SDK" target="_blank"&gt;Flex4&lt;/a&gt;,
&lt;a href="http://labs.adobe.com/technologies/flashbuilder4/" target="_blank"&gt;FlashBuilder4&lt;/a&gt;
et &lt;a href="http://labs.adobe.com/technologies/flashcatalyst/" target="_blank"&gt;FlashCatalyst&lt;/a&gt;).
&lt;/p&gt;

&lt;p&gt;A demain !&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/jroller/frontpage/~4/svNU7nZsXOQ" height="1" width="1"/&gt;</description>          <feedburner:origLink>http://www.jroller.com/francoisledroff/entry/demain_soir%C3%A9e_ria_flex_et</feedburner:origLink></item>
    <item>
    <guid isPermaLink="false">http://www.jroller.com/dmdevito/entry/javaspace_into_javaee_the_semispace</guid>
    <title>JavaSpace into JavaEE: the SemiSpace example</title>
    <dc:creator>Dominique De Vito</dc:creator>
    <link>http://feeds.dzone.com/~r/jroller/frontpage/~3/DFkpBomh3Rs/javaspace_into_javaee_the_semispace</link>
        <pubDate>Mon, 6 Jul 2009 03:01:25 -0400</pubDate>
    <category>Developer</category>
            <description>&lt;p&gt;
I have written into my post
&lt;a href="http://www.jroller.com/dmdevito/entry/7_good_reasons_to_have"&gt;7 good 
	reasons to have a second look at Jini, and what is coming next&lt;/a&gt;, 
into the conclusion: 
"I would like to see a JavaSpace-like included into Java EE".
Well, the JavaSpace specification is not yet part of Java EE.
But I have seen recently an interesting announcement:
&lt;a href="http://www.theserverside.com/news/thread.tss?thread_id=55069"&gt;SemiSpace: 
an open source JavaSpaces inspired tuple space&lt;/a&gt;:
"&lt;i&gt;&lt;a href="http://www.semispace.org"&gt;SemiSpace&lt;/a&gt; 
is a light weight open source interpretation of &lt;a href="http://www.wikipedia.org/wiki/tuple_space"&gt;Tuple 
Space / Object Space&lt;/a&gt; based on ideas 
from &lt;a href="http://www.jini.org/wiki/JavaSpaces_Specification"&gt;JavaSpaces&lt;/a&gt;. 
The library can be included as single, stand alone, 
space in a &lt;a href="http://java.sun.com/j2se/1.5.0/"&gt;Java SE 1.5.x&lt;/a&gt; (or greater) 
application, or clustered with &lt;a href="http://www.terracotta.org"&gt;Terracotta&lt;/a&gt;. 
The source and binaries can be found in the &lt;a href="http://maven.apache.org"&gt;Maven&lt;/a&gt; 
repository, and can be included in your project with a simple Maven dependency&lt;/i&gt;".
&lt;/p&gt;

&lt;p&gt;
The more interesting point is: "&lt;i&gt;SemiSpace does not need Jini installed... 
as SemiSpace does not use Jini&lt;/i&gt;". 
Quite a good way
to spread JavaSpace technology. 
&lt;/p&gt;

&lt;p&gt;
What I really like
with JavaSpace is that it matches 
quite well different use cases.
I have already mentioned one in
&lt;a href="http://www.jroller.com/dmdevito/entry/javaspaces_an_interesting_technology_for"&gt;JavaSpaces, 
	an interesting technology for doing ESB or SOA&lt;/a&gt;.
	The workflow use case is another good candidate for 
	leveraging JavaSpace technology:
&lt;br/&gt;
- the current workflow context could be put into a JavaSpace, as it provides a (simple) storage mechanism,
&lt;br/&gt;
- workers could be notified through events 
when context objects into the JavaSpace match a given (state) template,
&lt;br/&gt;
- only one worker can take a (context) object into a JavaSpace,
then 
only one workflow transition could be executed at any time.
&lt;/p&gt;

&lt;p&gt;
It looks like
quite better
than defining 
a mapping O/R for saving the context object 
into a relational database,
using a custom mechanism for pooling context changes,
and supporting a locking mechanism for prohibiting concurrent access.
&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/jroller/frontpage/~4/DFkpBomh3Rs" height="1" width="1"/&gt;</description>          <feedburner:origLink>http://www.jroller.com/dmdevito/entry/javaspace_into_javaee_the_semispace</feedburner:origLink></item>
    <item>
    <guid isPermaLink="false">http://www.jroller.com/xtecuan/entry/structure_and_interpretation_of_computer</guid>
    <title>Structure and Interpretation of Computer Programs</title>
    <dc:creator>Julian Rivera Pineda</dc:creator>
    <link>http://feeds.dzone.com/~r/jroller/frontpage/~3/u_NlMTcQipU/structure_and_interpretation_of_computer</link>
        <pubDate>Mon, 6 Jul 2009 02:50:30 -0400</pubDate>
    <category>Java</category>
            <description>&lt;a href="http://mitpress.mit.edu/sicp/full-text/book/book-Z-H-1.html#titlepage"&gt;&lt;img style="max-width: 800px;" src="http://xtecuannet.ath.cx:8084/roller/xtecuan/resource/coverStructureandInterpretation.jpg" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;a href="http://mitpress.mit.edu/sicp/full-text/book/book-Z-H-1.html#titlepage"&gt;http://mitpress.mit.edu/sicp/full-text/book/book.html&lt;br /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;img src="http://feeds.feedburner.com/~r/jroller/frontpage/~4/u_NlMTcQipU" height="1" width="1"/&gt;</description>          <feedburner:origLink>http://www.jroller.com/xtecuan/entry/structure_and_interpretation_of_computer</feedburner:origLink></item>
    <item>
    <guid isPermaLink="false">http://www.jroller.com/aalmiray/entry/gfxbuilder_update_custom_nodes</guid>
    <title>GfxBuilder update: custom nodes</title>
    <dc:creator>Andres Almiray</dc:creator>
    <link>http://feeds.dzone.com/~r/jroller/frontpage/~3/0lUpToK1tzE/gfxbuilder_update_custom_nodes</link>
        <pubDate>Mon, 6 Jul 2009 00:08:02 -0400</pubDate>
    <category>Groovy</category>
    <category>gfx</category>
    <category>gfxbuilder</category>
    <category>graphics</category>
    <category>griffon</category>
    <category>groovy</category>
    <category>swing</category>
            <description>A quick update of what is now available on GfxBuilder:&lt;ul&gt;
&lt;li&gt;Border paints and multi paints are back! here is a small &lt;a href="http://groovy.dzone.com/articles/graphicsbuilder-tutorial-iii-p"&gt;how-to on paints&lt;/a&gt;.&lt;/li&gt;
&lt;li&gt;All strokes classes from Jerry Huxtable's collection are back too, plus a few additions from Jeremy @ &lt;a href="http://javagraphics.blogspot.com/"&gt;Java Graphics: Code Snippets&lt;/a&gt;. Here is another small &lt;a href="http://groovy.dzone.com/articles/graphicsbuilder-tutorial-iv-st"&gt;how-to on strokes&lt;/a&gt;.&lt;/li&gt;
&lt;li&gt;Most important of all: Custom Nodes!&lt;/li&gt;
&lt;/ul&gt;ut 
I'm very excited about the availability of custom nodes because making them in the past was nigh impossible, thanks in part to AST transformations that no longer is true. Let's revisit the Sphere multi-paint example, if you recall the code from than sample (follow the paint tutorial for a quick memory refreshment) you will notice that a sphere can be drawn using a circle and 3 gradients, well here is the updated version using custom nodes, first an image is worth a thousand words&lt;br/&gt;&lt;br/&gt;&lt;center&gt;&lt;img src="http://www.jroller.com/aalmiray/resource/gfxbuilder-spheres.png"/&gt;&lt;/center&gt;&lt;br/&gt;&lt;br/&gt;Now for the code itself&lt;br/&gt;&lt;textarea name="srccode" class="groovy:nocontrols:nogutter" cols="80" rows="70"&gt;import groovy.swing.SwingBuilder
import griffon.builder.gfx.*
import griffon.builder.gfx.swing.GfxPanel
import java.awt.Color

class SphereNode extends CustomGfxNode {
  @GfxAttribute(alias="r") double radius = 90
  @GfxAttribute double cx = 100
  @GfxAttribute double cy = 100
  @GfxAttribute Color base     = Colors.get("blue")
  @GfxAttribute Color ambient  = Colors.get(r: 6,  g: 76,  b: 160, a: 127)
  @GfxAttribute Color specular = Colors.get(r: 64, g: 142, b: 203, a: 255)
  @GfxAttribute Color shine    = Colors.get("white")

  SphereNode() {
    super("sphere")
  }

  Drawable createNode(GfxBuilder builder) {
    double height = radius * 2
    builder.group(borderColor: 'none') {
      circle(cx: cx, cy: cy, radius: radius, fill: base)
      circle(cx: cx, cy: cy, radius: radius) {
        multiPaint {
          radialGradient(radius: radius) {
            stop(offset: 0.0f, color: ambient)
            stop(offset: 1.0f, color: rgba(alpha: 204))
          }
          radialGradient(cy: cy + (height*0.9),
                         fy: cy + (height*1.1)+20,
                         radius: radius) {
            stop(offset: 0.0f, color: specular)
            stop(offset: 0.8f, color: specular.derive(alpha: 0))
            transforms{ scale(y: 0.5) }
          }
          radialGradient(fit: false, fx: 55, fy: 35, radius: height/1.4){
            stop(offset: 0.0f, color: shine.derive(alpha:0.5))
            stop(offset: 0.5f, color: shine.derive(alpha:0))
          }
        }
      }
    }
  }
}

def gfx = new GfxBuilder()
def node = gfx.group() {
  antialias true
  background(color('white'))
  customNode(SphereNode)
  customNode(SphereNode, cx: 300,
    base: color('red'),
    ambient:  Colors.get(r: 160, g: 76,  b: 6,  a: 127),
    specular: Colors.get(r: 203, g: 64, b: 64, a: 255))
  customNode(SphereNode, cy: 300,
    base: color('green'),
    ambient:  Colors.get(r: 160, g: 76,  b: 6,  a: 127),
    specular: Colors.get(r: 64, g: 250, b: 64, a: 255))
  customNode(SphereNode, cx: 300, cy: 300,
    base: color('orange'),
    ambient:  Colors.get(r: 160, g: 76,  b: 6,  a: 127),
    specular: Colors.get(r: 203, g: 203, b: 64, a: 255))
}

def swing = new SwingBuilder()
swing.edt {
  frame(title: "Sphere", size: [410,430], visible: true) {
    panel(new GfxPanel(), id: "canvas", node: node)
  }
}&lt;/textarea&gt;The SphereNode exposes 7 attributes to the outside world using &lt;tt&gt;@GfxAttribute&lt;/tt&gt;. This particular annotation is &lt;tt&gt;@Bindable&lt;/tt&gt;'s long lost sibling, it not only performs the same task &lt;tt&gt;@Bindable&lt;/tt&gt; does (making a property an observable one) but it also is able to write an aliased property, this means you can either set a value for the &lt;tt&gt;radius:&lt;/tt&gt; property or &lt;tt&gt;r:&lt;/tt&gt; property (shortcuts!), it doesn't matter as the backing field will be updated accordingly. The node sets some default values for those attributes, those values match the settings for the blue sphere. Moving on to the actual drawing code of the node, it is pretty much the same one found in the painting how-to plus a few tweaks to have all gradients be relative to the node's location. Notice that the radial gradients are now aware of its host's dimensions, this is why setting values for &lt;tt&gt;cx:&lt;/tt&gt; and &lt;tt&gt;cy:&lt;/tt&gt; is now optional.&lt;br/&gt;&lt;br/&gt;Drawing 4 spheres is just a matter of setting the appropriate coordinates (cx,cy) and tweaking some of the colors, otherwise we will have a drawing of 4 blue spheres in the same place! There are two ways for adding a custom node to an &lt;i&gt;scene&lt;/i&gt;, by defining the node's class as the value of &lt;tt&gt;customNode()&lt;/tt&gt; or passing an instance of a subclass of CustomNode to &lt;tt&gt;customNode()&lt;/tt&gt;, in the end there is not much difference, the builder makes sure your nodes have the proper attribute values set before they are rendered.&lt;br/&gt;&lt;br/&gt;Keep on Groovying!&lt;img src="http://feeds.feedburner.com/~r/jroller/frontpage/~4/0lUpToK1tzE" height="1" width="1"/&gt;</description>          <feedburner:origLink>http://www.jroller.com/aalmiray/entry/gfxbuilder_update_custom_nodes</feedburner:origLink></item>
    <item>
    <guid isPermaLink="false">http://www.jroller.com/dmdevito/entry/the_future_of_the_programming</guid>
    <title>The future of the programming language: an interesting summarizing presentation</title>
    <dc:creator>Dominique De Vito</dc:creator>
    <link>http://feeds.dzone.com/~r/jroller/frontpage/~3/sEPynmOAOgk/the_future_of_the_programming</link>
        <pubDate>Sun, 5 Jul 2009 16:22:19 -0400</pubDate>
    <category>Developer</category>
            <description>&lt;p&gt;
&lt;a href="http://www.coderfriendly.com"&gt;coder-friendly&lt;/a&gt;
has written
about
&lt;a href=""&gt;What about Java?&lt;/a&gt;
after watching the video of 
"&lt;a href="http://java.dzone.com/videos/future-programming-languages"&gt;The future of the programming language&lt;/a&gt;". 
This presentation was led by 
&lt;a href="http://en.wikipedia.org/wiki/Anders_Hejlsberg"&gt;Anders Hejlsberg&lt;/a&gt;, 
the architect of C#; quite an interesting presentation for getting a summary. 
&lt;/p&gt;

&lt;p&gt;
&lt;a href="http://www.coderfriendly.com"&gt;coder-friendly&lt;/a&gt;
gave a nice summary about the video:&lt;br/&gt;
(1) &lt;i&gt;the Domain Specific Language (&lt;a href="http://www.infoq.com/presentations/domain-specific-languages"&gt;internal 
and external DSL&lt;/a&gt;)&lt;/i&gt;&lt;br/&gt;
(2) &lt;i&gt;the declarative aspect (concentrate on the 'what' and not on the 'how')&lt;/i&gt;&lt;br/&gt;
(3) &lt;i&gt;the convergence between &lt;a href="http://en.wikipedia.org/wiki/Static_typing#Static_typing"&gt;static&lt;/a&gt; and 
	&lt;a href="http://en.wikipedia.org/wiki/Static_typing#Dynamic_typing"&gt;dynamic&lt;/a&gt; languages&lt;/i&gt;&lt;br/&gt;
(4) &lt;i&gt;the emergence of &lt;a href="http://en.wikipedia.org/wiki/Functional_programming"&gt;functional languages&lt;/a&gt; 
	(imperative ones are not appropriated to multi-threading processing)&lt;/i&gt;&lt;br/&gt;
&lt;/p&gt;

&lt;p&gt;
I am quite inline/agree with the 4 points.
So, I like this informative summary.
&lt;/p&gt;

&lt;p&gt;
Let's enter into more details:&lt;br/&gt;
(1) almost everybody has noticed the rise of DSL out there. 
I can add some languages are more suitable than others for building DSL, 
like the following ones derived from Java: Groovy and Scala&lt;br/&gt;
(2) the introduction of annotations, into a mainstream language like Java, is the beginning of the declarative road&lt;br/&gt;
(3) static and dynamic languages do converge, and 
&lt;a href="http://en.wikipedia.org/wiki/Anders_Hejlsberg"&gt;Anders Hejlsberg&lt;/a&gt;
mentioned type inference is helping to fill the gap between typeless programming for dynamic languages
and strong typing for static languages;
for another example, read my post about JS and Java: 
&lt;a href="http://www.jroller.com/dmdevito/entry/a_false_piece_of_news"&gt;A 
false piece of news may become real as Java and JS move closer&lt;/a&gt; 
&lt;br/&gt;
(4) and, yes, functional languages do emerge. Java, and more than that, C#, 
have more and more functional features. I have written old posts (in 2005) about it: 
&lt;a href="http://www.jroller.com/dmdevito/entry/thoughts_about_java_c_future"&gt;Thoughts about Java, C# future and OCaml (?) relationships&lt;/a&gt;,
and
&lt;a href="http://www.jroller.com/dmdevito/entry/more_ramblings_on_programming_languages"&gt;More ramblings on programming languages&lt;/a&gt;
and more recently 
&lt;a href="http://www.jroller.com/dmdevito/entry/functional_programming_on_going_adoption"&gt;Functional 
programming on-going adoption as a side-effect&lt;/a&gt;
&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/jroller/frontpage/~4/sEPynmOAOgk" height="1" width="1"/&gt;</description>          <feedburner:origLink>http://www.jroller.com/dmdevito/entry/the_future_of_the_programming</feedburner:origLink></item>
    <item>
    <guid isPermaLink="false">http://www.jroller.com/ethdsy/entry/least_squares</guid>
    <title>Least Squares</title>
    <dc:creator>David Shay</dc:creator>
    <link>http://feeds.dzone.com/~r/jroller/frontpage/~3/xx1o0Ci7DC4/least_squares</link>
        <pubDate>Sun, 5 Jul 2009 16:12:38 -0400</pubDate>
    <category>Java</category>
            <description>A month ago, I posted an entry about &lt;a href="http://www.jroller.com/ethdsy/entry/gauss_jordan_resolution_and_parabolas"&gt;Quadratic Interpolation&lt;/a&gt;. Reading further my math book, I found an explanation about the method of Least Square approximation, where I could improve further my program by giving any number of points, and finding a polynomial function of a given degree that would go as close as possible to all the points. Using 9 points and a polynomial function of degree 3, I have the following drawing:
&lt;p&gt;&lt;img src="http://www.jroller.com/ethdsy/resource/games/leastsquares.JPG"/&gt;&lt;p&gt;
The theory is to solve the following matrix system: &lt;b&gt;A&lt;sup&gt;T&lt;/sup&gt;Ax = A&lt;sup&gt;T&lt;/sup&gt;b&lt;/b&gt;
&lt;p&gt;Here, the matrix A contains on each line the X values of the points at increasing power (0 at column 0, 1 at column 1, ...) until the desired power of the polynomial function. The vector b contains the Y values of the points. For the calculation, I only need to replace my Parabole class with another one I called GeneralEquation:
&lt;pre&gt;
&lt;font color="#7f0055"&gt;&lt;b&gt;import&amp;nbsp;&lt;/b&gt;&lt;/font&gt;&lt;font color="#000000"&gt;java.awt.Point;&lt;/font&gt;
&lt;font color="#7f0055"&gt;&lt;b&gt;import&amp;nbsp;&lt;/b&gt;&lt;/font&gt;&lt;font color="#000000"&gt;java.util.Arrays;&lt;/font&gt;
&lt;font color="#7f0055"&gt;&lt;b&gt;import&amp;nbsp;static&amp;nbsp;&lt;/b&gt;&lt;/font&gt;&lt;font color="#000000"&gt;ethdsy.parabole.GeneralParameters.*;&lt;/font&gt;
&lt;font color="#ffffff"&gt;&lt;/font&gt;
&lt;font color="#7f0055"&gt;&lt;b&gt;public&amp;nbsp;class&amp;nbsp;&lt;/b&gt;&lt;/font&gt;&lt;font color="#000000"&gt;GeneralEquation&lt;/font&gt;
&lt;font color="#000000"&gt;{&lt;/font&gt;
&lt;font color="#ffffff"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/font&gt;&lt;font color="#7f0055"&gt;&lt;b&gt;private&amp;nbsp;&lt;/b&gt;&lt;/font&gt;&lt;font color="#000000"&gt;LinearSolve&amp;nbsp;solver&amp;nbsp;=&amp;nbsp;&lt;/font&gt;&lt;font color="#7f0055"&gt;&lt;b&gt;new&amp;nbsp;&lt;/b&gt;&lt;/font&gt;&lt;font color="#000000"&gt;LinearSolve&lt;/font&gt;&lt;font color="#000000"&gt;()&lt;/font&gt;&lt;font color="#000000"&gt;;&lt;/font&gt;
&lt;font color="#ffffff"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/font&gt;&lt;font color="#7f0055"&gt;&lt;b&gt;private&amp;nbsp;&lt;/b&gt;&lt;/font&gt;&lt;font color="#000000"&gt;Matrix&amp;nbsp;matrix&amp;nbsp;=&amp;nbsp;&lt;/font&gt;&lt;font color="#7f0055"&gt;&lt;b&gt;new&amp;nbsp;&lt;/b&gt;&lt;/font&gt;&lt;font color="#000000"&gt;Matrix&lt;/font&gt;&lt;font color="#000000"&gt;(&lt;/font&gt;&lt;font color="#000000"&gt;NumberOfPoints,&amp;nbsp;DegreeOfEquation&amp;nbsp;+&amp;nbsp;&lt;/font&gt;&lt;font color="#990000"&gt;2&lt;/font&gt;&lt;font color="#000000"&gt;)&lt;/font&gt;&lt;font color="#000000"&gt;;&lt;/font&gt;
&lt;font color="#ffffff"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/font&gt;
&lt;font color="#ffffff"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/font&gt;&lt;font color="#7f0055"&gt;&lt;b&gt;public&amp;nbsp;&lt;/b&gt;&lt;/font&gt;&lt;font color="#7f0055"&gt;&lt;b&gt;void&amp;nbsp;&lt;/b&gt;&lt;/font&gt;&lt;font color="#000000"&gt;solveEquation&lt;/font&gt;&lt;font color="#000000"&gt;(&lt;/font&gt;&lt;font color="#000000"&gt;Point&lt;/font&gt;&lt;font color="#000000"&gt;[]&amp;nbsp;&lt;/font&gt;&lt;font color="#000000"&gt;points,&amp;nbsp;&lt;/font&gt;&lt;font color="#7f0055"&gt;&lt;b&gt;double&lt;/b&gt;&lt;/font&gt;&lt;font color="#000000"&gt;[]&amp;nbsp;&lt;/font&gt;&lt;font color="#000000"&gt;sol&lt;/font&gt;&lt;font color="#000000"&gt;)&lt;/font&gt;
&lt;font color="#ffffff"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/font&gt;&lt;font color="#000000"&gt;{&lt;/font&gt;
&lt;font color="#ffffff"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/font&gt;&lt;font color="#7f0055"&gt;&lt;b&gt;assert&amp;nbsp;&lt;/b&gt;&lt;/font&gt;&lt;font color="#000000"&gt;points&amp;nbsp;!=&amp;nbsp;&lt;/font&gt;&lt;font color="#7f0055"&gt;&lt;b&gt;null&amp;nbsp;&lt;/b&gt;&lt;/font&gt;&lt;font color="#000000"&gt;&amp;amp;&amp;amp;&amp;nbsp;points.length&amp;nbsp;==&amp;nbsp;NumberOfPoints;&lt;/font&gt;
&lt;font color="#ffffff"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/font&gt;&lt;font color="#7f0055"&gt;&lt;b&gt;assert&amp;nbsp;&lt;/b&gt;&lt;/font&gt;&lt;font color="#000000"&gt;sol&amp;nbsp;!=&amp;nbsp;&lt;/font&gt;&lt;font color="#7f0055"&gt;&lt;b&gt;null&amp;nbsp;&lt;/b&gt;&lt;/font&gt;&lt;font color="#000000"&gt;&amp;amp;&amp;amp;&amp;nbsp;sol.length&amp;nbsp;==&amp;nbsp;DegreeOfEquation&amp;nbsp;+&amp;nbsp;&lt;/font&gt;&lt;font color="#990000"&gt;1&lt;/font&gt;&lt;font color="#000000"&gt;;&lt;/font&gt;
&lt;font color="#ffffff"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/font&gt;
&lt;font color="#ffffff"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/font&gt;&lt;font color="#3f7f5f"&gt;//Create&amp;nbsp;Matrix&amp;nbsp;A&lt;/font&gt;
&lt;font color="#ffffff"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/font&gt;&lt;font color="#7f0055"&gt;&lt;b&gt;double&lt;/b&gt;&lt;/font&gt;&lt;font color="#000000"&gt;[][]&amp;nbsp;&lt;/font&gt;&lt;font color="#000000"&gt;matA&amp;nbsp;=&amp;nbsp;&lt;/font&gt;&lt;font color="#7f0055"&gt;&lt;b&gt;new&amp;nbsp;&lt;/b&gt;&lt;/font&gt;&lt;font color="#7f0055"&gt;&lt;b&gt;double&lt;/b&gt;&lt;/font&gt;&lt;font color="#000000"&gt;[&lt;/font&gt;&lt;font color="#000000"&gt;DegreeOfEquation&amp;nbsp;+&amp;nbsp;&lt;/font&gt;&lt;font color="#990000"&gt;1&lt;/font&gt;&lt;font color="#000000"&gt;][]&lt;/font&gt;&lt;font color="#000000"&gt;;&lt;/font&gt;
&lt;font color="#ffffff"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/font&gt;&lt;font color="#3f7f5f"&gt;//first&amp;nbsp;line&amp;nbsp;of&amp;nbsp;constant&lt;/font&gt;
&lt;font color="#ffffff"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/font&gt;&lt;font color="#000000"&gt;matA&lt;/font&gt;&lt;font color="#000000"&gt;[&lt;/font&gt;&lt;font color="#990000"&gt;0&lt;/font&gt;&lt;font color="#000000"&gt;]&amp;nbsp;&lt;/font&gt;&lt;font color="#000000"&gt;=&amp;nbsp;&lt;/font&gt;&lt;font color="#7f0055"&gt;&lt;b&gt;new&amp;nbsp;&lt;/b&gt;&lt;/font&gt;&lt;font color="#7f0055"&gt;&lt;b&gt;double&lt;/b&gt;&lt;/font&gt;&lt;font color="#000000"&gt;[&lt;/font&gt;&lt;font color="#000000"&gt;NumberOfPoints&lt;/font&gt;&lt;font color="#000000"&gt;]&lt;/font&gt;&lt;font color="#000000"&gt;;&lt;/font&gt;
&lt;font color="#ffffff"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/font&gt;&lt;font color="#000000"&gt;Arrays.fill&lt;/font&gt;&lt;font color="#000000"&gt;(&lt;/font&gt;&lt;font color="#000000"&gt;matA&lt;/font&gt;&lt;font color="#000000"&gt;[&lt;/font&gt;&lt;font color="#990000"&gt;0&lt;/font&gt;&lt;font color="#000000"&gt;]&lt;/font&gt;&lt;font color="#000000"&gt;,&amp;nbsp;&lt;/font&gt;&lt;font color="#990000"&gt;1.0&lt;/font&gt;&lt;font color="#000000"&gt;)&lt;/font&gt;&lt;font color="#000000"&gt;;&lt;/font&gt;
&lt;font color="#ffffff"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/font&gt;
&lt;font color="#ffffff"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/font&gt;&lt;font color="#3f7f5f"&gt;//second&amp;nbsp;line&amp;nbsp;with&amp;nbsp;X&lt;/font&gt;
&lt;font color="#ffffff"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/font&gt;&lt;font color="#000000"&gt;matA&lt;/font&gt;&lt;font color="#000000"&gt;[&lt;/font&gt;&lt;font color="#990000"&gt;1&lt;/font&gt;&lt;font color="#000000"&gt;]&amp;nbsp;&lt;/font&gt;&lt;font color="#000000"&gt;=&amp;nbsp;&lt;/font&gt;&lt;font color="#7f0055"&gt;&lt;b&gt;new&amp;nbsp;&lt;/b&gt;&lt;/font&gt;&lt;font color="#7f0055"&gt;&lt;b&gt;double&lt;/b&gt;&lt;/font&gt;&lt;font color="#000000"&gt;[&lt;/font&gt;&lt;font color="#000000"&gt;NumberOfPoints&lt;/font&gt;&lt;font color="#000000"&gt;]&lt;/font&gt;&lt;font color="#000000"&gt;;&lt;/font&gt;
&lt;font color="#ffffff"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/font&gt;&lt;font color="#7f0055"&gt;&lt;b&gt;for&amp;nbsp;&lt;/b&gt;&lt;/font&gt;&lt;font color="#000000"&gt;(&lt;/font&gt;&lt;font color="#7f0055"&gt;&lt;b&gt;int&amp;nbsp;&lt;/b&gt;&lt;/font&gt;&lt;font color="#000000"&gt;i&amp;nbsp;=&amp;nbsp;&lt;/font&gt;&lt;font color="#990000"&gt;0&lt;/font&gt;&lt;font color="#000000"&gt;;&amp;nbsp;i&amp;nbsp;&amp;lt;&amp;nbsp;NumberOfPoints;&amp;nbsp;i++&lt;/font&gt;&lt;font color="#000000"&gt;)&lt;/font&gt;
&lt;font color="#ffffff"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/font&gt;&lt;font color="#000000"&gt;matA&lt;/font&gt;&lt;font color="#000000"&gt;[&lt;/font&gt;&lt;font color="#990000"&gt;1&lt;/font&gt;&lt;font color="#000000"&gt;][&lt;/font&gt;&lt;font color="#000000"&gt;i&lt;/font&gt;&lt;font color="#000000"&gt;]&amp;nbsp;&lt;/font&gt;&lt;font color="#000000"&gt;=&amp;nbsp;points&lt;/font&gt;&lt;font color="#000000"&gt;[&lt;/font&gt;&lt;font color="#000000"&gt;i&lt;/font&gt;&lt;font color="#000000"&gt;]&lt;/font&gt;&lt;font color="#000000"&gt;.x;&lt;/font&gt;
&lt;font color="#ffffff"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/font&gt;
&lt;font color="#ffffff"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/font&gt;&lt;font color="#3f7f5f"&gt;//other&amp;nbsp;lines&amp;nbsp;with&amp;nbsp;power&amp;nbsp;of&amp;nbsp;x&lt;/font&gt;
&lt;font color="#ffffff"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/font&gt;&lt;font color="#7f0055"&gt;&lt;b&gt;for&amp;nbsp;&lt;/b&gt;&lt;/font&gt;&lt;font color="#000000"&gt;(&lt;/font&gt;&lt;font color="#7f0055"&gt;&lt;b&gt;int&amp;nbsp;&lt;/b&gt;&lt;/font&gt;&lt;font color="#000000"&gt;i&amp;nbsp;=&amp;nbsp;&lt;/font&gt;&lt;font color="#990000"&gt;2&lt;/font&gt;&lt;font color="#000000"&gt;;&amp;nbsp;i&amp;nbsp;&amp;lt;=&amp;nbsp;DegreeOfEquation;&amp;nbsp;i++&lt;/font&gt;&lt;font color="#000000"&gt;)&lt;/font&gt;
&lt;font color="#ffffff"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/font&gt;&lt;font color="#000000"&gt;{&lt;/font&gt;
&lt;font color="#ffffff"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/font&gt;&lt;font color="#000000"&gt;matA&lt;/font&gt;&lt;font color="#000000"&gt;[&lt;/font&gt;&lt;font color="#000000"&gt;i&lt;/font&gt;&lt;font color="#000000"&gt;]&amp;nbsp;&lt;/font&gt;&lt;font color="#000000"&gt;=&amp;nbsp;&lt;/font&gt;&lt;font color="#7f0055"&gt;&lt;b&gt;new&amp;nbsp;&lt;/b&gt;&lt;/font&gt;&lt;font color="#7f0055"&gt;&lt;b&gt;double&lt;/b&gt;&lt;/font&gt;&lt;font color="#000000"&gt;[&lt;/font&gt;&lt;font color="#000000"&gt;NumberOfPoints&lt;/font&gt;&lt;font color="#000000"&gt;]&lt;/font&gt;&lt;font color="#000000"&gt;;&lt;/font&gt;
&lt;font color="#ffffff"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/font&gt;&lt;font color="#7f0055"&gt;&lt;b&gt;for&amp;nbsp;&lt;/b&gt;&lt;/font&gt;&lt;font color="#000000"&gt;(&lt;/font&gt;&lt;font color="#7f0055"&gt;&lt;b&gt;int&amp;nbsp;&lt;/b&gt;&lt;/font&gt;&lt;font color="#000000"&gt;j&amp;nbsp;=&amp;nbsp;&lt;/font&gt;&lt;font color="#990000"&gt;0&lt;/font&gt;&lt;font color="#000000"&gt;;&amp;nbsp;j&amp;nbsp;&amp;lt;&amp;nbsp;NumberOfPoints;&amp;nbsp;j++&lt;/font&gt;&lt;font color="#000000"&gt;)&lt;/font&gt;
&lt;font color="#ffffff"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/font&gt;&lt;font color="#000000"&gt;matA&lt;/font&gt;&lt;font color="#000000"&gt;[&lt;/font&gt;&lt;font color="#000000"&gt;i&lt;/font&gt;&lt;font color="#000000"&gt;][&lt;/font&gt;&lt;font color="#000000"&gt;j&lt;/font&gt;&lt;font color="#000000"&gt;]&amp;nbsp;&lt;/font&gt;&lt;font color="#000000"&gt;=&amp;nbsp;matA&lt;/font&gt;&lt;font color="#000000"&gt;[&lt;/font&gt;&lt;font color="#000000"&gt;i-&lt;/font&gt;&lt;font color="#990000"&gt;1&lt;/font&gt;&lt;font color="#000000"&gt;][&lt;/font&gt;&lt;font color="#000000"&gt;j&lt;/font&gt;&lt;font color="#000000"&gt;]&amp;nbsp;&lt;/font&gt;&lt;font color="#000000"&gt;*&amp;nbsp;points&lt;/font&gt;&lt;font color="#000000"&gt;[&lt;/font&gt;&lt;font color="#000000"&gt;j&lt;/font&gt;&lt;font color="#000000"&gt;]&lt;/font&gt;&lt;font color="#000000"&gt;.x;&lt;/font&gt;
&lt;font color="#ffffff"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/font&gt;&lt;font color="#000000"&gt;}&lt;/font&gt;
&lt;font color="#ffffff"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/font&gt;
&lt;font color="#ffffff"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/font&gt;&lt;font color="#3f7f5f"&gt;//Calculate&amp;nbsp;AtA&lt;/font&gt;
&lt;font color="#ffffff"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/font&gt;&lt;font color="#000000"&gt;computeAtA&lt;/font&gt;&lt;font color="#000000"&gt;(&lt;/font&gt;&lt;font color="#000000"&gt;matA&lt;/font&gt;&lt;font color="#000000"&gt;)&lt;/font&gt;&lt;font color="#000000"&gt;;&lt;/font&gt;
&lt;font color="#ffffff"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/font&gt;
&lt;font color="#ffffff"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/font&gt;&lt;font color="#3f7f5f"&gt;//calculate&amp;nbsp;Atb&lt;/font&gt;
&lt;font color="#ffffff"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/font&gt;&lt;font color="#000000"&gt;computeAtb&lt;/font&gt;&lt;font color="#000000"&gt;(&lt;/font&gt;&lt;font color="#000000"&gt;matA,&amp;nbsp;points&lt;/font&gt;&lt;font color="#000000"&gt;)&lt;/font&gt;&lt;font color="#000000"&gt;;&lt;/font&gt;
&lt;font color="#ffffff"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/font&gt;
&lt;font color="#ffffff"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/font&gt;&lt;font color="#3f7f5f"&gt;//solve&lt;/font&gt;
&lt;font color="#ffffff"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/font&gt;&lt;font color="#000000"&gt;solver.solve&lt;/font&gt;&lt;font color="#000000"&gt;(&lt;/font&gt;&lt;font color="#000000"&gt;matrix,&amp;nbsp;&lt;/font&gt;&lt;font color="#7f0055"&gt;&lt;b&gt;false&lt;/b&gt;&lt;/font&gt;&lt;font color="#000000"&gt;)&lt;/font&gt;&lt;font color="#000000"&gt;;&lt;/font&gt;
&lt;font color="#ffffff"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/font&gt;
&lt;font color="#ffffff"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/font&gt;&lt;font color="#7f0055"&gt;&lt;b&gt;int&amp;nbsp;&lt;/b&gt;&lt;/font&gt;&lt;font color="#000000"&gt;lastCol&amp;nbsp;=&amp;nbsp;matrix.getNbCol&lt;/font&gt;&lt;font color="#000000"&gt;()&amp;nbsp;&lt;/font&gt;&lt;font color="#000000"&gt;-&amp;nbsp;&lt;/font&gt;&lt;font color="#990000"&gt;1&lt;/font&gt;&lt;font color="#000000"&gt;;&lt;/font&gt;
&lt;font color="#ffffff"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/font&gt;&lt;font color="#7f0055"&gt;&lt;b&gt;for&amp;nbsp;&lt;/b&gt;&lt;/font&gt;&lt;font color="#000000"&gt;(&lt;/font&gt;&lt;font color="#7f0055"&gt;&lt;b&gt;int&amp;nbsp;&lt;/b&gt;&lt;/font&gt;&lt;font color="#000000"&gt;i&amp;nbsp;=&amp;nbsp;&lt;/font&gt;&lt;font color="#990000"&gt;0&lt;/font&gt;&lt;font color="#000000"&gt;;&amp;nbsp;i&amp;nbsp;&amp;lt;&amp;nbsp;sol.length;&amp;nbsp;i++&lt;/font&gt;&lt;font color="#000000"&gt;)&lt;/font&gt;
&lt;font color="#ffffff"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/font&gt;&lt;font color="#000000"&gt;sol&lt;/font&gt;&lt;font color="#000000"&gt;[&lt;/font&gt;&lt;font color="#000000"&gt;i&lt;/font&gt;&lt;font color="#000000"&gt;]&amp;nbsp;&lt;/font&gt;&lt;font color="#000000"&gt;=&amp;nbsp;matrix.get&lt;/font&gt;&lt;font color="#000000"&gt;(&lt;/font&gt;&lt;font color="#000000"&gt;i,&amp;nbsp;lastCol&lt;/font&gt;&lt;font color="#000000"&gt;)&lt;/font&gt;&lt;font color="#000000"&gt;;&lt;/font&gt;
&lt;font color="#ffffff"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/font&gt;&lt;font color="#000000"&gt;}&lt;/font&gt;
&lt;font color="#ffffff"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/font&gt;
&lt;font color="#ffffff"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/font&gt;&lt;font color="#7f0055"&gt;&lt;b&gt;private&amp;nbsp;&lt;/b&gt;&lt;/font&gt;&lt;font color="#7f0055"&gt;&lt;b&gt;void&amp;nbsp;&lt;/b&gt;&lt;/font&gt;&lt;font color="#000000"&gt;computeAtb&lt;/font&gt;&lt;font color="#000000"&gt;(&lt;/font&gt;&lt;font color="#7f0055"&gt;&lt;b&gt;double&lt;/b&gt;&lt;/font&gt;&lt;font color="#000000"&gt;[][]&amp;nbsp;&lt;/font&gt;&lt;font color="#000000"&gt;matA,&amp;nbsp;Point&lt;/font&gt;&lt;font color="#000000"&gt;[]&amp;nbsp;&lt;/font&gt;&lt;font color="#000000"&gt;points&lt;/font&gt;&lt;font color="#000000"&gt;)&lt;/font&gt;
&lt;font color="#ffffff"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/font&gt;&lt;font color="#000000"&gt;{&lt;/font&gt;
&lt;font color="#ffffff"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/font&gt;&lt;font color="#7f0055"&gt;&lt;b&gt;int&amp;nbsp;&lt;/b&gt;&lt;/font&gt;&lt;font color="#000000"&gt;col&amp;nbsp;=&amp;nbsp;DegreeOfEquation&amp;nbsp;+&amp;nbsp;&lt;/font&gt;&lt;font color="#990000"&gt;1&lt;/font&gt;&lt;font color="#000000"&gt;;&lt;/font&gt;
&lt;font color="#ffffff"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/font&gt;&lt;font color="#7f0055"&gt;&lt;b&gt;for&amp;nbsp;&lt;/b&gt;&lt;/font&gt;&lt;font color="#000000"&gt;(&lt;/font&gt;&lt;font color="#7f0055"&gt;&lt;b&gt;int&amp;nbsp;&lt;/b&gt;&lt;/font&gt;&lt;font color="#000000"&gt;i&amp;nbsp;=&amp;nbsp;&lt;/font&gt;&lt;font color="#990000"&gt;0&lt;/font&gt;&lt;font color="#000000"&gt;;&amp;nbsp;i&amp;nbsp;&amp;lt;&amp;nbsp;matA.length;&amp;nbsp;i++&lt;/font&gt;&lt;font color="#000000"&gt;)&lt;/font&gt;
&lt;font color="#ffffff"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/font&gt;&lt;font color="#000000"&gt;{&lt;/font&gt;
&lt;font color="#ffffff"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/font&gt;&lt;font color="#7f0055"&gt;&lt;b&gt;double&lt;/b&gt;&lt;/font&gt;&lt;font color="#000000"&gt;[]&amp;nbsp;&lt;/font&gt;&lt;font color="#000000"&gt;row&amp;nbsp;=&amp;nbsp;matA&lt;/font&gt;&lt;font color="#000000"&gt;[&lt;/font&gt;&lt;font color="#000000"&gt;i&lt;/font&gt;&lt;font color="#000000"&gt;]&lt;/font&gt;&lt;font color="#000000"&gt;;&lt;/font&gt;
&lt;font color="#ffffff"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/font&gt;&lt;font color="#7f0055"&gt;&lt;b&gt;double&amp;nbsp;&lt;/b&gt;&lt;/font&gt;&lt;font color="#000000"&gt;sum&amp;nbsp;=&amp;nbsp;&lt;/font&gt;&lt;font color="#990000"&gt;0&lt;/font&gt;&lt;font color="#000000"&gt;;&lt;/font&gt;
&lt;font color="#ffffff"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/font&gt;
&lt;font color="#ffffff"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/font&gt;&lt;font color="#7f0055"&gt;&lt;b&gt;for&amp;nbsp;&lt;/b&gt;&lt;/font&gt;&lt;font color="#000000"&gt;(&lt;/font&gt;&lt;font color="#7f0055"&gt;&lt;b&gt;int&amp;nbsp;&lt;/b&gt;&lt;/font&gt;&lt;font color="#000000"&gt;j&amp;nbsp;=&amp;nbsp;&lt;/font&gt;&lt;font color="#990000"&gt;0&lt;/font&gt;&lt;font color="#000000"&gt;;&amp;nbsp;j&amp;nbsp;&amp;lt;&amp;nbsp;points.length;&amp;nbsp;j++&lt;/font&gt;&lt;font color="#000000"&gt;)&lt;/font&gt;
&lt;font color="#ffffff"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/font&gt;&lt;font color="#000000"&gt;{&lt;/font&gt;
&lt;font color="#ffffff"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/font&gt;&lt;font color="#000000"&gt;sum&amp;nbsp;+=&amp;nbsp;row&lt;/font&gt;&lt;font color="#000000"&gt;[&lt;/font&gt;&lt;font color="#000000"&gt;j&lt;/font&gt;&lt;font color="#000000"&gt;]&amp;nbsp;&lt;/font&gt;&lt;font color="#000000"&gt;*&amp;nbsp;points&lt;/font&gt;&lt;font color="#000000"&gt;[&lt;/font&gt;&lt;font color="#000000"&gt;j&lt;/font&gt;&lt;font color="#000000"&gt;]&lt;/font&gt;&lt;font color="#000000"&gt;.y;&amp;nbsp;&lt;/font&gt;
&lt;font color="#ffffff"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/font&gt;&lt;font color="#000000"&gt;}&lt;/font&gt;
&lt;font color="#ffffff"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/font&gt;
&lt;font color="#ffffff"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/font&gt;&lt;font color="#000000"&gt;matrix.set&lt;/font&gt;&lt;font color="#000000"&gt;(&lt;/font&gt;&lt;font color="#000000"&gt;i,&amp;nbsp;col,&amp;nbsp;sum&lt;/font&gt;&lt;font color="#000000"&gt;)&lt;/font&gt;&lt;font color="#000000"&gt;;&lt;/font&gt;
&lt;font color="#ffffff"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/font&gt;&lt;font color="#000000"&gt;}&lt;/font&gt;
&lt;font color="#ffffff"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/font&gt;&lt;font color="#000000"&gt;}&lt;/font&gt;
&lt;font color="#ffffff"&gt;&lt;/font&gt;
&lt;font color="#ffffff"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/font&gt;&lt;font color="#7f0055"&gt;&lt;b&gt;private&amp;nbsp;&lt;/b&gt;&lt;/font&gt;&lt;font color="#7f0055"&gt;&lt;b&gt;void&amp;nbsp;&lt;/b&gt;&lt;/font&gt;&lt;font color="#000000"&gt;computeAtA&lt;/font&gt;&lt;font color="#000000"&gt;(&lt;/font&gt;&lt;font color="#7f0055"&gt;&lt;b&gt;double&lt;/b&gt;&lt;/font&gt;&lt;font color="#000000"&gt;[][]&amp;nbsp;&lt;/font&gt;&lt;font color="#000000"&gt;matA&lt;/font&gt;&lt;font color="#000000"&gt;)&lt;/font&gt;
&lt;font color="#ffffff"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/font&gt;&lt;font color="#000000"&gt;{&lt;/font&gt;
&lt;font color="#ffffff"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/font&gt;&lt;font color="#7f0055"&gt;&lt;b&gt;for&amp;nbsp;&lt;/b&gt;&lt;/font&gt;&lt;font color="#000000"&gt;(&lt;/font&gt;&lt;font color="#7f0055"&gt;&lt;b&gt;int&amp;nbsp;&lt;/b&gt;&lt;/font&gt;&lt;font color="#000000"&gt;iA&amp;nbsp;=&amp;nbsp;&lt;/font&gt;&lt;font color="#990000"&gt;0&lt;/font&gt;&lt;font color="#000000"&gt;;&amp;nbsp;iA&amp;nbsp;&amp;lt;&amp;nbsp;matA.length;&amp;nbsp;iA++&lt;/font&gt;&lt;font color="#000000"&gt;)&lt;/font&gt;
&lt;font color="#ffffff"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/font&gt;&lt;font color="#000000"&gt;{&lt;/font&gt;
&lt;font color="#ffffff"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/font&gt;&lt;font color="#7f0055"&gt;&lt;b&gt;double&lt;/b&gt;&lt;/font&gt;&lt;font color="#000000"&gt;[]&amp;nbsp;&lt;/font&gt;&lt;font color="#000000"&gt;rowA&amp;nbsp;=&amp;nbsp;matA&lt;/font&gt;&lt;font color="#000000"&gt;[&lt;/font&gt;&lt;font color="#000000"&gt;iA&lt;/font&gt;&lt;font color="#000000"&gt;]&lt;/font&gt;&lt;font color="#000000"&gt;;&lt;/font&gt;
&lt;font color="#ffffff"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/font&gt;&lt;font color="#7f0055"&gt;&lt;b&gt;for&amp;nbsp;&lt;/b&gt;&lt;/font&gt;&lt;font color="#000000"&gt;(&lt;/font&gt;&lt;font color="#7f0055"&gt;&lt;b&gt;int&amp;nbsp;&lt;/b&gt;&lt;/font&gt;&lt;font color="#000000"&gt;iAt&amp;nbsp;=&amp;nbsp;&lt;/font&gt;&lt;font color="#990000"&gt;0&lt;/font&gt;&lt;font color="#000000"&gt;;&amp;nbsp;iAt&amp;nbsp;&amp;lt;&amp;nbsp;matA.length;&amp;nbsp;iAt++&lt;/font&gt;&lt;font color="#000000"&gt;)&lt;/font&gt;
&lt;font color="#ffffff"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/font&gt;&lt;font color="#000000"&gt;{&lt;/font&gt;
&lt;font color="#ffffff"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/font&gt;&lt;font color="#7f0055"&gt;&lt;b&gt;double&lt;/b&gt;&lt;/font&gt;&lt;font color="#000000"&gt;[]&amp;nbsp;&lt;/font&gt;&lt;font color="#000000"&gt;rowAt&amp;nbsp;=&amp;nbsp;matA&lt;/font&gt;&lt;font color="#000000"&gt;[&lt;/font&gt;&lt;font color="#000000"&gt;iAt&lt;/font&gt;&lt;font color="#000000"&gt;]&lt;/font&gt;&lt;font color="#000000"&gt;;&lt;/font&gt;
&lt;font color="#ffffff"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/font&gt;&lt;font color="#7f0055"&gt;&lt;b&gt;double&amp;nbsp;&lt;/b&gt;&lt;/font&gt;&lt;font color="#000000"&gt;sum&amp;nbsp;=&amp;nbsp;&lt;/font&gt;&lt;font color="#990000"&gt;0.0&lt;/font&gt;&lt;font color="#000000"&gt;;&lt;/font&gt;
&lt;font color="#ffffff"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/font&gt;
&lt;font color="#ffffff"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/font&gt;&lt;font color="#7f0055"&gt;&lt;b&gt;for&amp;nbsp;&lt;/b&gt;&lt;/font&gt;&lt;font color="#000000"&gt;(&lt;/font&gt;&lt;font color="#7f0055"&gt;&lt;b&gt;int&amp;nbsp;&lt;/b&gt;&lt;/font&gt;&lt;font color="#000000"&gt;j&amp;nbsp;=&amp;nbsp;&lt;/font&gt;&lt;font color="#990000"&gt;0&lt;/font&gt;&lt;font color="#000000"&gt;;&amp;nbsp;j&amp;nbsp;&amp;lt;&amp;nbsp;rowA.length;&amp;nbsp;j++&lt;/font&gt;&lt;font color="#000000"&gt;)&lt;/font&gt;
&lt;font color="#ffffff"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/font&gt;&lt;font color="#000000"&gt;{&lt;/font&gt;
&lt;font color="#ffffff"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/font&gt;&lt;font color="#000000"&gt;sum&amp;nbsp;+=&amp;nbsp;rowA&lt;/font&gt;&lt;font color="#000000"&gt;[&lt;/font&gt;&lt;font color="#000000"&gt;j&lt;/font&gt;&lt;font color="#000000"&gt;]&amp;nbsp;&lt;/font&gt;&lt;font color="#000000"&gt;*&amp;nbsp;rowAt&lt;/font&gt;&lt;font color="#000000"&gt;[&lt;/font&gt;&lt;font color="#000000"&gt;j&lt;/font&gt;&lt;font color="#000000"&gt;]&lt;/font&gt;&lt;font color="#000000"&gt;;&lt;/font&gt;
&lt;font color="#ffffff"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/font&gt;&lt;font color="#000000"&gt;}&lt;/font&gt;
&lt;font color="#ffffff"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/font&gt;
&lt;font color="#ffffff"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/font&gt;&lt;font color="#000000"&gt;matrix.set&lt;/font&gt;&lt;font color="#000000"&gt;(&lt;/font&gt;&lt;font color="#000000"&gt;iA,&amp;nbsp;iAt,&amp;nbsp;sum&lt;/font&gt;&lt;font color="#000000"&gt;)&lt;/font&gt;&lt;font color="#000000"&gt;;&lt;/font&gt;
&lt;font color="#ffffff"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/font&gt;&lt;font color="#000000"&gt;}&lt;/font&gt;
&lt;font color="#ffffff"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/font&gt;&lt;font color="#000000"&gt;}&lt;/font&gt;
&lt;font color="#ffffff"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/font&gt;&lt;font color="#000000"&gt;}&lt;/font&gt;
&lt;font color="#000000"&gt;}&lt;/font&gt;&lt;/pre&gt;&lt;p&gt;
This solves the system of equations by giving the coefficients of the polynomial expression in the last column of my matrix. For the user interface, I replaced my ParabolePanel with a GeneralEquationPanel, which is only a generalization to degree N:
&lt;pre&gt;
&lt;font color="#7f0055"&gt;&lt;b&gt;import&amp;nbsp;&lt;/b&gt;&lt;/font&gt;&lt;font color="#000000"&gt;java.awt.Color;&lt;/font&gt;
&lt;font color="#7f0055"&gt;&lt;b&gt;import&amp;nbsp;&lt;/b&gt;&lt;/font&gt;&lt;font color="#000000"&gt;java.awt.Graphics;&lt;/font&gt;
&lt;font color="#ffffff"&gt;&lt;/font&gt;
&lt;font color="#7f0055"&gt;&lt;b&gt;import&amp;nbsp;&lt;/b&gt;&lt;/font&gt;&lt;font color="#000000"&gt;javax.swing.JPanel;&lt;/font&gt;
&lt;font color="#ffffff"&gt;&lt;/font&gt;
&lt;font color="#7f0055"&gt;&lt;b&gt;public&amp;nbsp;class&amp;nbsp;&lt;/b&gt;&lt;/font&gt;&lt;font color="#000000"&gt;GeneralEquationPanel&amp;nbsp;&lt;/font&gt;&lt;font color="#7f0055"&gt;&lt;b&gt;extends&amp;nbsp;&lt;/b&gt;&lt;/font&gt;&lt;font color="#000000"&gt;JPanel&lt;/font&gt;
&lt;font color="#000000"&gt;{&lt;/font&gt;
&lt;font color="#ffffff"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/font&gt;&lt;font color="#7f0055"&gt;&lt;b&gt;private&amp;nbsp;&lt;/b&gt;&lt;/font&gt;&lt;font color="#7f0055"&gt;&lt;b&gt;double&lt;/b&gt;&lt;/font&gt;&lt;font color="#000000"&gt;[]&amp;nbsp;&lt;/font&gt;&lt;font color="#000000"&gt;equation&amp;nbsp;=&amp;nbsp;&lt;/font&gt;&lt;font color="#7f0055"&gt;&lt;b&gt;new&amp;nbsp;&lt;/b&gt;&lt;/font&gt;&lt;font color="#7f0055"&gt;&lt;b&gt;double&lt;/b&gt;&lt;/font&gt;&lt;font color="#000000"&gt;[&lt;/font&gt;&lt;font color="#000000"&gt;GeneralParameters.DegreeOfEquation&amp;nbsp;+&amp;nbsp;&lt;/font&gt;&lt;font color="#990000"&gt;1&lt;/font&gt;&lt;font color="#000000"&gt;]&lt;/font&gt;&lt;font color="#000000"&gt;;&lt;/font&gt;
&lt;font color="#ffffff"&gt;&lt;/font&gt;
&lt;font color="#ffffff"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/font&gt;&lt;font color="#000000"&gt;GeneralEquationPanel&lt;/font&gt;&lt;font color="#000000"&gt;()&lt;/font&gt;
&lt;font color="#ffffff"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/font&gt;&lt;font color="#000000"&gt;{&lt;/font&gt;
&lt;font color="#ffffff"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/font&gt;&lt;font color="#000000"&gt;setOpaque&lt;/font&gt;&lt;font color="#000000"&gt;(&lt;/font&gt;&lt;font color="#7f0055"&gt;&lt;b&gt;true&lt;/b&gt;&lt;/font&gt;&lt;font color="#000000"&gt;)&lt;/font&gt;&lt;font color="#000000"&gt;;&lt;/font&gt;
&lt;font color="#ffffff"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/font&gt;&lt;font color="#000000"&gt;}&lt;/font&gt;
&lt;font color="#ffffff"&gt;&lt;/font&gt;
&lt;font color="#ffffff"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/font&gt;&lt;font color="#646464"&gt;@Override&lt;/font&gt;
&lt;font color="#ffffff"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/font&gt;&lt;font color="#7f0055"&gt;&lt;b&gt;protected&amp;nbsp;&lt;/b&gt;&lt;/font&gt;&lt;font color="#7f0055"&gt;&lt;b&gt;void&amp;nbsp;&lt;/b&gt;&lt;/font&gt;&lt;font color="#000000"&gt;paintComponent&lt;/font&gt;&lt;font color="#000000"&gt;(&lt;/font&gt;&lt;font color="#000000"&gt;Graphics&amp;nbsp;g&lt;/font&gt;&lt;font color="#000000"&gt;)&lt;/font&gt;
&lt;font color="#ffffff"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/font&gt;&lt;font color="#000000"&gt;{&lt;/font&gt;
&lt;font color="#ffffff"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/font&gt;&lt;font color="#7f0055"&gt;&lt;b&gt;super&lt;/b&gt;&lt;/font&gt;&lt;font color="#000000"&gt;.paintComponent&lt;/font&gt;&lt;font color="#000000"&gt;(&lt;/font&gt;&lt;font color="#000000"&gt;g&lt;/font&gt;&lt;font color="#000000"&gt;)&lt;/font&gt;&lt;font color="#000000"&gt;;&lt;/font&gt;
&lt;font color="#ffffff"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/font&gt;
&lt;font color="#ffffff"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/font&gt;&lt;font color="#000000"&gt;g.setColor&lt;/font&gt;&lt;font color="#000000"&gt;(&lt;/font&gt;&lt;font color="#000000"&gt;Color.BLUE&lt;/font&gt;&lt;font color="#000000"&gt;)&lt;/font&gt;&lt;font color="#000000"&gt;;&lt;/font&gt;
&lt;font color="#ffffff"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/font&gt;
&lt;font color="#ffffff"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/font&gt;&lt;font color="#7f0055"&gt;&lt;b&gt;int&amp;nbsp;&lt;/b&gt;&lt;/font&gt;&lt;font color="#000000"&gt;yPrevious&amp;nbsp;=&amp;nbsp;&lt;/font&gt;&lt;font color="#000000"&gt;(&lt;/font&gt;&lt;font color="#7f0055"&gt;&lt;b&gt;int&lt;/b&gt;&lt;/font&gt;&lt;font color="#000000"&gt;)&amp;nbsp;&lt;/font&gt;&lt;font color="#000000"&gt;equation&lt;/font&gt;&lt;font color="#000000"&gt;[&lt;/font&gt;&lt;font color="#990000"&gt;0&lt;/font&gt;&lt;font color="#000000"&gt;]&lt;/font&gt;&lt;font color="#000000"&gt;;&lt;/font&gt;
&lt;font color="#ffffff"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/font&gt;&lt;font color="#7f0055"&gt;&lt;b&gt;for&amp;nbsp;&lt;/b&gt;&lt;/font&gt;&lt;font color="#000000"&gt;(&lt;/font&gt;&lt;font color="#7f0055"&gt;&lt;b&gt;int&amp;nbsp;&lt;/b&gt;&lt;/font&gt;&lt;font color="#000000"&gt;i&amp;nbsp;=&amp;nbsp;&lt;/font&gt;&lt;font color="#990000"&gt;1&lt;/font&gt;&lt;font color="#000000"&gt;,&amp;nbsp;n&amp;nbsp;=&amp;nbsp;getWidth&lt;/font&gt;&lt;font color="#000000"&gt;()&lt;/font&gt;&lt;font color="#000000"&gt;;&amp;nbsp;i&amp;nbsp;&amp;lt;&amp;nbsp;n;&amp;nbsp;i++&lt;/font&gt;&lt;font color="#000000"&gt;)&lt;/font&gt;
&lt;font color="#ffffff"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/font&gt;&lt;font color="#000000"&gt;{&lt;/font&gt;
&lt;font color="#ffffff"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/font&gt;&lt;font color="#7f0055"&gt;&lt;b&gt;double&amp;nbsp;&lt;/b&gt;&lt;/font&gt;&lt;font color="#000000"&gt;v&amp;nbsp;=&amp;nbsp;&lt;/font&gt;&lt;font color="#990000"&gt;0.0&lt;/font&gt;&lt;font color="#000000"&gt;;&lt;/font&gt;
&lt;font color="#ffffff"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/font&gt;&lt;font color="#7f0055"&gt;&lt;b&gt;int&amp;nbsp;&lt;/b&gt;&lt;/font&gt;&lt;font color="#000000"&gt;degree&amp;nbsp;=&amp;nbsp;&lt;/font&gt;&lt;font color="#990000"&gt;1&lt;/font&gt;&lt;font color="#000000"&gt;;&lt;/font&gt;
&lt;font color="#ffffff"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/font&gt;&lt;font color="#7f0055"&gt;&lt;b&gt;for&amp;nbsp;&lt;/b&gt;&lt;/font&gt;&lt;font color="#000000"&gt;(&lt;/font&gt;&lt;font color="#7f0055"&gt;&lt;b&gt;double&amp;nbsp;&lt;/b&gt;&lt;/font&gt;&lt;font color="#000000"&gt;coeff&amp;nbsp;:&amp;nbsp;equation&lt;/font&gt;&lt;font color="#000000"&gt;)&lt;/font&gt;
&lt;font color="#ffffff"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/font&gt;&lt;font color="#000000"&gt;{&lt;/font&gt;
&lt;font color="#ffffff"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/font&gt;&lt;font color="#000000"&gt;v&amp;nbsp;+=&amp;nbsp;coeff&amp;nbsp;*&amp;nbsp;degree;&lt;/font&gt;
&lt;font color="#ffffff"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/font&gt;&lt;font color="#000000"&gt;degree&amp;nbsp;*=&amp;nbsp;i;&lt;/font&gt;
&lt;font color="#ffffff"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/font&gt;&lt;font color="#000000"&gt;}&lt;/font&gt;
&lt;font color="#ffffff"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/font&gt;&lt;font color="#7f0055"&gt;&lt;b&gt;int&amp;nbsp;&lt;/b&gt;&lt;/font&gt;&lt;font color="#000000"&gt;y&amp;nbsp;=&amp;nbsp;&lt;/font&gt;&lt;font color="#000000"&gt;(&lt;/font&gt;&lt;font color="#7f0055"&gt;&lt;b&gt;int&lt;/b&gt;&lt;/font&gt;&lt;font color="#000000"&gt;)&lt;/font&gt;&lt;font color="#000000"&gt;v;&lt;/font&gt;
&lt;font color="#ffffff"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/font&gt;&lt;font color="#000000"&gt;g.drawLine&lt;/font&gt;&lt;font color="#000000"&gt;(&lt;/font&gt;&lt;font color="#000000"&gt;i-&lt;/font&gt;&lt;font color="#990000"&gt;1&lt;/font&gt;&lt;font color="#000000"&gt;,&amp;nbsp;yPrevious,&amp;nbsp;i,&amp;nbsp;y&lt;/font&gt;&lt;font color="#000000"&gt;)&lt;/font&gt;&lt;font color="#000000"&gt;;&lt;/font&gt;
&lt;font color="#ffffff"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/font&gt;&lt;font color="#000000"&gt;yPrevious&amp;nbsp;=&amp;nbsp;y;&lt;/font&gt;
&lt;font color="#ffffff"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/font&gt;&lt;font color="#000000"&gt;}&lt;/font&gt;
&lt;font color="#ffffff"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/font&gt;&lt;font color="#000000"&gt;}&lt;/font&gt;
&lt;font color="#ffffff"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/font&gt;
&lt;font color="#ffffff"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/font&gt;&lt;font color="#7f0055"&gt;&lt;b&gt;public&amp;nbsp;&lt;/b&gt;&lt;/font&gt;&lt;font color="#7f0055"&gt;&lt;b&gt;void&amp;nbsp;&lt;/b&gt;&lt;/font&gt;&lt;font color="#000000"&gt;SetEquation&lt;/font&gt;&lt;font color="#000000"&gt;(&lt;/font&gt;&lt;font color="#7f0055"&gt;&lt;b&gt;double&lt;/b&gt;&lt;/font&gt;&lt;font color="#000000"&gt;[]&amp;nbsp;&lt;/font&gt;&lt;font color="#000000"&gt;eq&lt;/font&gt;&lt;font color="#000000"&gt;)&lt;/font&gt;
&lt;font color="#ffffff"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/font&gt;&lt;font color="#000000"&gt;{&lt;/font&gt;
&lt;font color="#ffffff"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/font&gt;&lt;font color="#7f0055"&gt;&lt;b&gt;this&lt;/b&gt;&lt;/font&gt;&lt;font color="#000000"&gt;.equation&amp;nbsp;=&amp;nbsp;eq;&lt;/font&gt;
&lt;font color="#ffffff"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/font&gt;&lt;font color="#000000"&gt;repaint&lt;/font&gt;&lt;font color="#000000"&gt;()&lt;/font&gt;&lt;font color="#000000"&gt;;&lt;/font&gt;
&lt;font color="#ffffff"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/font&gt;&lt;font color="#000000"&gt;}&lt;/font&gt;
&lt;font color="#ffffff"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/font&gt;
&lt;font color="#000000"&gt;}&lt;/font&gt;&lt;/pre&gt;&lt;p&gt;
The shortcomings of my solution is that I use the coordinates in pixel for the calculation, and if you try using a power above 3, the A matrix values will overflow. I should divide the values to be in a better range. However, you can have a look at the result here:
&lt;p&gt;
&lt;a
 href="http://www.jroller.com/ethdsy/resource/games/LeastSquare.jnlp"&gt;&lt;img
 style="border: 0px solid ; width: 88px; height: 23px;" alt=""
 src="http://java.sun.com/products/jfc/tsc/sightings/images/webstart.small.jpg"&gt;&lt;/a&gt;
&lt;p&gt;&lt;img src="http://feeds.feedburner.com/~r/jroller/frontpage/~4/xx1o0Ci7DC4" height="1" width="1"/&gt;</description>          <feedburner:origLink>http://www.jroller.com/ethdsy/entry/least_squares</feedburner:origLink></item>
    <item>
    <guid isPermaLink="false">http://www.jroller.com/sjivan/entry/introduction_to_smartgwt_enterprise_edition</guid>
    <title>Introduction to SmartGWT Enterprise Edition (EE)</title>
    <dc:creator>Sanjiv Jivan</dc:creator>
    <link>http://feeds.dzone.com/~r/jroller/frontpage/~3/DG2p6B9uBUI/introduction_to_smartgwt_enterprise_edition</link>
        <pubDate>Sun, 5 Jul 2009 11:22:24 -0400</pubDate>
    <category>Java</category>
    <category>ee</category>
    <category>gwt</category>
    <category>smartgwt</category>
            <description>&lt;img style="float:left;margin:0 10px 10px 0" src="http://www.jroller.com/sjivan/resource/cube_yellow.png"&gt;&lt;a href="http://www.smartclient.com/smartgwtee/showcase/" target="_blank"&gt;&lt;img style="float:right;margin:0 0 10px 10px;" src="http://www.jroller.com/sjivan/resource/ee.png"&gt;&lt;/a&gt;
&lt;p&gt;The SmartClient folks have released &lt;a href="http://www.smartclient.com/smartgwt/" target="_blank"&gt;SmartGWT Enterprise Edition&lt;/a&gt;. The SmartGWT EE Showcase can be viewed &lt;a href="http://www.smartclient.com/smartgwtee/showcase/"&gt;here&lt;/a&gt; and the latest version 1.2 of the distribution can be downloaded &lt;a href="http://smartclient.com/releases/smartgwtee-1.2.zip"&gt;here&lt;/a&gt;.


&lt;p&gt;I recently spent some time understanding how SmartGWT EE works and the functionality it provides. I'll attempt to cover the key features of SmartGWT EE in this blog. &lt;/p&gt;

&lt;p&gt;&lt;a href="http://code.google.com/p/smartgwt/" target="_blank"&gt;SmartGWT LGPL&lt;/a&gt; itself is one of the most feature complete libraries in terms of widgets, feature-set and databinding capabilities. I had written an &lt;a href="http://www.jroller.com/sjivan/entry/smartgwt_1_0_released"&gt;introduction&lt;/a&gt; to it when SmartGWT was first released. Please read it if you haven't already done so as all the concepts covered in that post apply to SmartGWT EE as well. SmartGWT EE builds on SmartGWT and takes integrating the databound components to your Java based backend to the next level.&lt;/p&gt;

&lt;p&gt;&lt;b&gt;So what exactly is SmartGWT EE&lt;/b&gt;? In a nutshell,  SmartGWT EE provides a whole lot of features that allow accelerated server side integration with SmartGWT's visual components. Fully functional CRUD screens, with inline editing, virtual pagination, type validation, ability to create new records, deletes, updates,  advanced filtering capabilities, file export and upload can be build with as little as 25 lines of client side SmartGWT code, and a simple XML based DataSource descriptor file that lives on the server side. For the simple CRUD usecase &lt;b&gt;zero&lt;/b&gt; lines of server side code is required to be written by a developer. However the beauty of SmartGWT EE is that it not only makes the simple cases simple, but also handles real world usecases very elegantly and developers can add additional business logic to take place before or after each operation is executed. (Details are covered below). As a result,  junior developers can get productive right away in literally a matter of hours to a day, and still produce results similar to that of  a senior developer.&lt;/p&gt;

&lt;p&gt;There are wizards in other frameworks that help you get jump started with a simple CRUD web app, however they generate a lot of code and artifacts which become hard to maintain once modifications or enhancements are required. With SmartGWT EE, there is &lt;b&gt;zero&lt;/b&gt; generated application code that the developer needs to maintain. 
&lt;/p&gt;


&lt;p&gt;Here are some of the key features supported by SmartGWT EE. You'll notice that a majority of these  features / functionality are required by most Enterprise applications, regardless of the domain or nature of the application.&lt;p&gt;

&lt;ul class="list"&gt;
&lt;li class="list"&gt;&lt;b&gt;Authentication and Re-login&lt;/b&gt; : Almost all enterprise applications require users to be authenticated.  With SmartGWT EE, a user can specify that a DataSource as a whole or it's individual operationBindings, or particular fields are accessible only to authenticated users or to users with certain roles, where the roles and authentication status comes from JAAS or J2EE security. For applications that use a session timeout, a background RPC may occur with an expired session. One would typically prompt the user to relogin, but SmartGWT EE goes further by suspending the attempted transaction and presents a modal dialog to re-authenticate the user. On successful authentication, the original transaction is resumed without loss of data or context.
&lt;/li&gt;

&lt;li class="list"&gt;&lt;p&gt;&lt;a href="http://en.wikipedia.org/wiki/Create,_read,_update_and_delete"&gt;CRUD screens&lt;/a&gt; are screens to create, read, update and delete entities. Such screens may be direct views over a database table, or over domain classes that may have business logic that is executed when CRUD operations are invoked. Datatype and business validation rules may apply to any given field. In SmartGWT EE creating such screens it trivial. Have a look at the &lt;a href="http://www.smartclient.com/smartgwtee/showcase/#sql_basic_connector" target="_blank"&gt;Basic Connector&lt;/a&gt; sample that supports the various CRUD operations along with filtering.&lt;br&gt;&lt;br&gt;

&lt;a href="http://www.smartclient.com/smartgwtee/showcase/#sql_basic_connector" target="_blank"&gt;&lt;img src="http://www.jroller.com/sjivan/resource/ee-crud.png"&gt;&lt;/a&gt;

&lt;p&gt;Here's the DataSource descriptor : &lt;/p&gt;
&lt;textarea name='code' class='xml:nocontrols:nogutter' rows='15' cols='120'&gt;
&lt;DataSource
    ID="worldDS"
    serverType="sql"
    tableName="worldDS"
    testFileName="/ds/test_data/world.data.xml"
&gt;
    &lt;fields&gt;
        &lt;field name="pk"  type="sequence" hidden="true"  primaryKey="true" /&gt;
        &lt;field name="countryCode" type="text"  title="Code" required="true" /&gt;
        &lt;field name="countryName" type="text"  title="Country" required="true" /&gt;
        &lt;field name="capital" type="text"  title="Capital" /&gt;
        &lt;field name="government"  type="text" title="Government" length="500" /&gt;
        &lt;field name="continent" type="text"  title="Continent"&gt;
            &lt;valueMap&gt;
                &lt;value&gt;Europe&lt;/value&gt;
                &lt;value&gt;Asia&lt;/value&gt;
                &lt;value&gt;North America&lt;/value&gt;
                &lt;value&gt;Australia/Oceania&lt;/value&gt;
                &lt;value&gt;South America&lt;/value&gt;
                &lt;value&gt;Africa&lt;/value&gt;
            &lt;/valueMap&gt;
        &lt;/field&gt;
        &lt;field name="independence"  type="date" title="Nationhood" /&gt;
        &lt;field name="area"  type="float" title="Area (km&amp;amp;sup2;)" /&gt;
        &lt;field name="population"  type="integer"  title="Population" /&gt;
        &lt;field name="gdp"  type="float" title="GDP ($M)" /&gt;
    &lt;/fields&gt;
&lt;/DataSource&gt;
&lt;/textarea&gt;

&lt;p&gt; and here's the client side GWT code :&lt;/p&gt;

&lt;textarea name='code' class='java:nocontrols:nogutter' rows='15' cols='120'&gt;

public class BasicConnectorSample implements EntryPoint {

    public void onModuleLoad() {
        final ListGrid listGrid = new ListGrid();
        listGrid.setWidth(700);
        listGrid.setHeight(224);
        listGrid.setAlternateRecordStyles(true);
        listGrid.setDataSource(DataSource.get("worldDS"));
        listGrid.setAutoFetchData(true);
        listGrid.setShowFilterEditor(true);
        listGrid.setCanEdit(true);
        listGrid.setEditEvent(ListGridEditEvent.CLICK);
        listGrid.setCanRemoveRecords(true);

        IButton newButton = new IButton("Add New");
        newButton.addClickHandler(new ClickHandler() {
            public void onClick(ClickEvent event) {
                listGrid.startEditingNew();
            }
        });

        VLayout layout = new VLayout(15);
        layout.addMember(listGrid);
        layout.addMember(newButton);

        layout.draw();
    }
}
&lt;/textarea&gt;

&lt;p&gt;This sample uses SmartGWT EE's SQL connector which automatically handles carrying out the CRUD operations. However you can also use Hibernate (see &lt;a href="http://www.smartclient.com/smartgwtee/showcase/#hibernate_connector" target="_blank"&gt;sample&lt;/a&gt;), or a combination of Spring and Hibernate (see &lt;a href="http://www.smartclient.com/smartgwtee/showcase/#data_integration_crud_hibernate_production" target="_blank"&gt;sample&lt;/a&gt;). Additionally you can insert your own business logic for each operation as illustrated by the &lt;a href="http://www.smartclient.com/smartgwtee/showcase/#sql_user_specific_data" target="_blank"&gt;User Specific Data&lt;/a&gt; sample.
&lt;/li&gt;

&lt;li class="list"&gt;&lt;a href="http://en.wikipedia.org/wiki/Master-detail" target="_blank"&gt;Master-Detail screens&lt;/a&gt; represent one to many relationships. Building Master Detail screens using SmartGWT EE is easy. Take a look at this &lt;a href="http://www.smartclient.com/smartgwtee/showcase/#master_detail_batch"  target="_blank"&gt;Master-Detail&lt;/a&gt; sample. Notice how all the edits to the master entity (Order) and the detail entities (Order Details) get submitted to the server in a batch as a single RPC operation. The screenshot below is of the Order and Order Details table.
&lt;br&gt;&lt;br&gt;
&lt;a href="http://www.smartclient.com/smartgwtee/showcase/#master_detail_batch"  target="_blank"&lt;img src="http://www.jroller.com/sjivan/resource/ee-master-detail.png"&gt;&lt;/a&gt;
&lt;/li&gt;

&lt;li class="list"&gt;&lt;a href="http://www.smartclient.com/smartgwtee/showcase/#transactions_queuing" target="_blank"&gt;Transaction Queuing&lt;/a&gt; allows multiple data load or save requests from different UI components to be transparently combined into a single HTTP request with guaranteed in-order execution. Queuing also makes it simple to define transaction boundaries when data in different UI components need to be saved together. This is probably one of my favorite features that is really innovative and unique to SmartGWT EE. Consider a screen where several databound components are to be displayed. For example a Tree, a ListGrid and a Calendar. One could separately make calls to load each databound widget . This would involve multiple roundtrips to the server and affects the user experience as well. With SmartGWT EE's transaction queuing support you can add all the requests to load various databound components within a single queue, and the results are returned in response to a single RPC call. 

Here is a code snippet from the &lt;a href="http://www.smartclient.com/smartgwtee/showcase/#transactions_queuing" target="_blank"&gt;Transaction Queuing&lt;/a&gt; sample :

&lt;textarea name='code' class='java:nocontrols:nogutter' rows='15' cols='120'&gt;
ButtonItem findButtonItem = new ButtonItem("findButton", "Find Orders");
findButtonItem.addClickHandler(new ClickHandler() {
    public void onClick(ClickEvent event) {

        RPCManager.startQueue();
        userDetailViewer.fetchData(findOrdersForm.getValuesAsCriteria());
        ordersListGrid.fetchData(findOrdersForm.getValuesAsCriteria());
        RPCManager.sendQueue();

    }
});
&lt;/textarea&gt;
&lt;/li&gt;

&lt;li class="list"&gt;&lt;a href="http://www.smartclient.com/smartgwtee/showcase/#sql_dynamic_reporting" target="_blank"&gt;Ad hoc reports&lt;/a&gt; that are based directly on complex SQL and not necessarily mapped to business objects. Such queries may include both standard and bespoke WHERE conditions and the use of aggregate functions and a GROUP BY. Have a look at the &lt;a href="http://www.smartclient.com/smartgwtee/showcase/#sql_dynamic_reporting" target="_blank"&gt;Dynamic Reporting&lt;/a&gt; sample.&lt;/li&gt;

&lt;li class="list"&gt;&lt;a href="http://www.smartclient.com/smartgwtee/showcase/#excel_export" target="_blank"&gt;Export capabilities&lt;/a&gt; : The ability to export data from a DataSource or from DataBoundComponents like ListGrid, TreeGrid or TileGrid to Excel / CSV / XML is inbuilt and can be done using a few lines of code on the client side with no additional server side code. The exported data matches the filtered resultset if a filter was applied. Have a look at &lt;a href="http://www.smartclient.com/smartgwtee/showcase/#excel_export" target="_blank"&gt;this&lt;/a&gt; sample. Although the sample says Export to Excel, the file format returned is CSV. Excel does open CSV files but I wish they supported exporting directly to .xls files as well.
&lt;br&gt;&lt;br&gt;
&lt;a href="http://www.smartclient.com/smartgwtee/showcase/#excel_export" target="_blank"&gt;&lt;img src="http://www.jroller.com/sjivan/resource/ee-export.png"&gt;&lt;/a&gt;
&lt;/li&gt;


&lt;li class="list"&gt;&lt;a href="http://www.smartclient.com/smartgwtee/showcase/#batch_uploader" target="_blank"&gt;File Upload capabilities&lt;/a&gt; : SmartGWT EE supports the ability to import data into a table by uploading a CSV file. Again, SmartGWT EE goes beyond the normal expectation of how files are typically uploaded and does something really smart. Upon upload, the data in the CSV file is validated by the server against the defined DataSource and records with errors are streamed back to the user and displayed in an editable grid for review and correction. Upon correcting, the user can commit the corrected records back to the persistent store. This end-to-end functionality is in-built and requires no application code. Again, it would be nice it they supported upload of .xsl files as well. Check out the Batch File upload sample &lt;a href="http://www.smartclient.com/smartgwtee/showcase/#batch_uploader" target="_blank"&gt;here&lt;/a&gt;.

&lt;a href="http://www.smartclient.com/smartgwtee/showcase/#batch_uploader" target="_blank"&gt;&lt;img src="http://www.jroller.com/sjivan/resource/ee-upload.png"&gt;&lt;/a&gt;

&lt;/li&gt;
&lt;li class="list"&gt;&lt;b&gt;Communicating with an in-memory engine&lt;/b&gt; : In some cases you need to build a UI that talks to an in-memory server object model that is not necessarily backed by a relational database. Accomplishing this in SmartGWT EE is easy. You can write a custom DataSource class that extends a BasicDataSource and implement your own logic for the fetch, update, create and delete requests. The &lt;a href="http://www.smartclient.com/smartgwtee/showcase/#simple_custom_ds" target="_blank"&gt;Custom DataSource&lt;/a&gt; sample illustrates this. Here's what skeleton code for a custom datasource looks like : 

&lt;textarea name="code" class="java:nogutter:nocontrols" rows="15" cols="120"&gt;
public class UserDataSource extends BasicDataSource {

    // Override all four CRUD operations - create, retrieve, update and delete
    // (add, fetch, update and remove in SmartGWT terminology).

    // Note that the parameters sent by the client arrive here already converted 
    // to Java Maps by the SmartGWT Server -  there's no need to worry about 
    // conversion to and from XML or JSON even in a custom DS implementation

    public DSResponse executeAdd(DSRequest req) throws Exception {
        ....
        ....
    }

    public DSResponse executeFetch(DSRequest req) throws Exception {
        ....
        ....
    }

    public DSResponse executeRemove(DSRequest req) throws Exception {
        Long employeeID = (Long)req.getValues().get("employeeId");
        ....
        ....
    }

    public DSResponse executeUpdate(DSRequest req) throws Exception {
        Map map = req.getOldValues();
        Long work = (Long)req.getValues().get("employeeId");
        ....
        ....
    }
}
&lt;/textarea&gt; 

&lt;/li&gt;

&lt;li class="list"&gt;&lt;b&gt;Eliminate&lt;/b&gt; &lt;a href="http://en.wikipedia.org/wiki/Value_object" target="_blank"&gt;Data Transfer Objects (DTO)&lt;/a&gt; :
With SmartGWT EE, your entire domain model remains unaffected and you do not need to write superfluous DTO's, worry about Hibernate lazy loading issues, managing updates, or write different service API's for each client-view use case. SmartGWT EE manages propagating changes made by the user to the server efficiently by only returning the modified fields (and not the entire record data), and the server side SmartGWT EE classes seamlessly only update the properties that were modified my the user. All the user needs to do is create a simple xml DataSource descriptor exposing the fields that need to be returned to the client. The fields can contain nested properties. Have a close look at the &lt;a href="http://www.smartclient.com/smartgwtee/showcase/#data_selection" target="_blank"&gt;Data Selection&lt;/a&gt; sample. This example shows the SmartGWT Server's support for flattening and reconstructing hierarchical data, by use of XPaths. The ListGrid shows each user's address, city and state as if those fields were part of the user's data. In fact, this address information is held in a separate Address bean; this information is extracted from the separate bean at fetch time by the SmartGWT Server, based purely on the XPath declarations of those fields in the dataSource. 
&lt;br&gt;&lt;br&gt;
&lt;a href="http://www.smartclient.com/smartgwtee/showcase/#data_selection" target="_blank"&gt;&lt;img src="http://www.jroller.com/sjivan/resource/ee-xpath.png"&gt;&lt;/a&gt;
 &lt;/li&gt;

&lt;li class="list"&gt;&lt;b&gt;SQL / HQL Templating&lt;/b&gt; : If required, one can customize the SQL or HQL queries automatically generated by the SmartGWT EE SQL / Hibernate connectors directly in the DataSource definition by overriding specific clauses from the automatically generated query, without the need to write any Java code.  As a result one can rapidly crank out fully functional application screens that include DataBound components without writing any Java server code. This completely eliminates the need for superfluous Service API -&gt; DAO delegation for basic CRUD operations  (Technologies like Grails also completely do away this the extra layer of delegation and API explosion which was previously considered a best-practice but now recognized as an anti-pattern by experts). The use of SQL Templating is illustrated by the &lt;a href="http://www.smartclient.com/smartgwtee/showcase/#large_valuemap_sql" target="_blank"&gt;Large Value Map&lt;/a&gt; sample.
&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;SmartGWT EE also provides wizards to pick any registered Hibernate entity and have it generate a SmartGWT DataSource that provides &lt;b&gt;full read-write binding&lt;/b&gt; to that Hibernate entity. Just provide the generated DataSource to a SmartGWT EE grid or form with no other configuration, and you have a full CRUD UI: create, retrieve, update, and delete Hibernate-managed entities. You can do the same by pointing directly to a database table and immediately get full read-write binding. In both cases you can easily add business logic that runs before or after the Hibernate or SQL binding, which can modify the request before it executes, modify the output, or take any other action.&lt;/p&gt;

&lt;img src="http://www.jroller.com/sjivan/resource/ee-wizard.png"&gt;
&lt;br&gt;&lt;br&gt;

&lt;img src="http://www.jroller.com/sjivan/resource/ee-hibernatewizard.png"&gt;
&lt;br&gt;&lt;br&gt;
&lt;p&gt;There is also a "batch" version of the binding tool that allows you to generate datasources for as many tables or domain classes you have in a &lt;b&gt;single step&lt;/b&gt;. This is suitable for existing applications that have a large number of tables / beans and want to migrate to a an Ajax based rich UI.&lt;/p&gt;

&lt;p&gt;Having gained a deeper understanding of SmartGWT EE, I will go as far as saying that, in my opinion,  the functionality that SmartGWT EE provides makes it the most comprehensive and sophisticated solution for building rich enterprise UI applications with a Java backend - not just compared to other web based RIA technologies, but even compared to client-server Swing applications. I believe that productivity gains of SmartGWT EE are so high that it can cut down several man months of work down to weeks or even days, and thousands of lines of code down to hundreds.&lt;/p&gt;

&lt;p&gt;Are they any features you use fairly extensively in your enterprise application that are not covered by SmartGWT EE? Or what other features would you like to see in SmartGWT EE? I personally can't think of too many but the one that comes to mind is adding support for &lt;a href="http://code.google.com/appengine/" target="_blank"&gt;Google App Engine (GAE)&lt;/a&gt; persistence as a SmartGWT EE DataSource connector.  Thanks for reading!&lt;/p&gt;
&lt;p&gt;&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/jroller/frontpage/~4/DG2p6B9uBUI" height="1" width="1"/&gt;</description>          <feedburner:origLink>http://www.jroller.com/sjivan/entry/introduction_to_smartgwt_enterprise_edition</feedburner:origLink></item>
    <item>
    <guid isPermaLink="false">http://www.jroller.com/evans/entry/a_look_back_at</guid>
    <title>A Look Back At...</title>
    <dc:creator>evans</dc:creator>
    <link>http://feeds.dzone.com/~r/jroller/frontpage/~3/Hq0_fZjZH3c/a_look_back_at</link>
        <pubDate>Sun, 5 Jul 2009 07:13:17 -0400</pubDate>
    <category>Java</category>
            <description>&lt;p /&gt;
It has been a very busy week for me - working on new personal projects, moving office to a shared office space, planning my trip to Spain and a few other personal stuff.
&lt;p /&gt;
In fact, here's a few of the things that have been keeping me very occupied for the last two weeks.
&lt;p /&gt;

Twitter: I have been (still am...) working on a Twitter App in the evenings after work. I hope to finish it soon and post the details and create a website for it, until then I'm not prepared to divulge the details here, sorry.
&lt;p /&gt;
Negotiating deals with some of our clients last week... it's taxing, you know!
&lt;p /&gt;
Office move: We recently moved to a shared open-plan office with another company. This is all in a positive effort to cut cost and save jobs too - which also saw 2  staff members now work from home. What makes this arrangement even better is that all our email is managed by Google on their Google Apps platform. We have saved a ton on software, hardware and support cost for our email systems. You should also consider using Google Apps if it's an option. Not only does it save you cost on hardware and support, it also makes accessing, backup and management a lot easier.
&lt;p /&gt;
I have also been working on my planned trip to Spain later this month to (hopefully) sign off the final stage of the project we have been working on.  
&lt;p /&gt;
Finally, I still have a few of my own personal stuff that have also been keeping me very busy. One of which I've briefly mentioned above. 
&lt;p /&gt;
So, there you have it!
&lt;p /&gt;&lt;img src="http://feeds.feedburner.com/~r/jroller/frontpage/~4/Hq0_fZjZH3c" height="1" width="1"/&gt;</description>          <feedburner:origLink>http://www.jroller.com/evans/entry/a_look_back_at</feedburner:origLink></item>
    <item>
    <guid isPermaLink="false">http://www.jroller.com/nivanov/entry/grifgain_training_amsterdam_and_new</guid>
    <title>GrifGain Training - Amsterdam and New York</title>
    <dc:creator>Nikita Ivanov</dc:creator>
    <link>http://feeds.dzone.com/~r/jroller/frontpage/~3/u4ngqNyD6Yo/grifgain_training_amsterdam_and_new</link>
        <pubDate>Sun, 5 Jul 2009 01:36:33 -0400</pubDate>
    <category>Technology</category>
    <category>cloud</category>
    <category>computing</category>
    <category>grid</category>
            <description>GridGain will conduct &lt;b&gt;3-day advance public training in 2009&lt;/b&gt;:
                    &lt;ul&gt;
                    	&lt;li&gt;&lt;b&gt;Amsterdam, October 20-22&lt;/b&gt;&amp;nbsp;&amp;nbsp;&lt;a target=_new href="http://gridgain-ams.eventbrite.com"&gt;http://gridgain-ams.eventbrite.com&lt;/a&gt;
                        &lt;li&gt;&lt;b&gt;New York, November 10-12&lt;/b&gt;&amp;nbsp;&amp;nbsp;&lt;a target=_new href="http://gridgain-nyc.eventbrite.com"&gt;http://gridgain-nyc.eventbrite.com&lt;/a&gt;
                    &lt;/ul&gt;
                    This training provides full 
                    in-depth learning of all features in GridGain. Beyond standard features and use cases, this 3-day course goes 
                    deep in complex scenarios of homogeneous and heterogeneous environments, SPI development, cloud environment and 
                    advanced security, custom topology resolution, and many other advanced topics.
                    &lt;p&gt;
                    This is another perfect opportunity to learn about see some of the new features that are coming in &lt;b&gt;GridGain 3.0&lt;/b&gt;.
&lt;p&gt;
                    &lt;a href="http://www.gridgain.com/services.html#training"&gt;&lt;img border="0" src="http://www.gridgain.com/images/powered_by_eventbrite.png"&gt;&lt;/a&gt;
&lt;p&gt;
Hope to see you there!&lt;img src="http://feeds.feedburner.com/~r/jroller/frontpage/~4/u4ngqNyD6Yo" height="1" width="1"/&gt;</description>          <feedburner:origLink>http://www.jroller.com/nivanov/entry/grifgain_training_amsterdam_and_new</feedburner:origLink></item>
    <item>
    <guid isPermaLink="false">http://www.jroller.com/phidias/entry/generating_a_grails_app_using</guid>
    <title>Generating A Grails App Using GRAG</title>
    <dc:creator>Mark Fortner</dc:creator>
    <link>http://feeds.dzone.com/~r/jroller/frontpage/~3/Vfy-IproM24/generating_a_grails_app_using</link>
        <pubDate>Sat, 4 Jul 2009 14:50:02 -0400</pubDate>
    <category>Java</category>
    <category>grails</category>
    <category>groovy</category>
            <description>I recently needed to reverse engineer an application and thought I'd give &lt;a id="dns-" href="http://grag.sf.net" title="GRAG"&gt;GRAG&lt;/a&gt; another try.&amp;nbsp; My first whack at generating a web app resulted in several hours of trying to make sense of the user interface and after not using GRAG for a while, I found myself making the same mistakes I made last time. &lt;br /&gt;&lt;br /&gt;In order to generate a web application you need to:&lt;br /&gt;&lt;ul&gt;&lt;li&gt;Define a database connection.&lt;/li&gt;&lt;li&gt;Reverse engineer the entities (domain classes) from the database tables.&lt;/li&gt;&lt;li&gt;Generate the application.&lt;/li&gt;&lt;/ul&gt;&lt;br /&gt;The first and third steps are pretty self evident, but it's not evident that in order to reverse engineer the entities you need to select Add &amp;gt; Entity. &lt;br /&gt;&lt;br /&gt;By default, GRAG does not generate the Controllers for you.&amp;nbsp; However, you can do this by adding your own template to GRAG's &lt;b&gt;templates/grails1/templates/model&lt;/b&gt; directory.&amp;nbsp; In my case I added the simple file shown below to generate Controllers.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;div style="margin-left: 40px;"&gt;#foreach ($entity in $entities)&lt;br /&gt;////File: ./grails-app/controllers/${entity.Name}Controller.groovy&lt;br /&gt;&lt;br /&gt;/**&lt;br /&gt;&amp;nbsp;* The ${entity.Name} Controller.&lt;br /&gt;&amp;nbsp;*&lt;br /&gt;&amp;nbsp;* @author&amp;nbsp; $config.authorText&amp;nbsp; $config.companyText&lt;br /&gt;&amp;nbsp;* @version $Revision: $, $Date: 2006/07/07 20:04:13 $&lt;br /&gt;&amp;nbsp;*&lt;br /&gt;&amp;nbsp;*&lt;br /&gt;&amp;nbsp;*/&lt;br /&gt;class ${entity.Name}Controller {&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; def scaffold = ${entity.Name};&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;#end&lt;br /&gt;&lt;br /&gt;&lt;/div&gt;In my previous project, the schema did not make use of sequences, so the code generation was rather straightforward.&amp;nbsp; However, while generating the code with 1.0 version of GRAG, it created code that grails wouldn't compile.&amp;nbsp; It turned out that the 'sequence' keyword had to be surrounded by quotes and this wasn't the case with the code that it generated.&amp;nbsp; &lt;br /&gt;&lt;br /&gt;I tried downloading the latest version of the &lt;b&gt;Entities.vsl &lt;/b&gt;template, but this was incompatible with the 1.0 release, and ended up generating code that wouldn't compile.&amp;nbsp; I downloaded the code from SourceForge and thought I'd try the latest (and as yet unreleased version of GRAG).&amp;nbsp; This was a particularly interesting experience, since I don't really use maven.&amp;nbsp; It gave me the chance to try out Maven on Ubuntu with the latest version of NetBeans.&amp;nbsp; &lt;br /&gt;&lt;br /&gt;Ubuntu has this nice feature that if you type in the name of a command and if the binary is not available, it will give you the &lt;b&gt;apt-get&lt;/b&gt; command necessary to fetch and install the application you want.&amp;nbsp; So if you type in &amp;quot;mvn&amp;quot;, it tells you to run &amp;quot;sudo apt-get install maven2&amp;quot;.&amp;nbsp; Once it was installed, you simply type &amp;quot;mvn assembly:assembly&amp;quot; and Maven creates a distribution of grag for you -- sweet!&lt;br /&gt;&lt;br /&gt;After building GRAG 1.1 I was able to successfully generate my application, all of the code compiled and I was able to run it without any problems.&amp;nbsp; Can't wait for the official 1.1 release!&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;b&gt;GRAG WishList&lt;/b&gt;&lt;br /&gt;During the course of my project, I noticed a number of a little things that would have made the experience nicer.&lt;br /&gt;&lt;br /&gt;&lt;ul&gt;&lt;li&gt;&lt;b&gt;Support for controller generation:&lt;/b&gt;&amp;nbsp; although it generates Entities pretty well, GRAG won't automatically generate the controllers for you as well.&amp;nbsp; You could do a &amp;quot;grails generate-all&amp;quot; but then it would also generate the user interface views, and initially when developers are working on a project, they're loath to lock-down the user interface, especially if the domain objects are going to be changing pretty frequently.&lt;br /&gt;&lt;/li&gt;&lt;li&gt;&lt;b&gt;Support for packages:&lt;/b&gt; It would be nice to be able to specify the package to be used for the domain objects, and have GRAG automatically generate the appropriate directories.&lt;br /&gt;&lt;/li&gt;&lt;li&gt;&lt;b&gt;Clearer User Interface: &lt;/b&gt;It would be useful if the File menu had two additional menu items -- &amp;quot;Generate &amp;gt; From Database&amp;quot; and &amp;quot;Generate &amp;gt; From Model.&amp;nbsp; The &amp;quot;Generate &amp;gt; From Database&amp;quot; menu item would pull up a simple dialog that allowed you to select a database connection (or create a new one), select the tables that you want to generate, and then generate the application.&amp;nbsp; The &amp;quot;Generate &amp;gt; From Model&amp;quot; menu item would let you select the model and generate the appropriate classes.&lt;br /&gt;&lt;/li&gt;&lt;li&gt;&lt;b&gt;Import database connection information:&lt;/b&gt;&amp;nbsp; It would be nice to be able to import the database connection information directly from a Tomcat server.xml file.&lt;/li&gt;&lt;li&gt;&lt;b&gt;Clearer Help pages:&lt;/b&gt;&amp;nbsp; The help pages that you see through the GRAG Help &amp;gt; Content menu item have some truly painful background colors that make the help pages hard to read.&amp;nbsp; &lt;br /&gt;&lt;/li&gt;&lt;/ul&gt;&lt;br /&gt;&lt;br /&gt;&lt;img src="http://feeds.feedburner.com/~r/jroller/frontpage/~4/Vfy-IproM24" height="1" width="1"/&gt;</description>          <feedburner:origLink>http://www.jroller.com/phidias/entry/generating_a_grails_app_using</feedburner:origLink></item>
    <item>
    <guid isPermaLink="false">http://www.jroller.com/dmdevito/entry/facing_the_wall_of_closure</guid>
    <title>Facing the wall of closure Java (difficult) adoption</title>
    <dc:creator>Dominique De Vito</dc:creator>
    <link>http://feeds.dzone.com/~r/jroller/frontpage/~3/BeuMtmUb8VM/facing_the_wall_of_closure</link>
        <pubDate>Sat, 4 Jul 2009 11:47:33 -0400</pubDate>
    <category>Developer</category>
            <description>&lt;p&gt;
Reading JavaOne'2008 reviews (yes, 2008,
I have started to write first versions of this post mid-2008), 
I have learnt closures may be not adopted
for JDK 7. New closure syntax reduces 'boilerplate'
code, but then, the Java syntax becomes  more complex.
And another layer of complexity is added when generics
are involved. Are the closures a bonanza ? Well, not that much
as many wonders if the benefits really counterbalance the added syntax complexity.
This &lt;a href="http://java.net/pub/pq/196"&gt;poll result&lt;/a&gt;
says nearly 40% of Java developers don't want
closure adoption! So, it looks like closure feature is 
hitting a wall for its adoption.
&lt;/p&gt;

&lt;p&gt;
IMHO, one way to lower the cost paid by users for closure introduction is to adopt type inference.
Then, developers would write less type information (relying more 
on the compiler to do the job), and syntax will be simpler.
The problem is: adopting closures is one step, adopting type inference is another step,
and adopting both, as the same time, while
it would alleviate the closure burden, 
could be too much enough for some developers.
That's why closures may not be adopted within Java
as we know currently this language; in other words,
if closures and type inference were widely introduced and used
into Java, one would not call this language Java again,
but would be keen to use another name to make the day!
Well, introducing those 2 features is just like moving from Java to  C#'s last version,
or even, to F# !
&lt;/p&gt;

&lt;p&gt;
I have written in a previous post, entitled
&lt;a href="http://www.jroller.com/dmdevito/entry/symbiotic_technologies_technologies_live_in"&gt;Symbiotic 
technologies&lt;/a&gt;,
that technologies live in an ecosystem too&lt;/a&gt;.
This post gave a first example about grid technology and virtualisation,
 detailing two main reasons why grid technology needs virtualisation. 
Today, I think type inference and closures are another examples of symbiotic technologies,
i.e. closures need type inference to achieve full power and more use.
Don't get me wrong: closures could play without type inference, but 
IMHO,
it would be harder!
&lt;/p&gt;

&lt;p&gt;
&lt;b&gt;Java closure proposals come at a price!&lt;/b&gt;
Closure are first functions.
And, then,
2 
(&lt;a href="http://www.javac.info/"&gt;BGGA&lt;/a&gt; and 
&lt;a href="http://docs.google.com/View?docid=ddhp95vd_0f7mcns"&gt;FCM&lt;/a&gt;)
of 3 most
known 
closure proposals
(the third one, here, is  
&lt;a href="http://docs.google.com/View?docid=k73_1ggr36h"&gt;CICE&lt;/a&gt;)
lead to treat functions as (new) first-class citizens (according to 
&lt;a href="http://en.wikipedia.org/wiki/Functional_programming"&gt;functional programming&lt;/a&gt;)
that could be, for example,
used as a method argument.
Those 2 proposals
introduce a special new notation for function signature; 
read
&lt;a href="http://www.javaworld.com/javaworld/jw-06-2008/jw-06-closures.html"&gt;Understanding 
the closures debate&lt;/a&gt; 
for details.
This article gives 
the function type &lt;code&gt;{T =&amp;gt; void}&lt;/code&gt; as an example 
for 
&lt;a href="http://www.javac.info/"&gt;BGGA&lt;/a&gt;,
and 
the corresponding
notation 
&lt;code&gt;#(void(T))&lt;/code&gt; 
for 
&lt;a href="http://docs.google.com/View?docid=ddhp95vd_0f7mcns"&gt;FCM&lt;/a&gt;. 
&lt;/p&gt;
&lt;p&gt;
Those notations create a break
with 
the legacy method signature:
methods, which are roughly functions associated with a class,
still are associated with the legacy notation,
while newcomers, that are, functions,
are associated with a new shorter notation
that carries equivalent information!
So, here, closures come as the price of simplicity 
(while not minimizing the number of language concepts 
following
the
&lt;a href="http://en.wikipedia.org/wiki/Occam%27s_Razor"&gt;Occam's razor&lt;/a&gt;).
The other proposal,
&lt;a href="http://docs.google.com/View?docid=k73_1ggr36h"&gt;CICE&lt;/a&gt;,
does not give
the same place to functions, and closure definition
looks like 
concise anonymous class definition. 
But CICE proposal has drawbacks too:
the closure definitions are not so concise, that are, 
longer than with other proposals,
and functional nature of closures
is hidden behind 
anonymous class definitions.
&lt;/p&gt;
 
 &lt;p&gt;
 So, with explicit (static) typing,
 the closure introduction faces a dilemma:
 &lt;br/&gt;
 - if the legacy notation is reused, then closures appear to be heavy,
 &lt;br/&gt;
 - if a new notation is defined, then the language gives the feel of
 a certain lack of coherence.
 &lt;/p&gt; 

&lt;p&gt;
&lt;b&gt;Closure and typing mechanisms do have relationships.&lt;/b&gt;
The fact that 2 over 3 Java closure proposals
introduce a new function signature notation
is a clear hint
that closure and typing are related.
A second hint
is given
through languages already  providing closures:
PHP (5.3) and ML (and its derived childs).
PHP offers
closures
and is a dynamic language.
Here is a simple closure example from 
&lt;a href="http://www.ibm.com/developerworks/opensource/library/os-php-5.3new2/index.html"&gt;What's 
new in PHP V5.3, Part 2: Closures and lambda functions&lt;/a&gt;:
&lt;pre&gt;
$string = "Hello World!";
$closure = function() use ($string) { echo $string; };

$closure();

Output:
Hello World!
&lt;/pre&gt;
And here is a closure returned by a function (that example from 
&lt;a href="http://en.wikipedia.org/wiki/PHP"&gt;wikipedia&lt;/a&gt;):
&lt;pre&gt;
function getAdder($x)
{
    return function ($y) use ($x) {
        return $x + $y;
    };
}
 
$adder = getAdder(8);
echo $adder(2); // prints "10"
&lt;/pre&gt;
ML also provides closures
and has a strong static typing
through type inference.
Here is a simple closure example from 
&lt;a href="http://www.ocaml-tutorial.org/functional_programming"&gt;What
 is functional programming?&lt;/a&gt;
 in OCaml (OCaml is
 derived from ML,
 and has been cloned by Microsoft into
&lt;a href="http://research.microsoft.com/projects/ilx/fsharp.aspx"&gt;F#&lt;/a&gt;
as said
&lt;a href="http://www.jroller.com/dmdevito/entry/thoughts_about_java_c_future"&gt;before&lt;/a&gt;) :
&lt;pre&gt;
# let multiply n list =
  let f x =
    n * x
  in
  List.map f list
  ;;
val multiply : int -&gt; int list -&gt; int list = &amp;lt;fun&amp;gt;
&lt;/pre&gt;
This multiply() function
takes any list of integers and multiply each element by an arbitrary value n.
&lt;/p&gt;


&lt;p&gt;
The function map() is here a function of the module 'List', 
It 
illustrates too how OCaml/F# deal more easily than Java with generics due to type inference.
map() takes a function as argument, 
applies it to each element of an input list and returns a list of results.
The map() function is a 
&lt;a href="http://en.wikipedia.org/wiki/Map_(higher-order_function)"&gt;well-known&lt;/a&gt;
&lt;a href="http://en.wikipedia.org/wiki/Higher-order_function"&gt;higher-order function&lt;/a&gt;.
This function is typed in OCaml/F#, and defined, as below. While translating
type expression into Java, this function might be typed
as "&lt;code&gt;(A-&gt;B) -&gt; List&amp;lt;A&amp;gt; -&gt; List&amp;lt;B&amp;gt;&lt;/code&gt;". 
This function map() is defined
through pattern matching (through &lt;code&gt;match/with&lt;/code&gt; constructor):&lt;br/&gt;
* while taking an empty list [] as input, the result is also an empty list [].&lt;br/&gt;
* if the input value is the list hd::tl (head=hd and tail=tl), the function f() is applied on the head (i.e. "f hd"),
and recursively called on the remaining elements of the tail (i.e. "map f tl").
&lt;pre&gt;
# let rec map f l =
   match l with
     [] -&gt; []
   | hd :: tl -&gt; f hd :: map f tl;;
val map : ('a -&gt; 'b) -&gt; 'a list -&gt; 'b list = &amp;lt;fun&amp;gt;
&lt;/pre&gt;
So, the OCaml/F# compiler has inferred
that this map() function could be apply to any kind of list "l" and then, this argument is typed as " 'a list " (this notation
is similar to &lt;code&gt;List&amp;lt;A&amp;gt;&lt;/code&gt; that is more familiar to Java programmers). 
This is quite different than Java as Java programmers
needs
to make themselves explicit the generics use,
and to type them.
&lt;/p&gt;
&lt;p&gt;
Here is another simple use of this function map():
&lt;pre&gt;
# let square x = string_of_int (x*x) ;;
val square : int -&gt; string = &amp;lt;fun&amp;gt;
# map square [1; 2; 3; 4] ;;
- : string list = ["1"; "4"; "9"; "16"]
&lt;/pre&gt;
&lt;/p&gt;




&lt;p&gt;
From the typing point of view,
dynamic languages
and
languages
with type inference share similar traits:
no type is given
while programming.
They are more typeless than Java.
And these languages
of those families
do provide closures, while Java does not.
&lt;/p&gt;

&lt;p&gt;
So, closure and typing mechanisms do have relationships!
&lt;/p&gt;

&lt;p&gt;
OK, let's go back to Java evolution.
This leads to questions:
&lt;br/&gt;
(1) what JDK 7 is going to bring for paving the way of closure introduction ?
&lt;br/&gt;
(2) what could be Java evolution for closure introduction ?
&lt;/p&gt;

&lt;p&gt;
&lt;b&gt;(1) Coming JDK 7 would not bring some type inference, but notation shortcuts.&lt;/b&gt;
JDK 7 does not aim to introduce closures.
OK.
A question remains: what could be JDK 7 improvements 
for paving the way of closure introduction ?
&lt;/p&gt;
&lt;p&gt;
&lt;a href="http://openjdk.java.net/projects/coin/"&gt;Project coin&lt;/a&gt;
(announced 
&lt;a href="http://blogs.sun.com/darcy/entry/project_coin"&gt;here&lt;/a&gt;)
is aimed
"&lt;i&gt;to determine what set of small language 
changes should be added to JDK 7&lt;/i&gt;".
&lt;a href="http://blogs.sun.com/darcy"&gt;Joe Darcy&lt;/a&gt;
talked about it during JavaOne'2009: see
&lt;a href="http://blogs.sun.com/darcy/resource/JavaOne/J1_2009-TS-4060.pdf"&gt;Small Language
Changes in JDK
Release 7:
Project Coin&lt;/a&gt;.
 Among the features that we might see in JDK 7 is  the 
&lt;em&gt;diamond&lt;/em&gt; operator
that would enable
to construct more easily 
objects involving generics 
(&lt;code&gt;Map&amp;lt;String, List&amp;gt; anagrams = new HashMap&amp;lt;&amp;gt;();&lt;/code&gt;).
This diamond operator provides
a simplification 
of the  
&lt;a href="http://en.wikipedia.org/wiki/Left-hand_side_and_right-hand_side_of_an_equation"&gt;right-hand side&lt;/a&gt; (RHS)
part of the construction instruction.
One alternative
is to simplify the 
&lt;a href="http://en.wikipedia.org/wiki/Left-hand_side_and_right-hand_side_of_an_equation"&gt;left-hand side&lt;/a&gt; (LHS)
and I have written
about it in my post
&lt;a href="http://www.jroller.com/dmdevito/entry/next_jdk_wishlist_1_simplifying"&gt;Next 
JDK wishlist-1: simplifying variable definition&lt;/a&gt; 
(&lt;code&gt;var anagrams = new HashMap&amp;lt;String, List&amp;gt;();&lt;/code&gt;).
&lt;/p&gt;

&lt;p&gt;
Putting the accent on the LHS or the RHS is 
exactly
not the same thing.
The RHS simplification
(&lt;code&gt;Map&amp;lt;String, List&amp;gt; anagrams = new HashMap&amp;lt;&amp;gt;();&lt;/code&gt;).
is a shortcut and that's all.
But, while both simplifications are related to notation shortcuts,
the choice of the LHS
leads better IMHO 
to type inference:
while the first example above
(&lt;code&gt;var anagrams = new HashMap&amp;lt;String, List&amp;gt;();&lt;/code&gt;)
is a LHS shortcut,
others LHS simplification could
put inference on the table, like,
for example,
"&lt;code&gt;var l = 1L;&lt;/code&gt;"
to define a 'long' value.
&lt;/p&gt;


&lt;p&gt;
The LHS simplification seen above
is 
a bit similar to the local type inference of 
&lt;a href="http://www.scala-lang.org/"&gt;Scala&lt;/a&gt;.
The page 
&lt;a href="http://www.scala-lang.org/node/127"&gt;A Tour of Scala: Local Type Inference&lt;/a&gt;
says:
"&lt;i&gt;It is, for instance, often not necessary in Scala to specify 
the type of a variable, since the compiler can deduce the type 
from the initialization expression of the variable&lt;/i&gt;". Here is the given Scala example:
&lt;pre&gt;
object InferenceTest1 extends Application {
  val x = 1 + 2 * 3         // the type of x is Int
  val y = x.toString()      // the type of y is String
  def succ(x: Int) = x + 1  // method succ returns Int values
}
&lt;/pre&gt;
The Scala type inference 
falls quite a bit short of the type inference mechanisms available in other languages, 
such as Haskell and ML (and its derived languages, like 
&lt;a href="http://caml.inria.fr/"&gt;OCaml&lt;/a&gt; 
or 
&lt;a href="http://research.microsoft.com/projects/ilx/fsharp.aspx"&gt;F#&lt;/a&gt;),
provides more a local inference,
but it is quite useful too.
The LHS simplification 
could be seen as an optional static typing,
as 
type inference 
could alleviate the programming burden
while a static typing is still possible.
&lt;/p&gt;

&lt;p&gt;
But let's go back to Java.
&lt;/p&gt;

&lt;p&gt;
JDK 7 improvements are not for paving the way of closure introduction;
and particularly, no type inference is planned to do so.
&lt;/p&gt;

&lt;p&gt;
&lt;b&gt;(2) What could be another Java evolution for closure introduction ?&lt;/b&gt;
Closures have been abandoned for JDK 7
as no proposal
(&lt;a href="http://www.javac.info/"&gt;BGGA&lt;/a&gt;,
&lt;a href="http://docs.google.com/View?docid=k73_1ggr36h"&gt;CICE&lt;/a&gt; and 
&lt;a href="http://docs.google.com/View?docid=ddhp95vd_0f7mcns"&gt;FCM&lt;/a&gt; - 
read
&lt;a href="http://www.javaworld.com/javaworld/jw-06-2008/jw-06-closures.html"&gt;Understanding 
the closures debate&lt;/a&gt; 
for details)
provided unanimity,
so 
let's move a step back,
let's take a look
at
what's going on 
for other languages.
&lt;/p&gt;

&lt;p&gt;
Let's take a look
at C# closures.
According 
to 
"Functional Programming in C# 3.0 using Lambda Expression" 
&lt;a href="http://www.codeproject.com/KB/cs/intro_functional_csharp.aspx"&gt;Part 1&lt;/a&gt;
and
&lt;a href="http://www.codeproject.com/KB/cs/intro_functional_csharp2.aspx"&gt;Part 2&lt;/a&gt;,
it looks like one idea behind
&lt;a href="http://www.javac.info/"&gt;BGGA&lt;/a&gt; and 
&lt;a href="http://docs.google.com/View?docid=ddhp95vd_0f7mcns"&gt;FCM&lt;/a&gt;
closure proposals
is somewhat similar to  
the &lt;code&gt;delegate&lt;/code&gt; concept of C#: 
the new  function notation 
for 
&lt;a href="http://www.javac.info/"&gt;BGGA&lt;/a&gt;,
and 
the corresponding
one
for 
&lt;a href="http://docs.google.com/View?docid=ddhp95vd_0f7mcns"&gt;FCM&lt;/a&gt;,
is like the 
&lt;code&gt;delegate&lt;/code&gt;
 notation in C#.
Here is an example: 
&lt;pre&gt;
// Java-BGGA
{Integer =&gt; void} print = { Integer arg =&gt; System.out.println(arg); }; 

// Java-FCM
#(void(Integer)) print = #(Integer arg) { System.out.println(arg); }; 

// C# 2.0
delegate void print(int x); 
PrintFunc mf = delegate(int x) { Console.WriteLine(x); };
&lt;/pre&gt;
So, closure comparison
is interesting to look at.
&lt;/p&gt;
 
&lt;p&gt;
And surprise, C# 3.0 has introduced some dose of type inference
through the feature 'lambda expression'. 
So, C# 3.0 enables to use lambda expressions written in place of a delegate instance. 
&lt;pre&gt;
delegate int MathFunc(int x); // delegate type

// C# 2.0
MathFunc mf = delegate(int x) { return x * x; }; // anonymous method

// C# 3.0
MathFunc mf = x =&gt; return x * x; // lambda expression in place of delegate instance
&lt;/pre&gt;
And a lambda expression
could be given as argument when a delegate type 
is the argument type:
&lt;pre&gt;
customers.Where(c =&gt; c.City == "London");
&lt;/pre&gt;

&lt;/p&gt;

&lt;p&gt;
The page
&lt;a href="http://msdn.microsoft.com/en-us/library/bb397687.aspx"&gt;Lambda Expressions (C# Programming Guide)&lt;/a&gt;
precises the underlined
typing mechanism:
"&lt;i&gt;When writing lambdas, you often do not have to specify a type for the input parameters 
because the compiler can infer the type based on the lambda body, the underlying delegate type, 
and other factors as described in the C# 3.0 Language Specification&lt;/i&gt;".
[...]
&lt;br/&gt;
"&lt;i&gt;The general rules for lambdas are as follows: 
&lt;br/&gt;
- The lambda must contain the same number of parameters as the delegate type. 
&lt;br/&gt;
- Each input parameter in the lambda must be implicitly convertible to its corresponding delegate parameter. 
&lt;br/&gt;
- The return value of the lambda (if any) must be implicitly convertible to the delegate's return type&lt;/i&gt;".
&lt;/p&gt;

&lt;p&gt;
I really like
the way
C# 
uses type inference,
without sacrificing
 static typing.
&lt;/p&gt;

&lt;p&gt;
Java closure proposals are not associated with type inference.
Here are some details from
&lt;a href="Doc?id=ddhp95vd_6hg3qhc"&gt;FCM v0.5 - First Class Methods&lt;/a&gt;
(&lt;a href="http://docs.google.com/View?docid=ddhp95vd_0f7mcns"&gt;FCM&lt;/a&gt;
closure proposal):
"&lt;i&gt;The &lt;code&gt;Comparator&lt;/code&gt; interface is the standard mechanism in Java to provide the code needed to sort lists. 
Here is a &lt;code&gt;Comparator&lt;/code&gt;  that sorts by length of String:&lt;/i&gt;
&lt;pre&gt;
  List&lt;String&gt; list = ...
  Collections.sort(list, new Comparator&lt;String&gt;() {
    public int compare(String str1, String str2) {
      return str1.length() - str2.length();
    }
  });
&lt;/pre&gt;
&lt;i&gt;With the changes in this proposal, the code could be written as follows:&lt;/i&gt;
&lt;pre&gt;
  List&lt;String&gt; list = ...
  Collections.sort(list, #(String str1, String str2) {
    return str1.length() - str2.length();
  });
&lt;/pre&gt;
A FCM with type inference would lead to a more concise notation:
&lt;pre&gt;
  List&lt;String&gt; list = ...
  Collections.sort(list, (str1, str2) { 
    return str1.length() - str2.length();
  });
&lt;/pre&gt;
Or using the BGGA notation, I rather prefer:
&lt;pre&gt;
  List&lt;String&gt; list = ...
  Collections.sort(list, { str1, str2 =&gt;
    return str1.length() - str2.length();
  });
&lt;/pre&gt;
&lt;/p&gt;

&lt;p&gt;
While such a shorter typeless notation, closures 
appear quite more appealing, 
and one could be more confident 
that Java will stay attractive according to programmers' needs.
&lt;/p&gt;

&lt;p&gt;
So, I see 2 ways for Java.
&lt;/p&gt;

&lt;p&gt;
(2.a)
Closures could be introduced with type inference
through lambda expressions, but without introducing functions (equivalent to delegates).
It would be a matter of type matching (following the C# matching algorithm).
Without functions, closures would be typed as an interface,
similarly to 
&lt;a href="http://www.jroller.com/dmdevito/entry/next_jdk_wishlist_3_a"&gt;Next 
JDK wishlist-3: a first step towards closure into Java&lt;/a&gt;.
To say things differently, methods that would like to take a closure as argument 
would have to type this argument with an interface,
and the lambda expression representing a closure
will be boxed into that interface.
&lt;/p&gt;

&lt;p&gt;
(2.b) Another step for closure support
could be named closures.
(2.a) provides only one way to name a closure: to box it into an interface.
Some current closure proposals give another way through  
introducing a function type. I wonder about the need of 
such a new type if closures are implicitly typed,
or if the compiler just types lately such closures.
Following the idea
&lt;a href="http://www.jroller.com/dmdevito/entry/next_jdk_wishlist_1_simplifying"&gt;Next 
JDK wishlist-1: simplifying variable definition&lt;/a&gt;,
let's imagine the following:
&lt;pre&gt;
var plus = { x1, x2 =&gt; x1 + x2 };
&lt;/pre&gt;
While using such simplified variable definition,
the first idea is to type the RHS and to associate this type with the variable.
OK, I just like an early typing, 
but late typing
could make the day for some cases;
while dealing with closures,
the compiler could try
to type them
according to their uses.
In the current case, the &lt;code&gt;plus&lt;/code&gt; variable
would not be  typed when defined,
but when used as a method call argument;
the compiler would try to type the &lt;code&gt;plus&lt;/code&gt;  closure
while trying to match it 
with the corresponding argument type
of the method.
&lt;/p&gt;

&lt;p&gt;
&lt;b&gt;So, what about closures in Java ?&lt;/b&gt;
Again, IMHO, closure and typing mechanisms do have relationships.
Introducing closures, following one of the current closure proposals,
looks like a hard problem to solve, without considering 
some dose of type inference.
I think one way to solve a problem,
if a solution is hard to find, 
is to look for a solution 
into a bigger solution space. 
Closure proposals are one solution space,
and closure+type inference proposals are
a bigger solution space, I am more in favor with,
just see one of my post
&lt;a href="http://www.jroller.com/dmdevito/entry/next_jdk_wishlist_1_simplifying"&gt;Next 
JDK wishlist-1: simplifying variable definition&lt;/a&gt;.
&lt;/p&gt;

&lt;p&gt;
Well, I am not happy with the way
Java is evolving, 
and 
while comparing,
C# looks like more and more appealing.
IMHO,
it looks like
Java needs not 
a light treatment
for closure introduction,
but a shock treatment
to help the patient not to die,
not to be the next Cobol.
&lt;/p&gt;

&lt;p&gt;
Dynamic languages 
are more and more widely adopted, just think about PHP.
Those languages promote 
closure use 
and a typeless programming.
While Java is a static language,
I don't think Java could avoid for a long time to include some functional traits,
and some dose of type inference.
&lt;/p&gt;

&lt;p&gt;
Well,
I have written 
&lt;a href="http://www.jroller.com/dmdevito/entry/thoughts_about_java_c_future"&gt;Thoughts 
about Java, C# future and OCaml (?) relationships&lt;/a&gt;,
suggesting that Java and C#
were evolving towards ML programming model,
that is, to include some dose of functional features and type inference.
I have written that post in July 2005, 4 years ago!
C# has followed that way. 
Java promoters are still reluctant, 
but
let's see where Java goes.
&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/jroller/frontpage/~4/BeuMtmUb8VM" height="1" width="1"/&gt;</description>          <feedburner:origLink>http://www.jroller.com/dmdevito/entry/facing_the_wall_of_closure</feedburner:origLink></item>
    <item>
    <guid isPermaLink="false">http://www.jroller.com/holy/entry/the_quest_for_a_portal</guid>
    <title>The quest for a portal web framework is over and the winner is: Spring Portlet MVC</title>
    <dc:creator>Jakub Holý (Holy)</dc:creator>
    <link>http://feeds.dzone.com/~r/jroller/frontpage/~3/lCP-kIPGfIM/the_quest_for_a_portal</link>
        <pubDate>Sat, 4 Jul 2009 03:36:36 -0400</pubDate>
    <category>Portlets</category>
    <category>framework</category>
    <category>jsr168</category>
    <category>jsr286</category>
    <category>mvc</category>
    <category>portlet</category>
    <category>spring</category>
    <category>web</category>
            <description>&lt;p&gt;For a long time I've been looking for a web framework that would ease the development of web UI in portlets. Pure JSP is too old-fashioned and the abstraction it provides is just too low-level. There are many good web frameworks for standard web applications (JSF/Seam, GWT, Struts 2, Wicket, you name it...) but if they include portlet support than only as an after-thought and it's usually far behind the quality and features of the standard web framework. Nobody was able to recommend me a decent portlet web framework - until recently.&lt;/p&gt;&lt;p&gt;&amp;nbsp;First I've learned about an upcoming book Portlets in Action by Ashish Sarin, which teaches not only Portlets 2.0 (JSR 286) but also other must-haves for a real world development like a portlet web framework and Ajax (DWR in this case). You've surely already guessed that Ashish uses Spring Portlet MVC, which indicates that it must be indeed good.&lt;/p&gt;&lt;p&gt;Than I've been surprised to learn that my good and trustworthy collegue, &lt;a href="http://www.linkedin.com/in/vladimirschreiner"&gt;Vlado&lt;/a&gt;, is using Spring Portlet MVC on his project. He had but positive words about the framework: &amp;quot;&lt;i&gt;It's excellent, I wouldn't make portlets with anything else. It's enough lightweight, it helps where it should and doesn't limit you anyhow.&lt;/i&gt;&amp;quot;&lt;/p&gt;&lt;p&gt;The only issue is that the current stable release doesn't support JSR286 yet (events, resource serving...). Fortunately the upcoming release of Spring 3.0 will support it. Spring 3.0 &lt;a href="http://blog.springsource.com/2009/05/06/spring-framework-30-m3-released/"&gt;M3 have been released in May&lt;/a&gt; 2009 (more &lt;a href="http://blog.springsource.com/2009/02/25/spring-framework-30-m2-released/"&gt;about Portlet 2.0 support&lt;/a&gt; on M2 release page), RC1 should have been released in June. You can learn about details in the &lt;a href="http://jira.springframework.org/browse/SPR-4259"&gt;corresponding Jira issue&lt;/a&gt;.&lt;/p&gt;&lt;h4&gt;Resources&lt;/h4&gt;&lt;ul&gt;&lt;li&gt;Liferay wiki:&lt;br /&gt;&lt;/li&gt;&lt;ul&gt;&lt;li&gt;&lt;a href="http://www.liferay.com/web/guest/community/wiki/-/wiki/Main/Spring-Hibernate-DWR"&gt;Spring-Hibernate-DWR&lt;/a&gt; - Integrating Spring MVC Portlet 3.0 M2, Hibernate 3.3.1 GA, DWR 3 RC1 and Liferay 5.2.2&lt;/li&gt;&lt;li&gt;&lt;a href="http://www.liferay.com/web/guest/community/wiki/-/wiki/Main/Sample+Spring+Portlet"&gt;Sample Spring Portlet&lt;/a&gt; &lt;br /&gt;&lt;/li&gt;&lt;/ul&gt;&lt;/ul&gt;&lt;img src="http://feeds.feedburner.com/~r/jroller/frontpage/~4/lCP-kIPGfIM" height="1" width="1"/&gt;</description>          <feedburner:origLink>http://www.jroller.com/holy/entry/the_quest_for_a_portal</feedburner:origLink></item>
    <item>
    <guid isPermaLink="false">http://www.jroller.com/aalmiray/entry/groovy_coffe_cup_take_two</guid>
    <title>Groovy Coffe Cup - take two</title>
    <dc:creator>Andres Almiray</dc:creator>
    <link>http://feeds.dzone.com/~r/jroller/frontpage/~3/ZoNp2qq4H0o/groovy_coffe_cup_take_two</link>
        <pubDate>Sat, 4 Jul 2009 03:19:52 -0400</pubDate>
    <category>Groovy</category>
    <category>gfx</category>
    <category>gfxbuilder</category>
    <category>griffon</category>
    <category>groovy</category>
            <description>It's been quite a while since this blog featured information on GraphicsBuilder, I'm pleased to announce that the builder is not dead, it actually has been rebooted with a new name, GfxBuilder, its sources can now be found under the Griffon umbrella project. The last example shown on this blog was GraphicsBuilder's take on a &lt;a href="http://blogs.sun.com/thejavatutorials/entry/javafx_coffee_cup"&gt;JavaFX based example&lt;/a&gt;: &lt;a href="http://jroller.com/aalmiray/entry/groovy_coffee_cup"&gt;a Coffee Cup with Groovy&lt;/a&gt;. As stated on that previous entry there were some kinks to be found on the Groovy version, radial gradients not being able to warp according to its containing shape just to name one. I'm happy to say that no longer is true! here is the updated code with pictures, the first pic corresponds to the older version, the second pic is the newer version.&lt;br/&gt;&lt;br/&gt;&lt;center&gt;
&lt;table&gt;
&lt;tr&gt;&lt;td align="center" valign="top"&gt;&lt;b&gt;OLD&lt;/b&gt;&lt;br/&gt;&lt;img src="http://www.jroller.com/aalmiray/resource/gfxpad-teacup.png"/&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td align="center" valign="top"&gt;&lt;b&gt;NEW&lt;/b&gt;&lt;br/&gt;&lt;img src="http://www.jroller.com/aalmiray/resource/gfx-cup.png"/&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;/table&gt;
&lt;/center&gt;
Notice the slight differences in shadows and colors?&lt;br/&gt;
&lt;textarea name="srccode" class="groovy:nocontrols:nogutter" cols="80" rows="50"&gt;  antialias true
  background("black")
  
  group(id: "plategroup", borderColor: "none") {
    ellipse(cx: 0, cy: 10, rx: 160, ry: 50, f: gfx.color("darkGray").brighter())
    ellipse(cx: 0, cy:  3, rx: 170, ry: 50, f: gfx.color("lavender"))

    ellipse(cx: 0, cy:  0, rx: 170, ry: 50, opacity: 0.5) {
      radialGradient(fy: 100, r: 270) {
        stop(s: 0.0f, c: color("whiteSmoke"))
        stop(s: 0.5f, c: color("lightGray"))
        stop(s: 1.0f, c: color("darkGray"))
      }
    }
    ellipse(cx: 0, cy: 5, rx: 90, ry: 22, opacity: 0.8) {
      radialGradient(r: 180) {
        stop(s: 0.0f, c: color("black"))
        stop(s: 0.4f, c: color("lightGray"))
        stop(s: 1.0f, c: color("white").darker())
      }
    }
    transforms {
      translate(x: 100, y: 120)
    }
  }
  
  group(id: "cupgroup", borderColor: "none") {
    subtract {
      circle(cx: 100, cy: 100, r: 50)
      rect(x: 25, y: 50, w: 150, h: 50)
      radialGradient(r: 100) {
        stop(s: 0.0f, c: color("whiteSmoke"))
        stop(s: 1.0f, c: color("whiteSmoke").darker())
      }
    }
    ellipse(cx: 100, cy: 100, rx: 50, ry: 8, f: color('white'))
    ellipse(cx: 100, cy: 100, rx: 48, ry: 7) {  
      linearGradient(y2: 1){  
        stop(s: 0.0f, c: color("whiteSmoke"))
        stop(s: 1.0f, c: color("whiteSmoke").darker()) 
      }  
    }
    intersect(f: color('darkOrange').darker().darker()) {  
      ellipse(cx: 100, cy: 100, rx: 48, ry: 7)  
      ellipse(cx: 100, cy: 102, rx: 46, ry: 6)  
    }
    transforms {
      scale(x: 1.7, y: 1.9)
      translate(x: -20, y: -53)
    } 
  }&lt;/textarea&gt;The code is a bit shorter this time, note that there is no need for a global translate transform on the top level group, though scaling and translating the cup is a bit tricky, maybe if the cup was drawn initially at the world origin (like the plate is) but the intent was to follow the JavaFX example as closely as possible. A fine addition to groups is the &lt;tt&gt;opacity:&lt;/tt&gt; property, it is applied to all members of the group, in this case it is used to apply a sense of 3D to the plate without actually looking harsh, kind of like a soft shadow so to speak. More news to follow soon, they're &lt;b&gt;&lt;i&gt;bound&lt;/i&gt;&lt;/b&gt; to make you feel &lt;b&gt;&lt;i&gt;animated&lt;/i&gt;&lt;/b&gt; about Groovy &lt;img src="http://www.jroller.com/images/smileys/wink.gif" class="smiley" alt=";-)" title=";-)" /&gt;&lt;br/&gt;&lt;br/&gt;Keep on Groovying!&lt;img src="http://feeds.feedburner.com/~r/jroller/frontpage/~4/ZoNp2qq4H0o" height="1" width="1"/&gt;</description>          <feedburner:origLink>http://www.jroller.com/aalmiray/entry/groovy_coffe_cup_take_two</feedburner:origLink></item>
    <item>
    <guid isPermaLink="false">http://www.jroller.com/Solomon/entry/twitter_posts_for_jul_2</guid>
    <title>Twitter Posts for Jul 2, 2009 - My tweets, REST tweets, Groovytweets</title>
    <dc:creator>Solomon Duskis</dc:creator>
    <link>http://feeds.dzone.com/~r/jroller/frontpage/~3/ncS82OWpRYw/twitter_posts_for_jul_2</link>
        <pubDate>Fri, 3 Jul 2009 08:54:52 -0400</pubDate>
    <category>Java</category>
            <description>&lt;h3 style="clear:both;"&gt;&lt;a href="http://search.twitter.com/search?q=sduskis"&gt;sduskis - Twitter Search&lt;/a&gt;&lt;/h3&gt;
&lt;ul&gt;
&lt;div style="clear:both;"&gt;&lt;img src='http://s3.amazonaws.com/twitter_production/profile_images/64318836/sduskis_normal.jpg' width='48' height='48' align='left' vspace='2' hspace='3'/&gt; &lt;a href="http://twitter.com/sduskis"&gt;@sduskis&lt;/a&gt; (Solomon Duskis): RT &lt;a href="http://twitter.com/bderidder"&gt;@bderidder&lt;/a&gt;: &amp;quot;the only good Enterprise Service Bus (ESB) is a dead ESB&amp;quot; glad there are still sane people around (&lt;a href="http://bit.ly/KgbNA"&gt;http://bit.ly/KgbNA&lt;/a&gt;) (Fri 07:52 AM)&lt;/div&gt;
&lt;div style="clear:both;"&gt;&lt;img src='http://s3.amazonaws.com/twitter_production/profile_images/64318836/sduskis_normal.jpg' width='48' height='48' align='left' vspace='2' hspace='3'/&gt; &lt;a href="http://twitter.com/sduskis"&gt;@sduskis&lt;/a&gt; (Solomon Duskis): HAML looks interesting (Ruby HTML DOM creator).  Is there something like that for &lt;a href="http://search.twitter.com/search?q=%23groovy"&gt;#groovy&lt;/a&gt; &lt;a href="http://search.twitter.com/search?q=%23grails"&gt;#grails&lt;/a&gt;? (Fri 07:50 AM)&lt;/div&gt;
&lt;div style="clear:both;"&gt;&lt;img src='http://s3.amazonaws.com/twitter_production/profile_images/64318836/sduskis_normal.jpg' width='48' height='48' align='left' vspace='2' hspace='3'/&gt; &lt;a href="http://twitter.com/sduskis"&gt;@sduskis&lt;/a&gt; (Solomon Duskis): &lt;a href="http://twitter.com/lpolycarpou"&gt;@lpolycarpou&lt;/a&gt; JAX-RS as MVC framework... You're not the first.  There are some limitations, like request attribute/session management. (Fri 07:33 AM)&lt;/div&gt;
&lt;div style="clear:both;"&gt;&lt;img src='http://s3.amazonaws.com/twitter_production/profile_images/64318836/sduskis_normal.jpg' width='48' height='48' align='left' vspace='2' hspace='3'/&gt; &lt;a href="http://twitter.com/sduskis"&gt;@sduskis&lt;/a&gt; (Solomon Duskis): &lt;a href="http://twitter.com/jsbournival"&gt;@jsbournival&lt;/a&gt; try javax.ws.rs.core.MediaType.  It has a whole bunch of mime-type constants. (Thu 07:20 PM)&lt;/div&gt;
&lt;div style="clear:both;"&gt;&lt;img src='http://s3.amazonaws.com/twitter_production/profile_images/268022976/gt_twitter_normal.png' width='48' height='48' align='left' vspace='2' hspace='3'/&gt; &lt;a href="http://twitter.com/groovytweets"&gt;@groovytweets&lt;/a&gt; (groovytweets): RT &lt;a href="http://twitter.com/sduskis"&gt;@&lt;b&gt;sduskis&lt;/b&gt;&lt;/a&gt;: Simple Zip utility writen in &lt;a href="http://search.twitter.com/search?q=%23groovy"&gt;#groovy&lt;/a&gt;:  &lt;a href="http://bit.ly/J7D04"&gt;http://bit.ly/J7D04&lt;/a&gt; (Thu 03:56 PM)&lt;/div&gt;
&lt;div style="clear:both;"&gt;&lt;img src='http://s3.amazonaws.com/twitter_production/profile_images/58963009/podcast_logo_transparent_normal.png' width='48' height='48' align='left' vspace='2' hspace='3'/&gt; &lt;a href="http://twitter.com/grailspodcast"&gt;@grailspodcast&lt;/a&gt; (grailspodcast): RT &lt;a href="http://twitter.com/sduskis"&gt;@&lt;b&gt;sduskis&lt;/b&gt;&lt;/a&gt;: Simple Zip utility writen in &lt;a href="http://search.twitter.com/search?q=%23groovy"&gt;#groovy&lt;/a&gt;:  &lt;a href="http://bit.ly/J7D04"&gt;http://bit.ly/J7D04&lt;/a&gt; (Thu 03:55 PM)&lt;/div&gt;
&lt;div style="clear:both;"&gt;&lt;img src='http://s3.amazonaws.com/twitter_production/profile_images/64318836/sduskis_normal.jpg' width='48' height='48' align='left' vspace='2' hspace='3'/&gt; &lt;a href="http://twitter.com/sduskis"&gt;@sduskis&lt;/a&gt; (Solomon Duskis): Simple Zip utility writen in &lt;a href="http://search.twitter.com/search?q=%23groovy"&gt;#groovy&lt;/a&gt;:  &lt;a href="http://bit.ly/J7D04"&gt;http://bit.ly/J7D04&lt;/a&gt; (Thu 03:20 PM)&lt;/div&gt;
&lt;div style="clear:both;"&gt;&lt;img src='http://s3.amazonaws.com/twitter_production/profile_images/64318836/sduskis_normal.jpg' width='48' height='48' align='left' vspace='2' hspace='3'/&gt; &lt;a href="http://twitter.com/sduskis"&gt;@sduskis&lt;/a&gt; (Solomon Duskis): Simple zip file written in &lt;a href="http://search.twitter.com/search?q=%23groovy"&gt;#groovy&lt;/a&gt;:  &lt;a href="http://bit.ly/J7D04"&gt;http://bit.ly/J7D04&lt;/a&gt; (Thu 03:19 PM)&lt;/div&gt;
&lt;div style="clear:both;"&gt;&lt;img src='http://s3.amazonaws.com/twitter_production/profile_images/64318836/sduskis_normal.jpg' width='48' height='48' align='left' vspace='2' hspace='3'/&gt; &lt;a href="http://twitter.com/sduskis"&gt;@sduskis&lt;/a&gt; (Solomon Duskis): Blog of Twitter posts I care about for 7/1/09 -  &lt;a href="http://bit.ly/d7m7A"&gt;http://bit.ly/d7m7A&lt;/a&gt;.  I used RSS feeds and 90 lines of &lt;a href="http://search.twitter.com/search?q=%23Groovy"&gt;#Groovy&lt;/a&gt;. (Thu 09:50 AM)&lt;/div&gt;
&lt;/ul&gt;



&lt;h3 style="clear:both;"&gt;&lt;a href="http://search.twitter.com/search?q=Sungard+OR+%23WHN"&gt;Sungard OR #WHN - Twitter Search&lt;/a&gt;&lt;/h3&gt;
&lt;ul&gt;
&lt;div style="clear:both;"&gt;&lt;img src='http://static.twitter.com/images/default_profile_normal.png' width='48' height='48' align='left' vspace='2' hspace='3'/&gt; &lt;a href="http://twitter.com/ChrisShain"&gt;@ChrisShain&lt;/a&gt; (Chris Shain): Besides virtualized infrastructure, what support does your cloud platform deliver for the developer? Or is it just virtual datacenter? &lt;a href="http://search.twitter.com/search?q=%23whn"&gt;&lt;b&gt;#whn&lt;/b&gt;&lt;/a&gt; (Thu 10:41 PM)&lt;/div&gt;
&lt;div style="clear:both;"&gt;&lt;img src='http://s3.amazonaws.com/twitter_production/profile_images/282366969/issary_Twitter_pic_normal.jpg' width='48' height='48' align='left' vspace='2' hspace='3'/&gt; &lt;a href="http://twitter.com/imalba"&gt;@imalba&lt;/a&gt; (Issary Alba): Got the internship with &lt;b&gt;SunGard&lt;/b&gt;!!!!! Customer Analysis in the Brass/Liquidity Services Group. (Thu 08:30 PM)&lt;/div&gt;
&lt;div style="clear:both;"&gt;&lt;img src='http://s3.amazonaws.com/twitter_production/profile_images/154373896/tw6-JohnAvery74CwebBW_normal.jpg' width='48' height='48' align='left' vspace='2' hspace='3'/&gt; &lt;a href="http://twitter.com/john_avery"&gt;@john_avery&lt;/a&gt; (John Avery): DTCC role(s) in CCP Proposals - &lt;a href="http://tinyurl.com/kt2vgc"&gt;http://tinyurl.com/kt2vgc&lt;/a&gt; - &lt;a href="http://search.twitter.com/search?q=%23whn"&gt;&lt;b&gt;#whn&lt;/b&gt;&lt;/a&gt; (Thu 04:35 PM)&lt;/div&gt;
&lt;div style="clear:both;"&gt;&lt;img src='http://s3.amazonaws.com/twitter_production/profile_images/133211108/rfpconnect_normal.jpg' width='48' height='48' align='left' vspace='2' hspace='3'/&gt; &lt;a href="http://twitter.com/rfpconnect"&gt;@rfpconnect&lt;/a&gt; (RFPConnect): &lt;b&gt;SunGard&lt;/b&gt;'s Ambit Refines Data And Reporting Of Surrenda-Link &lt;a href="http://bit.ly/IgHPj"&gt;http://bit.ly/IgHPj&lt;/a&gt; (Thu 08:37 AM)&lt;/div&gt;
&lt;/ul&gt;



&lt;h3 style="clear:both;"&gt;&lt;a href="http://www.groovytweets.org"&gt;groovytweets ::: latest tweets&lt;/a&gt;&lt;/h3&gt;
&lt;ul&gt;
&lt;div style="clear:both;"&gt;&lt;img src='http://s3.amazonaws.com/twitter_production/profile_images/66001032/portrait_bs_sw_normal.jpg' width='48' height='48' align='left' vspace='2' hspace='3'/&gt; &lt;a href="http://twitter.com/berndschiffer"&gt;@berndschiffer&lt;/a&gt; (Bernd Schiffer): Argh, &lt;a href="http://grails.org"&gt;http://grails.org&lt;/a&gt; down &lt;img src="http://www.jroller.com/images/smileys/sad.gif" class="smiley" alt=":(" title=":(" /&gt; &lt;a href="http://search.twitter.com/search?q=%23ppfgb"&gt;#ppfgb&lt;/a&gt; &lt;a href="http://search.twitter.com/search?q=%23grails"&gt;#grails&lt;/a&gt; (Fri 06:52 AM)&lt;/div&gt;
&lt;div style="clear:both;"&gt;&lt;img src='http://s3.amazonaws.com/twitter_production/profile_images/67642057/FotoConf_normal.jpg' width='48' height='48' align='left' vspace='2' hspace='3'/&gt; &lt;a href="http://twitter.com/vaclav_pech"&gt;@vaclav_pech&lt;/a&gt; (vaclav_pech): &lt;a href="http://twitter.com/groovymag"&gt;@groovymag&lt;/a&gt; Sure, very well written. Thank you and Jorge. Much appreciated. (Fri 06:52 AM)&lt;/div&gt;
&lt;div style="clear:both;"&gt;&lt;img src='http://s3.amazonaws.com/twitter_production/profile_images/63037301/twitter_logo2_normal.png' width='48' height='48' align='left' vspace='2' hspace='3'/&gt; &lt;a href="http://twitter.com/groovymag"&gt;@groovymag&lt;/a&gt; (groovymag): July 2009 GroovyMag is available. Makes great holiday weekend reading for you US folks &lt;img src="http://www.jroller.com/images/smileys/wink.gif" class="smiley" alt=";)" title=";)" /&gt; &lt;a href="http://groovymag.com/latest"&gt;http://groovymag.com/latest&lt;/a&gt; (Fri 06:50 AM)&lt;/div&gt;
&lt;div style="clear:both;"&gt;&lt;img src='http://s3.amazonaws.com/twitter_production/profile_images/30749512/MyPicture_normal.jpg' width='48' height='48' align='left' vspace='2' hspace='3'/&gt; &lt;a href="http://twitter.com/snaglepus"&gt;@snaglepus&lt;/a&gt; (Robbie James): &lt;a href="http://twitter.com/wangjammer5"&gt;@wangjammer5&lt;/a&gt;  can't you just: def index = { redirect(action: list, params: params, flash:flash) }// if you need to? &lt;a href="http://search.twitter.com/search?q=%23grails"&gt;#grails&lt;/a&gt; (Fri 06:19 AM)&lt;/div&gt;
&lt;div style="clear:both;"&gt;&lt;img src='http://s3.amazonaws.com/twitter_production/profile_images/65526272/Pirate_Marc_normal.jpg' width='48' height='48' align='left' vspace='2' hspace='3'/&gt; &lt;a href="http://twitter.com/wangjammer5"&gt;@wangjammer5&lt;/a&gt; (Marc Palmer): Avoid this at all costs in Grails:  def index = { redirect(action: list, params: params) } // you lose anything in flash scope. (Fri 06:00 AM)&lt;/div&gt;
&lt;div style="clear:both;"&gt;&lt;img src='http://s3.amazonaws.com/twitter_production/profile_images/65526272/Pirate_Marc_normal.jpg' width='48' height='48' align='left' vspace='2' hspace='3'/&gt; &lt;a href="http://twitter.com/wangjammer5"&gt;@wangjammer5&lt;/a&gt; (Marc Palmer): Thinking I need to find a way to have nav items from multiple controllers appear under same main heading in nav plugin. Tricky (Fri 05:54 AM)&lt;/div&gt;
&lt;div style="clear:both;"&gt;&lt;img src='http://s3.amazonaws.com/twitter_production/profile_images/65526272/Pirate_Marc_normal.jpg' width='48' height='48' align='left' vspace='2' hspace='3'/&gt; &lt;a href="http://twitter.com/wangjammer5"&gt;@wangjammer5&lt;/a&gt; (Marc Palmer): LMAO oh how disgusting of me. I just thought "Wouldn't it be GREAT if there was a groovy impl written in Javascript". Client side groovy. (Fri 05:29 AM)&lt;/div&gt;
&lt;div style="clear:both;"&gt;&lt;img src='http://s3.amazonaws.com/twitter_production/profile_images/66001032/portrait_bs_sw_normal.jpg' width='48' height='48' align='left' vspace='2' hspace='3'/&gt; &lt;a href="http://twitter.com/berndschiffer"&gt;@berndschiffer&lt;/a&gt; (Bernd Schiffer): Versuche, &lt;a href="http://search.twitter.com/search?q=%23grails"&gt;#grails&lt;/a&gt; auf &lt;a href="http://search.twitter.com/search?q=%23hudson"&gt;#hudson&lt;/a&gt; via &lt;a href="http://search.twitter.com/search?q=%23ant"&gt;#ant&lt;/a&gt; und &lt;a href="http://search.twitter.com/search?q=%23ivy"&gt;#ivy&lt;/a&gt; zum Laufen zu bekommen. Kennt da jemand gute Online-Referenz zu? &lt;a href="http://search.twitter.com/search?q=%23ppfgb"&gt;#ppfgb&lt;/a&gt; (Fri 05:12 AM)&lt;/div&gt;
&lt;div style="clear:both;"&gt;&lt;img src='http://s3.amazonaws.com/twitter_production/profile_images/65526272/Pirate_Marc_normal.jpg' width='48' height='48' align='left' vspace='2' hspace='3'/&gt; &lt;a href="http://twitter.com/wangjammer5"&gt;@wangjammer5&lt;/a&gt; (Marc Palmer): &lt;a href="http://twitter.com/wmacgyver"&gt;@wmacgyver&lt;/a&gt; Yep. We all need to throw the Grails dev team a bone. The fact is you only hit the problems later. (Fri 05:12 AM)&lt;/div&gt;
&lt;div style="clear:both;"&gt;&lt;img src='http://s3.amazonaws.com/twitter_production/profile_images/66001032/portrait_bs_sw_normal.jpg' width='48' height='48' align='left' vspace='2' hspace='3'/&gt; &lt;a href="http://twitter.com/berndschiffer"&gt;@berndschiffer&lt;/a&gt; (Bernd Schiffer): Erfolgreich von Grails 1.1-RC1 auf Grails 1.1.1 geupgradet. Lokal. Webtests zeigten Differenzen, konnte aber schnell gefixt werden. &lt;a href="http://search.twitter.com/search?q=%23ppfgb"&gt;#ppfgb&lt;/a&gt; (Fri 05:11 AM)&lt;/div&gt;
&lt;div style="clear:both;"&gt;&lt;img src='http://s3.amazonaws.com/twitter_production/profile_images/67746684/oogami_face_normal.gif' width='48' height='48' align='left' vspace='2' hspace='3'/&gt; &lt;a href="http://twitter.com/wmacgyver"&gt;@wmacgyver&lt;/a&gt; (Mac): &lt;a href="http://twitter.com/wangjammer5"&gt;@wangjammer5&lt;/a&gt; agreed, all the people whined about grails 1.1.1's current bugs on the list, they better step up, try 1.2M1 and AT LEAST report (Fri 05:02 AM)&lt;/div&gt;
&lt;div style="clear:both;"&gt;&lt;img src='http://s3.amazonaws.com/twitter_production/profile_images/65526272/Pirate_Marc_normal.jpg' width='48' height='48' align='left' vspace='2' hspace='3'/&gt; &lt;a href="http://twitter.com/wangjammer5"&gt;@wangjammer5&lt;/a&gt; (Marc Palmer): New blog post about why Grails users need to download 1.2M1 now and use it. &lt;a href="http://bit.ly/TWpJJ"&gt;http://bit.ly/TWpJJ&lt;/a&gt; (Fri 04:57 AM)&lt;/div&gt;
&lt;div style="clear:both;"&gt;&lt;img src='http://s3.amazonaws.com/twitter_production/profile_images/67642057/FotoConf_normal.jpg' width='48' height='48' align='left' vspace='2' hspace='3'/&gt; &lt;a href="http://twitter.com/vaclav_pech"&gt;@vaclav_pech&lt;/a&gt; (vaclav_pech): The recent &lt;a href="http://twitter.com/groovymag"&gt;@groovymag&lt;/a&gt; covers GParallelizer. Check it out! (Fri 03:07 AM)&lt;/div&gt;
&lt;div style="clear:both;"&gt;&lt;img src='http://s3.amazonaws.com/twitter_production/profile_images/52661421/sven.haiges_normal.jpg' width='48' height='48' align='left' vspace='2' hspace='3'/&gt; &lt;a href="http://twitter.com/hansamann"&gt;@hansamann&lt;/a&gt; (Sven Haiges): thx &lt;a href="http://twitter.com/ecspike"&gt;@ecspike&lt;/a&gt; for helping me with google charting. Updated groovytweets popularity chart: &lt;a href="http://bit.ly/QSPsa"&gt;http://bit.ly/QSPsa&lt;/a&gt; (Fri 02:37 AM)&lt;/div&gt;
&lt;div style="clear:both;"&gt;&lt;img src='http://s3.amazonaws.com/twitter_production/profile_images/66001032/portrait_bs_sw_normal.jpg' width='48' height='48' align='left' vspace='2' hspace='3'/&gt; &lt;a href="http://twitter.com/berndschiffer"&gt;@berndschiffer&lt;/a&gt; (Bernd Schiffer): One might want to respond to that (&lt;a href="http://twitter.com/graemerocher"&gt;@graemerocher&lt;/a&gt;? &lt;a href="http://twitter.com/mittie"&gt;@mittie&lt;/a&gt;?) : via &lt;a href="http://twitter.com/cretzel"&gt;@cretzel&lt;/a&gt;: Blog about &lt;a href="http://search.twitter.com/search?q=%23java"&gt;#java&lt;/a&gt;, &lt;a href="http://search.twitter.com/search?q=%23scala"&gt;#scala&lt;/a&gt;, &lt;a href="http://search.twitter.com/search?q=%23groovy"&gt;#groovy&lt;/a&gt; benchmark &lt;a href="http://trunc.it/p325"&gt;http://trunc.it/p325&lt;/a&gt; (Fri 02:23 AM)&lt;/div&gt;
&lt;div style="clear:both;"&gt;&lt;img src='http://s3.amazonaws.com/twitter_production/profile_images/52661421/sven.haiges_normal.jpg' width='48' height='48' align='left' vspace='2' hspace='3'/&gt; &lt;a href="http://twitter.com/hansamann"&gt;@hansamann&lt;/a&gt; (Sven Haiges): Done quick-reading Dave Klein's GQuick: 196 pages, great for devs beginning with Grails and looking for a hands-on guide (Fri 02:04 AM)&lt;/div&gt;
&lt;div style="clear:both;"&gt;&lt;img src='http://s3.amazonaws.com/twitter_production/profile_images/67746684/oogami_face_normal.gif' width='48' height='48' align='left' vspace='2' hspace='3'/&gt; &lt;a href="http://twitter.com/wmacgyver"&gt;@wmacgyver&lt;/a&gt; (Mac): &lt;a href="http://twitter.com/vaclav_pech"&gt;@vaclav_pech&lt;/a&gt; should really bring the excellent google collections into groovy core and encourage immutable usage via mapmaker (Fri 02:02 AM)&lt;/div&gt;
&lt;div style="clear:both;"&gt;&lt;img src='http://s3.amazonaws.com/twitter_production/profile_images/182707222/n627741795_676719_1458_normal.jpg' width='48' height='48' align='left' vspace='2' hspace='3'/&gt; &lt;a href="http://twitter.com/russmiles"&gt;@russmiles&lt;/a&gt; (Russ Miles): Wishing I could figure out a way to scope Grails plugin dependencies like you can in Maven. Want to call a test dependency what it is! (Fri 01:48 AM)&lt;/div&gt;
&lt;div style="clear:both;"&gt;&lt;img src='http://s3.amazonaws.com/twitter_production/profile_images/67746684/oogami_face_normal.gif' width='48' height='48' align='left' vspace='2' hspace='3'/&gt; &lt;a href="http://twitter.com/wmacgyver"&gt;@wmacgyver&lt;/a&gt; (Mac): &lt;a href="http://twitter.com/vaclav_pech"&gt;@vaclav_pech&lt;/a&gt; so basically you are setting up agent as actor that accept a groovy closure? (Fri 01:38 AM)&lt;/div&gt;
&lt;div style="clear:both;"&gt;&lt;img src='http://s3.amazonaws.com/twitter_production/profile_images/67642057/FotoConf_normal.jpg' width='48' height='48' align='left' vspace='2' hspace='3'/&gt; &lt;a href="http://twitter.com/vaclav_pech"&gt;@vaclav_pech&lt;/a&gt; (vaclav_pech): First thoughts on the Clojure-inspired Agents in GParallelizer, please comment - &lt;a href="http://code.google.com/p/gparallelizer/wiki/SafeVariables"&gt;http://code.google.com/p/gparallelizer/wiki/SafeVariables&lt;/a&gt; (Fri 01:34 AM)&lt;/div&gt;
&lt;div style="clear:both;"&gt;&lt;img src='http://s3.amazonaws.com/twitter_production/profile_images/67642057/FotoConf_normal.jpg' width='48' height='48' align='left' vspace='2' hspace='3'/&gt; &lt;a href="http://twitter.com/vaclav_pech"&gt;@vaclav_pech&lt;/a&gt; (vaclav_pech): Did anyone try the IntelliJ IDEA Clojure plugin? It works fine for me, but I've just made my first small step into the language. (Fri 12:46 AM)&lt;/div&gt;
&lt;div style="clear:both;"&gt;&lt;img src='http://s3.amazonaws.com/twitter_production/profile_images/52661421/sven.haiges_normal.jpg' width='48' height='48' align='left' vspace='2' hspace='3'/&gt; &lt;a href="http://twitter.com/hansamann"&gt;@hansamann&lt;/a&gt; (Sven Haiges): Beginning to read 'Grails - A Quick-Start Guide' by Dave Klein. Promises to be a great book. (Fri 12:45 AM)&lt;/div&gt;
&lt;div style="clear:both;"&gt;&lt;img src='http://s3.amazonaws.com/twitter_production/profile_images/52661421/sven.haiges_normal.jpg' width='48' height='48' align='left' vspace='2' hspace='3'/&gt; &lt;a href="http://twitter.com/hansamann"&gt;@hansamann&lt;/a&gt; (Sven Haiges): groovytweets now has a twitter user popularity chart, pls retweet. &lt;a href="http://bit.ly/1dE6V"&gt;http://bit.ly/1dE6V&lt;/a&gt; (Thu 11:43 PM)&lt;/div&gt;
&lt;div style="clear:both;"&gt;&lt;img src='http://s3.amazonaws.com/twitter_production/profile_images/284461078/me_normal.jpg' width='48' height='48' align='left' vspace='2' hspace='3'/&gt; &lt;a href="http://twitter.com/seantindale"&gt;@seantindale&lt;/a&gt; (Sean Tindale): GraniteDS Flex Plugin for &lt;a href="http://search.twitter.com/search?q=%23Grails"&gt;#Grails&lt;/a&gt; . Holy cow! I wish this was around 1 year ago.  Very temped to redo my interface (Thu 10:36 PM)&lt;/div&gt;
&lt;div style="clear:both;"&gt;&lt;img src='http://s3.amazonaws.com/twitter_production/profile_images/53706953/dklein_normal.JPG' width='48' height='48' align='left' vspace='2' hspace='3'/&gt; &lt;a href="http://twitter.com/daveklein"&gt;@daveklein&lt;/a&gt; (daveklein): Grails: A Quick-Start Guide Beta 4, containing all 12 chapters, is available!  You can find it at &lt;a href="http://tinyurl.com/md646f"&gt;http://tinyurl.com/md646f&lt;/a&gt;  &lt;a href="http://search.twitter.com/search?q=%23grails"&gt;#grails&lt;/a&gt; (Thu 10:01 PM)&lt;/div&gt;
&lt;div style="clear:both;"&gt;&lt;img src='http://s3.amazonaws.com/twitter_production/profile_images/69922109/avatarpic-m_normal.png' width='48' height='48' align='left' vspace='2' hspace='3'/&gt; &lt;a href="http://twitter.com/shemnon"&gt;@shemnon&lt;/a&gt; (Danno Ferrin): &lt;a href="http://twitter.com/spidie"&gt;@spidie&lt;/a&gt; We haven't truly arrived until we see a "&lt;a href="http://search.twitter.com/search?q=%23Griffon"&gt;#Griffon&lt;/a&gt; is teh suck" post on a blog.  That post was genuine concern, so not quite. (Thu 09:36 PM)&lt;/div&gt;
&lt;div style="clear:both;"&gt;&lt;img src='http://s3.amazonaws.com/twitter_production/profile_images/70224019/groovyjobs_normal.jpg' width='48' height='48' align='left' vspace='2' hspace='3'/&gt; &lt;a href="http://twitter.com/GroovyJobs"&gt;@GroovyJobs&lt;/a&gt; (Groovy Jobs): Blog News : Groovy Templating Follow-Up &lt;a href="http://minurl.org/kVU1"&gt;http://minurl.org/kVU1&lt;/a&gt; (Thu 09:00 PM)&lt;/div&gt;
&lt;div style="clear:both;"&gt;&lt;img src='http://s3.amazonaws.com/twitter_production/profile_images/135785685/steve_normal.jpg' width='48' height='48' align='left' vspace='2' hspace='3'/&gt; &lt;a href="http://twitter.com/spidie"&gt;@spidie&lt;/a&gt; (Steve Dalton): I know that post to the &lt;a href="http://search.twitter.com/search?q=%23griffon"&gt;#griffon&lt;/a&gt; list was a little dumb, but I really like seeing these posts and the awesome community responses. (Thu 08:35 PM)&lt;/div&gt;
&lt;div style="clear:both;"&gt;&lt;img src='http://s3.amazonaws.com/twitter_production/profile_images/207201587/griffon-icon-48x48_normal.png' width='48' height='48' align='left' vspace='2' hspace='3'/&gt; &lt;a href="http://twitter.com/theaviary"&gt;@theaviary&lt;/a&gt; (Griffon Framework): blog post: "Griffon Action Patterns" &lt;a href="http://tinyurl.com/krurrb"&gt;http://tinyurl.com/krurrb&lt;/a&gt; by &lt;a href="http://twitter.com/joshareed"&gt;@joshareed&lt;/a&gt; discuss! (Thu 08:03 PM)&lt;/div&gt;
&lt;div style="clear:both;"&gt;&lt;img src='http://s3.amazonaws.com/twitter_production/profile_images/88530609/avatar_normal.JPG' width='48' height='48' align='left' vspace='2' hspace='3'/&gt; &lt;a href="http://twitter.com/joshareed"&gt;@joshareed&lt;/a&gt; (Josh Reed): Brought my blog back to life after a several month hiatus to talk about working with actions in &lt;a href="http://search.twitter.com/search?q=%23griffon"&gt;#griffon&lt;/a&gt;: &lt;a href="http://tinyurl.com/krurrb"&gt;http://tinyurl.com/krurrb&lt;/a&gt; (Thu 07:54 PM)&lt;/div&gt;
&lt;div style="clear:both;"&gt;&lt;img src='http://s3.amazonaws.com/twitter_production/profile_images/52661421/sven.haiges_normal.jpg' width='48' height='48' align='left' vspace='2' hspace='3'/&gt; &lt;a href="http://twitter.com/hansamann"&gt;@hansamann&lt;/a&gt; (Sven Haiges): Did you already click the groovytweets ad banner today? &lt;img src="http://www.jroller.com/images/smileys/smile.gif" class="smiley" alt=":-)" title=":-)" /&gt; Wink. (Thu 06:45 PM)&lt;/div&gt;
&lt;div style="clear:both;"&gt;&lt;img src='http://s3.amazonaws.com/twitter_production/profile_images/41047252/dima_normal.jpg' width='48' height='48' align='left' vspace='2' hspace='3'/&gt; &lt;a href="http://twitter.com/dima767"&gt;@dima767&lt;/a&gt; (Dmitriy Kopylenko): :&lt;a href="http://twitter.com/aalmiray"&gt;@aalmiray&lt;/a&gt; Make that Groovy/Erlang/Haskell/Scala/Clojure/ObjC (iPhone) &lt;img src="http://www.jroller.com/images/smileys/smile.gif" class="smiley" alt=":-)" title=":-)" /&gt; I wish. My wife is working tonight and I'm entertainin' daughter (Thu 06:08 PM)&lt;/div&gt;
&lt;div style="clear:both;"&gt;&lt;img src='http://s3.amazonaws.com/twitter_production/profile_images/52147140/aalmiray_normal.jpg' width='48' height='48' align='left' vspace='2' hspace='3'/&gt; &lt;a href="http://twitter.com/aalmiray"&gt;@aalmiray&lt;/a&gt; (Andres Almiray): &lt;a href="http://twitter.com/dima767"&gt;@dima767&lt;/a&gt; that means you now have extra time to hack around some Groovy/Grails/Erlang/Haskell code, right? (Thu 06:03 PM)&lt;/div&gt;
&lt;div style="clear:both;"&gt;&lt;img src='http://s3.amazonaws.com/twitter_production/profile_images/52147140/aalmiray_normal.jpg' width='48' height='48' align='left' vspace='2' hspace='3'/&gt; &lt;a href="http://twitter.com/aalmiray"&gt;@aalmiray&lt;/a&gt; (Andres Almiray): Griffon @ Silicon Valley Web JUG &lt;a href="http://ff.im/-4JnCi"&gt;http://ff.im/-4JnCi&lt;/a&gt; (Thu 05:31 PM)&lt;/div&gt;
&lt;div style="clear:both;"&gt;&lt;img src='http://s3.amazonaws.com/twitter_production/profile_images/64768663/shawn_2_2_normal.jpg' width='48' height='48' align='left' vspace='2' hspace='3'/&gt; &lt;a href="http://twitter.com/hartsock"&gt;@hartsock&lt;/a&gt; (Shawn Hartsock): Well this sucks... I can't release the fixes for GRAILSPLUGINS-1181 and GRAILSPLUGINS-391 because of some strange SVN bug. (Thu 05:28 PM)&lt;/div&gt;
&lt;div style="clear:both;"&gt;&lt;img src='http://s3.amazonaws.com/twitter_production/profile_images/81312648/3298827519_3729ef1614_o_normal.jpg' width='48' height='48' align='left' vspace='2' hspace='3'/&gt; &lt;a href="http://twitter.com/ecspike"&gt;@ecspike&lt;/a&gt; (James Williams): just pushed &lt;a href="http://search.twitter.com/search?q=%23grails"&gt;#grails&lt;/a&gt; google-chart-plugin v0.5.1, thx to James Beamish-White for the patch &lt;a href="http://search.twitter.com/search?q=%23groovy"&gt;#groovy&lt;/a&gt; (Thu 05:15 PM)&lt;/div&gt;
&lt;div style="clear:both;"&gt;&lt;img src='http://s3.amazonaws.com/twitter_production/profile_images/67746684/oogami_face_normal.gif' width='48' height='48' align='left' vspace='2' hspace='3'/&gt; &lt;a href="http://twitter.com/wmacgyver"&gt;@wmacgyver&lt;/a&gt; (Mac): very close to abandoning &lt;a href="http://search.twitter.com/search?q=%23eclipse"&gt;#eclipse&lt;/a&gt; 3.5, the new UI for install/update plugin is unusable. checking to see if there is new update is a chore. (Thu 05:08 PM)&lt;/div&gt;
&lt;div style="clear:both;"&gt;&lt;img src='http://s3.amazonaws.com/twitter_production/profile_images/285653146/newprofile_normal.png' width='48' height='48' align='left' vspace='2' hspace='3'/&gt; &lt;a href="http://twitter.com/lucastex"&gt;@lucastex&lt;/a&gt; (Lucas Teixeira): Love &lt;a href="http://search.twitter.com/search?q=%23groovy"&gt;#groovy&lt;/a&gt; builders... (Thu 04:48 PM)&lt;/div&gt;
&lt;div style="clear:both;"&gt;&lt;img src='http://s3.amazonaws.com/twitter_production/profile_images/64768663/shawn_2_2_normal.jpg' width='48' height='48' align='left' vspace='2' hspace='3'/&gt; &lt;a href="http://twitter.com/hartsock"&gt;@hartsock&lt;/a&gt; (Shawn Hartsock): I remember now ... GRAILSPLUGINS-391 ... is a really sticky wicket. *grief* (Thu 04:42 PM)&lt;/div&gt;
&lt;div style="clear:both;"&gt;&lt;img src='http://s3.amazonaws.com/twitter_production/profile_images/52551367/ONormal_normal.jpg' width='48' height='48' align='left' vspace='2' hspace='3'/&gt; &lt;a href="http://twitter.com/olabini"&gt;@olabini&lt;/a&gt; (Ola Bini): Yay. Now have Reason and Cubase installed again. A gazillion plugins left, and then I can start making music again. (Thu 04:36 PM)&lt;/div&gt;
&lt;div style="clear:both;"&gt;&lt;img src='http://s3.amazonaws.com/twitter_production/profile_images/84619762/junk_normal.JPG' width='48' height='48' align='left' vspace='2' hspace='3'/&gt; &lt;a href="http://twitter.com/bill_turner"&gt;@bill_turner&lt;/a&gt; (Bill Turner): Just published the latest in the series of posts reviewing "Grails 1.1 Web Application Development". See &lt;a href="http://ping.fm/gvhLA"&gt;http://ping.fm/gvhLA&lt;/a&gt; (Thu 04:05 PM)&lt;/div&gt;
&lt;div style="clear:both;"&gt;&lt;img src='http://s3.amazonaws.com/twitter_production/profile_images/125850992/glaforge_normal.jpg' width='48' height='48' align='left' vspace='2' hspace='3'/&gt; &lt;a href="http://twitter.com/glaforge"&gt;@glaforge&lt;/a&gt; (Guillaume Laforge): Mes slides sur les DSLs en Groovy pour l'&lt;a href="http://search.twitter.com/search?q=%23usi2009"&gt;#usi2009&lt;/a&gt; : &lt;a href="http://tr.im/qFLm"&gt;http://tr.im/qFLm&lt;/a&gt; (Thu 03:55 PM)&lt;/div&gt;
&lt;div style="clear:both;"&gt;&lt;img src='http://s3.amazonaws.com/twitter_production/profile_images/64318836/sduskis_normal.jpg' width='48' height='48' align='left' vspace='2' hspace='3'/&gt; &lt;a href="http://twitter.com/sduskis"&gt;@sduskis&lt;/a&gt; (Solomon Duskis): Simple Zip utility writen in &lt;a href="http://search.twitter.com/search?q=%23groovy"&gt;#groovy&lt;/a&gt;:  &lt;a href="http://bit.ly/J7D04"&gt;http://bit.ly/J7D04&lt;/a&gt; (Thu 03:20 PM)&lt;/div&gt;
&lt;div style="clear:both;"&gt;&lt;img src='http://s3.amazonaws.com/twitter_production/profile_images/268022976/gt_twitter_normal.png' width='48' height='48' align='left' vspace='2' hspace='3'/&gt; &lt;a href="http://twitter.com/groovytweets"&gt;@groovytweets&lt;/a&gt; (groovytweets): &lt;a href="http://search.twitter.com/search?q=%23gae"&gt;#gae&lt;/a&gt; is up again, so groovytweets will be up too an tracking your groovy tweets (Thu 03:19 PM)&lt;/div&gt;
&lt;div style="clear:both;"&gt;&lt;img src='http://s3.amazonaws.com/twitter_production/profile_images/139105644/profile_normal.jpg' width='48' height='48' align='left' vspace='2' hspace='3'/&gt; &lt;a href="http://twitter.com/mbrevoort"&gt;@mbrevoort&lt;/a&gt; (Mike Brevoort): damn I wish I had the profiler in Flex Builder Professional right now (Thu 02:58 PM)&lt;/div&gt;
&lt;div style="clear:both;"&gt;&lt;img src='http://s3.amazonaws.com/twitter_production/profile_images/113897025/marcel_normal.jpg' width='48' height='48' align='left' vspace='2' hspace='3'/&gt; &lt;a href="http://twitter.com/marceloverdijk"&gt;@marceloverdijk&lt;/a&gt; (Marcel Overdijk): &lt;a href="http://twitter.com/lucastex"&gt;@lucastex&lt;/a&gt; Yes we are using &lt;a href="http://search.twitter.com/search?q=%23NetBeans"&gt;#NetBeans&lt;/a&gt; 6.7 to develop &lt;a href="http://search.twitter.com/search?q=%23Grails"&gt;#Grails&lt;/a&gt; applications. I really like it. (Thu 02:38 PM)&lt;/div&gt;
&lt;div style="clear:both;"&gt;&lt;img src='http://s3.amazonaws.com/twitter_production/profile_images/64768663/shawn_2_2_normal.jpg' width='48' height='48' align='left' vspace='2' hspace='3'/&gt; &lt;a href="http://twitter.com/hartsock"&gt;@hartsock&lt;/a&gt; (Shawn Hartsock): I just got an unexpected day off... what am I going to do with it? I know... fix the bugs in my neglected plugin. (Thu 09:02 AM)&lt;/div&gt;
&lt;div style="clear:both;"&gt;&lt;img src='http://s3.amazonaws.com/twitter_production/profile_images/135785685/steve_normal.jpg' width='48' height='48' align='left' vspace='2' hspace='3'/&gt; &lt;a href="http://twitter.com/spidie"&gt;@spidie&lt;/a&gt; (Steve Dalton): Retweeting &lt;a href="http://twitter.com/paulk_asert"&gt;@paulk_asert&lt;/a&gt;: The latest version of my Groovy Tutorial Slides updated for &lt;a href="http://search.twitter.com/search?q=%23citcon"&gt;#citcon&lt;/a&gt; are on SlideShare: &lt;a href="http://bit.ly/1LPVI"&gt;http://bit.ly/1LPVI&lt;/a&gt; (Thu 09:02 AM)&lt;/div&gt;
&lt;div style="clear:both;"&gt;&lt;img src='http://s3.amazonaws.com/twitter_production/profile_images/135785685/steve_normal.jpg' width='48' height='48' align='left' vspace='2' hspace='3'/&gt; &lt;a href="http://twitter.com/spidie"&gt;@spidie&lt;/a&gt; (Steve Dalton): &lt;a href="http://twitter.com/paulk_asert"&gt;@paulk_asert&lt;/a&gt; slide 5 blew me away on the &lt;a href="http://search.twitter.com/search?q=%23grails"&gt;#grails&lt;/a&gt; job ads - is that global or just US? (Thu 08:48 AM)&lt;/div&gt;
&lt;div style="clear:both;"&gt;null &lt;a href="http://twitter.com/spidie"&gt;@spidie&lt;/a&gt; (Steve Dalton): &lt;a href="http://twitter.com/mgkimsal"&gt;@mgkimsal&lt;/a&gt; - thanks for including our user group in &lt;a href="http://twitter.com/groovymag"&gt;@groovymag&lt;/a&gt;... we now feel complete! (Thu 08:43 AM)&lt;/div&gt;
&lt;/ul&gt;



&lt;h3 style="clear:both;"&gt;&lt;a href="http://search.twitter.com/search?q=Java+REST"&gt;Java REST - Twitter Search&lt;/a&gt;&lt;/h3&gt;
&lt;ul&gt;
&lt;div style="clear:both;"&gt;&lt;img src='http://s3.amazonaws.com/twitter_production/profile_images/255637766/adrian-cube-40x46_normal.gif' width='48' height='48' align='left' vspace='2' hspace='3'/&gt; &lt;a href="http://twitter.com/blogger_adrian"&gt;@blogger_adrian&lt;/a&gt; (Adrian Hamilton): Update on blog sidebar not displaying: Not a Google glitch, some &lt;b&gt;java&lt;/b&gt; script not loading that was effecting the &lt;b&gt;rest&lt;/b&gt; of the page - removed. (Fri 03:58 AM)&lt;/div&gt;
&lt;div style="clear:both;"&gt;&lt;img src='http://s3.amazonaws.com/twitter_production/profile_images/282158651/sidepf_normal.png' width='48' height='48' align='left' vspace='2' hspace='3'/&gt; &lt;a href="http://twitter.com/aMmadz"&gt;@aMmadz&lt;/a&gt; (Ammadz Faiz): updating &lt;a href="http://search.twitter.com/search?q=%23iPhoto"&gt;#iPhoto&lt;/a&gt;, &lt;a href="http://search.twitter.com/search?q=%23iWork"&gt;#iWork&lt;/a&gt;, &lt;a href="http://search.twitter.com/search?q=%23Java"&gt;#&lt;b&gt;Java&lt;/b&gt;&lt;/a&gt; update and &lt;a href="http://search.twitter.com/search?q=%23Aperture"&gt;#Aperture&lt;/a&gt;.. the &lt;b&gt;rest&lt;/b&gt; can wait.. &lt;img src="http://www.jroller.com/images/smileys/smile.gif" class="smiley" alt=":)" title=":)" /&gt; (Fri 01:22 AM)&lt;/div&gt;
&lt;div style="clear:both;"&gt;&lt;img src='http://s3.amazonaws.com/twitter_production/profile_images/286961963/06-28-09-terminal-avatar_normal.jpg' width='48' height='48' align='left' vspace='2' hspace='3'/&gt; &lt;a href="http://twitter.com/seantheflexguy"&gt;@seantheflexguy&lt;/a&gt; (Sean Moore): client call in 15 min.. then AIR/&lt;b&gt;Java&lt;/b&gt; (BlazeDS enabled) dev for the &lt;b&gt;rest&lt;/b&gt; of the day. thinking about doing more book reviews but cant decide. (Thu 12:44 PM)&lt;/div&gt;
&lt;div style="clear:both;"&gt;&lt;img src='http://s3.amazonaws.com/twitter_production/profile_images/263100219/galdino-chl_normal.JPG' width='48' height='48' align='left' vspace='2' hspace='3'/&gt; &lt;a href="http://twitter.com/maxgaldinus"&gt;@maxgaldinus&lt;/a&gt; (maxgaldinus): Criando um serviço &lt;b&gt;REST&lt;/b&gt; e chamando &lt;b&gt;Java&lt;/b&gt; no OSB: O Oracle Service Bus, ou OSB, é a ferramenta que provê a funcion.. &lt;a href="http://bit.ly/3BIJh"&gt;http://bit.ly/3BIJh&lt;/a&gt; (Thu 11:42 AM)&lt;/div&gt;
&lt;div style="clear:both;"&gt;&lt;img src='http://s3.amazonaws.com/twitter_production/profile_images/289682043/elvis_normal.jpg' width='48' height='48' align='left' vspace='2' hspace='3'/&gt; &lt;a href="http://twitter.com/JavaPuppy"&gt;@JavaPuppy&lt;/a&gt; (Happy Keller): Spent the night hacking &amp;amp; coughing...fever got to 102+...fever's gone; still not feeling too good...Dr. &lt;b&gt;Java&lt;/b&gt; &amp;amp; Nurse Mocha prescribe &lt;b&gt;rest&lt;/b&gt;... (Thu 10:01 AM)&lt;/div&gt;
&lt;/ul&gt;



&lt;h3 style="clear:both;"&gt;&lt;a href="http://search.twitter.com/search?q=RESTEasy+OR+RESTlet+OR+JAX-RS"&gt;RESTEasy OR RESTlet OR JAX-RS - Twitter Search&lt;/a&gt;&lt;/h3&gt;
&lt;ul&gt;
&lt;div style="clear:both;"&gt;&lt;img src='http://s3.amazonaws.com/twitter_production/profile_images/64318836/sduskis_normal.jpg' width='48' height='48' align='left' vspace='2' hspace='3'/&gt; &lt;a href="http://twitter.com/sduskis"&gt;@sduskis&lt;/a&gt; (Solomon Duskis): &lt;a href="http://twitter.com/lpolycarpou"&gt;@lpolycarpou&lt;/a&gt; &lt;b&gt;JAX-RS&lt;/b&gt; as MVC framework... You're not the first.  There are some limitations, like request attribute/session management. (Fri 07:33 AM)&lt;/div&gt;
&lt;div style="clear:both;"&gt;&lt;img src='http://s3.amazonaws.com/twitter_production/profile_images/273296651/ahmadinejad2_normal.jpg' width='48' height='48' align='left' vspace='2' hspace='3'/&gt; &lt;a href="http://twitter.com/NunoCardoso"&gt;@NunoCardoso&lt;/a&gt; (Nuno Cardoso): &lt;a href="http://twitter.com/ruidlopes"&gt;@ruidlopes&lt;/a&gt; Estás a usar o &lt;b&gt;restlet&lt;/b&gt; 2.0? tenho um NoClassDefFoundError: org/&lt;b&gt;restlet&lt;/b&gt;/Redirector, parece que no 2.0  está numa subdir routing. (Fri 07:16 AM)&lt;/div&gt;
&lt;div style="clear:both;"&gt;&lt;img src='http://s3.amazonaws.com/twitter_production/profile_images/39570392/eu_normal.jpg' width='48' height='48' align='left' vspace='2' hspace='3'/&gt; &lt;a href="http://twitter.com/ruidlopes"&gt;@ruidlopes&lt;/a&gt; (Rui Lopes): &lt;a href="http://twitter.com/NunoCardoso"&gt;@NunoCardoso&lt;/a&gt; yep, fiz um serviço inteiro em &lt;b&gt;restlet&lt;/b&gt;: html, json e rdf, tudo sobre http. tb há builders: &lt;a href="http://whit.me/axdtZ3"&gt;http://whit.me/axdtZ3&lt;/a&gt; (Fri 05:45 AM)&lt;/div&gt;
&lt;div style="clear:both;"&gt;&lt;img src='http://s3.amazonaws.com/twitter_production/profile_images/251065932/n895410363_6260575_3757958_normal.jpg' width='48' height='48' align='left' vspace='2' hspace='3'/&gt; &lt;a href="http://twitter.com/lpolycarpou"&gt;@lpolycarpou&lt;/a&gt; (Louis Polycarpou): Researching &lt;b&gt;JAX-RS&lt;/b&gt; implementations as a potential MVC framework... (Fri 05:28 AM)&lt;/div&gt;
&lt;div style="clear:both;"&gt;&lt;img src='http://static.twitter.com/images/default_profile_normal.png' width='48' height='48' align='left' vspace='2' hspace='3'/&gt; &lt;a href="http://twitter.com/alartin"&gt;@alartin&lt;/a&gt; (Sean Wu): I programmatically tweeted with the &lt;b&gt;RESTEasy&lt;/b&gt; Client at Fri Jul 03 13:51:36 CST 2009 (Fri 12:51 AM)&lt;/div&gt;
&lt;div style="clear:both;"&gt;&lt;img src='http://s3.amazonaws.com/twitter_production/profile_images/282088008/perso2-smaller_normal.jpg' width='48' height='48' align='left' vspace='2' hspace='3'/&gt; &lt;a href="http://twitter.com/jsbournival"&gt;@jsbournival&lt;/a&gt; (jsbournival): searching in vain for &lt;b&gt;jax-rs&lt;/b&gt; mime-type constant ... have to define them myself ... but I do not trust myself. (Thu 02:16 PM)&lt;/div&gt;
&lt;/ul&gt;

&lt;hr style="clear:both;"&gt;&lt;p&gt; I created this entry with Groovy and RSS feeds.  Do you want to know more?  Leave a comment&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/jroller/frontpage/~4/ncS82OWpRYw" height="1" width="1"/&gt;</description>          <feedburner:origLink>http://www.jroller.com/Solomon/entry/twitter_posts_for_jul_2</feedburner:origLink></item>
  </channel>
</rss>
