FELIX-3874 : Create new status printer module
git-svn-id: https://svn.apache.org/repos/asf/felix/trunk@1440027 13f79535-47bb-0310-9956-ffa450edef68
diff --git a/status-printer/src/main/java/org/apache/felix/status/PrinterMode.java b/status-printer/src/main/java/org/apache/felix/status/PrinterMode.java
index 40250f2..164faa1 100644
--- a/status-printer/src/main/java/org/apache/felix/status/PrinterMode.java
+++ b/status-printer/src/main/java/org/apache/felix/status/PrinterMode.java
@@ -23,8 +23,9 @@
*/
public enum PrinterMode {
- TEXT, // plain text
- HTML_BODY, // HTML which can be placed inside a HTML body element (no external references)
- JSON, // JSON output
- ZIP_FILE // file content for a zip
+ TEXT, // plain text
+ HTML_BODY, // HTML which can be placed inside a HTML body element (no external references)
+ JSON, // JSON output
+ ZIP_FILE_BIN, // file content for a zip
+ ZIP_FILE_JSON // json file content for a zip
}
diff --git a/status-printer/src/main/java/org/apache/felix/status/ZipAttachmentProvider.java b/status-printer/src/main/java/org/apache/felix/status/ZipAttachmentProvider.java
index 37cb6b8..b78243b 100644
--- a/status-printer/src/main/java/org/apache/felix/status/ZipAttachmentProvider.java
+++ b/status-printer/src/main/java/org/apache/felix/status/ZipAttachmentProvider.java
@@ -29,7 +29,9 @@
*
* A service implementing this method must still register itself
* as a {@link StatusPrinter} but not as a
- * {@link ZipAttachmentProvider} service.
+ * {@link ZipAttachmentProvider} service and the provider
+ * should either support {@link PrinterMode.ZIP_FILE_JSON}
+ * or {@link PrinterMode.ZIP_FILE_BIN}
*/
public interface ZipAttachmentProvider extends StatusPrinter {
diff --git a/status-printer/src/main/java/org/apache/felix/status/impl/AbstractWebConsolePlugin.java b/status-printer/src/main/java/org/apache/felix/status/impl/AbstractWebConsolePlugin.java
index 3b62da8..5f88bb4 100644
--- a/status-printer/src/main/java/org/apache/felix/status/impl/AbstractWebConsolePlugin.java
+++ b/status-printer/src/main/java/org/apache/felix/status/impl/AbstractWebConsolePlugin.java
@@ -141,7 +141,9 @@
zip.closeEntry();
final ZipConfigurationWriter pw = new ZipConfigurationWriter( zip );
- printConfigurationStatus( pw, PrinterMode.ZIP_FILE, handler );
+ printConfigurationStatus( pw, PrinterMode.ZIP_FILE_BIN, handler );
+ pw.counter = 0;
+ printConfigurationStatus( pw, PrinterMode.ZIP_FILE_JSON, handler );
zip.finish();
} else if ( request.getPathInfo().endsWith( ".nfo" ) ) {
@@ -204,7 +206,7 @@
pw.print("<button type=\"button\" class=\"downloadFullZip\" style=\"float: right; margin-right: 30px; margin-top: 5px;\">Download Full Zip</button>");
pw.print("<button type=\"button\" class=\"downloadFullTxt\" style=\"float: right; margin-right: 30px; margin-top: 5px;\">Download Full Text</button>");
- if ( handler.supports(PrinterMode.ZIP_FILE) ) {
+ if ( handler.supports(PrinterMode.ZIP_FILE_BIN) || handler.supports(PrinterMode.ZIP_FILE_JSON) ) {
pw.print("<button type=\"button\" class=\"downloadZip\" style=\"float: right; margin-right: 30px; margin-top: 5px;\">Download As Zip</button>");
}
if ( handler.supports(PrinterMode.TEXT ) ) {
@@ -429,18 +431,23 @@
final PrinterMode mode,
final StatusPrinterHandler handler)
throws IOException {
- super.printStatus(mode, handler);
final String title = getFormattedTitle(handler.getTitle());
- handler.addAttachments(title.concat("/"), this.zip);
- if ( handler.supports(PrinterMode.JSON) ) {
+ if ( mode == PrinterMode.ZIP_FILE_BIN ) {
+ super.printStatus(mode, handler);
+ handler.addAttachments(title.concat("/"), this.zip);
+ } else {
+ counter++;
final String name = "json/".concat(title).concat(".json");
final ZipEntry entry = new ZipEntry( name );
zip.putNextEntry( entry );
- handler.print(PrinterMode.JSON, this);
+ handler.print(PrinterMode.ZIP_FILE_JSON, this);
flush();
zip.closeEntry();
+ if ( !handler.supports(PrinterMode.ZIP_FILE_BIN) ) {
+ handler.addAttachments(title.concat("/"), this.zip);
+ }
}
}
}
diff --git a/status-printer/src/main/java/org/apache/felix/status/impl/Activator.java b/status-printer/src/main/java/org/apache/felix/status/impl/Activator.java
index d43210d..feabdd1 100644
--- a/status-printer/src/main/java/org/apache/felix/status/impl/Activator.java
+++ b/status-printer/src/main/java/org/apache/felix/status/impl/Activator.java
@@ -49,8 +49,7 @@
this.managerRegistration = context.registerService(
StatusPrinterManager.class.getName(),
this.printerManager, props);
-
- }
+}
/**
* @see org.osgi.framework.BundleActivator#stop(org.osgi.framework.BundleContext)
diff --git a/status-printer/src/main/java/org/apache/felix/status/impl/webconsole/ConfigurationPrinterAdapter.java b/status-printer/src/main/java/org/apache/felix/status/impl/webconsole/ConfigurationPrinterAdapter.java
index 54e3262..071689d 100644
--- a/status-printer/src/main/java/org/apache/felix/status/impl/webconsole/ConfigurationPrinterAdapter.java
+++ b/status-printer/src/main/java/org/apache/felix/status/impl/webconsole/ConfigurationPrinterAdapter.java
@@ -183,7 +183,7 @@
public String[] getPrinterModes() {
final Set<String> list = new HashSet<String>();
if ( this.match(ConsoleConstants.MODE_TXT) || this.match(ConsoleConstants.MODE_ZIP) ) {
- list.add(PrinterMode.ZIP_FILE.name());
+ list.add(PrinterMode.ZIP_FILE_BIN.name());
}
if ( this.match(ConsoleConstants.MODE_WEB) ) {
if ( !escapeHtml ) {
diff --git a/status-printer/src/main/java/org/apache/felix/status/impl/webconsole/WebConsoleAdapter.java b/status-printer/src/main/java/org/apache/felix/status/impl/webconsole/WebConsoleAdapter.java
index ddab251..b5e0dac 100644
--- a/status-printer/src/main/java/org/apache/felix/status/impl/webconsole/WebConsoleAdapter.java
+++ b/status-printer/src/main/java/org/apache/felix/status/impl/webconsole/WebConsoleAdapter.java
@@ -113,7 +113,7 @@
m = ConsoleConstants.MODE_WEB;
} else if ( mode == PrinterMode.TEXT ) {
m = ConsoleConstants.MODE_TXT;
- } else if ( mode == PrinterMode.ZIP_FILE ) {
+ } else if ( mode == PrinterMode.ZIP_FILE_BIN ) {
m = ConsoleConstants.MODE_ZIP;
} else {
m = null;