Start line:  
End line:  

Snippet Preview

Snippet HTML Code

Stack Overflow Questions
  /*
   * Copyright (C) 2009 eXo Platform SAS.
   *
   * This is free software; you can redistribute it and/or modify it
   * under the terms of the GNU Lesser General Public License as
   * published by the Free Software Foundation; either version 2.1 of
   * the License, or (at your option) any later version.
   *
   * This software is distributed in the hope that it will be useful,
  * but WITHOUT ANY WARRANTY; without even the implied warranty of
  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
  * Lesser General Public License for more details.
  *
  * You should have received a copy of the GNU Lesser General Public
  * License along with this software; if not, write to the Free
  * Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA
  * 02110-1301 USA, or see the FSF site: http://www.fsf.org.
  */
 package org.exoplatform.services.jcr.ext.script.groovy;
 
 
 import javax.jcr.Node;

Author(s):
Andrey Parfonov
Version:
$Id: GroovyScript2RestUpdateListener.java 34445 2009-07-24 07:51:18Z dkatayev $
 
 @SuppressWarnings("deprecation")
 public class GroovyScript2RestUpdateListener implements EventListener
 {
   
Logger.
 
    private static final Log LOG = ExoLogger.getLogger("exo.jcr.component.ext.GroovyScript2RestUpdateListener");

   
Repository name.
 
    private final ManageableRepository repository;

   
Workspace name.
 
    private final String workspaceName;

   
 
    private final GroovyScript2RestLoader groovyScript2RestLoader;

   

Parameters:
repository repository
workspace workspace name
groovyScript2RestLoader See GroovyScript2RestLoader
session JCR session
 
    public GroovyScript2RestUpdateListener(ManageableRepository repositoryString workspace,
       GroovyScript2RestLoader groovyScript2RestLoader)
    {
       this. = repository;
       this. = workspace;
       this. = groovyScript2RestLoader;
    }

   
 
    public void onEvent(EventIterator eventIterator)
    {
       // waiting for Event.PROPERTY_ADDED, Event.PROPERTY_REMOVED,
       // Event.PROPERTY_CHANGED
       Session session = null;
       try
       {
          while (eventIterator.hasNext())
          {
             Event event = eventIterator.nextEvent();
             String path = event.getPath();
 
             if (path.endsWith("/jcr:data"))
             {
                // jcr:data removed 'exo:groovyResourceContainer' then unbind resource
                if (event.getType() == .)
                {
                   unloadScript(path.substring(0, path.lastIndexOf('/')));
                }
                else if (event.getType() == . || event.getType() == .)
                {
                   if (session == null)
                   {
                      session = .getSystemSession();
                   }
 
                   Node node = session.getItem(path).getParent();
                   if (node.getProperty("exo:autoload").getBoolean())
                      loadScript(node);
               }
            }
         }
      }
      catch (Exception e)
      {
         .error("Process event failed. "e);
      }
      finally
      {
         if (session != null)
         {
            session.logout();
         }
      }
   }

   
Load script form supplied node.

Parameters:
node JCR node
Throws:
java.lang.Exception if any error occurs
   private void loadScript(Node nodethrows Exception
   {
      if (resource != null)
      {
            resource.getObjectModel().getProperties());
      }
      else
      {
         ..publishPerRequest(node.getProperty("jcr:data").getStream(), keynull);
      }
   }

   
Unload script.

Parameters:
path unified JCR node path
Throws:
java.lang.Exception if any error occurs
   private void unloadScript(String paththrows Exception
   {
   }
New to GrepCode? Check out our FAQ X