Skip to main content
aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
Diffstat (limited to 'bundles/spreadsheet/org.eclipse.emfforms.spreadsheet.core.renderer.categorization/src/org/eclipse/emfforms/internal/spreadsheet/core/renderer/categorization/EMFFormsCategoryRendererService.java')
-rw-r--r--bundles/spreadsheet/org.eclipse.emfforms.spreadsheet.core.renderer.categorization/src/org/eclipse/emfforms/internal/spreadsheet/core/renderer/categorization/EMFFormsCategoryRendererService.java26
1 files changed, 20 insertions, 6 deletions
diff --git a/bundles/spreadsheet/org.eclipse.emfforms.spreadsheet.core.renderer.categorization/src/org/eclipse/emfforms/internal/spreadsheet/core/renderer/categorization/EMFFormsCategoryRendererService.java b/bundles/spreadsheet/org.eclipse.emfforms.spreadsheet.core.renderer.categorization/src/org/eclipse/emfforms/internal/spreadsheet/core/renderer/categorization/EMFFormsCategoryRendererService.java
index ea7dc8bf58..ae2fc83b16 100644
--- a/bundles/spreadsheet/org.eclipse.emfforms.spreadsheet.core.renderer.categorization/src/org/eclipse/emfforms/internal/spreadsheet/core/renderer/categorization/EMFFormsCategoryRendererService.java
+++ b/bundles/spreadsheet/org.eclipse.emfforms.spreadsheet.core.renderer.categorization/src/org/eclipse/emfforms/internal/spreadsheet/core/renderer/categorization/EMFFormsCategoryRendererService.java
@@ -47,6 +47,7 @@ public class EMFFormsCategoryRendererService implements EMFFormsSpreadsheetRende
}
private ServiceReference<EMFFormsSpreadsheetRendererFactory> serviceReference;
+ private BundleContext bundleContext;
/**
* The activate method.
@@ -55,10 +56,8 @@ public class EMFFormsCategoryRendererService implements EMFFormsSpreadsheetRende
*/
@Activate
public void activate(BundleContext bundleContext) {
- serviceReference = bundleContext
- .getServiceReference(EMFFormsSpreadsheetRendererFactory.class);
- emfformsSpreadsheetRendererFactory = bundleContext
- .getService(serviceReference);
+ this.bundleContext = bundleContext;
+
}
/**
@@ -68,7 +67,22 @@ public class EMFFormsCategoryRendererService implements EMFFormsSpreadsheetRende
*/
@Deactivate
public void deactivate(BundleContext bundleContext) {
- bundleContext.ungetService(serviceReference);
+ if (serviceReference != null) {
+ bundleContext.ungetService(serviceReference);
+ }
+ }
+
+ /**
+ * Gets and returns the {@link EMFFormsSpreadsheetRendererFactory}.
+ *
+ * @return The {@link EMFFormsSpreadsheetRendererFactory}
+ */
+ protected EMFFormsSpreadsheetRendererFactory getSpreadsheetRendererFactory() {
+ if (emfformsSpreadsheetRendererFactory == null) {
+ serviceReference = bundleContext.getServiceReference(EMFFormsSpreadsheetRendererFactory.class);
+ emfformsSpreadsheetRendererFactory = bundleContext.getService(serviceReference);
+ }
+ return emfformsSpreadsheetRendererFactory;
}
/**
@@ -92,7 +106,7 @@ public class EMFFormsCategoryRendererService implements EMFFormsSpreadsheetRende
@Override
public EMFFormsAbstractSpreadsheetRenderer<VCategory> getRendererInstance(VCategory vElement,
ViewModelContext viewModelContext) {
- return new EMFFormsCategoryRenderer(emfformsSpreadsheetRendererFactory, reportService);
+ return new EMFFormsCategoryRenderer(getSpreadsheetRendererFactory(), reportService);
}
}

Back to the top