diff --git a/jackson/.classpath b/jackson/.classpath
new file mode 100644
index 0000000000..0720e4851b
--- /dev/null
+++ b/jackson/.classpath
@@ -0,0 +1,36 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/jackson/.externalToolBuilders/org.eclipse.wst.jsdt.core.javascriptValidator.launch b/jackson/.externalToolBuilders/org.eclipse.wst.jsdt.core.javascriptValidator.launch
new file mode 100644
index 0000000000..627021fb96
--- /dev/null
+++ b/jackson/.externalToolBuilders/org.eclipse.wst.jsdt.core.javascriptValidator.launch
@@ -0,0 +1,7 @@
+
+
+
+
+
+
+
diff --git a/jackson/.gitignore b/jackson/.gitignore
new file mode 100644
index 0000000000..83c05e60c8
--- /dev/null
+++ b/jackson/.gitignore
@@ -0,0 +1,13 @@
+*.class
+
+#folders#
+/target
+/neoDb*
+/data
+/src/main/webapp/WEB-INF/classes
+*/META-INF/*
+
+# Packaged files #
+*.jar
+*.war
+*.ear
\ No newline at end of file
diff --git a/jackson/.project b/jackson/.project
new file mode 100644
index 0000000000..ea8ae1a67f
--- /dev/null
+++ b/jackson/.project
@@ -0,0 +1,36 @@
+
+
+ jackson
+
+
+
+
+
+ org.eclipse.jdt.core.javabuilder
+
+
+
+
+ org.eclipse.wst.common.project.facet.core.builder
+
+
+
+
+ org.eclipse.wst.validation.validationbuilder
+
+
+
+
+ org.eclipse.m2e.core.maven2Builder
+
+
+
+
+
+ org.eclipse.jem.workbench.JavaEMFNature
+ org.eclipse.wst.common.modulecore.ModuleCoreNature
+ org.eclipse.jdt.core.javanature
+ org.eclipse.m2e.core.maven2Nature
+ org.eclipse.wst.common.project.facet.core.nature
+
+
diff --git a/jackson/.settings/.jsdtscope b/jackson/.settings/.jsdtscope
new file mode 100644
index 0000000000..7b3f0c8b9f
--- /dev/null
+++ b/jackson/.settings/.jsdtscope
@@ -0,0 +1,5 @@
+
+
+
+
+
diff --git a/jackson/.settings/org.eclipse.jdt.core.prefs b/jackson/.settings/org.eclipse.jdt.core.prefs
new file mode 100644
index 0000000000..723e5b1245
--- /dev/null
+++ b/jackson/.settings/org.eclipse.jdt.core.prefs
@@ -0,0 +1,95 @@
+eclipse.preferences.version=1
+org.eclipse.jdt.core.compiler.annotation.missingNonNullByDefaultAnnotation=ignore
+org.eclipse.jdt.core.compiler.annotation.nonnull=org.eclipse.jdt.annotation.NonNull
+org.eclipse.jdt.core.compiler.annotation.nonnullbydefault=org.eclipse.jdt.annotation.NonNullByDefault
+org.eclipse.jdt.core.compiler.annotation.nullable=org.eclipse.jdt.annotation.Nullable
+org.eclipse.jdt.core.compiler.annotation.nullanalysis=disabled
+org.eclipse.jdt.core.compiler.codegen.inlineJsrBytecode=enabled
+org.eclipse.jdt.core.compiler.codegen.targetPlatform=1.7
+org.eclipse.jdt.core.compiler.codegen.unusedLocal=preserve
+org.eclipse.jdt.core.compiler.compliance=1.7
+org.eclipse.jdt.core.compiler.debug.lineNumber=generate
+org.eclipse.jdt.core.compiler.debug.localVariable=generate
+org.eclipse.jdt.core.compiler.debug.sourceFile=generate
+org.eclipse.jdt.core.compiler.problem.annotationSuperInterface=warning
+org.eclipse.jdt.core.compiler.problem.assertIdentifier=error
+org.eclipse.jdt.core.compiler.problem.autoboxing=ignore
+org.eclipse.jdt.core.compiler.problem.comparingIdentical=warning
+org.eclipse.jdt.core.compiler.problem.deadCode=warning
+org.eclipse.jdt.core.compiler.problem.deprecation=warning
+org.eclipse.jdt.core.compiler.problem.deprecationInDeprecatedCode=disabled
+org.eclipse.jdt.core.compiler.problem.deprecationWhenOverridingDeprecatedMethod=disabled
+org.eclipse.jdt.core.compiler.problem.discouragedReference=warning
+org.eclipse.jdt.core.compiler.problem.emptyStatement=ignore
+org.eclipse.jdt.core.compiler.problem.enumIdentifier=error
+org.eclipse.jdt.core.compiler.problem.explicitlyClosedAutoCloseable=ignore
+org.eclipse.jdt.core.compiler.problem.fallthroughCase=ignore
+org.eclipse.jdt.core.compiler.problem.fatalOptionalError=disabled
+org.eclipse.jdt.core.compiler.problem.fieldHiding=error
+org.eclipse.jdt.core.compiler.problem.finalParameterBound=warning
+org.eclipse.jdt.core.compiler.problem.finallyBlockNotCompletingNormally=warning
+org.eclipse.jdt.core.compiler.problem.forbiddenReference=warning
+org.eclipse.jdt.core.compiler.problem.hiddenCatchBlock=warning
+org.eclipse.jdt.core.compiler.problem.includeNullInfoFromAsserts=disabled
+org.eclipse.jdt.core.compiler.problem.incompatibleNonInheritedInterfaceMethod=warning
+org.eclipse.jdt.core.compiler.problem.incompleteEnumSwitch=ignore
+org.eclipse.jdt.core.compiler.problem.indirectStaticAccess=ignore
+org.eclipse.jdt.core.compiler.problem.localVariableHiding=error
+org.eclipse.jdt.core.compiler.problem.methodWithConstructorName=warning
+org.eclipse.jdt.core.compiler.problem.missingDefaultCase=ignore
+org.eclipse.jdt.core.compiler.problem.missingDeprecatedAnnotation=ignore
+org.eclipse.jdt.core.compiler.problem.missingEnumCaseDespiteDefault=disabled
+org.eclipse.jdt.core.compiler.problem.missingHashCodeMethod=ignore
+org.eclipse.jdt.core.compiler.problem.missingOverrideAnnotation=ignore
+org.eclipse.jdt.core.compiler.problem.missingOverrideAnnotationForInterfaceMethodImplementation=enabled
+org.eclipse.jdt.core.compiler.problem.missingSerialVersion=warning
+org.eclipse.jdt.core.compiler.problem.missingSynchronizedOnInheritedMethod=ignore
+org.eclipse.jdt.core.compiler.problem.noEffectAssignment=warning
+org.eclipse.jdt.core.compiler.problem.noImplicitStringConversion=warning
+org.eclipse.jdt.core.compiler.problem.nonExternalizedStringLiteral=ignore
+org.eclipse.jdt.core.compiler.problem.nullAnnotationInferenceConflict=error
+org.eclipse.jdt.core.compiler.problem.nullReference=warning
+org.eclipse.jdt.core.compiler.problem.nullSpecViolation=error
+org.eclipse.jdt.core.compiler.problem.nullUncheckedConversion=warning
+org.eclipse.jdt.core.compiler.problem.overridingPackageDefaultMethod=warning
+org.eclipse.jdt.core.compiler.problem.parameterAssignment=ignore
+org.eclipse.jdt.core.compiler.problem.possibleAccidentalBooleanAssignment=ignore
+org.eclipse.jdt.core.compiler.problem.potentialNullReference=ignore
+org.eclipse.jdt.core.compiler.problem.potentiallyUnclosedCloseable=ignore
+org.eclipse.jdt.core.compiler.problem.rawTypeReference=warning
+org.eclipse.jdt.core.compiler.problem.redundantNullAnnotation=warning
+org.eclipse.jdt.core.compiler.problem.redundantNullCheck=ignore
+org.eclipse.jdt.core.compiler.problem.redundantSpecificationOfTypeArguments=ignore
+org.eclipse.jdt.core.compiler.problem.redundantSuperinterface=ignore
+org.eclipse.jdt.core.compiler.problem.reportMethodCanBePotentiallyStatic=ignore
+org.eclipse.jdt.core.compiler.problem.reportMethodCanBeStatic=ignore
+org.eclipse.jdt.core.compiler.problem.specialParameterHidingField=disabled
+org.eclipse.jdt.core.compiler.problem.staticAccessReceiver=warning
+org.eclipse.jdt.core.compiler.problem.suppressOptionalErrors=disabled
+org.eclipse.jdt.core.compiler.problem.suppressWarnings=enabled
+org.eclipse.jdt.core.compiler.problem.syntheticAccessEmulation=ignore
+org.eclipse.jdt.core.compiler.problem.typeParameterHiding=error
+org.eclipse.jdt.core.compiler.problem.unavoidableGenericTypeProblems=enabled
+org.eclipse.jdt.core.compiler.problem.uncheckedTypeOperation=warning
+org.eclipse.jdt.core.compiler.problem.unclosedCloseable=warning
+org.eclipse.jdt.core.compiler.problem.undocumentedEmptyBlock=ignore
+org.eclipse.jdt.core.compiler.problem.unhandledWarningToken=warning
+org.eclipse.jdt.core.compiler.problem.unnecessaryElse=ignore
+org.eclipse.jdt.core.compiler.problem.unnecessaryTypeCheck=ignore
+org.eclipse.jdt.core.compiler.problem.unqualifiedFieldAccess=ignore
+org.eclipse.jdt.core.compiler.problem.unusedDeclaredThrownException=ignore
+org.eclipse.jdt.core.compiler.problem.unusedDeclaredThrownExceptionExemptExceptionAndThrowable=enabled
+org.eclipse.jdt.core.compiler.problem.unusedDeclaredThrownExceptionIncludeDocCommentReference=enabled
+org.eclipse.jdt.core.compiler.problem.unusedDeclaredThrownExceptionWhenOverriding=disabled
+org.eclipse.jdt.core.compiler.problem.unusedImport=warning
+org.eclipse.jdt.core.compiler.problem.unusedLabel=warning
+org.eclipse.jdt.core.compiler.problem.unusedLocal=warning
+org.eclipse.jdt.core.compiler.problem.unusedObjectAllocation=ignore
+org.eclipse.jdt.core.compiler.problem.unusedParameter=ignore
+org.eclipse.jdt.core.compiler.problem.unusedParameterIncludeDocCommentReference=enabled
+org.eclipse.jdt.core.compiler.problem.unusedParameterWhenImplementingAbstract=disabled
+org.eclipse.jdt.core.compiler.problem.unusedParameterWhenOverridingConcrete=disabled
+org.eclipse.jdt.core.compiler.problem.unusedPrivateMember=warning
+org.eclipse.jdt.core.compiler.problem.unusedWarningToken=warning
+org.eclipse.jdt.core.compiler.problem.varargsArgumentNeedCast=warning
+org.eclipse.jdt.core.compiler.source=1.7
diff --git a/jackson/.settings/org.eclipse.jdt.ui.prefs b/jackson/.settings/org.eclipse.jdt.ui.prefs
new file mode 100644
index 0000000000..471e9b0d81
--- /dev/null
+++ b/jackson/.settings/org.eclipse.jdt.ui.prefs
@@ -0,0 +1,55 @@
+#Sat Jan 21 23:04:06 EET 2012
+eclipse.preferences.version=1
+editor_save_participant_org.eclipse.jdt.ui.postsavelistener.cleanup=true
+sp_cleanup.add_default_serial_version_id=true
+sp_cleanup.add_generated_serial_version_id=false
+sp_cleanup.add_missing_annotations=true
+sp_cleanup.add_missing_deprecated_annotations=true
+sp_cleanup.add_missing_methods=false
+sp_cleanup.add_missing_nls_tags=false
+sp_cleanup.add_missing_override_annotations=true
+sp_cleanup.add_missing_override_annotations_interface_methods=true
+sp_cleanup.add_serial_version_id=false
+sp_cleanup.always_use_blocks=true
+sp_cleanup.always_use_parentheses_in_expressions=true
+sp_cleanup.always_use_this_for_non_static_field_access=false
+sp_cleanup.always_use_this_for_non_static_method_access=false
+sp_cleanup.convert_to_enhanced_for_loop=true
+sp_cleanup.correct_indentation=true
+sp_cleanup.format_source_code=true
+sp_cleanup.format_source_code_changes_only=true
+sp_cleanup.make_local_variable_final=true
+sp_cleanup.make_parameters_final=true
+sp_cleanup.make_private_fields_final=false
+sp_cleanup.make_type_abstract_if_missing_method=false
+sp_cleanup.make_variable_declarations_final=true
+sp_cleanup.never_use_blocks=false
+sp_cleanup.never_use_parentheses_in_expressions=false
+sp_cleanup.on_save_use_additional_actions=true
+sp_cleanup.organize_imports=true
+sp_cleanup.qualify_static_field_accesses_with_declaring_class=false
+sp_cleanup.qualify_static_member_accesses_through_instances_with_declaring_class=true
+sp_cleanup.qualify_static_member_accesses_through_subtypes_with_declaring_class=true
+sp_cleanup.qualify_static_member_accesses_with_declaring_class=true
+sp_cleanup.qualify_static_method_accesses_with_declaring_class=false
+sp_cleanup.remove_private_constructors=true
+sp_cleanup.remove_trailing_whitespaces=true
+sp_cleanup.remove_trailing_whitespaces_all=true
+sp_cleanup.remove_trailing_whitespaces_ignore_empty=false
+sp_cleanup.remove_unnecessary_casts=true
+sp_cleanup.remove_unnecessary_nls_tags=false
+sp_cleanup.remove_unused_imports=true
+sp_cleanup.remove_unused_local_variables=false
+sp_cleanup.remove_unused_private_fields=true
+sp_cleanup.remove_unused_private_members=false
+sp_cleanup.remove_unused_private_methods=true
+sp_cleanup.remove_unused_private_types=true
+sp_cleanup.sort_members=false
+sp_cleanup.sort_members_all=false
+sp_cleanup.use_blocks=false
+sp_cleanup.use_blocks_only_for_return_and_throw=false
+sp_cleanup.use_parentheses_in_expressions=false
+sp_cleanup.use_this_for_non_static_field_access=true
+sp_cleanup.use_this_for_non_static_field_access_only_if_necessary=true
+sp_cleanup.use_this_for_non_static_method_access=true
+sp_cleanup.use_this_for_non_static_method_access_only_if_necessary=true
diff --git a/jackson/.settings/org.eclipse.m2e.core.prefs b/jackson/.settings/org.eclipse.m2e.core.prefs
new file mode 100644
index 0000000000..f897a7f1cb
--- /dev/null
+++ b/jackson/.settings/org.eclipse.m2e.core.prefs
@@ -0,0 +1,4 @@
+activeProfiles=
+eclipse.preferences.version=1
+resolveWorkspaceProjects=true
+version=1
diff --git a/jackson/.settings/org.eclipse.m2e.wtp.prefs b/jackson/.settings/org.eclipse.m2e.wtp.prefs
new file mode 100644
index 0000000000..ef86089622
--- /dev/null
+++ b/jackson/.settings/org.eclipse.m2e.wtp.prefs
@@ -0,0 +1,2 @@
+eclipse.preferences.version=1
+org.eclipse.m2e.wtp.enabledProjectSpecificPrefs=false
diff --git a/jackson/.settings/org.eclipse.wst.common.component b/jackson/.settings/org.eclipse.wst.common.component
new file mode 100644
index 0000000000..e98377cb0f
--- /dev/null
+++ b/jackson/.settings/org.eclipse.wst.common.component
@@ -0,0 +1,8 @@
+
+
+
+
+
+
+
+
diff --git a/jackson/.settings/org.eclipse.wst.common.project.facet.core.xml b/jackson/.settings/org.eclipse.wst.common.project.facet.core.xml
new file mode 100644
index 0000000000..bc0009a455
--- /dev/null
+++ b/jackson/.settings/org.eclipse.wst.common.project.facet.core.xml
@@ -0,0 +1,4 @@
+
+
+
+
diff --git a/jackson/.settings/org.eclipse.wst.jsdt.ui.superType.container b/jackson/.settings/org.eclipse.wst.jsdt.ui.superType.container
new file mode 100644
index 0000000000..3bd5d0a480
--- /dev/null
+++ b/jackson/.settings/org.eclipse.wst.jsdt.ui.superType.container
@@ -0,0 +1 @@
+org.eclipse.wst.jsdt.launching.baseBrowserLibrary
\ No newline at end of file
diff --git a/jackson/.settings/org.eclipse.wst.jsdt.ui.superType.name b/jackson/.settings/org.eclipse.wst.jsdt.ui.superType.name
new file mode 100644
index 0000000000..05bd71b6ec
--- /dev/null
+++ b/jackson/.settings/org.eclipse.wst.jsdt.ui.superType.name
@@ -0,0 +1 @@
+Window
\ No newline at end of file
diff --git a/jackson/.settings/org.eclipse.wst.validation.prefs b/jackson/.settings/org.eclipse.wst.validation.prefs
new file mode 100644
index 0000000000..cacf5451ae
--- /dev/null
+++ b/jackson/.settings/org.eclipse.wst.validation.prefs
@@ -0,0 +1,14 @@
+DELEGATES_PREFERENCE=delegateValidatorList
+USER_BUILD_PREFERENCE=enabledBuildValidatorListorg.eclipse.jst.j2ee.internal.classpathdep.ClasspathDependencyValidator;
+USER_MANUAL_PREFERENCE=enabledManualValidatorListorg.eclipse.jst.j2ee.internal.classpathdep.ClasspathDependencyValidator;
+USER_PREFERENCE=overrideGlobalPreferencestruedisableAllValidationfalseversion1.2.303.v201202090300
+eclipse.preferences.version=1
+override=true
+suspend=false
+vals/org.eclipse.jst.jsf.ui.JSFAppConfigValidator/global=FF01
+vals/org.eclipse.jst.jsp.core.JSPBatchValidator/global=FF01
+vals/org.eclipse.jst.jsp.core.JSPContentValidator/global=FF01
+vals/org.eclipse.jst.jsp.core.TLDValidator/global=FF01
+vals/org.eclipse.wst.dtd.core.dtdDTDValidator/global=FF01
+vals/org.eclipse.wst.jsdt.web.core.JsBatchValidator/global=TF02
+vf.version=3
diff --git a/jackson/.settings/org.eclipse.wst.ws.service.policy.prefs b/jackson/.settings/org.eclipse.wst.ws.service.policy.prefs
new file mode 100644
index 0000000000..9cfcabe16f
--- /dev/null
+++ b/jackson/.settings/org.eclipse.wst.ws.service.policy.prefs
@@ -0,0 +1,2 @@
+eclipse.preferences.version=1
+org.eclipse.wst.ws.service.policy.projectEnabled=false
diff --git a/jackson/.springBeans b/jackson/.springBeans
new file mode 100644
index 0000000000..a79097f40d
--- /dev/null
+++ b/jackson/.springBeans
@@ -0,0 +1,14 @@
+
+
+ 1
+
+
+
+
+
+
+ src/main/webapp/WEB-INF/api-servlet.xml
+
+
+
+
diff --git a/jackson/README.md b/jackson/README.md
new file mode 100644
index 0000000000..8960b4676e
--- /dev/null
+++ b/jackson/README.md
@@ -0,0 +1,13 @@
+=========
+
+## Guava and Hamcrest Cookbooks and Examples
+
+
+### Relevant Articles:
+- [Guava Collections Cookbook](http://www.baeldung.com/guava-collections)
+- [Guava Ordering Cookbook](http://www.baeldung.com/guava-order)
+- [Guava Functional Cookbook](http://www.baeldung.com/guava-functions-predicates)
+
+- [Hamcrest Collections Cookbook](http://www.baeldung.com/hamcrest-collections-arrays)
+
+- [Partition a List in Java](http://www.baeldung.com/java-list-split)
diff --git a/jackson/pom.xml b/jackson/pom.xml
new file mode 100644
index 0000000000..89f025bd44
--- /dev/null
+++ b/jackson/pom.xml
@@ -0,0 +1,139 @@
+
+ 4.0.0
+ org.baeldung
+ spring-rest
+ 0.1-SNAPSHOT
+
+ spring-rest
+
+
+
+
+
+
+ com.google.guava
+ guava
+ 15.0
+
+
+
+ org.apache.commons
+ commons-collections4
+ 4.0
+
+
+
+
+
+
+
+ com.fasterxml.jackson.core
+ jackson-databind
+ ${jackson.version}
+
+
+
+
+
+ junit
+ junit-dep
+ ${junit.version}
+ test
+
+
+
+ org.hamcrest
+ hamcrest-core
+ ${org.hamcrest.version}
+ test
+
+
+ org.hamcrest
+ hamcrest-library
+ ${org.hamcrest.version}
+ test
+
+
+
+ org.mockito
+ mockito-core
+ ${mockito.version}
+ test
+
+
+
+
+
+ spring-rest
+
+
+ src/main/resources
+ true
+
+
+
+
+
+
+ org.apache.maven.plugins
+ maven-compiler-plugin
+ ${maven-compiler-plugin.version}
+
+ 1.7
+ 1.7
+
+
+
+
+ org.apache.maven.plugins
+ maven-surefire-plugin
+ ${maven-surefire-plugin.version}
+
+
+
+
+
+
+
+
+ 4.0.0.RELEASE
+ 3.2.0.RELEASE
+
+
+ 4.3.0.Final
+ 5.1.27
+
+
+ 2.2.3
+
+
+ 1.7.5
+ 1.0.11
+
+
+ 5.0.1.Final
+
+
+ 15.0
+ 3.1
+
+
+ 1.3
+ 4.11
+ 1.9.5
+
+ 4.3
+ 4.3.1
+
+ 2.1.0
+
+
+ 3.1
+ 2.4
+ 2.16
+ 2.6
+ 1.4.5
+
+
+
+
\ No newline at end of file
diff --git a/jackson/src/main/resources/logback.xml b/jackson/src/main/resources/logback.xml
new file mode 100644
index 0000000000..1146dade63
--- /dev/null
+++ b/jackson/src/main/resources/logback.xml
@@ -0,0 +1,20 @@
+
+
+
+
+ web - %date [%thread] %-5level %logger{36} - %message%n
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/jackson/src/main/webapp/WEB-INF/api-servlet.xml b/jackson/src/main/webapp/WEB-INF/api-servlet.xml
new file mode 100644
index 0000000000..5463820874
--- /dev/null
+++ b/jackson/src/main/webapp/WEB-INF/api-servlet.xml
@@ -0,0 +1,6 @@
+
+
+
+
\ No newline at end of file
diff --git a/jackson/src/main/webapp/WEB-INF/web.xml b/jackson/src/main/webapp/WEB-INF/web.xml
new file mode 100644
index 0000000000..48d4b8fe61
--- /dev/null
+++ b/jackson/src/main/webapp/WEB-INF/web.xml
@@ -0,0 +1,42 @@
+
+
+
+ Spring MVC Application
+
+
+
+ contextClass
+
+ org.springframework.web.context.support.AnnotationConfigWebApplicationContext
+
+
+
+ contextConfigLocation
+ org.baeldung.config
+
+
+
+ org.springframework.web.context.ContextLoaderListener
+
+
+
+
+ api
+ org.springframework.web.servlet.DispatcherServlet
+ 1
+
+
+ api
+ /
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/jackson/src/test/java/jackson/FooDto.java b/jackson/src/test/java/jackson/FooDto.java
new file mode 100644
index 0000000000..b086769f44
--- /dev/null
+++ b/jackson/src/test/java/jackson/FooDto.java
@@ -0,0 +1,43 @@
+package jackson;
+
+import com.fasterxml.jackson.annotation.JsonInclude;
+import com.fasterxml.jackson.annotation.JsonInclude.Include;
+
+@JsonInclude(Include.NON_DEFAULT)
+public class FooDto {
+
+ private String stringValue;
+ private int intValue;
+ private boolean booleanValue;
+
+ public FooDto() {
+ super();
+ }
+
+ // API
+
+ public String getStringValue() {
+ return stringValue;
+ }
+
+ public void setStringValue(final String stringValue) {
+ this.stringValue = stringValue;
+ }
+
+ public int getIntValue() {
+ return intValue;
+ }
+
+ public void setIntValue(final int intValue) {
+ this.intValue = intValue;
+ }
+
+ public boolean isBooleanValue() {
+ return booleanValue;
+ }
+
+ public void setBooleanValue(final boolean booleanValue) {
+ this.booleanValue = booleanValue;
+ }
+
+}
diff --git a/jackson/src/test/java/jackson/JacksonUnitTest.java b/jackson/src/test/java/jackson/JacksonUnitTest.java
new file mode 100644
index 0000000000..d4e40d6550
--- /dev/null
+++ b/jackson/src/test/java/jackson/JacksonUnitTest.java
@@ -0,0 +1,37 @@
+package jackson;
+
+import java.io.IOException;
+
+import org.junit.Test;
+
+import com.fasterxml.jackson.core.JsonParseException;
+import com.fasterxml.jackson.databind.ObjectMapper;
+
+public class JacksonUnitTest {
+
+ // tests
+
+ @Test
+ public final void whenDtoHasOnlyDefaultValues_thenCorrect() throws JsonParseException, IOException {
+ final ObjectMapper mapper = new ObjectMapper();
+ final String fooDtoAsString = mapper.writeValueAsString(new FooDto());
+ System.out.println(fooDtoAsString);
+ }
+
+ @Test
+ public final void whenDtoHasNonDefaultValue_thenCorrect() throws JsonParseException, IOException {
+ final ObjectMapper mapper = new ObjectMapper();
+ final FooDto dtoObject = new FooDto();
+ dtoObject.setBooleanValue(true);
+
+ final String fooDtoAsString = mapper.writeValueAsString(dtoObject);
+ System.out.println(fooDtoAsString);
+ }
+
+}
+
+/*
+Article Ideas:
+- Deserializing with a custom JsonParser
+
+ */
diff --git a/jackson/src/test/java/org/baeldung/guava/GuavaCollectionsExamplesTest.java b/jackson/src/test/java/org/baeldung/guava/GuavaCollectionsExamplesTest.java
new file mode 100644
index 0000000000..2c137e6c80
--- /dev/null
+++ b/jackson/src/test/java/org/baeldung/guava/GuavaCollectionsExamplesTest.java
@@ -0,0 +1,189 @@
+package org.baeldung.guava;
+
+import static org.junit.Assert.assertNull;
+import static org.junit.Assert.assertTrue;
+
+import java.util.Collection;
+import java.util.Iterator;
+import java.util.List;
+import java.util.Map;
+import java.util.NoSuchElementException;
+import java.util.Set;
+
+import org.junit.Test;
+
+import com.google.common.base.Function;
+import com.google.common.base.Predicate;
+import com.google.common.base.Predicates;
+import com.google.common.collect.ImmutableList;
+import com.google.common.collect.ImmutableMap;
+import com.google.common.collect.ImmutableSet;
+import com.google.common.collect.Iterables;
+import com.google.common.collect.Lists;
+import com.google.common.collect.Maps;
+import com.google.common.collect.Sets;
+
+@SuppressWarnings("unused")
+public class GuavaCollectionsExamplesTest {
+
+ // tests
+
+ @Test
+ public final void whenDowncastingGenerifiedCollectionToNewGenerifiedCollection_thenCastIsOK() {
+ final class CastFunction implements Function {
+ @SuppressWarnings("unchecked")
+ @Override
+ public final T apply(final F from) {
+ return (T) from;
+ }
+ }
+
+ final List originalList = Lists.newArrayList();
+ final List selectedProducts = Lists.transform(originalList, new CastFunction());
+ System.out.println(selectedProducts);
+ }
+
+ @SuppressWarnings({ "unchecked" })
+ @Test
+ public final void whenDowncastingGenerifiedCollectionToNewGenerifiedCollection_thenCastIsOK2() {
+ final List originalList = Lists.newArrayList();
+ final List selectedProducts = (List) (List extends Number>) originalList;
+ System.out.println(selectedProducts);
+ }
+
+ @Test
+ public final void whenAddingAnIterableToACollection_thenAddedOK() {
+ final Iterable iter = Lists.newArrayList();
+ final Collection collector = Lists.newArrayList();
+ Iterables.addAll(collector, iter);
+ }
+
+ //
+
+ @Test
+ public final void whenCheckingIfCollectionContainsElementsByCustomMatch1_thenContains() {
+ final Iterable theCollection = Lists.newArrayList("a", "bc", "def");
+ final boolean contains = Iterables.any(theCollection, new Predicate() {
+ @Override
+ public final boolean apply(final String input) {
+ return input.length() == 1;
+ }
+ });
+
+ assertTrue(contains);
+ }
+
+ @Test
+ public final void whenCheckingIfCollectionContainsElementsByCustomMatch2_thenContains() {
+ final Set theCollection = Sets.newHashSet("a", "bc", "def");
+
+ final boolean contains = !Sets.filter(theCollection, new Predicate() {
+ @Override
+ public final boolean apply(final String input) {
+ return input.length() == 1;
+ }
+ }).isEmpty();
+
+ assertTrue(contains);
+ }
+
+ @Test
+ public final void whenCheckingIfCollectionContainsElementsByCustomMatch3_thenContains() {
+ final Iterable theCollection = Sets.newHashSet("a", "bc", "def");
+
+ final boolean contains = Iterables.find(theCollection, new Predicate() {
+ @Override
+ public final boolean apply(final String input) {
+ return input.length() == 1;
+ }
+ }) != null;
+
+ assertTrue(contains);
+ }
+
+ //
+
+ @Test(expected = NoSuchElementException.class)
+ public final void givenNoSearchResult_whenFindingElementInIterable_thenException() {
+ final Iterable theCollection = Sets.newHashSet("abcd", "efgh", "ijkl");
+
+ final String found = Iterables.find(theCollection, new Predicate() {
+ @Override
+ public final boolean apply(final String input) {
+ return input.length() == 1;
+ }
+ });
+
+ assertNull(found);
+ }
+
+ @Test
+ public final void givenNoSearchResult_whenFindingElementInIterableWithSpecifiedReturn_thenNoException() {
+ final Iterable theCollection = Sets.newHashSet("abcd", "efgh", "ijkl");
+
+ final Predicate inputOfLengthOne = new Predicate() {
+ @Override
+ public final boolean apply(final String input) {
+ return input.length() == 1;
+ }
+ };
+ final String found = Iterables.find(theCollection, inputOfLengthOne, null);
+
+ assertNull(found);
+ }
+
+ // purge of nulls
+
+ @Test
+ public final void givenListContainsNulls_whenPurgedOfNulls_thenNoLongerContainsNulls() {
+ final List values = Lists.newArrayList("a", null, "b", "c");
+ final Iterable withoutNulls = Iterables.filter(values, Predicates.notNull());
+ System.out.println(withoutNulls);
+ }
+
+ // immutable collections
+
+ @Test
+ public final void whenCreatingImuutableCollections_thenNoExceptions() {
+ final ImmutableList immutableList = ImmutableList.of("a", "b", "c");
+ final ImmutableSet immutableSet = ImmutableSet.of("a", "b", "c");
+ final ImmutableMap imuttableMap = ImmutableMap.of("k1", "v1", "k2", "v2", "k3", "v3");
+ }
+
+ @Test
+ public final void whenTransformingCollectionsToImmutable_thenNoExceptions() {
+ final List muttableList = Lists.newArrayList();
+ final ImmutableList immutableList = ImmutableList.copyOf(muttableList);
+
+ final Set muttableSet = Sets.newHashSet();
+ final ImmutableSet immutableSet = ImmutableSet.copyOf(muttableSet);
+
+ final Map muttableMap = Maps.newHashMap();
+ final ImmutableMap imuttableMap = ImmutableMap.copyOf(muttableMap);
+ }
+
+ @Test
+ public final void whenTransformingCollectionsToImmutableViaBuilders_thenNoExceptions() {
+ final List muttableList = Lists.newArrayList();
+ final ImmutableList immutableList = ImmutableList. builder().addAll(muttableList).build();
+
+ final Set muttableSet = Sets.newHashSet();
+ final ImmutableSet immutableSet = ImmutableSet. builder().addAll(muttableSet).build();
+
+ final Map muttableMap = Maps.newHashMap();
+ final ImmutableMap imuttableMap = ImmutableMap. builder().putAll(muttableMap).build();
+ }
+
+ // unmodifiable
+
+ @Test(expected = UnsupportedOperationException.class)
+ public final void givenUnmodifiableViewOverIterable_whenTryingToRemove_thenNotAllowed() {
+ final List numbers = Lists.newArrayList(1, 2, 3);
+ final Iterable unmodifiableIterable = Iterables.unmodifiableIterable(numbers);
+ final Iterator iterator = unmodifiableIterable.iterator();
+ if (iterator.hasNext()) {
+ iterator.remove();
+ }
+ }
+
+}
diff --git a/jackson/src/test/java/org/baeldung/guava/GuavaFunctionalExamplesTest.java b/jackson/src/test/java/org/baeldung/guava/GuavaFunctionalExamplesTest.java
new file mode 100644
index 0000000000..08091639f1
--- /dev/null
+++ b/jackson/src/test/java/org/baeldung/guava/GuavaFunctionalExamplesTest.java
@@ -0,0 +1,186 @@
+package org.baeldung.guava;
+
+import static org.hamcrest.Matchers.contains;
+import static org.hamcrest.Matchers.equalTo;
+import static org.hamcrest.Matchers.lessThan;
+import static org.junit.Assert.assertThat;
+import static org.junit.Assert.assertTrue;
+
+import java.util.Arrays;
+import java.util.Collections;
+import java.util.List;
+import java.util.Map;
+import java.util.Set;
+
+import org.junit.Test;
+
+import com.google.common.base.Function;
+import com.google.common.base.Functions;
+import com.google.common.base.Predicate;
+import com.google.common.base.Predicates;
+import com.google.common.collect.Collections2;
+import com.google.common.collect.FluentIterable;
+import com.google.common.collect.Iterables;
+import com.google.common.collect.Lists;
+import com.google.common.collect.Maps;
+import com.google.common.collect.Ordering;
+import com.google.common.collect.Sets;
+
+public class GuavaFunctionalExamplesTest {
+
+ // tests
+
+ // predicates - filtering
+
+ @Test
+ public final void whenFilteringNumbersAccordingToACondition_thenCorrectResults() {
+ final List numbers = Lists.newArrayList(1, 2, 3, 6, 8, 10, 34, 57, 89);
+ final Predicate acceptEvenNumber = new Predicate() {
+ @Override
+ public final boolean apply(final Integer number) {
+ return (number % 2) == 0;
+ }
+ };
+ final List evenNumbers = Lists.newArrayList(Collections2.filter(numbers, acceptEvenNumber));
+
+ final Integer found = Collections.binarySearch(evenNumbers, 57);
+ assertThat(found, lessThan(0));
+ }
+
+ @Test
+ public final void givenCollectionContainsNulls_whenNullsAreFilteredOut_thenResultingCollectionsHasNoNulls() {
+ final List withNulls = Lists.newArrayList("a", "bc", null, "def");
+ final Iterable withoutNuls = Iterables.filter(withNulls, Predicates.notNull());
+
+ assertTrue(Iterables.all(withoutNuls, Predicates.notNull()));
+ }
+
+ // predicates - checking
+
+ @Test
+ public final void givenEvenNumbers_whenCheckingIfAllSatisfyTheEvenPredicate_thenYes() {
+ final List evenNumbers = Lists.newArrayList(2, 6, 8, 10, 34, 90);
+ final Predicate acceptEvenNumber = new Predicate() {
+ @Override
+ public final boolean apply(final Integer number) {
+ return (number % 2) == 0;
+ }
+ };
+
+ assertTrue(Iterables.all(evenNumbers, acceptEvenNumber));
+ }
+
+ // negating a predicate
+
+ @Test
+ public final void givenCollectionOfEvenNumbers_whenCheckingThatCollectionContainsNoOddNumber_thenTrue() {
+ final List evenNumbers = Lists.newArrayList(2, 6, 8, 10, 34, 90);
+ final Predicate acceptOddNumber = new Predicate() {
+ @Override
+ public final boolean apply(final Integer number) {
+ return (number % 2) != 0;
+ }
+ };
+
+ assertTrue(Iterables.all(evenNumbers, Predicates.not(acceptOddNumber)));
+ }
+
+ // other predicates
+
+ @Test
+ public final void when_thenCorrect() {
+ // CharMatcher.forPredicate(predicate)
+ }
+
+ // functions
+
+ @Test
+ public final void whenApplyingSimpleFunctionToInputs_thenCorrectlyTransformed() {
+ final List numbers = Lists.newArrayList(1, 2, 3);
+ final List numbersAsStrings = Lists.transform(numbers, Functions.toStringFunction());
+ assertThat(numbersAsStrings, contains("1", "2", "3"));
+ }
+
+ @Test
+ public final void whenUsingAnIntermediaryFunctionToOrder_thenCorerctlyOrderedInAlphabeticalOrder() {
+ final List numbersToSort = Arrays.asList(2, 1, 11, 100, 8, 14);
+ final Ordering