/** * Copyright (c) 2014 Codetrails GmbH. * All rights reserved. This program and the accompanying materials * are made available under the terms of the Eclipse Public License v1.0 * which accompanies this distribution, and is available at * http://www.eclipse.org/legal/epl-v10.html * * Contributors: * Marcel Bruch - initial API and implementation. */ package org.eclipse.recommenders.internal.completion.rcp; import java.util.Map; import org.eclipse.jdt.internal.codeassist.InternalCompletionProposal; import com.google.common.annotations.Beta; import com.google.common.base.Objects; import com.google.common.base.Optional; import com.google.common.collect.Maps; /** * EXPERIMENTAL. Not recommended for public API use. */ @SuppressWarnings("restriction") @Beta public class AccessibleCompletionProposal extends InternalCompletionProposal { private Map<String, Object> data = Maps.newHashMap(); public AccessibleCompletionProposal(int kind, int completionOffset) { super(kind, completionOffset); } @Override public void setPackageName(char[] packageName) { super.setPackageName(packageName); } @Override public void setTypeName(char[] typeName) { super.setTypeName(typeName); } @Override public char[] getTypeName() { return super.getTypeName(); } public void setData(String key, Object value) { if (value != null) { data.put(key, value); } else { data.remove(key); } } public void setData(Class<?> key, Object value) { setData(key.getName(), value); } public <T> T getData(String key, T defaultValue) { @SuppressWarnings("unchecked") T res = (T) data.get(key); return Objects.firstNonNull(res, defaultValue); } public <T> T getData(Class<?> key, T defaultValue) { return getData(key.getName(), defaultValue); } public <T> Optional<T> getData(String key) { @SuppressWarnings("unchecked") T res = (T) data.get(key); return Optional.fromNullable(res); } public <T> Optional<T> getData(Class<T> key) { return getData(key.getName()); } }