Deleted VersionEnum class file and replaced with proper Via API

This commit is contained in:
FlorianMichael 2024-02-14 00:44:31 +01:00
parent 2b44f2bf6f
commit 65b9a0bd64
No known key found for this signature in database
GPG Key ID: C2FB87E71C425126
4 changed files with 34 additions and 342 deletions

View File

@ -18,18 +18,20 @@
package net.raphimc.vialoader.netty;
import com.viaversion.viaversion.api.connection.UserConnection;
import com.viaversion.viaversion.api.protocol.version.ProtocolVersion;
import io.netty.channel.ChannelHandler;
import io.netty.channel.ChannelHandlerContext;
import io.netty.channel.ChannelInboundHandlerAdapter;
import net.raphimc.viabedrock.api.BedrockProtocolVersion;
import net.raphimc.viabedrock.api.protocol.BedrockBaseProtocol;
import net.raphimc.viabedrock.netty.BatchLengthCodec;
import net.raphimc.viabedrock.netty.PacketEncapsulationCodec;
import net.raphimc.vialegacy.api.LegacyProtocolVersion;
import net.raphimc.vialegacy.api.protocol.PreNettyBaseProtocol;
import net.raphimc.vialegacy.netty.PreNettyLengthPrepender;
import net.raphimc.vialegacy.netty.PreNettyLengthRemover;
import net.raphimc.vialoader.netty.viabedrock.DisconnectHandler;
import net.raphimc.vialoader.netty.viabedrock.RakMessageEncapsulationCodec;
import net.raphimc.vialoader.util.VersionEnum;
public abstract class VLLegacyPipeline extends ChannelInboundHandlerAdapter {
@ -44,9 +46,9 @@ public abstract class VLLegacyPipeline extends ChannelInboundHandlerAdapter {
public static final String VIABEDROCK_PACKET_ENCAPSULATION_HANDLER_NAME = "viabedrock-packet-encapsulation";
protected final UserConnection user;
protected final VersionEnum version;
protected final ProtocolVersion version;
public VLLegacyPipeline(final UserConnection user, final VersionEnum version) {
public VLLegacyPipeline(final UserConnection user, final ProtocolVersion version) {
this.user = user;
this.version = version;
}
@ -56,11 +58,11 @@ public abstract class VLLegacyPipeline extends ChannelInboundHandlerAdapter {
ctx.pipeline().addBefore(this.packetDecoderName(), VIA_DECODER_NAME, this.createViaDecoder());
ctx.pipeline().addBefore(this.packetEncoderName(), VIA_ENCODER_NAME, this.createViaEncoder());
if (this.version.isOlderThanOrEqualTo(VersionEnum.r1_6_4)) {
if (this.version.lowerThanOrEquals(LegacyProtocolVersion.r1_6_4)) {
this.user.getProtocolInfo().getPipeline().add(PreNettyBaseProtocol.INSTANCE);
ctx.pipeline().addBefore(this.lengthSplitterName(), VIALEGACY_PRE_NETTY_LENGTH_PREPENDER_NAME, this.createViaLegacyPreNettyLengthPrepender());
ctx.pipeline().addBefore(this.lengthPrependerName(), VIALEGACY_PRE_NETTY_LENGTH_REMOVER_NAME, this.createViaLegacyPreNettyLengthRemover());
} else if (this.version.equals(VersionEnum.bedrockLatest)) {
} else if (this.version.equals(BedrockProtocolVersion.bedrockLatest)) {
this.user.getProtocolInfo().getPipeline().add(BedrockBaseProtocol.INSTANCE);
ctx.pipeline().addBefore(this.lengthSplitterName(), VIABEDROCK_DISCONNECT_HANDLER_NAME, this.createViaBedrockDisconnectHandler());
ctx.pipeline().addBefore(this.lengthSplitterName(), VIABEDROCK_FRAME_ENCAPSULATION_HANDLER_NAME, this.createViaBedrockFrameEncapsulationHandler());

View File

@ -18,18 +18,20 @@
package net.raphimc.vialoader.netty;
import com.viaversion.viaversion.api.connection.UserConnection;
import com.viaversion.viaversion.api.protocol.version.ProtocolVersion;
import io.netty.channel.ChannelHandler;
import io.netty.channel.ChannelHandlerContext;
import io.netty.channel.ChannelInboundHandlerAdapter;
import io.netty.channel.ChannelPipeline;
import net.raphimc.viabedrock.api.BedrockProtocolVersion;
import net.raphimc.viabedrock.api.protocol.BedrockBaseProtocol;
import net.raphimc.viabedrock.netty.BatchLengthCodec;
import net.raphimc.viabedrock.netty.PacketEncapsulationCodec;
import net.raphimc.vialegacy.api.LegacyProtocolVersion;
import net.raphimc.vialegacy.api.protocol.PreNettyBaseProtocol;
import net.raphimc.vialegacy.netty.PreNettyLengthCodec;
import net.raphimc.vialoader.netty.viabedrock.DisconnectHandler;
import net.raphimc.vialoader.netty.viabedrock.RakMessageEncapsulationCodec;
import net.raphimc.vialoader.util.VersionEnum;
public abstract class VLPipeline extends ChannelInboundHandlerAdapter {
@ -42,9 +44,9 @@ public abstract class VLPipeline extends ChannelInboundHandlerAdapter {
public static final String VIABEDROCK_PACKET_ENCAPSULATION_HANDLER_NAME = "viabedrock-packet-encapsulation";
protected final UserConnection user;
protected final VersionEnum version;
protected final ProtocolVersion version;
public VLPipeline(final UserConnection user, final VersionEnum version) {
public VLPipeline(final UserConnection user, final ProtocolVersion version) {
this.user = user;
this.version = version;
}
@ -53,10 +55,10 @@ public abstract class VLPipeline extends ChannelInboundHandlerAdapter {
public void handlerAdded(ChannelHandlerContext ctx) {
ctx.pipeline().addBefore(this.packetCodecName(), VIA_CODEC_NAME, this.createViaCodec());
if (this.version.isOlderThanOrEqualTo(VersionEnum.r1_6_4)) {
if (this.version.lowerThanOrEquals(LegacyProtocolVersion.r1_6_4)) {
this.user.getProtocolInfo().getPipeline().add(PreNettyBaseProtocol.INSTANCE);
ctx.pipeline().addBefore(this.lengthCodecName(), VIALEGACY_PRE_NETTY_LENGTH_CODEC_NAME, this.createViaLegacyPreNettyLengthCodec());
} else if (this.version.equals(VersionEnum.bedrockLatest)) {
} else if (this.version.equals(BedrockProtocolVersion.bedrockLatest)) {
this.user.getProtocolInfo().getPipeline().add(BedrockBaseProtocol.INSTANCE);
ctx.pipeline().addBefore(this.lengthCodecName(), VIABEDROCK_DISCONNECT_HANDLER_NAME, this.createViaBedrockDisconnectHandler());
ctx.pipeline().addBefore(this.lengthCodecName(), VIABEDROCK_FRAME_ENCAPSULATION_HANDLER_NAME, this.createViaBedrockFrameEncapsulationHandler());

View File

@ -1,314 +0,0 @@
/*
* This file is part of ViaLoader - https://github.com/RaphiMC/ViaLoader
* Copyright (C) 2020-2024 RK_01/RaphiMC and contributors
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation, either version 3 of the License, or
* (at your option) any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with this program. If not, see <http://www.gnu.org/licenses/>.
*/
package net.raphimc.vialoader.util;
import com.viaversion.viaversion.api.connection.UserConnection;
import com.viaversion.viaversion.api.protocol.version.ProtocolVersion;
import java.util.*;
public enum VersionEnum {
c0_0_15a_1(getViaLegacyProtocol("c0_0_15a_1")),
c0_0_16a_02(getViaLegacyProtocol("c0_0_16a_02")),
c0_0_18a_02(getViaLegacyProtocol("c0_0_18a_02")),
c0_0_19a_06(getViaLegacyProtocol("c0_0_19a_06")),
c0_0_20ac0_27(getViaLegacyProtocol("c0_0_20ac0_27")),
c0_30cpe(getViaLegacyProtocol("c0_30cpe")),
c0_28toc0_30(getViaLegacyProtocol("c0_28toc0_30")),
a1_0_15(getViaLegacyProtocol("a1_0_15")),
a1_0_16toa1_0_16_2(getViaLegacyProtocol("a1_0_16toa1_0_16_2")),
a1_0_17toa1_0_17_4(getViaLegacyProtocol("a1_0_17toa1_0_17_4")),
a1_1_0toa1_1_2_1(getViaLegacyProtocol("a1_1_0toa1_1_2_1")),
a1_2_0toa1_2_1_1(getViaLegacyProtocol("a1_2_0toa1_2_1_1")),
a1_2_2(getViaLegacyProtocol("a1_2_2")),
a1_2_3toa1_2_3_4(getViaLegacyProtocol("a1_2_3toa1_2_3_4")),
a1_2_3_5toa1_2_6(getViaLegacyProtocol("a1_2_3_5toa1_2_6")),
b1_0tob1_1_1(getViaLegacyProtocol("b1_0tob1_1_1")),
b1_1_2(getViaLegacyProtocol("b1_1_2")),
b1_2_0tob1_2_2(getViaLegacyProtocol("b1_2_0tob1_2_2")),
b1_3tob1_3_1(getViaLegacyProtocol("b1_3tob1_3_1")),
b1_4tob1_4_1(getViaLegacyProtocol("b1_4tob1_4_1")),
b1_5tob1_5_2(getViaLegacyProtocol("b1_5tob1_5_2")),
b1_6tob1_6_6(getViaLegacyProtocol("b1_6tob1_6_6")),
b1_7tob1_7_3(getViaLegacyProtocol("b1_7tob1_7_3")),
b1_8tob1_8_1(getViaLegacyProtocol("b1_8tob1_8_1")),
r1_0_0tor1_0_1(getViaLegacyProtocol("r1_0_0tor1_0_1")),
r1_1(getViaLegacyProtocol("r1_1")),
r1_2_1tor1_2_3(getViaLegacyProtocol("r1_2_1tor1_2_3")),
r1_2_4tor1_2_5(getViaLegacyProtocol("r1_2_4tor1_2_5")),
r1_3_1tor1_3_2(getViaLegacyProtocol("r1_3_1tor1_3_2")),
r1_4_2(getViaLegacyProtocol("r1_4_2")),
r1_4_4tor1_4_5(getViaLegacyProtocol("r1_4_4tor1_4_5")),
r1_4_6tor1_4_7(getViaLegacyProtocol("r1_4_6tor1_4_7")),
r1_5tor1_5_1(getViaLegacyProtocol("r1_5tor1_5_1")),
r1_5_2(getViaLegacyProtocol("r1_5_2")),
r1_6_1(getViaLegacyProtocol("r1_6_1")),
r1_6_2(getViaLegacyProtocol("r1_6_2")),
r1_6_4(getViaLegacyProtocol("r1_6_4")),
r1_7_2tor1_7_5(ProtocolVersion.v1_7_1),
r1_7_6tor1_7_10(ProtocolVersion.v1_7_6),
r1_8(ProtocolVersion.v1_8),
r1_9(ProtocolVersion.v1_9),
r1_9_1(ProtocolVersion.v1_9_1),
r1_9_2(ProtocolVersion.v1_9_2),
r1_9_3tor1_9_4(ProtocolVersion.v1_9_3),
r1_10(ProtocolVersion.v1_10),
r1_11(ProtocolVersion.v1_11),
r1_11_1to1_11_2(ProtocolVersion.v1_11_1),
r1_12(ProtocolVersion.v1_12),
r1_12_1(ProtocolVersion.v1_12_1),
r1_12_2(ProtocolVersion.v1_12_2),
r1_13(ProtocolVersion.v1_13),
r1_13_1(ProtocolVersion.v1_13_1),
r1_13_2(ProtocolVersion.v1_13_2),
s3d_shareware(getViaAprilFoolsProtocol("s3d_shareware")),
r1_14(ProtocolVersion.v1_14),
r1_14_1(ProtocolVersion.v1_14_1),
r1_14_2(ProtocolVersion.v1_14_2),
r1_14_3(ProtocolVersion.v1_14_3),
r1_14_4(ProtocolVersion.v1_14_4),
r1_15(ProtocolVersion.v1_15),
r1_15_1(ProtocolVersion.v1_15_1),
r1_15_2(ProtocolVersion.v1_15_2),
s20w14infinite(getViaAprilFoolsProtocol("s20w14infinite")),
r1_16(ProtocolVersion.v1_16),
r1_16_1(ProtocolVersion.v1_16_1),
sCombatTest8c(getViaAprilFoolsProtocol("sCombatTest8c")),
r1_16_2(ProtocolVersion.v1_16_2),
r1_16_3(ProtocolVersion.v1_16_3),
r1_16_4tor1_16_5(ProtocolVersion.v1_16_4),
r1_17(ProtocolVersion.v1_17),
r1_17_1(ProtocolVersion.v1_17_1),
r1_18tor1_18_1(ProtocolVersion.v1_18),
r1_18_2(ProtocolVersion.v1_18_2),
r1_19(ProtocolVersion.v1_19),
r1_19_1tor1_19_2(ProtocolVersion.v1_19_1),
r1_19_3(ProtocolVersion.v1_19_3),
r1_19_4(ProtocolVersion.v1_19_4),
r1_20tor1_20_1(ProtocolVersion.v1_20),
r1_20_2(ProtocolVersion.v1_20_2),
r1_20_3tor1_20_4(ProtocolVersion.v1_20_3),
bedrockLatest(getViaBedrockProtocol("bedrockLatest")),
r1_20_5(ProtocolVersion.v1_20_5),
//
UNKNOWN(ProtocolVersion.unknown), // Not in Registry
;
private static final Map<ProtocolVersion, VersionEnum> VERSION_REGISTRY = new LinkedHashMap<>();
public static final List<VersionEnum> SORTED_VERSIONS = new ArrayList<>();
public static final List<VersionEnum> OFFICIAL_SUPPORTED_PROTOCOLS = new ArrayList<>();
static {
for (VersionEnum version : VersionEnum.values()) {
if (!version.protocolVersion.isKnown()) continue;
VERSION_REGISTRY.put(version.protocolVersion, version);
}
for (VersionEnum version : VersionEnum.getAllVersions()) {
if (version.isNewerThan(VersionEnum.r1_6_4) && version != VersionEnum.s3d_shareware && version != VersionEnum.s20w14infinite && version != VersionEnum.sCombatTest8c && version != VersionEnum.bedrockLatest) {
OFFICIAL_SUPPORTED_PROTOCOLS.add(version);
}
}
SORTED_VERSIONS.add(r1_20_5);
SORTED_VERSIONS.add(r1_20_3tor1_20_4);
SORTED_VERSIONS.add(r1_20_2);
SORTED_VERSIONS.add(r1_20tor1_20_1);
SORTED_VERSIONS.add(r1_19_4);
SORTED_VERSIONS.add(r1_19_3);
SORTED_VERSIONS.add(r1_19_1tor1_19_2);
SORTED_VERSIONS.add(r1_19);
SORTED_VERSIONS.add(r1_18_2);
SORTED_VERSIONS.add(r1_18tor1_18_1);
SORTED_VERSIONS.add(r1_17_1);
SORTED_VERSIONS.add(r1_17);
SORTED_VERSIONS.add(r1_16_4tor1_16_5);
SORTED_VERSIONS.add(r1_16_3);
SORTED_VERSIONS.add(r1_16_2);
SORTED_VERSIONS.add(r1_16_1);
SORTED_VERSIONS.add(r1_16);
SORTED_VERSIONS.add(r1_15_2);
SORTED_VERSIONS.add(r1_15_1);
SORTED_VERSIONS.add(r1_15);
SORTED_VERSIONS.add(r1_14_4);
SORTED_VERSIONS.add(r1_14_3);
SORTED_VERSIONS.add(r1_14_2);
SORTED_VERSIONS.add(r1_14_1);
SORTED_VERSIONS.add(r1_14);
SORTED_VERSIONS.add(r1_13_2);
SORTED_VERSIONS.add(r1_13_1);
SORTED_VERSIONS.add(r1_13);
SORTED_VERSIONS.add(r1_12_2);
SORTED_VERSIONS.add(r1_12_1);
SORTED_VERSIONS.add(r1_12);
SORTED_VERSIONS.add(r1_11_1to1_11_2);
SORTED_VERSIONS.add(r1_11);
SORTED_VERSIONS.add(r1_10);
SORTED_VERSIONS.add(r1_9_3tor1_9_4);
SORTED_VERSIONS.add(r1_9_2);
SORTED_VERSIONS.add(r1_9_1);
SORTED_VERSIONS.add(r1_9);
SORTED_VERSIONS.add(r1_8);
SORTED_VERSIONS.add(r1_7_6tor1_7_10);
SORTED_VERSIONS.add(r1_7_2tor1_7_5);
SORTED_VERSIONS.add(r1_6_4);
SORTED_VERSIONS.add(r1_6_2);
SORTED_VERSIONS.add(r1_6_1);
SORTED_VERSIONS.add(r1_5_2);
SORTED_VERSIONS.add(r1_5tor1_5_1);
SORTED_VERSIONS.add(r1_4_6tor1_4_7);
SORTED_VERSIONS.add(r1_4_4tor1_4_5);
SORTED_VERSIONS.add(r1_4_2);
SORTED_VERSIONS.add(r1_3_1tor1_3_2);
SORTED_VERSIONS.add(r1_2_4tor1_2_5);
SORTED_VERSIONS.add(r1_2_1tor1_2_3);
SORTED_VERSIONS.add(r1_1);
SORTED_VERSIONS.add(r1_0_0tor1_0_1);
SORTED_VERSIONS.add(b1_8tob1_8_1);
SORTED_VERSIONS.add(b1_7tob1_7_3);
SORTED_VERSIONS.add(b1_6tob1_6_6);
SORTED_VERSIONS.add(b1_5tob1_5_2);
SORTED_VERSIONS.add(b1_4tob1_4_1);
SORTED_VERSIONS.add(b1_3tob1_3_1);
SORTED_VERSIONS.add(b1_2_0tob1_2_2);
SORTED_VERSIONS.add(b1_1_2);
SORTED_VERSIONS.add(b1_0tob1_1_1);
SORTED_VERSIONS.add(a1_2_3_5toa1_2_6);
SORTED_VERSIONS.add(a1_2_3toa1_2_3_4);
SORTED_VERSIONS.add(a1_2_2);
SORTED_VERSIONS.add(a1_2_0toa1_2_1_1);
SORTED_VERSIONS.add(a1_1_0toa1_1_2_1);
SORTED_VERSIONS.add(a1_0_17toa1_0_17_4);
SORTED_VERSIONS.add(a1_0_16toa1_0_16_2);
SORTED_VERSIONS.add(a1_0_15);
SORTED_VERSIONS.add(c0_28toc0_30);
SORTED_VERSIONS.add(c0_0_20ac0_27);
SORTED_VERSIONS.add(c0_0_19a_06);
SORTED_VERSIONS.add(c0_0_18a_02);
SORTED_VERSIONS.add(c0_0_16a_02);
SORTED_VERSIONS.add(c0_0_15a_1);
SORTED_VERSIONS.add(bedrockLatest);
SORTED_VERSIONS.add(sCombatTest8c);
SORTED_VERSIONS.add(s20w14infinite);
SORTED_VERSIONS.add(s3d_shareware);
SORTED_VERSIONS.add(c0_30cpe);
SORTED_VERSIONS.removeIf(v -> !v.protocolVersion.isKnown());
}
public static VersionEnum fromProtocolVersion(final ProtocolVersion protocolVersion) {
if (!protocolVersion.isKnown()) return UNKNOWN;
return VERSION_REGISTRY.getOrDefault(protocolVersion, UNKNOWN);
}
public static VersionEnum fromProtocolId(final int protocolId) {
return fromProtocolVersion(ProtocolVersion.getProtocol(protocolId));
}
public static VersionEnum fromProtocolName(final String protocolName) {
final ProtocolVersion protocolVersion = ProtocolVersion.getClosest(protocolName);
if (protocolVersion == null) return UNKNOWN;
return fromProtocolVersion(protocolVersion);
}
public static VersionEnum fromUserConnection(final UserConnection userConnection) {
return fromUserConnection(userConnection, true);
}
public static VersionEnum fromUserConnection(final UserConnection userConnection, final boolean serverProtocol) {
return fromProtocolId(serverProtocol ? userConnection.getProtocolInfo().getServerProtocolVersion() : userConnection.getProtocolInfo().getProtocolVersion());
}
public static Collection<VersionEnum> getAllVersions() {
return VERSION_REGISTRY.values();
}
private static ProtocolVersion getViaLegacyProtocol(final String name) {
try {
return (ProtocolVersion) Class.forName("net.raphimc.vialegacy.api.LegacyProtocolVersion").getField(name).get(null);
} catch (Throwable e) {
return ProtocolVersion.unknown;
}
}
private static ProtocolVersion getViaAprilFoolsProtocol(final String name) {
try {
return (ProtocolVersion) Class.forName("net.raphimc.viaaprilfools.api.AprilFoolsProtocolVersion").getField(name).get(null);
} catch (Throwable e) {
return ProtocolVersion.unknown;
}
}
private static ProtocolVersion getViaBedrockProtocol(final String name) {
try {
return (ProtocolVersion) Class.forName("net.raphimc.viabedrock.api.BedrockProtocolVersion").getField(name).get(null);
} catch (Throwable e) {
return ProtocolVersion.unknown;
}
}
private final ProtocolVersion protocolVersion;
VersionEnum(final ProtocolVersion protocolVersion) {
this.protocolVersion = protocolVersion;
}
public ProtocolVersion getProtocol() {
return this.protocolVersion;
}
public String getName() {
return this.protocolVersion.getName();
}
public int getVersion() {
return this.protocolVersion.getVersion();
}
public int getOriginalVersion() {
return this.protocolVersion.getOriginalVersion();
}
public boolean isOlderThan(final VersionEnum other) {
return this.ordinal() < other.ordinal();
}
public boolean isOlderThanOrEqualTo(final VersionEnum other) {
return this.ordinal() <= other.ordinal();
}
public boolean isNewerThan(final VersionEnum other) {
return this.ordinal() > other.ordinal();
}
public boolean isNewerThanOrEqualTo(final VersionEnum other) {
return this.ordinal() >= other.ordinal();
}
public boolean isBetweenInclusive(final VersionEnum min, final VersionEnum max) {
return this.isNewerThanOrEqualTo(min) && this.isOlderThanOrEqualTo(max);
}
public boolean isBetweenExclusive(final VersionEnum min, final VersionEnum max) {
return this.isNewerThan(min) && this.isOlderThan(max);
}
}

View File

@ -17,35 +17,37 @@
*/
package net.raphimc.vialoader.util;
import com.viaversion.viaversion.api.protocol.version.ProtocolVersion;
import java.util.ArrayList;
import java.util.List;
import java.util.Objects;
public class VersionRange {
private final VersionEnum min;
private final VersionEnum max;
private final ProtocolVersion min;
private final ProtocolVersion max;
private final List<VersionRange> ranges;
private VersionRange(final VersionEnum min, final VersionEnum max) {
private VersionRange(final ProtocolVersion min, final ProtocolVersion max) {
this.min = min;
this.max = max;
this.ranges = new ArrayList<>();
}
public static VersionRange andNewer(final VersionEnum version) {
public static VersionRange andNewer(final ProtocolVersion version) {
return new VersionRange(version, null);
}
public static VersionRange single(final VersionEnum version) {
public static VersionRange single(final ProtocolVersion version) {
return new VersionRange(version, version);
}
public static VersionRange andOlder(final VersionEnum version) {
public static VersionRange andOlder(final ProtocolVersion version) {
return new VersionRange(null, version);
}
public static VersionRange of(final VersionEnum min, final VersionEnum max) {
public static VersionRange of(final ProtocolVersion min, final ProtocolVersion max) {
return new VersionRange(min, max);
}
@ -58,19 +60,19 @@ public class VersionRange {
return this;
}
public boolean contains(final VersionEnum version) {
public boolean contains(final ProtocolVersion version) {
if (this.ranges.stream().anyMatch(range -> range.contains(version))) return true;
if (this.min == null && this.max == null) return true;
else if (this.min == null) return version.isOlderThanOrEqualTo(this.max);
else if (this.max == null) return version.isNewerThanOrEqualTo(this.min);
return version.ordinal() >= this.min.ordinal() && version.ordinal() <= this.max.ordinal();
else if (this.min == null) return version.lowerThanOrEquals(this.max);
else if (this.max == null) return version.higherThanOrEquals(this.min);
return version.higherThanOrEquals(this.min) && version.lowerThanOrEquals(this.max);
}
public VersionEnum getMin() {
public ProtocolVersion getMin() {
return this.min;
}
public VersionEnum getMax() {
public ProtocolVersion getMax() {
return this.max;
}
@ -119,14 +121,14 @@ public class VersionRange {
}
private static VersionRange parseSinglePart(String part) {
if (part.startsWith("<= ")) return andOlder(VersionEnum.fromProtocolName(part.substring(3)));
else if (part.startsWith(">= ")) return andNewer(VersionEnum.fromProtocolName(part.substring(3)));
if (part.startsWith("<= ")) return andOlder(ProtocolVersion.getClosest(part.substring(3)));
else if (part.startsWith(">= ")) return andNewer(ProtocolVersion.getClosest(part.substring(3)));
else if (part.contains(" - ")) {
String[] rangeParts = part.split(" - ");
VersionEnum min = VersionEnum.fromProtocolName(rangeParts[0]);
VersionEnum max = VersionEnum.fromProtocolName(rangeParts[1]);
ProtocolVersion min = ProtocolVersion.getClosest(rangeParts[0]);
ProtocolVersion max = ProtocolVersion.getClosest(rangeParts[1]);
return of(min, max);
} else return single(VersionEnum.fromProtocolName(part));
} else return single(ProtocolVersion.getClosest(part));
}
}