You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@sling.apache.org by kw...@apache.org on 2022/06/27 08:18:32 UTC

[sling-org-apache-sling-feature-cpconverter] branch feature/remove-unused-classes created (now 2c89edf)

This is an automated email from the ASF dual-hosted git repository.

kwin pushed a change to branch feature/remove-unused-classes
in repository https://gitbox.apache.org/repos/asf/sling-org-apache-sling-feature-cpconverter.git


      at 2c89edf  SLING-11420 remove unused classes for DocView serialisation

This branch includes the following new commits:

     new 2c89edf  SLING-11420 remove unused classes for DocView serialisation

The 1 revisions listed above as "new" are entirely new to this
repository and will be described in separate emails.  The revisions
listed as "add" were already present in the repository and have only
been added to this reference.



[sling-org-apache-sling-feature-cpconverter] 01/01: SLING-11420 remove unused classes for DocView serialisation

Posted by kw...@apache.org.
This is an automated email from the ASF dual-hosted git repository.

kwin pushed a commit to branch feature/remove-unused-classes
in repository https://gitbox.apache.org/repos/asf/sling-org-apache-sling-feature-cpconverter.git

commit 2c89edfbf9a0b81938659f2baf71aecb0e585b43
Author: Konrad Windszus <kw...@apache.org>
AuthorDate: Mon Jun 27 10:18:26 2022 +0200

    SLING-11420 remove unused classes for DocView serialisation
    
    remove invalid @NotNull annotations on primitive types
---
 ...BundleSlingInitialContentJarEntryExtractor.java |  31 +-
 ...InitialContentBundleEntryMetaDataCollector.java |   4 +-
 .../vltpkg/DocViewSerializerContentHandler.java    | 179 --------
 .../DocViewSerializerContentHandlerException.java  |  39 --
 .../feature/cpconverter/vltpkg/ValueConverter.java | 494 ---------------------
 5 files changed, 17 insertions(+), 730 deletions(-)

diff --git a/src/main/java/org/apache/sling/feature/cpconverter/handlers/slinginitialcontent/BundleSlingInitialContentJarEntryExtractor.java b/src/main/java/org/apache/sling/feature/cpconverter/handlers/slinginitialcontent/BundleSlingInitialContentJarEntryExtractor.java
index 25d31d2..2684d5d 100644
--- a/src/main/java/org/apache/sling/feature/cpconverter/handlers/slinginitialcontent/BundleSlingInitialContentJarEntryExtractor.java
+++ b/src/main/java/org/apache/sling/feature/cpconverter/handlers/slinginitialcontent/BundleSlingInitialContentJarEntryExtractor.java
@@ -16,20 +16,8 @@
  */
 package org.apache.sling.feature.cpconverter.handlers.slinginitialcontent;
 
-import org.apache.commons.io.FilenameUtils;
-import org.apache.commons.lang3.StringUtils;
-import org.apache.jackrabbit.util.Text;
-import org.apache.jackrabbit.vault.fs.io.Archive;
-import org.apache.jackrabbit.vault.util.PlatformNameFormat;
-import org.apache.sling.feature.cpconverter.ConverterException;
-import org.apache.sling.feature.cpconverter.vltpkg.DocViewSerializerContentHandlerException;
-import org.apache.sling.feature.cpconverter.vltpkg.SingleFileArchive;
-import org.apache.sling.feature.cpconverter.vltpkg.VaultPackageAssembler;
-import org.apache.sling.jcr.contentloader.ContentReader;
-import org.apache.sling.jcr.contentloader.PathEntry;
-import org.jetbrains.annotations.NotNull;
+import static org.apache.sling.feature.cpconverter.shared.ConverterConstants.SLASH;
 
-import javax.jcr.RepositoryException;
 import java.io.File;
 import java.io.FileInputStream;
 import java.io.IOException;
@@ -40,7 +28,19 @@ import java.nio.file.Path;
 import java.nio.file.StandardOpenOption;
 import java.util.Set;
 
