Skip to content
This repository was archived by the owner on Nov 10, 2018. It is now read-only.

Commit c3f9a45

Browse files
committed
refactor(converter): use dynamic dispatch for Result / LookupElements converter traits
1 parent 5ac7249 commit c3f9a45

18 files changed

+60
-82
lines changed

src/main/groovy/com/github/jeysal/intellij/plugin/livetemplate/scriptenginemacro/conversion/generic/BaseStreamConverter.groovy

Lines changed: 3 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -8,10 +8,8 @@ import java.util.stream.BaseStream
88
* @author seckinger
99
* @since 10/17/16
1010
*/
11-
trait BaseStreamConverter<R> implements Converter<Object, R> {
12-
R convert(final obj) {
13-
obj instanceof BaseStream ?
14-
convert(obj.spliterator()) :
15-
super.convert(obj)
11+
trait BaseStreamConverter<R> implements Converter<BaseStream, R> {
12+
R convert(final BaseStream stream) {
13+
convert(stream.spliterator())
1614
}
1715
}

src/main/groovy/com/github/jeysal/intellij/plugin/livetemplate/scriptenginemacro/conversion/generic/InputStreamConverter.groovy

Lines changed: 3 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -8,10 +8,8 @@ import static com.github.jeysal.java.util.function.SupplierUtils.trying
88
* @author seckinger
99
* @since 10/18/16
1010
*/
11-
trait InputStreamConverter<R> implements Converter<Object, R> {
12-
R convert(final obj) {
13-
obj instanceof InputStream ?
14-
convert(trying(obj.&getText).get().orElse(null)) :
15-
super.convert(obj)
11+
trait InputStreamConverter<R> implements Converter<InputStream, R> {
12+
R convert(final InputStream inputStream) {
13+
convert(trying(inputStream.&getText).get().orElse(null))
1614
}
1715
}

src/main/groovy/com/github/jeysal/intellij/plugin/livetemplate/scriptenginemacro/conversion/generic/IterableConverter.groovy

Lines changed: 3 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -6,10 +6,8 @@ import com.github.jeysal.intellij.plugin.livetemplate.scriptenginemacro.conversi
66
* @author seckinger
77
* @since 10/17/16
88
*/
9-
trait IterableConverter<R> implements Converter<Object, R> {
10-
R convert(final obj) {
11-
obj instanceof Iterable ?
12-
convert(obj.spliterator()) :
13-
super.convert(obj)
9+
trait IterableConverter<R> implements Converter<Iterable, R> {
10+
R convert(final Iterable iterable) {
11+
convert(iterable.spliterator())
1412
}
1513
}

src/main/groovy/com/github/jeysal/intellij/plugin/livetemplate/scriptenginemacro/conversion/generic/IteratorConverter.groovy

Lines changed: 3 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -6,10 +6,8 @@ import com.github.jeysal.intellij.plugin.livetemplate.scriptenginemacro.conversi
66
* @author seckinger
77
* @since 10/17/16
88
*/
9-
trait IteratorConverter<R> implements Converter<Object, R> {
10-
R convert(final obj) {
11-
obj instanceof Iterator ?
12-
convert(Spliterators.spliteratorUnknownSize(obj, 0)) :
13-
super.convert(obj)
9+
trait IteratorConverter<R> implements Converter<Iterator, R> {
10+
R convert(final Iterator iterator) {
11+
convert(Spliterators.spliteratorUnknownSize(iterator, 0))
1412
}
1513
}

src/main/groovy/com/github/jeysal/intellij/plugin/livetemplate/scriptenginemacro/conversion/generic/MapConverter.groovy

Lines changed: 3 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -6,10 +6,8 @@ import com.github.jeysal.intellij.plugin.livetemplate.scriptenginemacro.conversi
66
* @author seckinger
77
* @since 10/17/16
88
*/
9-
trait MapConverter<R> implements Converter<Object, R> {
10-
R convert(final obj) {
11-
obj instanceof Map ?
12-
convert(obj.values().spliterator()) :
13-
super.convert(obj)
9+
trait MapConverter<R> implements Converter<Map, R> {
10+
R convert(final Map map) {
11+
convert(map.values().spliterator())
1412
}
1513
}

src/main/groovy/com/github/jeysal/intellij/plugin/livetemplate/scriptenginemacro/conversion/generic/OptionalConverter.groovy

Lines changed: 3 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -6,10 +6,8 @@ import com.github.jeysal.intellij.plugin.livetemplate.scriptenginemacro.conversi
66
* @author seckinger
77
* @since 10/17/16
88
*/
9-
trait OptionalConverter<R> implements Converter<Object, R> {
10-
R convert(final obj) {
11-
obj instanceof Optional ?
12-
convert(obj.orElse('empty')) :
13-
super.convert(obj)
9+
trait OptionalConverter<R> implements Converter<Optional, R> {
10+
R convert(final Optional optional) {
11+
convert(optional.orElse('empty'))
1412
}
1513
}

src/main/groovy/com/github/jeysal/intellij/plugin/livetemplate/scriptenginemacro/conversion/generic/ReaderConverter.groovy

Lines changed: 3 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -8,10 +8,8 @@ import static com.github.jeysal.java.util.function.SupplierUtils.trying
88
* @author seckinger
99
* @since 10/18/16
1010
*/
11-
trait ReaderConverter<R> implements Converter<Object, R> {
12-
R convert(final obj) {
13-
obj instanceof Reader ?
14-
convert(trying(obj.&getText).get().orElse(null)) :
15-
super.convert(obj)
11+
trait ReaderConverter<R> implements Converter<Reader, R> {
12+
R convert(final Reader reader) {
13+
convert(trying(reader.&getText).get().orElse(null))
1614
}
1715
}

src/main/groovy/com/github/jeysal/intellij/plugin/livetemplate/scriptenginemacro/conversion/generic/SupplierConverter.groovy

Lines changed: 3 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -8,10 +8,8 @@ import java.util.function.Supplier
88
* @author seckinger
99
* @since 10/17/16
1010
*/
11-
trait SupplierConverter<R> implements Converter<Object, R> {
12-
R convert(final obj) {
13-
obj instanceof Supplier ?
14-
convert(obj.get()) :
15-
super.convert(obj)
11+
trait SupplierConverter<R> implements Converter<Supplier, R> {
12+
R convert(final Supplier supplier) {
13+
convert(supplier.get())
1614
}
1715
}

src/main/groovy/com/github/jeysal/intellij/plugin/livetemplate/scriptenginemacro/conversion/lookupelements/DefaultLookupElementsConverter.groovy

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,7 @@ import com.intellij.codeInsight.lookup.LookupElementBuilder
77
* @author seckinger
88
* @since 10/18/16
99
*/
10-
class DefaultLookupElementsConverter implements LookupElementsConverter {
10+
class DefaultLookupElementsConverter implements LookupElementsConverter<Object> {
1111
@Override
1212
LookupElement[] convert(final obj) {
1313
obj == null ?

src/main/groovy/com/github/jeysal/intellij/plugin/livetemplate/scriptenginemacro/conversion/lookupelements/LookupElementsConverter.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -8,5 +8,5 @@
88
* @since 1/6/17
99
*/
1010
@FunctionalInterface
11-
public interface LookupElementsConverter extends Converter<Object, LookupElement[]> {
11+
public interface LookupElementsConverter<T> extends Converter<T, LookupElement[]> {
1212
}
Original file line numberDiff line numberDiff line change
@@ -1,21 +1,22 @@
11
package com.github.jeysal.intellij.plugin.livetemplate.scriptenginemacro.conversion.lookupelements
22

33
import com.github.jeysal.intellij.plugin.livetemplate.scriptenginemacro.conversion.generic.*
4+
import com.intellij.codeInsight.lookup.LookupElement
45

56
/**
67
* @author seckinger
78
* @since 10/18/16
89
*/
910
class LookupElementsConverterImpl extends DefaultLookupElementsConverter implements
10-
ArrayConverter,
11-
BaseStreamConverter,
12-
InputStreamConverter,
13-
IterableConverter,
14-
IteratorConverter,
15-
MapConverter,
16-
OptionalConverter,
17-
ReaderConverter,
18-
SupplierConverter,
11+
ArrayConverter<LookupElement[]>,
12+
BaseStreamConverter<LookupElement[]>,
13+
InputStreamConverter<LookupElement[]>,
14+
IterableConverter<LookupElement[]>,
15+
IteratorConverter<LookupElement[]>,
16+
MapConverter<LookupElement[]>,
17+
OptionalConverter<LookupElement[]>,
18+
ReaderConverter<LookupElement[]>,
19+
SupplierConverter<LookupElement[]>,
1920
SingleLookupElementConverter,
2021
SpliteratorLookupElementsConverter {
2122
}

src/main/groovy/com/github/jeysal/intellij/plugin/livetemplate/scriptenginemacro/conversion/lookupelements/SingleLookupElementConverter.groovy

Lines changed: 3 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -6,11 +6,9 @@ import com.intellij.codeInsight.lookup.LookupElement
66
* @author seckinger
77
* @since 10/22/16
88
*/
9-
trait SingleLookupElementConverter implements LookupElementsConverter {
9+
trait SingleLookupElementConverter implements LookupElementsConverter<LookupElement> {
1010
@Override
11-
LookupElement[] convert(final obj) {
12-
obj instanceof LookupElement ?
13-
[obj] as LookupElement[] :
14-
super.convert(obj)
11+
LookupElement[] convert(final LookupElement elem) {
12+
[elem] as LookupElement[]
1513
}
1614
}

src/main/groovy/com/github/jeysal/intellij/plugin/livetemplate/scriptenginemacro/conversion/lookupelements/SpliteratorLookupElementsConverter.groovy

Lines changed: 3 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -9,10 +9,8 @@ import java.util.stream.StreamSupport
99
* @author seckinger
1010
* @since 10/22/16
1111
*/
12-
trait SpliteratorLookupElementsConverter implements LookupElementsConverter {
13-
LookupElement[] convert(final obj) {
14-
obj instanceof Spliterator ?
15-
StreamSupport.stream(obj, false).map(this.&convert).collect(Collectors.toList()).flatten() as LookupElement[] :
16-
super.convert(obj)
12+
trait SpliteratorLookupElementsConverter implements LookupElementsConverter<Spliterator> {
13+
LookupElement[] convert(final Spliterator spliterator) {
14+
StreamSupport.stream(spliterator, false).map(this.&convert).collect(Collectors.toList()).flatten() as LookupElement[]
1715
}
1816
}

src/main/groovy/com/github/jeysal/intellij/plugin/livetemplate/scriptenginemacro/conversion/result/DefaultResultConverter.groovy

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,7 @@ import com.intellij.codeInsight.template.TextResult
77
* @author seckinger
88
* @since 10/17/16
99
*/
10-
class DefaultResultConverter implements ResultConverter {
10+
class DefaultResultConverter implements ResultConverter<Object> {
1111
@Override
1212
Result convert(final obj) {
1313
new TextResult(Objects.toString(obj))

src/main/groovy/com/github/jeysal/intellij/plugin/livetemplate/scriptenginemacro/conversion/result/IdentityResultConverter.groovy

Lines changed: 3 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -6,11 +6,9 @@ import com.intellij.codeInsight.template.Result
66
* @author seckinger
77
* @since 10/17/16
88
*/
9-
trait IdentityResultConverter implements ResultConverter {
9+
trait IdentityResultConverter implements ResultConverter<Result> {
1010
@Override
11-
Result convert(final obj) {
12-
obj instanceof Result ?
13-
obj :
14-
super.convert(obj)
11+
Result convert(final Result res) {
12+
res
1513
}
1614
}

src/main/groovy/com/github/jeysal/intellij/plugin/livetemplate/scriptenginemacro/conversion/result/ResultConverter.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -8,5 +8,5 @@
88
* @since 1/6/17
99
*/
1010
@FunctionalInterface
11-
public interface ResultConverter extends Converter<Object, Result> {
11+
public interface ResultConverter<T> extends Converter<T, Result> {
1212
}
Original file line numberDiff line numberDiff line change
@@ -1,21 +1,22 @@
11
package com.github.jeysal.intellij.plugin.livetemplate.scriptenginemacro.conversion.result
22

33
import com.github.jeysal.intellij.plugin.livetemplate.scriptenginemacro.conversion.generic.*
4+
import com.intellij.codeInsight.template.Result
45

56
/**
67
* @author seckinger
78
* @since 10/17/16
89
*/
910
class ResultConverterImpl extends DefaultResultConverter implements
10-
ArrayConverter,
11-
BaseStreamConverter,
12-
InputStreamConverter,
13-
IterableConverter,
14-
IteratorConverter,
15-
MapConverter,
16-
OptionalConverter,
17-
ReaderConverter,
18-
SupplierConverter,
11+
ArrayConverter<Result>,
12+
BaseStreamConverter<Result>,
13+
InputStreamConverter<Result>,
14+
IterableConverter<Result>,
15+
IteratorConverter<Result>,
16+
MapConverter<Result>,
17+
OptionalConverter<Result>,
18+
ReaderConverter<Result>,
19+
SupplierConverter<Result>,
1920
IdentityResultConverter,
2021
SpliteratorResultConverter {
2122
}

src/main/groovy/com/github/jeysal/intellij/plugin/livetemplate/scriptenginemacro/conversion/result/SpliteratorResultConverter.groovy

Lines changed: 3 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -8,11 +8,9 @@ import java.util.stream.StreamSupport
88
* @author seckinger
99
* @since 10/17/16
1010
*/
11-
trait SpliteratorResultConverter implements ResultConverter {
11+
trait SpliteratorResultConverter implements ResultConverter<Spliterator> {
1212
@Override
13-
Result convert(final obj) {
14-
obj instanceof Spliterator ?
15-
convert(StreamSupport.stream(obj, false).findFirst().orElse(null)) :
16-
super.convert(obj)
13+
Result convert(final Spliterator spliterator) {
14+
convert(StreamSupport.stream(spliterator, false).findFirst().orElse(null))
1715
}
1816
}

0 commit comments

Comments
 (0)