[exo-jcr-commits] exo-jcr SVN: r2520 - in core/trunk: exo.core.component.database and 13 other directories.

do-not-reply at jboss.org do-not-reply at jboss.org
Wed Jun 9 05:48:50 EDT 2010


Author: dkatayev
Date: 2010-06-09 05:48:49 -0400 (Wed, 09 Jun 2010)
New Revision: 2520

Added:
   core/trunk/exo.core.component.database/src/test/resources/dbcreator/
   core/trunk/exo.core.component.database/src/test/resources/dbcreator/test.sql
   core/trunk/exo.core.component.document/src/test/resources/testCDATA.xml
   core/trunk/exo.core.component.document/src/test/resources/testUTF8.xml
   core/trunk/exo.core.component.organization.api/src/main/java/org/exoplatform/services/organization/GroupEventListenerHandler.java
   core/trunk/exo.core.component.organization.api/src/main/java/org/exoplatform/services/organization/MembershipEventListenerHandler.java
   core/trunk/exo.core.component.organization.api/src/main/java/org/exoplatform/services/organization/UserEventListenerHandler.java
   core/trunk/exo.core.component.organization.api/src/main/java/org/exoplatform/services/organization/UserProfileEventListenerHandler.java
Removed:
   core/trunk/exo.core.component.database/src/test/resources/dbcreator/test.sql
Modified:
   core/trunk/exo.core.component.database/pom.xml
   core/trunk/exo.core.component.database/src/main/java/org/exoplatform/services/database/ObjectQuery.java
   core/trunk/exo.core.component.database/src/test/resources/conf/standalone/test-configuration.xml
   core/trunk/exo.core.component.document/pom.xml
   core/trunk/exo.core.component.document/src/main/java/org/exoplatform/services/document/impl/MSExcelDocumentReader.java
   core/trunk/exo.core.component.document/src/main/java/org/exoplatform/services/document/impl/PDFDocumentReader.java
   core/trunk/exo.core.component.document/src/main/java/org/exoplatform/services/document/impl/XMLDocumentReader.java
   core/trunk/exo.core.component.document/src/test/java/org/exoplatform/services/document/test/TestXMLDocumentReader.java
   core/trunk/exo.core.component.organization.jdbc/src/main/java/org/exoplatform/services/organization/hibernate/GroupDAOImpl.java
   core/trunk/exo.core.component.organization.jdbc/src/main/java/org/exoplatform/services/organization/hibernate/MembershipDAOImpl.java
   core/trunk/exo.core.component.organization.jdbc/src/main/java/org/exoplatform/services/organization/hibernate/UserDAOImpl.java
   core/trunk/exo.core.component.organization.jdbc/src/main/java/org/exoplatform/services/organization/hibernate/UserProfileDAOImpl.java
   core/trunk/exo.core.component.organization.ldap/src/main/java/org/exoplatform/services/organization/ldap/GroupDAOImpl.java
   core/trunk/exo.core.component.organization.ldap/src/main/java/org/exoplatform/services/organization/ldap/MembershipDAOImpl.java
   core/trunk/exo.core.component.organization.ldap/src/main/java/org/exoplatform/services/organization/ldap/UserDAOImpl.java
   core/trunk/exo.core.component.organization.ldap/src/main/java/org/exoplatform/services/organization/ldap/UserProfileDAOImpl.java
   core/trunk/exo.core.component.script.groovy/src/main/java/org/exoplatform/services/script/groovy/GroovyScriptInstantiator.java
   core/trunk/packaging/module/src/main/javascript/core.packaging.module.js
   core/trunk/pom.xml
Log:
EXOJCR-751 epare maintenance branch for jcr 1.12: EXOJCR-694, EXOJCR-700, EXOJCR-705, EXOJCR-721, EXOJCR-640, EXOJCR-573, EXOJCR-738, EXOJCR-765 ported from 1.14.x

Modified: core/trunk/exo.core.component.database/pom.xml
===================================================================
--- core/trunk/exo.core.component.database/pom.xml	2010-06-09 08:26:14 UTC (rev 2519)
+++ core/trunk/exo.core.component.database/pom.xml	2010-06-09 09:48:49 UTC (rev 2520)
@@ -102,7 +102,22 @@
             </exclusion>
          </exclusions> 
       </dependency>
-  </dependencies>
+      
+      <dependency>
+         <groupId>commons-dbcp</groupId>
+         <artifactId>commons-dbcp</artifactId>
+         <exclusions>
+            <exclusion>
+               <groupId>xerces</groupId>
+               <artifactId>xercesImpl</artifactId>
+            </exclusion>
+         </exclusions>
+      </dependency>
+      <dependency>
+         <groupId>commons-pool</groupId>
+         <artifactId>commons-pool</artifactId>
+      </dependency>
+  </dependencies>
    
    <build>
       <pluginManagement>
@@ -113,7 +128,6 @@
                <configuration>
                   <excludes>
                      <exclude>**/DBCreatorTest.java</exclude>
-                     <exclude>**/TestDBCreator.java</exclude>
                   </excludes>
                </configuration>
             </plugin>

