/*
* #!
* Ontopoly Editor
* #-
* Copyright (C) 2001 - 2013 The Ontopia Project
* #-
* Licensed 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 ontopoly.pages;
import java.io.PrintWriter;
import java.io.StringWriter;
import javax.servlet.http.HttpServletRequest;
import net.ontopia.Ontopia;
import ontopoly.components.TitleHelpPanel;
import ontopoly.models.HelpLinkResourceModel;
import org.apache.wicket.Page;
import org.apache.wicket.markup.ComponentTag;
import org.apache.wicket.markup.html.basic.Label;
import org.apache.wicket.markup.html.link.BookmarkablePageLink;
import org.apache.wicket.model.ResourceModel;
public class InternalErrorPageWithException extends AbstractOntopolyErrorPage {
public InternalErrorPageWithException() {
}
public InternalErrorPageWithException(Page page, final RuntimeException e) {
super(page == null ? null : page.getPageParameters());
createTitle();
add(new BookmarkablePageLink<Page>("link", StartPage.class));
add(new Label("java_version") {
@Override
protected void onComponentTag(ComponentTag tag) {
super.onComponentTag(tag);
tag.put("value", System.getProperty("java.vm.vendor")
+", "+System.getProperty("java.vm.version"));
}
});
add(new Label("os_version") {
@Override
protected void onComponentTag(ComponentTag tag) {
super.onComponentTag(tag);
tag.put("value", System.getProperty("os.name")
+", "+System.getProperty("os.version")
+" ("+System.getProperty("os.arch")+")");
}
});
add(new Label("oks_version") {
@Override
protected void onComponentTag(ComponentTag tag) {
super.onComponentTag(tag);
tag.put("value", Ontopia.getVersion());
}
});
HttpServletRequest request = getWebRequestCycle().getWebRequest().getHttpServletRequest();
final String serverName = request.getServerName();
add(new Label("server_name") {
@Override
protected void onComponentTag(ComponentTag tag) {
super.onComponentTag(tag);
tag.put("value", serverName);
}
});
/*add(new Label("server_info") {
@Override
protected void onComponentTag(ComponentTag tag) {
super.onComponentTag(tag);
if(request != null && request.getSession(true) != null && request.getSession(true).getServletContext() != null) {
tag.put("value", request.getSession(true).getServletContext().getServerInfo());
}
}
});*/
final String serverPort = Integer.toString(request.getServerPort());
add(new Label("server_port") {
@Override
protected void onComponentTag(ComponentTag tag) {
super.onComponentTag(tag);
tag.put("value", serverPort);
}
});
final String remoteAddr = request.getRemoteAddr();
add(new Label("remote_address") {
@Override
protected void onComponentTag(ComponentTag tag) {
super.onComponentTag(tag);
tag.put("value", remoteAddr);
}
});
final String remoteHost = request.getRemoteHost();
add(new Label("remote_host") {
@Override
protected void onComponentTag(ComponentTag tag) {
super.onComponentTag(tag);
tag.put("value", remoteHost);
}
});
final String stackTrace;
if (e == null) {
stackTrace = "unknown";
} else {
StringWriter sw = new StringWriter();
e.printStackTrace(new PrintWriter(sw));
stackTrace = sw.toString();
}
add(new Label("stack_trace") {
@Override
protected void onComponentTag(ComponentTag tag) {
super.onComponentTag(tag);
tag.put("value", stackTrace);
}
});
add(new Label("error_message") {
@Override
protected void onComponentTag(ComponentTag tag) {
super.onComponentTag(tag);
tag.put("value", e.getMessage());
}
});
add(new Label("stackTrace", stackTrace));
}
private void createTitle() {
add(new TitleHelpPanel("titlePartPanel",
new ResourceModel("an.error.occurred"), new HelpLinkResourceModel("help.link.startpage")));
}
}