Skip to content

Commit a9945bf

Browse files
Snipxyulian-gaponenko
authored andcommitted
Add possibility to unregister namespaces from ContextManager
DEVSIX-5795
1 parent dc617e5 commit a9945bf

File tree

3 files changed

+30
-2
lines changed

3 files changed

+30
-2
lines changed

commons/src/main/java/com/itextpdf/commons/actions/contexts/AbstractContextManagerConfigurationEvent.java

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -40,4 +40,8 @@ public AbstractContextManagerConfigurationEvent() {
4040
protected void registerGenericContext(Collection<String> namespaces, Collection<String> products) {
4141
ContextManager.getInstance().registerGenericContextForProducts(namespaces, products);
4242
}
43+
44+
protected void unregisterGenericContext(Collection<String> namespaces) {
45+
ContextManager.getInstance().unregisterGenericContextForProducts(namespaces);
46+
}
4347
}

commons/src/main/java/com/itextpdf/commons/actions/contexts/ContextManager.java

Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -145,6 +145,13 @@ void registerGenericContextForProducts(Collection<String> namespaces, Collection
145145
registerGenericContextForProducts(namespaces, Collections.<String>emptyList(), products);
146146
}
147147

148+
// TODO DEVSIX-5311 consider renaming to be in sync with renamed registerGenericContextForProducts
149+
void unregisterGenericContextForProducts(Collection<String> namespaces) {
150+
for (String namespace : namespaces) {
151+
unregisterContext(namespace);
152+
}
153+
}
154+
148155
private IContext getNamespaceMapping(String namespace) {
149156
if (namespace != null) {
150157
return contextMappings.get(namespace);
@@ -172,6 +179,10 @@ private void registerContext(String namespace, IContext context) {
172179
contextMappings.put(namespace, context);
173180
}
174181

182+
private void unregisterContext(String namespace) {
183+
contextMappings.remove(namespace);
184+
}
185+
175186
private static class LengthComparator implements Comparator<String> {
176187
@Override
177188
public int compare(String o1, String o2) {

commons/src/test/java/com/itextpdf/commons/actions/contexts/ContextManagerTest.java

Lines changed: 15 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -46,6 +46,7 @@ This file is part of the iText (R) project.
4646
import com.itextpdf.test.ExtendedITextTest;
4747
import com.itextpdf.test.annotations.type.UnitTest;
4848

49+
import java.util.Arrays;
4950
import java.util.Collections;
5051
import org.junit.Assert;
5152
import org.junit.Test;
@@ -88,8 +89,20 @@ public void getRecognisedNamespaceForSpecificNamespaceTest() {
8889
public void notRegisteredNamespaceTest() {
8990
String notRegisteredNamespace = "com.hello.world";
9091

91-
Assert.assertEquals(null,
92-
ContextManager.getInstance().getRecognisedNamespace(notRegisteredNamespace));
92+
Assert.assertNull(ContextManager.getInstance().getRecognisedNamespace(notRegisteredNamespace));
93+
}
94+
95+
@Test
96+
public void unregisterNamespaceTest() {
97+
String testNamespace = "com.hello.world";
98+
ContextManager manager = new ContextManager();
99+
Assert.assertNull(manager.getRecognisedNamespace(testNamespace));
100+
manager.registerGenericContextForProducts(Arrays.asList(testNamespace),
101+
Arrays.asList("myProduct"));
102+
Assert.assertEquals(testNamespace,
103+
manager.getRecognisedNamespace(testNamespace + ".MyClass"));
104+
manager.unregisterGenericContextForProducts(Arrays.asList(testNamespace));
105+
Assert.assertNull(manager.getRecognisedNamespace(testNamespace));
93106
}
94107

95108
@Test

0 commit comments

Comments
 (0)