Modified: core/trunk/exo.core.component.database/src/main/java/org/exoplatform/services/database/ObjectQuery.java
===================================================================
--- core/trunk/exo.core.component.database/src/main/java/org/exoplatform/services/database/ObjectQuery.java	2010-06-09 08:26:14 UTC (rev 2519)
+++ core/trunk/exo.core.component.database/src/main/java/org/exoplatform/services/database/ObjectQuery.java	2010-06-09 09:48:49 UTC (rev 2520)
@@ -151,7 +151,14 @@
             Parameter p = parameters_.get(i);
             if (p.value_ instanceof String)
             {
-               b.append(" o.").append(p.field_).append(p.op_).append("'").append(p.value_).append("'");
+               if (p.field_.startsWith("UPPER") || p.field_.startsWith("LOWER"))
+               {
+                  b.append(p.field_).append(p.op_).append("'").append(p.value_).append("'");
+               }
+               else
+               {
+                  b.append(" o.").append(p.field_).append(p.op_).append("'").append(p.value_).append("'");
+               }
             }
             else if (p.value_ instanceof Date)
             {
@@ -251,7 +258,14 @@
             Parameter p = parameters_.get(i);
             if (p.value_ instanceof String)
             {
-               b.append(" o.").append(p.field_).append(p.op_).append("'").append(p.value_).append("'");
+               if (p.field_.startsWith("UPPER") || p.field_.startsWith("LOWER"))
+               {
+                  b.append(p.field_).append(p.op_).append("'").append(p.value_).append("'");
+               }
+               else
+               {
+                  b.append(" o.").append(p.field_).append(p.op_).append("'").append(p.value_).append("'");
+               }
             }
             else if (p.value_ instanceof Date)
             {

Modified: core/trunk/exo.core.component.database/src/test/resources/conf/standalone/test-configuration.xml
===================================================================
--- core/trunk/exo.core.component.database/src/test/resources/conf/standalone/test-configuration.xml	2010-06-09 08:26:14 UTC (rev 2519)
+++ core/trunk/exo.core.component.database/src/test/resources/conf/standalone/test-configuration.xml	2010-06-09 09:48:49 UTC (rev 2520)
@@ -19,10 +19,45 @@
     02110-1301 USA, or see the FSF site: http://www.fsf.org.
 
 -->
-<configuration xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.exoplaform.org/xml/ns/kernel_1_0.xsd http://www.exoplaform.org/xml/ns/kernel_1_0.xsd"
+<configuration xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+   xsi:schemaLocation="http://www.exoplaform.org/xml/ns/kernel_1_0.xsd http://www.exoplaform.org/xml/ns/kernel_1_0.xsd"
    xmlns="http://www.exoplaform.org/xml/ns/kernel_1_0.xsd">
 
    <component>
+      <key>org.exoplatform.services.log.LogConfigurationInitializer</key>
+      <type>org.exoplatform.services.log.LogConfigurationInitializer</type>
+      <init-params>
+         <value-param>
+            <name>logger</name>
+            <value>org.exoplatform.services.log.impl.BufferedLog4JLogger</value>
+         </value-param>
+         <value-param>
+            <name>configurator</name>
+            <value>org.exoplatform.services.log.impl.Log4JConfigurator</value>
+         </value-param>
+         <properties-param>
+            <name>properties</name>
+            <description>Log4J properties</description>
+            <property name="log4j.rootLogger" value="INFO, stdout, file" />
+
+            <property name="log4j.appender.stdout" value="org.apache.log4j.ConsoleAppender" />
+            <property name="log4j.appender.stdout.threshold" value="DEBUG" />
+
+            <property name="log4j.appender.stdout.layout" value="org.apache.log4j.PatternLayout" />
+            <property name="log4j.appender.stdout.layout.ConversionPattern" value="%d{dd.MM.yyyy HH:mm:ss} *%-5p* [%t] %c{1}: %m (%F, line %L) %n" />
+
+            <property name="log4j.appender.file" value="org.apache.log4j.FileAppender" />
+            <property name="log4j.appender.file.File" value="target/jcr.log" />
+
+            <property name="log4j.appender.file.layout" value="org.apache.log4j.PatternLayout" />
+            <property name="log4j.appender.file.layout.ConversionPattern" value="%d{dd.MM.yyyy HH:mm:ss} *%-5p* [%t] %c{1}: %m (%F, line %L) %n" />
+
+            <property name="log4j.category.exo.kernel.component.common.InitialContextInitializer" value="DEBUG" />
+         </properties-param>
+      </init-params>
+   </component>
+
+   <component>
       <key>org.exoplatform.services.database.jdbc.DBSchemaCreator</key>
       <type>org.exoplatform.services.database.jdbc.DBSchemaCreator</type>
       <component-plugins>
@@ -50,27 +85,27 @@
       </component-plugins>
    </component>
 
-   <component> 
+   <component>
       <key>org.exoplatform.services.database.creator.DBCreator</key>
       <type>org.exoplatform.services.database.creator.DBCreator</type>
       <init-params>
          <properties-param>
             <name>db-connection</name>
             <description>database connection properties</description>
-            <property name="driverClassName" value="com.mysql.jdbc.Driver" />
-            <property name="url" value="jdbc:mysql://localhost/" />
-            <property name="username" value="root" />
-            <property name="password" value="admin" />
+            <property name="driverClassName" value="org.hsqldb.jdbcDriver" />
+            <property name="url" value="jdbc:hsqldb:file:target/temp/data/dbcreator1" />
+            <property name="username" value="sa" />
+            <property name="password" value="" />
          </properties-param>
          <properties-param>
             <name>db-creation</name>
             <description>database creation properties</description>
-            <property name="scriptPath" value="test.sql" />
-            <property name="username" value="testuser" />
-            <property name="password" value="testpwd" />
-         </properties-param> 
-      </init-params> 
-   </component> 
+            <property name="scriptPath" value="src/test/resources/dbcreator/test.sql" />
+            <property name="username" value="sa" />
+            <property name="password" value="" />
+         </properties-param>
+      </init-params>
+   </component>
 
    <component>
       <key>org.exoplatform.services.naming.InitialContextInitializer</key>

Copied: core/trunk/exo.core.component.database/src/test/resources/dbcreator (from rev 2428, core/trunk/exo.core.component.database/src/test/resources/dbcreator)

Deleted: core/trunk/exo.core.component.database/src/test/resources/dbcreator/test.sql
===================================================================

Copied: core/trunk/exo.core.component.database/src/test/resources/dbcreator/test.sql (from rev 2428, core/trunk/exo.core.component.database/src/test/resources/dbcreator/test.sql)
===================================================================

Modified: core/trunk/exo.core.component.document/pom.xml
===================================================================
--- core/trunk/exo.core.component.document/pom.xml	2010-06-09 08:26:14 UTC (rev 2519)
+++ core/trunk/exo.core.component.document/pom.xml	2010-06-09 09:48:49 UTC (rev 2520)
@@ -50,7 +50,7 @@
          <artifactId>slf4j-log4j12</artifactId>
       </dependency>
       <dependency>
-         <groupId>pdfbox</groupId>
+         <groupId>org.apache.pdfbox</groupId>
          <artifactId>pdfbox</artifactId>
       </dependency>
       <dependency>
@@ -106,4 +106,4 @@
          </testResource>
       </testResources>
    </build>
-</project>
\ No newline at end of file
+</project>

Modified: core/trunk/exo.core.component.document/src/main/java/org/exoplatform/services/document/impl/MSExcelDocumentReader.java
===================================================================
--- core/trunk/exo.core.component.document/src/main/java/org/exoplatform/services/document/impl/MSExcelDocumentReader.java	2010-06-09 08:26:14 UTC (rev 2519)
+++ core/trunk/exo.core.component.document/src/main/java/org/exoplatform/services/document/impl/MSExcelDocumentReader.java	2010-06-09 09:48:49 UTC (rev 2520)
@@ -67,7 +67,7 @@
          throw new NullPointerException("InputStream is null.");
       }
 
-      String text = "";
+      StringBuilder builder = new StringBuilder("");
 
       try
       {
@@ -78,7 +78,7 @@
          }
          catch (IOException e)
          {
-            return text;
+            return builder.toString();
          }
          for (int sheetNum = 0; sheetNum < wb.getNumberOfSheets(); sheetNum++)
          {
@@ -105,25 +105,25 @@
                                  {
                                     Date date = HSSFDateUtil.getJavaDate(d);
                                     String cellText = this.DATE_FORMAT.format(date);
-                                    text = text + cellText + " ";
+                                    builder.append(cellText).append(" ");
                                  }
                                  else
                                  {
-                                    text = text + d + " ";
+                                   builder.append(d).append(" ");
                                  }
                                  break;
                               }
                               case HSSFCell.CELL_TYPE_FORMULA :
-                                 text = text + cell.getCellFormula().toString() + " ";
+                                 builder.append(cell.getCellFormula().toString()).append(" ");
                                  break;
                               case HSSFCell.CELL_TYPE_BOOLEAN :
-                                 text = text + cell.getBooleanCellValue() + " ";
+                                 builder.append(cell.getBooleanCellValue()).append(" ");
                                  break;
                               case HSSFCell.CELL_TYPE_ERROR :
-                                 text = text + cell.getErrorCellValue() + " ";
+                                 builder.append(cell.getErrorCellValue()).append(" ");
                                  break;
                               case HSSFCell.CELL_TYPE_STRING :
-                                 text = text + cell.getStringCellValue().toString() + " ";
+                                 builder.append(cell.getStringCellValue().toString()).append(" ");
                                  break;
                               default :
                                  break;
@@ -148,7 +148,7 @@
             }
          }
       }
