|
![](https://seccdn.libravatar.org/avatar/7bb8cf8c4245e545b14b472fd8070fc4541740e44fabdc703213da897f9ad87f?s=16&d=retro) |
99a8905 |
From 18c3c498a8099dca74127abbc958d696b4397825 Mon Sep 17 00:00:00 2001
|
|
![](https://seccdn.libravatar.org/avatar/60f3bc9cb3cb070fcee9701bf8296fd6eafd560b3f73fabcf4595090f407cc31?s=16&d=retro) |
454dc8f |
From: Mat Booth <mat.booth@redhat.com>
|
|
![](https://seccdn.libravatar.org/avatar/60f3bc9cb3cb070fcee9701bf8296fd6eafd560b3f73fabcf4595090f407cc31?s=16&d=retro) |
454dc8f |
Date: Wed, 18 Sep 2019 16:00:51 +0100
|
|
![](https://seccdn.libravatar.org/avatar/60f3bc9cb3cb070fcee9701bf8296fd6eafd560b3f73fabcf4595090f407cc31?s=16&d=retro) |
63da64e |
Subject: [PATCH 1/2] Allow building against OSGi APIs newer than R4
|
|
![](https://seccdn.libravatar.org/avatar/60f3bc9cb3cb070fcee9701bf8296fd6eafd560b3f73fabcf4595090f407cc31?s=16&d=retro) |
454dc8f |
|
|
![](https://seccdn.libravatar.org/avatar/60f3bc9cb3cb070fcee9701bf8296fd6eafd560b3f73fabcf4595090f407cc31?s=16&d=retro) |
454dc8f |
---
|
|
![](https://seccdn.libravatar.org/avatar/7bb8cf8c4245e545b14b472fd8070fc4541740e44fabdc703213da897f9ad87f?s=16&d=retro) |
99a8905 |
.../ctc/wstx/osgi/WstxBundleActivator.java | 24 ++++++++++++++-----
|
|
![](https://seccdn.libravatar.org/avatar/7bb8cf8c4245e545b14b472fd8070fc4541740e44fabdc703213da897f9ad87f?s=16&d=retro) |
99a8905 |
1 file changed, 18 insertions(+), 6 deletions(-)
|
|
![](https://seccdn.libravatar.org/avatar/60f3bc9cb3cb070fcee9701bf8296fd6eafd560b3f73fabcf4595090f407cc31?s=16&d=retro) |
454dc8f |
|
|
![](https://seccdn.libravatar.org/avatar/60f3bc9cb3cb070fcee9701bf8296fd6eafd560b3f73fabcf4595090f407cc31?s=16&d=retro) |
454dc8f |
diff --git a/src/main/java/com/ctc/wstx/osgi/WstxBundleActivator.java b/src/main/java/com/ctc/wstx/osgi/WstxBundleActivator.java
|
|
![](https://seccdn.libravatar.org/avatar/7bb8cf8c4245e545b14b472fd8070fc4541740e44fabdc703213da897f9ad87f?s=16&d=retro) |
99a8905 |
index b233267..cedf476 100644
|
|
![](https://seccdn.libravatar.org/avatar/60f3bc9cb3cb070fcee9701bf8296fd6eafd560b3f73fabcf4595090f407cc31?s=16&d=retro) |
454dc8f |
--- a/src/main/java/com/ctc/wstx/osgi/WstxBundleActivator.java
|
|
![](https://seccdn.libravatar.org/avatar/60f3bc9cb3cb070fcee9701bf8296fd6eafd560b3f73fabcf4595090f407cc31?s=16&d=retro) |
454dc8f |
+++ b/src/main/java/com/ctc/wstx/osgi/WstxBundleActivator.java
|
|
![](https://seccdn.libravatar.org/avatar/7bb8cf8c4245e545b14b472fd8070fc4541740e44fabdc703213da897f9ad87f?s=16&d=retro) |
99a8905 |
@@ -1,6 +1,8 @@
|
|
![](https://seccdn.libravatar.org/avatar/60f3bc9cb3cb070fcee9701bf8296fd6eafd560b3f73fabcf4595090f407cc31?s=16&d=retro) |
454dc8f |
package com.ctc.wstx.osgi;
|
|
![](https://seccdn.libravatar.org/avatar/60f3bc9cb3cb070fcee9701bf8296fd6eafd560b3f73fabcf4595090f407cc31?s=16&d=retro) |
454dc8f |
|
|
![](https://seccdn.libravatar.org/avatar/7bb8cf8c4245e545b14b472fd8070fc4541740e44fabdc703213da897f9ad87f?s=16&d=retro) |
99a8905 |
import java.util.Dictionary;
|
|
![](https://seccdn.libravatar.org/avatar/60f3bc9cb3cb070fcee9701bf8296fd6eafd560b3f73fabcf4595090f407cc31?s=16&d=retro) |
454dc8f |
+import java.util.Hashtable;
|
|
![](https://seccdn.libravatar.org/avatar/60f3bc9cb3cb070fcee9701bf8296fd6eafd560b3f73fabcf4595090f407cc31?s=16&d=retro) |
454dc8f |
+import java.util.Properties;
|
|
![](https://seccdn.libravatar.org/avatar/7bb8cf8c4245e545b14b472fd8070fc4541740e44fabdc703213da897f9ad87f?s=16&d=retro) |
99a8905 |
|
|
![](https://seccdn.libravatar.org/avatar/60f3bc9cb3cb070fcee9701bf8296fd6eafd560b3f73fabcf4595090f407cc31?s=16&d=retro) |
454dc8f |
import org.osgi.framework.BundleActivator;
|
|
![](https://seccdn.libravatar.org/avatar/60f3bc9cb3cb070fcee9701bf8296fd6eafd560b3f73fabcf4595090f407cc31?s=16&d=retro) |
454dc8f |
import org.osgi.framework.BundleContext;
|
|
![](https://seccdn.libravatar.org/avatar/7bb8cf8c4245e545b14b472fd8070fc4541740e44fabdc703213da897f9ad87f?s=16&d=retro) |
99a8905 |
@@ -30,19 +32,29 @@ public class WstxBundleActivator
|
|
![](https://seccdn.libravatar.org/avatar/60f3bc9cb3cb070fcee9701bf8296fd6eafd560b3f73fabcf4595090f407cc31?s=16&d=retro) |
454dc8f |
public void start(BundleContext ctxt)
|
|
![](https://seccdn.libravatar.org/avatar/60f3bc9cb3cb070fcee9701bf8296fd6eafd560b3f73fabcf4595090f407cc31?s=16&d=retro) |
454dc8f |
{
|
|
![](https://seccdn.libravatar.org/avatar/60f3bc9cb3cb070fcee9701bf8296fd6eafd560b3f73fabcf4595090f407cc31?s=16&d=retro) |
454dc8f |
InputFactoryProviderImpl inputP = new InputFactoryProviderImpl();
|
|
![](https://seccdn.libravatar.org/avatar/7bb8cf8c4245e545b14b472fd8070fc4541740e44fabdc703213da897f9ad87f?s=16&d=retro) |
99a8905 |
- final Dictionary inputProps = inputP.getProperties();
|
|
![](https://seccdn.libravatar.org/avatar/7bb8cf8c4245e545b14b472fd8070fc4541740e44fabdc703213da897f9ad87f?s=16&d=retro) |
99a8905 |
- ctxt.registerService(Stax2InputFactoryProvider.class.getName(), inputP, inputProps);
|
|
![](https://seccdn.libravatar.org/avatar/60f3bc9cb3cb070fcee9701bf8296fd6eafd560b3f73fabcf4595090f407cc31?s=16&d=retro) |
454dc8f |
+ ctxt.registerService(Stax2InputFactoryProvider.class.getName(), inputP, convertPropsToDict(inputP.getProperties()));
|
|
![](https://seccdn.libravatar.org/avatar/60f3bc9cb3cb070fcee9701bf8296fd6eafd560b3f73fabcf4595090f407cc31?s=16&d=retro) |
454dc8f |
OutputFactoryProviderImpl outputP = new OutputFactoryProviderImpl();
|
|
![](https://seccdn.libravatar.org/avatar/7bb8cf8c4245e545b14b472fd8070fc4541740e44fabdc703213da897f9ad87f?s=16&d=retro) |
99a8905 |
- final Dictionary outputProps = outputP.getProperties();
|
|
![](https://seccdn.libravatar.org/avatar/7bb8cf8c4245e545b14b472fd8070fc4541740e44fabdc703213da897f9ad87f?s=16&d=retro) |
99a8905 |
- ctxt.registerService(Stax2OutputFactoryProvider.class.getName(), outputP, outputProps);
|
|
![](https://seccdn.libravatar.org/avatar/60f3bc9cb3cb070fcee9701bf8296fd6eafd560b3f73fabcf4595090f407cc31?s=16&d=retro) |
454dc8f |
+ ctxt.registerService(Stax2OutputFactoryProvider.class.getName(), outputP, convertPropsToDict(outputP.getProperties()));
|
|
![](https://seccdn.libravatar.org/avatar/60f3bc9cb3cb070fcee9701bf8296fd6eafd560b3f73fabcf4595090f407cc31?s=16&d=retro) |
454dc8f |
ValidationSchemaFactoryProviderImpl[] impls = ValidationSchemaFactoryProviderImpl.createAll();
|
|
![](https://seccdn.libravatar.org/avatar/60f3bc9cb3cb070fcee9701bf8296fd6eafd560b3f73fabcf4595090f407cc31?s=16&d=retro) |
454dc8f |
for (int i = 0, len = impls.length; i < len; ++i) {
|
|
![](https://seccdn.libravatar.org/avatar/60f3bc9cb3cb070fcee9701bf8296fd6eafd560b3f73fabcf4595090f407cc31?s=16&d=retro) |
454dc8f |
ValidationSchemaFactoryProviderImpl impl = impls[i];
|
|
![](https://seccdn.libravatar.org/avatar/7bb8cf8c4245e545b14b472fd8070fc4541740e44fabdc703213da897f9ad87f?s=16&d=retro) |
99a8905 |
- final Dictionary implProps = impl.getProperties();
|
|
![](https://seccdn.libravatar.org/avatar/7bb8cf8c4245e545b14b472fd8070fc4541740e44fabdc703213da897f9ad87f?s=16&d=retro) |
99a8905 |
- ctxt.registerService(Stax2ValidationSchemaFactoryProvider.class.getName(), impl, implProps);
|
|
![](https://seccdn.libravatar.org/avatar/60f3bc9cb3cb070fcee9701bf8296fd6eafd560b3f73fabcf4595090f407cc31?s=16&d=retro) |
454dc8f |
+ ctxt.registerService(Stax2ValidationSchemaFactoryProvider.class.getName(), impl, convertPropsToDict(impl.getProperties()));
|
|
![](https://seccdn.libravatar.org/avatar/60f3bc9cb3cb070fcee9701bf8296fd6eafd560b3f73fabcf4595090f407cc31?s=16&d=retro) |
454dc8f |
}
|
|
![](https://seccdn.libravatar.org/avatar/60f3bc9cb3cb070fcee9701bf8296fd6eafd560b3f73fabcf4595090f407cc31?s=16&d=retro) |
454dc8f |
}
|
|
![](https://seccdn.libravatar.org/avatar/60f3bc9cb3cb070fcee9701bf8296fd6eafd560b3f73fabcf4595090f407cc31?s=16&d=retro) |
454dc8f |
|
|
![](https://seccdn.libravatar.org/avatar/60f3bc9cb3cb070fcee9701bf8296fd6eafd560b3f73fabcf4595090f407cc31?s=16&d=retro) |
454dc8f |
+ /**
|
|
![](https://seccdn.libravatar.org/avatar/60f3bc9cb3cb070fcee9701bf8296fd6eafd560b3f73fabcf4595090f407cc31?s=16&d=retro) |
454dc8f |
+ * A Properties object is a Dictionary<Object,Object> but the OSGi API got
|
|
![](https://seccdn.libravatar.org/avatar/60f3bc9cb3cb070fcee9701bf8296fd6eafd560b3f73fabcf4595090f407cc31?s=16&d=retro) |
454dc8f |
+ * more restrictive and requires a Dictionary<String,Object>, so we must do
|
|
![](https://seccdn.libravatar.org/avatar/60f3bc9cb3cb070fcee9701bf8296fd6eafd560b3f73fabcf4595090f407cc31?s=16&d=retro) |
454dc8f |
+ * a quick conversion here.
|
|
![](https://seccdn.libravatar.org/avatar/60f3bc9cb3cb070fcee9701bf8296fd6eafd560b3f73fabcf4595090f407cc31?s=16&d=retro) |
454dc8f |
+ */
|
|
![](https://seccdn.libravatar.org/avatar/60f3bc9cb3cb070fcee9701bf8296fd6eafd560b3f73fabcf4595090f407cc31?s=16&d=retro) |
454dc8f |
+ private Dictionary<String,Object> convertPropsToDict(Properties props) {
|
|
![](https://seccdn.libravatar.org/avatar/60f3bc9cb3cb070fcee9701bf8296fd6eafd560b3f73fabcf4595090f407cc31?s=16&d=retro) |
454dc8f |
+ Dictionary<String,Object> dict = new Hashtable<String,Object>();
|
|
![](https://seccdn.libravatar.org/avatar/60f3bc9cb3cb070fcee9701bf8296fd6eafd560b3f73fabcf4595090f407cc31?s=16&d=retro) |
454dc8f |
+ for (Object key : props.keySet()) {
|
|
![](https://seccdn.libravatar.org/avatar/60f3bc9cb3cb070fcee9701bf8296fd6eafd560b3f73fabcf4595090f407cc31?s=16&d=retro) |
454dc8f |
+ dict.put(key.toString(), props.get(key));
|
|
![](https://seccdn.libravatar.org/avatar/60f3bc9cb3cb070fcee9701bf8296fd6eafd560b3f73fabcf4595090f407cc31?s=16&d=retro) |
454dc8f |
+ }
|
|
![](https://seccdn.libravatar.org/avatar/60f3bc9cb3cb070fcee9701bf8296fd6eafd560b3f73fabcf4595090f407cc31?s=16&d=retro) |
454dc8f |
+ return dict;
|
|
![](https://seccdn.libravatar.org/avatar/60f3bc9cb3cb070fcee9701bf8296fd6eafd560b3f73fabcf4595090f407cc31?s=16&d=retro) |
454dc8f |
+ }
|
|
![](https://seccdn.libravatar.org/avatar/60f3bc9cb3cb070fcee9701bf8296fd6eafd560b3f73fabcf4595090f407cc31?s=16&d=retro) |
454dc8f |
+
|
|
![](https://seccdn.libravatar.org/avatar/60f3bc9cb3cb070fcee9701bf8296fd6eafd560b3f73fabcf4595090f407cc31?s=16&d=retro) |
454dc8f |
@Override
|
|
![](https://seccdn.libravatar.org/avatar/60f3bc9cb3cb070fcee9701bf8296fd6eafd560b3f73fabcf4595090f407cc31?s=16&d=retro) |
454dc8f |
public void stop(BundleContext ctxt) {
|
|
![](https://seccdn.libravatar.org/avatar/60f3bc9cb3cb070fcee9701bf8296fd6eafd560b3f73fabcf4595090f407cc31?s=16&d=retro) |
454dc8f |
// Nothing to do here: OSGi automatically de-registers services upon
|
|
![](https://seccdn.libravatar.org/avatar/60f3bc9cb3cb070fcee9701bf8296fd6eafd560b3f73fabcf4595090f407cc31?s=16&d=retro) |
454dc8f |
--
|
|
![](https://seccdn.libravatar.org/avatar/7bb8cf8c4245e545b14b472fd8070fc4541740e44fabdc703213da897f9ad87f?s=16&d=retro) |
99a8905 |
2.28.0
|
|
![](https://seccdn.libravatar.org/avatar/60f3bc9cb3cb070fcee9701bf8296fd6eafd560b3f73fabcf4595090f407cc31?s=16&d=retro) |
454dc8f |
|