You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@felix.apache.org by cz...@apache.org on 2008/12/01 16:06:11 UTC

svn commit: r722090 - in /felix/trunk/scrplugin/src/main/java/org/apache/felix/scrplugin: tags/JavaClassDescriptorManager.java xml/ComponentDescriptorIO.java

Author: cziegeler
Date: Mon Dec  1 07:06:11 2008
New Revision: 722090

URL: http://svn.apache.org/viewvc?rev=722090&view=rev
Log:
FELIX-840: Ignore invalid scr files in dependent bundles.

Modified:
    felix/trunk/scrplugin/src/main/java/org/apache/felix/scrplugin/tags/JavaClassDescriptorManager.java
    felix/trunk/scrplugin/src/main/java/org/apache/felix/scrplugin/xml/ComponentDescriptorIO.java

Modified: felix/trunk/scrplugin/src/main/java/org/apache/felix/scrplugin/tags/JavaClassDescriptorManager.java
URL: http://svn.apache.org/viewvc/felix/trunk/scrplugin/src/main/java/org/apache/felix/scrplugin/tags/JavaClassDescriptorManager.java?rev=722090&r1=722089&r2=722090&view=diff
==============================================================================
--- felix/trunk/scrplugin/src/main/java/org/apache/felix/scrplugin/tags/JavaClassDescriptorManager.java (original)
+++ felix/trunk/scrplugin/src/main/java/org/apache/felix/scrplugin/tags/JavaClassDescriptorManager.java Mon Dec  1 07:06:11 2008
@@ -158,7 +158,10 @@
                                     while ( st.hasMoreTokens() ) {
                                         final String entry = st.nextToken().trim();
                                         if ( entry.length() > 0 ) {
-                                            components.addAll(this.readServiceComponentDescriptor(artifact, entry).getComponents());
+                                            final Components c = this.readServiceComponentDescriptor(artifact, entry);
+                                            if ( c != null ) {
+                                                components.addAll(c.getComponents());
+                                            }
                                         }
                                     }
                                 } else {
@@ -242,18 +245,26 @@
      * @throws IOException
      * @throws MojoExecutionException
      */
-    protected Components readServiceComponentDescriptor(Artifact artifact, String entry)
-    throws IOException, MojoExecutionException {
+    protected Components readServiceComponentDescriptor(Artifact artifact, String entry) {
         this.log.debug("Reading " + entry + " from " + artifact);
-        final File xml = this.getFile(artifact, entry);
-        if ( xml == null ) {
-            throw new MojoExecutionException("Artifact " + artifact + " does not contain declared service component descriptor " + entry);
+        try {
+            final File xml = this.getFile(artifact, entry);
+            if ( xml == null ) {
+                throw new MojoExecutionException("Artifact " + artifact + " does not contain declared service component descriptor " + entry);
+            }
+            return this.parseServiceComponentDescriptor(artifact, xml);
+        } catch (IOException mee) {
+            this.log.warn("Unable to read SCR descriptor file from artifact " + artifact + " at " + entry);
+            this.log.debug("Exception occurred during reading: " + mee.getMessage(), mee);
+        } catch (MojoExecutionException mee) {
+            this.log.warn("Unable to read SCR descriptor file from artifact " + artifact + " at " + entry);
+            this.log.debug("Exception occurred during reading: " + mee.getMessage(), mee);
         }
-        return this.parseServiceComponentDescriptor(artifact, xml);
+        return null;
     }
 
     protected Components parseServiceComponentDescriptor(Artifact artifact, File file)
-    throws IOException, MojoExecutionException {
+    throws MojoExecutionException {
         this.log.debug("Parsing " + file);
         final Components list = ComponentDescriptorIO.read(file);
         return list;

Modified: felix/trunk/scrplugin/src/main/java/org/apache/felix/scrplugin/xml/ComponentDescriptorIO.java
URL: http://svn.apache.org/viewvc/felix/trunk/scrplugin/src/main/java/org/apache/felix/scrplugin/xml/ComponentDescriptorIO.java?rev=722090&r1=722089&r2=722090&view=diff
==============================================================================
--- felix/trunk/scrplugin/src/main/java/org/apache/felix/scrplugin/xml/ComponentDescriptorIO.java (original)
+++ felix/trunk/scrplugin/src/main/java/org/apache/felix/scrplugin/xml/ComponentDescriptorIO.java Mon Dec  1 07:06:11 2008
@@ -78,7 +78,7 @@
             IOUtils.parse(file, xmlHandler);
             return xmlHandler.components;
         } catch (TransformerException e) {
-            throw new MojoExecutionException("Unable to read xml.", e);
+            throw new MojoExecutionException("Unable to read xml from " + file, e);
         } catch (IOException e) {
             throw new MojoExecutionException("Unable to read xml from " + file, e);
         }
@@ -283,14 +283,10 @@
         IOUtils.addAttribute(ai, "cardinality", reference.getCardinality());
         IOUtils.addAttribute(ai, "policy", reference.getPolicy());
         IOUtils.addAttribute(ai, "target", reference.getTarget());
-        
-        if (!reference.isLookupStrategy()) {
-            IOUtils.addAttribute(ai, "bind", reference.getBind());
-            IOUtils.addAttribute(ai, "unbind", reference.getUnbind());
-        }
+        IOUtils.addAttribute(ai, "bind", reference.getBind());
+        IOUtils.addAttribute(ai, "unbind", reference.getUnbind());
         if ( isScrPrivateFile ) {
             IOUtils.addAttribute(ai, "checked", String.valueOf(reference.isChecked()));
-            IOUtils.addAttribute(ai, "strategy", reference.getStrategy());
         }
         IOUtils.indent(contentHandler, 2);
         contentHandler.startElement(INNER_NAMESPACE_URI, ComponentDescriptorIO.REFERENCE, ComponentDescriptorIO.REFERENCE_QNAME, ai);
@@ -424,7 +420,6 @@
                     ref.setTarget(attributes.getValue("target"));
                     ref.setBind(attributes.getValue("bind"));
                     ref.setUnbind(attributes.getValue("unbind"));
-                    ref.setStrategy(attributes.getValue("strategy"));
 
                     if ( attributes.getValue("checked") != null ) {
                         ref.setChecked(Boolean.valueOf(attributes.getValue("checked")).booleanValue());