/*
* This Source Code Form is subject to the terms of the Mozilla Public
* License, v. 2.0. If a copy of the MPL was not distributed with this
* file, You can obtain one at http://mozilla.org/MPL/2.0/.
* Copyright (c) 2013, MPL CodeInside http://codeinside.ru
*/
package ru.codeinside.gses.webui.osgi;
import org.osgi.framework.BundleContext;
import org.osgi.framework.ServiceReference;
import org.osgi.util.tracker.ServiceTrackerCustomizer;
import ru.codeinside.gses.form.FormConverter;
import ru.codeinside.gses.form.FormData;
import java.util.logging.Logger;
public class FormConverterCustomicer implements ServiceTrackerCustomizer {
static BundleContext BUNDLE;
static volatile ServiceReference REF;
final Logger logger = Logger.getLogger(getClass().getName());
FormConverterCustomicer(BundleContext bundleContext) {
BUNDLE = bundleContext;
}
@Override
public Object addingService(ServiceReference serviceReference) {
REF = serviceReference;
return null;
}
@Override
public void modifiedService(ServiceReference serviceReference, Object o) {
}
@Override
public void removedService(ServiceReference serviceReference, Object o) {
REF = null;
}
public static boolean convert(FormData formData) {
ServiceReference ref = REF;
if (ref != null) {
FormConverter converter = (FormConverter) BUNDLE.getService(ref);
try {
converter.createForm(formData);
return true;
} finally {
BUNDLE.ungetService(ref);
}
}
return false;
}
}