-      return text;
+      return builder.toString();
    }
 
    public String getContentAsText(InputStream is, String encoding) throws IOException, DocumentReadException

Modified: core/trunk/exo.core.component.document/src/main/java/org/exoplatform/services/document/impl/PDFDocumentReader.java
===================================================================
--- core/trunk/exo.core.component.document/src/main/java/org/exoplatform/services/document/impl/PDFDocumentReader.java	2010-06-09 08:26:14 UTC (rev 2519)
+++ core/trunk/exo.core.component.document/src/main/java/org/exoplatform/services/document/impl/PDFDocumentReader.java	2010-06-09 09:48:49 UTC (rev 2520)
@@ -26,8 +26,8 @@
 import org.exoplatform.services.document.DocumentReadException;
 import org.exoplatform.services.log.ExoLogger;
 import org.exoplatform.services.log.Log;
-import org.pdfbox.pdmodel.PDDocument;
-import org.pdfbox.util.PDFTextStripper;
+import org.apache.pdfbox.pdmodel.PDDocument;
+import org.apache.pdfbox.util.PDFTextStripper;
 import org.w3c.dom.Document;
 import org.w3c.dom.Node;
 import org.w3c.dom.NodeList;

Modified: core/trunk/exo.core.component.document/src/main/java/org/exoplatform/services/document/impl/XMLDocumentReader.java
===================================================================
--- core/trunk/exo.core.component.document/src/main/java/org/exoplatform/services/document/impl/XMLDocumentReader.java	2010-06-09 08:26:14 UTC (rev 2519)
+++ core/trunk/exo.core.component.document/src/main/java/org/exoplatform/services/document/impl/XMLDocumentReader.java	2010-06-09 09:48:49 UTC (rev 2520)
@@ -19,15 +19,19 @@
 package org.exoplatform.services.document.impl;
 
 import org.exoplatform.services.document.DocumentReadException;
+import org.xml.sax.SAXException;
+import org.xml.sax.helpers.DefaultHandler;
 
-import java.io.ByteArrayOutputStream;
 import java.io.IOException;
 import java.io.InputStream;
+import java.io.StringWriter;
+import java.io.Writer;
 import java.util.Properties;
-import java.util.regex.Matcher;
-import java.util.regex.Pattern;
-import java.util.regex.PatternSyntaxException;
 
+import javax.xml.parsers.ParserConfigurationException;
+import javax.xml.parsers.SAXParser;
+import javax.xml.parsers.SAXParserFactory;
+
 /**
  * Created by The eXo Platform SAS A parser of XML files.
  * 
@@ -61,14 +65,15 @@
       }
       try
       {
-         byte[] buffer = new byte[2048];
-         int len;
-         ByteArrayOutputStream bos = new ByteArrayOutputStream();
-         while ((len = is.read(buffer)) > 0)
-            bos.write(buffer, 0, len);
-         bos.close();
-         String xml = new String(bos.toByteArray());
-         return delete(xml);
+
+         //         byte[] buffer = new byte[2048];
+         //         int len;
+         //         ByteArrayOutputStream bos = new ByteArrayOutputStream();
+         //         while ((len = is.read(buffer)) > 0)
+         //            bos.write(buffer, 0, len);
+         //         bos.close();
+         //         String xml = new String(bos.toByteArray());
+         return parse(is);
       }
       finally
       {
@@ -113,27 +118,74 @@
     * @param str the string which contain a text with user's tags.
     * @return The string cleaned from user's tags and their bodies.
     */
-   private String delete(String str)
+   private String parse(InputStream is)
    {
+      SAXParserFactory saxParserFactory = SAXParserFactory.newInstance();
+      //      saxParserFactory.setNamespaceAware(true);
+      //      saxParserFactory.setFeature(XMLConstants.FEATURE_SECURE_PROCESSING, true);
+      SAXParser saxParser;
+      StringWriter writer = new StringWriter();
+
+      DefaultHandler dh = new WriteOutContentHandler(writer);
       try
       {
-         StringBuffer input = new StringBuffer(str);
-         String patternString = "<+[^>]*>+";
-         Pattern pattern = Pattern.compile(patternString, Pattern.CASE_INSENSITIVE + Pattern.DOTALL);
-         Matcher matcher = pattern.matcher(input);
-         while (matcher.find())
+         saxParser = saxParserFactory.newSAXParser();
+         saxParser.parse(is, dh);
+      }
+      catch (SAXException e)
+      {
+         return "";
+      }
+      catch (IOException e)
+      {
+         return "";
+      }
+      catch (ParserConfigurationException e)
+      {
+         return "";
+      }
+
+      return writer.toString();
+
+   }
+
+   class WriteOutContentHandler extends DefaultHandler
+   {
+      private final Writer writer;
+
+      public WriteOutContentHandler(Writer writer)
+      {
+         this.writer = writer;
+      }
+
+      /**
+       * Writes the given characters to the given character stream.
+       */
+      @Override
+      public void characters(char[] ch, int start, int length) throws SAXException
+      {
+         try
          {
-            int start = matcher.start();
-            int end = matcher.end();
-            input.delete(start, end);
-            matcher = pattern.matcher(input);
+            writer.write(ch, start, length);
          }
-         return input.substring(0, input.length());
+         catch (IOException e)
+         {
+            throw new SAXException(e.getMessage(), e);
+         }
       }
-      catch (PatternSyntaxException e)
+
+      @Override
+      public void endDocument() throws SAXException
       {
+         try
+         {
+            writer.flush();
+         }
+         catch (IOException e)
+         {
+            throw new SAXException(e.getMessage(), e);
+         }
       }
-      return "";
    }
 
 }

