/* (c) 2016 Open Source Geospatial Foundation - all rights reserved
* This code is licensed under the GPL 2.0 license, available at the root
* application directory.
*/
package org.geoserver.platform;
import java.util.Optional;
import sun.java2d.pipe.RenderingEngine;
/**
* @author Morgan Thompson - Boundless
*/
public class RenderingEngineStatus implements ModuleStatus {
private static final String UNKNOWN = "unknown";
private String engine;
private String provider;
@SuppressWarnings("unchecked")
public RenderingEngineStatus() {
Class<RenderingEngine> renderer;
try {
renderer = (Class<RenderingEngine>) sun.java2d.pipe.RenderingEngine.getInstance()
.getClass();
} catch (Throwable e) {
engine = UNKNOWN;
provider = UNKNOWN;
return;
}
engine = renderer.getSimpleName();
Package pkg = renderer.getPackage();
if (pkg.getName().contains("marlin")) {
provider = "Marlin";
} else if (pkg.getName().contains("sun.dc")) {
provider = "OracleJDK";
} else if (pkg.getName().contains("sun.java2d")) {
provider = "OpenJDK";
} else {
provider = pkg.getName();
}
}
@Override
public String getModule() {
return "jvm";
}
@Override
public Optional<String> getComponent() {
return Optional.ofNullable("java2d");
}
@Override
public String getName() {
return "Rendering Engine";
}
@Override
public Optional<String> getVersion() {
if (provider.contains("OracleJDK")) {
return Optional.ofNullable(System.getProperty("java.version"));
} else {
return Optional.empty();
}
}
@Override
public boolean isAvailable() {
return true;
}
@Override
public boolean isEnabled() {
return true;
}
@Override
public Optional<String> getMessage() {
StringBuilder msg = new StringBuilder();
msg.append("Java 2D configured with ");
msg.append(engine);
msg.append(".\n");
msg.append("Provider: ");
msg.append(provider);
msg.append("\n");
String config = System.getProperty("sun.java2d.renderer");
if (config != null) {
msg.append("Configuration: -Dsun.java2d.renderer=");
msg.append(config);
}
return Optional.of(msg.toString());
}
@Override
public Optional<String> getDocumentation() {
// TODO Auto-generated method stub
return Optional.empty();
}
}