/*
* #%L
* ACS AEM Commons Bundle
* %%
* Copyright (C) 2016 Adobe
* %%
* Licensed 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.
* #L%
*/
package com.adobe.acs.commons.workflow.synthetic.impl;
import com.day.cq.workflow.metadata.MetaDataMap;
import org.apache.sling.api.resource.ValueMap;
import org.apache.sling.api.wrappers.ValueMapDecorator;
import java.util.Collection;
import java.util.HashMap;
import java.util.Map;
import java.util.Set;
public class SyntheticMetaDataMap implements MetaDataMap, com.adobe.granite.workflow.metadata.MetaDataMap {
private final ValueMap metaDataMap;
public SyntheticMetaDataMap() {
this.metaDataMap = new ValueMapDecorator(new HashMap<String, Object>());
}
public SyntheticMetaDataMap(Map<String, Object> map) {
if (map == null) {
map = new HashMap<String, Object>();
}
this.metaDataMap = new ValueMapDecorator(map);
}
@Override
public final <T> T get(final String s, final Class<T> tClass) {
return this.metaDataMap.get(s, tClass);
}
@Override
public final <T> T get(final String s, final T t) {
return this.metaDataMap.get(s, t);
}
@Override
public final int size() {
return this.metaDataMap.size();
}
@Override
public final boolean isEmpty() {
return this.metaDataMap.isEmpty();
}
@Override
public final boolean containsKey(final Object o) {
return this.metaDataMap.containsKey(o);
}
@Override
public final boolean containsValue(final Object o) {
return this.metaDataMap.containsValue(o);
}
@Override
public final Object get(final Object o) {
return this.metaDataMap.get(o);
}
@Override
public final Object put(final String s, final Object o) {
return this.metaDataMap.put(s, o);
}
@Override
public final Object remove(final Object o) {
return this.metaDataMap.remove(o);
}
@Override
public final void putAll(final Map<? extends String, ?> map) {
this.metaDataMap.putAll(map);
}
@Override
public final void clear() {
this.metaDataMap.clear();
}
@Override
public final Set<String> keySet() {
return this.metaDataMap.keySet();
}
@Override
public final Collection<Object> values() {
return this.metaDataMap.values();
}
@Override
public final Set<Entry<String, Object>> entrySet() {
return this.metaDataMap.entrySet();
}
void resetTo(Map<String, ? extends Object> newData) {
Map<String, ? extends Object> tmp = new HashMap(newData);
this.metaDataMap.clear();
this.metaDataMap.putAll(tmp);
}
}