Modified: core/trunk/exo.core.component.document/src/test/java/org/exoplatform/services/document/test/TestXMLDocumentReader.java
===================================================================
--- core/trunk/exo.core.component.document/src/test/java/org/exoplatform/services/document/test/TestXMLDocumentReader.java	2010-06-09 08:26:14 UTC (rev 2519)
+++ core/trunk/exo.core.component.document/src/test/java/org/exoplatform/services/document/test/TestXMLDocumentReader.java	2010-06-09 09:48:49 UTC (rev 2520)
@@ -45,7 +45,26 @@
    {
       InputStream is = TestXMLDocumentReader.class.getResourceAsStream("/test.xml");
       String text = service_.getDocumentReader("text/xml").getContentAsText(is);
-      String etalon = "\n\n  John\n" + "  Alice\n" + "  Reminder\n" + "  Don't forget it this weekend!\n\n";
-      assertEquals("Wrong string returned", etalon, text);
+      String expected = "John\n" + "  Alice\n" + "  Reminder\n" + "  Don't forget it this weekend!";
+      assertEquals("Wrong string returned", expected, text.trim());
    }
+
+   public void testCDATAGetContentAsString() throws Exception
+   {
+      InputStream is = TestXMLDocumentReader.class.getResourceAsStream("/testCDATA.xml");
+      String text = service_.getDocumentReader("text/xml").getContentAsText(is);
+      String expected = "This is a text inside CDATA.";
+      assertEquals("Wrong string returned", expected, text.trim());
+   }
+
+   public void testI18ngetContentAsString() throws Exception
+   {
+      InputStream is = TestXMLDocumentReader.class.getResourceAsStream("/testUTF8.xml");
+      String text = service_.getDocumentReader("text/xml").getContentAsText(is);
+      final String expected =
+         "\u0426\u0435 \u0442\u0435\u0441\u0442\u043e\u0432\u0438\u0439 \u0442\u0435\u043a\u0441\u0442.\n"
+            + "Archim\u00E8de et Lius \u00E0 Ch\u00E2teauneuf testing chars en \u00E9t\u00E9";
+      assertEquals("Wrong string returned", expected, text.trim());
+   }
+
 }

Copied: core/trunk/exo.core.component.document/src/test/resources/testCDATA.xml (from rev 2432, core/trunk/exo.core.component.document/src/test/resources/testCDATA.xml)
===================================================================
--- core/trunk/exo.core.component.document/src/test/resources/testCDATA.xml	                        (rev 0)
+++ core/trunk/exo.core.component.document/src/test/resources/testCDATA.xml	2010-06-09 09:48:49 UTC (rev 2520)
@@ -0,0 +1,6 @@
+<?xml version="1.0" encoding="UTF-8" ?>
+<Module>
+	<ModulePrefs title="Hello World! title" />
+	<Content type="html"> 
+<![CDATA[This is a text inside CDATA.]]></Content>
+</Module>
\ No newline at end of file

Copied: core/trunk/exo.core.component.document/src/test/resources/testUTF8.xml (from rev 2432, core/trunk/exo.core.component.document/src/test/resources/testUTF8.xml)
===================================================================
--- core/trunk/exo.core.component.document/src/test/resources/testUTF8.xml	                        (rev 0)
+++ core/trunk/exo.core.component.document/src/test/resources/testUTF8.xml	2010-06-09 09:48:49 UTC (rev 2520)
@@ -0,0 +1,7 @@
+<?xml version="1.0" encoding="UTF-8" ?>
+<Module>
+	<ModulePrefs title="Hello World! title" />
+	<Content type="html"> 
+	<Title>Це тестовий текст.</Title>
+<![CDATA[Archimède et Lius à Châteauneuf testing chars en été]]></Content>
+</Module>
\ No newline at end of file

Copied: core/trunk/exo.core.component.organization.api/src/main/java/org/exoplatform/services/organization/GroupEventListenerHandler.java (from rev 2334, core/trunk/exo.core.component.organization.api/src/main/java/org/exoplatform/services/organization/GroupEventListenerHandler.java)
===================================================================
--- core/trunk/exo.core.component.organization.api/src/main/java/org/exoplatform/services/organization/GroupEventListenerHandler.java	                        (rev 0)
+++ core/trunk/exo.core.component.organization.api/src/main/java/org/exoplatform/services/organization/GroupEventListenerHandler.java	2010-06-09 09:48:49 UTC (rev 2520)
@@ -0,0 +1,37 @@
+/*
+ * Copyright (C) 2010 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.organization;
+
+import java.util.List;
+
+/**
+ * @author <a href="anatoliy.bazko at exoplatform.org">Anatoliy Bazko</a>
+ * @version $Id: GroupEventListenerHandler.java 111 2010-11-11 11:11:11Z tolusha $
+ *
+ */
+public interface GroupEventListenerHandler
+{
+
+   /**
+    * Return list of GroupEventListener. List should be unmodifiable to prevent modification outside of GroupHandler.
+    * 
+    * @return list of GroupEventListener
+    */
+   public List<GroupEventListener> getGroupListeners();
+}

Copied: core/trunk/exo.core.component.organization.api/src/main/java/org/exoplatform/services/organization/MembershipEventListenerHandler.java (from rev 2334, core/trunk/exo.core.component.organization.api/src/main/java/org/exoplatform/services/organization/MembershipEventListenerHandler.java)
===================================================================
--- core/trunk/exo.core.component.organization.api/src/main/java/org/exoplatform/services/organization/MembershipEventListenerHandler.java	                        (rev 0)
+++ core/trunk/exo.core.component.organization.api/src/main/java/org/exoplatform/services/organization/MembershipEventListenerHandler.java	2010-06-09 09:48:49 UTC (rev 2520)
@@ -0,0 +1,38 @@
+/*
+ * Copyright (C) 2010 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.organization;
+
+import java.util.List;
+
+/**
+ * @author <a href="anatoliy.bazko at exoplatform.org">Anatoliy Bazko</a>
+ * @version $Id: MembershipEventListenerHandler.java 111 2010-11-11 11:11:11Z tolusha $
+ *
+ */
+public interface MembershipEventListenerHandler
+{
+
+   /**
+    * Return list of MembershipEventListener. List should be unmodifiable to prevent modification outside of MembershipHandler.
+    * 
+    * @return list of MembershipEventListener
+    */
+   public List<MembershipEventListener> getMembershipListeners();
+
+}

