All Downloads are FREE. Search and download functionalities are using the official Maven repository.

com.g2forge.gearbox.maven.MavenCoordinates Maven / Gradle / Ivy

The newest version!
package com.g2forge.gearbox.maven;

import com.g2forge.alexandria.java.fluent.optional.NullableOptional;

import lombok.AccessLevel;
import lombok.Builder;
import lombok.Data;
import lombok.EqualsAndHashCode;
import lombok.Getter;
import lombok.RequiredArgsConstructor;
import lombok.ToString;

@Data
@Builder(toBuilder = true)
@RequiredArgsConstructor
public class MavenCoordinates {
	protected final String groupId;

	protected final String artifactId;

	protected final String version;

	@Builder.Default
	protected final MavenPackaging packaging = MavenPackaging.JAR;

	@ToString.Exclude
	@Getter(lazy = true, value = AccessLevel.PROTECTED)
	private final String versionLowercase = NullableOptional.ofNullable(getVersion()).map(String::toLowerCase).or(null);

	@EqualsAndHashCode.Include(replaces = "version")
	protected String getVersionIdentity() {
		return getVersionLowercase();
	}

	@Override
	public String toString() {
		final StringBuilder retVal = new StringBuilder();
		retVal.append(getGroupId()).append(':').append(getArtifactId()).append(':').append(getVersion());
		if (getPackaging() != null) retVal.append(':').append(getPackaging().toString().toLowerCase());
		return retVal.toString();
	}
}




© 2015 - 2025 Weber Informatics LLC | Privacy Policy