use of org.pentaho.platform.api.engine.IPentahoRequestContext in project pentaho-platform by pentaho.
the class DialChartComponent method getXmlContent.
@Override
public Document getXmlContent() {
// Create a document that describes the result
Document result = DocumentHelper.createDocument();
IPentahoRequestContext requestContext = PentahoRequestContextHolder.getRequestContext();
// $NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$
setXslProperty("baseUrl", requestContext.getContextPath());
// $NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$
setXslProperty("fullyQualifiedServerUrl", PentahoSystem.getApplicationContext().getFullyQualifiedServerURL());
// $NON-NLS-1$
String mapName = "chart" + AbstractChartComponent.chartCount++;
Document chartDefinition = jcrHelper.getSolutionDocument(definitionPath, RepositoryFilePermission.READ);
if (chartDefinition == null) {
// $NON-NLS-1$
Element errorElement = result.addElement("error");
errorElement.addElement("title").setText(// $NON-NLS-1$ //$NON-NLS-2$
Messages.getInstance().getString("ABSTRACTCHARTEXPRESSION.ERROR_0001_ERROR_GENERATING_CHART"));
// $NON-NLS-1$
String message = Messages.getInstance().getString("CHARTS.ERROR_0001_CHART_DEFINIION_MISSING", definitionPath);
// $NON-NLS-1$
errorElement.addElement("message").setText(message);
error(message);
return result;
}
dataDefinition = createChart(chartDefinition);
if (dataDefinition == null) {
// $NON-NLS-1$
Element errorElement = result.addElement("error");
errorElement.addElement("title").setText(// $NON-NLS-1$ //$NON-NLS-2$
Messages.getInstance().getString("ABSTRACTCHARTEXPRESSION.ERROR_0001_ERROR_GENERATING_CHART"));
// $NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$
String message = Messages.getInstance().getString("CHARTS.ERROR_0002_CHART_DATA_MISSING", actionPath);
// $NON-NLS-1$
errorElement.addElement("message").setText(message);
// System .out.println( result.asXML() );
return result;
}
// create an image for the dial using the JFreeChart engine
PrintWriter printWriter = new PrintWriter(new StringWriter());
// we'll dispay the title in HTML so that the dial image does not have
// to
// accommodate it
// $NON-NLS-1$
String chartTitle = "";
try {
if (width == -1) {
// $NON-NLS-1$
width = Integer.parseInt(chartDefinition.selectSingleNode("/chart/width").getText());
}
if (height == -1) {
// $NON-NLS-1$
height = Integer.parseInt(chartDefinition.selectSingleNode("/chart/height").getText());
}
} catch (Exception e) {
// go with the default
}
if (chartDefinition.selectSingleNode("/chart/" + AbstractChartComponent.URLTEMPLATE_NODE_NAME) != null) {
// $NON-NLS-1$
urlTemplate = // $NON-NLS-1$
chartDefinition.selectSingleNode("/chart/" + AbstractChartComponent.URLTEMPLATE_NODE_NAME).getText();
}
if (chartDefinition.selectSingleNode("/chart/paramName") != null) {
// $NON-NLS-1$
// $NON-NLS-1$
paramName = chartDefinition.selectSingleNode("/chart/paramName").getText();
}
// $NON-NLS-1$
Element root = result.addElement("charts");
DefaultValueDataset chartDataDefinition = (DefaultValueDataset) dataDefinition;
// if (dataDefinition.getRowCount() > 0) {
// create temporary file names
String[] tempFileInfo = createTempFile();
String fileName = tempFileInfo[AbstractChartComponent.FILENAME_INDEX];
String filePathWithoutExtension = tempFileInfo[AbstractChartComponent.FILENAME_WITHOUT_EXTENSION_INDEX];
ChartRenderingInfo info = new ChartRenderingInfo(new StandardEntityCollection());
JFreeChartEngine.saveChart(chartDataDefinition, chartTitle, "", filePathWithoutExtension, width, height, JFreeChartEngine.OUTPUT_PNG, printWriter, info, // $NON-NLS-1$
this);
applyOuterURLTemplateParam();
populateInfo(info);
// $NON-NLS-1$
Element chartElement = root.addElement("chart");
// $NON-NLS-1$
chartElement.addElement("mapName").setText(mapName);
// $NON-NLS-1$
chartElement.addElement("width").setText(Integer.toString(width));
// $NON-NLS-1$
chartElement.addElement("height").setText(Integer.toString(height));
// for (int row = 0; row < chartDataDefinition.getRowCount(); row++) {
// for (int column = 0; column < chartDataDefinition.getColumnCount(); column++) {
// Number value = chartDataDefinition.getValue(row, column);
// Comparable rowKey = chartDataDefinition.getRowKey(row);
// Comparable columnKey = chartDataDefinition.getColumnKey(column);
// Element valueElement = chartElement.addElement("value2D"); //$NON-NLS-1$
// valueElement.addElement("value").setText(value.toString()); //$NON-NLS-1$
// valueElement.addElement("row-key").setText(rowKey.toString()); //$NON-NLS-1$
// valueElement.addElement("column-key").setText(columnKey.toString()); //$NON-NLS-1$
// }
// }
String mapString = ImageMapUtilities.getImageMap(mapName, info);
// $NON-NLS-1$
chartElement.addElement("imageMap").setText(mapString);
// $NON-NLS-1$
chartElement.addElement("image").setText(fileName);
// }
return result;
}
use of org.pentaho.platform.api.engine.IPentahoRequestContext in project pentaho-platform by pentaho.
the class PentahoRequestContextHolderTest method testThreadedInheritsRequestContext.
@Test
public void testThreadedInheritsRequestContext() throws InterruptedException {
final IPentahoRequestContext mockRequestContext = Mockito.mock(IPentahoRequestContext.class);
PentahoRequestContextHolder.setRequestContext(mockRequestContext);
Thread t = new Thread("testThreadedInheritsRequestContext-1") {
public void run() {
if (PentahoRequestContextHolder.getRequestContext() != mockRequestContext) {
System.err.println(getName() + " - should have inherited request context from parent thread");
threadFailureMap.put(this, true);
}
}
};
t.start();
t.join(5000);
for (boolean failure : threadFailureMap.values()) {
assertFalse("An assertion in a thread failed. Check the log for what failed", failure);
}
}
use of org.pentaho.platform.api.engine.IPentahoRequestContext in project pentaho-platform by pentaho.
the class PentahoRequestContextHolderTest method testNullRequestContext.
@Test
public void testNullRequestContext() {
final IPentahoRequestContext mockRequestContext = Mockito.mock(IPentahoRequestContext.class);
PentahoRequestContextHolder.setRequestContext(mockRequestContext);
assertSame(mockRequestContext, PentahoRequestContextHolder.getRequestContext());
}
use of org.pentaho.platform.api.engine.IPentahoRequestContext in project pentaho-platform by pentaho.
the class PentahoRequestContextHolderTest method testThreadsManageOwngetRequestContexts.
@Test
public void testThreadsManageOwngetRequestContexts() throws InterruptedException {
final IPentahoRequestContext mockRequestContext = Mockito.mock(IPentahoRequestContext.class);
final IPentahoRequestContext threadMockRequestContext = Mockito.mock(IPentahoRequestContext.class, "threadMockRequestContext");
PentahoRequestContextHolder.setRequestContext(mockRequestContext);
assertSame(mockRequestContext, PentahoRequestContextHolder.getRequestContext());
Thread t = new Thread("testThreadsManageOwngetRequestContexts-1") {
public void run() {
PentahoRequestContextHolder.setRequestContext(threadMockRequestContext);
if (PentahoRequestContextHolder.getRequestContext() != threadMockRequestContext) {
threadFailureMap.put(this, true);
}
try {
sleep(1000);
} catch (InterruptedException e) {
e.printStackTrace();
}
}
};
t.start();
assertSame("(while child thread runs) parent thread should still have it's original request context", mockRequestContext, PentahoRequestContextHolder.getRequestContext());
t.join(2000);
assertSame("(when child thread has terminated) parent thread should still have it's original request context", mockRequestContext, PentahoRequestContextHolder.getRequestContext());
for (boolean failure : threadFailureMap.values()) {
assertFalse("An assertion in a thread failed. Check the log for what failed", failure);
}
}
use of org.pentaho.platform.api.engine.IPentahoRequestContext in project pentaho-platform by pentaho.
the class PentahoWebContextFilter method getContextPathVar.
private String getContextPathVar(HttpServletRequest request) {
// split out a fully qualified url, guaranteed to have a trailing slash
IPentahoRequestContext requestContext = getRequestContext();
String contextPath = requestContext.getContextPath();
final boolean shouldUseFullyQualifiedUrl = shouldUseFullyQualifiedUrl(request);
if (shouldUseFullyQualifiedUrl) {
contextPath = getFullyQualifiedServerUrlVar();
}
return contextPath;
}
Aggregations