Copied: core/trunk/exo.core.component.organization.api/src/main/java/org/exoplatform/services/organization/UserEventListenerHandler.java (from rev 2334, core/trunk/exo.core.component.organization.api/src/main/java/org/exoplatform/services/organization/UserEventListenerHandler.java)
===================================================================
--- core/trunk/exo.core.component.organization.api/src/main/java/org/exoplatform/services/organization/UserEventListenerHandler.java	                        (rev 0)
+++ core/trunk/exo.core.component.organization.api/src/main/java/org/exoplatform/services/organization/UserEventListenerHandler.java	2010-06-09 09:48:49 UTC (rev 2520)
@@ -0,0 +1,38 @@
+/*
+ * Copyright (C) 2010 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.organization;
+
+import java.util.List;
+
+/**
+ * @author <a href="anatoliy.bazko at exoplatform.org">Anatoliy Bazko</a>
+ * @version $Id: UserEventListenerHandler.java 111 2010-11-11 11:11:11Z tolusha
+ *          $
+ */
+public interface UserEventListenerHandler {
+
+  /**
+   * Return list of UserEventListener. List should be unmodifiable to prevent
+   * modification outside of UserHandler.
+   * 
+   * @return list of UserEventListener
+   */
+  public List<UserEventListener> getUserListeners();
+
+}

Copied: core/trunk/exo.core.component.organization.api/src/main/java/org/exoplatform/services/organization/UserProfileEventListenerHandler.java (from rev 2334, core/trunk/exo.core.component.organization.api/src/main/java/org/exoplatform/services/organization/UserProfileEventListenerHandler.java)
===================================================================
--- core/trunk/exo.core.component.organization.api/src/main/java/org/exoplatform/services/organization/UserProfileEventListenerHandler.java	                        (rev 0)
+++ core/trunk/exo.core.component.organization.api/src/main/java/org/exoplatform/services/organization/UserProfileEventListenerHandler.java	2010-06-09 09:48:49 UTC (rev 2520)
@@ -0,0 +1,37 @@
+/*
+ * Copyright (C) 2010 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.organization;
+
+import java.util.List;
+
+/**
+ * @author <a href="anatoliy.bazko at exoplatform.org">Anatoliy Bazko</a>
+ * @version $Id: UserProfileEventListenerHandler.java 111 2010-11-11 11:11:11Z
+ *          tolusha $
+ */
+public interface UserProfileEventListenerHandler {
+
+  /**
+   * Return list of UserProfileEventListener. List should be unmodifiable to
+   * prevent modification outside of UserProfileHandler.
+   * 
+   * @return list of UserProfileEventListener
+   */
+  public List<UserProfileEventListener> getUserProfileListeners();
+}

Modified: core/trunk/exo.core.component.organization.jdbc/src/main/java/org/exoplatform/services/organization/hibernate/GroupDAOImpl.java
===================================================================
--- core/trunk/exo.core.component.organization.jdbc/src/main/java/org/exoplatform/services/organization/hibernate/GroupDAOImpl.java	2010-06-09 08:26:14 UTC (rev 2519)
+++ core/trunk/exo.core.component.organization.jdbc/src/main/java/org/exoplatform/services/organization/hibernate/GroupDAOImpl.java	2010-06-09 09:48:49 UTC (rev 2520)
@@ -22,6 +22,7 @@
 import org.exoplatform.services.database.HibernateService;
 import org.exoplatform.services.organization.Group;
 import org.exoplatform.services.organization.GroupEventListener;
+import org.exoplatform.services.organization.GroupEventListenerHandler;
 import org.exoplatform.services.organization.GroupHandler;
 import org.exoplatform.services.organization.impl.GroupImpl;
 import org.hibernate.Query;
@@ -29,6 +30,7 @@
 
 import java.util.ArrayList;
 import java.util.Collection;
+import java.util.Collections;
 import java.util.List;
 
 /**
@@ -36,7 +38,7 @@
  * benjmestrallet at users.sourceforge.net Author : Tuan Nguyen
  * tuan08 at users.sourceforge.net Date: Aug 22, 2003 Time: 4:51:21 PM
  */
-public class GroupDAOImpl implements GroupHandler
+public class GroupDAOImpl implements GroupHandler, GroupEventListenerHandler
 {
    public static final String queryFindGroupByName =
       "from g in class org.exoplatform.services.organization.impl.GroupImpl " + "where g.groupName = ? ";
@@ -227,4 +229,12 @@
       for (GroupEventListener listener : listeners_)
          listener.postDelete(group);
    }
+
+   /**
+    * {@inheritDoc}
+    */
+   public List<GroupEventListener> getGroupListeners()
+   {
+      return Collections.unmodifiableList(listeners_);
+   }
 }

Modified: core/trunk/exo.core.component.organization.jdbc/src/main/java/org/exoplatform/services/organization/hibernate/MembershipDAOImpl.java
===================================================================
--- core/trunk/exo.core.component.organization.jdbc/src/main/java/org/exoplatform/services/organization/hibernate/MembershipDAOImpl.java	2010-06-09 08:26:14 UTC (rev 2519)
+++ core/trunk/exo.core.component.organization.jdbc/src/main/java/org/exoplatform/services/organization/hibernate/MembershipDAOImpl.java	2010-06-09 09:48:49 UTC (rev 2520)
@@ -24,6 +24,7 @@
 import org.exoplatform.services.organization.Group;
 import org.exoplatform.services.organization.Membership;
 import org.exoplatform.services.organization.MembershipEventListener;
+import org.exoplatform.services.organization.MembershipEventListenerHandler;
 import org.exoplatform.services.organization.MembershipHandler;
 import org.exoplatform.services.organization.MembershipType;
 import org.exoplatform.services.organization.User;
@@ -31,6 +32,7 @@
 import org.hibernate.Session;
 
 import java.util.Collection;
+import java.util.Collections;
 import java.util.Iterator;
 import java.util.List;
 
@@ -40,7 +42,7 @@
  * Created by The eXo Platform SAS Author : Mestrallet Benjamin benjmestrallet at users.sourceforge.net
  * Author : Tuan Nguyen tuan08 at users.sourceforge.net Date: Aug 22, 2003 Time: 4:51:21 PM
  */
