From 9f24659cd7dbe973d3f5a5e35e86c12fa1449874 Mon Sep 17 00:00:00 2001 From: Vladimir Krivosheev Date: Mon, 1 Aug 2016 15:59:42 +0200 Subject: [PATCH] cleanup --- .../util/pico/DefaultPicoContainer.java | 79 ++++++++----------- 1 file changed, 32 insertions(+), 47 deletions(-) diff --git a/platform/extensions/src/com/intellij/util/pico/DefaultPicoContainer.java b/platform/extensions/src/com/intellij/util/pico/DefaultPicoContainer.java index 59f1a6b8b633..e36e602a9511 100644 --- a/platform/extensions/src/com/intellij/util/pico/DefaultPicoContainer.java +++ b/platform/extensions/src/com/intellij/util/pico/DefaultPicoContainer.java @@ -20,25 +20,25 @@ import com.intellij.util.ReflectionUtil; import com.intellij.util.SmartList; import com.intellij.util.containers.ContainerUtil; import com.intellij.util.containers.FList; +import gnu.trove.THashSet; import org.jetbrains.annotations.NotNull; import org.jetbrains.annotations.Nullable; import org.picocontainer.*; import org.picocontainer.defaults.*; -import java.io.Serializable; import java.util.*; import java.util.concurrent.atomic.AtomicReference; -public class DefaultPicoContainer implements AreaPicoContainer, Serializable { +public class DefaultPicoContainer implements AreaPicoContainer { private final PicoContainer parent; - private final Set children = new HashSet(); + private final Set children = new THashSet(); private final Map componentKeyToAdapterCache = ContainerUtil.newConcurrentMap(); private final LinkedHashSetWrapper componentAdapters = new LinkedHashSetWrapper(); private final Map classNameToAdapter = ContainerUtil.newConcurrentMap(); private final AtomicReference> nonAssignableComponentAdapters = new AtomicReference>(FList.emptyList()); - public DefaultPicoContainer(PicoContainer parent) { + public DefaultPicoContainer(@Nullable PicoContainer parent) { this.parent = parent == null ? null : ImmutablePicoContainerProxyFactory.newProxyInstance(parent); } @@ -51,10 +51,6 @@ public class DefaultPicoContainer implements AreaPicoContainer, Serializable { return componentAdapters.getImmutableSet(); } - public Map getAssignablesCache() { - return Collections.unmodifiableMap(classNameToAdapter); - } - private void appendNonAssignableAdaptersOfType(@NotNull Class componentType, @NotNull List result) { List comp = new ArrayList(); for (final ComponentAdapter componentAdapter : nonAssignableComponentAdapters.get()) { @@ -63,8 +59,7 @@ public class DefaultPicoContainer implements AreaPicoContainer, Serializable { } } for (int i = comp.size() - 1; i >= 0; i--) { - ComponentAdapter adapter = comp.get(i); - result.add(adapter); + result.add(comp.get(i)); } } @@ -73,7 +68,7 @@ public class DefaultPicoContainer implements AreaPicoContainer, Serializable { public final ComponentAdapter getComponentAdapter(Object componentKey) { ComponentAdapter adapter = getFromCache(componentKey); if (adapter == null && parent != null) { - adapter = parent.getComponentAdapter(componentKey); + return parent.getComponentAdapter(componentKey); } return adapter; } @@ -81,11 +76,12 @@ public class DefaultPicoContainer implements AreaPicoContainer, Serializable { @Nullable private ComponentAdapter getFromCache(final Object componentKey) { ComponentAdapter adapter = componentKeyToAdapterCache.get(componentKey); - if (adapter != null) return adapter; + if (adapter != null) { + return adapter; + } if (componentKey instanceof Class) { - Class klass = (Class)componentKey; - return componentKeyToAdapterCache.get(klass.getName()); + return componentKeyToAdapterCache.get(((Class)componentKey).getName()); } return null; @@ -93,7 +89,7 @@ public class DefaultPicoContainer implements AreaPicoContainer, Serializable { @Override @Nullable - public ComponentAdapter getComponentAdapterOfType(Class componentType) { + public ComponentAdapter getComponentAdapterOfType(@NotNull Class componentType) { // See http://jira.codehaus.org/secure/ViewIssue.jspa?key=PICO-115 ComponentAdapter adapterByKey = getComponentAdapter(componentType); if (adapterByKey != null) { @@ -101,28 +97,25 @@ public class DefaultPicoContainer implements AreaPicoContainer, Serializable { } List found = getComponentAdaptersOfType(componentType); - if (found.size() == 1) { return found.get(0); } if (found.isEmpty()) { - if (parent != null) { - return parent.getComponentAdapterOfType(componentType); - } - return null; + return parent == null ? null : parent.getComponentAdapterOfType(componentType); } + Class[] foundClasses = new Class[found.size()]; for (int i = 0; i < foundClasses.length; i++) { foundClasses[i] = found.get(i).getComponentImplementation(); } - throw new AmbiguousComponentResolutionException(componentType, foundClasses); } @Override public List getComponentAdaptersOfType(final Class componentType) { - if (componentType == null) return Collections.emptyList(); - if (componentType == String.class) return Collections.emptyList(); + if (componentType == null || componentType == String.class) { + return Collections.emptyList(); + } List result = new SmartList(); @@ -184,7 +177,7 @@ public class DefaultPicoContainer implements AreaPicoContainer, Serializable { } @Override - public List getComponentInstances() throws PicoException { + public List getComponentInstances() { return getComponentInstancesOfType(Object.class); } @@ -239,11 +232,10 @@ public class DefaultPicoContainer implements AreaPicoContainer, Serializable { return null; } - private Object getLocalInstance(final ComponentAdapter componentAdapter) { - PicoException firstLevelException = null; - Object instance = null; + private Object getLocalInstance(@NotNull ComponentAdapter componentAdapter) { + PicoException firstLevelException; try { - instance = componentAdapter.getComponentInstance(this); + return componentAdapter.getComponentInstance(this); } catch (PicoInitializationException e) { firstLevelException = e; @@ -251,28 +243,22 @@ public class DefaultPicoContainer implements AreaPicoContainer, Serializable { catch (PicoIntrospectionException e) { firstLevelException = e; } - if (firstLevelException != null) { - if (parent != null) { - instance = parent.getComponentInstance(componentAdapter.getComponentKey()); - if (instance != null) { - return instance; - } - } - throw firstLevelException; + if (parent != null) { + Object instance = parent.getComponentInstance(componentAdapter.getComponentKey()); + if (instance != null) { + return instance; + } } - return instance; + throw firstLevelException; } - @Override @Nullable public ComponentAdapter unregisterComponentByInstance(@NotNull Object componentInstance) { - Collection adapters = getComponentAdapters(); - - for (final ComponentAdapter adapter : adapters) { - final Object o = getInstance(adapter); + for (ComponentAdapter adapter : getComponentAdapters()) { + Object o = getInstance(adapter); if (o != null && o.equals(componentInstance)) { return unregisterComponent(adapter.getComponentKey()); } @@ -281,7 +267,7 @@ public class DefaultPicoContainer implements AreaPicoContainer, Serializable { } @Override - public void verify() throws PicoVerificationException { + public void verify() { new VerifyingVisitor().traverse(this); } @@ -321,12 +307,11 @@ public class DefaultPicoContainer implements AreaPicoContainer, Serializable { @Override public void accept(PicoVisitor visitor) { visitor.visitContainer(this); - final List adapters = new ArrayList(getComponentAdapters()); - for (final ComponentAdapter adapter : adapters) { + + for (ComponentAdapter adapter : getComponentAdapters()) { adapter.accept(visitor); } - final List allChildren = new ArrayList(children); - for (PicoContainer child : allChildren) { + for (PicoContainer child : new SmartList(children)) { child.accept(visitor); } }