1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19 package org.apache.maven.search.backend.remoterepository.extractor;
20
21 import java.util.List;
22
23 import org.apache.maven.search.Record;
24 import org.apache.maven.search.backend.remoterepository.Context;
25 import org.apache.maven.search.backend.remoterepository.RecordFactory;
26 import org.jsoup.nodes.Document;
27 import org.jsoup.nodes.Element;
28
29
30
31
32 public class MavenCentralResponseExtractor extends ResponseExtractorSupport {
33
34
35
36
37
38 private String nameInHref(Element element) {
39 String name = element.attr("href");
40 if (name.endsWith("/")) {
41 name = name.substring(0, name.length() - 1);
42 }
43 return name;
44 }
45
46 @Override
47 public int populateG(Context context, Document document, RecordFactory recordFactory, List<Record> page) {
48
49
50 Element contents = document.getElementById("contents");
51 if (contents != null) {
52 for (Element element : contents.getElementsByTag("a")) {
53 String name = nameInHref(element);
54 if (accept(name)) {
55 page.add(recordFactory.create(context.getGroupId(), name, null, null, null));
56 }
57 }
58 }
59 return page.size();
60 }
61
62 @Override
63 public int populateGAV(Context context, Document document, RecordFactory recordFactory, List<Record> page) {
64
65
66 Element contents = document.getElementById("contents");
67 if (contents != null) {
68 for (Element element : contents.getElementsByTag("a")) {
69
70 String name = element.attr("href");
71 if (name.endsWith("/") || !name.contains(".")) {
72 continue;
73 }
74 populateGAVName(context, nameInHref(element), recordFactory, page);
75 }
76 }
77 return page.size();
78 }
79 }