1 /*
2 * Licensed to the Apache Software Foundation (ASF) under one
3 * or more contributor license agreements. See the NOTICE file
4 * distributed with this work for additional information
5 * regarding copyright ownership. The ASF licenses this file
6 * to you under the Apache License, Version 2.0 (the
7 * "License"); you may not use this file except in compliance
8 * with the License. You may obtain a copy of the License at
9 *
10 * http://www.apache.org/licenses/LICENSE-2.0
11 *
12 * Unless required by applicable law or agreed to in writing,
13 * software distributed under the License is distributed on an
14 * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
15 * KIND, either express or implied. See the License for the
16 * specific language governing permissions and limitations
17 * under the License.
18 */
19 package org.apache.maven.search.backend.remoterepository;
20
21 import java.util.List;
22
23 import org.apache.maven.search.api.Record;
24 import org.jsoup.nodes.Document;
25
26 /**
27 * A component extracting data from response, that is aware of any remote specifics (like HTML structure).
28 */
29 public interface ResponseExtractor {
30 /**
31 * Method parsing document out of HTML page like this one:
32 * <a href="https://repo.maven.apache.org/maven2/org/apache/maven/indexer/">https://repo.maven.apache.org/maven2/org/apache/maven/indexer/</a>
33 * <p>
34 * Note: this method is "best effort" and may enlist non-existent As (think nested Gs).
35 */
36 int populateG(Context context, Document document, RecordFactory recordFactory, List<Record> page);
37
38 /**
39 * Method parsing document out of XML Maven Metadata like this one:
40 * <a href="https://repo.maven.apache.org/maven2/org/apache/maven/indexer/search-api/maven-metadata.xml">https://repo.maven.apache.org/maven2/org/apache/maven/indexer/search-api/maven-metadata.xml</a>
41 */
42 int populateGA(Context context, Document document, RecordFactory recordFactory, List<Record> page);
43
44 /**
45 * Method parsing document out of HTML page like this one:
46 * <a href="https://repo.maven.apache.org/maven2/org/apache/maven/indexer/search-api/7.0.3/">https://repo.maven.apache.org/maven2/org/apache/maven/indexer/search-api/7.0.3/</a>
47 * <p>
48 * Note: this method is "best effort" and may enlist fake artifacts.
49 */
50 int populateGAV(Context context, Document document, RecordFactory recordFactory, List<Record> page);
51 }