On Mar 16, 2010, at 6:28 PM, mflorea (SVN) wrote:
  Author: mflorea
 Date: 2010-03-16 18:28:54 +0100 (Tue, 16 Mar 2010)
 New Revision: 27661
 Modified:
platform/web/trunk/xwiki-gwt-wysiwyg-server/src/main/java/com/xpn/xwiki/wysiwyg/server/plugin/WysiwygPluginApi.java
 Log:
 XWIKI-5013: HTML code visible when inserting velocity macro displaying a property
 Modified:
platform/web/trunk/xwiki-gwt-wysiwyg-server/src/main/java/com/xpn/xwiki/wysiwyg/server/plugin/WysiwygPluginApi.java
 ===================================================================
 ---
platform/web/trunk/xwiki-gwt-wysiwyg-server/src/main/java/com/xpn/xwiki/wysiwyg/server/plugin/WysiwygPluginApi.java
2010-03-16 15:51:03 UTC (rev 27660)
 +++
platform/web/trunk/xwiki-gwt-wysiwyg-server/src/main/java/com/xpn/xwiki/wysiwyg/server/plugin/WysiwygPluginApi.java
2010-03-16 17:28:54 UTC (rev 27661)
 @@ -35,6 +35,14 @@
 public class WysiwygPluginApi extends Api
 {
     /**
 +     * The context property which indicates if the current code was called from a
template (only Velocity execution) or
 +     * from a wiki page (wiki syntax rendering).
 +     *
 +     * @see #parseAndRender(String, String)
 +     */
 +    private static final String IS_IN_RENDERING_ENGINE =
"isInRenderingEngine";
 +
 +    /**
      * The plugin instance.
      */
     private WysiwygPlugin plugin;
 @@ -98,11 +106,26 @@
      */
     public String parseAndRender(String html, String syntax)
     {
 +        // Save the value of the "is in rendering engine" context property.
 +        Object isInRenderingEngine = context.get(IS_IN_RENDERING_ENGINE);
 +
         try {
 +            // This tells display() methods that we are inside the rendering engine and
thus that they can return wiki
 +            // syntax and not HTML syntax (which is needed when outside the rendering
engine, i.e. when we're inside
 +            // templates using only Velocity for example).
 +            context.put(IS_IN_RENDERING_ENGINE, true);
 +
             return Utils.getComponent(HTMLConverter.class).parseAndRender(html, syntax);
         } catch (Exception e) {
             // Leave the previous HTML in case of an exception.
             return html;
 +        } finally {
 +            // Restore the value of the value of the "is in rendering engine"
context property.
 +            if (isInRenderingEngine != null) {
 +                context.put(IS_IN_RENDERING_ENGINE, isInRenderingEngine);
 +            } else {
 +                context.remove(IS_IN_RENDERING_ENGINE);
 +            } 
Shouldn't you always put back the value that you saved (even if it's null) ?
Thanks
-Vincent