mirror of
				https://github.com/Alfresco/alfresco-community-repo.git
				synced 2025-10-29 15:21:53 +00:00 
			
		
		
		
	12795: ALFCOM-2419: ResourceBundleWrapper is no longer (de)serializable after changes merged from 2.1-A rev 8323 12826: Fix for ETHREEOH-37 and ETHREEOH-176. git-svn-id: https://svn.alfresco.com/repos/alfresco-enterprise/alfresco/HEAD/root@12828 c4b6b30b-aa2e-2d43-bbcb-ca4b014f7261
		
			
				
	
	
		
			145 lines
		
	
	
		
			4.1 KiB
		
	
	
	
		
			Java
		
	
	
	
	
	
			
		
		
	
	
			145 lines
		
	
	
		
			4.1 KiB
		
	
	
	
		
			Java
		
	
	
	
	
	
| /*
 | |
|  * Copyright (C) 2005-2007 Alfresco Software Limited.
 | |
|  *
 | |
|  * This program is free software; you can redistribute it and/or
 | |
|  * modify it under the terms of the GNU General Public License
 | |
|  * as published by the Free Software Foundation; either version 2
 | |
|  * of the License, or (at your option) any later version.
 | |
| 
 | |
|  * This program is distributed in the hope that it will be useful,
 | |
|  * but WITHOUT ANY WARRANTY; without even the implied warranty of
 | |
|  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
 | |
|  * GNU General Public License for more details.
 | |
| 
 | |
|  * You should have received a copy of the GNU General Public License
 | |
|  * along with this program; if not, write to the Free Software
 | |
|  * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
 | |
| 
 | |
|  * As a special exception to the terms and conditions of version 2.0 of 
 | |
|  * the GPL, you may redistribute this Program in connection with Free/Libre 
 | |
|  * and Open Source Software ("FLOSS") applications as described in Alfresco's 
 | |
|  * FLOSS exception.  You should have recieved a copy of the text describing 
 | |
|  * the FLOSS exception, and it is also available here: 
 | |
|  * http://www.alfresco.com/legal/licensing"
 | |
|  */
 | |
| package org.alfresco.service.namespace;
 | |
| 
 | |
| import java.util.ArrayList;
 | |
| import java.util.Collection;
 | |
| import java.util.HashMap;
 | |
| import java.util.HashSet;
 | |
| import java.util.Set;
 | |
| 
 | |
| /**
 | |
|  * A delegating namespace prefix resolver which allows local over rides from the
 | |
|  * delegate. Allows standard/default prefixes to be available but over ridden as
 | |
|  * required.
 | |
|  * 
 | |
|  * @author andyh
 | |
|  */
 | |
| public class DynamicNamespacePrefixResolver implements NamespaceService
 | |
| {
 | |
|     /**
 | |
|      * The delegate
 | |
|      */
 | |
|     private NamespacePrefixResolver delegate;
 | |
| 
 | |
|     /**
 | |
|      * The map uris keyed by prefix
 | |
|      */
 | |
|     private HashMap<String, String> map = new HashMap<String, String>();
 | |
| 
 | |
|     
 | |
|     public DynamicNamespacePrefixResolver(NamespacePrefixResolver delegate)
 | |
|     {
 | |
|         super();
 | |
|         this.delegate = delegate;
 | |
|     }
 | |
|     
 | |
|     public DynamicNamespacePrefixResolver()
 | |
|     {
 | |
|         this(null);
 | |
|     }
 | |
| 
 | |
|     
 | |
|     /**
 | |
|      * Add prefix to name space mapping override
 | |
|      * 
 | |
|      * @param prefix
 | |
|      * @param uri
 | |
|      */
 | |
|     public void registerNamespace(String prefix, String uri)
 | |
|     {
 | |
|         map.put(prefix, uri);
 | |
|     }
 | |
| 
 | |
|     /**
 | |
|      * Remove a prefix to namespace mapping
 | |
|      * 
 | |
|      * @param prefix
 | |
|      */
 | |
|     public void unregisterNamespace(String prefix)
 | |
|     {
 | |
|         map.remove(prefix);
 | |
|     }
 | |
| 
 | |
|     // NameSpacePrefix Resolver
 | |
| 
 | |
|     public String getNamespaceURI(String prefix) throws NamespaceException
 | |
|     {
 | |
|         String uri = map.get(prefix);
 | |
|         if ((uri == null) && (delegate != null))
 | |
|         {
 | |
|             uri = delegate.getNamespaceURI(prefix);
 | |
|         }
 | |
|         return uri;
 | |
|     }
 | |
| 
 | |
|     public Collection<String> getPrefixes(String namespaceURI) throws NamespaceException
 | |
|     {
 | |
|         Collection<String> prefixes = new ArrayList<String>();
 | |
|         for (String key : map.keySet())
 | |
|         {
 | |
|             String uri = map.get(key);
 | |
|             if ((uri != null) && (uri.equals(namespaceURI)))
 | |
|             {
 | |
|                 prefixes.add(key);
 | |
|             }
 | |
|         }
 | |
|         // Only add if not over ridden here (if identical already added)
 | |
|         if (delegate != null)
 | |
|         {
 | |
|             for (String prefix : delegate.getPrefixes(namespaceURI))
 | |
|             {
 | |
|                 if (!map.containsKey(prefix))
 | |
|                 {
 | |
|                     prefixes.add(prefix);
 | |
|                 }
 | |
|             }
 | |
|         }
 | |
|         return prefixes;
 | |
|     }
 | |
| 
 | |
|     public Collection<String> getPrefixes()
 | |
|     {
 | |
|        Set<String> prefixes = new HashSet<String>();
 | |
|        if(delegate != null)
 | |
|        {
 | |
|           prefixes.addAll(delegate.getPrefixes());
 | |
|        }
 | |
|        prefixes.addAll(map.keySet());
 | |
|        return prefixes;
 | |
|     }
 | |
|     
 | |
|     public Collection<String> getURIs()
 | |
|     {
 | |
|        Set<String> uris = new HashSet<String>();
 | |
|        if(delegate != null)
 | |
|        {
 | |
|           uris.addAll(delegate.getURIs());
 | |
|        }
 | |
|        uris.addAll(map.keySet());
 | |
|        return uris;
 | |
|     }
 | |
| }
 |