001/*
002 * SonarQube
003 * Copyright (C) 2009-2017 SonarSource SA
004 * mailto:info AT sonarsource DOT com
005 *
006 * This program is free software; you can redistribute it and/or
007 * modify it under the terms of the GNU Lesser General Public
008 * License as published by the Free Software Foundation; either
009 * version 3 of the License, or (at your option) any later version.
010 *
011 * This program is distributed in the hope that it will be useful,
012 * but WITHOUT ANY WARRANTY; without even the implied warranty of
013 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
014 * Lesser General Public License for more details.
015 *
016 * You should have received a copy of the GNU Lesser General Public License
017 * along with this program; if not, write to the Free Software Foundation,
018 * Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301, USA.
019 */
020package org.sonar.api.batch;
021
022import java.io.Serializable;
023import java.util.Collection;
024import javax.annotation.CheckForNull;
025import org.sonar.api.batch.fs.InputFile;
026import org.sonar.api.batch.fs.InputPath;
027import org.sonar.api.design.Dependency;
028import org.sonar.api.measures.Measure;
029import org.sonar.api.measures.MeasuresFilter;
030import org.sonar.api.measures.Metric;
031import org.sonar.api.resources.Resource;
032
033/**
034 * @since 1.10
035 * @deprecated since 5.6 use {@link org.sonar.api.batch.sensor.Sensor}
036 */
037@Deprecated
038public interface SensorContext extends org.sonar.api.batch.sensor.SensorContext {
039
040  /**
041   * Search for an indexed resource.
042   *
043   * @param reference the resource reference
044   * @return the indexed resource, null if it's not indexed
045   * @since 1.10. Generic types since 2.6.
046   */
047  @CheckForNull
048  <R extends Resource> R getResource(R reference);
049
050  /**
051   * @since 2.6
052   */
053  Resource getParent(Resource reference);
054
055  /**
056   * @since 2.6
057   */
058
059  Collection<Resource> getChildren(Resource reference);
060
061  // ----------- MEASURES ON PROJECT --------------
062
063  /**
064   * @deprecated since 5.1 Sensors should not read but only save data
065   */
066  @Deprecated
067  <G extends Serializable> Measure<G> getMeasure(Metric<G> metric);
068
069  /**
070   * @deprecated since 5.1 Sensors should not read but only save data
071   */
072  @Deprecated
073  <M> M getMeasures(MeasuresFilter<M> filter);
074
075  /**
076   * Add a measure on project
077   */
078  Measure saveMeasure(Measure measure);
079
080  /**
081   * Add a measure on project
082   */
083  Measure saveMeasure(Metric metric, Double value);
084
085  // ----------- MEASURES ON RESOURCES --------------
086
087  /**
088   * @deprecated since 5.1 Sensors should not read but only save data
089   */
090  @Deprecated
091  <G extends Serializable> Measure<G> getMeasure(Resource resource, Metric<G> metric);
092
093  /**
094   * Key is updated when saving the resource.
095   *
096   * @return the key as saved in database. Null if the resource is set as excluded.
097   * @deprecated use the methods index()
098   */
099  @Deprecated
100  String saveResource(Resource resource);
101
102  /**
103   * @deprecated since 5.1 Sensors should not read but only save data
104   */
105  @Deprecated
106  <M> M getMeasures(Resource resource, MeasuresFilter<M> filter);
107
108  /**
109   * Add or update a measure.
110   * <p>
111   * The resource is automatically saved, so there is no need to execute the method saveResource(). Does nothing if the resource is set as
112   * excluded.
113   * 
114   */
115  Measure saveMeasure(Resource resource, Metric metric, Double value);
116
117  /**
118   * Add or update a measure.
119   * <p>
120   * The resource is automatically saved, so there is no need to execute the method saveResource(). Does nothing if the resource is set as
121   * excluded.
122   * 
123   */
124  Measure saveMeasure(Resource resource, Measure measure);
125
126  // ----------- DEPENDENCIES BETWEEN RESOURCES --------------
127
128  /**
129   * @deprecated since 5.2 No more design features. No-op
130   */
131  @Deprecated
132  Dependency saveDependency(Dependency dependency);
133
134  /**
135   * Save measure on {@link InputFile}
136   * @since 4.2
137   */
138  Measure saveMeasure(InputFile inputFile, Metric metric, Double value);
139
140  /**
141   * Save measure on {@link InputFile}
142   * @since 4.2
143   */
144  Measure saveMeasure(InputFile inputFile, Measure measure);
145
146  /**
147   * Allow to get {@link Resource} corresponding to provided {@link InputPath}.
148   * @since 4.5.2
149   */
150  Resource getResource(InputPath inputPath);
151}