You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@jackrabbit.apache.org by th...@apache.org on 2011/09/09 17:19:55 UTC

svn commit: r1167243 - in /jackrabbit/sandbox/jackrabbit-mk/jackrabbit-spi2microkernel/src/main/java/org/apache/jackrabbit/spi2microkernel: QueryInfoImpl.java RepositoryServiceImpl.java

Author: thomasm
Date: Fri Sep  9 15:19:55 2011
New Revision: 1167243

URL: http://svn.apache.org/viewvc?rev=1167243&view=rev
Log:
Pretend to run queries (log them as warning) instead of throwing an exception.
Synchronize registering and unregistering namespaces and node types.

Added:
    jackrabbit/sandbox/jackrabbit-mk/jackrabbit-spi2microkernel/src/main/java/org/apache/jackrabbit/spi2microkernel/QueryInfoImpl.java
Modified:
    jackrabbit/sandbox/jackrabbit-mk/jackrabbit-spi2microkernel/src/main/java/org/apache/jackrabbit/spi2microkernel/RepositoryServiceImpl.java

Added: jackrabbit/sandbox/jackrabbit-mk/jackrabbit-spi2microkernel/src/main/java/org/apache/jackrabbit/spi2microkernel/QueryInfoImpl.java
URL: http://svn.apache.org/viewvc/jackrabbit/sandbox/jackrabbit-mk/jackrabbit-spi2microkernel/src/main/java/org/apache/jackrabbit/spi2microkernel/QueryInfoImpl.java?rev=1167243&view=auto
==============================================================================
--- jackrabbit/sandbox/jackrabbit-mk/jackrabbit-spi2microkernel/src/main/java/org/apache/jackrabbit/spi2microkernel/QueryInfoImpl.java (added)
+++ jackrabbit/sandbox/jackrabbit-mk/jackrabbit-spi2microkernel/src/main/java/org/apache/jackrabbit/spi2microkernel/QueryInfoImpl.java Fri Sep  9 15:19:55 2011
@@ -0,0 +1,77 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License.  You may obtain a copy of the License at
+ *
+ *   http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied.  See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+package org.apache.jackrabbit.spi2microkernel;
+
+import javax.jcr.RangeIterator;
+import org.apache.jackrabbit.spi.Name;
+import org.apache.jackrabbit.spi.QueryInfo;
+
+/**
+ * A query result.
+ */
+public class QueryInfoImpl implements QueryInfo {
+
+    @Override
+    public String[] getColumnNames() {
+        return new String[0];
+    }
+
+    @Override
+    public RangeIterator getRows() {
+        return new RangeIterator() {
+
+            @Override
+            public long getPosition() {
+                return 0;
+            }
+
+            @Override
+            public long getSize() {
+                return 0;
+            }
+
+            @Override
+            public void skip(long x) {
+                // ignore
+            }
+
+            @Override
+            public boolean hasNext() {
+                return false;
+            }
+
+            @Override
+            public Object next() {
+                return null;
+            }
+
+            @Override
+            public void remove() {
+                throw new UnsupportedOperationException();
+            }
+
+        };
+    }
+
+    @Override
+    public Name[] getSelectorNames() {
+        return new Name[0];
+    }
+
+}

Modified: jackrabbit/sandbox/jackrabbit-mk/jackrabbit-spi2microkernel/src/main/java/org/apache/jackrabbit/spi2microkernel/RepositoryServiceImpl.java
URL: http://svn.apache.org/viewvc/jackrabbit/sandbox/jackrabbit-mk/jackrabbit-spi2microkernel/src/main/java/org/apache/jackrabbit/spi2microkernel/RepositoryServiceImpl.java?rev=1167243&r1=1167242&r2=1167243&view=diff
==============================================================================
--- jackrabbit/sandbox/jackrabbit-mk/jackrabbit-spi2microkernel/src/main/java/org/apache/jackrabbit/spi2microkernel/RepositoryServiceImpl.java (original)
+++ jackrabbit/sandbox/jackrabbit-mk/jackrabbit-spi2microkernel/src/main/java/org/apache/jackrabbit/spi2microkernel/RepositoryServiceImpl.java Fri Sep  9 15:19:55 2011
@@ -42,6 +42,7 @@ import org.apache.jackrabbit.spi.Propert
 import org.apache.jackrabbit.spi.QNodeDefinition;
 import org.apache.jackrabbit.spi.QNodeTypeDefinition;
 import org.apache.jackrabbit.spi.QValue;
+import org.apache.jackrabbit.spi.QueryInfo;
 import org.apache.jackrabbit.spi.SessionInfo;
 import org.apache.jackrabbit.spi.Subscription;
 import org.apache.jackrabbit.spi.commons.AbstractRepositoryService;
