Copyright (c) 2015, 2016 Google, Inc and others. This program and the accompanying materials are made available under the terms of the Eclipse Public License 2.0 which accompanies this distribution, and is available at https://www.eclipse.org/legal/epl-2.0/ SPDX-License-Identifier: EPL-2.0 Contributors: Stefan Xenos (Google) - Initial implementation
/******************************************************************************* * Copyright (c) 2015, 2016 Google, Inc and others. * * This program and the accompanying materials * are made available under the terms of the Eclipse Public License 2.0 * which accompanies this distribution, and is available at * https://www.eclipse.org/legal/epl-2.0/ * * SPDX-License-Identifier: EPL-2.0 * * Contributors: * Stefan Xenos (Google) - Initial implementation *******************************************************************************/
package org.eclipse.jdt.internal.core.nd.db; import java.util.ArrayList; import java.util.List; import org.eclipse.core.runtime.IStatus; import org.eclipse.core.runtime.Status;
This exception indicates corruption in the JDT index database.
/** * This exception indicates corruption in the JDT index database. */
public class IndexException extends RuntimeException { private IStatus status; private List<RelatedAddress> relatedAddresses = new ArrayList<>(); private long time = -1; public IndexException(IStatus status) { this.status = status; } public IndexException(String message) { this(new Status(IStatus.ERROR, "org.eclipse.jdt.core", message)); //$NON-NLS-1$ }
Sets the time that the exception occurred at (in terms of the write number from the modification log)
Params:
  • writeNumber –
/** * Sets the time that the exception occurred at (in terms of the write number * from the modification log) * * @param writeNumber */
public void setTime(long writeNumber) { this.time = writeNumber; } @Override public synchronized Throwable getCause() { return this.status.getException(); }
Returns:the status
/** * @return the status */
public IStatus getStatus() { return this.status; } private static final long serialVersionUID = -6561893929558916225L; public void addRelatedAddress(RelatedAddress related) { // Don't include dupes for (RelatedAddress next : this.relatedAddresses) { if (next.isSameAddressAs(related)) { return; } } this.relatedAddresses.add(related); } @Override public String getMessage() { StringBuilder result = new StringBuilder(); if (this.time != -1) { result.append("(time "); //$NON-NLS-1$ result.append(this.time); result.append(") "); //$NON-NLS-1$ } result.append(this.status.getMessage()); if (!this.relatedAddresses.isEmpty()) { boolean isFirst = true; result.append("\nRelated addresses:\n"); //$NON-NLS-1$ for (RelatedAddress next : this.relatedAddresses) { if (!isFirst) { result.append("\n"); //$NON-NLS-1$ } isFirst = false; result.append(next.toString()); } } return result.toString(); } }