| package com.intellij.util; |
| |
| import com.intellij.openapi.util.Key; |
| import org.jetbrains.annotations.NonNls; |
| import org.jetbrains.annotations.NotNull; |
| |
| import java.util.HashMap; |
| import java.util.Map; |
| |
| /** |
| * @author peter |
| */ |
| public class ProcessingContext { |
| private Map<Object, Object> myMap; |
| private SharedProcessingContext mySharedContext; |
| |
| public ProcessingContext() { |
| } |
| |
| public ProcessingContext(final SharedProcessingContext sharedContext) { |
| mySharedContext = sharedContext; |
| } |
| |
| @NotNull |
| public SharedProcessingContext getSharedContext() { |
| if (mySharedContext == null) { |
| return mySharedContext = new SharedProcessingContext(); |
| } |
| return mySharedContext; |
| } |
| |
| @SuppressWarnings({"ConstantConditions"}) |
| public Object get(@NotNull @NonNls final Object key) { |
| return myMap == null? null : myMap.get(key); |
| } |
| |
| public void put(@NotNull @NonNls final Object key, @NotNull final Object value) { |
| checkMapInitialized(); |
| myMap.put(key, value); |
| } |
| |
| public <T> void put(Key<T> key, T value) { |
| checkMapInitialized(); |
| myMap.put(key, value); |
| } |
| |
| @SuppressWarnings({"ConstantConditions"}) |
| public <T> T get(Key<T> key) { |
| return myMap == null ? null : (T)myMap.get(key); |
| } |
| |
| private void checkMapInitialized() { |
| if (myMap == null) myMap = new HashMap<Object, Object>(1); |
| } |
| |
| } |