private static void cacheArtifact()

in core/impl/src/main/java/org/apache/myfaces/extensions/cdi/core/impl/util/ConfiguredArtifactUtils.java [239:282]


    private static <T extends Serializable> void cacheArtifact(String key, T artifact)
    {
        ClassLoader classLoader = ClassUtils.getClassLoader(null);

        if(String.class.isAssignableFrom(artifact.getClass()))
        {
            Map<String, Set<String>> configuredValueMapping = configuredValueCache.get(classLoader);

            if(configuredValueMapping == null)
            {
                configuredValueMapping = new HashMap<String, Set<String>>();
                configuredValueCache.put(classLoader, configuredValueMapping);
            }

            Set<String> configuredValues = configuredValueMapping.get(key);

            if(configuredValues == null)
            {
                configuredValues = new HashSet<String>();
                configuredValueMapping.put(key, configuredValues);
            }
            configuredValues.add((String)artifact);
        }
        else
        {
            Map<ArtifactCacheKey<String>, Set<Serializable>> configuredValueMapping = apiToImplCache.get(classLoader);

            if(configuredValueMapping == null)
            {
                configuredValueMapping = new HashMap<ArtifactCacheKey<String>, Set<Serializable>>();
                apiToImplCache.put(classLoader, configuredValueMapping);
            }

            ArtifactCacheKey<String> cacheKey = new ArtifactCacheKey<String>(key, artifact.getClass());
            Set<Serializable> configuredValues = configuredValueMapping.get(cacheKey);

            if(configuredValues == null)
            {
                configuredValues = new HashSet<Serializable>();
                configuredValueMapping.put(cacheKey, configuredValues);
            }
            configuredValues.add(artifact);
        }
    }