Java tutorial
/* * 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.brooklyn.location.jclouds.templates.customize; import java.util.Map; import org.apache.brooklyn.util.core.config.ConfigBag; import org.apache.brooklyn.util.text.KeyValueParser; import org.jclouds.compute.options.TemplateOptions; import com.google.common.collect.Maps; class UserMetadataMapOption implements TemplateOptionCustomizer { @Override public void apply(TemplateOptions t, ConfigBag props, Object v) { if (v != null) { t.userMetadata(toMapStringString(v)); } } private Map<String, String> toMapStringString(Object v) { if (v instanceof Map<?, ?>) { Map<String, String> result = Maps.newLinkedHashMap(); for (Map.Entry<?, ?> entry : ((Map<?, ?>) v).entrySet()) { String key = entry.getKey().toString(); String value = entry.getValue().toString(); result.put(key, value); } return result; } else if (v instanceof CharSequence) { return KeyValueParser.parseMap(v.toString()); } else { throw new IllegalArgumentException( "Invalid type for Map<String,String>: " + v + (v != null ? " of type " + v.getClass() : "")); } } }