@Override
    public Object loadConfig(IPolicy policy, String policySpec, String configData) {
        synchronized (policyConfigCache) {
            String cacheKey = policySpec + "||" + configData; //$NON-NLS-1$
            if (policyConfigCache.containsKey(cacheKey)) {
                return policyConfigCache.get(cacheKey);
            }
            Object config;

            ClassLoader oldCtxLoader = Thread.currentThread().getContextClassLoader();
            try {
                Thread.currentThread().setContextClassLoader(policy.getClass().getClassLoader());
                config = policy.parseConfiguration(configData);
            } finally {
                Thread.currentThread().setContextClassLoader(oldCtxLoader);
            }

            policyConfigCache.put(cacheKey, config);

            return config;
        }
    }
@see io.apiman.gateway.engine.policy.IPolicyFactory#loadConfig(io.apiman.gateway.engine.policy.IPolicy, java.lang.String, java.lang.String)
gateway/engine/core/src/main/java/io/apiman/gateway/engine/policy/PolicyFactoryImpl.java