Skip to content

Commit c7dcf25

Browse files
committed
Replace buildToString(ValuesToString) by more general forEach(BiConsumer)
This allows to define AbstractValues.toString() which will do by default just printing of all modified (non-default) values, and allows subclasses to override forEach() to include defaults which will be potentially useful for other purposes as well. Meaning, that ValuesToString is now just one possible BiConsumer.
1 parent b4256a5 commit c7dcf25

File tree

1 file changed

+21
-11
lines changed

1 file changed

+21
-11
lines changed

src/main/java/org/scijava/optional/AbstractValues.java

Lines changed: 21 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,7 @@
11
package org.scijava.optional;
22

33
import java.util.LinkedHashMap;
4+
import java.util.function.BiConsumer;
45

56
public abstract class AbstractValues implements Values
67
{
@@ -11,9 +12,17 @@ public AbstractValues( AbstractOptions< ? > options )
1112
this.theOptions = options.theOptions;
1213
}
1314

14-
public void buildToString( final ValuesToString sb )
15+
public void forEach( BiConsumer< String, Object > action )
1516
{
16-
throw new UnsupportedOperationException( "internal, not supposed to be called" );
17+
theOptions.forEach( action );
18+
}
19+
20+
@Override
21+
public String toString()
22+
{
23+
final ValuesToString sb = new ValuesToString();
24+
forEach( sb );
25+
return sb.toString();
1726
}
1827

1928
@Override
@@ -24,7 +33,7 @@ public < T > T value( final String key, final T defaultValue )
2433
return value == null ? defaultValue : value;
2534
}
2635

27-
public class ValuesToString
36+
public class ValuesToString implements BiConsumer< String, Object >
2837
{
2938
private final StringBuilder sb;
3039

@@ -36,7 +45,15 @@ public ValuesToString()
3645
first = true;
3746
}
3847

39-
public < T > void append( final String key, final T value )
48+
@Override
49+
public String toString()
50+
{
51+
sb.append( "}" );
52+
return sb.toString();
53+
}
54+
55+
@Override
56+
public void accept( final String key, final Object value )
4057
{
4158
if ( first )
4259
first = false;
@@ -48,12 +65,5 @@ public < T > void append( final String key, final T value )
4865
if ( !theOptions.containsKey( key ) )
4966
sb.append( " [default]" );
5067
}
51-
52-
@Override
53-
public String toString()
54-
{
55-
sb.append( "}" );
56-
return sb.toString();
57-
}
5868
}
5969
}

0 commit comments

Comments
 (0)