diff --git a/core/worker/pom.xml b/core/worker/pom.xml
index 30df9e274..1e8ab16ad 100644
--- a/core/worker/pom.xml
+++ b/core/worker/pom.xml
@@ -72,16 +72,20 @@
org.osgi.core
- org.apache.sling
- org.apache.sling.commons.osgi
+ org.osgi
+ org.osgi.service.component.annotations
- javax.validation
- validation-api
+ org.osgi
+ org.osgi.annotation
- org.apache.felix
- org.apache.felix.scr.annotations
+ org.osgi
+ org.osgi.service.metatype.annotations
+
+
+ javax.validation
+ validation-api
org.apache.httpcomponents
@@ -146,6 +150,18 @@
+
+
+
+ org.apache.felix
+ maven-scr-plugin
+
+
+ generate-scr-descriptor
+ none
+
+
+
org.apache.maven.plugins
diff --git a/core/worker/src/main/java/com/cognifide/aet/worker/drivers/HttpRequestExecutorFactoryImpl.java b/core/worker/src/main/java/com/cognifide/aet/worker/drivers/HttpRequestExecutorFactoryImpl.java
index 21e3c6898..5abb16860 100644
--- a/core/worker/src/main/java/com/cognifide/aet/worker/drivers/HttpRequestExecutorFactoryImpl.java
+++ b/core/worker/src/main/java/com/cognifide/aet/worker/drivers/HttpRequestExecutorFactoryImpl.java
@@ -17,10 +17,8 @@
import com.cognifide.aet.job.api.collector.HttpRequestExecutor;
import com.cognifide.aet.job.api.collector.HttpRequestExecutorFactory;
-import org.apache.felix.scr.annotations.Component;
-import org.apache.felix.scr.annotations.Service;
+import org.osgi.service.component.annotations.Component;
-@Service
@Component
public class HttpRequestExecutorFactoryImpl implements HttpRequestExecutorFactory {
diff --git a/core/worker/src/main/java/com/cognifide/aet/worker/drivers/WebDriverHelper.java b/core/worker/src/main/java/com/cognifide/aet/worker/drivers/WebDriverHelper.java
index 57090d243..460dd0362 100644
--- a/core/worker/src/main/java/com/cognifide/aet/worker/drivers/WebDriverHelper.java
+++ b/core/worker/src/main/java/com/cognifide/aet/worker/drivers/WebDriverHelper.java
@@ -18,8 +18,6 @@
import com.cognifide.aet.job.api.collector.ProxyServerWrapper;
import com.cognifide.aet.worker.exceptions.WorkerException;
import java.net.UnknownHostException;
-import java.util.Map;
-import org.apache.sling.commons.osgi.PropertiesUtil;
import org.openqa.selenium.Proxy;
/**
@@ -27,32 +25,14 @@
*/
public final class WebDriverHelper {
- public static final String NAME = "name";
-
public static final String NAME_LABEL = "Name";
public static final String NAME_DESC = "Driver name that will be used by other services like Screenshot Collectors";
- public static final String PATH = "path";
-
- public static final String PATH_LABEL = "Path";
-
- public static final String PATH_DESC = "Custom path to driver binary";
-
- public static final String SELENIUM_GRID_URL = "seleniumGridUrl";
-
- public static final String SELENIUM_GRID_URL_LABEL = "Selenium grid URL";
-
- public static final String DEFAULT_SELENIUM_GRID_URL = "http://localhost:4444/wd/hub";
-
private WebDriverHelper() {
// restrict instantiation
}
- public static String getProp(Map properties, String name, String defaultValue) {
- return PropertiesUtil.toString(properties.get(name), defaultValue);
- }
-
public static Proxy setupProxy(ProxyServerWrapper proxyServer) throws WorkerException {
proxyServer.setCaptureContent(true);
proxyServer.setCaptureHeaders(true);
diff --git a/core/worker/src/main/java/com/cognifide/aet/worker/drivers/WebDriverProvider.java b/core/worker/src/main/java/com/cognifide/aet/worker/drivers/WebDriverProvider.java
index 940d16ef4..a54a905c8 100644
--- a/core/worker/src/main/java/com/cognifide/aet/worker/drivers/WebDriverProvider.java
+++ b/core/worker/src/main/java/com/cognifide/aet/worker/drivers/WebDriverProvider.java
@@ -23,42 +23,46 @@
import com.google.common.base.Joiner;
import com.google.common.collect.Maps;
import java.util.Map;
-import org.apache.felix.scr.annotations.Activate;
-import org.apache.felix.scr.annotations.Component;
-import org.apache.felix.scr.annotations.Properties;
-import org.apache.felix.scr.annotations.Property;
-import org.apache.felix.scr.annotations.Reference;
-import org.apache.felix.scr.annotations.ReferenceCardinality;
-import org.apache.felix.scr.annotations.ReferencePolicy;
-import org.apache.felix.scr.annotations.Service;
+
import org.osgi.framework.Constants;
+import org.osgi.service.component.annotations.Activate;
+import org.osgi.service.component.annotations.Component;
+import org.osgi.service.component.annotations.Reference;
+import org.osgi.service.component.annotations.ReferenceCardinality;
+import org.osgi.service.component.annotations.ReferencePolicy;
+import org.osgi.service.metatype.annotations.Designate;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
/**
* @author lukasz.wieczorek
*/
-@Service(WebDriverProvider.class)
-@Component(label = "AET WebDriver Provider", description = "AET WebDriver Provider", immediate = true, metatype = true)
-@Properties({@Property(name = Constants.SERVICE_VENDOR, value = "Cognifide Ltd")})
+@Component(
+ service = WebDriverProvider.class,
+ property = {"name = " + Constants.SERVICE_VENDOR, "value = Cognifide Ltd"},
+ immediate = true
+)
+@Designate(ocd = WebDriverProviderConfig.class)
public class WebDriverProvider {
private static final Logger LOG = LoggerFactory.getLogger(WebDriverProvider.class);
- private static final String DEFAULT_WEB_DRIVER_NAME = "defaultWebDriverName";
-
- @Property(name = DEFAULT_WEB_DRIVER_NAME, label = "Default Web Driver name", value = "ff")
- private String defaultWebDriverName;
+ private WebDriverProviderConfig config;
- @Reference(referenceInterface = WebDriverFactory.class, policy = ReferencePolicy.DYNAMIC, cardinality = ReferenceCardinality.OPTIONAL_MULTIPLE, bind = "bindWebDriverFactory", unbind = "unbindWebDriverFactory")
+ @Reference(
+ service = WebDriverFactory.class,
+ policy = ReferencePolicy.DYNAMIC,
+ cardinality = ReferenceCardinality.MULTIPLE,
+ bind = "bindWebDriverFactory",
+ unbind = "unbindWebDriverFactory")
private final Map collectorFactories = Maps.newConcurrentMap();
@Reference
private ProxyServerProvider proxyServerProvider;
@Activate
- void activate(Map properties) {
- defaultWebDriverName = properties.get(DEFAULT_WEB_DRIVER_NAME);
+ void activate(WebDriverProviderConfig config) {
+ this.config = config;
}
public WebCommunicationWrapper createWebDriverWithProxy(String preferredWebDriver, String proxyName)
@@ -94,7 +98,8 @@ protected void unbindWebDriverFactory(WebDriverFactory webDriverFactory) {
*/
private WebDriverFactory findWebDriverFactory(String preferredWebDriver) throws WorkerException {
final WebDriverFactory webDriverFactory;
- String id = preferredWebDriver == null ? defaultWebDriverName : preferredWebDriver;
+ String id = preferredWebDriver == null ?
+ config.defaultWebDriverName() : preferredWebDriver;
webDriverFactory = collectorFactories.get(id);
if (webDriverFactory == null) {
String webDrivers = Joiner.on(", ").join(collectorFactories.keySet());
diff --git a/core/worker/src/main/java/com/cognifide/aet/worker/drivers/WebDriverProviderConfig.java b/core/worker/src/main/java/com/cognifide/aet/worker/drivers/WebDriverProviderConfig.java
new file mode 100644
index 000000000..481586b94
--- /dev/null
+++ b/core/worker/src/main/java/com/cognifide/aet/worker/drivers/WebDriverProviderConfig.java
@@ -0,0 +1,28 @@
+/**
+ * AET
+ *
+ * Copyright (C) 2013 Cognifide Limited
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except
+ * in compliance with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software distributed under the License
+ * is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express
+ * or implied. See the License for the specific language governing permissions and limitations under
+ * the License.
+ */
+package com.cognifide.aet.worker.drivers;
+
+import org.osgi.service.metatype.annotations.AttributeDefinition;
+import org.osgi.service.metatype.annotations.ObjectClassDefinition;
+
+@ObjectClassDefinition(name = "AET WebDriver Provider", description = "AET WebDriver Provider")
+public @interface WebDriverProviderConfig {
+
+ String DEFAULT_WEB_DRIVER_NAME_LABEL = "Default Web Driver name";
+
+ @AttributeDefinition(name = DEFAULT_WEB_DRIVER_NAME_LABEL, defaultValue = "ff")
+ String defaultWebDriverName();
+}
diff --git a/core/worker/src/main/java/com/cognifide/aet/worker/drivers/chrome/ChromeWebDriverFactory.java b/core/worker/src/main/java/com/cognifide/aet/worker/drivers/chrome/ChromeWebDriverFactory.java
index aa405a2bd..81706806c 100644
--- a/core/worker/src/main/java/com/cognifide/aet/worker/drivers/chrome/ChromeWebDriverFactory.java
+++ b/core/worker/src/main/java/com/cognifide/aet/worker/drivers/chrome/ChromeWebDriverFactory.java
@@ -15,13 +15,6 @@
*/
package com.cognifide.aet.worker.drivers.chrome;
-import static com.cognifide.aet.worker.drivers.WebDriverHelper.DEFAULT_SELENIUM_GRID_URL;
-import static com.cognifide.aet.worker.drivers.WebDriverHelper.NAME;
-import static com.cognifide.aet.worker.drivers.WebDriverHelper.NAME_DESC;
-import static com.cognifide.aet.worker.drivers.WebDriverHelper.NAME_LABEL;
-import static com.cognifide.aet.worker.drivers.WebDriverHelper.SELENIUM_GRID_URL;
-import static com.cognifide.aet.worker.drivers.WebDriverHelper.SELENIUM_GRID_URL_LABEL;
-import static com.cognifide.aet.worker.drivers.WebDriverHelper.getProp;
import static com.cognifide.aet.worker.drivers.WebDriverHelper.setupProxy;
import com.cognifide.aet.job.api.collector.HttpRequestExecutorFactory;
@@ -31,17 +24,9 @@
import com.cognifide.aet.worker.exceptions.WorkerException;
import java.net.MalformedURLException;
import java.net.URL;
-import java.util.Map;
import java.util.concurrent.TimeUnit;
import java.util.logging.Level;
import org.apache.commons.lang3.StringUtils;
-import org.apache.felix.scr.annotations.Activate;
-import org.apache.felix.scr.annotations.Component;
-import org.apache.felix.scr.annotations.ConfigurationPolicy;
-import org.apache.felix.scr.annotations.Properties;
-import org.apache.felix.scr.annotations.Property;
-import org.apache.felix.scr.annotations.Reference;
-import org.apache.felix.scr.annotations.Service;
import org.openqa.selenium.Proxy;
import org.openqa.selenium.WebDriver;
import org.openqa.selenium.chrome.ChromeDriver;
@@ -52,37 +37,28 @@
import org.openqa.selenium.remote.DesiredCapabilities;
import org.openqa.selenium.remote.RemoteWebDriver;
import org.osgi.framework.Constants;
+import org.osgi.service.component.annotations.Activate;
+import org.osgi.service.component.annotations.Component;
+import org.osgi.service.component.annotations.ConfigurationPolicy;
+import org.osgi.service.component.annotations.Reference;
+import org.osgi.service.metatype.annotations.Designate;
+
-@Service
@Component(
- policy = ConfigurationPolicy.REQUIRE,
- description = "AET Chrome WebDriver Factory",
- label = "AET Chrome WebDriver Factory",
- metatype = true)
-@Properties({@Property(name = Constants.SERVICE_VENDOR, value = "Cognifide Ltd")})
+ configurationPolicy = ConfigurationPolicy.REQUIRE,
+ property = {"name = " + Constants.SERVICE_VENDOR, "value = Cognifide Ltd"}
+)
+@Designate(ocd = ChromeWebDriverFactoryConfig.class)
public class ChromeWebDriverFactory implements WebDriverFactory {
- private static final String DEFAULT_BROWSER_NAME = "chrome";
-
@Reference
private HttpRequestExecutorFactory requestExecutorFactory;
- @Property(name = NAME,
- label = NAME_LABEL,
- description = NAME_DESC,
- value = DEFAULT_BROWSER_NAME)
- private String name;
-
- @Property(name = SELENIUM_GRID_URL,
- label = SELENIUM_GRID_URL_LABEL,
- description = "Url to selenium grid hub. When null local Chrome driver will be used. Local Chrome driver does not work on Linux",
- value = DEFAULT_SELENIUM_GRID_URL)
- private String seleniumGridUrl;
+ private ChromeWebDriverFactoryConfig config;
@Activate
- public void activate(Map properties) {
- this.name = getProp(properties, NAME, DEFAULT_BROWSER_NAME);
- this.seleniumGridUrl = getProp(properties, SELENIUM_GRID_URL, DEFAULT_SELENIUM_GRID_URL);
+ public void activate(ChromeWebDriverFactoryConfig config) {
+ this.config = config;
}
@Override
@@ -104,7 +80,7 @@ public WebCommunicationWrapper createWebDriver(ProxyServerWrapper proxyServer)
@Override
public String getName() {
- return name;
+ return config.name();
}
private WebCommunicationWrapper createWebDriver(DesiredCapabilities capabilities,
@@ -120,8 +96,10 @@ private WebCommunicationWrapper createWebDriver(DesiredCapabilities capabilities
private WebDriver getChromeDriver(DesiredCapabilities capabilities)
throws MalformedURLException {
- WebDriver driver = StringUtils.isNotBlank(seleniumGridUrl) ? new RemoteWebDriver(
- new URL(seleniumGridUrl), capabilities) : new ChromeDriver(capabilities);
+ WebDriver driver =
+ StringUtils.isNotBlank(config.seleniumGridUrl()) ?
+ new RemoteWebDriver(new URL(config.seleniumGridUrl()), capabilities)
+ : new ChromeDriver(capabilities);
driver.manage().timeouts().pageLoadTimeout(5L, TimeUnit.MINUTES);
return driver;
}
diff --git a/core/worker/src/main/java/com/cognifide/aet/worker/drivers/chrome/ChromeWebDriverFactoryConfig.java b/core/worker/src/main/java/com/cognifide/aet/worker/drivers/chrome/ChromeWebDriverFactoryConfig.java
new file mode 100644
index 000000000..559ca4ce2
--- /dev/null
+++ b/core/worker/src/main/java/com/cognifide/aet/worker/drivers/chrome/ChromeWebDriverFactoryConfig.java
@@ -0,0 +1,44 @@
+/**
+ * AET
+ *
+ * Copyright (C) 2013 Cognifide Limited
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except
+ * in compliance with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software distributed under the License
+ * is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express
+ * or implied. See the License for the specific language governing permissions and limitations under
+ * the License.
+ */
+package com.cognifide.aet.worker.drivers.chrome;
+
+import org.osgi.service.metatype.annotations.AttributeDefinition;
+import org.osgi.service.metatype.annotations.ObjectClassDefinition;
+
+import static com.cognifide.aet.worker.drivers.WebDriverHelper.NAME_LABEL;
+import static com.cognifide.aet.worker.drivers.WebDriverHelper.NAME_DESC;
+
+@ObjectClassDefinition(name = "AET Chrome WebDriver Factory", description = "AET Chrome WebDriver Factory")
+public @interface ChromeWebDriverFactoryConfig {
+
+ String DEFAULT_BROWSER_NAME = "chrome";
+
+ String SELENIUM_GRID_URL_LABEL = "Selenium grid URL";
+ String SELENIUM_GRID_URL_DESC = "Url to selenium grid hub. When null local Chrome driver will be used. Local Chrome driver does not work on Linux";
+ String DEFAULT_SELENIUM_GRID_URL = "http://localhost:4444/wd/hub";
+
+ @AttributeDefinition(
+ name = NAME_LABEL,
+ description = NAME_DESC,
+ defaultValue = DEFAULT_BROWSER_NAME)
+ String name();
+
+ @AttributeDefinition(
+ name = ChromeWebDriverFactoryConfig.SELENIUM_GRID_URL_LABEL,
+ description = ChromeWebDriverFactoryConfig.SELENIUM_GRID_URL_DESC,
+ defaultValue = ChromeWebDriverFactoryConfig.DEFAULT_SELENIUM_GRID_URL)
+ String seleniumGridUrl();
+}
diff --git a/core/worker/src/main/java/com/cognifide/aet/worker/drivers/firefox/local/FirefoxWebDriverFactory.java b/core/worker/src/main/java/com/cognifide/aet/worker/drivers/firefox/local/FirefoxWebDriverFactory.java
index 08f7c6497..50922e864 100644
--- a/core/worker/src/main/java/com/cognifide/aet/worker/drivers/firefox/local/FirefoxWebDriverFactory.java
+++ b/core/worker/src/main/java/com/cognifide/aet/worker/drivers/firefox/local/FirefoxWebDriverFactory.java
@@ -15,10 +15,6 @@
*/
package com.cognifide.aet.worker.drivers.firefox.local;
-import static com.cognifide.aet.worker.drivers.WebDriverHelper.NAME;
-import static com.cognifide.aet.worker.drivers.WebDriverHelper.NAME_LABEL;
-import static com.cognifide.aet.worker.drivers.WebDriverHelper.PATH;
-
import com.cognifide.aet.worker.drivers.firefox.FirefoxCommunicationWrapperImpl;
import com.cognifide.aet.worker.drivers.firefox.FirefoxProfileBuilder;
import com.cognifide.aet.job.api.collector.HttpRequestExecutorFactory;
@@ -26,17 +22,10 @@
import com.cognifide.aet.job.api.collector.WebCommunicationWrapper;
import com.cognifide.aet.worker.api.WebDriverFactory;
import com.cognifide.aet.worker.exceptions.WorkerException;
+
import java.io.File;
-import java.util.Map;
import java.util.concurrent.TimeUnit;
-import org.apache.felix.scr.annotations.Activate;
-import org.apache.felix.scr.annotations.Component;
-import org.apache.felix.scr.annotations.ConfigurationPolicy;
-import org.apache.felix.scr.annotations.Properties;
-import org.apache.felix.scr.annotations.Property;
-import org.apache.felix.scr.annotations.Reference;
-import org.apache.felix.scr.annotations.Service;
-import org.apache.sling.commons.osgi.PropertiesUtil;
+
import org.openqa.selenium.Proxy;
import org.openqa.selenium.WebDriver;
import org.openqa.selenium.firefox.FirefoxDriver;
@@ -44,38 +33,26 @@
import org.openqa.selenium.remote.CapabilityType;
import org.openqa.selenium.remote.DesiredCapabilities;
import org.osgi.framework.Constants;
+import org.osgi.service.component.annotations.Activate;
+import org.osgi.service.component.annotations.Component;
+import org.osgi.service.component.annotations.Reference;
+import org.osgi.service.metatype.annotations.Designate;
+
-@Service
@Component(
- description = "AET Firefox WebDriver Factory",
- label = "AET Firefox WebDriver Factory",
- metatype = true)
-@Properties({@Property(name = Constants.SERVICE_VENDOR, value = "Cognifide Ltd")})
+ property = {"name = " + Constants.SERVICE_VENDOR, "value = Cognifide Ltd"}
+)
+@Designate(ocd = FirefoxWebDriverFactoryConfig.class)
public class FirefoxWebDriverFactory implements WebDriverFactory {
- private static final String DEFAULT_FIREFOX_BINARY_PATH = "/usr/bin/firefox";
-
- private static final String DEFAULT_FIREFOX_ERROR_LOG_FILE_PATH = "/opt/aet/firefox/log/stderr.log";
-
- private static final String LOG_FILE_PATH = "logFilePath";
-
- private static final String DEFAULT_FF_NAME = "ff";
-
@Reference
private HttpRequestExecutorFactory requestExecutorFactory;
- @Property(name = NAME, label = NAME_LABEL, value = DEFAULT_FF_NAME)
- private String name;
-
- @Property(name = PATH, label = "Custom path to Firefox binary", value = DEFAULT_FIREFOX_BINARY_PATH)
- private String path;
-
- @Property(name = LOG_FILE_PATH, label = "Path to firefox error log", value = DEFAULT_FIREFOX_ERROR_LOG_FILE_PATH)
- private String logFilePath;
+ private FirefoxWebDriverFactoryConfig config;
@Override
public String getName() {
- return name;
+ return config.name();
}
@Override
@@ -122,7 +99,7 @@ public WebCommunicationWrapper createWebDriver() throws WorkerException {
private FirefoxProfile getFirefoxProfile() {
final FirefoxProfile firefoxProfile = FirefoxProfileBuilder.newInstance()
.withUnstableAndFastLoadStrategy()
- .withLogfilePath(logFilePath)
+ .withLogfilePath(config.logFilePath())
.withFlashSwitchedOff()
.withForcedAliasing()
.withJavaScriptErrorCollectorPlugin()
@@ -131,7 +108,7 @@ private FirefoxProfile getFirefoxProfile() {
.withRandomPort()
.withUpdateDisabled()
.build();
- System.setProperty("webdriver.firefox.logfile", logFilePath);
+ System.setProperty("webdriver.firefox.logfile", config.logFilePath());
System.setProperty("webdriver.load.strategy", "unstable");
return firefoxProfile;
}
@@ -139,7 +116,7 @@ private FirefoxProfile getFirefoxProfile() {
private void setCommonCapabilities(DesiredCapabilities capabilities, FirefoxProfile fp) {
capabilities.setCapability(FirefoxDriver.PROFILE, fp);
capabilities.setCapability("marionette", false);
- capabilities.setCapability("firefox_binary", new File(path).getAbsolutePath());
+ capabilities.setCapability("firefox_binary", new File(config.path()).getAbsolutePath());
}
private WebDriver getFirefoxDriver(DesiredCapabilities capabilities) {
@@ -149,11 +126,8 @@ private WebDriver getFirefoxDriver(DesiredCapabilities capabilities) {
}
@Activate
- public void activate(Map properties) {
- this.name = PropertiesUtil.toString(properties.get(NAME), DEFAULT_FF_NAME);
- this.path = PropertiesUtil.toString(properties.get(PATH), DEFAULT_FIREFOX_BINARY_PATH);
- this.logFilePath = PropertiesUtil
- .toString(properties.get(LOG_FILE_PATH), DEFAULT_FIREFOX_ERROR_LOG_FILE_PATH);
+ public void activate(FirefoxWebDriverFactoryConfig config) {
+ this.config = config;
}
}
diff --git a/core/worker/src/main/java/com/cognifide/aet/worker/drivers/firefox/local/FirefoxWebDriverFactoryConfig.java b/core/worker/src/main/java/com/cognifide/aet/worker/drivers/firefox/local/FirefoxWebDriverFactoryConfig.java
new file mode 100644
index 000000000..efab3427f
--- /dev/null
+++ b/core/worker/src/main/java/com/cognifide/aet/worker/drivers/firefox/local/FirefoxWebDriverFactoryConfig.java
@@ -0,0 +1,42 @@
+/**
+ * AET
+ *
+ * Copyright (C) 2013 Cognifide Limited
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except
+ * in compliance with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software distributed under the License
+ * is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express
+ * or implied. See the License for the specific language governing permissions and limitations under
+ * the License.
+ */
+package com.cognifide.aet.worker.drivers.firefox.local;
+
+import org.osgi.service.metatype.annotations.AttributeDefinition;
+import org.osgi.service.metatype.annotations.ObjectClassDefinition;
+
+import static com.cognifide.aet.worker.drivers.WebDriverHelper.NAME_LABEL;
+
+@ObjectClassDefinition(name = "AET Firefox WebDriver Factory", description = "AET Firefox WebDriver Factory")
+public @interface FirefoxWebDriverFactoryConfig {
+
+ String PATH_LABEL = "Custom path to Firefox binary";
+ String DEFAULT_FF_NAME = "ff";
+
+ String DEFAULT_FIREFOX_BINARY_PATH = "/usr/bin/firefox";
+
+ String LOG_FILE_PATH_LABEL = "Path to firefox error log";
+ String DEFAULT_FIREFOX_ERROR_LOG_FILE_PATH = "/opt/aet/firefox/log/stderr.log";
+
+ @AttributeDefinition(name = NAME_LABEL, defaultValue = DEFAULT_FF_NAME)
+ String name();
+
+ @AttributeDefinition(name = PATH_LABEL, defaultValue = DEFAULT_FIREFOX_BINARY_PATH)
+ String path();
+
+ @AttributeDefinition(name = LOG_FILE_PATH_LABEL, defaultValue = DEFAULT_FIREFOX_ERROR_LOG_FILE_PATH)
+ String logFilePath();
+}
diff --git a/core/worker/src/main/java/com/cognifide/aet/worker/impl/CollectorDispatcherImpl.java b/core/worker/src/main/java/com/cognifide/aet/worker/impl/CollectorDispatcherImpl.java
index 1bad32015..538cf2fb9 100644
--- a/core/worker/src/main/java/com/cognifide/aet/worker/impl/CollectorDispatcherImpl.java
+++ b/core/worker/src/main/java/com/cognifide/aet/worker/impl/CollectorDispatcherImpl.java
@@ -29,14 +29,12 @@
import com.cognifide.aet.worker.api.JobRegistry;
import org.apache.commons.lang3.StringUtils;
import org.apache.commons.lang3.exception.ExceptionUtils;
-import org.apache.felix.scr.annotations.Component;
-import org.apache.felix.scr.annotations.Reference;
-import org.apache.felix.scr.annotations.Service;
+import org.osgi.service.component.annotations.Component;
+import org.osgi.service.component.annotations.Reference;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
-@Service
-@Component(immediate = true, label = "AET Collector Dispatcher", description = "Collector Dispatcher")
+@Component(immediate = true, name = "AET Collector Dispatcher")
public class CollectorDispatcherImpl implements CollectorDispatcher {
private static final Logger LOGGER = LoggerFactory.getLogger(CollectorDispatcherImpl.class);
diff --git a/core/worker/src/main/java/com/cognifide/aet/worker/impl/ComparatorDispatcherImpl.java b/core/worker/src/main/java/com/cognifide/aet/worker/impl/ComparatorDispatcherImpl.java
index a6b5b4891..2b50b7198 100644
--- a/core/worker/src/main/java/com/cognifide/aet/worker/impl/ComparatorDispatcherImpl.java
+++ b/core/worker/src/main/java/com/cognifide/aet/worker/impl/ComparatorDispatcherImpl.java
@@ -35,14 +35,12 @@
import javax.annotation.Nullable;
import org.apache.commons.lang3.StringUtils;
import org.apache.commons.lang3.exception.ExceptionUtils;
-import org.apache.felix.scr.annotations.Component;
-import org.apache.felix.scr.annotations.Reference;
-import org.apache.felix.scr.annotations.Service;
+import org.osgi.service.component.annotations.Component;
+import org.osgi.service.component.annotations.Reference;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
-@Service
-@Component(label = "AET Comparator Dispatcher", description = "Comparator Dispatcher", immediate = true)
+@Component(name = "AET Comparator Dispatcher", immediate = true)
public class ComparatorDispatcherImpl implements ComparatorDispatcher {
private static final Logger LOGGER = LoggerFactory.getLogger(ComparatorDispatcherImpl.class);
diff --git a/core/worker/src/main/java/com/cognifide/aet/worker/impl/JobRegistryImpl.java b/core/worker/src/main/java/com/cognifide/aet/worker/impl/JobRegistryImpl.java
index 5afe4eba6..58d1a04a9 100644
--- a/core/worker/src/main/java/com/cognifide/aet/worker/impl/JobRegistryImpl.java
+++ b/core/worker/src/main/java/com/cognifide/aet/worker/impl/JobRegistryImpl.java
@@ -21,31 +21,45 @@
import com.cognifide.aet.worker.api.JobRegistry;
import java.util.Map;
import java.util.concurrent.ConcurrentHashMap;
-import org.apache.felix.scr.annotations.Component;
-import org.apache.felix.scr.annotations.Properties;
-import org.apache.felix.scr.annotations.Property;
-import org.apache.felix.scr.annotations.Reference;
-import org.apache.felix.scr.annotations.ReferenceCardinality;
-import org.apache.felix.scr.annotations.ReferencePolicy;
-import org.apache.felix.scr.annotations.Service;
import org.osgi.framework.Constants;
+import org.osgi.service.component.annotations.Component;
+import org.osgi.service.component.annotations.Reference;
+import org.osgi.service.component.annotations.ReferenceCardinality;
+import org.osgi.service.component.annotations.ReferencePolicy;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
-@Service
-@Component(immediate = true, description = "AET JMS Registry", label = "AET Job Registry Implementation")
-@Properties({@Property(name = Constants.SERVICE_VENDOR, value = "Cognifide Ltd")})
+@Component(
+ immediate = true,
+ name = "AET Job Registry Implementation",
+ property = {"name = " + Constants.SERVICE_VENDOR, "value = Cognifide Ltd"}
+)
public class JobRegistryImpl implements JobRegistry {
private static final Logger LOGGER = LoggerFactory.getLogger(JobRegistryImpl.class);
- @Reference(referenceInterface = CollectorFactory.class, policy = ReferencePolicy.DYNAMIC, cardinality = ReferenceCardinality.OPTIONAL_MULTIPLE, bind = "bindCollectorFactory", unbind = "unbindCollectorFactory")
+ @Reference(
+ service = CollectorFactory.class,
+ policy = ReferencePolicy.DYNAMIC,
+ cardinality = ReferenceCardinality.MULTIPLE,
+ bind = "bindCollectorFactory",
+ unbind = "unbindCollectorFactory")
private Map collectorFactories = new ConcurrentHashMap<>();
- @Reference(referenceInterface = ComparatorFactory.class, policy = ReferencePolicy.DYNAMIC, cardinality = ReferenceCardinality.OPTIONAL_MULTIPLE, bind = "bindComparatorFactory", unbind = "unbindComparatorFactory")
+ @Reference(
+ service = ComparatorFactory.class,
+ policy = ReferencePolicy.DYNAMIC,
+ cardinality = ReferenceCardinality.MULTIPLE,
+ bind = "bindComparatorFactory",
+ unbind = "unbindComparatorFactory")
private Map comparatorFactoryMap = new ConcurrentHashMap<>();
- @Reference(referenceInterface = DataFilterFactory.class, policy = ReferencePolicy.DYNAMIC, cardinality = ReferenceCardinality.OPTIONAL_MULTIPLE, bind = "bindDataModifierFactory", unbind = "unbindDataModifierFactory")
+ @Reference(
+ service = DataFilterFactory.class,
+ policy = ReferencePolicy.DYNAMIC,
+ cardinality = ReferenceCardinality.MULTIPLE,
+ bind = "bindDataModifierFactory",
+ unbind = "unbindDataModifierFactory")
private Map dataModifierFactoryMap = new ConcurrentHashMap<>();
private Map defaultComparatorMap = new ConcurrentHashMap<>();
diff --git a/core/worker/src/main/java/com/cognifide/aet/worker/listeners/AbstractTaskMessageListener.java b/core/worker/src/main/java/com/cognifide/aet/worker/listeners/AbstractTaskMessageListener.java
index 91c9346ca..5b3892a68 100644
--- a/core/worker/src/main/java/com/cognifide/aet/worker/listeners/AbstractTaskMessageListener.java
+++ b/core/worker/src/main/java/com/cognifide/aet/worker/listeners/AbstractTaskMessageListener.java
@@ -18,45 +18,20 @@
import com.cognifide.aet.communication.api.queues.JmsConnection;
import com.cognifide.aet.queues.JmsUtils;
import com.cognifide.aet.worker.results.FeedbackQueue;
-import java.util.Map;
import javax.jms.JMSException;
import javax.jms.MessageConsumer;
import javax.jms.MessageListener;
import javax.jms.Session;
-import org.apache.commons.lang3.StringUtils;
-import org.apache.felix.scr.annotations.Component;
-import org.apache.felix.scr.annotations.Property;
-@Component
public abstract class AbstractTaskMessageListener implements MessageListener {
- protected static final String LISTENER_NAME = "name";
+ private Session jmsSession;
- protected static final String CONSUMER_QUEUE_NAME = "consumerQueueName";
+ private MessageConsumer consumer;
- protected static final String PRODUCER_QUEUE_NAME = "producerQueueName";
+ FeedbackQueue feedbackQueue;
- protected static final String PREFETCH_SIZE_NAME = "pf";
-
- protected static final String PREFETCH_SIZE_DEFAULT_VALUE = "1";
-
- protected Session jmsSession;
-
- protected MessageConsumer consumer;
-
- protected FeedbackQueue feedbackQueue;
-
- @Property(name = PREFETCH_SIZE_NAME, label = "Prefetch size", description = "http://activemq.apache.org/what-is-the-prefetch-limit-for.html", value = PREFETCH_SIZE_DEFAULT_VALUE)
- private String prefetchSize;
-
- protected void doActivate(Map properties) {
- setName(properties.get(LISTENER_NAME));
- this.prefetchSize = StringUtils.defaultString(properties.get(PREFETCH_SIZE_NAME),
- PREFETCH_SIZE_DEFAULT_VALUE);
- String consumerQueueName = properties.get(CONSUMER_QUEUE_NAME);
- setConsumerQueueName(consumerQueueName);
- String producerQueueName = properties.get(PRODUCER_QUEUE_NAME);
- setProducerQueueName(producerQueueName);
+ void doActivate(String consumerQueueName, String producerQueueName, String prefetchSize) {
String queueName = consumerQueueName + "?consumer.prefetchSize=" + prefetchSize;
try {
@@ -69,7 +44,7 @@ protected void doActivate(Map properties) {
}
}
- protected void doDeactivate() {
+ void doDeactivate() {
if (feedbackQueue != null) {
feedbackQueue.close();
}
@@ -77,12 +52,6 @@ protected void doDeactivate() {
JmsUtils.closeQuietly(jmsSession);
}
- protected abstract void setName(String name);
-
- protected abstract void setConsumerQueueName(String consumerQueueName);
-
- protected abstract void setProducerQueueName(String producerQueueName);
-
protected abstract JmsConnection getJmsConnection();
}
diff --git a/core/worker/src/main/java/com/cognifide/aet/worker/listeners/CollectorMessageListenerImpl.java b/core/worker/src/main/java/com/cognifide/aet/worker/listeners/CollectorMessageListenerImpl.java
index 276bfc203..a9c04e5fb 100644
--- a/core/worker/src/main/java/com/cognifide/aet/worker/listeners/CollectorMessageListenerImpl.java
+++ b/core/worker/src/main/java/com/cognifide/aet/worker/listeners/CollectorMessageListenerImpl.java
@@ -28,35 +28,25 @@
import com.cognifide.aet.worker.api.CollectorDispatcher;
import com.cognifide.aet.worker.drivers.WebDriverProvider;
import com.cognifide.aet.worker.exceptions.WorkerException;
-import java.util.Map;
import javax.jms.JMSException;
import javax.jms.Message;
import org.apache.commons.lang3.StringUtils;
-import org.apache.felix.scr.annotations.Activate;
-import org.apache.felix.scr.annotations.Component;
-import org.apache.felix.scr.annotations.ConfigurationPolicy;
-import org.apache.felix.scr.annotations.Deactivate;
-import org.apache.felix.scr.annotations.Property;
-import org.apache.felix.scr.annotations.Reference;
-import org.apache.felix.scr.annotations.Service;
+import org.osgi.service.component.annotations.Activate;
+import org.osgi.service.component.annotations.Component;
+import org.osgi.service.component.annotations.Deactivate;
+import org.osgi.service.component.annotations.Reference;
+import org.osgi.service.metatype.annotations.Designate;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
-@Service
-@Component(immediate = true, metatype = true, label = "AET Collector Message Listener", policy = ConfigurationPolicy.REQUIRE, configurationFactory = true)
+@Component(
+ service = CollectorMessageListenerImpl.class,
+ immediate = true)
+@Designate(ocd = CollectorMessageListenerImplConfig.class, factory = true)
public class CollectorMessageListenerImpl extends AbstractTaskMessageListener {
private static final Logger LOGGER = LoggerFactory.getLogger(CollectorMessageListenerImpl.class);
- @Property(name = LISTENER_NAME, label = "Collector name", description = "Name of collector. Used in logs only", value = "Collector")
- private String name;
-
- @Property(name = CONSUMER_QUEUE_NAME, label = "Consumer queue name", value = "AET.collectorJobs")
- private String consumerQueueName;
-
- @Property(name = PRODUCER_QUEUE_NAME, label = "Producer queue name", value = "AET.collectorResults")
- private String producerQueueName;
-
@Reference
private JmsConnection jmsConnection;
@@ -66,9 +56,12 @@ public class CollectorMessageListenerImpl extends AbstractTaskMessageListener {
@Reference
private WebDriverProvider webDriverProvider;
+ private CollectorMessageListenerImplConfig config;
+
@Activate
- void activate(Map properties) {
- super.doActivate(properties);
+ void activate(CollectorMessageListenerImplConfig config) {
+ this.config = config;
+ super.doActivate(config.consumerQueueName(), config.producerQueueName(), config.pf());
}
@Deactivate
@@ -90,7 +83,8 @@ public void onMessage(final Message message) {
&& requestMessageId != null) {
LOGGER.info(
"CollectorJobData [{}] message arrived with {} urls. CorrelationId: {} RequestMessageId: {}",
- name, collectorJobData.getUrls().size(), correlationId, requestMessageId);
+ config.name(), collectorJobData.getUrls().size(), correlationId,
+ requestMessageId);
WebCommunicationWrapper webCommunicationWrapper = null;
int collected = 0;
String preferredWebDriver = collectorJobData.getPreferredBrowserId();
@@ -181,21 +175,6 @@ private void quitWebDriver(WebCommunicationWrapper webCommunicationWrapper) {
}
}
- @Override
- protected void setName(String name) {
- this.name = name;
- }
-
- @Override
- protected void setConsumerQueueName(String consumerQueueName) {
- this.consumerQueueName = consumerQueueName;
- }
-
- @Override
- protected void setProducerQueueName(String producerQueueName) {
- this.producerQueueName = producerQueueName;
- }
-
@Override
protected JmsConnection getJmsConnection() {
return jmsConnection;
diff --git a/core/worker/src/main/java/com/cognifide/aet/worker/listeners/CollectorMessageListenerImplConfig.java b/core/worker/src/main/java/com/cognifide/aet/worker/listeners/CollectorMessageListenerImplConfig.java
new file mode 100644
index 000000000..fb4fcc39a
--- /dev/null
+++ b/core/worker/src/main/java/com/cognifide/aet/worker/listeners/CollectorMessageListenerImplConfig.java
@@ -0,0 +1,59 @@
+/**
+ * AET
+ *
+ * Copyright (C) 2013 Cognifide Limited
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except
+ * in compliance with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software distributed under the License
+ * is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express
+ * or implied. See the License for the specific language governing permissions and limitations under
+ * the License.
+ */
+package com.cognifide.aet.worker.listeners;
+
+import org.osgi.service.metatype.annotations.AttributeDefinition;
+import org.osgi.service.metatype.annotations.ObjectClassDefinition;
+
+@ObjectClassDefinition(name = "AET Collector Message Listener")
+public @interface CollectorMessageListenerImplConfig {
+
+ String LISTENER_NAME_LABEL = "Collector name";
+ String LISTENER_NAME_DESC = "Name of collector. Used in logs only";
+ String LISTENER_NAME_DEFAULT_VALUE = "Collector";
+
+ String CONSUMER_QUEUE_NAME_LABEL = "Consumer queue name";
+ String CONSUMER_QUEUE_NAME_DEFAULT_VALUE = "AET.collectorJobs";
+
+ String PRODUCER_QUEUE_NAME_LABEL = "Producer queue name";
+ String PRODUCER_QUEUE_NAME_DEFAULT_VALUE = "AET.collectorResults";
+
+ String PREFETCH_SIZE_LABEL = "Prefetch size";
+ String PREFETCH_SIZE_DESC = "http://activemq.apache.org/what-is-the-prefetch-limit-for.html";
+ String PREFETCH_SIZE_DEFAULT_VALUE = "1";
+
+ @AttributeDefinition(
+ name = LISTENER_NAME_LABEL,
+ description = LISTENER_NAME_DESC,
+ defaultValue = LISTENER_NAME_DEFAULT_VALUE)
+ String name();
+
+ @AttributeDefinition(
+ name = CONSUMER_QUEUE_NAME_LABEL,
+ defaultValue = CONSUMER_QUEUE_NAME_DEFAULT_VALUE)
+ String consumerQueueName();
+
+ @AttributeDefinition(
+ name = PRODUCER_QUEUE_NAME_LABEL,
+ defaultValue = PRODUCER_QUEUE_NAME_DEFAULT_VALUE)
+ String producerQueueName();
+
+ @AttributeDefinition(
+ name = PREFETCH_SIZE_LABEL,
+ description = PREFETCH_SIZE_DESC,
+ defaultValue = PREFETCH_SIZE_DEFAULT_VALUE)
+ String pf();
+}
diff --git a/core/worker/src/main/java/com/cognifide/aet/worker/listeners/ComparatorMessageListenerImpl.java b/core/worker/src/main/java/com/cognifide/aet/worker/listeners/ComparatorMessageListenerImpl.java
index 1ab6bca17..2ec477be1 100644
--- a/core/worker/src/main/java/com/cognifide/aet/worker/listeners/ComparatorMessageListenerImpl.java
+++ b/core/worker/src/main/java/com/cognifide/aet/worker/listeners/ComparatorMessageListenerImpl.java
@@ -26,44 +26,37 @@
import com.cognifide.aet.job.api.comparator.ComparatorProperties;
import com.cognifide.aet.queues.JmsUtils;
import com.cognifide.aet.worker.api.ComparatorDispatcher;
-import java.util.Map;
import javax.jms.JMSException;
import javax.jms.Message;
import org.apache.commons.lang3.StringUtils;
-import org.apache.felix.scr.annotations.Activate;
-import org.apache.felix.scr.annotations.Component;
-import org.apache.felix.scr.annotations.ConfigurationPolicy;
-import org.apache.felix.scr.annotations.Deactivate;
-import org.apache.felix.scr.annotations.Property;
-import org.apache.felix.scr.annotations.Reference;
-import org.apache.felix.scr.annotations.Service;
+import org.osgi.service.component.annotations.Activate;
+import org.osgi.service.component.annotations.Component;
+import org.osgi.service.component.annotations.Deactivate;
+import org.osgi.service.component.annotations.Reference;
+import org.osgi.service.metatype.annotations.Designate;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
-@Service
-@Component(immediate = true, metatype = true, label = "AET Comparator Message Listener", policy = ConfigurationPolicy.REQUIRE, configurationFactory = true)
+@Component(
+ service = ComparatorMessageListenerImpl.class,
+ immediate = true)
+@Designate(ocd = ComparatorMessageListenerImplConfig.class, factory = true)
public class ComparatorMessageListenerImpl extends AbstractTaskMessageListener {
private static final Logger LOGGER = LoggerFactory.getLogger(ComparatorMessageListenerImpl.class);
- @Property(name = LISTENER_NAME, label = "Comparator name", description = "Name of comparator. Used in logs only", value = "Comparator")
- private String name;
-
- @Property(name = CONSUMER_QUEUE_NAME, label = "Consumer queue name", value = "AET.comparatorJobs")
- private String consumerQueueName;
-
- @Property(name = PRODUCER_QUEUE_NAME, label = "Producer queue name", value = "AET.comparatorResults")
- private String producerQueueName;
-
@Reference
private JmsConnection jmsConnection;
@Reference
private ComparatorDispatcher dispatcher;
+ private ComparatorMessageListenerImplConfig config;
+
@Activate
- void activate(Map properties) {
- super.doActivate(properties);
+ void activate(ComparatorMessageListenerImplConfig config) {
+ this.config = config;
+ super.doActivate(config.consumerQueueName(), config.producerQueueName(), config.pf());
}
@Deactivate
@@ -124,21 +117,6 @@ public void onMessage(final Message message) {
}
}
- @Override
- protected void setName(String name) {
- this.name = name;
- }
-
- @Override
- protected void setConsumerQueueName(String consumerQueueName) {
- this.consumerQueueName = consumerQueueName;
- }
-
- @Override
- protected void setProducerQueueName(String producerQueueName) {
- this.producerQueueName = producerQueueName;
- }
-
@Override
protected JmsConnection getJmsConnection() {
return jmsConnection;
diff --git a/core/worker/src/main/java/com/cognifide/aet/worker/listeners/ComparatorMessageListenerImplConfig.java b/core/worker/src/main/java/com/cognifide/aet/worker/listeners/ComparatorMessageListenerImplConfig.java
new file mode 100644
index 000000000..45f9f3749
--- /dev/null
+++ b/core/worker/src/main/java/com/cognifide/aet/worker/listeners/ComparatorMessageListenerImplConfig.java
@@ -0,0 +1,59 @@
+/**
+ * AET
+ *
+ * Copyright (C) 2013 Cognifide Limited
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except
+ * in compliance with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software distributed under the License
+ * is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express
+ * or implied. See the License for the specific language governing permissions and limitations under
+ * the License.
+ */
+package com.cognifide.aet.worker.listeners;
+
+import org.osgi.service.metatype.annotations.AttributeDefinition;
+import org.osgi.service.metatype.annotations.ObjectClassDefinition;
+
+@ObjectClassDefinition(name = "AET Comparator Message Listener")
+public @interface ComparatorMessageListenerImplConfig {
+
+ String LISTENER_NAME_LABEL = "Comparator name";
+ String LISTENER_NAME_DESC = "Name of comparator. Used in logs only";
+ String LISTENER_NAME_DEFAULT_VALUE = "Comparator";
+
+ String CONSUMER_QUEUE_NAME_LABEL = "Consumer queue name";
+ String CONSUMER_QUEUE_NAME_DEFAULT_VALUE = "AET.comparatorJobs";
+
+ String PRODUCER_QUEUE_NAME_LABEL = "Producer queue name";
+ String PRODUCER_QUEUE_NAME_DEFAULT_VALUE = "AET.comparatorResults";
+
+ String PREFETCH_SIZE_LABEL = "Prefetch size";
+ String PREFETCH_SIZE_DESC = "http://activemq.apache.org/what-is-the-prefetch-limit-for.html";
+ String PREFETCH_SIZE_DEFAULT_VALUE = "1";
+
+ @AttributeDefinition(
+ name = LISTENER_NAME_LABEL,
+ description = LISTENER_NAME_DESC,
+ defaultValue = LISTENER_NAME_DEFAULT_VALUE)
+ String name();
+
+ @AttributeDefinition(
+ name = CONSUMER_QUEUE_NAME_LABEL,
+ defaultValue = CONSUMER_QUEUE_NAME_DEFAULT_VALUE)
+ String consumerQueueName();
+
+ @AttributeDefinition(
+ name = PRODUCER_QUEUE_NAME_LABEL,
+ defaultValue = PRODUCER_QUEUE_NAME_DEFAULT_VALUE)
+ String producerQueueName();
+
+ @AttributeDefinition(
+ name = PREFETCH_SIZE_LABEL,
+ description = PREFETCH_SIZE_DESC,
+ defaultValue = PREFETCH_SIZE_DEFAULT_VALUE)
+ String pf();
+}
diff --git a/pom.xml b/pom.xml
index b74e0d006..841410aca 100644
--- a/pom.xml
+++ b/pom.xml
@@ -220,16 +220,19 @@
org.osgi
org.osgi.service.component.annotations
1.3.0
+ provided
org.osgi
org.osgi.annotation
6.0.0
+ provided
org.osgi
org.osgi.service.metatype.annotations
1.3.0
+ provided