/** * Licensed to the Apache Software Foundation (ASF) under one * or more contributor license agreements. See the NOTICE file * distributed with this work for additional information * regarding copyright ownership. The ASF licenses this file * to you 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 org.apache.ambari.server.controller.spi; import java.util.Map; import java.util.Set; /** * The request object carries the properties or property ids required to * satisfy a resource request. The request object also contains any * temporal (date range) information, if any, for each requested property. */ public interface Request { /** * Constant for request info property which contains the raw request body. */ String REQUEST_INFO_BODY_PROPERTY = "RAW_REQUEST_BODY"; String DIRECTIVE_DRY_RUN = "dry_run"; /** * Get the set of property ids being requested. Used for requests to get * resources. An empty set signifies that all supported properties should * be returned (i.e. select * ). * * @return the set of property ids being requested */ Set<String> getPropertyIds(); /** * Get the property values of the request. Used * for requests to update or create resources. Each value * in the set is a map of properties for a resource being * created/updated. Each map contains property values keyed * by property ids. * * @return the set of properties being requested */ Set<Map<String, Object>> getProperties(); /** * Get any request info properties of the request. These are optional properties * that are specific to the request but not related to any resource. */ Map<String, String> getRequestInfoProperties(); /** * Get the {@link TemporalInfo temporal information} for the given property * id for this request, if any. * * @param id the property id * @return the temporal information for the given property id; null if noe exists */ TemporalInfo getTemporalInfo(String id); /** * Obtain the pagination request information. This structure can be used for * the concrete {@link ResourceProvider} to instruct the caller that the * result set has already been paginated. * * @return the page request information. */ PageRequest getPageRequest(); /** * Obtain information to order the results by. This structure can be used for * the concrete {@link ResourceProvider} to instruct the caller that the * result set has already been sorted. * * @return the sort request information. */ SortRequest getSortRequest(); /** * Is this a dry run request. * @return true - if request is dry run request, false otherwise. */ boolean isDryRunRequest(); }