@PerLookup public class DuplicatePostProcessor extends java.lang.Object implements PopulatorPostProcessor
It is often the case when using a classpath that the same jar file can appear on the path more than once. For example this is often done when patching. However, if this jar contains HK2 descriptor files in it, that can mean duplicate services that are not intended to be duplicated. This service removes all duplicate descriptors from the set to be added to HK2
Modifier and Type | Class and Description |
---|---|
private static class |
DuplicatePostProcessor.ImplOnlyKey
Key use for implementation only (along with descriptor
type, otherwise factories eliminate themselves)
|
Modifier and Type | Field and Description |
---|---|
private java.util.HashSet<DuplicatePostProcessor.ImplOnlyKey> |
implOnlyDupSet |
private DuplicatePostProcessorMode |
mode |
private java.util.HashSet<DescriptorImpl> |
strictDupSet |
Constructor and Description |
---|
DuplicatePostProcessor()
Creates a DuplicatePostProcessor with the STRICT mode
for determining duplicates
|
DuplicatePostProcessor(DuplicatePostProcessorMode mode)
Creates a DuplicatePostProcessor with the
|
Modifier and Type | Method and Description |
---|---|
DuplicatePostProcessorMode |
getMode()
Returns the mode of this DuplicatePostProcessorMode of this processor
|
private DescriptorImpl |
implementationOnly(ServiceLocator serviceLocator,
DescriptorImpl descriptorImpl) |
DescriptorImpl |
process(ServiceLocator serviceLocator,
DescriptorImpl descriptorImpl)
This method can be used to alter the descriptor read in.
|
private DescriptorImpl |
strict(ServiceLocator serviceLocator,
DescriptorImpl descriptorImpl) |
java.lang.String |
toString() |
private final DuplicatePostProcessorMode mode
private final java.util.HashSet<DescriptorImpl> strictDupSet
private final java.util.HashSet<DuplicatePostProcessor.ImplOnlyKey> implOnlyDupSet
public DuplicatePostProcessor()
public DuplicatePostProcessor(DuplicatePostProcessorMode mode)
mode
- public DuplicatePostProcessorMode getMode()
public DescriptorImpl process(ServiceLocator serviceLocator, DescriptorImpl descriptorImpl)
PopulatorPostProcessor
process
in interface PopulatorPostProcessor
serviceLocator
- the ServiceLocator being populated. Will not be nulldescriptorImpl
- The descriptorImpl read from some external source. This
processor can modify this descriptor fullyprivate DescriptorImpl implementationOnly(ServiceLocator serviceLocator, DescriptorImpl descriptorImpl)
private DescriptorImpl strict(ServiceLocator serviceLocator, DescriptorImpl descriptorImpl)
public java.lang.String toString()
toString
in class java.lang.Object