@@ -69,6 +70,8 @@ import javax.jcr.PathNotFoundException;
 import javax.jcr.PropertyType;
 import javax.jcr.RepositoryException;
 import javax.jcr.UnsupportedRepositoryOperationException;
+import javax.jcr.query.InvalidQueryException;
+import javax.jcr.query.Query;
 import javax.jcr.version.OnParentVersionAction;
 import java.io.IOException;
 import java.io.InputStream;
@@ -128,6 +131,7 @@ public class RepositoryServiceImpl exten
     private static final long BINARY_VALUE_INLINE_THRESHOLD = 0x1000;
     private static final String DEFAULT_DEFAULT_WORKSPACE = "default";
     private static final String DEFAULT_SYSTEM_WORKSPACE = "system";
+    private static final String[] SUPPORTED_LANGUAGES = new String[]{Query.SQL, Query.JCR_JQOM, Query.JCR_SQL2, Query.XPATH};
 
     static final Logger log = LoggerFactory.getLogger(RepositoryServiceImpl.class);
 
@@ -463,7 +467,7 @@ public class RepositoryServiceImpl exten
     //------------------------------------------< Node type management >---
 
     @Override
-    public void registerNodeTypes(SessionInfo sessionInfo, QNodeTypeDefinition[] nodeTypeDefinitions, boolean allowUpdate)
+    public synchronized void registerNodeTypes(SessionInfo sessionInfo, QNodeTypeDefinition[] nodeTypeDefinitions, boolean allowUpdate)
             throws RepositoryException {
 
         nodeTypeDefs.registerNodeTypes(nodeTypeDefinitions, true);
@@ -471,7 +475,7 @@ public class RepositoryServiceImpl exten
     }
 
     @Override
-    public void unregisterNodeTypes(SessionInfo sessionInfo, Name[] nodeTypeNames) throws RepositoryException {
+    public synchronized void unregisterNodeTypes(SessionInfo sessionInfo, Name[] nodeTypeNames) throws RepositoryException {
         nodeTypeDefs.unregisterNodeTypes(nodeTypeNames);
         nodeTypeStore.write(namespaces, nodeTypeDefs);
     }
@@ -490,7 +494,7 @@ public class RepositoryServiceImpl exten
     }};
 
     @Override
-    public void registerNamespace(SessionInfo sessionInfo, String prefix, String uri) throws RepositoryException {
+    public synchronized void registerNamespace(SessionInfo sessionInfo, String prefix, String uri) throws RepositoryException {
         if (namespaces.hasPrefix(prefix)) {
             String existingUri = namespaces.getURI(prefix);
             if (RESERVED_NS.contains(existingUri)) {
@@ -507,7 +511,7 @@ public class RepositoryServiceImpl exten
     }
 
     @Override
-    public void unregisterNamespace(SessionInfo sessionInfo, String uri) throws RepositoryException {
+    public synchronized void unregisterNamespace(SessionInfo sessionInfo, String uri) throws RepositoryException {
         if (RESERVED_NS.contains(uri)) {
             throw new NamespaceException("Cannot register reserved namespace: " + uri);
         }
@@ -698,7 +702,7 @@ public class RepositoryServiceImpl exten
             return new QBinaryValue(blobId, microKernel);
         }
     };
-    
+
     private class CommitBuilder implements Batch {
 
         private final SessionInfo sessionInfo;
@@ -862,4 +866,28 @@ public class RepositoryServiceImpl exten
         }
     }
 
+
+    public String[] getSupportedQueryLanguages(SessionInfo sessionInfo) throws RepositoryException {
+        checkSessionInfo(sessionInfo);
+        return SUPPORTED_LANGUAGES;
+        // throw new UnsupportedRepositoryOperationException();
+    }
+
+    public String[] checkQueryStatement(SessionInfo sessionInfo, String statement,
+                                    String language, Map<String, String> namespaces) throws
+            InvalidQueryException, RepositoryException {
+        checkSessionInfo(sessionInfo);
+        log.warn("checkQueryStatement " + language + " " + statement);
+        return new String[0];
+        // throw new UnsupportedRepositoryOperationException();
+    }
+
+    public QueryInfo executeQuery(SessionInfo sessionInfo, String statement,
+                                  String language, Map<String, String> namespaces, long limit,
+                                  long offset, Map<String, QValue> values) throws RepositoryException {
+        checkSessionInfo(sessionInfo);
+        log.warn("executeQuery " + language + " " + statement);
+        return new QueryInfoImpl();
+    }
+
 }