Modified bundle repository to not catch exceptions that occur when adding
new repository URLs; this allows clients to know when there is a problem
with a URL. On service startup, bad URLs are simply ignored.
git-svn-id: https://svn.apache.org/repos/asf/incubator/felix/trunk@409943 13f79535-47bb-0310-9956-ffa450edef68
diff --git a/org.apache.felix.bundlerepository/src/main/java/org/apache/felix/bundlerepository/RepositoryAdminImpl.java b/org.apache.felix.bundlerepository/src/main/java/org/apache/felix/bundlerepository/RepositoryAdminImpl.java
index 6325811..2042c5f 100644
--- a/org.apache.felix.bundlerepository/src/main/java/org/apache/felix/bundlerepository/RepositoryAdminImpl.java
+++ b/org.apache.felix.bundlerepository/src/main/java/org/apache/felix/bundlerepository/RepositoryAdminImpl.java
@@ -171,10 +171,20 @@
for (int i = 0; i < m_urlList.size(); i++)
{
URL url = (URL) m_urlList.get(i);
- Repository repo = new RepositoryImpl(url);
- if (repo != null)
+ try
{
- m_repoMap.put(url, repo);
+ Repository repo = new RepositoryImpl(url);
+ if (repo != null)
+ {
+ m_repoMap.put(url, repo);
+ }
+ }
+ catch (Exception ex)
+ {
+ System.err.println(
+ "RepositoryAdminImpl: Exception creating repository - " + ex);
+ System.err.println(
+ "RepositoryAdminImpl: Ignoring repository " + url);
}
}
}
diff --git a/org.apache.felix.bundlerepository/src/main/java/org/apache/felix/bundlerepository/RepositoryImpl.java b/org.apache.felix.bundlerepository/src/main/java/org/apache/felix/bundlerepository/RepositoryImpl.java
index ca73ecf..2a24caf 100644
--- a/org.apache.felix.bundlerepository/src/main/java/org/apache/felix/bundlerepository/RepositoryImpl.java
+++ b/org.apache.felix.bundlerepository/src/main/java/org/apache/felix/bundlerepository/RepositoryImpl.java
@@ -38,7 +38,7 @@
// Reusable comparator for sorting resources by name.
private ResourceComparator m_nameComparator = new ResourceComparator();
- public RepositoryImpl(URL url)
+ public RepositoryImpl(URL url) throws Exception
{
m_url = url;
parseRepositoryFile(m_hopCount);
@@ -59,7 +59,6 @@
return m_resources;
}
- // TODO: OBR - Wrong parameter type from metadata parser.
public void addResource(Resource resource)
{
// Set resource's repository.
@@ -118,7 +117,7 @@
return null;
}
- private void parseRepositoryFile(int hopCount)
+ private void parseRepositoryFile(int hopCount) throws Exception
{
// TODO: OBR - Implement hop count.
InputStream is = null;
@@ -146,56 +145,34 @@
// Create the parser Kxml
XmlCommonHandler handler = new XmlCommonHandler();
- try
- {
- Object factory = new Object() {
- public RepositoryImpl newInstance()
- {
- return RepositoryImpl.this;
- }
- };
+ Object factory = new Object() {
+ public RepositoryImpl newInstance()
+ {
+ return RepositoryImpl.this;
+ }
+ };
- // Get default setter method for Repository.
- Method repoSetter = RepositoryImpl.class.getDeclaredMethod(
- "put", new Class[] { Object.class, Object.class });
+ // Get default setter method for Repository.
+ Method repoSetter = RepositoryImpl.class.getDeclaredMethod(
+ "put", new Class[] { Object.class, Object.class });
- // Get default setter method for Resource.
- Method resSetter = ResourceImpl.class.getDeclaredMethod(
- "put", new Class[] { Object.class, Object.class });
+ // Get default setter method for Resource.
+ Method resSetter = ResourceImpl.class.getDeclaredMethod(
+ "put", new Class[] { Object.class, Object.class });
- // Map XML tags to types.
- handler.addType("repository", factory, Repository.class, repoSetter);
- handler.addType("resource", ResourceImpl.class, Resource.class, resSetter);
- handler.addType("category", CategoryImpl.class, null, null);
- handler.addType("require", RequirementImpl.class, Requirement.class, null);
- handler.addType("capability", CapabilityImpl.class, Capability.class, null);
- handler.addType("p", PropertyImpl.class, null, null);
- handler.setDefaultType(String.class, null, null);
- }
- catch (Exception ex)
- {
- System.err.println("RepositoryAdminImpl: " + ex);
- }
+ // Map XML tags to types.
+ handler.addType("repository", factory, Repository.class, repoSetter);
+ handler.addType("resource", ResourceImpl.class, Resource.class, resSetter);
+ handler.addType("category", CategoryImpl.class, null, null);
+ handler.addType("require", RequirementImpl.class, Requirement.class, null);
+ handler.addType("capability", CapabilityImpl.class, Capability.class, null);
+ handler.addType("p", PropertyImpl.class, null, null);
+ handler.setDefaultType(String.class, null, null);
br = new BufferedReader(new InputStreamReader(is));
KXml2SAXParser parser;
- try
- {
- parser = new KXml2SAXParser(br);
- parser.parseXML(handler);
- }
- catch (Exception ex)
- {
- ex.printStackTrace();
- }
- }
- catch (MalformedURLException ex)
- {
- System.err.println("RepositoryAdminImpl: " + ex);
- }
- catch (IOException ex)
- {
- System.err.println("RepositoryAdminImpl: " + ex);
+ parser = new KXml2SAXParser(br);
+ parser.parseXML(handler);
}
finally
{