blob: 435c4aa22826aeb54fde221e469eddbde0f36c5c [file] [log] [blame]
/*
* 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.inventory;
import java.io.PrintWriter;
import org.osgi.annotation.versioning.ConsumerType;
/**
* The <code>InventoryPrinter</code> is a service interface to be
* implemented by providers which want to hook into the display of the
* current configuration and state of the OSGi framework and application.
* <p>
* The following service registration properties further declare the
* {@code InventoryPrinter} service:
* <ul>
* <li>{@link #FORMAT} - the supported formats</li>
* <li>{@link #TITLE} - the printer title</li>
* <li>{@link #NAME} - the printer name</li>
* <li>{@link #WEBCONSOLE} - whether to confine the printer to the Web Console</li>
* </ul>
*/
@ConsumerType
public interface InventoryPrinter
{
/**
* The service name under which services of this class must be registered
* to be picked for inclusion in the configuration report.
*/
String SERVICE = "org.apache.felix.inventory.InventoryPrinter"; //$NON-NLS-1$
/**
* The property defining one or more supported formats. The value of this
* property is either a string, a string array or a Collection<String>
* containing valid names of the constants defined in the {@link Format}
* class.
* <p>
* Any unknown formats are ignored. If this property is not declared or does
* not declare any known formats, the {@link Format#TEXT} format is assumed
* as the printer's supported format.
*/
String FORMAT = "felix.inventory.printer.format"; //$NON-NLS-1$
/**
* The unique name (or label) of the printer.
* <p>
* If this property is missing or an empty string, the name is constructed
* from the string {@code InventoryPrinter} and the service's
* {@code service.id} property.
*/
String NAME = "felix.inventory.printer.name"; //$NON-NLS-1$
/**
* The title displayed by tools when this printer is used. It should be
* descriptive but short.
* <p>
* If this property is missing or an empty string, the {@link #NAME} value
* is used as the title.
*/
String TITLE = "felix.inventory.printer.title"; //$NON-NLS-1$
/**
* The inventory printer feature has first class integration with the
* Apache Felix Web Console. This service registration property can be used
* to hide an inventory printer service from the Web Console. The service
* will still be called to generate the single file or ZIP file output of
* inventory printers.
* <p>
* By default, a printer is displayed in the web console, unless this
* property is set to {@code false}. The property value can either be a
* boolean or a string.
*/
String WEBCONSOLE = "felix.inventory.printer.webconsole"; //$NON-NLS-1$
/**
* Prints the configuration report to the given <code>printWriter</code>.
* Implementations are free to print whatever information they deem useful.
* <p>
* If a printer is invoked with a format it doesn't support ( {@link #FORMAT})
* the printer should just do/print nothing and directly return.
* <p>
* A printer might be used in one of two different situations: either for
* directly displaying the information to a user (like in the web console)
* or the output is included in a ZIP. The printer might want to return
* different output depending on the usage situation.
*
* @param printWriter where to write the data. Implementations may flush the
* writer but must not close it.
* @param format The render format.
* @param isZip whether this is included in a ZIP file or used directly
*/
void print(PrintWriter printWriter, Format format, boolean isZip);
}