Author: lindner
Date: Tue Sep  2 16:00:47 2008
New Revision: 691417

URL: http://svn.apache.org/viewvc?rev=691417&view=rev
Log:
SHINDIG-227 | Better exception handling from Uriel Chemouni.  Modified patch to 
work with trunk, some changes already implemented in GadgetSpecFactory

Modified:
    
incubator/shindig/trunk/java/gadgets/src/main/java/org/apache/shindig/gadgets/GadgetServer.java
    
incubator/shindig/trunk/java/gadgets/src/main/java/org/apache/shindig/gadgets/spec/GadgetSpec.java
    
incubator/shindig/trunk/java/gadgets/src/main/java/org/apache/shindig/gadgets/spec/SpecParserException.java

Modified: 
incubator/shindig/trunk/java/gadgets/src/main/java/org/apache/shindig/gadgets/GadgetServer.java
URL: 
http://svn.apache.org/viewvc/incubator/shindig/trunk/java/gadgets/src/main/java/org/apache/shindig/gadgets/GadgetServer.java?rev=691417&r1=691416&r2=691417&view=diff
==============================================================================
--- 
incubator/shindig/trunk/java/gadgets/src/main/java/org/apache/shindig/gadgets/GadgetServer.java
 (original)
+++ 
incubator/shindig/trunk/java/gadgets/src/main/java/org/apache/shindig/gadgets/GadgetServer.java
 Tue Sep  2 16:00:47 2008
@@ -151,13 +151,20 @@
     Set<String> needed = features.keySet();
     Set<String> unsupported = new HashSet<String>();
     Collection<GadgetFeature> feats = registry.getFeatures(needed, 
unsupported);
+
     if (!unsupported.isEmpty()) {
+      // Remove non-required libs
       for (String missing : unsupported) {
-        if (features.get(missing).getRequired()) {
-          throw new UnsupportedFeatureException(missing);
+        if (!features.get(missing).getRequired()) {
+          unsupported.remove(missing);
         }
       }
+      // Throw error with full list of unsupported libraries
+      if (!unsupported.isEmpty()) {
+        throw new UnsupportedFeatureException(unsupported.toString());
+      }
     }
+
     Collection<JsLibrary> libraries = new LinkedList<JsLibrary>();
     for (GadgetFeature feature : feats) {
       libraries.addAll(feature.getJsLibraries(

Modified: 
incubator/shindig/trunk/java/gadgets/src/main/java/org/apache/shindig/gadgets/spec/GadgetSpec.java
URL: 
http://svn.apache.org/viewvc/incubator/shindig/trunk/java/gadgets/src/main/java/org/apache/shindig/gadgets/spec/GadgetSpec.java?rev=691417&r1=691416&r2=691417&view=diff
==============================================================================
--- 
incubator/shindig/trunk/java/gadgets/src/main/java/org/apache/shindig/gadgets/spec/GadgetSpec.java
 (original)
+++ 
incubator/shindig/trunk/java/gadgets/src/main/java/org/apache/shindig/gadgets/spec/GadgetSpec.java
 Tue Sep  2 16:00:47 2008
@@ -162,8 +162,7 @@
     try {
       doc = XmlUtil.parse(xml);
     } catch (XmlException e) {
-      throw new SpecParserException("Malformed XML in file " + url.toString()
-          + ": " + e.getMessage());
+      throw new SpecParserException("Malformed XML in file " + url.toString(), 
e);
     }
     this.url = url;
 

Modified: 
incubator/shindig/trunk/java/gadgets/src/main/java/org/apache/shindig/gadgets/spec/SpecParserException.java
URL: 
http://svn.apache.org/viewvc/incubator/shindig/trunk/java/gadgets/src/main/java/org/apache/shindig/gadgets/spec/SpecParserException.java?rev=691417&r1=691416&r2=691417&view=diff
==============================================================================
--- 
incubator/shindig/trunk/java/gadgets/src/main/java/org/apache/shindig/gadgets/spec/SpecParserException.java
 (original)
+++ 
incubator/shindig/trunk/java/gadgets/src/main/java/org/apache/shindig/gadgets/spec/SpecParserException.java
 Tue Sep  2 16:00:47 2008
@@ -34,4 +34,9 @@
   public SpecParserException(XmlException e) {
     super(GadgetException.Code.MALFORMED_XML_DOCUMENT, e);
   }
+  
+  public SpecParserException(String message, XmlException e) {
+    super(GadgetException.Code.MALFORMED_XML_DOCUMENT, message, e);
+  }
+  
 }


Reply via email to