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

javax.faces.event.ExceptionQueuedEventContext Maven / Gradle / Ivy

There is a newer version: 4.1.1
Show newest version
/*
 * Copyright (c) 1997, 2018 Oracle and/or its affiliates. All rights reserved.
 *
 * This program and the accompanying materials are made available under the
 * terms of the Eclipse Public License v. 2.0, which is available at
 * http://www.eclipse.org/legal/epl-2.0.
 *
 * This Source Code may also be made available under the following Secondary
 * Licenses when the conditions for such availability set forth in the
 * Eclipse Public License v. 2.0 are satisfied: GNU General Public License,
 * version 2 with the GNU Classpath Exception, which is available at
 * https://www.gnu.org/software/classpath/license.html.
 *
 * SPDX-License-Identifier: EPL-2.0 OR GPL-2.0 WITH Classpath-exception-2.0
 */

package javax.faces.event;

import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import java.util.Collections;

import javax.faces.component.UIComponent;
import javax.faces.context.FacesContext;


/**
 * 

This helper class provides context to * the {@link ExceptionQueuedEvent} regarding the state of the system at the * point in time when the ExceptionQueuedEvent occurs and links * the ExceptionQueuedEvent to the {@link * javax.faces.context.ExceptionHandler} by virtue of implementing * {@link SystemEventListener}.

* * @since 2.0 */ public class ExceptionQueuedEventContext implements SystemEventListenerHolder { /** *

The presence of an entry under this * key in the Map returned from {@link #getAttributes} * indicates the event occurred during the “before * phase” part of the current lifecycle phase.

*/ public static final String IN_BEFORE_PHASE_KEY = ExceptionQueuedEventContext.class.getName() + ".IN_BEFORE_PHASE"; /** *

The presence of an entry under this * key in the Map returned from {@link #getAttributes} * indicates the event occurred during the “after * phase” part of the current lifecycle phase.

*/ public static final String IN_AFTER_PHASE_KEY = ExceptionQueuedEventContext.class.getName() + ".IN_AFTER_PHASE"; private FacesContext context; private Throwable thrown; private UIComponent component; private PhaseId phaseId; private Map attributes; private List listener; // ------------------------------------------------------------ Constructors /** *

Instantiate a new * ExceptionQueuedEventContext that indicates the argument * Throwable just occurred.

* * @param context {@link FacesContext} for the current request * @param thrown the Throwable that is the context for * this ExceptionQueuedEventContext instance. */ public ExceptionQueuedEventContext(FacesContext context, Throwable thrown) { this(context, thrown, null, null); } /** *

Instantiate a new * ExceptionQueuedEventContext that indicates the argument * Throwable just occurred, relevant to the argument * component. * * @param context {@link FacesContext} for the current request * @param thrown the Throwable that is the context for * this ExceptionQueuedEventContext instance. * @param component the {@link UIComponent} instance to which this * ExceptionQueuedEventContext pertains */ public ExceptionQueuedEventContext(FacesContext context, Throwable thrown, UIComponent component) { this (context, thrown, component, null); } /** *

Instantiate a new * ExceptionQueuedEventContext that indicates the argument * Throwable just occurred, relevant to the argument * component, during the lifecycle phase * phaseId.

* * @param context {@link FacesContext} for the current request * @param thrown the Throwable that is the context for * this ExceptionQueuedEventContext instance. * * @param component the UIComponent that is relevant to * the context. * * @param phaseId the PhaseId at the time this * ExeceptionEventContext is created. */ public ExceptionQueuedEventContext(FacesContext context, Throwable thrown, UIComponent component, PhaseId phaseId) { this.context = context; this.thrown = thrown; this.component = component; this.phaseId = ((phaseId == null) ? context.getCurrentPhaseId() : phaseId); } // ---------------------------------------------------------- Public Methods /** *

The {@link FacesContext} for this * request.

* @return the {@link FacesContext} used to create this * ExceptionQueuedEventContext instance. */ public FacesContext getContext() { return context; } /** *

Return the exception * property.

* * @return the exception */ public Throwable getException() { return thrown; } /** *

Return the UIComponent * which was being processed when the exception was thrown. If none * or not available, this will be null.

* * @return the component */ public UIComponent getComponent() { return this.component; } /** *

Return the PhaseId * which was being processed when the exception was thrown. If none * or not available, this will be null.

* * @return the phase id */ public PhaseId getPhaseId() { return this.phaseId; } /** * @return true if the exception occurred during the * before phase processing for a particular lifecycle * phase */ public boolean inBeforePhase() { return isAttributeDefined(IN_BEFORE_PHASE_KEY); } /** * @return true if the exception occurred during the * after phase processing for a particular lifecycle * phase */ public boolean inAfterPhase() { return isAttributeDefined(IN_AFTER_PHASE_KEY); } /** *

A Map of attributes * relevant to the context of this ExceptionQueuedEvent.

* * @return attributes related to this context */ public Map getAttributes() { if (null == attributes) { attributes = new HashMap<>(); } return attributes; } /** *

Return a List that * contains a single entry, the {@link * javax.faces.context.ExceptionHandler} for the current * request.

*/ @Override public List getListenersForEventClass(Class facesEventClass) { if (null == listener) { List list = new ArrayList<>(1); list.add(context.getExceptionHandler()); listener = Collections.unmodifiableList(list); } return listener; } // --------------------------------------------------------- Private Methods private boolean isAttributeDefined(String key) { return ((attributes != null) && attributes.containsKey(key)); } }




© 2015 - 2024 Weber Informatics LLC | Privacy Policy