Skip to content

Commit

Permalink
Slowly killing UncheckedScalar as there is no checked exceptions in K…
Browse files Browse the repository at this point in the history
…otlin
  • Loading branch information
neonailol committed May 14, 2018
1 parent 9668ca0 commit 8f8c5d8
Show file tree
Hide file tree
Showing 8 changed files with 80 additions and 127 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -5,8 +5,6 @@ import nnl.rocks.kactoos.Input
import nnl.rocks.kactoos.Scalar
import nnl.rocks.kactoos.Text
import nnl.rocks.kactoos.scalar.Constant
import nnl.rocks.kactoos.scalar.StickyScalar
import nnl.rocks.kactoos.scalar.UncheckedScalar
import java.io.File
import java.io.IOException
import java.io.InputStream
Expand All @@ -24,12 +22,9 @@ import java.nio.file.Path
*
* @since 0.3
*/
class InputStreamOf private constructor(src: Scalar<InputStream>) : InputStream() {

/**
* The source.
*/
private val source: UncheckedScalar<InputStream> = UncheckedScalar(StickyScalar(src))
class InputStreamOf(
private val source: Scalar<InputStream>
) : InputStream() {

/**
* Ctor.
Expand Down Expand Up @@ -176,7 +171,7 @@ class InputStreamOf private constructor(src: Scalar<InputStream>) : InputStream(
* Ctor.
* @param input The input
*/
constructor(input: Input) : this(Constant<InputStream> { input.stream() } as Scalar<InputStream>)
constructor(input: Input) : this(Constant { input.stream() })

@Throws(IOException::class)
override fun read(): Int {
Expand Down
29 changes: 12 additions & 17 deletions kactoos-jvm/src/main/kotlin/nnl/rocks/kactoos/iterator/Shuffled.kt
Original file line number Diff line number Diff line change
@@ -1,9 +1,8 @@
package nnl.rocks.kactoos.iterator

import nnl.rocks.kactoos.Scalar
import nnl.rocks.kactoos.scalar.Constant
import nnl.rocks.kactoos.scalar.StickyScalar
import nnl.rocks.kactoos.scalar.UncheckedScalar
import java.util.Collections
import java.util.LinkedList

/**
Expand All @@ -16,24 +15,20 @@ import java.util.LinkedList
* @param T Element type
* @since 0.20
*/
class Shuffled<out T>(iterator: Iterator<T>) : Iterator<T> {
class Shuffled<out T>(private val scalar: Scalar<Iterator<T>>) : Iterator<T> {

private val scalar: UncheckedScalar<Iterator<T>>

init {
this.scalar = UncheckedScalar(
StickyScalar<Iterator<T>>(
Constant {
val items = LinkedList<T>()
while (iterator.hasNext()) {
items.add(iterator.next())
}
Collections.shuffle(items)
items.iterator()
constructor(iterator: Iterator<T>) : this(
StickyScalar<Iterator<T>>(
Constant {
val items = LinkedList<T>()
while (iterator.hasNext()) {
items.add(iterator.next())
}
)
items.shuffle()
items.iterator()
}
)
}
)

override fun hasNext(): Boolean = this.scalar().hasNext()

Expand Down
54 changes: 18 additions & 36 deletions kactoos-jvm/src/main/kotlin/nnl/rocks/kactoos/iterator/Sorted.kt
Original file line number Diff line number Diff line change
@@ -1,57 +1,39 @@
package nnl.rocks.kactoos.iterator

import nnl.rocks.kactoos.Scalar
import nnl.rocks.kactoos.scalar.Constant
import nnl.rocks.kactoos.scalar.StickyScalar
import nnl.rocks.kactoos.scalar.UncheckedScalar
import java.util.Comparator
import java.util.LinkedList

/**
* Sorted iterator.
*
*
* There is no thread-safety guarantee.
*
*
*
* @param T Element type
* @since 0.7
* @since 0.3
*/
class Sorted<T : Comparable<T>>(
comparator: Comparator<T>,
iterator: Iterator<T>
) : Iterator<T> {

/**
* Sorted one.
*/
private val scalar: UncheckedScalar<Iterator<T>>

/**
* If you're using this ctor you must be sure that type `T`
* implements [Comparable] interface. Otherwise, there will be
* a type casting exception in runtime.
*
* @param items The underlying iterator
*/
constructor(items: Iterator<T>) : this(Comparator.naturalOrder<T>() as Comparator<T>, items)
private val scalar: Scalar<Iterator<T>>
) : Iterator<T> by scalar() {

init {
this.scalar = UncheckedScalar(
StickyScalar<Iterator<T>>(
Constant {
val items = LinkedList<T>()
while (iterator.hasNext()) {
items.add(iterator.next())
}
items.sortWith(comparator)
items.iterator()
constructor(
comparator: Comparator<T>,
iterator: Iterator<T>
) : this(
StickyScalar<Iterator<T>>(
Constant {
val items = LinkedList<T>()
while (iterator.hasNext()) {
items.add(iterator.next())
}
)
items.sortWith(comparator)
items.iterator()
}
)
}
)

override fun hasNext(): Boolean = this.scalar().hasNext()
constructor(items: Iterator<T>) : this(Comparator.naturalOrder<T>(), items)

override fun next(): T = this.scalar().next()
}
Original file line number Diff line number Diff line change
@@ -1,50 +1,37 @@
package nnl.rocks.kactoos.iterator

import nnl.rocks.kactoos.Scalar
import nnl.rocks.kactoos.iterable.IterableOf
import nnl.rocks.kactoos.scalar.Constant
import nnl.rocks.kactoos.scalar.StickyScalar
import nnl.rocks.kactoos.scalar.UncheckedScalar
import java.util.LinkedList

/**
* Iterator that returns the same set of elements always.
*
*
* There is no thread-safety guarantee.
*
*
*
* @param X Type of item
* @since 0.8
* @since 0.3
*/
class StickyIterator<X : Any>(iterator: Iterator<X>) : Iterator<X> {

/**
* The gate.
*/
private val gate: UncheckedScalar<Iterator<X>>
class StickyIterator<X : Any>(
private val gate: Scalar<Iterator<X>>
) : Iterator<X> by gate() {

init {
this.gate = UncheckedScalar(
StickyScalar<Iterator<X>>(
Constant {
val temp = LinkedList<X>()
while (iterator.hasNext()) {
temp.add(iterator.next())
}
temp.iterator()
constructor(iterator: Iterator<X>) : this(
StickyScalar<Iterator<X>>(
Constant {
val temp = LinkedList<X>()
while (iterator.hasNext()) {
temp.add(iterator.next())
}
)
temp.iterator()
}
)
}
)

/**
* @param items Items to iterate
* @param items Items to iterate over
*/
@SafeVarargs
constructor(vararg items: X) : this(IterableOf<X>(items.iterator()).iterator())

override fun hasNext(): Boolean = this.gate().hasNext()

override fun next(): X = this.gate().next()
}
Original file line number Diff line number Diff line change
@@ -1,8 +1,8 @@
package nnl.rocks.kactoos.time

import nnl.rocks.kactoos.Scalar
import nnl.rocks.kactoos.Text
import nnl.rocks.kactoos.scalar.Constant
import nnl.rocks.kactoos.scalar.UncheckedScalar

import java.time.LocalDate
import java.time.LocalTime
Expand All @@ -18,15 +18,14 @@ import java.util.Locale
* @param formatter The formatter to use.
* @since 0.3
*/
class LocalDateAsText @JvmOverloads constructor(
date: LocalDate,
formatter: DateTimeFormatter = Iso().get()
class LocalDateAsText constructor(
private val formatted: Scalar<String>
) : Text {

/**
* Scalar carrying the formatted date.
*/
private val formatted: UncheckedScalar<String> = UncheckedScalar(
constructor(
date: LocalDate,
formatter: DateTimeFormatter = Iso().get()
) : this(
Constant {
formatter.format(
ZonedDateTime.of(date, LocalTime.MIN, ZoneId.systemDefault())
Expand Down
Original file line number Diff line number Diff line change
@@ -1,8 +1,8 @@
package nnl.rocks.kactoos.time

import nnl.rocks.kactoos.Scalar
import nnl.rocks.kactoos.Text
import nnl.rocks.kactoos.scalar.Constant
import nnl.rocks.kactoos.scalar.UncheckedScalar

import java.time.LocalDateTime
import java.time.ZoneId
Expand All @@ -12,19 +12,20 @@ import java.util.Locale
/**
* Formatter for [LocalDateTime] instances.
*
* @param date The date to format.
* @param formatter The formatter to use.
* @since 0.3
*/
class LocalDateTimeAsText @JvmOverloads constructor(
date: LocalDateTime,
formatter: DateTimeFormatter = Iso().get()
class LocalDateTimeAsText(
private val formatted: Scalar<String>
) : Text {

/**
* Scalar carrying the formatted date.
* @param date The date to format.
* @param formatter The formatter to use.
*/
private val formatted: UncheckedScalar<String> = UncheckedScalar(
constructor(
date: LocalDateTime,
formatter: DateTimeFormatter = Iso().get()
) : this(
Constant { formatter.format(date.atZone(ZoneId.systemDefault())) }
)

Expand Down
Original file line number Diff line number Diff line change
@@ -1,29 +1,25 @@
package nnl.rocks.kactoos.time

import nnl.rocks.kactoos.Scalar
import nnl.rocks.kactoos.Text
import nnl.rocks.kactoos.scalar.Constant
import nnl.rocks.kactoos.scalar.UncheckedScalar

import java.time.OffsetDateTime
import java.time.format.DateTimeFormatter
import java.util.Locale

/**
* Formatter for [OffsetDateTime] instances.
*
* @param date The date to format.
* @param formatter The formatter to use.
* @since 0.27
* @since 0.3
*/
class OffsetDateTimeAsText @JvmOverloads constructor(
date: OffsetDateTime,
formatter: DateTimeFormatter = Iso().get()
class OffsetDateTimeAsText constructor(
private val formatted: Scalar<String>
) : Text {

/**
* Scalar carrying the formatted date.
*/
private val formatted: UncheckedScalar<String> = UncheckedScalar(
constructor(
date: OffsetDateTime,
formatter: DateTimeFormatter = Iso().get()
) : this(
Constant { formatter.format(date) }
)

Expand Down
Original file line number Diff line number Diff line change
@@ -1,9 +1,8 @@
package nnl.rocks.kactoos.time

import nnl.rocks.kactoos.Scalar
import nnl.rocks.kactoos.Text
import nnl.rocks.kactoos.scalar.Constant
import nnl.rocks.kactoos.scalar.UncheckedScalar

import java.time.ZonedDateTime
import java.time.format.DateTimeFormatter
import java.util.Locale
Expand All @@ -14,15 +13,14 @@ import java.util.Locale
* @param formatter The formatter to use.
* @since 0.3
*/
class ZonedDateTimeAsText @JvmOverloads constructor(
date: ZonedDateTime,
formatter: DateTimeFormatter = Iso().get()
class ZonedDateTimeAsText constructor(
private val formatted: Scalar<String>
) : Text {

/**
* Scalar carrying the formatted date.
*/
private val formatted: UncheckedScalar<String> = UncheckedScalar(
constructor(
date: ZonedDateTime,
formatter: DateTimeFormatter = Iso().get()
) : this(
Constant { formatter.format(date) }
)

Expand Down

0 comments on commit 8f8c5d8

Please sign in to comment.