/******************************************************************************* * Copyright (c) 2011 Red Hat, Inc. * Distributed under license by Red Hat, Inc. All rights reserved. * This program is made available under the terms of the * Eclipse Public License v1.0 which accompanies this distribution, * and is available at http://www.eclipse.org/legal/epl-v10.html * * Contributors: * Red Hat, Inc. - initial API and implementation ******************************************************************************/ package org.kie.eclipse.navigator.view.content; import java.io.PrintWriter; import java.io.StringWriter; import java.util.List; import org.kie.eclipse.server.IKieResourceHandler; import org.kie.eclipse.server.KieResourceHandler; /** * Represents an error that occurred while attempting to retrieve a resource's * children. */ public class ErrorNode extends ContentNode<IContainerNode<?>> implements IErrorNode { public static final String ERROR_TYPE = "error"; //$NON-NLS-1$ private final String text; private Exception exception; private final static class ErrorHandler extends KieResourceHandler { public ErrorHandler(String text) { super(null,text); } /* (non-Javadoc) * @see org.kie.eclipse.navigator.view.server.IKieResourceHandler#getChildren() */ @Override public List<? extends IKieResourceHandler> getChildren() throws Exception { return null; } } protected ErrorNode(IContainerNode<?> parent, String text) { super(parent, new ErrorHandler(text)); this.text = text; } protected ErrorNode(IContainerNode<?> parent, Exception exception) { super(parent, new ErrorHandler("Error")); this.text = "Error"; this.exception = exception; } @Override public String getText() { if (exception!=null) { String msg = exception.getMessage(); if (msg==null) { StringWriter sw = new StringWriter(); PrintWriter pw = new PrintWriter(sw, true); exception.printStackTrace(pw); pw.close(); String s[] = sw.toString().split(System.getProperty("line.separator")); if (s.length>1) msg = s[0] + " : " + s[1]; } return msg; } return text; } /* (non-Javadoc) * @see org.kie.eclipse.navigator.view.content.ContentNode#equals(java.lang.Object) */ @Override public boolean equals(Object obj) { return false; } }