http://git-wip-us.apache.org/repos/asf/cxf-dosgi/blob/1425743f/discovery/local/src/test/resources/ed3.xml ---------------------------------------------------------------------- diff --git a/discovery/local/src/test/resources/ed3.xml b/discovery/local/src/test/resources/ed3.xml deleted file mode 100644 index 7d4d681..0000000 --- a/discovery/local/src/test/resources/ed3.xml +++ /dev/null @@ -1,32 +0,0 @@ -<?xml version="1.0" encoding="UTF-8"?> - -<!-- - 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. ---> - -<endpoint-descriptions xmlns="http://www.osgi.org/xmlns/rsa/v1.0.0"> - <endpoint-description> - <property name="objectClass"> - <array> - <value>SomeService</value> - </array> - </property> - <property name="endpoint.id">http://somewhere:12345</property> - <property name="service.imported.configs" value="org.apache.cxf.ws"/> - </endpoint-description> -</endpoint-descriptions>
http://git-wip-us.apache.org/repos/asf/cxf-dosgi/blob/1425743f/discovery/local/src/test/resources/ed4.xml ---------------------------------------------------------------------- diff --git a/discovery/local/src/test/resources/ed4.xml b/discovery/local/src/test/resources/ed4.xml deleted file mode 100644 index cef5d18..0000000 --- a/discovery/local/src/test/resources/ed4.xml +++ /dev/null @@ -1,43 +0,0 @@ -<?xml version="1.0" encoding="UTF-8"?> - -<!-- - 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. ---> - -<endpoint-descriptions xmlns="http://www.osgi.org/xmlns/rsa/v1.0.0" - xmlns:other="http://www.acme.org/xmlns/other/v1.0.0"> - <endpoint-description> - <property name="objectClass"> - <array> - <value>org.example.ClassA</value> - </array> - </property> - <property name="endpoint.id">http://somewhere</property> - <property name="service.imported.configs" value="org.apache.cxf.ws"/> - </endpoint-description> - - <endpoint-description> - <property name="objectClass"> - <array> - <value>org.example.ClassB</value> - </array> - </property> - <property name="endpoint.id">http://somewhere:1</property> - <property name="service.imported.configs" value="org.apache.cxf.ws"/> - </endpoint-description> -</endpoint-descriptions> http://git-wip-us.apache.org/repos/asf/cxf-dosgi/blob/1425743f/discovery/local/src/test/resources/sd.xml ---------------------------------------------------------------------- diff --git a/discovery/local/src/test/resources/sd.xml b/discovery/local/src/test/resources/sd.xml deleted file mode 100644 index c476116..0000000 --- a/discovery/local/src/test/resources/sd.xml +++ /dev/null @@ -1,23 +0,0 @@ -<?xml version="1.0" encoding="UTF-8"?> - <!-- - 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. - --> -<service-descriptions xmlns="http://www.osgi.org/xmlns/sd/v1.0.0"> - <service-description> - <provide interface="org.apache.cxf.dosgi.samples.greeter.GreeterService" /> - <property name="service.exported.interfaces">*</property> - <property name="service.exported.configs">org.apache.cxf.ws</property> - <property name="org.apache.cxf.ws.address">http://localhost:9090/greeter</property> - </service-description> -</service-descriptions> http://git-wip-us.apache.org/repos/asf/cxf-dosgi/blob/1425743f/discovery/local/src/test/resources/sd2.xml ---------------------------------------------------------------------- diff --git a/discovery/local/src/test/resources/sd2.xml b/discovery/local/src/test/resources/sd2.xml deleted file mode 100644 index 5a156ea..0000000 --- a/discovery/local/src/test/resources/sd2.xml +++ /dev/null @@ -1,32 +0,0 @@ -<?xml version="1.0" encoding="UTF-8"?> - -<!-- - 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. ---> - -<service-descriptions xmlns="http://www.osgi.org/xmlns/sd/v1.0.0"> - <service-description> - <provide interface="org.example.SomeService" /> - <property name="service.intents">confidentiality</property> - </service-description> - <service-description> - <provide interface="SomeOtherService" /> - <provide interface="WithSomeSecondInterface" /> - <property name="blah">5</property> - </service-description> -</service-descriptions> http://git-wip-us.apache.org/repos/asf/cxf-dosgi/blob/1425743f/discovery/pom.xml ---------------------------------------------------------------------- diff --git a/discovery/pom.xml b/discovery/pom.xml deleted file mode 100644 index f176e51..0000000 --- a/discovery/pom.xml +++ /dev/null @@ -1,41 +0,0 @@ -<?xml version='1.0' encoding='UTF-8' ?> -<!-- - 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. ---> -<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd"> - - <modelVersion>4.0.0</modelVersion> - <groupId>org.apache.cxf.dosgi</groupId> - <artifactId>cxf-dosgi-ri-discovery</artifactId> - <packaging>pom</packaging> - <name>Distributed OSGI Discovery Service Modules</name> - <version>1.8-SNAPSHOT</version> - - <parent> - <groupId>org.apache.cxf.dosgi</groupId> - <artifactId>cxf-dosgi-ri-parent</artifactId> - <version>1.8-SNAPSHOT</version> - <relativePath>../parent/pom.xml</relativePath> - </parent> - - <modules> - <module>local</module> - <module>distributed</module> - </modules> - -</project> http://git-wip-us.apache.org/repos/asf/cxf-dosgi/blob/1425743f/distribution/features/src/main/resources/features.xml ---------------------------------------------------------------------- diff --git a/distribution/features/src/main/resources/features.xml b/distribution/features/src/main/resources/features.xml index d8f74d4..26932b1 100644 --- a/distribution/features/src/main/resources/features.xml +++ b/distribution/features/src/main/resources/features.xml @@ -1,6 +1,7 @@ <?xml version="1.0" encoding="UTF-8"?> <features xmlns="http://karaf.apache.org/xmlns/features/v1.0.0" name="cxf-dosgi-${project.version}"> <repository>mvn:org.apache.cxf.karaf/apache-cxf/${cxf.version}/xml/features</repository> + <repository>mvn:org.apache.aries.rsa/rsa-features/1.8-SNAPSHOT/xml/features</repository> <feature name="cxf-dosgi-base" description="base libs needed outside karaf" version="${project.version}" resolver="(obr)"> <bundle start-level="8">mvn:org.ops4j.pax.logging/pax-logging-api/1.8.5</bundle> @@ -15,20 +16,8 @@ <bundle start-level="20">mvn:org.apache.aries.blueprint/org.apache.aries.blueprint.cm/1.0.7</bundle> </feature> - <feature name="cxf-dosgi-core" version="${project.version}"> - <bundle start-level="8">mvn:${project.groupId}/cxf-dosgi-ri-osgi-api/${project.version}</bundle> - <bundle>mvn:${project.groupId}/cxf-dosgi-ri-provider-api/${project.version}</bundle> - <bundle>mvn:${project.groupId}/cxf-dosgi-ri-rsa/${project.version}</bundle> - <bundle>mvn:${project.groupId}/cxf-dosgi-ri-topology-manager/${project.version}</bundle> - </feature> - - <feature name="cxf-dosgi-provider-tcp" version="${project.version}"> - <feature>cxf-dosgi-core</feature> - <bundle>mvn:${project.groupId}/cxf-dosgi-ri-tcp/${project.version}</bundle> - </feature> - <feature name="cxf-dosgi-provider-cxf" version="${project.version}"> - <feature>cxf-dosgi-core</feature> + <feature>aries-rsa-core</feature> <feature>cxf-specs</feature> <feature>cxf-jaxws</feature> <feature>cxf-jaxrs</feature> @@ -37,23 +26,7 @@ <feature>cxf-http</feature> <feature>http</feature> <bundle>mvn:${project.groupId}/cxf-dosgi-ri-dsw-cxf/${project.version}</bundle> + <bundle>mvn:${project.groupId}/cxf-dosgi-ri-dsw-cxf/${project.version}</bundle> </feature> - - <feature name="cxf-dosgi-discovery-local" version="${project.version}"> - <feature>cxf-dosgi-core</feature> - <bundle>mvn:${project.groupId}/cxf-dosgi-ri-discovery-local/${project.version}</bundle> - </feature> - - <feature name="cxf-dosgi-discovery-distributed" version="${project.version}"> - <feature>cxf-dosgi-core</feature> - <bundle>mvn:org.apache.zookeeper/zookeeper/${zookeeper.version}</bundle> - <bundle>mvn:${project.groupId}/cxf-dosgi-ri-discovery-local/${project.version}</bundle> - <bundle>mvn:${project.groupId}/cxf-dosgi-ri-discovery-distributed/${project.version}</bundle> - </feature> - - <feature name="cxf-dosgi-zookeeper-server"> - <bundle>mvn:org.apache.zookeeper/zookeeper/${zookeeper.version}</bundle> - <bundle>mvn:${project.groupId}/cxf-dosgi-ri-discovery-distributed-zookeeper-server/${project.version}</bundle> - </feature> </features> http://git-wip-us.apache.org/repos/asf/cxf-dosgi/blob/1425743f/distribution/multi-bundle/pom.xml ---------------------------------------------------------------------- diff --git a/distribution/multi-bundle/pom.xml b/distribution/multi-bundle/pom.xml index 1b835ff..3053200 100644 --- a/distribution/multi-bundle/pom.xml +++ b/distribution/multi-bundle/pom.xml @@ -66,10 +66,9 @@ </descriptors> <features> <feature>cxf-dosgi-base</feature> - <feature>cxf-dosgi-core</feature> + <feature>aries-rsa-discovery-zookeeper</feature> + <feature>aries-rsa-zookeeper-server</feature> <feature>cxf-dosgi-provider-cxf</feature> - <feature>cxf-dosgi-discovery-distributed</feature> - <feature>cxf-dosgi-zookeeper-server</feature> </features> <repository>target/distribution_bundles</repository> <resolveDefinedRepositoriesRecursively>true</resolveDefinedRepositoriesRecursively> http://git-wip-us.apache.org/repos/asf/cxf-dosgi/blob/1425743f/dsw/cxf-dosgi-provider-api/pom.xml ---------------------------------------------------------------------- diff --git a/dsw/cxf-dosgi-provider-api/pom.xml b/dsw/cxf-dosgi-provider-api/pom.xml deleted file mode 100644 index 0deab6c..0000000 --- a/dsw/cxf-dosgi-provider-api/pom.xml +++ /dev/null @@ -1,67 +0,0 @@ -<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" - xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"> - <modelVersion>4.0.0</modelVersion> - - <parent> - <groupId>org.apache.cxf.dosgi</groupId> - <artifactId>cxf-dosgi-ri-parent</artifactId> - <version>1.8-SNAPSHOT</version> - <relativePath>../../parent/pom.xml</relativePath> - </parent> - <artifactId>cxf-dosgi-ri-provider-api</artifactId> - <packaging>bundle</packaging> - <name>Distributed OSGI Distributed Software Modules</name> - - <properties> - <topDirectoryLocation>../..</topDirectoryLocation> - </properties> - - <dependencies> - <dependency> - <groupId>org.slf4j</groupId> - <artifactId>slf4j-api</artifactId> - </dependency> - <dependency> - <groupId>org.osgi</groupId> - <artifactId>org.osgi.core</artifactId> - <scope>provided</scope> - </dependency> - <dependency> - <groupId>org.osgi</groupId> - <artifactId>org.osgi.compendium</artifactId> - <scope>provided</scope> - </dependency> - - <dependency> - <groupId>junit</groupId> - <artifactId>junit</artifactId> - <scope>test</scope> - </dependency> - <dependency> - <groupId>org.easymock</groupId> - <artifactId>easymockclassextension</artifactId> - <scope>test</scope> - </dependency> - <dependency> - <groupId>org.slf4j</groupId> - <artifactId>slf4j-jdk14</artifactId> - <version>1.7.14</version> - <scope>test</scope> - </dependency> - </dependencies> - - <build> - <plugins> - <plugin> - <groupId>org.apache.felix</groupId> - <artifactId>maven-bundle-plugin</artifactId> - <extensions>true</extensions> - <configuration> - <instructions> - <Bundle-SymbolicName>${project.artifactId}</Bundle-SymbolicName> - </instructions> - </configuration> - </plugin> - </plugins> - </build> -</project> \ No newline at end of file http://git-wip-us.apache.org/repos/asf/cxf-dosgi/blob/1425743f/dsw/cxf-dosgi-provider-api/src/main/java/org/apache/cxf/dosgi/dsw/api/DistributionProvider.java ---------------------------------------------------------------------- diff --git a/dsw/cxf-dosgi-provider-api/src/main/java/org/apache/cxf/dosgi/dsw/api/DistributionProvider.java b/dsw/cxf-dosgi-provider-api/src/main/java/org/apache/cxf/dosgi/dsw/api/DistributionProvider.java deleted file mode 100644 index d7c648b..0000000 --- a/dsw/cxf-dosgi-provider-api/src/main/java/org/apache/cxf/dosgi/dsw/api/DistributionProvider.java +++ /dev/null @@ -1,56 +0,0 @@ -/** - * 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.dsw.api; - -import java.util.Map; - -import org.osgi.framework.BundleContext; -import org.osgi.service.remoteserviceadmin.EndpointDescription; - -@SuppressWarnings("rawtypes") -public interface DistributionProvider { - - String[] getSupportedTypes(); - - /** - * @param serviceO service instance to be exported - * @param serviceContext bundle context of the bundle exporting the sevice - * @param effectiveProperties combined properties of the service and additional properties from rsa - * @param exportedInterfaces name of the interface to be exported - * @return Endpoint that represents the service that is exposed to the outside world - */ - Endpoint exportService(Object serviceO, - BundleContext serviceContext, - Map<String, Object> effectiveProperties, - Class[] exportedInterfaces); - - /** - * @param cl classloader of the consumer bundle - * @param consumerContext bundle context of the consumer bundle - * @param interfaces interfaces of the service to proxy - * @param endpoint description of the remote endpoint - * @return service proxy to be given to the requesting bundle - * @throws IntentUnsatisfiedException - */ - Object importEndpoint(ClassLoader cl, - BundleContext consumerContext, - Class[] interfaces, - EndpointDescription endpoint) - throws IntentUnsatisfiedException; -} http://git-wip-us.apache.org/repos/asf/cxf-dosgi/blob/1425743f/dsw/cxf-dosgi-provider-api/src/main/java/org/apache/cxf/dosgi/dsw/api/Endpoint.java ---------------------------------------------------------------------- diff --git a/dsw/cxf-dosgi-provider-api/src/main/java/org/apache/cxf/dosgi/dsw/api/Endpoint.java b/dsw/cxf-dosgi-provider-api/src/main/java/org/apache/cxf/dosgi/dsw/api/Endpoint.java deleted file mode 100644 index f45b562..0000000 --- a/dsw/cxf-dosgi-provider-api/src/main/java/org/apache/cxf/dosgi/dsw/api/Endpoint.java +++ /dev/null @@ -1,27 +0,0 @@ -/** - * 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.dsw.api; - -import java.io.Closeable; - -import org.osgi.service.remoteserviceadmin.EndpointDescription; - -public interface Endpoint extends Closeable { - EndpointDescription description(); -} http://git-wip-us.apache.org/repos/asf/cxf-dosgi/blob/1425743f/dsw/cxf-dosgi-provider-api/src/main/java/org/apache/cxf/dosgi/dsw/api/EndpointHelper.java ---------------------------------------------------------------------- diff --git a/dsw/cxf-dosgi-provider-api/src/main/java/org/apache/cxf/dosgi/dsw/api/EndpointHelper.java b/dsw/cxf-dosgi-provider-api/src/main/java/org/apache/cxf/dosgi/dsw/api/EndpointHelper.java deleted file mode 100644 index cdc66ad..0000000 --- a/dsw/cxf-dosgi-provider-api/src/main/java/org/apache/cxf/dosgi/dsw/api/EndpointHelper.java +++ /dev/null @@ -1,41 +0,0 @@ -/** - * 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.dsw.api; - -import java.util.ArrayList; -import java.util.List; -import java.util.Map; - -public final class EndpointHelper { - - private EndpointHelper() { - } - - public static void addObjectClass(Map<String, Object> props, Class<?>[] interfaces) { - props.put(org.osgi.framework.Constants.OBJECTCLASS, getClassNames(interfaces)); - } - - public static String[] getClassNames(Class<?>[] ifaces) { - List<String> ifaceNames = new ArrayList<String>(); - for (Class<?> iface : ifaces) { - ifaceNames.add(iface.getName()); - } - return ifaceNames.toArray(new String[]{}); - } -} http://git-wip-us.apache.org/repos/asf/cxf-dosgi/blob/1425743f/dsw/cxf-dosgi-provider-api/src/main/java/org/apache/cxf/dosgi/dsw/api/ExportPolicy.java ---------------------------------------------------------------------- diff --git a/dsw/cxf-dosgi-provider-api/src/main/java/org/apache/cxf/dosgi/dsw/api/ExportPolicy.java b/dsw/cxf-dosgi-provider-api/src/main/java/org/apache/cxf/dosgi/dsw/api/ExportPolicy.java deleted file mode 100644 index 9e82c04..0000000 --- a/dsw/cxf-dosgi-provider-api/src/main/java/org/apache/cxf/dosgi/dsw/api/ExportPolicy.java +++ /dev/null @@ -1,46 +0,0 @@ -/** - * 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.dsw.api; - -import java.util.Map; - -import org.osgi.framework.ServiceReference; - - -/** - * SPI for TopologyManagerExport. Allows to export services that are - * not marked for export as well customize the way services are exported. - * - * Use cases: - * - Mandate SSL and basic authoriziation by adding the respective intents and configs - * - Add logging interceptor as intent - * - Remove exported interfaces to filter out services - */ -public interface ExportPolicy { - /** - * Allows to supply additional properties for a service that are then - * given to RemoteServiceAdmin. The service will be exported - * if the original service or the additional properties contain the - * non empty property service.exported.interfaces. - * - * @param service to export - * @return additional properties for exported Service (must not be null) - */ - Map<String, ?> additionalParameters(ServiceReference<?> sref); -} http://git-wip-us.apache.org/repos/asf/cxf-dosgi/blob/1425743f/dsw/cxf-dosgi-provider-api/src/main/java/org/apache/cxf/dosgi/dsw/api/IntentUnsatisfiedException.java ---------------------------------------------------------------------- diff --git a/dsw/cxf-dosgi-provider-api/src/main/java/org/apache/cxf/dosgi/dsw/api/IntentUnsatisfiedException.java b/dsw/cxf-dosgi-provider-api/src/main/java/org/apache/cxf/dosgi/dsw/api/IntentUnsatisfiedException.java deleted file mode 100644 index 4e27938..0000000 --- a/dsw/cxf-dosgi-provider-api/src/main/java/org/apache/cxf/dosgi/dsw/api/IntentUnsatisfiedException.java +++ /dev/null @@ -1,35 +0,0 @@ -/** - * 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.dsw.api; - -public class IntentUnsatisfiedException extends RuntimeException { - - private static final long serialVersionUID = 1L; - - private final String intent; - - public IntentUnsatisfiedException(String intent) { - super(intent); - this.intent = intent; - } - - public String getIntent() { - return intent; - } -} http://git-wip-us.apache.org/repos/asf/cxf-dosgi/blob/1425743f/dsw/cxf-dosgi-rsa/pom.xml ---------------------------------------------------------------------- diff --git a/dsw/cxf-dosgi-rsa/pom.xml b/dsw/cxf-dosgi-rsa/pom.xml deleted file mode 100644 index b96828b..0000000 --- a/dsw/cxf-dosgi-rsa/pom.xml +++ /dev/null @@ -1,73 +0,0 @@ -<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" - xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"> - <modelVersion>4.0.0</modelVersion> - <parent> - <groupId>org.apache.cxf.dosgi</groupId> - <artifactId>cxf-dosgi-ri-parent</artifactId> - <version>1.8-SNAPSHOT</version> - <relativePath>../../parent/pom.xml</relativePath> - </parent> - <artifactId>cxf-dosgi-ri-rsa</artifactId> - <packaging>bundle</packaging> - <name>CXF dOSGi Remote Service Admin Implementation</name> - <description>The CXF Remote Service Admin as described in the OSGi Remote Service Admin specification</description> - - <properties> - <topDirectoryLocation>../..</topDirectoryLocation> - </properties> - - <dependencies> - <dependency> - <groupId>org.slf4j</groupId> - <artifactId>slf4j-api</artifactId> - </dependency> - <dependency> - <groupId>org.osgi</groupId> - <artifactId>org.osgi.core</artifactId> - <scope>provided</scope> - </dependency> - <dependency> - <groupId>org.osgi</groupId> - <artifactId>org.osgi.compendium</artifactId> - <scope>provided</scope> - </dependency> - <dependency> - <groupId>org.apache.cxf.dosgi</groupId> - <artifactId>cxf-dosgi-ri-provider-api</artifactId> - <version>${project.version}</version> - </dependency> - - <dependency> - <groupId>junit</groupId> - <artifactId>junit</artifactId> - <scope>test</scope> - </dependency> - <dependency> - <groupId>org.easymock</groupId> - <artifactId>easymockclassextension</artifactId> - <scope>test</scope> - </dependency> - <dependency> - <groupId>org.slf4j</groupId> - <artifactId>slf4j-jdk14</artifactId> - <version>1.7.14</version> - <scope>test</scope> - </dependency> - </dependencies> - - <build> - <plugins> - <plugin> - <groupId>org.apache.felix</groupId> - <artifactId>maven-bundle-plugin</artifactId> - <extensions>true</extensions> - <configuration> - <instructions> - <Bundle-SymbolicName>${project.artifactId}</Bundle-SymbolicName> - <Bundle-Activator>org.apache.cxf.dosgi.dsw.service.Activator</Bundle-Activator> - </instructions> - </configuration> - </plugin> - </plugins> - </build> -</project> \ No newline at end of file http://git-wip-us.apache.org/repos/asf/cxf-dosgi/blob/1425743f/dsw/cxf-dosgi-rsa/src/main/java/org/apache/cxf/dosgi/dsw/service/Activator.java ---------------------------------------------------------------------- diff --git a/dsw/cxf-dosgi-rsa/src/main/java/org/apache/cxf/dosgi/dsw/service/Activator.java b/dsw/cxf-dosgi-rsa/src/main/java/org/apache/cxf/dosgi/dsw/service/Activator.java deleted file mode 100644 index 4c4d7ad..0000000 --- a/dsw/cxf-dosgi-rsa/src/main/java/org/apache/cxf/dosgi/dsw/service/Activator.java +++ /dev/null @@ -1,37 +0,0 @@ -/** - * 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.dsw.service; - -import org.osgi.framework.BundleActivator; -import org.osgi.framework.BundleContext; - -public class Activator implements BundleActivator { - - private DistributionProviderTracker tracker; - - public void start(BundleContext bundlecontext) throws Exception { - tracker = new DistributionProviderTracker(bundlecontext); - tracker.open(); - } - - public void stop(BundleContext context) throws Exception { - tracker.close(); - } - -} http://git-wip-us.apache.org/repos/asf/cxf-dosgi/blob/1425743f/dsw/cxf-dosgi-rsa/src/main/java/org/apache/cxf/dosgi/dsw/service/ClientServiceFactory.java ---------------------------------------------------------------------- diff --git a/dsw/cxf-dosgi-rsa/src/main/java/org/apache/cxf/dosgi/dsw/service/ClientServiceFactory.java b/dsw/cxf-dosgi-rsa/src/main/java/org/apache/cxf/dosgi/dsw/service/ClientServiceFactory.java deleted file mode 100644 index 7c292db..0000000 --- a/dsw/cxf-dosgi-rsa/src/main/java/org/apache/cxf/dosgi/dsw/service/ClientServiceFactory.java +++ /dev/null @@ -1,110 +0,0 @@ -/** - * 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.dsw.service; - -import java.security.AccessController; -import java.security.PrivilegedAction; -import java.util.ArrayList; -import java.util.Arrays; -import java.util.List; - -import org.apache.cxf.dosgi.dsw.api.DistributionProvider; -import org.apache.cxf.dosgi.dsw.api.IntentUnsatisfiedException; -import org.osgi.framework.Bundle; -import org.osgi.framework.BundleContext; -import org.osgi.framework.ServiceFactory; -import org.osgi.framework.ServiceRegistration; -import org.osgi.framework.wiring.BundleWiring; -import org.osgi.service.remoteserviceadmin.EndpointDescription; -import org.slf4j.Logger; -import org.slf4j.LoggerFactory; - -@SuppressWarnings("rawtypes") -public class ClientServiceFactory implements ServiceFactory { - - private static final Logger LOG = LoggerFactory.getLogger(ClientServiceFactory.class); - - private EndpointDescription endpoint; - private DistributionProvider handler; - private ImportRegistrationImpl importRegistration; - - private boolean closeable; - private int serviceCounter; - - public ClientServiceFactory(EndpointDescription endpoint, - DistributionProvider handler, ImportRegistrationImpl ir) { - this.endpoint = endpoint; - this.handler = handler; - this.importRegistration = ir; - } - - public Object getService(final Bundle requestingBundle, final ServiceRegistration sreg) { - List<String> interfaceNames = endpoint.getInterfaces(); - final BundleContext consumerContext = requestingBundle.getBundleContext(); - final ClassLoader consumerLoader = requestingBundle.adapt(BundleWiring.class).getClassLoader(); - try { - LOG.debug("getService() from serviceFactory for {}", interfaceNames); - final List<Class<?>> interfaces = new ArrayList<Class<?>>(); - for (String ifaceName : interfaceNames) { - interfaces.add(consumerLoader.loadClass(ifaceName)); - } - Object proxy = AccessController.doPrivileged(new PrivilegedAction<Object>() { - public Object run() { - Class<?>[] ifAr = interfaces.toArray(new Class[]{}); - return handler.importEndpoint(consumerLoader, consumerContext, ifAr, endpoint); - } - }); - - synchronized (this) { - serviceCounter++; - } - return proxy; - } catch (IntentUnsatisfiedException iue) { - LOG.info("Did not create proxy for {} because intent {} could not be satisfied", - interfaceNames, iue.getIntent()); - } catch (Exception e) { - LOG.warn("Problem creating a remote proxy for {}", interfaceNames, e); - } - return null; - } - - public void ungetService(Bundle requestingBundle, ServiceRegistration sreg, Object serviceObject) { - String[] interfaces = (String[])sreg.getReference().getProperty(org.osgi.framework.Constants.OBJECTCLASS); - LOG.info("Releasing a client object, interfaces: {}", Arrays.toString(interfaces)); - - synchronized (this) { - serviceCounter--; - LOG.debug("Services still provided by this ServiceFactory: {}", serviceCounter); - closeIfUnused(); - } - } - - public void setCloseable(boolean closeable) { - synchronized (this) { - this.closeable = closeable; - closeIfUnused(); - } - } - - private synchronized void closeIfUnused() { - if (serviceCounter <= 0 && closeable) { - importRegistration.closeAll(); - } - } -} http://git-wip-us.apache.org/repos/asf/cxf-dosgi/blob/1425743f/dsw/cxf-dosgi-rsa/src/main/java/org/apache/cxf/dosgi/dsw/service/DistributionProviderTracker.java ---------------------------------------------------------------------- diff --git a/dsw/cxf-dosgi-rsa/src/main/java/org/apache/cxf/dosgi/dsw/service/DistributionProviderTracker.java b/dsw/cxf-dosgi-rsa/src/main/java/org/apache/cxf/dosgi/dsw/service/DistributionProviderTracker.java deleted file mode 100644 index 675fcc6..0000000 --- a/dsw/cxf-dosgi-rsa/src/main/java/org/apache/cxf/dosgi/dsw/service/DistributionProviderTracker.java +++ /dev/null @@ -1,73 +0,0 @@ -/** - * 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.dsw.service; - -import java.util.Dictionary; -import java.util.Hashtable; - -import org.apache.cxf.dosgi.dsw.api.DistributionProvider; -import org.osgi.framework.Bundle; -import org.osgi.framework.BundleContext; -import org.osgi.framework.FrameworkUtil; -import org.osgi.framework.ServiceReference; -import org.osgi.framework.ServiceRegistration; -import org.osgi.service.remoteserviceadmin.RemoteServiceAdmin; -import org.osgi.util.tracker.ServiceTracker; -import org.slf4j.Logger; -import org.slf4j.LoggerFactory; - -@SuppressWarnings("rawtypes") -public class DistributionProviderTracker extends ServiceTracker<DistributionProvider, ServiceRegistration> { - private static final Logger LOG = LoggerFactory.getLogger(Activator.class); - - public DistributionProviderTracker(BundleContext context) { - super(context, DistributionProvider.class, null); - } - - @Override - public ServiceRegistration addingService(ServiceReference<DistributionProvider> reference) { - LOG.debug("RemoteServiceAdmin Implementation is starting up"); - DistributionProvider provider = context.getService(reference); - BundleContext apiContext = getAPIContext(); - RemoteServiceAdminCore rsaCore = new RemoteServiceAdminCore(context, - apiContext, - provider); - RemoteServiceadminFactory rsaf = new RemoteServiceadminFactory(rsaCore); - Dictionary<String, Object> props = new Hashtable<String, Object>(); - props.put("remote.intents.supported", reference.getProperty("remote.intents.supported")); - props.put("remote.configs.supported", reference.getProperty("remote.configs.supported")); - LOG.info("Registering RemoteServiceAdmin for provider " + provider.getClass().getName()); - return context.registerService(RemoteServiceAdmin.class.getName(), rsaf, props); - } - - protected BundleContext getAPIContext() { - Bundle apiBundle = FrameworkUtil.getBundle(DistributionProvider.class); - BundleContext apiContext = apiBundle.getBundleContext(); - return apiContext; - } - - @Override - public void removedService(ServiceReference<DistributionProvider> reference, - ServiceRegistration reg) { - LOG.debug("RemoteServiceAdmin Implementation is shutting down now"); - reg.unregister(); - super.removedService(reference, reg); - } - -} http://git-wip-us.apache.org/repos/asf/cxf-dosgi/blob/1425743f/dsw/cxf-dosgi-rsa/src/main/java/org/apache/cxf/dosgi/dsw/service/EventAdminHelper.java ---------------------------------------------------------------------- diff --git a/dsw/cxf-dosgi-rsa/src/main/java/org/apache/cxf/dosgi/dsw/service/EventAdminHelper.java b/dsw/cxf-dosgi-rsa/src/main/java/org/apache/cxf/dosgi/dsw/service/EventAdminHelper.java deleted file mode 100644 index 4868efa..0000000 --- a/dsw/cxf-dosgi-rsa/src/main/java/org/apache/cxf/dosgi/dsw/service/EventAdminHelper.java +++ /dev/null @@ -1,151 +0,0 @@ -/** - * 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.dsw.service; - -import java.util.HashMap; -import java.util.Map; - -import org.osgi.framework.BundleContext; -import org.osgi.framework.InvalidSyntaxException; -import org.osgi.framework.ServiceReference; -import org.osgi.framework.Version; -import org.osgi.service.event.Event; -import org.osgi.service.event.EventAdmin; -import org.osgi.service.remoteserviceadmin.EndpointDescription; -import org.osgi.service.remoteserviceadmin.RemoteServiceAdminEvent; -import org.slf4j.Logger; -import org.slf4j.LoggerFactory; - -public class EventAdminHelper { - - private static final Logger LOG = LoggerFactory.getLogger(EventAdminHelper.class); - - private BundleContext bctx; - - public EventAdminHelper(BundleContext bc) { - bctx = bc; - } - - private Event createEvent(Map<String, Object> props, String type) { - String topic = "org/osgi/service/remoteserviceadmin/" + type; - props.put("bundle", bctx.getBundle()); - props.put("bundle.id", bctx.getBundle().getBundleId()); - props.put("bundle.symbolicname", bctx.getBundle().getSymbolicName()); - - String version = (String)bctx.getBundle().getHeaders().get("Bundle-Version"); - Version v = version != null ? new Version(version) : Version.emptyVersion; - setIfNotNull(props, "bundle.version", v); - - return new Event(topic, props); - } - - public void notifyEventAdmin(RemoteServiceAdminEvent rsae) { - String topic = remoteServiceAdminEventTypeToString(rsae.getType()); - - Map<String, Object> props = new HashMap<String, Object>(); - setIfNotNull(props, "cause", rsae.getException()); - - EndpointDescription endpoint = null; - if (rsae.getImportReference() != null) { - endpoint = ((ImportRegistrationImpl)rsae.getImportReference()).getImportedEndpointAlways(); - setIfNotNull(props, "import.registration", endpoint); - } else if (rsae.getExportReference() != null) { - endpoint = rsae.getExportReference().getExportedEndpoint(); - setIfNotNull(props, "export.registration", endpoint); - } - - if (endpoint != null) { - setIfNotNull(props, "service.remote.id", endpoint.getServiceId()); - setIfNotNull(props, "service.remote.uuid", endpoint.getFrameworkUUID()); - setIfNotNull(props, "service.remote.uri", endpoint.getId()); - setIfNotNull(props, "objectClass", endpoint.getInterfaces().toArray()); - setIfNotNull(props, "service.imported.configs", endpoint.getConfigurationTypes()); - } - props.put("timestamp", System.currentTimeMillis()); - props.put("event", rsae); - - Event event = createEvent(props, topic); - notifyEventAdmins(topic, event); - } - - @SuppressWarnings({ - "rawtypes", "unchecked" - }) - private void notifyEventAdmins(String topic, Event event) { - ServiceReference[] refs = null; - try { - refs = bctx.getAllServiceReferences(EventAdmin.class.getName(), null); - } catch (InvalidSyntaxException e) { - LOG.error("Failed to get EventAdmin: " + e.getMessage(), e); - } - - if (refs != null) { - LOG.debug("Publishing event to {} EventAdmins; Topic:[{}]", refs.length, topic); - for (ServiceReference serviceReference : refs) { - EventAdmin eventAdmin = (EventAdmin) bctx.getService(serviceReference); - try { - eventAdmin.postEvent(event); - } finally { - if (eventAdmin != null) { - bctx.ungetService(serviceReference); - } - } - } - } - } - - private <K, V> void setIfNotNull(Map<K, V> map, K key, V val) { - if (val != null) { - map.put(key, val); - } - } - - private static String remoteServiceAdminEventTypeToString(int type) { - String retval; - switch (type) { - case RemoteServiceAdminEvent.EXPORT_ERROR: - retval = "EXPORT_ERROR"; - break; - case RemoteServiceAdminEvent.EXPORT_REGISTRATION: - retval = "EXPORT_REGISTRATION"; - break; - case RemoteServiceAdminEvent.EXPORT_UNREGISTRATION: - retval = "EXPORT_UNREGISTRATION"; - break; - case RemoteServiceAdminEvent.EXPORT_WARNING: - retval = "EXPORT_WARNING"; - break; - case RemoteServiceAdminEvent.IMPORT_ERROR: - retval = "IMPORT_ERROR"; - break; - case RemoteServiceAdminEvent.IMPORT_REGISTRATION: - retval = "IMPORT_REGISTRATION"; - break; - case RemoteServiceAdminEvent.IMPORT_UNREGISTRATION: - retval = "IMPORT_UNREGISTRATION"; - break; - case RemoteServiceAdminEvent.IMPORT_WARNING: - retval = "IMPORT_WARNING"; - break; - default: - retval = "UNKNOWN_EVENT"; - } - return retval; - } -} http://git-wip-us.apache.org/repos/asf/cxf-dosgi/blob/1425743f/dsw/cxf-dosgi-rsa/src/main/java/org/apache/cxf/dosgi/dsw/service/EventProducer.java ---------------------------------------------------------------------- diff --git a/dsw/cxf-dosgi-rsa/src/main/java/org/apache/cxf/dosgi/dsw/service/EventProducer.java b/dsw/cxf-dosgi-rsa/src/main/java/org/apache/cxf/dosgi/dsw/service/EventProducer.java deleted file mode 100644 index 26a46ab..0000000 --- a/dsw/cxf-dosgi-rsa/src/main/java/org/apache/cxf/dosgi/dsw/service/EventProducer.java +++ /dev/null @@ -1,114 +0,0 @@ -/** - * 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.dsw.service; - -import java.util.List; - -import org.osgi.framework.Bundle; -import org.osgi.framework.BundleContext; -import org.osgi.framework.InvalidSyntaxException; -import org.osgi.framework.ServiceReference; -import org.osgi.service.remoteserviceadmin.ExportRegistration; -import org.osgi.service.remoteserviceadmin.ImportRegistration; -import org.osgi.service.remoteserviceadmin.RemoteServiceAdminEvent; -import org.osgi.service.remoteserviceadmin.RemoteServiceAdminListener; -import org.slf4j.Logger; -import org.slf4j.LoggerFactory; - -public class EventProducer { - - private static final Logger LOG = LoggerFactory.getLogger(EventProducer.class); - private final BundleContext bctx; - private final EventAdminHelper eaHelper; - - public EventProducer(BundleContext bc) { - bctx = bc; - eaHelper = new EventAdminHelper(bctx); - } - - protected void publishNotification(List<ExportRegistration> erl) { - for (ExportRegistration exportRegistration : erl) { - publishNotification(exportRegistration); - } - } - - protected void publishNotification(ExportRegistration er) { - int type = er.getException() == null - ? RemoteServiceAdminEvent.EXPORT_REGISTRATION - : RemoteServiceAdminEvent.EXPORT_ERROR; - notify(type, null, er); - } - - protected void publishNotification(ImportRegistration ir) { - int type = ir.getException() == null - ? RemoteServiceAdminEvent.IMPORT_REGISTRATION - : RemoteServiceAdminEvent.IMPORT_ERROR; - notify(type, ir, null); - } - - public void notifyRemoval(ExportRegistration er) { - notify(RemoteServiceAdminEvent.EXPORT_UNREGISTRATION, null, er); - } - - public void notifyRemoval(ImportRegistration ir) { - notify(RemoteServiceAdminEvent.IMPORT_UNREGISTRATION, ir, null); - } - - // only one of ir or er must be set, and the other must be null - private void notify(int type, ImportRegistration ir, ExportRegistration er) { - try { - RemoteServiceAdminEvent event = ir != null - ? new RemoteServiceAdminEvent(type, bctx.getBundle(), ir.getImportReference(), ir.getException()) - : new RemoteServiceAdminEvent(type, bctx.getBundle(), er.getExportReference(), er.getException()); - notifyListeners(event); - eaHelper.notifyEventAdmin(event); - } catch (IllegalStateException ise) { - LOG.debug("can't send notifications since bundle context is no longer valid"); - } - } - - @SuppressWarnings({ - "rawtypes", "unchecked" - }) - private void notifyListeners(RemoteServiceAdminEvent rsae) { - try { - ServiceReference[] listenerRefs = bctx.getServiceReferences( - RemoteServiceAdminListener.class.getName(), null); - if (listenerRefs != null) { - for (ServiceReference sref : listenerRefs) { - RemoteServiceAdminListener rsal = (RemoteServiceAdminListener)bctx.getService(sref); - if (rsal != null) { - try { - Bundle bundle = sref.getBundle(); - if (bundle != null) { - LOG.debug("notify RemoteServiceAdminListener {} of bundle {}", - rsal, bundle.getSymbolicName()); - rsal.remoteAdminEvent(rsae); - } - } finally { - bctx.ungetService(sref); - } - } - } - } - } catch (InvalidSyntaxException e) { - LOG.error(e.getMessage(), e); - } - } -} http://git-wip-us.apache.org/repos/asf/cxf-dosgi/blob/1425743f/dsw/cxf-dosgi-rsa/src/main/java/org/apache/cxf/dosgi/dsw/service/ExportReferenceImpl.java ---------------------------------------------------------------------- diff --git a/dsw/cxf-dosgi-rsa/src/main/java/org/apache/cxf/dosgi/dsw/service/ExportReferenceImpl.java b/dsw/cxf-dosgi-rsa/src/main/java/org/apache/cxf/dosgi/dsw/service/ExportReferenceImpl.java deleted file mode 100644 index 497aa9c..0000000 --- a/dsw/cxf-dosgi-rsa/src/main/java/org/apache/cxf/dosgi/dsw/service/ExportReferenceImpl.java +++ /dev/null @@ -1,77 +0,0 @@ -/** - * 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.dsw.service; - -import org.osgi.framework.ServiceReference; -import org.osgi.service.remoteserviceadmin.EndpointDescription; -import org.osgi.service.remoteserviceadmin.ExportReference; - -@SuppressWarnings("rawtypes") -public class ExportReferenceImpl implements ExportReference { - - private ServiceReference serviceReference; - private EndpointDescription endpoint; - - public ExportReferenceImpl(ServiceReference serviceReference, EndpointDescription endpoint) { - this.serviceReference = serviceReference; - this.endpoint = endpoint; - } - - public ExportReferenceImpl(ExportReference exportReference) { - this(exportReference.getExportedService(), exportReference.getExportedEndpoint()); - } - - public EndpointDescription getExportedEndpoint() { - return endpoint; - } - - public ServiceReference getExportedService() { - return serviceReference; - } - - @Override - public int hashCode() { - final int prime = 31; - int result = 1; - result = prime * result + (endpoint == null ? 0 : endpoint.hashCode()); - result = prime * result + (serviceReference == null ? 0 : serviceReference.hashCode()); - return result; - } - - @Override - public boolean equals(Object obj) { - if (this == obj) { - return true; - } - if (obj == null || getClass() != obj.getClass()) { - return false; - } - ExportReferenceImpl other = (ExportReferenceImpl) obj; - boolean ed = endpoint == null ? other.endpoint == null - : endpoint.equals(other.endpoint); - boolean sr = serviceReference == null ? other.serviceReference == null - : serviceReference.equals(other.serviceReference); - return ed && sr; - } - - synchronized void close() { - this.endpoint = null; - this.serviceReference = null; - } -} http://git-wip-us.apache.org/repos/asf/cxf-dosgi/blob/1425743f/dsw/cxf-dosgi-rsa/src/main/java/org/apache/cxf/dosgi/dsw/service/ExportRegistrationImpl.java ---------------------------------------------------------------------- diff --git a/dsw/cxf-dosgi-rsa/src/main/java/org/apache/cxf/dosgi/dsw/service/ExportRegistrationImpl.java b/dsw/cxf-dosgi-rsa/src/main/java/org/apache/cxf/dosgi/dsw/service/ExportRegistrationImpl.java deleted file mode 100644 index d80bd40..0000000 --- a/dsw/cxf-dosgi-rsa/src/main/java/org/apache/cxf/dosgi/dsw/service/ExportRegistrationImpl.java +++ /dev/null @@ -1,152 +0,0 @@ -/** - * 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.dsw.service; - -import java.io.Closeable; -import java.io.IOException; -import java.util.Arrays; -import java.util.Map; -import java.util.Set; - -import org.apache.cxf.dosgi.dsw.api.Endpoint; -import org.osgi.framework.ServiceReference; -import org.osgi.service.remoteserviceadmin.EndpointDescription; -import org.osgi.service.remoteserviceadmin.ExportReference; -import org.osgi.service.remoteserviceadmin.ExportRegistration; -import org.slf4j.Logger; -import org.slf4j.LoggerFactory; - -@SuppressWarnings("rawtypes") -public class ExportRegistrationImpl implements ExportRegistration { - - private static final Logger LOG = LoggerFactory.getLogger(ExportRegistrationImpl.class); - - private final RemoteServiceAdminCore rsaCore; - private final ExportReferenceImpl exportReference; - private final Closeable server; - private final Throwable exception; - - private final ExportRegistrationImpl parent; - private int instanceCount; - private volatile boolean closed; - - private ExportRegistrationImpl(ExportRegistrationImpl parent, RemoteServiceAdminCore rsaCore, - ExportReferenceImpl exportReference, Closeable server, Throwable exception) { - this.parent = parent != null ? parent.parent : this; // a parent points to itself - this.parent.addInstance(); - this.rsaCore = rsaCore; - this.exportReference = exportReference; - this.server = server; - this.exception = exception; - } - - // create a clone of the provided ExportRegistrationImpl that is linked to it - public ExportRegistrationImpl(ExportRegistrationImpl parent) { - this(parent, parent.rsaCore, new ExportReferenceImpl(parent.exportReference), - parent.server, parent.exception); - } - - // create a new (parent) instance which was exported successfully with the given server - public ExportRegistrationImpl(ServiceReference sref, Endpoint endpoint, RemoteServiceAdminCore rsaCore) { - this(null, rsaCore, new ExportReferenceImpl(sref, endpoint.description()), endpoint, null); - } - - // create a new (parent) instance which failed to be exported with the given exception - public ExportRegistrationImpl(RemoteServiceAdminCore rsaCore, Throwable exception) { - this(null, rsaCore, null, null, exception); - } - - private void ensureParent() { - if (parent != this) { - throw new IllegalStateException("this method may only be called on the parent"); - } - } - - public ExportReference getExportReference() { - if (exportReference == null) { - throw new IllegalStateException(getException()); - } - return closed ? null : exportReference; - } - - public Throwable getException() { - return closed ? null : exception; - } - - public final void close() { - synchronized (this) { - if (closed) { - return; - } - closed = true; - } - - rsaCore.removeExportRegistration(this); - exportReference.close(); - parent.removeInstance(); - } - - private void addInstance() { - ensureParent(); - synchronized (this) { - instanceCount++; - } - } - - private void removeInstance() { - ensureParent(); - synchronized (this) { - instanceCount--; - if (instanceCount <= 0) { - LOG.debug("really closing ExportRegistration now!"); - - if (server != null) { - try { - server.close(); - } catch (IOException e) { - LOG.warn("Error closing ExportRegistration", e); - } - } - } - } - } - - @Override - public String toString() { - if (closed) { - return "ExportRegistration closed"; - } - EndpointDescription endpoint = getExportReference().getExportedEndpoint(); - ServiceReference serviceReference = getExportReference().getExportedService(); - String r = "EndpointDescription for ServiceReference " + serviceReference; - - r += "\n*** EndpointDescription: ****\n"; - if (endpoint == null) { - r += "---> NULL <---- \n"; - } else { - Set<Map.Entry<String, Object>> props = endpoint.getProperties().entrySet(); - for (Map.Entry<String, Object> entry : props) { - Object value = entry.getValue(); - r += entry.getKey() + " => " - + (value instanceof Object[] ? Arrays.toString((Object[]) value) : value) + "\n"; - } - } - return r; - } -} http://git-wip-us.apache.org/repos/asf/cxf-dosgi/blob/1425743f/dsw/cxf-dosgi-rsa/src/main/java/org/apache/cxf/dosgi/dsw/service/ImportRegistrationImpl.java ---------------------------------------------------------------------- diff --git a/dsw/cxf-dosgi-rsa/src/main/java/org/apache/cxf/dosgi/dsw/service/ImportRegistrationImpl.java b/dsw/cxf-dosgi-rsa/src/main/java/org/apache/cxf/dosgi/dsw/service/ImportRegistrationImpl.java deleted file mode 100644 index 2b896db..0000000 --- a/dsw/cxf-dosgi-rsa/src/main/java/org/apache/cxf/dosgi/dsw/service/ImportRegistrationImpl.java +++ /dev/null @@ -1,230 +0,0 @@ -/** - * 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.dsw.service; - -import java.util.ArrayList; -import java.util.List; - -import org.osgi.framework.ServiceReference; -import org.osgi.framework.ServiceRegistration; -import org.osgi.service.remoteserviceadmin.EndpointDescription; -import org.osgi.service.remoteserviceadmin.ImportReference; -import org.osgi.service.remoteserviceadmin.ImportRegistration; -import org.slf4j.Logger; -import org.slf4j.LoggerFactory; - -@SuppressWarnings("rawtypes") -public class ImportRegistrationImpl implements ImportRegistration, ImportReference { - - private static final Logger LOG = LoggerFactory.getLogger(ImportRegistrationImpl.class); - - private volatile Throwable exception; - private volatile ServiceRegistration importedService; // used only in parent - private EndpointDescription endpoint; - private volatile ClientServiceFactory clientServiceFactory; - private RemoteServiceAdminCore rsaCore; - private boolean closed; - private boolean detached; // used only in parent - - private ImportRegistrationImpl parent; - private List<ImportRegistrationImpl> children; // used only in parent - - public ImportRegistrationImpl(Throwable ex) { - exception = ex; - initParent(); - } - - public ImportRegistrationImpl(EndpointDescription endpoint, RemoteServiceAdminCore rsac) { - this.endpoint = endpoint; - this.rsaCore = rsac; - initParent(); - } - - /** - * Creates a clone of the given parent instance. - */ - public ImportRegistrationImpl(ImportRegistrationImpl ir) { - // we always want a link to the parent... - parent = ir.getParent(); - exception = parent.getException(); - endpoint = parent.getImportedEndpointDescription(); - clientServiceFactory = parent.clientServiceFactory; - rsaCore = parent.rsaCore; - - parent.instanceAdded(this); - } - - private void initParent() { - parent = this; - children = new ArrayList<ImportRegistrationImpl>(1); - } - - private void ensureParent() { - if (parent != this) { - throw new IllegalStateException("this method may only be called on the parent"); - } - } - - /** - * Called on parent when a child is added. - * - * @param iri the child - */ - private synchronized void instanceAdded(ImportRegistrationImpl iri) { - ensureParent(); - children.add(iri); - } - - /** - * Called on parent when a child is closed. - * - * @param iri the child - */ - private void instanceClosed(ImportRegistrationImpl iri) { - ensureParent(); - synchronized (this) { - children.remove(iri); - if (!children.isEmpty() || detached || !closed) { - return; - } - detached = true; - } - - LOG.debug("really closing ImportRegistration now"); - - if (importedService != null) { - try { - importedService.unregister(); - } catch (IllegalStateException ise) { - LOG.debug("imported service is already unregistered"); - } - importedService = null; - } - if (clientServiceFactory != null) { - clientServiceFactory.setCloseable(true); - } - } - - public void close() { - LOG.debug("close() called"); - - synchronized (this) { - if (isInvalid()) { - return; - } - closed = true; - } - rsaCore.removeImportRegistration(this); - parent.instanceClosed(this); - } - - /** - * Closes all ImportRegistrations which share the same parent as this one. - */ - public void closeAll() { - if (this == parent) { - LOG.info("closing down all child ImportRegistrations"); - - // we must iterate over a copy of children since close() removes the child - // from the list (which would cause a ConcurrentModificationException) - for (ImportRegistrationImpl ir : copyChildren()) { - ir.close(); - } - this.close(); - } else { - parent.closeAll(); - } - } - - private List<ImportRegistrationImpl> copyChildren() { - synchronized (this) { - return new ArrayList<ImportRegistrationImpl>(children); - } - } - - public EndpointDescription getImportedEndpointDescription() { - return isInvalid() ? null : endpoint; - } - - @Override - public EndpointDescription getImportedEndpoint() { - return getImportedEndpointDescription(); - } - - @Override - public ServiceReference getImportedService() { - return isInvalid() || parent.importedService == null ? null : parent.importedService.getReference(); - } - - @Override - public ImportReference getImportReference() { - return this; - } - - @Override - public Throwable getException() { - return exception; - } - - public void setException(Throwable ex) { - exception = ex; - } - - private synchronized boolean isInvalid() { - return exception != null || closed; - } - - /** - * Sets the {@link ServiceRegistration} representing the locally - * registered {@link ClientServiceFactory} service which provides - * proxies to the remote imported service. It is set only on the parent. - * - * @param sreg the ServiceRegistration - */ - public void setImportedServiceRegistration(ServiceRegistration sreg) { - ensureParent(); - importedService = sreg; - } - - /** - * Sets the {@link ClientServiceFactory} which is the implementation - * of the locally registered service which provides proxies to the - * remote imported service. It is set only on the parent. - * - * @param csf the ClientServiceFactory - */ - public void setClientServiceFactory(ClientServiceFactory csf) { - ensureParent(); - clientServiceFactory = csf; - } - - public ImportRegistrationImpl getParent() { - return parent; - } - - /** - * Returns the imported endpoint even if this - * instance is closed or has an exception. - * - * @return the imported endpoint - */ - public EndpointDescription getImportedEndpointAlways() { - return endpoint; - } -} http://git-wip-us.apache.org/repos/asf/cxf-dosgi/blob/1425743f/dsw/cxf-dosgi-rsa/src/main/java/org/apache/cxf/dosgi/dsw/service/PackageUtil.java ---------------------------------------------------------------------- diff --git a/dsw/cxf-dosgi-rsa/src/main/java/org/apache/cxf/dosgi/dsw/service/PackageUtil.java b/dsw/cxf-dosgi-rsa/src/main/java/org/apache/cxf/dosgi/dsw/service/PackageUtil.java deleted file mode 100644 index effcef1..0000000 --- a/dsw/cxf-dosgi-rsa/src/main/java/org/apache/cxf/dosgi/dsw/service/PackageUtil.java +++ /dev/null @@ -1,85 +0,0 @@ -/** - * 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.dsw.service; - -import org.osgi.framework.Bundle; -import org.osgi.framework.BundleContext; -import org.osgi.framework.ServiceReference; -import org.osgi.service.packageadmin.ExportedPackage; -import org.osgi.service.packageadmin.PackageAdmin; -import org.slf4j.Logger; -import org.slf4j.LoggerFactory; - -@SuppressWarnings("deprecation") -public final class PackageUtil { - - public static final Logger LOG = LoggerFactory.getLogger(PackageUtil.class); - - private PackageUtil() { - } - - /** - * Tries to retrieve the version of iClass via the PackageAdmin. - * - * @param iClass tThe interface for which the version should be found - * @param bc any valid BundleContext - * @return the version of the interface or "0.0.0" if no version information could be found or an error - * occurred during the retrieval - */ - public static String getVersion(Class<?> iClass, BundleContext bc) { - ServiceReference<PackageAdmin> paRef = bc.getServiceReference(PackageAdmin.class); - if (paRef != null) { - PackageAdmin pa = bc.getService(paRef); - try { - Bundle b = pa.getBundle(iClass); - if (b == null) { - LOG.info("Unable to find interface version for interface " + iClass.getName() - + ". Falling back to 0.0.0"); - return "0.0.0"; - } - LOG.debug("Interface source bundle: {}", b.getSymbolicName()); - - ExportedPackage[] ep = pa.getExportedPackages(b); - LOG.debug("Exported Packages of the source bundle: {}", (Object)ep); - - String pack = iClass.getPackage().getName(); - LOG.debug("Looking for Package: {}", pack); - if (ep != null) { - for (ExportedPackage p : ep) { - if (p != null - && pack.equals(p.getName())) { - LOG.debug("found package -> Version: {}", p.getVersion()); - return p.getVersion().toString(); - } - } - } - } finally { - if (pa != null) { - bc.ungetService(paRef); - } - } - } else { - LOG.error("Was unable to obtain the package admin service -> can't resolve interface versions"); - } - - LOG.info("Unable to find interface version for interface " + iClass.getName() - + ". Falling back to 0.0.0"); - return "0.0.0"; - } -}