-import static org.apache.sling.feature.cpconverter.shared.ConverterConstants.SLASH;
+import javax.jcr.RepositoryException;
+
+import org.apache.commons.io.FilenameUtils;
+import org.apache.commons.lang3.StringUtils;
+import org.apache.jackrabbit.util.Text;
+import org.apache.jackrabbit.vault.fs.io.Archive;
+import org.apache.jackrabbit.vault.util.PlatformNameFormat;
+import org.apache.sling.feature.cpconverter.ConverterException;
+import org.apache.sling.feature.cpconverter.vltpkg.SingleFileArchive;
+import org.apache.sling.feature.cpconverter.vltpkg.VaultPackageAssembler;
+import org.apache.sling.jcr.contentloader.ContentReader;
+import org.apache.sling.jcr.contentloader.PathEntry;
+import org.jetbrains.annotations.NotNull;
 
 /**
  * Handles the bundle sling initial content extraction on the jarEntry level.
@@ -105,7 +105,7 @@ class BundleSlingInitialContentJarEntryExtractor {
 
                 } catch (IOException e) {
                     throw new IOException("Can not parse " + file, e);
-                } catch (DocViewSerializerContentHandlerException | RepositoryException e) {
+                } catch (RepositoryException e) {
                     throw new IOException("Can not convert " + file + " to enhanced DocView format", e);
                 }
 
@@ -136,7 +136,6 @@ class BundleSlingInitialContentJarEntryExtractor {
         }
     }
 
-    @NotNull
     private boolean isFileDescriptor(@NotNull Set<SlingInitialContentBundleEntryMetaData> bundleEntries, @NotNull final String contentPackageEntryPath) {
 
         //sometimes we are dealing with double extensions (.json.xml)
diff --git a/src/main/java/org/apache/sling/feature/cpconverter/handlers/slinginitialcontent/SlingInitialContentBundleEntryMetaDataCollector.java b/src/main/java/org/apache/sling/feature/cpconverter/handlers/slinginitialcontent/SlingInitialContentBundleEntryMetaDataCollector.java
index 9b0bb8a..dfe834f 100644
--- a/src/main/java/org/apache/sling/feature/cpconverter/handlers/slinginitialcontent/SlingInitialContentBundleEntryMetaDataCollector.java
+++ b/src/main/java/org/apache/sling/feature/cpconverter/handlers/slinginitialcontent/SlingInitialContentBundleEntryMetaDataCollector.java
@@ -148,8 +148,8 @@ class SlingInitialContentBundleEntryMetaDataCollector {
         }
     }
 
-    private void safelyWriteOutputStream(@NotNull long compressedSize,
-                                         @NotNull byte[] data,
+    private void safelyWriteOutputStream(long compressedSize,
+                                         byte[] data,
                                          @NotNull InputStream input,
                                          @NotNull OutputStream fos,
                                          boolean shouldClose) throws IOException {
diff --git a/src/main/java/org/apache/sling/feature/cpconverter/vltpkg/DocViewSerializerContentHandler.java b/src/main/java/org/apache/sling/feature/cpconverter/vltpkg/DocViewSerializerContentHandler.java
deleted file mode 100644
index 672650a..0000000
--- a/src/main/java/org/apache/sling/feature/cpconverter/vltpkg/DocViewSerializerContentHandler.java
+++ /dev/null
@@ -1,179 +0,0 @@
-/*
- * 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.sling.feature.cpconverter.vltpkg;
-
-import org.apache.commons.lang3.StringUtils;
-import org.apache.jackrabbit.spi.Name;
-import org.apache.jackrabbit.spi.commons.conversion.IllegalNameException;
-import org.apache.jackrabbit.spi.commons.conversion.NameParser;
-import org.apache.jackrabbit.spi.commons.name.NameFactoryImpl;
-import org.apache.jackrabbit.util.Text;
-import org.apache.jackrabbit.vault.fs.impl.io.DocViewSAXFormatter;
-import org.apache.jackrabbit.vault.fs.io.DocViewFormat;
-import org.apache.jackrabbit.vault.util.xml.serialize.FormattingXmlStreamWriter;
-import org.apache.sling.contentparser.api.ContentHandler;
-import org.jetbrains.annotations.NotNull;
-
-import javax.jcr.NamespaceException;
-import javax.jcr.RepositoryException;
-import javax.xml.stream.XMLStreamException;
-import javax.xml.stream.XMLStreamWriter;
-import java.io.IOException;
-import java.io.OutputStream;
-import java.util.AbstractMap;
-import java.util.Map;
-
-import static org.apache.commons.lang3.StringUtils.isNotBlank;
-
-/**
- * Similar to {@link DocViewSAXFormatter} but works outside a repository-based context on the input generated through {@link ContentHandler} callbacks.
- * Throws {@link DocViewSerializerContentHandlerException} in case serialization fails for some reason.
- */
-public class DocViewSerializerContentHandler implements ContentHandler, AutoCloseable {
-
-    private final XMLStreamWriter writer;
-    private final JcrNamespaceRegistry nsRegistry;
-    private String currentPath = "/";
-    boolean isFirstElement = true;
-
-    public DocViewSerializerContentHandler(OutputStream outputStream, JcrNamespaceRegistry nsRegistry) {
-        this.nsRegistry = nsRegistry;
-        try {
-            writer = FormattingXmlStreamWriter.create(outputStream, new DocViewFormat().getXmlOutputFormat());
-            writer.writeStartDocument();
-            writer.setNamespaceContext(nsRegistry);
-
-        } catch (XMLStreamException e) {
-            throw new DocViewSerializerContentHandlerException("Can not start document", e);
-        }
-    }
-
-    @Override
-    public void resource(String path, Map<String, Object> properties) {
-        // split path in parent and name
-        String parent = Text.getRelativeParent(path, 1);
-        String name = Text.getName(path);
-        if (name.isEmpty()) {
-            name = "jcr:root";
-        }
-
-        if (!parent.equals(currentPath)) {
-            closeParents(parent);
-        }
-        currentPath = path;
-        try {
-            // now split by prefix and local name
-            Map.Entry<String, Name> prefixAndQualifiedName = resolvePrefixedName(name);
-            writeElement(prefixAndQualifiedName);
-
-            if (isFirstElement) {
-                for (String prefix : nsRegistry.getPrefixes()) {
-                    writer.writeNamespace(prefix, nsRegistry.getURI(prefix));
-                }
-                isFirstElement = false;
-            }
-            for (Map.Entry<String, Object> property : properties.entrySet()) {
-                // now split by prefix and local name
-                prefixAndQualifiedName = resolvePrefixedName(property.getKey());
-                writer.writeAttribute(
-                        prefixAndQualifiedName.getKey(),
-                        prefixAndQualifiedName.getValue().getNamespaceURI(),
-                        prefixAndQualifiedName.getValue().getLocalName(),
-                        ValueConverter.toString(property.getKey(), property.getValue())
-                );
-            }
-        } catch (XMLStreamException e) {
-            throw new DocViewSerializerContentHandlerException("Can not start element", e);
-        } catch (RepositoryException e) {
-            throw new DocViewSerializerContentHandlerException("Can not emit namespace declarations", e);
-        }
-    }
-
-    private boolean writeElement(Map.Entry<String, Name> prefixAndQualifiedName) throws XMLStreamException {
-
-        String key = prefixAndQualifiedName.getKey();
-        String namespaceURI = prefixAndQualifiedName.getValue().getNamespaceURI();
-        String localName = getValidLocalName(prefixAndQualifiedName);
-
-        if (isNotBlank(localName)) {
-            if (isNotBlank(namespaceURI) && isNotBlank(nsRegistry.getPrefix(namespaceURI)) && isNotBlank(key)) {
-                //uri already registered in context, this method will do
-                writer.writeStartElement(namespaceURI, localName);
-            } else if (isNotBlank(namespaceURI) && isNotBlank(key)) {
-                //uri not registered in context, so writing it out completely
-                writer.writeStartElement(key, namespaceURI, localName);
-            } else {
-                writer.writeStartElement(localName);
-            }
-        } else {
-            return false;
-        }
-
-        return true;
-    }
-
-    @NotNull
-    private String getValidLocalName(Map.Entry<String, Name> prefixAndQualifiedName) {
-        String localName = prefixAndQualifiedName.getValue().getLocalName();
-
-        String firstCharacter = localName.substring(0, 1);
-        if (StringUtils.isNumeric(firstCharacter)) {
-            //fix localName starting out with numbers as this is illegal.
-            localName = "_x003" + firstCharacter + "_" + StringUtils.substring(localName, 1);
-        }
-        return localName;
-    }
-
-    public void closeParents(String stopAtParent) {
-        try {
-            while (!currentPath.equals(stopAtParent)) {
-                writer.writeEndElement();
-                String newCurrentPath = Text.getRelativeParent(currentPath, 1);
-                if (newCurrentPath.equals(currentPath)) {
-                    break;
-                } else {
-                    currentPath = newCurrentPath;
-                }
-            }
-        } catch (XMLStreamException e) {
-            throw new DocViewSerializerContentHandlerException("Can not end element", e);
-        }
-    }
-
-    Map.Entry<String, Name> resolvePrefixedName(String name) {
-        int posColon = name.indexOf(':');
-        if (posColon == -1) {
-            return new AbstractMap.SimpleEntry<>("", NameFactoryImpl.getInstance().create(Name.NS_DEFAULT_URI, name));
-        }
-        try {
-            String prefix = name.substring(0, posColon);
-            return new AbstractMap.SimpleEntry<>(prefix, NameParser.parse(name, nsRegistry, NameFactoryImpl.getInstance()));
-        } catch (IllegalNameException | NamespaceException e) {
-            throw new DocViewSerializerContentHandlerException("Could not resolve namespace URI for name " + name, e);
-        }
-    }
-
-    @Override
-    public void close() throws IOException {
-        try {
-            closeParents("");
-            writer.writeEndDocument();
-        } catch (XMLStreamException e) {
-            throw new DocViewSerializerContentHandlerException("Can not end document", e);
-        }
-    }
-}
diff --git a/src/main/java/org/apache/sling/feature/cpconverter/vltpkg/DocViewSerializerContentHandlerException.java b/src/main/java/org/apache/sling/feature/cpconverter/vltpkg/DocViewSerializerContentHandlerException.java
deleted file mode 100644
index 6f9d911..0000000
--- a/src/main/java/org/apache/sling/feature/cpconverter/vltpkg/DocViewSerializerContentHandlerException.java
+++ /dev/null
@@ -1,39 +0,0 @@
-/*
- * 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.sling.feature.cpconverter.vltpkg;
-
-public class DocViewSerializerContentHandlerException extends RuntimeException {
-
-    /**
-     * 
-     */
-    private static final long serialVersionUID = 1L;
-
-    public DocViewSerializerContentHandlerException(String message, Throwable cause, boolean enableSuppression,
-            boolean writableStackTrace) {
-        super(message, cause, enableSuppression, writableStackTrace);
-    }
-
-    public DocViewSerializerContentHandlerException(String message, Throwable cause) {
-        super(message, cause);
-    }
-
-    public DocViewSerializerContentHandlerException(String message) {
-        super(message);
-    }
-
-}
diff --git a/src/main/java/org/apache/sling/feature/cpconverter/vltpkg/ValueConverter.java b/src/main/java/org/apache/sling/feature/cpconverter/vltpkg/ValueConverter.java
deleted file mode 100644
index 7b59ab7..0000000
--- a/src/main/java/org/apache/sling/feature/cpconverter/vltpkg/ValueConverter.java
+++ /dev/null
@@ -1,494 +0,0 @@
-/*
- * 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.sling.feature.cpconverter.vltpkg;
-
-import java.io.InputStream;
-import java.lang.reflect.Array;
-import java.math.BigDecimal;
-import java.net.URI;
-import java.util.Calendar;
-import java.util.Date;
-import java.util.UUID;
-
-import javax.jcr.Binary;
-import javax.jcr.Item;
-import javax.jcr.ItemVisitor;
-import javax.jcr.Node;
-import javax.jcr.Property;
-import javax.jcr.PropertyType;
-import javax.jcr.RepositoryException;
-import javax.jcr.Session;
-import javax.jcr.Value;
-import javax.jcr.ValueFormatException;
-import javax.jcr.nodetype.NodeType;
-import javax.jcr.nodetype.PropertyDefinition;
-
-import org.apache.jackrabbit.util.ISO8601;
-import org.apache.jackrabbit.vault.util.DocViewProperty;
-
-/**
- * Converts an value to string for a content property in XML including type prefix.
- * Is a temporary helper which can be removed once https://issues.apache.org/jira/browse/JCRVLT-516 is solved.
- */
-final class ValueConverter {
-
-  static final String PN_PRIVILEGES = "rep:privileges";
-
-  private ValueConverter() {
-      // only static methods
-  }
-  /**
-   * Converts an object to a string representation.
-   * Supported are String, Boolean, Integer, Long, Double, BigDecimal, Date, Calendar and arrays of them.
-   * @param value value
-   * @return Converted value
-   */
-  public static String toString(String propertyName, Object value) {
-    if (value == null) {
-      return "";
-    }
-
-    Value[] values;
-    boolean multiple = value.getClass().isArray();
-    if (multiple) {
-      values = new Value[Array.getLength(value)];
-      int lastPropertyType = PropertyType.UNDEFINED;
-      for (int i = 0; i < values.length; i++) {
-        values[i] = toValue(propertyName, Array.get(value, i));
-        if (lastPropertyType == PropertyType.UNDEFINED) {
-          lastPropertyType = values[i].getType();
-        }
-        else if (lastPropertyType != values[i].getType()) {
-          throw new RuntimeException("Mixing different value types within array not allowed: " +
-              PropertyType.nameFromValue(lastPropertyType) + ", " + PropertyType.nameFromValue(values[i].getType())
-              + ", propertyName=" + propertyName + ", value=" + value);
-        }
-      }
-    }
-    else {
-      values = new Value[] { toValue(propertyName, value) };
-    }
-
-    Property prop = new MockProperty(propertyName, multiple, values);
-    try {
-      return DocViewProperty.format(prop);
-    }
-    catch (RepositoryException ex) {
-      throw new RuntimeException("Unable to format property value (" + propertyName + "): " + value, ex);
-    }
-  }
-
-  private static Value toValue(String propertyName, Object value) {
-    if (value instanceof String) {
-      if (PN_PRIVILEGES.equals(propertyName)) {
-        return new MockValue(value.toString(), PropertyType.NAME);
-      }
-      else {
-        return new MockValue(value.toString(), PropertyType.STRING);
-      }
-    }
-    if (value instanceof Boolean) {
-      return new MockValue(((Boolean)value).toString(), PropertyType.BOOLEAN);
-    }
-    if (value instanceof Integer || value instanceof Long) {
-      return new MockValue(Long.toString(((Number)value).longValue()), PropertyType.LONG);
-    }
-    if (value instanceof Float || value instanceof Double) {
-      return new MockValue(Double.toString(((Number)value).doubleValue()), PropertyType.DECIMAL);
-    }
-    if (value instanceof BigDecimal) {
-      return new MockValue(((BigDecimal)value).toString(), PropertyType.DECIMAL);
-    }
-    if (value instanceof Date) {
-      Calendar calendar = Calendar.getInstance();
-      calendar.setTime((Date)value);
-      return new MockValue(ISO8601.format(calendar), PropertyType.DATE);
-    }
-    if (value instanceof Calendar) {
-      return new MockValue(ISO8601.format((Calendar)value), PropertyType.DATE);
-    }
-    if (value instanceof UUID) {
-      return new MockValue(((UUID)value).toString(), PropertyType.REFERENCE);
-    }
-    if (value instanceof URI) {
-      return new MockValue(((URI)value).toString(), PropertyType.URI);
-    }
-    throw new IllegalArgumentException("Type not supported: " + value.getClass().getName());
-  }
-
-
-  /**
-   * Mock implementations of JCR property and value to be handed over to {@link DocViewProperty#format(Property)}
-   * method.
-   */
-  private static class MockProperty implements Property, PropertyDefinition {
-
-    private final String name;
-    private final boolean multiple;
-    private final Value[] values;
-
-    MockProperty(String name, boolean multiple, Value[] values) {
-      this.name = name;
-      this.multiple = multiple;
-      this.values = values;
-    }
-
-    @Override
-    public String getName() {
-      return name;
-    }
-
-    @Override
-    public int getType() {
-      if (values.length > 0) {
-        return values[0].getType();
-      }
-      return PropertyType.UNDEFINED;
-    }
-
-    @Override
-    public boolean isMultiple() {
-      return multiple;
-    }
-
-    @Override
-    public Value getValue() throws ValueFormatException {
-      if (multiple) {
-        throw new ValueFormatException("Property is multiple.");
-      }
-      return values[0];
-    }
-
-    @Override
-    public Value[] getValues() throws ValueFormatException {
-      if (!multiple) {
-        throw new ValueFormatException("Property is not multiple.");
-      }
-      return values;
-    }
-
-    @Override
-    public PropertyDefinition getDefinition() {
-      return this;
-    }
-
-
-    // -- unsupported methods --
-
-    @Override
-    public String getPath() {
-      throw new UnsupportedOperationException();
-    }
-
-    @Override
-    public Item getAncestor(int depth) {
-      throw new UnsupportedOperationException();
-    }
-
-    @Override
-    public Node getParent() {
-      throw new UnsupportedOperationException();
-    }
-
-    @Override
-    public int getDepth() {
-      throw new UnsupportedOperationException();
-    }
-
-    @Override
-    public Session getSession() {
-      throw new UnsupportedOperationException();
-    }
-
-    @Override
-    public boolean isNode() {
-      throw new UnsupportedOperationException();
-    }
-
-    @Override
-    public boolean isNew() {
-      throw new UnsupportedOperationException();
-    }
-
-    @Override
-    public boolean isModified() {
-      throw new UnsupportedOperationException();
-    }
-
-    @Override
-    public boolean isSame(Item otherItem) {
-      throw new UnsupportedOperationException();
-    }
-
-    @Override
-    public void accept(ItemVisitor visitor) {
-      throw new UnsupportedOperationException();
-    }
-
-    @Override
-    public void save() {
-      throw new UnsupportedOperationException();
-    }
-
-    @Override
-    public void refresh(boolean keepChanges) {
-      throw new UnsupportedOperationException();
-    }
-
-    @Override
-    public void remove() {
-      throw new UnsupportedOperationException();
-    }
-
-    @Override
-    public void setValue(Value value) {
-      throw new UnsupportedOperationException();
-    }
-
-    @Override
-    public void setValue(Value[] value) {
-      throw new UnsupportedOperationException();
-    }
-
-    @Override
-    public void setValue(String value) {
-      throw new UnsupportedOperationException();
-    }
-
-    @Override
-    public void setValue(String[] value) {
-      throw new UnsupportedOperationException();
-    }
-
-    @Override
-    public void setValue(InputStream value) {
-      throw new UnsupportedOperationException();
-    }
-
-    @Override
-    public void setValue(Binary value) {
-      throw new UnsupportedOperationException();
-    }
-
-    @Override
-    public void setValue(long value) {
-      throw new UnsupportedOperationException();
-    }
-
-    @Override
-    public void setValue(double value) {
-      throw new UnsupportedOperationException();
-    }
-
-    @Override
-    public void setValue(BigDecimal value) {
-      throw new UnsupportedOperationException();
-    }
-
-    @Override
-    public void setValue(Calendar value) {
-      throw new UnsupportedOperationException();
-    }
-
-    @Override
-    public void setValue(boolean value) {
-      throw new UnsupportedOperationException();
-    }
-
-    @Override
-    public void setValue(Node value) {
-      throw new UnsupportedOperationException();
-    }
-
-    @Override
-    public String getString() {
-      throw new UnsupportedOperationException();
-    }
-
-    @Override
-    public InputStream getStream() {
-      throw new UnsupportedOperationException();
-    }
-
-    @Override
-    public Binary getBinary() {
-      throw new UnsupportedOperationException();
-    }
-
-    @Override
-    public long getLong() {
-      throw new UnsupportedOperationException();
-    }
-
-    @Override
-    public double getDouble() {
-      throw new UnsupportedOperationException();
-    }
-
-    @Override
-    public BigDecimal getDecimal() {
-      throw new UnsupportedOperationException();
-    }
-
-    @Override
-    public Calendar getDate() {
-      throw new UnsupportedOperationException();
-    }
-
-    @Override
-    public boolean getBoolean() {
-      throw new UnsupportedOperationException();
-    }
-
-    @Override
-    public Node getNode() {
-      throw new UnsupportedOperationException();
-    }
-
-    @Override
-    public Property getProperty() {
-      throw new UnsupportedOperationException();
-    }
-
-    @Override
-    public long getLength() {
-      throw new UnsupportedOperationException();
-    }
-
-    @Override
-    public long[] getLengths() {
-      throw new UnsupportedOperationException();
-    }
-
-    @Override
-    public NodeType getDeclaringNodeType() {
-      throw new UnsupportedOperationException();
-    }
-
-    @Override
-    public boolean isAutoCreated() {
-      throw new UnsupportedOperationException();
-    }
-
-    @Override
-    public boolean isMandatory() {
-      throw new UnsupportedOperationException();
-    }
-
-    @Override
-    public int getOnParentVersion() {
-      throw new UnsupportedOperationException();
-    }
-
-    @Override
-    public boolean isProtected() {
-      throw new UnsupportedOperationException();
-    }
-
-    @Override
-    public int getRequiredType() {
-      throw new UnsupportedOperationException();
-    }
-
-    @Override
-    public String[] getValueConstraints() {
-      throw new UnsupportedOperationException();
-    }
-
-    @Override
-    public Value[] getDefaultValues() {
-      throw new UnsupportedOperationException();
-    }
-
-    @Override
-    public String[] getAvailableQueryOperators() {
-      throw new UnsupportedOperationException();
-    }
-
-    @Override
-    public boolean isFullTextSearchable() {
-      throw new UnsupportedOperationException();
-    }
-
-    @Override
-    public boolean isQueryOrderable() {
-      throw new UnsupportedOperationException();
-    }
-
-  }
-
-  private static class MockValue implements Value {
-
-    private final String value;
-    private final int type;
-
-    MockValue(String value, int type) {
-      this.value = value;
-      this.type = type;
-    }
-
-    @Override
-    public String getString() throws ValueFormatException, IllegalStateException, RepositoryException {
-      return value;
-    }
-
-    @Override
-    public int getType() {
-      return type;
-    }
-
-
-    // -- unsupported methods --
-
-    @Override
-    public InputStream getStream() {
-      throw new UnsupportedOperationException();
-    }
-
-    @Override
-    public Binary getBinary() {
-      throw new UnsupportedOperationException();
-    }
-
-    @Override
-    public long getLong() {
-      throw new UnsupportedOperationException();
-    }
-
-    @Override
-    public double getDouble() {
-      throw new UnsupportedOperationException();
-    }
-
-    @Override
-    public BigDecimal getDecimal() {
-      throw new UnsupportedOperationException();
-    }
-
-    @Override
-    public Calendar getDate() {
-      throw new UnsupportedOperationException();
-    }
-
-    @Override
-    public boolean getBoolean() {
-      throw new UnsupportedOperationException();
-    }
-
-  }
-
-}
\ No newline at end of file