001/* 002 * (C) Copyright 2006-2007 Nuxeo SA (http://nuxeo.com/) and others. 003 * 004 * Licensed under the Apache License, Version 2.0 (the "License"); 005 * you may not use this file except in compliance with the License. 006 * You may obtain a copy of the License at 007 * 008 * http://www.apache.org/licenses/LICENSE-2.0 009 * 010 * Unless required by applicable law or agreed to in writing, software 011 * distributed under the License is distributed on an "AS IS" BASIS, 012 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 013 * See the License for the specific language governing permissions and 014 * limitations under the License. 015 * 016 * Contributors: 017 * <a href="mailto:[email protected]">Anahide Tchertchian</a> 018 * 019 * $Id: IOResourceAdapterDescriptor.java 24959 2007-09-14 13:46:47Z atchertchian $ 020 */ 021 022package org.nuxeo.ecm.platform.io.descriptors; 023 024import java.io.Serializable; 025import java.util.HashMap; 026import java.util.Map; 027 028import org.nuxeo.common.xmap.annotation.XNode; 029import org.nuxeo.common.xmap.annotation.XNodeMap; 030import org.nuxeo.common.xmap.annotation.XObject; 031import org.nuxeo.runtime.api.Framework; 032 033/** 034 * Resource adapter descriptor 035 * 036 * @author <a href="mailto:[email protected]">Anahide Tchertchian</a> 037 */ 038@XObject("adapter") 039public class IOResourceAdapterDescriptor { 040 041 @XNode("@name") 042 String name; 043 044 @XNode("@class") 045 String className; 046 047 // single properties map 048 Map<String, String> properties = new HashMap<String, String>(); 049 050 @XNodeMap(value = "properties", key = "@name", type = HashMap.class, componentType = PropertyListDescriptor.class) 051 Map<String, PropertyListDescriptor> listProperties = new HashMap<String, PropertyListDescriptor>(); 052 053 @XNodeMap(value = "property", key = "@name", type = HashMap.class, componentType = String.class) 054 public void setProperties(Map<String, String> properties) { 055 Map<String, String> map = new HashMap<String, String>(); 056 for (Map.Entry<String, String> entry : properties.entrySet()) { 057 String value = entry.getValue(); 058 map.put(entry.getKey(), Framework.getRuntime().expandVars(value)); 059 } 060 this.properties = map; 061 } 062 063 public String getName() { 064 return name; 065 } 066 067 public String getClassName() { 068 return className; 069 } 070 071 public Map<String, Serializable> getProperties() { 072 Map<String, Serializable> map = new HashMap<String, Serializable>(); 073 map.putAll(properties); 074 for (Map.Entry<String, PropertyListDescriptor> prop : listProperties.entrySet()) { 075 map.put(prop.getKey(), prop.getValue().getValues()); 076 } 077 return map; 078 } 079 080}