You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@tuscany.apache.org by rf...@apache.org on 2009/04/03 00:44:42 UTC
svn commit: r761458 -
/tuscany/java/sca/modules/extensibility-equinox/src/main/java/org/apache/tuscany/sca/extensibility/equinox/EquinoxServiceDiscoverer.java
Author: rfeng
Date: Thu Apr 2 22:44:41 2009
New Revision: 761458
URL: http://svn.apache.org/viewvc?rev=761458&view=rev
Log:
Add logic to avoid duplicate URLs
Modified:
tuscany/java/sca/modules/extensibility-equinox/src/main/java/org/apache/tuscany/sca/extensibility/equinox/EquinoxServiceDiscoverer.java
Modified: tuscany/java/sca/modules/extensibility-equinox/src/main/java/org/apache/tuscany/sca/extensibility/equinox/EquinoxServiceDiscoverer.java
URL: http://svn.apache.org/viewvc/tuscany/java/sca/modules/extensibility-equinox/src/main/java/org/apache/tuscany/sca/extensibility/equinox/EquinoxServiceDiscoverer.java?rev=761458&r1=761457&r2=761458&view=diff
==============================================================================
--- tuscany/java/sca/modules/extensibility-equinox/src/main/java/org/apache/tuscany/sca/extensibility/equinox/EquinoxServiceDiscoverer.java (original)
+++ tuscany/java/sca/modules/extensibility-equinox/src/main/java/org/apache/tuscany/sca/extensibility/equinox/EquinoxServiceDiscoverer.java Thu Apr 2 22:44:41 2009
@@ -6,15 +6,15 @@
* 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.
+ * under the License.
*/
package org.apache.tuscany.sca.extensibility.equinox;
@@ -118,7 +118,7 @@
}
}
-
+
/**
* Empty static method to trigger the activation of this bundle.
*/
@@ -154,7 +154,7 @@
/**
* Parse a service declaration in the form class;attr=value,attr=value and
* return a map of attributes
- *
+ *
* @param declaration
* @return a map of attributes
*/
@@ -185,7 +185,7 @@
}
return attributes;
}
-
+
public ServiceDeclaration getFirstServiceDeclaration(String name) throws IOException {
Set<ServiceDeclaration> declarations = getServiceDeclarations(name);
if (declarations.isEmpty()) {
@@ -203,6 +203,7 @@
boolean isPropertyFile = "javax.xml.xpath.XPathFactory".equals(serviceName);
serviceName = "META-INF/services/" + serviceName;
+ Set<URL> visited = new HashSet<URL>();
for (Bundle bundle : context.getBundles()) {
if (bundle.getBundleId() == 0 || bundle.getHeaders().get(Constants.FRAGMENT_HOST) != null) {
// Skip system bundle as it has access to the application classloader
@@ -214,7 +215,7 @@
// Use getResources to find resources on the classpath of the bundle
// Please note there are cases that getResources will return null even
// the bundle containing such entries:
- // 1. There is a match on Import-Package or DynamicImport-Package, and another
+ // 1. There is a match on Import-Package or DynamicImport-Package, and another
// bundle exports the resource package, there is a possiblity that it doesn't
// find the containing entry
// 2. The bundle cannot be resolved, then getResources will return null
@@ -240,6 +241,11 @@
while (urls.hasMoreElements()) {
final URL url = urls.nextElement();
+ if (!visited.add(url)) {
+ // The URL has already been processed
+ continue;
+ }
+
if (debug) {
logger.fine("Reading service provider file: " + url.toExternalForm());
}