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

org.apache.olingo.odata2.api.processor.ODataContext Maven / Gradle / Ivy

There is a newer version: 3.4.1
Show newest version
/*******************************************************************************
 * 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.odata2.api.processor;

import java.util.List;
import java.util.Locale;
import java.util.Map;

import org.apache.olingo.odata2.api.ODataService;
import org.apache.olingo.odata2.api.ODataServiceFactory;
import org.apache.olingo.odata2.api.exception.ODataException;
import org.apache.olingo.odata2.api.uri.PathInfo;

/**
 * Compilation of generic context objects.
 * 
 * @org.apache.olingo.odata2.DoNotImplement
 */
public interface ODataContext {

  String HTTP_SERVLET_REQUEST_OBJECT = "~httpRequestObject";

  /**
   * Gets the OData service.
   * @return ODataService related for this context
   * @throws ODataException
   */
  ODataService getService() throws ODataException;

  /**
   * @return the service factory instance
   */
  ODataServiceFactory getServiceFactory();

  /**
   * Gets information about the request path.
   * @return an OData path info object
   * @throws ODataException
   */
  PathInfo getPathInfo() throws ODataException;

  /**
   * If a request execution is part of batch processing then this method returns the context of the
   * outer batch request.
   * @return a batch parent context or null
   */
  ODataContext getBatchParentContext();

  /**
   * @return true in case of this request is part of a batch processing queue
   */
  boolean isInBatchMode();

  /**
   * Starts runtime measurement.
   * @param className class name where the runtime measurement starts
   * @param methodName method name where the runtime measurement starts
   * @return handle for the started runtime measurement which can be used for stopping
   */
  int startRuntimeMeasurement(String className, String methodName);

  /**
   * Stops runtime measurement.
   * @param handle of runtime measurement to be stopped
   */
  void stopRuntimeMeasurement(int handle);

  /**
   * Gets the list of all runtime measurements.
   * @return list of all runtime measurements of type {@link RuntimeMeasurement}
   */
  List getRuntimeMeasurements();

  /**
   * Gets the HTTP method of the request.
   * @return HTTP method as {@link String}
   */
  String getHttpMethod();

  /**
   * Sets a parameter.
   * @param name of parameter (name is used as key, existing values are overwritten)
   * @param value of parameter as object
   */
  void setParameter(String name, Object value);

  /**
   * Removes parameter.
   * @param name of parameter to be removed
   */
  void removeParameter(String name);

  /**
   * Gets a named parameter value.
   * @param name of parameter
   * @return parameter value as {@link Object} for the given name
   */
  Object getParameter(String name);

  /**
   * Returns the first found header value of the HTTP request.
   * @param name name of the first found request header element (e.g. "Content-Type")
   * @return null or a request header value if found
   */
  String getRequestHeader(String name);

  /**
   * Returns all header values of the HTTP request but never null.
   * @return immutable map of request header values
   */
  Map> getRequestHeaders();

  /**
   * Gets information about enabled debug mode.
   * @return debugMode as boolean
   */
  boolean isInDebugMode();

  /**
   * Enables debug mode.
   * @param debugMode as boolean
   */
  void setDebugMode(boolean debugMode);

  /**
   * Gets a list of languages that are acceptable for the response.
   * If no acceptable languages are specified, a read-only list containing
   * a single wildcard java.util.Locale instance (with language field set to "*") is returned.
   * @return a read-only list of acceptable languages sorted according to their q-value,
   * with highest preference first.
   */
  List getAcceptableLanguages();

  /**
   * 

Runtime measurements.

*

All times are in nanoseconds since some fixed but arbitrary time * (perhaps in the future, so values may be negative).

* @see System#nanoTime() */ public interface RuntimeMeasurement { /** * Sets the class name. * @param className the name of the class that is measured */ void setClassName(String className); /** * Gets the class name. * @return the name of the class that is measured */ String getClassName(); /** * Sets the method name. * @param methodName the name of the method that is measured */ void setMethodName(String methodName); /** * Gets the method name. * @return the name of the method that is measured */ String getMethodName(); /** * Sets the start time. * @param timeStarted the start time in nanoseconds * @see System#nanoTime() */ void setTimeStarted(long timeStarted); /** * Gets the start time. * @return the start time in nanoseconds or 0 if not set yet * @see System#nanoTime() */ long getTimeStarted(); /** * Sets the stop time. * @param timeStopped the stop time in nanoseconds * @see System#nanoTime() */ void setTimeStopped(long timeStopped); /** * Gets the stop time. * @return the stop time in nanoseconds or 0 if not set yet * @see System#nanoTime() */ long getTimeStopped(); /** * Sets the start heap memory used. * @param usedHeap the start heap memory used in bytes * @see java.lang.ManagementFactory#getMemoryMXBean() */ void setMemoryStarted(long usedHeap); /** * Sets the stop heap memory used. * @param usedHeap the stop heap memory used in bytes * @see java.lang.ManagementFactory#getMemoryMXBean() */ void setMemoryStopped(long usedHeap); /** * Gets the start heap memory used. * @return start heap memory used or 0 if not set * @see java.lang.ManagementFactory#getMemoryMXBean() */ long getMemoryStarted(); /** * Gets the stop heap memory used. * @return stop heap memory used or 0 if not set * @see java.lang.ManagementFactory#getMemoryMXBean() */ long getMemoryStopped(); } }




© 2015 - 2024 Weber Informatics LLC | Privacy Policy