org.eclipse.persistence.jpa.rs.features.FeatureSet Maven / Gradle / Ivy
Go to download
Show more of this group Show more artifacts with this name
Show all versions of eclipselink Show documentation
Show all versions of eclipselink Show documentation
EclipseLink build based upon Git transaction f2b9fc5
/*
* Copyright (c) 2013, 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:
// gonural - Initial implementation
// 2014-09-01-2.6.0 Dmitry Kornilov
// - added getMetadataSources, getDynamicMetadataSource and getSessionEventListener methods
package org.eclipse.persistence.jpa.rs.features;
import org.eclipse.persistence.internal.jaxb.SessionEventListener;
import org.eclipse.persistence.internal.sessions.AbstractSession;
import org.eclipse.persistence.jaxb.metadata.MetadataSource;
import java.util.List;
/**
* This interface represents a set of JPARS features. Each service version has it's
* own implementation of this interface.
*/
public interface FeatureSet {
public enum Feature {
/* Not pageable resources */
NO_PAGING,
/* Pageable resources */
PAGING,
/* Fields filtering (fields, excludeFields query parameters) */
FIELDS_FILTERING
}
/**
* Returns true if given feature is supported.
*
* @param feature Feature to check.
* @return true if feature is supported, false if not supported.
*/
boolean isSupported(Feature feature);
/**
* Returns an instance of {@link FeatureResponseBuilder} for given feature.
*
* @param feature feature to get response builder for.
* @return {@link FeatureResponseBuilder}
*/
FeatureResponseBuilder getResponseBuilder(Feature feature);
/**
* Gets a list of {@link MetadataSource} related to this version. Called on JAXB context
* initialization.
*
* @return a list of {@link MetadataSource}
*/
List getMetadataSources();
/**
* Builds a dynamic {@link MetadataSource} for given package. Called on JAXB context
* initialization.
*
* @param session the session
* @param packageName package name to build meta data for.
*
* @return {@link MetadataSource}
*/
MetadataSource getDynamicMetadataSource(AbstractSession session, String packageName);
/**
* Returns {@link SessionEventListener} related to this version.
*
* @param session the session
* @return {@link SessionEventListener}
*/
SessionEventListener getSessionEventListener(AbstractSession session);
}