[ 
https://issues.apache.org/jira/browse/FELIX-3784?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
 ]

Felix Meschberger resolved FELIX-3784.
--------------------------------------

    Resolution: Fixed

Refactored support for Configuration Admin Service in Rev. 1425765

For Web Console configuration the ConfigurationSupport class is split into the 
pure ManagedService implementation and an extension also implementing the 
MetatypeProvider interface for Metatype Service support. Depending on API 
available one or the other class is instantiated.

The ConfigManager and ConfigurationAdminConfigurationPrinter classes are moved 
to a new "configuration" package and split. The goal is to reduce and separate 
dependencies on Configuration Admin and Metatype Service API and to prevent 
exceptions and and "uncontrolled" behavior in the absence of the API.
                
> Configuration Admin tab not working when Metatype Service API is missing
> ------------------------------------------------------------------------
>
>                 Key: FELIX-3784
>                 URL: https://issues.apache.org/jira/browse/FELIX-3784
>             Project: Felix
>          Issue Type: Bug
>          Components: Web Console
>    Affects Versions: webconsole-4.0.0
>            Reporter: Felix Meschberger
>            Assignee: Felix Meschberger
>             Fix For: webconsole-4.0.2
>
>
> When the MetaType Service API is missing the Web Console Configuration Admin 
> tab is non-operational:
> * displaying the "configMgr" label instead of a title
> * sending 404/NOT FOUND when accessed
> * logging an error message (see at the bottom)
> The ConfigurationAdmin plugin should be refactored such, that:
>   * It operates without the MetaType Service API available
>       (already copes with missing MetaType Service instance)
>   * It properly handles missing Configuration Admin API
>       (same as for missing Configuration Admin Service instance)
> [ERROR] Failed to instantiate plugin 
> org.apache.felix.webconsole.internal.compendium.ConfigManager
> java.lang.NoClassDefFoundError: 
> org/osgi/service/metatype/ObjectClassDefinition
>       at java.lang.Class.getDeclaredConstructors0(Native Method)
>       at java.lang.Class.privateGetDeclaredConstructors(Class.java:2404)
>       at java.lang.Class.getConstructor0(Class.java:2714)
>       at java.lang.Class.newInstance0(Class.java:343)
>       at java.lang.Class.newInstance(Class.java:325)
>       at 
> org.apache.felix.webconsole.internal.servlet.PluginHolder$InternalPlugin.doGetConsolePlugin(PluginHolder.java:748)
>       at 
> org.apache.felix.webconsole.internal.servlet.PluginHolder$Plugin.getConsolePlugin(PluginHolder.java:535)
>       at 
> org.apache.felix.webconsole.internal.servlet.PluginHolder$Plugin.doGetTitle(PluginHolder.java:522)
>       at 
> org.apache.felix.webconsole.internal.servlet.PluginHolder$Plugin.getTitle(PluginHolder.java:512)
>       at 
> org.apache.felix.webconsole.internal.servlet.PluginHolder.getLocalizedLabelMap(PluginHolder.java:248)
>       at 
> org.apache.felix.webconsole.internal.servlet.OsgiManager.service(OsgiManager.java:470)
>       at 
> org.apache.felix.webconsole.internal.servlet.OsgiManager.service(OsgiManager.java:418)
>       at 
> org.apache.felix.http.base.internal.handler.ServletHandler.doHandle(ServletHandler.java:96)
>       at 
> org.apache.felix.http.base.internal.handler.ServletHandler.handle(ServletHandler.java:79)
>       at 
> org.apache.felix.http.base.internal.dispatch.ServletPipeline.handle(ServletPipeline.java:42)
>       at 
> org.apache.felix.http.base.internal.dispatch.InvocationFilterChain.doFilter(InvocationFilterChain.java:49)
>       at 
> org.apache.felix.http.base.internal.dispatch.HttpFilterChain.doFilter(HttpFilterChain.java:33)
>       at 
> org.apache.felix.http.base.internal.dispatch.FilterPipeline.dispatch(FilterPipeline.java:48)
>       at 
> org.apache.felix.http.base.internal.dispatch.Dispatcher.dispatch(Dispatcher.java:39)
>       at 
> org.apache.felix.http.base.internal.DispatcherServlet.service(DispatcherServlet.java:67)
>       at javax.servlet.http.HttpServlet.service(HttpServlet.java:820)
>       at 
> org.mortbay.jetty.servlet.ServletHolder.handle(ServletHolder.java:511)
>       at 
> org.mortbay.jetty.servlet.ServletHandler.handle(ServletHandler.java:390)
>       at 
> org.mortbay.jetty.servlet.SessionHandler.handle(SessionHandler.java:182)
>       at 
> org.mortbay.jetty.handler.ContextHandler.handle(ContextHandler.java:765)
>       at 
> org.mortbay.jetty.handler.HandlerWrapper.handle(HandlerWrapper.java:152)
>       at org.mortbay.jetty.Server.handle(Server.java:326)
>       at 
> org.mortbay.jetty.HttpConnection.handleRequest(HttpConnection.java:542)
>       at 
> org.mortbay.jetty.HttpConnection$RequestHandler.headerComplete(HttpConnection.java:926)
>       at org.mortbay.jetty.HttpParser.parseNext(HttpParser.java:549)
>       at org.mortbay.jetty.HttpParser.parseAvailable(HttpParser.java:212)
>       at org.mortbay.jetty.HttpConnection.handle(HttpConnection.java:404)
>       at 
> org.mortbay.io.nio.SelectChannelEndPoint.run(SelectChannelEndPoint.java:410)
>       at 
> org.mortbay.thread.QueuedThreadPool$PoolThread.run(QueuedThreadPool.java:582)
> Caused by: java.lang.ClassNotFoundException: 
> org.osgi.service.metatype.ObjectClassDefinition not found by 
> org.apache.felix.webconsole.all [10]
>       at 
> org.apache.felix.framework.BundleWiringImpl.findClassOrResourceByDelegation(BundleWiringImpl.java:1460)
>       at 
> org.apache.felix.framework.BundleWiringImpl.access$400(BundleWiringImpl.java:72)
>       at 
> org.apache.felix.framework.BundleWiringImpl$BundleClassLoader.loadClass(BundleWiringImpl.java:1843)
>       at java.lang.ClassLoader.loadClass(ClassLoader.java:356)
>       ... 34 more

--
This message is automatically generated by JIRA.
If you think it was sent incorrectly, please contact your JIRA administrators
For more information on JIRA, see: http://www.atlassian.com/software/jira

Reply via email to