-public class MembershipDAOImpl implements MembershipHandler
+public class MembershipDAOImpl implements MembershipHandler, MembershipEventListenerHandler
 {
 
    private static final String queryFindMembershipByUserGroupAndType =
@@ -318,4 +320,12 @@
          listener.postDelete(membership);
       }
    }
+
+   /**
+    * {@inheritDoc}
+    */
+   public List<MembershipEventListener> getMembershipListeners()
+   {
+      return Collections.unmodifiableList(listeners_);
+   }
 }

Modified: core/trunk/exo.core.component.organization.jdbc/src/main/java/org/exoplatform/services/organization/hibernate/UserDAOImpl.java
===================================================================
--- core/trunk/exo.core.component.organization.jdbc/src/main/java/org/exoplatform/services/organization/hibernate/UserDAOImpl.java	2010-06-09 08:26:14 UTC (rev 2519)
+++ core/trunk/exo.core.component.organization.jdbc/src/main/java/org/exoplatform/services/organization/hibernate/UserDAOImpl.java	2010-06-09 09:48:49 UTC (rev 2520)
@@ -32,13 +32,14 @@
 import java.util.ArrayList;
 import java.util.Calendar;
 import java.util.Collection;
+import java.util.Collections;
 import java.util.List;
 
 /**
  * Created by The eXo Platform SAS Author : Mestrallet Benjamin benjmestrallet at users.sourceforge.net
  * Author : Tuan Nguyen tuan08 at users.sourceforge.net Date: Aug 22, 2003 Time: 4:51:21 PM
  */
-public class UserDAOImpl implements UserHandler
+public class UserDAOImpl implements UserHandler, UserEventListenerHandler
 {
    public static final String queryFindUserByName =
       "from u in class org.exoplatform.services.organization.impl.UserImpl " + "where u.userName = ?";
@@ -255,4 +256,12 @@
       for (UserEventListener listener : listeners_)
          listener.postDelete(user);
    }
+
+   /**
+    * {@inheritDoc}
+    */
+   public List<UserEventListener> getUserListeners()
+   {
+      return Collections.unmodifiableList(listeners_);
+   }
 }

Modified: core/trunk/exo.core.component.organization.jdbc/src/main/java/org/exoplatform/services/organization/hibernate/UserProfileDAOImpl.java
===================================================================
--- core/trunk/exo.core.component.organization.jdbc/src/main/java/org/exoplatform/services/organization/hibernate/UserProfileDAOImpl.java	2010-06-09 08:26:14 UTC (rev 2519)
+++ core/trunk/exo.core.component.organization.jdbc/src/main/java/org/exoplatform/services/organization/hibernate/UserProfileDAOImpl.java	2010-06-09 09:48:49 UTC (rev 2520)
@@ -23,6 +23,7 @@
 import org.exoplatform.services.database.HibernateService;
 import org.exoplatform.services.organization.UserProfile;
 import org.exoplatform.services.organization.UserProfileEventListener;
+import org.exoplatform.services.organization.UserProfileEventListenerHandler;
 import org.exoplatform.services.organization.UserProfileHandler;
 import org.exoplatform.services.organization.impl.UserProfileData;
 import org.exoplatform.services.organization.impl.UserProfileImpl;
@@ -30,6 +31,7 @@
 
 import java.util.ArrayList;
 import java.util.Collection;
+import java.util.Collections;
 import java.util.List;
 
 /**
@@ -37,7 +39,7 @@
  * benjmestrallet at users.sourceforge.net Author : Tuan Nguyen
  * tuan08 at users.sourceforge.net Date: Aug 22, 2003 Time: 4:51:21 PM
  */
-public class UserProfileDAOImpl implements UserProfileHandler
+public class UserProfileDAOImpl implements UserProfileHandler, UserProfileEventListenerHandler
 {
    static private UserProfile NOT_FOUND = new UserProfileImpl();
 
@@ -199,4 +201,12 @@
          listener.postDelete(profile);
    }
 
+   /**
+    * {@inheritDoc}
+    */
+   public List<UserProfileEventListener> getUserProfileListeners()
+   {
+      return Collections.unmodifiableList(listeners_);
+   }
+
 }

Modified: core/trunk/exo.core.component.organization.ldap/src/main/java/org/exoplatform/services/organization/ldap/GroupDAOImpl.java
===================================================================
--- core/trunk/exo.core.component.organization.ldap/src/main/java/org/exoplatform/services/organization/ldap/GroupDAOImpl.java	2010-06-09 08:26:14 UTC (rev 2519)
+++ core/trunk/exo.core.component.organization.ldap/src/main/java/org/exoplatform/services/organization/ldap/GroupDAOImpl.java	2010-06-09 09:48:49 UTC (rev 2520)
@@ -23,11 +23,13 @@
 import org.exoplatform.services.log.Log;
 import org.exoplatform.services.organization.Group;
 import org.exoplatform.services.organization.GroupEventListener;
+import org.exoplatform.services.organization.GroupEventListenerHandler;
 import org.exoplatform.services.organization.GroupHandler;
 import org.exoplatform.services.organization.impl.GroupImpl;
 
 import java.util.ArrayList;
 import java.util.Collection;
+import java.util.Collections;
 import java.util.List;
 
 import javax.naming.CompositeName;
@@ -50,7 +52,7 @@
  * 
  * @version andrew00x $
  */
-public class GroupDAOImpl extends BaseDAO implements GroupHandler
+public class GroupDAOImpl extends BaseDAO implements GroupHandler, GroupEventListenerHandler
 {
 
    /**
@@ -751,4 +753,12 @@
       group.setId(parent.getId() + "/" + group.getGroupName());
       group.setParentId(parent.getId());
    }
+
+   /**
+    * {@inheritDoc}
+    */
+   public List<GroupEventListener> getGroupListeners()
+   {
+      return Collections.unmodifiableList(listeners);
+   }
 }

Modified: core/trunk/exo.core.component.organization.ldap/src/main/java/org/exoplatform/services/organization/ldap/MembershipDAOImpl.java
===================================================================
--- core/trunk/exo.core.component.organization.ldap/src/main/java/org/exoplatform/services/organization/ldap/MembershipDAOImpl.java	2010-06-09 08:26:14 UTC (rev 2519)
+++ core/trunk/exo.core.component.organization.ldap/src/main/java/org/exoplatform/services/organization/ldap/MembershipDAOImpl.java	2010-06-09 09:48:49 UTC (rev 2520)
@@ -24,6 +24,7 @@
 import org.exoplatform.services.organization.Group;
 import org.exoplatform.services.organization.Membership;
 import org.exoplatform.services.organization.MembershipEventListener;
