private void registerExporter()

in src/main/java/org/apache/sling/models/impl/ModelPackageBundleListener.java [275:293]


    private void registerExporter(Bundle bundle, Class<?> annotatedClass, String resourceType, Exporter exporterAnnotation,
                                  List<ServiceRegistration> regs, ExportServlet.ExportedObjectAccessor accessor) {
        if (accessor != null) {
            Map<String, String> baseOptions = getOptions(exporterAnnotation);
            ExportServlet servlet = new ExportServlet(bundle.getBundleContext(), factory, bindingsValuesProvidersByContext,
                    scriptEngineFactory, annotatedClass, exporterAnnotation.selector(), exporterAnnotation.name(), accessor, baseOptions);
            Dictionary<String, Object> registrationProps = new Hashtable<>();
            registrationProps.put("sling.servlet.resourceTypes", resourceType);
            registrationProps.put("sling.servlet.selectors", exporterAnnotation.selector());
            registrationProps.put("sling.servlet.extensions", exporterAnnotation.extensions());
            registrationProps.put(PROP_EXPORTER_SERVLET_CLASS, annotatedClass.getName());
            registrationProps.put(PROP_EXPORTER_SERVLET_NAME, exporterAnnotation.name());

            log.debug("registering servlet for {}, {}, {}", new Object[]{resourceType, exporterAnnotation.selector(), exporterAnnotation.extensions()});

            ServiceRegistration reg = bundleContext.registerService(Servlet.class.getName(), servlet, registrationProps);
            regs.add(reg);
        }
    }