You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@jackrabbit.apache.org by an...@apache.org on 2009/08/14 18:58:47 UTC

svn commit: r804296 - in /jackrabbit/trunk: jackrabbit-jcr-client/src/test/java/org/apache/jackrabbit/client/ jackrabbit-jcr-server/src/main/java/org/apache/jackrabbit/webdav/jcr/version/report/ jackrabbit-jcr2spi/src/main/java/org/apache/jackrabbit/jc...

Author: angela
Date: Fri Aug 14 16:58:47 2009
New Revision: 804296

URL: http://svn.apache.org/viewvc?rev=804296&view=rev
Log:
JCR-2256: JSR 283 Repository Descriptors

Modified:
    jackrabbit/trunk/jackrabbit-jcr-client/src/test/java/org/apache/jackrabbit/client/RepositoryFactoryImplTest.java
    jackrabbit/trunk/jackrabbit-jcr-server/src/main/java/org/apache/jackrabbit/webdav/jcr/version/report/RepositoryDescriptorsReport.java
    jackrabbit/trunk/jackrabbit-jcr2spi/src/main/java/org/apache/jackrabbit/jcr2spi/RepositoryImpl.java
    jackrabbit/trunk/jackrabbit-jcr2spi/src/test/java/org/apache/jackrabbit/jcr2spi/AbstractJCR2SPITest.java
    jackrabbit/trunk/jackrabbit-spi-commons/src/main/java/org/apache/jackrabbit/spi/commons/AbstractReadableRepositoryService.java
    jackrabbit/trunk/jackrabbit-spi-commons/src/main/java/org/apache/jackrabbit/spi/commons/logging/RepositoryServiceLogger.java
    jackrabbit/trunk/jackrabbit-spi/src/main/java/org/apache/jackrabbit/spi/RepositoryService.java
    jackrabbit/trunk/jackrabbit-spi2dav/src/main/java/org/apache/jackrabbit/spi2dav/RepositoryServiceImpl.java
    jackrabbit/trunk/jackrabbit-spi2jcr/pom.xml
    jackrabbit/trunk/jackrabbit-spi2jcr/src/main/java/org/apache/jackrabbit/spi2jcr/RepositoryServiceImpl.java

Modified: jackrabbit/trunk/jackrabbit-jcr-client/src/test/java/org/apache/jackrabbit/client/RepositoryFactoryImplTest.java
URL: http://svn.apache.org/viewvc/jackrabbit/trunk/jackrabbit-jcr-client/src/test/java/org/apache/jackrabbit/client/RepositoryFactoryImplTest.java?rev=804296&r1=804295&r2=804296&view=diff
==============================================================================
--- jackrabbit/trunk/jackrabbit-jcr-client/src/test/java/org/apache/jackrabbit/client/RepositoryFactoryImplTest.java (original)
+++ jackrabbit/trunk/jackrabbit-jcr-client/src/test/java/org/apache/jackrabbit/client/RepositoryFactoryImplTest.java Fri Aug 14 16:58:47 2009
@@ -162,7 +162,7 @@
             return null;
         }
 