+import org.exoplatform.services.organization.MembershipEventListenerHandler;
 import org.exoplatform.services.organization.MembershipHandler;
 import org.exoplatform.services.organization.MembershipType;
 import org.exoplatform.services.organization.User;
@@ -31,6 +32,7 @@
 
 import java.util.ArrayList;
 import java.util.Collection;
+import java.util.Collections;
 import java.util.List;
 
 import javax.naming.InvalidNameException;
@@ -50,7 +52,7 @@
  * Created by The eXo Platform SAS Author : Tuan Nguyen tuan08 at users.sourceforge.net Oct 14, 2005. @version
  * andrew00x $
  */
-public class MembershipDAOImpl extends BaseDAO implements MembershipHandler
+public class MembershipDAOImpl extends BaseDAO implements MembershipHandler, MembershipEventListenerHandler
 {
 
    /**
@@ -720,4 +722,11 @@
          listener.preSave(membership, isNew);
    }
 
+   /**
+    * {@inheritDoc}
+    */
+   public List<MembershipEventListener> getMembershipListeners()
+   {
+      return Collections.unmodifiableList(listeners);
+   }
 }

Modified: core/trunk/exo.core.component.organization.ldap/src/main/java/org/exoplatform/services/organization/ldap/UserDAOImpl.java
===================================================================
--- core/trunk/exo.core.component.organization.ldap/src/main/java/org/exoplatform/services/organization/ldap/UserDAOImpl.java	2010-06-09 08:26:14 UTC (rev 2519)
+++ core/trunk/exo.core.component.organization.ldap/src/main/java/org/exoplatform/services/organization/ldap/UserDAOImpl.java	2010-06-09 09:48:49 UTC (rev 2520)
@@ -25,6 +25,7 @@
 import org.exoplatform.services.organization.impl.UserImpl;
 
 import java.util.ArrayList;
+import java.util.Collections;
 import java.util.List;
 
 import javax.naming.NamingException;
@@ -38,7 +39,7 @@
  * Created by The eXo Platform SAS Author : Tuan Nguyen
  * tuan08 at users.sourceforge.net Oct 14, 2005. @version andrew00x $
  */
-public class UserDAOImpl extends BaseDAO implements UserHandler
+public class UserDAOImpl extends BaseDAO implements UserHandler, UserEventListenerHandler
 {
 
    /**
@@ -561,4 +562,12 @@
       for (UserEventListener listener : listeners)
          listener.postDelete(user);
    }
+
+   /**
+    * {@inheritDoc}
+    */
+   public List<UserEventListener> getUserListeners()
+   {
+      return Collections.unmodifiableList(listeners);
+   }
 }

Modified: core/trunk/exo.core.component.organization.ldap/src/main/java/org/exoplatform/services/organization/ldap/UserProfileDAOImpl.java
===================================================================
--- core/trunk/exo.core.component.organization.ldap/src/main/java/org/exoplatform/services/organization/ldap/UserProfileDAOImpl.java	2010-06-09 08:26:14 UTC (rev 2519)
+++ core/trunk/exo.core.component.organization.ldap/src/main/java/org/exoplatform/services/organization/ldap/UserProfileDAOImpl.java	2010-06-09 09:48:49 UTC (rev 2520)
@@ -23,12 +23,14 @@
 import org.exoplatform.services.log.Log;
 import org.exoplatform.services.organization.UserProfile;
 import org.exoplatform.services.organization.UserProfileEventListener;
+import org.exoplatform.services.organization.UserProfileEventListenerHandler;
 import org.exoplatform.services.organization.UserProfileHandler;
 import org.exoplatform.services.organization.impl.UserProfileData;
 import org.exoplatform.services.organization.impl.UserProfileImpl;
 
 import java.util.ArrayList;
 import java.util.Collection;
+import java.util.Collections;
 import java.util.List;
 
 import javax.naming.NameNotFoundException;
@@ -44,7 +46,7 @@
  * Created by The eXo Platform SAS Author : Tuan Nguyen
  * tuan08 at users.sourceforge.net Oct 14, 2005. @version andrew00x $
  */
-public class UserProfileDAOImpl extends BaseDAO implements UserProfileHandler
+public class UserProfileDAOImpl extends BaseDAO implements UserProfileHandler, UserProfileEventListenerHandler
 {
 
    /**
@@ -264,4 +266,12 @@
       listeners.add(listener);
    }
 
+   /**
+    * {@inheritDoc}
+    */
+   public List<UserProfileEventListener> getUserProfileListeners()
+   {
+      return Collections.unmodifiableList(listeners);
+   }
+
 }

Modified: core/trunk/exo.core.component.script.groovy/src/main/java/org/exoplatform/services/script/groovy/GroovyScriptInstantiator.java
===================================================================
--- core/trunk/exo.core.component.script.groovy/src/main/java/org/exoplatform/services/script/groovy/GroovyScriptInstantiator.java	2010-06-09 08:26:14 UTC (rev 2519)
+++ core/trunk/exo.core.component.script.groovy/src/main/java/org/exoplatform/services/script/groovy/GroovyScriptInstantiator.java	2010-06-09 09:48:49 UTC (rev 2520)
@@ -19,6 +19,7 @@
 package org.exoplatform.services.script.groovy;
 
 import groovy.lang.GroovyClassLoader;
+import groovy.lang.GroovyCodeSource;
 
 import org.codehaus.groovy.control.CompilationFailedException;
 import org.exoplatform.container.ExoContainer;
