All Downloads are FREE. Search and download functionalities are using the official Maven repository.

org.jboss.forge.roaster.ParserException Maven / Gradle / Ivy

/*
 * Copyright 2012 Red Hat, Inc. and/or its affiliates.
 *
 * Licensed under the Eclipse Public License version 1.0, available at
 * http://www.eclipse.org/legal/epl-v10.html
 */
package org.jboss.forge.roaster;

import java.util.Collections;
import java.util.List;

/**
 * {@code ParserException} is the exception which is thrown if a parsing process fails. The problems occurred
 * during the parsing can be accessed with {@link #getProblems()}.
 * 
 * @author Lincoln Baxter, III
 * 
 */
public class ParserException extends RuntimeException
{
   private static final long serialVersionUID = 642493448571856848L;

   private final List problems;

   /**
    * Constructs a new {@code ParserException} with no problems, a {@code null} error message and a
    * {@code null} cause.
    */
   public ParserException()
   {
      this.problems = Collections.emptyList();
   }

   /**
    * Constructs a new {@code ParserException} with no problems, the given error message and a {@code null}
    * cause.
    * 
    * @param message the error message of this exception
    */
   public ParserException(final String message)
   {
      super(message);
      this.problems = Collections.emptyList();
   }

   /**
    * Constructs a new {@code ParserException} with no problems, a {@code null} error message and the given
    * cause.
    * 
    * @param cause the cause of this exception
    */
   public ParserException(final Throwable cause)
   {
      super(cause);
      this.problems = Collections.emptyList();
   }

   /**
    * Constructs a new {@code ParserException} with no problems, the given error message and the given cause.
    * 
    * @param message the error message of this exception
    * @param cause the cause of this exception
    */
   public ParserException(final String message, final Throwable cause)
   {
      super(message, cause);
      this.problems = Collections.emptyList();
   }

   /**
    * Constructs a new {@code ParserException} with the given problems, the given error message and a
    * {@code null} cause.
    * 

* Note that the problems list instance is not copied. *

* * @param message the error message of this exception * @param problems the problems of this exception */ public ParserException(String message, List problems) { super(message); this.problems = problems; } /** * Constructs a new {@code ParserException} with the given problems, a error message constructed from the * problems list and a {@code null} cause. *

* Note that the problems list instance is not copied. *

* * @param problems the problems of this exception */ public ParserException(List problems) { super(getProblemsMessage(problems)); this.problems = problems; } /** * Get the problems occurred during a parsing process. The returned list is maybe empty but never {@code null}. * * @return a unmodifiable list of the problems occurred during a parsing process * @see Collections#unmodifiableList(List) */ public List getProblems() { return Collections.unmodifiableList(problems); } private static String getProblemsMessage(List problems) { StringBuilder sb = new StringBuilder(); if (!problems.isEmpty()) { for (Problem problem : problems) { sb.append("- ").append(problem.getMessage()).append('\n'); } return sb.toString(); } return sb.toString(); } }




© 2015 - 2025 Weber Informatics LLC | Privacy Policy