Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
67 changes: 41 additions & 26 deletions src/main/java/net/ornithemc/meta/data/VersionDatabase.java
Original file line number Diff line number Diff line change
Expand Up @@ -59,8 +59,6 @@ public class VersionDatabase {
public static final MavenMetadataParser FABRIC_LOADER_METADATA_PARSER = new MavenMetadataParser(FABRIC_MAVEN_URL, "net.fabricmc", "fabric-loader");
public static final MavenMetadataParser QUILT_LOADER_METADATA_PARSER = new MavenMetadataParser(QUILT_MAVEN_URL, "org.quiltmc", "quilt-loader");
public static final MavenMetadataParser INSTALLER_METADATA_PARSER = new MavenMetadataParser(ORNITHE_MAVEN_URL, "net.ornithemc", "ornithe-installer");
public static final MavenMetadataParser OSL_METADATA_PARSER = new MavenMetadataParser(ORNITHE_MAVEN_URL, "net.ornithemc", "osl");
public static final MavenPomParser OSL_POM_PARSER = new MavenPomParser(ORNITHE_MAVEN_URL, "net.ornithemc", "osl");

private static final Pattern INVALID_FABRIC_LOADER_VERSIONS_GEN2 = Pattern.compile("^(?:0\\.(?:\\d|1[0-6])\\..+|0\\.17\\.[0-2])");
private static final Pattern INVALID_QUILT_LOADER_VERSIONS_GEN2 = Pattern.compile("^(?:0\\.(?:\\d|1\\d|2[0-8])\\..+|0\\.29\\.[0-2])");
Expand All @@ -75,6 +73,10 @@ private static final MavenMetadataParser generationalMavenMetadataParser(int gen
return new MavenMetadataParser(ORNITHE_MAVEN_URL, groupId, modifyForIntermediaryGeneration(artifactId, generation), generation <= config.stableIntermediaryGeneration);
}

private static final MavenPomParser generationalMavenPomParser(int generation, String groupId, String artifactId) {
return new MavenPomParser(ORNITHE_MAVEN_URL, groupId, modifyForIntermediaryGeneration(artifactId, generation), generation <= config.stableIntermediaryGeneration);
}

public static final MavenMetadataParser intermediaryMetadataParser(int generation) {
return generationalMavenMetadataParser(generation, "net.ornithemc", "calamus-intermediary");
}
Expand All @@ -83,8 +85,16 @@ public static final MavenMetadataParser featherMetadataParser(int generation) {
return generationalMavenMetadataParser(generation, "net.ornithemc", "feather");
}

public static final MavenMetadataParser oslModuleMetadataParser(String module) {
return new MavenMetadataParser(ORNITHE_MAVEN_URL, "net.ornithemc.osl", module);
public static final MavenMetadataParser oslMetadataParser(int generation) {
return generationalMavenMetadataParser(generation, "net.ornithemc", "osl");
}

public static final MavenPomParser oslPomParser(int generation) {
return generationalMavenPomParser(generation, "net.ornithemc", "osl");
}

public static final MavenMetadataParser oslModuleMetadataParser(int generation, String module) {
return new MavenMetadataParser(ORNITHE_MAVEN_URL, modifyForIntermediaryGeneration("net.ornithemc.osl", generation), module, generation <= config.stableIntermediaryGeneration);
}

public static Pattern invalidLoaderVersionsPattern(LoaderType loaderType) {
Expand Down Expand Up @@ -115,11 +125,11 @@ public static StableVersionIdentifier filterLoaderVersions(int generation, Loade
};
}

private static List<String> oslModules() {
private static List<String> oslModules(int generation) {
List<String> modules = new ArrayList<>();

try {
URL url = new URL(ORNITHE_MAVEN_DETAILS_URL + "net/ornithemc/osl");
URL url = new URL(modifyForIntermediaryGeneration(ORNITHE_MAVEN_DETAILS_URL + "net/ornithemc/osl", generation));

try (InputStreamReader input = new InputStreamReader(url.openStream())) {
JsonNode json = OrnitheMeta.MAPPER.readTree(input);
Expand Down Expand Up @@ -156,25 +166,26 @@ private static List<String> oslModules() {
private final Int2ObjectMap<List<BaseVersion>> game;
private final Int2ObjectMap<List<MavenVersion>> intermediary;
private final Int2ObjectMap<List<MavenBuildGameVersion>> feather;
private final Int2ObjectMap<List<MavenVersion>> osl;
private final Int2ObjectMap<Map<String, List<MavenVersion>>> oslDependencies;
private final Int2ObjectMap<Map<String, List<MavenVersion>>> oslModules;
private final Int2ObjectMap<Map<LoaderType, List<MavenBuildVersion>>> loader;
private final Map<String, List<MavenVersion>> oslDependencies;
private final Map<String, List<MavenVersion>> oslModules;

public List<MavenBuildGameVersion> raven;
public List<MavenBuildGameVersion> sparrow;
public List<MavenBuildGameVersion> nests;
public List<MavenUrlVersion> installer;
public List<MavenVersion> osl;
public List<LibraryUpgrade> libraryUpgrades;

private VersionDatabase() {
this.manifest = new VersionManifest();
this.game = new Int2ObjectOpenHashMap<>();
this.intermediary = new Int2ObjectOpenHashMap<>();
this.feather = new Int2ObjectOpenHashMap<>();
this.osl = new Int2ObjectOpenHashMap<>();
this.oslDependencies = new Int2ObjectOpenHashMap<>();
this.oslModules = new Int2ObjectOpenHashMap<>();
this.loader = new Int2ObjectOpenHashMap<>();
this.oslDependencies = new HashMap<>();
this.oslModules = new HashMap<>();
}

public static VersionDatabase generate() throws Exception {
Expand All @@ -184,6 +195,15 @@ public static VersionDatabase generate() throws Exception {
for (int generation = 1; generation <= config.latestIntermediaryGeneration; generation++) {
database.intermediary.put(generation, intermediaryMetadataParser(generation).getVersions(MavenVersion::new));
database.feather.put(generation, featherMetadataParser(generation).getVersions(MavenBuildGameVersion::new));
database.osl.put(generation, oslMetadataParser(generation).getVersions(MavenVersion::new));
for (MavenVersion version : database.osl.get(generation)) {
database.oslDependencies.computeIfAbsent(generation, key -> new HashMap<>()).put(version.getVersion(), oslPomParser(generation).getDependencies(MavenVersion::new, version.getVersion(), v -> {
return v.getMaven().startsWith("net.ornithemc.osl");
}));
}
for (String module : oslModules(generation)) {
database.oslModules.computeIfAbsent(generation, key -> new HashMap<>()).put(module, oslModuleMetadataParser(generation, module).getVersions(MavenVersion::new));
}
database.loader.put(generation, new EnumMap<>(LoaderType.class));
database.loader.get(generation).put(LoaderType.FABRIC, FABRIC_LOADER_METADATA_PARSER.getVersions(MavenBuildVersion::new, filterLoaderVersions(generation, LoaderType.FABRIC)));
database.loader.get(generation).put(LoaderType.QUILT, QUILT_LOADER_METADATA_PARSER.getVersions(MavenBuildVersion::new, filterLoaderVersions(generation, LoaderType.QUILT)));
Expand All @@ -192,15 +212,6 @@ public static VersionDatabase generate() throws Exception {
database.sparrow = SPARROW_METADATA_PARSER.getVersions(MavenBuildGameVersion::new);
database.nests = NESTS_METADATA_PARSER.getVersions(MavenBuildGameVersion::new);
database.installer = INSTALLER_METADATA_PARSER.getVersions(MavenUrlVersion::new);
database.osl = OSL_METADATA_PARSER.getVersions(MavenVersion::new);
for (MavenVersion version : database.osl) {
database.oslDependencies.put(version.getVersion(), OSL_POM_PARSER.getDependencies(MavenVersion::new, version.getVersion(), v -> {
return v.getMaven().startsWith("net.ornithemc.osl");
}));
}
for (String module : oslModules()) {
database.oslModules.put(module, oslModuleMetadataParser(module).getVersions(MavenVersion::new));
}
database.libraryUpgrades = LibraryUpgradesV3.get();
database.loadMcData();
OrnitheMeta.LOGGER.info("DB update took {}ms", System.currentTimeMillis() - start);
Expand Down Expand Up @@ -317,16 +328,20 @@ public List<MavenBuildGameVersion> getFeather(int generation) {
return feather.get(generation);
}

public List<MavenBuildVersion> getLoader(int generation, LoaderType type) {
return loader.get(generation).get(type).stream().filter(v -> isPublicLoaderVersion(type, v)).collect(Collectors.toList());
public List<MavenVersion> getOsl(int generation) {
return osl.get(generation);
}

public List<MavenVersion> getOslDependencies(String version) {
return oslDependencies.get(version);
public List<MavenVersion> getOslDependencies(int generation, String version) {
return oslDependencies.get(generation).get(version);
}

public List<MavenVersion> getOslModule(String module) {
return oslModules.get(module);
public List<MavenVersion> getOslModule(int generation, String module) {
return oslModules.get(generation).get(module);
}

public List<MavenBuildVersion> getLoader(int generation, LoaderType type) {
return loader.get(generation).get(type).stream().filter(v -> isPublicLoaderVersion(type, v)).collect(Collectors.toList());
}

public List<MavenBuildVersion> getAllLoader(int generation, LoaderType type) {
Expand Down
16 changes: 8 additions & 8 deletions src/main/java/net/ornithemc/meta/web/EndpointsV3.java
Original file line number Diff line number Diff line change
Expand Up @@ -85,10 +85,10 @@ public static void setup() {

jsonGet("/installer", context -> withLimitSkip(context, OrnitheMeta.database.installer));

jsonGet("/osl", context -> withLimitSkip(context, OrnitheMeta.database.osl));
jsonGet("/osl/:version", context -> withLimitSkip(context, getOslDependencyInfo(context)));
jsonGet("/osl/:module/:game_version", context -> withLimitSkip(context, getOslModuleInfo(context)));
jsonGet("/osl/:module/:game_version/:base_version", context -> withLimitSkip(context, getOslModuleInfo(context)));
jsonGetF("/osl", generation -> context -> withLimitSkip(context, OrnitheMeta.database.getOsl(generation)));
jsonGetF("/osl/:version", generation -> context -> withLimitSkip(context, getOslDependencyInfo(context, generation)));
jsonGetF("/osl/:module/:game_version", generation -> context -> withLimitSkip(context, getOslModuleInfo(context, generation)));
jsonGetF("/osl/:module/:game_version/:base_version", generation -> context -> withLimitSkip(context, getOslModuleInfo(context, generation)));

ProfileHandlerV3.setup();
}
Expand Down Expand Up @@ -238,18 +238,18 @@ private static <T extends BaseVersion> List<BaseVersion> compatibleGameVersions(
return versions;
}

private static List<?> getOslDependencyInfo(Context context) {
private static List<?> getOslDependencyInfo(Context context, int generation) {
if (!context.pathParamMap().containsKey("version")) {
return null;
}

String version = context.pathParam("version");
List<MavenVersion> versions = OrnitheMeta.database.getOslDependencies(version);
List<MavenVersion> versions = OrnitheMeta.database.getOslDependencies(generation, version);

return versions;
}

private static List<?> getOslModuleInfo(Context context) {
private static List<?> getOslModuleInfo(Context context, int generation) {
if (!context.pathParamMap().containsKey("module")) {
return null;
}
Expand All @@ -265,7 +265,7 @@ private static List<?> getOslModuleInfo(Context context) {
return null;
}

List<MavenVersion> versions = OrnitheMeta.database.getOslModule(module);
List<MavenVersion> versions = OrnitheMeta.database.getOslModule(generation, module);

if (context.pathParamMap().containsKey("base_version")) {
String baseVersion = context.pathParam("base_version");
Expand Down