@@ -50,7 +51,7 @@
 {
 
    /** Our logger. */
-   private static final Log LOG = ExoLogger.getLogger("exo.core.component.script.groovy.GroovyScriptInstantiator");
+   private static final Log LOG = ExoLogger.getLogger(GroovyScriptInstantiator.class);
 
    /**
     * eXo Container.
@@ -71,11 +72,11 @@
 
    /**
     * Load script from given address.
-    * 
+    *
     * @param spec the resource's address.
     * @return the object created from groovy script.
     * @throws MalformedURLException if parameter <code>url</code> have wrong
-    *           format.
+    *         format.
     * @throws IOException if can't load script from given <code>url</code>.
     * @see GroovyScriptInstantiator#instantiateScript(URL)
     * @see GroovyScriptInstantiator#instantiateScript(InputStream)
@@ -87,7 +88,7 @@
 
    /**
     * Load script from given address.
-    * 
+    *
     * @param url the resource's address.
     * @return the object created from groovy script.
     * @throws IOException if can't load script from given <code>url</code>.
@@ -101,10 +102,11 @@
 
    /**
     * Parse given stream, the stream must represents groovy script.
-    * 
+    *
     * @param stream the stream represented groovy script.
     * @return the object created from groovy script.
-    * @throws IOException if stream can't be parsed or object can't be created.
+    * @throws IOException if stream can't be parsed or object can't be created
+    *         cause to illegal content of stream
     */
    public Object instantiateScript(InputStream stream) throws IOException
    {
@@ -113,12 +115,13 @@
 
    /**
     * Parse given stream, the stream must represents groovy script.
-    * 
+    *
     * @param stream the stream represented groovy script.
     * @param name script name is null or empty string that groovy completer will
-    *          use default name
+    *        use default name
     * @return the object created from groovy script.
-    * @throws IOException if stream can't be parsed or object can't be created.
+    * @throws IOException if stream can't be parsed or object can't be created
+    *         cause to illegal content of stream
     */
    public Object instantiateScript(InputStream stream, String name) throws IOException
    {
@@ -133,13 +136,39 @@
       {
          loader = new GroovyClassLoader();
       }
+      return instantiateScript(stream, name, loader);
+   }
+
+   /**
+    * Parse given stream, the stream must represents groovy script and use given
+    * class-loader. If <code>loader == null</code> then
+    * {@link groovy.lang.GroovyClassLoader} will be is use.
+    *
+    * @param stream the stream represented groovy script.
+    * @param name script name is null or empty string that groovy completer will
+    *        use default name
+    * @param loader GroovyClassLoader or <code>null</code>
+    * @return the object created from groovy script.
+    * @throws IOException if stream can't be parsed or object can't be created
+    *         cause to illegal content of stream
+    */
+   public Object instantiateScript(InputStream stream, String name, GroovyClassLoader loader) throws IOException
+   {
+      if (loader == null)
+      {
+         loader = new GroovyClassLoader();
+      }
       Class<?> clazz = null;
       try
       {
          if (name != null && name.length() > 0)
+         {
             clazz = loader.parseClass(stream, name);
+         }
          else
+         {
             clazz = loader.parseClass(stream);
+         }
       }
       catch (CompilationFailedException e)
       {
@@ -160,9 +189,36 @@
    }
 
    /**
+    * Instantiate script from give {@link GroovyCodeSource} and use given
+    * class-loader. If <code>loader == null</code> then
+    * {@link groovy.lang.GroovyClassLoader} will be is use.
+    *
+    * @param codeSource code source
+    * @param loader
+    * @return
+    */
+   public Object instantiateScript(GroovyCodeSource codeSource, GroovyClassLoader loader)
+   {
+      if (loader == null)
+      {
+         loader = new GroovyClassLoader();
+      }
+      Class<?> clazz = null;
+      clazz = loader.parseClass(codeSource);
+      try
+      {
+         return createObject(clazz);
+      }
+      catch (Exception e)
+      {
+         throw new RuntimeException("Can't instantiate groovy script: " + e.getMessage(), e);
+      }
+   }
+
+   /**
     * Created object from given class, if class has parameters in constructor,
     * then this parameters will be searched in container.
-    * 
+    *
     * @param clazz java-groovy class
     */
    private Object createObject(Class<?> clazz) throws Exception
@@ -180,7 +236,9 @@
       {
          Class<?>[] parameterTypes = c.getParameterTypes();
          if (parameterTypes.length == 0)
+         {
             return c.newInstance();
+         }
 
          List<Object> parameters = new ArrayList<Object>(parameterTypes.length);
 
@@ -188,7 +246,9 @@
          {
             Object param = container.getComponentInstanceOfType(parameterType);
             if (param == null)
+            {
                continue l;
+            }
             parameters.add(param);
          }
 
@@ -214,9 +274,13 @@
          int c1 = constructor1.getParameterTypes().length;
          int c2 = constructor2.getParameterTypes().length;
          if (c1 < c2)
+         {
             return 1;
+         }
          if (c1 > c2)
+         {
             return -1;
+         }
          return 0;
       }
 
@@ -227,7 +291,10 @@
       if (plugin instanceof GroovyScriptJarJarPlugin)
       {
          GroovyScriptJarJarPlugin jarjarPlugin = (GroovyScriptJarJarPlugin)plugin;
-         LOG.debug("Add mapping to groovy instantiator:" + jarjarPlugin.getMapping());
+         if (LOG.isDebugEnabled())
+         {
+            LOG.debug("Add mapping to groovy instantiator:" + jarjarPlugin.getMapping());
+         }
          mapping.putAll(jarjarPlugin.getMapping());
       }
    }

Modified: core/trunk/packaging/module/src/main/javascript/core.packaging.module.js
===================================================================
--- core/trunk/packaging/module/src/main/javascript/core.packaging.module.js	2010-06-09 08:26:14 UTC (rev 2519)
+++ core/trunk/packaging/module/src/main/javascript/core.packaging.module.js	2010-06-09 09:48:49 UTC (rev 2520)
@@ -38,7 +38,7 @@
 
   module.component.documents =
     new Project("org.exoplatform.core", "exo.core.component.document", "jar", module.version).
-    addDependency(new Project("pdfbox", "pdfbox", "jar", "0.7.3")).
+    addDependency(new Project("org.apache.pdfbox", "pdfbox", "jar", "1.1.0")).
     addDependency(new Project("com.lowagie", "itext", "jar", "2.1.0")).
     addDependency(new Project("bouncycastle", "bcmail-jdk14", "jar", "136")).
     addDependency(new Project("bouncycastle", "bcprov-jdk14", "jar", "136")).

Modified: core/trunk/pom.xml
===================================================================
--- core/trunk/pom.xml	2010-06-09 08:26:14 UTC (rev 2519)
+++ core/trunk/pom.xml	2010-06-09 09:48:49 UTC (rev 2520)
@@ -267,9 +267,9 @@
          </dependency>
          
          <dependency>
-            <groupId>pdfbox</groupId>
+            <groupId>org.apache.pdfbox</groupId>
             <artifactId>pdfbox</artifactId>
-            <version>0.7.3</version>
+            <version>1.1.0</version>
          </dependency>
          
          <dependency>
@@ -334,6 +334,24 @@
             <version>1.7</version>
          </dependency>
 
+        <dependency>
+           <groupId>commons-dbcp</groupId>
+           <artifactId>commons-dbcp</artifactId>
+           <version>1.2.2</version>
+           <exclusions>
+              <exclusion>
+                 <groupId>commons-pool</groupId>
+                 <artifactId>commons-pool</artifactId>
+              </exclusion>
+           </exclusions>
+        </dependency>
+
+        <dependency>
+           <groupId>commons-pool</groupId>
+           <artifactId>commons-pool</artifactId>
+           <version>1.5.4</version>
+        </dependency>
+
       </dependencies>
    </dependencyManagement>
 



More information about the exo-jcr-commits mailing list