Author: cziegeler Date: Wed Jan 27 10:48:06 2010 New Revision: 903602 URL: http://svn.apache.org/viewvc?rev=903602&view=rev Log: FELIX-1993 : Enhance configuration printer support Add new ModeAwareConfigurationPrinter interface which allows to pass the mode into the configuration printer. This allows a printer to print different things in different modes.
Added: felix/trunk/webconsole/src/main/java/org/apache/felix/webconsole/ModeAwareConfigurationPrinter.java (with props) Modified: felix/trunk/webconsole/src/main/java/org/apache/felix/webconsole/ConfigurationPrinter.java felix/trunk/webconsole/src/main/java/org/apache/felix/webconsole/internal/misc/ConfigurationRender.java Modified: felix/trunk/webconsole/src/main/java/org/apache/felix/webconsole/ConfigurationPrinter.java URL: http://svn.apache.org/viewvc/felix/trunk/webconsole/src/main/java/org/apache/felix/webconsole/ConfigurationPrinter.java?rev=903602&r1=903601&r2=903602&view=diff ============================================================================== --- felix/trunk/webconsole/src/main/java/org/apache/felix/webconsole/ConfigurationPrinter.java (original) +++ felix/trunk/webconsole/src/main/java/org/apache/felix/webconsole/ConfigurationPrinter.java Wed Jan 27 10:48:06 2010 @@ -42,28 +42,28 @@ String SERVICE = ConfigurationPrinter.class.getName(); /** The default mode - this printer is used in the web console and the zip. - * @since 2.2 */ + * @since 3.0 */ String MODE_ALWAYS = "always"; /** The web mode - this printer is used in the web console. - * since 2.2 */ + * since 3.0 */ String MODE_WEB = "web"; /** The zip mode - this printer is used in the zip. - * @since 2.2 */ + * @since 3.0 */ String MODE_ZIP = "zip"; /** The txt mode - this printer is used in the txt. - * @since 2.2 */ + * @since 3.0 */ String MODE_TXT = "txt"; /** - * The service property specifying the modes of the printer. If this - * property is missing or contains an unknown value, the default + * The optional service property specifying the modes of the printer. + * If this property is missing or contains an unknown value, the default * {...@link #MODE_ALWAYS} is used. * The value of this property is either a single string or an * array of strings. - * @since 2.2 + * @since 3.0 */ String PROPERTY_MODES = "modes"; Added: felix/trunk/webconsole/src/main/java/org/apache/felix/webconsole/ModeAwareConfigurationPrinter.java URL: http://svn.apache.org/viewvc/felix/trunk/webconsole/src/main/java/org/apache/felix/webconsole/ModeAwareConfigurationPrinter.java?rev=903602&view=auto ============================================================================== --- felix/trunk/webconsole/src/main/java/org/apache/felix/webconsole/ModeAwareConfigurationPrinter.java (added) +++ felix/trunk/webconsole/src/main/java/org/apache/felix/webconsole/ModeAwareConfigurationPrinter.java Wed Jan 27 10:48:06 2010 @@ -0,0 +1,50 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one + * or more contributor license agreements. See the NOTICE file + * distributed with this work for additional information + * regarding copyright ownership. The ASF licenses this file + * to you under the Apache License, Version 2.0 (the + * "License"); you may not use this file except in compliance + * with the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, + * software distributed under the License is distributed on an + * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY + * KIND, either express or implied. See the License for the + * specific language governing permissions and limitations + * under the License. + */ +package org.apache.felix.webconsole; + + +import java.io.PrintWriter; + + +/** + * This is an optional extension of the {...@link ConfigurationPrinter}. + * If a configuration printer implements this interface, the + * {...@link #printConfiguration(PrintWriter, String)} method is used + * for printing the configuration instead of the + * {...@link ConfigurationPrinter#printConfiguration(PrintWriter)} + * method. + * + * A service implementing this method must still register itself + * as a {...@link ConfigurationPrinter} but not as a + * {...@link ModeAwareConfigurationPrinter} service. + * @since 3.0 + */ +public interface ModeAwareConfigurationPrinter + extends ConfigurationPrinter +{ + + /** + * Prints the configuration report to the given <code>printWriter</code>. + * Implementations are free to print whatever information they deem useful. + * The <code>printWriter</code> may be flushed but must not be closed. + * @param printWriter The print writer to use. + * @param mode The rendering mode. + */ + void printConfiguration( PrintWriter printWriter, String mode ); +} Propchange: felix/trunk/webconsole/src/main/java/org/apache/felix/webconsole/ModeAwareConfigurationPrinter.java ------------------------------------------------------------------------------ svn:eol-style = native Propchange: felix/trunk/webconsole/src/main/java/org/apache/felix/webconsole/ModeAwareConfigurationPrinter.java ------------------------------------------------------------------------------ svn:keywords = author date id revision rev url Propchange: felix/trunk/webconsole/src/main/java/org/apache/felix/webconsole/ModeAwareConfigurationPrinter.java ------------------------------------------------------------------------------ svn:mime-type = text/plain Modified: felix/trunk/webconsole/src/main/java/org/apache/felix/webconsole/internal/misc/ConfigurationRender.java URL: http://svn.apache.org/viewvc/felix/trunk/webconsole/src/main/java/org/apache/felix/webconsole/internal/misc/ConfigurationRender.java?rev=903602&r1=903601&r2=903602&view=diff ============================================================================== --- felix/trunk/webconsole/src/main/java/org/apache/felix/webconsole/internal/misc/ConfigurationRender.java (original) +++ felix/trunk/webconsole/src/main/java/org/apache/felix/webconsole/internal/misc/ConfigurationRender.java Wed Jan 27 10:48:06 2010 @@ -27,8 +27,7 @@ import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; -import org.apache.felix.webconsole.ConfigurationPrinter; -import org.apache.felix.webconsole.WebConsoleConstants; +import org.apache.felix.webconsole.*; import org.apache.felix.webconsole.internal.BaseWebConsolePlugin; import org.apache.felix.webconsole.internal.Util; import org.osgi.framework.ServiceReference; @@ -178,7 +177,7 @@ final PrinterDesc desc = (PrinterDesc) cpi.next(); if ( desc.match(mode) ) { - printConfigurationPrinter( pw, desc.printer ); + printConfigurationPrinter( pw, desc.printer, mode ); } } } @@ -264,10 +263,19 @@ // } - private void printConfigurationPrinter( ConfigurationWriter pw, ConfigurationPrinter cp ) + private void printConfigurationPrinter( final ConfigurationWriter pw, + final ConfigurationPrinter cp, + final String mode ) { pw.title( cp.getTitle() ); - cp.printConfiguration( pw ); + if ( cp instanceof ModeAwareConfigurationPrinter ) + { + ((ModeAwareConfigurationPrinter)cp).printConfiguration( pw , mode); + } + else + { + cp.printConfiguration( pw ); + } pw.end(); }