private void registerAdapterFactory()

in core/src/main/java/org/apache/sling/testing/mock/sling/MockAdapterManagerImpl.java [245:302]


    private void registerAdapterFactory(final ComponentContext context,
            final ServiceReference<AdapterFactory> reference) {
        final String[] adaptables = PropertiesUtil.toStringArray(reference.getProperty(ADAPTABLE_CLASSES));
        final String[] adapters = PropertiesUtil.toStringArray(reference.getProperty(ADAPTER_CLASSES));

        if (adaptables == null || adaptables.length == 0 || adapters == null
                || adapters.length == 0) {
            return;
        }

        // DISABLED IN THIS COPY OF CLASS
        /*
        for (String clazz : adaptables) {
            if (!checkPackage(packageAdmin, clazz)) {
                log.warn("Adaptable class {} in factory service {} is not in an exported package.", clazz, reference.getProperty(Constants.SERVICE_ID));
            }
        }

        for (String clazz : adapters) {
            if (!checkPackage(packageAdmin, clazz)) {
                log.warn("Adapter class {} in factory service {} is not in an exported package.", clazz, reference.getProperty(Constants.SERVICE_ID));
            }
        }
        */

        final AdapterFactoryDescriptor factoryDesc = new AdapterFactoryDescriptor(context,
                reference, adapters);

        for (final String adaptable : adaptables) {
            AdapterFactoryDescriptorMap adfMap = null;
            synchronized ( this.descriptors ) {
                adfMap = descriptors.get(adaptable);
                if (adfMap == null) {
                    adfMap = new AdapterFactoryDescriptorMap();
                    descriptors.put(adaptable, adfMap);
                }
            }
            synchronized ( adfMap ) {
                adfMap.put(reference, factoryDesc);
            }
        }

        // clear the factory cache to force rebuild on next access
        this.factoryCache.clear();

        // register adaption
        final Dictionary<String, Object> props = new Hashtable<String, Object>();
        props.put(SlingConstants.PROPERTY_ADAPTABLE_CLASSES, adaptables);
        props.put(SlingConstants.PROPERTY_ADAPTER_CLASSES, adapters);

        ServiceRegistration<Adaption> adaptionRegistration = this.context.getBundleContext().registerService(Adaption.class, AdaptionImpl.INSTANCE, props);
        if (log.isDebugEnabled()) {
            log.debug("Registered service {} with {} : {} and {} : {}", new Object[] { Adaption.class.getName(),
                    SlingConstants.PROPERTY_ADAPTABLE_CLASSES, Arrays.toString(adaptables),
                    SlingConstants.PROPERTY_ADAPTER_CLASSES, Arrays.toString(adapters) });
        }
        factoryDesc.setAdaption(adaptionRegistration);
    }