All Downloads are FREE. Search and download functionalities are using the official Maven repository.

org.apache.jackrabbit.commons.webdav.JcrValueType Maven / Gradle / Ivy

/*
 * 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.commons.webdav;

import javax.jcr.PropertyType;
import java.util.HashMap;
import java.util.Map;

/** JcrValueType... */
public class JcrValueType {

    /**
     * Fragment for build the content type of request entities representing
     * a JCR-value. The fragment must be completed as follows:
     * 
     * jcr-value/ + Value.getType().toLowerCase()
     * 
* * resulting in the following types: *
     * jcr-value/binary
     * jcr-value/boolean
     * jcr-value/date
     * jcr-value/decimal
     * jcr-value/double
     * jcr-value/long
     * jcr-value/name
     * jcr-value/path
     * jcr-value/reference
     * jcr-value/string
     * jcr-value/undefined
     * jcr-value/uri
     * jcr-value/weakreference
     * 
*/ private static final String VALUE_CONTENT_TYPE_FRAGMENT = "jcr-value/"; /** * Hardcoded lookup from content type as created by {@link #contentTypeFromType(int)}. * Reason: As of JCR 2.0 there is no trivial rule to obtain the the TYPENAME * constant from a lower-cased string: WeakReference uses camel-case and URI * is all upper case... */ private static final Map TYPE_LOOKUP = new HashMap(); static { TYPE_LOOKUP.put(contentTypeFromType(PropertyType.BINARY), PropertyType.BINARY); TYPE_LOOKUP.put(contentTypeFromType(PropertyType.BOOLEAN), PropertyType.BOOLEAN); TYPE_LOOKUP.put(contentTypeFromType(PropertyType.DATE), PropertyType.DATE); TYPE_LOOKUP.put(contentTypeFromType(PropertyType.DECIMAL), PropertyType.DECIMAL); TYPE_LOOKUP.put(contentTypeFromType(PropertyType.DOUBLE), PropertyType.DOUBLE); TYPE_LOOKUP.put(contentTypeFromType(PropertyType.LONG), PropertyType.LONG); TYPE_LOOKUP.put(contentTypeFromType(PropertyType.NAME), PropertyType.NAME); TYPE_LOOKUP.put(contentTypeFromType(PropertyType.PATH), PropertyType.PATH); TYPE_LOOKUP.put(contentTypeFromType(PropertyType.REFERENCE), PropertyType.REFERENCE); TYPE_LOOKUP.put(contentTypeFromType(PropertyType.STRING), PropertyType.STRING); TYPE_LOOKUP.put(contentTypeFromType(PropertyType.UNDEFINED), PropertyType.UNDEFINED); TYPE_LOOKUP.put(contentTypeFromType(PropertyType.URI), PropertyType.URI); TYPE_LOOKUP.put(contentTypeFromType(PropertyType.WEAKREFERENCE), PropertyType.WEAKREFERENCE); } public static String contentTypeFromType(int propertyType) { return VALUE_CONTENT_TYPE_FRAGMENT + PropertyType.nameFromValue(propertyType).toLowerCase(); } public static int typeFromContentType(String contentType) { if (contentType != null) { // remove charset if present int pos = contentType.indexOf(';'); String ct = (pos == -1) ? contentType : contentType.substring(0, pos); if (TYPE_LOOKUP.containsKey(ct)) { return TYPE_LOOKUP.get(ct); } } // some invalid content type argument that does not match any of the // strings created by contentTypeFromType(int propertyType) // -> Fallback to UNDEFINED return PropertyType.UNDEFINED; } }




© 2015 - 2024 Weber Informatics LLC | Privacy Policy