blob: 4e0d3f1acf7cfe686375581fe6232eeaa222e211 [file] [log] [blame]
/*
* 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.olingo.server.api.uri;
import java.util.List;
import org.apache.olingo.server.api.uri.queryoption.AliasQueryOption;
import org.apache.olingo.server.api.uri.queryoption.SystemQueryOption;
/**
* <p>Object acting as general access to URI information extracted from the request URI.</p>
* <p>Depending on the URI info kind different interfaces are used to provide access to that information.
* Use method {@link #getKind()} to obtain URI info kind information and to perform an appropriate cast.</p>
*/
public interface UriInfo extends UriInfoService, UriInfoMetadata, UriInfoResource, UriInfoBatch,
UriInfoAll, UriInfoCrossjoin, UriInfoEntityId {
/**
* See {@link UriInfoKind} for more details which kinds are allowed.
* @return the kind of this URI info object.
*/
UriInfoKind getKind();
/**
* Convenience casting method.
* @return this as a {@link UriInfoService} object
*/
UriInfoService asUriInfoService();
/**
* Convenience casting method.
* @return this as a {@link UriInfoAll} object
*/
UriInfoAll asUriInfoAll();
/**
* Convenience casting method.
* @return this as a {@link UriInfoBatch} object
*/
UriInfoBatch asUriInfoBatch();
/**
* Convenience casting method.
* @return this as a {@link UriInfoCrossjoin} object
*/
UriInfoCrossjoin asUriInfoCrossjoin();
/**
* Convenience casting method.
* @return this as a {@link UriInfoEntityId} object
*/
UriInfoEntityId asUriInfoEntityId();
/**
* Convenience casting method.
* @return this as a {@link UriInfoMetadata} object
*/
UriInfoMetadata asUriInfoMetadata();
/**
* Convenience casting method.
* @return this as a {@link UriInfoResource} object
*/
UriInfoResource asUriInfoResource();
/**
* Gets a list of all system query options which were in the URI.
* @return a list of all system query options used
*/
List<SystemQueryOption> getSystemQueryOptions();
/**
* Gets a list of all alias definitions which were in the URI (including aliases not used anywhere).
* @return a list of all alias definitions
*/
List<AliasQueryOption> getAliases();
}