protected void activate()

in src/main/java/org/apache/sling/commons/fsclassloader/impl/FSClassLoaderProvider.java [101:131]


	protected void activate(final ComponentContext componentContext, final FSClassLoaderComponentConfig config)
			throws MalformedURLException, InvalidSyntaxException {
		// get the file root
		this.root = CacheLocationUtils.getRootDir(componentContext.getBundleContext(), config);
		this.root.mkdirs();
		this.rootURL = this.root.toURI().toURL();
		this.callerBundle = componentContext.getUsingBundle();

		classLoaderWriterListeners.clear();
		if (classLoaderWriterServiceListener != null) {
			componentContext.getBundleContext().removeServiceListener(classLoaderWriterServiceListener);
			classLoaderWriterServiceListener = null;
		}
		classLoaderWriterServiceListener = new ServiceListener() {
			@Override
			public void serviceChanged(ServiceEvent event) {
				ServiceReference<ClassLoaderWriterListener> reference = (ServiceReference<ClassLoaderWriterListener>) event
						.getServiceReference();
				if (event.getType() == ServiceEvent.MODIFIED || event.getType() == ServiceEvent.REGISTERED) {
					classLoaderWriterListeners.put(getId(reference), reference);
				} else {
					classLoaderWriterListeners.remove(getId(reference));
				}
			}

			private Long getId(ServiceReference<ClassLoaderWriterListener> reference) {
			    return (Long)reference.getProperty(Constants.SERVICE_ID);
			}
		};
		componentContext.getBundleContext().addServiceListener(classLoaderWriterServiceListener, LISTENER_FILTER);
	}