com.haulmont.cuba.web.exception.InvalidValueExceptionHandler.java Source code

Java tutorial

Introduction

Here is the source code for com.haulmont.cuba.web.exception.InvalidValueExceptionHandler.java

Source

/*
 * Copyright (c) 2008-2016 Haulmont.
 *
 * 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 com.haulmont.cuba.web.exception;

import com.haulmont.cuba.core.global.AppBeans;
import com.haulmont.cuba.core.global.Messages;
import com.haulmont.cuba.gui.components.Frame;
import com.haulmont.cuba.web.App;
import com.vaadin.data.Validator;
import com.vaadin.server.DefaultErrorHandler;
import com.vaadin.server.ErrorEvent;
import com.vaadin.ui.AbstractComponent;
import com.vaadin.ui.Component;

import javax.annotation.Nullable;

public class InvalidValueExceptionHandler extends AbstractExceptionHandler {

    public InvalidValueExceptionHandler() {
        super(Validator.InvalidValueException.class.getName());
    }

    @Override
    public boolean handle(ErrorEvent event, App app) {
        boolean handled = super.handle(event, app);

        //noinspection ThrowableResultOfMethodCallIgnored
        if (handled && event.getThrowable() != null) {
            // Finds the original source of the error/exception
            AbstractComponent component = DefaultErrorHandler.findAbstractComponent(event);
            if (component != null) {
                component.markAsDirty();
            }

            if (component instanceof Component.Focusable) {
                ((Component.Focusable) component).focus();
            }

            //noinspection ThrowableResultOfMethodCallIgnored
            if (event.getThrowable() instanceof Validator.InvalidValueException) {
                app.getAppUI().discardAccumulatedEvents();
            }
        }
        return handled;
    }

    @Override
    protected void doHandle(App app, String className, String message, @Nullable Throwable throwable) {
        Messages messages = AppBeans.get(Messages.NAME);
        app.getWindowManager().showNotification(messages.getMainMessage("validationFail.caption"),
                messages.getMainMessage("validationFail"), Frame.NotificationType.TRAY);
    }
}