diff --git a/README.md b/README.md
index 627a837..73561f4 100644
--- a/README.md
+++ b/README.md
@@ -124,6 +124,7 @@ The library used [`java.util.logging`](https://docs.oracle.com/javase/8/docs/api
with(poster.logger) {
addHandler(ConsoleHandler().apply { level = Level.FINE })
level = Level.FINE
+ useParentHandlers = false
}
```
@@ -135,6 +136,7 @@ consoleHandler.setLevel(Level.FINE);
final Logger logger = poster.getLogger();
logger.addHandler(consoleHandler);
logger.setLevel(Level.FINE);
+logger.setUseParentHandlers(false);
```
or using a logging properties file.
diff --git a/examples/bld/.idea/app.iml b/examples/bld/.idea/app.iml
index 5a2dc51..2d05353 100644
--- a/examples/bld/.idea/app.iml
+++ b/examples/bld/.idea/app.iml
@@ -10,6 +10,7 @@
+
diff --git a/examples/bld/.idea/misc.xml b/examples/bld/.idea/misc.xml
index 542659b..f522a9e 100644
--- a/examples/bld/.idea/misc.xml
+++ b/examples/bld/.idea/misc.xml
@@ -6,4 +6,4 @@
-
\ No newline at end of file
+
diff --git a/examples/bld/src/main/java/net/thauvin/erik/pinboard/samples/JavaExample.java b/examples/bld/src/main/java/net/thauvin/erik/pinboard/samples/JavaExample.java
index 881ff7f..e638a44 100644
--- a/examples/bld/src/main/java/net/thauvin/erik/pinboard/samples/JavaExample.java
+++ b/examples/bld/src/main/java/net/thauvin/erik/pinboard/samples/JavaExample.java
@@ -29,19 +29,21 @@ public class JavaExample {
logger.setLevel(Level.FINE);
logger.setUseParentHandlers(false);
- // Add Pin
- if (poster.addPin(new PinConfig.Builder()
- .url(url)
- .description("Testing")
- .extended("Extra")
- .tags("test", "java")
- .build())) {
- System.out.println("Added: " + url);
- }
+ if (poster.validate()) {
+ // Add Pin
+ if (poster.addPin(new PinConfig.Builder()
+ .url(url)
+ .description("Testing")
+ .extended("Extra")
+ .tags("test", "java")
+ .build())) {
+ System.out.println("Added: " + url);
+ }
- // Delete Pin
- if (poster.deletePin(url)) {
- System.out.println("Deleted: " + url);
+ // Delete Pin
+ if (poster.deletePin(url)) {
+ System.out.println("Deleted: " + url);
+ }
}
}
}
diff --git a/examples/bld/src/main/kotlin/net/thauvin/erik/pinboard/samples/KotlinExample.kt b/examples/bld/src/main/kotlin/net/thauvin/erik/pinboard/samples/KotlinExample.kt
index 0582144..1b48e82 100644
--- a/examples/bld/src/main/kotlin/net/thauvin/erik/pinboard/samples/KotlinExample.kt
+++ b/examples/bld/src/main/kotlin/net/thauvin/erik/pinboard/samples/KotlinExample.kt
@@ -20,15 +20,18 @@ fun main(args: Array) {
with(poster.logger) {
addHandler(ConsoleHandler().apply { level = Level.FINE })
level = Level.FINE
+ useParentHandlers = false
}
- // Add Pin
- if (poster.addPin(url, "Testing", "Extended test", tags = arrayOf("test", "kotlin"))) {
- println("Added: $url")
- }
+ if (poster.validate()) {
+ // Add Pin
+ if (poster.addPin(url, "Testing", "Extended test", tags = arrayOf("test", "kotlin"))) {
+ println("Added: $url")
+ }
- // Delete Pin
- if (poster.deletePin(url)) {
- println("Deleted: $url")
+ // Delete Pin
+ if (poster.deletePin(url)) {
+ println("Deleted: $url")
+ }
}
}
diff --git a/examples/gradle/java/.idea/misc.xml b/examples/gradle/java/.idea/misc.xml
index 65c5674..cb3f07e 100644
--- a/examples/gradle/java/.idea/misc.xml
+++ b/examples/gradle/java/.idea/misc.xml
@@ -5,4 +5,4 @@
-
\ No newline at end of file
+
diff --git a/examples/gradle/java/src/main/java/net/thauvin/erik/pinboard/samples/JavaExample.java b/examples/gradle/java/src/main/java/net/thauvin/erik/pinboard/samples/JavaExample.java
index 881ff7f..e638a44 100644
--- a/examples/gradle/java/src/main/java/net/thauvin/erik/pinboard/samples/JavaExample.java
+++ b/examples/gradle/java/src/main/java/net/thauvin/erik/pinboard/samples/JavaExample.java
@@ -29,19 +29,21 @@ public class JavaExample {
logger.setLevel(Level.FINE);
logger.setUseParentHandlers(false);
- // Add Pin
- if (poster.addPin(new PinConfig.Builder()
- .url(url)
- .description("Testing")
- .extended("Extra")
- .tags("test", "java")
- .build())) {
- System.out.println("Added: " + url);
- }
+ if (poster.validate()) {
+ // Add Pin
+ if (poster.addPin(new PinConfig.Builder()
+ .url(url)
+ .description("Testing")
+ .extended("Extra")
+ .tags("test", "java")
+ .build())) {
+ System.out.println("Added: " + url);
+ }
- // Delete Pin
- if (poster.deletePin(url)) {
- System.out.println("Deleted: " + url);
+ // Delete Pin
+ if (poster.deletePin(url)) {
+ System.out.println("Deleted: " + url);
+ }
}
}
}
diff --git a/examples/gradle/kotlin/.idea/misc.xml b/examples/gradle/kotlin/.idea/misc.xml
index 65c5674..cb3f07e 100644
--- a/examples/gradle/kotlin/.idea/misc.xml
+++ b/examples/gradle/kotlin/.idea/misc.xml
@@ -5,4 +5,4 @@
-
\ No newline at end of file
+
diff --git a/examples/gradle/kotlin/src/main/kotlin/net/thauvin/erik/pinboard/samples/KotlinExample.kt b/examples/gradle/kotlin/src/main/kotlin/net/thauvin/erik/pinboard/samples/KotlinExample.kt
index 0582144..1b48e82 100644
--- a/examples/gradle/kotlin/src/main/kotlin/net/thauvin/erik/pinboard/samples/KotlinExample.kt
+++ b/examples/gradle/kotlin/src/main/kotlin/net/thauvin/erik/pinboard/samples/KotlinExample.kt
@@ -20,15 +20,18 @@ fun main(args: Array) {
with(poster.logger) {
addHandler(ConsoleHandler().apply { level = Level.FINE })
level = Level.FINE
+ useParentHandlers = false
}
- // Add Pin
- if (poster.addPin(url, "Testing", "Extended test", tags = arrayOf("test", "kotlin"))) {
- println("Added: $url")
- }
+ if (poster.validate()) {
+ // Add Pin
+ if (poster.addPin(url, "Testing", "Extended test", tags = arrayOf("test", "kotlin"))) {
+ println("Added: $url")
+ }
- // Delete Pin
- if (poster.deletePin(url)) {
- println("Deleted: $url")
+ // Delete Pin
+ if (poster.deletePin(url)) {
+ println("Deleted: $url")
+ }
}
}
diff --git a/src/bld/java/net/thauvin/erik/pinboard/PinboardPosterBuild.java b/src/bld/java/net/thauvin/erik/pinboard/PinboardPosterBuild.java
index 1365fa8..f30b68f 100644
--- a/src/bld/java/net/thauvin/erik/pinboard/PinboardPosterBuild.java
+++ b/src/bld/java/net/thauvin/erik/pinboard/PinboardPosterBuild.java
@@ -55,7 +55,7 @@ import static rife.bld.dependencies.Scope.test;
public class PinboardPosterBuild extends Project {
public PinboardPosterBuild() {
- pkg = "net.thauvin.erik.pinboard";
+ pkg = "net.thauvin.erik";
name = "pinboard-poster";
version = version(1, 1, 1, "SNAPSHOT");
@@ -82,7 +82,7 @@ public class PinboardPosterBuild extends Project {
: repository(SONATYPE_RELEASES_LEGACY.location())
.withCredentials(property("sonatype.user"), property("sonatype.password")))
.info()
- .groupId("net.thauvin.erik")
+ .groupId(pkg)
.artifactId(name)
.description("A small library for posting to Pinboard")
.url("https://github.com/ethauvin/" + name)
diff --git a/src/main/kotlin/net/thauvin/erik/pinboard/PinConfig.kt b/src/main/kotlin/net/thauvin/erik/pinboard/PinConfig.kt
index f0d6cea..32ee785 100644
--- a/src/main/kotlin/net/thauvin/erik/pinboard/PinConfig.kt
+++ b/src/main/kotlin/net/thauvin/erik/pinboard/PinConfig.kt
@@ -35,6 +35,8 @@ import java.time.ZonedDateTime
/**
* Provides a builder to add a pin.
+ *
+ * Supports of all the [Pinboard API Parameters](https://pinboard.in/api/#posts_add).
*/
class PinConfig private constructor(
val url: String,
diff --git a/src/main/kotlin/net/thauvin/erik/pinboard/PinboardPoster.kt b/src/main/kotlin/net/thauvin/erik/pinboard/PinboardPoster.kt
index 64fe284..52555b9 100644
--- a/src/main/kotlin/net/thauvin/erik/pinboard/PinboardPoster.kt
+++ b/src/main/kotlin/net/thauvin/erik/pinboard/PinboardPoster.kt
@@ -65,7 +65,7 @@ object Constants {
*
* @constructor Creates a new instance.
*
- * @author [Erik C. Thauvin](https://erik.thauvin.net/)
+ * @author Erik C. Thauvin
*/
open class PinboardPoster() {
/**
@@ -135,9 +135,7 @@ open class PinboardPoster() {
}
/**
- * Adds a bookmark to Pinboard
- *
- * This method supports of all the [Pinboard API Parameters](https://pinboard.in/api/#posts_add).
+ * Adds a bookmark to Pinboard using a [PinConfig] builder.
*/
fun addPin(config: PinConfig): Boolean {
return addPin(
@@ -293,7 +291,10 @@ open class PinboardPoster() {
return false
}
- private fun validate(): Boolean {
+ /**
+ * Ensures that the API token and end point are valid.
+ */
+ fun validate(): Boolean {
var isValid = true
if (!apiToken.contains(':')) {
logger.severe("Please specify a valid API token. (eg. user:TOKEN)")
diff --git a/src/test/kotlin/net/thauvin/erik/pinboard/PinboardPosterTest.kt b/src/test/kotlin/net/thauvin/erik/pinboard/PinboardPosterTest.kt
index 01b1b3b..043e48a 100644
--- a/src/test/kotlin/net/thauvin/erik/pinboard/PinboardPosterTest.kt
+++ b/src/test/kotlin/net/thauvin/erik/pinboard/PinboardPosterTest.kt
@@ -66,6 +66,8 @@ class PinboardPosterTest {
if (!isCi) {
poster.logger.level = Level.FINE
}
+ assertTrue(poster.validate(), "validate()")
+
assertTrue(poster.addPin(url, desc), "addPin($url, $desc)")
assertTrue(poster.deletePin(url), "deletePin($url)")
@@ -78,6 +80,8 @@ class PinboardPosterTest {
poster.logger.level = Level.FINE
}
+ assertTrue(poster.validate(), "validate()")
+
var config = PinConfig.Builder().url(url).description(desc).extended("extra")
assertTrue(poster.addPin(config.build()), "apiToken: ${Constants.ENV_API_TOKEN}")
@@ -120,6 +124,8 @@ class PinboardPosterTest {
poster.logger.level = Level.FINE
}
+ assertTrue(poster.validate(), "validate()")
+
poster.apiEndPoint = ""
assertFalse(poster.deletePin(url), "apiEndPoint: ")