diff --git a/src/main/java/pl/wavesoftware/utils/stringify/api/Configuration.java b/src/main/java/pl/wavesoftware/utils/stringify/api/Configuration.java
index f80642d..5c5e650 100644
--- a/src/main/java/pl/wavesoftware/utils/stringify/api/Configuration.java
+++ b/src/main/java/pl/wavesoftware/utils/stringify/api/Configuration.java
@@ -18,6 +18,7 @@
import pl.wavesoftware.utils.stringify.spi.BeanFactory;
import pl.wavesoftware.utils.stringify.spi.Configurator;
+import pl.wavesoftware.utils.stringify.spi.theme.Theme;
/**
* A interface that represents a configuration options for this library
@@ -60,4 +61,12 @@ public interface Configuration {
* @return a self reference
*/
Configuration beanFactory(BeanFactory beanFactory);
+
+ /**
+ * Configures a user provided theme
+ *
+ * @param theme a theme provided by user
+ * @return a self reference
+ */
+ Configuration theme(Theme theme);
}
diff --git a/src/main/java/pl/wavesoftware/utils/stringify/impl/DefaultConfiguration.java b/src/main/java/pl/wavesoftware/utils/stringify/impl/DefaultConfiguration.java
index 69d224f..060af33 100644
--- a/src/main/java/pl/wavesoftware/utils/stringify/impl/DefaultConfiguration.java
+++ b/src/main/java/pl/wavesoftware/utils/stringify/impl/DefaultConfiguration.java
@@ -20,6 +20,7 @@
import pl.wavesoftware.utils.stringify.api.Mode;
import pl.wavesoftware.utils.stringify.impl.beans.BeansModule;
import pl.wavesoftware.utils.stringify.spi.BeanFactory;
+import pl.wavesoftware.utils.stringify.spi.theme.Theme;
/**
* @author Krzysztof Suszynski
@@ -31,6 +32,7 @@ final class DefaultConfiguration implements Configuration {
private Mode mode = Mode.DEFAULT_MODE;
private BeanFactory beanFactory = DEFAULT_BEAN_FACTORY;
+ private Theme theme = new Theme() {};
@Override
public Configuration mode(Mode mode) {
@@ -44,10 +46,17 @@ public Configuration beanFactory(BeanFactory beanFactory) {
return this;
}
+ @Override
+ public Configuration theme(Theme theme) {
+ this.theme = theme;
+ return this;
+ }
+
DefaultConfiguration dup() {
DefaultConfiguration dup = new DefaultConfiguration();
dup.beanFactory = beanFactory;
dup.mode = mode;
+ dup.theme = theme;
return dup;
}
@@ -58,4 +67,8 @@ Mode getMode() {
BeanFactory getBeanFactory() {
return beanFactory;
}
+
+ Theme getTheme() {
+ return theme;
+ }
}
diff --git a/src/main/java/pl/wavesoftware/utils/stringify/impl/DefaultInspectionContext.java b/src/main/java/pl/wavesoftware/utils/stringify/impl/DefaultInspectionContext.java
index 2df42cf..37b4cb2 100644
--- a/src/main/java/pl/wavesoftware/utils/stringify/impl/DefaultInspectionContext.java
+++ b/src/main/java/pl/wavesoftware/utils/stringify/impl/DefaultInspectionContext.java
@@ -17,9 +17,12 @@
package pl.wavesoftware.utils.stringify.impl;
import pl.wavesoftware.utils.stringify.impl.inspector.InspectionContext;
+import pl.wavesoftware.utils.stringify.impl.inspector.RootInpector;
+import pl.wavesoftware.utils.stringify.spi.theme.Theme;
import java.util.IdentityHashMap;
import java.util.Map;
+import java.util.function.Supplier;
/**
* @author Krzysztof Suszynski
@@ -28,14 +31,13 @@
final class DefaultInspectionContext implements InspectionContext {
private static final Object CONTAIN = new Object();
- private final Map