/* * 3D City Database Web Feature Service * http://www.3dcitydb.org/ * * Copyright 2014 - 2016 * virtualcitySYSTEMS GmbH * Tauentzienstrasse 7b/c * 10789 Berlin, Germany * http://www.virtualcitysystems.de/ * * 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 vcs.citydb.wfs.exception; import java.util.ArrayList; import java.util.Arrays; import java.util.List; import vcs.citydb.wfs.config.Constants; public class WFSException extends Exception { private static final long serialVersionUID = -1620130047924173953L; private List<WFSExceptionMessage> exceptionMessages = new ArrayList<WFSExceptionMessage>(); private final String LANGUAGE = "en"; public WFSException(String exceptionText) { super(exceptionText); exceptionMessages.add(new WFSExceptionMessage(WFSExceptionCode.NO_APPLICABLE_CODE, exceptionText)); } public WFSException(String message, Throwable cause) { this(WFSExceptionCode.NO_APPLICABLE_CODE, message, cause); } public WFSException(WFSExceptionCode exceptionCode, String exceptionText, String locator, Throwable cause) { super(exceptionText, cause); WFSExceptionMessage exceptionMessage = new WFSExceptionMessage(exceptionCode); exceptionMessage.addExceptionText(exceptionText); String causeMessage = null; while (cause != null && (causeMessage = cause.getMessage()) == null) cause = cause.getCause(); exceptionMessage.addExceptionText(causeMessage); exceptionMessage.setLocator(locator); exceptionMessages.add(exceptionMessage); } public WFSException(WFSExceptionCode exceptionCode, String message, Throwable cause) { this(exceptionCode, message, null, cause); } public WFSException(Throwable cause) { super(cause); String causeMessage = null; while (cause != null && (causeMessage = cause.getMessage()) == null) cause = cause.getCause(); exceptionMessages.add(new WFSExceptionMessage(WFSExceptionCode.NO_APPLICABLE_CODE, causeMessage)); } public WFSException(WFSExceptionCode exceptionCode, String exceptionText, String locator) { exceptionMessages.add(new WFSExceptionMessage(exceptionCode, exceptionText, locator)); } public WFSException(WFSExceptionCode exceptionCode, String exceptionText) { this(exceptionCode, exceptionText, (String)null); } public WFSException(WFSExceptionMessage exceptionMessage) { exceptionMessages.add(exceptionMessage); } public WFSException(WFSExceptionMessage... exceptionMessages) { this.exceptionMessages = Arrays.asList(exceptionMessages); } public WFSException(List<WFSExceptionMessage> exceptionMessages) { this.exceptionMessages = exceptionMessages; } public WFSException(Throwable cause, WFSExceptionMessage exceptionMessage) { super(cause); exceptionMessages.add(exceptionMessage); } public WFSException(Throwable cause, WFSExceptionMessage... exceptionMessages) { super(cause); this.exceptionMessages = Arrays.asList(exceptionMessages); } public WFSException(Throwable cause, List<WFSExceptionMessage> exceptionMessages) { super(cause); this.exceptionMessages = exceptionMessages; } public List<WFSExceptionMessage> getExceptionMessages() { return exceptionMessages; } public void addExceptionMessage(WFSExceptionMessage message) { exceptionMessages.add(message); } public void addExceptionMessages(List<WFSExceptionMessage> messages) { exceptionMessages.addAll(messages); } public String getVersion() { return Constants.DEFAULT_WFS_VERSION; } public String getLanguage() { return LANGUAGE; } }