Index: /usr/src/jackrabbit/contrib/jackrabbit-jcr-mapping/jcr-mapping/src/main/java/org/apache/jackrabbit/ocm/exception/InvalidQueryException.java
===================================================================
--- /usr/src/jackrabbit/contrib/jackrabbit-jcr-mapping/jcr-mapping/src/main/java/org/apache/jackrabbit/ocm/exception/InvalidQueryException.java	(revision 0)
+++ /usr/src/jackrabbit/contrib/jackrabbit-jcr-mapping/jcr-mapping/src/main/java/org/apache/jackrabbit/ocm/exception/InvalidQueryException.java	(revision 0)
@@ -0,0 +1,37 @@
+/*
+ * $Url: $
+ * $Id: $
+ *
+ * Copyright 1997-2005 Day Management AG
+ * Barfuesserplatz 6, 4001 Basel, Switzerland
+ * All Rights Reserved.
+ *
+ * This software is the confidential and proprietary information of
+ * Day Management AG, ("Confidential Information"). You shall not
+ * disclose such Confidential Information and shall use it only in
+ * accordance with the terms of the license agreement you entered into
+ * with Day.
+ */
+package org.apache.jackrabbit.ocm.exception;
+
+/**
+ * The <code>InvalidQuerySyntaxException</code> is an
+ * <code>ObjectContentManagerException</code> thrown if the query of the
+ * {@link org.apache.jackrabbit.ocm.manager.ObjectContentManager#getObjectIterator(String, String)}
+ * is invalid. This exception actually wraps a standard JCR
+ * <code>javax.jcr.InvalidQueryException</code> to make it an unchecked
+ * exception. The cause of this exception will always be the original
+ * <code>InvalidQueryException</code> and the message will always be the
+ * original exception's message.
+ */
+public class InvalidQueryException extends ObjectContentManagerException {
+
+    /**
+     * Create an exception wrapping the given checked JCR exception
+     * 
+     * @param cause The wrapped JCR <code>InvalidQueryException</code>
+     */
+    public InvalidQueryException(javax.jcr.query.InvalidQueryException cause) {
+        super(cause.getMessage(), cause);
+    }
+}
Index: /usr/src/jackrabbit/contrib/jackrabbit-jcr-mapping/jcr-mapping/src/main/java/org/apache/jackrabbit/ocm/manager/impl/ObjectContentManagerImpl.java
===================================================================
--- /usr/src/jackrabbit/contrib/jackrabbit-jcr-mapping/jcr-mapping/src/main/java/org/apache/jackrabbit/ocm/manager/impl/ObjectContentManagerImpl.java	(revision 572301)
+++ /usr/src/jackrabbit/contrib/jackrabbit-jcr-mapping/jcr-mapping/src/main/java/org/apache/jackrabbit/ocm/manager/impl/ObjectContentManagerImpl.java	(working copy)
@@ -642,6 +642,30 @@
     }
 
     /**
+    *
+    * @see org.apache.jackrabbit.ocm.manager.ObjectContentManager#getObjectIterator(String, String)
+    */
+    public Iterator getObjectIterator(String query, String language) {
+        try {
+            log.debug("Get Object with expression : " + query);
+
+            javax.jcr.query.Query jcrQuery = session.getWorkspace().getQueryManager().createQuery(query, language);
+            QueryResult queryResult = jcrQuery.execute();
+            NodeIterator nodeIterator = queryResult.getNodes();
+
+            return new ObjectIterator(nodeIterator,
+                                      null,
+                                      this.objectConverter,
+                                      this.session);
+
+        } catch (InvalidQueryException iqe) {
+            throw new org.apache.jackrabbit.ocm.exception.InvalidQueryException(iqe);
+        } catch (RepositoryException re) {
+            throw new ObjectContentManagerException(re.getMessage(), re);
+        }
+    }
+    
+    /**
      *
      * @see org.apache.jackrabbit.ocm.manager.ObjectContentManager#checkin(java.lang.String)
      */
Index: /usr/src/jackrabbit/contrib/jackrabbit-jcr-mapping/jcr-mapping/src/main/java/org/apache/jackrabbit/ocm/manager/ObjectContentManager.java
===================================================================
--- /usr/src/jackrabbit/contrib/jackrabbit-jcr-mapping/jcr-mapping/src/main/java/org/apache/jackrabbit/ocm/manager/ObjectContentManager.java	(revision 572301)
+++ /usr/src/jackrabbit/contrib/jackrabbit-jcr-mapping/jcr-mapping/src/main/java/org/apache/jackrabbit/ocm/manager/ObjectContentManager.java	(working copy)
@@ -200,6 +200,37 @@
      
     
     /**
+     * Retrieve an objects matching a query specified in a specific query language.
+     * This method is expected to call create a <code>Query</code> using the
+     * session's <code>QueryManager</code> with the given query exception and
+     * language parameters.
+     * <p>
+     * If the query <code>statement</code> is syntactically invalid, given the
+     * language specified, an <code>InvalidQueryException</code> is thrown. The
+     * <code>language</code> must be a string from among those returned by
+     * <code>javax.jcr.QueryManager.getSupportedQueryLanguages()</code>;
+     * if it is not, then an <code>InvalidQueryException</code> is thrown.
+     * 
+     * @param query The query to execute to find the objects.
+     * @param language The language in which the query is  written
+     * 
+     * @return An iterator of objects instances. Each entry in the iterator
+     *      represents the mapping of a node returned by the query. If the
+     *      query returns a node, which may not be mapped, the respective node
+     *      is ignored.
+     * 
+     * @throws org.apache.jackrabbit.ocm.exception.InvalidQueryException If the
+     *      query is not a valid JCR Query according to the specified language 
+     * @throws ObjectContentManagerException If an error occurrs querying for
+     *      the objects.
+     *      
+     * @see javax.jcr.query.QueryManager#createQuery(String, String)
+     * @see javax.jcr.query.QueryManager#getSupportedQueryLanguages()
+     */
+    public Iterator getObjectIterator(String query, String language);
+
+    
+    /**
      * Checkout - Create a new version
      * This is only possible if the object is based on mix:versionable node type
      *  

