⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 davpropertyset.java

📁 jsr170接口的java实现。是个apache的开源项目。
💻 JAVA
字号:
/* * 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.webdav.property;import org.apache.jackrabbit.webdav.xml.Namespace;import org.slf4j.Logger;import org.slf4j.LoggerFactory;import java.util.Collection;import java.util.HashMap;import java.util.Iterator;import java.util.Map;import java.util.NoSuchElementException;import java.util.Set;/** * The <code>DavPropertySet</code> class represents a set of WebDAV * property. */public class DavPropertySet extends PropContainer {    private static Logger log = LoggerFactory.getLogger(DavPropertySet.class);    /**     * the set of property     */    private final Map map = new HashMap();    /**     * Adds a new property to this set.     *     * @param property The property to add     *     * @return The previously assigned property or <code>null</code>.     */    public DavProperty add(DavProperty property) {        return (DavProperty) map.put(property.getName(), property);    }    /**     *     * @param pset Properties to add     */    public void addAll(DavPropertySet pset) {	map.putAll(pset.map);    }    /**     * Retrieves the property with the specified <code>name</code> and the     * default WebDAV {@link org.apache.jackrabbit.webdav.DavConstants#NAMESPACE namespace}.     *     * @param name The name of the property to retrieve     *     * @return The desired property or <code>null</code>     */    public DavProperty get(String name) {    	return get(DavPropertyName.create(name));    }    /**     * Retrieves the property with the specified <code>name</code> and     * <code>namespace</code>.     *     * @param name The name of the property to retrieve     * @param namespace The namespace of the property to retrieve     *     * @return The desired property or <code>null</code>     */    public DavProperty get(String name, Namespace namespace) {        return get(DavPropertyName.create(name, namespace));    }    /**     * Retrieves the property with the specified <code>name</code>     *     * @param name The webdav property name of the property to retrieve     *     * @return The desired property or <code>null</code>     */    public DavProperty get(DavPropertyName name) {    	return (DavProperty) map.get(name);    }    /**     * Removes the indicated property from this set.     *     * @param name The webdav property name to remove     *     * @return The removed property or <code>null</code>     */    public DavProperty remove(DavPropertyName name) {        return (DavProperty) map.remove(name);    }    /**     * Removes the property with the specified <code>name</code> and the     * default WebDAV {@link org.apache.jackrabbit.webdav.DavConstants#NAMESPACE namespace}.     *     * @param name The name of the property to remove     *     * @return The removed property or <code>null</code>     */    public DavProperty remove(String name) {        return remove(DavPropertyName.create(name));    }    /**     * Removes the property with the specified <code>name</code> and     * <code>namespace</code> from this set.     *     * @param name The name of the property to remove     * @param namespace The namespace of the property to remove     *     * @return The removed property or <code>null</code>     */    public DavProperty remove(String name, Namespace namespace) {        return remove(DavPropertyName.create(name, namespace));    }    /**     * Returns an iterator over all property in this set.     *     * @return An iterator over {@link DavProperty}.     */    public DavPropertyIterator iterator() {        return new PropIter();    }    /**     * Returns an iterator over all those property in this set, that have the     * indicated <code>namespace</code>.     *     * @param namespace The namespace of the property in the iteration.     *     * @return An iterator over {@link DavProperty}.     */    public DavPropertyIterator iterator(Namespace namespace) {        return new PropIter(namespace);    }    /**     * Return the names of all properties present in this set.     *     * @return array of {@link DavPropertyName property names} present in this set.     */    public DavPropertyName[] getPropertyNames() {        Set keySet = map.keySet();	return (DavPropertyName[]) keySet.toArray(new DavPropertyName[keySet.size()]);    }    //------------------------------------------------------< PropContainer >---    /**     * Checks if this set contains the property with the specified name.     *     * @param name The name of the property     * @return <code>true</code> if this set contains the property;     *         <code>false</code> otherwise.     * @see PropContainer#contains(DavPropertyName)     */    public boolean contains(DavPropertyName name) {        return map.containsKey(name);    }    /**     * @param contentEntry NOTE, that the given object must be an instance of     * <code>DavProperty</code> in order to be successfully added to this set.     * @return true if the specified object is an instance of <code>DavProperty</code>     * and false otherwise.     * @see PropContainer#addContent(Object)     */    public boolean addContent(Object contentEntry) {        if (contentEntry instanceof DavProperty) {            add((DavProperty)contentEntry);            return true;        }        log.debug("DavProperty object expected. Found: " + contentEntry.getClass().toString());        return false;    }    /**     * @see PropContainer#isEmpty()     */    public boolean isEmpty() {        return map.isEmpty();    }    /**     * @see PropContainer#getContentSize()     */    public int getContentSize() {        return map.size();    }    /**     * @see PropContainer#getContent()     */    public Collection getContent() {        return map.values();    }    //---------------------------------------------------------- Inner class ---    /**     * Implementation of a DavPropertyIterator that returns webdav property.     * Additionally, it can only return property with the given namespace.     */    private class PropIter implements DavPropertyIterator {        /** the namespace to match agains */        private final Namespace namespace;        /** the internal iterator */        private final Iterator iterator;        /** the next property to return */        private DavProperty next;        /**         * Creates a new property iterator.         */        private PropIter() {            this(null);        }        /**         * Creates a new iterator with the given namespace         * @param namespace The namespace to match against         */	private PropIter(Namespace namespace) {            this.namespace = namespace;            iterator = map.values().iterator();            seek();        }        /**         * @see DavPropertyIterator#nextProperty();         */        public DavProperty nextProperty() throws NoSuchElementException {            if (next==null) {                throw new NoSuchElementException();            }            DavProperty ret = next;            seek();            return ret;        }        /**         * @see DavPropertyIterator#hasNext();         */        public boolean hasNext() {            return next!=null;        }        /**         * @see DavPropertyIterator#next();         */        public Object next() {            return nextProperty();        }        /**         * @see DavPropertyIterator#remove();         */        public void remove() {            throw new UnsupportedOperationException();        }        /**         * Seeks for the next valid property         */        private void seek() {            while (iterator.hasNext()) {                next = (DavProperty) iterator.next();                if (namespace == null || namespace.equals(next.getName().getNamespace())) {                    return;                }            }            next = null;        }    }}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -