From e94135f256e6831317ed56165a05daa096b87754 Mon Sep 17 00:00:00 2001 From: ChronosX88 Date: Sat, 2 Mar 2019 21:23:43 +0400 Subject: [PATCH] Published artifact to Maven Central and changed representation of NodeID to Base64 --- .gitignore | 1 + build.gradle | 80 ++++++++++++++++++- .../chronosx88/kademliadht/dht/DHT.java | 2 +- .../kademliadht/node/KademliaId.java | 16 ++-- 4 files changed, 89 insertions(+), 10 deletions(-) diff --git a/.gitignore b/.gitignore index ae5e786..39862cd 100644 --- a/.gitignore +++ b/.gitignore @@ -2,3 +2,4 @@ /build/ /.gradle/ /.idea/ +/gradle.properties diff --git a/build.gradle b/build.gradle index 0ecff98..cb46eb7 100644 --- a/build.gradle +++ b/build.gradle @@ -1,10 +1,89 @@ plugins { id 'java-library' + id 'maven' + id 'signing' } group 'io.github.chronosx88' version '1.0' +task javadocJar(type: Jar) { + classifier = 'javadoc' + from javadoc +} + +task sourcesJar(type: Jar) { + classifier = 'sources' + from sourceSets.main.allSource +} + +artifacts { + archives javadocJar, sourcesJar +} + +if (JavaVersion.current().isJava8Compatible()) { + allprojects { + tasks.withType(Javadoc) { + options.addBooleanOption('Xdoclint:none', true) + } + } +} + +signing { + sign configurations.archives +} + +uploadArchives { + repositories { + mavenDeployer { + beforeDeployment { MavenDeployment deployment -> signing.signPom(deployment) } + + repository(url: "https://oss.sonatype.org/service/local/staging/deploy/maven2/") { + authentication(userName: username, password: password) + } + + snapshotRepository(url: "https://oss.sonatype.org/content/repositories/snapshots/") { + authentication(userName: username, password: password) + } + + pom.project { + name 'KademliaDHT' + packaging 'jar' + description 'KademliaDHT implementation in Java' + url 'https://github.com/ChronosX88/KademliaDHT' + + scm { + connection 'scm:git:git://github.com/ChronosX88/KademliaDHT.git' + developerConnection 'scm:git:git@github.com:ChronosX88/KademliaDHT.git' + url 'https://github.com/ChronosX88/KademliaDHT' + } + + licenses { + license { + name 'The MIT License (MIT)' + url 'https://opensource.org/licenses/MIT' + distribution repository + } + } + + developers { + developer { + id 'JoshuaKissoon' + name 'Joshua Kissoon' + email 'JoshuaKissoon@gmail.com' + } + developer { + id 'ChronosX88' + name 'ChronosX88' + email 'chronosx88@gmail.com' + } + } + } + } + } +} + + sourceCompatibility = 1.8 repositories { @@ -13,5 +92,4 @@ repositories { dependencies { implementation 'com.google.code.gson:gson:2.8.5' - implementation 'javax.xml.bind:jaxb-api:2.4.0-b180830.0359' } diff --git a/src/main/java/io/github/chronosx88/kademliadht/dht/DHT.java b/src/main/java/io/github/chronosx88/kademliadht/dht/DHT.java index 85d830e..adb9128 100644 --- a/src/main/java/io/github/chronosx88/kademliadht/dht/DHT.java +++ b/src/main/java/io/github/chronosx88/kademliadht/dht/DHT.java @@ -223,7 +223,7 @@ public class DHT implements KademliaDHT * * The name of the file containing the content is the hash of this content */ - String folderName = key.hexRepresentation().substring(0, 2); + String folderName = key.stringRepresentation().substring(0, 2); File contentStorageFolder = new File(this.config.getNodeDataFolder(ownerId) + File.separator + folderName); /* Create the content folder if it doesn't exist */ diff --git a/src/main/java/io/github/chronosx88/kademliadht/node/KademliaId.java b/src/main/java/io/github/chronosx88/kademliadht/node/KademliaId.java index 1f106f9..b46c1d6 100644 --- a/src/main/java/io/github/chronosx88/kademliadht/node/KademliaId.java +++ b/src/main/java/io/github/chronosx88/kademliadht/node/KademliaId.java @@ -5,17 +5,17 @@ */ package io.github.chronosx88.kademliadht.node; +import io.github.chronosx88.kademliadht.message.Streamable; + import java.io.DataInputStream; import java.io.DataOutputStream; import java.io.IOException; import java.io.Serializable; import java.math.BigInteger; import java.util.Arrays; +import java.util.Base64; import java.util.BitSet; import java.util.Random; -import io.github.chronosx88.kademliadht.message.Streamable; - -import javax.xml.bind.DatatypeConverter; public class KademliaId implements Streamable, Serializable { @@ -30,7 +30,7 @@ public class KademliaId implements Streamable, Serializable */ public KademliaId(String data) { - keyBytes = DatatypeConverter.parseHexBinary(data); + keyBytes = Base64.getDecoder().decode(data); if (keyBytes.length != ID_LENGTH / 8) { throw new IllegalArgumentException("Specified Data need to be " + (ID_LENGTH / 8) + " characters long."); @@ -249,16 +249,16 @@ public class KademliaId implements Streamable, Serializable this.keyBytes = input; } - public String hexRepresentation() + public String stringRepresentation() { - /* Returns the hex format of this NodeId */ - return DatatypeConverter.printHexBinary(this.keyBytes); + /* Returns the base64 format of this NodeId */ + return Base64.getEncoder().encodeToString(this.keyBytes); } @Override public String toString() { - return this.hexRepresentation(); + return this.stringRepresentation(); } }