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

org.eclipse.persistence.queries.InMemoryQueryIndirectionPolicy Maven / Gradle / Ivy

The newest version!
/*
 * Copyright (c) 1998, 2020 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,
 * or the Eclipse Distribution License v. 1.0 which is available at
 * http://www.eclipse.org/org/documents/edl-v10.php.
 *
 * SPDX-License-Identifier: EPL-2.0 OR BSD-3-Clause
 */

// Contributors:
//     Oracle - initial API and implementation from Oracle TopLink
package org.eclipse.persistence.queries;


/**
 * 

Purpose: * Provide a means of controlling the behavior of in-memory and conforming queries * that access un-instantiated indirection objects in processing the query against cached objects. * *

Description: * This class defines the valid constant values for handling in-memory querying. * The constants should be set into the query's inMemoryQueryIndirectionPolicy. * * @author Gordon Yorke * @since TopLink/Java 3.6.3 */ public class InMemoryQueryIndirectionPolicy implements java.io.Serializable { /** If a non-instantiated indirection object is encountered an exception is thrown. */ public static final int SHOULD_THROW_INDIRECTION_EXCEPTION = 0; /** If a non-instantiated indirection object is encountered an exception it is instantiated. Caution should be used in using this option. */ public static final int SHOULD_TRIGGER_INDIRECTION = 1; /** If a non-instantiated indirection object is encountered the object is assumed to conform. */ public static final int SHOULD_IGNORE_EXCEPTION_RETURN_CONFORMED = 2; /** If a non-instantiated indirection object is encountered the object is assumed to not conform. */ public static final int SHOULD_IGNORE_EXCEPTION_RETURN_NOT_CONFORMED = 3; protected int policy; /** Used to set the policy state in the query. */ protected ObjectLevelReadQuery query; public InMemoryQueryIndirectionPolicy() { this.policy = SHOULD_THROW_INDIRECTION_EXCEPTION; } public InMemoryQueryIndirectionPolicy(int policyValue) { this.policy = policyValue; } public InMemoryQueryIndirectionPolicy(int policy, ObjectLevelReadQuery query) { this.policy = policy; this.query = query; } public boolean shouldTriggerIndirection() { return this.policy == SHOULD_TRIGGER_INDIRECTION; } public boolean shouldThrowIndirectionException() { return this.policy == SHOULD_THROW_INDIRECTION_EXCEPTION; } public boolean shouldIgnoreIndirectionExceptionReturnConformed() { return this.policy == SHOULD_IGNORE_EXCEPTION_RETURN_CONFORMED; } public boolean shouldIgnoreIndirectionExceptionReturnNotConformed() { return this.policy == SHOULD_IGNORE_EXCEPTION_RETURN_NOT_CONFORMED; } public void ignoreIndirectionExceptionReturnNotConformed() { setPolicy(SHOULD_IGNORE_EXCEPTION_RETURN_NOT_CONFORMED); } public void ignoreIndirectionExceptionReturnConformed() { setPolicy(SHOULD_IGNORE_EXCEPTION_RETURN_CONFORMED); } public void triggerIndirection() { setPolicy(SHOULD_TRIGGER_INDIRECTION); } public void throwIndirectionException() { setPolicy(SHOULD_THROW_INDIRECTION_EXCEPTION); } public int getPolicy() { return this.policy; } public void setPolicy(int policy) { this.policy = policy; if (this.query != null) { this.query.setInMemoryQueryIndirectionPolicyState(policy); } } /** * INTERNAL: * Return the query. */ public ObjectLevelReadQuery getQuery() { return query; } /** * INTERNAL: * Set the query. */ public void setQuery(ObjectLevelReadQuery query) { this.query = query; } }





© 2015 - 2024 Weber Informatics LLC | Privacy Policy