You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@cxf.apache.org by am...@apache.org on 2017/02/10 09:06:23 UTC
[3/3] cxf-dosgi git commit: Extract duplicate handler functionality
into BaseDistributionProvider base class
Extract duplicate handler functionality into BaseDistributionProvider base class
Project: http://git-wip-us.apache.org/repos/asf/cxf-dosgi/repo
Commit: http://git-wip-us.apache.org/repos/asf/cxf-dosgi/commit/bec02202
Tree: http://git-wip-us.apache.org/repos/asf/cxf-dosgi/tree/bec02202
Diff: http://git-wip-us.apache.org/repos/asf/cxf-dosgi/diff/bec02202
Branch: refs/heads/master
Commit: bec02202129f3bcb740c2f9762592f0cc79d7cc3
Parents: 776238e
Author: Amichai Rothman <am...@apache.org>
Authored: Thu Feb 9 17:03:24 2017 +0200
Committer: Amichai Rothman <am...@apache.org>
Committed: Fri Feb 10 11:05:00 2017 +0200
----------------------------------------------------------------------
common/bnd.bnd | 5 +-
.../handlers/BaseDistributionProvider.java | 79 ++++++++++++++++++++
.../cxf/dosgi/dsw/handlers/rest/RsProvider.java | 49 ++----------
.../cxf/dosgi/dsw/handlers/ws/WsProvider.java | 50 ++-----------
4 files changed, 95 insertions(+), 88 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/cxf-dosgi/blob/bec02202/common/bnd.bnd
----------------------------------------------------------------------
diff --git a/common/bnd.bnd b/common/bnd.bnd
index a8b330b..88689ec 100644
--- a/common/bnd.bnd
+++ b/common/bnd.bnd
@@ -1,8 +1,9 @@
Import-Package: javax.servlet;version='[2,4)', javax.servlet.http;version='[2,4)', *
Export-Package: \
+ org.apache.cxf.dosgi.common.endpoint,\
+ org.apache.cxf.dosgi.common.handlers,\
org.apache.cxf.dosgi.common.httpservice,\
- org.apache.cxf.dosgi.common.util,\
org.apache.cxf.dosgi.common.intent,\
org.apache.cxf.dosgi.common.proxy,\
- org.apache.cxf.dosgi.common.endpoint
+ org.apache.cxf.dosgi.common.util
http://git-wip-us.apache.org/repos/asf/cxf-dosgi/blob/bec02202/common/src/main/java/org/apache/cxf/dosgi/common/handlers/BaseDistributionProvider.java
----------------------------------------------------------------------
diff --git a/common/src/main/java/org/apache/cxf/dosgi/common/handlers/BaseDistributionProvider.java b/common/src/main/java/org/apache/cxf/dosgi/common/handlers/BaseDistributionProvider.java
new file mode 100644
index 0000000..0325543
--- /dev/null
+++ b/common/src/main/java/org/apache/cxf/dosgi/common/handlers/BaseDistributionProvider.java
@@ -0,0 +1,79 @@
+/**
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you 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 org.apache.cxf.dosgi.common.handlers;
+
+import static org.apache.cxf.dosgi.common.util.PropertyHelper.getMultiValueProperty;
+
+import java.util.Collection;
+import java.util.Map;
+
+import org.apache.aries.rsa.spi.DistributionProvider;
+import org.apache.cxf.Bus;
+import org.apache.cxf.BusFactory;
+import org.apache.cxf.dosgi.common.httpservice.HttpServiceManager;
+import org.apache.cxf.dosgi.common.intent.IntentManager;
+import org.apache.cxf.endpoint.AbstractEndpointFactory;
+import org.osgi.framework.BundleContext;
+import org.osgi.service.remoteserviceadmin.EndpointDescription;
+import org.osgi.service.remoteserviceadmin.RemoteConstants;
+
+public abstract class BaseDistributionProvider implements DistributionProvider {
+
+ protected IntentManager intentManager;
+ protected HttpServiceManager httpServiceManager;
+
+ protected boolean configTypeSupported(Map<String, Object> endpointProps, String configType) {
+ Collection<String> configs = getMultiValueProperty(endpointProps.get(RemoteConstants.SERVICE_EXPORTED_CONFIGS));
+ return configs == null || configs.isEmpty() || configs.contains(configType);
+ }
+
+ protected EndpointDescription createEndpointDesc(Map<String, Object> props,
+ String[] importedConfigs,
+ String addressPropName,
+ String address,
+ Collection<String> intents) {
+ props.put(RemoteConstants.SERVICE_IMPORTED_CONFIGS, importedConfigs);
+ props.put(addressPropName, address);
+ props.put(RemoteConstants.SERVICE_INTENTS, intents);
+ props.put(RemoteConstants.ENDPOINT_ID, address);
+ return new EndpointDescription(props);
+ }
+
+ protected Bus createBus(Long sid, BundleContext callingContext, String contextRoot,
+ Map<String, Object> endpointProps) {
+ Bus bus = BusFactory.newInstance().createBus();
+ for (Map.Entry<String, Object> prop : endpointProps.entrySet()) {
+ if (prop.getKey().startsWith("cxf.bus.prop.")) {
+ bus.setProperty(prop.getKey().substring("cxf.bus.prop.".length()), prop.getValue());
+ }
+ }
+ if (contextRoot != null) {
+ httpServiceManager.registerServlet(bus, contextRoot, callingContext, sid);
+ }
+ return bus;
+ }
+
+ protected void addContextProperties(AbstractEndpointFactory factory, Map<String, Object> sd, String propName) {
+ @SuppressWarnings("unchecked")
+ Map<String, Object> props = (Map<String, Object>)sd.get(propName);
+ if (props != null) {
+ factory.getProperties(true).putAll(props);
+ }
+ }
+}
http://git-wip-us.apache.org/repos/asf/cxf-dosgi/blob/bec02202/provider-rs/src/main/java/org/apache/cxf/dosgi/dsw/handlers/rest/RsProvider.java
----------------------------------------------------------------------
diff --git a/provider-rs/src/main/java/org/apache/cxf/dosgi/dsw/handlers/rest/RsProvider.java b/provider-rs/src/main/java/org/apache/cxf/dosgi/dsw/handlers/rest/RsProvider.java
index 1c5e2f9..4f32c5a 100644
--- a/provider-rs/src/main/java/org/apache/cxf/dosgi/dsw/handlers/rest/RsProvider.java
+++ b/provider-rs/src/main/java/org/apache/cxf/dosgi/dsw/handlers/rest/RsProvider.java
@@ -18,7 +18,6 @@
*/
package org.apache.cxf.dosgi.dsw.handlers.rest;
-import static org.apache.cxf.dosgi.common.util.PropertyHelper.getMultiValueProperty;
import static org.osgi.service.remoteserviceadmin.RemoteConstants.REMOTE_CONFIGS_SUPPORTED;
import static org.osgi.service.remoteserviceadmin.RemoteConstants.REMOTE_INTENTS_SUPPORTED;
@@ -38,15 +37,14 @@ import org.apache.aries.rsa.spi.DistributionProvider;
import org.apache.aries.rsa.spi.Endpoint;
import org.apache.aries.rsa.spi.IntentUnsatisfiedException;
import org.apache.cxf.Bus;
-import org.apache.cxf.BusFactory;
import org.apache.cxf.binding.BindingConfiguration;
import org.apache.cxf.databinding.DataBinding;
import org.apache.cxf.dosgi.common.endpoint.ServerEndpoint;
+import org.apache.cxf.dosgi.common.handlers.BaseDistributionProvider;
import org.apache.cxf.dosgi.common.httpservice.HttpServiceManager;
import org.apache.cxf.dosgi.common.intent.IntentManager;
import org.apache.cxf.dosgi.common.proxy.ProxyFactory;
import org.apache.cxf.dosgi.common.util.PropertyHelper;
-import org.apache.cxf.endpoint.AbstractEndpointFactory;
import org.apache.cxf.endpoint.Server;
import org.apache.cxf.feature.Feature;
import org.apache.cxf.jaxrs.AbstractJAXRSFactoryBean;
@@ -66,12 +64,10 @@ import org.slf4j.LoggerFactory;
REMOTE_CONFIGS_SUPPORTED + "=" + RsConstants.RS_CONFIG_TYPE,
REMOTE_INTENTS_SUPPORTED + "="
})
-public class RsProvider implements DistributionProvider {
+public class RsProvider extends BaseDistributionProvider implements DistributionProvider {
private static final Logger LOG = LoggerFactory.getLogger(RsProvider.class);
- private IntentManager intentManager;
- private HttpServiceManager httpServiceManager;
-
+
@Reference
public void setHttpServiceManager(HttpServiceManager httpServiceManager) {
this.httpServiceManager = httpServiceManager;
@@ -152,20 +148,6 @@ public class RsProvider implements DistributionProvider {
return createServerFromFactory(factory, epd);
}
- protected Bus createBus(Long sid, BundleContext callingContext, String contextRoot,
- Map<String, Object> endpointProps) {
- Bus bus = BusFactory.newInstance().createBus();
- for (Map.Entry<String, Object> prop : endpointProps.entrySet()) {
- if (prop.getKey().startsWith("cxf.bus.prop.")) {
- bus.setProperty(prop.getKey().substring("cxf.bus.prop.".length()), prop.getValue());
- }
- }
- if (contextRoot != null) {
- httpServiceManager.registerServlet(bus, contextRoot, callingContext, sid);
- }
- return bus;
- }
-
private void applyIntents(List<Object> intents, AbstractJAXRSFactoryBean factory) {
List<Feature> features = intentManager.getIntents(Feature.class, intents);
factory.setFeatures(features);
@@ -194,11 +176,6 @@ public class RsProvider implements DistributionProvider {
|| (intent instanceof ContextResolver);
}
- private boolean configTypeSupported(Map<String, Object> endpointProps, String configType) {
- Collection<String> configs = getMultiValueProperty(endpointProps.get(RemoteConstants.SERVICE_EXPORTED_CONFIGS));
- return configs == null || configs.isEmpty() || configs.contains(configType);
- }
-
private Endpoint createServerFromFactory(JAXRSServerFactoryBean factory,
EndpointDescription epd) {
ClassLoader oldClassLoader = Thread.currentThread().getContextClassLoader();
@@ -238,22 +215,8 @@ public class RsProvider implements DistributionProvider {
}
}
- private EndpointDescription createEndpointDesc(Map<String, Object> props,
- String[] importedConfigs,
- String address,
- Set<String> intents) {
- props.put(RemoteConstants.SERVICE_IMPORTED_CONFIGS, importedConfigs);
- props.put(RsConstants.RS_ADDRESS_PROPERTY, address);
- props.put(RemoteConstants.SERVICE_INTENTS, intents);
- props.put(RemoteConstants.ENDPOINT_ID, address);
- return new EndpointDescription(props);
- }
-
- private static void addContextProperties(AbstractEndpointFactory factory, Map<String, Object> sd, String propName) {
- @SuppressWarnings("unchecked")
- Map<String, Object> props = (Map<String, Object>)sd.get(propName);
- if (props != null) {
- factory.getProperties(true).putAll(props);
- }
+ protected EndpointDescription createEndpointDesc(Map<String, Object> props, String[] importedConfigs,
+ String address, Collection<String> intents) {
+ return super.createEndpointDesc(props, importedConfigs, RsConstants.RS_ADDRESS_PROPERTY, address, intents);
}
}
http://git-wip-us.apache.org/repos/asf/cxf-dosgi/blob/bec02202/provider-ws/src/main/java/org/apache/cxf/dosgi/dsw/handlers/ws/WsProvider.java
----------------------------------------------------------------------
diff --git a/provider-ws/src/main/java/org/apache/cxf/dosgi/dsw/handlers/ws/WsProvider.java b/provider-ws/src/main/java/org/apache/cxf/dosgi/dsw/handlers/ws/WsProvider.java
index c13c93d..99e64d4 100644
--- a/provider-ws/src/main/java/org/apache/cxf/dosgi/dsw/handlers/ws/WsProvider.java
+++ b/provider-ws/src/main/java/org/apache/cxf/dosgi/dsw/handlers/ws/WsProvider.java
@@ -18,7 +18,6 @@
*/
package org.apache.cxf.dosgi.dsw.handlers.ws;
-import static org.apache.cxf.dosgi.common.util.PropertyHelper.getMultiValueProperty;
import static org.osgi.service.remoteserviceadmin.RemoteConstants.REMOTE_CONFIGS_SUPPORTED;
import static org.osgi.service.remoteserviceadmin.RemoteConstants.REMOTE_INTENTS_SUPPORTED;
@@ -33,12 +32,12 @@ import org.apache.aries.rsa.spi.DistributionProvider;
import org.apache.aries.rsa.spi.Endpoint;
import org.apache.aries.rsa.spi.IntentUnsatisfiedException;
import org.apache.cxf.Bus;
-import org.apache.cxf.BusFactory;
import org.apache.cxf.aegis.databinding.AegisDatabinding;
import org.apache.cxf.binding.BindingConfiguration;
import org.apache.cxf.binding.soap.SoapBindingConfiguration;
import org.apache.cxf.databinding.DataBinding;
import org.apache.cxf.dosgi.common.endpoint.ServerEndpoint;
+import org.apache.cxf.dosgi.common.handlers.BaseDistributionProvider;
import org.apache.cxf.dosgi.common.httpservice.HttpServiceManager;
import org.apache.cxf.dosgi.common.intent.IntentManager;
import org.apache.cxf.dosgi.common.proxy.ProxyFactory;
@@ -65,12 +64,11 @@ import org.slf4j.LoggerFactory;
REMOTE_CONFIGS_SUPPORTED + "=" + WsConstants.WS_CONFIG_TYPE,
REMOTE_INTENTS_SUPPORTED + "="
})
-public class WsProvider implements DistributionProvider {
+public class WsProvider extends BaseDistributionProvider implements DistributionProvider {
+
private static final Logger LOG = LoggerFactory.getLogger(WsProvider.class);
protected BundleContext bundleContext;
- protected IntentManager intentManager;
- protected HttpServiceManager httpServiceManager;
-
+
@Reference
public void setHttpServiceManager(HttpServiceManager httpServiceManager) {
this.httpServiceManager = httpServiceManager;
@@ -203,21 +201,10 @@ public class WsProvider implements DistributionProvider {
factory.setBindingConfig(binding);
}
}
-
- private boolean configTypeSupported(Map<String, Object> endpointProps, String configType) {
- Collection<String> configs = getMultiValueProperty(endpointProps.get(RemoteConstants.SERVICE_EXPORTED_CONFIGS));
- return configs == null || configs.isEmpty() || configs.contains(configType);
- }
- protected EndpointDescription createEndpointDesc(Map<String, Object> props,
- String[] importedConfigs,
- String address,
- Collection<String> intents) {
- props.put(RemoteConstants.SERVICE_IMPORTED_CONFIGS, importedConfigs);
- props.put(WsConstants.WS_ADDRESS_PROPERTY, address);
- props.put(RemoteConstants.SERVICE_INTENTS, intents);
- props.put(RemoteConstants.ENDPOINT_ID, address);
- return new EndpointDescription(props);
+ protected EndpointDescription createEndpointDesc(Map<String, Object> props, String[] importedConfigs,
+ String address, Collection<String> intents) {
+ return super.createEndpointDesc(props, importedConfigs, WsConstants.WS_ADDRESS_PROPERTY, address, intents);
}
private String getPojoAddress(Map<String, Object> sd, Class<?> iClass) {
@@ -248,34 +235,11 @@ public class WsProvider implements DistributionProvider {
return address == null ? httpServiceManager.getDefaultAddress(iClass) : address;
}
- protected Bus createBus(Long sid, BundleContext callingContext, String contextRoot,
- Map<String, Object> endpointProps) {
- Bus bus = BusFactory.newInstance().createBus();
- for (Map.Entry<String, Object> prop : endpointProps.entrySet()) {
- if (prop.getKey().startsWith("cxf.bus.prop.")) {
- bus.setProperty(prop.getKey().substring("cxf.bus.prop.".length()), prop.getValue());
- }
- }
- if (contextRoot != null) {
- httpServiceManager.registerServlet(bus, contextRoot, callingContext, sid);
- }
- return bus;
- }
-
protected Endpoint createServerFromFactory(ServerFactoryBean factory, EndpointDescription epd) {
Server server = factory.create();
return new ServerEndpoint(epd, server);
}
- protected static void addContextProperties(AbstractEndpointFactory factory,
- Map<String, Object> sd, String propName) {
- @SuppressWarnings("unchecked")
- Map<String, Object> props = (Map<String, Object>)sd.get(propName);
- if (props != null) {
- factory.getProperties(true).putAll(props);
- }
- }
-
private DataBinding getDataBinding(Map<String, Object> sd, Class<?> iClass) {
return isJAXWS(sd, iClass) ? new JAXBDataBinding() : new AegisDatabinding();
}