mirror of
https://gitflic.ru/project/openide/openide.git
synced 2026-09-27 10:03:11 +07:00
don't allow clients to modify cached extensions (IDEA-155455)
This commit is contained in:
+1
-1
@@ -197,7 +197,7 @@ public class ExtensionPointImpl<T> implements ExtensionPoint<T> {
|
||||
}
|
||||
}
|
||||
}
|
||||
return result;
|
||||
return result.length == 0 ? result : result.clone();
|
||||
}
|
||||
|
||||
@Override
|
||||
|
||||
+15
@@ -24,6 +24,7 @@ import org.junit.After;
|
||||
import org.junit.Test;
|
||||
import org.picocontainer.defaults.DefaultPicoContainer;
|
||||
|
||||
import java.util.Arrays;
|
||||
import java.util.List;
|
||||
|
||||
import static org.hamcrest.Matchers.*;
|
||||
@@ -248,6 +249,20 @@ public class ExtensionPointImplTest {
|
||||
assertThat(ourTestLog.errors(), empty());
|
||||
}
|
||||
|
||||
@Test
|
||||
public void clientsCannotModifyCachedExtensions() {
|
||||
ExtensionPoint<Integer> extensionPoint = buildExtensionPoint(Integer.class);
|
||||
extensionPoint.registerExtension(4);
|
||||
extensionPoint.registerExtension(2);
|
||||
|
||||
Integer[] extensions = extensionPoint.getExtensions();
|
||||
assertEquals(ContainerUtil.newArrayList(4, 2), Arrays.asList(extensions));
|
||||
Arrays.sort(extensions);
|
||||
assertEquals(ContainerUtil.newArrayList(2, 4), Arrays.asList(extensions));
|
||||
|
||||
assertEquals(ContainerUtil.newArrayList(4, 2), Arrays.asList(extensionPoint.getExtensions()));
|
||||
}
|
||||
|
||||
private static <T> ExtensionPoint<T> buildExtensionPoint(Class<T> aClass) {
|
||||
return new ExtensionPointImpl<T>(
|
||||
ExtensionsImplTest.EXTENSION_POINT_NAME_1, aClass.getName(), ExtensionPoint.Kind.INTERFACE,
|
||||
|
||||
Reference in New Issue
Block a user