-        public Map getRepositoryDescriptors() throws RepositoryException {
+        public Map<String, QValue[]> getRepositoryDescriptors() throws RepositoryException {
             return null;
         }
 

Modified: jackrabbit/trunk/jackrabbit-jcr-server/src/main/java/org/apache/jackrabbit/webdav/jcr/version/report/RepositoryDescriptorsReport.java
URL: http://svn.apache.org/viewvc/jackrabbit/trunk/jackrabbit-jcr-server/src/main/java/org/apache/jackrabbit/webdav/jcr/version/report/RepositoryDescriptorsReport.java?rev=804296&r1=804295&r2=804296&view=diff
==============================================================================
--- jackrabbit/trunk/jackrabbit-jcr-server/src/main/java/org/apache/jackrabbit/webdav/jcr/version/report/RepositoryDescriptorsReport.java (original)
+++ jackrabbit/trunk/jackrabbit-jcr-server/src/main/java/org/apache/jackrabbit/webdav/jcr/version/report/RepositoryDescriptorsReport.java Fri Aug 14 16:58:47 2009
@@ -29,6 +29,9 @@
 import org.w3c.dom.Element;
 
 import javax.jcr.Repository;
+import javax.jcr.Value;
+import javax.jcr.RepositoryException;
+import javax.jcr.PropertyType;
 
 /**
  * <code>RepositoryDescriptorsReport</code> allows to retrieve the repository
@@ -96,11 +99,22 @@
     public Element toXml(Document document) {
         Repository repository = getRepositorySession().getRepository();
         Element report = DomUtil.createElement(document, "repositorydescriptors-report", NAMESPACE);
-        String[] keys = repository.getDescriptorKeys();
-        for (int i = 0; i < keys.length; i++) {
+        for (String key : repository.getDescriptorKeys()) {
             Element elem = DomUtil.addChildElement(report, XML_DESCRIPTOR, NAMESPACE);
-            DomUtil.addChildElement(elem, XML_DESCRIPTORKEY, NAMESPACE, keys[i]);
-            DomUtil.addChildElement(elem, XML_DESCRIPTORVALUE, NAMESPACE, repository.getDescriptor(keys[i]));
+            DomUtil.addChildElement(elem, XML_DESCRIPTORKEY, NAMESPACE, key);
+            for (Value v : repository.getDescriptorValues(key)) {
+                String value;
+                try {
+                    value = v.getString();
+                } catch (RepositoryException e) {
+                    log.error("Internal error while reading descriptor value: ", e);
+                    value = repository.getDescriptor(key);
+                }
+                Element child = DomUtil.addChildElement(elem, XML_DESCRIPTORVALUE, NAMESPACE, value);
+                if (PropertyType.STRING != v.getType()) {
+                    child.setAttribute(ATTR_VALUE_TYPE, PropertyType.nameFromValue(v.getType()));
+                }
+            }
         }
         return report;
     }

Modified: jackrabbit/trunk/jackrabbit-jcr2spi/src/main/java/org/apache/jackrabbit/jcr2spi/RepositoryImpl.java
URL: http://svn.apache.org/viewvc/jackrabbit/trunk/jackrabbit-jcr2spi/src/main/java/org/apache/jackrabbit/jcr2spi/RepositoryImpl.java?rev=804296&r1=804295&r2=804296&view=diff
==============================================================================
--- jackrabbit/trunk/jackrabbit-jcr2spi/src/main/java/org/apache/jackrabbit/jcr2spi/RepositoryImpl.java (original)
+++ jackrabbit/trunk/jackrabbit-jcr2spi/src/main/java/org/apache/jackrabbit/jcr2spi/RepositoryImpl.java Fri Aug 14 16:58:47 2009
@@ -19,6 +19,7 @@
 import java.util.Enumeration;
 import java.util.Hashtable;
 import java.util.Map;
+import java.util.HashMap;
 
 import javax.jcr.Credentials;
 import javax.jcr.LoginException;
@@ -27,6 +28,8 @@
 import javax.jcr.RepositoryException;
 import javax.jcr.Session;
 import javax.jcr.Value;
+import javax.jcr.ValueFactory;
+import javax.jcr.NamespaceException;
 import javax.naming.Context;
 import javax.naming.Name;
 import javax.naming.NamingException;
@@ -40,20 +43,52 @@
 import org.apache.jackrabbit.jcr2spi.config.RepositoryConfig;
 import org.apache.jackrabbit.spi.SessionInfo;
 import org.apache.jackrabbit.spi.XASessionInfo;
+import org.apache.jackrabbit.spi.QValue;
+import org.apache.jackrabbit.spi.commons.conversion.NamePathResolver;
+import org.apache.jackrabbit.spi.commons.conversion.DefaultNamePathResolver;
+import org.apache.jackrabbit.spi.commons.namespace.NamespaceResolver;
+import org.apache.jackrabbit.spi.commons.value.ValueFormat;
+import org.apache.jackrabbit.value.ValueFactoryImpl;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
 
 /**
  * <code>RepositoryImpl</code>...
  */
 public class RepositoryImpl extends AbstractRepository implements Referenceable {
 
+    private static Logger log = LoggerFactory.getLogger(RepositoryImpl.class);
+
     // configuration of the repository
     private final RepositoryConfig config;
-    private final Map descriptors;
+    private final Map<String, Value[]> descriptors;
     private Reference reference = null;
 
     private RepositoryImpl(RepositoryConfig config) throws RepositoryException {
         this.config = config;
-        descriptors = config.getRepositoryService().getRepositoryDescriptors();
+
+        // dummy value factory and dummy resolver as descriptors are not
+        // expected contain Name or Path values.
+        ValueFactory vf = ValueFactoryImpl.getInstance(); 
+        NamePathResolver resolver = new DefaultNamePathResolver(new NamespaceResolver() {
+            public String getURI(String prefix) throws NamespaceException {
+                return prefix;
+            }
+            public String getPrefix(String uri) throws NamespaceException {
+                return uri;
+            }
+        });
+
+        Map<String, QValue[]> descr = config.getRepositoryService().getRepositoryDescriptors();       
+        descriptors = new HashMap(descr.size());
+        for (String key : descr.keySet()) {
+            QValue[] qvs = descr.get(key);
+            Value[] vs = new Value[qvs.length];
+            for (int i = 0; i < qvs.length; i++) {
+                vs[i] = ValueFormat.getJCRValue(qvs[i], resolver, vf);
+            }
+            descriptors.put(key, vs);
+        }
     }
 
     public static Repository create(RepositoryConfig config) throws RepositoryException {
@@ -65,39 +100,39 @@
      * @see Repository#getDescriptorKeys()
      */
     public String[] getDescriptorKeys() {
-        String[] keys = (String[]) descriptors.keySet().toArray(new String[descriptors.keySet().size()]);
-        return keys;
+        return descriptors.keySet().toArray(new String[descriptors.keySet().size()]);
     }
 
     /**
      * @see Repository#getDescriptor(String)
      */
-    public String getDescriptor(String descriptorKey) {
-        return (String) descriptors.get(descriptorKey);
+    public String getDescriptor(String key) {
+        Value v = getDescriptorValue(key);
+        try {
+            return (v == null) ? null : v.getString();
+        } catch (RepositoryException e) {
+            log.error("corrupt descriptor value: " + key, e);
+            return null;
+        }
     }
 
     /**
      * @see Repository#getDescriptorValue(String)
      */
     public Value getDescriptorValue(String key) {
-        String value = getDescriptor(key);
-        if (value != null) {
-            // TODO implementation missing
-            throw new UnsupportedOperationException("not implemented yet - see JCR-2062");
-        } else {
-            return null;
-        }
+        Value[] vs = getDescriptorValues(key);
+        return (vs == null || vs.length != 1) ? null : vs[0];
     }
 
     /**
      * @see Repository#getDescriptorValues(String)
      */
     public Value[] getDescriptorValues(String key) {
-        Value value = getDescriptorValue(key);
-        if (value != null) {
-            return new Value[] { value };
-        } else {
+        if (!descriptors.containsKey(key)) {
             return null;
+        } else {
+            return descriptors.get(key);
+
         }
     }
 
@@ -105,7 +140,8 @@
      * @see Repository#isSingleValueDescriptor(String)
      */
     public boolean isSingleValueDescriptor(String key) {
-        return descriptors.containsKey(key);
+        Value[] vs = descriptors.get(key);
+        return (vs != null && vs.length == 1);
     }
 
     /**

Modified: jackrabbit/trunk/jackrabbit-jcr2spi/src/test/java/org/apache/jackrabbit/jcr2spi/AbstractJCR2SPITest.java
URL: http://svn.apache.org/viewvc/jackrabbit/trunk/jackrabbit-jcr2spi/src/test/java/org/apache/jackrabbit/jcr2spi/AbstractJCR2SPITest.java?rev=804296&r1=804295&r2=804296&view=diff
==============================================================================
--- jackrabbit/trunk/jackrabbit-jcr2spi/src/test/java/org/apache/jackrabbit/jcr2spi/AbstractJCR2SPITest.java (original)
+++ jackrabbit/trunk/jackrabbit-jcr2spi/src/test/java/org/apache/jackrabbit/jcr2spi/AbstractJCR2SPITest.java Fri Aug 14 16:58:47 2009
@@ -32,6 +32,7 @@
 import javax.jcr.Repository;
 import javax.jcr.RepositoryException;
 import javax.jcr.UnsupportedRepositoryOperationException;
+import javax.jcr.PropertyType;
 import javax.jcr.nodetype.NoSuchNodeTypeException;
 
 import junit.framework.TestCase;
@@ -63,6 +64,7 @@
 import org.apache.jackrabbit.spi.SessionInfo;
 import org.apache.jackrabbit.spi.Subscription;
 import org.apache.jackrabbit.spi.commons.AbstractReadableRepositoryService;
+import org.apache.jackrabbit.spi.commons.value.QValueFactoryImpl;
 import org.apache.jackrabbit.spi.commons.nodetype.compact.ParseException;
 
 /**
@@ -148,19 +150,22 @@
         return Collections.emptyMap();
     }
 
-    protected Map<String, String> getDescriptors() {
-        Map<String, String> descriptorKeys = new HashMap<String, String>();
+    protected Map<String, QValue[]> getDescriptors() throws RepositoryException {
+        Map<String, QValue[]> descriptorKeys = new HashMap<String, QValue[]>();
 
-        descriptorKeys.put(Repository.OPTION_LOCKING_SUPPORTED, Boolean.FALSE.toString());
-        descriptorKeys.put(Repository.OPTION_OBSERVATION_SUPPORTED, Boolean.FALSE.toString());
-        descriptorKeys.put(Repository.OPTION_TRANSACTIONS_SUPPORTED, Boolean.FALSE.toString());
-        descriptorKeys.put(Repository.OPTION_VERSIONING_SUPPORTED, Boolean.FALSE.toString());
-        descriptorKeys.put(Repository.REP_NAME_DESC, "Mock Repository");
-        descriptorKeys.put(Repository.REP_VENDOR_DESC, "Apache Software Foundation");
-        descriptorKeys.put(Repository.REP_VENDOR_URL_DESC, "http://www.apache.org/");
-        descriptorKeys.put(Repository.REP_VERSION_DESC, "1.0");
-        descriptorKeys.put(Repository.SPEC_NAME_DESC, "Content Repository API for Java(TM) Technology Specification");
-        descriptorKeys.put(Repository.SPEC_VERSION_DESC, "1.0");
+        QValueFactory qvf = QValueFactoryImpl.getInstance();
+        QValue[] vFalse = new QValue[] {qvf.create(false)};
+
+        descriptorKeys.put(Repository.OPTION_LOCKING_SUPPORTED, vFalse);
+        descriptorKeys.put(Repository.OPTION_OBSERVATION_SUPPORTED, vFalse);
+        descriptorKeys.put(Repository.OPTION_TRANSACTIONS_SUPPORTED, vFalse);
+        descriptorKeys.put(Repository.OPTION_VERSIONING_SUPPORTED, vFalse);
+        descriptorKeys.put(Repository.REP_NAME_DESC, new QValue[] {qvf.create("Mock Repository", PropertyType.STRING)});
+        descriptorKeys.put(Repository.REP_VENDOR_DESC, new QValue[] {qvf.create("Apache Software Foundation", PropertyType.STRING)});
+        descriptorKeys.put(Repository.REP_VENDOR_URL_DESC, new QValue[] {qvf.create("http://www.apache.org/", PropertyType.STRING)});
+        descriptorKeys.put(Repository.REP_VERSION_DESC, new QValue[] {qvf.create("2.0", PropertyType.STRING)});
+        descriptorKeys.put(Repository.SPEC_NAME_DESC, new QValue[] {qvf.create("Content Repository API for Java(TM) Technology Specification", PropertyType.STRING)});
+        descriptorKeys.put(Repository.SPEC_VERSION_DESC, new QValue[] {qvf.create("2.0", PropertyType.STRING)});
 
         return descriptorKeys;
     }
@@ -203,7 +208,7 @@
         return repositoryService.getQValueFactory();
     }
 
-    public Map<String, String> getRepositoryDescriptors() throws RepositoryException {
+    public Map<String, QValue[]> getRepositoryDescriptors() throws RepositoryException {
         return repositoryService.getRepositoryDescriptors();
     }
 

Modified: jackrabbit/trunk/jackrabbit-spi-commons/src/main/java/org/apache/jackrabbit/spi/commons/AbstractReadableRepositoryService.java
URL: http://svn.apache.org/viewvc/jackrabbit/trunk/jackrabbit-spi-commons/src/main/java/org/apache/jackrabbit/spi/commons/AbstractReadableRepositoryService.java?rev=804296&r1=804295&r2=804296&view=diff
==============================================================================
--- jackrabbit/trunk/jackrabbit-spi-commons/src/main/java/org/apache/jackrabbit/spi/commons/AbstractReadableRepositoryService.java (original)
+++ jackrabbit/trunk/jackrabbit-spi-commons/src/main/java/org/apache/jackrabbit/spi/commons/AbstractReadableRepositoryService.java Fri Aug 14 16:58:47 2009
@@ -86,7 +86,7 @@
     /**
      * The repository descriptors.
      */
-    protected final Map<String, String> descriptors;
+    protected final Map<String, QValue[]> descriptors;
 
     /**
      * The fixed set of namespaces known to the repository service.
@@ -120,12 +120,12 @@
      * @throws RepositoryException if the namespace mappings are invalid.
      * @throws ParseException      if an error occurs while parsing the CND.
      */
-    public AbstractReadableRepositoryService(Map<String, String> descriptors,
+    public AbstractReadableRepositoryService(Map<String, QValue[]> descriptors,
                                              Map<String, String> namespaces,
                                              Reader cnd,
                                              List<String> wspNames)
             throws RepositoryException, ParseException {
-        this.descriptors = Collections.unmodifiableMap(new HashMap<String, String>(descriptors));
+        this.descriptors = Collections.unmodifiableMap(new HashMap<String, QValue[]>(descriptors));
         for (Map.Entry<String, String> entry : namespaces.entrySet()) {
             this.namespaces.setMapping(entry.getKey(), entry.getValue());
         }
@@ -273,7 +273,7 @@
      * This default implementation returns the descriptors that were passed
      * to the constructor of this repository service.
      */
-    public Map<String, String> getRepositoryDescriptors() throws RepositoryException {
+    public Map<String, QValue[]> getRepositoryDescriptors() throws RepositoryException {
         return descriptors;
     }
 

Modified: jackrabbit/trunk/jackrabbit-spi-commons/src/main/java/org/apache/jackrabbit/spi/commons/logging/RepositoryServiceLogger.java
URL: http://svn.apache.org/viewvc/jackrabbit/trunk/jackrabbit-spi-commons/src/main/java/org/apache/jackrabbit/spi/commons/logging/RepositoryServiceLogger.java?rev=804296&r1=804295&r2=804296&view=diff
==============================================================================
--- jackrabbit/trunk/jackrabbit-spi-commons/src/main/java/org/apache/jackrabbit/spi/commons/logging/RepositoryServiceLogger.java (original)
+++ jackrabbit/trunk/jackrabbit-spi-commons/src/main/java/org/apache/jackrabbit/spi/commons/logging/RepositoryServiceLogger.java Fri Aug 14 16:58:47 2009
@@ -109,8 +109,8 @@
         }, "getQValueFactory()", new Object[]{});
     }
 
-    public Map<String, String> getRepositoryDescriptors() throws RepositoryException {
-        return (Map<String, String>) execute(new Callable() {
+    public Map<String, QValue[]> getRepositoryDescriptors() throws RepositoryException {
+        return (Map<String, QValue[]>) execute(new Callable() {
             public Object call() throws RepositoryException {
                 return service.getRepositoryDescriptors();
             }

Modified: jackrabbit/trunk/jackrabbit-spi/src/main/java/org/apache/jackrabbit/spi/RepositoryService.java
URL: http://svn.apache.org/viewvc/jackrabbit/trunk/jackrabbit-spi/src/main/java/org/apache/jackrabbit/spi/RepositoryService.java?rev=804296&r1=804295&r2=804296&view=diff
==============================================================================
--- jackrabbit/trunk/jackrabbit-spi/src/main/java/org/apache/jackrabbit/spi/RepositoryService.java (original)
+++ jackrabbit/trunk/jackrabbit-spi/src/main/java/org/apache/jackrabbit/spi/RepositoryService.java Fri Aug 14 16:58:47 2009
@@ -121,7 +121,7 @@
      * @see javax.jcr.Repository#getDescriptorKeys()
      * @see javax.jcr.Repository#getDescriptor(String)
      */
-    public Map<String, String> getRepositoryDescriptors() throws RepositoryException;
+    public Map<String, QValue[]> getRepositoryDescriptors() throws RepositoryException;
 
     //-----------------------------------< SessionInfo creation and release >---
     /**

Modified: jackrabbit/trunk/jackrabbit-spi2dav/src/main/java/org/apache/jackrabbit/spi2dav/RepositoryServiceImpl.java
URL: http://svn.apache.org/viewvc/jackrabbit/trunk/jackrabbit-spi2dav/src/main/java/org/apache/jackrabbit/spi2dav/RepositoryServiceImpl.java?rev=804296&r1=804295&r2=804296&view=diff
==============================================================================
--- jackrabbit/trunk/jackrabbit-spi2dav/src/main/java/org/apache/jackrabbit/spi2dav/RepositoryServiceImpl.java (original)
+++ jackrabbit/trunk/jackrabbit-spi2dav/src/main/java/org/apache/jackrabbit/spi2dav/RepositoryServiceImpl.java Fri Aug 14 16:58:47 2009
@@ -229,7 +229,7 @@
 
     private final Map nodeTypeDefinitions = new HashMap();
 
-    private Map descriptors;
+    private Map<String, QValue[]> descriptors;
 
     public RepositoryServiceImpl(String uri, IdFactory idFactory,
                                  NameFactory nameFactory,
@@ -497,7 +497,7 @@
     /**
      * @see RepositoryService#getRepositoryDescriptors()
      */
-    public Map getRepositoryDescriptors() throws RepositoryException {
+    public Map<String, QValue[]> getRepositoryDescriptors() throws RepositoryException {
         if (descriptors == null) {
             ReportInfo info = new ReportInfo(RepositoryDescriptorsReport.REPOSITORY_DESCRIPTORS_REPORT, DEPTH_0);
             ReportMethod method = null;
@@ -514,12 +514,21 @@
                     while (nsElems.hasNext()) {
                         Element elem = nsElems.nextElement();
                         String key = DomUtil.getChildText(elem, ItemResourceConstants.XML_DESCRIPTORKEY, ItemResourceConstants.NAMESPACE);
-                        String descriptor = DomUtil.getChildText(elem, ItemResourceConstants.XML_DESCRIPTORVALUE, ItemResourceConstants.NAMESPACE);
-                        if (key != null && descriptor != null) {
-                            descriptors.put(key, descriptor);
-                        } else {
-                            log.error("Invalid descriptor key / value pair: " + key + " -> " + descriptor);
+                        ElementIterator it = DomUtil.getChildren(elem, ItemResourceConstants.XML_DESCRIPTORVALUE, ItemResourceConstants.NAMESPACE);
+                        List<QValue> vs = new ArrayList();
+                        while (it.hasNext()) {
+                            Element dv = it.nextElement();
+                            String descriptor = DomUtil.getText(dv);
+                            if (key != null && descriptor != null) {
+                                String typeStr = (DomUtil.getAttribute(dv, ItemResourceConstants.ATTR_VALUE_TYPE, null));
+                                int type = (typeStr == null) ? PropertyType.STRING : PropertyType.valueFromName(typeStr);
+                                vs.add(getQValueFactory().create(descriptor, type));
+                            } else {
+                                log.error("Invalid descriptor key / value pair: " + key + " -> " + descriptor);
+                            }
+
                         }
+                        descriptors.put(key, vs.toArray(new QValue[vs.size()]));
                     }
                 }
             } catch (IOException e) {
@@ -1109,8 +1118,7 @@
                 throw new ItemNotFoundException("Unable to retrieve the property with id " + saveGetIdString(propertyId, resolver));
             }
 
-            PropertyInfo pInfo = new PropertyInfoImpl(propertyId, path, type, isMultiValued, values);
-            return pInfo;
+            return new PropertyInfoImpl(propertyId, path, type, isMultiValued, values);
         } catch (IOException e) {
             throw new RepositoryException(e);
         } catch (DavException e) {

Modified: jackrabbit/trunk/jackrabbit-spi2jcr/pom.xml
URL: http://svn.apache.org/viewvc/jackrabbit/trunk/jackrabbit-spi2jcr/pom.xml?rev=804296&r1=804295&r2=804296&view=diff
==============================================================================
--- jackrabbit/trunk/jackrabbit-spi2jcr/pom.xml (original)
+++ jackrabbit/trunk/jackrabbit-spi2jcr/pom.xml Fri Aug 14 16:58:47 2009
@@ -75,8 +75,6 @@
                 org.apache.jackrabbit.test.api.version.ActivitiesTest#testActivitiesRelation
                 org.apache.jackrabbit.test.api.version.ConfigurationsTest#testCreateConfigWithBaseline
                 org.apache.jackrabbit.test.api.LifecycleTest
-                org.apache.jackrabbit.test.api.RepositoryDescriptorTest#testRequiredDescriptors
-                org.apache.jackrabbit.test.api.RepositoryDescriptorTest#testGetDescriptorValues
               </value>
             </property>
           </systemProperties>

Modified: jackrabbit/trunk/jackrabbit-spi2jcr/src/main/java/org/apache/jackrabbit/spi2jcr/RepositoryServiceImpl.java
URL: http://svn.apache.org/viewvc/jackrabbit/trunk/jackrabbit-spi2jcr/src/main/java/org/apache/jackrabbit/spi2jcr/RepositoryServiceImpl.java?rev=804296&r1=804295&r2=804296&view=diff
==============================================================================
--- jackrabbit/trunk/jackrabbit-spi2jcr/src/main/java/org/apache/jackrabbit/spi2jcr/RepositoryServiceImpl.java (original)
+++ jackrabbit/trunk/jackrabbit-spi2jcr/src/main/java/org/apache/jackrabbit/spi2jcr/RepositoryServiceImpl.java Fri Aug 14 16:58:47 2009
@@ -42,6 +42,7 @@
 import org.apache.jackrabbit.spi.Event;
 import org.apache.jackrabbit.spi.commons.EventFilterImpl;
 import org.apache.jackrabbit.spi.commons.EventBundleImpl;
+import org.apache.jackrabbit.spi.commons.namespace.NamespaceResolver;
 import org.apache.jackrabbit.spi.commons.nodetype.NodeTypeDefinitionImpl;
 import org.apache.jackrabbit.spi.commons.name.NameFactoryImpl;
 import org.apache.jackrabbit.spi.commons.name.PathFactoryImpl;
@@ -50,6 +51,7 @@
 import org.apache.jackrabbit.spi.commons.conversion.NameException;
 import org.apache.jackrabbit.spi.commons.conversion.NamePathResolver;
 import org.apache.jackrabbit.spi.commons.conversion.MalformedPathException;
+import org.apache.jackrabbit.spi.commons.conversion.DefaultNamePathResolver;
 import org.apache.jackrabbit.spi.commons.value.QValueFactoryImpl;
 import org.apache.jackrabbit.spi.commons.value.ValueFormat;
 import org.apache.jackrabbit.spi.commons.value.ValueFactoryQImpl;
@@ -206,14 +208,29 @@
     /**
      * {@inheritDoc}
      */
-    public Map getRepositoryDescriptors() throws RepositoryException {
-        Map descriptors = new HashMap();
-        String[] keys = repository.getDescriptorKeys();
-        for (int i = 0; i < keys.length; i++) {
-            if (keys[i].equals(Repository.OPTION_TRANSACTIONS_SUPPORTED)) {
-                descriptors.put(keys[i], "false");
+    public Map<String, QValue[]> getRepositoryDescriptors() throws RepositoryException {
+        Map<String, QValue[]> descriptors = new HashMap();
+        for (String key : repository.getDescriptorKeys()) {
+            if (key.equals(Repository.OPTION_TRANSACTIONS_SUPPORTED)) {
+                descriptors.put(key, new QValue[] {qValueFactory.create(false)});
             } else {
-                descriptors.put(keys[i], repository.getDescriptor(keys[i]));
+                Value[] vs = repository.getDescriptorValues(key);
+                QValue[] qvs = new QValue[vs.length];
+                for (int i = 0; i < vs.length; i++) {
+                    // Name and path resolver that uses a dummy namespace resolver
+                    // as Name/Path values are not expected to occur in the
+                    // descriptors. TODO: check again.
+                    NamePathResolver resolver = new DefaultNamePathResolver(new NamespaceResolver() {
+                        public String getURI(String prefix) throws NamespaceException {
+                            return prefix;
+                        }
+                        public String getPrefix(String uri) throws NamespaceException {
+                            return uri;
+                        }
+                    });
+                    qvs[i] = ValueFormat.getQValue(vs[i], resolver, qValueFactory);
+                }
+                descriptors.put(key, qvs);
             }
         }
         return descriptors;