org.eclipse.persistence.jpa.rs.features.fieldsfiltering.FieldsFilteringValidator 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 774c696
/*******************************************************************************
* Copyright (c) 2014 Oracle. All rights reserved.
* This program and the accompanying materials are made available under the
* terms of the Eclipse Public License v1.0 and Eclipse Distribution License v. 1.0
* which accompanies this distribution.
* The Eclipse Public License is available at http://www.eclipse.org/legal/epl-v10.html
* and the Eclipse Distribution License is available at
* http://www.eclipse.org/org/documents/edl-v10.php.
*
* Contributors:
* Dmitry Kornilov - initial implementation
******************************************************************************/
package org.eclipse.persistence.jpa.rs.features.fieldsfiltering;
import org.eclipse.persistence.jpa.rs.exceptions.JPARSException;
import org.eclipse.persistence.jpa.rs.resources.common.AbstractResource;
import javax.ws.rs.core.UriInfo;
import java.util.Map;
/**
* Fields filtering feature validator/processor.
*
* @author Dmitry Kornilov
* @since EclipseLink 2.6.0
*/
public final class FieldsFilteringValidator {
public static final String FIELDS_PARAM_NAME = "fields";
public static final String EXCL_FIELDS_PARAM_NAME = "excludeFields";
private final Map queryParameters;
private FieldsFilter filter;
/**
* Creates the validator.
*
* @param uri request URI.
*/
public FieldsFilteringValidator(UriInfo uri) {
queryParameters = AbstractResource.getQueryParameters(uri);
}
/**
* Checks if request is valid.
*
* @return true if request is valid and feature is supported, false if request is valid but feature is not supported.
* @throws org.eclipse.persistence.jpa.rs.exceptions.JPARSException in case of any validation errors.
*/
public boolean isFeatureApplicable() throws JPARSException {
if (!queryParameters.containsKey(FIELDS_PARAM_NAME) && !queryParameters.containsKey(EXCL_FIELDS_PARAM_NAME)) {
return false;
}
// Throw exception if both 'fields' and 'excludeFields' present
if (queryParameters.containsKey(FIELDS_PARAM_NAME) && queryParameters.containsKey(EXCL_FIELDS_PARAM_NAME)) {
throw JPARSException.fieldsFilteringBothParametersPresent();
}
if (queryParameters.containsKey(FIELDS_PARAM_NAME)) {
filter = new FieldsFilter(FieldsFilterType.INCLUDE, ((String) queryParameters.get(FIELDS_PARAM_NAME)));
} else {
filter = new FieldsFilter(FieldsFilterType.EXCLUDE, ((String) queryParameters.get(EXCL_FIELDS_PARAM_NAME)));
}
return true;
}
/**
* {@link FieldsFilter} object containing a list of fields to filter.
*
* @return FieldsFilter
*/
public FieldsFilter getFilter() {
return filter;
}
}