You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@sling.apache.org by cz...@apache.org on 2008/08/25 10:37:31 UTC

svn commit: r688657 - in /incubator/sling/trunk/extensions/event/src/main/java/org/apache/sling/event: EventUtil.java impl/AbstractRepositoryEventHandler.java

Author: cziegeler
Date: Mon Aug 25 01:37:31 2008
New Revision: 688657

URL: http://svn.apache.org/viewvc?rev=688657&view=rev
Log:
Correct ignoring prefixes and add convenience methods.

Modified:
    incubator/sling/trunk/extensions/event/src/main/java/org/apache/sling/event/EventUtil.java
    incubator/sling/trunk/extensions/event/src/main/java/org/apache/sling/event/impl/AbstractRepositoryEventHandler.java

Modified: incubator/sling/trunk/extensions/event/src/main/java/org/apache/sling/event/EventUtil.java
URL: http://svn.apache.org/viewvc/incubator/sling/trunk/extensions/event/src/main/java/org/apache/sling/event/EventUtil.java?rev=688657&r1=688656&r2=688657&view=diff
==============================================================================
--- incubator/sling/trunk/extensions/event/src/main/java/org/apache/sling/event/EventUtil.java (original)
+++ incubator/sling/trunk/extensions/event/src/main/java/org/apache/sling/event/EventUtil.java Mon Aug 25 01:37:31 2008
@@ -24,6 +24,7 @@
 import java.io.ObjectInputStream;
 import java.io.ObjectOutputStream;
 import java.util.ArrayList;
+import java.util.Arrays;
 import java.util.Calendar;
 import java.util.Dictionary;
 import java.util.Enumeration;
@@ -278,11 +279,32 @@
      * @throws RepositoryException
      */
     public static void addProperties(final Node node,
+                                     final Map<String, Object> properties,
+                                     final String[] ignoreProps,
+                                     final String binPropertyName)
+    throws RepositoryException {
+        addProperties(node, new EventPropertiesMap(properties), ignoreProps, binPropertyName);
+    }
+
+    /**
+     * Add all java properties as properties to the node.
+     * If the name and the value of a map entry can easily converted into
+     * a repository property, it is directly added. All other java
+     * properties are stored in one binary property.
+     *
+     * @param node The node where all properties are added to
+     * @param properties The map of properties.
+     * @param ignoreProps optional list of property which should be ignored
+     * @param binPropertyName The name of the binary property.
+     * @throws RepositoryException
+     */
+    public static void addProperties(final Node node,
                                      final EventPropertiesMap properties,
-                                     final List<String> ignoreProps,
+                                     final String[] ignoreProps,
                                      final String binPropertyName)
     throws RepositoryException {
         if ( properties != null ) {
+            final List<String> ignorePropList = (ignoreProps == null ? null : Arrays.asList(ignoreProps));
             // check which props we can write directly and
             // which we need to write as a binary blob
             final List<String> propsAsBlob = new ArrayList<String>();
@@ -291,7 +313,7 @@
             while ( i.hasNext() ) {
                 final Map.Entry<String, Object> current = i.next();
 
-                if (ignoreProps == null || !ignoreProps.contains(current.getKey()) ) {
+                if (ignorePropList == null || !ignorePropList.contains(current.getKey()) ) {
                     // sanity check
                     if ( current.getValue() != null ) {
                         if ( !setProperty(current.getKey(), current.getValue(), node) ) {
@@ -326,7 +348,7 @@
      */
     public static EventPropertiesMap readProperties(final Node node,
                                                     final String binPropertyName,
-                                                    final List<String> ignorePrefixes)
+                                                    final String[] ignorePrefixes)
     throws RepositoryException, ClassNotFoundException {
         final Map<String, Object> properties = new HashMap<String, Object>();
 
@@ -348,8 +370,14 @@
         final PropertyIterator pI = node.getProperties();
         while ( pI.hasNext() ) {
             final Property p = pI.nextProperty();
-            if ( !p.getName().startsWith("jcr:") &&
-                 (ignorePrefixes == null || !ignorePrefixes.contains(p.getName())))  {
+            boolean ignore = p.getName().startsWith("jcr:");
+            if ( !ignore && ignorePrefixes != null ) {
+                int index = 0;
+                while ( !ignore && index < ignorePrefixes.length ) {
+                    ignore = p.getName().startsWith(ignorePrefixes[index]);
+                }
+            }
+            if ( !ignore ) {
                 final String name = ISO9075.decode(p.getName());
                 final Value value = p.getValue();
                 final Object o;

Modified: incubator/sling/trunk/extensions/event/src/main/java/org/apache/sling/event/impl/AbstractRepositoryEventHandler.java
URL: http://svn.apache.org/viewvc/incubator/sling/trunk/extensions/event/src/main/java/org/apache/sling/event/impl/AbstractRepositoryEventHandler.java?rev=688657&r1=688656&r2=688657&view=diff
==============================================================================
--- incubator/sling/trunk/extensions/event/src/main/java/org/apache/sling/event/impl/AbstractRepositoryEventHandler.java (original)
+++ incubator/sling/trunk/extensions/event/src/main/java/org/apache/sling/event/impl/AbstractRepositoryEventHandler.java Mon Aug 25 01:37:31 2008
@@ -19,10 +19,8 @@
 package org.apache.sling.event.impl;
 
 import java.io.IOException;
-import java.util.ArrayList;
 import java.util.Calendar;
 import java.util.Dictionary;
-import java.util.List;
 import java.util.concurrent.BlockingQueue;
 import java.util.concurrent.LinkedBlockingQueue;
 
@@ -101,18 +99,16 @@
     protected SlingSettingsService settingsService;
 
     /** List of ignored properties to write to the repository. */
-    private static final List<String> IGNORE_PROPERTIES = new ArrayList<String>();
-    static {
-        IGNORE_PROPERTIES.add(EventUtil.PROPERTY_DISTRIBUTE);
-        IGNORE_PROPERTIES.add(EventUtil.PROPERTY_APPLICATION);
-        IGNORE_PROPERTIES.add(EventUtil.JobStatusNotifier.CONTEXT_PROPERTY_NAME);
-    }
+    private static final String[] IGNORE_PROPERTIES = new String[] {
+        EventUtil.PROPERTY_DISTRIBUTE,
+        EventUtil.PROPERTY_APPLICATION,
+        EventUtil.JobStatusNotifier.CONTEXT_PROPERTY_NAME
+    };
 
     /** List of ignored prefixes to read from the repository. */
-    private static final List<String> IGNORE_PREFIXES = new ArrayList<String>();
-    static {
-        IGNORE_PREFIXES.add(EventHelper.EVENT_PREFIX);
-    }
+    private static final String[] IGNORE_PREFIXES = new String[] {
+        EventHelper.EVENT_PREFIX
+    };
 
     /**
      * Activate this component.