Mark Raynsford created FELIX-6136:
-------------------------------------

             Summary: Consider Equinox-style exception formatting
                 Key: FELIX-6136
                 URL: https://issues.apache.org/jira/browse/FELIX-6136
             Project: Felix
          Issue Type: Improvement
          Components: Framework
            Reporter: Mark Raynsford


Hello!

One common complaint with OSGi implementations is that requirements issues 
often produce unreadable error messages. In Eclipse Equinox, requirements 
messages are carefully formatted and this tends to improve readability a lot. 
Consider this Felix error message:

{noformat}
ERROR: Bundle org.sakaiproject.nakamura.world [76] Error 
startingfile:bundles/org.sakaiproject.nakamura.world_1.4.0.SNAPSHOT.jar(org.osgi.framework.BundleException:
 Unresolved constraint in bundleorg.sakaiproject.nakamura.world [76]: Unable to 
resolve 76.0: missingrequirement [76.0] 
osgi.wiring.package;(&(osgi.wiring.package=javax.servlet)(version>=3.0.0))) 
11.07.2012  17:01:43.297 *ERROR* 
[FelixDispatchQueue]org.sakaiproject.nakamura.world FrameworkEvent 
ERROR(org.osgi.framework.BundleException: Unresolved constraint in 
bundleorg.sakaiproject.nakamura.world [76]: Unable to resolve 76.0: 
missingrequirement [76.0] 
osgi.wiring.package;(&(osgi.wiring.package=javax.servlet)(version>=3.0.0)))  
org.osgi.framework.BundleException: Unresolved constraint in 
bundleorg.sakaiproject.nakamura.world [76]: Unable to resolve 76.0: 
missingrequirement [76.0] 
osgi.wiring.package;(&(osgi.wiring.package=javax.servlet)(version>=3.0.0))  
{noformat}

Now consider this similar message from Equinox:

{noformat}
org.osgi.framework.BundleException: Could not resolve module: z.resolveError [9]
  Unresolved requirement: Import-Package: unresolved.exporter
    -> Export-Package: unresolved.exporter; 
bundle-symbolic-name="z.unresolved.exporter"; bundle-version="1.0.0.qualifier"; 
version="0.0.0"
      z.unresolved.exporter [10]
        Unresolved requirement: Import-Package: does.not.exist
{noformat}

According to Thomas Watson, this is achieved by "indenting the chains until we 
get to a requirement that has no available candidates".




--
This message was sent by Atlassian JIRA
(v7.6.3#76005)

Reply via email to