diff --git a/core-java-concurrency/src/test/java/com/baeldung/concurrent/runnable/RunnableVsThreadTest.java b/core-java-concurrency/src/test/java/com/baeldung/concurrent/runnable/RunnableVsThreadLiveTest.java similarity index 87% rename from core-java-concurrency/src/test/java/com/baeldung/concurrent/runnable/RunnableVsThreadTest.java rename to core-java-concurrency/src/test/java/com/baeldung/concurrent/runnable/RunnableVsThreadLiveTest.java index 4bd4848905..2a51f83e2b 100644 --- a/core-java-concurrency/src/test/java/com/baeldung/concurrent/runnable/RunnableVsThreadTest.java +++ b/core-java-concurrency/src/test/java/com/baeldung/concurrent/runnable/RunnableVsThreadLiveTest.java @@ -1,24 +1,21 @@ package com.baeldung.concurrent.runnable; import java.util.concurrent.Callable; -import java.util.concurrent.ExecutionException; import java.util.concurrent.ExecutorService; import java.util.concurrent.Executors; import java.util.concurrent.Future; import org.apache.commons.lang3.RandomUtils; -import org.junit.After; import org.junit.AfterClass; -import org.junit.Before; import org.junit.BeforeClass; import org.junit.Test; import org.slf4j.Logger; import org.slf4j.LoggerFactory; -public class RunnableVsThreadTest { +public class RunnableVsThreadLiveTest { private static Logger log = - LoggerFactory.getLogger(RunnableVsThreadTest.class); + LoggerFactory.getLogger(RunnableVsThreadLiveTest.class); private static ExecutorService executorService; @@ -77,9 +74,7 @@ public class RunnableVsThreadTest { public void givenACallableAsLambda_whenSubmitToES_thenResult() throws Exception { - Future future = executorService.submit(() -> { - return RandomUtils.nextInt(0, 100); - }); + Future future = executorService.submit(() -> RandomUtils.nextInt(0, 100)); log.info("Result from callable: {}", future.get()); } @@ -99,7 +94,7 @@ class SimpleThread extends Thread{ private String message; - public SimpleThread(String message) { + SimpleThread(String message) { this.message = message; } @@ -116,7 +111,7 @@ class SimpleRunnable implements Runnable { private String message; - public SimpleRunnable(String message) { + SimpleRunnable(String message) { this.message = message; } diff --git a/drools/backward-chaining/pom.xml b/drools/backward-chaining/pom.xml deleted file mode 100644 index 1cf8f008af..0000000000 --- a/drools/backward-chaining/pom.xml +++ /dev/null @@ -1,35 +0,0 @@ - - - 4.0.0 - - drools-backward-chaining - 1.0 - drools-backward-chaining - - - com.baeldung - parent-modules - 1.0.0-SNAPSHOT - - - - 6.4.0.Final - - - - org.kie - kie-api - ${runtime.version} - - - org.drools - ${runtime.version} - - - org.drools - drools-decisiontables - ${runtime.version} - - - \ No newline at end of file diff --git a/drools/backward-chaining/src/main/java/com/baeldung/BackwardChainingBeatles.java b/drools/backward-chaining/src/main/java/com/baeldung/BackwardChainingBeatles.java deleted file mode 100644 index 7fc5bd3685..0000000000 --- a/drools/backward-chaining/src/main/java/com/baeldung/BackwardChainingBeatles.java +++ /dev/null @@ -1,28 +0,0 @@ -package com.baeldung; - -import org.kie.api.KieServices; -import org.kie.api.runtime.KieContainer; -import org.kie.api.runtime.KieSession; - -import com.baeldung.model.Beatle; - -public class BackwardChainingBeatles { - public static void main(String[] args) { - - KieServices ks = KieServices.Factory.get(); - KieContainer kContainer = ks.getKieClasspathContainer(); - KieSession kSession = kContainer.newKieSession("ksession-backward-chaining"); - // drools session base on the xml configuration (kmodule.xml) - - // graph population - kSession.insert(new Beatle("Starr", "drums")); - kSession.insert(new Beatle("McCartney", "bass")); - kSession.insert(new Beatle("Lennon", "guitar")); - kSession.insert(new Beatle("Harrison", "guitar")); - - kSession.insert("Ringo"); // invoke the rule that calls the query implentation of backward chaining - kSession.fireAllRules(); // invoke all the rules - - } - -} \ No newline at end of file diff --git a/drools/backward-chaining/src/main/java/com/baeldung/model/Beatle.java b/drools/backward-chaining/src/main/java/com/baeldung/model/Beatle.java deleted file mode 100644 index 4b219b3a69..0000000000 --- a/drools/backward-chaining/src/main/java/com/baeldung/model/Beatle.java +++ /dev/null @@ -1,33 +0,0 @@ -package com.baeldung.model; - -import org.kie.api.definition.type.Position; - -public class Beatle { - - @Position(0) - private String lastName; - @Position(1) - private String instrument; - - public Beatle(String lastName, String instrument) { - this.lastName = lastName; - this.instrument = instrument; - } - - public String getInstrument() { - return instrument; - } - - public void setInstrument(String instrument) { - this.instrument = instrument; - } - - public String getLastName() { - return lastName; - } - - public void setLastName(String lastName) { - this.lastName = lastName; - } - -} \ No newline at end of file diff --git a/drools/backward-chaining/src/main/resources/META-INF/kmodule.xml b/drools/backward-chaining/src/main/resources/META-INF/kmodule.xml deleted file mode 100644 index 6498e26343..0000000000 --- a/drools/backward-chaining/src/main/resources/META-INF/kmodule.xml +++ /dev/null @@ -1,6 +0,0 @@ - - - - - - diff --git a/drools/backward-chaining/src/main/resources/META-INF/maven/pom.properties b/drools/backward-chaining/src/main/resources/META-INF/maven/pom.properties deleted file mode 100644 index 26d8331732..0000000000 --- a/drools/backward-chaining/src/main/resources/META-INF/maven/pom.properties +++ /dev/null @@ -1,3 +0,0 @@ -groupId=com.baeldung.drools -artifactId=DroosBackwardChaining -version=1.0.0-SNAPSHOT diff --git a/drools/backward-chaining/src/main/resources/backward_chaining/Beatles.drl b/drools/backward-chaining/src/main/resources/backward_chaining/Beatles.drl deleted file mode 100644 index 8d0d06a79e..0000000000 --- a/drools/backward-chaining/src/main/resources/backward_chaining/Beatles.drl +++ /dev/null @@ -1,44 +0,0 @@ -package com.baeldung - -import com.baeldung.model.Beatle; - - -query whichBeatle(String lastName, String instrument) - Beatle(lastName, instrument;) - or - (Beatle(lastName, null;) - and - whichBeatle(null, instrument;)) //recursive call to the function that allows to search in a derivation tree structure -end - -rule "Ringo" - when - String(this == "Ringo") - whichBeatle("Starr", "drums";) - then - System.out.println("The beatle is Ringo Starr"); -end - -rule "Paul" - when - String(this == "Paul") - whichBeatle("McCartney", "bass";) - then - System.out.println("The beatle is Paul McCartney"); -end - -rule "John" - when - String(this == "John") - whichBeatle("Lennon", "guitar";) - then - System.out.println("The beatle is John Lennon"); -end - -rule "George" - when - String(this == "George") - whichBeatle("Harrison", "guitar";) - then - System.out.println("The beatle is George Harrison"); -end diff --git a/drools/backward-chaining/src/main/resources/backward_chaining/rules.drl b/drools/backward-chaining/src/main/resources/backward_chaining/rules.drl deleted file mode 100644 index abcf95b9f1..0000000000 --- a/drools/backward-chaining/src/main/resources/backward_chaining/rules.drl +++ /dev/null @@ -1,34 +0,0 @@ -package com.baeldung - -import com.baeldung.drools.model.Fact; - -global com.baeldung.drools.model.Result result; - -dialect "mvel" - -query belongsTo(String x, String y) - Fact(x, y;) - or - (Fact(z, y;) and belongsTo(x, z;)) -end - -rule "Great Wall of China BELONGS TO Planet Earth" -when - belongsTo("Great Wall of China", "Planet Earth";) -then - result.setValue("Decision one taken: Great Wall of China BELONGS TO Planet Earth"); -end - -rule "Great Wall of China DOES NOT BELONG TO of Planet Earth" -when - not belongsTo("Great Wall of China", "Planet Earth";) -then - result.setValue("Decision two taken: Great Wall of China DOES NOT BELONG TO Planet Earth"); -end - -rule "print all facts" -when - belongsTo(element, place;) -then - result.addFact(element + " IS ELEMENT OF " + place); -end diff --git a/drools/backward-chaining/src/test/java/com/baeldung/test/BackwardChainingTest.java b/drools/backward-chaining/src/test/java/com/baeldung/test/BackwardChainingTest.java deleted file mode 100644 index 112188f01f..0000000000 --- a/drools/backward-chaining/src/test/java/com/baeldung/test/BackwardChainingTest.java +++ /dev/null @@ -1,54 +0,0 @@ -package com.baeldung.test; - -import org.junit.Before; -import org.junit.Test; -import org.kie.api.KieServices; -import org.kie.api.runtime.KieContainer; -import org.kie.api.runtime.KieSession; - -import com.baeldung.drools.model.Fact; -import com.baeldung.drools.model.Result; - -import static junit.framework.TestCase.assertEquals; - -public class BackwardChainingTest { - private Result result; - private KieServices ks; - private KieContainer kContainer; - private KieSession ksession; - - @Before - public void before() { - result = new Result(); - ks = KieServices.Factory.get(); - kContainer = ks.getKieClasspathContainer(); - ksession = kContainer.newKieSession("ksession-backward-chaining"); - ksession.setGlobal("result", result); - } - - @Test - public void whenWallOfChinaIsGiven_ThenItBelongsToPlanetEarth() { - - ksession.setGlobal("result", result); - ksession.insert(new Fact("Asia", "Planet Earth")); - ksession.insert(new Fact("China", "Asia")); - ksession.insert(new Fact("Great Wall of China", "China")); - - ksession.fireAllRules(); - - // Assert Decision one - assertEquals(result.getValue(), "Decision one taken: Great Wall of China BELONGS TO Planet Earth"); - } - - @Test - public void whenChinaIsNotGiven_ThenWallOfChinaDoesNotBelongToPlanetEarth() { - ksession.insert(new Fact("Asia", "Planet Earth")); - // ksession.insert(new Location("China", "Asia")); // not provided to force Decision two - ksession.insert(new Fact("Great Wall of China", "China")); - - ksession.fireAllRules(); - - // Assert Decision two - assertEquals(result.getValue(), "Decision two taken: Great Wall of China DOES NOT BELONG TO Planet Earth"); - } -} diff --git a/drools/pom.xml b/drools/pom.xml index ab894c6a1a..971bd5f4b8 100644 --- a/drools/pom.xml +++ b/drools/pom.xml @@ -1,73 +1,68 @@ - - 4.0.0 + + 4.0.0 - com.baeldung - drools - 1.0.0-SNAPSHOT + drools - pom + + com.baeldung + parent-modules + 1.0.0-SNAPSHOT + - - com.baeldung - parent-modules - 1.0.0-SNAPSHOT - + + 4.4.6 + 7.1.0.Beta2 + 3.13 + - - 4.4.6 - 7.1.0.Beta2 - 3.13 - + + + org.apache.httpcomponents + httpcore + ${http-component-version} + + + + org.kie + kie-ci + ${drools-version} + + + org.drools + drools-decisiontables + ${drools-version} + - - - org.apache.httpcomponents - httpcore - ${http-component-version} - - - - org.kie - kie-ci - ${drools-version} - - - org.drools - drools-decisiontables - ${drools-version} - + + org.drools + drools-core + ${drools-version} + + + org.drools + drools-compiler + ${drools-version} + + + org.apache.poi + poi + ${apache-poi-version} + - - org.drools - drools-core - ${drools-version} - - - org.drools - drools-compiler - ${drools-version} - - - org.apache.poi - poi - ${apache-poi-version} - + + org.apache.poi + poi-ooxml + ${apache-poi-version} + - - org.apache.poi - poi-ooxml - ${apache-poi-version} - + + org.springframework + spring-core + 4.3.6.RELEASE + - - org.springframework - spring-core - 4.3.6.RELEASE - - - + \ No newline at end of file diff --git a/drools/backward-chaining/src/main/java/com/baeldung/drools/BackwardChaining.java b/drools/src/main/java/com/baeldung/drools/backward_chaining/BackwardChaining.java similarity index 59% rename from drools/backward-chaining/src/main/java/com/baeldung/drools/BackwardChaining.java rename to drools/src/main/java/com/baeldung/drools/backward_chaining/BackwardChaining.java index bac144c32b..6f15ee510b 100644 --- a/drools/backward-chaining/src/main/java/com/baeldung/drools/BackwardChaining.java +++ b/drools/src/main/java/com/baeldung/drools/backward_chaining/BackwardChaining.java @@ -1,9 +1,8 @@ -package com.baeldung.drools; +package com.baeldung.drools.backward_chaining; -import org.kie.api.KieServices; -import org.kie.api.runtime.KieContainer; import org.kie.api.runtime.KieSession; +import com.baeldung.drools.config.DroolsBeanFactory; import com.baeldung.drools.model.Fact; import com.baeldung.drools.model.Result; @@ -11,17 +10,17 @@ public class BackwardChaining { public static void main(String[] args) { Result result = new BackwardChaining().backwardChaining(); System.out.println(result.getValue()); - result.getFacts().stream().forEach(System.out::println); + result.getFacts() + .stream() + .forEach(System.out::println); } public Result backwardChaining() { Result result = new Result(); - KieServices ks = KieServices.Factory.get(); - KieContainer kContainer = ks.getKieClasspathContainer(); - KieSession ksession = kContainer.newKieSession("ksession-backward-chaining"); + KieSession ksession = new DroolsBeanFactory().getKieSession(); ksession.setGlobal("result", result); ksession.insert(new Fact("Asia", "Planet Earth")); - // ksession.insert(new Fact("China", "Asia")); + ksession.insert(new Fact("China", "Asia")); ksession.insert(new Fact("Great Wall of China", "China")); ksession.fireAllRules(); diff --git a/drools/src/main/java/com/baeldung/drools/config/DroolsBeanFactory.java b/drools/src/main/java/com/baeldung/drools/config/DroolsBeanFactory.java index e8841b05e2..cf5d56f246 100644 --- a/drools/src/main/java/com/baeldung/drools/config/DroolsBeanFactory.java +++ b/drools/src/main/java/com/baeldung/drools/config/DroolsBeanFactory.java @@ -3,7 +3,6 @@ package com.baeldung.drools.config; import org.drools.decisiontable.DecisionTableProviderImpl; import org.kie.api.KieServices; import org.kie.api.builder.*; -import org.kie.api.io.KieResources; import org.kie.api.io.Resource; import org.kie.api.runtime.KieContainer; import org.kie.api.runtime.KieSession; @@ -22,7 +21,7 @@ public class DroolsBeanFactory { private KieFileSystem getKieFileSystem() throws IOException{ KieFileSystem kieFileSystem = kieServices.newKieFileSystem(); - List rules=Arrays.asList("SuggestApplicant.drl","Product_rules.xls"); + List rules=Arrays.asList("BackwardChaining.drl","SuggestApplicant.drl","Product_rules.xls"); for(String rule:rules){ kieFileSystem.write(ResourceFactory.newClassPathResource(rule)); } @@ -56,9 +55,11 @@ public class DroolsBeanFactory { getKieRepository(); KieFileSystem kieFileSystem = kieServices.newKieFileSystem(); + kieFileSystem.write(ResourceFactory.newClassPathResource("com/baeldung/drools/rules/BackwardChaining.drl")); kieFileSystem.write(ResourceFactory.newClassPathResource("com/baeldung/drools/rules/SuggestApplicant.drl")); kieFileSystem.write(ResourceFactory.newClassPathResource("com/baeldung/drools/rules/Product_rules.xls")); - + + KieBuilder kb = kieServices.newKieBuilder(kieFileSystem); kb.buildAll(); KieModule kieModule = kb.getKieModule(); diff --git a/drools/backward-chaining/src/main/java/com/baeldung/drools/model/Fact.java b/drools/src/main/java/com/baeldung/drools/model/Fact.java similarity index 100% rename from drools/backward-chaining/src/main/java/com/baeldung/drools/model/Fact.java rename to drools/src/main/java/com/baeldung/drools/model/Fact.java diff --git a/drools/backward-chaining/src/main/java/com/baeldung/drools/model/Result.java b/drools/src/main/java/com/baeldung/drools/model/Result.java similarity index 100% rename from drools/backward-chaining/src/main/java/com/baeldung/drools/model/Result.java rename to drools/src/main/java/com/baeldung/drools/model/Result.java diff --git a/drools/backward-chaining/src/main/resources/com/baeldung/drools/backward_chaining/rules.drl b/drools/src/main/resources/com/baeldung/drools/rules/BackwardChaining.drl similarity index 94% rename from drools/backward-chaining/src/main/resources/com/baeldung/drools/backward_chaining/rules.drl rename to drools/src/main/resources/com/baeldung/drools/rules/BackwardChaining.drl index bb5a8299e1..975be84fb4 100644 --- a/drools/backward-chaining/src/main/resources/com/baeldung/drools/backward_chaining/rules.drl +++ b/drools/src/main/resources/com/baeldung/drools/rules/BackwardChaining.drl @@ -1,4 +1,4 @@ -package com.baeldung +package com.baeldung.drools.rules import com.baeldung.drools.model.Fact; diff --git a/drools/src/test/java/com/baeldung/drools/backward_chaining/BackwardChainingTest.java b/drools/src/test/java/com/baeldung/drools/backward_chaining/BackwardChainingTest.java new file mode 100644 index 0000000000..f49d0b82de --- /dev/null +++ b/drools/src/test/java/com/baeldung/drools/backward_chaining/BackwardChainingTest.java @@ -0,0 +1,36 @@ +package com.baeldung.drools.backward_chaining; + +import org.junit.Before; +import org.junit.Test; +import org.kie.api.runtime.KieSession; + +import com.baeldung.drools.config.DroolsBeanFactory; +import com.baeldung.drools.model.Fact; +import com.baeldung.drools.model.Result; + +import static junit.framework.TestCase.assertEquals; + +public class BackwardChainingTest { + private Result result; + private KieSession ksession; + + @Before + public void before() { + result = new Result(); + ksession = new DroolsBeanFactory().getKieSession(); + } + + @Test + public void whenWallOfChinaIsGiven_ThenItBelongsToPlanetEarth() { + + ksession.setGlobal("result", result); + ksession.insert(new Fact("Asia", "Planet Earth")); + ksession.insert(new Fact("China", "Asia")); + ksession.insert(new Fact("Great Wall of China", "China")); + + ksession.fireAllRules(); + + // Assert Decision one + assertEquals(result.getValue(), "Decision one taken: Great Wall of China BELONGS TO Planet Earth"); + } +} diff --git a/libraries/pom.xml b/libraries/pom.xml index 25c1113fea..546fe8a6d8 100644 --- a/libraries/pom.xml +++ b/libraries/pom.xml @@ -622,6 +622,21 @@ bcpkix-jdk15on 1.58 + + com.google.http-client + google-http-client + ${googleclient.version} + + + com.google.http-client + google-http-client-jackson2 + ${googleclient.version} + + + com.google.http-client + google-http-client-gson + ${googleclient.version} + @@ -639,6 +654,7 @@ + 1.23.0 0.1.0 0.7.0 3.2.4 diff --git a/libraries/src/main/java/com/baeldung/googlehttpclientguide/GitHubExample.java b/libraries/src/main/java/com/baeldung/googlehttpclientguide/GitHubExample.java new file mode 100644 index 0000000000..0618a7294d --- /dev/null +++ b/libraries/src/main/java/com/baeldung/googlehttpclientguide/GitHubExample.java @@ -0,0 +1,65 @@ +package com.baeldung.googlehttpclientguide; + +import com.google.api.client.http.HttpBackOffUnsuccessfulResponseHandler; +import com.google.api.client.http.HttpRequest; +import com.google.api.client.http.HttpRequestFactory; +import com.google.api.client.http.HttpResponse; +import com.google.api.client.http.HttpResponseException; +import com.google.api.client.http.HttpTransport; +import com.google.api.client.http.apache.ApacheHttpTransport; +import com.google.api.client.http.javanet.NetHttpTransport; +import com.google.api.client.json.JsonFactory; +import com.google.api.client.json.JsonObjectParser; +import com.google.api.client.json.jackson2.JacksonFactory; +import com.google.api.client.util.ExponentialBackOff; +import com.google.gson.reflect.TypeToken; +import java.lang.reflect.Type; +import java.util.List; +import java.util.concurrent.ExecutorService; +import java.util.concurrent.Executors; +import java.util.concurrent.Future; + +public class GitHubExample { + static final HttpTransport HTTP_TRANSPORT = new NetHttpTransport(); + //static final HttpTransport HTTP_TRANSPORT = new ApacheHttpTransport(); + static final JsonFactory JSON_FACTORY = new JacksonFactory(); + //static final JsonFactory JSON_FACTORY = new GsonFactory(); + + private static void run() throws Exception { + HttpRequestFactory requestFactory + = HTTP_TRANSPORT.createRequestFactory( + (HttpRequest request) -> { + request.setParser(new JsonObjectParser(JSON_FACTORY)); + }); + GitHubUrl url = new GitHubUrl("https://api.github.com/users"); + url.per_page = 10; + url.page = 1; + HttpRequest request = requestFactory.buildGetRequest(url); + ExponentialBackOff backoff = new ExponentialBackOff.Builder() + .setInitialIntervalMillis(500) + .setMaxElapsedTimeMillis(900000) + .setMaxIntervalMillis(6000) + .setMultiplier(1.5) + .setRandomizationFactor(0.5) + .build(); + request.setUnsuccessfulResponseHandler(new HttpBackOffUnsuccessfulResponseHandler(backoff)); + Type type = new TypeToken>() {}.getType(); + List users = (List)request.execute().parseAs(type); + System.out.println(users); + url.appendRawPath("/eugenp"); + request = requestFactory.buildGetRequest(url); + ExecutorService executor = Executors.newSingleThreadExecutor(); + Future responseFuture = request.executeAsync(executor); + User eugen = responseFuture.get().parseAs(User.class); + System.out.println(eugen); + executor.shutdown(); + } + + public static void main(String[] args) { + try { + run(); + } catch (Exception e) { + System.err.println(e.getMessage()); + } + } +} diff --git a/libraries/src/main/java/com/baeldung/googlehttpclientguide/GitHubUrl.java b/libraries/src/main/java/com/baeldung/googlehttpclientguide/GitHubUrl.java new file mode 100644 index 0000000000..c44de1e145 --- /dev/null +++ b/libraries/src/main/java/com/baeldung/googlehttpclientguide/GitHubUrl.java @@ -0,0 +1,18 @@ +package com.baeldung.googlehttpclientguide; + +import com.google.api.client.http.GenericUrl; +import com.google.api.client.util.Key; + +public class GitHubUrl extends GenericUrl{ + + public GitHubUrl(String encodedUrl) { + super(encodedUrl); + } + + @Key + public int per_page; + + @Key + public int page; + +} diff --git a/libraries/src/main/java/com/baeldung/googlehttpclientguide/User.java b/libraries/src/main/java/com/baeldung/googlehttpclientguide/User.java new file mode 100644 index 0000000000..bf4ee96b25 --- /dev/null +++ b/libraries/src/main/java/com/baeldung/googlehttpclientguide/User.java @@ -0,0 +1,77 @@ +package com.baeldung.googlehttpclientguide; + +import com.google.api.client.json.GenericJson; +import com.google.api.client.util.Key; + +public class User extends GenericJson { + @Key + private String login; + @Key + private long id; + @Key + private String url; + @Key + private String company; + @Key + private String blog; + @Key + private String email; + + @Key("subscriptions_url") + private String subscriptionsUrl; + + public String getLogin() { + return login; + } + + public void setLogin(String login) { + this.login = login; + } + + public long getId() { + return id; + } + + public void setId(long id) { + this.id = id; + } + + public String getUrl() { + return url; + } + + public void setUrl(String url) { + this.url = url; + } + + public String getCompany() { + return company; + } + + public void setCompany(String company) { + this.company = company; + } + + public String getBlog() { + return blog; + } + + public void setBlog(String blog) { + this.blog = blog; + } + + public String getEmail() { + return email; + } + + public void setEmail(String email) { + this.email = email; + } + + @Override + public String toString() { + return "User{" + "login=" + login + ", id=" + id + ", url=" + url + ", company=" + company + ", blog=" + blog + ", email=" + email + '}'; + } + + +} diff --git a/libraries/src/main/java/com/baeldung/googlehttpclientguide/logging.properties b/libraries/src/main/java/com/baeldung/googlehttpclientguide/logging.properties new file mode 100644 index 0000000000..02489378df --- /dev/null +++ b/libraries/src/main/java/com/baeldung/googlehttpclientguide/logging.properties @@ -0,0 +1,10 @@ +# Properties file which configures the operation of the JDK logging facility. +# The system will look for this config file to be specified as a system property: +# -Djava.util.logging.config.file=${project_loc:dailymotion-simple-cmdline-sample}/logging.properties + +# Set up the console handler (uncomment "level" to show more fine-grained messages) +handlers = java.util.logging.ConsoleHandler +java.util.logging.ConsoleHandler.level = ALL + +# Set up logging of HTTP requests and responses (uncomment "level" to show) +com.google.api.client.http.level = ALL diff --git a/spring-activiti/README.md b/spring-activiti/README.md index 3580e29a52..5007b03ec7 100644 --- a/spring-activiti/README.md +++ b/spring-activiti/README.md @@ -2,4 +2,4 @@ - [A Guide to Activiti with Java](http://www.baeldung.com/java-activiti) - [Introduction to Activiti with Spring](http://www.baeldung.com/spring-activiti) - +- [Activiti with Spring Security](http://www.baeldung.com/activiti-spring-security) diff --git a/spring-boot/src/main/java/org/baeldung/dsrouting/ClientDatabase.java b/spring-boot/src/main/java/org/baeldung/dsrouting/ClientDatabase.java index 6c87cb3dde..619b8707d8 100644 --- a/spring-boot/src/main/java/org/baeldung/dsrouting/ClientDatabase.java +++ b/spring-boot/src/main/java/org/baeldung/dsrouting/ClientDatabase.java @@ -2,6 +2,6 @@ package org.baeldung.dsrouting; public enum ClientDatabase { - ACME_WIDGETS, WIDGETS_ARE_US, WIDGET_DEPOT + CLIENT_A, CLIENT_B } diff --git a/spring-boot/src/test/java/org/baeldung/dsrouting/DataSourceRoutingTestConfiguration.java b/spring-boot/src/test/java/org/baeldung/dsrouting/DataSourceRoutingTestConfiguration.java index 09382c4ca0..595ad6ce0d 100644 --- a/spring-boot/src/test/java/org/baeldung/dsrouting/DataSourceRoutingTestConfiguration.java +++ b/spring-boot/src/test/java/org/baeldung/dsrouting/DataSourceRoutingTestConfiguration.java @@ -22,41 +22,30 @@ public class DataSourceRoutingTestConfiguration { @Bean public DataSource clientDatasource() { Map targetDataSources = new HashMap<>(); - DataSource acmeWidgetsDatasource = acmeWidgetsDatasource(); - DataSource widgetsAreUsDatasource = widgetsAreUsDatasource(); - DataSource widgetsDepotDatasource = widgetsDepotDatasource(); - targetDataSources.put(ClientDatabase.ACME_WIDGETS, acmeWidgetsDatasource); - targetDataSources.put(ClientDatabase.WIDGETS_ARE_US, widgetsAreUsDatasource); - targetDataSources.put(ClientDatabase.WIDGET_DEPOT, widgetsDepotDatasource); + DataSource clientADatasource = clientADatasource(); + DataSource clientBDatasource = clientBDatasource(); + targetDataSources.put(ClientDatabase.CLIENT_A, clientADatasource); + targetDataSources.put(ClientDatabase.CLIENT_B, clientBDatasource); ClientDataSourceRouter clientRoutingDatasource = new ClientDataSourceRouter(); clientRoutingDatasource.setTargetDataSources(targetDataSources); - clientRoutingDatasource.setDefaultTargetDataSource(acmeWidgetsDatasource); + clientRoutingDatasource.setDefaultTargetDataSource(clientADatasource); return clientRoutingDatasource; } - private DataSource acmeWidgetsDatasource() { + private DataSource clientADatasource() { EmbeddedDatabaseBuilder dbBuilder = new EmbeddedDatabaseBuilder(); EmbeddedDatabase embeddedDb = dbBuilder.setType(EmbeddedDatabaseType.H2) - .setName("ACMEWIDGETS") + .setName("CLIENT_A") .addScript("classpath:dsrouting-db.sql") .build(); return embeddedDb; } - private DataSource widgetsAreUsDatasource() { + private DataSource clientBDatasource() { EmbeddedDatabaseBuilder dbBuilder = new EmbeddedDatabaseBuilder(); EmbeddedDatabase embeddedDb = dbBuilder.setType(EmbeddedDatabaseType.H2) - .setName("WIDGETSAREUS") - .addScript("classpath:dsrouting-db.sql") - .build(); - return embeddedDb; - } - - private DataSource widgetsDepotDatasource() { - EmbeddedDatabaseBuilder dbBuilder = new EmbeddedDatabaseBuilder(); - EmbeddedDatabase embeddedDb = dbBuilder.setType(EmbeddedDatabaseType.H2) - .setName("WIDGETDEPOT") + .setName("CLIENT_B") .addScript("classpath:dsrouting-db.sql") .build(); return embeddedDb; diff --git a/spring-boot/src/test/java/org/baeldung/dsrouting/DataSourceRoutingTests.java b/spring-boot/src/test/java/org/baeldung/dsrouting/DataSourceRoutingTests.java index f19871702e..88a142fcde 100644 --- a/spring-boot/src/test/java/org/baeldung/dsrouting/DataSourceRoutingTests.java +++ b/spring-boot/src/test/java/org/baeldung/dsrouting/DataSourceRoutingTests.java @@ -24,23 +24,18 @@ public class DataSourceRoutingTests { @Before public void setup() { - final String SQL_ACME_WIDGETS = "insert into client (id, name) values (1, 'ACME WIDGETS')"; - final String SQL_WIDGETS_ARE_US = "insert into client (id, name) values (2, 'WIDGETS ARE US')"; - final String SQL_WIDGET_DEPOT = "insert into client (id, name) values (3, 'WIDGET DEPOT')"; + final String SQL_CLIENT_A = "insert into client (id, name) values (1, 'CLIENT A')"; + final String SQL_CLIENT_B = "insert into client (id, name) values (2, 'CLIENT B')"; JdbcTemplate jdbcTemplate = new JdbcTemplate(); jdbcTemplate.setDataSource(routingDatasource); - ClientDatabaseContextHolder.set(ClientDatabase.ACME_WIDGETS); - jdbcTemplate.execute(SQL_ACME_WIDGETS); + ClientDatabaseContextHolder.set(ClientDatabase.CLIENT_A); + jdbcTemplate.execute(SQL_CLIENT_A); ClientDatabaseContextHolder.clear(); - ClientDatabaseContextHolder.set(ClientDatabase.WIDGETS_ARE_US); - jdbcTemplate.execute(SQL_WIDGETS_ARE_US); - ClientDatabaseContextHolder.clear(); - - ClientDatabaseContextHolder.set(ClientDatabase.WIDGET_DEPOT); - jdbcTemplate.execute(SQL_WIDGET_DEPOT); + ClientDatabaseContextHolder.set(ClientDatabase.CLIENT_B); + jdbcTemplate.execute(SQL_CLIENT_B); ClientDatabaseContextHolder.clear(); } @@ -48,15 +43,11 @@ public class DataSourceRoutingTests { public void givenClientDbs_whenContextsSwitch_thenRouteToCorrectDatabase() throws Exception { // test ACME WIDGETS - String clientName = clientService.getClientName(ClientDatabase.ACME_WIDGETS); - assertEquals(clientName, "ACME WIDGETS"); + String clientName = clientService.getClientName(ClientDatabase.CLIENT_A); + assertEquals(clientName, "CLIENT A"); // test WIDGETS_ARE_US - clientName = clientService.getClientName(ClientDatabase.WIDGETS_ARE_US); - assertEquals(clientName, "WIDGETS ARE US"); - - // test WIDGET_DEPOT - clientName = clientService.getClientName(ClientDatabase.WIDGET_DEPOT); - assertEquals(clientName, "WIDGET DEPOT"); + clientName = clientService.getClientName(ClientDatabase.CLIENT_B); + assertEquals(clientName, "CLIENT B"); } }