mapentrycombiner.java

来自「提供ESB 应用mule源代码 提供ESB 应用mule源代码」· Java 代码 · 共 143 行

JAVA
143
字号
/* * $Id: MapEntryCombiner.java 10489 2008-01-23 17:53:38Z dfeist $ * -------------------------------------------------------------------------------------- * Copyright (c) MuleSource, Inc.  All rights reserved.  http://www.mulesource.com * * The software in this package is published under the terms of the CPAL v1.0 * license, a copy of which has been included with this distribution in the * LICENSE.txt file. */package org.mule.config.spring.parsers.assembly;import java.util.Collection;import java.util.HashMap;import java.util.Map;import java.util.Set;/** * This is used internally by {@link org.mule.config.spring.parsers.assembly.DefaultBeanAssembler} * along with {@link org.mule.config.spring.parsers.collection.ChildSingletonMapDefinitionParser}. * It creates a map with a single key/value pair.  This may seem odd, but the result is not * manipulated within the assembler - that means that, unlike * {@link org.mule.config.spring.parsers.collection.ChildMapEntryDefinitionParser}, this element * can contain nested values.  Note that most uses will set * {@link org.mule.config.spring.parsers.assembly.configuration.PropertyConfiguration#isCollection(String)} * so that several entries can be combined. */public class MapEntryCombiner implements Map{    public static final String KEY = "key";    public static final String VALUE = "value";    private Object key;    private Object value;    private Map cachedMerge = new HashMap();    private boolean isMerged = false;    private synchronized Map getCachedMerge()    {        if (!isMerged)        {            cachedMerge.put(key, value);            isMerged = true;        }        return cachedMerge;    }    public Object getKey()    {        assertNotMerged();        return key;    }    public void setKey(Object key)    {        assertNotMerged();        this.key = key;    }    public Object getValue()    {        assertNotMerged();        return value;    }    public void setValue(Object value)    {        assertNotMerged();        this.value = value;    }    private synchronized void assertNotMerged()    {        if (isMerged)        {            throw new IllegalStateException("Maps have already been merged");        }    }    // map delegates (except hashCode and equals)    public int size()    {        return getCachedMerge().size();    }    public void clear()    {        getCachedMerge().clear();    }    public boolean isEmpty()    {        return getCachedMerge().isEmpty();    }    public boolean containsKey(Object key)    {        return getCachedMerge().containsKey(key);    }    public boolean containsValue(Object value)    {        return getCachedMerge().containsValue(value);    }    public Collection values()    {        return getCachedMerge().values();    }    public void putAll(Map t)    {        getCachedMerge().putAll(t);    }    public Set entrySet()    {        return getCachedMerge().entrySet();    }    public Set keySet()    {        return getCachedMerge().keySet();    }    public Object get(Object key)    {        return getCachedMerge().get(key);    }    public Object remove(Object key)    {        return getCachedMerge().remove(key);    }    public Object put(Object key, Object value)    {        return getCachedMerge().put(key, value);    }}

⌨️ 快捷键说明

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