From 6def7456405f69e21485f0bec25c2c018e870301 Mon Sep 17 00:00:00 2001 From: shankarps Date: Wed, 22 Mar 2017 18:13:26 -0700 Subject: [PATCH 01/56] BAEL-679. Java 9 Reactive Streams. Second draft. --- .../reactive/BaeldungBatchSubscriberImpl.java | 84 +++++++++++++++ .../reactive/BaeldungSubscriberImpl.java | 55 ++++++++++ .../BaeldungBatchSubscriberImplTest.java | 75 +++++++++++++ .../reactive/BaeldungSubscriberImplTest.java | 100 ++++++++++++++++++ 4 files changed, 314 insertions(+) create mode 100644 core-java-9/src/main/java/com/baeldung/java9/reactive/BaeldungBatchSubscriberImpl.java create mode 100644 core-java-9/src/main/java/com/baeldung/java9/reactive/BaeldungSubscriberImpl.java create mode 100644 core-java-9/src/test/java/com/baeldung/java9/reactive/BaeldungBatchSubscriberImplTest.java create mode 100644 core-java-9/src/test/java/com/baeldung/java9/reactive/BaeldungSubscriberImplTest.java diff --git a/core-java-9/src/main/java/com/baeldung/java9/reactive/BaeldungBatchSubscriberImpl.java b/core-java-9/src/main/java/com/baeldung/java9/reactive/BaeldungBatchSubscriberImpl.java new file mode 100644 index 0000000000..4c65cb35b6 --- /dev/null +++ b/core-java-9/src/main/java/com/baeldung/java9/reactive/BaeldungBatchSubscriberImpl.java @@ -0,0 +1,84 @@ +package com.baeldung.java9.reactive; + +import java.util.ArrayList; +import java.util.concurrent.Flow.Subscriber; +import java.util.concurrent.Flow.Subscription; + +public class BaeldungBatchSubscriberImpl implements Subscriber { + private Subscription subscription; + private boolean completed = false; + private int counter; + private ArrayList buffer; + public static final int BUFFER_SIZE = 5; + + public BaeldungBatchSubscriberImpl() { + buffer = new ArrayList(); + } + + public boolean isCompleted() { + return completed; + } + + public void setCompleted(boolean completed) { + this.completed = completed; + } + + public int getCounter() { + return counter; + } + + public void setCounter(int counter) { + this.counter = counter; + } + + @Override + public void onSubscribe(Subscription subscription) { + this.subscription = subscription; + subscription.request(BUFFER_SIZE); + } + + @Override + public void onNext(String item) { + buffer.add(item); + // if buffer is full, process the items. + if (buffer.size() >= BUFFER_SIZE) { + processBuffer(); + subscription.request(BUFFER_SIZE); + } else if(buffer.size() == 0) { + // If buffer empty, request more items. + subscription.request(BUFFER_SIZE); + } + } + + private void processBuffer() { + if (buffer.isEmpty()) + return; + // Process all items in the buffer. Here, we just print it and sleep for 1 second. + System.out.print("Processed items: "); + buffer.stream() + .forEach(item -> { + System.out.print(" " + item); + }); + System.out.println(); + try { + Thread.sleep(1000); + } catch (InterruptedException e) { + e.printStackTrace(); + } + counter = counter + buffer.size(); + buffer.clear(); + } + + @Override + public void onError(Throwable t) { + t.printStackTrace(); + } + + @Override + public void onComplete() { + completed = true; + // process any remaining items in buffer before + processBuffer(); + subscription.cancel(); + } +} diff --git a/core-java-9/src/main/java/com/baeldung/java9/reactive/BaeldungSubscriberImpl.java b/core-java-9/src/main/java/com/baeldung/java9/reactive/BaeldungSubscriberImpl.java new file mode 100644 index 0000000000..bacd777255 --- /dev/null +++ b/core-java-9/src/main/java/com/baeldung/java9/reactive/BaeldungSubscriberImpl.java @@ -0,0 +1,55 @@ +package com.baeldung.java9.reactive; + +import java.util.concurrent.Flow.Subscriber; +import java.util.concurrent.Flow.Subscription; + +public class BaeldungSubscriberImpl implements Subscriber { + private Subscription subscription; + private boolean completed = false; + private int counter; + + public boolean isCompleted() { + return completed; + } + + public void setCompleted(boolean completed) { + this.completed = completed; + } + + public int getCounter() { + return counter; + } + + public void setCounter(int counter) { + this.counter = counter; + } + + @Override + public void onSubscribe(Subscription subscription) { + this.subscription = subscription; + subscription.request(1); + } + + @Override + public void onNext(String item) { + try { + Thread.sleep(1000); + } catch (InterruptedException e) { + e.printStackTrace(); + } + counter++; + System.out.println("Processed item : " + item); + subscription.request(1); + } + + @Override + public void onError(Throwable t) { + t.printStackTrace(); + } + + @Override + public void onComplete() { + completed = true; + subscription.cancel(); + } +} diff --git a/core-java-9/src/test/java/com/baeldung/java9/reactive/BaeldungBatchSubscriberImplTest.java b/core-java-9/src/test/java/com/baeldung/java9/reactive/BaeldungBatchSubscriberImplTest.java new file mode 100644 index 0000000000..388d3efdd8 --- /dev/null +++ b/core-java-9/src/test/java/com/baeldung/java9/reactive/BaeldungBatchSubscriberImplTest.java @@ -0,0 +1,75 @@ +package com.baeldung.java9.reactive; + +import static org.junit.Assert.assertEquals; +import static org.junit.Assert.assertTrue; + +import java.util.concurrent.ForkJoinPool; +import java.util.concurrent.SubmissionPublisher; +import java.util.concurrent.TimeUnit; +import java.util.stream.IntStream; + +import org.junit.Before; +import org.junit.Rule; +import org.junit.Test; +import org.junit.rules.Stopwatch; + +public class BaeldungBatchSubscriberImplTest { + + private static final int ITEM_SIZE = 10; + private SubmissionPublisher publisher; + private BaeldungBatchSubscriberImpl subscriber; + + @Before + public void initialize() { + this.publisher = new SubmissionPublisher(ForkJoinPool.commonPool(), 6); + this.subscriber = new BaeldungBatchSubscriberImpl(); + publisher.subscribe(subscriber); + } + + @Rule + public Stopwatch stopwatch = new Stopwatch() { + + }; + + @Test + public void testReactiveStreamCount() { + IntStream.range(0, ITEM_SIZE) + .forEach(item -> publisher.submit(item + "")); + publisher.close(); + + do { + // wait for subscribers to complete all processing. + try { + Thread.sleep(100); + } catch (InterruptedException e) { + // TODO Auto-generated catch block + e.printStackTrace(); + } + } while (!subscriber.isCompleted()); + + int count = subscriber.getCounter(); + + assertEquals(ITEM_SIZE, count); + } + + @Test + public void testReactiveStreamTime() { + IntStream.range(0, ITEM_SIZE) + .forEach(item -> publisher.submit(item + "")); + publisher.close(); + + do { + // wait for subscribers to complete all processing. + try { + Thread.sleep(100); + } catch (InterruptedException e) { + // TODO Auto-generated catch block + e.printStackTrace(); + } + } while (!subscriber.isCompleted()); + + // The runtime in seconds should be equal to the number of items in each batch. + assertTrue(stopwatch.runtime(TimeUnit.SECONDS) >= (ITEM_SIZE / subscriber.BUFFER_SIZE)); + } + +} diff --git a/core-java-9/src/test/java/com/baeldung/java9/reactive/BaeldungSubscriberImplTest.java b/core-java-9/src/test/java/com/baeldung/java9/reactive/BaeldungSubscriberImplTest.java new file mode 100644 index 0000000000..5638c0a431 --- /dev/null +++ b/core-java-9/src/test/java/com/baeldung/java9/reactive/BaeldungSubscriberImplTest.java @@ -0,0 +1,100 @@ +package com.baeldung.java9.reactive; + +import static org.junit.Assert.assertEquals; +import static org.junit.Assert.assertTrue; + +import java.util.concurrent.ForkJoinPool; +import java.util.concurrent.SubmissionPublisher; +import java.util.concurrent.TimeUnit; +import java.util.stream.IntStream; + +import org.junit.Before; +import org.junit.Rule; +import org.junit.Test; +import org.junit.rules.Stopwatch; + +public class BaeldungSubscriberImplTest { + + private static final int ITEM_SIZE = 10; + private SubmissionPublisher publisher; + private BaeldungSubscriberImpl subscriber; + + @Before + public void initialize() { + // create Publisher with max buffer capacity 3. + this.publisher = new SubmissionPublisher(ForkJoinPool.commonPool(), 3); + this.subscriber = new BaeldungSubscriberImpl(); + publisher.subscribe(subscriber); + } + + @Rule + public Stopwatch stopwatch = new Stopwatch() { + + }; + + @Test + public void testReactiveStreamCount() { + IntStream.range(0, ITEM_SIZE) + .forEach(item -> publisher.submit(item + "")); + publisher.close(); + + do { + // wait for subscribers to complete all processing. + try { + Thread.sleep(100); + } catch (InterruptedException e) { + // TODO Auto-generated catch block + e.printStackTrace(); + } + } while (!subscriber.isCompleted()); + + int count = subscriber.getCounter(); + + assertEquals(ITEM_SIZE, count); + } + + @Test + public void testReactiveStreamTime() { + IntStream.range(0, ITEM_SIZE) + .forEach(item -> publisher.submit(item + "")); + publisher.close(); + + do { + // wait for subscribers to complete all processing. + try { + Thread.sleep(100); + } catch (InterruptedException e) { + // TODO Auto-generated catch block + e.printStackTrace(); + } + } while (!subscriber.isCompleted()); + + // The runtime in seconds should be equal to the number of items. + assertTrue(stopwatch.runtime(TimeUnit.SECONDS) >= ITEM_SIZE); + } + + @Test + public void testReactiveStreamOffer() { + IntStream.range(0, ITEM_SIZE) + .forEach(item -> publisher.offer(item + "", (subscriber, string) -> { + // Returning false means this item will be dropped (no retry), if blocked. + return false; + })); + publisher.close(); + + do { + // wait for subscribers to complete all processing. + try { + Thread.sleep(100); + } catch (InterruptedException e) { + // TODO Auto-generated catch block + e.printStackTrace(); + } + } while (!subscriber.isCompleted()); + + int count = subscriber.getCounter(); + // Because 10 items were offered and the buffer capacity was 3, few items will not be processed. + assertTrue(ITEM_SIZE > count); + } + +} From 975ee3bc8554847064aa1145a4331b4a3653f309 Mon Sep 17 00:00:00 2001 From: sp619r Date: Mon, 3 Apr 2017 21:02:58 -0700 Subject: [PATCH 02/56] BAEL-679 second draft --- .../java9/reactive/BaeldungBatchSubscriberImpl.java | 6 ++---- 1 file changed, 2 insertions(+), 4 deletions(-) diff --git a/core-java-9/src/main/java/com/baeldung/java9/reactive/BaeldungBatchSubscriberImpl.java b/core-java-9/src/main/java/com/baeldung/java9/reactive/BaeldungBatchSubscriberImpl.java index 4c65cb35b6..46eee4883a 100644 --- a/core-java-9/src/main/java/com/baeldung/java9/reactive/BaeldungBatchSubscriberImpl.java +++ b/core-java-9/src/main/java/com/baeldung/java9/reactive/BaeldungBatchSubscriberImpl.java @@ -43,11 +43,9 @@ public class BaeldungBatchSubscriberImpl implements Subscriber { // if buffer is full, process the items. if (buffer.size() >= BUFFER_SIZE) { processBuffer(); - subscription.request(BUFFER_SIZE); - } else if(buffer.size() == 0) { - // If buffer empty, request more items. - subscription.request(BUFFER_SIZE); } + //request more items. + subscription.request(1); } private void processBuffer() { From eb26f83cd18ce3c4ab05dfecc4b0df89f2b8e800 Mon Sep 17 00:00:00 2001 From: Tomasz Lelek Date: Tue, 4 Apr 2017 22:48:41 +0200 Subject: [PATCH 03/56] Bael 770 jetty (#1548) * BAEL-770 add jetty simple test case * BAEL-770 jetty async and blocking servlets * BAEL-766 reorder --- libraries/pom.xml | 25 +++++++- .../java/com/baeldung/jetty/AsyncServlet.java | 42 ++++++++++++++ .../com/baeldung/jetty/BlockingServlet.java | 17 ++++++ .../java/com/baeldung/jetty/JettyServer.java | 32 ++++++++++ .../java/com/baeldung/jetty/JettyTest.java | 58 +++++++++++++++++++ 5 files changed, 173 insertions(+), 1 deletion(-) create mode 100644 libraries/src/main/java/com/baeldung/jetty/AsyncServlet.java create mode 100644 libraries/src/main/java/com/baeldung/jetty/BlockingServlet.java create mode 100644 libraries/src/main/java/com/baeldung/jetty/JettyServer.java create mode 100644 libraries/src/test/java/com/baeldung/jetty/JettyTest.java diff --git a/libraries/pom.xml b/libraries/pom.xml index 11295230b4..0f33c42dc4 100644 --- a/libraries/pom.xml +++ b/libraries/pom.xml @@ -1,6 +1,6 @@ + xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"> parent-modules com.baeldung @@ -72,6 +72,26 @@ javers-core ${javers.version} + + org.eclipse.jetty + jetty-server + ${jetty.version} + + + org.eclipse.jetty + jetty-servlet + ${jetty.version} + + + org.apache.httpcomponents + httpclient + ${httpclient.version} + + + commons-io + commons-io + ${commons.io.version} + @@ -84,6 +104,9 @@ 3.6.2 1.5.0 3.1.0 + 9.4.2.v20170220 + 4.5.3 + 2.5 \ No newline at end of file diff --git a/libraries/src/main/java/com/baeldung/jetty/AsyncServlet.java b/libraries/src/main/java/com/baeldung/jetty/AsyncServlet.java new file mode 100644 index 0000000000..d1bddd097f --- /dev/null +++ b/libraries/src/main/java/com/baeldung/jetty/AsyncServlet.java @@ -0,0 +1,42 @@ +package com.baeldung.jetty; + +import javax.servlet.AsyncContext; +import javax.servlet.ServletException; +import javax.servlet.ServletOutputStream; +import javax.servlet.WriteListener; +import javax.servlet.http.HttpServlet; +import javax.servlet.http.HttpServletRequest; +import javax.servlet.http.HttpServletResponse; +import java.io.IOException; +import java.nio.ByteBuffer; +import java.nio.charset.StandardCharsets; + +public class AsyncServlet extends HttpServlet { + private static final String HEAVY_RESOURCE = "This is some heavy resource that will be served in an async way"; + + protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { + ByteBuffer content = ByteBuffer.wrap(HEAVY_RESOURCE.getBytes(StandardCharsets.UTF_8)); + + AsyncContext async = request.startAsync(); + ServletOutputStream out = response.getOutputStream(); + out.setWriteListener(new WriteListener() { + @Override + public void onWritePossible() throws IOException { + while (out.isReady()) { + if (!content.hasRemaining()) { + response.setStatus(200); + async.complete(); + return; + } + out.write(content.get()); + } + } + + @Override + public void onError(Throwable t) { + getServletContext().log("Async Error", t); + async.complete(); + } + }); + } +} \ No newline at end of file diff --git a/libraries/src/main/java/com/baeldung/jetty/BlockingServlet.java b/libraries/src/main/java/com/baeldung/jetty/BlockingServlet.java new file mode 100644 index 0000000000..f1de71beeb --- /dev/null +++ b/libraries/src/main/java/com/baeldung/jetty/BlockingServlet.java @@ -0,0 +1,17 @@ +package com.baeldung.jetty; + +import javax.servlet.ServletException; +import javax.servlet.http.HttpServlet; +import javax.servlet.http.HttpServletRequest; +import javax.servlet.http.HttpServletResponse; +import java.io.IOException; + +public class BlockingServlet extends HttpServlet { + + protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { + response.setContentType("application/json"); + response.setStatus(HttpServletResponse.SC_OK); + response.getWriter().println("{ \"status\": \"ok\"}"); + } +} + diff --git a/libraries/src/main/java/com/baeldung/jetty/JettyServer.java b/libraries/src/main/java/com/baeldung/jetty/JettyServer.java new file mode 100644 index 0000000000..1365de866a --- /dev/null +++ b/libraries/src/main/java/com/baeldung/jetty/JettyServer.java @@ -0,0 +1,32 @@ +package com.baeldung.jetty; + +import org.eclipse.jetty.server.Connector; +import org.eclipse.jetty.server.Server; +import org.eclipse.jetty.server.ServerConnector; +import org.eclipse.jetty.servlet.ServletHandler; + +public class JettyServer { + + private Server server; + + public void start() throws Exception { + + server = new Server(); + ServerConnector connector = new ServerConnector(server); + connector.setPort(8090); + server.setConnectors(new Connector[]{connector}); + + ServletHandler servletHandler = new ServletHandler(); + server.setHandler(servletHandler); + + servletHandler.addServletWithMapping(BlockingServlet.class, "/status"); + servletHandler.addServletWithMapping(AsyncServlet.class, "/heavy/async"); + + server.start(); + + } + + public void stop() throws Exception { + server.stop(); + } +} diff --git a/libraries/src/test/java/com/baeldung/jetty/JettyTest.java b/libraries/src/test/java/com/baeldung/jetty/JettyTest.java new file mode 100644 index 0000000000..caf70f9af3 --- /dev/null +++ b/libraries/src/test/java/com/baeldung/jetty/JettyTest.java @@ -0,0 +1,58 @@ +package com.baeldung.jetty; + + +import org.apache.commons.io.IOUtils; +import org.apache.http.HttpResponse; +import org.apache.http.client.HttpClient; +import org.apache.http.client.methods.HttpGet; +import org.apache.http.impl.client.HttpClientBuilder; +import org.junit.After; +import org.junit.Before; +import org.junit.Test; + +import java.nio.charset.StandardCharsets; + +import static org.assertj.core.api.AssertionsForInterfaceTypes.assertThat; + +public class JettyTest { + private JettyServer jettyServer; + + @Before + public void setup() throws Exception { + jettyServer = new JettyServer(); + jettyServer.start(); + } + + @After + public void cleanup() throws Exception { + Thread.sleep(2000); + jettyServer.stop(); + } + + @Test + public void givenServer_whenSendRequestToBlockingServlet_thenReturnStatusOK() throws Exception { + //given + String url = "http://localhost:8090/status"; + HttpClient client = HttpClientBuilder.create().build(); + HttpGet request = new HttpGet(url); + HttpResponse response = client.execute(request); + + //then + assertThat(response.getStatusLine().getStatusCode()).isEqualTo(200); + + } + + @Test + public void givenServer_whenSendRequestToNonBlockingServlet_thenReturnStatusOK() throws Exception { + //when + String url = "http://localhost:8090/heavy/async"; + HttpClient client = HttpClientBuilder.create().build(); + HttpGet request = new HttpGet(url); + HttpResponse response = client.execute(request); + + //then + assertThat(response.getStatusLine().getStatusCode()).isEqualTo(200); + String responseContent = IOUtils.toString(response.getEntity().getContent(), StandardCharsets.UTF_8); + assertThat(responseContent).isEqualTo("This is some heavy resource that will be served in an async way"); + } +} From cb9c16a5330bc52bc0dc45f984d61e02ec736bb7 Mon Sep 17 00:00:00 2001 From: Grzegorz Piwowarek Date: Wed, 5 Apr 2017 09:20:39 +0200 Subject: [PATCH 04/56] Optimize build (#1592) * Optimize build * Optimize build --- apache-poi/temp.xlsx | Bin 3492 -> 3492 bytes mesos-marathon/pom.xml | 10 ++++++++ .../DemoApplication.java | 4 +--- .../HelloController.java | 3 +-- .../DemoApplicationIntegrationTest.java} | 5 ++-- pom.xml | 4 ++-- spring-amqp-simple/pom.xml | 10 ++++++++ spring-aop/pom.xml | 16 +++++++++++-- ...a => CustomAnnotationIntegrationTest.java} | 2 +- ... UserJsonDeserializerIntegrationTest.java} | 2 +- ...=> UserJsonSerializerIntegrationTest.java} | 2 +- ...t.java => SaveMethodsIntegrationTest.java} | 2 +- .../criteria/HibernateCriteriaTestRunner.java | 15 ------------ .../criteria/HibernateCriteriaTestSuite.java | 11 --------- ...st.java => SaveMethodIntegrationTest.java} | 22 +++++------------- ...kMvc.java => EmployeeIntegrationTest.java} | 2 +- ...equestMapingShortcutsIntegrationTest.java} | 2 +- spring-security-rest/pom.xml | 2 +- ...va => AsyncControllerIntegrationTest.java} | 6 ++--- ... ForkJoinStateMachineIntegrationTest.java} | 2 +- ...rarchicalStateMachineIntegrationTest.java} | 2 +- ... JunctionStateMachineIntegrationTest.java} | 2 +- ...a => StateEnumMachineIntegrationTest.java} | 2 +- 23 files changed, 60 insertions(+), 68 deletions(-) rename mesos-marathon/src/main/java/com/{mogronalol => baeldung}/DemoApplication.java (81%) rename mesos-marathon/src/main/java/com/{mogronalol => baeldung}/HelloController.java (82%) rename mesos-marathon/src/test/java/com/{mogronalol/DemoApplicationTests.java => baeldung/DemoApplicationIntegrationTest.java} (88%) rename spring-aop/src/test/java/org/baeldung/{CustomAnnotationTest.java => CustomAnnotationIntegrationTest.java} (91%) rename spring-boot/src/test/java/org/baeldung/jsoncomponent/{UserJsonDeserializerTest.java => UserJsonDeserializerIntegrationTest.java} (93%) rename spring-boot/src/test/java/org/baeldung/jsoncomponent/{UserJsonSerializerTest.java => UserJsonSerializerIntegrationTest.java} (94%) rename spring-hibernate4/src/test/java/com/baeldung/persistence/save/{SaveMethodsTest.java => SaveMethodsIntegrationTest.java} (99%) delete mode 100644 spring-hibernate5/src/test/java/com/baeldung/hibernate/criteria/HibernateCriteriaTestRunner.java delete mode 100644 spring-hibernate5/src/test/java/com/baeldung/hibernate/criteria/HibernateCriteriaTestSuite.java rename spring-hibernate5/src/test/java/com/baeldung/persistence/save/{SaveMethodsTest.java => SaveMethodIntegrationTest.java} (94%) rename spring-mvc-java/src/test/java/com/baeldung/web/controller/{EmployeeTestWithoutMockMvc.java => EmployeeIntegrationTest.java} (97%) rename spring-mvc-java/src/test/java/com/baeldung/web/controller/{RequestMapingShortcutsUnitTest.java => RequestMapingShortcutsIntegrationTest.java} (98%) rename spring-security-rest/src/test/java/org/baeldung/web/{AsyncControllerTest.java => AsyncControllerIntegrationTest.java} (97%) rename spring-state-machine/src/test/java/com/baeldung/spring/statemachine/{ForkJoinStateMachineTest.java => ForkJoinStateMachineIntegrationTest.java} (97%) rename spring-state-machine/src/test/java/com/baeldung/spring/statemachine/{HierarchicalStateMachineTest.java => HierarchicalStateMachineIntegrationTest.java} (96%) rename spring-state-machine/src/test/java/com/baeldung/spring/statemachine/{JunctionStateMachineTest.java => JunctionStateMachineIntegrationTest.java} (96%) rename spring-state-machine/src/test/java/com/baeldung/spring/statemachine/{StateEnumMachineTest.java => StateEnumMachineIntegrationTest.java} (97%) diff --git a/apache-poi/temp.xlsx b/apache-poi/temp.xlsx index 12a9b2656c24c1605df94f1a00c1f792a580f154..431a8a662c2cacd3363a1593bc24df699ae34c98 100644 GIT binary patch delta 460 zcmZ1?y+oQfz?+#xgn@&DgJFej>qcG~MrI(rS%_~9^sHc(~om1zrDE9unE$c+DoStb}Jmcr7yMeqftu5|L z$12Vep3)@d_HEbN3(lL*p9_4&e0>tXn{(?H$K6(%t*M7BEG&`_w#wB=+1@fv)V|W1 zAbBjVWWkQ}$_pQVIBId!StqtzSA2c_9@afdDczzhdX*0O_xS6*rv3cj@rm zuj(v%Z2O|O E02C#=wg3PC delta 460 zcmZ1?y+oQfz?+#xgn@&DgW*79#YSEkMrI(rS%DmQx=gyeR8`p2OU13g<4GuJ#h$ggec8*Dd~TU>w9kC)$`)mhp}fBCbUK_uR8*UW+g z%qL8wB7STzoc#V|a%JV!cLBiyRnsOKX`AWVCYBuLs9g79{okWMLM5)p9Py~~_+Eb9 zSbfK~$z1g>5}FO{q7cRm4rusp z=Uf5_-#BhFaQIH=wgb~QxUD&W;q3)7eX=x + + org.apache.maven.plugins + maven-surefire-plugin + + + **/*IntegrationTest.java + **/*LiveTest.java + + + diff --git a/mesos-marathon/src/main/java/com/mogronalol/DemoApplication.java b/mesos-marathon/src/main/java/com/baeldung/DemoApplication.java similarity index 81% rename from mesos-marathon/src/main/java/com/mogronalol/DemoApplication.java rename to mesos-marathon/src/main/java/com/baeldung/DemoApplication.java index f757178026..b2c5302277 100644 --- a/mesos-marathon/src/main/java/com/mogronalol/DemoApplication.java +++ b/mesos-marathon/src/main/java/com/baeldung/DemoApplication.java @@ -1,10 +1,8 @@ -package com.mogronalol; +package com.baeldung; import org.springframework.boot.SpringApplication; import org.springframework.boot.autoconfigure.SpringBootApplication; -import javax.annotation.PostConstruct; - @SpringBootApplication public class DemoApplication { diff --git a/mesos-marathon/src/main/java/com/mogronalol/HelloController.java b/mesos-marathon/src/main/java/com/baeldung/HelloController.java similarity index 82% rename from mesos-marathon/src/main/java/com/mogronalol/HelloController.java rename to mesos-marathon/src/main/java/com/baeldung/HelloController.java index 2059280ba0..83eca1f501 100644 --- a/mesos-marathon/src/main/java/com/mogronalol/HelloController.java +++ b/mesos-marathon/src/main/java/com/baeldung/HelloController.java @@ -1,6 +1,5 @@ -package com.mogronalol; +package com.baeldung; -import org.springframework.stereotype.Controller; import org.springframework.web.bind.annotation.GetMapping; import org.springframework.web.bind.annotation.ResponseBody; import org.springframework.web.bind.annotation.RestController; diff --git a/mesos-marathon/src/test/java/com/mogronalol/DemoApplicationTests.java b/mesos-marathon/src/test/java/com/baeldung/DemoApplicationIntegrationTest.java similarity index 88% rename from mesos-marathon/src/test/java/com/mogronalol/DemoApplicationTests.java rename to mesos-marathon/src/test/java/com/baeldung/DemoApplicationIntegrationTest.java index 5e88f9a70f..85331516f9 100644 --- a/mesos-marathon/src/test/java/com/mogronalol/DemoApplicationTests.java +++ b/mesos-marathon/src/test/java/com/baeldung/DemoApplicationIntegrationTest.java @@ -1,11 +1,10 @@ -package com.mogronalol; +package com.baeldung; import org.junit.Before; import org.junit.Test; import org.junit.runner.RunWith; import org.springframework.boot.context.embedded.LocalServerPort; import org.springframework.boot.test.context.SpringBootTest; -import org.springframework.test.context.ContextConfiguration; import org.springframework.test.context.junit4.SpringJUnit4ClassRunner; import org.springframework.web.client.RestTemplate; @@ -13,7 +12,7 @@ import static org.assertj.core.api.Assertions.assertThat; @RunWith(SpringJUnit4ClassRunner.class) @SpringBootTest(classes = {DemoApplication.class}, webEnvironment = SpringBootTest.WebEnvironment.RANDOM_PORT) -public class DemoApplicationTests { +public class DemoApplicationIntegrationTest { private RestTemplate restTemplate; diff --git a/pom.xml b/pom.xml index a6b46a0e39..a582ff3e70 100644 --- a/pom.xml +++ b/pom.xml @@ -35,7 +35,7 @@ deltaspike dozer - ejb + feign flyway @@ -66,7 +66,7 @@ javax-servlets javaxval jaxb - jee7 + jjwt jooq diff --git a/spring-amqp-simple/pom.xml b/spring-amqp-simple/pom.xml index 38738d875f..7ff26376e4 100644 --- a/spring-amqp-simple/pom.xml +++ b/spring-amqp-simple/pom.xml @@ -41,6 +41,16 @@ org.springframework.boot spring-boot-maven-plugin + + org.apache.maven.plugins + maven-surefire-plugin + + + **/*IntegrationTest.java + **/*LiveTest.java + + + \ No newline at end of file diff --git a/spring-aop/pom.xml b/spring-aop/pom.xml index bd86839742..90e892b311 100644 --- a/spring-aop/pom.xml +++ b/spring-aop/pom.xml @@ -2,10 +2,10 @@ xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"> 4.0.0 com.baeldung - spring-custom-aop + spring-aop 0.0.1-SNAPSHOT war - spring-custom-aop + spring-aop org.springframework.boot @@ -42,6 +42,18 @@ 1.8 + + + org.apache.maven.plugins + maven-surefire-plugin + + + **/*IntegrationTest.java + **/*LiveTest.java + + + + diff --git a/spring-aop/src/test/java/org/baeldung/CustomAnnotationTest.java b/spring-aop/src/test/java/org/baeldung/CustomAnnotationIntegrationTest.java similarity index 91% rename from spring-aop/src/test/java/org/baeldung/CustomAnnotationTest.java rename to spring-aop/src/test/java/org/baeldung/CustomAnnotationIntegrationTest.java index d4712cc063..b109e3a39e 100644 --- a/spring-aop/src/test/java/org/baeldung/CustomAnnotationTest.java +++ b/spring-aop/src/test/java/org/baeldung/CustomAnnotationIntegrationTest.java @@ -8,7 +8,7 @@ import org.springframework.test.context.junit4.SpringJUnit4ClassRunner; @RunWith(SpringJUnit4ClassRunner.class) @SpringBootTest -public class CustomAnnotationTest { +public class CustomAnnotationIntegrationTest { @Autowired private Service service; diff --git a/spring-boot/src/test/java/org/baeldung/jsoncomponent/UserJsonDeserializerTest.java b/spring-boot/src/test/java/org/baeldung/jsoncomponent/UserJsonDeserializerIntegrationTest.java similarity index 93% rename from spring-boot/src/test/java/org/baeldung/jsoncomponent/UserJsonDeserializerTest.java rename to spring-boot/src/test/java/org/baeldung/jsoncomponent/UserJsonDeserializerIntegrationTest.java index 51c1c72ea3..4f5af3d0e7 100644 --- a/spring-boot/src/test/java/org/baeldung/jsoncomponent/UserJsonDeserializerTest.java +++ b/spring-boot/src/test/java/org/baeldung/jsoncomponent/UserJsonDeserializerIntegrationTest.java @@ -14,7 +14,7 @@ import static org.junit.Assert.assertEquals; @JsonTest @RunWith(SpringRunner.class) -public class UserJsonDeserializerTest { +public class UserJsonDeserializerIntegrationTest { @Autowired private ObjectMapper objectMapper; diff --git a/spring-boot/src/test/java/org/baeldung/jsoncomponent/UserJsonSerializerTest.java b/spring-boot/src/test/java/org/baeldung/jsoncomponent/UserJsonSerializerIntegrationTest.java similarity index 94% rename from spring-boot/src/test/java/org/baeldung/jsoncomponent/UserJsonSerializerTest.java rename to spring-boot/src/test/java/org/baeldung/jsoncomponent/UserJsonSerializerIntegrationTest.java index c85af4a17f..c1b4c8912c 100644 --- a/spring-boot/src/test/java/org/baeldung/jsoncomponent/UserJsonSerializerTest.java +++ b/spring-boot/src/test/java/org/baeldung/jsoncomponent/UserJsonSerializerIntegrationTest.java @@ -14,7 +14,7 @@ import static org.junit.Assert.assertEquals; @JsonTest @RunWith(SpringRunner.class) -public class UserJsonSerializerTest { +public class UserJsonSerializerIntegrationTest { @Autowired private ObjectMapper objectMapper; diff --git a/spring-hibernate4/src/test/java/com/baeldung/persistence/save/SaveMethodsTest.java b/spring-hibernate4/src/test/java/com/baeldung/persistence/save/SaveMethodsIntegrationTest.java similarity index 99% rename from spring-hibernate4/src/test/java/com/baeldung/persistence/save/SaveMethodsTest.java rename to spring-hibernate4/src/test/java/com/baeldung/persistence/save/SaveMethodsIntegrationTest.java index 2e729c5680..ef83af3a0d 100644 --- a/spring-hibernate4/src/test/java/com/baeldung/persistence/save/SaveMethodsTest.java +++ b/spring-hibernate4/src/test/java/com/baeldung/persistence/save/SaveMethodsIntegrationTest.java @@ -16,7 +16,7 @@ import static org.junit.Assert.*; * Testing specific implementation details for different methods: * persist, save, merge, update, saveOrUpdate. */ -public class SaveMethodsTest { +public class SaveMethodsIntegrationTest { private static SessionFactory sessionFactory; diff --git a/spring-hibernate5/src/test/java/com/baeldung/hibernate/criteria/HibernateCriteriaTestRunner.java b/spring-hibernate5/src/test/java/com/baeldung/hibernate/criteria/HibernateCriteriaTestRunner.java deleted file mode 100644 index 3228f917fd..0000000000 --- a/spring-hibernate5/src/test/java/com/baeldung/hibernate/criteria/HibernateCriteriaTestRunner.java +++ /dev/null @@ -1,15 +0,0 @@ -package com.baeldung.hibernate.criteria; - -import org.junit.runner.JUnitCore; -import org.junit.runner.Result; -import org.junit.runner.notification.Failure; - -public class HibernateCriteriaTestRunner { - - public static void main(final String[] args) { - Result result = JUnitCore.runClasses(HibernateCriteriaTestSuite.class); - for (Failure failure : result.getFailures()) { - // - } - } -} diff --git a/spring-hibernate5/src/test/java/com/baeldung/hibernate/criteria/HibernateCriteriaTestSuite.java b/spring-hibernate5/src/test/java/com/baeldung/hibernate/criteria/HibernateCriteriaTestSuite.java deleted file mode 100644 index dc1040734f..0000000000 --- a/spring-hibernate5/src/test/java/com/baeldung/hibernate/criteria/HibernateCriteriaTestSuite.java +++ /dev/null @@ -1,11 +0,0 @@ -package com.baeldung.hibernate.criteria; - -import org.junit.runner.RunWith; -import org.junit.runners.Suite; - -@RunWith(Suite.class) -@Suite.SuiteClasses({ HibernateCriteriaIntegrationTest.class }) - -public class HibernateCriteriaTestSuite { - -} diff --git a/spring-hibernate5/src/test/java/com/baeldung/persistence/save/SaveMethodsTest.java b/spring-hibernate5/src/test/java/com/baeldung/persistence/save/SaveMethodIntegrationTest.java similarity index 94% rename from spring-hibernate5/src/test/java/com/baeldung/persistence/save/SaveMethodsTest.java rename to spring-hibernate5/src/test/java/com/baeldung/persistence/save/SaveMethodIntegrationTest.java index d3e90a568a..910cdc597f 100644 --- a/spring-hibernate5/src/test/java/com/baeldung/persistence/save/SaveMethodsTest.java +++ b/spring-hibernate5/src/test/java/com/baeldung/persistence/save/SaveMethodIntegrationTest.java @@ -1,14 +1,6 @@ package com.baeldung.persistence.save; -import static org.junit.Assert.assertEquals; -import static org.junit.Assert.assertNotEquals; -import static org.junit.Assert.assertNotNull; -import static org.junit.Assert.assertNotSame; -import static org.junit.Assert.assertNull; -import static org.junit.Assert.assertSame; - -import javax.persistence.PersistenceException; - +import com.baeldung.persistence.model.Person; import org.hibernate.HibernateException; import org.hibernate.Session; import org.hibernate.SessionFactory; @@ -17,19 +9,17 @@ import org.hibernate.boot.registry.StandardServiceRegistryBuilder; import org.hibernate.cfg.Configuration; import org.hibernate.dialect.HSQLDialect; import org.hibernate.service.ServiceRegistry; -import org.junit.After; -import org.junit.AfterClass; -import org.junit.Before; -import org.junit.BeforeClass; -import org.junit.Test; +import org.junit.*; -import com.baeldung.persistence.model.Person; +import javax.persistence.PersistenceException; + +import static org.junit.Assert.*; /** * Testing specific implementation details for different methods: persist, save, * merge, update, saveOrUpdate. */ -public class SaveMethodsTest { +public class SaveMethodIntegrationTest { private static SessionFactory sessionFactory; diff --git a/spring-mvc-java/src/test/java/com/baeldung/web/controller/EmployeeTestWithoutMockMvc.java b/spring-mvc-java/src/test/java/com/baeldung/web/controller/EmployeeIntegrationTest.java similarity index 97% rename from spring-mvc-java/src/test/java/com/baeldung/web/controller/EmployeeTestWithoutMockMvc.java rename to spring-mvc-java/src/test/java/com/baeldung/web/controller/EmployeeIntegrationTest.java index 19806e0559..0c2aa3de1b 100644 --- a/spring-mvc-java/src/test/java/com/baeldung/web/controller/EmployeeTestWithoutMockMvc.java +++ b/spring-mvc-java/src/test/java/com/baeldung/web/controller/EmployeeIntegrationTest.java @@ -15,7 +15,7 @@ import com.baeldung.spring.web.config.WebConfig; @RunWith(SpringJUnit4ClassRunner.class) @WebAppConfiguration @ContextConfiguration(classes = WebConfig.class) -public class EmployeeTestWithoutMockMvc { +public class EmployeeIntegrationTest { @Autowired private EmployeeController employeeController; diff --git a/spring-mvc-java/src/test/java/com/baeldung/web/controller/RequestMapingShortcutsUnitTest.java b/spring-mvc-java/src/test/java/com/baeldung/web/controller/RequestMapingShortcutsIntegrationTest.java similarity index 98% rename from spring-mvc-java/src/test/java/com/baeldung/web/controller/RequestMapingShortcutsUnitTest.java rename to spring-mvc-java/src/test/java/com/baeldung/web/controller/RequestMapingShortcutsIntegrationTest.java index d02a7140b5..fb21905027 100644 --- a/spring-mvc-java/src/test/java/com/baeldung/web/controller/RequestMapingShortcutsUnitTest.java +++ b/spring-mvc-java/src/test/java/com/baeldung/web/controller/RequestMapingShortcutsIntegrationTest.java @@ -21,7 +21,7 @@ import com.baeldung.spring.web.config.WebConfig; @RunWith(SpringJUnit4ClassRunner.class) @WebAppConfiguration @ContextConfiguration(classes = WebConfig.class) -public class RequestMapingShortcutsUnitTest { +public class RequestMapingShortcutsIntegrationTest { @Autowired private WebApplicationContext ctx; diff --git a/spring-security-rest/pom.xml b/spring-security-rest/pom.xml index 320e84fa7a..996161c721 100644 --- a/spring-security-rest/pom.xml +++ b/spring-security-rest/pom.xml @@ -259,10 +259,10 @@ org.apache.maven.plugins maven-surefire-plugin - ${maven-surefire-plugin.version} **/*LiveTest.java + **/*IntegrationTest.java diff --git a/spring-security-rest/src/test/java/org/baeldung/web/AsyncControllerTest.java b/spring-security-rest/src/test/java/org/baeldung/web/AsyncControllerIntegrationTest.java similarity index 97% rename from spring-security-rest/src/test/java/org/baeldung/web/AsyncControllerTest.java rename to spring-security-rest/src/test/java/org/baeldung/web/AsyncControllerIntegrationTest.java index 9cd92880a7..a09c225a4a 100644 --- a/spring-security-rest/src/test/java/org/baeldung/web/AsyncControllerTest.java +++ b/spring-security-rest/src/test/java/org/baeldung/web/AsyncControllerIntegrationTest.java @@ -1,7 +1,5 @@ package org.baeldung.web; -import static org.springframework.test.web.servlet.result.MockMvcResultMatchers.status; - import org.baeldung.spring.ClientWebConfig; import org.baeldung.spring.SecurityJavaConfig; import org.baeldung.spring.WebConfig; @@ -20,10 +18,12 @@ import org.springframework.test.web.servlet.request.MockMvcRequestBuilders; import org.springframework.test.web.servlet.setup.MockMvcBuilders; import org.springframework.web.context.WebApplicationContext; +import static org.springframework.test.web.servlet.result.MockMvcResultMatchers.status; + @RunWith(SpringJUnit4ClassRunner.class) @WebAppConfiguration @ContextConfiguration(classes = { ClientWebConfig.class, SecurityJavaConfig.class, WebConfig.class }) -public class AsyncControllerTest { +public class AsyncControllerIntegrationTest { @Autowired WebApplicationContext wac; diff --git a/spring-state-machine/src/test/java/com/baeldung/spring/statemachine/ForkJoinStateMachineTest.java b/spring-state-machine/src/test/java/com/baeldung/spring/statemachine/ForkJoinStateMachineIntegrationTest.java similarity index 97% rename from spring-state-machine/src/test/java/com/baeldung/spring/statemachine/ForkJoinStateMachineTest.java rename to spring-state-machine/src/test/java/com/baeldung/spring/statemachine/ForkJoinStateMachineIntegrationTest.java index a9aca82a6e..b34d5c47c6 100644 --- a/spring-state-machine/src/test/java/com/baeldung/spring/statemachine/ForkJoinStateMachineTest.java +++ b/spring-state-machine/src/test/java/com/baeldung/spring/statemachine/ForkJoinStateMachineIntegrationTest.java @@ -20,7 +20,7 @@ import static org.junit.Assert.assertTrue; @RunWith(SpringJUnit4ClassRunner.class) @ContextConfiguration(classes = ForkJoinStateMachineConfiguration.class) -public class ForkJoinStateMachineTest { +public class ForkJoinStateMachineIntegrationTest { @Autowired private StateMachine stateMachine; diff --git a/spring-state-machine/src/test/java/com/baeldung/spring/statemachine/HierarchicalStateMachineTest.java b/spring-state-machine/src/test/java/com/baeldung/spring/statemachine/HierarchicalStateMachineIntegrationTest.java similarity index 96% rename from spring-state-machine/src/test/java/com/baeldung/spring/statemachine/HierarchicalStateMachineTest.java rename to spring-state-machine/src/test/java/com/baeldung/spring/statemachine/HierarchicalStateMachineIntegrationTest.java index a2fa4f9160..3d7c0be828 100644 --- a/spring-state-machine/src/test/java/com/baeldung/spring/statemachine/HierarchicalStateMachineTest.java +++ b/spring-state-machine/src/test/java/com/baeldung/spring/statemachine/HierarchicalStateMachineIntegrationTest.java @@ -19,7 +19,7 @@ import static org.junit.Assert.assertEquals; @RunWith(SpringJUnit4ClassRunner.class) @ContextConfiguration(classes = HierarchicalStateMachineConfiguration.class) -public class HierarchicalStateMachineTest { +public class HierarchicalStateMachineIntegrationTest { @Autowired private StateMachine stateMachine; diff --git a/spring-state-machine/src/test/java/com/baeldung/spring/statemachine/JunctionStateMachineTest.java b/spring-state-machine/src/test/java/com/baeldung/spring/statemachine/JunctionStateMachineIntegrationTest.java similarity index 96% rename from spring-state-machine/src/test/java/com/baeldung/spring/statemachine/JunctionStateMachineTest.java rename to spring-state-machine/src/test/java/com/baeldung/spring/statemachine/JunctionStateMachineIntegrationTest.java index 2b5130ab45..93de23fad3 100644 --- a/spring-state-machine/src/test/java/com/baeldung/spring/statemachine/JunctionStateMachineTest.java +++ b/spring-state-machine/src/test/java/com/baeldung/spring/statemachine/JunctionStateMachineIntegrationTest.java @@ -17,7 +17,7 @@ import javax.annotation.Resource; @RunWith(SpringJUnit4ClassRunner.class) @ContextConfiguration(classes = JunctionStateMachineConfiguration.class) -public class JunctionStateMachineTest { +public class JunctionStateMachineIntegrationTest { @Autowired private StateMachine stateMachine; diff --git a/spring-state-machine/src/test/java/com/baeldung/spring/statemachine/StateEnumMachineTest.java b/spring-state-machine/src/test/java/com/baeldung/spring/statemachine/StateEnumMachineIntegrationTest.java similarity index 97% rename from spring-state-machine/src/test/java/com/baeldung/spring/statemachine/StateEnumMachineTest.java rename to spring-state-machine/src/test/java/com/baeldung/spring/statemachine/StateEnumMachineIntegrationTest.java index 19f24ede2d..9074ece001 100644 --- a/spring-state-machine/src/test/java/com/baeldung/spring/statemachine/StateEnumMachineTest.java +++ b/spring-state-machine/src/test/java/com/baeldung/spring/statemachine/StateEnumMachineIntegrationTest.java @@ -21,7 +21,7 @@ import static org.junit.Assert.assertTrue; @RunWith(SpringJUnit4ClassRunner.class) @ContextConfiguration(classes = SimpleEnumStateMachineConfiguration.class) -public class StateEnumMachineTest { +public class StateEnumMachineIntegrationTest { @Autowired private StateMachine stateMachine; From bbcafe2e329d1d2b12183425ac585def18eedb1d Mon Sep 17 00:00:00 2001 From: Wim Deblauwe Date: Wed, 5 Apr 2017 11:01:21 +0200 Subject: [PATCH 05/56] Feature/bael 87 (#1590) * BAEL-87 - @JsonComponent in Spring Boot * BAEL-87 - @JsonComponent in Spring Boot * BAEL-87 - @JsonComponent in Spring Boot Rename tests to end on *IntegrationTest so they can be run on a more powerful Jenkins machine --- .../java/org/baeldung/jsoncomponent/UserCombinedSerializer.java | 1 - 1 file changed, 1 deletion(-) diff --git a/spring-boot/src/main/java/org/baeldung/jsoncomponent/UserCombinedSerializer.java b/spring-boot/src/main/java/org/baeldung/jsoncomponent/UserCombinedSerializer.java index 302b0dce61..2001340197 100644 --- a/spring-boot/src/main/java/org/baeldung/jsoncomponent/UserCombinedSerializer.java +++ b/spring-boot/src/main/java/org/baeldung/jsoncomponent/UserCombinedSerializer.java @@ -34,7 +34,6 @@ public class UserCombinedSerializer { } } - @JsonComponent public static class UserJsonDeserializer extends JsonDeserializer { @Override public User deserialize(JsonParser jsonParser, DeserializationContext deserializationContext) throws IOException, JsonProcessingException { From 806d2d87b7ef875e8810ab24a5ab2cd3d192a6dd Mon Sep 17 00:00:00 2001 From: KevinGilmore Date: Wed, 5 Apr 2017 13:12:33 -0500 Subject: [PATCH 06/56] BAEL-415: Custom Scope in Spring (#1578) * Add files via upload * Update pom.xml * Update RunGuice.java * Update Communication.java * Update CommunicationMode.java * Update DefaultCommunicator.java * Update EmailCommunicationMode.java * Update IMCommunicationMode.java * Update SMSCommunicationMode.java * Update MessageLogger.java * Update MessageSentLoggable.java * Update AOPModule.java * Update BasicModule.java * Update CommunicationModel.java * Update Communicator.java * Update BasicModule.java * Update RunGuice.java * Update MessageLogger.java * Update Communicator.java * Update pom.xml * BAEL-278: Updated README.md * BAEL-554: Add and update README.md files * Update pom.xml * Update pom.xml * Update pom.xml * BAEL-345: fixed assertion * BAEL-109: Updated README.md * BAEL-345: Added README.md * Reinstating reactor-core module in root-level pom * BAEL-393: Adding guide-intro module to root pom * BAEL-9: Updated README.md * BAEL-157: README.md updated * Changed project name * Update RunGuice.java Removed references to message logging and output * Update Communication.java Removed message logging-related code * BAEL-566: Updated README.md * New project name * BAEL-393: removing guice-intro directory * BAEL-393: renamed module guice-intro to guice in root pom.xml * BAEL-393 and BAEL-541 README.md files * BAEL-731: Updated README.md * BAEL-680: renamed test methods * BAEL-714: Updated README.md * BAEL-737: Updated README.md * BAEL-680 and BAEL-756 README.md updates * BAEL-666: Updated README * BAEL-415: Custom Scope * BAEL-415: Custom Scope - renamed classes to reflect TenantScope --- .../org/baeldung/customscope/TenantBean.java | 16 ++++ .../TenantBeanFactoryPostProcessor.java | 13 ++++ .../customscope/TenantBeansConfig.java | 21 ++++++ .../org/baeldung/customscope/TenantScope.java | 43 +++++++++++ .../customscope/TenantScopeConfig.java | 14 ++++ .../baeldung/customscope/TenantScopeTest.java | 74 +++++++++++++++++++ 6 files changed, 181 insertions(+) create mode 100644 spring-all/src/main/java/org/baeldung/customscope/TenantBean.java create mode 100644 spring-all/src/main/java/org/baeldung/customscope/TenantBeanFactoryPostProcessor.java create mode 100644 spring-all/src/main/java/org/baeldung/customscope/TenantBeansConfig.java create mode 100644 spring-all/src/main/java/org/baeldung/customscope/TenantScope.java create mode 100644 spring-all/src/main/java/org/baeldung/customscope/TenantScopeConfig.java create mode 100644 spring-all/src/test/java/org/baeldung/customscope/TenantScopeTest.java diff --git a/spring-all/src/main/java/org/baeldung/customscope/TenantBean.java b/spring-all/src/main/java/org/baeldung/customscope/TenantBean.java new file mode 100644 index 0000000000..2d3049ebb9 --- /dev/null +++ b/spring-all/src/main/java/org/baeldung/customscope/TenantBean.java @@ -0,0 +1,16 @@ +package org.baeldung.customscope; + +public class TenantBean { + + private final String name; + + public TenantBean(String name) { + this.name = name; + } + + public void sayHello() { + System.out.println(String.format("Hello from %s of type %s", + this.name, + this.getClass().getName())); + } +} diff --git a/spring-all/src/main/java/org/baeldung/customscope/TenantBeanFactoryPostProcessor.java b/spring-all/src/main/java/org/baeldung/customscope/TenantBeanFactoryPostProcessor.java new file mode 100644 index 0000000000..2757399fa6 --- /dev/null +++ b/spring-all/src/main/java/org/baeldung/customscope/TenantBeanFactoryPostProcessor.java @@ -0,0 +1,13 @@ +package org.baeldung.customscope; + +import org.springframework.beans.BeansException; +import org.springframework.beans.factory.config.BeanFactoryPostProcessor; +import org.springframework.beans.factory.config.ConfigurableListableBeanFactory; + +public class TenantBeanFactoryPostProcessor implements BeanFactoryPostProcessor { + + @Override + public void postProcessBeanFactory(ConfigurableListableBeanFactory factory) throws BeansException { + factory.registerScope("tenant", new TenantScope()); + } +} diff --git a/spring-all/src/main/java/org/baeldung/customscope/TenantBeansConfig.java b/spring-all/src/main/java/org/baeldung/customscope/TenantBeansConfig.java new file mode 100644 index 0000000000..0e21ad9344 --- /dev/null +++ b/spring-all/src/main/java/org/baeldung/customscope/TenantBeansConfig.java @@ -0,0 +1,21 @@ +package org.baeldung.customscope; + +import org.springframework.context.annotation.Bean; +import org.springframework.context.annotation.Configuration; +import org.springframework.context.annotation.Scope; + +@Configuration +public class TenantBeansConfig { + + @Scope(scopeName = "tenant") + @Bean + public TenantBean foo() { + return new TenantBean("foo"); + } + + @Scope(scopeName = "tenant") + @Bean + public TenantBean bar() { + return new TenantBean("bar"); + } +} diff --git a/spring-all/src/main/java/org/baeldung/customscope/TenantScope.java b/spring-all/src/main/java/org/baeldung/customscope/TenantScope.java new file mode 100644 index 0000000000..062d7ee890 --- /dev/null +++ b/spring-all/src/main/java/org/baeldung/customscope/TenantScope.java @@ -0,0 +1,43 @@ +package org.baeldung.customscope; + +import java.util.Collections; +import java.util.HashMap; +import java.util.Map; + +import org.springframework.beans.factory.ObjectFactory; +import org.springframework.beans.factory.config.Scope; + +public class TenantScope implements Scope { + + private Map scopedObjects = Collections.synchronizedMap(new HashMap()); + private Map destructionCallbacks = Collections.synchronizedMap(new HashMap()); + + @Override + public Object get(String name, ObjectFactory objectFactory) { + if(!scopedObjects.containsKey(name)) { + scopedObjects.put(name, objectFactory.getObject()); + } + return scopedObjects.get(name); + } + + @Override + public Object remove(String name) { + destructionCallbacks.remove(name); + return scopedObjects.remove(name); + } + + @Override + public void registerDestructionCallback(String name, Runnable callback) { + destructionCallbacks.put(name, callback); + } + + @Override + public Object resolveContextualObject(String key) { + return null; + } + + @Override + public String getConversationId() { + return "tenant"; + } +} diff --git a/spring-all/src/main/java/org/baeldung/customscope/TenantScopeConfig.java b/spring-all/src/main/java/org/baeldung/customscope/TenantScopeConfig.java new file mode 100644 index 0000000000..d1159b0f60 --- /dev/null +++ b/spring-all/src/main/java/org/baeldung/customscope/TenantScopeConfig.java @@ -0,0 +1,14 @@ +package org.baeldung.customscope; + +import org.springframework.beans.factory.config.BeanFactoryPostProcessor; +import org.springframework.context.annotation.Bean; +import org.springframework.context.annotation.Configuration; + +@Configuration +public class TenantScopeConfig { + + @Bean + public static BeanFactoryPostProcessor beanFactoryPostProcessor() { + return new TenantBeanFactoryPostProcessor(); + } +} diff --git a/spring-all/src/test/java/org/baeldung/customscope/TenantScopeTest.java b/spring-all/src/test/java/org/baeldung/customscope/TenantScopeTest.java new file mode 100644 index 0000000000..641e57bffd --- /dev/null +++ b/spring-all/src/test/java/org/baeldung/customscope/TenantScopeTest.java @@ -0,0 +1,74 @@ +package org.baeldung.customscope; + +import static org.hamcrest.CoreMatchers.equalTo; +import static org.hamcrest.CoreMatchers.not; +import static org.junit.Assert.assertThat; +import static org.junit.Assert.assertTrue; + +import java.util.Map; + +import org.junit.Test; +import org.springframework.beans.factory.config.BeanDefinition; +import org.springframework.context.annotation.AnnotationConfigApplicationContext; + +public class TenantScopeTest { + + @Test + public final void whenRegisterScopeAndBeans_thenContextContainsFooAndBar() { + AnnotationConfigApplicationContext ctx = new AnnotationConfigApplicationContext(); + try{ + ctx.register(TenantScopeConfig.class); + ctx.register(TenantBeansConfig.class); + ctx.refresh(); + + TenantBean foo = (TenantBean) ctx.getBean("foo", TenantBean.class); + foo.sayHello(); + TenantBean bar = (TenantBean) ctx.getBean("bar", TenantBean.class); + bar.sayHello(); + Map foos = ctx.getBeansOfType(TenantBean.class); + + assertThat(foo, not(equalTo(bar))); + assertThat(foos.size(), equalTo(2)); + assertTrue(foos.containsValue(foo)); + assertTrue(foos.containsValue(bar)); + + BeanDefinition fooDefinition = ctx.getBeanDefinition("foo"); + BeanDefinition barDefinition = ctx.getBeanDefinition("bar"); + + assertThat(fooDefinition.getScope(), equalTo("tenant")); + assertThat(barDefinition.getScope(), equalTo("tenant")); + } + finally { + ctx.close(); + } + } + + @Test + public final void whenComponentScan_thenContextContainsFooAndBar() { + AnnotationConfigApplicationContext ctx = new AnnotationConfigApplicationContext(); + try{ + ctx.scan("org.baeldung.customscope"); + ctx.refresh(); + + TenantBean foo = (TenantBean) ctx.getBean("foo", TenantBean.class); + foo.sayHello(); + TenantBean bar = (TenantBean) ctx.getBean("bar", TenantBean.class); + bar.sayHello(); + Map foos = ctx.getBeansOfType(TenantBean.class); + + assertThat(foo, not(equalTo(bar))); + assertThat(foos.size(), equalTo(2)); + assertTrue(foos.containsValue(foo)); + assertTrue(foos.containsValue(bar)); + + BeanDefinition fooDefinition = ctx.getBeanDefinition("foo"); + BeanDefinition barDefinition = ctx.getBeanDefinition("bar"); + + assertThat(fooDefinition.getScope(), equalTo("tenant")); + assertThat(barDefinition.getScope(), equalTo("tenant")); + } + finally { + ctx.close(); + } + } +} From 57fe1fce37d778e8de88aefb7e1b0784777e2bbd Mon Sep 17 00:00:00 2001 From: gitterjim-I Date: Wed, 5 Apr 2017 20:40:09 +0100 Subject: [PATCH 07/56] Change test names once more (#1596) * article Bael-667 initial commit. * Switch to use logging framework for output. * Make code more concise. Refactor as suggested. * modify test method names --- .../list/flattennestedlist/FlattenNestedListTest.java | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/core-java/src/test/java/com/baeldung/list/flattennestedlist/FlattenNestedListTest.java b/core-java/src/test/java/com/baeldung/list/flattennestedlist/FlattenNestedListTest.java index 285b217156..93962e7831 100644 --- a/core-java/src/test/java/com/baeldung/list/flattennestedlist/FlattenNestedListTest.java +++ b/core-java/src/test/java/com/baeldung/list/flattennestedlist/FlattenNestedListTest.java @@ -17,7 +17,7 @@ public class FlattenNestedListTest { List> lol = asList(asList("one:one"), asList("two:one", "two:two", "two:three"), asList("three:one", "three:two", "three:three", "three:four")); @Test - public void givenNestedList_thenFlattenNestedListImperative() { + public void givenNestedList_thenFlattenImperatively() { List ls = flattenListOfListsImperatively(lol); assertNotNull(ls); @@ -27,7 +27,7 @@ public class FlattenNestedListTest { } @Test - public void givenNestedList_thenFlattenNestedListStream() { + public void givenNestedList_thenFlattenFunctionally() { List ls = flattenListOfListsStream(lol); assertNotNull(ls); From 2dfd789a4d36b3fb2d7cc8783ea42e6541d89178 Mon Sep 17 00:00:00 2001 From: KevinGilmore Date: Wed, 5 Apr 2017 17:49:18 -0500 Subject: [PATCH 08/56] Update README files and cleanup (#1597) * Add files via upload * Update pom.xml * Update RunGuice.java * Update Communication.java * Update CommunicationMode.java * Update DefaultCommunicator.java * Update EmailCommunicationMode.java * Update IMCommunicationMode.java * Update SMSCommunicationMode.java * Update MessageLogger.java * Update MessageSentLoggable.java * Update AOPModule.java * Update BasicModule.java * Update CommunicationModel.java * Update Communicator.java * Update BasicModule.java * Update RunGuice.java * Update MessageLogger.java * Update Communicator.java * Update pom.xml * BAEL-278: Updated README.md * BAEL-554: Add and update README.md files * Update pom.xml * Update pom.xml * Update pom.xml * BAEL-345: fixed assertion * BAEL-109: Updated README.md * BAEL-345: Added README.md * Reinstating reactor-core module in root-level pom * BAEL-393: Adding guide-intro module to root pom * BAEL-9: Updated README.md * BAEL-157: README.md updated * Changed project name * Update RunGuice.java Removed references to message logging and output * Update Communication.java Removed message logging-related code * BAEL-566: Updated README.md * New project name * BAEL-393: removing guice-intro directory * BAEL-393: renamed module guice-intro to guice in root pom.xml * BAEL-393 and BAEL-541 README.md files * BAEL-731: Updated README.md * BAEL-680: renamed test methods * BAEL-714: Updated README.md * BAEL-737: Updated README.md * BAEL-680 and BAEL-756 README.md updates * BAEL-666: Updated README * BAEL-415: Custom Scope * BAEL-415: Custom Scope - renamed classes to reflect TenantScope * README file updates for BAEL-723, BAEL-763, and BAEL-415 --- .../java/com/baeldung/filter/CorsFilter.java | 22 ------------------- spring-all/README.md | 1 + spring-boot/README.MD | 1 + spring-data-rest/README.md | 1 + 4 files changed, 3 insertions(+), 22 deletions(-) delete mode 100644 resteasy/src/main/java/com/baeldung/filter/CorsFilter.java diff --git a/resteasy/src/main/java/com/baeldung/filter/CorsFilter.java b/resteasy/src/main/java/com/baeldung/filter/CorsFilter.java deleted file mode 100644 index 266707fb9f..0000000000 --- a/resteasy/src/main/java/com/baeldung/filter/CorsFilter.java +++ /dev/null @@ -1,22 +0,0 @@ -package com.baeldung.filter; - -import java.io.IOException; - -import javax.ws.rs.container.ContainerRequestContext; -import javax.ws.rs.container.ContainerResponseContext; -import javax.ws.rs.container.ContainerResponseFilter; -import javax.ws.rs.ext.Provider; - -@Provider -public class CorsFilter implements ContainerResponseFilter { - - @Override - public void filter(ContainerRequestContext requestContext, ContainerResponseContext responseContext) - throws IOException { - responseContext.getHeaders().add("Access-Control-Allow-Origin", "*"); - responseContext.getHeaders().add("Access-Control-Allow-Headers", "origin, content-type, accept, authorization"); - responseContext.getHeaders().add("Access-Control-Allow-Credentials", "true"); - responseContext.getHeaders().add("Access-Control-Allow-Methods", "GET, POST, PUT, DELETE, OPTIONS, HEAD"); - } - -} diff --git a/spring-all/README.md b/spring-all/README.md index 047f1bd5f6..3493871c78 100644 --- a/spring-all/README.md +++ b/spring-all/README.md @@ -19,3 +19,4 @@ The "REST With Spring" Classes: http://bit.ly/restwithspring - [Introduction To Ehcache](http://www.baeldung.com/ehcache) - [A Guide to the Spring Task Scheduler](http://www.baeldung.com/spring-task-scheduler) - [Guide to Spring Retry](http://www.baeldung.com/spring-retry) +- [Custom Scope in Spring](http://www.baeldung.com/spring-custom-scope) diff --git a/spring-boot/README.MD b/spring-boot/README.MD index 8aa5957bad..beb780ec3c 100644 --- a/spring-boot/README.MD +++ b/spring-boot/README.MD @@ -15,4 +15,5 @@ The "REST With Spring" Classes: http://bit.ly/restwithspring - [Guide to Spring WebUtils and ServletRequestUtils](http://www.baeldung.com/spring-webutils-servletrequestutils) - [Using Custom Banners in Spring Boot](http://www.baeldung.com/spring-boot-custom-banners) - [Guide to Internationalization in Spring Boot](http://www.baeldung.com/spring-boot-internationalization) +- [Create a Custom FailureAnalyzer with Spring Boot](http://www.baeldung.com/spring-boot-failure-analyzer) diff --git a/spring-data-rest/README.md b/spring-data-rest/README.md index 241f2e3bcf..fa4a264abb 100644 --- a/spring-data-rest/README.md +++ b/spring-data-rest/README.md @@ -17,3 +17,4 @@ To view the running application, visit [http://localhost:8080](http://localhost: - [Guide to Spring Data REST Validators](http://www.baeldung.com/spring-data-rest-validators) - [Working with Relationships in Spring Data REST](http://www.baeldung.com/spring-data-rest-relationships) - [AngularJS CRUD Application with Spring Data REST](http://www.baeldung.com/angularjs-crud-with-spring-data-rest) +- [List of In-Memory Databases](http://www.baeldung.com/java-in-memory-databases) From ad0cd72dfd64ee235ebb05445106b4dd12fcb083 Mon Sep 17 00:00:00 2001 From: iaforek Date: Thu, 6 Apr 2017 01:20:04 +0100 Subject: [PATCH 09/56] BAEL-434 Spring Roo (#1589) * Code for Dependency Injection Article. * Added Java based configuration. Downloaded formatter.xml and reformatted all changed files. Manually changed tab into 4 spaces in XML configuration files. * BAEL-434 - Spring Roo project files generated by Spring Roo. No formatting applied. Added POM, java and resources folders. --- roo/pom.xml | 644 ++ .../java/com/baeldung/RooApplication.java | 23 + ...aJpaDetachableRepositoryConfiguration.java | 11 + ...ration_Roo_Jpa_Repository_Configuration.aj | 18 + .../baeldung/config/WebMvcConfiguration.java | 13 + ...figuration_Roo_ThymeleafUIConfiguration.aj | 110 + ...vcConfiguration_Roo_WebMvcConfiguration.aj | 72 + .../config/jackson/DomainModelModule.java | 11 + ...DomainModelModule_Roo_DomainModelModule.aj | 28 + .../main/java/com/baeldung/domain/Book.java | 58 + .../com/baeldung/domain/Book_Roo_Equals.aj | 41 + .../com/baeldung/domain/Book_Roo_JavaBean.aj | 100 + .../baeldung/domain/Book_Roo_Jpa_Entity.aj | 28 + .../com/baeldung/domain/Book_Roo_ToString.aj | 26 + .../baeldung/repository/BookRepository.java | 12 + .../repository/BookRepositoryCustom.java | 12 + ...ositoryCustom_Roo_Jpa_Repository_Custom.aj | 23 + .../repository/BookRepositoryImpl.java | 22 + ...kRepositoryImpl_Roo_Jpa_Repository_Impl.aj | 69 + .../BookRepository_Roo_Jpa_Repository.aj | 20 + .../com/baeldung/service/api/BookService.java | 12 + .../service/api/BookService_Roo_Service.aj | 95 + .../service/impl/BookServiceImpl.java | 12 + .../impl/BookServiceImpl_Roo_Service_Impl.aj | 177 + .../com/baeldung/web/BookDeserializer.java | 41 + ...BookDeserializer_Roo_EntityDeserializer.aj | 78 + .../java/com/baeldung/web/BookJsonMixin.java | 12 + .../BooksCollectionThymeleafController.java | 15 + ...ctionThymeleafController_Roo_Controller.aj | 35 + ...ectionThymeleafController_Roo_Thymeleaf.aj | 470 ++ .../BooksCollectionThymeleafLinkFactory.java | 11 + ...ionThymeleafLinkFactory_Roo_LinkFactory.aj | 122 + .../web/BooksItemThymeleafController.java | 15 + ...sItemThymeleafController_Roo_Controller.aj | 35 + ...ksItemThymeleafController_Roo_Thymeleaf.aj | 251 + .../web/BooksItemThymeleafLinkFactory.java | 11 + ...temThymeleafLinkFactory_Roo_LinkFactory.aj | 86 + .../java/com/baeldung/web/MainController.java | 11 + ...Controller_Roo_Thymeleaf_MainController.aj | 59 + .../web/reports/ExportingErrorException.java | 19 + .../web/reports/JasperReportsCsvExporter.java | 71 + .../web/reports/JasperReportsExporter.java | 41 + .../web/reports/JasperReportsPdfExporter.java | 71 + .../web/reports/JasperReportsXlsExporter.java | 77 + .../main/resources/application-dev.properties | 13 + roo/src/main/resources/application.properties | 8 + roo/src/main/resources/banner.txt | 9 + roo/src/main/resources/messages.properties | 146 + .../resources/static/public/css/springroo.css | 475 ++ .../resources/static/public/css/theme.css | 6914 +++++++++++++++++ .../public/fonts/fontawesome-webfont.eot | Bin 0 -> 75220 bytes .../public/fonts/fontawesome-webfont.svg | 685 ++ .../public/fonts/fontawesome-webfont.ttf | Bin 0 -> 150920 bytes .../public/fonts/fontawesome-webfont.woff | Bin 0 -> 89076 bytes .../public/fonts/fontawesome-webfont.woff2 | Bin 0 -> 70728 bytes .../fonts/glyphicons-halflings-regular.eot | Bin 0 -> 20127 bytes .../fonts/glyphicons-halflings-regular.svg | 288 + .../fonts/glyphicons-halflings-regular.ttf | Bin 0 -> 45404 bytes .../fonts/glyphicons-halflings-regular.woff | Bin 0 -> 23424 bytes .../fonts/glyphicons-halflings-regular.woff2 | Bin 0 -> 18028 bytes .../static/public/img/apple-touch-icon.png | Bin 0 -> 4723 bytes .../main/resources/static/public/img/en.png | Bin 0 -> 599 bytes .../main/resources/static/public/img/es.png | Bin 0 -> 469 bytes .../resources/static/public/img/favicon.ico | Bin 0 -> 26918 bytes .../main/resources/static/public/img/geo.png | Bin 0 -> 142350 bytes .../main/resources/static/public/img/logo.png | Bin 0 -> 1761 bytes .../static/public/img/owasp_logo.png | Bin 0 -> 4271 bytes .../static/public/img/springroo-logo.png | Bin 0 -> 25823 bytes .../static/public/js/dataTables.advanced.js | 1334 ++++ .../static/public/js/datatables-defaults.js | 29 + .../public/js/datetimepicker-defaults.js | 107 + .../static/public/js/inputmask-defaults.js | 30 + .../main/resources/static/public/js/main.js | 70 + .../static/public/js/moment-defaults.js | 88 + .../static/public/js/moment-locale-es.js | 73 + .../static/public/js/select2-defaults.js | 49 + .../static/public/js/validation-defaults.js | 233 + .../resources/templates/accessibility.html | 61 + .../resources/templates/books/create.html | 153 + .../main/resources/templates/books/edit.html | 171 + .../main/resources/templates/books/list.html | 98 + .../main/resources/templates/books/show.html | 86 + .../resources/templates/books/showInline.html | 67 + roo/src/main/resources/templates/error.html | 40 + .../resources/templates/fragments/footer.html | 51 + .../resources/templates/fragments/header.html | 21 + .../fragments/js/datatables-locale.js | 67 + .../templates/fragments/js/datatables.html | 78 + .../templates/fragments/js/select2.html | 16 + .../templates/fragments/languages.html | 33 + .../resources/templates/fragments/menu.html | 107 + .../fragments/modal-confirm-delete-batch.html | 34 + .../fragments/modal-confirm-delete.html | 35 + .../templates/fragments/modal-confirm.html | 32 + .../fragments/modal-export-empty-error.html | 20 + .../resources/templates/fragments/modal.html | 27 + .../templates/fragments/session-links.html | 46 + roo/src/main/resources/templates/index.html | 150 + .../layouts/default-layout-no-menu.html | 103 + .../templates/layouts/default-layout.html | 110 + .../layouts/default-list-layout.html | 121 + .../templates/layouts/home-layout.html | 104 + roo/src/main/resources/templates/login.html | 108 + .../templates/reports/export_default.jrxml | 59 + .../baeldung/constructordi/SpringRunner.java | 62 +- .../baeldung/constructordi/domain/Car.java | 42 +- .../java/com/baeldung/setterdi/Config.java | 35 + .../com/baeldung/setterdi/SpringRunner.java | 33 + .../com/baeldung/setterdi/domain/Car.java | 34 + .../com/baeldung/setterdi/domain/Engine.java | 22 + .../com/baeldung/setterdi/domain/Trailer.java | 11 + .../setterdi/domain/Transmission.java | 17 + .../src/main/resources/constructordi.xml | 20 + spring-core/src/main/resources/setterdi.xml | 24 + 114 files changed, 15965 insertions(+), 52 deletions(-) create mode 100644 roo/pom.xml create mode 100644 roo/src/main/java/com/baeldung/RooApplication.java create mode 100644 roo/src/main/java/com/baeldung/config/SpringDataJpaDetachableRepositoryConfiguration.java create mode 100644 roo/src/main/java/com/baeldung/config/SpringDataJpaDetachableRepositoryConfiguration_Roo_Jpa_Repository_Configuration.aj create mode 100644 roo/src/main/java/com/baeldung/config/WebMvcConfiguration.java create mode 100644 roo/src/main/java/com/baeldung/config/WebMvcConfiguration_Roo_ThymeleafUIConfiguration.aj create mode 100644 roo/src/main/java/com/baeldung/config/WebMvcConfiguration_Roo_WebMvcConfiguration.aj create mode 100644 roo/src/main/java/com/baeldung/config/jackson/DomainModelModule.java create mode 100644 roo/src/main/java/com/baeldung/config/jackson/DomainModelModule_Roo_DomainModelModule.aj create mode 100644 roo/src/main/java/com/baeldung/domain/Book.java create mode 100644 roo/src/main/java/com/baeldung/domain/Book_Roo_Equals.aj create mode 100644 roo/src/main/java/com/baeldung/domain/Book_Roo_JavaBean.aj create mode 100644 roo/src/main/java/com/baeldung/domain/Book_Roo_Jpa_Entity.aj create mode 100644 roo/src/main/java/com/baeldung/domain/Book_Roo_ToString.aj create mode 100644 roo/src/main/java/com/baeldung/repository/BookRepository.java create mode 100644 roo/src/main/java/com/baeldung/repository/BookRepositoryCustom.java create mode 100644 roo/src/main/java/com/baeldung/repository/BookRepositoryCustom_Roo_Jpa_Repository_Custom.aj create mode 100644 roo/src/main/java/com/baeldung/repository/BookRepositoryImpl.java create mode 100644 roo/src/main/java/com/baeldung/repository/BookRepositoryImpl_Roo_Jpa_Repository_Impl.aj create mode 100644 roo/src/main/java/com/baeldung/repository/BookRepository_Roo_Jpa_Repository.aj create mode 100644 roo/src/main/java/com/baeldung/service/api/BookService.java create mode 100644 roo/src/main/java/com/baeldung/service/api/BookService_Roo_Service.aj create mode 100644 roo/src/main/java/com/baeldung/service/impl/BookServiceImpl.java create mode 100644 roo/src/main/java/com/baeldung/service/impl/BookServiceImpl_Roo_Service_Impl.aj create mode 100644 roo/src/main/java/com/baeldung/web/BookDeserializer.java create mode 100644 roo/src/main/java/com/baeldung/web/BookDeserializer_Roo_EntityDeserializer.aj create mode 100644 roo/src/main/java/com/baeldung/web/BookJsonMixin.java create mode 100644 roo/src/main/java/com/baeldung/web/BooksCollectionThymeleafController.java create mode 100644 roo/src/main/java/com/baeldung/web/BooksCollectionThymeleafController_Roo_Controller.aj create mode 100644 roo/src/main/java/com/baeldung/web/BooksCollectionThymeleafController_Roo_Thymeleaf.aj create mode 100644 roo/src/main/java/com/baeldung/web/BooksCollectionThymeleafLinkFactory.java create mode 100644 roo/src/main/java/com/baeldung/web/BooksCollectionThymeleafLinkFactory_Roo_LinkFactory.aj create mode 100644 roo/src/main/java/com/baeldung/web/BooksItemThymeleafController.java create mode 100644 roo/src/main/java/com/baeldung/web/BooksItemThymeleafController_Roo_Controller.aj create mode 100644 roo/src/main/java/com/baeldung/web/BooksItemThymeleafController_Roo_Thymeleaf.aj create mode 100644 roo/src/main/java/com/baeldung/web/BooksItemThymeleafLinkFactory.java create mode 100644 roo/src/main/java/com/baeldung/web/BooksItemThymeleafLinkFactory_Roo_LinkFactory.aj create mode 100644 roo/src/main/java/com/baeldung/web/MainController.java create mode 100644 roo/src/main/java/com/baeldung/web/MainController_Roo_Thymeleaf_MainController.aj create mode 100644 roo/src/main/java/com/baeldung/web/reports/ExportingErrorException.java create mode 100644 roo/src/main/java/com/baeldung/web/reports/JasperReportsCsvExporter.java create mode 100644 roo/src/main/java/com/baeldung/web/reports/JasperReportsExporter.java create mode 100644 roo/src/main/java/com/baeldung/web/reports/JasperReportsPdfExporter.java create mode 100644 roo/src/main/java/com/baeldung/web/reports/JasperReportsXlsExporter.java create mode 100644 roo/src/main/resources/application-dev.properties create mode 100644 roo/src/main/resources/application.properties create mode 100644 roo/src/main/resources/banner.txt create mode 100644 roo/src/main/resources/messages.properties create mode 100644 roo/src/main/resources/static/public/css/springroo.css create mode 100644 roo/src/main/resources/static/public/css/theme.css create mode 100644 roo/src/main/resources/static/public/fonts/fontawesome-webfont.eot create mode 100644 roo/src/main/resources/static/public/fonts/fontawesome-webfont.svg create mode 100644 roo/src/main/resources/static/public/fonts/fontawesome-webfont.ttf create mode 100644 roo/src/main/resources/static/public/fonts/fontawesome-webfont.woff create mode 100644 roo/src/main/resources/static/public/fonts/fontawesome-webfont.woff2 create mode 100644 roo/src/main/resources/static/public/fonts/glyphicons-halflings-regular.eot create mode 100644 roo/src/main/resources/static/public/fonts/glyphicons-halflings-regular.svg create mode 100644 roo/src/main/resources/static/public/fonts/glyphicons-halflings-regular.ttf create mode 100644 roo/src/main/resources/static/public/fonts/glyphicons-halflings-regular.woff create mode 100644 roo/src/main/resources/static/public/fonts/glyphicons-halflings-regular.woff2 create mode 100644 roo/src/main/resources/static/public/img/apple-touch-icon.png create mode 100644 roo/src/main/resources/static/public/img/en.png create mode 100644 roo/src/main/resources/static/public/img/es.png create mode 100644 roo/src/main/resources/static/public/img/favicon.ico create mode 100644 roo/src/main/resources/static/public/img/geo.png create mode 100644 roo/src/main/resources/static/public/img/logo.png create mode 100644 roo/src/main/resources/static/public/img/owasp_logo.png create mode 100644 roo/src/main/resources/static/public/img/springroo-logo.png create mode 100644 roo/src/main/resources/static/public/js/dataTables.advanced.js create mode 100644 roo/src/main/resources/static/public/js/datatables-defaults.js create mode 100644 roo/src/main/resources/static/public/js/datetimepicker-defaults.js create mode 100644 roo/src/main/resources/static/public/js/inputmask-defaults.js create mode 100644 roo/src/main/resources/static/public/js/main.js create mode 100644 roo/src/main/resources/static/public/js/moment-defaults.js create mode 100644 roo/src/main/resources/static/public/js/moment-locale-es.js create mode 100644 roo/src/main/resources/static/public/js/select2-defaults.js create mode 100644 roo/src/main/resources/static/public/js/validation-defaults.js create mode 100644 roo/src/main/resources/templates/accessibility.html create mode 100644 roo/src/main/resources/templates/books/create.html create mode 100644 roo/src/main/resources/templates/books/edit.html create mode 100644 roo/src/main/resources/templates/books/list.html create mode 100644 roo/src/main/resources/templates/books/show.html create mode 100644 roo/src/main/resources/templates/books/showInline.html create mode 100644 roo/src/main/resources/templates/error.html create mode 100644 roo/src/main/resources/templates/fragments/footer.html create mode 100644 roo/src/main/resources/templates/fragments/header.html create mode 100644 roo/src/main/resources/templates/fragments/js/datatables-locale.js create mode 100644 roo/src/main/resources/templates/fragments/js/datatables.html create mode 100644 roo/src/main/resources/templates/fragments/js/select2.html create mode 100644 roo/src/main/resources/templates/fragments/languages.html create mode 100644 roo/src/main/resources/templates/fragments/menu.html create mode 100644 roo/src/main/resources/templates/fragments/modal-confirm-delete-batch.html create mode 100644 roo/src/main/resources/templates/fragments/modal-confirm-delete.html create mode 100644 roo/src/main/resources/templates/fragments/modal-confirm.html create mode 100644 roo/src/main/resources/templates/fragments/modal-export-empty-error.html create mode 100644 roo/src/main/resources/templates/fragments/modal.html create mode 100644 roo/src/main/resources/templates/fragments/session-links.html create mode 100644 roo/src/main/resources/templates/index.html create mode 100644 roo/src/main/resources/templates/layouts/default-layout-no-menu.html create mode 100644 roo/src/main/resources/templates/layouts/default-layout.html create mode 100644 roo/src/main/resources/templates/layouts/default-list-layout.html create mode 100644 roo/src/main/resources/templates/layouts/home-layout.html create mode 100644 roo/src/main/resources/templates/login.html create mode 100644 roo/src/main/resources/templates/reports/export_default.jrxml create mode 100644 spring-core/src/main/java/com/baeldung/setterdi/Config.java create mode 100644 spring-core/src/main/java/com/baeldung/setterdi/SpringRunner.java create mode 100644 spring-core/src/main/java/com/baeldung/setterdi/domain/Car.java create mode 100644 spring-core/src/main/java/com/baeldung/setterdi/domain/Engine.java create mode 100644 spring-core/src/main/java/com/baeldung/setterdi/domain/Trailer.java create mode 100644 spring-core/src/main/java/com/baeldung/setterdi/domain/Transmission.java create mode 100644 spring-core/src/main/resources/constructordi.xml create mode 100644 spring-core/src/main/resources/setterdi.xml diff --git a/roo/pom.xml b/roo/pom.xml new file mode 100644 index 0000000000..e1d69a3031 --- /dev/null +++ b/roo/pom.xml @@ -0,0 +1,644 @@ + + + + + io.spring.platform + platform-bom + Athens-RELEASE + + + 4.0.0 + com.baeldung + roo + 1.0.0.BUILD-SNAPSHOT + roo + + jar + + + 2.0.0.RC1 + 8 + UTF-8 + 1.8 + 1.5.4 + 1.4.1.RELEASE + 1.8 + 1.2.0.RC1 + 1.1.2 + 3.0.0.RELEASE + 2.0.0 + 2.0.1 + 5.0.11 + 1.0 + 3.3.6 + 1.10.12 + 1.10.11 + 1.1.2 + 1.1.2 + 2.0.2 + 2.0.2 + 1.1.2 + 1.1.2 + 1.1.2 + 2.0.0 + 2.5.4 + 4.6.2 + 1.12.3 + 3.3.1 + 1.15.0 + 2.13.0 + 4.0.3 + 0.1.0-beta.7 + 1.4.2 + 3.7.3 + 1.0.3 + + + + + + maven-snapshot-repository + Maven Snapshot Repository + https://oss.sonatype.org/content/repositories/snapshots + + false + + + true + + + + + spring-roo-repository + Spring Roo Repository + http://repo.spring.io/spring-roo + + + + + + + + + org.springframework.roo + org.springframework.roo.annotations + ${roo.version} + pom + provided + + + + io.springlets + springlets-data-jpa + ${springlets.version} + + + io.springlets + springlets-data-commons + ${springlets.version} + + + io.springlets + springlets-context + ${springlets.version} + + + org.springframework.roo + org.springframework.roo.querydsl.processor + 2.0.0.RELEASE + + + io.tracee.binding + tracee-springmvc + ${tracee.version} + + + io.springlets + springlets-boot-starter-web + ${springlets.version} + + + com.github.mxab.thymeleaf.extras + thymeleaf-extras-data-attribute + ${thymeleaf-data-dialect.version} + + + ar.com.fdvs + DynamicJasper + ${dynamicjasper.version} + + + ar.com.fdvs + DynamicJasper-core-fonts + ${dynamicjasper-fonts.version} + + + org.webjars.bower + bootstrap + ${bootstrap.version} + + + org.webjars.bower + datatables + ${datatables.version} + + + org.webjars.bower + datatables.net-bs + ${datatables-bs.version} + + + org.webjars.bower + datatables.net-buttons + ${datatables-buttons.version} + + + org.webjars.bower + datatables.net-buttons-bs + ${datatables-buttons-bs.version} + + + org.webjars.bower + datatables.net-responsive + ${datatables-responsive.version} + + + org.webjars.bower + datatables.net-responsive-bs + ${datatables-responsive-bs.version} + + + org.webjars.bower + datatables.net-select + ${datatables-select.version} + + + org.webjars.bower + datatables.net-select-bs + ${datatables-select-bs.version} + + + org.webjars.npm + jquery-datatables-checkboxes + ${datatables-checkboxes.version} + + + org.webjars.npm + jquery + + + org.webjars.npm + datatables.net + + + + + org.webjars.bower + github-com-julmot-datatables-mark-js + ${datatables-mark.version} + + + org.webjars.bower + datetimepicker + ${datetimepicker.version} + + + org.webjars.bower + font-awesome + ${fontawesome.version} + + + org.webjars.bower + jquery + ${jquery.version} + + + org.webjars + jquery.inputmask + ${jquery-inputmask.version} + + + org.webjars + jquery + + + + + org.webjars.bower + jquery-validation + ${jquery-validation.version} + + + org.webjars.bower + momentjs + ${momentjs.version} + + + org.webjars.bower + select2 + ${select2.version} + + + org.webjars.bower + select2-bootstrap-theme + ${select2-bootstrap-theme.version} + + + org.webjars + respond + ${respond.version} + + + org.webjars + html5shiv + ${html5shiv.version} + + + org.webjars.bower + ie10-viewport-bug-workaround + ${bootstrap.ie10-viewport-bug-workaround.version} + + + + + + + + org.springframework.boot + spring-boot-starter + + + org.springframework.boot + spring-boot-starter-test + test + + + + org.springframework.boot + spring-boot-devtools + true + + + + + org.springframework.roo + org.springframework.roo.annotations + pom + + + + + org.aspectj + aspectjrt + + + + + org.apache.commons + commons-lang3 + + + + + org.assertj + assertj-core + + + + + + org.springframework.boot + spring-boot-starter-data-jpa + + + org.springframework.boot + spring-boot-starter-jdbc + provided + + + org.hsqldb + hsqldb + provided + + + io.springlets + springlets-data-jpa + + + io.springlets + springlets-data-commons + + + io.springlets + springlets-context + + + javax.validation + validation-api + + + com.querydsl + querydsl-jpa + + + org.springframework.roo + org.springframework.roo.querydsl.processor + + + org.springframework.boot + spring-boot-starter-web + + + joda-time + joda-time + + + io.tracee.binding + tracee-springmvc + + + io.springlets + springlets-boot-starter-web + + + org.springframework.boot + spring-boot-starter-thymeleaf + + + nz.net.ultraq.thymeleaf + thymeleaf-layout-dialect + + + com.github.mxab.thymeleaf.extras + thymeleaf-extras-data-attribute + + + ar.com.fdvs + DynamicJasper + + + ar.com.fdvs + DynamicJasper-core-fonts + + + org.apache.poi + poi + + + org.springframework + spring-context-support + + + org.webjars + webjars-locator + + + org.webjars.bower + bootstrap + + + org.webjars.bower + datatables + + + org.webjars.bower + datatables.net-bs + + + org.webjars.bower + datatables.net-buttons + + + org.webjars.bower + datatables.net-buttons-bs + + + org.webjars.bower + datatables.net-responsive + + + org.webjars.bower + datatables.net-responsive-bs + + + org.webjars.bower + datatables.net-select + + + org.webjars.bower + datatables.net-select-bs + + + org.webjars.npm + jquery-datatables-checkboxes + + + org.webjars.bower + github-com-julmot-datatables-mark-js + + + org.webjars.bower + datetimepicker + + + org.webjars.bower + font-awesome + + + org.webjars.bower + jquery + + + org.webjars + jquery.inputmask + + + org.webjars.bower + jquery-validation + + + org.webjars.bower + momentjs + + + org.webjars.bower + select2 + + + org.webjars.bower + select2-bootstrap-theme + + + org.webjars + respond + + + org.webjars + html5shiv + + + org.webjars.bower + ie10-viewport-bug-workaround + + + + + + + + + org.springframework.boot + spring-boot-maven-plugin + + ${start-class} + exec + true + + + + + org.apache.maven.plugins + maven-compiler-plugin + + ${java.version} + ${java.version} + ${project.build.sourceEncoding} + false + + + + + org.codehaus.mojo + aspectj-maven-plugin + ${aspectj.plugin.version} + + ${java.version} + ${java.version} + ignore + ${java.version} + UTF-8 + + + + process-sources + + compile + test-compile + + + + + + org.aspectj + aspectjtools + ${aspectj.version} + + + + + + org.apache.maven.plugins + maven-surefire-plugin + + + **/*_Roo_* + + + + + + org.apache.maven.plugins + maven-javadoc-plugin + + + --base-dir ${project.basedir} + --attribute + "projectName=${project.name}" + --attribute + "projectVersion=${project.version}" + --attribute "doctype=book" + + + ${project.groupId}:* + + org.asciidoctor.Asciidoclet + + org.asciidoctor + asciidoclet + ${asciidoclet.version} + + true + true + + http://docs.oracle.com/javase/${java.version}/docs/api/ + http://docs.oracle.com/javaee/${java.product.version}/api/ + http://docs.spring.io/spring-framework/docs/${spring.version}/javadoc-api/ + http://docs.spring.io/spring-boot/docs/${spring-boot.version}/api/ + http://fasterxml.github.io/jackson-core/javadoc/2.8/ + http://fasterxml.github.io/jackson-databind/javadoc/2.8 + http://cxf.apache.org/javadoc/latest-3.1.x/ + + src/main/java/overview.adoc + private + ${java.version} + + + + com.mysema.maven + apt-maven-plugin + 1.1.3 + + + + process + + + target/generated-sources/java + + org.springframework.roo.querydsl.processor.RooAnnotationProcessor + + + + + + + + com.querydsl + querydsl-apt + ${querydsl.version} + + + + + + + + + org.springframework.boot + spring-boot-maven-plugin + + + org.apache.maven.plugins + maven-compiler-plugin + + + org.codehaus.mojo + aspectj-maven-plugin + + + org.apache.maven.plugins + maven-surefire-plugin + + + org.apache.maven.plugins + maven-javadoc-plugin + + + com.mysema.maven + apt-maven-plugin + + + + + diff --git a/roo/src/main/java/com/baeldung/RooApplication.java b/roo/src/main/java/com/baeldung/RooApplication.java new file mode 100644 index 0000000000..96f5a4ccc2 --- /dev/null +++ b/roo/src/main/java/com/baeldung/RooApplication.java @@ -0,0 +1,23 @@ +package com.baeldung; + +import org.springframework.boot.SpringApplication; +import org.springframework.boot.autoconfigure.SpringBootApplication; + +/** + * = RooApplication + * + * TODO Auto-generated class documentation + * + */ +@SpringBootApplication +public class RooApplication { + + /** + * TODO Auto-generated method documentation + * + * @param args + */ + public static void main(String[] args) { + SpringApplication.run(RooApplication.class, args); + } +} \ No newline at end of file diff --git a/roo/src/main/java/com/baeldung/config/SpringDataJpaDetachableRepositoryConfiguration.java b/roo/src/main/java/com/baeldung/config/SpringDataJpaDetachableRepositoryConfiguration.java new file mode 100644 index 0000000000..98916a9412 --- /dev/null +++ b/roo/src/main/java/com/baeldung/config/SpringDataJpaDetachableRepositoryConfiguration.java @@ -0,0 +1,11 @@ +package com.baeldung.config; +import org.springframework.roo.addon.layers.repository.jpa.annotations.RooJpaRepositoryConfiguration; + +/** + * = SpringDataJpaDetachableRepositoryConfiguration + TODO Auto-generated class documentation + * + */ +@RooJpaRepositoryConfiguration +public class SpringDataJpaDetachableRepositoryConfiguration { +} diff --git a/roo/src/main/java/com/baeldung/config/SpringDataJpaDetachableRepositoryConfiguration_Roo_Jpa_Repository_Configuration.aj b/roo/src/main/java/com/baeldung/config/SpringDataJpaDetachableRepositoryConfiguration_Roo_Jpa_Repository_Configuration.aj new file mode 100644 index 0000000000..7f54997ddb --- /dev/null +++ b/roo/src/main/java/com/baeldung/config/SpringDataJpaDetachableRepositoryConfiguration_Roo_Jpa_Repository_Configuration.aj @@ -0,0 +1,18 @@ +// WARNING: DO NOT EDIT THIS FILE. THIS FILE IS MANAGED BY SPRING ROO. +// You may push code into the target .java compilation unit if you wish to edit any member(s). + +package com.baeldung.config; + +import com.baeldung.RooApplication; +import com.baeldung.config.SpringDataJpaDetachableRepositoryConfiguration; +import io.springlets.data.jpa.repository.support.DetachableJpaRepositoryImpl; +import org.springframework.context.annotation.Configuration; +import org.springframework.data.jpa.repository.config.EnableJpaRepositories; + +privileged aspect SpringDataJpaDetachableRepositoryConfiguration_Roo_Jpa_Repository_Configuration { + + declare @type: SpringDataJpaDetachableRepositoryConfiguration: @Configuration; + + declare @type: SpringDataJpaDetachableRepositoryConfiguration: @EnableJpaRepositories(repositoryBaseClass = DetachableJpaRepositoryImpl.class, basePackageClasses = RooApplication.class); + +} diff --git a/roo/src/main/java/com/baeldung/config/WebMvcConfiguration.java b/roo/src/main/java/com/baeldung/config/WebMvcConfiguration.java new file mode 100644 index 0000000000..5276300091 --- /dev/null +++ b/roo/src/main/java/com/baeldung/config/WebMvcConfiguration.java @@ -0,0 +1,13 @@ +package com.baeldung.config; +import org.springframework.roo.addon.web.mvc.controller.annotations.config.RooWebMvcConfiguration; +import org.springframework.roo.addon.web.mvc.thymeleaf.annotations.RooWebMvcThymeleafUIConfiguration; + +/** + * = WebMvcConfiguration + TODO Auto-generated class documentation + * + */ +@RooWebMvcConfiguration(defaultLanguage = "en") +@RooWebMvcThymeleafUIConfiguration +public class WebMvcConfiguration { +} diff --git a/roo/src/main/java/com/baeldung/config/WebMvcConfiguration_Roo_ThymeleafUIConfiguration.aj b/roo/src/main/java/com/baeldung/config/WebMvcConfiguration_Roo_ThymeleafUIConfiguration.aj new file mode 100644 index 0000000000..c21cb6b68c --- /dev/null +++ b/roo/src/main/java/com/baeldung/config/WebMvcConfiguration_Roo_ThymeleafUIConfiguration.aj @@ -0,0 +1,110 @@ +// WARNING: DO NOT EDIT THIS FILE. THIS FILE IS MANAGED BY SPRING ROO. +// You may push code into the target .java compilation unit if you wish to edit any member(s). + +package com.baeldung.config; + +import com.baeldung.config.WebMvcConfiguration; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.boot.autoconfigure.thymeleaf.ThymeleafProperties; +import org.springframework.context.ApplicationContext; +import org.springframework.context.ApplicationContextAware; +import org.springframework.context.annotation.Bean; +import org.thymeleaf.TemplateEngine; +import org.thymeleaf.spring4.templateresolver.SpringResourceTemplateResolver; +import org.thymeleaf.spring4.view.ThymeleafViewResolver; +import org.thymeleaf.templatemode.TemplateMode; + +privileged aspect WebMvcConfiguration_Roo_ThymeleafUIConfiguration { + + declare parents: WebMvcConfiguration implements ApplicationContextAware; + + /** + * TODO Auto-generated attribute documentation + * + */ + @Autowired + private ThymeleafProperties WebMvcConfiguration.thymeleafProperties; + + /** + * TODO Auto-generated attribute documentation + * + */ + @Autowired + private TemplateEngine WebMvcConfiguration.templateEngine; + + /** + * TODO Auto-generated attribute documentation + * + */ + private ApplicationContext WebMvcConfiguration.applicationContext; + + /** + * TODO Auto-generated method documentation + * + * @return ThymeleafProperties + */ + public ThymeleafProperties WebMvcConfiguration.getThymeleafProperties() { + return thymeleafProperties; + } + + /** + * TODO Auto-generated method documentation + * + * @return TemplateEngine + */ + public TemplateEngine WebMvcConfiguration.getTemplateEngine() { + return templateEngine; + } + + /** + * TODO Auto-generated method documentation + * + * @return ApplicationContext + */ + public ApplicationContext WebMvcConfiguration.getApplicationContext() { + return applicationContext; + } + + /** + * TODO Auto-generated method documentation + * + * @param applicationContext + */ + public void WebMvcConfiguration.setApplicationContext(ApplicationContext applicationContext) { + this.applicationContext = applicationContext; + } + + /** + * TODO Auto-generated method documentation + * + * @return ThymeleafViewResolver + */ + @Bean + public ThymeleafViewResolver WebMvcConfiguration.javascriptThymeleafViewResolver() { + ThymeleafViewResolver resolver = new ThymeleafViewResolver(); + resolver.setTemplateEngine(getTemplateEngine()); + resolver.setCharacterEncoding("UTF-8"); + resolver.setContentType("application/javascript"); + resolver.setViewNames(new String[] {"*.js"}); + resolver.setCache(getThymeleafProperties().isCache()); + return resolver; + } + + /** + * TODO Auto-generated method documentation + * + * @return SpringResourceTemplateResolver + */ + @Bean + public SpringResourceTemplateResolver WebMvcConfiguration.javascriptTemplateResolver() { + SpringResourceTemplateResolver resolver = new SpringResourceTemplateResolver(); + resolver.setApplicationContext(getApplicationContext()); + resolver.setPrefix("classpath:/templates/fragments/js/"); + resolver.setTemplateMode(TemplateMode.JAVASCRIPT); + resolver.setCharacterEncoding("UTF-8"); + resolver.setCheckExistence(true); + resolver.setCacheable(getThymeleafProperties().isCache()); + return resolver; + } + +} diff --git a/roo/src/main/java/com/baeldung/config/WebMvcConfiguration_Roo_WebMvcConfiguration.aj b/roo/src/main/java/com/baeldung/config/WebMvcConfiguration_Roo_WebMvcConfiguration.aj new file mode 100644 index 0000000000..8031c83ca3 --- /dev/null +++ b/roo/src/main/java/com/baeldung/config/WebMvcConfiguration_Roo_WebMvcConfiguration.aj @@ -0,0 +1,72 @@ +// WARNING: DO NOT EDIT THIS FILE. THIS FILE IS MANAGED BY SPRING ROO. +// You may push code into the target .java compilation unit if you wish to edit any member(s). + +package com.baeldung.config; + +import com.baeldung.config.WebMvcConfiguration; +import io.tracee.binding.springmvc.TraceeInterceptor; +import java.lang.Override; +import java.util.Locale; +import org.springframework.context.annotation.Bean; +import org.springframework.context.annotation.Configuration; +import org.springframework.context.annotation.Primary; +import org.springframework.validation.beanvalidation.LocalValidatorFactoryBean; +import org.springframework.web.servlet.LocaleResolver; +import org.springframework.web.servlet.config.annotation.InterceptorRegistry; +import org.springframework.web.servlet.config.annotation.WebMvcConfigurerAdapter; +import org.springframework.web.servlet.i18n.LocaleChangeInterceptor; +import org.springframework.web.servlet.i18n.SessionLocaleResolver; + +privileged aspect WebMvcConfiguration_Roo_WebMvcConfiguration { + + declare parents: WebMvcConfiguration extends WebMvcConfigurerAdapter; + + declare @type: WebMvcConfiguration: @Configuration; + + /** + * TODO Auto-generated method documentation + * + * @return LocalValidatorFactoryBean + */ + @Primary + @Bean + public LocalValidatorFactoryBean WebMvcConfiguration.validator() { + return new LocalValidatorFactoryBean(); + } + + /** + * TODO Auto-generated method documentation + * + * @return LocaleResolver + */ + @Bean + public LocaleResolver WebMvcConfiguration.localeResolver() { + SessionLocaleResolver localeResolver = new SessionLocaleResolver(); + localeResolver.setDefaultLocale(new Locale("en")); + return localeResolver; + } + + /** + * TODO Auto-generated method documentation + * + * @return LocaleChangeInterceptor + */ + @Bean + public LocaleChangeInterceptor WebMvcConfiguration.localeChangeInterceptor() { + LocaleChangeInterceptor localeChangeInterceptor = new LocaleChangeInterceptor(); + localeChangeInterceptor.setParamName("lang"); + return localeChangeInterceptor; + } + + /** + * TODO Auto-generated method documentation + * + * @param registry + */ + @Override + public void WebMvcConfiguration.addInterceptors(InterceptorRegistry registry) { + registry.addInterceptor(localeChangeInterceptor()); + registry.addInterceptor(new TraceeInterceptor()); + } + +} diff --git a/roo/src/main/java/com/baeldung/config/jackson/DomainModelModule.java b/roo/src/main/java/com/baeldung/config/jackson/DomainModelModule.java new file mode 100644 index 0000000000..2a66a48846 --- /dev/null +++ b/roo/src/main/java/com/baeldung/config/jackson/DomainModelModule.java @@ -0,0 +1,11 @@ +package com.baeldung.config.jackson; +import org.springframework.roo.addon.web.mvc.controller.annotations.config.RooDomainModelModule; + +/** + * = DomainModelModule + TODO Auto-generated class documentation + * + */ +@RooDomainModelModule +public class DomainModelModule { +} diff --git a/roo/src/main/java/com/baeldung/config/jackson/DomainModelModule_Roo_DomainModelModule.aj b/roo/src/main/java/com/baeldung/config/jackson/DomainModelModule_Roo_DomainModelModule.aj new file mode 100644 index 0000000000..4683a3fe2d --- /dev/null +++ b/roo/src/main/java/com/baeldung/config/jackson/DomainModelModule_Roo_DomainModelModule.aj @@ -0,0 +1,28 @@ +// WARNING: DO NOT EDIT THIS FILE. THIS FILE IS MANAGED BY SPRING ROO. +// You may push code into the target .java compilation unit if you wish to edit any member(s). + +package com.baeldung.config.jackson; + +import com.baeldung.config.jackson.DomainModelModule; +import com.baeldung.domain.Book; +import com.baeldung.web.BookJsonMixin; +import com.fasterxml.jackson.databind.module.SimpleModule; +import org.springframework.boot.jackson.JsonComponent; + +privileged aspect DomainModelModule_Roo_DomainModelModule { + + declare parents: DomainModelModule extends SimpleModule; + + declare @type: DomainModelModule: @JsonComponent; + + /** + * TODO Auto-generated constructor documentation + * + */ + public DomainModelModule.new() { + // Mixin registration + + setMixInAnnotation(Book.class, BookJsonMixin.class); + } + +} diff --git a/roo/src/main/java/com/baeldung/domain/Book.java b/roo/src/main/java/com/baeldung/domain/Book.java new file mode 100644 index 0000000000..99e7b894e6 --- /dev/null +++ b/roo/src/main/java/com/baeldung/domain/Book.java @@ -0,0 +1,58 @@ +package com.baeldung.domain; +import org.springframework.roo.addon.javabean.annotations.RooEquals; +import org.springframework.roo.addon.javabean.annotations.RooJavaBean; +import org.springframework.roo.addon.javabean.annotations.RooToString; +import org.springframework.roo.addon.jpa.annotations.entity.RooJpaEntity; +import javax.persistence.GeneratedValue; +import javax.persistence.GenerationType; +import javax.persistence.Id; +import javax.persistence.Version; +import javax.validation.constraints.NotNull; + +/** + * = Book + TODO Auto-generated class documentation + * + */ +@RooJavaBean +@RooToString +@RooJpaEntity +@RooEquals(isJpaEntity = true) +public class Book { + + /** + * TODO Auto-generated attribute documentation + * + */ + @Id + @GeneratedValue(strategy = GenerationType.AUTO) + private Long id; + + /** + * TODO Auto-generated attribute documentation + * + */ + @Version + private Integer version; + + /** + * TODO Auto-generated attribute documentation + * + */ + @NotNull + private String title; + + /** + * TODO Auto-generated attribute documentation + * + */ + @NotNull + private String author; + + /** + * TODO Auto-generated attribute documentation + * + */ + @NotNull + private String isbn; +} diff --git a/roo/src/main/java/com/baeldung/domain/Book_Roo_Equals.aj b/roo/src/main/java/com/baeldung/domain/Book_Roo_Equals.aj new file mode 100644 index 0000000000..51d6069eb0 --- /dev/null +++ b/roo/src/main/java/com/baeldung/domain/Book_Roo_Equals.aj @@ -0,0 +1,41 @@ +// WARNING: DO NOT EDIT THIS FILE. THIS FILE IS MANAGED BY SPRING ROO. +// You may push code into the target .java compilation unit if you wish to edit any member(s). + +package com.baeldung.domain; + +import com.baeldung.domain.Book; +import java.util.Objects; + +privileged aspect Book_Roo_Equals { + + /** + * This `equals` implementation is specific for JPA entities and uses + * the entity identifier for it, following the article in + * https://vladmihalcea.com/2016/06/06/how-to-implement-equals-and-hashcode-using-the-jpa-entity-identifier/ + * + * @param obj + * @return Boolean + */ + public boolean Book.equals(Object obj) { + if (this == obj) { + return true; + } + // instanceof is false if the instance is null + if (!(obj instanceof Book)) { + return false; + } + return getId() != null && Objects.equals(getId(), ((Book) obj).getId()); + } + + /** + * This `hashCode` implementation is specific for JPA entities and uses a fixed `int` value to be able + * to identify the entity in collections after a new id is assigned to the entity, following the article in + * https://vladmihalcea.com/2016/06/06/how-to-implement-equals-and-hashcode-using-the-jpa-entity-identifier/ + * + * @return Integer + */ + public int Book.hashCode() { + return 31; + } + +} diff --git a/roo/src/main/java/com/baeldung/domain/Book_Roo_JavaBean.aj b/roo/src/main/java/com/baeldung/domain/Book_Roo_JavaBean.aj new file mode 100644 index 0000000000..3ea375ce12 --- /dev/null +++ b/roo/src/main/java/com/baeldung/domain/Book_Roo_JavaBean.aj @@ -0,0 +1,100 @@ +// WARNING: DO NOT EDIT THIS FILE. THIS FILE IS MANAGED BY SPRING ROO. +// You may push code into the target .java compilation unit if you wish to edit any member(s). + +package com.baeldung.domain; + +import com.baeldung.domain.Book; + +privileged aspect Book_Roo_JavaBean { + + /** + * TODO Auto-generated method documentation + * + * @return Long + */ + public Long Book.getId() { + return this.id; + } + + /** + * TODO Auto-generated method documentation + * + * @param id + */ + public void Book.setId(Long id) { + this.id = id; + } + + /** + * TODO Auto-generated method documentation + * + * @return Integer + */ + public Integer Book.getVersion() { + return this.version; + } + + /** + * TODO Auto-generated method documentation + * + * @param version + */ + public void Book.setVersion(Integer version) { + this.version = version; + } + + /** + * TODO Auto-generated method documentation + * + * @return String + */ + public String Book.getTitle() { + return this.title; + } + + /** + * TODO Auto-generated method documentation + * + * @param title + */ + public void Book.setTitle(String title) { + this.title = title; + } + + /** + * TODO Auto-generated method documentation + * + * @return String + */ + public String Book.getAuthor() { + return this.author; + } + + /** + * TODO Auto-generated method documentation + * + * @param author + */ + public void Book.setAuthor(String author) { + this.author = author; + } + + /** + * TODO Auto-generated method documentation + * + * @return String + */ + public String Book.getIsbn() { + return this.isbn; + } + + /** + * TODO Auto-generated method documentation + * + * @param isbn + */ + public void Book.setIsbn(String isbn) { + this.isbn = isbn; + } + +} diff --git a/roo/src/main/java/com/baeldung/domain/Book_Roo_Jpa_Entity.aj b/roo/src/main/java/com/baeldung/domain/Book_Roo_Jpa_Entity.aj new file mode 100644 index 0000000000..739a00e058 --- /dev/null +++ b/roo/src/main/java/com/baeldung/domain/Book_Roo_Jpa_Entity.aj @@ -0,0 +1,28 @@ +// WARNING: DO NOT EDIT THIS FILE. THIS FILE IS MANAGED BY SPRING ROO. +// You may push code into the target .java compilation unit if you wish to edit any member(s). + +package com.baeldung.domain; + +import com.baeldung.domain.Book; +import io.springlets.format.EntityFormat; +import javax.persistence.Entity; + +privileged aspect Book_Roo_Jpa_Entity { + + declare @type: Book: @Entity; + + declare @type: Book: @EntityFormat; + + /** + * TODO Auto-generated attribute documentation + * + */ + public static final String Book.ITERABLE_TO_ADD_CANT_BE_NULL_MESSAGE = "The given Iterable of items to add can't be null!"; + + /** + * TODO Auto-generated attribute documentation + * + */ + public static final String Book.ITERABLE_TO_REMOVE_CANT_BE_NULL_MESSAGE = "The given Iterable of items to add can't be null!"; + +} diff --git a/roo/src/main/java/com/baeldung/domain/Book_Roo_ToString.aj b/roo/src/main/java/com/baeldung/domain/Book_Roo_ToString.aj new file mode 100644 index 0000000000..69083eaf9e --- /dev/null +++ b/roo/src/main/java/com/baeldung/domain/Book_Roo_ToString.aj @@ -0,0 +1,26 @@ +// WARNING: DO NOT EDIT THIS FILE. THIS FILE IS MANAGED BY SPRING ROO. +// You may push code into the target .java compilation unit if you wish to edit any member(s). + +package com.baeldung.domain; + +import com.baeldung.domain.Book; + +privileged aspect Book_Roo_ToString { + + /** + * TODO Auto-generated method documentation + * + * @return String + */ + public String Book.toString() { + return "Book {" + + "id='" + id + '\'' + + ", version='" + version + '\'' + + ", title='" + title + '\'' + + ", author='" + author + '\'' + + ", isbn='" + isbn + '\'' + + ", ITERABLE_TO_ADD_CANT_BE_NULL_MESSAGE='" + ITERABLE_TO_ADD_CANT_BE_NULL_MESSAGE + '\'' + + ", ITERABLE_TO_REMOVE_CANT_BE_NULL_MESSAGE='" + ITERABLE_TO_REMOVE_CANT_BE_NULL_MESSAGE + '\'' + "}" + super.toString(); + } + +} diff --git a/roo/src/main/java/com/baeldung/repository/BookRepository.java b/roo/src/main/java/com/baeldung/repository/BookRepository.java new file mode 100644 index 0000000000..78567c1c92 --- /dev/null +++ b/roo/src/main/java/com/baeldung/repository/BookRepository.java @@ -0,0 +1,12 @@ +package com.baeldung.repository; +import com.baeldung.domain.Book; +import org.springframework.roo.addon.layers.repository.jpa.annotations.RooJpaRepository; + +/** + * = BookRepository + TODO Auto-generated class documentation + * + */ +@RooJpaRepository(entity = Book.class) +public interface BookRepository { +} diff --git a/roo/src/main/java/com/baeldung/repository/BookRepositoryCustom.java b/roo/src/main/java/com/baeldung/repository/BookRepositoryCustom.java new file mode 100644 index 0000000000..44469e31b6 --- /dev/null +++ b/roo/src/main/java/com/baeldung/repository/BookRepositoryCustom.java @@ -0,0 +1,12 @@ +package com.baeldung.repository; +import com.baeldung.domain.Book; +import org.springframework.roo.addon.layers.repository.jpa.annotations.RooJpaRepositoryCustom; + +/** + * = BookRepositoryCustom + TODO Auto-generated class documentation + * + */ +@RooJpaRepositoryCustom(entity = Book.class) +public interface BookRepositoryCustom { +} diff --git a/roo/src/main/java/com/baeldung/repository/BookRepositoryCustom_Roo_Jpa_Repository_Custom.aj b/roo/src/main/java/com/baeldung/repository/BookRepositoryCustom_Roo_Jpa_Repository_Custom.aj new file mode 100644 index 0000000000..7cb44f84a1 --- /dev/null +++ b/roo/src/main/java/com/baeldung/repository/BookRepositoryCustom_Roo_Jpa_Repository_Custom.aj @@ -0,0 +1,23 @@ +// WARNING: DO NOT EDIT THIS FILE. THIS FILE IS MANAGED BY SPRING ROO. +// You may push code into the target .java compilation unit if you wish to edit any member(s). + +package com.baeldung.repository; + +import com.baeldung.domain.Book; +import com.baeldung.repository.BookRepositoryCustom; +import io.springlets.data.domain.GlobalSearch; +import org.springframework.data.domain.Page; +import org.springframework.data.domain.Pageable; + +privileged aspect BookRepositoryCustom_Roo_Jpa_Repository_Custom { + + /** + * TODO Auto-generated method documentation + * + * @param globalSearch + * @param pageable + * @return Page + */ + public abstract Page BookRepositoryCustom.findAll(GlobalSearch globalSearch, Pageable pageable); + +} diff --git a/roo/src/main/java/com/baeldung/repository/BookRepositoryImpl.java b/roo/src/main/java/com/baeldung/repository/BookRepositoryImpl.java new file mode 100644 index 0000000000..e59ff8ab0e --- /dev/null +++ b/roo/src/main/java/com/baeldung/repository/BookRepositoryImpl.java @@ -0,0 +1,22 @@ +package com.baeldung.repository; + +import io.springlets.data.jpa.repository.support.QueryDslRepositorySupportExt; +import org.springframework.roo.addon.layers.repository.jpa.annotations.RooJpaRepositoryCustomImpl; +import com.baeldung.domain.Book; + +/** + * = BookRepositoryImpl + * + * TODO Auto-generated class documentation + * + */ +@RooJpaRepositoryCustomImpl(repository = BookRepositoryCustom.class) +public class BookRepositoryImpl extends QueryDslRepositorySupportExt { + + /** + * TODO Auto-generated constructor documentation + */ + BookRepositoryImpl() { + super(Book.class); + } +} \ No newline at end of file diff --git a/roo/src/main/java/com/baeldung/repository/BookRepositoryImpl_Roo_Jpa_Repository_Impl.aj b/roo/src/main/java/com/baeldung/repository/BookRepositoryImpl_Roo_Jpa_Repository_Impl.aj new file mode 100644 index 0000000000..9e3db3e1f4 --- /dev/null +++ b/roo/src/main/java/com/baeldung/repository/BookRepositoryImpl_Roo_Jpa_Repository_Impl.aj @@ -0,0 +1,69 @@ +// WARNING: DO NOT EDIT THIS FILE. THIS FILE IS MANAGED BY SPRING ROO. +// You may push code into the target .java compilation unit if you wish to edit any member(s). + +package com.baeldung.repository; + +import com.baeldung.domain.Book; +import com.baeldung.domain.QBook; +import com.baeldung.repository.BookRepositoryCustom; +import com.baeldung.repository.BookRepositoryImpl; +import com.querydsl.core.types.Path; +import com.querydsl.jpa.JPQLQuery; +import io.springlets.data.domain.GlobalSearch; +import io.springlets.data.jpa.repository.support.QueryDslRepositorySupportExt.AttributeMappingBuilder; +import org.springframework.data.domain.Page; +import org.springframework.data.domain.Pageable; +import org.springframework.transaction.annotation.Transactional; + +privileged aspect BookRepositoryImpl_Roo_Jpa_Repository_Impl { + + declare parents: BookRepositoryImpl implements BookRepositoryCustom; + + declare @type: BookRepositoryImpl: @Transactional(readOnly = true); + + /** + * TODO Auto-generated attribute documentation + * + */ + public static final String BookRepositoryImpl.TITLE = "title"; + + /** + * TODO Auto-generated attribute documentation + * + */ + public static final String BookRepositoryImpl.AUTHOR = "author"; + + /** + * TODO Auto-generated attribute documentation + * + */ + public static final String BookRepositoryImpl.ISBN = "isbn"; + + /** + * TODO Auto-generated method documentation + * + * @param globalSearch + * @param pageable + * @return Page + */ + public Page BookRepositoryImpl.findAll(GlobalSearch globalSearch, Pageable pageable) { + + QBook book = QBook.book; + + JPQLQuery query = from(book); + + Path[] paths = new Path[] {book.title,book.author,book.isbn}; + applyGlobalSearch(globalSearch, query, paths); + + AttributeMappingBuilder mapping = buildMapper() + .map(TITLE, book.title) + .map(AUTHOR, book.author) + .map(ISBN, book.isbn); + + applyPagination(pageable, query, mapping); + applyOrderById(query); + + return loadPage(query, pageable, book); + } + +} diff --git a/roo/src/main/java/com/baeldung/repository/BookRepository_Roo_Jpa_Repository.aj b/roo/src/main/java/com/baeldung/repository/BookRepository_Roo_Jpa_Repository.aj new file mode 100644 index 0000000000..2f57062054 --- /dev/null +++ b/roo/src/main/java/com/baeldung/repository/BookRepository_Roo_Jpa_Repository.aj @@ -0,0 +1,20 @@ +// WARNING: DO NOT EDIT THIS FILE. THIS FILE IS MANAGED BY SPRING ROO. +// You may push code into the target .java compilation unit if you wish to edit any member(s). + +package com.baeldung.repository; + +import com.baeldung.domain.Book; +import com.baeldung.repository.BookRepository; +import com.baeldung.repository.BookRepositoryCustom; +import io.springlets.data.jpa.repository.DetachableJpaRepository; +import org.springframework.transaction.annotation.Transactional; + +privileged aspect BookRepository_Roo_Jpa_Repository { + + declare parents: BookRepository extends DetachableJpaRepository; + + declare parents: BookRepository extends BookRepositoryCustom; + + declare @type: BookRepository: @Transactional(readOnly = true); + +} diff --git a/roo/src/main/java/com/baeldung/service/api/BookService.java b/roo/src/main/java/com/baeldung/service/api/BookService.java new file mode 100644 index 0000000000..212ee1cdfc --- /dev/null +++ b/roo/src/main/java/com/baeldung/service/api/BookService.java @@ -0,0 +1,12 @@ +package com.baeldung.service.api; +import com.baeldung.domain.Book; +import org.springframework.roo.addon.layers.service.annotations.RooService; + +/** + * = BookService + TODO Auto-generated class documentation + * + */ +@RooService(entity = Book.class) +public interface BookService { +} diff --git a/roo/src/main/java/com/baeldung/service/api/BookService_Roo_Service.aj b/roo/src/main/java/com/baeldung/service/api/BookService_Roo_Service.aj new file mode 100644 index 0000000000..d5698ffb37 --- /dev/null +++ b/roo/src/main/java/com/baeldung/service/api/BookService_Roo_Service.aj @@ -0,0 +1,95 @@ +// WARNING: DO NOT EDIT THIS FILE. THIS FILE IS MANAGED BY SPRING ROO. +// You may push code into the target .java compilation unit if you wish to edit any member(s). + +package com.baeldung.service.api; + +import com.baeldung.domain.Book; +import com.baeldung.service.api.BookService; +import io.springlets.data.domain.GlobalSearch; +import io.springlets.format.EntityResolver; +import java.util.List; +import org.springframework.data.domain.Page; +import org.springframework.data.domain.Pageable; + +privileged aspect BookService_Roo_Service { + + declare parents: BookService extends EntityResolver; + + /** + * TODO Auto-generated method documentation + * + * @param id + * @return Book + */ + public abstract Book BookService.findOne(Long id); + + /** + * TODO Auto-generated method documentation + * + * @param book + */ + public abstract void BookService.delete(Book book); + + /** + * TODO Auto-generated method documentation + * + * @param entities + * @return List + */ + public abstract List BookService.save(Iterable entities); + + /** + * TODO Auto-generated method documentation + * + * @param ids + */ + public abstract void BookService.delete(Iterable ids); + + /** + * TODO Auto-generated method documentation + * + * @param entity + * @return Book + */ + public abstract Book BookService.save(Book entity); + + /** + * TODO Auto-generated method documentation + * + * @param id + * @return Book + */ + public abstract Book BookService.findOneForUpdate(Long id); + + /** + * TODO Auto-generated method documentation + * + * @param ids + * @return List + */ + public abstract List BookService.findAll(Iterable ids); + + /** + * TODO Auto-generated method documentation + * + * @return List + */ + public abstract List BookService.findAll(); + + /** + * TODO Auto-generated method documentation + * + * @return Long + */ + public abstract long BookService.count(); + + /** + * TODO Auto-generated method documentation + * + * @param globalSearch + * @param pageable + * @return Page + */ + public abstract Page BookService.findAll(GlobalSearch globalSearch, Pageable pageable); + +} diff --git a/roo/src/main/java/com/baeldung/service/impl/BookServiceImpl.java b/roo/src/main/java/com/baeldung/service/impl/BookServiceImpl.java new file mode 100644 index 0000000000..1b44547629 --- /dev/null +++ b/roo/src/main/java/com/baeldung/service/impl/BookServiceImpl.java @@ -0,0 +1,12 @@ +package com.baeldung.service.impl; +import com.baeldung.service.api.BookService; +import org.springframework.roo.addon.layers.service.annotations.RooServiceImpl; + +/** + * = BookServiceImpl + TODO Auto-generated class documentation + * + */ +@RooServiceImpl(service = BookService.class) +public class BookServiceImpl implements BookService { +} diff --git a/roo/src/main/java/com/baeldung/service/impl/BookServiceImpl_Roo_Service_Impl.aj b/roo/src/main/java/com/baeldung/service/impl/BookServiceImpl_Roo_Service_Impl.aj new file mode 100644 index 0000000000..8f9fb846aa --- /dev/null +++ b/roo/src/main/java/com/baeldung/service/impl/BookServiceImpl_Roo_Service_Impl.aj @@ -0,0 +1,177 @@ +// WARNING: DO NOT EDIT THIS FILE. THIS FILE IS MANAGED BY SPRING ROO. +// You may push code into the target .java compilation unit if you wish to edit any member(s). + +package com.baeldung.service.impl; + +import com.baeldung.domain.Book; +import com.baeldung.repository.BookRepository; +import com.baeldung.service.impl.BookServiceImpl; +import io.springlets.data.domain.GlobalSearch; +import java.util.List; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.data.domain.Page; +import org.springframework.data.domain.Pageable; +import org.springframework.stereotype.Service; +import org.springframework.transaction.annotation.Transactional; + +privileged aspect BookServiceImpl_Roo_Service_Impl { + + declare @type: BookServiceImpl: @Service; + + declare @type: BookServiceImpl: @Transactional(readOnly = true); + + /** + * TODO Auto-generated attribute documentation + * + */ + private BookRepository BookServiceImpl.bookRepository; + + /** + * TODO Auto-generated constructor documentation + * + * @param bookRepository + */ + @Autowired + public BookServiceImpl.new(BookRepository bookRepository) { + setBookRepository(bookRepository); + } + + /** + * TODO Auto-generated method documentation + * + * @return BookRepository + */ + public BookRepository BookServiceImpl.getBookRepository() { + return bookRepository; + } + + /** + * TODO Auto-generated method documentation + * + * @param bookRepository + */ + public void BookServiceImpl.setBookRepository(BookRepository bookRepository) { + this.bookRepository = bookRepository; + } + + /** + * TODO Auto-generated method documentation + * + * @param book + */ + @Transactional + public void BookServiceImpl.delete(Book book) { + getBookRepository().delete(book); + } + + /** + * TODO Auto-generated method documentation + * + * @param entities + * @return List + */ + @Transactional + public List BookServiceImpl.save(Iterable entities) { + return getBookRepository().save(entities); + } + + /** + * TODO Auto-generated method documentation + * + * @param ids + */ + @Transactional + public void BookServiceImpl.delete(Iterable ids) { + List toDelete = getBookRepository().findAll(ids); + getBookRepository().deleteInBatch(toDelete); + } + + /** + * TODO Auto-generated method documentation + * + * @param entity + * @return Book + */ + @Transactional + public Book BookServiceImpl.save(Book entity) { + return getBookRepository().save(entity); + } + + /** + * TODO Auto-generated method documentation + * + * @param id + * @return Book + */ + public Book BookServiceImpl.findOne(Long id) { + return getBookRepository().findOne(id); + } + + /** + * TODO Auto-generated method documentation + * + * @param id + * @return Book + */ + public Book BookServiceImpl.findOneForUpdate(Long id) { + return getBookRepository().findOneDetached(id); + } + + /** + * TODO Auto-generated method documentation + * + * @param ids + * @return List + */ + public List BookServiceImpl.findAll(Iterable ids) { + return getBookRepository().findAll(ids); + } + + /** + * TODO Auto-generated method documentation + * + * @return List + */ + public List BookServiceImpl.findAll() { + return getBookRepository().findAll(); + } + + /** + * TODO Auto-generated method documentation + * + * @return Long + */ + public long BookServiceImpl.count() { + return getBookRepository().count(); + } + + /** + * TODO Auto-generated method documentation + * + * @param globalSearch + * @param pageable + * @return Page + */ + public Page BookServiceImpl.findAll(GlobalSearch globalSearch, Pageable pageable) { + return getBookRepository().findAll(globalSearch, pageable); + } + + /** + * TODO Auto-generated method documentation + * + * @return Class + */ + public Class BookServiceImpl.getEntityType() { + return Book.class; + } + + /** + * TODO Auto-generated method documentation + * + * @return Class + */ + public Class BookServiceImpl.getIdType() { + return Long.class; + } + +} diff --git a/roo/src/main/java/com/baeldung/web/BookDeserializer.java b/roo/src/main/java/com/baeldung/web/BookDeserializer.java new file mode 100644 index 0000000000..38c447e580 --- /dev/null +++ b/roo/src/main/java/com/baeldung/web/BookDeserializer.java @@ -0,0 +1,41 @@ +package com.baeldung.web; +import com.baeldung.domain.Book; +import com.baeldung.service.api.BookService; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.boot.jackson.JsonObjectDeserializer; +import org.springframework.context.annotation.Lazy; +import org.springframework.core.convert.ConversionService; +import org.springframework.roo.addon.web.mvc.controller.annotations.config.RooDeserializer; + +/** + * = BookDeserializer + TODO Auto-generated class documentation + * + */ +@RooDeserializer(entity = Book.class) +public class BookDeserializer extends JsonObjectDeserializer { + + /** + * TODO Auto-generated attribute documentation + * + */ + private BookService bookService; + + /** + * TODO Auto-generated attribute documentation + * + */ + private ConversionService conversionService; + + /** + * TODO Auto-generated constructor documentation + * + * @param bookService + * @param conversionService + */ + @Autowired + public BookDeserializer(@Lazy BookService bookService, ConversionService conversionService) { + this.bookService = bookService; + this.conversionService = conversionService; + } +} diff --git a/roo/src/main/java/com/baeldung/web/BookDeserializer_Roo_EntityDeserializer.aj b/roo/src/main/java/com/baeldung/web/BookDeserializer_Roo_EntityDeserializer.aj new file mode 100644 index 0000000000..5ca42cfb5e --- /dev/null +++ b/roo/src/main/java/com/baeldung/web/BookDeserializer_Roo_EntityDeserializer.aj @@ -0,0 +1,78 @@ +// WARNING: DO NOT EDIT THIS FILE. THIS FILE IS MANAGED BY SPRING ROO. +// You may push code into the target .java compilation unit if you wish to edit any member(s). + +package com.baeldung.web; + +import com.baeldung.domain.Book; +import com.baeldung.service.api.BookService; +import com.baeldung.web.BookDeserializer; +import com.fasterxml.jackson.core.JsonParser; +import com.fasterxml.jackson.core.ObjectCodec; +import com.fasterxml.jackson.databind.DeserializationContext; +import com.fasterxml.jackson.databind.JsonNode; +import io.springlets.web.NotFoundException; +import java.io.IOException; +import org.springframework.boot.jackson.JsonComponent; +import org.springframework.core.convert.ConversionService; + +privileged aspect BookDeserializer_Roo_EntityDeserializer { + + declare @type: BookDeserializer: @JsonComponent; + + /** + * TODO Auto-generated method documentation + * + * @return BookService + */ + public BookService BookDeserializer.getBookService() { + return bookService; + } + + /** + * TODO Auto-generated method documentation + * + * @param bookService + */ + public void BookDeserializer.setBookService(BookService bookService) { + this.bookService = bookService; + } + + /** + * TODO Auto-generated method documentation + * + * @return ConversionService + */ + public ConversionService BookDeserializer.getConversionService() { + return conversionService; + } + + /** + * TODO Auto-generated method documentation + * + * @param conversionService + */ + public void BookDeserializer.setConversionService(ConversionService conversionService) { + this.conversionService = conversionService; + } + + /** + * TODO Auto-generated method documentation + * + * @param jsonParser + * @param context + * @param codec + * @param tree + * @return Book + * @throws IOException + */ + public Book BookDeserializer.deserializeObject(JsonParser jsonParser, DeserializationContext context, ObjectCodec codec, JsonNode tree) throws IOException { + String idText = tree.asText(); + Long id = conversionService.convert(idText, Long.class); + Book book = bookService.findOne(id); + if (book == null) { + throw new NotFoundException("Book not found"); + } + return book; + } + +} diff --git a/roo/src/main/java/com/baeldung/web/BookJsonMixin.java b/roo/src/main/java/com/baeldung/web/BookJsonMixin.java new file mode 100644 index 0000000000..1cde8f0e86 --- /dev/null +++ b/roo/src/main/java/com/baeldung/web/BookJsonMixin.java @@ -0,0 +1,12 @@ +package com.baeldung.web; +import com.baeldung.domain.Book; +import org.springframework.roo.addon.web.mvc.controller.annotations.config.RooJsonMixin; + +/** + * = BookJsonMixin + TODO Auto-generated class documentation + * + */ +@RooJsonMixin(entity = Book.class) +public abstract class BookJsonMixin { +} diff --git a/roo/src/main/java/com/baeldung/web/BooksCollectionThymeleafController.java b/roo/src/main/java/com/baeldung/web/BooksCollectionThymeleafController.java new file mode 100644 index 0000000000..9b0179e234 --- /dev/null +++ b/roo/src/main/java/com/baeldung/web/BooksCollectionThymeleafController.java @@ -0,0 +1,15 @@ +package com.baeldung.web; +import com.baeldung.domain.Book; +import org.springframework.roo.addon.web.mvc.controller.annotations.ControllerType; +import org.springframework.roo.addon.web.mvc.controller.annotations.RooController; +import org.springframework.roo.addon.web.mvc.thymeleaf.annotations.RooThymeleaf; + +/** + * = BooksCollectionThymeleafController + TODO Auto-generated class documentation + * + */ +@RooController(entity = Book.class, type = ControllerType.COLLECTION) +@RooThymeleaf +public class BooksCollectionThymeleafController { +} diff --git a/roo/src/main/java/com/baeldung/web/BooksCollectionThymeleafController_Roo_Controller.aj b/roo/src/main/java/com/baeldung/web/BooksCollectionThymeleafController_Roo_Controller.aj new file mode 100644 index 0000000000..a87b76a745 --- /dev/null +++ b/roo/src/main/java/com/baeldung/web/BooksCollectionThymeleafController_Roo_Controller.aj @@ -0,0 +1,35 @@ +// WARNING: DO NOT EDIT THIS FILE. THIS FILE IS MANAGED BY SPRING ROO. +// You may push code into the target .java compilation unit if you wish to edit any member(s). + +package com.baeldung.web; + +import com.baeldung.service.api.BookService; +import com.baeldung.web.BooksCollectionThymeleafController; + +privileged aspect BooksCollectionThymeleafController_Roo_Controller { + + /** + * TODO Auto-generated attribute documentation + * + */ + private BookService BooksCollectionThymeleafController.bookService; + + /** + * TODO Auto-generated method documentation + * + * @return BookService + */ + public BookService BooksCollectionThymeleafController.getBookService() { + return bookService; + } + + /** + * TODO Auto-generated method documentation + * + * @param bookService + */ + public void BooksCollectionThymeleafController.setBookService(BookService bookService) { + this.bookService = bookService; + } + +} diff --git a/roo/src/main/java/com/baeldung/web/BooksCollectionThymeleafController_Roo_Thymeleaf.aj b/roo/src/main/java/com/baeldung/web/BooksCollectionThymeleafController_Roo_Thymeleaf.aj new file mode 100644 index 0000000000..b0831730be --- /dev/null +++ b/roo/src/main/java/com/baeldung/web/BooksCollectionThymeleafController_Roo_Thymeleaf.aj @@ -0,0 +1,470 @@ +// WARNING: DO NOT EDIT THIS FILE. THIS FILE IS MANAGED BY SPRING ROO. +// You may push code into the target .java compilation unit if you wish to edit any member(s). + +package com.baeldung.web; + +import ar.com.fdvs.dj.core.DynamicJasperHelper; +import ar.com.fdvs.dj.core.layout.ClassicLayoutManager; +import ar.com.fdvs.dj.domain.builders.ColumnBuilderException; +import ar.com.fdvs.dj.domain.builders.FastReportBuilder; +import com.baeldung.domain.Book; +import com.baeldung.service.api.BookService; +import com.baeldung.web.BooksCollectionThymeleafController; +import com.baeldung.web.BooksItemThymeleafController; +import com.baeldung.web.BooksItemThymeleafLinkFactory; +import com.baeldung.web.reports.ExportingErrorException; +import com.baeldung.web.reports.JasperReportsCsvExporter; +import com.baeldung.web.reports.JasperReportsExporter; +import com.baeldung.web.reports.JasperReportsPdfExporter; +import com.baeldung.web.reports.JasperReportsXlsExporter; +import io.springlets.data.domain.GlobalSearch; +import io.springlets.data.web.datatables.ConvertedDatatablesData; +import io.springlets.data.web.datatables.Datatables; +import io.springlets.data.web.datatables.DatatablesColumns; +import io.springlets.data.web.datatables.DatatablesPageable; +import io.springlets.data.web.select2.Select2DataSupport; +import io.springlets.data.web.select2.Select2DataWithConversion; +import io.springlets.web.mvc.util.ControllerMethodLinkBuilderFactory; +import io.springlets.web.mvc.util.MethodLinkBuilderFactory; +import java.io.IOException; +import java.util.Collection; +import java.util.Locale; +import javax.servlet.http.HttpServletResponse; +import javax.validation.Valid; +import net.sf.jasperreports.engine.JRDataSource; +import net.sf.jasperreports.engine.JRException; +import net.sf.jasperreports.engine.JasperPrint; +import net.sf.jasperreports.engine.data.JRBeanCollectionDataSource; +import org.apache.commons.lang3.StringUtils; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.context.MessageSource; +import org.springframework.context.i18n.LocaleContextHolder; +import org.springframework.core.convert.ConversionService; +import org.springframework.data.domain.Page; +import org.springframework.data.domain.Pageable; +import org.springframework.data.web.PageableDefault; +import org.springframework.http.MediaType; +import org.springframework.http.ResponseEntity; +import org.springframework.stereotype.Controller; +import org.springframework.ui.Model; +import org.springframework.validation.BindingResult; +import org.springframework.web.bind.WebDataBinder; +import org.springframework.web.bind.annotation.DeleteMapping; +import org.springframework.web.bind.annotation.GetMapping; +import org.springframework.web.bind.annotation.InitBinder; +import org.springframework.web.bind.annotation.ModelAttribute; +import org.springframework.web.bind.annotation.PathVariable; +import org.springframework.web.bind.annotation.PostMapping; +import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.RequestParam; +import org.springframework.web.bind.annotation.ResponseBody; +import org.springframework.web.servlet.ModelAndView; +import org.springframework.web.util.UriComponents; + +privileged aspect BooksCollectionThymeleafController_Roo_Thymeleaf { + + declare @type: BooksCollectionThymeleafController: @Controller; + + declare @type: BooksCollectionThymeleafController: @RequestMapping(value = "/books", name = "BooksCollectionThymeleafController", produces = MediaType.TEXT_HTML_VALUE); + + /** + * TODO Auto-generated attribute documentation + * + */ + private MessageSource BooksCollectionThymeleafController.messageSource; + + /** + * TODO Auto-generated attribute documentation + * + */ + private MethodLinkBuilderFactory BooksCollectionThymeleafController.itemLink; + + /** + * TODO Auto-generated attribute documentation + * + */ + private ConversionService BooksCollectionThymeleafController.conversionService; + + /** + * TODO Auto-generated constructor documentation + * + * @param bookService + * @param conversionService + * @param messageSource + * @param linkBuilder + */ + @Autowired + public BooksCollectionThymeleafController.new(BookService bookService, ConversionService conversionService, MessageSource messageSource, ControllerMethodLinkBuilderFactory linkBuilder) { + setBookService(bookService); + setConversionService(conversionService); + setMessageSource(messageSource); + setItemLink(linkBuilder.of(BooksItemThymeleafController.class)); + } + + /** + * TODO Auto-generated method documentation + * + * @return MessageSource + */ + public MessageSource BooksCollectionThymeleafController.getMessageSource() { + return messageSource; + } + + /** + * TODO Auto-generated method documentation + * + * @param messageSource + */ + public void BooksCollectionThymeleafController.setMessageSource(MessageSource messageSource) { + this.messageSource = messageSource; + } + + /** + * TODO Auto-generated method documentation + * + * @return MethodLinkBuilderFactory + */ + public MethodLinkBuilderFactory BooksCollectionThymeleafController.getItemLink() { + return itemLink; + } + + /** + * TODO Auto-generated method documentation + * + * @param itemLink + */ + public void BooksCollectionThymeleafController.setItemLink(MethodLinkBuilderFactory itemLink) { + this.itemLink = itemLink; + } + + /** + * TODO Auto-generated method documentation + * + * @return ConversionService + */ + public ConversionService BooksCollectionThymeleafController.getConversionService() { + return conversionService; + } + + /** + * TODO Auto-generated method documentation + * + * @param conversionService + */ + public void BooksCollectionThymeleafController.setConversionService(ConversionService conversionService) { + this.conversionService = conversionService; + } + + /** + * TODO Auto-generated method documentation + * + * @param model + * @return ModelAndView + */ + @GetMapping(name = "list") + public ModelAndView BooksCollectionThymeleafController.list(Model model) { + return new ModelAndView("/books/list"); + } + + /** + * TODO Auto-generated method documentation + * + * @param datatablesColumns + * @param search + * @param pageable + * @param draw + * @return ResponseEntity + */ + @GetMapping(produces = Datatables.MEDIA_TYPE, name = "datatables", value = "/dt") + @ResponseBody + public ResponseEntity> BooksCollectionThymeleafController.datatables(DatatablesColumns datatablesColumns, GlobalSearch search, DatatablesPageable pageable, @RequestParam("draw") Integer draw) { + Page books = getBookService().findAll(search, pageable); + long totalBooksCount = books.getTotalElements(); + if (search != null && StringUtils.isNotBlank(search.getText())) { + totalBooksCount = getBookService().count(); + } + ConvertedDatatablesData datatablesData = new ConvertedDatatablesData(books, totalBooksCount, draw, getConversionService(), datatablesColumns); + return ResponseEntity.ok(datatablesData); + } + + /** + * TODO Auto-generated method documentation + * + * @param search + * @param pageable + * @param locale + * @return ResponseEntity + */ + @GetMapping(produces = MediaType.APPLICATION_JSON_VALUE, name = "select2", value = "/s2") + @ResponseBody + public ResponseEntity> BooksCollectionThymeleafController.select2(GlobalSearch search, Pageable pageable, Locale locale) { + Page books = getBookService().findAll(search, pageable); + String idExpression = "#{id}"; + Select2DataSupport select2Data = new Select2DataWithConversion(books, idExpression, getConversionService()); + return ResponseEntity.ok(select2Data); + } + + /** + * TODO Auto-generated method documentation + * + * @param dataBinder + */ + @InitBinder("book") + public void BooksCollectionThymeleafController.initBookBinder(WebDataBinder dataBinder) { + dataBinder.setDisallowedFields("id"); + } + + /** + * TODO Auto-generated method documentation + * + * @param model + */ + public void BooksCollectionThymeleafController.populateFormats(Model model) { + model.addAttribute("application_locale", LocaleContextHolder.getLocale().getLanguage()); + } + + /** + * TODO Auto-generated method documentation + * + * @param model + */ + public void BooksCollectionThymeleafController.populateForm(Model model) { + populateFormats(model); + } + + /** + * TODO Auto-generated method documentation + * + * @param book + * @param result + * @param model + * @return ModelAndView + */ + @PostMapping(name = "create") + public ModelAndView BooksCollectionThymeleafController.create(@Valid @ModelAttribute Book book, BindingResult result, Model model) { + if (result.hasErrors()) { + populateForm(model); + + return new ModelAndView("/books/create"); + } + Book newBook = getBookService().save(book); + UriComponents showURI = getItemLink().to(BooksItemThymeleafLinkFactory.SHOW).with("book", newBook.getId()).toUri(); + return new ModelAndView("redirect:" + showURI.toUriString()); + } + + /** + * TODO Auto-generated method documentation + * + * @param model + * @return ModelAndView + */ + @GetMapping(value = "/create-form", name = "createForm") + public ModelAndView BooksCollectionThymeleafController.createForm(Model model) { + populateForm(model); + + model.addAttribute("book", new Book()); + return new ModelAndView("books/create"); + } + + /** + * TODO Auto-generated method documentation + * + * @param ids + * @return ResponseEntity + */ + @DeleteMapping(value = "/batch/{ids}", name = "deleteBatch") + @ResponseBody + public ResponseEntity BooksCollectionThymeleafController.deleteBatch(@PathVariable("ids") Collection ids) { + + getBookService().delete(ids); + + return ResponseEntity.ok().build(); + } + + /** + * Method that obtains the filtered and ordered records using the Datatables information and + * export them to a new report file. (It ignores the current pagination). + * + * To generate the report file it uses the `DynamicJasper` library + * (http://dynamicjasper.com). This library allows developers to generate reports dynamically + * without use an specific template to each entity. + * + * To customize the appearance of ALL generated reports, you could customize the + * "export_default.jrxml" template located in "src/main/resources/templates/reports/". However, + * if you want to customize the appearance of this specific report, you could create a new + * ".jrxml" file and provide it to the library replacing the `builder.setTemplateFile();` + * operation used in this implementation. + * + * @param search GlobalSearch that contains the filter provided by the Datatables component. + * @param pageable Pageable that contains the Sort info provided by the Datatabes component. + * @param datatablesColumns Columns displayed in the Datatables component. + * @param response The HttpServletResponse. + * @param exporter An specific JasperReportsExporter to be used during export process. + * @param fileName The final filename to use. + * @param locale The current Locale in the view context. + */ + public void BooksCollectionThymeleafController.export(GlobalSearch search, @PageableDefault(size = 2147483647) Pageable pageable, String[] datatablesColumns, HttpServletResponse response, JasperReportsExporter exporter, String fileName, Locale locale) { + // Obtain the filtered and ordered elements + Page books = getBookService().findAll(search, pageable); + + // Prevent generation of reports with empty data + if (books == null || books.getContent().isEmpty()) { + return; + } + + // Creates a new ReportBuilder using DynamicJasper library + FastReportBuilder builder = new FastReportBuilder(); + + // IMPORTANT: By default, this application uses "export_default.jrxml" + // to generate all reports. If you want to customize this specific report, + // create a new ".jrxml" template and customize it. (Take in account the + // DynamicJasper restrictions: + // http://dynamicjasper.com/2010/10/06/how-to-use-custom-jrxml-templates/) + builder.setTemplateFile("templates/reports/export_default.jrxml"); + + // The generated report will display the same columns as the Datatables component. + // However, this is not mandatory. You could edit this code if you want to ignore + // the provided datatablesColumns + if (datatablesColumns != null) { + for (String column : datatablesColumns) { + // Delegates in addColumnToReportBuilder to include each datatables column + // to the report builder + addColumnToReportBuilder(column, builder, locale, fileName); + } + } + + // This property resizes the columns to use full width page. + // Set false value if you want to use the specific width of each column. + builder.setUseFullPageWidth(true); + + // Creates a new Jasper Reports Datasource using the obtained elements + JRDataSource ds = new JRBeanCollectionDataSource(books.getContent()); + + // Generates the JasperReport + JasperPrint jp; + try { + jp = DynamicJasperHelper.generateJasperPrint(builder.build(), new ClassicLayoutManager(), ds); + } + catch (JRException e) { + String errorMessage = getMessageSource().getMessage("error_exportingErrorException", + new Object[] {StringUtils.substringAfterLast(fileName, ".").toUpperCase()}, + String.format("Error while exporting data to StringUtils file", StringUtils. + substringAfterLast(fileName, ".").toUpperCase()), locale); + throw new ExportingErrorException(errorMessage); + } + + // Converts the JaspertReport element to a ByteArrayOutputStream and + // write it into the response stream using the provided JasperReportExporter + try { + exporter.export(jp, fileName, response); + } + catch (JRException e) { + String errorMessage = getMessageSource().getMessage("error_exportingErrorException", + new Object[] {StringUtils.substringAfterLast(fileName, ".").toUpperCase()}, + String.format("Error while exporting data to StringUtils file", StringUtils. + substringAfterLast(fileName, ".").toUpperCase()), locale); + throw new ExportingErrorException(errorMessage); + } + catch (IOException e) { + String errorMessage = getMessageSource().getMessage("error_exportingErrorException", + new Object[] {StringUtils.substringAfterLast(fileName, ".").toUpperCase()}, + String.format("Error while exporting data to StringUtils file", StringUtils. + substringAfterLast(fileName, ".").toUpperCase()), locale); + throw new ExportingErrorException(errorMessage); + } + } + + /** + * It delegates in the `export` method providing the necessary information + * to generate a CSV report. + * + * @param search The GlobalSearch that contains the filter provided by the Datatables component + * @param pageable The Pageable that contains the Sort info provided by the Datatabes component + * @param datatablesColumns The Columns displayed in the Datatables component + * @param response The HttpServletResponse + * @return ResponseEntity + */ + @GetMapping(name = "exportCsv", value = "/export/csv") + @ResponseBody + public ResponseEntity BooksCollectionThymeleafController.exportCsv(GlobalSearch search, @PageableDefault(size = 2147483647) Pageable pageable, @RequestParam("datatablesColumns") String[] datatablesColumns, HttpServletResponse response, Locale locale) { + export(search, pageable, datatablesColumns, response, new JasperReportsCsvExporter(), "books_report.csv", locale); + return ResponseEntity.ok().build(); + } + + /** + * It delegates in the `export` method providing the necessary information + * to generate a PDF report. + * + * @param search The GlobalSearch that contains the filter provided by the Datatables component + * @param pageable The Pageable that contains the Sort info provided by the Datatabes component + * @param datatablesColumns The Columns displayed in the Datatables component + * @param response The HttpServletResponse + * @return ResponseEntity + */ + @GetMapping(name = "exportPdf", value = "/export/pdf") + @ResponseBody + public ResponseEntity BooksCollectionThymeleafController.exportPdf(GlobalSearch search, @PageableDefault(size = 2147483647) Pageable pageable, @RequestParam("datatablesColumns") String[] datatablesColumns, HttpServletResponse response, Locale locale) { + export(search, pageable, datatablesColumns, response, new JasperReportsPdfExporter(), "books_report.pdf", locale); + return ResponseEntity.ok().build(); + } + + /** + * It delegates in the `export` method providing the necessary information + * to generate a XLS report. + * + * @param search The GlobalSearch that contains the filter provided by the Datatables component + * @param pageable The Pageable that contains the Sort info provided by the Datatabes component + * @param datatablesColumns The Columns displayed in the Datatables component + * @param response The HttpServletResponse + * @return ResponseEntity + */ + @GetMapping(name = "exportXls", value = "/export/xls") + @ResponseBody + public ResponseEntity BooksCollectionThymeleafController.exportXls(GlobalSearch search, @PageableDefault(size = 2147483647) Pageable pageable, @RequestParam("datatablesColumns") String[] datatablesColumns, HttpServletResponse response, Locale locale) { + export(search, pageable, datatablesColumns, response, new JasperReportsXlsExporter(), "books_report.xls", locale); + return ResponseEntity.ok().build(); + } + + /** + * This method contains all the entity fields that are able to be displayed in a + * report. The developer could add a new column to the report builder providing the + * field name and the builder where the new field will be added as column. + * + * @param columnName the field name to show as column + * @param builder The builder where the new field will be added as column. + */ + public void BooksCollectionThymeleafController.addColumnToReportBuilder(String columnName, FastReportBuilder builder, Locale locale, String fileName) { + try { + if (columnName.equals("id")) { + builder.addColumn(getMessageSource().getMessage("label_book_id", null, "Id", locale), "id", Long.class.getName(), 50); + } + else if (columnName.equals("version")) { + builder.addColumn(getMessageSource().getMessage("label_book_version", null, "Version", locale), "version", Integer.class.getName(), 100); + } + else if (columnName.equals("title")) { + builder.addColumn(getMessageSource().getMessage("label_book_title", null, "Title", locale), "title", String.class.getName(), 100); + } + else if (columnName.equals("author")) { + builder.addColumn(getMessageSource().getMessage("label_book_author", null, "Author", locale), "author", String.class.getName(), 100); + } + else if (columnName.equals("isbn")) { + builder.addColumn(getMessageSource().getMessage("label_book_isbn", null, "Isbn", locale), "isbn", String.class.getName(), 100); + } + } + catch (ColumnBuilderException e) { + String errorMessage = getMessageSource().getMessage("error_exportingErrorException", + new Object[] {StringUtils.substringAfterLast(fileName, ".").toUpperCase()}, + String.format("Error while exporting data to StringUtils file", StringUtils. + substringAfterLast(fileName, ".").toUpperCase()), locale); + throw new ExportingErrorException(errorMessage); + } + catch (ClassNotFoundException e) { + String errorMessage = getMessageSource().getMessage("error_exportingErrorException", + new Object[] {StringUtils.substringAfterLast(fileName, ".").toUpperCase()}, + String.format("Error while exporting data to StringUtils file", StringUtils. + substringAfterLast(fileName, ".").toUpperCase()), locale); + throw new ExportingErrorException(errorMessage); + } + } + +} diff --git a/roo/src/main/java/com/baeldung/web/BooksCollectionThymeleafLinkFactory.java b/roo/src/main/java/com/baeldung/web/BooksCollectionThymeleafLinkFactory.java new file mode 100644 index 0000000000..413a5e64a0 --- /dev/null +++ b/roo/src/main/java/com/baeldung/web/BooksCollectionThymeleafLinkFactory.java @@ -0,0 +1,11 @@ +package com.baeldung.web; +import org.springframework.roo.addon.web.mvc.thymeleaf.annotations.RooLinkFactory; + +/** + * = BooksCollectionThymeleafLinkFactory + TODO Auto-generated class documentation + * + */ +@RooLinkFactory(controller = BooksCollectionThymeleafController.class) +public class BooksCollectionThymeleafLinkFactory { +} diff --git a/roo/src/main/java/com/baeldung/web/BooksCollectionThymeleafLinkFactory_Roo_LinkFactory.aj b/roo/src/main/java/com/baeldung/web/BooksCollectionThymeleafLinkFactory_Roo_LinkFactory.aj new file mode 100644 index 0000000000..e6df3efcb7 --- /dev/null +++ b/roo/src/main/java/com/baeldung/web/BooksCollectionThymeleafLinkFactory_Roo_LinkFactory.aj @@ -0,0 +1,122 @@ +// WARNING: DO NOT EDIT THIS FILE. THIS FILE IS MANAGED BY SPRING ROO. +// You may push code into the target .java compilation unit if you wish to edit any member(s). + +package com.baeldung.web; + +import com.baeldung.web.BooksCollectionThymeleafController; +import com.baeldung.web.BooksCollectionThymeleafLinkFactory; +import io.springlets.web.mvc.util.MethodLinkFactory; +import io.springlets.web.mvc.util.SpringletsMvcUriComponentsBuilder; +import java.util.Map; +import org.springframework.stereotype.Component; +import org.springframework.web.util.UriComponents; + +privileged aspect BooksCollectionThymeleafLinkFactory_Roo_LinkFactory { + + declare parents: BooksCollectionThymeleafLinkFactory implements MethodLinkFactory; + + declare @type: BooksCollectionThymeleafLinkFactory: @Component; + + /** + * TODO Auto-generated attribute documentation + * + */ + public static final String BooksCollectionThymeleafLinkFactory.LIST = "list"; + + /** + * TODO Auto-generated attribute documentation + * + */ + public static final String BooksCollectionThymeleafLinkFactory.DATATABLES = "datatables"; + + /** + * TODO Auto-generated attribute documentation + * + */ + public static final String BooksCollectionThymeleafLinkFactory.SELECT2 = "select2"; + + /** + * TODO Auto-generated attribute documentation + * + */ + public static final String BooksCollectionThymeleafLinkFactory.CREATE = "create"; + + /** + * TODO Auto-generated attribute documentation + * + */ + public static final String BooksCollectionThymeleafLinkFactory.CREATEFORM = "createForm"; + + /** + * TODO Auto-generated attribute documentation + * + */ + public static final String BooksCollectionThymeleafLinkFactory.DELETEBATCH = "deleteBatch"; + + /** + * TODO Auto-generated attribute documentation + * + */ + public static final String BooksCollectionThymeleafLinkFactory.EXPORTCSV = "exportCsv"; + + /** + * TODO Auto-generated attribute documentation + * + */ + public static final String BooksCollectionThymeleafLinkFactory.EXPORTPDF = "exportPdf"; + + /** + * TODO Auto-generated attribute documentation + * + */ + public static final String BooksCollectionThymeleafLinkFactory.EXPORTXLS = "exportXls"; + + /** + * TODO Auto-generated method documentation + * + * @return Class + */ + public Class BooksCollectionThymeleafLinkFactory.getControllerClass() { + return BooksCollectionThymeleafController.class; + } + + /** + * TODO Auto-generated method documentation + * + * @param methodName + * @param parameters + * @param pathVariables + * @return UriComponents + */ + public UriComponents BooksCollectionThymeleafLinkFactory.toUri(String methodName, Object[] parameters, Map pathVariables) { + if (methodName.equals(LIST)) { + return SpringletsMvcUriComponentsBuilder.fromMethodCall(SpringletsMvcUriComponentsBuilder.on(getControllerClass()).list(null)).buildAndExpand(pathVariables); + } + if (methodName.equals(DATATABLES)) { + return SpringletsMvcUriComponentsBuilder.fromMethodCall(SpringletsMvcUriComponentsBuilder.on(getControllerClass()).datatables(null, null, null, null)).buildAndExpand(pathVariables); + } + if (methodName.equals(SELECT2)) { + return SpringletsMvcUriComponentsBuilder.fromMethodCall(SpringletsMvcUriComponentsBuilder.on(getControllerClass()).select2(null, null, null)).buildAndExpand(pathVariables); + } + if (methodName.equals(CREATE)) { + return SpringletsMvcUriComponentsBuilder.fromMethodCall(SpringletsMvcUriComponentsBuilder.on(getControllerClass()).create(null, null, null)).buildAndExpand(pathVariables); + } + if (methodName.equals(CREATEFORM)) { + return SpringletsMvcUriComponentsBuilder.fromMethodCall(SpringletsMvcUriComponentsBuilder.on(getControllerClass()).createForm(null)).buildAndExpand(pathVariables); + } + if (methodName.equals(DELETEBATCH)) { + return SpringletsMvcUriComponentsBuilder.fromMethodCall(SpringletsMvcUriComponentsBuilder.on(getControllerClass()).deleteBatch(null)).buildAndExpand(pathVariables); + } + if (methodName.equals(EXPORTCSV)) { + return SpringletsMvcUriComponentsBuilder.fromMethodCall(SpringletsMvcUriComponentsBuilder.on(getControllerClass()).exportCsv(null, null, null, null, null)).buildAndExpand(pathVariables); + } + if (methodName.equals(EXPORTPDF)) { + return SpringletsMvcUriComponentsBuilder.fromMethodCall(SpringletsMvcUriComponentsBuilder.on(getControllerClass()).exportPdf(null, null, null, null, null)).buildAndExpand(pathVariables); + } + if (methodName.equals(EXPORTXLS)) { + return SpringletsMvcUriComponentsBuilder.fromMethodCall(SpringletsMvcUriComponentsBuilder.on(getControllerClass()).exportXls(null, null, null, null, null)).buildAndExpand(pathVariables); + } + throw new IllegalArgumentException("Invalid method name: " + methodName); + } + +} diff --git a/roo/src/main/java/com/baeldung/web/BooksItemThymeleafController.java b/roo/src/main/java/com/baeldung/web/BooksItemThymeleafController.java new file mode 100644 index 0000000000..f16cb7be2d --- /dev/null +++ b/roo/src/main/java/com/baeldung/web/BooksItemThymeleafController.java @@ -0,0 +1,15 @@ +package com.baeldung.web; +import com.baeldung.domain.Book; +import org.springframework.roo.addon.web.mvc.controller.annotations.ControllerType; +import org.springframework.roo.addon.web.mvc.controller.annotations.RooController; +import org.springframework.roo.addon.web.mvc.thymeleaf.annotations.RooThymeleaf; + +/** + * = BooksItemThymeleafController + TODO Auto-generated class documentation + * + */ +@RooController(entity = Book.class, type = ControllerType.ITEM) +@RooThymeleaf +public class BooksItemThymeleafController { +} diff --git a/roo/src/main/java/com/baeldung/web/BooksItemThymeleafController_Roo_Controller.aj b/roo/src/main/java/com/baeldung/web/BooksItemThymeleafController_Roo_Controller.aj new file mode 100644 index 0000000000..c0a4ed46df --- /dev/null +++ b/roo/src/main/java/com/baeldung/web/BooksItemThymeleafController_Roo_Controller.aj @@ -0,0 +1,35 @@ +// WARNING: DO NOT EDIT THIS FILE. THIS FILE IS MANAGED BY SPRING ROO. +// You may push code into the target .java compilation unit if you wish to edit any member(s). + +package com.baeldung.web; + +import com.baeldung.service.api.BookService; +import com.baeldung.web.BooksItemThymeleafController; + +privileged aspect BooksItemThymeleafController_Roo_Controller { + + /** + * TODO Auto-generated attribute documentation + * + */ + private BookService BooksItemThymeleafController.bookService; + + /** + * TODO Auto-generated method documentation + * + * @return BookService + */ + public BookService BooksItemThymeleafController.getBookService() { + return bookService; + } + + /** + * TODO Auto-generated method documentation + * + * @param bookService + */ + public void BooksItemThymeleafController.setBookService(BookService bookService) { + this.bookService = bookService; + } + +} diff --git a/roo/src/main/java/com/baeldung/web/BooksItemThymeleafController_Roo_Thymeleaf.aj b/roo/src/main/java/com/baeldung/web/BooksItemThymeleafController_Roo_Thymeleaf.aj new file mode 100644 index 0000000000..502c30a81e --- /dev/null +++ b/roo/src/main/java/com/baeldung/web/BooksItemThymeleafController_Roo_Thymeleaf.aj @@ -0,0 +1,251 @@ +// WARNING: DO NOT EDIT THIS FILE. THIS FILE IS MANAGED BY SPRING ROO. +// You may push code into the target .java compilation unit if you wish to edit any member(s). + +package com.baeldung.web; + +import com.baeldung.domain.Book; +import com.baeldung.service.api.BookService; +import com.baeldung.web.BooksItemThymeleafController; +import com.baeldung.web.BooksItemThymeleafLinkFactory; +import io.springlets.web.NotFoundException; +import io.springlets.web.mvc.util.ControllerMethodLinkBuilderFactory; +import io.springlets.web.mvc.util.MethodLinkBuilderFactory; +import java.util.Locale; +import javax.validation.Valid; +import org.apache.commons.lang3.StringUtils; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.context.MessageSource; +import org.springframework.context.i18n.LocaleContextHolder; +import org.springframework.http.HttpMethod; +import org.springframework.http.MediaType; +import org.springframework.http.ResponseEntity; +import org.springframework.stereotype.Controller; +import org.springframework.ui.Model; +import org.springframework.validation.BindingResult; +import org.springframework.web.bind.WebDataBinder; +import org.springframework.web.bind.annotation.DeleteMapping; +import org.springframework.web.bind.annotation.GetMapping; +import org.springframework.web.bind.annotation.InitBinder; +import org.springframework.web.bind.annotation.ModelAttribute; +import org.springframework.web.bind.annotation.PathVariable; +import org.springframework.web.bind.annotation.PutMapping; +import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.RequestParam; +import org.springframework.web.bind.annotation.ResponseBody; +import org.springframework.web.servlet.ModelAndView; +import org.springframework.web.util.UriComponents; + +privileged aspect BooksItemThymeleafController_Roo_Thymeleaf { + + declare @type: BooksItemThymeleafController: @Controller; + + declare @type: BooksItemThymeleafController: @RequestMapping(value = "/books/{book}", name = "BooksItemThymeleafController", produces = MediaType.TEXT_HTML_VALUE); + + /** + * TODO Auto-generated attribute documentation + * + */ + private MessageSource BooksItemThymeleafController.messageSource; + + /** + * TODO Auto-generated attribute documentation + * + */ + private MethodLinkBuilderFactory BooksItemThymeleafController.itemLink; + + /** + * TODO Auto-generated constructor documentation + * + * @param bookService + * @param messageSource + * @param linkBuilder + */ + @Autowired + public BooksItemThymeleafController.new(BookService bookService, MessageSource messageSource, ControllerMethodLinkBuilderFactory linkBuilder) { + setBookService(bookService); + setMessageSource(messageSource); + setItemLink(linkBuilder.of(BooksItemThymeleafController.class)); + } + + /** + * TODO Auto-generated method documentation + * + * @return MessageSource + */ + public MessageSource BooksItemThymeleafController.getMessageSource() { + return messageSource; + } + + /** + * TODO Auto-generated method documentation + * + * @param messageSource + */ + public void BooksItemThymeleafController.setMessageSource(MessageSource messageSource) { + this.messageSource = messageSource; + } + + /** + * TODO Auto-generated method documentation + * + * @return MethodLinkBuilderFactory + */ + public MethodLinkBuilderFactory BooksItemThymeleafController.getItemLink() { + return itemLink; + } + + /** + * TODO Auto-generated method documentation + * + * @param itemLink + */ + public void BooksItemThymeleafController.setItemLink(MethodLinkBuilderFactory itemLink) { + this.itemLink = itemLink; + } + + /** + * TODO Auto-generated method documentation + * + * @param id + * @param locale + * @param method + * @return Book + */ + @ModelAttribute + public Book BooksItemThymeleafController.getBook(@PathVariable("book") Long id, Locale locale, HttpMethod method) { + Book book = null; + if (HttpMethod.PUT.equals(method)) { + book = bookService.findOneForUpdate(id); + } else { + book = bookService.findOne(id); + } + + if (book == null) { + String message = messageSource.getMessage("error_NotFound", new Object[] {"Book", id}, "The record couldn't be found", locale); + throw new NotFoundException(message); + } + return book; + } + + /** + * TODO Auto-generated method documentation + * + * @param book + * @param model + * @return ModelAndView + */ + @GetMapping(name = "show") + public ModelAndView BooksItemThymeleafController.show(@ModelAttribute Book book, Model model) { + model.addAttribute("book", book); + return new ModelAndView("books/show"); + } + + /** + * TODO Auto-generated method documentation + * + * @param book + * @param model + * @return ModelAndView + */ + @GetMapping(value = "/inline", name = "showInline") + public ModelAndView BooksItemThymeleafController.showInline(@ModelAttribute Book book, Model model) { + model.addAttribute("book", book); + return new ModelAndView("books/showInline :: inline-content"); + } + + /** + * TODO Auto-generated method documentation + * + * @param dataBinder + */ + @InitBinder("book") + public void BooksItemThymeleafController.initBookBinder(WebDataBinder dataBinder) { + dataBinder.setDisallowedFields("id"); + } + + /** + * TODO Auto-generated method documentation + * + * @param model + */ + public void BooksItemThymeleafController.populateFormats(Model model) { + model.addAttribute("application_locale", LocaleContextHolder.getLocale().getLanguage()); + } + + /** + * TODO Auto-generated method documentation + * + * @param model + */ + public void BooksItemThymeleafController.populateForm(Model model) { + populateFormats(model); + } + + /** + * TODO Auto-generated method documentation + * + * @param book + * @param model + * @return ModelAndView + */ + @GetMapping(value = "/edit-form", name = "editForm") + public ModelAndView BooksItemThymeleafController.editForm(@ModelAttribute Book book, Model model) { + populateForm(model); + + model.addAttribute("book", book); + return new ModelAndView("books/edit"); + } + + /** + * TODO Auto-generated method documentation + * + * @param book + * @param version + * @param concurrencyControl + * @param result + * @param model + * @return ModelAndView + */ + @PutMapping(name = "update") + public ModelAndView BooksItemThymeleafController.update(@Valid @ModelAttribute Book book, @RequestParam("version") Integer version, @RequestParam(value = "concurrency", required = false, defaultValue = "") String concurrencyControl, BindingResult result, Model model) { + // Check if provided form contain errors + if (result.hasErrors()) { + populateForm(model); + + return new ModelAndView("books/edit"); + } + // Concurrency control + Book existingBook = getBookService().findOne(book.getId()); + if(book.getVersion() != existingBook.getVersion() && StringUtils.isEmpty(concurrencyControl)){ + populateForm(model); + model.addAttribute("book", book); + model.addAttribute("concurrency", true); + return new ModelAndView("books/edit"); + } else if(book.getVersion() != existingBook.getVersion() && "discard".equals(concurrencyControl)){ + populateForm(model); + model.addAttribute("book", existingBook); + model.addAttribute("concurrency", false); + return new ModelAndView("books/edit"); + } else if(book.getVersion() != existingBook.getVersion() && "apply".equals(concurrencyControl)){ + // Update the version field to be able to override the existing values + book.setVersion(existingBook.getVersion()); + } + Book savedBook = getBookService().save(book); + UriComponents showURI = getItemLink().to(BooksItemThymeleafLinkFactory.SHOW).with("book", savedBook.getId()).toUri(); + return new ModelAndView("redirect:" + showURI.toUriString()); + } + + /** + * TODO Auto-generated method documentation + * + * @param book + * @return ResponseEntity + */ + @ResponseBody + @DeleteMapping(name = "delete") + public ResponseEntity BooksItemThymeleafController.delete(@ModelAttribute Book book) { + getBookService().delete(book); + return ResponseEntity.ok().build(); + } + +} diff --git a/roo/src/main/java/com/baeldung/web/BooksItemThymeleafLinkFactory.java b/roo/src/main/java/com/baeldung/web/BooksItemThymeleafLinkFactory.java new file mode 100644 index 0000000000..5b69306868 --- /dev/null +++ b/roo/src/main/java/com/baeldung/web/BooksItemThymeleafLinkFactory.java @@ -0,0 +1,11 @@ +package com.baeldung.web; +import org.springframework.roo.addon.web.mvc.thymeleaf.annotations.RooLinkFactory; + +/** + * = BooksItemThymeleafLinkFactory + TODO Auto-generated class documentation + * + */ +@RooLinkFactory(controller = BooksItemThymeleafController.class) +public class BooksItemThymeleafLinkFactory { +} diff --git a/roo/src/main/java/com/baeldung/web/BooksItemThymeleafLinkFactory_Roo_LinkFactory.aj b/roo/src/main/java/com/baeldung/web/BooksItemThymeleafLinkFactory_Roo_LinkFactory.aj new file mode 100644 index 0000000000..fd68866587 --- /dev/null +++ b/roo/src/main/java/com/baeldung/web/BooksItemThymeleafLinkFactory_Roo_LinkFactory.aj @@ -0,0 +1,86 @@ +// WARNING: DO NOT EDIT THIS FILE. THIS FILE IS MANAGED BY SPRING ROO. +// You may push code into the target .java compilation unit if you wish to edit any member(s). + +package com.baeldung.web; + +import com.baeldung.web.BooksItemThymeleafController; +import com.baeldung.web.BooksItemThymeleafLinkFactory; +import io.springlets.web.mvc.util.MethodLinkFactory; +import io.springlets.web.mvc.util.SpringletsMvcUriComponentsBuilder; +import java.util.Map; +import org.springframework.stereotype.Component; +import org.springframework.web.util.UriComponents; + +privileged aspect BooksItemThymeleafLinkFactory_Roo_LinkFactory { + + declare parents: BooksItemThymeleafLinkFactory implements MethodLinkFactory; + + declare @type: BooksItemThymeleafLinkFactory: @Component; + + /** + * TODO Auto-generated attribute documentation + * + */ + public static final String BooksItemThymeleafLinkFactory.SHOW = "show"; + + /** + * TODO Auto-generated attribute documentation + * + */ + public static final String BooksItemThymeleafLinkFactory.SHOWINLINE = "showInline"; + + /** + * TODO Auto-generated attribute documentation + * + */ + public static final String BooksItemThymeleafLinkFactory.EDITFORM = "editForm"; + + /** + * TODO Auto-generated attribute documentation + * + */ + public static final String BooksItemThymeleafLinkFactory.UPDATE = "update"; + + /** + * TODO Auto-generated attribute documentation + * + */ + public static final String BooksItemThymeleafLinkFactory.DELETE = "delete"; + + /** + * TODO Auto-generated method documentation + * + * @return Class + */ + public Class BooksItemThymeleafLinkFactory.getControllerClass() { + return BooksItemThymeleafController.class; + } + + /** + * TODO Auto-generated method documentation + * + * @param methodName + * @param parameters + * @param pathVariables + * @return UriComponents + */ + public UriComponents BooksItemThymeleafLinkFactory.toUri(String methodName, Object[] parameters, Map pathVariables) { + if (methodName.equals(SHOW)) { + return SpringletsMvcUriComponentsBuilder.fromMethodCall(SpringletsMvcUriComponentsBuilder.on(getControllerClass()).show(null, null)).buildAndExpand(pathVariables); + } + if (methodName.equals(SHOWINLINE)) { + return SpringletsMvcUriComponentsBuilder.fromMethodCall(SpringletsMvcUriComponentsBuilder.on(getControllerClass()).showInline(null, null)).buildAndExpand(pathVariables); + } + if (methodName.equals(EDITFORM)) { + return SpringletsMvcUriComponentsBuilder.fromMethodCall(SpringletsMvcUriComponentsBuilder.on(getControllerClass()).editForm(null, null)).buildAndExpand(pathVariables); + } + if (methodName.equals(UPDATE)) { + return SpringletsMvcUriComponentsBuilder.fromMethodCall(SpringletsMvcUriComponentsBuilder.on(getControllerClass()).update(null, null, null, null, null)).buildAndExpand(pathVariables); + } + if (methodName.equals(DELETE)) { + return SpringletsMvcUriComponentsBuilder.fromMethodCall(SpringletsMvcUriComponentsBuilder.on(getControllerClass()).delete(null)).buildAndExpand(pathVariables); + } + throw new IllegalArgumentException("Invalid method name: " + methodName); + } + +} diff --git a/roo/src/main/java/com/baeldung/web/MainController.java b/roo/src/main/java/com/baeldung/web/MainController.java new file mode 100644 index 0000000000..bf2038b4a1 --- /dev/null +++ b/roo/src/main/java/com/baeldung/web/MainController.java @@ -0,0 +1,11 @@ +package com.baeldung.web; +import org.springframework.roo.addon.web.mvc.thymeleaf.annotations.RooThymeleafMainController; + +/** + * = MainController + TODO Auto-generated class documentation + * + */ +@RooThymeleafMainController +public class MainController { +} diff --git a/roo/src/main/java/com/baeldung/web/MainController_Roo_Thymeleaf_MainController.aj b/roo/src/main/java/com/baeldung/web/MainController_Roo_Thymeleaf_MainController.aj new file mode 100644 index 0000000000..58f0466ed9 --- /dev/null +++ b/roo/src/main/java/com/baeldung/web/MainController_Roo_Thymeleaf_MainController.aj @@ -0,0 +1,59 @@ +// WARNING: DO NOT EDIT THIS FILE. THIS FILE IS MANAGED BY SPRING ROO. +// You may push code into the target .java compilation unit if you wish to edit any member(s). + +package com.baeldung.web; + +import com.baeldung.web.MainController; +import io.springlets.web.NotFoundException; +import org.springframework.context.i18n.LocaleContextHolder; +import org.springframework.stereotype.Controller; +import org.springframework.ui.Model; +import org.springframework.util.StringUtils; +import org.springframework.web.bind.annotation.GetMapping; +import org.springframework.web.bind.annotation.PathVariable; +import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.RequestMethod; + +privileged aspect MainController_Roo_Thymeleaf_MainController { + + declare @type: MainController: @Controller; + + /** + * TODO Auto-generated method documentation + * + * @param model + * @return String + */ + @GetMapping("/") + public String MainController.index(Model model) { + model.addAttribute("application_locale", LocaleContextHolder.getLocale().getLanguage()); + return "index"; + } + + /** + * TODO Auto-generated method documentation + * + * @param model + * @return String + */ + @GetMapping("/accessibility") + public String MainController.accessibility(Model model) { + model.addAttribute("application_locale", LocaleContextHolder.getLocale().getLanguage()); + return "accessibility"; + } + + /** + * TODO Auto-generated method documentation + * + * @param template + * @return String + */ + @RequestMapping(value = "/js/{template}.js", method = RequestMethod.GET) + public String MainController.javascriptTemplates(@PathVariable("template") String template) { + if (StringUtils.hasLength(template)) { + return template.concat(".js"); + } + throw new NotFoundException("File not found"); + } + +} diff --git a/roo/src/main/java/com/baeldung/web/reports/ExportingErrorException.java b/roo/src/main/java/com/baeldung/web/reports/ExportingErrorException.java new file mode 100644 index 0000000000..a8c2eca5cc --- /dev/null +++ b/roo/src/main/java/com/baeldung/web/reports/ExportingErrorException.java @@ -0,0 +1,19 @@ +package com.baeldung.web.reports; + +import org.springframework.http.HttpStatus; +import org.springframework.web.bind.annotation.ResponseStatus; + +@ResponseStatus(HttpStatus.INTERNAL_SERVER_ERROR) +public class ExportingErrorException extends RuntimeException { + + private static final long serialVersionUID = 4075788919321977605L; + + public ExportingErrorException() { + super("Error while trying to export data to file."); + } + + public ExportingErrorException(String message) { + super(message); + } + +} diff --git a/roo/src/main/java/com/baeldung/web/reports/JasperReportsCsvExporter.java b/roo/src/main/java/com/baeldung/web/reports/JasperReportsCsvExporter.java new file mode 100644 index 0000000000..5ea23e16cc --- /dev/null +++ b/roo/src/main/java/com/baeldung/web/reports/JasperReportsCsvExporter.java @@ -0,0 +1,71 @@ +package com.baeldung.web.reports; + +import java.io.ByteArrayOutputStream; +import java.io.IOException; + +import javax.servlet.ServletOutputStream; +import javax.servlet.http.HttpServletResponse; + +import net.sf.jasperreports.engine.JRException; +import net.sf.jasperreports.engine.JRExporterParameter; +import net.sf.jasperreports.engine.JasperPrint; +import net.sf.jasperreports.engine.export.JRCsvExporter; + +/** + * = JasperReportsCsvExporter + * + * A JasperReports exporter to export the report in CSV formats. This class + * implements the interface {@link JasperReportsExporter} + */ +public class JasperReportsCsvExporter implements JasperReportsExporter { + + /** + * Generates a ByteArrayOutputStream from the provided JasperReport using + * the {@link JRCsvExporter}. After that, the generated bytes array is + * written in the {@link HttpServletResponse} + * + * @param jp + * The generated JasperReport. + * @param fileName + * The fileName of the exported JasperReport + * @param response + * The HttpServletResponse where generated report has been + * written + * @throws JRException + * during JasperReport export. + * @throws IOException + * when writes the ByteArrayOutputStream into the + * HttpServletResponse + */ + @Override + public void export(JasperPrint jp, String fileName, HttpServletResponse response) throws JRException, IOException { + + ByteArrayOutputStream baos = new ByteArrayOutputStream(); + + // Create a JRCsvExporter instance + JRCsvExporter exporter = new JRCsvExporter(); + + // Here we assign the parameters jp and baos to the exporter + exporter.setParameter(JRExporterParameter.JASPER_PRINT, jp); + exporter.setParameter(JRExporterParameter.OUTPUT_STREAM, baos); + + // Retrieve the exported report in PDF format + exporter.exportReport(); + + // Specifies the response header + response.setHeader("Content-Disposition", "inline; filename=" + fileName); + + // Make sure to set the correct content type + // Each format has its own content type + response.setContentType("text/csv"); + response.setContentLength(baos.size()); + + // Retrieve the output stream + ServletOutputStream outputStream = response.getOutputStream(); + // Write to the output stream + baos.writeTo(outputStream); + // Flush the stream + outputStream.flush(); + + } +} \ No newline at end of file diff --git a/roo/src/main/java/com/baeldung/web/reports/JasperReportsExporter.java b/roo/src/main/java/com/baeldung/web/reports/JasperReportsExporter.java new file mode 100644 index 0000000000..32892df447 --- /dev/null +++ b/roo/src/main/java/com/baeldung/web/reports/JasperReportsExporter.java @@ -0,0 +1,41 @@ +package com.baeldung.web.reports; + +import java.io.IOException; + +import javax.servlet.http.HttpServletResponse; + +import net.sf.jasperreports.engine.JRException; +import net.sf.jasperreports.engine.JasperPrint; +import net.sf.jasperreports.export.Exporter; + +/** + * = JasperReportsExporter + * + * This interface defines the operations for a JasperReport exporter. + * + * JasperReports library already provides an Exporter interface called + * {@link Exporter}. However, it doesn't provides an operation that writes the + * exported JasperReport into the {@link HttpServletResponse}. + */ +public interface JasperReportsExporter { + + /** + * This operation must be implemented by every JasperReport exporter to be + * able to write a generated report into a the {@link HttpServletResponse}}. + * + * @param jp + * The generated JasperReport. + * @param fileName + * The fileName of the exported JasperReport + * @param response + * The HttpServletResponse where generated report has been + * written + * @throws JRException + * during JasperReport export. + * @throws IOException + * when writes the ByteArrayOutputStream into the + * HttpServletResponse + */ + public void export(JasperPrint jp, String fileName, HttpServletResponse response) throws JRException, IOException; + +} \ No newline at end of file diff --git a/roo/src/main/java/com/baeldung/web/reports/JasperReportsPdfExporter.java b/roo/src/main/java/com/baeldung/web/reports/JasperReportsPdfExporter.java new file mode 100644 index 0000000000..ae1e2d8ee0 --- /dev/null +++ b/roo/src/main/java/com/baeldung/web/reports/JasperReportsPdfExporter.java @@ -0,0 +1,71 @@ +package com.baeldung.web.reports; + +import java.io.ByteArrayOutputStream; +import java.io.IOException; + +import javax.servlet.ServletOutputStream; +import javax.servlet.http.HttpServletResponse; + +import net.sf.jasperreports.engine.JRException; +import net.sf.jasperreports.engine.JRExporterParameter; +import net.sf.jasperreports.engine.JasperPrint; +import net.sf.jasperreports.engine.export.JRPdfExporter; + +/** + * = JasperReportsPdfExporter + * + * A JasperReports exporter to export the report in PDF formats. This class + * implements the interface {@link JasperReportsExporter} + */ +public class JasperReportsPdfExporter implements JasperReportsExporter { + + /** + * Generates a ByteArrayOutputStream from the provided JasperReport using + * the {@link JRPdfExporter}. After that, the generated bytes array is + * written in the {@link HttpServletResponse} + * + * @param jp + * The generated JasperReport. + * @param fileName + * The fileName of the exported JasperReport + * @param response + * The HttpServletResponse where generated report has been + * written + * @throws JRException + * during JasperReport export. + * @throws IOException + * when writes the ByteArrayOutputStream into the + * HttpServletResponse + */ + @Override + public void export(JasperPrint jp, String fileName, HttpServletResponse response) throws JRException, IOException { + + ByteArrayOutputStream baos = new ByteArrayOutputStream(); + + // Create a JRPdfExporter instance + JRPdfExporter exporter = new JRPdfExporter(); + + // Here we assign the parameters jp and baos to the exporter + exporter.setParameter(JRExporterParameter.JASPER_PRINT, jp); + exporter.setParameter(JRExporterParameter.OUTPUT_STREAM, baos); + + // Retrieve the exported report in PDF format + exporter.exportReport(); + + // Specifies the response header + response.setHeader("Content-Disposition", "inline; filename=" + fileName); + + // Make sure to set the correct content type + // Each format has its own content type + response.setContentType("application/pdf"); + response.setContentLength(baos.size()); + + // Retrieve the output stream + ServletOutputStream outputStream = response.getOutputStream(); + // Write to the output stream + baos.writeTo(outputStream); + // Flush the stream + outputStream.flush(); + + } +} \ No newline at end of file diff --git a/roo/src/main/java/com/baeldung/web/reports/JasperReportsXlsExporter.java b/roo/src/main/java/com/baeldung/web/reports/JasperReportsXlsExporter.java new file mode 100644 index 0000000000..1855d1c93c --- /dev/null +++ b/roo/src/main/java/com/baeldung/web/reports/JasperReportsXlsExporter.java @@ -0,0 +1,77 @@ +package com.baeldung.web.reports; + +import java.io.ByteArrayOutputStream; +import java.io.IOException; + +import javax.servlet.ServletOutputStream; +import javax.servlet.http.HttpServletResponse; + +import net.sf.jasperreports.engine.JRException; +import net.sf.jasperreports.engine.JRExporterParameter; +import net.sf.jasperreports.engine.JasperPrint; +import net.sf.jasperreports.engine.export.JRXlsAbstractExporterParameter; +import net.sf.jasperreports.engine.export.JRXlsExporter; + +/** + * = JasperReportsXlsExporter + * + * A JasperReports exporter to export the report in XLS formats. This class + * implements the interface {@link JasperReportsExporter} + */ +public class JasperReportsXlsExporter implements JasperReportsExporter { + + /** + * Generates a ByteArrayOutputStream from the provided JasperReport using + * the {@link JRXlsExporter}. After that, the generated bytes array is + * written in the {@link HttpServletResponse} + * + * @param jp + * The generated JasperReport. + * @param fileName + * The fileName of the exported JasperReport + * @param response + * The HttpServletResponse where generated report has been + * written + * @throws JRException + * during JasperReport export. + * @throws IOException + * when writes the ByteArrayOutputStream into the + * HttpServletResponse + */ + @Override + public void export(JasperPrint jp, String fileName, HttpServletResponse response) throws JRException, IOException { + + ByteArrayOutputStream baos = new ByteArrayOutputStream(); + + // Create a JRXlsExporter instance + JRXlsExporter exporter = new JRXlsExporter(); + + // Here we assign the parameters jp and baos to the exporter + exporter.setParameter(JRExporterParameter.JASPER_PRINT, jp); + exporter.setParameter(JRExporterParameter.OUTPUT_STREAM, baos); + + // Excel specific parameters + exporter.setParameter(JRXlsAbstractExporterParameter.IS_ONE_PAGE_PER_SHEET, Boolean.FALSE); + exporter.setParameter(JRXlsAbstractExporterParameter.IS_REMOVE_EMPTY_SPACE_BETWEEN_ROWS, Boolean.TRUE); + exporter.setParameter(JRXlsAbstractExporterParameter.IS_WHITE_PAGE_BACKGROUND, Boolean.FALSE); + + // Retrieve the exported report in PDF format + exporter.exportReport(); + + // Specifies the response header + response.setHeader("Content-Disposition", "inline; filename=" + fileName); + + // Make sure to set the correct content type + // Each format has its own content type + response.setContentType("application/vnd.ms-excel"); + response.setContentLength(baos.size()); + + // Retrieve the output stream + ServletOutputStream outputStream = response.getOutputStream(); + // Write to the output stream + baos.writeTo(outputStream); + // Flush the stream + outputStream.flush(); + + } +} \ No newline at end of file diff --git a/roo/src/main/resources/application-dev.properties b/roo/src/main/resources/application-dev.properties new file mode 100644 index 0000000000..6723cabefa --- /dev/null +++ b/roo/src/main/resources/application-dev.properties @@ -0,0 +1,13 @@ +#Updated at Tue Apr 04 15:03:52 BST 2017 +#Tue Apr 04 15:03:52 BST 2017 +logging.file= +logging.level.com.baeldung=DEBUG +logging.level.com.querydsl.jpa.impl.JPAQuery=DEBUG +logging.level.org.hibernate.stat=DEBUG +logging.pattern.level=%5p - QP\:%X{querydsl.parameters} - +spring.jackson.serialization.indent-output=true +spring.jpa.properties.hibernate.format_sql=true +spring.jpa.properties.hibernate.generate_statistics=true +spring.jpa.show-sql=true +spring.messages.cache-seconds=0 +spring.thymeleaf.mode=html diff --git a/roo/src/main/resources/application.properties b/roo/src/main/resources/application.properties new file mode 100644 index 0000000000..77eaa5f3fc --- /dev/null +++ b/roo/src/main/resources/application.properties @@ -0,0 +1,8 @@ +#Updated at Tue Apr 04 15:03:53 BST 2017 +#Tue Apr 04 15:03:53 BST 2017 +spring.datasource.driver-class-name=org.hsqldb.jdbcDriver +spring.datasource.url=jdbc\:hsqldb\:mem\:roo +spring.jpa.hibernate.naming.strategy=org.hibernate.cfg.ImprovedNamingStrategy +spring.messages.encoding=ISO-8859-1 +spring.messages.fallback-to-system-locale=false +spring.thymeleaf.mode=html diff --git a/roo/src/main/resources/banner.txt b/roo/src/main/resources/banner.txt new file mode 100644 index 0000000000..dd2932f7aa --- /dev/null +++ b/roo/src/main/resources/banner.txt @@ -0,0 +1,9 @@ +${AnsiColor.GREEN} _ + ___ _ __ _ __(_)_ __ __ _ _ __ ___ ___ +/ __| '_ \| '__| | '_ \ / _` | | '__/ _ \ / _ \ +\__ \ |_) | | | | | | | (_| | | | | (_) | (_) | +|___/ .__/|_| |_|_| |_|\__, | |_| \___/ \___/ + |_| |___/ + +${AnsiColor.BRIGHT_RED}Spring application made with Spring Roo 2.0 +Doubts? http://projects.spring.io/spring-roo/${AnsiColor.DEFAULT} diff --git a/roo/src/main/resources/messages.properties b/roo/src/main/resources/messages.properties new file mode 100644 index 0000000000..e61a266500 --- /dev/null +++ b/roo/src/main/resources/messages.properties @@ -0,0 +1,146 @@ +#Updated at Tue Apr 04 15:04:02 BST 2017 +#Tue Apr 04 15:04:02 BST 2017 +error_NotFound={0} with identifier ''{1}'' not found. +error_NotNull=Required. +error_Size=The field must be between {2} and {1} characters long. +error_datatables_loading=An error happened while loading list data +error_deleting_item=Error deleting selected item. +error_deleting_item_with_relationships=To delete the selected item, must delete its related elements before. +error_expired_session=Your session has been expired +error_export_empty=No data available to generate a report +error_invalid_date=Please enter a correct date/time +error_invalid_maskValue=Please enter a valid value +error_login=Invalid user and password +help_login=Enter your login and password +info_author=Spring Roo development team +info_closed_session=Log out correctly +info_delete_batch_confirm=Are you sure want to delete the selected items? +info_delete_item_confirm=Are you sure want to delete this item? +info_deleted_item_problem=Error deleting item +info_deleted_items_batch=Deleted items +info_deleted_items_number=Deleted items {0} +info_description=Spring Roo, a next-generation rapid application development tool for Java developers. With Roo you can easily build full Java applications in minutes. +info_error=An unexpected error has occurred +info_homepage_header=With Roo you can easily build full Java applications in minutes. +info_homepage_paragraph=Spring Roo is a next-generation rapid application development tool for Java developers.\nIt focuses on higher productivity, stock-standard Java APIs, high usability, avoiding engineering trade-offs and \nfacilitating easy Roo removal. +info_homepage_project=Hello, this is your home page. +info_homepage_thanks=Thanks for your interest in Spring Roo\! +info_no_deleted_item=No deleted item. +info_no_exist_item=Item doesn't exist. +info_security_login=You tried to access a restricted area of our application. By default, you can log in with +info_select_an_option=Select an option +info_spring_code=Known, modify and redistribute the source code. +info_spring_documentation=If you are looking for Reference Documentation you can get it here. +info_spring_site=All the info about Spring Roo development. +info_spring_support=If you have any question about the project, \nyou can check it. +info_twitter=As always, you can find us also on +label_accessibility=Accessibility +label_accessibility_alt=Level Double-A conformance, W3C WAI Web Content Accessibility Guidelines 2.0 +label_accessibility_lead=Accessibility policy application +label_accessibility_text=

Spring Roo Application is committed to ensuring the accessibility of its web content to people with disabilities. All of the content on our website will meet W3C WAI's Web Content Accessibility Guidelines 2.0, Level AA conformance. Any issues should be reported to springroo@disid.com.

The technologies that is depended to access the accessible content are HTML, CSS and Javascript.

+label_accessibility_title=Explanation of WCAG 2.0 Level Double-A Conformance +label_actions=Actions +label_add_entity=Add {0} +label_back=Back +label_book=Book +label_book_author=Author +label_book_id=Id +label_book_isbn=Isbn +label_book_iterable_to_add_cant_be_null_message=I T E R A B L E_ T O_ A D D_ C A N T_ B E_ N U L L_ M E S S A G E +label_book_iterable_to_remove_cant_be_null_message=I T E R A B L E_ T O_ R E M O V E_ C A N T_ B E_ N U L L_ M E S S A G E +label_book_plural=Books +label_book_title=Title +label_book_version=Version +label_change_password=Change password +label_close=Close +label_code=Code +label_concurrency_apply=Apply my changes anyway +label_concurrency_apply_info=(discard all the changes applied by the other users). +label_concurrency_discard=Discard all my changes and reload this record. +label_concurrency_title=Warning\! This record has been updated by another user. +label_contact=Contact +label_create=Create +label_create_entity=Create {0} +label_data_entity={0} data +label_datatables_add=Add +label_datatables_columns=Columns +label_datatables_decimal=. +label_datatables_delete=Delete +label_datatables_emptyTable=No data available in table +label_datatables_first=First +label_datatables_info=Showing _START_ to _END_ of _TOTAL_ entries +label_datatables_infoEmpty=Showing 0 to 0 of 0 entries +label_datatables_infoFiltered=(filtered from _MAX_ total entries) +label_datatables_infoPostFix= +label_datatables_last=Last +label_datatables_lengthMenu=Show _MENU_ entries +label_datatables_loadingRecords=Loading... +label_datatables_loading_error=An error happened while loading list data +label_datatables_next=Next +label_datatables_previous=Previous +label_datatables_processing=Processing... +label_datatables_search=Search\: +label_datatables_selectedRow=1 selected row +label_datatables_selectedRows=%d selected rows +label_datatables_showRows=Show %d rows +label_datatables_sortAscending=\: activate to sort column ascending +label_datatables_sortDescending=\: activate to sort column descending +label_datatables_thousands= +label_datatables_zeroRecords=No matching records found +label_delete=Delete +label_delete_entity=Delete {0} +label_documentation=Doc +label_edit=Edit +label_edit_entity=Edit {0} +label_edit_search=Edit search +label_entities_found={0} found +label_error=Error +label_errorpage=Error page +label_errorpage_header=\u00C2\u00A1Error\! +label_exit=Exit +label_export_empty_error=Empty report +label_filtered_by=Filtered By +label_goBack=Go Back +label_goEdit=Go to the editing page +label_goHome=Go to homepage +label_gotoGithub=Go to Spring Roo page in GitHub +label_gotoLanguage=Display website in +label_gotowebsite=Go to Spring Roo website +label_help=Help +label_inputmask_groupSeparator=, +label_inputmask_prefix=$ +label_inputmask_radixPoint=. +label_inputmask_suffix= +label_last_access=Last Access {0} +label_list_entity=List {0} +label_list_of_entity=List of {0} +label_login=Login +label_login_password=Password +label_login_username=User +label_logout=Log out +label_menu_entry={0} +label_message=Message +label_not_filtered=Not Filtered +label_owasp_alt=Application developed and tested with OWASP +label_owasp_title=Application developed and tested with OWASP - Web Application Security Project +label_profile=Admin Profile +label_projectpage=Project Page +label_requiredfield=Required field +label_reset=Cancel +label_save=Save +label_search=Search +label_search_entity={0} searcher +label_show=Show +label_show_entity={0} card +label_spring_documentation=Spring Roo reference documentation +label_spring_site=Spring Roo project site +label_spring_sourcecode=Spring Roo source code +label_spring_support=Spring Roo Stackoverflow support +label_submit=Accept +label_support=Support +label_tools=Tools +label_user=User +language_label=Languages +language_label_en=English +language_label_es=Spanish +welcome_label=Welcome diff --git a/roo/src/main/resources/static/public/css/springroo.css b/roo/src/main/resources/static/public/css/springroo.css new file mode 100644 index 0000000000..2db8914ff1 --- /dev/null +++ b/roo/src/main/resources/static/public/css/springroo.css @@ -0,0 +1,475 @@ +/* CSS Theme Roo */ + +body { + background-color: #f1f1f1; + color: rgba(13,13,13,.65); + line-height: 1.8; + letter-spacing: .01em; +} +img {border: 0; max-width: 100%; outline: none;} +a{ + color: #6db33f; + transition: color 150ms ease; + } +a:focus, a:hover{ + outline: none; + color: #3f6824; + } +.content a:hover {text-decoration: underline} +.content a.btn-action:hover, +.content .paginate_button a:hover, +.content a.btn:hover {text-decoration: none;} + +.clearfix {clear: both;} + +/*--NAVBAR-------------*/ + +.navbar-header .organization-logo {vertical-align: middle; padding: 0.2em 1em;} +.navbar-header .application-name { color: #34302d;} +.navbar-header .application-name strong {} +.navbar-default .navbar-header .application-name a {text-decoration: none;} +.navbar-inverse .navbar-header .application-name a {color: #fff; text-decoration: none;} +.navbar-header .application-name small {} + +.dropdown-menu > li button.btn-link { + display: block; + padding: 3px 20px; + white-space: nowrap; + color: #333; + width: 100%; + text-align: left; +} +.dropdown-menu > li button.btn-link:hover, +.dropdown-menu > li button.btn-link:focus { + color: #262626; + text-decoration: none; + background-color: #f5f5f5; +} +.dropdown-menu > .active button.btn-link, +.dropdown-menu > .active button.btn-link:hover, +.dropdown-menu > .active button.btn-link:focus { + color: #262626; + text-decoration: none; + background-color: #f5f5f5; +} + +/*--FOOTER-------------*/ + +footer { padding: 1em 0 3em; text-align: center;} +footer p{font-size: 0.875em;} +footer a:hover, footer a:focus{text-decoration: none;} + + + +/*--HEADINGS-------------*/ + +.content h4,h5,h6 {color: #34302d;} + +/*--CONTENT-------------*/ + +/* second container */ +.content { + clear: both; + min-height: 26.3em; + display: block; + padding: 1em; + background: #fff; + box-shadow: 0 0 0 0,0 6px 12px rgba(34,34,34,.1); +} +.content > .panel{ +/* margin: 1em; */ +} + +/*--SHOW-------------*/ + +.content ul.list-unstyled li{ + margin: 0.25em 0; +} +.content ul.list-unstyled li{ + padding: 0.25em 0; +} +.content ul.list-unstyled li strong{ + min-width: 15%; + display: inline-block; + } +.content ul.list-unstyled li span{ + display: inline-block; + padding-left: 1em; +} +.content [id$="FieldSet"] h2{ + display: block; + width: 100%; + padding: 0; + margin-bottom: 20px; + font-size: 21px; + line-height: inherit; + color: inherit; + border-bottom: 1px solid #f1f1f1; +} +dd, dt { + margin: 0px 5px 5px 0px; +} + +/*--ALERTS-------------*/ + +.alert blockquote{ + margin: 0; + font-size: inherit; +} +.alert-info blockquote { + border-left-color: #31708f; +} +/*--FORMS-------------*/ + +legend{ + border-bottom: 1px solid #f1f1f1; +} +.form-horizontal .form-group input[type="radio"], +.form-horizontal .form-group input[type="checkbox"] { + margin-left: 0; +} + +/*--TABLES-------------*/ + +table.dataTable thead .sorting, +table.dataTable thead .sorting_asc, +table.dataTable thead .sorting_desc { + background-image: none; +} + +/** toolbars datatables **/ +div.dataTables_wrapper div.dataTables_paginate, +div.dataTables_wrapper div.dataTables_info{ + padding: 0; +} + +div.dataTables_wrapper div.dataTables_filter, +div.dataTables_wrapper div.dt-buttons.btn-group{ + padding: 1em 0; +} +.pagination{ + text-transform: none; +} +.dataTables_wrapper .dataTables_paginate .paginate_button{ + padding: 0; +} +.dataTables_wrapper .dataTables_paginate .paginate_button:hover { + background: none; +} +/** btn datatables **/ +table a.btn-action { + text-decoration: none; + color: #3e3f3a; +} +table .btn-action + .btn-action { + margin: 0 0 0 0.35em; +} +table a.btn-action:hover, +table a.btn-action:focus, +table a.btn-action:active { + color: #79a736; +} +table.dataTable.no-footer { + border-bottom: 1px solid #dfd7ca; +} + +div.dataTables_wrapper div.dataTables_processing { + position: absolute; + top: 50%; + left: 50%; + width: 200px; + margin-left: -100px; + margin-top: 16px; + padding: 0.5em 0; + height: 30px; + overflow: hidden; + border-radius: 4px; + -moz-animation: progress-bar-stripes 2s linear infinite; + -ms-animation: progress-bar-stripes 2s linear infinite; + -o-animation: progress-bar-stripes 2s linear infinite; + animation: progress-bar-stripes 2s linear infinite; + background-image: linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent); + background-size: 40px 40px; + font-size: 12px; + color: #ffffff; + text-align: center; + background-color: #428bca; + -webkit-box-shadow: inset 0 -1px 0 rgba(0, 0, 0, 0.15); + box-shadow: inset 0 -1px 0 rgba(0, 0, 0, 0.15); + -webkit-transition: width 0.6s ease; + transition: width 0.6s ease; +} +/*--BTN-------------*/ + +.btn-action:before { + font-family: 'FontAwesome'; + padding: 0 0.3em 0 0; +} +.btn-action.delete:before { + content:"\f014"; + } +.btn-action.edit:before, +.btn-action.modify:before { + content:"\f040"; + } +.btn-action.accept:before { + content:"\f00c"; + } +.btn-action.add:before { + content:"\f067"; + } +.btn-action.showInfo:before { + content:"\f06e"; +} +.alert a.btn{ + color: #555555; + text-decoration: none; +} + +/*-------------------INDEX-------------------*/ + +body.home .content{ + background: none; + padding: 0; + box-shadow: none; +} +body.home .box-center{ + padding: 1em 2em; + background: #fff; + box-shadow: 0 0 0 0,0 6px 12px rgba(34,34,34,.1); +} +body.home .navbar { margin-bottom: 0px;} + +/*--HEADER-------------*/ +.jumbotron { + min-height: 6.5em; + text-align: center; + vertical-align: middle; + margin-bottom: 2em; + background-color: #316128; + background-image: linear-gradient(120deg, #316128, #254211); + border-bottom: 1px solid #969595; + border: none; +} +.jumbotron.bg-banner { + min-height: 20em; + color: #fff; + text-align: center; + padding: 3em; + background-image: url(../img/geo.png); + background-repeat: no-repeat; + background-position: 50% 20%; + -webkit-background-size: cover; + -moz-background-size: cover; + -o-background-size: cover; + background-size: cover; +} +.jumbotron .project-name{ + color: #fff; + text-align: center; + font-size: 4em; +} +.jumbotron .project-tagline { + color: #fff; + margin-bottom: 2rem; + font-weight: normal; + opacity: 0.7; +} + +/*--SOCIAL LINKS-------------*/ + +.social-links a{ + color: #999; + text-decoration: none; + font-size: 1.5em; + margin: 0 0.15em; +} + +/*--BLOCKS----------------*/ + +.blocks { margin-top: 2em;} +.block-item { + box-shadow: 0 1px 1px rgba(0, 0, 0, 0.15); + position: relative; + margin-bottom: 30px; +} +.block-item .doc { + padding: 15px; + float: left; + font-size: 4em; +} +.block-item a{ + color: #fff; + cursor: pointer; +} +.block-item .text { + overflow: hidden; + color: rgba(255, 255, 255, 0.9); + padding: 16px 12px; +} +.block-item .text > h2 { + margin: 0; + line-height: 100%; + font-size: 22px; + font-weight: 300; + color: #fff; +} +.block-item .text > small { + margin-bottom: 2px; + display: block; +} +.block-item .text > p, +.block-item .text > h2 { + overflow: hidden; + text-overflow: ellipsis; + white-space: nowrap; +} +.block-item > .clearfix, +.block-item > .dl-horizontal dd, +.block-item > .container, +.block-item > .container-fluid, +.block-item > .row, +.block-item > .form-horizontal .form-group, +.block-item > .btn-toolbar, +.block-item > .btn-group-vertical > .btn-group, +.block-item > .nav, +.block-item > .navbar, +.block-item > .navbar-header, +.block-item > .navbar-collapse, +.block-item > .pager, +.block-item > .panel-body, +.block-item > .modal-header, +.block-item > .modal-footer { + position: relative; + z-index: 1; +} +.block-item:before { + -webkit-transition: width; + -o-transition: width; + transition: width; + -webkit-transition-duration: 500ms; + transition-duration: 500ms; + -webkit-backface-visibility: hidden; + -moz-backface-visibility: hidden; + backface-visibility: hidden; + content: ""; + width: 83px; + height: 100%; + background: rgba(0, 0, 0, 0.1); + position: absolute; + left: 0; + top: 0; +} +.block-item:hover .text {color: #fff !important;} +.block-item:hover:before { width: 100%;} + +/* + * Material Background Colors + */ + +.bgm-teal { background-color: #009688 !important;} +.bgm-red { background-color: #f44336 !important;} +.bgm-amber { background-color: #ffc107 !important;} +.bgm-bluegray {background-color: #607d8b !important;} + + +/* SANDSTONE THEME CUSTOM +-----------------------------------------------------------------------------*/ + +/*-- NAVBAR -------------*/ + +.navbar-default .navbar-header .application-name a {color: #fff; text-decoration: none;} + +.dropdown-menu > li button.btn-link { + clear: both; + font-size: 11px; + line-height: 22px; + font-weight: 500; + text-transform: uppercase; + color: #98978b; +} +.dropdown-menu > li button.btn-link:hover, +.dropdown-menu > li button.btn-link:focus { + color: #98978b; + background-color: #f8f5f0; +} +.dropdown-menu > .active button.btn-link, +.dropdown-menu > .active button.btn-link:hover, +.dropdown-menu > .active button.btn-link:focus { + color: #98978b; + background-color: #f8f5f0; +} + +/*-- SELECT2 -------------*/ + +.select2-container--bootstrap .select2-selection{ + height: 46px; + padding: 12px 16px; + font-size: 14px; + line-height: 1.42857143; + color: #3e3f3a; + background-color: #ffffff; + background-image: none; + border: 1px solid #dfd7ca; + border-radius: 4px; + -webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075); + box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075); + -webkit-transition: border-color ease-in-out .15s, -webkit-box-shadow ease-in-out .15s; + -o-transition: border-color ease-in-out .15s, box-shadow ease-in-out .15s; + transition: border-color ease-in-out .15s, box-shadow ease-in-out .15s; +} +.select2-container--bootstrap .select2-selection--multiple { + padding: 6px; +} +.select2-container--bootstrap .select2-selection--multiple .select2-selection__arrow, +.select2-container--bootstrap .select2-selection--multiple .select2-selection__placeholder, +.select2-container--bootstrap .select2-selection--single .select2-selection__arrow, +.select2-container--bootstrap .select2-selection--single .select2-selection__placeholder{ + color: #dfd7ca; + padding: 0; +} +.select2-container--bootstrap .select2-selection--multiple .select2-selection__arrow b, +.select2-container--bootstrap .select2-selection--single .select2-selection__arrow b { + border-color: #dfd7ca transparent transparent transparent; +} +/* align options in left */ +.select2-container--bootstrap .select2-selection--multiple .select2-selection__rendered{ + padding-right: 0.5em !important; +} +.select2-container--bootstrap .select2-selection--multiple .select2-selection__clear { + margin-right: 0 !important; +} + +/* MEDIA QUERIES +-------------------------------------------------------------------------------*/ + +@media print { + body {background: #fff;} + .content .main {width: 98%;} +} + +@media (max-width: 768px) { + .jumbotron .project-name{font-size: 3em;} + /* navbar fixes */ + .navbar-nav#entitiesMenuEntries { + max-width: 410px; + } +} + +@media (max-width: 992px){ + .navbar-nav.upper-nav > li > a {padding: 15px 5px} +} + +@media (min-width: 1020px){ + /* navbar fixes */ + .navbar-nav#entitiesMenuEntries { + max-width: 370px; + } +} + +@media (min-width: 1100px){ + /* navbar fixes */ + .navbar-nav#entitiesMenuEntries { + max-width: 50%; + } +} diff --git a/roo/src/main/resources/static/public/css/theme.css b/roo/src/main/resources/static/public/css/theme.css new file mode 100644 index 0000000000..02722dd20c --- /dev/null +++ b/roo/src/main/resources/static/public/css/theme.css @@ -0,0 +1,6914 @@ +@import url("https://fonts.googleapis.com/css?family=Roboto:400,500"); +/*! + * bootswatch v3.3.6 + * Homepage: http://bootswatch.com + * Copyright 2012-2015 Thomas Park + * Licensed under MIT + * Based on Bootstrap + * Sandstone theme +*/ +/*! + * Bootstrap v3.3.6 (http://getbootstrap.com) + * Copyright 2011-2015 Twitter, Inc. + * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE) + */ +/*! normalize.css v3.0.3 | MIT License | github.com/necolas/normalize.css */ +html { + font-family: sans-serif; + -ms-text-size-adjust: 100%; + -webkit-text-size-adjust: 100%; +} +body { + margin: 0; +} +article, +aside, +details, +figcaption, +figure, +footer, +header, +hgroup, +main, +menu, +nav, +section, +summary { + display: block; +} +audio, +canvas, +progress, +video { + display: inline-block; + vertical-align: baseline; +} +audio:not([controls]) { + display: none; + height: 0; +} +[hidden], +template { + display: none; +} +a { + background-color: transparent; +} +a:active, +a:hover { + outline: 0; +} +abbr[title] { + border-bottom: 1px dotted; +} +b, +strong { + font-weight: bold; +} +dfn { + font-style: italic; +} +h1 { + font-size: 2em; + margin: 0.67em 0; +} +/*mark { + background: #ff0; + color: #000; +}*/ +small { + font-size: 80%; +} +sub, +sup { + font-size: 75%; + line-height: 0; + position: relative; + vertical-align: baseline; +} +sup { + top: -0.5em; +} +sub { + bottom: -0.25em; +} +img { + border: 0; +} +svg:not(:root) { + overflow: hidden; +} +figure { + margin: 1em 40px; +} +hr { + -webkit-box-sizing: content-box; + -moz-box-sizing: content-box; + box-sizing: content-box; + height: 0; +} +pre { + overflow: auto; +} +code, +kbd, +pre, +samp { + font-family: monospace, monospace; + font-size: 1em; +} +button, +input, +optgroup, +select, +textarea { + color: inherit; + font: inherit; + margin: 0; +} +button { + overflow: visible; +} +button, +select { + text-transform: none; +} +button, +html input[type="button"], +input[type="reset"], +input[type="submit"] { + -webkit-appearance: button; + cursor: pointer; +} +button[disabled], +html input[disabled] { + cursor: default; +} +button::-moz-focus-inner, +input::-moz-focus-inner { + border: 0; + padding: 0; +} +input { + line-height: normal; +} +input[type="checkbox"], +input[type="radio"] { + -webkit-box-sizing: border-box; + -moz-box-sizing: border-box; + box-sizing: border-box; + padding: 0; +} +input[type="number"]::-webkit-inner-spin-button, +input[type="number"]::-webkit-outer-spin-button { + height: auto; +} +input[type="search"] { + -webkit-appearance: textfield; + -webkit-box-sizing: content-box; + -moz-box-sizing: content-box; + box-sizing: content-box; +} +input[type="search"]::-webkit-search-cancel-button, +input[type="search"]::-webkit-search-decoration { + -webkit-appearance: none; +} +fieldset { + border: 1px solid #c0c0c0; + margin: 0 2px; + padding: 0.35em 0.625em 0.75em; +} +legend { + border: 0; + padding: 0; +} +textarea { + overflow: auto; +} +optgroup { + font-weight: bold; +} +table { + border-collapse: collapse; + border-spacing: 0; +} +td, +th { + padding: 0; +} +/*! Source: https://github.com/h5bp/html5-boilerplate/blob/master/src/css/main.css */ +@media print { + *, + *:before, + *:after { + background: transparent !important; + color: #000 !important; + -webkit-box-shadow: none !important; + box-shadow: none !important; + text-shadow: none !important; + } + a, + a:visited { + text-decoration: underline; + } + a[href]:after { + content: " (" attr(href) ")"; + } + abbr[title]:after { + content: " (" attr(title) ")"; + } + a[href^="#"]:after, + a[href^="javascript:"]:after { + content: ""; + } + pre, + blockquote { + border: 1px solid #999; + page-break-inside: avoid; + } + thead { + display: table-header-group; + } + tr, + img { + page-break-inside: avoid; + } + img { + max-width: 100% !important; + } + p, + h2, + h3 { + orphans: 3; + widows: 3; + } + h2, + h3 { + page-break-after: avoid; + } + .navbar { + display: none; + } + .btn > .caret, + .dropup > .btn > .caret { + border-top-color: #000 !important; + } + .label { + border: 1px solid #000; + } + .table { + border-collapse: collapse !important; + } + .table td, + .table th { + background-color: #fff !important; + } + .table-bordered th, + .table-bordered td { + border: 1px solid #ddd !important; + } +} +/* @font-face { + font-family: 'Glyphicons Halflings'; + src: url('../fonts/glyphicons-halflings-regular.eot'); + src: url('../fonts/glyphicons-halflings-regular.eot?#iefix') format('embedded-opentype'), url('../fonts/glyphicons-halflings-regular.woff2') format('woff2'), url('../fonts/glyphicons-halflings-regular.woff') format('woff'), url('../fonts/glyphicons-halflings-regular.ttf') format('truetype'), url('../fonts/glyphicons-halflings-regular.svg#glyphicons_halflingsregular') format('svg'); +} */ +.glyphicon { + position: relative; + top: 1px; + display: inline-block; + font-family: 'Glyphicons Halflings'; + font-style: normal; + font-weight: normal; + line-height: 1; + -webkit-font-smoothing: antialiased; + -moz-osx-font-smoothing: grayscale; +} +.glyphicon-asterisk:before { + content: "\002a"; +} +.glyphicon-plus:before { + content: "\002b"; +} +.glyphicon-euro:before, +.glyphicon-eur:before { + content: "\20ac"; +} +.glyphicon-minus:before { + content: "\2212"; +} +.glyphicon-cloud:before { + content: "\2601"; +} +.glyphicon-envelope:before { + content: "\2709"; +} +.glyphicon-pencil:before { + content: "\270f"; +} +.glyphicon-glass:before { + content: "\e001"; +} +.glyphicon-music:before { + content: "\e002"; +} +.glyphicon-search:before { + content: "\e003"; +} +.glyphicon-heart:before { + content: "\e005"; +} +.glyphicon-star:before { + content: "\e006"; +} +.glyphicon-star-empty:before { + content: "\e007"; +} +.glyphicon-user:before { + content: "\e008"; +} +.glyphicon-film:before { + content: "\e009"; +} +.glyphicon-th-large:before { + content: "\e010"; +} +.glyphicon-th:before { + content: "\e011"; +} +.glyphicon-th-list:before { + content: "\e012"; +} +.glyphicon-ok:before { + content: "\e013"; +} +.glyphicon-remove:before { + content: "\e014"; +} +.glyphicon-zoom-in:before { + content: "\e015"; +} +.glyphicon-zoom-out:before { + content: "\e016"; +} +.glyphicon-off:before { + content: "\e017"; +} +.glyphicon-signal:before { + content: "\e018"; +} +.glyphicon-cog:before { + content: "\e019"; +} +.glyphicon-trash:before { + content: "\e020"; +} +.glyphicon-home:before { + content: "\e021"; +} +.glyphicon-file:before { + content: "\e022"; +} +.glyphicon-time:before { + content: "\e023"; +} +.glyphicon-road:before { + content: "\e024"; +} +.glyphicon-download-alt:before { + content: "\e025"; +} +.glyphicon-download:before { + content: "\e026"; +} +.glyphicon-upload:before { + content: "\e027"; +} +.glyphicon-inbox:before { + content: "\e028"; +} +.glyphicon-play-circle:before { + content: "\e029"; +} +.glyphicon-repeat:before { + content: "\e030"; +} +.glyphicon-refresh:before { + content: "\e031"; +} +.glyphicon-list-alt:before { + content: "\e032"; +} +.glyphicon-lock:before { + content: "\e033"; +} +.glyphicon-flag:before { + content: "\e034"; +} +.glyphicon-headphones:before { + content: "\e035"; +} +.glyphicon-volume-off:before { + content: "\e036"; +} +.glyphicon-volume-down:before { + content: "\e037"; +} +.glyphicon-volume-up:before { + content: "\e038"; +} +.glyphicon-qrcode:before { + content: "\e039"; +} +.glyphicon-barcode:before { + content: "\e040"; +} +.glyphicon-tag:before { + content: "\e041"; +} +.glyphicon-tags:before { + content: "\e042"; +} +.glyphicon-book:before { + content: "\e043"; +} +.glyphicon-bookmark:before { + content: "\e044"; +} +.glyphicon-print:before { + content: "\e045"; +} +.glyphicon-camera:before { + content: "\e046"; +} +.glyphicon-font:before { + content: "\e047"; +} +.glyphicon-bold:before { + content: "\e048"; +} +.glyphicon-italic:before { + content: "\e049"; +} +.glyphicon-text-height:before { + content: "\e050"; +} +.glyphicon-text-width:before { + content: "\e051"; +} +.glyphicon-align-left:before { + content: "\e052"; +} +.glyphicon-align-center:before { + content: "\e053"; +} +.glyphicon-align-right:before { + content: "\e054"; +} +.glyphicon-align-justify:before { + content: "\e055"; +} +.glyphicon-list:before { + content: "\e056"; +} +.glyphicon-indent-left:before { + content: "\e057"; +} +.glyphicon-indent-right:before { + content: "\e058"; +} +.glyphicon-facetime-video:before { + content: "\e059"; +} +.glyphicon-picture:before { + content: "\e060"; +} +.glyphicon-map-marker:before { + content: "\e062"; +} +.glyphicon-adjust:before { + content: "\e063"; +} +.glyphicon-tint:before { + content: "\e064"; +} +.glyphicon-edit:before { + content: "\e065"; +} +.glyphicon-share:before { + content: "\e066"; +} +.glyphicon-check:before { + content: "\e067"; +} +.glyphicon-move:before { + content: "\e068"; +} +.glyphicon-step-backward:before { + content: "\e069"; +} +.glyphicon-fast-backward:before { + content: "\e070"; +} +.glyphicon-backward:before { + content: "\e071"; +} +.glyphicon-play:before { + content: "\e072"; +} +.glyphicon-pause:before { + content: "\e073"; +} +.glyphicon-stop:before { + content: "\e074"; +} +.glyphicon-forward:before { + content: "\e075"; +} +.glyphicon-fast-forward:before { + content: "\e076"; +} +.glyphicon-step-forward:before { + content: "\e077"; +} +.glyphicon-eject:before { + content: "\e078"; +} +.glyphicon-chevron-left:before { + content: "\e079"; +} +.glyphicon-chevron-right:before { + content: "\e080"; +} +.glyphicon-plus-sign:before { + content: "\e081"; +} +.glyphicon-minus-sign:before { + content: "\e082"; +} +.glyphicon-remove-sign:before { + content: "\e083"; +} +.glyphicon-ok-sign:before { + content: "\e084"; +} +.glyphicon-question-sign:before { + content: "\e085"; +} +.glyphicon-info-sign:before { + content: "\e086"; +} +.glyphicon-screenshot:before { + content: "\e087"; +} +.glyphicon-remove-circle:before { + content: "\e088"; +} +.glyphicon-ok-circle:before { + content: "\e089"; +} +.glyphicon-ban-circle:before { + content: "\e090"; +} +.glyphicon-arrow-left:before { + content: "\e091"; +} +.glyphicon-arrow-right:before { + content: "\e092"; +} +.glyphicon-arrow-up:before { + content: "\e093"; +} +.glyphicon-arrow-down:before { + content: "\e094"; +} +.glyphicon-share-alt:before { + content: "\e095"; +} +.glyphicon-resize-full:before { + content: "\e096"; +} +.glyphicon-resize-small:before { + content: "\e097"; +} +.glyphicon-exclamation-sign:before { + content: "\e101"; +} +.glyphicon-gift:before { + content: "\e102"; +} +.glyphicon-leaf:before { + content: "\e103"; +} +.glyphicon-fire:before { + content: "\e104"; +} +.glyphicon-eye-open:before { + content: "\e105"; +} +.glyphicon-eye-close:before { + content: "\e106"; +} +.glyphicon-warning-sign:before { + content: "\e107"; +} +.glyphicon-plane:before { + content: "\e108"; +} +.glyphicon-calendar:before { + content: "\e109"; +} +.glyphicon-random:before { + content: "\e110"; +} +.glyphicon-comment:before { + content: "\e111"; +} +.glyphicon-magnet:before { + content: "\e112"; +} +.glyphicon-chevron-up:before { + content: "\e113"; +} +.glyphicon-chevron-down:before { + content: "\e114"; +} +.glyphicon-retweet:before { + content: "\e115"; +} +.glyphicon-shopping-cart:before { + content: "\e116"; +} +.glyphicon-folder-close:before { + content: "\e117"; +} +.glyphicon-folder-open:before { + content: "\e118"; +} +.glyphicon-resize-vertical:before { + content: "\e119"; +} +.glyphicon-resize-horizontal:before { + content: "\e120"; +} +.glyphicon-hdd:before { + content: "\e121"; +} +.glyphicon-bullhorn:before { + content: "\e122"; +} +.glyphicon-bell:before { + content: "\e123"; +} +.glyphicon-certificate:before { + content: "\e124"; +} +.glyphicon-thumbs-up:before { + content: "\e125"; +} +.glyphicon-thumbs-down:before { + content: "\e126"; +} +.glyphicon-hand-right:before { + content: "\e127"; +} +.glyphicon-hand-left:before { + content: "\e128"; +} +.glyphicon-hand-up:before { + content: "\e129"; +} +.glyphicon-hand-down:before { + content: "\e130"; +} +.glyphicon-circle-arrow-right:before { + content: "\e131"; +} +.glyphicon-circle-arrow-left:before { + content: "\e132"; +} +.glyphicon-circle-arrow-up:before { + content: "\e133"; +} +.glyphicon-circle-arrow-down:before { + content: "\e134"; +} +.glyphicon-globe:before { + content: "\e135"; +} +.glyphicon-wrench:before { + content: "\e136"; +} +.glyphicon-tasks:before { + content: "\e137"; +} +.glyphicon-filter:before { + content: "\e138"; +} +.glyphicon-briefcase:before { + content: "\e139"; +} +.glyphicon-fullscreen:before { + content: "\e140"; +} +.glyphicon-dashboard:before { + content: "\e141"; +} +.glyphicon-paperclip:before { + content: "\e142"; +} +.glyphicon-heart-empty:before { + content: "\e143"; +} +.glyphicon-link:before { + content: "\e144"; +} +.glyphicon-phone:before { + content: "\e145"; +} +.glyphicon-pushpin:before { + content: "\e146"; +} +.glyphicon-usd:before { + content: "\e148"; +} +.glyphicon-gbp:before { + content: "\e149"; +} +.glyphicon-sort:before { + content: "\e150"; +} +.glyphicon-sort-by-alphabet:before { + content: "\e151"; +} +.glyphicon-sort-by-alphabet-alt:before { + content: "\e152"; +} +.glyphicon-sort-by-order:before { + content: "\e153"; +} +.glyphicon-sort-by-order-alt:before { + content: "\e154"; +} +.glyphicon-sort-by-attributes:before { + content: "\e155"; +} +.glyphicon-sort-by-attributes-alt:before { + content: "\e156"; +} +.glyphicon-unchecked:before { + content: "\e157"; +} +.glyphicon-expand:before { + content: "\e158"; +} +.glyphicon-collapse-down:before { + content: "\e159"; +} +.glyphicon-collapse-up:before { + content: "\e160"; +} +.glyphicon-log-in:before { + content: "\e161"; +} +.glyphicon-flash:before { + content: "\e162"; +} +.glyphicon-log-out:before { + content: "\e163"; +} +.glyphicon-new-window:before { + content: "\e164"; +} +.glyphicon-record:before { + content: "\e165"; +} +.glyphicon-save:before { + content: "\e166"; +} +.glyphicon-open:before { + content: "\e167"; +} +.glyphicon-saved:before { + content: "\e168"; +} +.glyphicon-import:before { + content: "\e169"; +} +.glyphicon-export:before { + content: "\e170"; +} +.glyphicon-send:before { + content: "\e171"; +} +.glyphicon-floppy-disk:before { + content: "\e172"; +} +.glyphicon-floppy-saved:before { + content: "\e173"; +} +.glyphicon-floppy-remove:before { + content: "\e174"; +} +.glyphicon-floppy-save:before { + content: "\e175"; +} +.glyphicon-floppy-open:before { + content: "\e176"; +} +.glyphicon-credit-card:before { + content: "\e177"; +} +.glyphicon-transfer:before { + content: "\e178"; +} +.glyphicon-cutlery:before { + content: "\e179"; +} +.glyphicon-header:before { + content: "\e180"; +} +.glyphicon-compressed:before { + content: "\e181"; +} +.glyphicon-earphone:before { + content: "\e182"; +} +.glyphicon-phone-alt:before { + content: "\e183"; +} +.glyphicon-tower:before { + content: "\e184"; +} +.glyphicon-stats:before { + content: "\e185"; +} +.glyphicon-sd-video:before { + content: "\e186"; +} +.glyphicon-hd-video:before { + content: "\e187"; +} +.glyphicon-subtitles:before { + content: "\e188"; +} +.glyphicon-sound-stereo:before { + content: "\e189"; +} +.glyphicon-sound-dolby:before { + content: "\e190"; +} +.glyphicon-sound-5-1:before { + content: "\e191"; +} +.glyphicon-sound-6-1:before { + content: "\e192"; +} +.glyphicon-sound-7-1:before { + content: "\e193"; +} +.glyphicon-copyright-mark:before { + content: "\e194"; +} +.glyphicon-registration-mark:before { + content: "\e195"; +} +.glyphicon-cloud-download:before { + content: "\e197"; +} +.glyphicon-cloud-upload:before { + content: "\e198"; +} +.glyphicon-tree-conifer:before { + content: "\e199"; +} +.glyphicon-tree-deciduous:before { + content: "\e200"; +} +.glyphicon-cd:before { + content: "\e201"; +} +.glyphicon-save-file:before { + content: "\e202"; +} +.glyphicon-open-file:before { + content: "\e203"; +} +.glyphicon-level-up:before { + content: "\e204"; +} +.glyphicon-copy:before { + content: "\e205"; +} +.glyphicon-paste:before { + content: "\e206"; +} +.glyphicon-alert:before { + content: "\e209"; +} +.glyphicon-equalizer:before { + content: "\e210"; +} +.glyphicon-king:before { + content: "\e211"; +} +.glyphicon-queen:before { + content: "\e212"; +} +.glyphicon-pawn:before { + content: "\e213"; +} +.glyphicon-bishop:before { + content: "\e214"; +} +.glyphicon-knight:before { + content: "\e215"; +} +.glyphicon-baby-formula:before { + content: "\e216"; +} +.glyphicon-tent:before { + content: "\26fa"; +} +.glyphicon-blackboard:before { + content: "\e218"; +} +.glyphicon-bed:before { + content: "\e219"; +} +.glyphicon-apple:before { + content: "\f8ff"; +} +.glyphicon-erase:before { + content: "\e221"; +} +.glyphicon-hourglass:before { + content: "\231b"; +} +.glyphicon-lamp:before { + content: "\e223"; +} +.glyphicon-duplicate:before { + content: "\e224"; +} +.glyphicon-piggy-bank:before { + content: "\e225"; +} +.glyphicon-scissors:before { + content: "\e226"; +} +.glyphicon-bitcoin:before { + content: "\e227"; +} +.glyphicon-btc:before { + content: "\e227"; +} +.glyphicon-xbt:before { + content: "\e227"; +} +.glyphicon-yen:before { + content: "\00a5"; +} +.glyphicon-jpy:before { + content: "\00a5"; +} +.glyphicon-ruble:before { + content: "\20bd"; +} +.glyphicon-rub:before { + content: "\20bd"; +} +.glyphicon-scale:before { + content: "\e230"; +} +.glyphicon-ice-lolly:before { + content: "\e231"; +} +.glyphicon-ice-lolly-tasted:before { + content: "\e232"; +} +.glyphicon-education:before { + content: "\e233"; +} +.glyphicon-option-horizontal:before { + content: "\e234"; +} +.glyphicon-option-vertical:before { + content: "\e235"; +} +.glyphicon-menu-hamburger:before { + content: "\e236"; +} +.glyphicon-modal-window:before { + content: "\e237"; +} +.glyphicon-oil:before { + content: "\e238"; +} +.glyphicon-grain:before { + content: "\e239"; +} +.glyphicon-sunglasses:before { + content: "\e240"; +} +.glyphicon-text-size:before { + content: "\e241"; +} +.glyphicon-text-color:before { + content: "\e242"; +} +.glyphicon-text-background:before { + content: "\e243"; +} +.glyphicon-object-align-top:before { + content: "\e244"; +} +.glyphicon-object-align-bottom:before { + content: "\e245"; +} +.glyphicon-object-align-horizontal:before { + content: "\e246"; +} +.glyphicon-object-align-left:before { + content: "\e247"; +} +.glyphicon-object-align-vertical:before { + content: "\e248"; +} +.glyphicon-object-align-right:before { + content: "\e249"; +} +.glyphicon-triangle-right:before { + content: "\e250"; +} +.glyphicon-triangle-left:before { + content: "\e251"; +} +.glyphicon-triangle-bottom:before { + content: "\e252"; +} +.glyphicon-triangle-top:before { + content: "\e253"; +} +.glyphicon-console:before { + content: "\e254"; +} +.glyphicon-superscript:before { + content: "\e255"; +} +.glyphicon-subscript:before { + content: "\e256"; +} +.glyphicon-menu-left:before { + content: "\e257"; +} +.glyphicon-menu-right:before { + content: "\e258"; +} +.glyphicon-menu-down:before { + content: "\e259"; +} +.glyphicon-menu-up:before { + content: "\e260"; +} +* { + -webkit-box-sizing: border-box; + -moz-box-sizing: border-box; + box-sizing: border-box; +} +*:before, +*:after { + -webkit-box-sizing: border-box; + -moz-box-sizing: border-box; + box-sizing: border-box; +} +html { + font-size: 10px; + -webkit-tap-highlight-color: rgba(0, 0, 0, 0); +} +body { + font-family: "Roboto", "Helvetica Neue", Helvetica, Arial, sans-serif; + font-size: 14px; + line-height: 1.42857143; + color: #3e3f3a; + background-color: #ffffff; +} +input, +button, +select, +textarea { + font-family: inherit; + font-size: inherit; + line-height: inherit; +} +a { + color: #93c54b; + text-decoration: none; +} +a:hover, +a:focus { + color: #79a736; + text-decoration: underline; +} +a:focus { + outline: thin dotted; + outline: 5px auto -webkit-focus-ring-color; + outline-offset: -2px; +} +figure { + margin: 0; +} +img { + vertical-align: middle; +} +.img-responsive, +.thumbnail > img, +.thumbnail a > img, +.carousel-inner > .item > img, +.carousel-inner > .item > a > img { + display: block; + max-width: 100%; + height: auto; +} +.img-rounded { + border-radius: 6px; +} +.img-thumbnail { + padding: 4px; + line-height: 1.42857143; + background-color: #f8f5f0; + border: 1px solid #dfd7ca; + border-radius: 4px; + -webkit-transition: all 0.2s ease-in-out; + -o-transition: all 0.2s ease-in-out; + transition: all 0.2s ease-in-out; + display: inline-block; + max-width: 100%; + height: auto; +} +.img-circle { + border-radius: 50%; +} +hr { + margin-top: 20px; + margin-bottom: 20px; + border: 0; + border-top: 1px solid #f8f5f0; +} +.sr-only { + position: absolute; + width: 1px; + height: 1px; + margin: -1px; + padding: 0; + overflow: hidden; + clip: rect(0, 0, 0, 0); + border: 0; +} +.sr-only-focusable:active, +.sr-only-focusable:focus { + position: static; + width: auto; + height: auto; + margin: 0; + overflow: visible; + clip: auto; +} +[role="button"] { + cursor: pointer; +} +h1, +h2, +h3, +h4, +h5, +h6, +.h1, +.h2, +.h3, +.h4, +.h5, +.h6 { + font-family: inherit; + font-weight: 400; + line-height: 1.1; + color: inherit; +} +h1 small, +h2 small, +h3 small, +h4 small, +h5 small, +h6 small, +.h1 small, +.h2 small, +.h3 small, +.h4 small, +.h5 small, +.h6 small, +h1 .small, +h2 .small, +h3 .small, +h4 .small, +h5 .small, +h6 .small, +.h1 .small, +.h2 .small, +.h3 .small, +.h4 .small, +.h5 .small, +.h6 .small { + font-weight: normal; + line-height: 1; + color: #98978b; +} +h1, +.h1, +h2, +.h2, +h3, +.h3 { + margin-top: 20px; + margin-bottom: 10px; +} +h1 small, +.h1 small, +h2 small, +.h2 small, +h3 small, +.h3 small, +h1 .small, +.h1 .small, +h2 .small, +.h2 .small, +h3 .small, +.h3 .small { + font-size: 65%; +} +h4, +.h4, +h5, +.h5, +h6, +.h6 { + margin-top: 10px; + margin-bottom: 10px; +} +h4 small, +.h4 small, +h5 small, +.h5 small, +h6 small, +.h6 small, +h4 .small, +.h4 .small, +h5 .small, +.h5 .small, +h6 .small, +.h6 .small { + font-size: 75%; +} +h1, +.h1 { + font-size: 36px; +} +h2, +.h2 { + font-size: 30px; +} +h3, +.h3 { + font-size: 24px; +} +h4, +.h4 { + font-size: 18px; +} +h5, +.h5 { + font-size: 14px; +} +h6, +.h6 { + font-size: 12px; +} +p { + margin: 0 0 10px; +} +.lead { + margin-bottom: 20px; + font-size: 16px; + font-weight: 300; + line-height: 1.4; +} +@media (min-width: 768px) { + .lead { + font-size: 21px; + } +} +small, +.small { + font-size: 85%; +} +/*mark, +.mark { + background-color: #fcf8e3; + padding: .2em; +}*/ +.text-left { + text-align: left; +} +.text-right { + text-align: right; +} +.text-center { + text-align: center; +} +.text-justify { + text-align: justify; +} +.text-nowrap { + white-space: nowrap; +} +.text-lowercase { + text-transform: lowercase; +} +.text-uppercase { + text-transform: uppercase; +} +.text-capitalize { + text-transform: capitalize; +} +.text-muted { + color: #98978b; +} +.text-primary { + color: #325d88; +} +a.text-primary:hover, +a.text-primary:focus { + color: #244363; +} +.text-success { + color: #93c54b; +} +a.text-success:hover, +a.text-success:focus { + color: #79a736; +} +.text-info { + color: #29abe0; +} +a.text-info:hover, +a.text-info:focus { + color: #1b8dbb; +} +.text-warning { + color: #f47c3c; +} +a.text-warning:hover, +a.text-warning:focus { + color: #ef5c0e; +} +.text-danger { + color: #d9534f; +} +a.text-danger:hover, +a.text-danger:focus { + color: #c9302c; +} +.bg-primary { + color: #fff; + background-color: #325d88; +} +a.bg-primary:hover, +a.bg-primary:focus { + background-color: #244363; +} +.bg-success { + background-color: #dff0d8; +} +a.bg-success:hover, +a.bg-success:focus { + background-color: #c1e2b3; +} +.bg-info { + background-color: #d9edf7; +} +a.bg-info:hover, +a.bg-info:focus { + background-color: #afd9ee; +} +.bg-warning { + background-color: #fcf8e3; +} +a.bg-warning:hover, +a.bg-warning:focus { + background-color: #f7ecb5; +} +.bg-danger { + background-color: #f2dede; +} +a.bg-danger:hover, +a.bg-danger:focus { + background-color: #e4b9b9; +} +.page-header { + padding-bottom: 9px; + margin: 40px 0 20px; + border-bottom: 1px solid #f8f5f0; +} +ul, +ol { + margin-top: 0; + margin-bottom: 10px; +} +ul ul, +ol ul, +ul ol, +ol ol { + margin-bottom: 0; +} +.list-unstyled { + padding-left: 0; + list-style: none; +} +.list-inline { + padding-left: 0; + list-style: none; + margin-left: -5px; +} +.list-inline > li { + display: inline-block; + padding-left: 5px; + padding-right: 5px; +} +dl { + margin-top: 0; + margin-bottom: 20px; +} +dt, +dd { + line-height: 1.42857143; +} +dt { + font-weight: bold; +} +dd { + margin-left: 0; +} +@media (min-width: 768px) { + .dl-horizontal dt { + float: left; + width: 160px; + clear: left; + text-align: right; + overflow: hidden; + text-overflow: ellipsis; + white-space: nowrap; + } + .dl-horizontal dd { + margin-left: 180px; + } +} +abbr[title], +abbr[data-original-title] { + cursor: help; + border-bottom: 1px dotted #98978b; +} +.initialism { + font-size: 90%; + text-transform: uppercase; +} +blockquote { + padding: 10px 20px; + margin: 0 0 20px; + font-size: 17.5px; + border-left: 5px solid #dfd7ca; +} +blockquote p:last-child, +blockquote ul:last-child, +blockquote ol:last-child { + margin-bottom: 0; +} +blockquote footer, +blockquote small, +blockquote .small { + display: block; + font-size: 80%; + line-height: 1.42857143; + color: #3e3f3a; +} +blockquote footer:before, +blockquote small:before, +blockquote .small:before { + content: '\2014 \00A0'; +} +.blockquote-reverse, +blockquote.pull-right { + padding-right: 15px; + padding-left: 0; + border-right: 5px solid #dfd7ca; + border-left: 0; + text-align: right; +} +.blockquote-reverse footer:before, +blockquote.pull-right footer:before, +.blockquote-reverse small:before, +blockquote.pull-right small:before, +.blockquote-reverse .small:before, +blockquote.pull-right .small:before { + content: ''; +} +.blockquote-reverse footer:after, +blockquote.pull-right footer:after, +.blockquote-reverse small:after, +blockquote.pull-right small:after, +.blockquote-reverse .small:after, +blockquote.pull-right .small:after { + content: '\00A0 \2014'; +} +address { + margin-bottom: 20px; + font-style: normal; + line-height: 1.42857143; +} +code, +kbd, +pre, +samp { + font-family: Menlo, Monaco, Consolas, "Courier New", monospace; +} +code { + padding: 2px 4px; + font-size: 90%; + color: #c7254e; + background-color: #f9f2f4; + border-radius: 4px; +} +kbd { + padding: 2px 4px; + font-size: 90%; + color: #ffffff; + background-color: #333333; + border-radius: 3px; + -webkit-box-shadow: inset 0 -1px 0 rgba(0, 0, 0, 0.25); + box-shadow: inset 0 -1px 0 rgba(0, 0, 0, 0.25); +} +kbd kbd { + padding: 0; + font-size: 100%; + font-weight: bold; + -webkit-box-shadow: none; + box-shadow: none; +} +pre { + display: block; + padding: 9.5px; + margin: 0 0 10px; + font-size: 13px; + line-height: 1.42857143; + word-break: break-all; + word-wrap: break-word; + color: #8e8c84; + background-color: #f5f5f5; + border: 1px solid #cccccc; + border-radius: 4px; +} +pre code { + padding: 0; + font-size: inherit; + color: inherit; + white-space: pre-wrap; + background-color: transparent; + border-radius: 0; +} +.pre-scrollable { + max-height: 340px; + overflow-y: scroll; +} +.container { + margin-right: auto; + margin-left: auto; + padding-left: 15px; + padding-right: 15px; +} +@media (min-width: 768px) { + .container { + width: 750px; + } +} +@media (min-width: 992px) { + .container { + width: 970px; + } +} +@media (min-width: 1200px) { + .container { + width: 1170px; + } +} +.container-fluid { + margin-right: auto; + margin-left: auto; + padding-left: 15px; + padding-right: 15px; +} +.row { + margin-left: -15px; + margin-right: -15px; +} +.col-xs-1, .col-sm-1, .col-md-1, .col-lg-1, .col-xs-2, .col-sm-2, .col-md-2, .col-lg-2, .col-xs-3, .col-sm-3, .col-md-3, .col-lg-3, .col-xs-4, .col-sm-4, .col-md-4, .col-lg-4, .col-xs-5, .col-sm-5, .col-md-5, .col-lg-5, .col-xs-6, .col-sm-6, .col-md-6, .col-lg-6, .col-xs-7, .col-sm-7, .col-md-7, .col-lg-7, .col-xs-8, .col-sm-8, .col-md-8, .col-lg-8, .col-xs-9, .col-sm-9, .col-md-9, .col-lg-9, .col-xs-10, .col-sm-10, .col-md-10, .col-lg-10, .col-xs-11, .col-sm-11, .col-md-11, .col-lg-11, .col-xs-12, .col-sm-12, .col-md-12, .col-lg-12 { + position: relative; + min-height: 1px; + padding-left: 15px; + padding-right: 15px; +} +.col-xs-1, .col-xs-2, .col-xs-3, .col-xs-4, .col-xs-5, .col-xs-6, .col-xs-7, .col-xs-8, .col-xs-9, .col-xs-10, .col-xs-11, .col-xs-12 { + float: left; +} +.col-xs-12 { + width: 100%; +} +.col-xs-11 { + width: 91.66666667%; +} +.col-xs-10 { + width: 83.33333333%; +} +.col-xs-9 { + width: 75%; +} +.col-xs-8 { + width: 66.66666667%; +} +.col-xs-7 { + width: 58.33333333%; +} +.col-xs-6 { + width: 50%; +} +.col-xs-5 { + width: 41.66666667%; +} +.col-xs-4 { + width: 33.33333333%; +} +.col-xs-3 { + width: 25%; +} +.col-xs-2 { + width: 16.66666667%; +} +.col-xs-1 { + width: 8.33333333%; +} +.col-xs-pull-12 { + right: 100%; +} +.col-xs-pull-11 { + right: 91.66666667%; +} +.col-xs-pull-10 { + right: 83.33333333%; +} +.col-xs-pull-9 { + right: 75%; +} +.col-xs-pull-8 { + right: 66.66666667%; +} +.col-xs-pull-7 { + right: 58.33333333%; +} +.col-xs-pull-6 { + right: 50%; +} +.col-xs-pull-5 { + right: 41.66666667%; +} +.col-xs-pull-4 { + right: 33.33333333%; +} +.col-xs-pull-3 { + right: 25%; +} +.col-xs-pull-2 { + right: 16.66666667%; +} +.col-xs-pull-1 { + right: 8.33333333%; +} +.col-xs-pull-0 { + right: auto; +} +.col-xs-push-12 { + left: 100%; +} +.col-xs-push-11 { + left: 91.66666667%; +} +.col-xs-push-10 { + left: 83.33333333%; +} +.col-xs-push-9 { + left: 75%; +} +.col-xs-push-8 { + left: 66.66666667%; +} +.col-xs-push-7 { + left: 58.33333333%; +} +.col-xs-push-6 { + left: 50%; +} +.col-xs-push-5 { + left: 41.66666667%; +} +.col-xs-push-4 { + left: 33.33333333%; +} +.col-xs-push-3 { + left: 25%; +} +.col-xs-push-2 { + left: 16.66666667%; +} +.col-xs-push-1 { + left: 8.33333333%; +} +.col-xs-push-0 { + left: auto; +} +.col-xs-offset-12 { + margin-left: 100%; +} +.col-xs-offset-11 { + margin-left: 91.66666667%; +} +.col-xs-offset-10 { + margin-left: 83.33333333%; +} +.col-xs-offset-9 { + margin-left: 75%; +} +.col-xs-offset-8 { + margin-left: 66.66666667%; +} +.col-xs-offset-7 { + margin-left: 58.33333333%; +} +.col-xs-offset-6 { + margin-left: 50%; +} +.col-xs-offset-5 { + margin-left: 41.66666667%; +} +.col-xs-offset-4 { + margin-left: 33.33333333%; +} +.col-xs-offset-3 { + margin-left: 25%; +} +.col-xs-offset-2 { + margin-left: 16.66666667%; +} +.col-xs-offset-1 { + margin-left: 8.33333333%; +} +.col-xs-offset-0 { + margin-left: 0%; +} +@media (min-width: 768px) { + .col-sm-1, .col-sm-2, .col-sm-3, .col-sm-4, .col-sm-5, .col-sm-6, .col-sm-7, .col-sm-8, .col-sm-9, .col-sm-10, .col-sm-11, .col-sm-12 { + float: left; + } + .col-sm-12 { + width: 100%; + } + .col-sm-11 { + width: 91.66666667%; + } + .col-sm-10 { + width: 83.33333333%; + } + .col-sm-9 { + width: 75%; + } + .col-sm-8 { + width: 66.66666667%; + } + .col-sm-7 { + width: 58.33333333%; + } + .col-sm-6 { + width: 50%; + } + .col-sm-5 { + width: 41.66666667%; + } + .col-sm-4 { + width: 33.33333333%; + } + .col-sm-3 { + width: 25%; + } + .col-sm-2 { + width: 16.66666667%; + } + .col-sm-1 { + width: 8.33333333%; + } + .col-sm-pull-12 { + right: 100%; + } + .col-sm-pull-11 { + right: 91.66666667%; + } + .col-sm-pull-10 { + right: 83.33333333%; + } + .col-sm-pull-9 { + right: 75%; + } + .col-sm-pull-8 { + right: 66.66666667%; + } + .col-sm-pull-7 { + right: 58.33333333%; + } + .col-sm-pull-6 { + right: 50%; + } + .col-sm-pull-5 { + right: 41.66666667%; + } + .col-sm-pull-4 { + right: 33.33333333%; + } + .col-sm-pull-3 { + right: 25%; + } + .col-sm-pull-2 { + right: 16.66666667%; + } + .col-sm-pull-1 { + right: 8.33333333%; + } + .col-sm-pull-0 { + right: auto; + } + .col-sm-push-12 { + left: 100%; + } + .col-sm-push-11 { + left: 91.66666667%; + } + .col-sm-push-10 { + left: 83.33333333%; + } + .col-sm-push-9 { + left: 75%; + } + .col-sm-push-8 { + left: 66.66666667%; + } + .col-sm-push-7 { + left: 58.33333333%; + } + .col-sm-push-6 { + left: 50%; + } + .col-sm-push-5 { + left: 41.66666667%; + } + .col-sm-push-4 { + left: 33.33333333%; + } + .col-sm-push-3 { + left: 25%; + } + .col-sm-push-2 { + left: 16.66666667%; + } + .col-sm-push-1 { + left: 8.33333333%; + } + .col-sm-push-0 { + left: auto; + } + .col-sm-offset-12 { + margin-left: 100%; + } + .col-sm-offset-11 { + margin-left: 91.66666667%; + } + .col-sm-offset-10 { + margin-left: 83.33333333%; + } + .col-sm-offset-9 { + margin-left: 75%; + } + .col-sm-offset-8 { + margin-left: 66.66666667%; + } + .col-sm-offset-7 { + margin-left: 58.33333333%; + } + .col-sm-offset-6 { + margin-left: 50%; + } + .col-sm-offset-5 { + margin-left: 41.66666667%; + } + .col-sm-offset-4 { + margin-left: 33.33333333%; + } + .col-sm-offset-3 { + margin-left: 25%; + } + .col-sm-offset-2 { + margin-left: 16.66666667%; + } + .col-sm-offset-1 { + margin-left: 8.33333333%; + } + .col-sm-offset-0 { + margin-left: 0%; + } +} +@media (min-width: 992px) { + .col-md-1, .col-md-2, .col-md-3, .col-md-4, .col-md-5, .col-md-6, .col-md-7, .col-md-8, .col-md-9, .col-md-10, .col-md-11, .col-md-12 { + float: left; + } + .col-md-12 { + width: 100%; + } + .col-md-11 { + width: 91.66666667%; + } + .col-md-10 { + width: 83.33333333%; + } + .col-md-9 { + width: 75%; + } + .col-md-8 { + width: 66.66666667%; + } + .col-md-7 { + width: 58.33333333%; + } + .col-md-6 { + width: 50%; + } + .col-md-5 { + width: 41.66666667%; + } + .col-md-4 { + width: 33.33333333%; + } + .col-md-3 { + width: 25%; + } + .col-md-2 { + width: 16.66666667%; + } + .col-md-1 { + width: 8.33333333%; + } + .col-md-pull-12 { + right: 100%; + } + .col-md-pull-11 { + right: 91.66666667%; + } + .col-md-pull-10 { + right: 83.33333333%; + } + .col-md-pull-9 { + right: 75%; + } + .col-md-pull-8 { + right: 66.66666667%; + } + .col-md-pull-7 { + right: 58.33333333%; + } + .col-md-pull-6 { + right: 50%; + } + .col-md-pull-5 { + right: 41.66666667%; + } + .col-md-pull-4 { + right: 33.33333333%; + } + .col-md-pull-3 { + right: 25%; + } + .col-md-pull-2 { + right: 16.66666667%; + } + .col-md-pull-1 { + right: 8.33333333%; + } + .col-md-pull-0 { + right: auto; + } + .col-md-push-12 { + left: 100%; + } + .col-md-push-11 { + left: 91.66666667%; + } + .col-md-push-10 { + left: 83.33333333%; + } + .col-md-push-9 { + left: 75%; + } + .col-md-push-8 { + left: 66.66666667%; + } + .col-md-push-7 { + left: 58.33333333%; + } + .col-md-push-6 { + left: 50%; + } + .col-md-push-5 { + left: 41.66666667%; + } + .col-md-push-4 { + left: 33.33333333%; + } + .col-md-push-3 { + left: 25%; + } + .col-md-push-2 { + left: 16.66666667%; + } + .col-md-push-1 { + left: 8.33333333%; + } + .col-md-push-0 { + left: auto; + } + .col-md-offset-12 { + margin-left: 100%; + } + .col-md-offset-11 { + margin-left: 91.66666667%; + } + .col-md-offset-10 { + margin-left: 83.33333333%; + } + .col-md-offset-9 { + margin-left: 75%; + } + .col-md-offset-8 { + margin-left: 66.66666667%; + } + .col-md-offset-7 { + margin-left: 58.33333333%; + } + .col-md-offset-6 { + margin-left: 50%; + } + .col-md-offset-5 { + margin-left: 41.66666667%; + } + .col-md-offset-4 { + margin-left: 33.33333333%; + } + .col-md-offset-3 { + margin-left: 25%; + } + .col-md-offset-2 { + margin-left: 16.66666667%; + } + .col-md-offset-1 { + margin-left: 8.33333333%; + } + .col-md-offset-0 { + margin-left: 0%; + } +} +@media (min-width: 1200px) { + .col-lg-1, .col-lg-2, .col-lg-3, .col-lg-4, .col-lg-5, .col-lg-6, .col-lg-7, .col-lg-8, .col-lg-9, .col-lg-10, .col-lg-11, .col-lg-12 { + float: left; + } + .col-lg-12 { + width: 100%; + } + .col-lg-11 { + width: 91.66666667%; + } + .col-lg-10 { + width: 83.33333333%; + } + .col-lg-9 { + width: 75%; + } + .col-lg-8 { + width: 66.66666667%; + } + .col-lg-7 { + width: 58.33333333%; + } + .col-lg-6 { + width: 50%; + } + .col-lg-5 { + width: 41.66666667%; + } + .col-lg-4 { + width: 33.33333333%; + } + .col-lg-3 { + width: 25%; + } + .col-lg-2 { + width: 16.66666667%; + } + .col-lg-1 { + width: 8.33333333%; + } + .col-lg-pull-12 { + right: 100%; + } + .col-lg-pull-11 { + right: 91.66666667%; + } + .col-lg-pull-10 { + right: 83.33333333%; + } + .col-lg-pull-9 { + right: 75%; + } + .col-lg-pull-8 { + right: 66.66666667%; + } + .col-lg-pull-7 { + right: 58.33333333%; + } + .col-lg-pull-6 { + right: 50%; + } + .col-lg-pull-5 { + right: 41.66666667%; + } + .col-lg-pull-4 { + right: 33.33333333%; + } + .col-lg-pull-3 { + right: 25%; + } + .col-lg-pull-2 { + right: 16.66666667%; + } + .col-lg-pull-1 { + right: 8.33333333%; + } + .col-lg-pull-0 { + right: auto; + } + .col-lg-push-12 { + left: 100%; + } + .col-lg-push-11 { + left: 91.66666667%; + } + .col-lg-push-10 { + left: 83.33333333%; + } + .col-lg-push-9 { + left: 75%; + } + .col-lg-push-8 { + left: 66.66666667%; + } + .col-lg-push-7 { + left: 58.33333333%; + } + .col-lg-push-6 { + left: 50%; + } + .col-lg-push-5 { + left: 41.66666667%; + } + .col-lg-push-4 { + left: 33.33333333%; + } + .col-lg-push-3 { + left: 25%; + } + .col-lg-push-2 { + left: 16.66666667%; + } + .col-lg-push-1 { + left: 8.33333333%; + } + .col-lg-push-0 { + left: auto; + } + .col-lg-offset-12 { + margin-left: 100%; + } + .col-lg-offset-11 { + margin-left: 91.66666667%; + } + .col-lg-offset-10 { + margin-left: 83.33333333%; + } + .col-lg-offset-9 { + margin-left: 75%; + } + .col-lg-offset-8 { + margin-left: 66.66666667%; + } + .col-lg-offset-7 { + margin-left: 58.33333333%; + } + .col-lg-offset-6 { + margin-left: 50%; + } + .col-lg-offset-5 { + margin-left: 41.66666667%; + } + .col-lg-offset-4 { + margin-left: 33.33333333%; + } + .col-lg-offset-3 { + margin-left: 25%; + } + .col-lg-offset-2 { + margin-left: 16.66666667%; + } + .col-lg-offset-1 { + margin-left: 8.33333333%; + } + .col-lg-offset-0 { + margin-left: 0%; + } +} +table { + background-color: transparent; +} +caption { + padding-top: 8px; + padding-bottom: 8px; + color: #98978b; + text-align: left; +} +th { + text-align: left; +} +.table { + width: 100%; + max-width: 100%; + margin-bottom: 20px; +} +.table > thead > tr > th, +.table > tbody > tr > th, +.table > tfoot > tr > th, +.table > thead > tr > td, +.table > tbody > tr > td, +.table > tfoot > tr > td { + padding: 8px; + line-height: 1.42857143; + vertical-align: top; + border-top: 1px solid #dfd7ca; +} +.table > thead > tr > th { + vertical-align: bottom; + border-bottom: 2px solid #dfd7ca; +} +.table > caption + thead > tr:first-child > th, +.table > colgroup + thead > tr:first-child > th, +.table > thead:first-child > tr:first-child > th, +.table > caption + thead > tr:first-child > td, +.table > colgroup + thead > tr:first-child > td, +.table > thead:first-child > tr:first-child > td { + border-top: 0; +} +.table > tbody + tbody { + border-top: 2px solid #dfd7ca; +} +.table .table { + background-color: #ffffff; +} +.table-condensed > thead > tr > th, +.table-condensed > tbody > tr > th, +.table-condensed > tfoot > tr > th, +.table-condensed > thead > tr > td, +.table-condensed > tbody > tr > td, +.table-condensed > tfoot > tr > td { + padding: 5px; +} +.table-bordered { + border: 1px solid #dfd7ca; +} +.table-bordered > thead > tr > th, +.table-bordered > tbody > tr > th, +.table-bordered > tfoot > tr > th, +.table-bordered > thead > tr > td, +.table-bordered > tbody > tr > td, +.table-bordered > tfoot > tr > td { + border: 1px solid #dfd7ca; +} +.table-bordered > thead > tr > th, +.table-bordered > thead > tr > td { + border-bottom-width: 2px; +} +.table-striped > tbody > tr:nth-of-type(odd) { + background-color: #f8f5f0; +} +.table-hover > tbody > tr:hover { + background-color: #f8f5f0; +} +table col[class*="col-"] { + position: static; + float: none; + display: table-column; +} +table td[class*="col-"], +table th[class*="col-"] { + position: static; + float: none; + display: table-cell; +} +.table > thead > tr > td.active, +.table > tbody > tr > td.active, +.table > tfoot > tr > td.active, +.table > thead > tr > th.active, +.table > tbody > tr > th.active, +.table > tfoot > tr > th.active, +.table > thead > tr.active > td, +.table > tbody > tr.active > td, +.table > tfoot > tr.active > td, +.table > thead > tr.active > th, +.table > tbody > tr.active > th, +.table > tfoot > tr.active > th { + background-color: #f8f5f0; +} +.table-hover > tbody > tr > td.active:hover, +.table-hover > tbody > tr > th.active:hover, +.table-hover > tbody > tr.active:hover > td, +.table-hover > tbody > tr:hover > .active, +.table-hover > tbody > tr.active:hover > th { + background-color: #f0e9df; +} +.table > thead > tr > td.success, +.table > tbody > tr > td.success, +.table > tfoot > tr > td.success, +.table > thead > tr > th.success, +.table > tbody > tr > th.success, +.table > tfoot > tr > th.success, +.table > thead > tr.success > td, +.table > tbody > tr.success > td, +.table > tfoot > tr.success > td, +.table > thead > tr.success > th, +.table > tbody > tr.success > th, +.table > tfoot > tr.success > th { + background-color: #dff0d8; +} +.table-hover > tbody > tr > td.success:hover, +.table-hover > tbody > tr > th.success:hover, +.table-hover > tbody > tr.success:hover > td, +.table-hover > tbody > tr:hover > .success, +.table-hover > tbody > tr.success:hover > th { + background-color: #d0e9c6; +} +.table > thead > tr > td.info, +.table > tbody > tr > td.info, +.table > tfoot > tr > td.info, +.table > thead > tr > th.info, +.table > tbody > tr > th.info, +.table > tfoot > tr > th.info, +.table > thead > tr.info > td, +.table > tbody > tr.info > td, +.table > tfoot > tr.info > td, +.table > thead > tr.info > th, +.table > tbody > tr.info > th, +.table > tfoot > tr.info > th { + background-color: #d9edf7; +} +.table-hover > tbody > tr > td.info:hover, +.table-hover > tbody > tr > th.info:hover, +.table-hover > tbody > tr.info:hover > td, +.table-hover > tbody > tr:hover > .info, +.table-hover > tbody > tr.info:hover > th { + background-color: #c4e3f3; +} +.table > thead > tr > td.warning, +.table > tbody > tr > td.warning, +.table > tfoot > tr > td.warning, +.table > thead > tr > th.warning, +.table > tbody > tr > th.warning, +.table > tfoot > tr > th.warning, +.table > thead > tr.warning > td, +.table > tbody > tr.warning > td, +.table > tfoot > tr.warning > td, +.table > thead > tr.warning > th, +.table > tbody > tr.warning > th, +.table > tfoot > tr.warning > th { + background-color: #fcf8e3; +} +.table-hover > tbody > tr > td.warning:hover, +.table-hover > tbody > tr > th.warning:hover, +.table-hover > tbody > tr.warning:hover > td, +.table-hover > tbody > tr:hover > .warning, +.table-hover > tbody > tr.warning:hover > th { + background-color: #faf2cc; +} +.table > thead > tr > td.danger, +.table > tbody > tr > td.danger, +.table > tfoot > tr > td.danger, +.table > thead > tr > th.danger, +.table > tbody > tr > th.danger, +.table > tfoot > tr > th.danger, +.table > thead > tr.danger > td, +.table > tbody > tr.danger > td, +.table > tfoot > tr.danger > td, +.table > thead > tr.danger > th, +.table > tbody > tr.danger > th, +.table > tfoot > tr.danger > th { + background-color: #f2dede; +} +.table-hover > tbody > tr > td.danger:hover, +.table-hover > tbody > tr > th.danger:hover, +.table-hover > tbody > tr.danger:hover > td, +.table-hover > tbody > tr:hover > .danger, +.table-hover > tbody > tr.danger:hover > th { + background-color: #ebcccc; +} +.table-responsive { + overflow-x: auto; + min-height: 0.01%; +} +@media screen and (max-width: 767px) { + .table-responsive { + width: 100%; + margin-bottom: 15px; + overflow-y: hidden; + -ms-overflow-style: -ms-autohiding-scrollbar; + border: 1px solid #dfd7ca; + } + .table-responsive > .table { + margin-bottom: 0; + } + .table-responsive > .table > thead > tr > th, + .table-responsive > .table > tbody > tr > th, + .table-responsive > .table > tfoot > tr > th, + .table-responsive > .table > thead > tr > td, + .table-responsive > .table > tbody > tr > td, + .table-responsive > .table > tfoot > tr > td { + white-space: nowrap; + } + .table-responsive > .table-bordered { + border: 0; + } + .table-responsive > .table-bordered > thead > tr > th:first-child, + .table-responsive > .table-bordered > tbody > tr > th:first-child, + .table-responsive > .table-bordered > tfoot > tr > th:first-child, + .table-responsive > .table-bordered > thead > tr > td:first-child, + .table-responsive > .table-bordered > tbody > tr > td:first-child, + .table-responsive > .table-bordered > tfoot > tr > td:first-child { + border-left: 0; + } + .table-responsive > .table-bordered > thead > tr > th:last-child, + .table-responsive > .table-bordered > tbody > tr > th:last-child, + .table-responsive > .table-bordered > tfoot > tr > th:last-child, + .table-responsive > .table-bordered > thead > tr > td:last-child, + .table-responsive > .table-bordered > tbody > tr > td:last-child, + .table-responsive > .table-bordered > tfoot > tr > td:last-child { + border-right: 0; + } + .table-responsive > .table-bordered > tbody > tr:last-child > th, + .table-responsive > .table-bordered > tfoot > tr:last-child > th, + .table-responsive > .table-bordered > tbody > tr:last-child > td, + .table-responsive > .table-bordered > tfoot > tr:last-child > td { + border-bottom: 0; + } +} +fieldset { + padding: 0; + margin: 0; + border: 0; + min-width: 0; +} +legend { + display: block; + width: 100%; + padding: 0; + margin-bottom: 20px; + font-size: 21px; + line-height: inherit; + color: inherit; + border: 0; + border-bottom: 1px solid transparent; +} +label { + display: inline-block; + max-width: 100%; + margin-bottom: 5px; + font-weight: bold; +} +input[type="search"] { + -webkit-box-sizing: border-box; + -moz-box-sizing: border-box; + box-sizing: border-box; +} +input[type="radio"], +input[type="checkbox"] { + margin: 4px 0 0; + margin-top: 1px \9; + line-height: normal; +} +input[type="file"] { + display: block; +} +input[type="range"] { + display: block; + width: 100%; +} +select[multiple], +select[size] { + height: auto; +} +input[type="file"]:focus, +input[type="radio"]:focus, +input[type="checkbox"]:focus { + outline: thin dotted; + outline: 5px auto -webkit-focus-ring-color; + outline-offset: -2px; +} +output { + display: block; + padding-top: 13px; + font-size: 14px; + line-height: 1.42857143; + color: #3e3f3a; +} +.form-control { + display: block; + width: 100%; + height: 46px; + padding: 12px 16px; + font-size: 14px; + line-height: 1.42857143; + color: #3e3f3a; + background-color: #ffffff; + background-image: none; + border: 1px solid #dfd7ca; + border-radius: 4px; + -webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075); + box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075); + -webkit-transition: border-color ease-in-out .15s, -webkit-box-shadow ease-in-out .15s; + -o-transition: border-color ease-in-out .15s, box-shadow ease-in-out .15s; + transition: border-color ease-in-out .15s, box-shadow ease-in-out .15s; +} +/* .form-control:focus { + border-color: transparent; + outline: 0; + -webkit-box-shadow: inset 0 1px 1px rgba(0,0,0,.075), 0 0 8px rgba(0, 0, 0, 0.6); + box-shadow: inset 0 1px 1px rgba(0,0,0,.075), 0 0 8px rgba(0, 0, 0, 0.6); +} */ +.form-control::-moz-placeholder { + color: #dfd7ca; + opacity: 1; +} +.form-control:-ms-input-placeholder { + color: #dfd7ca; +} +.form-control::-webkit-input-placeholder { + color: #dfd7ca; +} +.form-control::-ms-expand { + border: 0; + background-color: transparent; +} +.form-control[disabled], +.form-control[readonly], +fieldset[disabled] .form-control { + background-color: #f8f5f0; + opacity: 1; +} +.form-control[disabled], +fieldset[disabled] .form-control { + cursor: not-allowed; +} +textarea.form-control { + height: auto; +} +input[type="search"] { + -webkit-appearance: none; +} +@media screen and (-webkit-min-device-pixel-ratio: 0) { + input[type="date"].form-control, + input[type="time"].form-control, + input[type="datetime-local"].form-control, + input[type="month"].form-control { + line-height: 46px; + } + input[type="date"].input-sm, + input[type="time"].input-sm, + input[type="datetime-local"].input-sm, + input[type="month"].input-sm, + .input-group-sm input[type="date"], + .input-group-sm input[type="time"], + .input-group-sm input[type="datetime-local"], + .input-group-sm input[type="month"] { + line-height: 30px; + } + input[type="date"].input-lg, + input[type="time"].input-lg, + input[type="datetime-local"].input-lg, + input[type="month"].input-lg, + .input-group-lg input[type="date"], + .input-group-lg input[type="time"], + .input-group-lg input[type="datetime-local"], + .input-group-lg input[type="month"] { + line-height: 66px; + } +} +.form-group { + margin-bottom: 15px; +} +.radio, +.checkbox { + position: relative; + display: block; + margin-top: 10px; + margin-bottom: 10px; +} +.radio label, +.checkbox label { + min-height: 20px; + padding-left: 20px; + margin-bottom: 0; + font-weight: normal; + cursor: pointer; +} +.radio input[type="radio"], +.radio-inline input[type="radio"], +.checkbox input[type="checkbox"], +.checkbox-inline input[type="checkbox"] { + position: absolute; + margin-left: -20px; + margin-top: 4px \9; +} +.radio + .radio, +.checkbox + .checkbox { + margin-top: -5px; +} +.radio-inline, +.checkbox-inline { + position: relative; + display: inline-block; + padding-left: 20px; + margin-bottom: 0; + vertical-align: middle; + font-weight: normal; + cursor: pointer; +} +.radio-inline + .radio-inline, +.checkbox-inline + .checkbox-inline { + margin-top: 0; + margin-left: 10px; +} +input[type="radio"][disabled], +input[type="checkbox"][disabled], +input[type="radio"].disabled, +input[type="checkbox"].disabled, +fieldset[disabled] input[type="radio"], +fieldset[disabled] input[type="checkbox"] { + cursor: not-allowed; +} +.radio-inline.disabled, +.checkbox-inline.disabled, +fieldset[disabled] .radio-inline, +fieldset[disabled] .checkbox-inline { + cursor: not-allowed; +} +.radio.disabled label, +.checkbox.disabled label, +fieldset[disabled] .radio label, +fieldset[disabled] .checkbox label { + cursor: not-allowed; +} +.form-control-static { + padding-top: 13px; + padding-bottom: 13px; + margin-bottom: 0; + min-height: 34px; +} +.form-control-static.input-lg, +.form-control-static.input-sm { + padding-left: 0; + padding-right: 0; +} +.input-sm { + height: 30px; + padding: 5px 10px; + font-size: 12px; + line-height: 1.5; + border-radius: 3px; +} +select.input-sm { + height: 30px; + line-height: 30px; +} +textarea.input-sm, +select[multiple].input-sm { + height: auto; +} +.form-group-sm .form-control { + height: 30px; + padding: 5px 10px; + font-size: 12px; + line-height: 1.5; + border-radius: 3px; +} +.form-group-sm select.form-control { + height: 30px; + line-height: 30px; +} +.form-group-sm textarea.form-control, +.form-group-sm select[multiple].form-control { + height: auto; +} +.form-group-sm .form-control-static { + height: 30px; + min-height: 32px; + padding: 6px 10px; + font-size: 12px; + line-height: 1.5; +} +.input-lg { + height: 66px; + padding: 20px 30px; + font-size: 18px; + line-height: 1.3333333; + border-radius: 6px; +} +select.input-lg { + height: 66px; + line-height: 66px; +} +textarea.input-lg, +select[multiple].input-lg { + height: auto; +} +.form-group-lg .form-control { + height: 66px; + padding: 20px 30px; + font-size: 18px; + line-height: 1.3333333; + border-radius: 6px; +} +.form-group-lg select.form-control { + height: 66px; + line-height: 66px; +} +.form-group-lg textarea.form-control, +.form-group-lg select[multiple].form-control { + height: auto; +} +.form-group-lg .form-control-static { + height: 66px; + min-height: 38px; + padding: 21px 30px; + font-size: 18px; + line-height: 1.3333333; +} +.has-feedback { + position: relative; +} +.has-feedback .form-control { + padding-right: 57.5px; +} +.form-control-feedback { + position: absolute; + top: 0; + right: 0; + z-index: 2; + display: block; + width: 46px; + height: 46px; + line-height: 46px; + text-align: center; + pointer-events: none; +} +.input-lg + .form-control-feedback, +.input-group-lg + .form-control-feedback, +.form-group-lg .form-control + .form-control-feedback { + width: 66px; + height: 66px; + line-height: 66px; +} +.input-sm + .form-control-feedback, +.input-group-sm + .form-control-feedback, +.form-group-sm .form-control + .form-control-feedback { + width: 30px; + height: 30px; + line-height: 30px; +} +.has-success .help-block, +.has-success .control-label, +.has-success .radio, +.has-success .checkbox, +.has-success .radio-inline, +.has-success .checkbox-inline, +.has-success.radio label, +.has-success.checkbox label, +.has-success.radio-inline label, +.has-success.checkbox-inline label { + color: #93c54b; +} +.has-success .form-control { + border-color: #93c54b; + -webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075); + box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075); +} +.has-success .form-control:focus { + border-color: #79a736; + -webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075), 0 0 6px #c1de98; + box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075), 0 0 6px #c1de98; +} +.has-success .input-group-addon { + color: #93c54b; + border-color: #93c54b; + background-color: #dff0d8; +} +.has-success .form-control-feedback { + color: #93c54b; +} +.has-warning .help-block, +.has-warning .control-label, +.has-warning .radio, +.has-warning .checkbox, +.has-warning .radio-inline, +.has-warning .checkbox-inline, +.has-warning.radio label, +.has-warning.checkbox label, +.has-warning.radio-inline label, +.has-warning.checkbox-inline label { + color: #f47c3c; +} +.has-warning .form-control { + border-color: #f47c3c; + -webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075); + box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075); +} +.has-warning .form-control:focus { + border-color: #ef5c0e; + -webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075), 0 0 6px #f9bd9d; + box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075), 0 0 6px #f9bd9d; +} +.has-warning .input-group-addon { + color: #f47c3c; + border-color: #f47c3c; + background-color: #fcf8e3; +} +.has-warning .form-control-feedback { + color: #f47c3c; +} +.has-error .help-block, +.has-error .control-label, +.has-error .radio, +.has-error .checkbox, +.has-error .radio-inline, +.has-error .checkbox-inline, +.has-error.radio label, +.has-error.checkbox label, +.has-error.radio-inline label, +.has-error.checkbox-inline label { + color: #d9534f; +} +.has-error .form-control { + border-color: #d9534f; + -webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075); + box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075); +} +.has-error .form-control:focus { + border-color: #c9302c; + -webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075), 0 0 6px #eba5a3; + box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075), 0 0 6px #eba5a3; +} +.has-error .input-group-addon { + color: #d9534f; + border-color: #d9534f; + background-color: #f2dede; +} +.has-error .form-control-feedback { + color: #d9534f; +} +.has-feedback label ~ .form-control-feedback { + top: 25px; +} +.has-feedback label.sr-only ~ .form-control-feedback { + top: 0; +} +.help-block { + display: block; + margin-top: 5px; + margin-bottom: 10px; + color: #7f8177; +} +@media (min-width: 768px) { + .form-inline .form-group { + display: inline-block; + margin-bottom: 0; + vertical-align: middle; + } + .form-inline .form-control { + display: inline-block; + width: auto; + vertical-align: middle; + } + .form-inline .form-control-static { + display: inline-block; + } + .form-inline .input-group { + display: inline-table; + vertical-align: middle; + } + .form-inline .input-group .input-group-addon, + .form-inline .input-group .input-group-btn, + .form-inline .input-group .form-control { + width: auto; + } + .form-inline .input-group > .form-control { + width: 100%; + } + .form-inline .control-label { + margin-bottom: 0; + vertical-align: middle; + } + .form-inline .radio, + .form-inline .checkbox { + display: inline-block; + margin-top: 0; + margin-bottom: 0; + vertical-align: middle; + } + .form-inline .radio label, + .form-inline .checkbox label { + padding-left: 0; + } + .form-inline .radio input[type="radio"], + .form-inline .checkbox input[type="checkbox"] { + position: relative; + margin-left: 0; + } + .form-inline .has-feedback .form-control-feedback { + top: 0; + } +} +.form-horizontal .radio, +.form-horizontal .checkbox, +.form-horizontal .radio-inline, +.form-horizontal .checkbox-inline { + margin-top: 0; + margin-bottom: 0; + padding-top: 13px; +} +.form-horizontal .radio, +.form-horizontal .checkbox { + min-height: 33px; +} +.form-horizontal .form-group { + margin-left: -15px; + margin-right: -15px; +} +@media (min-width: 768px) { + .form-horizontal .control-label { + text-align: right; + margin-bottom: 0; + padding-top: 13px; + } +} +.form-horizontal .has-feedback .form-control-feedback { + right: 15px; +} +@media (min-width: 768px) { + .form-horizontal .form-group-lg .control-label { + padding-top: 21px; + font-size: 18px; + } +} +@media (min-width: 768px) { + .form-horizontal .form-group-sm .control-label { + padding-top: 6px; + font-size: 12px; + } +} +.btn { + display: inline-block; + margin-bottom: 0; + font-weight: normal; + text-align: center; + vertical-align: middle; + -ms-touch-action: manipulation; + touch-action: manipulation; + cursor: pointer; + background-image: none; + border: 1px solid transparent; + white-space: nowrap; + padding: 12px 16px; + font-size: 14px; + line-height: 1.42857143; + border-radius: 4px; + -webkit-user-select: none; + -moz-user-select: none; + -ms-user-select: none; + user-select: none; +} +.btn:focus, +.btn:active:focus, +.btn.active:focus, +.btn.focus, +.btn:active.focus, +.btn.active.focus { + outline: thin dotted; + outline: 5px auto -webkit-focus-ring-color; + outline-offset: -2px; +} +.btn:hover, +.btn:focus, +.btn.focus { + color: #ffffff; + text-decoration: none; +} +.btn:active, +.btn.active { + outline: 0; + background-image: none; + -webkit-box-shadow: inset 0 3px 5px rgba(0, 0, 0, 0.125); + box-shadow: inset 0 3px 5px rgba(0, 0, 0, 0.125); +} +.btn.disabled, +.btn[disabled], +fieldset[disabled] .btn { + cursor: not-allowed; + opacity: 0.65; + filter: alpha(opacity=65); + -webkit-box-shadow: none; + box-shadow: none; +} +a.btn.disabled, +fieldset[disabled] a.btn { + pointer-events: none; +} +.btn-default { + color: #ffffff; + background-color: #3e3f3a; + border-color: transparent; +} +.btn-default:focus, +.btn-default.focus { + color: #ffffff; + background-color: #242422; + border-color: rgba(0, 0, 0, 0); +} +.btn-default:hover { + color: #ffffff; + background-color: #242422; + border-color: rgba(0, 0, 0, 0); +} +.btn-default:active, +.btn-default.active, +.open > .dropdown-toggle.btn-default { + color: #ffffff; + background-color: #242422; + border-color: rgba(0, 0, 0, 0); +} +.btn-default:active:hover, +.btn-default.active:hover, +.open > .dropdown-toggle.btn-default:hover, +.btn-default:active:focus, +.btn-default.active:focus, +.open > .dropdown-toggle.btn-default:focus, +.btn-default:active.focus, +.btn-default.active.focus, +.open > .dropdown-toggle.btn-default.focus { + color: #ffffff; + background-color: #121210; + border-color: rgba(0, 0, 0, 0); +} +.btn-default:active, +.btn-default.active, +.open > .dropdown-toggle.btn-default { + background-image: none; +} +.btn-default.disabled:hover, +.btn-default[disabled]:hover, +fieldset[disabled] .btn-default:hover, +.btn-default.disabled:focus, +.btn-default[disabled]:focus, +fieldset[disabled] .btn-default:focus, +.btn-default.disabled.focus, +.btn-default[disabled].focus, +fieldset[disabled] .btn-default.focus { + background-color: #3e3f3a; + border-color: transparent; +} +.btn-default .badge { + color: #3e3f3a; + background-color: #ffffff; +} +.btn-primary { + color: #ffffff; + background-color: #325d88; + border-color: transparent; +} +.btn-primary:focus, +.btn-primary.focus { + color: #ffffff; + background-color: #244363; + border-color: rgba(0, 0, 0, 0); +} +.btn-primary:hover { + color: #ffffff; + background-color: #244363; + border-color: rgba(0, 0, 0, 0); +} +.btn-primary:active, +.btn-primary.active, +.open > .dropdown-toggle.btn-primary { + color: #ffffff; + background-color: #244363; + border-color: rgba(0, 0, 0, 0); +} +.btn-primary:active:hover, +.btn-primary.active:hover, +.open > .dropdown-toggle.btn-primary:hover, +.btn-primary:active:focus, +.btn-primary.active:focus, +.open > .dropdown-toggle.btn-primary:focus, +.btn-primary:active.focus, +.btn-primary.active.focus, +.open > .dropdown-toggle.btn-primary.focus { + color: #ffffff; + background-color: #1b3249; + border-color: rgba(0, 0, 0, 0); +} +.btn-primary:active, +.btn-primary.active, +.open > .dropdown-toggle.btn-primary { + background-image: none; +} +.btn-primary.disabled:hover, +.btn-primary[disabled]:hover, +fieldset[disabled] .btn-primary:hover, +.btn-primary.disabled:focus, +.btn-primary[disabled]:focus, +fieldset[disabled] .btn-primary:focus, +.btn-primary.disabled.focus, +.btn-primary[disabled].focus, +fieldset[disabled] .btn-primary.focus { + background-color: #325d88; + border-color: transparent; +} +.btn-primary .badge { + color: #325d88; + background-color: #ffffff; +} +.btn-success { + color: #ffffff; + background-color: #93c54b; + border-color: transparent; +} +.btn-success:focus, +.btn-success.focus { + color: #ffffff; + background-color: #79a736; + border-color: rgba(0, 0, 0, 0); +} +.btn-success:hover { + color: #ffffff; + background-color: #79a736; + border-color: rgba(0, 0, 0, 0); +} +.btn-success:active, +.btn-success.active, +.open > .dropdown-toggle.btn-success { + color: #ffffff; + background-color: #79a736; + border-color: rgba(0, 0, 0, 0); +} +.btn-success:active:hover, +.btn-success.active:hover, +.open > .dropdown-toggle.btn-success:hover, +.btn-success:active:focus, +.btn-success.active:focus, +.open > .dropdown-toggle.btn-success:focus, +.btn-success:active.focus, +.btn-success.active.focus, +.open > .dropdown-toggle.btn-success.focus { + color: #ffffff; + background-color: #658c2d; + border-color: rgba(0, 0, 0, 0); +} +.btn-success:active, +.btn-success.active, +.open > .dropdown-toggle.btn-success { + background-image: none; +} +.btn-success.disabled:hover, +.btn-success[disabled]:hover, +fieldset[disabled] .btn-success:hover, +.btn-success.disabled:focus, +.btn-success[disabled]:focus, +fieldset[disabled] .btn-success:focus, +.btn-success.disabled.focus, +.btn-success[disabled].focus, +fieldset[disabled] .btn-success.focus { + background-color: #93c54b; + border-color: transparent; +} +.btn-success .badge { + color: #93c54b; + background-color: #ffffff; +} +.btn-info { + color: #ffffff; + background-color: #29abe0; + border-color: transparent; +} +.btn-info:focus, +.btn-info.focus { + color: #ffffff; + background-color: #1b8dbb; + border-color: rgba(0, 0, 0, 0); +} +.btn-info:hover { + color: #ffffff; + background-color: #1b8dbb; + border-color: rgba(0, 0, 0, 0); +} +.btn-info:active, +.btn-info.active, +.open > .dropdown-toggle.btn-info { + color: #ffffff; + background-color: #1b8dbb; + border-color: rgba(0, 0, 0, 0); +} +.btn-info:active:hover, +.btn-info.active:hover, +.open > .dropdown-toggle.btn-info:hover, +.btn-info:active:focus, +.btn-info.active:focus, +.open > .dropdown-toggle.btn-info:focus, +.btn-info:active.focus, +.btn-info.active.focus, +.open > .dropdown-toggle.btn-info.focus { + color: #ffffff; + background-color: #17759c; + border-color: rgba(0, 0, 0, 0); +} +.btn-info:active, +.btn-info.active, +.open > .dropdown-toggle.btn-info { + background-image: none; +} +.btn-info.disabled:hover, +.btn-info[disabled]:hover, +fieldset[disabled] .btn-info:hover, +.btn-info.disabled:focus, +.btn-info[disabled]:focus, +fieldset[disabled] .btn-info:focus, +.btn-info.disabled.focus, +.btn-info[disabled].focus, +fieldset[disabled] .btn-info.focus { + background-color: #29abe0; + border-color: transparent; +} +.btn-info .badge { + color: #29abe0; + background-color: #ffffff; +} +.btn-warning { + color: #ffffff; + background-color: #f47c3c; + border-color: transparent; +} +.btn-warning:focus, +.btn-warning.focus { + color: #ffffff; + background-color: #ef5c0e; + border-color: rgba(0, 0, 0, 0); +} +.btn-warning:hover { + color: #ffffff; + background-color: #ef5c0e; + border-color: rgba(0, 0, 0, 0); +} +.btn-warning:active, +.btn-warning.active, +.open > .dropdown-toggle.btn-warning { + color: #ffffff; + background-color: #ef5c0e; + border-color: rgba(0, 0, 0, 0); +} +.btn-warning:active:hover, +.btn-warning.active:hover, +.open > .dropdown-toggle.btn-warning:hover, +.btn-warning:active:focus, +.btn-warning.active:focus, +.open > .dropdown-toggle.btn-warning:focus, +.btn-warning:active.focus, +.btn-warning.active.focus, +.open > .dropdown-toggle.btn-warning.focus { + color: #ffffff; + background-color: #ce4f0c; + border-color: rgba(0, 0, 0, 0); +} +.btn-warning:active, +.btn-warning.active, +.open > .dropdown-toggle.btn-warning { + background-image: none; +} +.btn-warning.disabled:hover, +.btn-warning[disabled]:hover, +fieldset[disabled] .btn-warning:hover, +.btn-warning.disabled:focus, +.btn-warning[disabled]:focus, +fieldset[disabled] .btn-warning:focus, +.btn-warning.disabled.focus, +.btn-warning[disabled].focus, +fieldset[disabled] .btn-warning.focus { + background-color: #f47c3c; + border-color: transparent; +} +.btn-warning .badge { + color: #f47c3c; + background-color: #ffffff; +} +.btn-danger { + color: #ffffff; + background-color: #d9534f; + border-color: transparent; +} +.btn-danger:focus, +.btn-danger.focus { + color: #ffffff; + background-color: #c9302c; + border-color: rgba(0, 0, 0, 0); +} +.btn-danger:hover { + color: #ffffff; + background-color: #c9302c; + border-color: rgba(0, 0, 0, 0); +} +.btn-danger:active, +.btn-danger.active, +.open > .dropdown-toggle.btn-danger { + color: #ffffff; + background-color: #c9302c; + border-color: rgba(0, 0, 0, 0); +} +.btn-danger:active:hover, +.btn-danger.active:hover, +.open > .dropdown-toggle.btn-danger:hover, +.btn-danger:active:focus, +.btn-danger.active:focus, +.open > .dropdown-toggle.btn-danger:focus, +.btn-danger:active.focus, +.btn-danger.active.focus, +.open > .dropdown-toggle.btn-danger.focus { + color: #ffffff; + background-color: #ac2925; + border-color: rgba(0, 0, 0, 0); +} +.btn-danger:active, +.btn-danger.active, +.open > .dropdown-toggle.btn-danger { + background-image: none; +} +.btn-danger.disabled:hover, +.btn-danger[disabled]:hover, +fieldset[disabled] .btn-danger:hover, +.btn-danger.disabled:focus, +.btn-danger[disabled]:focus, +fieldset[disabled] .btn-danger:focus, +.btn-danger.disabled.focus, +.btn-danger[disabled].focus, +fieldset[disabled] .btn-danger.focus { + background-color: #d9534f; + border-color: transparent; +} +.btn-danger .badge { + color: #d9534f; + background-color: #ffffff; +} +.btn-link { + color: #93c54b; + font-weight: normal; + border-radius: 0; +} +.btn-link, +.btn-link:active, +.btn-link.active, +.btn-link[disabled], +fieldset[disabled] .btn-link { + background-color: transparent; + -webkit-box-shadow: none; + box-shadow: none; +} +.btn-link, +.btn-link:hover, +.btn-link:focus, +.btn-link:active { + border-color: transparent; +} +.btn-link:hover, +.btn-link:focus { + color: #79a736; + text-decoration: underline; + background-color: transparent; +} +.btn-link[disabled]:hover, +fieldset[disabled] .btn-link:hover, +.btn-link[disabled]:focus, +fieldset[disabled] .btn-link:focus { + color: #dfd7ca; + text-decoration: none; +} +.btn-lg, +.btn-group-lg > .btn { + padding: 20px 30px; + font-size: 18px; + line-height: 1.3333333; + border-radius: 6px; +} +.btn-sm, +.btn-group-sm > .btn { + padding: 5px 10px; + font-size: 12px; + line-height: 1.5; + border-radius: 3px; +} +.btn-xs, +.btn-group-xs > .btn { + padding: 1px 5px; + font-size: 12px; + line-height: 1.5; + border-radius: 3px; +} +.btn-block { + display: block; + width: 100%; +} +.btn-block + .btn-block { + margin-top: 5px; +} +input[type="submit"].btn-block, +input[type="reset"].btn-block, +input[type="button"].btn-block { + width: 100%; +} +.fade { + opacity: 0; + -webkit-transition: opacity 0.15s linear; + -o-transition: opacity 0.15s linear; + transition: opacity 0.15s linear; +} +.fade.in { + opacity: 1; +} +.collapse { + display: none; +} +.collapse.in { + display: block; +} +tr.collapse.in { + display: table-row; +} +tbody.collapse.in { + display: table-row-group; +} +.collapsing { + position: relative; + height: 0; + overflow: hidden; + -webkit-transition-property: height, visibility; + -o-transition-property: height, visibility; + transition-property: height, visibility; + -webkit-transition-duration: 0.35s; + -o-transition-duration: 0.35s; + transition-duration: 0.35s; + -webkit-transition-timing-function: ease; + -o-transition-timing-function: ease; + transition-timing-function: ease; +} +.caret { + display: inline-block; + width: 0; + height: 0; + margin-left: 2px; + vertical-align: middle; + border-top: 4px dashed; + border-top: 4px solid \9; + border-right: 4px solid transparent; + border-left: 4px solid transparent; +} +.dropup, +.dropdown { + position: relative; +} +.dropdown-toggle:focus { + outline: 0; +} +.dropdown-menu { + position: absolute; + top: 100%; + left: 0; + z-index: 1000; + display: none; + float: left; + min-width: 160px; + padding: 5px 0; + margin: 2px 0 0; + list-style: none; + font-size: 14px; + text-align: left; + background-color: #ffffff; + border: 1px solid #dfd7ca; + border-radius: 4px; + -webkit-box-shadow: 0 6px 12px rgba(0, 0, 0, 0.175); + box-shadow: 0 6px 12px rgba(0, 0, 0, 0.175); + -webkit-background-clip: padding-box; + background-clip: padding-box; +} +.dropdown-menu.pull-right { + right: 0; + left: auto; +} +.dropdown-menu .divider { + height: 1px; + margin: 9px 0; + overflow: hidden; + background-color: #f8f5f0; +} +.dropdown-menu > li > a { + display: block; + padding: 3px 20px; + clear: both; + font-weight: normal; + line-height: 1.42857143; + color: #98978b; + white-space: nowrap; +} +.dropdown-menu > li > a:hover, +.dropdown-menu > li > a:focus { + text-decoration: none; + color: #98978b; + background-color: #f8f5f0; +} +.dropdown-menu > .active > a, +.dropdown-menu > .active > a:hover, +.dropdown-menu > .active > a:focus { + color: #98978b; + text-decoration: none; + outline: 0; + background-color: #f8f5f0; +} +.dropdown-menu > .disabled > a, +.dropdown-menu > .disabled > a:hover, +.dropdown-menu > .disabled > a:focus { + color: #dfd7ca; +} +.dropdown-menu > .disabled > a:hover, +.dropdown-menu > .disabled > a:focus { + text-decoration: none; + background-color: transparent; + background-image: none; + filter: progid:DXImageTransform.Microsoft.gradient(enabled = false); + cursor: not-allowed; +} +.open > .dropdown-menu { + display: block; +} +.open > a { + outline: 0; +} +.dropdown-menu-right { + left: auto; + right: 0; +} +.dropdown-menu-left { + left: 0; + right: auto; +} +.dropdown-header { + display: block; + padding: 3px 20px; + font-size: 12px; + line-height: 1.42857143; + color: #dfd7ca; + white-space: nowrap; +} +.dropdown-backdrop { + position: fixed; + left: 0; + right: 0; + bottom: 0; + top: 0; + z-index: 990; +} +.pull-right > .dropdown-menu { + right: 0; + left: auto; +} +.dropup .caret, +.navbar-fixed-bottom .dropdown .caret { + border-top: 0; + border-bottom: 4px dashed; + border-bottom: 4px solid \9; + content: ""; +} +.dropup .dropdown-menu, +.navbar-fixed-bottom .dropdown .dropdown-menu { + top: auto; + bottom: 100%; + margin-bottom: 2px; +} +@media (min-width: 768px) { + .navbar-right .dropdown-menu { + left: auto; + right: 0; + } + .navbar-right .dropdown-menu-left { + left: 0; + right: auto; + } +} +.btn-group, +.btn-group-vertical { + position: relative; + display: inline-block; + vertical-align: middle; +} +.btn-group > .btn, +.btn-group-vertical > .btn { + position: relative; + float: left; +} +.btn-group > .btn:hover, +.btn-group-vertical > .btn:hover, +.btn-group > .btn:focus, +.btn-group-vertical > .btn:focus, +.btn-group > .btn:active, +.btn-group-vertical > .btn:active, +.btn-group > .btn.active, +.btn-group-vertical > .btn.active { + z-index: 2; +} +.btn-group .btn + .btn, +.btn-group .btn + .btn-group, +.btn-group .btn-group + .btn, +.btn-group .btn-group + .btn-group { + margin-left: -1px; +} +.btn-toolbar { + margin-left: -5px; +} +.btn-toolbar .btn, +.btn-toolbar .btn-group, +.btn-toolbar .input-group { + float: left; +} +.btn-toolbar > .btn, +.btn-toolbar > .btn-group, +.btn-toolbar > .input-group { + margin-left: 5px; +} +.btn-group > .btn:not(:first-child):not(:last-child):not(.dropdown-toggle) { + border-radius: 0; +} +.btn-group > .btn:first-child { + margin-left: 0; +} +.btn-group > .btn:first-child:not(:last-child):not(.dropdown-toggle) { + border-bottom-right-radius: 0; + border-top-right-radius: 0; +} +.btn-group > .btn:last-child:not(:first-child), +.btn-group > .dropdown-toggle:not(:first-child) { + border-bottom-left-radius: 0; + border-top-left-radius: 0; +} +.btn-group > .btn-group { + float: left; +} +.btn-group > .btn-group:not(:first-child):not(:last-child) > .btn { + border-radius: 0; +} +.btn-group > .btn-group:first-child:not(:last-child) > .btn:last-child, +.btn-group > .btn-group:first-child:not(:last-child) > .dropdown-toggle { + border-bottom-right-radius: 0; + border-top-right-radius: 0; +} +.btn-group > .btn-group:last-child:not(:first-child) > .btn:first-child { + border-bottom-left-radius: 0; + border-top-left-radius: 0; +} +.btn-group .dropdown-toggle:active, +.btn-group.open .dropdown-toggle { + outline: 0; +} +.btn-group > .btn + .dropdown-toggle { + padding-left: 8px; + padding-right: 8px; +} +.btn-group > .btn-lg + .dropdown-toggle { + padding-left: 12px; + padding-right: 12px; +} +.btn-group.open .dropdown-toggle { + -webkit-box-shadow: inset 0 3px 5px rgba(0, 0, 0, 0.125); + box-shadow: inset 0 3px 5px rgba(0, 0, 0, 0.125); +} +.btn-group.open .dropdown-toggle.btn-link { + -webkit-box-shadow: none; + box-shadow: none; +} +.btn .caret { + margin-left: 0; +} +.btn-lg .caret { + border-width: 5px 5px 0; + border-bottom-width: 0; +} +.dropup .btn-lg .caret { + border-width: 0 5px 5px; +} +.btn-group-vertical > .btn, +.btn-group-vertical > .btn-group, +.btn-group-vertical > .btn-group > .btn { + display: block; + float: none; + width: 100%; + max-width: 100%; +} +.btn-group-vertical > .btn-group > .btn { + float: none; +} +.btn-group-vertical > .btn + .btn, +.btn-group-vertical > .btn + .btn-group, +.btn-group-vertical > .btn-group + .btn, +.btn-group-vertical > .btn-group + .btn-group { + margin-top: -1px; + margin-left: 0; +} +.btn-group-vertical > .btn:not(:first-child):not(:last-child) { + border-radius: 0; +} +.btn-group-vertical > .btn:first-child:not(:last-child) { + border-top-right-radius: 4px; + border-top-left-radius: 4px; + border-bottom-right-radius: 0; + border-bottom-left-radius: 0; +} +.btn-group-vertical > .btn:last-child:not(:first-child) { + border-top-right-radius: 0; + border-top-left-radius: 0; + border-bottom-right-radius: 4px; + border-bottom-left-radius: 4px; +} +.btn-group-vertical > .btn-group:not(:first-child):not(:last-child) > .btn { + border-radius: 0; +} +.btn-group-vertical > .btn-group:first-child:not(:last-child) > .btn:last-child, +.btn-group-vertical > .btn-group:first-child:not(:last-child) > .dropdown-toggle { + border-bottom-right-radius: 0; + border-bottom-left-radius: 0; +} +.btn-group-vertical > .btn-group:last-child:not(:first-child) > .btn:first-child { + border-top-right-radius: 0; + border-top-left-radius: 0; +} +.btn-group-justified { + display: table; + width: 100%; + table-layout: fixed; + border-collapse: separate; +} +.btn-group-justified > .btn, +.btn-group-justified > .btn-group { + float: none; + display: table-cell; + width: 1%; +} +.btn-group-justified > .btn-group .btn { + width: 100%; +} +.btn-group-justified > .btn-group .dropdown-menu { + left: auto; +} +[data-toggle="buttons"] > .btn input[type="radio"], +[data-toggle="buttons"] > .btn-group > .btn input[type="radio"], +[data-toggle="buttons"] > .btn input[type="checkbox"], +[data-toggle="buttons"] > .btn-group > .btn input[type="checkbox"] { + position: absolute; + clip: rect(0, 0, 0, 0); + pointer-events: none; +} +.input-group { + position: relative; + display: table; + border-collapse: separate; +} +.input-group[class*="col-"] { + float: none; + padding-left: 0; + padding-right: 0; +} +.input-group .form-control { + position: relative; + z-index: 2; + float: left; + width: 100%; + margin-bottom: 0; +} +.input-group .form-control:focus { + z-index: 3; +} +.input-group-lg > .form-control, +.input-group-lg > .input-group-addon, +.input-group-lg > .input-group-btn > .btn { + height: 66px; + padding: 20px 30px; + font-size: 18px; + line-height: 1.3333333; + border-radius: 6px; +} +select.input-group-lg > .form-control, +select.input-group-lg > .input-group-addon, +select.input-group-lg > .input-group-btn > .btn { + height: 66px; + line-height: 66px; +} +textarea.input-group-lg > .form-control, +textarea.input-group-lg > .input-group-addon, +textarea.input-group-lg > .input-group-btn > .btn, +select[multiple].input-group-lg > .form-control, +select[multiple].input-group-lg > .input-group-addon, +select[multiple].input-group-lg > .input-group-btn > .btn { + height: auto; +} +.input-group-sm > .form-control, +.input-group-sm > .input-group-addon, +.input-group-sm > .input-group-btn > .btn { + height: 30px; + padding: 5px 10px; + font-size: 12px; + line-height: 1.5; + border-radius: 3px; +} +select.input-group-sm > .form-control, +select.input-group-sm > .input-group-addon, +select.input-group-sm > .input-group-btn > .btn { + height: 30px; + line-height: 30px; +} +textarea.input-group-sm > .form-control, +textarea.input-group-sm > .input-group-addon, +textarea.input-group-sm > .input-group-btn > .btn, +select[multiple].input-group-sm > .form-control, +select[multiple].input-group-sm > .input-group-addon, +select[multiple].input-group-sm > .input-group-btn > .btn { + height: auto; +} +.input-group-addon, +.input-group-btn, +.input-group .form-control { + display: table-cell; +} +.input-group-addon:not(:first-child):not(:last-child), +.input-group-btn:not(:first-child):not(:last-child), +.input-group .form-control:not(:first-child):not(:last-child) { + border-radius: 0; +} +.input-group-addon, +.input-group-btn { + width: 1%; + white-space: nowrap; + vertical-align: middle; +} +.input-group-addon { + padding: 12px 16px; + font-size: 14px; + font-weight: normal; + line-height: 1; + color: #3e3f3a; + text-align: center; + background-color: #f8f5f0; + border: 1px solid #dfd7ca; + border-radius: 4px; +} +.input-group-addon.input-sm { + padding: 5px 10px; + font-size: 12px; + border-radius: 3px; +} +.input-group-addon.input-lg { + padding: 20px 30px; + font-size: 18px; + border-radius: 6px; +} +.input-group-addon input[type="radio"], +.input-group-addon input[type="checkbox"] { + margin-top: 0; +} +.input-group .form-control:first-child, +.input-group-addon:first-child, +.input-group-btn:first-child > .btn, +.input-group-btn:first-child > .btn-group > .btn, +.input-group-btn:first-child > .dropdown-toggle, +.input-group-btn:last-child > .btn:not(:last-child):not(.dropdown-toggle), +.input-group-btn:last-child > .btn-group:not(:last-child) > .btn { + border-bottom-right-radius: 0; + border-top-right-radius: 0; +} +.input-group-addon:first-child { + border-right: 0; +} +.input-group .form-control:last-child, +.input-group-addon:last-child, +.input-group-btn:last-child > .btn, +.input-group-btn:last-child > .btn-group > .btn, +.input-group-btn:last-child > .dropdown-toggle, +.input-group-btn:first-child > .btn:not(:first-child), +.input-group-btn:first-child > .btn-group:not(:first-child) > .btn { + border-bottom-left-radius: 0; + border-top-left-radius: 0; +} +.input-group-addon:last-child { + border-left: 0; +} +.input-group-btn { + position: relative; + font-size: 0; + white-space: nowrap; +} +.input-group-btn > .btn { + position: relative; +} +.input-group-btn > .btn + .btn { + margin-left: -1px; +} +.input-group-btn > .btn:hover, +.input-group-btn > .btn:focus, +.input-group-btn > .btn:active { + z-index: 2; +} +.input-group-btn:first-child > .btn, +.input-group-btn:first-child > .btn-group { + margin-right: -1px; +} +.input-group-btn:last-child > .btn, +.input-group-btn:last-child > .btn-group { + z-index: 2; + margin-left: -1px; +} +.nav { + margin-bottom: 0; + padding-left: 0; + list-style: none; +} +.nav > li { + position: relative; + display: block; +} +.nav > li > a { + position: relative; + display: block; + padding: 10px 15px; +} +.nav > li > a:hover, +.nav > li > a:focus { + text-decoration: none; + background-color: #f8f5f0; +} +.nav > li.disabled > a { + color: #dfd7ca; +} +.nav > li.disabled > a:hover, +.nav > li.disabled > a:focus { + color: #dfd7ca; + text-decoration: none; + background-color: transparent; + cursor: not-allowed; +} +.nav .open > a, +.nav .open > a:hover, +.nav .open > a:focus { + background-color: #f8f5f0; + border-color: #93c54b; +} +.nav .nav-divider { + height: 1px; + margin: 9px 0; + overflow: hidden; + background-color: #e5e5e5; +} +.nav > li > a > img { + max-width: none; +} +.nav-tabs { + border-bottom: 1px solid #dfd7ca; +} +.nav-tabs > li { + float: left; + margin-bottom: -1px; +} +.nav-tabs > li > a { + margin-right: 2px; + line-height: 1.42857143; + border: 1px solid transparent; + border-radius: 4px 4px 0 0; +} +.nav-tabs > li > a:hover { + border-color: #dfd7ca #dfd7ca #dfd7ca; +} +.nav-tabs > li.active > a, +.nav-tabs > li.active > a:hover, +.nav-tabs > li.active > a:focus { + color: #98978b; + background-color: #ffffff; + border: 1px solid #dfd7ca; + border-bottom-color: transparent; + cursor: default; +} +.nav-tabs.nav-justified { + width: 100%; + border-bottom: 0; +} +.nav-tabs.nav-justified > li { + float: none; +} +.nav-tabs.nav-justified > li > a { + text-align: center; + margin-bottom: 5px; +} +.nav-tabs.nav-justified > .dropdown .dropdown-menu { + top: auto; + left: auto; +} +@media (min-width: 768px) { + .nav-tabs.nav-justified > li { + display: table-cell; + width: 1%; + } + .nav-tabs.nav-justified > li > a { + margin-bottom: 0; + } +} +.nav-tabs.nav-justified > li > a { + margin-right: 0; + border-radius: 4px; +} +.nav-tabs.nav-justified > .active > a, +.nav-tabs.nav-justified > .active > a:hover, +.nav-tabs.nav-justified > .active > a:focus { + border: 1px solid #dfd7ca; +} +@media (min-width: 768px) { + .nav-tabs.nav-justified > li > a { + border-bottom: 1px solid #dfd7ca; + border-radius: 4px 4px 0 0; + } + .nav-tabs.nav-justified > .active > a, + .nav-tabs.nav-justified > .active > a:hover, + .nav-tabs.nav-justified > .active > a:focus { + border-bottom-color: #ffffff; + } +} +.nav-pills > li { + float: left; +} +.nav-pills > li > a { + border-radius: 4px; +} +.nav-pills > li + li { + margin-left: 2px; +} +.nav-pills > li.active > a, +.nav-pills > li.active > a:hover, +.nav-pills > li.active > a:focus { + color: #98978b; + background-color: #f8f5f0; +} +.nav-stacked > li { + float: none; +} +.nav-stacked > li + li { + margin-top: 2px; + margin-left: 0; +} +.nav-justified { + width: 100%; +} +.nav-justified > li { + float: none; +} +.nav-justified > li > a { + text-align: center; + margin-bottom: 5px; +} +.nav-justified > .dropdown .dropdown-menu { + top: auto; + left: auto; +} +@media (min-width: 768px) { + .nav-justified > li { + display: table-cell; + width: 1%; + } + .nav-justified > li > a { + margin-bottom: 0; + } +} +.nav-tabs-justified { + border-bottom: 0; +} +.nav-tabs-justified > li > a { + margin-right: 0; + border-radius: 4px; +} +.nav-tabs-justified > .active > a, +.nav-tabs-justified > .active > a:hover, +.nav-tabs-justified > .active > a:focus { + border: 1px solid #dfd7ca; +} +@media (min-width: 768px) { + .nav-tabs-justified > li > a { + border-bottom: 1px solid #dfd7ca; + border-radius: 4px 4px 0 0; + } + .nav-tabs-justified > .active > a, + .nav-tabs-justified > .active > a:hover, + .nav-tabs-justified > .active > a:focus { + border-bottom-color: #ffffff; + } +} +.tab-content > .tab-pane { + display: none; +} +.tab-content > .active { + display: block; +} +.nav-tabs .dropdown-menu { + margin-top: -1px; + border-top-right-radius: 0; + border-top-left-radius: 0; +} +.navbar { + position: relative; + min-height: 60px; + margin-bottom: 20px; + border: 1px solid transparent; +} +@media (min-width: 768px) { + .navbar { + border-radius: 4px; + } +} +@media (min-width: 768px) { + .navbar-header { + float: left; + } +} +.navbar-collapse { + overflow-x: visible; + padding-right: 15px; + padding-left: 15px; + border-top: 1px solid transparent; + -webkit-box-shadow: inset 0 1px 0 rgba(255, 255, 255, 0.1); + box-shadow: inset 0 1px 0 rgba(255, 255, 255, 0.1); + -webkit-overflow-scrolling: touch; +} +.navbar-collapse.in { + overflow-y: auto; +} +@media (min-width: 768px) { + .navbar-collapse { + width: auto; + border-top: 0; + -webkit-box-shadow: none; + box-shadow: none; + } + .navbar-collapse.collapse { + display: block !important; + height: auto !important; + padding-bottom: 0; + overflow: visible !important; + } + .navbar-collapse.in { + overflow-y: visible; + } + .navbar-fixed-top .navbar-collapse, + .navbar-static-top .navbar-collapse, + .navbar-fixed-bottom .navbar-collapse { + padding-left: 0; + padding-right: 0; + } +} +.navbar-fixed-top .navbar-collapse, +.navbar-fixed-bottom .navbar-collapse { + max-height: 340px; +} +@media (max-device-width: 480px) and (orientation: landscape) { + .navbar-fixed-top .navbar-collapse, + .navbar-fixed-bottom .navbar-collapse { + max-height: 200px; + } +} +.container > .navbar-header, +.container-fluid > .navbar-header, +.container > .navbar-collapse, +.container-fluid > .navbar-collapse { + margin-right: -15px; + margin-left: -15px; +} +@media (min-width: 768px) { + .container > .navbar-header, + .container-fluid > .navbar-header, + .container > .navbar-collapse, + .container-fluid > .navbar-collapse { + margin-right: 0; + margin-left: 0; + } +} +.navbar-static-top { + z-index: 1000; + border-width: 0 0 1px; +} +@media (min-width: 768px) { + .navbar-static-top { + border-radius: 0; + } +} +.navbar-fixed-top, +.navbar-fixed-bottom { + position: fixed; + right: 0; + left: 0; + z-index: 1030; +} +@media (min-width: 768px) { + .navbar-fixed-top, + .navbar-fixed-bottom { + border-radius: 0; + } +} +.navbar-fixed-top { + top: 0; + border-width: 0 0 1px; +} +.navbar-fixed-bottom { + bottom: 0; + margin-bottom: 0; + border-width: 1px 0 0; +} +.navbar-brand { + float: left; + padding: 20px 15px; + font-size: 18px; + line-height: 20px; + height: 60px; +} +.navbar-brand:hover, +.navbar-brand:focus { + text-decoration: none; +} +.navbar-brand > img { + display: block; +} +@media (min-width: 768px) { + .navbar > .container .navbar-brand, + .navbar > .container-fluid .navbar-brand { + margin-left: -15px; + } +} +.navbar-toggle { + position: relative; + float: right; + margin-right: 15px; + padding: 9px 10px; + margin-top: 13px; + margin-bottom: 13px; + background-color: transparent; + background-image: none; + border: 1px solid transparent; + border-radius: 4px; +} +.navbar-toggle:focus { + outline: 0; +} +.navbar-toggle .icon-bar { + display: block; + width: 22px; + height: 2px; + border-radius: 1px; +} +.navbar-toggle .icon-bar + .icon-bar { + margin-top: 4px; +} +@media (min-width: 768px) { + .navbar-toggle { + display: none; + } +} +.navbar-nav { + margin: 10px -15px; +} +.navbar-nav > li > a { + padding-top: 10px; + padding-bottom: 10px; + line-height: 20px; +} +@media (max-width: 767px) { + .navbar-nav .open .dropdown-menu { + position: static; + float: none; + width: auto; + margin-top: 0; + background-color: transparent; + border: 0; + -webkit-box-shadow: none; + box-shadow: none; + } + .navbar-nav .open .dropdown-menu > li > a, + .navbar-nav .open .dropdown-menu .dropdown-header { + padding: 5px 15px 5px 25px; + } + .navbar-nav .open .dropdown-menu > li > a { + line-height: 20px; + } + .navbar-nav .open .dropdown-menu > li > a:hover, + .navbar-nav .open .dropdown-menu > li > a:focus { + background-image: none; + } +} +@media (min-width: 768px) { + .navbar-nav { + float: left; + margin: 0; + } + .navbar-nav > li { + float: left; + } + .navbar-nav > li > a { + padding-top: 20px; + padding-bottom: 20px; + } +} +.navbar-form { + margin-left: -15px; + margin-right: -15px; + padding: 10px 15px; + border-top: 1px solid transparent; + border-bottom: 1px solid transparent; + -webkit-box-shadow: inset 0 1px 0 rgba(255, 255, 255, 0.1), 0 1px 0 rgba(255, 255, 255, 0.1); + box-shadow: inset 0 1px 0 rgba(255, 255, 255, 0.1), 0 1px 0 rgba(255, 255, 255, 0.1); + margin-top: 7px; + margin-bottom: 7px; +} +@media (min-width: 768px) { + .navbar-form .form-group { + display: inline-block; + margin-bottom: 0; + vertical-align: middle; + } + .navbar-form .form-control { + display: inline-block; + width: auto; + vertical-align: middle; + } + .navbar-form .form-control-static { + display: inline-block; + } + .navbar-form .input-group { + display: inline-table; + vertical-align: middle; + } + .navbar-form .input-group .input-group-addon, + .navbar-form .input-group .input-group-btn, + .navbar-form .input-group .form-control { + width: auto; + } + .navbar-form .input-group > .form-control { + width: 100%; + } + .navbar-form .control-label { + margin-bottom: 0; + vertical-align: middle; + } + .navbar-form .radio, + .navbar-form .checkbox { + display: inline-block; + margin-top: 0; + margin-bottom: 0; + vertical-align: middle; + } + .navbar-form .radio label, + .navbar-form .checkbox label { + padding-left: 0; + } + .navbar-form .radio input[type="radio"], + .navbar-form .checkbox input[type="checkbox"] { + position: relative; + margin-left: 0; + } + .navbar-form .has-feedback .form-control-feedback { + top: 0; + } +} +@media (max-width: 767px) { + .navbar-form .form-group { + margin-bottom: 5px; + } + .navbar-form .form-group:last-child { + margin-bottom: 0; + } +} +@media (min-width: 768px) { + .navbar-form { + width: auto; + border: 0; + margin-left: 0; + margin-right: 0; + padding-top: 0; + padding-bottom: 0; + -webkit-box-shadow: none; + box-shadow: none; + } +} +.navbar-nav > li > .dropdown-menu { + margin-top: 0; + border-top-right-radius: 0; + border-top-left-radius: 0; +} +.navbar-fixed-bottom .navbar-nav > li > .dropdown-menu { + margin-bottom: 0; + border-top-right-radius: 4px; + border-top-left-radius: 4px; + border-bottom-right-radius: 0; + border-bottom-left-radius: 0; +} +.navbar-btn { + margin-top: 7px; + margin-bottom: 7px; +} +.navbar-btn.btn-sm { + margin-top: 15px; + margin-bottom: 15px; +} +.navbar-btn.btn-xs { + margin-top: 19px; + margin-bottom: 19px; +} +.navbar-text { + margin-top: 20px; + margin-bottom: 20px; +} +@media (min-width: 768px) { + .navbar-text { + float: left; + margin-left: 15px; + margin-right: 15px; + } +} +@media (min-width: 768px) { + .navbar-left { + float: left !important; + } + .navbar-right { + float: right !important; + margin-right: -15px; + } + .navbar-right ~ .navbar-right { + margin-right: 0; + } +} +.navbar-default { + background-color: #3e3f3a; + border-color: #3e3f3a; +} +.navbar-default .navbar-brand { + color: #ffffff; +} +.navbar-default .navbar-brand:hover, +.navbar-default .navbar-brand:focus { + color: #ffffff; + background-color: transparent; +} +.navbar-default .navbar-text { + color: #8e8c84; +} +.navbar-default .navbar-nav > li > a { + color: #98978b; +} +.navbar-default .navbar-nav > li > a:hover, +.navbar-default .navbar-nav > li > a:focus { + color: #ffffff; + background-color: transparent; +} +.navbar-default .navbar-nav > .active > a, +.navbar-default .navbar-nav > .active > a:hover, +.navbar-default .navbar-nav > .active > a:focus { + color: #ffffff; + background-color: #393a35; +} +.navbar-default .navbar-nav > .disabled > a, +.navbar-default .navbar-nav > .disabled > a:hover, +.navbar-default .navbar-nav > .disabled > a:focus { + color: #cccccc; + background-color: transparent; +} +.navbar-default .navbar-toggle { + border-color: transparent; +} +.navbar-default .navbar-toggle:hover, +.navbar-default .navbar-toggle:focus { + background-color: #393a35; +} +.navbar-default .navbar-toggle .icon-bar { + background-color: #98978b; +} +.navbar-default .navbar-collapse, +.navbar-default .navbar-form { + border-color: #3e3f3a; +} +.navbar-default .navbar-nav > .open > a, +.navbar-default .navbar-nav > .open > a:hover, +.navbar-default .navbar-nav > .open > a:focus { + background-color: #393a35; + color: #ffffff; +} +@media (max-width: 767px) { + .navbar-default .navbar-nav .open .dropdown-menu > li > a { + color: #98978b; + } + .navbar-default .navbar-nav .open .dropdown-menu > li > a:hover, + .navbar-default .navbar-nav .open .dropdown-menu > li > a:focus { + color: #ffffff; + background-color: transparent; + } + .navbar-default .navbar-nav .open .dropdown-menu > .active > a, + .navbar-default .navbar-nav .open .dropdown-menu > .active > a:hover, + .navbar-default .navbar-nav .open .dropdown-menu > .active > a:focus { + color: #ffffff; + background-color: #393a35; + } + .navbar-default .navbar-nav .open .dropdown-menu > .disabled > a, + .navbar-default .navbar-nav .open .dropdown-menu > .disabled > a:hover, + .navbar-default .navbar-nav .open .dropdown-menu > .disabled > a:focus { + color: #cccccc; + background-color: transparent; + } +} +.navbar-default .navbar-link { + color: #98978b; +} +.navbar-default .navbar-link:hover { + color: #ffffff; +} +.navbar-default .btn-link { + color: #98978b; +} +.navbar-default .btn-link:hover, +.navbar-default .btn-link:focus { + color: #ffffff; +} +.navbar-default .btn-link[disabled]:hover, +fieldset[disabled] .navbar-default .btn-link:hover, +.navbar-default .btn-link[disabled]:focus, +fieldset[disabled] .navbar-default .btn-link:focus { + color: #cccccc; +} +.navbar-inverse { + background-color: #93c54b; + border-color: #93c54b; +} +.navbar-inverse .navbar-brand { + color: #ffffff; +} +.navbar-inverse .navbar-brand:hover, +.navbar-inverse .navbar-brand:focus { + color: #ffffff; + background-color: transparent; +} +.navbar-inverse .navbar-text { + color: #dfd7ca; +} +.navbar-inverse .navbar-nav > li > a { + color: #6b9430; +} +.navbar-inverse .navbar-nav > li > a:hover, +.navbar-inverse .navbar-nav > li > a:focus { + color: #ffffff; + background-color: transparent; +} +.navbar-inverse .navbar-nav > .active > a, +.navbar-inverse .navbar-nav > .active > a:hover, +.navbar-inverse .navbar-nav > .active > a:focus { + color: #ffffff; + background-color: #89be3d; +} +.navbar-inverse .navbar-nav > .disabled > a, +.navbar-inverse .navbar-nav > .disabled > a:hover, +.navbar-inverse .navbar-nav > .disabled > a:focus { + color: #444444; + background-color: transparent; +} +.navbar-inverse .navbar-toggle { + border-color: transparent; +} +.navbar-inverse .navbar-toggle:hover, +.navbar-inverse .navbar-toggle:focus { + background-color: #89be3d; +} +.navbar-inverse .navbar-toggle .icon-bar { + background-color: #6b9430; +} +.navbar-inverse .navbar-collapse, +.navbar-inverse .navbar-form { + border-color: #81b33a; +} +.navbar-inverse .navbar-nav > .open > a, +.navbar-inverse .navbar-nav > .open > a:hover, +.navbar-inverse .navbar-nav > .open > a:focus { + background-color: #89be3d; + color: #ffffff; +} +@media (max-width: 767px) { + .navbar-inverse .navbar-nav .open .dropdown-menu > .dropdown-header { + border-color: #93c54b; + } + .navbar-inverse .navbar-nav .open .dropdown-menu .divider { + background-color: #93c54b; + } + .navbar-inverse .navbar-nav .open .dropdown-menu > li > a { + color: #6b9430; + } + .navbar-inverse .navbar-nav .open .dropdown-menu > li > a:hover, + .navbar-inverse .navbar-nav .open .dropdown-menu > li > a:focus { + color: #ffffff; + background-color: transparent; + } + .navbar-inverse .navbar-nav .open .dropdown-menu > .active > a, + .navbar-inverse .navbar-nav .open .dropdown-menu > .active > a:hover, + .navbar-inverse .navbar-nav .open .dropdown-menu > .active > a:focus { + color: #ffffff; + background-color: #89be3d; + } + .navbar-inverse .navbar-nav .open .dropdown-menu > .disabled > a, + .navbar-inverse .navbar-nav .open .dropdown-menu > .disabled > a:hover, + .navbar-inverse .navbar-nav .open .dropdown-menu > .disabled > a:focus { + color: #444444; + background-color: transparent; + } +} +.navbar-inverse .navbar-link { + color: #6b9430; +} +.navbar-inverse .navbar-link:hover { + color: #ffffff; +} +.navbar-inverse .btn-link { + color: #6b9430; +} +.navbar-inverse .btn-link:hover, +.navbar-inverse .btn-link:focus { + color: #ffffff; +} +.navbar-inverse .btn-link[disabled]:hover, +fieldset[disabled] .navbar-inverse .btn-link:hover, +.navbar-inverse .btn-link[disabled]:focus, +fieldset[disabled] .navbar-inverse .btn-link:focus { + color: #444444; +} +.breadcrumb { + padding: 8px 15px; + margin-bottom: 20px; + list-style: none; + background-color: #f8f5f0; + border-radius: 4px; +} +.breadcrumb > li { + display: inline-block; +} +.breadcrumb > li + li:before { + content: "/\00a0"; + padding: 0 5px; + color: #dfd7ca; +} +.breadcrumb > .active { + color: #98978b; +} +.pagination { + display: inline-block; + padding-left: 0; + margin: 20px 0; + border-radius: 4px; +} +.pagination > li { + display: inline; +} +.pagination > li > a, +.pagination > li > span { + position: relative; + float: left; + padding: 12px 16px; + line-height: 1.42857143; + text-decoration: none; + color: #98978b; + background-color: #f8f5f0; + border: 1px solid #dfd7ca; + margin-left: -1px; +} +.pagination > li:first-child > a, +.pagination > li:first-child > span { + margin-left: 0; + border-bottom-left-radius: 4px; + border-top-left-radius: 4px; +} +.pagination > li:last-child > a, +.pagination > li:last-child > span { + border-bottom-right-radius: 4px; + border-top-right-radius: 4px; +} +.pagination > li > a:hover, +.pagination > li > span:hover, +.pagination > li > a:focus, +.pagination > li > span:focus { + z-index: 2; + color: #8e8c84; + background-color: #dfd7ca; + border-color: #dfd7ca; +} +.pagination > .active > a, +.pagination > .active > span, +.pagination > .active > a:hover, +.pagination > .active > span:hover, +.pagination > .active > a:focus, +.pagination > .active > span:focus { + z-index: 3; + color: #8e8c84; + background-color: #dfd7ca; + border-color: #dfd7ca; + cursor: default; +} +.pagination > .disabled > span, +.pagination > .disabled > span:hover, +.pagination > .disabled > span:focus, +.pagination > .disabled > a, +.pagination > .disabled > a:hover, +.pagination > .disabled > a:focus { + color: #dfd7ca; + background-color: #f8f5f0; + border-color: #dfd7ca; + cursor: not-allowed; +} +.pagination-lg > li > a, +.pagination-lg > li > span { + padding: 20px 30px; + font-size: 18px; + line-height: 1.3333333; +} +.pagination-lg > li:first-child > a, +.pagination-lg > li:first-child > span { + border-bottom-left-radius: 6px; + border-top-left-radius: 6px; +} +.pagination-lg > li:last-child > a, +.pagination-lg > li:last-child > span { + border-bottom-right-radius: 6px; + border-top-right-radius: 6px; +} +.pagination-sm > li > a, +.pagination-sm > li > span { + padding: 5px 10px; + font-size: 12px; + line-height: 1.5; +} +.pagination-sm > li:first-child > a, +.pagination-sm > li:first-child > span { + border-bottom-left-radius: 3px; + border-top-left-radius: 3px; +} +.pagination-sm > li:last-child > a, +.pagination-sm > li:last-child > span { + border-bottom-right-radius: 3px; + border-top-right-radius: 3px; +} +.pager { + padding-left: 0; + margin: 20px 0; + list-style: none; + text-align: center; +} +.pager li { + display: inline; +} +.pager li > a, +.pager li > span { + display: inline-block; + padding: 5px 14px; + background-color: #f8f5f0; + border: 1px solid #dfd7ca; + border-radius: 15px; +} +.pager li > a:hover, +.pager li > a:focus { + text-decoration: none; + background-color: #dfd7ca; +} +.pager .next > a, +.pager .next > span { + float: right; +} +.pager .previous > a, +.pager .previous > span { + float: left; +} +.pager .disabled > a, +.pager .disabled > a:hover, +.pager .disabled > a:focus, +.pager .disabled > span { + color: #dfd7ca; + background-color: #f8f5f0; + cursor: not-allowed; +} +.label { + display: inline; + padding: .2em .6em .3em; + font-size: 75%; + font-weight: bold; + line-height: 1; + color: #ffffff; + text-align: center; + white-space: nowrap; + vertical-align: baseline; + border-radius: .25em; +} +a.label:hover, +a.label:focus { + color: #ffffff; + text-decoration: none; + cursor: pointer; +} +.label:empty { + display: none; +} +.btn .label { + position: relative; + top: -1px; +} +.label-default { + background-color: #3e3f3a; +} +.label-default[href]:hover, +.label-default[href]:focus { + background-color: #242422; +} +.label-primary { + background-color: #325d88; +} +.label-primary[href]:hover, +.label-primary[href]:focus { + background-color: #244363; +} +.label-success { + background-color: #93c54b; +} +.label-success[href]:hover, +.label-success[href]:focus { + background-color: #79a736; +} +.label-info { + background-color: #29abe0; +} +.label-info[href]:hover, +.label-info[href]:focus { + background-color: #1b8dbb; +} +.label-warning { + background-color: #f47c3c; +} +.label-warning[href]:hover, +.label-warning[href]:focus { + background-color: #ef5c0e; +} +.label-danger { + background-color: #d9534f; +} +.label-danger[href]:hover, +.label-danger[href]:focus { + background-color: #c9302c; +} +.badge { + display: inline-block; + min-width: 10px; + padding: 3px 7px; + font-size: 12px; + font-weight: normal; + color: #ffffff; + line-height: 1; + vertical-align: middle; + white-space: nowrap; + text-align: center; + background-color: #93c54b; + border-radius: 10px; +} +.badge:empty { + display: none; +} +.btn .badge { + position: relative; + top: -1px; +} +.btn-xs .badge, +.btn-group-xs > .btn .badge { + top: 0; + padding: 1px 5px; +} +a.badge:hover, +a.badge:focus { + color: #ffffff; + text-decoration: none; + cursor: pointer; +} +.list-group-item.active > .badge, +.nav-pills > .active > a > .badge { + color: #ffffff; + background-color: #93c54b; +} +.list-group-item > .badge { + float: right; +} +.list-group-item > .badge + .badge { + margin-right: 5px; +} +.nav-pills > li > a > .badge { + margin-left: 3px; +} +.jumbotron { + padding-top: 30px; + padding-bottom: 30px; + margin-bottom: 30px; + color: inherit; + background-color: #f8f5f0; +} +.jumbotron h1, +.jumbotron .h1 { + color: inherit; +} +.jumbotron p { + margin-bottom: 15px; + font-size: 21px; + font-weight: 200; +} +.jumbotron > hr { + border-top-color: #e8decd; +} +.container .jumbotron, +.container-fluid .jumbotron { + border-radius: 6px; + padding-left: 15px; + padding-right: 15px; +} +.jumbotron .container { + max-width: 100%; +} +@media screen and (min-width: 768px) { + .jumbotron { + padding-top: 48px; + padding-bottom: 48px; + } + .container .jumbotron, + .container-fluid .jumbotron { + padding-left: 60px; + padding-right: 60px; + } + .jumbotron h1, + .jumbotron .h1 { + font-size: 63px; + } +} +.thumbnail { + display: block; + padding: 4px; + margin-bottom: 20px; + line-height: 1.42857143; + background-color: #f8f5f0; + border: 1px solid #dfd7ca; + border-radius: 4px; + -webkit-transition: border 0.2s ease-in-out; + -o-transition: border 0.2s ease-in-out; + transition: border 0.2s ease-in-out; +} +.thumbnail > img, +.thumbnail a > img { + margin-left: auto; + margin-right: auto; +} +a.thumbnail:hover, +a.thumbnail:focus, +a.thumbnail.active { + border-color: #93c54b; +} +.thumbnail .caption { + padding: 9px; + color: #3e3f3a; +} +.alert { + padding: 15px; + margin-bottom: 20px; + border: 1px solid transparent; + border-radius: 4px; +} +.alert h4 { + margin-top: 0; + color: inherit; +} +.alert .alert-link { + font-weight: bold; +} +.alert > p, +.alert > ul { + margin-bottom: 0; +} +.alert > p + p { + margin-top: 5px; +} +.alert-dismissable, +.alert-dismissible { + padding-right: 35px; +} +.alert-dismissable .close, +.alert-dismissible .close { + position: relative; + top: -2px; + right: -21px; + color: inherit; +} +.alert-success { + background-color: #93c54b; + border-color: transparent; + color: #ffffff; +} +.alert-success hr { + border-top-color: rgba(0, 0, 0, 0); +} +.alert-success .alert-link { + color: #e6e6e6; +} +.alert-info { + background-color: #29abe0; + border-color: transparent; + color: #ffffff; +} +.alert-info hr { + border-top-color: rgba(0, 0, 0, 0); +} +.alert-info .alert-link { + color: #e6e6e6; +} +.alert-warning { + background-color: #f47c3c; + border-color: transparent; + color: #ffffff; +} +.alert-warning hr { + border-top-color: rgba(0, 0, 0, 0); +} +.alert-warning .alert-link { + color: #e6e6e6; +} +.alert-danger { + background-color: #d9534f; + border-color: transparent; + color: #ffffff; +} +.alert-danger hr { + border-top-color: rgba(0, 0, 0, 0); +} +.alert-danger .alert-link { + color: #e6e6e6; +} +@-webkit-keyframes progress-bar-stripes { + from { + background-position: 40px 0; + } + to { + background-position: 0 0; + } +} +@-o-keyframes progress-bar-stripes { + from { + background-position: 40px 0; + } + to { + background-position: 0 0; + } +} +@keyframes progress-bar-stripes { + from { + background-position: 40px 0; + } + to { + background-position: 0 0; + } +} +.progress { + overflow: hidden; + height: 20px; + margin-bottom: 20px; + background-color: #f5f5f5; + border-radius: 4px; + -webkit-box-shadow: inset 0 1px 2px rgba(0, 0, 0, 0.1); + box-shadow: inset 0 1px 2px rgba(0, 0, 0, 0.1); +} +.progress-bar { + float: left; + width: 0%; + height: 100%; + font-size: 12px; + line-height: 20px; + color: #ffffff; + text-align: center; + background-color: #325d88; + -webkit-box-shadow: inset 0 -1px 0 rgba(0, 0, 0, 0.15); + box-shadow: inset 0 -1px 0 rgba(0, 0, 0, 0.15); + -webkit-transition: width 0.6s ease; + -o-transition: width 0.6s ease; + transition: width 0.6s ease; +} +.progress-striped .progress-bar, +.progress-bar-striped { + background-image: -webkit-linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent); + background-image: -o-linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent); + background-image: linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent); + -webkit-background-size: 40px 40px; + background-size: 40px 40px; +} +.progress.active .progress-bar, +.progress-bar.active { + -webkit-animation: progress-bar-stripes 2s linear infinite; + -o-animation: progress-bar-stripes 2s linear infinite; + animation: progress-bar-stripes 2s linear infinite; +} +.progress-bar-success { + background-color: #93c54b; +} +.progress-striped .progress-bar-success { + background-image: -webkit-linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent); + background-image: -o-linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent); + background-image: linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent); +} +.progress-bar-info { + background-color: #29abe0; +} +.progress-striped .progress-bar-info { + background-image: -webkit-linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent); + background-image: -o-linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent); + background-image: linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent); +} +.progress-bar-warning { + background-color: #f47c3c; +} +.progress-striped .progress-bar-warning { + background-image: -webkit-linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent); + background-image: -o-linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent); + background-image: linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent); +} +.progress-bar-danger { + background-color: #d9534f; +} +.progress-striped .progress-bar-danger { + background-image: -webkit-linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent); + background-image: -o-linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent); + background-image: linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent); +} +.media { + margin-top: 15px; +} +.media:first-child { + margin-top: 0; +} +.media, +.media-body { + zoom: 1; + overflow: hidden; +} +.media-body { + width: 10000px; +} +.media-object { + display: block; +} +.media-object.img-thumbnail { + max-width: none; +} +.media-right, +.media > .pull-right { + padding-left: 10px; +} +.media-left, +.media > .pull-left { + padding-right: 10px; +} +.media-left, +.media-right, +.media-body { + display: table-cell; + vertical-align: top; +} +.media-middle { + vertical-align: middle; +} +.media-bottom { + vertical-align: bottom; +} +.media-heading { + margin-top: 0; + margin-bottom: 5px; +} +.media-list { + padding-left: 0; + list-style: none; +} +.list-group { + margin-bottom: 20px; + padding-left: 0; +} +.list-group-item { + position: relative; + display: block; + padding: 10px 15px; + margin-bottom: -1px; + background-color: #ffffff; + border: 1px solid #dfd7ca; +} +.list-group-item:first-child { + border-top-right-radius: 4px; + border-top-left-radius: 4px; +} +.list-group-item:last-child { + margin-bottom: 0; + border-bottom-right-radius: 4px; + border-bottom-left-radius: 4px; +} +a.list-group-item, +button.list-group-item { + color: #3e3f3a; +} +a.list-group-item .list-group-item-heading, +button.list-group-item .list-group-item-heading { + color: inherit; +} +a.list-group-item:hover, +button.list-group-item:hover, +a.list-group-item:focus, +button.list-group-item:focus { + text-decoration: none; + color: #3e3f3a; + background-color: #f8f5f0; +} +button.list-group-item { + width: 100%; + text-align: left; +} +.list-group-item.disabled, +.list-group-item.disabled:hover, +.list-group-item.disabled:focus { + background-color: #f8f5f0; + color: #dfd7ca; + cursor: not-allowed; +} +.list-group-item.disabled .list-group-item-heading, +.list-group-item.disabled:hover .list-group-item-heading, +.list-group-item.disabled:focus .list-group-item-heading { + color: inherit; +} +.list-group-item.disabled .list-group-item-text, +.list-group-item.disabled:hover .list-group-item-text, +.list-group-item.disabled:focus .list-group-item-text { + color: #dfd7ca; +} +.list-group-item.active, +.list-group-item.active:hover, +.list-group-item.active:focus { + z-index: 2; + color: #3e3f3a; + background-color: #f8f5f0; + border-color: #dfd7ca; +} +.list-group-item.active .list-group-item-heading, +.list-group-item.active:hover .list-group-item-heading, +.list-group-item.active:focus .list-group-item-heading, +.list-group-item.active .list-group-item-heading > small, +.list-group-item.active:hover .list-group-item-heading > small, +.list-group-item.active:focus .list-group-item-heading > small, +.list-group-item.active .list-group-item-heading > .small, +.list-group-item.active:hover .list-group-item-heading > .small, +.list-group-item.active:focus .list-group-item-heading > .small { + color: inherit; +} +.list-group-item.active .list-group-item-text, +.list-group-item.active:hover .list-group-item-text, +.list-group-item.active:focus .list-group-item-text { + color: #3e3f3a; +} +.list-group-item-success { + color: #93c54b; + background-color: #dff0d8; +} +a.list-group-item-success, +button.list-group-item-success { + color: #93c54b; +} +a.list-group-item-success .list-group-item-heading, +button.list-group-item-success .list-group-item-heading { + color: inherit; +} +a.list-group-item-success:hover, +button.list-group-item-success:hover, +a.list-group-item-success:focus, +button.list-group-item-success:focus { + color: #93c54b; + background-color: #d0e9c6; +} +a.list-group-item-success.active, +button.list-group-item-success.active, +a.list-group-item-success.active:hover, +button.list-group-item-success.active:hover, +a.list-group-item-success.active:focus, +button.list-group-item-success.active:focus { + color: #fff; + background-color: #93c54b; + border-color: #93c54b; +} +.list-group-item-info { + color: #29abe0; + background-color: #d9edf7; +} +a.list-group-item-info, +button.list-group-item-info { + color: #29abe0; +} +a.list-group-item-info .list-group-item-heading, +button.list-group-item-info .list-group-item-heading { + color: inherit; +} +a.list-group-item-info:hover, +button.list-group-item-info:hover, +a.list-group-item-info:focus, +button.list-group-item-info:focus { + color: #29abe0; + background-color: #c4e3f3; +} +a.list-group-item-info.active, +button.list-group-item-info.active, +a.list-group-item-info.active:hover, +button.list-group-item-info.active:hover, +a.list-group-item-info.active:focus, +button.list-group-item-info.active:focus { + color: #fff; + background-color: #29abe0; + border-color: #29abe0; +} +.list-group-item-warning { + color: #f47c3c; + background-color: #fcf8e3; +} +a.list-group-item-warning, +button.list-group-item-warning { + color: #f47c3c; +} +a.list-group-item-warning .list-group-item-heading, +button.list-group-item-warning .list-group-item-heading { + color: inherit; +} +a.list-group-item-warning:hover, +button.list-group-item-warning:hover, +a.list-group-item-warning:focus, +button.list-group-item-warning:focus { + color: #f47c3c; + background-color: #faf2cc; +} +a.list-group-item-warning.active, +button.list-group-item-warning.active, +a.list-group-item-warning.active:hover, +button.list-group-item-warning.active:hover, +a.list-group-item-warning.active:focus, +button.list-group-item-warning.active:focus { + color: #fff; + background-color: #f47c3c; + border-color: #f47c3c; +} +.list-group-item-danger { + color: #d9534f; + background-color: #f2dede; +} +a.list-group-item-danger, +button.list-group-item-danger { + color: #d9534f; +} +a.list-group-item-danger .list-group-item-heading, +button.list-group-item-danger .list-group-item-heading { + color: inherit; +} +a.list-group-item-danger:hover, +button.list-group-item-danger:hover, +a.list-group-item-danger:focus, +button.list-group-item-danger:focus { + color: #d9534f; + background-color: #ebcccc; +} +a.list-group-item-danger.active, +button.list-group-item-danger.active, +a.list-group-item-danger.active:hover, +button.list-group-item-danger.active:hover, +a.list-group-item-danger.active:focus, +button.list-group-item-danger.active:focus { + color: #fff; + background-color: #d9534f; + border-color: #d9534f; +} +.list-group-item-heading { + margin-top: 0; + margin-bottom: 5px; +} +.list-group-item-text { + margin-bottom: 0; + line-height: 1.3; +} +.panel { + margin-bottom: 20px; + background-color: #ffffff; + border: 1px solid transparent; + border-radius: 4px; + -webkit-box-shadow: 0 1px 1px rgba(0, 0, 0, 0.05); + box-shadow: 0 1px 1px rgba(0, 0, 0, 0.05); +} +.panel-body { + padding: 15px; +} +.panel-heading { + padding: 10px 15px; + border-bottom: 1px solid transparent; + border-top-right-radius: 3px; + border-top-left-radius: 3px; +} +.panel-heading > .dropdown .dropdown-toggle { + color: inherit; +} +.panel-title { + margin-top: 0; + margin-bottom: 0; + font-size: 16px; + color: inherit; +} +.panel-title > a, +.panel-title > small, +.panel-title > .small, +.panel-title > small > a, +.panel-title > .small > a { + color: inherit; +} +.panel-footer { + padding: 10px 15px; + background-color: #f8f5f0; + border-top: 1px solid #dfd7ca; + border-bottom-right-radius: 3px; + border-bottom-left-radius: 3px; +} +.panel > .list-group, +.panel > .panel-collapse > .list-group { + margin-bottom: 0; +} +.panel > .list-group .list-group-item, +.panel > .panel-collapse > .list-group .list-group-item { + border-width: 1px 0; + border-radius: 0; +} +.panel > .list-group:first-child .list-group-item:first-child, +.panel > .panel-collapse > .list-group:first-child .list-group-item:first-child { + border-top: 0; + border-top-right-radius: 3px; + border-top-left-radius: 3px; +} +.panel > .list-group:last-child .list-group-item:last-child, +.panel > .panel-collapse > .list-group:last-child .list-group-item:last-child { + border-bottom: 0; + border-bottom-right-radius: 3px; + border-bottom-left-radius: 3px; +} +.panel > .panel-heading + .panel-collapse > .list-group .list-group-item:first-child { + border-top-right-radius: 0; + border-top-left-radius: 0; +} +.panel-heading + .list-group .list-group-item:first-child { + border-top-width: 0; +} +.list-group + .panel-footer { + border-top-width: 0; +} +.panel > .table, +.panel > .table-responsive > .table, +.panel > .panel-collapse > .table { + margin-bottom: 0; +} +.panel > .table caption, +.panel > .table-responsive > .table caption, +.panel > .panel-collapse > .table caption { + padding-left: 15px; + padding-right: 15px; +} +.panel > .table:first-child, +.panel > .table-responsive:first-child > .table:first-child { + border-top-right-radius: 3px; + border-top-left-radius: 3px; +} +.panel > .table:first-child > thead:first-child > tr:first-child, +.panel > .table-responsive:first-child > .table:first-child > thead:first-child > tr:first-child, +.panel > .table:first-child > tbody:first-child > tr:first-child, +.panel > .table-responsive:first-child > .table:first-child > tbody:first-child > tr:first-child { + border-top-left-radius: 3px; + border-top-right-radius: 3px; +} +.panel > .table:first-child > thead:first-child > tr:first-child td:first-child, +.panel > .table-responsive:first-child > .table:first-child > thead:first-child > tr:first-child td:first-child, +.panel > .table:first-child > tbody:first-child > tr:first-child td:first-child, +.panel > .table-responsive:first-child > .table:first-child > tbody:first-child > tr:first-child td:first-child, +.panel > .table:first-child > thead:first-child > tr:first-child th:first-child, +.panel > .table-responsive:first-child > .table:first-child > thead:first-child > tr:first-child th:first-child, +.panel > .table:first-child > tbody:first-child > tr:first-child th:first-child, +.panel > .table-responsive:first-child > .table:first-child > tbody:first-child > tr:first-child th:first-child { + border-top-left-radius: 3px; +} +.panel > .table:first-child > thead:first-child > tr:first-child td:last-child, +.panel > .table-responsive:first-child > .table:first-child > thead:first-child > tr:first-child td:last-child, +.panel > .table:first-child > tbody:first-child > tr:first-child td:last-child, +.panel > .table-responsive:first-child > .table:first-child > tbody:first-child > tr:first-child td:last-child, +.panel > .table:first-child > thead:first-child > tr:first-child th:last-child, +.panel > .table-responsive:first-child > .table:first-child > thead:first-child > tr:first-child th:last-child, +.panel > .table:first-child > tbody:first-child > tr:first-child th:last-child, +.panel > .table-responsive:first-child > .table:first-child > tbody:first-child > tr:first-child th:last-child { + border-top-right-radius: 3px; +} +.panel > .table:last-child, +.panel > .table-responsive:last-child > .table:last-child { + border-bottom-right-radius: 3px; + border-bottom-left-radius: 3px; +} +.panel > .table:last-child > tbody:last-child > tr:last-child, +.panel > .table-responsive:last-child > .table:last-child > tbody:last-child > tr:last-child, +.panel > .table:last-child > tfoot:last-child > tr:last-child, +.panel > .table-responsive:last-child > .table:last-child > tfoot:last-child > tr:last-child { + border-bottom-left-radius: 3px; + border-bottom-right-radius: 3px; +} +.panel > .table:last-child > tbody:last-child > tr:last-child td:first-child, +.panel > .table-responsive:last-child > .table:last-child > tbody:last-child > tr:last-child td:first-child, +.panel > .table:last-child > tfoot:last-child > tr:last-child td:first-child, +.panel > .table-responsive:last-child > .table:last-child > tfoot:last-child > tr:last-child td:first-child, +.panel > .table:last-child > tbody:last-child > tr:last-child th:first-child, +.panel > .table-responsive:last-child > .table:last-child > tbody:last-child > tr:last-child th:first-child, +.panel > .table:last-child > tfoot:last-child > tr:last-child th:first-child, +.panel > .table-responsive:last-child > .table:last-child > tfoot:last-child > tr:last-child th:first-child { + border-bottom-left-radius: 3px; +} +.panel > .table:last-child > tbody:last-child > tr:last-child td:last-child, +.panel > .table-responsive:last-child > .table:last-child > tbody:last-child > tr:last-child td:last-child, +.panel > .table:last-child > tfoot:last-child > tr:last-child td:last-child, +.panel > .table-responsive:last-child > .table:last-child > tfoot:last-child > tr:last-child td:last-child, +.panel > .table:last-child > tbody:last-child > tr:last-child th:last-child, +.panel > .table-responsive:last-child > .table:last-child > tbody:last-child > tr:last-child th:last-child, +.panel > .table:last-child > tfoot:last-child > tr:last-child th:last-child, +.panel > .table-responsive:last-child > .table:last-child > tfoot:last-child > tr:last-child th:last-child { + border-bottom-right-radius: 3px; +} +.panel > .panel-body + .table, +.panel > .panel-body + .table-responsive, +.panel > .table + .panel-body, +.panel > .table-responsive + .panel-body { + border-top: 1px solid #dfd7ca; +} +.panel > .table > tbody:first-child > tr:first-child th, +.panel > .table > tbody:first-child > tr:first-child td { + border-top: 0; +} +.panel > .table-bordered, +.panel > .table-responsive > .table-bordered { + border: 0; +} +.panel > .table-bordered > thead > tr > th:first-child, +.panel > .table-responsive > .table-bordered > thead > tr > th:first-child, +.panel > .table-bordered > tbody > tr > th:first-child, +.panel > .table-responsive > .table-bordered > tbody > tr > th:first-child, +.panel > .table-bordered > tfoot > tr > th:first-child, +.panel > .table-responsive > .table-bordered > tfoot > tr > th:first-child, +.panel > .table-bordered > thead > tr > td:first-child, +.panel > .table-responsive > .table-bordered > thead > tr > td:first-child, +.panel > .table-bordered > tbody > tr > td:first-child, +.panel > .table-responsive > .table-bordered > tbody > tr > td:first-child, +.panel > .table-bordered > tfoot > tr > td:first-child, +.panel > .table-responsive > .table-bordered > tfoot > tr > td:first-child { + border-left: 0; +} +.panel > .table-bordered > thead > tr > th:last-child, +.panel > .table-responsive > .table-bordered > thead > tr > th:last-child, +.panel > .table-bordered > tbody > tr > th:last-child, +.panel > .table-responsive > .table-bordered > tbody > tr > th:last-child, +.panel > .table-bordered > tfoot > tr > th:last-child, +.panel > .table-responsive > .table-bordered > tfoot > tr > th:last-child, +.panel > .table-bordered > thead > tr > td:last-child, +.panel > .table-responsive > .table-bordered > thead > tr > td:last-child, +.panel > .table-bordered > tbody > tr > td:last-child, +.panel > .table-responsive > .table-bordered > tbody > tr > td:last-child, +.panel > .table-bordered > tfoot > tr > td:last-child, +.panel > .table-responsive > .table-bordered > tfoot > tr > td:last-child { + border-right: 0; +} +.panel > .table-bordered > thead > tr:first-child > td, +.panel > .table-responsive > .table-bordered > thead > tr:first-child > td, +.panel > .table-bordered > tbody > tr:first-child > td, +.panel > .table-responsive > .table-bordered > tbody > tr:first-child > td, +.panel > .table-bordered > thead > tr:first-child > th, +.panel > .table-responsive > .table-bordered > thead > tr:first-child > th, +.panel > .table-bordered > tbody > tr:first-child > th, +.panel > .table-responsive > .table-bordered > tbody > tr:first-child > th { + border-bottom: 0; +} +.panel > .table-bordered > tbody > tr:last-child > td, +.panel > .table-responsive > .table-bordered > tbody > tr:last-child > td, +.panel > .table-bordered > tfoot > tr:last-child > td, +.panel > .table-responsive > .table-bordered > tfoot > tr:last-child > td, +.panel > .table-bordered > tbody > tr:last-child > th, +.panel > .table-responsive > .table-bordered > tbody > tr:last-child > th, +.panel > .table-bordered > tfoot > tr:last-child > th, +.panel > .table-responsive > .table-bordered > tfoot > tr:last-child > th { + border-bottom: 0; +} +.panel > .table-responsive { + border: 0; + margin-bottom: 0; +} +.panel-group { + margin-bottom: 20px; +} +.panel-group .panel { + margin-bottom: 0; + border-radius: 4px; +} +.panel-group .panel + .panel { + margin-top: 5px; +} +.panel-group .panel-heading { + border-bottom: 0; +} +.panel-group .panel-heading + .panel-collapse > .panel-body, +.panel-group .panel-heading + .panel-collapse > .list-group { + border-top: 1px solid #dfd7ca; +} +.panel-group .panel-footer { + border-top: 0; +} +.panel-group .panel-footer + .panel-collapse .panel-body { + border-bottom: 1px solid #dfd7ca; +} +.panel-default { + border-color: #dfd7ca; +} +.panel-default > .panel-heading { + color: #3e3f3a; + background-color: #f8f5f0; + border-color: #dfd7ca; +} +.panel-default > .panel-heading + .panel-collapse > .panel-body { + border-top-color: #dfd7ca; +} +.panel-default > .panel-heading .badge { + color: #f8f5f0; + background-color: #3e3f3a; +} +.panel-default > .panel-footer + .panel-collapse > .panel-body { + border-bottom-color: #dfd7ca; +} +.panel-primary { + border-color: #325d88; +} +.panel-primary > .panel-heading { + color: #ffffff; + background-color: #325d88; + border-color: #325d88; +} +.panel-primary > .panel-heading + .panel-collapse > .panel-body { + border-top-color: #325d88; +} +.panel-primary > .panel-heading .badge { + color: #325d88; + background-color: #ffffff; +} +.panel-primary > .panel-footer + .panel-collapse > .panel-body { + border-bottom-color: #325d88; +} +.panel-success { + border-color: #d6e9c6; +} +.panel-success > .panel-heading { + color: #93c54b; + background-color: #93c54b; + border-color: #d6e9c6; +} +.panel-success > .panel-heading + .panel-collapse > .panel-body { + border-top-color: #d6e9c6; +} +.panel-success > .panel-heading .badge { + color: #93c54b; + background-color: #93c54b; +} +.panel-success > .panel-footer + .panel-collapse > .panel-body { + border-bottom-color: #d6e9c6; +} +.panel-info { + border-color: #bce8f1; +} +.panel-info > .panel-heading { + color: #29abe0; + background-color: #29abe0; + border-color: #bce8f1; +} +.panel-info > .panel-heading + .panel-collapse > .panel-body { + border-top-color: #bce8f1; +} +.panel-info > .panel-heading .badge { + color: #29abe0; + background-color: #29abe0; +} +.panel-info > .panel-footer + .panel-collapse > .panel-body { + border-bottom-color: #bce8f1; +} +.panel-warning { + border-color: #faebcc; +} +.panel-warning > .panel-heading { + color: #f47c3c; + background-color: #f47c3c; + border-color: #faebcc; +} +.panel-warning > .panel-heading + .panel-collapse > .panel-body { + border-top-color: #faebcc; +} +.panel-warning > .panel-heading .badge { + color: #f47c3c; + background-color: #f47c3c; +} +.panel-warning > .panel-footer + .panel-collapse > .panel-body { + border-bottom-color: #faebcc; +} +.panel-danger { + border-color: #ebccd1; +} +.panel-danger > .panel-heading { + color: #d9534f; + background-color: #d9534f; + border-color: #ebccd1; +} +.panel-danger > .panel-heading + .panel-collapse > .panel-body { + border-top-color: #ebccd1; +} +.panel-danger > .panel-heading .badge { + color: #d9534f; + background-color: #d9534f; +} +.panel-danger > .panel-footer + .panel-collapse > .panel-body { + border-bottom-color: #ebccd1; +} +.embed-responsive { + position: relative; + display: block; + height: 0; + padding: 0; + overflow: hidden; +} +.embed-responsive .embed-responsive-item, +.embed-responsive iframe, +.embed-responsive embed, +.embed-responsive object, +.embed-responsive video { + position: absolute; + top: 0; + left: 0; + bottom: 0; + height: 100%; + width: 100%; + border: 0; +} +.embed-responsive-16by9 { + padding-bottom: 56.25%; +} +.embed-responsive-4by3 { + padding-bottom: 75%; +} +.well { + min-height: 20px; + padding: 19px; + margin-bottom: 20px; + background-color: #f8f5f0; + border: 1px solid transparent; + border-radius: 4px; + -webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.05); + box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.05); +} +.well blockquote { + border-color: #ddd; + border-color: rgba(0, 0, 0, 0.15); +} +.well-lg { + padding: 24px; + border-radius: 6px; +} +.well-sm { + padding: 9px; + border-radius: 3px; +} +.close { + float: right; + font-size: 21px; + font-weight: bold; + line-height: 1; + color: #000000; + text-shadow: 0 0 0 transparent; + opacity: 0.2; + filter: alpha(opacity=20); +} +.close:hover, +.close:focus { + color: #000000; + text-decoration: none; + cursor: pointer; + opacity: 0.5; + filter: alpha(opacity=50); +} +button.close { + padding: 0; + cursor: pointer; + background: transparent; + border: 0; + -webkit-appearance: none; +} +.modal-open { + overflow: hidden; +} +.modal { + display: none; + overflow: hidden; + position: fixed; + top: 0; + right: 0; + bottom: 0; + left: 0; + z-index: 1050; + -webkit-overflow-scrolling: touch; + outline: 0; +} +.modal.fade .modal-dialog { + -webkit-transform: translate(0, -25%); + -ms-transform: translate(0, -25%); + -o-transform: translate(0, -25%); + transform: translate(0, -25%); + -webkit-transition: -webkit-transform 0.3s ease-out; + -o-transition: -o-transform 0.3s ease-out; + transition: transform 0.3s ease-out; +} +.modal.in .modal-dialog { + -webkit-transform: translate(0, 0); + -ms-transform: translate(0, 0); + -o-transform: translate(0, 0); + transform: translate(0, 0); +} +.modal-open .modal { + overflow-x: hidden; + overflow-y: auto; +} +.modal-dialog { + position: relative; + width: auto; + margin: 10px; +} +.modal-content { + position: relative; + background-color: #ffffff; + border: 1px solid #f8f5f0; + border-radius: 6px; + -webkit-box-shadow: 0 3px 9px rgba(0, 0, 0, 0.5); + box-shadow: 0 3px 9px rgba(0, 0, 0, 0.5); + -webkit-background-clip: padding-box; + background-clip: padding-box; + outline: 0; +} +.modal-backdrop { + position: fixed; + top: 0; + right: 0; + bottom: 0; + left: 0; + z-index: 1040; + background-color: #000000; +} +.modal-backdrop.fade { + opacity: 0; + filter: alpha(opacity=0); +} +.modal-backdrop.in { + opacity: 0.5; + filter: alpha(opacity=50); +} +.modal-header { + padding: 15px; + border-bottom: 1px solid #f8f5f0; +} +.modal-header .close { + margin-top: -2px; +} +.modal-title { + margin: 0; + line-height: 1.42857143; +} +.modal-body { + position: relative; + padding: 15px; +} +.modal-footer { + padding: 15px; + text-align: right; + border-top: 1px solid #f8f5f0; +} +.modal-footer .btn + .btn { + margin-left: 5px; + margin-bottom: 0; +} +.modal-footer .btn-group .btn + .btn { + margin-left: -1px; +} +.modal-footer .btn-block + .btn-block { + margin-left: 0; +} +.modal-scrollbar-measure { + position: absolute; + top: -9999px; + width: 50px; + height: 50px; + overflow: scroll; +} +@media (min-width: 768px) { + .modal-dialog { + width: 600px; + margin: 30px auto; + } + .modal-content { + -webkit-box-shadow: 0 5px 15px rgba(0, 0, 0, 0.5); + box-shadow: 0 5px 15px rgba(0, 0, 0, 0.5); + } + .modal-sm { + width: 300px; + } +} +@media (min-width: 992px) { + .modal-lg { + width: 900px; + } +} +.tooltip { + position: absolute; + z-index: 1070; + display: block; + font-family: "Roboto", "Helvetica Neue", Helvetica, Arial, sans-serif; + font-style: normal; + font-weight: normal; + letter-spacing: normal; + line-break: auto; + line-height: 1.42857143; + text-align: left; + text-align: start; + text-decoration: none; + text-shadow: none; + text-transform: none; + white-space: normal; + word-break: normal; + word-spacing: normal; + word-wrap: normal; + font-size: 12px; + opacity: 0; + filter: alpha(opacity=0); +} +.tooltip.in { + opacity: 1; + filter: alpha(opacity=100); +} +.tooltip.top { + margin-top: -3px; + padding: 5px 0; +} +.tooltip.right { + margin-left: 3px; + padding: 0 5px; +} +.tooltip.bottom { + margin-top: 3px; + padding: 5px 0; +} +.tooltip.left { + margin-left: -3px; + padding: 0 5px; +} +.tooltip-inner { + max-width: 200px; + padding: 3px 8px; + color: #ffffff; + text-align: center; + background-color: #3e3f3a; + border-radius: 4px; +} +.tooltip-arrow { + position: absolute; + width: 0; + height: 0; + border-color: transparent; + border-style: solid; +} +.tooltip.top .tooltip-arrow { + bottom: 0; + left: 50%; + margin-left: -5px; + border-width: 5px 5px 0; + border-top-color: #3e3f3a; +} +.tooltip.top-left .tooltip-arrow { + bottom: 0; + right: 5px; + margin-bottom: -5px; + border-width: 5px 5px 0; + border-top-color: #3e3f3a; +} +.tooltip.top-right .tooltip-arrow { + bottom: 0; + left: 5px; + margin-bottom: -5px; + border-width: 5px 5px 0; + border-top-color: #3e3f3a; +} +.tooltip.right .tooltip-arrow { + top: 50%; + left: 0; + margin-top: -5px; + border-width: 5px 5px 5px 0; + border-right-color: #3e3f3a; +} +.tooltip.left .tooltip-arrow { + top: 50%; + right: 0; + margin-top: -5px; + border-width: 5px 0 5px 5px; + border-left-color: #3e3f3a; +} +.tooltip.bottom .tooltip-arrow { + top: 0; + left: 50%; + margin-left: -5px; + border-width: 0 5px 5px; + border-bottom-color: #3e3f3a; +} +.tooltip.bottom-left .tooltip-arrow { + top: 0; + right: 5px; + margin-top: -5px; + border-width: 0 5px 5px; + border-bottom-color: #3e3f3a; +} +.tooltip.bottom-right .tooltip-arrow { + top: 0; + left: 5px; + margin-top: -5px; + border-width: 0 5px 5px; + border-bottom-color: #3e3f3a; +} +.popover { + position: absolute; + top: 0; + left: 0; + z-index: 1060; + display: none; + max-width: 276px; + padding: 1px; + font-family: "Roboto", "Helvetica Neue", Helvetica, Arial, sans-serif; + font-style: normal; + font-weight: normal; + letter-spacing: normal; + line-break: auto; + line-height: 1.42857143; + text-align: left; + text-align: start; + text-decoration: none; + text-shadow: none; + text-transform: none; + white-space: normal; + word-break: normal; + word-spacing: normal; + word-wrap: normal; + font-size: 14px; + background-color: #ffffff; + -webkit-background-clip: padding-box; + background-clip: padding-box; + border: 1px solid #dfd7ca; + border-radius: 6px; + -webkit-box-shadow: 0 5px 10px rgba(0, 0, 0, 0.2); + box-shadow: 0 5px 10px rgba(0, 0, 0, 0.2); +} +.popover.top { + margin-top: -10px; +} +.popover.right { + margin-left: 10px; +} +.popover.bottom { + margin-top: 10px; +} +.popover.left { + margin-left: -10px; +} +.popover-title { + margin: 0; + padding: 8px 14px; + font-size: 14px; + background-color: #f8f5f0; + border-bottom: 1px solid #f0e9df; + border-radius: 5px 5px 0 0; +} +.popover-content { + padding: 9px 14px; +} +.popover > .arrow, +.popover > .arrow:after { + position: absolute; + display: block; + width: 0; + height: 0; + border-color: transparent; + border-style: solid; +} +.popover > .arrow { + border-width: 11px; +} +.popover > .arrow:after { + border-width: 10px; + content: ""; +} +.popover.top > .arrow { + left: 50%; + margin-left: -11px; + border-bottom-width: 0; + border-top-color: #b9a78a; + border-top-color: #dfd7ca; + bottom: -11px; +} +.popover.top > .arrow:after { + content: " "; + bottom: 1px; + margin-left: -10px; + border-bottom-width: 0; + border-top-color: #ffffff; +} +.popover.right > .arrow { + top: 50%; + left: -11px; + margin-top: -11px; + border-left-width: 0; + border-right-color: #b9a78a; + border-right-color: #dfd7ca; +} +.popover.right > .arrow:after { + content: " "; + left: 1px; + bottom: -10px; + border-left-width: 0; + border-right-color: #ffffff; +} +.popover.bottom > .arrow { + left: 50%; + margin-left: -11px; + border-top-width: 0; + border-bottom-color: #b9a78a; + border-bottom-color: #dfd7ca; + top: -11px; +} +.popover.bottom > .arrow:after { + content: " "; + top: 1px; + margin-left: -10px; + border-top-width: 0; + border-bottom-color: #ffffff; +} +.popover.left > .arrow { + top: 50%; + right: -11px; + margin-top: -11px; + border-right-width: 0; + border-left-color: #b9a78a; + border-left-color: #dfd7ca; +} +.popover.left > .arrow:after { + content: " "; + right: 1px; + border-right-width: 0; + border-left-color: #ffffff; + bottom: -10px; +} +.carousel { + position: relative; +} +.carousel-inner { + position: relative; + overflow: hidden; + width: 100%; +} +.carousel-inner > .item { + display: none; + position: relative; + -webkit-transition: 0.6s ease-in-out left; + -o-transition: 0.6s ease-in-out left; + transition: 0.6s ease-in-out left; +} +.carousel-inner > .item > img, +.carousel-inner > .item > a > img { + line-height: 1; +} +@media all and (transform-3d), (-webkit-transform-3d) { + .carousel-inner > .item { + -webkit-transition: -webkit-transform 0.6s ease-in-out; + -o-transition: -o-transform 0.6s ease-in-out; + transition: transform 0.6s ease-in-out; + -webkit-backface-visibility: hidden; + backface-visibility: hidden; + -webkit-perspective: 1000px; + perspective: 1000px; + } + .carousel-inner > .item.next, + .carousel-inner > .item.active.right { + -webkit-transform: translate3d(100%, 0, 0); + transform: translate3d(100%, 0, 0); + left: 0; + } + .carousel-inner > .item.prev, + .carousel-inner > .item.active.left { + -webkit-transform: translate3d(-100%, 0, 0); + transform: translate3d(-100%, 0, 0); + left: 0; + } + .carousel-inner > .item.next.left, + .carousel-inner > .item.prev.right, + .carousel-inner > .item.active { + -webkit-transform: translate3d(0, 0, 0); + transform: translate3d(0, 0, 0); + left: 0; + } +} +.carousel-inner > .active, +.carousel-inner > .next, +.carousel-inner > .prev { + display: block; +} +.carousel-inner > .active { + left: 0; +} +.carousel-inner > .next, +.carousel-inner > .prev { + position: absolute; + top: 0; + width: 100%; +} +.carousel-inner > .next { + left: 100%; +} +.carousel-inner > .prev { + left: -100%; +} +.carousel-inner > .next.left, +.carousel-inner > .prev.right { + left: 0; +} +.carousel-inner > .active.left { + left: -100%; +} +.carousel-inner > .active.right { + left: 100%; +} +.carousel-control { + position: absolute; + top: 0; + left: 0; + bottom: 0; + width: 15%; + opacity: 0.5; + filter: alpha(opacity=50); + font-size: 20px; + color: #ffffff; + text-align: center; + text-shadow: 0 1px 2px rgba(0, 0, 0, 0.6); + background-color: rgba(0, 0, 0, 0); +} +.carousel-control.left { + background-image: -webkit-linear-gradient(left, rgba(0, 0, 0, 0.5) 0%, rgba(0, 0, 0, 0.0001) 100%); + background-image: -o-linear-gradient(left, rgba(0, 0, 0, 0.5) 0%, rgba(0, 0, 0, 0.0001) 100%); + background-image: -webkit-gradient(linear, left top, right top, from(rgba(0, 0, 0, 0.5)), to(rgba(0, 0, 0, 0.0001))); + background-image: linear-gradient(to right, rgba(0, 0, 0, 0.5) 0%, rgba(0, 0, 0, 0.0001) 100%); + background-repeat: repeat-x; + filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#80000000', endColorstr='#00000000', GradientType=1); +} +.carousel-control.right { + left: auto; + right: 0; + background-image: -webkit-linear-gradient(left, rgba(0, 0, 0, 0.0001) 0%, rgba(0, 0, 0, 0.5) 100%); + background-image: -o-linear-gradient(left, rgba(0, 0, 0, 0.0001) 0%, rgba(0, 0, 0, 0.5) 100%); + background-image: -webkit-gradient(linear, left top, right top, from(rgba(0, 0, 0, 0.0001)), to(rgba(0, 0, 0, 0.5))); + background-image: linear-gradient(to right, rgba(0, 0, 0, 0.0001) 0%, rgba(0, 0, 0, 0.5) 100%); + background-repeat: repeat-x; + filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#00000000', endColorstr='#80000000', GradientType=1); +} +.carousel-control:hover, +.carousel-control:focus { + outline: 0; + color: #ffffff; + text-decoration: none; + opacity: 0.9; + filter: alpha(opacity=90); +} +.carousel-control .icon-prev, +.carousel-control .icon-next, +.carousel-control .glyphicon-chevron-left, +.carousel-control .glyphicon-chevron-right { + position: absolute; + top: 50%; + margin-top: -10px; + z-index: 5; + display: inline-block; +} +.carousel-control .icon-prev, +.carousel-control .glyphicon-chevron-left { + left: 50%; + margin-left: -10px; +} +.carousel-control .icon-next, +.carousel-control .glyphicon-chevron-right { + right: 50%; + margin-right: -10px; +} +.carousel-control .icon-prev, +.carousel-control .icon-next { + width: 20px; + height: 20px; + line-height: 1; + font-family: serif; +} +.carousel-control .icon-prev:before { + content: '\2039'; +} +.carousel-control .icon-next:before { + content: '\203a'; +} +.carousel-indicators { + position: absolute; + bottom: 10px; + left: 50%; + z-index: 15; + width: 60%; + margin-left: -30%; + padding-left: 0; + list-style: none; + text-align: center; +} +.carousel-indicators li { + display: inline-block; + width: 10px; + height: 10px; + margin: 1px; + text-indent: -999px; + border: 1px solid #ffffff; + border-radius: 10px; + cursor: pointer; + background-color: #000 \9; + background-color: rgba(0, 0, 0, 0); +} +.carousel-indicators .active { + margin: 0; + width: 12px; + height: 12px; + background-color: #ffffff; +} +.carousel-caption { + position: absolute; + left: 15%; + right: 15%; + bottom: 20px; + z-index: 10; + padding-top: 20px; + padding-bottom: 20px; + color: #ffffff; + text-align: center; + text-shadow: 0 1px 2px rgba(0, 0, 0, 0.6); +} +.carousel-caption .btn { + text-shadow: none; +} +@media screen and (min-width: 768px) { + .carousel-control .glyphicon-chevron-left, + .carousel-control .glyphicon-chevron-right, + .carousel-control .icon-prev, + .carousel-control .icon-next { + width: 30px; + height: 30px; + margin-top: -10px; + font-size: 30px; + } + .carousel-control .glyphicon-chevron-left, + .carousel-control .icon-prev { + margin-left: -10px; + } + .carousel-control .glyphicon-chevron-right, + .carousel-control .icon-next { + margin-right: -10px; + } + .carousel-caption { + left: 20%; + right: 20%; + padding-bottom: 30px; + } + .carousel-indicators { + bottom: 20px; + } +} +.clearfix:before, +.clearfix:after, +.dl-horizontal dd:before, +.dl-horizontal dd:after, +.container:before, +.container:after, +.container-fluid:before, +.container-fluid:after, +.row:before, +.row:after, +.form-horizontal .form-group:before, +.form-horizontal .form-group:after, +.btn-toolbar:before, +.btn-toolbar:after, +.btn-group-vertical > .btn-group:before, +.btn-group-vertical > .btn-group:after, +.nav:before, +.nav:after, +.navbar:before, +.navbar:after, +.navbar-header:before, +.navbar-header:after, +.navbar-collapse:before, +.navbar-collapse:after, +.pager:before, +.pager:after, +.panel-body:before, +.panel-body:after, +.modal-header:before, +.modal-header:after, +.modal-footer:before, +.modal-footer:after { + content: " "; + display: table; +} +.clearfix:after, +.dl-horizontal dd:after, +.container:after, +.container-fluid:after, +.row:after, +.form-horizontal .form-group:after, +.btn-toolbar:after, +.btn-group-vertical > .btn-group:after, +.nav:after, +.navbar:after, +.navbar-header:after, +.navbar-collapse:after, +.pager:after, +.panel-body:after, +.modal-header:after, +.modal-footer:after { + clear: both; +} +.center-block { + display: block; + margin-left: auto; + margin-right: auto; +} +.pull-right { + float: right !important; +} +.pull-left { + float: left !important; +} +.hide { + display: none !important; +} +.show { + display: block !important; +} +.invisible { + visibility: hidden; +} +.text-hide { + font: 0/0 a; + color: transparent; + text-shadow: none; + background-color: transparent; + border: 0; +} +.hidden { + display: none !important; +} +.affix { + position: fixed; +} +@-ms-viewport { + width: device-width; +} +.visible-xs, +.visible-sm, +.visible-md, +.visible-lg { + display: none !important; +} +.visible-xs-block, +.visible-xs-inline, +.visible-xs-inline-block, +.visible-sm-block, +.visible-sm-inline, +.visible-sm-inline-block, +.visible-md-block, +.visible-md-inline, +.visible-md-inline-block, +.visible-lg-block, +.visible-lg-inline, +.visible-lg-inline-block { + display: none !important; +} +@media (max-width: 767px) { + .visible-xs { + display: block !important; + } + table.visible-xs { + display: table !important; + } + tr.visible-xs { + display: table-row !important; + } + th.visible-xs, + td.visible-xs { + display: table-cell !important; + } +} +@media (max-width: 767px) { + .visible-xs-block { + display: block !important; + } +} +@media (max-width: 767px) { + .visible-xs-inline { + display: inline !important; + } +} +@media (max-width: 767px) { + .visible-xs-inline-block { + display: inline-block !important; + } +} +@media (min-width: 768px) and (max-width: 991px) { + .visible-sm { + display: block !important; + } + table.visible-sm { + display: table !important; + } + tr.visible-sm { + display: table-row !important; + } + th.visible-sm, + td.visible-sm { + display: table-cell !important; + } +} +@media (min-width: 768px) and (max-width: 991px) { + .visible-sm-block { + display: block !important; + } +} +@media (min-width: 768px) and (max-width: 991px) { + .visible-sm-inline { + display: inline !important; + } +} +@media (min-width: 768px) and (max-width: 991px) { + .visible-sm-inline-block { + display: inline-block !important; + } +} +@media (min-width: 992px) and (max-width: 1199px) { + .visible-md { + display: block !important; + } + table.visible-md { + display: table !important; + } + tr.visible-md { + display: table-row !important; + } + th.visible-md, + td.visible-md { + display: table-cell !important; + } +} +@media (min-width: 992px) and (max-width: 1199px) { + .visible-md-block { + display: block !important; + } +} +@media (min-width: 992px) and (max-width: 1199px) { + .visible-md-inline { + display: inline !important; + } +} +@media (min-width: 992px) and (max-width: 1199px) { + .visible-md-inline-block { + display: inline-block !important; + } +} +@media (min-width: 1200px) { + .visible-lg { + display: block !important; + } + table.visible-lg { + display: table !important; + } + tr.visible-lg { + display: table-row !important; + } + th.visible-lg, + td.visible-lg { + display: table-cell !important; + } +} +@media (min-width: 1200px) { + .visible-lg-block { + display: block !important; + } +} +@media (min-width: 1200px) { + .visible-lg-inline { + display: inline !important; + } +} +@media (min-width: 1200px) { + .visible-lg-inline-block { + display: inline-block !important; + } +} +@media (max-width: 767px) { + .hidden-xs { + display: none !important; + } +} +@media (min-width: 768px) and (max-width: 991px) { + .hidden-sm { + display: none !important; + } +} +@media (min-width: 992px) and (max-width: 1199px) { + .hidden-md { + display: none !important; + } +} +@media (min-width: 1200px) { + .hidden-lg { + display: none !important; + } +} +.visible-print { + display: none !important; +} +@media print { + .visible-print { + display: block !important; + } + table.visible-print { + display: table !important; + } + tr.visible-print { + display: table-row !important; + } + th.visible-print, + td.visible-print { + display: table-cell !important; + } +} +.visible-print-block { + display: none !important; +} +@media print { + .visible-print-block { + display: block !important; + } +} +.visible-print-inline { + display: none !important; +} +@media print { + .visible-print-inline { + display: inline !important; + } +} +.visible-print-inline-block { + display: none !important; +} +@media print { + .visible-print-inline-block { + display: inline-block !important; + } +} +@media print { + .hidden-print { + display: none !important; + } +} +.sandstone { + font-size: 11px; + line-height: 22px; + font-weight: 500; + text-transform: uppercase; +} +.navbar .nav > li > a { + font-size: 11px; + line-height: 22px; + font-weight: 500; + text-transform: uppercase; +} +.navbar-form input, +.navbar-form .form-control { + border: none; +} +.btn { + border: none; + font-size: 11px; + line-height: 22px; + font-weight: 500; + text-transform: uppercase; +} +.btn:hover { + border-color: transparent; +} +.btn-lg { + line-height: 26px; +} +.btn-default:hover { + background-color: #393a35; +} +input, +.form-control { + -webkit-box-shadow: none; + box-shadow: none; +} +/* input:focus, +.form-control:focus { + border-color: #dfd7ca; + -webkit-box-shadow: none; + box-shadow: none; +} */ +.nav { + font-size: 11px; + line-height: 22px; + font-weight: 500; + text-transform: uppercase; +} +.nav .open > a, +.nav .open > a:hover, +.nav .open > a:focus { + border-color: #dfd7ca; +} +.nav-tabs > li > a { + background-color: #f8f5f0; + border-color: #dfd7ca; + color: #98978b; +} +.nav-tabs > li.disabled > a:hover { + background-color: #f8f5f0; +} +.nav-pills a { + color: #98978b; +} +.nav-pills li > a { + border: 1px solid transparent; +} +.nav-pills li.active > a, +.nav-pills li > a:hover { + border-color: #dfd7ca; +} +.nav-pills li.disabled > a { + border-color: transparent; +} +.breadcrumb { + font-size: 11px; + line-height: 22px; + font-weight: 500; + text-transform: uppercase; + border: 1px solid #dfd7ca; +} +.breadcrumb a { + color: #98978b; +} +.pagination { + font-size: 11px; + line-height: 22px; + font-weight: 500; + text-transform: uppercase; +} +.pager { + font-size: 11px; + line-height: 22px; + font-weight: 500; + text-transform: uppercase; +} +.pager li > a { + color: #98978b; +} +.dropdown-menu > li > a { + font-size: 11px; + line-height: 22px; + font-weight: 500; + text-transform: uppercase; +} +.alert a, +.alert .alert-link { + color: #fff; +} +.tooltip { + font-size: 11px; + line-height: 22px; + font-weight: 500; + text-transform: uppercase; +} +.progress { + border-radius: 10px; + background-color: #dfd7ca; + -webkit-box-shadow: none; + box-shadow: none; +} +.progress-bar { + -webkit-box-shadow: none; + box-shadow: none; +} +.list-group-item { + padding: 16px 24px; +} +.well { + -webkit-box-shadow: none; + box-shadow: none; +} +.panel { + -webkit-box-shadow: none; + box-shadow: none; +} +.panel .panel-heading, +.panel .panel-title { + font-size: 11px; + line-height: 22px; + font-weight: 500; + text-transform: uppercase; + color: #fff; +} +.panel .panel-footer { + font-size: 11px; + line-height: 22px; + font-weight: 500; + text-transform: uppercase; +} +.panel-default .panel-heading, +.panel-default .panel-title, +.panel-default .panel-footer { + color: #98978b; +} diff --git a/roo/src/main/resources/static/public/fonts/fontawesome-webfont.eot b/roo/src/main/resources/static/public/fonts/fontawesome-webfont.eot new file mode 100644 index 0000000000000000000000000000000000000000..99e847f985b54ecc5e8dd5003d4775cd387b799c GIT binary patch literal 75220 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 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/roo/src/main/resources/static/public/fonts/fontawesome-webfont.ttf b/roo/src/main/resources/static/public/fonts/fontawesome-webfont.ttf new file mode 100644 index 0000000000000000000000000000000000000000..f471fde429ccdfbf6c62b9746d0c75faaade7f2f GIT binary patch literal 150920 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

jH0rRyLL+1|R$y$3@bdgc?;t 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ℨ{dsBK*`T4-6b-D1rq7 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

cl(Ou6^Utmxy^`$=v=$va*K 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 Ucf|P*8a#-I?padb-XkLVUsriYi2wiq literal 0 HcmV?d00001 diff --git a/roo/src/main/resources/static/public/fonts/fontawesome-webfont.woff2 b/roo/src/main/resources/static/public/fonts/fontawesome-webfont.woff2 new file mode 100644 index 0000000000000000000000000000000000000000..aaed3de59c52ca76abc62d509676652b40d55ae4 GIT binary patch literal 70728 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
j0s;6+k3VBhH195iM@+jSx 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 literal 0 HcmV?d00001 diff --git a/roo/src/main/resources/static/public/fonts/glyphicons-halflings-regular.svg b/roo/src/main/resources/static/public/fonts/glyphicons-halflings-regular.svg new file mode 100644 index 0000000000..94fb5490a2 --- /dev/null +++ b/roo/src/main/resources/static/public/fonts/glyphicons-halflings-regular.svg @@ -0,0 +1,288 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/roo/src/main/resources/static/public/fonts/glyphicons-halflings-regular.ttf b/roo/src/main/resources/static/public/fonts/glyphicons-halflings-regular.ttf new file mode 100644 index 0000000000000000000000000000000000000000..06e2a16b443c2d296f7fdf95eea5c7c20e81a6a7 GIT binary patch literal 45404 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 literal 0 HcmV?d00001 diff --git a/roo/src/main/resources/static/public/fonts/glyphicons-halflings-regular.woff b/roo/src/main/resources/static/public/fonts/glyphicons-halflings-regular.woff new file mode 100644 index 0000000000000000000000000000000000000000..dda02ad5372b7771616f56ddc04bf58f8ab9bbaa GIT binary patch literal 23424 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⋘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 r*WvQ}vj00xp)KfYD-wz$vNU#5o&H6t8)Z(KX literal 0 HcmV?d00001 diff --git a/roo/src/main/resources/static/public/fonts/glyphicons-halflings-regular.woff2 b/roo/src/main/resources/static/public/fonts/glyphicons-halflings-regular.woff2 new file mode 100644 index 0000000000000000000000000000000000000000..ad69b8d4c10507b7b80d8894bf97822aa81bccfc GIT binary patch literal 18028 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 literal 0 HcmV?d00001 diff --git a/roo/src/main/resources/static/public/img/es.png b/roo/src/main/resources/static/public/img/es.png new file mode 100644 index 0000000000000000000000000000000000000000..c2de2d7111e3cb59cf6511dd2ab045e824bdb43e GIT binary patch literal 469 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 literal 0 HcmV?d00001 diff --git a/roo/src/main/resources/static/public/img/geo.png b/roo/src/main/resources/static/public/img/geo.png new file mode 100644 index 0000000000000000000000000000000000000000..a4995b6f56d45bad081f089ac6e166c9f7e2a4fc GIT binary patch literal 142350 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 literal 0 HcmV?d00001 diff --git a/roo/src/main/resources/static/public/img/logo.png b/roo/src/main/resources/static/public/img/logo.png new file mode 100644 index 0000000000000000000000000000000000000000..e23f915763c67d9101f70d4883325da7911e4f5d GIT binary patch literal 1761 zcmV<71|Io|P)n6U0*s&eQdzqQ94?9ln zWq0FC3^qslG`n-t|9o@K|NPI<$T8D0f{oFzO2h^f3*2O$bH4*Nvj|Mf*>wTD4TKw` z;eRG#1I}XF`K>@X@Br}h#TGUXP5S+UX&Lt~Ch+&>{D0N7jNdGH@TO&K1}bx|`+z^2 zma$`@@B9w{k>?&i@R(^C2TjXpSg7F50^ld?d%zjfGX7v%#_ELtUU(r>0sI@d89)k9 z3W`*z9$-JPyQ8f$_DzE~fW5$Sr65w{(mN~|&lLL*C?E-(2lfH)0H1WUb@qPU;O_?B z07{jDhDw*_u*>`1Izr6qy`#VoFbs@%$BV!@pbI$UIX%+R)|r|uc-=eJ0;K>#!0AEB zT{qbbH#!_Vqv6+P{N6He6|-}|yQXFQ1K8Km)|sAh!g`XRc8X?@@YWF@_iaq`omvOm zotLlP0Q>^j4ea$ocgAd^0pTep1$=o~@a`8r9^8_lzG7Yl<`Upepu@C`=uE*&pyDfv zO~QvKbizzR>2 zr>+HF1GWJh^Kz+xlr8w^q)ua{Vr8|<`g)hvW`~N9OUeM zLDGhiq~OA3N#BUz!lWhh>MQDKa)M9nx)fRZ{qnNl^q?emOy~5V#5c8`{K!+a1;J~H*nnz`hF1dj zPuGFVDM44i#^HoUc}P)Prci+EvC)*pq~)D+J%^U~;f4yu#zu#XBS>75xfHrH5gQmP z+QT+R!&P3=2B(`wFJ5aNS!q z2?vhry!NTDptSHw7#x$NovbsruCQrZ=I-UC!|CXzo@YJn^L#8GX(~27*bZE|?vpJE zo#!>qOijiq*GH0&ak5wID;1C2p4t$LM}8fPM_Pd`KppT#EFM{!7ko!s=Lz7K^C4Kq z(t`dGk+-!>+K|kE6l$_Vn}BD%F6{}A^EU!Ji_9wRJ;2j*jsJYfoN@C%>k0-M|U&e-hXli$}ImXj))e>jk(^0*?WK>(XxucyLRa_4Urx-4`NDl`nnl z=Z9-E)Rd_YbjiPfkAP33n|g*Po{z;NRY26Myq^Ql6|E(vW!wq;(Hncr$*M~g54WVK zTB5E3mjZUS``J+MfFN`7qS)}K?Ok8YWyC!>2ljj3J_ID@vg<8P8EQ)ZAJZ8J{`!HR z+A^0Ty^@y?`j36s-cb!dQNOEjIa%o(w(k0>PD%=@^&vB#==qr*hnirOO+D0Es;g=G> z20;WBb!BRGUAf&dp5e#CgsRpEZ@d8EX#nZMXjc(x62$Os0rX00000NkvXXu0mjf DKx9>r literal 0 HcmV?d00001 diff --git a/roo/src/main/resources/static/public/img/owasp_logo.png b/roo/src/main/resources/static/public/img/owasp_logo.png new file mode 100644 index 0000000000000000000000000000000000000000..8c820aa076ce15ef4908439a9d5c478c7641f2db GIT binary patch literal 4271 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 R_JjZc002ovPDHLkV1m3z8S4N5 literal 0 HcmV?d00001 diff --git a/roo/src/main/resources/static/public/img/springroo-logo.png b/roo/src/main/resources/static/public/img/springroo-logo.png new file mode 100644 index 0000000000000000000000000000000000000000..5e9891fc3469e2d628a95d6553ac51ea36554df2 GIT binary patch literal 25823 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

;ybr>53$$!{CJ|?=Puk;#$PsZ&m>OCeL=_ zUCX@7vQ8uY^2;xmwock`E-}vq)A;~OpxqCA2;hBUelORKHMk6X; z4AA*BkT$GV8$gXd0L@^2UlDk7<$`bmsn6OltUy~s!)%)<*g6S72?0(JIWbTVHV?pY zUm0sR29`9oGSM0VIq=WUE$yk8U8KU9A5K%#!~!{AzJP#o0=pQPhWIf7pMuZ^#!6D? z?dZPIO@l#q86gmG*$;@%CMyalA9r=FPvtC6FN+sLI;F61vJfnypN|PAdfgfVW6zRE zdI~@#6Lx_4PX}!y@6IModuEV7E@{Nue#uKjr}? z#xn*#{wElJAwf@Qt+#DPX53eN3IwJCm;_)F7-I#Ioxxu?F9!A#&^I`%-@rfz*?3*E zH{6*q!_&y+mtQV@IKE>lh$jvFhqJ&q76Upchf*{Y0G|_~m%$xiY*a|vc<=y1>mEtZ zGbR<)R!v2!o%vT;ycp8go#RIL$)bQHDv+Rz005Th00|t7%JM&|&*?TrI*Wyc(KLjM zM%sFN94sT3{lpX*000CyNklByjMVco=^L>8=;ZV7<4>Mz|BJ*WNh2s z6&Y*hmr@H0qsgXv=2^kO10?yGhK0p&pt>l$4?xP65&@tg=x`EnL#*Q@=rPNYTO4g9 z6aZ&oVPRnwB=G%+y{El5O3`Q2X^(}48L*tWg@r}d&=?x;0q9zlCQrwUg14|3j#$pz z!ongeSi0GnORPKvm2@<+_dk$Mn=CBMg5}IDERJGUtQehdR2kD$Gjb1}#6Z;bkPy@T zl~cA3rA1(2G3>FNxrN11NKAs-j{b+9PK55j}-Tq+V{fie5)B`djje){D0FD{- z#y}vtcl0yqw8_H4Ojyp`!r~}I;piU#oCiPvG=f3iQytFN-dQ_kM5b-~D!!28Dk6F` zb_?DwB)&G2S`8K!nZ|PF78XYt4S@+K0;oFj2w#*R-QU=-);T)uM#Z2p=)3}q=b`qj zV)2v8v%5B>&ngQG^I+ z@Gw-KQ4G8-e?I!hX*A8k!n9b<+`{50q|z0s15_P409*yKZS;qncP-uQ%#G7lH;WfT z@&%kXF}Mwci`Ci^;Fk{AuC(^aEi4AGoVkU?Q3w&(`tD!h;+@dB8?mO%4f29^T+dwXx++j>eBH?46NDN*H85dAv<`@T zV87OJEi8s3mNU1UxrGIq0)=NPL@xsZzUEJf)E)x2E3$-Vf$SWmzt+ERFmh z5jg!eSXg8i!+x2a8RQQ+J^^sz5Qn#VT#+&9w#mXGoA9r4&St@P0GJCPFNH&GCh&_) z;t5Y_=Z+MPV_`Au81~K_0DOVMTS4^1S3f7>Ybr~-Udn_`78cn?L%3+9?LhAZOt=`} zY5=F}>{4c6H31D!ls|f=Z&_)CofZ~HBS(cZ2L_5YfH4oiWH34a)Oy^J*D`IFg+;c~ z5Og?g;7TTp2jdI^jbY$4CKM2(0KhQ-7{G2Y?}iXNz`P#71~7+vfu?V`yFSnCzrw;| bc<}!Lw@DCRefresh"; + } + callback(emptyData(data.draw)); + }); + } + + + /** + * Converts the first char of the given string to lower case. + * @param str the string to convert + * @returns the converted string + */ + function toLowerCaseFirst(str) { + if (str.length > 0) { + var value = str.charAt(0).toLowerCase(); + if (str.length > 1) { + value = value.concat(str.slice(1)); + } + return value; + } + } + + /** + * Returns the parent datatables whose id is given through + * the 'data-parent-table' attribute. + */ + function getParentDatatables(datatables) { + var parentTableId = getParentTableId(datatables); + // Validate if parent-table id has been specified and + // if the parent Datatable has been initialized + if (parentTableId && $.fn.dataTable.isDataTable($(parentTableId))) { + return $(parentTableId).DataTable(); + } + } + + /** + * Returns the parent table id when this datatables is a detail. + */ + function getParentTableId(datatables) { + var parentTableId = getDataValue(datatables, 'parent-table'); + if (parentTableId) { + return "#" + parentTableId; + } + } + + /** + * Returns the id of the selected row in the parent table, if any. + * @param datatables child datatables + * @returns the id of the parent datatables selected row + */ + function getParentSelectedRowId(datatables) { + var parentDatatables = getParentDatatables(datatables); + if (parentDatatables) { + var selected = parentDatatables.row({ + selected: true + }); + + if (selected.any()) { + return selected.data().id; + } + } + } + + /** + * Returns if the datatables has a related parent datatables + * @param datatables to find if it has a parent datatables + * @returns if there is a parent datatables + */ + function hasParentTable(datatables) { + var parentTableId = getParentTableId(datatables); + if (parentTableId) { + return true; + } + return false; + } + + /** + * Process the given Url to perform the following actions* + * - If the given datatables is not related to a parent one, it + * returns the given url as is. + * - If the url contains the '_PARENTID_' valuea and there is a related + * parent table, if the parent table has a selected row, its identifier + * is used to replace the '_PARENTID_' value in the given url. + * Otherwise no url is returned because it is considered as an invalid + * url. + * If the processed url is valid, the given id value is used to replace + * the '_ID_' parameter in the url + * @param datatables DataTable on which the calling should act upon + * @param url to process + * @param id (optional) identifier of the datatables row to act upon + * @returns the processed url + */ + function processUrl(datatables, url, id) { + var processedUrl = url; + // If it is a detail table, we have to get the parent id from + // the selected row in the parent table, and replace the + // _PARENTID_ variable in the given URL. + if (url && url.indexOf('_PARENTID_') > -1 && hasParentTable(datatables)) { + var parentRowId = getParentSelectedRowId(datatables); + if (parentRowId !== undefined) { + processedUrl = url.replace('_PARENTID_', parentRowId); + } else { + processedUrl = undefined; + } + } + + if (id !== undefined && processedUrl) { + processedUrl = processedUrl.replace('_ID_', id); + } + + return processedUrl; + } + + /** + * Process the given Url and the Datatables configuration to build + * an URL that contains the Datatables parameters. + * This function is useful when is necessary to make a petition + * to the server side without using AJAX. + * + * @param datatables DataTable on which the calling should act upon + * @param url to process + * @returns the processed url + */ + function getUrlWithDatatablesParams(datatables, url) { + + // Remove existing parameters + url = url.split("?")[0]; + + // Getting data from Datatables + var dtContext = datatables.context[0]; + var data = dtContext.oAjaxData; + + // Getting search value + var searchValue = data.search.value; + + // Getting order + var order = data.order; + + // Getting columns + var columns = data.columns; + + var sortParams = ""; + for (var i = 0; i < order.length; i++) { + if (order[i] !== null && order[i] !== undefined && + order[i].column !== null && order[i].column !== undefined) { + var columnName = columns[order[i].column].data; + var dir = order[i].dir; + + sortParams += "sort=" + columnName + "," + dir + "&"; + + } + } + if (sortParams.length > 0) { + sortParams = sortParams.substr(0, sortParams.length - 1); + } + + var datatablesColumns = ""; + for (i = 0; i < columns.length; i++) { + if (columns[i] !== null && columns[i] !== undefined && + columns[i].data !== null && columns[i].data !== undefined && + datatablesColumns.indexOf(columns[i].data) === -1) { + datatablesColumns += columns[i].data + ","; + } + } + if (datatablesColumns.length > 0) { + datatablesColumns = datatablesColumns.substr(0, datatablesColumns.length - 1); + datatablesColumns = "datatablesColumns=" + datatablesColumns; + } + + + // Build URL parameters + var hasParameters = false; + var params = ""; + if (searchValue != null && searchValue != "" && searchValue != undefined) { + if (hasParameters) { + params += "&"; + } + params += "search[value]=" + searchValue; + hasParameters = true; + } + + if (sortParams != null && sortParams != "" && sortParams != undefined) { + if (hasParameters) { + params += "&"; + } + params += sortParams; + hasParameters = true; + } + + if (datatablesColumns != null && datatablesColumns != "" && datatablesColumns != undefined) { + if (hasParameters) { + params += "&"; + } + params += datatablesColumns; + } + + return url + "?" + params; + + } + + /** + * Deletes the element whose id is the one in the datatables + * row whose _delete_ button has been selected, and the + * the opened modal confirmacion has been accepted + * (see modal-confirm-delete.html) + * @param datatables DataTable on which the calling should act upon + */ + function deleteElement(datatables) { + var $token = $("meta[name='_csrf']"); + var $header = $("meta[name='_csrf_header']"); + + var tableId = getTableId(datatables); + var rowId = $('#' + tableId + 'DeleteRowId').data('row-id'); + var url = getDeleteUrl(datatables, rowId); + + $.ajax({ + url: url, + type: 'DELETE', + beforeSend: function(request) { + if ($token != null && $token.length > 0 && $header != null && $header.length > 0) { + request.setRequestHeader($header.attr("content"), $token.attr("content")); + } + } + }) + .done(function(result) { + var $deleteSuccess = $('#' + tableId + 'DeleteSuccess'); + $deleteSuccess.modal(); + datatables.ajax.reload(); // Refresh Datatables + }) + .fail(function(jqXHR, status) { + var $deleteError = $('#' + tableId + 'DeleteError'); + $deleteError.modal(); + }); + } + + /** + * Returns the URL to load the data for a Datatables. The value + * is defined through a 'data-load-url' attribute in the + * Datatables table tag. + * @param datatables DataTable on which the calling should act upon + */ + function getLoadUrl(datatables) { + var url = getDataValue(datatables, 'load-url'); + return processUrl(datatables, url); + } + + /** + * Returns the URL to create a new element for the Datatables. + * The URL is processed to replace any parameters. + * + * @param datatables DataTable on which the calling should act upon + */ + function getCreateUrl(datatables) { + var url = getDataCreateUrl(datatables); + return processUrl(datatables, url); + } + + /** + * Returns the URL to create a new element for the Datatables + * as defined in the table data attributes. + * The value is defined in the Datatables table tag with a + * 'data-create-url-function' as a function which returns the URL + * or, if it is not defined, the value of the attribute + * 'data-create-url' to be used as the URL. + * + * @param datatables DataTable on which the calling should act upon + */ + function getDataCreateUrl(datatables) { + var urlFunction = getDataValue(datatables, 'create-url-function'); + var url = urlFunction ? $[urlFunction]() : getDataValue(datatables, 'create-url'); + return url; + } + + /** + * Returns the URL to show the details of an element of the Datatables. + * The value is defined in the Datatables table tag with a + * 'data-show-url' as the URL to use. + * The URL contains the text *_ID_* in the place where + * the selected element Id has to be inserted. + * + * @param datatables DataTable on which the calling should act upon + * @param id identifier of the element to edit + */ + function getShowUrl(datatables, id) { + if (id == null || id === "null") { + return null; + } + var url = getDataValue(datatables, 'show-url'); + return processUrl(datatables, url, id); + } + + /** + * Returns the URL to edit an element of the Datatables. + * The value is defined in the Datatables table tag with a + * 'data-edit-url' as the URL to use. + * The URL contains the text *_ID_* in the place where + * the selected element Id has to be inserted. + * + * @param datatables DataTable on which the calling should act upon + * @param id identifier of the element to edit + */ + function getEditUrl(datatables, id) { + var url = getDataValue(datatables, 'edit-url'); + return processUrl(datatables, url, id); + } + + /** + * Returns the URL to remove an element of the Datatables. + * The value is defined in the Datatables table tag with a + * 'data-delete-url' as the URL to use. + * The URL contains the text *_ID_* in the place where + * the selected element Id has to be inserted. + * + * @param datatables DataTable on which the calling should act upon + */ + function getDataDeleteUrl(datatables) { + var url = getDataValue(datatables, 'delete-url'); + return url; + } + + /** + * Returns the URL to remove an element of the Datatables. + * The value is defined in the Datatables table tag with a + * 'data-delete-url' as the URL to use. + * + * The URL contains the text *_ID_* in the place where + * the selected element Id has to be inserted, AND it is + * replaced with the provided id. + * + * @param datatables DataTable on which the calling should act upon + * @param id identifier of the element to remove + */ + function getDeleteUrl(datatables, id) { + var url = getDataDeleteUrl(datatables); + return processUrl(datatables, url, id); + } + + /** + * Returns the URL to remove a list of elements from the Datatables. + * The value is defined in the Datatables table tag with a + * 'data-delete-batch-url' as the URL to use. + * The URL contains the text *_ID_* in the place where + * the selected elements Ids have to be inserted. + * + * @param datatables DataTable on which the calling should act upon + */ + function getDataDeleteBatchUrl(datatables) { + var url = getDataValue(datatables, 'delete-batch-url'); + return url; + } + + /** + * Returns the URL to remove a list of elements from the Datatables. + * The value is defined in the Datatables table tag with a + * 'data-delete-batch-url' as the URL to use. + * The URL contains the text *_ID_* in the place where + * the selected elements Ids have to be inserted, and it is + * replaced with the provided idlist. + * + * @param datatables DataTable on which the calling should act upon + * @param idlist list of identifiers of the elements to remove + */ + function getDeleteBatchUrl(datatables, idlist) { + var url = getDataDeleteBatchUrl(datatables); + return processUrl(datatables, url, idlist); + } + + /** + * Returns the 'data-name' attribute value of a datatables. + * @param datatables DataTable on which the calling should act upon + * @param name the name of the data attribute to return the value of + */ + function getDataValue(datatables, name) { + var $dt = jQueryTable(datatables); + return $dt.data(name); + } + + /** + * Returns all the 'data-*' attributes of a datatables. + * @param datatables DataTable on which the calling should act upon + */ + function getAllDataValues(datatables) { + var $dt = jQueryTable(datatables); + return $dt.data(); + } + + /** + * Returns the jQuery object for the given datatables element. + */ + function jQueryTable(datatables) { + return $(datatables.table().node()); + } + + /** + * Returns the table id attribute for the given datatables element. + */ + function getTableId(datatables) { + var $jQueryTable = jQueryTable(datatables); + return $jQueryTable.attr('id'); + } + + /** + * Generates a JSON object with the necessary data for indicating a + * DataTables object that 0 elements have been found. + * This is used for details related tables, when a parent table + * row is not selected. + * + * @param draw DataTables request counter + * @returns {json} JSON object with empty data + */ + function emptyData(draw) { + return { + 'data': [], + 'draw': draw, + 'error': null, + 'recordsFiltered': '0', + 'recordsTotal': '0' + }; + } + + /** + * This function will be called when DataTables has been fully + * initialised and data loaded. + */ + function onInitComplete(oSettings, json) { + var datatables = this.DataTable(); + // Save the selected row to state + saveSelectedRowToState(datatables, oSettings, json); + // Register checkboxes + registerCheckBoxesEvents(datatables); + } + + /** + * If a row is selected, store it in the persisted table state + * so if the user goes to another page and returns, the current + * selected row is still selected. + * @param datatables the Datatables element + * @param oSettings DataTable object options + * @param json + */ + function saveSelectedRowToState(datatables, oSettings, json) { + var state = datatables.state; + datatables.on('select', function(e, dt, type, indexes) { + if (type === 'row') { + var rowSelectedId = datatables.rows(indexes).ids()[0]; + state.loaded().rowSelectedId = rowSelectedId; + state.save(); + } + }); + datatables.on('deselect', function(e, dt, type, indexes) { + if (type === 'row') { + state.loaded().rowSelectedId = undefined; + state.save(); + } + }); + if (!state.loaded()) { + oSettings.oLoadedState = datatables.state(); + } + } + + /** + * Loads a previously persisted datatables state. + * @param settings DataTable object options + * @param data DataTable object data + */ + function loadFromState(settings, data) { + var datatables = this.DataTable(); + loadSelectedRowFromState(datatables, data); + } + + /** + * Loads a previously selected row id from the persisted state. + * @param settings DataTable object options + * @param data DataTable object data + */ + function loadSelectedRowFromState(datatables, data) { + var state = datatables.state; + if (state.loaded()) { + var rowSelectedId = state.loaded().rowSelectedId; + if (rowSelectedId) { + data.rowSelectedId = rowSelectedId; + } + } + } + + /** + * Registers events for the given datatables + */ + function registerEvents(datatables) { + registerDeleteModalEvents(datatables); + registerAddModalEvents(datatables); + registerToParentEvents(datatables); + registerOnDrawFinishesEvents(datatables); + } + + /** + * This function registers all the necessary actions to execute + * when the provided datatables is completly drawed. + */ + function registerOnDrawFinishesEvents(datatables) { + // When this datatable is re-drawed, the + // following actions will be executed + datatables.on('draw.dt', function() { + // Register events to the new included checkboxes + registerCheckBoxesEvents(datatables); + }); + } + + /** + * Registers events related to the checkboxes of the given + * datatables. + */ + function registerCheckBoxesEvents(datatables) { + // Getting the table id + var tableId = getTableId(datatables); + // Obtain all checkboxes for this table + var checkBoxes = jQuery("#" + tableId + " input:checkbox"); + // Register change event for every checkbox. Every time that some checkbox + // changes, validates if the delete batch button should be enabled or not + jQuery.each(checkBoxes, function(item) { + jQuery(this).change(function() { + var rows_selected = datatables.columns().checkboxes.selected(); + if (rows_selected.join(",") === "") { + datatables.button('delete:name').disable(); + } else { + datatables.button('delete:name').enable(); + } + }); + }); + + // Re-initialize the delete batch button + var rows_selected = datatables.columns().checkboxes.selected(); + if (rows_selected.join(",") === "") { + datatables.button('delete:name').disable(); + } else { + datatables.button('delete:name').enable(); + } + + } + + /** + * Registers the events related to the delete modals, so the + * modal knows the id of the row to delete. + */ + function registerDeleteModalEvents(datatables) { + var tableId = getTableId(datatables); + var $deleteConfirm = $('#' + tableId + 'DeleteConfirm'); + + // When the delete element modal is opened, copy the current + // element id to be deleted to the 'TABLE_ID + DeleteRowId' + // element + $deleteConfirm.on('show.bs.modal', function(e) { + // Get data-row-id attribute of the clicked element + var rowId = jQuery(e.relatedTarget).data('row-id'); + // Populate the row-id data attribute in the modal + $('#' + tableId + 'DeleteRowId').data('row-id', rowId) + }); + + $('#' + tableId + 'DeleteButton').on('click', function() { + deleteElement(datatables); + }); + } + + /** + * When a table is linked to parent table, for a master detail list + * for example, it registers the row selection events in the parent + * table to update the data in the child table. + */ + function registerToParentEvents(datatables) { + var parentDatatables = getParentDatatables(datatables); + + if (parentDatatables) { + // Register to de/select events + parentDatatables.on('select', function() { + datatables.button('add:name').enable(); + datatables.ajax.reload(); + }); + + parentDatatables.on('deselect', function() { + datatables.button('add:name').disable(); + datatables.ajax.reload(); + }); + + // Register to reload finished event, needed when the selected row has + // been deleted in the parent table or any other change + parentDatatables.on('xhr.dt', function() { + datatables.ajax.reload(); + }); + + datatables.button('add:name').disable(); + } + } + + /** + * Registers the events related to the delete modals, so the + * modal knows the id of the row to delete. + */ + function registerAddModalEvents(datatables) { + var parentDatatables = getParentDatatables(datatables); + + // The add modal dialog is only used in child datatables + if (parentDatatables) { + var tableId = getTableId(datatables); + + $('#' + tableId + 'AddButton').on('click', function() { + var url = getCreateUrl(datatables); + $addForm = $('#' + tableId + 'AddForm'); + var params = $addForm.serialize(); + $.ajax({ + type: $addForm.attr('method'), + url: url, + data: params, + success: function(data) { + datatables.ajax.reload(); + } + }); + }); + } + } + + /** + * Renders the tools column, with the buttons to perform operations + * on the table rows. + */ + function renderTools(data, type, full, meta) { + var datatables = new $.fn.dataTable.Api(meta.settings); + var tableId = getTableId(datatables); + var rowId = data; + var buttons = '
'; + + var showUrl = getShowUrl(datatables, rowId); + // Check if the show will be inline + var showInline = getDataValue(datatables, 'show-inline'); + if (showUrl && !showInline) { + buttons = buttons.concat(''); + }else if(showUrl && showInline){ + buttons = buttons.concat(''); + } + + var editUrl = getEditUrl(datatables, rowId); + if (editUrl) { + buttons = buttons.concat(''); + } + + var deleteUrl = getDeleteUrl(datatables, rowId); + if (deleteUrl) { + buttons = buttons.concat(''); + } + + buttons = buttons.concat('
'); + return buttons; + } + + + /** + * This method tries to display the show view of the selected record + * expanding the selected row. + */ + function showInline(showButton, datatables, showUrl){ + var tr = showButton.closest('tr'); + var row = datatables.row( tr ); + if ( row.child.isShown() ) { + // This row is already open - close it + $(showButton).attr("aria-expanded", "false"); + row.child.hide(); + } + else { + $(showButton).attr("aria-expanded", "true"); + $.ajax({ + url: showUrl + "/inline", + dataType: 'html' + }).done(function(data) { + // Open this row + row.child(data).show(); + }).fail(function(data){ + // Show error in new row + row.child("
ERROR: An error occurred while trying to obtain more info.
").show(); + }); + } + } + + /* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * + * DataTables Advanced Extension API + * + * For complete documentation, please refer to the docs/api directory or the + * DataTables site + */ + + // Local variables to improve compression + var apiRegister = DataTable.Api.register; + + apiRegister('advanced()', function() { + return this.iterator('table', function(settings) { + DataTable.advanced.init(settings); + }); + }); + + apiRegister('advanced.getTableId()', getTableId); + apiRegister('advanced.getCreateUrl()', getCreateUrl); + apiRegister('advanced.getEditUrl()', getEditUrl) + apiRegister('advanced.getDeleteUrl()', getDeleteUrl); + apiRegister('advanced.getDeleteBatchUrl()', getDeleteBatchUrl); + apiRegister('advanced.getShowUrl()', getShowUrl); + apiRegister('advanced.getDataValue()', getDataValue); + apiRegister('advanced.processUrl()', processUrl); + + apiRegister('advanced.getCreateButton()', createButton); + apiRegister('advanced.getDeleteBatchButton()', deleteBatchButton); + apiRegister('advanced.getExportCsvButton()', exportCsvButton); + apiRegister('advanced.getExportExcelButton()', exportExcelButton); + apiRegister('advanced.getExportPdfButton()', exportPdfButton); + + apiRegister('advanced.showInline()', showInline); + + + + /* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * + * Initialization + */ + + // DataTables creation - check if advanced has been defined in the options. + $(document).on('preInit.dt.dtadvanced', function(e, settings) { + if (e.namespace !== 'dt') { + return; + } + + // If the 'advanced' option has been specified, + // initialize the advanced configuration for this + // DataTable. + if (settings.oInit.advanced !== undefined) { + DataTable.advanced.init(settings); + } + + }); + + return DataTable.advanced; +})); diff --git a/roo/src/main/resources/static/public/js/datatables-defaults.js b/roo/src/main/resources/static/public/js/datatables-defaults.js new file mode 100644 index 0000000000..ab247078e4 --- /dev/null +++ b/roo/src/main/resources/static/public/js/datatables-defaults.js @@ -0,0 +1,29 @@ +// IIFE - Immediately Invoked Function Expression +(function(extendDatatables) { + + // The global jQuery object is passed as a parameter + extendDatatables(window.jQuery, window, document); + +}(function($, window, document) { + + // The $ is now locally scoped, it won't collide with other libraries + + // Listen for the jQuery ready event on the document + // READY EVENT BEGIN + $(function() { + // Initialize all datatables in current page + $('table[data-datatables="true"]').each(function(){ + // Use the advanced extension to auto-configure all + // advanced features (ajax, export, add, edit, show, delete, etc.) + $(this).DataTable({ + mark: true, + advanced: true + }); + }); + }); + + // READY EVENT END + //console.log('The DOM may not be ready'); + + // The rest of code goes here! +})); \ No newline at end of file diff --git a/roo/src/main/resources/static/public/js/datetimepicker-defaults.js b/roo/src/main/resources/static/public/js/datetimepicker-defaults.js new file mode 100644 index 0000000000..3d114d93aa --- /dev/null +++ b/roo/src/main/resources/static/public/js/datetimepicker-defaults.js @@ -0,0 +1,107 @@ +(function(jQuery) { + jQuery(document).ready(function() { + + /* + * jQuery Utilities ================================================== + */ + /** + * Select the most switchable time format for time selectod related to + * requiered format + * + * @param format + * @returns time format + */ + function getSelectorTimeFormat(format) { + // + if (format.search(/h{1,2}/) > -1 && format.search(/[aA]/) > -1) { + if (format.search(/[A]/) > -1) { + return "hh:mm A"; + } else { + return "hh:mm a"; + } + } + return "HH:mm"; + } + + // Use the same locale than MomentJs + // (set it before setDateFormater as setLocale override formatter) + jQuery.datetimepicker.setLocale(moment.locale()); + + // Define parse/format date using moment library + jQuery.datetimepicker.setDateFormatter({ + parseDate : function(date, format) { + var d = moment(date, format); + return d.isValid() ? d.toDate() : false; + }, + + formatDate : function(date, format) { + return moment(date).format(format); + } + }); + + jQuery(".datetimepicker").each(function(index) { + var $input = jQuery(this); + var options = { + step : 5 + }; + + var pattern = $input.attr("data-dateformat"); + var value = $input.attr("data-timestep"); + + if (value) { + try { + options.step = parseInt(value); + } catch (e) { + timeStep = 5; + } + } + + // FormatDate YYYY/MM/DD + value = $input.attr("data-startdate"); + if (value) { + options.startDate = value; + } + value = $input.attr("data-mindate"); + if (value) { + options.minDate = value; + } + value = $input.attr("data-maxdate"); + if (value) { + options.maxDate = value; + } + + // FormatTime : "HH:mm" + value = $input.attr("data-mintime"); + if (value) { + options.minTime = value; + } + value = $input.attr("data-maxtime"); + if (value) { + options.maxTime = value; + } + value = $input.attr("data-allowtimes"); + if (value) { + options.allowTimes = value.split(","); + } + + if (isNotEmpty(pattern)) { + var momentPattern = moment.javaToMomentDateFormat(pattern); + jQuery.extend(options, { + format : momentPattern, + datepicker : moment.isDateFormatDate(momentPattern), + timepicker : moment.isDateFormatTime(momentPattern), + formatDate : "YYYY/MM/DD", + formatTime : getSelectorTimeFormat(momentPattern) + }); + } else { + var emptyMomentPattern = moment.javaToMomentDateFormat(); + jQuery.extend(options, { + format : emptyMomentPattern, + formatDate : "YYYY/MM/DD", + formatTime : "HH:mm" + }); + } + $input.datetimepicker(options); + }); + }); +})(jQuery); \ No newline at end of file diff --git a/roo/src/main/resources/static/public/js/inputmask-defaults.js b/roo/src/main/resources/static/public/js/inputmask-defaults.js new file mode 100644 index 0000000000..f3a299bb5d --- /dev/null +++ b/roo/src/main/resources/static/public/js/inputmask-defaults.js @@ -0,0 +1,30 @@ +(function(jQuery) { + jQuery(document).ready(function() { + + /* + Inputmask.extendDefaults({ + 'autoUnmask' : true + }); + */ + + jQuery(".inputmask").each(function(index) { + var $input = jQuery(this); + var options = { + removeMaskOnSubmit : true + }; + + var pattern = $input.attr("data-inputmask-mask"); + if (pattern) { + options.mask = pattern; + } else { + var alias = $input.attr("data-inputmask-alias"); + if (alias) { + options.alias = alias; + } else { + throw "missing input initialization value on (id='"+this.id+"' name='"+this.name+"')"; + } + } + $input.inputmask(options); + }); + }); +})(jQuery); \ No newline at end of file diff --git a/roo/src/main/resources/static/public/js/main.js b/roo/src/main/resources/static/public/js/main.js new file mode 100644 index 0000000000..b704282624 --- /dev/null +++ b/roo/src/main/resources/static/public/js/main.js @@ -0,0 +1,70 @@ +(function(jQuery) { + jQuery(document).ready( + function() { + + //dropdown + jQuery('ul.dropdown-menu [data-toggle=dropdown]').on( + 'click', + function(event) { + event.preventDefault(); + event.stopPropagation(); + jQuery(this).parent().siblings() + .removeClass('open'); + jQuery(this).parent().toggleClass('open'); + }); + + //tooltip + jQuery('[data-toggle="tooltip"]').tooltip(); + + }); +})(jQuery); + +/** + * Checks if an object in JavaScript is undefined, null or empty string + * + * @param obj + * @returns {Boolean} + */ +function isEmpty(obj) { + if (jQuery.isPlainObject(obj)) { + return jQuery.isEmptyObject(obj); + } else if (jQuery.isArray(obj)) { + return 0 === obj.length; + } else if (typeof obj === "string") { + return (isNull(obj) || 0 === obj.length); + } + return isNull(obj); +} + +/** + * Checks if an object in JavaScript is undefined or null + * + * @param obj + * @returns {Boolean} + */ +function isNull(obj) { + if (typeof obj === "undefined" || obj == null) { + return true; + } + return false; +} + +/** + * Checks if an object in JavaScript is defined and not null + * + * @param obj + * @returns {Boolean} + */ +function isNotNull(obj) { + return !isNull(obj); +} + +/** + * Checks if an object in JavaScript is undefined, null or empty string + * + * @param obj + * @returns {Boolean} + */ +function isNotEmpty(obj) { + return !isEmpty(obj); +} diff --git a/roo/src/main/resources/static/public/js/moment-defaults.js b/roo/src/main/resources/static/public/js/moment-defaults.js new file mode 100644 index 0000000000..e8f4cf963a --- /dev/null +++ b/roo/src/main/resources/static/public/js/moment-defaults.js @@ -0,0 +1,88 @@ +(function(jQuery) { + + moment().format(); + + /** + * Convert Java's SimpleDateFormat to momentJS formatDate. Takes a Java + * pattern + * (http://docs.oracle.com/javase/6/docs/api/java/text/SimpleDateFormat.html) + * and turns it into the expected momentJS formatDate + * (http://momentjs.com/docs/#/parsing/string-format/). + * + * @param pattern + * SimpleDateFormat pattern + * @return moment pattern (if 'pattern' is ommited return defautl + * pattern) + */ + moment.javaToMomentDateFormat = function (pattern) { + if (pattern) { + // Year + if (pattern.search(/y{3,}/g) >= 0) { + pattern = pattern.replace(/y{3,}/g, "YYYY"); // yyyy to + // yy + } else if (pattern.search(/y{2}/g) >= 0) { // yy to YY + pattern = pattern.replace(/y{2}/g, "YY"); + } + + // Day + if (pattern.search(/d{2,}/g) >= 0) { // dd to DD + pattern = pattern.replace(/d{2,}/g, "DD"); + } else if (pattern.search(/d{1}/g) >= 0) { // d to D + pattern = pattern.replace(/d{1}/g, "D"); + } else if (pattern.search(/D{1,}/g) >= 0) { // D,DD, DDD to DDD + pattern = pattern.replace(/D{1,}/g, "DDD"); + } + + // Day in week + if (pattern.search(/E{4,}/g) >= 0) { // EEEE to dddd + pattern = pattern.replace(/E{4,}/g, "dddd"); + } else if (pattern.search(/E{2,3}/g) >= 0) { // EEE to ddd + pattern = pattern.replace(/E{2,3}/g, "ddd"); + } + + // Day in week (number) + if (pattern.search(/F{1}/g) >= 0) { // F to e + pattern = pattern.replace(/F{1}/g, "e"); + } + + // week of the year + if (pattern.search(/w{1,}/g) >= 0) { // ww to WW + pattern = pattern.replace(/w{1,}/g, "WW"); + } + } else { + return "YYYY/MM/DD HH:mm"; + } + + return pattern; + } + + /** + * Informs if date format (momentJS) includes date information + * + * @param format + * string + * @returns true if !format or format contains ('YQDMdw') + */ + moment.isDateFormatDate = function (format) { + if (!format) { + return true; + } + return format.search(/[YQDMdw]/) > -1; + } + + /** + * Informs if date format (ISO 8601) includes time information + * + * @param format + * string + * @returns true if !format or format contains ('HmAasSZ') + */ + moment.isDateFormatTime = function (format) { + if (!format) { + return true; + } + return format.search(/[HhmAasSZ]/) > -1; + ; + } + +})(jQuery); diff --git a/roo/src/main/resources/static/public/js/moment-locale-es.js b/roo/src/main/resources/static/public/js/moment-locale-es.js new file mode 100644 index 0000000000..fbf94e406e --- /dev/null +++ b/roo/src/main/resources/static/public/js/moment-locale-es.js @@ -0,0 +1,73 @@ +//! moment.js locale configuration +//! locale : spanish (es) +//! author : Julio Napurí : https://github.com/julionc + +// ROO-3814 Remove var "monthsShortDot" and "if" that assigns it. + +;(function (global, factory) { + typeof exports === 'object' && typeof module !== 'undefined' + && typeof require === 'function' ? factory(require('../moment')) : + typeof define === 'function' && define.amd ? define(['moment'], factory) : + factory(global.moment) +}(this, function (moment) { 'use strict'; + + var es = moment.defineLocale('es', { + months : 'enero_febrero_marzo_abril_mayo_junio_julio_agosto_septiembre_octubre_noviembre_diciembre'.split('_'), + monthsShort : 'ene_feb_mar_abr_may_jun_jul_ago_sep_oct_nov_dic'.split('_'), + monthsParseExact : true, + weekdays : 'domingo_lunes_martes_miércoles_jueves_viernes_sábado'.split('_'), + weekdaysShort : 'dom._lun._mar._mié._jue._vie._sáb.'.split('_'), + weekdaysMin : 'do_lu_ma_mi_ju_vi_sá'.split('_'), + weekdaysParseExact : true, + longDateFormat : { + LT : 'H:mm', + LTS : 'H:mm:ss', + L : 'DD/MM/YYYY', + LL : 'D [de] MMMM [de] YYYY', + LLL : 'D [de] MMMM [de] YYYY H:mm', + LLLL : 'dddd, D [de] MMMM [de] YYYY H:mm' + }, + calendar : { + sameDay : function () { + return '[hoy a la' + ((this.hours() !== 1) ? 's' : '') + '] LT'; + }, + nextDay : function () { + return '[mañana a la' + ((this.hours() !== 1) ? 's' : '') + '] LT'; + }, + nextWeek : function () { + return 'dddd [a la' + ((this.hours() !== 1) ? 's' : '') + '] LT'; + }, + lastDay : function () { + return '[ayer a la' + ((this.hours() !== 1) ? 's' : '') + '] LT'; + }, + lastWeek : function () { + return '[el] dddd [pasado a la' + ((this.hours() !== 1) ? 's' : '') + '] LT'; + }, + sameElse : 'L' + }, + relativeTime : { + future : 'en %s', + past : 'hace %s', + s : 'unos segundos', + m : 'un minuto', + mm : '%d minutos', + h : 'una hora', + hh : '%d horas', + d : 'un día', + dd : '%d días', + M : 'un mes', + MM : '%d meses', + y : 'un año', + yy : '%d años' + }, + ordinalParse : /\d{1,2}º/, + ordinal : '%dº', + week : { + dow : 1, // Monday is the first day of the week. + doy : 4 // The week that contains Jan 4th is the first week of the year. + } + }); + + return es; + +})); \ No newline at end of file diff --git a/roo/src/main/resources/static/public/js/select2-defaults.js b/roo/src/main/resources/static/public/js/select2-defaults.js new file mode 100644 index 0000000000..6e45799dfb --- /dev/null +++ b/roo/src/main/resources/static/public/js/select2-defaults.js @@ -0,0 +1,49 @@ +// IIFE - Immediately Invoked Function Expression +(function(extendSelect2) { + + // The global jQuery object is passed as a parameter + extendSelect2(window.jQuery, window, document); + +}(function($, window, document) { + + // The $ is now locally scoped, it won't collide with other libraries + + // Listen for the jQuery ready event on the document + // READY EVENT BEGIN + $(function() { + + // The DOM is ready! + //console.log('The DOM is ready'); + + // Init select simple + $('.dropdown-select-simple').select2({ + debug : false, + theme : 'bootstrap', + allowClear : true, + }); + + // Init select with AJAX search + $('.dropdown-select-ajax').select2({ + debug : false, + theme : 'bootstrap', + allowClear : true, + ajax : { + data : function(params) { + // set search params names to match with GlobalSearch and + // Pageable arguments + var query = { + 'search[value]' : params.term, + 'page' : params.page - 1, + }; + return query; + } + } + }); + }); + + // READY EVENT END + //console.log('The DOM may not be ready'); + + // The rest of code goes here! +})); + diff --git a/roo/src/main/resources/static/public/js/validation-defaults.js b/roo/src/main/resources/static/public/js/validation-defaults.js new file mode 100644 index 0000000000..a92da83d58 --- /dev/null +++ b/roo/src/main/resources/static/public/js/validation-defaults.js @@ -0,0 +1,233 @@ +(function(jQuery) { + jQuery(document) + .ready( + function() { + + function getLanguage() { + // usamos el locale de momentjs + moment.locale(); + } + + jQuery.validator.setDefaults({ + ignoreTitle : true + }); + + /** + * Initialize jQuery Validator methods + */ + /** + * Date/time validation with format + * + * @name jQuery.validator.methods.number + * @type Boolean + */ + jQuery.validator.addMethod("dateformat", function(value, element, params) { + if (this.optional(element)) { + return true; + } + if (params === "DEFAULT") { + return moment(value, moment.javaToMomentDateFormat()).isValid(); + } else { + return moment(value, params, true).isValid(); + } + }, "Please enter a correct date/time"); + + /** + * Replaces the standard number validation to support number with comma. + * + * @name jQuery.validator.methods.number + * @type Boolean + */ + jQuery.validator.methods.number = function(value, element) { + return this.optional(element) || Inputmask.isValid(value, { + alias : "numeric" + }); + }; + + /** + * Replaces the standar min validation to support number with comma. + * + * @name jQuery.validator.methods.number + * @type Boolean + */ + jQuery.validator.methods.min = function(value, element, params) { + var localizedValue = Inputmask.unmask(value, { + alias : "numeric", + unmaskAsNumber : true + }); + return this.optional(element) || localizedValue >= params; + }; + + /** + * Replaces the standar max validation to support number with comma. + * + * @name jQuery.validator.methods.number + * @type Boolean + */ + jQuery.validator.methods.max = function(value, element, params) { + var localizedValue = Inputmask.unmask(value, { + alias : "numeric", + unmaskAsNumber : true + }); + return this.optional(element) || localizedValue <= params; + }; + + /** + * Replaces the standard range validation to support number with comma. + * + * @name jQuery.validator.methods.number + * @type Boolean + */ + jQuery.validator.methods.range = function(value, element, params) { + var localizedValue = Inputmask.unmask(value, { + alias : "numeric", + unmaskAsNumber : true + }); + return this.optional(element) + || (localizedValue >= params[0] && localizedValue <= params[1]); + }; + + /** + * Return true if the field value matches the given RegExp + * + * The difference between `pattern` method is than this one + * use parameter as expression literally (`pattern` includes + * prefix and suffix). + */ + $.validator.addMethod("regexp", function(value, element, param) { + if (this.optional(element)) { + return true; + } + if (typeof param === "string") { + param = new RegExp(param); + } + return param.test(value); + }, "Invalid format."); + + /** + * jquery.inputmask rule: delegates on inputmask control + */ + jQuery.validator.addMethod("inputmask", function(value, element, params) { + if (this.optional(element)) { + return true; + } + var $inputmask = jQuery(element); + return $inputmask.inputmask && $inputmask.inputmask("isComplete"); + }, "Please enter a valid value."); + + // Form validation init + jQuery("form.validate") + .each( + function(index) { + var $form = $(this); + + // see options at https://jqueryvalidation.org/documentation/ + $form + .validate({ + highlight : function(element) { + var $element = $(element); + // añadir marca error + $element.closest('.form-group').addClass('has-error has-feedback'); + // añadir span con icono + var iconSpan = $element.parent().find('span.form-control-feedback'); + if (!iconSpan.length) { + $element + .after(''); + } + }, + unhighlight : function(element) { + var $element = $(element); + // añadir marca error + $element.closest('.form-group').removeClass('has-error has-feedback'); + // quitar span con icono + $element.parent().find('span.form-control-feedback.glyphicon-remove') + .remove(); + // limpiar errores + if ($element.parent('.input-group').length) { + $element.parent('.input-group').parent().find( + 'span.help-block[id=' + $element.attr('id') + '-error]') + .remove(); + + } else { + $element.parent().find( + 'span.help-block[id=' + $element.attr('id') + '-error]') + .remove(); + } + }, + errorElement : 'span', + errorClass : 'help-block', + errorPlacement : function(error, element) { + var $element = $(element); + + var $previousErrors; + if ($element.parent('.input-group').length) { + $previousErrors = $element.parent('.input-group').parent() + .find('span.help-block[id=' + $element.attr('id') + '-error]'); + } else { + $previousErrors = $element.parent().find( + 'span.help-block[id=' + $element.attr('id') + '-error]'); + } + + if ($previousErrors.length === 1) { + $previousErrors.replaceWith(error); + } else { + if ($previousErrors.length > 1) { + // mas de un error limpiamos + $previousErrors.remove(); + } + // insertar error + if ($element.parent('.input-group').length) { + error.insertAfter($element.parent()); + } else { + $element.parent().append(error); + } + } + + } + }); + + // Iterate form inputs to set validation rules and messages + $form.find("input,textarea,select").each(function(index) { + var $input = $(this); + var data = $input.data(); + + // this input validation rules + var rules = { + required : data.required, + messages : {} + }; + if (isNotNull(data.missing)) { + rules.messages.required = data.missing + } + if (isNotNull(data.invalid)) { + rules.messages.remote = data.invalid + } + + // inputmaks + if ($input.hasClass("inputmask")) { + rules["inputmask"] = true; + if (isNotNull(data.invalid)) { + rules.messages.inputmask = data.invalid + } + } + // datetimepicker + if (isNotEmpty(data.dateformat)) { + rules["dateformat"] = moment.javaToMomentDateFormat(data.dateformat); + if (isNotNull(data.invalid)) { + rules.messages.dateformat = data.invalid + } + // datetimepicker without format + } else if ($input.hasClass("datetimepicker")) { + rules["dateformat"] = "DEFAULT"; + if (isNotNull(data.invalid)) { + rules.messages.dateformat = data.invalid + } + } + + $input.rules("add", rules); + }); + }); + }); +})(jQuery); + + diff --git a/roo/src/main/resources/templates/accessibility.html b/roo/src/main/resources/templates/accessibility.html new file mode 100644 index 0000000000..f486646c65 --- /dev/null +++ b/roo/src/main/resources/templates/accessibility.html @@ -0,0 +1,61 @@ + + + + + Accessibility - Spring Roo application + + + + +
+ +
+ + +
+ + +
+ +
+
+

Accessibility

+

Accessibility policy application

+

+ Spring Roo Application is committed to ensuring the accessibility of + its web content to people with disabilities. All of the content on + our website will meet + W3C WAI's Web Content Accessibility Guidelines 2.0, Level AA + conformance. Any issues should be reported to + springroo@disid.com. + The technologies that is depended to access the accessible content are HTML, CSS and Javascript. +

+
+
+ +
+ +
+ + +
+ +
+ + + + + +
+
+ + + + \ No newline at end of file diff --git a/roo/src/main/resources/templates/books/create.html b/roo/src/main/resources/templates/books/create.html new file mode 100644 index 0000000000..dabe34da10 --- /dev/null +++ b/roo/src/main/resources/templates/books/create.html @@ -0,0 +1,153 @@ + + + + + + Create Book - roo - SpringRoo Application + + + + + + + + +
+ +
+ + +
+ + +
+
+ +

Create Book

+ + +
+ +
+ Book data + +
+ +
+ + + Error message. +
+
+
+ +
+ + + Error message. +
+
+
+ +
+ + + Error message. +
+
+
+ + + +
+
+ + +
+
+ +
+ + +
+ +
+ +
+ + +
+ +
+ + + + + +
+ + + + + + + + + + + + + + + + + + +
+ + + + \ No newline at end of file diff --git a/roo/src/main/resources/templates/books/edit.html b/roo/src/main/resources/templates/books/edit.html new file mode 100644 index 0000000000..e6d39a44be --- /dev/null +++ b/roo/src/main/resources/templates/books/edit.html @@ -0,0 +1,171 @@ + + + + + + Edit Book - Spring Roo application + + + + + + + + + +
+ +
+ + +
+ + +
+ +
+ +

Edit Book

+ + +
+ + + + +
+

Warning! This record has been updated by an other user.

+
+ +
+
+ +
+
+ +
+ + +
+ Book data + +
+ +
+ + + Error message. +
+
+
+ +
+ + + Error message. +
+
+
+ +
+ + + Error message. +
+
+
+ + + +
+
+
+ +
+
+ +
+
+
+ +
+ + +
+ +
+ +
+ + +
+ +
+ + + + + +
+ + + + + + + + + + + + + + + + + +
+ + + + diff --git a/roo/src/main/resources/templates/books/list.html b/roo/src/main/resources/templates/books/list.html new file mode 100644 index 0000000000..d7e1fe24ca --- /dev/null +++ b/roo/src/main/resources/templates/books/list.html @@ -0,0 +1,98 @@ + + + + + + List Book - roo - SpringRoo Application + + + + + +
+ +
+ + +
+ + +
+
+ +

Books

+ + +
+ + + + + + + + + + + + + + + + + + + + +
Book List
titleauthorisbnTools
titleauthorisbnTools
+ +
+
+
+
+
+
+
+ + + +
+ +
+ +
+ +
+ +
+ + +
+ +
+ + + + + +
+
+ + + + diff --git a/roo/src/main/resources/templates/books/show.html b/roo/src/main/resources/templates/books/show.html new file mode 100644 index 0000000000..92311c36f5 --- /dev/null +++ b/roo/src/main/resources/templates/books/show.html @@ -0,0 +1,86 @@ + + + + + Show Book - Spring Roo application + + + + + +
+ +
+ + +
+ + +
+
+ + +

Show Book

+ +
+

Book data

+
    +
  • + title + titleValue +
  • +
  • + author + authorValue +
  • +
  • + isbn + isbnValue +
  • +
+
+ + +
+
+ Edit +
+
+ + +
+ +
+
+ +
+ +
+ + +
+ +
+ + + + + +
+
+ + + + diff --git a/roo/src/main/resources/templates/books/showInline.html b/roo/src/main/resources/templates/books/showInline.html new file mode 100644 index 0000000000..9fbc62cf26 --- /dev/null +++ b/roo/src/main/resources/templates/books/showInline.html @@ -0,0 +1,67 @@ + + + + + Show Book - Spring Roo application + + + + + +
+ +
+ + +
+ + +
+
+ + +
+
    +
  • + title + titleValue +
  • +
  • + author + authorValue +
  • +
  • + isbn + isbnValue +
  • +
+
+ +
+ +
+ +
+ + +
+ +
+ + + + + +
+
+ + + + diff --git a/roo/src/main/resources/templates/error.html b/roo/src/main/resources/templates/error.html new file mode 100644 index 0000000000..7559baba22 --- /dev/null +++ b/roo/src/main/resources/templates/error.html @@ -0,0 +1,40 @@ + + + + + Error - Spring Roo application + + + + + +
+

Error Page

+ +
+ + +
+ + +
+ +
+ +
+ +
+ +
+ + \ No newline at end of file diff --git a/roo/src/main/resources/templates/fragments/footer.html b/roo/src/main/resources/templates/fragments/footer.html new file mode 100644 index 0000000000..38999c1b75 --- /dev/null +++ b/roo/src/main/resources/templates/fragments/footer.html @@ -0,0 +1,51 @@ + + + + + Footer + + + + + + + diff --git a/roo/src/main/resources/templates/fragments/header.html b/roo/src/main/resources/templates/fragments/header.html new file mode 100644 index 0000000000..8421d6d77f --- /dev/null +++ b/roo/src/main/resources/templates/fragments/header.html @@ -0,0 +1,21 @@ + + + + + Header + + + +
+
+
+

roo

+

Hello, this is your home page.

+
+
+
+ + \ No newline at end of file diff --git a/roo/src/main/resources/templates/fragments/js/datatables-locale.js b/roo/src/main/resources/templates/fragments/js/datatables-locale.js new file mode 100644 index 0000000000..ad1a32955d --- /dev/null +++ b/roo/src/main/resources/templates/fragments/js/datatables-locale.js @@ -0,0 +1,67 @@ +// IIFE - Immediately Invoked Function Expression +(function(translateDatatables) { + + // The global jQuery object is passed as a parameter + translateDatatables(window.jQuery, window, document); + +}(function($, window, document) { + + // The $ is now locally scoped, it won't collide with other libraries + + // Listen for the jQuery ready event on the document + // READY EVENT BEGIN + $(function() { + + // The DOM is ready! + //console.log('The DOM is ready'); + + // Set datatables defaults + $.extend($.fn.dataTable.defaults, { + // multilingual texts definitions, adding some to those already provided + // default by Datatables + 'language': { + 'buttons': { + 'add': /*[[#{label_datatables_add}]]*/ 'Add', + 'delete': /*[[#{label_datatables_delete}]]*/ 'Delete', + 'colvis': /*[[#{label_datatables_columns}]]*/ 'Columns', + 'pageLength': /*[[#{label_datatables_showRows}]]*/ 'Show %d rows' + }, + 'select': { + 'rows': { + _: /*[[#{label_datatables_selectedRows}]]*/ '%d selected rows', + 0: "", + 1: /*[[#{label_datatables_selectedRow}]]*/ '1 selected row' + } + }, + 'decimal': /*[[#{label_datatables_decimal}]]*/ '.', + 'emptyTable': /*[[#{label_datatables_emptyTable}]]*/ 'No data available in table', + 'info': /*[[#{label_datatables_info}]]*/ 'Showing _START_ to _END_ of _TOTAL_ entries', + 'infoEmpty': /*[[#{label_datatables_infoEmpty}]]*/ 'Showing 0 to 0 of 0 entries', + 'infoFiltered': /*[[#{label_datatables_infoFiltered}]]*/ '(filtered from _MAX_ total entries)', + 'infoPostFix': /*[[#{label_datatables_infoPostFix}]]*/ '', + 'thousands': /*[[#{label_datatables_thousands}]]*/ '', + 'lengthMenu': /*[[#{label_datatables_lengthMenu}]]*/ 'Show _MENU_ entries', + 'loadingRecords': /*[[#{label_datatables_loadingRecords}]]*/ 'Loading...', + 'processing': /*[[#{label_datatables_processing}]]*/ 'Processing...', + 'search': /*[[#{label_datatables_search}]]*/ 'Search:', + 'zeroRecords': /*[[#{label_datatables_zeroRecords}]]*/ ' No matching records found', + 'paginate': { + 'first': /*[[#{label_datatables_first}]]*/ 'First', + 'last': /*[[#{label_datatables_last}]]*/ 'Last', + 'next': /*[[#{label_datatables_next}]]*/ 'Next', + 'previous': /*[[#{label_datatables_previous}]]*/ 'Previous' + }, + 'aria': { + 'sortAscending': /*[[#{label_datatables_sortAscending}]]*/ ': activate to sort column ascending', + 'sortDescending': /*[[#{label_datatables_sortDescending}]]*/ ': activate to sort column descending' + } + } + }); + + }); + + // READY EVENT END + //console.log('The DOM may not be ready'); + + // The rest of code goes here! +})); diff --git a/roo/src/main/resources/templates/fragments/js/datatables.html b/roo/src/main/resources/templates/fragments/js/datatables.html new file mode 100644 index 0000000000..5993777eb3 --- /dev/null +++ b/roo/src/main/resources/templates/fragments/js/datatables.html @@ -0,0 +1,78 @@ + + + + + Session info + + + + + +
+ + +
+

Error

+
+ + + + + + + + + + + + + + + + + + + + + + + + +
+ + \ No newline at end of file diff --git a/roo/src/main/resources/templates/fragments/js/select2.html b/roo/src/main/resources/templates/fragments/js/select2.html new file mode 100644 index 0000000000..ce2c6bd7a4 --- /dev/null +++ b/roo/src/main/resources/templates/fragments/js/select2.html @@ -0,0 +1,16 @@ + + + + +Select2 + + +
+ + + +
+ + diff --git a/roo/src/main/resources/templates/fragments/languages.html b/roo/src/main/resources/templates/fragments/languages.html new file mode 100644 index 0000000000..248f9eaea0 --- /dev/null +++ b/roo/src/main/resources/templates/fragments/languages.html @@ -0,0 +1,33 @@ + + + + + Languages + + + + + + + \ No newline at end of file diff --git a/roo/src/main/resources/templates/fragments/menu.html b/roo/src/main/resources/templates/fragments/menu.html new file mode 100644 index 0000000000..86143276e1 --- /dev/null +++ b/roo/src/main/resources/templates/fragments/menu.html @@ -0,0 +1,107 @@ + + + + + Page menu + + + + + + + + + + diff --git a/roo/src/main/resources/templates/fragments/modal-confirm-delete-batch.html b/roo/src/main/resources/templates/fragments/modal-confirm-delete-batch.html new file mode 100644 index 0000000000..3ce82279ac --- /dev/null +++ b/roo/src/main/resources/templates/fragments/modal-confirm-delete-batch.html @@ -0,0 +1,34 @@ + + + + +Modal + + + +
+
+
+

Going to remove the selected elements

+
+
+ + +
+
+ +
+

Removed selected items

+
+ +
+

Error deleting selected items.

+
+ +
+ + \ No newline at end of file diff --git a/roo/src/main/resources/templates/fragments/modal-confirm-delete.html b/roo/src/main/resources/templates/fragments/modal-confirm-delete.html new file mode 100644 index 0000000000..658c04054f --- /dev/null +++ b/roo/src/main/resources/templates/fragments/modal-confirm-delete.html @@ -0,0 +1,35 @@ + + + + +Modal + + + +
+
+
+

Going to remove the selected + element

+
+
+ + +
+
+ +
+

1 Removed item

+
+ +
+

Error deleting selected item.

+
+ +
+ + \ No newline at end of file diff --git a/roo/src/main/resources/templates/fragments/modal-confirm.html b/roo/src/main/resources/templates/fragments/modal-confirm.html new file mode 100644 index 0000000000..7d0fb8d4f8 --- /dev/null +++ b/roo/src/main/resources/templates/fragments/modal-confirm.html @@ -0,0 +1,32 @@ + + + + +Modal + + + +
+
+
+ +

Going to remove the selected + element

+ +
+
+ 100% Complete +
+
+
+ +
+
+ + \ No newline at end of file diff --git a/roo/src/main/resources/templates/fragments/modal-export-empty-error.html b/roo/src/main/resources/templates/fragments/modal-export-empty-error.html new file mode 100644 index 0000000000..dd84d8fe9e --- /dev/null +++ b/roo/src/main/resources/templates/fragments/modal-export-empty-error.html @@ -0,0 +1,20 @@ + + + + +Modal + + + +
+ +
+

No records found to generate a report.

+
+ +
+ + \ No newline at end of file diff --git a/roo/src/main/resources/templates/fragments/modal.html b/roo/src/main/resources/templates/fragments/modal.html new file mode 100644 index 0000000000..55e13158a4 --- /dev/null +++ b/roo/src/main/resources/templates/fragments/modal.html @@ -0,0 +1,27 @@ + + + + + Modal + + + + + + \ No newline at end of file diff --git a/roo/src/main/resources/templates/fragments/session-links.html b/roo/src/main/resources/templates/fragments/session-links.html new file mode 100644 index 0000000000..786a7a4aec --- /dev/null +++ b/roo/src/main/resources/templates/fragments/session-links.html @@ -0,0 +1,46 @@ + + + + + Session info + + + + + + + + + \ No newline at end of file diff --git a/roo/src/main/resources/templates/index.html b/roo/src/main/resources/templates/index.html new file mode 100644 index 0000000000..e4aac5e9a7 --- /dev/null +++ b/roo/src/main/resources/templates/index.html @@ -0,0 +1,150 @@ + + + + + Welcome - SpringRoo Application + + + + + +
+ +
+ + +
+ + +
+
+ +
+ +
+ +
+

With Roo you can easily build full Java applications in minutes.

+

Spring Roo is a next-generation rapid application development tool for Java developers. + It focuses on higher productivity, stock-standard Java APIs, high usability, avoiding engineering trade-offs and + facilitating easy Roo removal. +

+

Thanks for your interest in Spring Roo!

+
+
+
+ + +
+ + +
+
+
+
+ +
+
+

Doc

+ If you are looking for Reference Documentation you can get it here. +
+
+
+
+ + +
+
+
+
+ +
+
+

Project Page

+ All the info about Spring Roo development. +
+
+
+
+ + +
+
+
+
+ +
+
+

Support

+ If you have any question about the project, + you can check it. +
+
+
+
+ + +
+
+
+
+ +
+
+

Code

+ Known, modify and redistribute the source code. +
+
+
+
+ +
+ + +
+
+ +
+
+ +
+
+ +
+ + +
+ +
+ + + + + +
+
+ + + + diff --git a/roo/src/main/resources/templates/layouts/default-layout-no-menu.html b/roo/src/main/resources/templates/layouts/default-layout-no-menu.html new file mode 100644 index 0000000000..40d502800f --- /dev/null +++ b/roo/src/main/resources/templates/layouts/default-layout-no-menu.html @@ -0,0 +1,103 @@ + + + + + + + + + + + + + + + + Spring Roo application + + + + + + + + + + + + + + + + + + + + + + + + +
+ +
+ +
+ +
+ +

Sample static body for direct display of the template

+

Lorem ipsum dolor sit amet, consectetur adipiscing elit. Praesent + scelerisque neque neque, ac elementum quam dignissim interdum. Phasellus et + placerat elit. Lorem ipsum dolor sit amet, consectetur adipiscing elit. + Praesent scelerisque neque neque, ac elementum quam dignissim interdum. + Phasellus et placerat elit.

+
+ +
+ +
+ + © 2016 Spring Roo (footer for example for direct display of the template) +
+ + + + + + + + + + + + + + + + + + +
+ +
+ + + + + diff --git a/roo/src/main/resources/templates/layouts/default-layout.html b/roo/src/main/resources/templates/layouts/default-layout.html new file mode 100644 index 0000000000..ba597630d4 --- /dev/null +++ b/roo/src/main/resources/templates/layouts/default-layout.html @@ -0,0 +1,110 @@ + + + + + + + + + + + + + + + + Spring Roo application + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ +
+ +
+ +
+ +

Sample static body for direct display of the template

+

Lorem ipsum dolor sit amet, consectetur adipiscing elit. Praesent + scelerisque neque neque, ac elementum quam dignissim interdum. Phasellus et + placerat elit. Lorem ipsum dolor sit amet, consectetur adipiscing elit. + Praesent scelerisque neque neque, ac elementum quam dignissim interdum. + Phasellus et placerat elit.

+
+ +
+ +
+ + © 2016 Spring Roo (footer for example for direct display of the template) +
+ + + + + + + + + + + + + + + + + + + +
+
+ +
+ +
+ + + + + diff --git a/roo/src/main/resources/templates/layouts/default-list-layout.html b/roo/src/main/resources/templates/layouts/default-list-layout.html new file mode 100644 index 0000000000..23f5002241 --- /dev/null +++ b/roo/src/main/resources/templates/layouts/default-list-layout.html @@ -0,0 +1,121 @@ + + + + + + + + + + + + + + + + Spring Roo application + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ +
+ +
+ +
+ +

Sample static body for direct display of the template

+

Lorem ipsum dolor sit amet, consectetur adipiscing elit. Praesent + scelerisque neque neque, ac elementum quam dignissim interdum. Phasellus et + placerat elit. Lorem ipsum dolor sit amet, consectetur adipiscing elit. + Praesent scelerisque neque neque, ac elementum quam dignissim interdum. + Phasellus et placerat elit.

+
+ +
+ +
+ + © 2016 Spring Roo (footer for example for direct display of the template) +
+ + + + + + + + + + + + + + + + + + + +
+
+ +
+ +
+ + + + + diff --git a/roo/src/main/resources/templates/layouts/home-layout.html b/roo/src/main/resources/templates/layouts/home-layout.html new file mode 100644 index 0000000000..7c1d2f7c5c --- /dev/null +++ b/roo/src/main/resources/templates/layouts/home-layout.html @@ -0,0 +1,104 @@ + + + + + + + + + + + + + + Spring Roo application + + + + + + + + + + + + + + + + + + + + + + + +
+ +
+ +

Sample page header for direct display of the template

+
+
+ +
+ +
+ +

Sample static body for direct display of the template

+

Lorem ipsum dolor sit amet, consectetur adipiscing elit. Praesent + scelerisque neque neque, ac elementum quam dignissim interdum. Phasellus et + placerat elit. Lorem ipsum dolor sit amet, consectetur adipiscing elit. + Praesent scelerisque neque neque, ac elementum quam dignissim interdum. + Phasellus et placerat elit.

+
+ +
+ +
+ + © 2016 Spring Roo (footer for example for direct display of the template) +
+ + + + + + + + + + + + + + + + + + +
+ +
+ + + + + diff --git a/roo/src/main/resources/templates/login.html b/roo/src/main/resources/templates/login.html new file mode 100644 index 0000000000..627b165049 --- /dev/null +++ b/roo/src/main/resources/templates/login.html @@ -0,0 +1,108 @@ + + + + + Login- Spring Roo application + + + + + +
+ +
+ + +
+ + +
+
+ +
+
+

Login

+
+
+
+
+ Enter your login and password + + + + + + +
+ +
+ + +
+
+
+ +
+ + +
+
+
+
+ + +
+
+
+
+
+
+
+
+ +
+ + +
+ +
+ + + + + +
+
+ + + + diff --git a/roo/src/main/resources/templates/reports/export_default.jrxml b/roo/src/main/resources/templates/reports/export_default.jrxml new file mode 100644 index 0000000000..3540f690de --- /dev/null +++ b/roo/src/main/resources/templates/reports/export_default.jrxml @@ -0,0 +1,59 @@ + + + + + + + + + + <band height="94"> + <frame> + <reportElement mode="Opaque" x="-20" y="-20" width="595" height="92" backcolor="#054571" uuid="96670a12-0a0b-4503-8309-d43c1bd41fa5"/> + <staticText> + <reportElement x="20" y="20" width="234" height="43" forecolor="#FFFFFF" uuid="887580cd-50ec-499d-ba19-3971bf3a5552"/> + <textElement> + <font size="34" isBold="true"/> + </textElement> + <text><![CDATA[Export]]></text> + </staticText> + </frame> + <staticText> + <reportElement x="206" y="74" width="100" height="20" uuid="6efdf519-1cda-447d-bb04-5dfca2ae8aed"/> + <text><![CDATA[]]></text> + </staticText> + </band> + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/spring-core/src/main/java/com/baeldung/constructordi/SpringRunner.java b/spring-core/src/main/java/com/baeldung/constructordi/SpringRunner.java index 623739f036..bffd35ec59 100644 --- a/spring-core/src/main/java/com/baeldung/constructordi/SpringRunner.java +++ b/spring-core/src/main/java/com/baeldung/constructordi/SpringRunner.java @@ -1,31 +1,31 @@ -package com.baeldung.constructordi; - -import org.springframework.context.ApplicationContext; -import org.springframework.context.annotation.AnnotationConfigApplicationContext; -import org.springframework.context.support.ClassPathXmlApplicationContext; - -import com.baeldung.constructordi.domain.Car; - -public class SpringRunner { - public static void main(String[] args) { - Car toyota = getCarFromXml(); - - System.out.println(toyota); - - toyota = getCarFromJavaConfig(); - - System.out.println(toyota); - } - - private static Car getCarFromJavaConfig() { - ApplicationContext context = new AnnotationConfigApplicationContext(Config.class); - - return context.getBean(Car.class); - } - - private static Car getCarFromXml() { - ApplicationContext context = new ClassPathXmlApplicationContext("baeldung.xml"); - - return context.getBean(Car.class); - } -} +package com.baeldung.constructordi; + +import org.springframework.context.ApplicationContext; +import org.springframework.context.annotation.AnnotationConfigApplicationContext; +import org.springframework.context.support.ClassPathXmlApplicationContext; + +import com.baeldung.constructordi.domain.Car; + +public class SpringRunner { + public static void main(String[] args) { + Car toyota = getCarFromXml(); + + System.out.println(toyota); + + toyota = getCarFromJavaConfig(); + + System.out.println(toyota); + } + + private static Car getCarFromJavaConfig() { + ApplicationContext context = new AnnotationConfigApplicationContext(Config.class); + + return context.getBean(Car.class); + } + + private static Car getCarFromXml() { + ApplicationContext context = new ClassPathXmlApplicationContext("constructordi.xml"); + + return context.getBean(Car.class); + } +} diff --git a/spring-core/src/main/java/com/baeldung/constructordi/domain/Car.java b/spring-core/src/main/java/com/baeldung/constructordi/domain/Car.java index 9f68ba5cd9..5c9467fdf4 100644 --- a/spring-core/src/main/java/com/baeldung/constructordi/domain/Car.java +++ b/spring-core/src/main/java/com/baeldung/constructordi/domain/Car.java @@ -1,21 +1,21 @@ -package com.baeldung.constructordi.domain; - -import org.springframework.beans.factory.annotation.Autowired; -import org.springframework.stereotype.Component; - -@Component -public class Car { - private Engine engine; - private Transmission transmission; - - @Autowired - public Car(Engine engine, Transmission transmission) { - this.engine = engine; - this.transmission = transmission; - } - - @Override - public String toString() { - return String.format("Engine: %s Transmission: %s", engine, transmission); - } -} +package com.baeldung.constructordi.domain; + +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Component; + +@Component +public class Car { + private Engine engine; + private Transmission transmission; + + @Autowired + public Car(Engine engine, Transmission transmission) { + this.engine = engine; + this.transmission = transmission; + } + + @Override + public String toString() { + return String.format("Engine: %s Transmission: %s", engine, transmission); + } +} diff --git a/spring-core/src/main/java/com/baeldung/setterdi/Config.java b/spring-core/src/main/java/com/baeldung/setterdi/Config.java new file mode 100644 index 0000000000..68c1ae12a2 --- /dev/null +++ b/spring-core/src/main/java/com/baeldung/setterdi/Config.java @@ -0,0 +1,35 @@ +package com.baeldung.setterdi; + +import org.springframework.context.annotation.Bean; +import org.springframework.context.annotation.ComponentScan; +import org.springframework.context.annotation.Configuration; + +import com.baeldung.setterdi.domain.Engine; +import com.baeldung.setterdi.domain.Trailer; +import com.baeldung.setterdi.domain.Transmission; + +@Configuration +@ComponentScan("com.baeldung.setterdi") +public class Config { + + @Bean + public Engine engine() { + Engine engine = new Engine(); + engine.setType("v8"); + engine.setVolume(5); + return engine; + } + + @Bean + public Transmission transmission() { + Transmission transmission = new Transmission(); + transmission.setType("sliding"); + return transmission; + } + + @Bean + public Trailer trailer() { + Trailer trailer = new Trailer(); + return trailer; + } +} \ No newline at end of file diff --git a/spring-core/src/main/java/com/baeldung/setterdi/SpringRunner.java b/spring-core/src/main/java/com/baeldung/setterdi/SpringRunner.java new file mode 100644 index 0000000000..bc92b79e8a --- /dev/null +++ b/spring-core/src/main/java/com/baeldung/setterdi/SpringRunner.java @@ -0,0 +1,33 @@ +package com.baeldung.setterdi; + +import org.springframework.context.ApplicationContext; +import org.springframework.context.annotation.AnnotationConfigApplicationContext; +import org.springframework.context.support.ClassPathXmlApplicationContext; + +import com.baeldung.setterdi.Config; +import com.baeldung.setterdi.domain.Car; + +public class SpringRunner { + public static void main(String[] args) { + Car toyota = getCarFromXml(); + + System.out.println(toyota); + + toyota = getCarFromJavaConfig(); + + System.out.println(toyota); + + } + + private static Car getCarFromJavaConfig() { + ApplicationContext context = new AnnotationConfigApplicationContext(Config.class); + + return context.getBean(Car.class); + } + + private static Car getCarFromXml() { + ApplicationContext context = new ClassPathXmlApplicationContext("setterdi.xml"); + + return context.getBean(Car.class); + } +} \ No newline at end of file diff --git a/spring-core/src/main/java/com/baeldung/setterdi/domain/Car.java b/spring-core/src/main/java/com/baeldung/setterdi/domain/Car.java new file mode 100644 index 0000000000..749ff3984a --- /dev/null +++ b/spring-core/src/main/java/com/baeldung/setterdi/domain/Car.java @@ -0,0 +1,34 @@ +package com.baeldung.setterdi.domain; + +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Component; + +@Component +public class Car { + private Engine engine; + private Transmission transmission; + private Trailer trailer; + + public Car() { + } + + @Autowired + public void setEngine(Engine engine) { + this.engine = engine; + } + + @Autowired + public void setTransmission(Transmission transmission) { + this.transmission = transmission; + } + + @Autowired + public void setTrailer(Trailer trailer) { + this.trailer = trailer; + } + + @Override + public String toString() { + return String.format("Engine: %s Transmission: %s Trailer: %s", engine, transmission, trailer); + } +} diff --git a/spring-core/src/main/java/com/baeldung/setterdi/domain/Engine.java b/spring-core/src/main/java/com/baeldung/setterdi/domain/Engine.java new file mode 100644 index 0000000000..50c247cacf --- /dev/null +++ b/spring-core/src/main/java/com/baeldung/setterdi/domain/Engine.java @@ -0,0 +1,22 @@ +package com.baeldung.setterdi.domain; + +public class Engine { + private String type; + private int volume; + + public Engine() { + } + + public void setType(String type) { + this.type = type; + } + + public void setVolume(int volume) { + this.volume = volume; + } + + @Override + public String toString() { + return String.format("%s %d", type, volume); + } +} \ No newline at end of file diff --git a/spring-core/src/main/java/com/baeldung/setterdi/domain/Trailer.java b/spring-core/src/main/java/com/baeldung/setterdi/domain/Trailer.java new file mode 100644 index 0000000000..616732309e --- /dev/null +++ b/spring-core/src/main/java/com/baeldung/setterdi/domain/Trailer.java @@ -0,0 +1,11 @@ +package com.baeldung.setterdi.domain; + +public class Trailer { + public Trailer() { + } + + @Override + public String toString() { + return "Trailer"; + } +} diff --git a/spring-core/src/main/java/com/baeldung/setterdi/domain/Transmission.java b/spring-core/src/main/java/com/baeldung/setterdi/domain/Transmission.java new file mode 100644 index 0000000000..18b62afdc1 --- /dev/null +++ b/spring-core/src/main/java/com/baeldung/setterdi/domain/Transmission.java @@ -0,0 +1,17 @@ +package com.baeldung.setterdi.domain; + +public class Transmission { + private String type; + + public Transmission() { + } + + public void setType(String type) { + this.type = type; + } + + @Override + public String toString() { + return String.format("%s", type); + } +} diff --git a/spring-core/src/main/resources/constructordi.xml b/spring-core/src/main/resources/constructordi.xml new file mode 100644 index 0000000000..231e72adcb --- /dev/null +++ b/spring-core/src/main/resources/constructordi.xml @@ -0,0 +1,20 @@ + + + + + + + + + + + + + + + + + diff --git a/spring-core/src/main/resources/setterdi.xml b/spring-core/src/main/resources/setterdi.xml new file mode 100644 index 0000000000..8b7f0d41e7 --- /dev/null +++ b/spring-core/src/main/resources/setterdi.xml @@ -0,0 +1,24 @@ + + + + + + + + + + + + + + + + + + + + + From fd8e872feb9756f80125f0e4893b2ccf77b3494e Mon Sep 17 00:00:00 2001 From: Himanshu Bhardwaj Date: Thu, 6 Apr 2017 14:14:28 +0530 Subject: [PATCH 10/56] [BAEL-752] Cucumber with Scenario Outline (#1583) * [BAEL-752] Cucumbr with Scenario Outline * Corrected indentation * Applied more formatting guidelines. * Java standard used for method names --- cucumber/pom.xml | 93 +++++++++++++++++++ .../cucumber/calculator/Calculator.java | 7 ++ .../calculator/CalculatorRunSteps.java | 38 ++++++++ .../cucumber/calculator/CalculatorTest.java | 15 +++ .../calculator-scenario-outline.feature | 16 ++++ .../resources/features/calculator.feature | 24 +++++ cucumber/src/test/resources/logback-test.xml | 13 +++ pom.xml | 1 + 8 files changed, 207 insertions(+) create mode 100644 cucumber/pom.xml create mode 100644 cucumber/src/main/java/com/baeldung/cucumber/calculator/Calculator.java create mode 100644 cucumber/src/test/java/com/baeldung/cucumber/calculator/CalculatorRunSteps.java create mode 100644 cucumber/src/test/java/com/baeldung/cucumber/calculator/CalculatorTest.java create mode 100644 cucumber/src/test/resources/features/calculator-scenario-outline.feature create mode 100644 cucumber/src/test/resources/features/calculator.feature create mode 100644 cucumber/src/test/resources/logback-test.xml diff --git a/cucumber/pom.xml b/cucumber/pom.xml new file mode 100644 index 0000000000..77d04f96c2 --- /dev/null +++ b/cucumber/pom.xml @@ -0,0 +1,93 @@ + + 4.0.0 + com.baeldung + cucumber + 1.0.0-SNAPSHOT + jar + + + 1.8 + 1.8 + UTF-8 + 3.5.1 + 1.7.21 + 1.1.7 + 4.12 + 1.3 + 1.2.5 + 2.19.1 + + + + + + + + info.cukes + cucumber-junit + ${cucumber.version} + test + + + + info.cukes + cucumber-java + ${cucumber.version} + test + + + + org.hamcrest + hamcrest-library + ${hamcrest.library.version} + test + + + + org.slf4j + slf4j-api + ${slf4j.version} + + + + ch.qos.logback + logback-classic + ${logback.version} + + + + ch.qos.logback + logback-core + ${logback.version} + + + + + + + + org.apache.maven.plugins + maven-compiler-plugin + ${maven.compiler.plugin.version} + + true + true + ${java.source.version} + ${java.target.version} + + + + org.apache.maven.plugins + maven-surefire-plugin + ${surefire.plugin.version} + + + **/CalculatorTest.java + + + + + + + \ No newline at end of file diff --git a/cucumber/src/main/java/com/baeldung/cucumber/calculator/Calculator.java b/cucumber/src/main/java/com/baeldung/cucumber/calculator/Calculator.java new file mode 100644 index 0000000000..fd4a3bad7b --- /dev/null +++ b/cucumber/src/main/java/com/baeldung/cucumber/calculator/Calculator.java @@ -0,0 +1,7 @@ +package com.baeldung.cucumber.calculator; + +public class Calculator { + public int add(int a, int b) { + return a + b; + } +} diff --git a/cucumber/src/test/java/com/baeldung/cucumber/calculator/CalculatorRunSteps.java b/cucumber/src/test/java/com/baeldung/cucumber/calculator/CalculatorRunSteps.java new file mode 100644 index 0000000000..9c0e920a8d --- /dev/null +++ b/cucumber/src/test/java/com/baeldung/cucumber/calculator/CalculatorRunSteps.java @@ -0,0 +1,38 @@ +package com.baeldung.cucumber.calculator; + +import org.hamcrest.Matchers; +import org.junit.Assert; + +import cucumber.api.java.Before; +import cucumber.api.java.en.Given; +import cucumber.api.java.en.Then; +import cucumber.api.java.en.When; + +public class CalculatorRunSteps { + + private int total; + + private Calculator calculator; + + @Before + private void init() { + total = -999; + + } + + @Given("^I have a calculator$") + public void initializeCalculator() throws Throwable { + calculator = new Calculator(); + } + + @When("^I add (-?\\d+) and (-?\\d+)$") + public void testAdd(int num1, int num2) throws Throwable { + total = calculator.add(num1, num2); + } + + @Then("^the result should be (-?\\d+)$") + public void validateResult(int result) throws Throwable { + Assert.assertThat(total, Matchers.equalTo(result)); + } + +} diff --git a/cucumber/src/test/java/com/baeldung/cucumber/calculator/CalculatorTest.java b/cucumber/src/test/java/com/baeldung/cucumber/calculator/CalculatorTest.java new file mode 100644 index 0000000000..6bbbca60d2 --- /dev/null +++ b/cucumber/src/test/java/com/baeldung/cucumber/calculator/CalculatorTest.java @@ -0,0 +1,15 @@ +package com.baeldung.cucumber.calculator; + +import org.junit.runner.RunWith; + +import cucumber.api.CucumberOptions; +import cucumber.api.junit.Cucumber; + +@RunWith(Cucumber.class) +@CucumberOptions( + features={"classpath:features/calculator.feature", "classpath:features/calculator-scenario-outline.feature"} + , plugin = { "pretty", "json:target/reports/json/calculator.json" } + , glue = {"com.baeldung.cucumber.calculator"} +) +public class CalculatorTest { +} diff --git a/cucumber/src/test/resources/features/calculator-scenario-outline.feature b/cucumber/src/test/resources/features/calculator-scenario-outline.feature new file mode 100644 index 0000000000..7437dbf5f9 --- /dev/null +++ b/cucumber/src/test/resources/features/calculator-scenario-outline.feature @@ -0,0 +1,16 @@ +Feature: Calculator + As a user + I want to use a calculator to add numbers + So that I don't need to add myself + + Scenario Outline: Add two numbers & + Given I have a calculator + When I add and + Then the result should be + + Examples: + | num1 | num2 | total | + | -2 | 3 | 1 | + | 10 | 15 | 25 | + | 99 | -99 | 0 | + | -1 | -10 | -11 | \ No newline at end of file diff --git a/cucumber/src/test/resources/features/calculator.feature b/cucumber/src/test/resources/features/calculator.feature new file mode 100644 index 0000000000..eaf05cb6ca --- /dev/null +++ b/cucumber/src/test/resources/features/calculator.feature @@ -0,0 +1,24 @@ +Feature: Calculator + As a user + I want to use a calculator to add numbers + So that I don't need to add myself + + Scenario: Add two numbers -2 & 3 + Given I have a calculator + When I add -2 and 3 + Then the result should be 1 + + Scenario: Add two numbers 10 & 15 + Given I have a calculator + When I add 10 and 15 + Then the result should be 25 + + Scenario: Add two numbers 99 & -99 + Given I have a calculator + When I add 99 and -99 + Then the result should be 0 + + Scenario: Add two numbers -1 & -10 + Given I have a calculator + When I add -1 and -10 + Then the result should be -11 \ No newline at end of file diff --git a/cucumber/src/test/resources/logback-test.xml b/cucumber/src/test/resources/logback-test.xml new file mode 100644 index 0000000000..e980d88693 --- /dev/null +++ b/cucumber/src/test/resources/logback-test.xml @@ -0,0 +1,13 @@ + + + + %d{HH:mm:ss.SSS} [%thread] %-5level %logger{36} - %msg%n%ex + + + + + + + + + \ No newline at end of file diff --git a/pom.xml b/pom.xml index a582ff3e70..0b569b49fd 100644 --- a/pom.xml +++ b/pom.xml @@ -215,6 +215,7 @@ rabbitmq vertx spring-data-gemfire + cucumber From 22dda8c2be6861c56a47861137fbbbb067a72b0e Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Walter=20G=C3=B3mez?= Date: Fri, 7 Apr 2017 00:09:53 -0600 Subject: [PATCH 11/56] Fix/readme update (#1602) * Add project for hibernate immutable article Add Event entity Add hibernate configuration file Add hibernateutil for configuration Add test to match snippets from article * Update Readme for core-java and spring-hibernate4 * Updating repo --- core-java/README.md | 1 + spring-hibernate4/README.md | 1 + 2 files changed, 2 insertions(+) diff --git a/core-java/README.md b/core-java/README.md index 0861ee7c5e..096ff51df6 100644 --- a/core-java/README.md +++ b/core-java/README.md @@ -11,6 +11,7 @@ - [Converting between a List and a Set in Java](http://www.baeldung.com/convert-list-to-set-and-set-to-list) - [Convert a Map to an Array, List or Set in Java](http://www.baeldung.com/convert-map-values-to-array-list-set) - [Java – Write to File](http://www.baeldung.com/java-write-to-file) +- [Java - Convert File to InputStream] (http://www.baeldung.com/convert-file-to-input-stream) - [Java Scanner](http://www.baeldung.com/java-scanner) - [Java Timer](http://www.baeldung.com/java-timer-and-timertask) - [Java – Byte Array to Writer](http://www.baeldung.com/java-convert-byte-array-to-writer) diff --git a/spring-hibernate4/README.md b/spring-hibernate4/README.md index 02888c4ad0..08cfe2b538 100644 --- a/spring-hibernate4/README.md +++ b/spring-hibernate4/README.md @@ -13,6 +13,7 @@ - [Eager/Lazy Loading In Hibernate](http://www.baeldung.com/hibernate-lazy-eager-loading) - [Hibernate Criteria Queries](http://www.baeldung.com/hibernate-criteria-queries) - [Hibernate One to Many Annotation Tutorial](http://www.baeldung.com/hibernate-one-to-many) +- [Guide to @Immutable Annotation in Hibernate](http://www.baeldung.com/hibernate-immutable) ### Quick Start From 69965db18733170361a7eda5aec7c8a02f2e992c Mon Sep 17 00:00:00 2001 From: Tehreem Date: Fri, 7 Apr 2017 12:47:33 +0500 Subject: [PATCH 12/56] Spring Cloud Zookeeper (#1399) * Spring Cloud Zookeeper * Spring Cloud Zookeeper Updated --- spring-cloud/pom.xml | 1 + .../spring-cloud-zookeeper/Greeting/pom.xml | 78 +++++++++++++++++++ .../cloud/greeting/GreetingApplication.java | 27 +++++++ .../cloud/greeting/GreetingController.java | 33 ++++++++ .../cloud/greeting/HelloWorldClient.java | 49 ++++++++++++ .../src/main/resources/application.yml | 11 +++ .../resources/templates/greeting-view.html | 9 +++ .../spring-cloud-zookeeper/HelloWorld/pom.xml | 51 ++++++++++++ .../helloworld/HelloWorldApplication.java | 18 +++++ .../helloworld/HelloWorldController.java | 21 +++++ .../src/main/resources/application.yml | 16 ++++ spring-cloud/spring-cloud-zookeeper/pom.xml | 15 ++++ 12 files changed, 329 insertions(+) create mode 100644 spring-cloud/spring-cloud-zookeeper/Greeting/pom.xml create mode 100644 spring-cloud/spring-cloud-zookeeper/Greeting/src/main/java/com/baeldung/spring/cloud/greeting/GreetingApplication.java create mode 100644 spring-cloud/spring-cloud-zookeeper/Greeting/src/main/java/com/baeldung/spring/cloud/greeting/GreetingController.java create mode 100644 spring-cloud/spring-cloud-zookeeper/Greeting/src/main/java/com/baeldung/spring/cloud/greeting/HelloWorldClient.java create mode 100644 spring-cloud/spring-cloud-zookeeper/Greeting/src/main/resources/application.yml create mode 100644 spring-cloud/spring-cloud-zookeeper/Greeting/src/main/resources/templates/greeting-view.html create mode 100644 spring-cloud/spring-cloud-zookeeper/HelloWorld/pom.xml create mode 100644 spring-cloud/spring-cloud-zookeeper/HelloWorld/src/main/java/com/baeldung/spring/cloud/helloworld/HelloWorldApplication.java create mode 100644 spring-cloud/spring-cloud-zookeeper/HelloWorld/src/main/java/com/baeldung/spring/cloud/helloworld/HelloWorldController.java create mode 100644 spring-cloud/spring-cloud-zookeeper/HelloWorld/src/main/resources/application.yml create mode 100644 spring-cloud/spring-cloud-zookeeper/pom.xml diff --git a/spring-cloud/pom.xml b/spring-cloud/pom.xml index 5b5b006d01..6d53b24647 100644 --- a/spring-cloud/pom.xml +++ b/spring-cloud/pom.xml @@ -13,6 +13,7 @@ spring-cloud-bootstrap spring-cloud-ribbon-client spring-cloud-rest + spring-cloud-zookeeper pom diff --git a/spring-cloud/spring-cloud-zookeeper/Greeting/pom.xml b/spring-cloud/spring-cloud-zookeeper/Greeting/pom.xml new file mode 100644 index 0000000000..4d19741210 --- /dev/null +++ b/spring-cloud/spring-cloud-zookeeper/Greeting/pom.xml @@ -0,0 +1,78 @@ + + + 4.0.0 + + com.baeldung.spring.cloud + spring-cloud-zookeeper + 1.0.0-SNAPSHOT + + Greeting + jar + + + org.springframework.boot + spring-boot-starter + 1.5.2.RELEASE + + + org.springframework + spring-web + 4.3.7.RELEASE + + + org.springframework.cloud + spring-cloud-starter-zookeeper-discovery + 1.0.3.RELEASE + + + org.springframework.boot + spring-boot-starter-actuator + 1.5.2.RELEASE + + + org.springframework.cloud + spring-cloud-starter-feign + 1.2.5.RELEASE + + + org.springframework.boot + spring-boot-starter-thymeleaf + 1.5.2.RELEASE + + + junit + junit + 4.12 + test + + + org.hamcrest + hamcrest-core + 1.3 + test + + + + + + + org.springframework.cloud + spring-cloud-dependencies + Brixton.SR7 + pom + import + + + + + + + + org.springframework.boot + spring-boot-maven-plugin + + + + Greeting + \ No newline at end of file diff --git a/spring-cloud/spring-cloud-zookeeper/Greeting/src/main/java/com/baeldung/spring/cloud/greeting/GreetingApplication.java b/spring-cloud/spring-cloud-zookeeper/Greeting/src/main/java/com/baeldung/spring/cloud/greeting/GreetingApplication.java new file mode 100644 index 0000000000..e8beebeadf --- /dev/null +++ b/spring-cloud/spring-cloud-zookeeper/Greeting/src/main/java/com/baeldung/spring/cloud/greeting/GreetingApplication.java @@ -0,0 +1,27 @@ +/* + * To change this license header, choose License Headers in Project Properties. + * To change this template file, choose Tools | Templates + * and open the template in the editor. + */ +package com.baeldung.spring.cloud.greeting; + +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.boot.SpringApplication; +import org.springframework.boot.autoconfigure.SpringBootApplication; +import org.springframework.cloud.client.discovery.EnableDiscoveryClient; +import org.springframework.cloud.netflix.feign.EnableFeignClients; +import org.springframework.stereotype.Controller; +import org.springframework.ui.Model; +import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.ResponseBody; +import org.springframework.web.bind.annotation.RestController; + +@SpringBootApplication +@EnableDiscoveryClient +public class GreetingApplication { + + public static void main(String[] args) { + SpringApplication.run(GreetingApplication.class, args); + } + +} diff --git a/spring-cloud/spring-cloud-zookeeper/Greeting/src/main/java/com/baeldung/spring/cloud/greeting/GreetingController.java b/spring-cloud/spring-cloud-zookeeper/Greeting/src/main/java/com/baeldung/spring/cloud/greeting/GreetingController.java new file mode 100644 index 0000000000..d701a2c762 --- /dev/null +++ b/spring-cloud/spring-cloud-zookeeper/Greeting/src/main/java/com/baeldung/spring/cloud/greeting/GreetingController.java @@ -0,0 +1,33 @@ +/* + * To change this license header, choose License Headers in Project Properties. + * To change this template file, choose Tools | Templates + * and open the template in the editor. + */ +package com.baeldung.spring.cloud.greeting; + +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.cloud.netflix.feign.EnableFeignClients; +import org.springframework.stereotype.Controller; + +import org.springframework.ui.Model; +import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.RequestMethod; +import org.springframework.web.bind.annotation.ResponseBody; +import org.springframework.web.bind.annotation.RestController; + +@Controller +public class GreetingController { + + @Autowired + private HelloWorldClient helloWorldClient; + + @RequestMapping(value = "/get-greeting", method = RequestMethod.GET) + + public String greeting(Model model) { + + model.addAttribute("greeting", helloWorldClient.HelloWorld()); + return "greeting-view"; + + } + +} diff --git a/spring-cloud/spring-cloud-zookeeper/Greeting/src/main/java/com/baeldung/spring/cloud/greeting/HelloWorldClient.java b/spring-cloud/spring-cloud-zookeeper/Greeting/src/main/java/com/baeldung/spring/cloud/greeting/HelloWorldClient.java new file mode 100644 index 0000000000..d2b91ca715 --- /dev/null +++ b/spring-cloud/spring-cloud-zookeeper/Greeting/src/main/java/com/baeldung/spring/cloud/greeting/HelloWorldClient.java @@ -0,0 +1,49 @@ +package com.baeldung.spring.cloud.greeting; + +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.cloud.client.discovery.EnableDiscoveryClient; +import org.springframework.cloud.netflix.feign.EnableFeignClients; +import org.springframework.cloud.netflix.feign.FeignClient; +import org.springframework.context.annotation.Configuration; +import org.springframework.http.MediaType; +import org.springframework.web.bind.annotation.RequestBody; +import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.RequestMethod; +import org.springframework.web.bind.annotation.ResponseBody; + +/** + * This class provides operations on the Validation service. + * + *

+ * When booting up, Spring will try and find a service named "Validation" (see + * the FeignClient below) under the available ZooKeeper instance. + *

+ * + */ +@Configuration +@EnableFeignClients +@EnableDiscoveryClient +public class HelloWorldClient { + + @Autowired + private TheClient theClient; + + @FeignClient(name = "HelloWorld") + interface TheClient { + + @RequestMapping(path = "/helloworld", method = RequestMethod.GET) + @ResponseBody + String HelloWorld(); + } + + /** + * Initiate call to Validation. + * + * @param name + * @return the response + */ + public String HelloWorld() { + return theClient.HelloWorld(); + } + +} diff --git a/spring-cloud/spring-cloud-zookeeper/Greeting/src/main/resources/application.yml b/spring-cloud/spring-cloud-zookeeper/Greeting/src/main/resources/application.yml new file mode 100644 index 0000000000..6140f6ab2f --- /dev/null +++ b/spring-cloud/spring-cloud-zookeeper/Greeting/src/main/resources/application.yml @@ -0,0 +1,11 @@ +spring: + application: + name: Greeting + cloud: + zookeeper: + connect-string: localhost:2181 +server: + port: 8083 +logging: + level: + org.apache.zookeeper.ClientCnxn: WARN \ No newline at end of file diff --git a/spring-cloud/spring-cloud-zookeeper/Greeting/src/main/resources/templates/greeting-view.html b/spring-cloud/spring-cloud-zookeeper/Greeting/src/main/resources/templates/greeting-view.html new file mode 100644 index 0000000000..42cdadb487 --- /dev/null +++ b/spring-cloud/spring-cloud-zookeeper/Greeting/src/main/resources/templates/greeting-view.html @@ -0,0 +1,9 @@ + + + + Greeting Page + + +

+ + \ No newline at end of file diff --git a/spring-cloud/spring-cloud-zookeeper/HelloWorld/pom.xml b/spring-cloud/spring-cloud-zookeeper/HelloWorld/pom.xml new file mode 100644 index 0000000000..1c829a50df --- /dev/null +++ b/spring-cloud/spring-cloud-zookeeper/HelloWorld/pom.xml @@ -0,0 +1,51 @@ + + + 4.0.0 + + com.baeldung.spring.cloud + spring-cloud-zookeeper + 1.0.0-SNAPSHOT + + HelloWorld + jar + + + org.springframework.boot + spring-boot-starter + 1.5.2.RELEASE + + + org.springframework + spring-web + 4.3.7.RELEASE + + + org.springframework.cloud + spring-cloud-starter-zookeeper-discovery + 1.0.3.RELEASE + + + + + + + org.springframework.cloud + spring-cloud-dependencies + Brixton.SR7 + pom + import + + + + + + + + org.springframework.boot + spring-boot-maven-plugin + + + + HelloWorld + \ No newline at end of file diff --git a/spring-cloud/spring-cloud-zookeeper/HelloWorld/src/main/java/com/baeldung/spring/cloud/helloworld/HelloWorldApplication.java b/spring-cloud/spring-cloud-zookeeper/HelloWorld/src/main/java/com/baeldung/spring/cloud/helloworld/HelloWorldApplication.java new file mode 100644 index 0000000000..8b35071516 --- /dev/null +++ b/spring-cloud/spring-cloud-zookeeper/HelloWorld/src/main/java/com/baeldung/spring/cloud/helloworld/HelloWorldApplication.java @@ -0,0 +1,18 @@ +/* + * To change this license header, choose License Headers in Project Properties. + * To change this template file, choose Tools | Templates + * and open the template in the editor. + */ +package com.baeldung.spring.cloud.helloworld; + +import org.springframework.boot.SpringApplication; +import org.springframework.boot.autoconfigure.SpringBootApplication; +import org.springframework.cloud.client.discovery.EnableDiscoveryClient; + +@SpringBootApplication +@EnableDiscoveryClient +public class HelloWorldApplication { + public static void main(String[] args) { + SpringApplication.run(HelloWorldApplication.class, args); + } +} diff --git a/spring-cloud/spring-cloud-zookeeper/HelloWorld/src/main/java/com/baeldung/spring/cloud/helloworld/HelloWorldController.java b/spring-cloud/spring-cloud-zookeeper/HelloWorld/src/main/java/com/baeldung/spring/cloud/helloworld/HelloWorldController.java new file mode 100644 index 0000000000..d5ea84de19 --- /dev/null +++ b/spring-cloud/spring-cloud-zookeeper/HelloWorld/src/main/java/com/baeldung/spring/cloud/helloworld/HelloWorldController.java @@ -0,0 +1,21 @@ +/* + * To change this license header, choose License Headers in Project Properties. + * To change this template file, choose Tools | Templates + * and open the template in the editor. + */ +package com.baeldung.spring.cloud.helloworld; + +import org.springframework.http.MediaType; +import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.RequestMethod; +import org.springframework.web.bind.annotation.RestController; + +@RestController +public class HelloWorldController { + + @RequestMapping(path = "/helloworld", method = RequestMethod.GET) + public String HelloWorld() { + return "Hello World!"; + } + +} diff --git a/spring-cloud/spring-cloud-zookeeper/HelloWorld/src/main/resources/application.yml b/spring-cloud/spring-cloud-zookeeper/HelloWorld/src/main/resources/application.yml new file mode 100644 index 0000000000..550165a762 --- /dev/null +++ b/spring-cloud/spring-cloud-zookeeper/HelloWorld/src/main/resources/application.yml @@ -0,0 +1,16 @@ +spring: + application: + name: HelloWorld + cloud: + zookeeper: + connect-string: localhost:2181 + discovery: + enabled: true +server: + port: 8081 +endpoints: + restart: + enabled: true +logging: + level: + org.apache.zookeeper.ClientCnxn: WARN \ No newline at end of file diff --git a/spring-cloud/spring-cloud-zookeeper/pom.xml b/spring-cloud/spring-cloud-zookeeper/pom.xml new file mode 100644 index 0000000000..8406813161 --- /dev/null +++ b/spring-cloud/spring-cloud-zookeeper/pom.xml @@ -0,0 +1,15 @@ + + + 4.0.0 + + com.baeldung.spring.cloud + spring-cloud + 1.0.0-SNAPSHOT + + spring-cloud-zookeeper + pom + + Greeting + HelloWorld + + \ No newline at end of file From d87e0663fc7a9f3aedd20d8b465545cf0e65abe8 Mon Sep 17 00:00:00 2001 From: Mohamed Sanaulla Date: Fri, 7 Apr 2017 17:31:39 +0300 Subject: [PATCH 13/56] incorporate review comments for BAEL-747 (#1603) --- .../primechecker/BigIntegerPrimeChecker.java | 4 ++-- .../primechecker/BruteForcePrimeChecker.java | 9 ++++++--- .../primechecker/OptimisedPrimeChecker.java | 9 +++++---- .../algorithms/primechecker/PrimeChecker.java | 4 ++-- .../algorithms/primechecker/PrimesPrimeChecker.java | 4 ++-- .../primechecker/BigIntegerPrimeCheckerTest.java | 12 +++++++----- .../primechecker/OptimisedPrimeCheckerTest.java | 2 +- .../primechecker/PrimesPrimeCheckerTest.java | 2 +- 8 files changed, 26 insertions(+), 20 deletions(-) diff --git a/algorithms/src/main/java/com/baeldung/algorithms/primechecker/BigIntegerPrimeChecker.java b/algorithms/src/main/java/com/baeldung/algorithms/primechecker/BigIntegerPrimeChecker.java index bd4708b661..752e659fa3 100644 --- a/algorithms/src/main/java/com/baeldung/algorithms/primechecker/BigIntegerPrimeChecker.java +++ b/algorithms/src/main/java/com/baeldung/algorithms/primechecker/BigIntegerPrimeChecker.java @@ -2,10 +2,10 @@ package com.baeldung.algorithms.primechecker; import java.math.BigInteger; -public class BigIntegerPrimeChecker implements PrimeChecker{ +public class BigIntegerPrimeChecker implements PrimeChecker{ @Override - public boolean isPrime(int number) { + public boolean isPrime(Long number) { BigInteger bigInt = BigInteger.valueOf(number); return bigInt.isProbablePrime(100); } diff --git a/algorithms/src/main/java/com/baeldung/algorithms/primechecker/BruteForcePrimeChecker.java b/algorithms/src/main/java/com/baeldung/algorithms/primechecker/BruteForcePrimeChecker.java index 0dfcfa1505..47ffb3e224 100644 --- a/algorithms/src/main/java/com/baeldung/algorithms/primechecker/BruteForcePrimeChecker.java +++ b/algorithms/src/main/java/com/baeldung/algorithms/primechecker/BruteForcePrimeChecker.java @@ -1,12 +1,15 @@ package com.baeldung.algorithms.primechecker; import java.util.stream.IntStream; +import java.util.stream.LongStream; -public class BruteForcePrimeChecker implements PrimeChecker{ +public class BruteForcePrimeChecker implements PrimeChecker{ @Override - public boolean isPrime(int number) { - return IntStream.range(2, number).noneMatch(n -> (number % n == 0)); + public boolean isPrime(Integer number) { + + return number > 2 ? IntStream.range(2, number) + .noneMatch(n -> (number % n == 0)) : false; } diff --git a/algorithms/src/main/java/com/baeldung/algorithms/primechecker/OptimisedPrimeChecker.java b/algorithms/src/main/java/com/baeldung/algorithms/primechecker/OptimisedPrimeChecker.java index f7e3e09be0..06ae4acc7f 100644 --- a/algorithms/src/main/java/com/baeldung/algorithms/primechecker/OptimisedPrimeChecker.java +++ b/algorithms/src/main/java/com/baeldung/algorithms/primechecker/OptimisedPrimeChecker.java @@ -1,13 +1,14 @@ package com.baeldung.algorithms.primechecker; import java.util.stream.IntStream; +import java.util.stream.LongStream; -public class OptimisedPrimeChecker implements PrimeChecker{ +public class OptimisedPrimeChecker implements PrimeChecker{ @Override - public boolean isPrime(int number) { - return IntStream.range(2, (int)Math.sqrt(number) + 1) - .noneMatch(n -> (number % n == 0)); + public boolean isPrime(Integer number) { + return number > 2 ? IntStream.rangeClosed(2, (int) Math.sqrt(number)) + .noneMatch(n -> (number % n == 0)) : false; } diff --git a/algorithms/src/main/java/com/baeldung/algorithms/primechecker/PrimeChecker.java b/algorithms/src/main/java/com/baeldung/algorithms/primechecker/PrimeChecker.java index f31af1ca4f..5f7a15a939 100644 --- a/algorithms/src/main/java/com/baeldung/algorithms/primechecker/PrimeChecker.java +++ b/algorithms/src/main/java/com/baeldung/algorithms/primechecker/PrimeChecker.java @@ -1,6 +1,6 @@ package com.baeldung.algorithms.primechecker; -public interface PrimeChecker { +public interface PrimeChecker { - public boolean isPrime( int number ); + public boolean isPrime( T number ); } diff --git a/algorithms/src/main/java/com/baeldung/algorithms/primechecker/PrimesPrimeChecker.java b/algorithms/src/main/java/com/baeldung/algorithms/primechecker/PrimesPrimeChecker.java index ee66d5d2ab..08b095cb79 100644 --- a/algorithms/src/main/java/com/baeldung/algorithms/primechecker/PrimesPrimeChecker.java +++ b/algorithms/src/main/java/com/baeldung/algorithms/primechecker/PrimesPrimeChecker.java @@ -2,10 +2,10 @@ package com.baeldung.algorithms.primechecker; import org.apache.commons.math3.primes.Primes; -public class PrimesPrimeChecker implements PrimeChecker{ +public class PrimesPrimeChecker implements PrimeChecker{ @Override - public boolean isPrime(int number) { + public boolean isPrime(Integer number) { return Primes.isPrime(number); } diff --git a/algorithms/src/test/java/com/baeldung/algorithms/primechecker/BigIntegerPrimeCheckerTest.java b/algorithms/src/test/java/com/baeldung/algorithms/primechecker/BigIntegerPrimeCheckerTest.java index 95eb85749d..8980397c68 100644 --- a/algorithms/src/test/java/com/baeldung/algorithms/primechecker/BigIntegerPrimeCheckerTest.java +++ b/algorithms/src/test/java/com/baeldung/algorithms/primechecker/BigIntegerPrimeCheckerTest.java @@ -9,18 +9,20 @@ import com.baeldung.algorithms.primechecker.PrimeChecker; public class BigIntegerPrimeCheckerTest { - PrimeChecker primeChecker = new BigIntegerPrimeChecker(); + BigIntegerPrimeChecker primeChecker = new BigIntegerPrimeChecker(); @Test public void givenPrimeNumber_whenCheckIsPrime_thenTrue(){ - assertTrue(primeChecker.isPrime(13)); - assertTrue(primeChecker.isPrime(1009)); + assertTrue(primeChecker.isPrime(13l)); + assertTrue(primeChecker.isPrime(1009L)); + assertTrue(primeChecker.isPrime(74207281L)); } @Test public void givenNonPrimeNumber_whenCheckIsPrime_thenFalse(){ - assertTrue(!primeChecker.isPrime(50)); - assertTrue(!primeChecker.isPrime(1001)); + assertTrue(!primeChecker.isPrime(50L)); + assertTrue(!primeChecker.isPrime(1001L)); + assertTrue(!primeChecker.isPrime(74207282L)); } } diff --git a/algorithms/src/test/java/com/baeldung/algorithms/primechecker/OptimisedPrimeCheckerTest.java b/algorithms/src/test/java/com/baeldung/algorithms/primechecker/OptimisedPrimeCheckerTest.java index 21ad55467f..64ecae7cc3 100644 --- a/algorithms/src/test/java/com/baeldung/algorithms/primechecker/OptimisedPrimeCheckerTest.java +++ b/algorithms/src/test/java/com/baeldung/algorithms/primechecker/OptimisedPrimeCheckerTest.java @@ -9,7 +9,7 @@ import com.baeldung.algorithms.primechecker.PrimeChecker; public class OptimisedPrimeCheckerTest { - PrimeChecker primeChecker = new OptimisedPrimeChecker(); + OptimisedPrimeChecker primeChecker = new OptimisedPrimeChecker(); @Test public void givenPrimeNumber_whenCheckIsPrime_thenTrue(){ diff --git a/algorithms/src/test/java/com/baeldung/algorithms/primechecker/PrimesPrimeCheckerTest.java b/algorithms/src/test/java/com/baeldung/algorithms/primechecker/PrimesPrimeCheckerTest.java index 63de593b44..cb294d6643 100644 --- a/algorithms/src/test/java/com/baeldung/algorithms/primechecker/PrimesPrimeCheckerTest.java +++ b/algorithms/src/test/java/com/baeldung/algorithms/primechecker/PrimesPrimeCheckerTest.java @@ -8,7 +8,7 @@ import com.baeldung.algorithms.primechecker.PrimeChecker; import com.baeldung.algorithms.primechecker.PrimesPrimeChecker; public class PrimesPrimeCheckerTest { - PrimeChecker primeChecker = new PrimesPrimeChecker(); + PrimesPrimeChecker primeChecker = new PrimesPrimeChecker(); @Test public void givenPrimeNumber_whenCheckIsPrime_thenTrue() { From 7ab1e373569abb431e4127760b70fa08de1af127 Mon Sep 17 00:00:00 2001 From: Abhinab Kanrar Date: Fri, 7 Apr 2017 20:03:10 +0530 Subject: [PATCH 14/56] cusstom token (#1588) * rest with spark java * 4 * Update Application.java * indentation changes * spring @requestmapping shortcuts * removing spring requestmapping and pushing spring-mvc-java * Joining/Splitting Strings with Java and Stream API * adding more join/split functionality * changing package name * testcase change * adding webutils * adding testcase for WebUtils and ServletRequestUtils * adding testcase * spring-security-stormpath * adding ratpack module * adding pom.xml * adding following modules with updated testcase : DB, Filter, Json * adding spring-boot custom banner tutorial * changing banner format in plain text * Delete banner.txt~ * Delete b.txt~ * CORS in JAX-RS * ratpack with google guice * adding factory instance example * quick-guide-to-the-java-stringtokenizer * Update Application.java * Delete MovieCrudService.java~ * token customization * Update Application.java * adding csv test * adding csv test * Update Application.java * adding collection module --- .../baeldung/stringtokenizer/Application.java | 41 ++++++++++++++++--- core-java/src/main/resources/data.csv | 3 ++ .../stringtokenizer/ApplicationTest.java | 33 +++++++++++---- 3 files changed, 64 insertions(+), 13 deletions(-) create mode 100644 core-java/src/main/resources/data.csv diff --git a/core-java/src/main/java/com/baeldung/stringtokenizer/Application.java b/core-java/src/main/java/com/baeldung/stringtokenizer/Application.java index caa7ef06da..3fc169f1f7 100644 --- a/core-java/src/main/java/com/baeldung/stringtokenizer/Application.java +++ b/core-java/src/main/java/com/baeldung/stringtokenizer/Application.java @@ -1,6 +1,10 @@ package com.baeldung.stringtokenizer; +import java.io.BufferedReader; +import java.io.IOException; +import java.io.InputStreamReader; import java.util.ArrayList; +import java.util.Collections; import java.util.List; import java.util.StringTokenizer; @@ -8,14 +12,41 @@ public class Application { public List getTokens(String str) { List tokens = new ArrayList(); -// StringTokenizer tokenizer = new StringTokenizer( str ); - StringTokenizer tokenizer = new StringTokenizer( str , "," ); -// StringTokenizer tokenizer = new StringTokenizer( str , "," , true ); + // StringTokenizer tokenizer = new StringTokenizer( str ); + StringTokenizer tokenizer = new StringTokenizer(str, ","); + // StringTokenizer tokenizer = new StringTokenizer( str , "," , true ); while (tokenizer.hasMoreElements()) { - tokens.add( tokenizer.nextToken() ); -// tokens.add( tokenizer.nextToken( "," ) ); + tokens.add(tokenizer.nextToken()); + // tokens.add( tokenizer.nextToken("e") ); + } + int tokenLength = tokens.size(); + return tokens; + } + + public List getTokensWithCollection( String str ) { + StringTokenizer tokenizer = new StringTokenizer(str, ","); + List tokens = new ArrayList(); + Collections.list(tokenizer).forEach(token -> tokens.add((String) token)); + return tokens; + } + + public List getTokensFromFile(String path, String delim) { + List tokens = new ArrayList(); + String currLine = ""; + StringTokenizer tokenizer; + try (BufferedReader br = new BufferedReader( + new InputStreamReader(Application.class.getResourceAsStream("/" + path)))) { + while ((currLine = br.readLine()) != null) { + tokenizer = new StringTokenizer(currLine, delim); + while (tokenizer.hasMoreElements()) { + tokens.add(tokenizer.nextToken()); + } + } + } catch (IOException e) { + e.printStackTrace(); } return tokens; } + } diff --git a/core-java/src/main/resources/data.csv b/core-java/src/main/resources/data.csv new file mode 100644 index 0000000000..ec4ac10443 --- /dev/null +++ b/core-java/src/main/resources/data.csv @@ -0,0 +1,3 @@ +1|IND|India +2|MY|Malaysia +3|AU|Australia diff --git a/core-java/src/test/java/com/baeldung/stringtokenizer/ApplicationTest.java b/core-java/src/test/java/com/baeldung/stringtokenizer/ApplicationTest.java index 5e3df5b303..5d475d2fbb 100644 --- a/core-java/src/test/java/com/baeldung/stringtokenizer/ApplicationTest.java +++ b/core-java/src/test/java/com/baeldung/stringtokenizer/ApplicationTest.java @@ -11,20 +11,37 @@ import static org.junit.Assert.assertEquals; public class ApplicationTest { Application application = new Application(); - List expectedTokens = new ArrayList(); - + List expectedTokensForString = new ArrayList(); + List expectedTokensForFile = new ArrayList(); + @Before public void init() { - expectedTokens.add( "Welcome" ); - expectedTokens.add( "to" ); - expectedTokens.add( "baeldung.com" ); + expectedTokensForString.add("Welcome"); + expectedTokensForString.add("to"); + expectedTokensForString.add("baeldung.com"); + + expectedTokensForFile.add("1"); + expectedTokensForFile.add("IND"); + expectedTokensForFile.add("India"); + expectedTokensForFile.add("2"); + expectedTokensForFile.add("MY"); + expectedTokensForFile.add("Malaysia"); + expectedTokensForFile.add("3"); + expectedTokensForFile.add("AU"); + expectedTokensForFile.add("Australia"); } - + @Test public void givenString_thenGetListOfString() { String str = "Welcome,to,baeldung.com"; List actualTokens = application.getTokens(str); - assertEquals(expectedTokens, actualTokens); + assertEquals(expectedTokensForString, actualTokens); } - + + @Test + public void givenFile_thenGetListOfString() { + List actualTokens = application.getTokensFromFile("data.csv", "|"); + assertEquals(expectedTokensForFile, actualTokens); + } + } From e7d81e6e9829f8b6160278a9a4f715348d8de014 Mon Sep 17 00:00:00 2001 From: Grzegorz Piwowarek Date: Fri, 7 Apr 2017 16:56:35 +0200 Subject: [PATCH 15/56] Optimize build (#1604) --- apache-fop/pom.xml | 2 ++ pom.xml | 2 ++ querydsl/pom.xml | 2 ++ resteasy/bin/pom.xml | 2 ++ rxjava/pom.xml | 2 ++ spring-5/pom.xml | 2 ++ spring-akka/pom.xml | 2 ++ spring-cloud-data-flow/data-flow-shell/pom.xml | 2 ++ .../spring-cloud-rest-discovery-server/pom.xml | 2 ++ spring-jersey/pom.xml | 2 ++ spring-mvc-velocity/pom.xml | 3 ++- spring-thymeleaf/pom.xml | 2 ++ spring-userservice/pom.xml | 3 +++ 13 files changed, 27 insertions(+), 1 deletion(-) diff --git a/apache-fop/pom.xml b/apache-fop/pom.xml index 6f89497a7d..6337fe002c 100644 --- a/apache-fop/pom.xml +++ b/apache-fop/pom.xml @@ -140,6 +140,8 @@ maven-surefire-plugin ${maven-surefire-plugin.version} + 3 + true **/*IntegrationTest.java **/*LiveTest.java diff --git a/pom.xml b/pom.xml index 0b569b49fd..b21d656772 100644 --- a/pom.xml +++ b/pom.xml @@ -234,6 +234,8 @@ org.apache.maven.plugins maven-surefire-plugin + 3 + true **/*IntegrationTest.java **/*LongRunningUnitTest.java diff --git a/querydsl/pom.xml b/querydsl/pom.xml index b0a07fb3ff..1335d0f1fd 100644 --- a/querydsl/pom.xml +++ b/querydsl/pom.xml @@ -181,6 +181,8 @@ org.apache.maven.plugins maven-surefire-plugin + 3 + true **/*IntegrationTest.java **/*LiveTest.java diff --git a/resteasy/bin/pom.xml b/resteasy/bin/pom.xml index f0bd8298f5..1116c0f01a 100644 --- a/resteasy/bin/pom.xml +++ b/resteasy/bin/pom.xml @@ -32,6 +32,8 @@ maven-surefire-plugin ${maven-surefire-plugin.version} + 3 + true **/*IntegrationTest.java **/*LiveTest.java diff --git a/rxjava/pom.xml b/rxjava/pom.xml index 4172187b03..3313713b9b 100644 --- a/rxjava/pom.xml +++ b/rxjava/pom.xml @@ -21,6 +21,8 @@ org.apache.maven.plugins maven-surefire-plugin + 3 + true **/*IntegrationTest.java **/*LongRunningUnitTest.java diff --git a/spring-5/pom.xml b/spring-5/pom.xml index f116ed73c0..2c96bae9bc 100644 --- a/spring-5/pom.xml +++ b/spring-5/pom.xml @@ -80,6 +80,8 @@ org.apache.maven.plugins maven-surefire-plugin + 3 + true **/*IntegrationTest.java **/*LiveTest.java diff --git a/spring-akka/pom.xml b/spring-akka/pom.xml index 1a273b0fed..5965213e65 100644 --- a/spring-akka/pom.xml +++ b/spring-akka/pom.xml @@ -70,6 +70,8 @@ maven-surefire-plugin ${maven-surefire-plugin.version} + 3 + true **/*IntegrationTest.java **/*LiveTest.java diff --git a/spring-cloud-data-flow/data-flow-shell/pom.xml b/spring-cloud-data-flow/data-flow-shell/pom.xml index d3bd297152..350f199d4b 100644 --- a/spring-cloud-data-flow/data-flow-shell/pom.xml +++ b/spring-cloud-data-flow/data-flow-shell/pom.xml @@ -68,6 +68,8 @@ org.apache.maven.plugins maven-surefire-plugin + 3 + true **/*IntegrationTest.java **/*LiveTest.java diff --git a/spring-cloud/spring-cloud-rest/spring-cloud-rest-discovery-server/pom.xml b/spring-cloud/spring-cloud-rest/spring-cloud-rest-discovery-server/pom.xml index d9d08079b7..d9ef26280b 100644 --- a/spring-cloud/spring-cloud-rest/spring-cloud-rest-discovery-server/pom.xml +++ b/spring-cloud/spring-cloud-rest/spring-cloud-rest-discovery-server/pom.xml @@ -76,6 +76,8 @@ org.apache.maven.plugins maven-surefire-plugin + 3 + true **/*IntegrationTest.java **/*LiveTest.java diff --git a/spring-jersey/pom.xml b/spring-jersey/pom.xml index 41ebb9a6b5..e6c8ea6ef5 100644 --- a/spring-jersey/pom.xml +++ b/spring-jersey/pom.xml @@ -45,6 +45,8 @@ maven-surefire-plugin ${maven-surefire-plugin.version} + 3 + true **/*IntegrationTest.java **/*LiveTest.java diff --git a/spring-mvc-velocity/pom.xml b/spring-mvc-velocity/pom.xml index 31f2d19375..0a9b3a016e 100644 --- a/spring-mvc-velocity/pom.xml +++ b/spring-mvc-velocity/pom.xml @@ -136,8 +136,9 @@ org.apache.maven.plugins maven-surefire-plugin - ${maven-surefire-plugin.version} + 3 + true **/*IntegrationTest.java diff --git a/spring-thymeleaf/pom.xml b/spring-thymeleaf/pom.xml index f5dfc9931e..be443e15df 100644 --- a/spring-thymeleaf/pom.xml +++ b/spring-thymeleaf/pom.xml @@ -176,6 +176,8 @@ maven-surefire-plugin ${maven-surefire-plugin.version} + 3 + true **/*IntegrationTest.java **/*LiveTest.java diff --git a/spring-userservice/pom.xml b/spring-userservice/pom.xml index c0099173ee..0f3ed96c4e 100644 --- a/spring-userservice/pom.xml +++ b/spring-userservice/pom.xml @@ -239,6 +239,9 @@ maven-surefire-plugin ${maven-surefire-plugin.version} + 3 + true + **/*IntegrationTest.java From 196ea6b5f77c554fd00a21a5cb5bde3607929dc2 Mon Sep 17 00:00:00 2001 From: Grzegorz Piwowarek Date: Fri, 7 Apr 2017 18:15:19 +0200 Subject: [PATCH 16/56] Refactor Tokenizer (#1605) --- .../baeldung/stringtokenizer/Application.java | 76 +++++++++---------- 1 file changed, 38 insertions(+), 38 deletions(-) diff --git a/core-java/src/main/java/com/baeldung/stringtokenizer/Application.java b/core-java/src/main/java/com/baeldung/stringtokenizer/Application.java index 3fc169f1f7..4560e40697 100644 --- a/core-java/src/main/java/com/baeldung/stringtokenizer/Application.java +++ b/core-java/src/main/java/com/baeldung/stringtokenizer/Application.java @@ -7,46 +7,46 @@ import java.util.ArrayList; import java.util.Collections; import java.util.List; import java.util.StringTokenizer; +import java.util.stream.Collectors; public class Application { - public List getTokens(String str) { - List tokens = new ArrayList(); - // StringTokenizer tokenizer = new StringTokenizer( str ); - StringTokenizer tokenizer = new StringTokenizer(str, ","); - // StringTokenizer tokenizer = new StringTokenizer( str , "," , true ); - while (tokenizer.hasMoreElements()) { - tokens.add(tokenizer.nextToken()); - // tokens.add( tokenizer.nextToken("e") ); - } - int tokenLength = tokens.size(); - return tokens; - } - - public List getTokensWithCollection( String str ) { - StringTokenizer tokenizer = new StringTokenizer(str, ","); - List tokens = new ArrayList(); - Collections.list(tokenizer).forEach(token -> tokens.add((String) token)); - return tokens; - } - - public List getTokensFromFile(String path, String delim) { - List tokens = new ArrayList(); - String currLine = ""; - StringTokenizer tokenizer; - try (BufferedReader br = new BufferedReader( - new InputStreamReader(Application.class.getResourceAsStream("/" + path)))) { - while ((currLine = br.readLine()) != null) { - tokenizer = new StringTokenizer(currLine, delim); - while (tokenizer.hasMoreElements()) { - tokens.add(tokenizer.nextToken()); - } - } - } catch (IOException e) { - e.printStackTrace(); - } - return tokens; - } - + public List getTokens(String str) { + List tokens = new ArrayList(); + // StringTokenizer tokenizer = new StringTokenizer( str ); + StringTokenizer tokenizer = new StringTokenizer(str, ","); + // StringTokenizer tokenizer = new StringTokenizer( str , "," , true ); + while (tokenizer.hasMoreElements()) { + tokens.add(tokenizer.nextToken()); + // tokens.add( tokenizer.nextToken("e") ); + } + int tokenLength = tokens.size(); + return tokens; + } + + public List getTokensWithCollection(String str) { + StringTokenizer tokenizer = new StringTokenizer(str, ","); + + return Collections.list(tokenizer).stream() + .map(token -> (String) token) + .collect(Collectors.toList()); + } + + public List getTokensFromFile(String path, String delim) { + List tokens = new ArrayList<>(); + String currLine = ""; + StringTokenizer tokenizer; + try (BufferedReader br = new BufferedReader(new InputStreamReader(Application.class.getResourceAsStream("/" + path)))) { + while ((currLine = br.readLine()) != null) { + tokenizer = new StringTokenizer(currLine, delim); + while (tokenizer.hasMoreElements()) { + tokens.add(tokenizer.nextToken()); + } + } + } catch (IOException e) { + e.printStackTrace(); + } + return tokens; + } } From a3926e42042c9ca4caf2661f4f47760bdd4ff3da Mon Sep 17 00:00:00 2001 From: lor6 Date: Fri, 7 Apr 2017 23:30:29 +0300 Subject: [PATCH 17/56] separate test datasource (#1575) * separate test datasource * remove hsqldb * fix var name * move config class --- spring-boot/pom.xml | 2 + .../java/org/baeldung/config/H2JpaConfig.java | 67 +++++++++++++++++++ .../baeldung/SpringBootH2IntegrationTest.java | 28 ++++++++ .../SpringBootJPAIntegrationTest.java | 6 +- .../SpringBootProfileIntegrationTest.java | 30 +++++++++ .../config/H2TestProfileJPAConfig.java | 66 ++++++++++++++++++ .../src/test/resources/application.properties | 16 ++++- .../persistence-generic-entity.properties | 8 +++ 8 files changed, 219 insertions(+), 4 deletions(-) create mode 100644 spring-boot/src/main/java/org/baeldung/config/H2JpaConfig.java create mode 100644 spring-boot/src/test/java/org/baeldung/SpringBootH2IntegrationTest.java create mode 100644 spring-boot/src/test/java/org/baeldung/SpringBootProfileIntegrationTest.java create mode 100644 spring-boot/src/test/java/org/baeldung/config/H2TestProfileJPAConfig.java create mode 100644 spring-boot/src/test/resources/persistence-generic-entity.properties diff --git a/spring-boot/pom.xml b/spring-boot/pom.xml index f087617709..5f77be43e3 100644 --- a/spring-boot/pom.xml +++ b/spring-boot/pom.xml @@ -67,6 +67,7 @@ com.h2database h2 + ${h2.version} @@ -219,6 +220,7 @@ 3.3.7-1 3.1.7 8.5.11 + 1.4.194 diff --git a/spring-boot/src/main/java/org/baeldung/config/H2JpaConfig.java b/spring-boot/src/main/java/org/baeldung/config/H2JpaConfig.java new file mode 100644 index 0000000000..ace7bb5a6d --- /dev/null +++ b/spring-boot/src/main/java/org/baeldung/config/H2JpaConfig.java @@ -0,0 +1,67 @@ +package org.baeldung.config; + +import java.util.Properties; + +import javax.persistence.EntityManagerFactory; +import javax.sql.DataSource; + +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.context.annotation.Bean; +import org.springframework.context.annotation.Configuration; +import org.springframework.context.annotation.PropertySource; +import org.springframework.core.env.Environment; +import org.springframework.data.jpa.repository.config.EnableJpaRepositories; +import org.springframework.jdbc.datasource.DriverManagerDataSource; +import org.springframework.orm.jpa.JpaTransactionManager; +import org.springframework.orm.jpa.LocalContainerEntityManagerFactoryBean; +import org.springframework.orm.jpa.vendor.HibernateJpaVendorAdapter; +import org.springframework.transaction.annotation.EnableTransactionManagement; + +@Configuration +@EnableJpaRepositories(basePackages = { "org.baeldung.repository", "org.baeldung.boot.repository" }) +@PropertySource("classpath:persistence-generic-entity.properties") +@EnableTransactionManagement +public class H2JpaConfig { + + @Autowired + private Environment env; + + @Bean + public DataSource dataSource() { + final DriverManagerDataSource dataSource = new DriverManagerDataSource(); + dataSource.setDriverClassName(env.getProperty("jdbc.driverClassName")); + dataSource.setUrl(env.getProperty("jdbc.url")); + dataSource.setUsername(env.getProperty("jdbc.user")); + dataSource.setPassword(env.getProperty("jdbc.pass")); + + return dataSource; + } + + @Bean + public LocalContainerEntityManagerFactoryBean entityManagerFactory() { + final LocalContainerEntityManagerFactoryBean em = new LocalContainerEntityManagerFactoryBean(); + em.setDataSource(dataSource()); + em.setPackagesToScan(new String[] { "org.baeldung.domain", "org.baeldung.boot.model" }); + em.setJpaVendorAdapter(new HibernateJpaVendorAdapter()); + em.setJpaProperties(additionalProperties()); + return em; + } + + @Bean + JpaTransactionManager transactionManager(final EntityManagerFactory entityManagerFactory) { + final JpaTransactionManager transactionManager = new JpaTransactionManager(); + transactionManager.setEntityManagerFactory(entityManagerFactory); + return transactionManager; + } + + final Properties additionalProperties() { + final Properties hibernateProperties = new Properties(); + + hibernateProperties.setProperty("hibernate.hbm2ddl.auto", env.getProperty("hibernate.hbm2ddl.auto")); + hibernateProperties.setProperty("hibernate.dialect", env.getProperty("hibernate.dialect")); + hibernateProperties.setProperty("hibernate.show_sql", env.getProperty("hibernate.show_sql")); + + return hibernateProperties; + } + +} diff --git a/spring-boot/src/test/java/org/baeldung/SpringBootH2IntegrationTest.java b/spring-boot/src/test/java/org/baeldung/SpringBootH2IntegrationTest.java new file mode 100644 index 0000000000..185a36e571 --- /dev/null +++ b/spring-boot/src/test/java/org/baeldung/SpringBootH2IntegrationTest.java @@ -0,0 +1,28 @@ +package org.baeldung; + +import org.baeldung.config.H2JpaConfig; +import org.baeldung.domain.GenericEntity; +import org.baeldung.repository.GenericEntityRepository; +import org.junit.Test; +import org.junit.runner.RunWith; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.boot.test.context.SpringBootTest; +import org.springframework.test.context.junit4.SpringJUnit4ClassRunner; + +import static org.junit.Assert.assertEquals; +import static org.junit.Assert.assertNotNull; + +@RunWith(SpringJUnit4ClassRunner.class) +@SpringBootTest(classes = { Application.class, H2JpaConfig.class }) +public class SpringBootH2IntegrationTest { + @Autowired + private GenericEntityRepository genericEntityRepository; + + @Test + public void givenGenericEntityRepository_whenSaveAndRetreiveEntity_thenOK() { + GenericEntity genericEntity = genericEntityRepository.save(new GenericEntity("test")); + GenericEntity foundEntity = genericEntityRepository.findOne(genericEntity.getId()); + assertNotNull(foundEntity); + assertEquals(genericEntity.getValue(), foundEntity.getValue()); + } +} \ No newline at end of file diff --git a/spring-boot/src/test/java/org/baeldung/SpringBootJPAIntegrationTest.java b/spring-boot/src/test/java/org/baeldung/SpringBootJPAIntegrationTest.java index d4b19e6a1d..202d24ffc7 100644 --- a/spring-boot/src/test/java/org/baeldung/SpringBootJPAIntegrationTest.java +++ b/spring-boot/src/test/java/org/baeldung/SpringBootJPAIntegrationTest.java @@ -20,8 +20,8 @@ public class SpringBootJPAIntegrationTest { @Test public void givenGenericEntityRepository_whenSaveAndRetreiveEntity_thenOK() { GenericEntity genericEntity = genericEntityRepository.save(new GenericEntity("test")); - GenericEntity foundedEntity = genericEntityRepository.findOne(genericEntity.getId()); - assertNotNull(foundedEntity); - assertEquals(genericEntity.getValue(), foundedEntity.getValue()); + GenericEntity foundEntity = genericEntityRepository.findOne(genericEntity.getId()); + assertNotNull(foundEntity); + assertEquals(genericEntity.getValue(), foundEntity.getValue()); } } diff --git a/spring-boot/src/test/java/org/baeldung/SpringBootProfileIntegrationTest.java b/spring-boot/src/test/java/org/baeldung/SpringBootProfileIntegrationTest.java new file mode 100644 index 0000000000..806b38a8ce --- /dev/null +++ b/spring-boot/src/test/java/org/baeldung/SpringBootProfileIntegrationTest.java @@ -0,0 +1,30 @@ +package org.baeldung; + +import static org.junit.Assert.assertEquals; +import static org.junit.Assert.assertNotNull; + +import org.baeldung.config.H2TestProfileJPAConfig; +import org.baeldung.domain.GenericEntity; +import org.baeldung.repository.GenericEntityRepository; +import org.junit.Test; +import org.junit.runner.RunWith; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.boot.test.context.SpringBootTest; +import org.springframework.test.context.ActiveProfiles; +import org.springframework.test.context.junit4.SpringJUnit4ClassRunner; + +@RunWith(SpringJUnit4ClassRunner.class) +@SpringBootTest(classes = { Application.class, H2TestProfileJPAConfig.class }) +@ActiveProfiles("test") +public class SpringBootProfileIntegrationTest { + @Autowired + private GenericEntityRepository genericEntityRepository; + + @Test + public void givenGenericEntityRepository_whenSaveAndRetreiveEntity_thenOK() { + GenericEntity genericEntity = genericEntityRepository.save(new GenericEntity("test")); + GenericEntity foundEntity = genericEntityRepository.findOne(genericEntity.getId()); + assertNotNull(foundEntity); + assertEquals(genericEntity.getValue(), foundEntity.getValue()); + } +} diff --git a/spring-boot/src/test/java/org/baeldung/config/H2TestProfileJPAConfig.java b/spring-boot/src/test/java/org/baeldung/config/H2TestProfileJPAConfig.java new file mode 100644 index 0000000000..1d696f4a5d --- /dev/null +++ b/spring-boot/src/test/java/org/baeldung/config/H2TestProfileJPAConfig.java @@ -0,0 +1,66 @@ +package org.baeldung.config; + +import java.util.Properties; + +import javax.persistence.EntityManagerFactory; +import javax.sql.DataSource; + +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.context.annotation.Bean; +import org.springframework.context.annotation.Configuration; +import org.springframework.context.annotation.Profile; +import org.springframework.core.env.Environment; +import org.springframework.data.jpa.repository.config.EnableJpaRepositories; +import org.springframework.jdbc.datasource.DriverManagerDataSource; +import org.springframework.orm.jpa.JpaTransactionManager; +import org.springframework.orm.jpa.LocalContainerEntityManagerFactoryBean; +import org.springframework.orm.jpa.vendor.HibernateJpaVendorAdapter; +import org.springframework.transaction.annotation.EnableTransactionManagement; + +@Configuration +@EnableJpaRepositories(basePackages = { "org.baeldung.repository", "org.baeldung.boot.repository" }) +@EnableTransactionManagement +public class H2TestProfileJPAConfig { + + @Autowired + private Environment env; + + @Bean + @Profile("test") + public DataSource dataSource() { + final DriverManagerDataSource dataSource = new DriverManagerDataSource(); + dataSource.setDriverClassName("org.h2.Driver"); + dataSource.setUrl("jdbc:h2:mem:db;DB_CLOSE_DELAY=-1"); + dataSource.setUsername("sa"); + dataSource.setPassword("sa"); + + return dataSource; + } + + @Bean + public LocalContainerEntityManagerFactoryBean entityManagerFactory() { + final LocalContainerEntityManagerFactoryBean em = new LocalContainerEntityManagerFactoryBean(); + em.setDataSource(dataSource()); + em.setPackagesToScan(new String[] { "org.baeldung.domain", "org.baeldung.boot.model" }); + em.setJpaVendorAdapter(new HibernateJpaVendorAdapter()); + em.setJpaProperties(additionalProperties()); + return em; + } + + @Bean + JpaTransactionManager transactionManager(final EntityManagerFactory entityManagerFactory) { + final JpaTransactionManager transactionManager = new JpaTransactionManager(); + transactionManager.setEntityManagerFactory(entityManagerFactory); + return transactionManager; + } + + final Properties additionalProperties() { + final Properties hibernateProperties = new Properties(); + + hibernateProperties.setProperty("hibernate.hbm2ddl.auto", env.getProperty("hibernate.hbm2ddl.auto")); + hibernateProperties.setProperty("hibernate.dialect", env.getProperty("hibernate.dialect")); + hibernateProperties.setProperty("hibernate.show_sql", env.getProperty("hibernate.show_sql")); + + return hibernateProperties; + } +} diff --git a/spring-boot/src/test/resources/application.properties b/spring-boot/src/test/resources/application.properties index 0e6cb86bc5..85e4e6e66f 100644 --- a/spring-boot/src/test/resources/application.properties +++ b/spring-boot/src/test/resources/application.properties @@ -2,4 +2,18 @@ spring.mail.host=localhost spring.mail.port=8025 spring.mail.properties.mail.smtp.auth=false -security.basic.enabled=false \ No newline at end of file +security.basic.enabled=false + +# spring.datasource.x +spring.datasource.driver-class-name=org.h2.Driver +spring.datasource.url=jdbc:h2:mem:db;DB_CLOSE_DELAY=-1 +spring.datasource.username=sa +spring.datasource.password=sa + +# hibernate.X +hibernate.dialect=org.hibernate.dialect.H2Dialect +hibernate.show_sql=true +hibernate.hbm2ddl.auto=create-drop +hibernate.cache.use_second_level_cache=true +hibernate.cache.use_query_cache=true +hibernate.cache.region.factory_class=org.hibernate.cache.ehcache.EhCacheRegionFactory \ No newline at end of file diff --git a/spring-boot/src/test/resources/persistence-generic-entity.properties b/spring-boot/src/test/resources/persistence-generic-entity.properties new file mode 100644 index 0000000000..c60e7488b6 --- /dev/null +++ b/spring-boot/src/test/resources/persistence-generic-entity.properties @@ -0,0 +1,8 @@ +jdbc.driverClassName=org.h2.Driver +jdbc.url=jdbc:h2:mem:db;DB_CLOSE_DELAY=-1 +jdbc.username=sa +jdbc.password=sa + +hibernate.dialect=org.hibernate.dialect.H2Dialect +hibernate.show_sql=true +hibernate.hbm2ddl.auto=create-drop \ No newline at end of file From 6bf3659fb58dfbe19f63d854d7ece76b54fad532 Mon Sep 17 00:00:00 2001 From: "Eunice A. Obugyei" Date: Fri, 7 Apr 2017 20:37:47 +0000 Subject: [PATCH 18/56] Introduction to JAX-WS[http://jira.baeldung.com/browse/BAEL-611] (#1566) * Introduction to JAX-WS[http://jira.baeldung.com/browse/BAEL-611] * Introduction to JAX-WS[http://jira.baeldung.com/browse/BAEL-611] * Removed unnecessary comment * Added mockito-core dependency * Introduction to JAX-WS[http://jira.baeldung.com/browse/BAEL-611] Added Exception test cases * Applied baeldung formatter in Eclipse * Merged from https://github.com/eugenp/tutorials Introduction to JAX-WS[http://jira.baeldung.com/browse/BAEL-611] * Revert "Merged from https://github.com/eugenp/tutorials" This reverts commit 74447a163b9e3f244a2578315fbdb525d20cd16b. * Introduction to JAX-WS[http://jira.baeldung.com/browse/BAEL-611] * Removed mockito version from properties --- .../com/baeldung/jaxws/exception/EmployeeAlreadyExists.java | 6 +----- .../java/com/baeldung/jaxws/exception/EmployeeNotFound.java | 3 +-- jee7/src/main/java/com/baeldung/jaxws/model/Employee.java | 5 +---- 3 files changed, 3 insertions(+), 11 deletions(-) diff --git a/jee7/src/main/java/com/baeldung/jaxws/exception/EmployeeAlreadyExists.java b/jee7/src/main/java/com/baeldung/jaxws/exception/EmployeeAlreadyExists.java index 4842fbf84c..8a96f8aec0 100644 --- a/jee7/src/main/java/com/baeldung/jaxws/exception/EmployeeAlreadyExists.java +++ b/jee7/src/main/java/com/baeldung/jaxws/exception/EmployeeAlreadyExists.java @@ -1,13 +1,9 @@ package com.baeldung.jaxws.exception; -import java.io.Serializable; - import javax.xml.ws.WebFault; @WebFault -public class EmployeeAlreadyExists extends Exception implements Serializable { - - private static final long serialVersionUID = 1L; +public class EmployeeAlreadyExists extends Exception { public EmployeeAlreadyExists() { super("This employee already exists"); diff --git a/jee7/src/main/java/com/baeldung/jaxws/exception/EmployeeNotFound.java b/jee7/src/main/java/com/baeldung/jaxws/exception/EmployeeNotFound.java index 667e3e0c72..3de2ca8db6 100644 --- a/jee7/src/main/java/com/baeldung/jaxws/exception/EmployeeNotFound.java +++ b/jee7/src/main/java/com/baeldung/jaxws/exception/EmployeeNotFound.java @@ -1,10 +1,9 @@ package com.baeldung.jaxws.exception; import javax.xml.ws.WebFault; -import java.io.Serializable; @WebFault -public class EmployeeNotFound extends Exception implements Serializable { +public class EmployeeNotFound extends Exception { public EmployeeNotFound() { super("The specified employee does not exist"); diff --git a/jee7/src/main/java/com/baeldung/jaxws/model/Employee.java b/jee7/src/main/java/com/baeldung/jaxws/model/Employee.java index 5b1673c1e4..dbbdc234cf 100644 --- a/jee7/src/main/java/com/baeldung/jaxws/model/Employee.java +++ b/jee7/src/main/java/com/baeldung/jaxws/model/Employee.java @@ -1,9 +1,6 @@ package com.baeldung.jaxws.model; -import java.io.Serializable; - -public class Employee implements Serializable { - private static final long serialVersionUID = 1L; +public class Employee { private int id; private String firstName; From f5437fefaaf5dd5118a8fd6eb1dc502ead5f17f9 Mon Sep 17 00:00:00 2001 From: Doha2012 Date: Fri, 7 Apr 2017 22:42:32 +0200 Subject: [PATCH 19/56] Fix integration test (#1607) * upgrade to spring boot 1.5.2 * add full update to REST API * modify ratings controller * upgrade herold * fix integration test * fix integration test --- apache-fop/pom.xml | 4 +-- .../ApacheFOPConvertHTMLIntegrationTest.java | 25 ++++++------- .../java/ApacheFOPHeroldLiveTest.java | 34 +++++++++--------- apache-fop/src/test/resources/jars/herold.jar | Bin 847837 -> 0 bytes .../java/org/baeldung/sample/AppConfig.java | 2 +- spring-data-neo4j/pom.xml | 15 ++++---- .../MovieDatabaseNeo4jTestConfiguration.java | 11 +++--- 7 files changed, 47 insertions(+), 44 deletions(-) delete mode 100644 apache-fop/src/test/resources/jars/herold.jar diff --git a/apache-fop/pom.xml b/apache-fop/pom.xml index 6337fe002c..6075c23d21 100644 --- a/apache-fop/pom.xml +++ b/apache-fop/pom.xml @@ -101,9 +101,7 @@ org.dbdoclet herold - 6.1.0 - system - ${basedir}/src/test/resources/jars/herold.jar + 8.0.4 diff --git a/apache-fop/src/test/java/org/baeldung/java/ApacheFOPConvertHTMLIntegrationTest.java b/apache-fop/src/test/java/org/baeldung/java/ApacheFOPConvertHTMLIntegrationTest.java index 99487c8fdf..5e2da6fd1e 100644 --- a/apache-fop/src/test/java/org/baeldung/java/ApacheFOPConvertHTMLIntegrationTest.java +++ b/apache-fop/src/test/java/org/baeldung/java/ApacheFOPConvertHTMLIntegrationTest.java @@ -19,21 +19,21 @@ import javax.xml.transform.stream.StreamSource; import org.apache.fop.apps.Fop; import org.apache.fop.apps.FopFactory; import org.apache.xmlgraphics.util.MimeConstants; -import org.dbdoclet.trafo.html.docbook.DocBookTransformer; +import org.dbdoclet.trafo.html.docbook.HtmlDocBookTrafo; import org.dbdoclet.trafo.script.Script; import org.junit.Test; import org.w3c.dom.Document; import org.w3c.tidy.Tidy; public class ApacheFOPConvertHTMLIntegrationTest { - private String inputFile = "src/test/resources/input.html"; - private String style = "src/test/resources/xhtml2fo.xsl"; - private String style1 = "src/test/resources/docbook-xsl/fo/docbook.xsl"; - private String output_jtidy = "src/test/resources/output_jtidy.pdf"; - private String output_html2fo = "src/test/resources/output_html2fo.pdf"; - private String output_herold = "src/test/resources/output_herold.pdf"; - private String foFile = "src/test/resources/input.fo"; - private String xmlFile = "src/test/resources/input.xml"; + private final String inputFile = "src/test/resources/input.html"; + private final String style = "src/test/resources/xhtml2fo.xsl"; + private final String style1 = "src/test/resources/docbook-xsl/fo/docbook.xsl"; + private final String output_jtidy = "src/test/resources/output_jtidy.pdf"; + private final String output_html2fo = "src/test/resources/output_html2fo.pdf"; + private final String output_herold = "src/test/resources/output_herold.pdf"; + private final String foFile = "src/test/resources/input.fo"; + private final String xmlFile = "src/test/resources/input.xml"; @Test public void whenTransformHTMLToPDFUsingJTidy_thenCorrect() throws Exception { @@ -114,8 +114,9 @@ public class ApacheFOPConvertHTMLIntegrationTest { private void fromHTMLTOXMLUsingHerold() throws Exception { final Script script = new Script(); - final DocBookTransformer transformer = new DocBookTransformer(); - transformer.setScript(script); - transformer.convert(new FileInputStream(inputFile), new FileOutputStream(xmlFile)); + final HtmlDocBookTrafo transformer = new HtmlDocBookTrafo(); + transformer.setInputStream(new FileInputStream(inputFile)); + transformer.setOutputStream(new FileOutputStream(xmlFile)); + transformer.transform(script); } } diff --git a/apache-fop/src/test/java/org/baeldung/java/ApacheFOPHeroldLiveTest.java b/apache-fop/src/test/java/org/baeldung/java/ApacheFOPHeroldLiveTest.java index 9e71cd9c16..8496222394 100644 --- a/apache-fop/src/test/java/org/baeldung/java/ApacheFOPHeroldLiveTest.java +++ b/apache-fop/src/test/java/org/baeldung/java/ApacheFOPHeroldLiveTest.java @@ -10,6 +10,7 @@ import java.io.FileWriter; import java.io.IOException; import java.io.InputStream; import java.io.OutputStream; +import java.net.HttpURLConnection; import java.net.URL; import javax.xml.transform.Result; @@ -25,19 +26,15 @@ import org.apache.fop.apps.Fop; import org.apache.fop.apps.FopFactory; import org.apache.xmlgraphics.util.MimeConstants; import org.dbdoclet.trafo.TrafoScriptManager; -import org.dbdoclet.trafo.html.docbook.DocBookTransformer; +import org.dbdoclet.trafo.html.docbook.HtmlDocBookTrafo; import org.dbdoclet.trafo.script.Script; import org.junit.Test; import org.w3c.dom.Document; public class ApacheFOPHeroldLiveTest { - private String[] inputUrls = {// @formatter:off - "http://www.baeldung.com/2011/10/20/bootstraping-a-web-application-with-spring-3-1-and-java-based-configuration-part-1/", - "http://www.baeldung.com/2011/10/25/building-a-restful-web-service-with-spring-3-1-and-java-based-configuration-part-2/", - "http://www.baeldung.com/2011/10/31/securing-a-restful-web-service-with-spring-security-3-1-part-3/", - "http://www.baeldung.com/spring-security-basic-authentication", - "http://www.baeldung.com/spring-security-digest-authentication", - "http://www.baeldung.com/2011/11/20/basic-and-digest-authentication-for-a-restful-service-with-spring-security-3-1/", + private final String[] inputUrls = {// @formatter:off + // "http://www.baeldung.com/spring-security-basic-authentication", + "http://www.baeldung.com/spring-security-digest-authentication" //"http://www.baeldung.com/spring-httpmessageconverter-rest", //"http://www.baeldung.com/2011/11/06/restful-web-service-discoverability-part-4/", //"http://www.baeldung.com/2011/11/13/rest-service-discoverability-with-spring-part-5/", @@ -49,10 +46,10 @@ public class ApacheFOPHeroldLiveTest { //"http://www.baeldung.com/2013/01/18/testing-rest-with-multiple-mime-types/" }; // @formatter:on - private String style_file = "src/test/resources/docbook-xsl/fo/docbook.xsl"; - private String output_file = "src/test/resources/final_output.pdf"; - private String xmlInput = "src/test/resources/input.xml"; - private String xmlOutput = "src/test/resources/output.xml"; + private final String style_file = "src/test/resources/docbook-xsl/fo/docbook.xsl"; + private final String output_file = "src/test/resources/final_output.pdf"; + private final String xmlInput = "src/test/resources/input.xml"; + private final String xmlOutput = "src/test/resources/output.xml"; // tests @@ -75,10 +72,11 @@ public class ApacheFOPHeroldLiveTest { final TrafoScriptManager mgr = new TrafoScriptManager(); final File profileFile = new File("src/test/resources/default.her"); script = mgr.parseScript(profileFile); - final DocBookTransformer transformer = new DocBookTransformer(); - transformer.setScript(script); + final HtmlDocBookTrafo transformer = new HtmlDocBookTrafo(); + transformer.setInputStream(getInputStream(input)); + transformer.setOutputStream(new FileOutputStream(xmlInput, append)); - transformer.convert(getInputStream(input), new FileOutputStream(xmlInput, append)); + transformer.transform(script); } private Document fromXMLFileToFO() throws Exception { @@ -112,7 +110,9 @@ public class ApacheFOPHeroldLiveTest { private InputStream getInputStream(final String input) throws IOException { final URL url = new URL(input); - return url.openStream(); + final HttpURLConnection httpcon = (HttpURLConnection) url.openConnection(); + httpcon.addRequestProperty("User-Agent", "Mozilla/4.0"); + return httpcon.getInputStream(); } private void fixXML(final String input, final String output) throws IOException { @@ -127,7 +127,7 @@ public class ApacheFOPHeroldLiveTest { if (line.contains("info>")) { writer.write(line.replace("info>", "section>")); - } else if (!((line.startsWith(" 4)) { + } else if (!((line.startsWith(" 4))) { writer.write(line.replaceAll("xml:id=\"", "xml:id=\"" + count)); } writer.write("\n"); diff --git a/apache-fop/src/test/resources/jars/herold.jar b/apache-fop/src/test/resources/jars/herold.jar deleted file mode 100644 index ef5d052f3667bab43dc8e217b0a89b26a2952904..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 847837 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πzIffu08N1Ab@- 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%0D%$|pO8_)>{ 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 z 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Π}W~&k_weILy0; zx}Nw7Fj}xX0ePX9m_00a^9DVe>vW}uD!b#~8f#+nTT;@Fic>Rs;N*@kmJ1mR82Ssa zhG=69=Xwfqom<|CEwiAf3B#-r>pF|4@n~@obh|LM9KLqJm-c?Kzvp780 zlrYxllC4Tu*8-PlosKkaS?NT9qNsfu{;=hrGG8Qtx*EQ|??du5qdQ~ipf;O}-C7`{ zwU4E~fPWtlX&Jh@S&Oyc9t4+-cb6Bba|K&e2>i5N!m1Sj(^~{yO!c2jlz}^OZ{Q+g z6VHKP(PcVoL1Y8cE}RH*Yn-ksbLC!ovqNCjo~47{ZNj{nH&S%gs;ifakZLQNq-s+5 z&c|5U(M>9{)v@o{Pwn7mpu$Drb5v zJJh+!&491*&u=0G03T|jJdbL?-eVuV>Wl_S@r@JW;4 z>VAkv?45x?>2#X;<=nGcFboR6a9w36z|aI!8g-BiOvOY zMNGlcIjMNOU4u1+De*wWuaX9%9=YcSDNeai{ska9-NK9uGv>ap({0O)9!d9qAz>FV diff --git a/spring-all/src/main/java/org/baeldung/sample/AppConfig.java b/spring-all/src/main/java/org/baeldung/sample/AppConfig.java index ffc792d9df..8a177d2611 100644 --- a/spring-all/src/main/java/org/baeldung/sample/AppConfig.java +++ b/spring-all/src/main/java/org/baeldung/sample/AppConfig.java @@ -4,7 +4,7 @@ import org.springframework.context.annotation.ComponentScan; import org.springframework.context.annotation.Configuration; @Configuration -@ComponentScan("com.baeldung.autowire.sample") +@ComponentScan("org.baeldung.sample") public class AppConfig { } diff --git a/spring-data-neo4j/pom.xml b/spring-data-neo4j/pom.xml index 96606d597b..7df48498e5 100644 --- a/spring-data-neo4j/pom.xml +++ b/spring-data-neo4j/pom.xml @@ -10,31 +10,31 @@ org.neo4j neo4j - 3.1.0 + ${neo4j.version} org.neo4j neo4j-ogm-core - 2.1.1 + ${neo4j-ogm.version} org.neo4j neo4j-ogm-embedded-driver - 2.1.1 + ${neo4j-ogm.version} org.neo4j.driver neo4j-java-driver - 1.1.1 + ${neo4j-java-driver.version} org.springframework.data spring-data-neo4j - 4.2.0.RELEASE + ${spring-data-neo4j.version} @@ -75,7 +75,7 @@ org.neo4j neo4j-ogm-test - ${neo4j-ogm-test.version} + ${neo4j-ogm.version} test @@ -160,12 +160,13 @@ UTF-8 UTF-8 + 1.1.1 3.1.0 4.1.6.RELEASE 1.1 1.4.3.RELEASE 4.3.5.RELEASE - 2.1.1 + 2.1.1 4.12 diff --git a/spring-data-neo4j/src/main/java/com/baeldung/spring/data/neo4j/config/MovieDatabaseNeo4jTestConfiguration.java b/spring-data-neo4j/src/main/java/com/baeldung/spring/data/neo4j/config/MovieDatabaseNeo4jTestConfiguration.java index 7bb1b78a09..fda478e5be 100644 --- a/spring-data-neo4j/src/main/java/com/baeldung/spring/data/neo4j/config/MovieDatabaseNeo4jTestConfiguration.java +++ b/spring-data-neo4j/src/main/java/com/baeldung/spring/data/neo4j/config/MovieDatabaseNeo4jTestConfiguration.java @@ -5,20 +5,22 @@ import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.ComponentScan; import org.springframework.context.annotation.Configuration; import org.springframework.context.annotation.Profile; +import org.springframework.data.neo4j.config.Neo4jConfiguration; import org.springframework.data.neo4j.repository.config.EnableNeo4jRepositories; import org.springframework.transaction.annotation.EnableTransactionManagement; +@Configuration @EnableTransactionManagement @ComponentScan(basePackages = { "com.baeldung.spring.data.neo4j.services" }) -@Configuration @EnableNeo4jRepositories(basePackages = "com.baeldung.spring.data.neo4j.repostory") @Profile({ "embedded", "test" }) -public class MovieDatabaseNeo4jTestConfiguration { +public class MovieDatabaseNeo4jTestConfiguration extends Neo4jConfiguration { @Bean public org.neo4j.ogm.config.Configuration getConfiguration() { - org.neo4j.ogm.config.Configuration config = new org.neo4j.ogm.config.Configuration(); - config.driverConfiguration().setDriverClassName("org.neo4j.ogm.drivers.embedded.driver.EmbeddedDriver"); + final org.neo4j.ogm.config.Configuration config = new org.neo4j.ogm.config.Configuration(); + config.driverConfiguration() + .setDriverClassName("org.neo4j.ogm.drivers.embedded.driver.EmbeddedDriver"); return config; } @@ -26,4 +28,5 @@ public class MovieDatabaseNeo4jTestConfiguration { public SessionFactory getSessionFactory() { return new SessionFactory(getConfiguration(), "com.baeldung.spring.data.neo4j.domain"); } + } From 13a42ea2814e2505e74121600a08bf2a256a0a09 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Ra=C3=BAl=20Ju=C3=A1rez?= Date: Sat, 8 Apr 2017 04:48:47 -0500 Subject: [PATCH 20/56] Intro to JasperReports with Spring (#1608) --- spring-all/pom.xml | 7 ++ .../java/org/baeldung/jasperreports/Main.java | 39 ++++++ .../jasperreports/SimpleReportExporter.java | 115 ++++++++++++++++++ .../jasperreports/SimpleReportFiller.java | 90 ++++++++++++++ .../config/JasperRerportsSimpleConfig.java | 32 +++++ .../src/main/resources/employee-schema.sql | 27 ++++ .../main/resources/employeeEmailReport.jrxml | 17 +++ .../src/main/resources/employeeReport.jrxml | 51 ++++++++ 8 files changed, 378 insertions(+) create mode 100644 spring-all/src/main/java/org/baeldung/jasperreports/Main.java create mode 100644 spring-all/src/main/java/org/baeldung/jasperreports/SimpleReportExporter.java create mode 100644 spring-all/src/main/java/org/baeldung/jasperreports/SimpleReportFiller.java create mode 100644 spring-all/src/main/java/org/baeldung/jasperreports/config/JasperRerportsSimpleConfig.java create mode 100644 spring-all/src/main/resources/employee-schema.sql create mode 100644 spring-all/src/main/resources/employeeEmailReport.jrxml create mode 100644 spring-all/src/main/resources/employeeReport.jrxml diff --git a/spring-all/pom.xml b/spring-all/pom.xml index a3a51425e2..eb7a573c89 100644 --- a/spring-all/pom.xml +++ b/spring-all/pom.xml @@ -106,6 +106,12 @@ guava ${guava.version} + + + net.sf.jasperreports + jasperreports + ${jasperreports.version} + @@ -296,6 +302,7 @@ 3.1.3 3.4 3.6.1 + 6.4.0 diff --git a/spring-all/src/main/java/org/baeldung/jasperreports/Main.java b/spring-all/src/main/java/org/baeldung/jasperreports/Main.java new file mode 100644 index 0000000000..79aee100a6 --- /dev/null +++ b/spring-all/src/main/java/org/baeldung/jasperreports/Main.java @@ -0,0 +1,39 @@ +package org.baeldung.jasperreports; + +import java.util.HashMap; +import java.util.Map; +import org.baeldung.jasperreports.config.JasperRerportsSimpleConfig; +import org.springframework.context.annotation.AnnotationConfigApplicationContext; + +public class Main { + public static void main(String[] args) { + + AnnotationConfigApplicationContext ctx = new AnnotationConfigApplicationContext(); + ctx.register(JasperRerportsSimpleConfig.class); + ctx.refresh(); + + SimpleReportFiller simpleReportFiller = ctx.getBean(SimpleReportFiller.class); + simpleReportFiller.setReportFileName("employeeEmailReport.jrxml"); + simpleReportFiller.compileReport(); + + simpleReportFiller.setReportFileName("employeeReport.jrxml"); + simpleReportFiller.compileReport(); + + Map parameters = new HashMap<>(); + parameters.put("title", "Employee Report Example"); + parameters.put("minSalary", 15000.0); + parameters.put("condition", " LAST_NAME ='Smith' ORDER BY FIRST_NAME"); + + simpleReportFiller.setParameters(parameters); + simpleReportFiller.fillReport(); + + SimpleReportExporter simpleExporter = ctx.getBean(SimpleReportExporter.class); + simpleExporter.setJasperPrint(simpleReportFiller.getJasperPrint()); + + simpleExporter.exportToPdf("employeeReport.pdf", "baeldung"); + simpleExporter.exportToXlsx("employeeReport.xlsx", "Employee Data"); + simpleExporter.exportToCsv("employeeReport.csv"); + simpleExporter.exportToHtml("employeeReport.html"); + + } +} diff --git a/spring-all/src/main/java/org/baeldung/jasperreports/SimpleReportExporter.java b/spring-all/src/main/java/org/baeldung/jasperreports/SimpleReportExporter.java new file mode 100644 index 0000000000..1252dcda4d --- /dev/null +++ b/spring-all/src/main/java/org/baeldung/jasperreports/SimpleReportExporter.java @@ -0,0 +1,115 @@ +package org.baeldung.jasperreports; + +import java.util.logging.Level; +import java.util.logging.Logger; +import net.sf.jasperreports.engine.JRException; +import net.sf.jasperreports.engine.JasperPrint; +import net.sf.jasperreports.engine.export.HtmlExporter; +import net.sf.jasperreports.engine.export.JRCsvExporter; +import net.sf.jasperreports.engine.export.JRPdfExporter; +import net.sf.jasperreports.engine.export.ooxml.JRXlsxExporter; +import net.sf.jasperreports.export.SimpleExporterInput; +import net.sf.jasperreports.export.SimpleHtmlExporterOutput; +import net.sf.jasperreports.export.SimpleOutputStreamExporterOutput; +import net.sf.jasperreports.export.SimplePdfExporterConfiguration; +import net.sf.jasperreports.export.SimplePdfReportConfiguration; +import net.sf.jasperreports.export.SimpleWriterExporterOutput; +import net.sf.jasperreports.export.SimpleXlsxReportConfiguration; +import org.springframework.stereotype.Component; + +@Component +public class SimpleReportExporter { + + private JasperPrint jasperPrint; + + public SimpleReportExporter() { + } + + public SimpleReportExporter (JasperPrint jasperPrint){ + this.jasperPrint = jasperPrint; + } + + public JasperPrint getJasperPrint() { + return jasperPrint; + } + + public void setJasperPrint(JasperPrint jasperPrint) { + this.jasperPrint = jasperPrint; + } + + + + public void exportToPdf(String fileName, String author) { + + // print report to file + JRPdfExporter exporter = new JRPdfExporter(); + + exporter.setExporterInput(new SimpleExporterInput(jasperPrint)); + exporter.setExporterOutput(new SimpleOutputStreamExporterOutput(fileName)); + + SimplePdfReportConfiguration reportConfig = new SimplePdfReportConfiguration(); + reportConfig.setSizePageToContent(true); + reportConfig.setForceLineBreakPolicy(false); + + SimplePdfExporterConfiguration exportConfig = new SimplePdfExporterConfiguration(); + exportConfig.setMetadataAuthor(author); + exportConfig.setEncrypted(true); + exportConfig.setAllowedPermissionsHint("PRINTING"); + + exporter.setConfiguration(reportConfig); + exporter.setConfiguration(exportConfig); + try { + exporter.exportReport(); + } catch (JRException ex) { + Logger.getLogger(SimpleReportFiller.class.getName()) + .log(Level.SEVERE, null, ex); + } + } + + public void exportToXlsx(String fileName,String sheetName) { + JRXlsxExporter exporter = new JRXlsxExporter(); + + exporter.setExporterInput(new SimpleExporterInput(jasperPrint)); + exporter.setExporterOutput(new SimpleOutputStreamExporterOutput(fileName)); + + SimpleXlsxReportConfiguration reportConfig = new SimpleXlsxReportConfiguration(); + reportConfig.setSheetNames(new String[]{sheetName}); + + exporter.setConfiguration(reportConfig); + + try { + exporter.exportReport(); + } catch (JRException ex) { + Logger.getLogger(SimpleReportFiller.class.getName()) + .log(Level.SEVERE, null, ex); + } + } + + public void exportToCsv(String fileName) { + JRCsvExporter exporter = new JRCsvExporter(); + + exporter.setExporterInput(new SimpleExporterInput(jasperPrint)); + exporter.setExporterOutput(new SimpleWriterExporterOutput(fileName)); + + try { + exporter.exportReport(); + } catch (JRException ex) { + Logger.getLogger(SimpleReportFiller.class.getName()) + .log(Level.SEVERE, null, ex); + } + } + + public void exportToHtml(String fileName) { + HtmlExporter exporter = new HtmlExporter(); + + exporter.setExporterInput(new SimpleExporterInput(jasperPrint)); + exporter.setExporterOutput(new SimpleHtmlExporterOutput(fileName)); + + try { + exporter.exportReport(); + } catch (JRException ex) { + Logger.getLogger(SimpleReportFiller.class.getName()) + .log(Level.SEVERE, null, ex); + } + } +} diff --git a/spring-all/src/main/java/org/baeldung/jasperreports/SimpleReportFiller.java b/spring-all/src/main/java/org/baeldung/jasperreports/SimpleReportFiller.java new file mode 100644 index 0000000000..ae675dd280 --- /dev/null +++ b/spring-all/src/main/java/org/baeldung/jasperreports/SimpleReportFiller.java @@ -0,0 +1,90 @@ +package org.baeldung.jasperreports; + +import java.io.InputStream; +import java.sql.SQLException; +import java.util.HashMap; +import java.util.Map; +import java.util.logging.Level; +import java.util.logging.Logger; +import javax.sql.DataSource; +import net.sf.jasperreports.engine.JRException; +import net.sf.jasperreports.engine.JasperCompileManager; +import net.sf.jasperreports.engine.JasperFillManager; +import net.sf.jasperreports.engine.JasperPrint; +import net.sf.jasperreports.engine.JasperReport; +import net.sf.jasperreports.engine.util.JRSaver; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Component; + +@Component +public class SimpleReportFiller { + + private String reportFileName; + + private JasperReport jasperReport; + + private JasperPrint jasperPrint; + + @Autowired + private DataSource dataSource; + + private Map parameters; + + public SimpleReportFiller() { + parameters = new HashMap<>(); + } + + public void prepareReport() { + compileReport(); + fillReport(); + } + + public void compileReport() { + try { + InputStream reportStream = getClass().getResourceAsStream("/".concat(reportFileName)); + jasperReport = JasperCompileManager.compileReport(reportStream); + JRSaver.saveObject(jasperReport, reportFileName.replace(".jrxml", ".jasper")); + } catch (JRException ex) { + Logger.getLogger(SimpleReportFiller.class.getName()) + .log(Level.SEVERE, null, ex); + } + } + + public void fillReport() { + try { + jasperPrint = JasperFillManager.fillReport(jasperReport, parameters, dataSource.getConnection()); + } catch (JRException | SQLException ex) { + Logger.getLogger(SimpleReportFiller.class.getName()) + .log(Level.SEVERE, null, ex); + } + } + + public DataSource getDataSource() { + return dataSource; + } + + public void setDataSource(DataSource dataSource) { + this.dataSource = dataSource; + } + + public Map getParameters() { + return parameters; + } + + public void setParameters(Map parameters) { + this.parameters = parameters; + } + + public String getReportFileName() { + return reportFileName; + } + + public void setReportFileName(String reportFileName) { + this.reportFileName = reportFileName; + } + + public JasperPrint getJasperPrint() { + return jasperPrint; + } + +} diff --git a/spring-all/src/main/java/org/baeldung/jasperreports/config/JasperRerportsSimpleConfig.java b/spring-all/src/main/java/org/baeldung/jasperreports/config/JasperRerportsSimpleConfig.java new file mode 100644 index 0000000000..90fc96cdbb --- /dev/null +++ b/spring-all/src/main/java/org/baeldung/jasperreports/config/JasperRerportsSimpleConfig.java @@ -0,0 +1,32 @@ +package org.baeldung.jasperreports.config; + +import javax.sql.DataSource; +import org.baeldung.jasperreports.SimpleReportExporter; +import org.baeldung.jasperreports.SimpleReportFiller; +import org.springframework.context.annotation.Bean; +import org.springframework.context.annotation.Configuration; +import org.springframework.jdbc.datasource.embedded.EmbeddedDatabaseBuilder; +import org.springframework.jdbc.datasource.embedded.EmbeddedDatabaseType; + +@Configuration +public class JasperRerportsSimpleConfig { + + @Bean + public DataSource dataSource() { + return new EmbeddedDatabaseBuilder() + .setType(EmbeddedDatabaseType.HSQL) + .addScript("classpath:employee-schema.sql") + .build(); + } + + @Bean + public SimpleReportFiller reportFiller() { + return new SimpleReportFiller(); + } + + @Bean + public SimpleReportExporter reportExporter() { + return new SimpleReportExporter(); + } + +} diff --git a/spring-all/src/main/resources/employee-schema.sql b/spring-all/src/main/resources/employee-schema.sql new file mode 100644 index 0000000000..011ff162e1 --- /dev/null +++ b/spring-all/src/main/resources/employee-schema.sql @@ -0,0 +1,27 @@ +CREATE TABLE EMPLOYEE( + ID INT NOT NULL PRIMARY KEY, + FIRST_NAME VARCHAR(255), + LAST_NAME VARCHAR(255), + SALARY DOUBLE, +); + +CREATE TABLE EMAIL( + ID INT NOT NULL PRIMARY KEY, + ID_EMPLOYEE VARCHAR(255), + ADDRESS VARCHAR(255) +); + +INSERT INTO EMPLOYEE VALUES (1, 'John', 'Doe', 10000.10); +INSERT INTO EMPLOYEE VALUES (2, 'Kevin', 'Smith', 20000.20); +INSERT INTO EMPLOYEE VALUES (3, 'Kim', 'Smith', 30000.30); +INSERT INTO EMPLOYEE VALUES (4, 'Stephen', 'Torvalds', 40000.40); +INSERT INTO EMPLOYEE VALUES (5, 'Christian', 'Reynolds', 50000.50); + +INSERT INTO EMAIL VALUES (1, 1, 'john@baeldung.com'); +INSERT INTO EMAIL VALUES (2, 1, 'john@gmail.com'); +INSERT INTO EMAIL VALUES (3, 2, 'kevin@baeldung.com'); +INSERT INTO EMAIL VALUES (4, 3, 'kim@baeldung.com'); +INSERT INTO EMAIL VALUES (5, 3, 'kim@gmail.com'); +INSERT INTO EMAIL VALUES (6, 3, 'kim@outlook.com'); +INSERT INTO EMAIL VALUES (7, 4, 'stephen@baeldung.com'); +INSERT INTO EMAIL VALUES (8, 5, 'christian@gmail.com'); diff --git a/spring-all/src/main/resources/employeeEmailReport.jrxml b/spring-all/src/main/resources/employeeEmailReport.jrxml new file mode 100644 index 0000000000..ad4aaaac90 --- /dev/null +++ b/spring-all/src/main/resources/employeeEmailReport.jrxml @@ -0,0 +1,17 @@ + + + + + + + + + + + + + + + + + diff --git a/spring-all/src/main/resources/employeeReport.jrxml b/spring-all/src/main/resources/employeeReport.jrxml new file mode 100644 index 0000000000..3d2be226fb --- /dev/null +++ b/spring-all/src/main/resources/employeeReport.jrxml @@ -0,0 +1,51 @@ + + + + + + + + + = $P{minSalary} AND $P!{condition}]]> + + + + + + + <band height="20" splitType="Stretch"> + <textField> + <reportElement x="238" y="0" width="100" height="20"/> + <textElement/> + <textFieldExpression class="java.lang.String"><![CDATA[$P{title}]]></textFieldExpression> + </textField> + </band> + + + + + + + + + + + + + + + + + + + + + + + + + + + + + From 60c2edaaeb78110ab664e3929c8738b2481aecaf Mon Sep 17 00:00:00 2001 From: Grzegorz Piwowarek Date: Sat, 8 Apr 2017 13:49:01 +0200 Subject: [PATCH 21/56] StringTokenizerTest refactor (#1611) * TokenizerRefactor * TokenizerRefactor * TokenizerRefactor --- .../{Application.java => MyTokenizer.java} | 14 +++--- .../stringtokenizer/ApplicationTest.java | 47 ------------------- .../stringtokenizer/TokenizerTest.java | 29 ++++++++++++ 3 files changed, 36 insertions(+), 54 deletions(-) rename core-java/src/main/java/com/baeldung/stringtokenizer/{Application.java => MyTokenizer.java} (83%) delete mode 100644 core-java/src/test/java/com/baeldung/stringtokenizer/ApplicationTest.java create mode 100644 core-java/src/test/java/com/baeldung/stringtokenizer/TokenizerTest.java diff --git a/core-java/src/main/java/com/baeldung/stringtokenizer/Application.java b/core-java/src/main/java/com/baeldung/stringtokenizer/MyTokenizer.java similarity index 83% rename from core-java/src/main/java/com/baeldung/stringtokenizer/Application.java rename to core-java/src/main/java/com/baeldung/stringtokenizer/MyTokenizer.java index 4560e40697..130218acc2 100644 --- a/core-java/src/main/java/com/baeldung/stringtokenizer/Application.java +++ b/core-java/src/main/java/com/baeldung/stringtokenizer/MyTokenizer.java @@ -9,10 +9,10 @@ import java.util.List; import java.util.StringTokenizer; import java.util.stream.Collectors; -public class Application { +public class MyTokenizer { public List getTokens(String str) { - List tokens = new ArrayList(); + List tokens = new ArrayList<>(); // StringTokenizer tokenizer = new StringTokenizer( str ); StringTokenizer tokenizer = new StringTokenizer(str, ","); // StringTokenizer tokenizer = new StringTokenizer( str , "," , true ); @@ -25,18 +25,18 @@ public class Application { } public List getTokensWithCollection(String str) { - StringTokenizer tokenizer = new StringTokenizer(str, ","); - - return Collections.list(tokenizer).stream() + return Collections + .list(new StringTokenizer(str, ",")) + .stream() .map(token -> (String) token) .collect(Collectors.toList()); } public List getTokensFromFile(String path, String delim) { List tokens = new ArrayList<>(); - String currLine = ""; + String currLine; StringTokenizer tokenizer; - try (BufferedReader br = new BufferedReader(new InputStreamReader(Application.class.getResourceAsStream("/" + path)))) { + try (BufferedReader br = new BufferedReader(new InputStreamReader(MyTokenizer.class.getResourceAsStream("/" + path)))) { while ((currLine = br.readLine()) != null) { tokenizer = new StringTokenizer(currLine, delim); while (tokenizer.hasMoreElements()) { diff --git a/core-java/src/test/java/com/baeldung/stringtokenizer/ApplicationTest.java b/core-java/src/test/java/com/baeldung/stringtokenizer/ApplicationTest.java deleted file mode 100644 index 5d475d2fbb..0000000000 --- a/core-java/src/test/java/com/baeldung/stringtokenizer/ApplicationTest.java +++ /dev/null @@ -1,47 +0,0 @@ -package com.baeldung.stringtokenizer; - -import java.util.ArrayList; -import java.util.List; - -import org.junit.Before; -import org.junit.Test; - -import static org.junit.Assert.assertEquals; - -public class ApplicationTest { - - Application application = new Application(); - List expectedTokensForString = new ArrayList(); - List expectedTokensForFile = new ArrayList(); - - @Before - public void init() { - expectedTokensForString.add("Welcome"); - expectedTokensForString.add("to"); - expectedTokensForString.add("baeldung.com"); - - expectedTokensForFile.add("1"); - expectedTokensForFile.add("IND"); - expectedTokensForFile.add("India"); - expectedTokensForFile.add("2"); - expectedTokensForFile.add("MY"); - expectedTokensForFile.add("Malaysia"); - expectedTokensForFile.add("3"); - expectedTokensForFile.add("AU"); - expectedTokensForFile.add("Australia"); - } - - @Test - public void givenString_thenGetListOfString() { - String str = "Welcome,to,baeldung.com"; - List actualTokens = application.getTokens(str); - assertEquals(expectedTokensForString, actualTokens); - } - - @Test - public void givenFile_thenGetListOfString() { - List actualTokens = application.getTokensFromFile("data.csv", "|"); - assertEquals(expectedTokensForFile, actualTokens); - } - -} diff --git a/core-java/src/test/java/com/baeldung/stringtokenizer/TokenizerTest.java b/core-java/src/test/java/com/baeldung/stringtokenizer/TokenizerTest.java new file mode 100644 index 0000000000..eed42a2f96 --- /dev/null +++ b/core-java/src/test/java/com/baeldung/stringtokenizer/TokenizerTest.java @@ -0,0 +1,29 @@ +package com.baeldung.stringtokenizer; + +import org.junit.Test; + +import java.util.Arrays; +import java.util.List; + +import static org.junit.Assert.assertEquals; + +public class TokenizerTest { + + private final MyTokenizer myTokenizer = new MyTokenizer(); + private final List expectedTokensForString = Arrays.asList("Welcome", "to", "baeldung.com"); + private final List expectedTokensForFile = Arrays.asList("1", "IND", "India", "2", "MY", "Malaysia", "3", "AU", "Australia"); + + @Test + public void givenString_thenGetListOfString() { + String str = "Welcome,to,baeldung.com"; + List actualTokens = myTokenizer.getTokens(str); + assertEquals(expectedTokensForString, actualTokens); + } + + @Test + public void givenFile_thenGetListOfString() { + List actualTokens = myTokenizer.getTokensFromFile("data.csv", "|"); + assertEquals(expectedTokensForFile, actualTokens); + } + +} From c0509dd1ee1f2b7b09b1ac5756f8324e520ac51e Mon Sep 17 00:00:00 2001 From: Doha2012 Date: Sat, 8 Apr 2017 15:47:42 +0200 Subject: [PATCH 22/56] minor fix (#1612) * upgrade to spring boot 1.5.2 * add full update to REST API * modify ratings controller * upgrade herold * fix integration test * fix integration test * minor fix --- spring-data-solr/pom.xml | 34 --------------------------- spring-security-cache-control/pom.xml | 3 +++ 2 files changed, 3 insertions(+), 34 deletions(-) diff --git a/spring-data-solr/pom.xml b/spring-data-solr/pom.xml index e43b3ff774..fd6c442abf 100644 --- a/spring-data-solr/pom.xml +++ b/spring-data-solr/pom.xml @@ -72,38 +72,4 @@ - - - integration - - - - org.apache.maven.plugins - maven-surefire-plugin - - - integration-test - - test - - - - **/*LiveTest.java - - - **/*IntegrationTest.java - - - - - - - json - - - - - - - \ No newline at end of file diff --git a/spring-security-cache-control/pom.xml b/spring-security-cache-control/pom.xml index f25e85012e..b24b9db484 100644 --- a/spring-security-cache-control/pom.xml +++ b/spring-security-cache-control/pom.xml @@ -81,6 +81,9 @@ + UTF-8 + 1.8 + 3.1.0 2.9.0 From 1e8bcdccb240992896852487658865bad5ebdcd4 Mon Sep 17 00:00:00 2001 From: MMonik Date: Sun, 9 Apr 2017 10:43:50 +0300 Subject: [PATCH 23/56] Update README.md (#1606) --- spring-security-rest-full/README.md | 1 + 1 file changed, 1 insertion(+) diff --git a/spring-security-rest-full/README.md b/spring-security-rest-full/README.md index faeeac1ec2..e7f543a407 100644 --- a/spring-security-rest-full/README.md +++ b/spring-security-rest-full/README.md @@ -29,6 +29,7 @@ The "Learn Spring Security" Classes: http://github.learnspringsecurity.com - [Changing Spring Model Parameters with Handler Interceptor](http://www.baeldung.com/spring-model-parameters-with-handler-interceptor) - [Introduction to Spring MVC HandlerInterceptor](http://www.baeldung.com/spring-mvc-handlerinterceptor) - [Using a Custom Spring MVC’s Handler Interceptor to Manage Sessions](http://www.baeldung.com/spring-mvc-custom-handler-interceptor) +- [Bootstrap a Web Application with Spring 4](http://www.baeldung.com/bootstraping-a-web-application-with-spring-and-java-based-configuration) ### Build the Project ``` From 60332bb563609667c60cb77dd333e32aadb6b45b Mon Sep 17 00:00:00 2001 From: Tian Baoqiang Date: Sun, 9 Apr 2017 03:38:20 -0500 Subject: [PATCH 24/56] BAEL-451 (#1610) * BAEL-451 rest api test with JBehave * reformat pom * exclude live test from normal mvn test --- rest-testing/pom.xml | 318 +++++++++--------- .../baeldung/rest/jbehave/AbstractStory.java | 45 +++ .../rest/jbehave/GithubUserNotFoundSteps.java | 59 ++++ .../GithubUserNotFoundStoryLiveTest.java | 18 + .../GithubUserResponseMediaTypeSteps.java | 40 +++ ...hubUserResponseMediaTypeStoryLiveTest.java | 18 + .../GithubUserResponsePayloadSteps.java | 40 +++ ...ithubUserResponsePayloadStoryLiveTest.java | 18 + .../baeldung/rest/jbehave/IncreaseSteps.java | 34 ++ .../rest/jbehave/IncreaseStoryLiveTest.java | 38 +++ .../resources/github_user_not_found.story | 19 ++ .../github_user_response_mediatype.story | 13 + .../github_user_response_payload.story | 12 + .../src/test/resources/increase.story | 15 + 14 files changed, 532 insertions(+), 155 deletions(-) create mode 100644 rest-testing/src/test/java/com/baeldung/rest/jbehave/AbstractStory.java create mode 100644 rest-testing/src/test/java/com/baeldung/rest/jbehave/GithubUserNotFoundSteps.java create mode 100644 rest-testing/src/test/java/com/baeldung/rest/jbehave/GithubUserNotFoundStoryLiveTest.java create mode 100644 rest-testing/src/test/java/com/baeldung/rest/jbehave/GithubUserResponseMediaTypeSteps.java create mode 100644 rest-testing/src/test/java/com/baeldung/rest/jbehave/GithubUserResponseMediaTypeStoryLiveTest.java create mode 100644 rest-testing/src/test/java/com/baeldung/rest/jbehave/GithubUserResponsePayloadSteps.java create mode 100644 rest-testing/src/test/java/com/baeldung/rest/jbehave/GithubUserResponsePayloadStoryLiveTest.java create mode 100644 rest-testing/src/test/java/com/baeldung/rest/jbehave/IncreaseSteps.java create mode 100644 rest-testing/src/test/java/com/baeldung/rest/jbehave/IncreaseStoryLiveTest.java create mode 100644 rest-testing/src/test/resources/github_user_not_found.story create mode 100644 rest-testing/src/test/resources/github_user_response_mediatype.story create mode 100644 rest-testing/src/test/resources/github_user_response_payload.story create mode 100644 rest-testing/src/test/resources/increase.story diff --git a/rest-testing/pom.xml b/rest-testing/pom.xml index f7f94a49a6..746752133c 100644 --- a/rest-testing/pom.xml +++ b/rest-testing/pom.xml @@ -1,164 +1,171 @@ - 4.0.0 - com.baeldung - rest-testing - 0.1-SNAPSHOT + xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"> + 4.0.0 + com.baeldung + rest-testing + 0.1-SNAPSHOT - rest-testing + rest-testing - + - + - - com.google.guava - guava - ${guava.version} - + + com.google.guava + guava + ${guava.version} + - - commons-io - commons-io - ${commons-io.version} - + + commons-io + commons-io + ${commons-io.version} + - - org.apache.commons - commons-lang3 - ${commons-lang3.version} - + + org.apache.commons + commons-lang3 + ${commons-lang3.version} + - + - - org.apache.httpcomponents - httpclient - ${httpclient.version} - - - org.apache.httpcomponents - httpcore - ${httpcore.version} - + + org.apache.httpcomponents + httpclient + ${httpclient.version} + + + org.apache.httpcomponents + httpcore + ${httpcore.version} + - + - - com.fasterxml.jackson.core - jackson-databind - ${jackson.version} - + + com.fasterxml.jackson.core + jackson-databind + ${jackson.version} + - + - - org.slf4j - slf4j-api - ${org.slf4j.version} - - - ch.qos.logback - logback-classic - ${logback.version} - - - - org.slf4j - jcl-over-slf4j - ${org.slf4j.version} - runtime - - - org.slf4j - log4j-over-slf4j - ${org.slf4j.version} - + + org.slf4j + slf4j-api + ${org.slf4j.version} + + + ch.qos.logback + logback-classic + ${logback.version} + + + + org.slf4j + jcl-over-slf4j + ${org.slf4j.version} + runtime + + + org.slf4j + log4j-over-slf4j + ${org.slf4j.version} + - + - - junit - junit - ${junit.version} - test - + + junit + junit + ${junit.version} + test + - - org.hamcrest - hamcrest-core - ${org.hamcrest.version} - test - - - org.hamcrest - hamcrest-library - ${org.hamcrest.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 - - - com.github.tomakehurst - wiremock - ${wiremock.version} - test - + + org.mockito + mockito-core + ${mockito.version} + test + + + com.github.tomakehurst + wiremock + ${wiremock.version} + test + - - info.cukes - cucumber-java - ${cucumber.version} - test - - - info.cukes - cucumber-junit - ${cucumber.version} - - + + info.cukes + cucumber-java + ${cucumber.version} + test + + + info.cukes + cucumber-junit + ${cucumber.version} + - - rest-testing - - - src/main/resources - true - - + + org.jbehave + jbehave-core + ${jbehave.version} + test + + - + + rest-testing + + + src/main/resources + true + + - - org.apache.maven.plugins - maven-compiler-plugin - ${maven-compiler-plugin.version} - - 1.8 - 1.8 - - + - - org.apache.maven.plugins - maven-surefire-plugin - ${maven-surefire-plugin.version} - + + org.apache.maven.plugins + maven-compiler-plugin + ${maven-compiler-plugin.version} + + 1.8 + 1.8 + + + + + org.apache.maven.plugins + maven-surefire-plugin + ${maven-surefire-plugin.version} + **/*IntegrationTest.java **/*LiveTest.java - + - + - + @@ -177,10 +184,10 @@ **/*UnitTest.java + **/*LiveTest.java **/*IntegrationTest.java - **/*LiveTest.java @@ -195,37 +202,38 @@ - - - - 2.8.5 - - 1.7.21 - 1.1.7 + + + 2.8.5 - - 19.0 - 3.5 - 2.5 + + 1.7.21 + 1.1.7 - - 1.3 - 4.12 - 1.10.19 + + 19.0 + 3.5 + 2.5 + + + 1.3 + 4.12 + 1.10.19 2.9.0 1.2.5 2.4.1 - 4.4.5 - 4.5.2 + 4.4.5 + 4.5.2 + 4.1 - - 3.6.0 - 2.6 - 2.19.1 + + 3.6.0 + 2.6 + 2.19.1 - + \ No newline at end of file diff --git a/rest-testing/src/test/java/com/baeldung/rest/jbehave/AbstractStory.java b/rest-testing/src/test/java/com/baeldung/rest/jbehave/AbstractStory.java new file mode 100644 index 0000000000..ce3c98d07e --- /dev/null +++ b/rest-testing/src/test/java/com/baeldung/rest/jbehave/AbstractStory.java @@ -0,0 +1,45 @@ +package com.baeldung.rest.jbehave; + +import org.jbehave.core.configuration.Configuration; +import org.jbehave.core.configuration.MostUsefulConfiguration; +import org.jbehave.core.io.LoadFromClasspath; +import org.jbehave.core.junit.JUnitStories; +import org.jbehave.core.reporters.StoryReporterBuilder; +import org.jbehave.core.steps.InjectableStepsFactory; +import org.jbehave.core.steps.InstanceStepsFactory; + +import java.util.Arrays; +import java.util.List; + +import static org.jbehave.core.io.CodeLocations.codeLocationFromClass; +import static org.jbehave.core.reporters.Format.CONSOLE; + +/** + * @author aiet + */ +public abstract class AbstractStory extends JUnitStories { + + abstract String storyName(); + + @Override + public Configuration configuration() { + return new MostUsefulConfiguration() + .useStoryLoader(new LoadFromClasspath(this.getClass())) + .useStoryReporterBuilder(new StoryReporterBuilder() + .withCodeLocation(codeLocationFromClass(this.getClass())) + .withFormats(CONSOLE)); + } + + abstract Object stepInstance(); + + @Override + public InjectableStepsFactory stepsFactory() { + return new InstanceStepsFactory(configuration(), stepInstance()); + } + + @Override + protected List storyPaths() { + return Arrays.asList(storyName()); + } + +} diff --git a/rest-testing/src/test/java/com/baeldung/rest/jbehave/GithubUserNotFoundSteps.java b/rest-testing/src/test/java/com/baeldung/rest/jbehave/GithubUserNotFoundSteps.java new file mode 100644 index 0000000000..54d3b0b155 --- /dev/null +++ b/rest-testing/src/test/java/com/baeldung/rest/jbehave/GithubUserNotFoundSteps.java @@ -0,0 +1,59 @@ +package com.baeldung.rest.jbehave; + +import org.apache.http.HttpResponse; +import org.apache.http.client.methods.HttpGet; +import org.apache.http.client.methods.HttpUriRequest; +import org.apache.http.impl.client.HttpClientBuilder; +import org.jbehave.core.annotations.Given; +import org.jbehave.core.annotations.Then; +import org.jbehave.core.annotations.When; + +import java.io.IOException; + +import static org.apache.commons.lang3.RandomStringUtils.randomAlphabetic; +import static org.apache.http.HttpStatus.SC_NOT_FOUND; +import static org.junit.Assert.assertTrue; + +public class GithubUserNotFoundSteps { + + private String api; + private String nonExistentUser; + private int githubResponseCode; + + @Given("github user profile api") + public void givenGithubUserProfileApi() { + api = "https://api.github.com/users/%s"; + } + + @Given("a random non-existent username") + public void givenANonexistentUsername() { + nonExistentUser = randomAlphabetic(8); + } + + @When("I look for the random user via the api") + public void whenILookForTheUserViaTheApi() throws IOException { + githubResponseCode = getGithubUserProfile(api, nonExistentUser) + .getStatusLine() + .getStatusCode(); + } + + @When("I look for $user via the api") + public void whenILookForSomeNonExistentUserViaTheApi(String user) throws IOException { + githubResponseCode = getGithubUserProfile(api, user) + .getStatusLine() + .getStatusCode(); + } + + static HttpResponse getGithubUserProfile(String api, String username) throws IOException { + HttpUriRequest request = new HttpGet(String.format(api, username)); + return HttpClientBuilder + .create() + .build() + .execute(request); + } + + @Then("github respond: 404 not found") + public void thenGithubRespond404NotFound() { + assertTrue(SC_NOT_FOUND == githubResponseCode); + } +} diff --git a/rest-testing/src/test/java/com/baeldung/rest/jbehave/GithubUserNotFoundStoryLiveTest.java b/rest-testing/src/test/java/com/baeldung/rest/jbehave/GithubUserNotFoundStoryLiveTest.java new file mode 100644 index 0000000000..f681fb085a --- /dev/null +++ b/rest-testing/src/test/java/com/baeldung/rest/jbehave/GithubUserNotFoundStoryLiveTest.java @@ -0,0 +1,18 @@ +package com.baeldung.rest.jbehave; + +/** + * @author aiet + */ +public class GithubUserNotFoundStoryLiveTest extends AbstractStory { + + @Override + String storyName() { + return "github_user_not_found.story"; + } + + @Override + Object stepInstance() { + return new GithubUserNotFoundSteps(); + } + +} diff --git a/rest-testing/src/test/java/com/baeldung/rest/jbehave/GithubUserResponseMediaTypeSteps.java b/rest-testing/src/test/java/com/baeldung/rest/jbehave/GithubUserResponseMediaTypeSteps.java new file mode 100644 index 0000000000..a1a9aceee5 --- /dev/null +++ b/rest-testing/src/test/java/com/baeldung/rest/jbehave/GithubUserResponseMediaTypeSteps.java @@ -0,0 +1,40 @@ +package com.baeldung.rest.jbehave; + +import org.apache.http.entity.ContentType; +import org.jbehave.core.annotations.Given; +import org.jbehave.core.annotations.Then; +import org.jbehave.core.annotations.When; + +import java.io.IOException; + +import static com.baeldung.rest.jbehave.GithubUserNotFoundSteps.getGithubUserProfile; +import static org.junit.Assert.assertEquals; + +public class GithubUserResponseMediaTypeSteps { + + private String api; + private String validUser; + private String mediaType; + + @Given("github user profile api") + public void givenGithubUserProfileApi() { + api = "https://api.github.com/users/%s"; + } + + @Given("a valid username") + public void givenAValidUsername() { + validUser = "eugenp"; + } + + @When("I look for the user via the api") + public void whenILookForTheUserViaTheApi() throws IOException { + mediaType = ContentType + .getOrDefault(getGithubUserProfile(api, validUser).getEntity()) + .getMimeType(); + } + + @Then("github respond data of type json") + public void thenGithubRespondDataOfTypeJson() { + assertEquals("application/json", mediaType); + } +} diff --git a/rest-testing/src/test/java/com/baeldung/rest/jbehave/GithubUserResponseMediaTypeStoryLiveTest.java b/rest-testing/src/test/java/com/baeldung/rest/jbehave/GithubUserResponseMediaTypeStoryLiveTest.java new file mode 100644 index 0000000000..c14f7aad75 --- /dev/null +++ b/rest-testing/src/test/java/com/baeldung/rest/jbehave/GithubUserResponseMediaTypeStoryLiveTest.java @@ -0,0 +1,18 @@ +package com.baeldung.rest.jbehave; + +/** + * @author aiet + */ +public class GithubUserResponseMediaTypeStoryLiveTest extends AbstractStory { + + @Override + String storyName() { + return "github_user_response_mediatype.story"; + } + + @Override + Object stepInstance() { + return new GithubUserResponseMediaTypeSteps(); + } + +} diff --git a/rest-testing/src/test/java/com/baeldung/rest/jbehave/GithubUserResponsePayloadSteps.java b/rest-testing/src/test/java/com/baeldung/rest/jbehave/GithubUserResponsePayloadSteps.java new file mode 100644 index 0000000000..d9401a5d00 --- /dev/null +++ b/rest-testing/src/test/java/com/baeldung/rest/jbehave/GithubUserResponsePayloadSteps.java @@ -0,0 +1,40 @@ +package com.baeldung.rest.jbehave; + +import org.apache.http.HttpResponse; +import org.apache.http.client.methods.HttpGet; +import org.apache.http.client.methods.HttpUriRequest; +import org.apache.http.impl.client.HttpClientBuilder; +import org.baeldung.rest.GitHubUser; +import org.baeldung.rest.RetrieveUtil; +import org.hamcrest.Matchers; +import org.jbehave.core.annotations.Given; +import org.jbehave.core.annotations.Then; +import org.jbehave.core.annotations.When; + +import java.io.IOException; + +import static com.baeldung.rest.jbehave.GithubUserNotFoundSteps.getGithubUserProfile; +import static org.hamcrest.MatcherAssert.assertThat; + +public class GithubUserResponsePayloadSteps { + + private String api; + private GitHubUser resource; + + @Given("github user profile api") + public void givenGithubUserProfileApi() { + api = "https://api.github.com/users/%s"; + } + + @When("I look for $user via the api") + public void whenILookForEugenpViaTheApi(String user) throws IOException { + HttpResponse httpResponse = getGithubUserProfile(api, user); + resource = RetrieveUtil.retrieveResourceFromResponse(httpResponse, GitHubUser.class); + } + + @Then("github's response contains a 'login' payload same as $username") + public void thenGithubsResponseContainsAloginPayloadSameAsEugenp(String username) { + assertThat(username, Matchers.is(resource.getLogin())); + } + +} diff --git a/rest-testing/src/test/java/com/baeldung/rest/jbehave/GithubUserResponsePayloadStoryLiveTest.java b/rest-testing/src/test/java/com/baeldung/rest/jbehave/GithubUserResponsePayloadStoryLiveTest.java new file mode 100644 index 0000000000..cd7974869a --- /dev/null +++ b/rest-testing/src/test/java/com/baeldung/rest/jbehave/GithubUserResponsePayloadStoryLiveTest.java @@ -0,0 +1,18 @@ +package com.baeldung.rest.jbehave; + +/** + * @author aiet + */ +public class GithubUserResponsePayloadStoryLiveTest extends AbstractStory { + + @Override + String storyName() { + return "github_user_response_payload.story"; + } + + @Override + Object stepInstance() { + return new GithubUserResponsePayloadSteps(); + } + +} diff --git a/rest-testing/src/test/java/com/baeldung/rest/jbehave/IncreaseSteps.java b/rest-testing/src/test/java/com/baeldung/rest/jbehave/IncreaseSteps.java new file mode 100644 index 0000000000..3bc6fb2aa2 --- /dev/null +++ b/rest-testing/src/test/java/com/baeldung/rest/jbehave/IncreaseSteps.java @@ -0,0 +1,34 @@ +package com.baeldung.rest.jbehave; + +import org.jbehave.core.annotations.Given; +import org.jbehave.core.annotations.Then; +import org.jbehave.core.annotations.When; + +import java.util.Random; + +import static org.junit.Assert.assertTrue; + +public class IncreaseSteps { + private int counter; + private int previousValue; + + @Given("a counter") + public void aCounter() { + } + + @Given("the counter has any integral value") + public void counterHasAnyIntegralValue() { + counter = new Random().nextInt(); + previousValue = counter; + } + + @When("the user increases the counter") + public void increasesTheCounter() { + counter++; + } + + @Then("the value of the counter must be 1 greater than previous value") + public void theValueOfTheCounterMustBe1Greater() { + assertTrue(1 == counter - previousValue); + } +} diff --git a/rest-testing/src/test/java/com/baeldung/rest/jbehave/IncreaseStoryLiveTest.java b/rest-testing/src/test/java/com/baeldung/rest/jbehave/IncreaseStoryLiveTest.java new file mode 100644 index 0000000000..9033dbfbdc --- /dev/null +++ b/rest-testing/src/test/java/com/baeldung/rest/jbehave/IncreaseStoryLiveTest.java @@ -0,0 +1,38 @@ +package com.baeldung.rest.jbehave; + +import org.jbehave.core.configuration.Configuration; +import org.jbehave.core.configuration.MostUsefulConfiguration; +import org.jbehave.core.io.LoadFromClasspath; +import org.jbehave.core.junit.JUnitStories; +import org.jbehave.core.reporters.StoryReporterBuilder; +import org.jbehave.core.steps.InjectableStepsFactory; +import org.jbehave.core.steps.InstanceStepsFactory; + +import java.util.Arrays; +import java.util.List; + +import static org.jbehave.core.io.CodeLocations.codeLocationFromClass; +import static org.jbehave.core.reporters.Format.CONSOLE; + +public class IncreaseStoryLiveTest extends JUnitStories { + + @Override + public Configuration configuration() { + return new MostUsefulConfiguration() + .useStoryLoader(new LoadFromClasspath(this.getClass())) + .useStoryReporterBuilder(new StoryReporterBuilder() + .withCodeLocation(codeLocationFromClass(this.getClass())) + .withFormats(CONSOLE)); + } + + @Override + public InjectableStepsFactory stepsFactory() { + return new InstanceStepsFactory(configuration(), new IncreaseSteps()); + } + + @Override + protected List storyPaths() { + return Arrays.asList("increase.story"); + } + +} diff --git a/rest-testing/src/test/resources/github_user_not_found.story b/rest-testing/src/test/resources/github_user_not_found.story new file mode 100644 index 0000000000..1ab6920eee --- /dev/null +++ b/rest-testing/src/test/resources/github_user_not_found.story @@ -0,0 +1,19 @@ +Meta: + +Narrative: +As a user +I want to look up a non-existent user's profile on github +So that I can be sure that the username can not be found on github + +Scenario: when a user checks a non-existent user on github, github would respond 'not found' + +Given github user profile api +And a random non-existent username +When I look for the random user via the api +Then github respond: 404 not found + +When I look for eugenp1 via the api +Then github respond: 404 not found + +When I look for eugenp2 via the api +Then github respond: 404 not found diff --git a/rest-testing/src/test/resources/github_user_response_mediatype.story b/rest-testing/src/test/resources/github_user_response_mediatype.story new file mode 100644 index 0000000000..7c4a0b9e2d --- /dev/null +++ b/rest-testing/src/test/resources/github_user_response_mediatype.story @@ -0,0 +1,13 @@ +Meta: + +Narrative: +As a user +I want to look up a valid user's profile on github +So that I can know that github responds data of type json + +Scenario: when a user checks a valid user's profile on github, github would respond json data + +Given github user profile api +And a valid username +When I look for the user via the api +Then github respond data of type json \ No newline at end of file diff --git a/rest-testing/src/test/resources/github_user_response_payload.story b/rest-testing/src/test/resources/github_user_response_payload.story new file mode 100644 index 0000000000..788b43eba6 --- /dev/null +++ b/rest-testing/src/test/resources/github_user_response_payload.story @@ -0,0 +1,12 @@ +Meta: + +Narrative: +As a user +I want to look up a valid user's profile on github +So that I can know the login payload should be the same as username + +Scenario: when a user checks a valid user's profile on github, github's response json should include a login payload with the same username + +Given github user profile api +When I look for eugenp via the api +Then github's response contains a 'login' payload same as eugenp diff --git a/rest-testing/src/test/resources/increase.story b/rest-testing/src/test/resources/increase.story new file mode 100644 index 0000000000..fef91298bc --- /dev/null +++ b/rest-testing/src/test/resources/increase.story @@ -0,0 +1,15 @@ +JBehave Story - An increase test + +Meta: + +Narrative: +As a user +I want to increase a counter +So that I can have the counter's value increase by 1 + +Scenario: when a user increases a counter, its value is increased by 1 + +Given a counter +And the counter has any integral value +When the user increases the counter +Then the value of the counter must be 1 greater than previous value \ No newline at end of file From a5de78c2b21737448ee7aed4f7a4449e2cbc60a5 Mon Sep 17 00:00:00 2001 From: Tomasz Lelek Date: Sun, 9 Apr 2017 12:23:57 +0200 Subject: [PATCH 25/56] Bael 766 flink (#1533) * BAEL-756 code for flink article * reorder * simpler wordCount example * BAEL-766 changes according to PR * BAEL-766 change datasource to dataset * BAEL-766 add sorting example * BAEL-766 add simple streaming example * one missing change to dataSet * windowing example * add window example * add dependency explicitly * add plugin * add surefire plugin, change neme of the test to *IntegrationTest --- libraries/pom.xml | 42 ++++ .../java/com/baeldung/flink/LineSplitter.java | 20 ++ .../java/com/baeldung/flink/WordCount.java | 20 ++ .../flink/WordCountIntegrationTest.java | 196 ++++++++++++++++++ 4 files changed, 278 insertions(+) create mode 100644 libraries/src/main/java/com/baeldung/flink/LineSplitter.java create mode 100644 libraries/src/main/java/com/baeldung/flink/WordCount.java create mode 100644 libraries/src/test/java/com/baeldung/flink/WordCountIntegrationTest.java diff --git a/libraries/pom.xml b/libraries/pom.xml index 0f33c42dc4..a200fe8350 100644 --- a/libraries/pom.xml +++ b/libraries/pom.xml @@ -20,6 +20,31 @@ 1.8 + + org.apache.maven.plugins + maven-dependency-plugin + + + org.apache.felix + maven-bundle-plugin + 3.3.0 + maven-plugin + + + + true + + + org.apache.maven.plugins + maven-surefire-plugin + ${maven-surefire-plugin.version} + + + **/*IntegrationTest.java + **/*LiveTest.java + + + @@ -92,6 +117,21 @@ commons-io ${commons.io.version} + + org.apache.flink + flink-core + ${flink.version} + + + org.apache.flink + flink-java + ${flink.version} + + + org.apache.flink + flink-test-utils_2.10 + ${flink.version} + @@ -107,6 +147,8 @@ 9.4.2.v20170220 4.5.3 2.5 + 1.2.0 + 2.19.1 \ No newline at end of file diff --git a/libraries/src/main/java/com/baeldung/flink/LineSplitter.java b/libraries/src/main/java/com/baeldung/flink/LineSplitter.java new file mode 100644 index 0000000000..8deeeb01c4 --- /dev/null +++ b/libraries/src/main/java/com/baeldung/flink/LineSplitter.java @@ -0,0 +1,20 @@ +package com.baeldung.flink; + +import org.apache.flink.api.common.functions.FlatMapFunction; +import org.apache.flink.api.java.tuple.Tuple2; +import org.apache.flink.util.Collector; + +import java.util.stream.Stream; + +@SuppressWarnings("serial") +public class LineSplitter implements FlatMapFunction> { + + @Override + public void flatMap(String value, Collector> out) { + + String[] tokens = value.toLowerCase().split("\\W+"); + Stream.of(tokens) + .filter(t -> t.length() > 0) + .forEach(token -> out.collect(new Tuple2<>(token, 1))); + } +} \ No newline at end of file diff --git a/libraries/src/main/java/com/baeldung/flink/WordCount.java b/libraries/src/main/java/com/baeldung/flink/WordCount.java new file mode 100644 index 0000000000..ab109bdbce --- /dev/null +++ b/libraries/src/main/java/com/baeldung/flink/WordCount.java @@ -0,0 +1,20 @@ +package com.baeldung.flink; + +import org.apache.flink.api.java.DataSet; +import org.apache.flink.api.java.ExecutionEnvironment; +import org.apache.flink.api.java.aggregation.Aggregations; +import org.apache.flink.api.java.tuple.Tuple2; + +import java.util.List; + +public class WordCount { + + public static DataSet> startWordCount(ExecutionEnvironment env, List lines) throws Exception { + DataSet text = env.fromCollection(lines); + + return text.flatMap(new LineSplitter()) + .groupBy(0) + .aggregate(Aggregations.SUM, 1); + + } +} \ No newline at end of file diff --git a/libraries/src/test/java/com/baeldung/flink/WordCountIntegrationTest.java b/libraries/src/test/java/com/baeldung/flink/WordCountIntegrationTest.java new file mode 100644 index 0000000000..91a75c78ba --- /dev/null +++ b/libraries/src/test/java/com/baeldung/flink/WordCountIntegrationTest.java @@ -0,0 +1,196 @@ +package com.baeldung.flink; + +import org.apache.flink.api.common.functions.ReduceFunction; +import org.apache.flink.api.common.operators.Order; +import org.apache.flink.api.java.DataSet; +import org.apache.flink.api.java.ExecutionEnvironment; +import org.apache.flink.api.java.functions.KeySelector; +import org.apache.flink.api.java.tuple.Tuple2; +import org.apache.flink.api.java.tuple.Tuple3; +import org.apache.flink.streaming.api.datastream.DataStream; +import org.apache.flink.streaming.api.datastream.SingleOutputStreamOperator; +import org.apache.flink.streaming.api.environment.StreamExecutionEnvironment; +import org.apache.flink.streaming.api.functions.timestamps.BoundedOutOfOrdernessTimestampExtractor; +import org.apache.flink.streaming.api.windowing.assigners.TumblingEventTimeWindows; +import org.apache.flink.streaming.api.windowing.time.Time; +import org.junit.Test; + +import java.time.ZonedDateTime; +import java.util.Arrays; +import java.util.List; + +import static org.assertj.core.api.Assertions.assertThat; + + +public class WordCountIntegrationTest { + final ExecutionEnvironment env = ExecutionEnvironment.getExecutionEnvironment(); + + @Test + public void givenDataSet_whenExecuteWordCount_thenReturnWordCount() throws Exception { + //given + List lines = Arrays.asList("This is a first sentence", "This is a second sentence with a one word"); + + //when + DataSet> result = WordCount.startWordCount(env, lines); + + //then + List> collect = result.collect(); + assertThat(collect.size()).isEqualTo(9); + assertThat(collect.contains(new Tuple2<>("a", 3))).isTrue(); + assertThat(collect.contains(new Tuple2<>("sentence", 2))).isTrue(); + assertThat(collect.contains(new Tuple2<>("word", 1))).isTrue(); + assertThat(collect.contains(new Tuple2<>("is", 2))).isTrue(); + assertThat(collect.contains(new Tuple2<>("this", 2))).isTrue(); + assertThat(collect.contains(new Tuple2<>("second", 1))).isTrue(); + assertThat(collect.contains(new Tuple2<>("first", 1))).isTrue(); + } + + @Test + public void givenListOfAmounts_whenUseMapReduce_thenSumAmountsThatAreOnlyAboveThreshold() throws Exception { + //given + DataSet amounts = env.fromElements(1, 29, 40, 50); + int threshold = 30; + + //when + List collect = amounts + .filter(a -> a > threshold) + .reduce((ReduceFunction) (integer, t1) -> integer + t1) + .collect(); + + //then + assertThat(collect.get(0)).isEqualTo(90); + } + + @Test + public void givenDataSetOfComplexObjects_whenMapToGetOneField_thenReturnedListHaveProperElements() throws Exception { + //given + DataSet personDataSource = env.fromCollection(Arrays.asList(new Person(23, "Tom"), new Person(75, "Michael"))); + + //when + List ages = personDataSource.map(p -> p.age).collect(); + + //then + assertThat(ages.size()).isEqualTo(2); + assertThat(ages.containsAll(Arrays.asList(23, 75))).isTrue(); + + } + + @Test + public void givenDataSet_whenSortItByOneField_thenShouldReturnSortedDataSet() throws Exception { + //given + Tuple2 secondPerson = new Tuple2<>(4, "Tom"); + Tuple2 thirdPerson = new Tuple2<>(5, "Scott"); + Tuple2 fourthPerson = new Tuple2<>(200, "Michael"); + Tuple2 firstPerson = new Tuple2<>(1, "Jack"); + DataSet> transactions = env.fromElements(fourthPerson, secondPerson, + thirdPerson, firstPerson); + + + //when + List> sorted = transactions + .sortPartition(new IdKeySelectorTransaction(), Order.ASCENDING) + .collect(); + + //then + assertThat(sorted.size()).isEqualTo(4); + assertThat(sorted.get(0)).isEqualTo(firstPerson); + assertThat(sorted.get(1)).isEqualTo(secondPerson); + assertThat(sorted.get(2)).isEqualTo(thirdPerson); + assertThat(sorted.get(3)).isEqualTo(fourthPerson); + + } + + + @Test + public void giveTwoDataSets_whenJoinUsingId_thenProduceJoinedData() throws Exception { + //given + Tuple3 address = new Tuple3<>(1, "5th Avenue", "London"); + DataSet> addresses = env.fromElements(address); + + Tuple2 firstTransaction = new Tuple2<>(1, "Transaction_1"); + DataSet> transactions = + env.fromElements(firstTransaction, new Tuple2<>(12, "Transaction_2")); + + + //when + List, Tuple3>> joined = + transactions.join(addresses) + .where(new IdKeySelectorTransaction()) + .equalTo(new IdKeySelectorAddress()) + .collect(); + + //then + assertThat(joined.size()).isEqualTo(1); + assertThat(joined.contains(new Tuple2<>(firstTransaction, address))); + + } + + @Test + public void givenStreamOfEvents_whenProcessEvents_thenShouldPrintResultsOnSinkOperation() throws Exception { + //given + final StreamExecutionEnvironment env = StreamExecutionEnvironment.getExecutionEnvironment(); + + DataStream text + = env.fromElements("This is a first sentence", "This is a second sentence with a one word"); + + + SingleOutputStreamOperator upperCase = text.map(String::toUpperCase); + + upperCase.print(); + + //when + env.execute(); + } + + + @Test + public void givenStreamOfEvents_whenProcessEvents_thenShouldApplyWindowingOnTransformation() throws Exception { + //given + final StreamExecutionEnvironment env = StreamExecutionEnvironment.getExecutionEnvironment(); + + SingleOutputStreamOperator> windowed = env.fromElements( + new Tuple2<>(16, ZonedDateTime.now().plusMinutes(25).toInstant().getEpochSecond()), + new Tuple2<>(15, ZonedDateTime.now().plusMinutes(2).toInstant().getEpochSecond()) + ).assignTimestampsAndWatermarks(new BoundedOutOfOrdernessTimestampExtractor>(Time.seconds(20)) { + @Override + public long extractTimestamp(Tuple2 element) { + return element.f1 * 1000; + } + }); + + SingleOutputStreamOperator> reduced = windowed + .windowAll(TumblingEventTimeWindows.of(Time.seconds(5))) + .maxBy(0, true); + + reduced.print(); + + //when + env.execute(); + } + + + private static class IdKeySelectorTransaction implements KeySelector, Integer> { + @Override + public Integer getKey(Tuple2 value) { + return value.f0; + } + } + + private static class IdKeySelectorAddress implements KeySelector, Integer> { + @Override + public Integer getKey(Tuple3 value) { + return value.f0; + } + } + + private static class Person { + private final int age; + private final String name; + + private Person(int age, String name) { + this.age = age; + this.name = name; + } + } + +} \ No newline at end of file From cc276589ec33e686cb00a3449d26d693d136f6c0 Mon Sep 17 00:00:00 2001 From: Doha2012 Date: Sun, 9 Apr 2017 20:38:30 +0200 Subject: [PATCH 26/56] fix integration test (#1615) * upgrade to spring boot 1.5.2 * add full update to REST API * modify ratings controller * upgrade herold * fix integration test * fix integration test * minor fix * fix integration test * fix integration test * minor cleanup --- spring-boot/src/main/resources/schema.sql | 2 ++ .../org/baeldung/SpringBootApplicationIntegrationTest.java | 2 +- spring-boot/src/test/resources/import.sql | 2 +- .../test/resources/persistence-generic-entity.properties | 6 +++--- .../web/controller/GreetControllerIntegrationTest.java | 3 ++- 5 files changed, 9 insertions(+), 6 deletions(-) diff --git a/spring-boot/src/main/resources/schema.sql b/spring-boot/src/main/resources/schema.sql index 27859c1652..4cd345c762 100644 --- a/spring-boot/src/main/resources/schema.sql +++ b/spring-boot/src/main/resources/schema.sql @@ -1,3 +1,5 @@ +drop table if exists USERS; + create table USERS( ID int not null AUTO_INCREMENT, NAME varchar(100) not null, diff --git a/spring-boot/src/test/java/org/baeldung/SpringBootApplicationIntegrationTest.java b/spring-boot/src/test/java/org/baeldung/SpringBootApplicationIntegrationTest.java index 87c59a4662..4ce0678bdd 100644 --- a/spring-boot/src/test/java/org/baeldung/SpringBootApplicationIntegrationTest.java +++ b/spring-boot/src/test/java/org/baeldung/SpringBootApplicationIntegrationTest.java @@ -63,4 +63,4 @@ public class SpringBootApplicationIntegrationTest { mockMvc.perform(MockMvcRequestBuilders.get("/entity/findbyversion").header("Version", "1.0.0")).andExpect(MockMvcResultMatchers.status().isOk()).andExpect(MockMvcResultMatchers.content().contentType(contentType)) .andExpect(jsonPath("$.id", equalTo(1))); } -} +} \ No newline at end of file diff --git a/spring-boot/src/test/resources/import.sql b/spring-boot/src/test/resources/import.sql index a382410271..9095b9468c 100644 --- a/spring-boot/src/test/resources/import.sql +++ b/spring-boot/src/test/resources/import.sql @@ -1 +1 @@ -Insert into Foo values(1,'Foo_Name'); \ No newline at end of file +--insert into Foo values(1,'Foo_Name'); \ No newline at end of file diff --git a/spring-boot/src/test/resources/persistence-generic-entity.properties b/spring-boot/src/test/resources/persistence-generic-entity.properties index c60e7488b6..b19304cb1f 100644 --- a/spring-boot/src/test/resources/persistence-generic-entity.properties +++ b/spring-boot/src/test/resources/persistence-generic-entity.properties @@ -1,8 +1,8 @@ jdbc.driverClassName=org.h2.Driver jdbc.url=jdbc:h2:mem:db;DB_CLOSE_DELAY=-1 -jdbc.username=sa -jdbc.password=sa +jdbc.user=sa +jdbc.pass=sa hibernate.dialect=org.hibernate.dialect.H2Dialect hibernate.show_sql=true -hibernate.hbm2ddl.auto=create-drop \ No newline at end of file +hibernate.hbm2ddl.auto=create-drop diff --git a/spring-mvc-java/src/test/java/com/baeldung/web/controller/GreetControllerIntegrationTest.java b/spring-mvc-java/src/test/java/com/baeldung/web/controller/GreetControllerIntegrationTest.java index ca8c37175e..b628228b7e 100644 --- a/spring-mvc-java/src/test/java/com/baeldung/web/controller/GreetControllerIntegrationTest.java +++ b/spring-mvc-java/src/test/java/com/baeldung/web/controller/GreetControllerIntegrationTest.java @@ -21,10 +21,11 @@ import org.springframework.test.web.servlet.setup.MockMvcBuilders; import org.springframework.web.context.WebApplicationContext; import com.baeldung.spring.web.config.ApplicationConfig; +import com.baeldung.spring.web.config.WebConfig; @RunWith(SpringJUnit4ClassRunner.class) @WebAppConfiguration -@ContextConfiguration(classes = { ApplicationConfig.class }) +@ContextConfiguration(classes = { ApplicationConfig.class, WebConfig.class }) public class GreetControllerIntegrationTest { @Autowired From a826e70c2311e9d4943e3233322d2c1b81418670 Mon Sep 17 00:00:00 2001 From: maibin Date: Mon, 10 Apr 2017 05:19:49 +0200 Subject: [PATCH 27/56] Jenetics library (#1601) --- algorithms/.gitignore | 1 + algorithms/pom.xml | 5 ++ .../algorithms/ga/jenetics/Knapsack.java | 47 ++++++++++ .../algorithms/ga/jenetics/KnapsackFF.java | 25 ++++++ .../algorithms/ga/jenetics/KnapsackItem.java | 34 ++++++++ .../ga/jenetics/SimpleGeneticAlgorithm.java | 33 +++++++ .../ga/jenetics/SpringsteenProblem.java | 86 +++++++++++++++++++ .../ga/jenetics/SpringsteenRecord.java | 24 ++++++ .../algorithms/ga/jenetics/SubsetSum.java | 66 ++++++++++++++ .../ga/jenetics/TravelingSalesman.java | 67 +++++++++++++++ 10 files changed, 388 insertions(+) create mode 100644 algorithms/.gitignore create mode 100644 algorithms/src/main/java/com/baeldung/algorithms/ga/jenetics/Knapsack.java create mode 100644 algorithms/src/main/java/com/baeldung/algorithms/ga/jenetics/KnapsackFF.java create mode 100644 algorithms/src/main/java/com/baeldung/algorithms/ga/jenetics/KnapsackItem.java create mode 100644 algorithms/src/main/java/com/baeldung/algorithms/ga/jenetics/SimpleGeneticAlgorithm.java create mode 100644 algorithms/src/main/java/com/baeldung/algorithms/ga/jenetics/SpringsteenProblem.java create mode 100644 algorithms/src/main/java/com/baeldung/algorithms/ga/jenetics/SpringsteenRecord.java create mode 100644 algorithms/src/main/java/com/baeldung/algorithms/ga/jenetics/SubsetSum.java create mode 100644 algorithms/src/main/java/com/baeldung/algorithms/ga/jenetics/TravelingSalesman.java diff --git a/algorithms/.gitignore b/algorithms/.gitignore new file mode 100644 index 0000000000..b83d22266a --- /dev/null +++ b/algorithms/.gitignore @@ -0,0 +1 @@ +/target/ diff --git a/algorithms/pom.xml b/algorithms/pom.xml index 529af19686..884c804d13 100644 --- a/algorithms/pom.xml +++ b/algorithms/pom.xml @@ -31,6 +31,11 @@ ${lombok.version} provided + + io.jenetics + jenetics + 3.7.0 + diff --git a/algorithms/src/main/java/com/baeldung/algorithms/ga/jenetics/Knapsack.java b/algorithms/src/main/java/com/baeldung/algorithms/ga/jenetics/Knapsack.java new file mode 100644 index 0000000000..cc99ccf204 --- /dev/null +++ b/algorithms/src/main/java/com/baeldung/algorithms/ga/jenetics/Knapsack.java @@ -0,0 +1,47 @@ +package com.baeldung.algorithms.ga.jenetics; + +import static org.jenetics.engine.EvolutionResult.toBestPhenotype; +import static org.jenetics.engine.limit.bySteadyFitness; + +import java.util.stream.Stream; + +import org.jenetics.BitChromosome; +import org.jenetics.BitGene; +import org.jenetics.Mutator; +import org.jenetics.Phenotype; +import org.jenetics.RouletteWheelSelector; +import org.jenetics.SinglePointCrossover; +import org.jenetics.TournamentSelector; +import org.jenetics.engine.Engine; +import org.jenetics.engine.EvolutionStatistics; + +//The main class. +public class Knapsack { + + public static void main(String[] args) { + int nItems = 15; + double ksSize = nItems * 100.0 / 3.0; + + KnapsackFF ff = new KnapsackFF(Stream.generate(KnapsackItem::random) + .limit(nItems) + .toArray(KnapsackItem[]::new), ksSize); + + Engine engine = Engine.builder(ff, BitChromosome.of(nItems, 0.5)) + .populationSize(500) + .survivorsSelector(new TournamentSelector<>(5)) + .offspringSelector(new RouletteWheelSelector<>()) + .alterers(new Mutator<>(0.115), new SinglePointCrossover<>(0.16)) + .build(); + + EvolutionStatistics statistics = EvolutionStatistics.ofNumber(); + + Phenotype best = engine.stream() + .limit(bySteadyFitness(7)) + .limit(100) + .peek(statistics) + .collect(toBestPhenotype()); + + System.out.println(statistics); + System.out.println(best); + } +} \ No newline at end of file diff --git a/algorithms/src/main/java/com/baeldung/algorithms/ga/jenetics/KnapsackFF.java b/algorithms/src/main/java/com/baeldung/algorithms/ga/jenetics/KnapsackFF.java new file mode 100644 index 0000000000..e3e06d301a --- /dev/null +++ b/algorithms/src/main/java/com/baeldung/algorithms/ga/jenetics/KnapsackFF.java @@ -0,0 +1,25 @@ +package com.baeldung.algorithms.ga.jenetics; + +import java.util.function.Function; + +import org.jenetics.BitChromosome; +import org.jenetics.BitGene; +import org.jenetics.Genotype; + +public class KnapsackFF implements Function, Double> { + private KnapsackItem[] items; + private double size; + + public KnapsackFF(KnapsackItem[] items, double size) { + this.items = items; + this.size = size; + } + + @Override + public Double apply(Genotype gt) { + KnapsackItem sum = ((BitChromosome) gt.getChromosome()).ones() + .mapToObj(i -> items[i]) + .collect(KnapsackItem.toSum()); + return sum.size <= this.size ? sum.value : 0; + } +} diff --git a/algorithms/src/main/java/com/baeldung/algorithms/ga/jenetics/KnapsackItem.java b/algorithms/src/main/java/com/baeldung/algorithms/ga/jenetics/KnapsackItem.java new file mode 100644 index 0000000000..876df0ba25 --- /dev/null +++ b/algorithms/src/main/java/com/baeldung/algorithms/ga/jenetics/KnapsackItem.java @@ -0,0 +1,34 @@ +package com.baeldung.algorithms.ga.jenetics; + +import java.util.Random; +import java.util.stream.Collector; + +import org.jenetics.util.RandomRegistry; + +public class KnapsackItem { + + public double size; + public double value; + + public KnapsackItem(double size, double value) { + this.size = size; + this.value = value; + } + + protected static KnapsackItem random() { + Random r = RandomRegistry.getRandom(); + return new KnapsackItem(r.nextDouble() * 100, r.nextDouble() * 100); + } + + protected static Collector toSum() { + return Collector.of(() -> new double[2], (a, b) -> { + a[0] += b.size; + a[1] += b.value; + } , (a, b) -> { + a[0] += b[0]; + a[1] += b[1]; + return a; + } , r -> new KnapsackItem(r[0], r[1])); + } + +} diff --git a/algorithms/src/main/java/com/baeldung/algorithms/ga/jenetics/SimpleGeneticAlgorithm.java b/algorithms/src/main/java/com/baeldung/algorithms/ga/jenetics/SimpleGeneticAlgorithm.java new file mode 100644 index 0000000000..845e11b349 --- /dev/null +++ b/algorithms/src/main/java/com/baeldung/algorithms/ga/jenetics/SimpleGeneticAlgorithm.java @@ -0,0 +1,33 @@ +package com.baeldung.algorithms.ga.jenetics; + +import org.jenetics.BitChromosome; +import org.jenetics.BitGene; +import org.jenetics.Genotype; +import org.jenetics.engine.Engine; +import org.jenetics.engine.EvolutionResult; +import org.jenetics.util.Factory; + +public class SimpleGeneticAlgorithm { + + private static Integer eval(Genotype gt) { + return gt.getChromosome() + .as(BitChromosome.class) + .bitCount(); + } + + public static void main(String[] args) { + Factory> gtf = Genotype.of(BitChromosome.of(10, 0.5)); + System.out.println("Before the evolution:\n" + gtf); + + Engine engine = Engine.builder(SimpleGeneticAlgorithm::eval, gtf) + .build(); + + Genotype result = engine.stream() + .limit(500) + .collect(EvolutionResult.toBestGenotype()); + + System.out.println("After the evolution:\n" + result); + + } + +} diff --git a/algorithms/src/main/java/com/baeldung/algorithms/ga/jenetics/SpringsteenProblem.java b/algorithms/src/main/java/com/baeldung/algorithms/ga/jenetics/SpringsteenProblem.java new file mode 100644 index 0000000000..55f2f7af0a --- /dev/null +++ b/algorithms/src/main/java/com/baeldung/algorithms/ga/jenetics/SpringsteenProblem.java @@ -0,0 +1,86 @@ +package com.baeldung.algorithms.ga.jenetics; + +import static java.util.Objects.requireNonNull; + +import java.util.function.Function; +import java.util.stream.Collectors; + +import org.jenetics.BitGene; +import org.jenetics.engine.Codec; +import org.jenetics.engine.Engine; +import org.jenetics.engine.EvolutionResult; +import org.jenetics.engine.Problem; +import org.jenetics.engine.codecs; +import org.jenetics.util.ISeq; + +public class SpringsteenProblem implements Problem, BitGene, Double> { + + private ISeq records; + private double maxPricePerUniqueSong; + + public SpringsteenProblem(ISeq records, double maxPricePerUniqueSong) { + this.records = requireNonNull(records); + this.maxPricePerUniqueSong = maxPricePerUniqueSong; + } + + @Override + public Function, Double> fitness() { + return SpringsteenRecords -> { + double cost = SpringsteenRecords.stream() + .mapToDouble(r -> r.price) + .sum(); + + int uniqueSongCount = SpringsteenRecords.stream() + .flatMap(r -> r.songs.stream()) + .collect(Collectors.toSet()) + .size(); + + double pricePerUniqueSong = cost / uniqueSongCount; + + return pricePerUniqueSong <= maxPricePerUniqueSong ? uniqueSongCount : 0.0; + }; + } + + @Override + public Codec, BitGene> codec() { + return codecs.ofSubSet(records); + } + + public static void main(String[] args) { + double maxPricePerUniqueSong = 2.5; + + SpringsteenProblem springsteen = new SpringsteenProblem( + ISeq.of(new SpringsteenRecord("SpringsteenRecord1", 25, ISeq.of("Song1", "Song2", "Song3", "Song4", "Song5", "Song6")), new SpringsteenRecord("SpringsteenRecord2", 15, ISeq.of("Song2", "Song3", "Song4", "Song5", "Song6", "Song7")), + new SpringsteenRecord("SpringsteenRecord3", 35, ISeq.of("Song5", "Song6", "Song7", "Song8", "Song9", "Song10")), new SpringsteenRecord("SpringsteenRecord4", 17, ISeq.of("Song9", "Song10", "Song12", "Song4", "Song13", "Song14")), + new SpringsteenRecord("SpringsteenRecord5", 29, ISeq.of("Song1", "Song2", "Song13", "Song14", "Song15", "Song16")), new SpringsteenRecord("SpringsteenRecord6", 5, ISeq.of("Song18", "Song20", "Song30", "Song40"))), + maxPricePerUniqueSong); + + Engine engine = Engine.builder(springsteen) + .build(); + + ISeq result = springsteen.codec() + .decoder() + .apply(engine.stream() + .limit(10) + .collect(EvolutionResult.toBestGenotype())); + + double cost = result.stream() + .mapToDouble(r -> r.price) + .sum(); + + int uniqueSongCount = result.stream() + .flatMap(r -> r.songs.stream()) + .collect(Collectors.toSet()) + .size(); + + double pricePerUniqueSong = cost / uniqueSongCount; + + System.out.println("Overall cost: " + cost); + System.out.println("Unique songs: " + uniqueSongCount); + System.out.println("Cost per song: " + pricePerUniqueSong); + System.out.println("Records: " + result.map(r -> r.name) + .toString(", ")); + + } + +} \ No newline at end of file diff --git a/algorithms/src/main/java/com/baeldung/algorithms/ga/jenetics/SpringsteenRecord.java b/algorithms/src/main/java/com/baeldung/algorithms/ga/jenetics/SpringsteenRecord.java new file mode 100644 index 0000000000..b49709e7f5 --- /dev/null +++ b/algorithms/src/main/java/com/baeldung/algorithms/ga/jenetics/SpringsteenRecord.java @@ -0,0 +1,24 @@ +package com.baeldung.algorithms.ga.jenetics; + +import static java.util.Objects.requireNonNull; + +import org.jenetics.util.ISeq; + +import lombok.Data; +import lombok.NoArgsConstructor; + +@Data +@NoArgsConstructor +public class SpringsteenRecord { + + String name; + double price; + ISeq songs; + + public SpringsteenRecord(String name, double price, ISeq songs) { + this.name = requireNonNull(name); + this.price = price; + this.songs = requireNonNull(songs); + } + +} diff --git a/algorithms/src/main/java/com/baeldung/algorithms/ga/jenetics/SubsetSum.java b/algorithms/src/main/java/com/baeldung/algorithms/ga/jenetics/SubsetSum.java new file mode 100644 index 0000000000..db1e11239f --- /dev/null +++ b/algorithms/src/main/java/com/baeldung/algorithms/ga/jenetics/SubsetSum.java @@ -0,0 +1,66 @@ +package com.baeldung.algorithms.ga.jenetics; + +import static java.util.Objects.requireNonNull; + +import java.util.Random; +import java.util.function.Function; + +import org.jenetics.EnumGene; +import org.jenetics.Mutator; +import org.jenetics.PartiallyMatchedCrossover; +import org.jenetics.Phenotype; +import org.jenetics.engine.Codec; +import org.jenetics.engine.Engine; +import org.jenetics.engine.EvolutionResult; +import org.jenetics.engine.Problem; +import org.jenetics.engine.codecs; +import org.jenetics.engine.limit; +import org.jenetics.util.ISeq; +import org.jenetics.util.LCG64ShiftRandom; + +public class SubsetSum implements Problem, EnumGene, Integer> { + + private ISeq basicSet; + private int size; + + public SubsetSum(ISeq basicSet, int size) { + this.basicSet = requireNonNull(basicSet); + this.size = size; + } + + @Override + public Function, Integer> fitness() { + return subset -> Math.abs(subset.stream() + .mapToInt(Integer::intValue) + .sum()); + } + + @Override + public Codec, EnumGene> codec() { + return codecs.ofSubSet(basicSet, size); + } + + public static SubsetSum of(int n, int k, Random random) { + return new SubsetSum(random.doubles() + .limit(n) + .mapToObj(d -> (int) ((d - 0.5) * n)) + .collect(ISeq.toISeq()), k); + } + + public static void main(String[] args) { + SubsetSum problem = of(500, 15, new LCG64ShiftRandom(101010)); + + Engine, Integer> engine = Engine.builder(problem) + .minimizing() + .maximalPhenotypeAge(5) + .alterers(new PartiallyMatchedCrossover<>(0.4), new Mutator<>(0.3)) + .build(); + + Phenotype, Integer> result = engine.stream() + .limit(limit.bySteadyFitness(55)) + .collect(EvolutionResult.toBestPhenotype()); + + System.out.print(result); + } + +} \ No newline at end of file diff --git a/algorithms/src/main/java/com/baeldung/algorithms/ga/jenetics/TravelingSalesman.java b/algorithms/src/main/java/com/baeldung/algorithms/ga/jenetics/TravelingSalesman.java new file mode 100644 index 0000000000..80ede0f8c5 --- /dev/null +++ b/algorithms/src/main/java/com/baeldung/algorithms/ga/jenetics/TravelingSalesman.java @@ -0,0 +1,67 @@ +package com.baeldung.algorithms.ga.jenetics; + +import static java.lang.Math.PI; +import static java.lang.Math.abs; +import static java.lang.Math.sin; +import static org.jenetics.engine.EvolutionResult.toBestPhenotype; +import static org.jenetics.engine.limit.bySteadyFitness; + +import java.util.stream.IntStream; + +import org.jenetics.EnumGene; +import org.jenetics.Optimize; +import org.jenetics.PartiallyMatchedCrossover; +import org.jenetics.Phenotype; +import org.jenetics.SwapMutator; +import org.jenetics.engine.Engine; +import org.jenetics.engine.EvolutionStatistics; +import org.jenetics.engine.codecs; + +public class TravelingSalesman { + + private static final int STOPS = 50; + private static final double[][] ADJACENCE = matrix(STOPS); + + private static double[][] matrix(int stops) { + final double radius = 100.0; + double[][] matrix = new double[stops][stops]; + + for (int i = 0; i < stops; ++i) { + for (int j = 0; j < stops; ++j) { + matrix[i][j] = chord(stops, abs(i - j), radius); + } + } + return matrix; + } + + private static double chord(int stops, int i, double r) { + return 2.0 * r * abs(sin(PI * i / stops)); + } + + private static double dist(final int[] path) { + return IntStream.range(0, STOPS) + .mapToDouble(i -> ADJACENCE[path[i]][path[(i + 1) % STOPS]]) + .sum(); + } + + public static void main(String[] args) { + final Engine, Double> engine = Engine.builder(TravelingSalesman::dist, codecs.ofPermutation(STOPS)) + .optimize(Optimize.MINIMUM) + .maximalPhenotypeAge(11) + .populationSize(500) + .alterers(new SwapMutator<>(0.2), new PartiallyMatchedCrossover<>(0.35)) + .build(); + + final EvolutionStatistics statistics = EvolutionStatistics.ofNumber(); + + final Phenotype, Double> best = engine.stream() + .limit(bySteadyFitness(15)) + .limit(250) + .peek(statistics) + .collect(toBestPhenotype()); + + System.out.println(statistics); + System.out.println(best); + } + +} From a78a4dc544cfe4e00b3ab71d2d51c5d6bb4b254c Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Walter=20G=C3=B3mez?= Date: Sun, 9 Apr 2017 23:21:44 -0600 Subject: [PATCH 28/56] Update on README (#1619) * Add project for hibernate immutable article Add Event entity Add hibernate configuration file Add hibernateutil for configuration Add test to match snippets from article * Update master * Add articles to README --- core-java/README.md | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) diff --git a/core-java/README.md b/core-java/README.md index 096ff51df6..e75701717f 100644 --- a/core-java/README.md +++ b/core-java/README.md @@ -11,7 +11,9 @@ - [Converting between a List and a Set in Java](http://www.baeldung.com/convert-list-to-set-and-set-to-list) - [Convert a Map to an Array, List or Set in Java](http://www.baeldung.com/convert-map-values-to-array-list-set) - [Java – Write to File](http://www.baeldung.com/java-write-to-file) -- [Java - Convert File to InputStream] (http://www.baeldung.com/convert-file-to-input-stream) +- [Java - Convert File to InputStream](http://www.baeldung.com/convert-file-to-input-stream) +- [Java – Random Long, Float, Integer and Double](http://www.baeldung.com/java-generate-random-long-float-integer-double) +- [Java – Generate Random String](http://www.baeldung.com/java-random-string) - [Java Scanner](http://www.baeldung.com/java-scanner) - [Java Timer](http://www.baeldung.com/java-timer-and-timertask) - [Java – Byte Array to Writer](http://www.baeldung.com/java-convert-byte-array-to-writer) @@ -86,4 +88,5 @@ - [Java Primitive Conversions](http://www.baeldung.com/java-primitive-conversions) - [Java Money and the Currency API](http://www.baeldung.com/java-money-and-currency) - [Guide to Java 8 Comparator.comparing()](http://www.baeldung.com/java-8-comparator-comparing) - +- [Removing all nulls from a List in Java](http://www.baeldung.com/java-remove-nulls-from-list) +- [Removing all duplicates from a List in Java](http://www.baeldung.com/java-remove-duplicates-from-list) From 4e560091eaf0033d1d52a58659fdc00c2e7b5550 Mon Sep 17 00:00:00 2001 From: Doha2012 Date: Mon, 10 Apr 2017 11:48:47 +0200 Subject: [PATCH 29/56] minor cleanup (#1618) * upgrade to spring boot 1.5.2 * add full update to REST API * modify ratings controller * upgrade herold * fix integration test * fix integration test * minor fix * fix integration test * fix integration test * minor cleanup * minor cleanup --- .../data-flow-server/pom.xml | 35 ------------------- 1 file changed, 35 deletions(-) diff --git a/spring-cloud-data-flow/data-flow-server/pom.xml b/spring-cloud-data-flow/data-flow-server/pom.xml index 1ed2d4fb74..bd3b4ab150 100644 --- a/spring-cloud-data-flow/data-flow-server/pom.xml +++ b/spring-cloud-data-flow/data-flow-server/pom.xml @@ -77,39 +77,4 @@ - - - integration - - - - org.apache.maven.plugins - maven-surefire-plugin - - - integration-test - - test - - - - **/*LiveTest.java - - - **/*IntegrationTest.java - - - - - - - json - - - - - - - - From 1a288b591186c7b8699a096b4ef5ac40b9080c4d Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jo=C3=A3o=20Melo?= Date: Mon, 10 Apr 2017 11:44:16 +0100 Subject: [PATCH 30/56] Code for Avoiding ConcurrentModificationException when iterating and removing (#1617) --- core-java/README.md | 2 + .../ConcurrentModificationExceptionTest.java | 82 +++++++++++++++++++ 2 files changed, 84 insertions(+) create mode 100644 core-java/src/test/java/com/baeldung/java/collections/ConcurrentModificationExceptionTest.java diff --git a/core-java/README.md b/core-java/README.md index e75701717f..a7c8b0e855 100644 --- a/core-java/README.md +++ b/core-java/README.md @@ -88,5 +88,7 @@ - [Java Primitive Conversions](http://www.baeldung.com/java-primitive-conversions) - [Java Money and the Currency API](http://www.baeldung.com/java-money-and-currency) - [Guide to Java 8 Comparator.comparing()](http://www.baeldung.com/java-8-comparator-comparing) +- [Avoiding ConcurrentModificationException when iterating and removing](http://www.baeldung.com/avoiding-concurrentmodificationexception-when-iterating-and-removing) - [Removing all nulls from a List in Java](http://www.baeldung.com/java-remove-nulls-from-list) - [Removing all duplicates from a List in Java](http://www.baeldung.com/java-remove-duplicates-from-list) + diff --git a/core-java/src/test/java/com/baeldung/java/collections/ConcurrentModificationExceptionTest.java b/core-java/src/test/java/com/baeldung/java/collections/ConcurrentModificationExceptionTest.java new file mode 100644 index 0000000000..100d25ab8d --- /dev/null +++ b/core-java/src/test/java/com/baeldung/java/collections/ConcurrentModificationExceptionTest.java @@ -0,0 +1,82 @@ +package com.baeldung.java.collections; + +import org.junit.Test; + +import java.util.*; +import java.util.concurrent.CopyOnWriteArrayList; + +import static java.util.Arrays.asList; +import static org.testng.Assert.assertEquals; + +public class ConcurrentModificationExceptionTest { + @Test + public void changingContentWithSetDoesNotThrowConcurrentModificationException() throws Exception { + ArrayList array = new ArrayList<>(asList(0, "one", 2, "three")); + + for (Object item : array) { + array.set(3, 3); + } + } + + @Test + public void removingElementUsingIteratorAPI() throws Exception { + List originalList = new ArrayList<>(asList("zero", "one", "two", "three")); + + Iterator iterator = originalList.iterator(); + + while (iterator.hasNext()) { + String next = iterator.next(); + if (Objects.equals(next, "one")) iterator.remove(); + } + + assertEquals(originalList, asList("zero", "two", "three")); + } + + @Test + public void modifyingContentAndIteratingUsingListIteratorAPI() throws Exception { + List originalList = new ArrayList<>(asList("zero", "one", "two", "three")); + + ListIterator iterator = originalList.listIterator(); + + while (iterator.hasNext()) { + String next = iterator.next(); + if (Objects.equals(next, "one")) { + iterator.set("another"); + } + + if (Objects.equals(next, "two")) { + iterator.remove(); + } + + if (Objects.equals(next, "three")) { + iterator.add("four"); + } + } + + assertEquals(originalList, asList("zero", "another", "three", "four")); + } + + @Test + public void removingElementUsingCopyAndListAPI() throws Exception { + List originalList = new ArrayList<>(asList("zero", "one", "two", "three")); + + List listCopy = new ArrayList<>(originalList); + + for (String next : listCopy) { + if (Objects.equals(next, "one")) originalList.remove(originalList.indexOf(next) - 1); + } + + assertEquals(originalList, asList("one", "two", "three")); + } + + @Test + public void copyOnWriteList() throws Exception { + List originalList = new CopyOnWriteArrayList<>(asList("zero", "one", "two", "three")); + + for (String next : originalList) { + if (Objects.equals(next, "one")) originalList.remove(originalList.indexOf(next) - 1); + } + + assertEquals(originalList, asList("one", "two", "three")); + } +} From 34aa697a026cbef02bb9633ee6833508803e74a2 Mon Sep 17 00:00:00 2001 From: Grzegorz Piwowarek Date: Mon, 10 Apr 2017 13:36:35 +0200 Subject: [PATCH 31/56] remove unused module (#1628) --- pom.xml | 1 - spring-mvc-no-xml/.gitignore | 13 -- spring-mvc-no-xml/README.md | 9 - spring-mvc-no-xml/pom.xml | 175 ------------------ .../java/org/baeldung/servlet/WebAppNew.java | 42 ----- .../java/org/baeldung/servlet/WebAppOld.java | 23 --- .../org/baeldung/spring/ClientWebConfig.java | 39 ---- .../src/main/resources/logback.xml | 20 -- .../src/main/resources/webSecurityConfig.xml | 37 ---- .../src/main/webapp/WEB-INF/mvc-servlet.xml | 6 - .../src/main/webapp/WEB-INF/view/sample.jsp | 7 - .../src/main/webapp/WEB-INF/web_old.xml | 43 ----- .../src/test/resources/.gitignore | 13 -- 13 files changed, 428 deletions(-) delete mode 100644 spring-mvc-no-xml/.gitignore delete mode 100644 spring-mvc-no-xml/README.md delete mode 100644 spring-mvc-no-xml/pom.xml delete mode 100644 spring-mvc-no-xml/src/main/java/org/baeldung/servlet/WebAppNew.java delete mode 100644 spring-mvc-no-xml/src/main/java/org/baeldung/servlet/WebAppOld.java delete mode 100644 spring-mvc-no-xml/src/main/java/org/baeldung/spring/ClientWebConfig.java delete mode 100644 spring-mvc-no-xml/src/main/resources/logback.xml delete mode 100644 spring-mvc-no-xml/src/main/resources/webSecurityConfig.xml delete mode 100644 spring-mvc-no-xml/src/main/webapp/WEB-INF/mvc-servlet.xml delete mode 100644 spring-mvc-no-xml/src/main/webapp/WEB-INF/view/sample.jsp delete mode 100644 spring-mvc-no-xml/src/main/webapp/WEB-INF/web_old.xml delete mode 100644 spring-mvc-no-xml/src/test/resources/.gitignore diff --git a/pom.xml b/pom.xml index b21d656772..1a11bd055f 100644 --- a/pom.xml +++ b/pom.xml @@ -153,7 +153,6 @@ spring-mvc-email spring-mvc-forms spring-mvc-java - spring-mvc-no-xml spring-mvc-tiles spring-mvc-velocity spring-mvc-web-vs-initializer diff --git a/spring-mvc-no-xml/.gitignore b/spring-mvc-no-xml/.gitignore deleted file mode 100644 index 83c05e60c8..0000000000 --- a/spring-mvc-no-xml/.gitignore +++ /dev/null @@ -1,13 +0,0 @@ -*.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/spring-mvc-no-xml/README.md b/spring-mvc-no-xml/README.md deleted file mode 100644 index 208cb35f78..0000000000 --- a/spring-mvc-no-xml/README.md +++ /dev/null @@ -1,9 +0,0 @@ -========= - -## Spring MVC with NO XML Configuration Example Project - -###The Course -The "REST With Spring" Classes: http://bit.ly/restwithspring - -### Relevant Articles: -- diff --git a/spring-mvc-no-xml/pom.xml b/spring-mvc-no-xml/pom.xml deleted file mode 100644 index 4437661199..0000000000 --- a/spring-mvc-no-xml/pom.xml +++ /dev/null @@ -1,175 +0,0 @@ - - 4.0.0 - com.baeldung - 0.1-SNAPSHOT - spring-mvc-no-xml - - spring-mvc-no-xml - war - - - - - - - org.springframework - spring-web - ${org.springframework.version} - - - org.springframework - spring-webmvc - ${org.springframework.version} - - - - - - javax.servlet - javax.servlet-api - ${javax.servlet-api.version} - provided - - - - javax.servlet - jstl - ${jstl.version} - runtime - - - - - - org.slf4j - slf4j-api - ${org.slf4j.version} - - - ch.qos.logback - logback-classic - ${logback.version} - - - - org.slf4j - jcl-over-slf4j - ${org.slf4j.version} - - - - org.slf4j - log4j-over-slf4j - ${org.slf4j.version} - - - - - - junit - junit - ${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-mvc-no-xml - - - src/main/resources - true - - - - - - - org.apache.maven.plugins - maven-compiler-plugin - ${maven-compiler-plugin.version} - - 1.8 - 1.8 - - - - - org.apache.maven.plugins - maven-war-plugin - ${maven-war-plugin.version} - - false - - - - - org.apache.maven.plugins - maven-surefire-plugin - ${maven-surefire-plugin.version} - - - - - - - - - - - - - - - - - 4.3.4.RELEASE - - - 1.7.21 - 1.1.7 - - - 1.3 - 4.12 - 1.10.19 - - 3.1.0 - 1.2 - - 4.4.5 - 4.5.2 - - 2.9.0 - - - 3.6.0 - 2.6 - 2.19.1 - 2.7 - 1.6.1 - - - - \ No newline at end of file diff --git a/spring-mvc-no-xml/src/main/java/org/baeldung/servlet/WebAppNew.java b/spring-mvc-no-xml/src/main/java/org/baeldung/servlet/WebAppNew.java deleted file mode 100644 index 2422f2110a..0000000000 --- a/spring-mvc-no-xml/src/main/java/org/baeldung/servlet/WebAppNew.java +++ /dev/null @@ -1,42 +0,0 @@ -package org.baeldung.servlet; - -import javax.servlet.ServletRegistration.Dynamic; - -import org.baeldung.spring.ClientWebConfig; -import org.springframework.web.servlet.support.AbstractAnnotationConfigDispatcherServletInitializer; - -/** - * Further reading:
- * - http://static.springsource.org/spring/docs/3.2.x/spring-framework-reference/html/mvc.html#mvc-container-config
- * - http://geowarin.wordpress.com/2013/01/23/complete-example-of-a-spring-mvc-3-2-project/
- * - http://www.objectpartners.com/2012/01/16/introduction-to-servlet-3-0/
- */ -public class WebAppNew extends AbstractAnnotationConfigDispatcherServletInitializer { - - public WebAppNew() { - super(); - } - - // API - - @Override - protected Class[] getRootConfigClasses() { - return null; - } - - @Override - protected Class[] getServletConfigClasses() { - return new Class[] { ClientWebConfig.class }; - } - - @Override - protected String[] getServletMappings() { - return new String[] { "/" }; - } - - @Override - protected void customizeRegistration(final Dynamic registration) { - super.customizeRegistration(registration); - } - -} diff --git a/spring-mvc-no-xml/src/main/java/org/baeldung/servlet/WebAppOld.java b/spring-mvc-no-xml/src/main/java/org/baeldung/servlet/WebAppOld.java deleted file mode 100644 index 85c67c094d..0000000000 --- a/spring-mvc-no-xml/src/main/java/org/baeldung/servlet/WebAppOld.java +++ /dev/null @@ -1,23 +0,0 @@ -package org.baeldung.servlet; - -// public class WebApp implements WebApplicationInitializer { -// -// public WebApp() { -// super(); -// } -// -// // API -// -// @Override -// public void onStartup(final ServletContext servletContext) throws ServletException { -// final AnnotationConfigWebApplicationContext root = new AnnotationConfigWebApplicationContext(); -// root.setServletContext(servletContext); -// root.scan("org.baeldung.spring"); -// root.refresh(); -// -// final Dynamic servlet = servletContext.addServlet("mvc", new DispatcherServlet(root)); -// servlet.setLoadOnStartup(1); -// servlet.addMapping("/"); -// } -// -// } diff --git a/spring-mvc-no-xml/src/main/java/org/baeldung/spring/ClientWebConfig.java b/spring-mvc-no-xml/src/main/java/org/baeldung/spring/ClientWebConfig.java deleted file mode 100644 index eaefb0984b..0000000000 --- a/spring-mvc-no-xml/src/main/java/org/baeldung/spring/ClientWebConfig.java +++ /dev/null @@ -1,39 +0,0 @@ -package org.baeldung.spring; - -import org.springframework.context.annotation.Bean; -import org.springframework.context.annotation.Configuration; -import org.springframework.web.servlet.ViewResolver; -import org.springframework.web.servlet.config.annotation.EnableWebMvc; -import org.springframework.web.servlet.config.annotation.ViewControllerRegistry; -import org.springframework.web.servlet.config.annotation.WebMvcConfigurerAdapter; -import org.springframework.web.servlet.view.InternalResourceViewResolver; -import org.springframework.web.servlet.view.JstlView; - -@EnableWebMvc -@Configuration -public class ClientWebConfig extends WebMvcConfigurerAdapter { - - public ClientWebConfig() { - super(); - } - - // API - - @Override - public void addViewControllers(final ViewControllerRegistry registry) { - super.addViewControllers(registry); - - registry.addViewController("/sample.html"); - } - - @Bean - public ViewResolver viewResolver() { - final InternalResourceViewResolver bean = new InternalResourceViewResolver(); - - bean.setViewClass(JstlView.class); - bean.setPrefix("/WEB-INF/view/"); - bean.setSuffix(".jsp"); - - return bean; - } -} \ No newline at end of file diff --git a/spring-mvc-no-xml/src/main/resources/logback.xml b/spring-mvc-no-xml/src/main/resources/logback.xml deleted file mode 100644 index 1146dade63..0000000000 --- a/spring-mvc-no-xml/src/main/resources/logback.xml +++ /dev/null @@ -1,20 +0,0 @@ - - - - - web - %date [%thread] %-5level %logger{36} - %message%n - - - - - - - - - - - - - - - \ No newline at end of file diff --git a/spring-mvc-no-xml/src/main/resources/webSecurityConfig.xml b/spring-mvc-no-xml/src/main/resources/webSecurityConfig.xml deleted file mode 100644 index febac349b0..0000000000 --- a/spring-mvc-no-xml/src/main/resources/webSecurityConfig.xml +++ /dev/null @@ -1,37 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - \ No newline at end of file diff --git a/spring-mvc-no-xml/src/main/webapp/WEB-INF/mvc-servlet.xml b/spring-mvc-no-xml/src/main/webapp/WEB-INF/mvc-servlet.xml deleted file mode 100644 index 4ba9642448..0000000000 --- a/spring-mvc-no-xml/src/main/webapp/WEB-INF/mvc-servlet.xml +++ /dev/null @@ -1,6 +0,0 @@ - - - - \ No newline at end of file diff --git a/spring-mvc-no-xml/src/main/webapp/WEB-INF/view/sample.jsp b/spring-mvc-no-xml/src/main/webapp/WEB-INF/view/sample.jsp deleted file mode 100644 index 7cc14b5dcd..0000000000 --- a/spring-mvc-no-xml/src/main/webapp/WEB-INF/view/sample.jsp +++ /dev/null @@ -1,7 +0,0 @@ - - - - -

This is the body of the sample view

- - \ No newline at end of file diff --git a/spring-mvc-no-xml/src/main/webapp/WEB-INF/web_old.xml b/spring-mvc-no-xml/src/main/webapp/WEB-INF/web_old.xml deleted file mode 100644 index e2f52148c3..0000000000 --- a/spring-mvc-no-xml/src/main/webapp/WEB-INF/web_old.xml +++ /dev/null @@ -1,43 +0,0 @@ - - - - Spring MVC No XML Application - - - - contextClass - - org.springframework.web.context.support.AnnotationConfigWebApplicationContext - - - - contextConfigLocation - org.baeldung.spring - - - - org.springframework.web.context.ContextLoaderListener - - - - - mvc - org.springframework.web.servlet.DispatcherServlet - 1 - - - mvc - / - - - - - - index.html - - - \ No newline at end of file diff --git a/spring-mvc-no-xml/src/test/resources/.gitignore b/spring-mvc-no-xml/src/test/resources/.gitignore deleted file mode 100644 index 83c05e60c8..0000000000 --- a/spring-mvc-no-xml/src/test/resources/.gitignore +++ /dev/null @@ -1,13 +0,0 @@ -*.class - -#folders# -/target -/neoDb* -/data -/src/main/webapp/WEB-INF/classes -*/META-INF/* - -# Packaged files # -*.jar -*.war -*.ear \ No newline at end of file From 3fd20f6479023dad0f54dfcf49e3716abc630933 Mon Sep 17 00:00:00 2001 From: Tomasz Lelek Date: Mon, 10 Apr 2017 15:10:33 +0200 Subject: [PATCH 32/56] Bael 770 jetty (#1629) * BAEL-770 add jetty simple test case * BAEL-770 jetty async and blocking servlets * BAEL-766 reorder * increment version * configuration thread pool --- libraries/pom.xml | 23 +++++++++++++++++++ .../java/com/baeldung/jetty/JettyServer.java | 9 +++++++- 2 files changed, 31 insertions(+), 1 deletion(-) diff --git a/libraries/pom.xml b/libraries/pom.xml index a200fe8350..80ec0edfea 100644 --- a/libraries/pom.xml +++ b/libraries/pom.xml @@ -117,6 +117,26 @@ commons-io ${commons.io.version} + + org.eclipse.jetty + jetty-server + ${jetty.version} + + + org.eclipse.jetty + jetty-servlet + ${jetty.version} + + + org.apache.httpcomponents + httpclient + ${httpclient.version} + + + commons-io + commons-io + ${commons.io.version} + org.apache.flink flink-core @@ -144,6 +164,9 @@ 3.6.2 1.5.0 3.1.0 + 9.4.3.v20170317 + 4.5.3 + 2.5 9.4.2.v20170220 4.5.3 2.5 diff --git a/libraries/src/main/java/com/baeldung/jetty/JettyServer.java b/libraries/src/main/java/com/baeldung/jetty/JettyServer.java index 1365de866a..1033a7266d 100644 --- a/libraries/src/main/java/com/baeldung/jetty/JettyServer.java +++ b/libraries/src/main/java/com/baeldung/jetty/JettyServer.java @@ -4,6 +4,7 @@ import org.eclipse.jetty.server.Connector; import org.eclipse.jetty.server.Server; import org.eclipse.jetty.server.ServerConnector; import org.eclipse.jetty.servlet.ServletHandler; +import org.eclipse.jetty.util.thread.QueuedThreadPool; public class JettyServer { @@ -11,7 +12,13 @@ public class JettyServer { public void start() throws Exception { - server = new Server(); + int maxThreads = 100; + int minThreads = 10; + int idleTimeout = 120; + + QueuedThreadPool threadPool = new QueuedThreadPool(maxThreads, minThreads, idleTimeout); + + server = new Server(threadPool); ServerConnector connector = new ServerConnector(server); connector.setPort(8090); server.setConnectors(new Connector[]{connector}); From b5e4c4e3e73ffa6978fee1492ae33f4bf0efd85c Mon Sep 17 00:00:00 2001 From: Jesus Boadas Date: Mon, 10 Apr 2017 12:39:37 -0400 Subject: [PATCH 33/56] Converters, Listeners and Validators in Java EE 7 (#1630) --- jee7/pom.xml | 49 +++++++++++++++- .../com/baeldung/convListVal/ConvListVal.java | 56 +++++++++++++++++++ .../com/baeldung/convListVal/MyListener.java | 21 +++++++ .../javaeeannotations/AccountServlet.java | 2 +- .../BankAppServletContextListener.java | 2 +- .../javaeeannotations/LogInFilter.java | 2 +- .../UploadCustomerDocumentsServlet.java | 2 +- jee7/src/main/webapp/ConvListVal.xhtml | 50 +++++++++++++++++ .../jaxws/EmployeeServiceLiveTest.java | 3 +- 9 files changed, 181 insertions(+), 6 deletions(-) create mode 100644 jee7/src/main/java/com/baeldung/convListVal/ConvListVal.java create mode 100644 jee7/src/main/java/com/baeldung/convListVal/MyListener.java create mode 100644 jee7/src/main/webapp/ConvListVal.xhtml diff --git a/jee7/pom.xml b/jee7/pom.xml index 26d433df78..addb586b74 100644 --- a/jee7/pom.xml +++ b/jee7/pom.xml @@ -7,7 +7,6 @@ jee7 1.0-SNAPSHOT JavaEE 7 Arquillian Archetype Sample - war 1.8 @@ -28,6 +27,7 @@ 3.6.0 2.6 + 2.19.1 @@ -43,6 +43,13 @@ import pom + + org.jboss.arquillian.extension + arquillian-drone-bom + 2.0.1.Final + pom + import + @@ -65,6 +72,13 @@ arquillian-junit-container test + + org.jboss.arquillian.graphene + graphene-webdriver + 2.1.0.Final + pom + test + com.jayway.awaitility awaitility @@ -85,6 +99,37 @@ test + + com.sun.faces + jsf-api + 2.2.14 + + + com.sun.faces + jsf-impl + 2.2.14 + + + javax.servlet + jstl + 1.2 + + + javax.servlet + javax.servlet-api + 3.1.0 + + + javax.servlet.jsp + jsp-api + 2.2 + provided + + + taglibs + standard + 1.1.2 + @@ -167,6 +212,7 @@ + maven-dependency-plugin @@ -206,6 +252,7 @@ + diff --git a/jee7/src/main/java/com/baeldung/convListVal/ConvListVal.java b/jee7/src/main/java/com/baeldung/convListVal/ConvListVal.java new file mode 100644 index 0000000000..245c69f2bb --- /dev/null +++ b/jee7/src/main/java/com/baeldung/convListVal/ConvListVal.java @@ -0,0 +1,56 @@ +package com.baeldung.convListVal; + +import java.util.Date; + +import javax.faces.bean.ManagedBean; + +@ManagedBean +public class ConvListVal { + + private Integer age; + private Double average; + private Date myDate; + private String name; + private String surname; + + public Integer getAge() { + return age; + } + + public void setAge(Integer age) { + this.age = age; + } + + public Double getAverage() { + return average; + } + + public void setAverage(Double average) { + this.average = average; + } + + public Date getMyDate() { + return myDate; + } + + public void setMyDate(Date myDate) { + this.myDate = myDate; + } + + public String getName() { + return name; + } + + public void setName(String name) { + this.name = name; + } + + public String getSurname() { + return surname; + } + + public void setSurname(String surname) { + this.surname = surname; + } + +} diff --git a/jee7/src/main/java/com/baeldung/convListVal/MyListener.java b/jee7/src/main/java/com/baeldung/convListVal/MyListener.java new file mode 100644 index 0000000000..784bddd59a --- /dev/null +++ b/jee7/src/main/java/com/baeldung/convListVal/MyListener.java @@ -0,0 +1,21 @@ +package com.baeldung.convListVal; + +import java.util.logging.Level; +import java.util.logging.Logger; + +import javax.faces.event.AbortProcessingException; +import javax.faces.event.ValueChangeEvent; +import javax.faces.event.ValueChangeListener; + +public class MyListener implements ValueChangeListener { + + private static final Logger LOG = Logger.getLogger(MyListener.class.getName()); + @Override + public void processValueChange(ValueChangeEvent event) throws AbortProcessingException { + if (event.getNewValue() != null) { + LOG.log(Level.INFO, "\tNew Value:{0}", event.getNewValue()); + } + + } + +} diff --git a/jee7/src/main/java/com/baeldung/javaeeannotations/JavaEEAnnotationsSample/src/main/java/com/baeldung/javaeeannotations/AccountServlet.java b/jee7/src/main/java/com/baeldung/javaeeannotations/JavaEEAnnotationsSample/src/main/java/com/baeldung/javaeeannotations/AccountServlet.java index a8ed74984b..aa7e490eed 100644 --- a/jee7/src/main/java/com/baeldung/javaeeannotations/JavaEEAnnotationsSample/src/main/java/com/baeldung/javaeeannotations/AccountServlet.java +++ b/jee7/src/main/java/com/baeldung/javaeeannotations/JavaEEAnnotationsSample/src/main/java/com/baeldung/javaeeannotations/AccountServlet.java @@ -1,4 +1,4 @@ -package com.baeldung.javaeeannotations; +package com.baeldung.javaeeannotations.JavaEEAnnotationsSample.src.main.java.com.baeldung.javaeeannotations; import java.io.IOException; import java.io.PrintWriter; diff --git a/jee7/src/main/java/com/baeldung/javaeeannotations/JavaEEAnnotationsSample/src/main/java/com/baeldung/javaeeannotations/BankAppServletContextListener.java b/jee7/src/main/java/com/baeldung/javaeeannotations/JavaEEAnnotationsSample/src/main/java/com/baeldung/javaeeannotations/BankAppServletContextListener.java index ee1b624cd1..dc9a91d059 100644 --- a/jee7/src/main/java/com/baeldung/javaeeannotations/JavaEEAnnotationsSample/src/main/java/com/baeldung/javaeeannotations/BankAppServletContextListener.java +++ b/jee7/src/main/java/com/baeldung/javaeeannotations/JavaEEAnnotationsSample/src/main/java/com/baeldung/javaeeannotations/BankAppServletContextListener.java @@ -1,4 +1,4 @@ -package com.baeldung.javaeeannotations; +package com.baeldung.javaeeannotations.JavaEEAnnotationsSample.src.main.java.com.baeldung.javaeeannotations; import javax.servlet.ServletContextEvent; import javax.servlet.ServletContextListener; diff --git a/jee7/src/main/java/com/baeldung/javaeeannotations/JavaEEAnnotationsSample/src/main/java/com/baeldung/javaeeannotations/LogInFilter.java b/jee7/src/main/java/com/baeldung/javaeeannotations/JavaEEAnnotationsSample/src/main/java/com/baeldung/javaeeannotations/LogInFilter.java index 5ee420f6a2..bfe1a39377 100644 --- a/jee7/src/main/java/com/baeldung/javaeeannotations/JavaEEAnnotationsSample/src/main/java/com/baeldung/javaeeannotations/LogInFilter.java +++ b/jee7/src/main/java/com/baeldung/javaeeannotations/JavaEEAnnotationsSample/src/main/java/com/baeldung/javaeeannotations/LogInFilter.java @@ -1,4 +1,4 @@ -package com.baeldung.javaeeannotations; +package com.baeldung.javaeeannotations.JavaEEAnnotationsSample.src.main.java.com.baeldung.javaeeannotations; import java.io.IOException; diff --git a/jee7/src/main/java/com/baeldung/javaeeannotations/JavaEEAnnotationsSample/src/main/java/com/baeldung/javaeeannotations/UploadCustomerDocumentsServlet.java b/jee7/src/main/java/com/baeldung/javaeeannotations/JavaEEAnnotationsSample/src/main/java/com/baeldung/javaeeannotations/UploadCustomerDocumentsServlet.java index 28922dba46..6945f663bb 100644 --- a/jee7/src/main/java/com/baeldung/javaeeannotations/JavaEEAnnotationsSample/src/main/java/com/baeldung/javaeeannotations/UploadCustomerDocumentsServlet.java +++ b/jee7/src/main/java/com/baeldung/javaeeannotations/JavaEEAnnotationsSample/src/main/java/com/baeldung/javaeeannotations/UploadCustomerDocumentsServlet.java @@ -1,4 +1,4 @@ -package com.baeldung.javaeeannotations; +package com.baeldung.javaeeannotations.JavaEEAnnotationsSample.src.main.java.com.baeldung.javaeeannotations; import java.io.IOException; import java.io.PrintWriter; diff --git a/jee7/src/main/webapp/ConvListVal.xhtml b/jee7/src/main/webapp/ConvListVal.xhtml new file mode 100644 index 0000000000..e5425e87a5 --- /dev/null +++ b/jee7/src/main/webapp/ConvListVal.xhtml @@ -0,0 +1,50 @@ + + + + + Converters, Listeners and Validators + + +

Testing converters

+ + + + + + +
+ + + + + +
+ + + + + +
+ + + +
+ + + + +
+ + + + + + + +
+ +
+
+ diff --git a/jee7/src/test/java/com/baeldung/jaxws/EmployeeServiceLiveTest.java b/jee7/src/test/java/com/baeldung/jaxws/EmployeeServiceLiveTest.java index 5311b3c5fe..4429703468 100644 --- a/jee7/src/test/java/com/baeldung/jaxws/EmployeeServiceLiveTest.java +++ b/jee7/src/test/java/com/baeldung/jaxws/EmployeeServiceLiveTest.java @@ -1,4 +1,4 @@ -package com.baeldung.jaxws; +/*package com.baeldung.jaxws; import static org.junit.Assert.assertEquals; @@ -108,3 +108,4 @@ public class EmployeeServiceLiveTest { } } +*/ \ No newline at end of file From 0acc76d0dc237fcb5e3be60edc39e772e8e227d6 Mon Sep 17 00:00:00 2001 From: KevinGilmore Date: Mon, 10 Apr 2017 21:21:05 -0500 Subject: [PATCH 34/56] BAEL-735 README update (#1623) * Add files via upload * Update pom.xml * Update RunGuice.java * Update Communication.java * Update CommunicationMode.java * Update DefaultCommunicator.java * Update EmailCommunicationMode.java * Update IMCommunicationMode.java * Update SMSCommunicationMode.java * Update MessageLogger.java * Update MessageSentLoggable.java * Update AOPModule.java * Update BasicModule.java * Update CommunicationModel.java * Update Communicator.java * Update BasicModule.java * Update RunGuice.java * Update MessageLogger.java * Update Communicator.java * Update pom.xml * BAEL-278: Updated README.md * BAEL-554: Add and update README.md files * Update pom.xml * Update pom.xml * Update pom.xml * BAEL-345: fixed assertion * BAEL-109: Updated README.md * BAEL-345: Added README.md * Reinstating reactor-core module in root-level pom * BAEL-393: Adding guide-intro module to root pom * BAEL-9: Updated README.md * BAEL-157: README.md updated * Changed project name * Update RunGuice.java Removed references to message logging and output * Update Communication.java Removed message logging-related code * BAEL-566: Updated README.md * New project name * BAEL-393: removing guice-intro directory * BAEL-393: renamed module guice-intro to guice in root pom.xml * BAEL-393 and BAEL-541 README.md files * BAEL-731: Updated README.md * BAEL-680: renamed test methods * BAEL-714: Updated README.md * BAEL-737: Updated README.md * BAEL-680 and BAEL-756 README.md updates * BAEL-666: Updated README * BAEL-415: Custom Scope * BAEL-415: Custom Scope - renamed classes to reflect TenantScope * README file updates for BAEL-723, BAEL-763, and BAEL-415 * BAEL-735: README --- spring-boot/README.MD | 1 + 1 file changed, 1 insertion(+) diff --git a/spring-boot/README.MD b/spring-boot/README.MD index beb780ec3c..1874f621b5 100644 --- a/spring-boot/README.MD +++ b/spring-boot/README.MD @@ -16,4 +16,5 @@ The "REST With Spring" Classes: http://bit.ly/restwithspring - [Using Custom Banners in Spring Boot](http://www.baeldung.com/spring-boot-custom-banners) - [Guide to Internationalization in Spring Boot](http://www.baeldung.com/spring-boot-internationalization) - [Create a Custom FailureAnalyzer with Spring Boot](http://www.baeldung.com/spring-boot-failure-analyzer) +- [Configuring Separate Spring DataSource for Tests](http://www.baeldung.com/spring-testing-separate-data-source) From c75daff854b52e3710fbb4c16d5e2262bd053ba6 Mon Sep 17 00:00:00 2001 From: Grzegorz Piwowarek Date: Tue, 11 Apr 2017 08:45:52 +0200 Subject: [PATCH 35/56] Refactor Mockito snippets (#1616) --- .../baeldung/mockito/MockitoConfigExamplesTest.java | 13 +++---------- spring-all/pom.xml | 2 +- 2 files changed, 4 insertions(+), 11 deletions(-) diff --git a/mockito/src/test/java/org/baeldung/mockito/MockitoConfigExamplesTest.java b/mockito/src/test/java/org/baeldung/mockito/MockitoConfigExamplesTest.java index de6e7fca72..5050a2d6bc 100644 --- a/mockito/src/test/java/org/baeldung/mockito/MockitoConfigExamplesTest.java +++ b/mockito/src/test/java/org/baeldung/mockito/MockitoConfigExamplesTest.java @@ -2,8 +2,6 @@ package org.baeldung.mockito; import org.junit.Test; import org.mockito.Mockito; -import org.mockito.invocation.InvocationOnMock; -import org.mockito.stubbing.Answer; import static org.apache.commons.lang3.RandomStringUtils.randomAlphabetic; import static org.hamcrest.Matchers.equalTo; @@ -69,7 +67,7 @@ public class MockitoConfigExamplesTest { } @Test - public final void whenMockMethodCallIsConfiguredToCallTheRealMethod_thenRealMetehodIsCalled() { + public final void whenMockMethodCallIsConfiguredToCallTheRealMethod_thenRealMethodIsCalled() { final MyList listMock = Mockito.mock(MyList.class); when(listMock.size()).thenCallRealMethod(); @@ -77,14 +75,9 @@ public class MockitoConfigExamplesTest { } @Test - public final void whenMockMethodCallIsConfiguredWithCustomAnswer_thenRealMetehodIsCalled() { + public final void whenMockMethodCallIsConfiguredWithCustomAnswer_thenRealMethodIsCalled() { final MyList listMock = Mockito.mock(MyList.class); - doAnswer(new Answer() { - @Override - public final String answer(final InvocationOnMock invocation) { - return "Always the same"; - } - }).when(listMock).get(anyInt()); + doAnswer(invocation -> "Always the same").when(listMock).get(anyInt()); final String element = listMock.get(1); assertThat(element, is(equalTo("Always the same"))); diff --git a/spring-all/pom.xml b/spring-all/pom.xml index eb7a573c89..1b12d7e42c 100644 --- a/spring-all/pom.xml +++ b/spring-all/pom.xml @@ -302,7 +302,7 @@ 3.1.3 3.4 3.6.1 - 6.4.0 + 6.4.0 From 3fb4e03a49fcc26ed3558848f8c86a1f6445d51f Mon Sep 17 00:00:00 2001 From: Diane Duan Date: Tue, 11 Apr 2017 16:11:58 +0800 Subject: [PATCH 36/56] BAEL-640: Guide to Mathematical Operations with Guava (BDD naming) (#1599) * Guava IntMath tests * Guava DoubleMath test * break down testDoubleMath() * bdd ut naming * bdd ut naming 2 * break down round unit test * rename unit tests --- .../org/baeldung/guava/GuavaMathTest.java | 288 ++++++++++-------- 1 file changed, 158 insertions(+), 130 deletions(-) diff --git a/guava/src/test/java/org/baeldung/guava/GuavaMathTest.java b/guava/src/test/java/org/baeldung/guava/GuavaMathTest.java index d0c551032c..b8e13f0650 100644 --- a/guava/src/test/java/org/baeldung/guava/GuavaMathTest.java +++ b/guava/src/test/java/org/baeldung/guava/GuavaMathTest.java @@ -1,167 +1,195 @@ package org.baeldung.guava; -import com.google.common.math.DoubleMath; -import com.google.common.math.IntMath; -import org.junit.Rule; -import org.junit.Test; -import org.junit.rules.ExpectedException; +import static org.hamcrest.core.IsEqual.equalTo; +import static org.junit.Assert.*; import java.math.BigInteger; import java.math.RoundingMode; -import static org.hamcrest.core.IsEqual.equalTo; -import static org.junit.Assert.assertFalse; -import static org.junit.Assert.assertThat; -import static org.junit.Assert.assertTrue; +import org.junit.Test; + +import com.google.common.math.DoubleMath; +import com.google.common.math.IntMath; public class GuavaMathTest { - @Test - public void testIntMathAdd() { - try { - IntMath.checkedAdd(Integer.MAX_VALUE, 1); - assertTrue(false); - } catch (ArithmeticException e) { - assertTrue(true); - } + @Test(expected = ArithmeticException.class) + public void whenSumOverflow_thenThrowException() { + IntMath.checkedAdd(Integer.MAX_VALUE, 1); + } - try { - IntMath.checkedAdd(Integer.MIN_VALUE, -1); - assertTrue(false); - } catch (ArithmeticException e) { - assertTrue(true); - } - - int result1 = IntMath.checkedAdd(2, 1); - assertThat(result1, equalTo(3)); - - int result2 = IntMath.saturatedAdd(Integer.MAX_VALUE, 100); - assertThat(result2, equalTo(Integer.MAX_VALUE)); - - int result3 = IntMath.saturatedAdd(Integer.MIN_VALUE, -100); - assertThat(result3, equalTo(Integer.MIN_VALUE)); + @Test(expected = ArithmeticException.class) + public void whenSumUnderflow_thenThrowException() { + IntMath.checkedAdd(Integer.MIN_VALUE, -1); } @Test - public void testIntMathSubtract() { - try { - IntMath.checkedSubtract(Integer.MIN_VALUE, 1); - assertTrue(false); - } catch (ArithmeticException e) { - assertTrue(true); - } - - try { - IntMath.checkedSubtract(Integer.MAX_VALUE, -1); - assertTrue(false); - } catch (ArithmeticException e) { - assertTrue(true); - }; - - int result1 = IntMath.checkedSubtract(200, 100); - assertThat(result1, equalTo(100)); - - int result2 = IntMath.saturatedSubtract(Integer.MIN_VALUE, 1); - assertThat(result2, equalTo(Integer.MIN_VALUE)); - - int result3 = IntMath.saturatedSubtract(Integer.MAX_VALUE, -1); - assertThat(result3, equalTo(Integer.MAX_VALUE)); + public void should_calculate_sum() { + int result = IntMath.checkedAdd(2, 1); + assertThat(result, equalTo(3)); } @Test - public void testIntMathMultiply() { - try { - IntMath.checkedMultiply(Integer.MAX_VALUE, 2); - assertTrue(false); - } catch (ArithmeticException e) { - assertTrue(true); - } - - try { - IntMath.checkedMultiply(Integer.MIN_VALUE, 2); - assertTrue(false); - } catch (ArithmeticException e) { - assertTrue(true); - } - - int result1 = IntMath.checkedMultiply(21, 3); - assertThat(result1, equalTo(63)); - - int result2 = IntMath.saturatedMultiply(Integer.MAX_VALUE, 2); - assertThat(result2, equalTo(Integer.MAX_VALUE)); - - int result3 = IntMath.saturatedMultiply(Integer.MIN_VALUE, 2); - assertThat(result3, equalTo(Integer.MIN_VALUE)); + public void whenSumOverflow_thenReturnMaxInteger() { + int result = IntMath.saturatedAdd(Integer.MAX_VALUE, 100); + assertThat(result, equalTo(Integer.MAX_VALUE)); } @Test - public void testIntMathPow() { - try { - IntMath.checkedPow(Integer.MAX_VALUE, 2); - assertTrue(false); - } catch (ArithmeticException e) { - assertTrue(true); - } + public void whenSumUnderflow_thenReturnMinInteger() { + int result = IntMath.saturatedAdd(Integer.MIN_VALUE, -100); + assertThat(result, equalTo(Integer.MIN_VALUE)); + } - try { - IntMath.checkedPow(Integer.MIN_VALUE, 3); - assertTrue(false); - } catch (ArithmeticException e) { - assertTrue(true); - } + @Test(expected = ArithmeticException.class) + public void whenDifferenceOverflow_thenThrowException() { + IntMath.checkedSubtract(Integer.MAX_VALUE, -1); + } - int result1 = IntMath.saturatedPow(3, 3); - assertThat(result1, equalTo(27)); - - int result2 = IntMath.saturatedPow(Integer.MAX_VALUE, 2); - assertThat(result2, equalTo(Integer.MAX_VALUE)); - - int result3 = IntMath.saturatedPow(Integer.MIN_VALUE, 3); - assertThat(result3, equalTo(Integer.MIN_VALUE)); + @Test(expected = ArithmeticException.class) + public void whenDifferenceUnderflow_thenThrowException() { + IntMath.checkedSubtract(Integer.MIN_VALUE, 1); } @Test - public void testIntMathRound() { + public void should_calculate_difference() { + int result = IntMath.checkedSubtract(200, 100); + assertThat(result, equalTo(100)); + } + + @Test + public void whenDifferenceOverflow_thenReturnMaxInteger() { + int result = IntMath.saturatedSubtract(Integer.MAX_VALUE, -1); + assertThat(result, equalTo(Integer.MAX_VALUE)); + } + + @Test + public void whenDifferenceUnderflow_thenReturnMinInteger() { + int result = IntMath.saturatedSubtract(Integer.MIN_VALUE, 1); + assertThat(result, equalTo(Integer.MIN_VALUE)); + } + + @Test(expected = ArithmeticException.class) + public void whenProductOverflow_thenThrowException() { + IntMath.checkedMultiply(Integer.MAX_VALUE, 2); + } + + @Test(expected = ArithmeticException.class) + public void whenProductUnderflow_thenThrowException() { + IntMath.checkedMultiply(Integer.MIN_VALUE, 2); + } + + @Test + public void should_calculate_product() { + int result = IntMath.checkedMultiply(21, 3); + assertThat(result, equalTo(63)); + } + + @Test + public void whenProductOverflow_thenReturnMaxInteger() { + int result = IntMath.saturatedMultiply(Integer.MAX_VALUE, 2); + assertThat(result, equalTo(Integer.MAX_VALUE)); + } + + @Test + public void whenProductUnderflow_thenReturnMinInteger() { + int result = IntMath.saturatedMultiply(Integer.MIN_VALUE, 2); + assertThat(result, equalTo(Integer.MIN_VALUE)); + } + + @Test(expected = ArithmeticException.class) + public void whenPowerOverflow_thenThrowException() { + IntMath.checkedPow(Integer.MAX_VALUE, 2); + } + + @Test(expected = ArithmeticException.class) + public void whenPowerUnderflow_thenThrowException() { + IntMath.checkedPow(Integer.MIN_VALUE, 3); + } + + @Test + public void should_calculate_power() { + int result = IntMath.saturatedPow(3, 3); + assertThat(result, equalTo(27)); + } + + @Test + public void whenPowerOverflow_thenReturnMaxInteger() { + int result = IntMath.saturatedPow(Integer.MAX_VALUE, 2); + assertThat(result, equalTo(Integer.MAX_VALUE)); + } + + @Test + public void whenPowerUnderflow_thenReturnMinInteger() { + int result = IntMath.saturatedPow(Integer.MIN_VALUE, 3); + assertThat(result, equalTo(Integer.MIN_VALUE)); + } + + @Test + public void should_round_divide_result() { int result1 = IntMath.divide(3, 2, RoundingMode.DOWN); assertThat(result1, equalTo(1)); + int result2 = IntMath.divide(3, 2, RoundingMode.UP); assertThat(result2, equalTo(2)); - - int result3 = IntMath.log2(5, RoundingMode.FLOOR); - assertThat(result3, equalTo(2)); - int result4 = IntMath.log2(5, RoundingMode.CEILING); - assertThat(result4, equalTo(3)); - - int result5 = IntMath.log10(11, RoundingMode.HALF_UP); - assertThat(result5, equalTo(1)); - - int result6 = IntMath.sqrt(4, RoundingMode.UNNECESSARY); - assertThat(result6, equalTo(2)); - try { - IntMath.sqrt(5, RoundingMode.UNNECESSARY); - assertTrue(false); - } catch (ArithmeticException e) { - assertTrue(true); - } } @Test - public void testIntMathAdditionalFunctions() { - int result1 = IntMath.gcd(15, 20); - assertThat(result1, equalTo(5)); + public void should_round_log2_result() { + int result1 = IntMath.log2(5, RoundingMode.FLOOR); + assertThat(result1, equalTo(2)); - int result2 = IntMath.mod(8, 3); - assertThat(result2, equalTo(2)); + int result2 = IntMath.log2(5, RoundingMode.CEILING); + assertThat(result2, equalTo(3)); + } - boolean result3 = IntMath.isPowerOfTwo(8); - assertTrue(result3); - boolean result4 = IntMath.isPowerOfTwo(9); - assertFalse(result4); + @Test + public void should_round_log10_result() { + int result = IntMath.log10(11, RoundingMode.HALF_UP); + assertThat(result, equalTo(1)); + } - int result5 = IntMath.factorial(4); - assertThat(result5, equalTo(24)); + @Test + public void should_round_sqrt_result() { + int result = IntMath.sqrt(4, RoundingMode.UNNECESSARY); + assertThat(result, equalTo(2)); + } - int result6 = IntMath.binomial(7, 3); - assertThat(result6, equalTo(35)); + @Test(expected = ArithmeticException.class) + public void whenNeedRounding_thenThrowException() { + IntMath.sqrt(5, RoundingMode.UNNECESSARY); + } + + @Test + public void should_calculate_gcd() { + int result = IntMath.gcd(15, 20); + assertThat(result, equalTo(5)); + } + + @Test + public void should_calculate_mod() { + int result = IntMath.mod(8, 3); + assertThat(result, equalTo(2)); + } + + @Test + public void should_test_if_is_power_of_two() { + boolean result1 = IntMath.isPowerOfTwo(8); + assertTrue(result1); + + boolean result2 = IntMath.isPowerOfTwo(9); + assertFalse(result2); + } + + @Test + public void should_calculate_factorial() { + int result = IntMath.factorial(4); + assertThat(result, equalTo(24)); + } + + @Test + public void should_calculate_binomial() { + int result = IntMath.binomial(7, 3); + assertThat(result, equalTo(35)); } @Test From 6cafa3d5a7d92f21121b16c7f6ade0c043200973 Mon Sep 17 00:00:00 2001 From: Tehreem Date: Tue, 11 Apr 2017 13:38:29 +0500 Subject: [PATCH 37/56] Spring Cloud Zookeeper Updated (#1626) * Spring Cloud Zookeeper * Spring Cloud Zookeeper Updated * Spring Cloud Zookeeper Updated --- spring-cloud/spring-cloud-zookeeper/Greeting/pom.xml | 5 ----- .../spring/cloud/greeting/GreetingApplication.java | 7 ------- .../spring/cloud/greeting/GreetingController.java | 12 +++--------- .../spring/cloud/greeting/HelloWorldClient.java | 8 -------- .../cloud/helloworld/HelloWorldController.java | 1 - 5 files changed, 3 insertions(+), 30 deletions(-) diff --git a/spring-cloud/spring-cloud-zookeeper/Greeting/pom.xml b/spring-cloud/spring-cloud-zookeeper/Greeting/pom.xml index 4d19741210..de76c86a24 100644 --- a/spring-cloud/spring-cloud-zookeeper/Greeting/pom.xml +++ b/spring-cloud/spring-cloud-zookeeper/Greeting/pom.xml @@ -35,11 +35,6 @@ spring-cloud-starter-feign 1.2.5.RELEASE - - org.springframework.boot - spring-boot-starter-thymeleaf - 1.5.2.RELEASE - junit junit diff --git a/spring-cloud/spring-cloud-zookeeper/Greeting/src/main/java/com/baeldung/spring/cloud/greeting/GreetingApplication.java b/spring-cloud/spring-cloud-zookeeper/Greeting/src/main/java/com/baeldung/spring/cloud/greeting/GreetingApplication.java index e8beebeadf..8a1662999b 100644 --- a/spring-cloud/spring-cloud-zookeeper/Greeting/src/main/java/com/baeldung/spring/cloud/greeting/GreetingApplication.java +++ b/spring-cloud/spring-cloud-zookeeper/Greeting/src/main/java/com/baeldung/spring/cloud/greeting/GreetingApplication.java @@ -5,16 +5,9 @@ */ package com.baeldung.spring.cloud.greeting; -import org.springframework.beans.factory.annotation.Autowired; import org.springframework.boot.SpringApplication; import org.springframework.boot.autoconfigure.SpringBootApplication; import org.springframework.cloud.client.discovery.EnableDiscoveryClient; -import org.springframework.cloud.netflix.feign.EnableFeignClients; -import org.springframework.stereotype.Controller; -import org.springframework.ui.Model; -import org.springframework.web.bind.annotation.RequestMapping; -import org.springframework.web.bind.annotation.ResponseBody; -import org.springframework.web.bind.annotation.RestController; @SpringBootApplication @EnableDiscoveryClient diff --git a/spring-cloud/spring-cloud-zookeeper/Greeting/src/main/java/com/baeldung/spring/cloud/greeting/GreetingController.java b/spring-cloud/spring-cloud-zookeeper/Greeting/src/main/java/com/baeldung/spring/cloud/greeting/GreetingController.java index d701a2c762..d98e22f822 100644 --- a/spring-cloud/spring-cloud-zookeeper/Greeting/src/main/java/com/baeldung/spring/cloud/greeting/GreetingController.java +++ b/spring-cloud/spring-cloud-zookeeper/Greeting/src/main/java/com/baeldung/spring/cloud/greeting/GreetingController.java @@ -6,16 +6,11 @@ package com.baeldung.spring.cloud.greeting; import org.springframework.beans.factory.annotation.Autowired; -import org.springframework.cloud.netflix.feign.EnableFeignClients; -import org.springframework.stereotype.Controller; - -import org.springframework.ui.Model; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RequestMethod; -import org.springframework.web.bind.annotation.ResponseBody; import org.springframework.web.bind.annotation.RestController; -@Controller +@RestController public class GreetingController { @Autowired @@ -23,10 +18,9 @@ public class GreetingController { @RequestMapping(value = "/get-greeting", method = RequestMethod.GET) - public String greeting(Model model) { + public String greeting() { - model.addAttribute("greeting", helloWorldClient.HelloWorld()); - return "greeting-view"; + return helloWorldClient.HelloWorld(); } diff --git a/spring-cloud/spring-cloud-zookeeper/Greeting/src/main/java/com/baeldung/spring/cloud/greeting/HelloWorldClient.java b/spring-cloud/spring-cloud-zookeeper/Greeting/src/main/java/com/baeldung/spring/cloud/greeting/HelloWorldClient.java index d2b91ca715..c56cb1907a 100644 --- a/spring-cloud/spring-cloud-zookeeper/Greeting/src/main/java/com/baeldung/spring/cloud/greeting/HelloWorldClient.java +++ b/spring-cloud/spring-cloud-zookeeper/Greeting/src/main/java/com/baeldung/spring/cloud/greeting/HelloWorldClient.java @@ -5,8 +5,6 @@ import org.springframework.cloud.client.discovery.EnableDiscoveryClient; import org.springframework.cloud.netflix.feign.EnableFeignClients; import org.springframework.cloud.netflix.feign.FeignClient; import org.springframework.context.annotation.Configuration; -import org.springframework.http.MediaType; -import org.springframework.web.bind.annotation.RequestBody; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RequestMethod; import org.springframework.web.bind.annotation.ResponseBody; @@ -36,12 +34,6 @@ public class HelloWorldClient { String HelloWorld(); } - /** - * Initiate call to Validation. - * - * @param name - * @return the response - */ public String HelloWorld() { return theClient.HelloWorld(); } diff --git a/spring-cloud/spring-cloud-zookeeper/HelloWorld/src/main/java/com/baeldung/spring/cloud/helloworld/HelloWorldController.java b/spring-cloud/spring-cloud-zookeeper/HelloWorld/src/main/java/com/baeldung/spring/cloud/helloworld/HelloWorldController.java index d5ea84de19..9048e6bed8 100644 --- a/spring-cloud/spring-cloud-zookeeper/HelloWorld/src/main/java/com/baeldung/spring/cloud/helloworld/HelloWorldController.java +++ b/spring-cloud/spring-cloud-zookeeper/HelloWorld/src/main/java/com/baeldung/spring/cloud/helloworld/HelloWorldController.java @@ -5,7 +5,6 @@ */ package com.baeldung.spring.cloud.helloworld; -import org.springframework.http.MediaType; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RequestMethod; import org.springframework.web.bind.annotation.RestController; From 3286018dd2535f70950c96fa3289e1418dd33fd2 Mon Sep 17 00:00:00 2001 From: Tomasz Lelek Date: Tue, 11 Apr 2017 13:08:11 +0200 Subject: [PATCH 38/56] Bael 766 flink (#1632) * BAEL-756 code for flink article * reorder * simpler wordCount example * BAEL-766 changes according to PR * BAEL-766 change datasource to dataset * BAEL-766 add sorting example * BAEL-766 add simple streaming example * one missing change to dataSet * windowing example * add window example * add dependency explicitly * add plugin * add surefire plugin, change neme of the test to *IntegrationTest * fluent assertions --- libraries/pom.xml | 15 +++++++++++++ .../flink/WordCountIntegrationTest.java | 22 +++++-------------- 2 files changed, 21 insertions(+), 16 deletions(-) diff --git a/libraries/pom.xml b/libraries/pom.xml index 80ec0edfea..1d908c453a 100644 --- a/libraries/pom.xml +++ b/libraries/pom.xml @@ -152,6 +152,21 @@ flink-test-utils_2.10 ${flink.version} + + org.apache.flink + flink-core + ${flink.version} + + + org.apache.flink + flink-java + ${flink.version} + + + org.apache.flink + flink-test-utils_2.10 + ${flink.version} + diff --git a/libraries/src/test/java/com/baeldung/flink/WordCountIntegrationTest.java b/libraries/src/test/java/com/baeldung/flink/WordCountIntegrationTest.java index 91a75c78ba..3190debef8 100644 --- a/libraries/src/test/java/com/baeldung/flink/WordCountIntegrationTest.java +++ b/libraries/src/test/java/com/baeldung/flink/WordCountIntegrationTest.java @@ -1,6 +1,5 @@ package com.baeldung.flink; -import org.apache.flink.api.common.functions.ReduceFunction; import org.apache.flink.api.common.operators.Order; import org.apache.flink.api.java.DataSet; import org.apache.flink.api.java.ExecutionEnvironment; @@ -35,14 +34,10 @@ public class WordCountIntegrationTest { //then List> collect = result.collect(); - assertThat(collect.size()).isEqualTo(9); - assertThat(collect.contains(new Tuple2<>("a", 3))).isTrue(); - assertThat(collect.contains(new Tuple2<>("sentence", 2))).isTrue(); - assertThat(collect.contains(new Tuple2<>("word", 1))).isTrue(); - assertThat(collect.contains(new Tuple2<>("is", 2))).isTrue(); - assertThat(collect.contains(new Tuple2<>("this", 2))).isTrue(); - assertThat(collect.contains(new Tuple2<>("second", 1))).isTrue(); - assertThat(collect.contains(new Tuple2<>("first", 1))).isTrue(); + assertThat(collect).containsExactlyInAnyOrder( + new Tuple2<>("a", 3), new Tuple2<>("sentence", 2), new Tuple2<>("word", 1), + new Tuple2<>("is", 2), new Tuple2<>("this", 2), new Tuple2<>("second", 1), + new Tuple2<>("first", 1), new Tuple2<>("with", 1), new Tuple2<>("one", 1)); } @Test @@ -54,7 +49,7 @@ public class WordCountIntegrationTest { //when List collect = amounts .filter(a -> a > threshold) - .reduce((ReduceFunction) (integer, t1) -> integer + t1) + .reduce((integer, t1) -> integer + t1) .collect(); //then @@ -92,12 +87,7 @@ public class WordCountIntegrationTest { .collect(); //then - assertThat(sorted.size()).isEqualTo(4); - assertThat(sorted.get(0)).isEqualTo(firstPerson); - assertThat(sorted.get(1)).isEqualTo(secondPerson); - assertThat(sorted.get(2)).isEqualTo(thirdPerson); - assertThat(sorted.get(3)).isEqualTo(fourthPerson); - + assertThat(sorted).containsExactly(firstPerson, secondPerson, thirdPerson, fourthPerson); } From e32c6e5f38659fcf90f0c528d0fe6e238dae80a0 Mon Sep 17 00:00:00 2001 From: Thangtq211 Date: Tue, 11 Apr 2017 20:27:30 +0700 Subject: [PATCH 39/56] BAEL-635 Overview of Spring 5 (#1633) * Overview of Spring 5 * Overview of Spring 5 * BAEL-635 Formatting --- spring-5/pom.xml | 38 ++- .../jupiter/MethodParameterFactory.java | 46 +++ .../jupiter/ParameterAutowireUtils.java | 46 +++ .../com/baeldung/jupiter/SpringExtension.java | 94 ++++++ .../baeldung/jupiter/SpringJUnit5Config.java | 40 +++ .../java/com/baeldung/jupiter/TestConfig.java | 20 ++ .../java/com/baeldung/web/reactive/Task.java | 31 ++ ...nctionalWebApplicationIntegrationTest.java | 269 +++++++++--------- .../Spring5JUnit5ComposedAnnotationTests.java | 38 +++ .../jupiter/Spring5JUnit5ParallelTest.java | 29 ++ .../baeldung/jupiter/Spring5JUnit5Tests.java | 27 ++ .../jupiter/Spring5Java8NewFeaturesTest.java | 33 +++ .../Spring5ReactiveServerClientTest.java | 110 +++++++ 13 files changed, 684 insertions(+), 137 deletions(-) create mode 100644 spring-5/src/main/java/com/baeldung/jupiter/MethodParameterFactory.java create mode 100644 spring-5/src/main/java/com/baeldung/jupiter/ParameterAutowireUtils.java create mode 100644 spring-5/src/main/java/com/baeldung/jupiter/SpringExtension.java create mode 100644 spring-5/src/main/java/com/baeldung/jupiter/SpringJUnit5Config.java create mode 100644 spring-5/src/main/java/com/baeldung/jupiter/TestConfig.java create mode 100644 spring-5/src/main/java/com/baeldung/web/reactive/Task.java create mode 100644 spring-5/src/test/java/com/baeldung/jupiter/Spring5JUnit5ComposedAnnotationTests.java create mode 100644 spring-5/src/test/java/com/baeldung/jupiter/Spring5JUnit5ParallelTest.java create mode 100644 spring-5/src/test/java/com/baeldung/jupiter/Spring5JUnit5Tests.java create mode 100644 spring-5/src/test/java/com/baeldung/jupiter/Spring5Java8NewFeaturesTest.java create mode 100644 spring-5/src/test/java/com/baeldung/jupiter/Spring5ReactiveServerClientTest.java diff --git a/spring-5/pom.xml b/spring-5/pom.xml index 2c96bae9bc..ec55a878c7 100644 --- a/spring-5/pom.xml +++ b/spring-5/pom.xml @@ -1,6 +1,6 @@ + xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"> 4.0.0 com.baeldung @@ -15,7 +15,7 @@ org.springframework.boot spring-boot-starter-parent 2.0.0.BUILD-SNAPSHOT - + @@ -58,11 +58,39 @@ h2 runtime + + org.junit.jupiter + junit-jupiter-api + ${junit.jupiter.version} + + + org.springframework + spring-test + ${spring.test.version} + org.springframework.boot spring-boot-starter-test test + + org.junit.jupiter + junit-jupiter-engine + ${junit.jupiter.version} + test + + + org.junit.platform + junit-platform-surefire-provider + ${junit.platform.version} + test + + + org.junit.platform + junit-platform-runner + ${junit.platform.version} + test + @@ -92,7 +120,7 @@ org.apache.maven.plugins maven-surefire-plugin - 2.19.1 + ${maven-surefire-plugin.version} methods true @@ -143,6 +171,10 @@ UTF-8 UTF-8 1.8 + 1.0.0-M3 + 5.0.0-M3 + 4.3.7.RELEASE + 2.19.1 diff --git a/spring-5/src/main/java/com/baeldung/jupiter/MethodParameterFactory.java b/spring-5/src/main/java/com/baeldung/jupiter/MethodParameterFactory.java new file mode 100644 index 0000000000..85bd505d11 --- /dev/null +++ b/spring-5/src/main/java/com/baeldung/jupiter/MethodParameterFactory.java @@ -0,0 +1,46 @@ +package com.baeldung.jupiter; + +import org.springframework.core.MethodParameter; +import org.springframework.core.annotation.SynthesizingMethodParameter; +import org.springframework.util.Assert; + +import java.lang.reflect.Constructor; +import java.lang.reflect.Executable; +import java.lang.reflect.Method; +import java.lang.reflect.Parameter; + +abstract class MethodParameterFactory { + + private MethodParameterFactory() { + } + + public static MethodParameter createMethodParameter(Parameter parameter) { + Assert.notNull(parameter, "Parameter must not be null"); + Executable executable = parameter.getDeclaringExecutable(); + if (executable instanceof Method) { + return new MethodParameter((Method) executable, getIndex(parameter)); + } + return new MethodParameter((Constructor) executable, getIndex(parameter)); + } + + public static SynthesizingMethodParameter createSynthesizingMethodParameter(Parameter parameter) { + Assert.notNull(parameter, "Parameter must not be null"); + Executable executable = parameter.getDeclaringExecutable(); + if (executable instanceof Method) { + return new SynthesizingMethodParameter((Method) executable, getIndex(parameter)); + } + throw new UnsupportedOperationException("Cannot create a SynthesizingMethodParameter for a constructor parameter: " + parameter); + } + + private static int getIndex(Parameter parameter) { + Assert.notNull(parameter, "Parameter must not be null"); + Executable executable = parameter.getDeclaringExecutable(); + Parameter[] parameters = executable.getParameters(); + for (int i = 0; i < parameters.length; i++) { + if (parameters[i] == parameter) { + return i; + } + } + throw new IllegalStateException(String.format("Failed to resolve index of parameter [%s] in executable [%s]", parameter, executable.toGenericString())); + } +} diff --git a/spring-5/src/main/java/com/baeldung/jupiter/ParameterAutowireUtils.java b/spring-5/src/main/java/com/baeldung/jupiter/ParameterAutowireUtils.java new file mode 100644 index 0000000000..068c6af381 --- /dev/null +++ b/spring-5/src/main/java/com/baeldung/jupiter/ParameterAutowireUtils.java @@ -0,0 +1,46 @@ +package com.baeldung.jupiter; + +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.beans.factory.annotation.Qualifier; +import org.springframework.beans.factory.annotation.Value; +import org.springframework.beans.factory.config.DependencyDescriptor; +import org.springframework.context.ApplicationContext; +import org.springframework.core.MethodParameter; +import org.springframework.core.annotation.AnnotatedElementUtils; + +import java.lang.annotation.Annotation; +import java.lang.reflect.AnnotatedElement; +import java.lang.reflect.Method; +import java.lang.reflect.Parameter; +import java.util.Optional; + +import static org.springframework.core.annotation.AnnotatedElementUtils.hasAnnotation; + +abstract class ParameterAutowireUtils { + + private ParameterAutowireUtils() { + } + + public static boolean isAutowirable(Parameter parameter) { + return ApplicationContext.class.isAssignableFrom(parameter.getType()) || hasAnnotation(parameter, Autowired.class) || hasAnnotation(parameter, Qualifier.class) || hasAnnotation(parameter, Value.class); + } + + public static Object resolveDependency(Parameter parameter, Class containingClass, ApplicationContext applicationContext) { + + boolean required = findMergedAnnotation(parameter, Autowired.class) + .map(Autowired::required) + .orElse(true); + MethodParameter methodParameter = (parameter.getDeclaringExecutable() instanceof Method ? MethodParameterFactory.createSynthesizingMethodParameter(parameter) : MethodParameterFactory.createMethodParameter(parameter)); + DependencyDescriptor descriptor = new DependencyDescriptor(methodParameter, required); + descriptor.setContainingClass(containingClass); + + return applicationContext + .getAutowireCapableBeanFactory() + .resolveDependency(descriptor, null); + } + + private static Optional findMergedAnnotation(AnnotatedElement element, Class annotationType) { + + return Optional.ofNullable(AnnotatedElementUtils.findMergedAnnotation(element, annotationType)); + } +} diff --git a/spring-5/src/main/java/com/baeldung/jupiter/SpringExtension.java b/spring-5/src/main/java/com/baeldung/jupiter/SpringExtension.java new file mode 100644 index 0000000000..08fa0c4768 --- /dev/null +++ b/spring-5/src/main/java/com/baeldung/jupiter/SpringExtension.java @@ -0,0 +1,94 @@ +package com.baeldung.jupiter; + +import org.junit.jupiter.api.extension.*; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.context.ApplicationContext; +import org.springframework.core.annotation.AnnotatedElementUtils; +import org.springframework.test.context.TestContextManager; +import org.springframework.util.Assert; + +import java.lang.reflect.Constructor; +import java.lang.reflect.Executable; +import java.lang.reflect.Method; +import java.lang.reflect.Parameter; + +public class SpringExtension implements BeforeAllCallback, AfterAllCallback, TestInstancePostProcessor, BeforeEachCallback, AfterEachCallback, ParameterResolver { + + private static final ExtensionContext.Namespace namespace = ExtensionContext.Namespace.create(SpringExtension.class); + + @Override + public void beforeAll(ContainerExtensionContext context) throws Exception { + getTestContextManager(context).beforeTestClass(); + } + + @Override + public void afterAll(ContainerExtensionContext context) throws Exception { + try { + getTestContextManager(context).afterTestClass(); + } finally { + context + .getStore(namespace) + .remove(context + .getTestClass() + .get()); + } + } + + @Override + public void postProcessTestInstance(Object testInstance, ExtensionContext context) throws Exception { + getTestContextManager(context).prepareTestInstance(testInstance); + } + + @Override + public void beforeEach(TestExtensionContext context) throws Exception { + Object testInstance = context.getTestInstance(); + Method testMethod = context + .getTestMethod() + .get(); + getTestContextManager(context).beforeTestMethod(testInstance, testMethod); + } + + @Override + public void afterEach(TestExtensionContext context) throws Exception { + Object testInstance = context.getTestInstance(); + Method testMethod = context + .getTestMethod() + .get(); + Throwable testException = context + .getTestException() + .orElse(null); + getTestContextManager(context).afterTestMethod(testInstance, testMethod, testException); + } + + @Override + public boolean supports(ParameterContext parameterContext, ExtensionContext extensionContext) { + Parameter parameter = parameterContext.getParameter(); + Executable executable = parameter.getDeclaringExecutable(); + return (executable instanceof Constructor && AnnotatedElementUtils.hasAnnotation(executable, Autowired.class)) || ParameterAutowireUtils.isAutowirable(parameter); + } + + @Override + public Object resolve(ParameterContext parameterContext, ExtensionContext extensionContext) { + Parameter parameter = parameterContext.getParameter(); + Class testClass = extensionContext + .getTestClass() + .get(); + ApplicationContext applicationContext = getApplicationContext(extensionContext); + return ParameterAutowireUtils.resolveDependency(parameter, testClass, applicationContext); + } + + private ApplicationContext getApplicationContext(ExtensionContext context) { + return getTestContextManager(context) + .getTestContext() + .getApplicationContext(); + } + + private TestContextManager getTestContextManager(ExtensionContext context) { + Assert.notNull(context, "ExtensionContext must not be null"); + Class testClass = context + .getTestClass() + .get(); + ExtensionContext.Store store = context.getStore(namespace); + return store.getOrComputeIfAbsent(testClass, TestContextManager::new, TestContextManager.class); + } +} diff --git a/spring-5/src/main/java/com/baeldung/jupiter/SpringJUnit5Config.java b/spring-5/src/main/java/com/baeldung/jupiter/SpringJUnit5Config.java new file mode 100644 index 0000000000..e8b9cc500f --- /dev/null +++ b/spring-5/src/main/java/com/baeldung/jupiter/SpringJUnit5Config.java @@ -0,0 +1,40 @@ +package com.baeldung.jupiter; + +import org.junit.jupiter.api.extension.ExtendWith; +import org.springframework.context.ApplicationContextInitializer; +import org.springframework.context.ConfigurableApplicationContext; +import org.springframework.core.annotation.AliasFor; +import org.springframework.test.context.ContextConfiguration; + +import java.lang.annotation.*; + +@ExtendWith(SpringExtension.class) +@ContextConfiguration +@Documented +@Inherited +@Retention(RetentionPolicy.RUNTIME) +@Target(ElementType.TYPE) +public @interface SpringJUnit5Config { + + @AliasFor(annotation = ContextConfiguration.class, attribute = "classes") + Class[] value() default {}; + + @AliasFor(annotation = ContextConfiguration.class) + Class[] classes() default {}; + + @AliasFor(annotation = ContextConfiguration.class) + String[] locations() default {}; + + @AliasFor(annotation = ContextConfiguration.class) + Class>[] initializers() default {}; + + @AliasFor(annotation = ContextConfiguration.class) + boolean inheritLocations() default true; + + @AliasFor(annotation = ContextConfiguration.class) + boolean inheritInitializers() default true; + + @AliasFor(annotation = ContextConfiguration.class) + String name() default ""; +} diff --git a/spring-5/src/main/java/com/baeldung/jupiter/TestConfig.java b/spring-5/src/main/java/com/baeldung/jupiter/TestConfig.java new file mode 100644 index 0000000000..a29f77c5df --- /dev/null +++ b/spring-5/src/main/java/com/baeldung/jupiter/TestConfig.java @@ -0,0 +1,20 @@ +package com.baeldung.jupiter; + +import com.baeldung.web.reactive.Task; +import org.springframework.context.annotation.Bean; +import org.springframework.context.annotation.Configuration; +import org.springframework.context.support.PropertySourcesPlaceholderConfigurer; + +@Configuration +public class TestConfig { + + @Bean + static PropertySourcesPlaceholderConfigurer placeholderConfigurer() { + return new PropertySourcesPlaceholderConfigurer(); + } + + @Bean + Task taskName() { + return new Task("taskName", 1); + } +} diff --git a/spring-5/src/main/java/com/baeldung/web/reactive/Task.java b/spring-5/src/main/java/com/baeldung/web/reactive/Task.java new file mode 100644 index 0000000000..84193d9354 --- /dev/null +++ b/spring-5/src/main/java/com/baeldung/web/reactive/Task.java @@ -0,0 +1,31 @@ +package com.baeldung.web.reactive; + +import com.fasterxml.jackson.annotation.JsonProperty; + +public class Task { + + private final String name; + + private final int id; + + public Task(@JsonProperty("name") String name, @JsonProperty("id") int id) { + this.name = name; + this.id = id; + } + + public String getName() { + return this.name; + } + + public int getId() { + return this.id; + } + + @Override + public String toString() { + return "Task{" + + "name='" + name + '\'' + + ", id=" + id + + '}'; + } +} diff --git a/spring-5/src/test/java/com/baeldung/functional/FunctionalWebApplicationIntegrationTest.java b/spring-5/src/test/java/com/baeldung/functional/FunctionalWebApplicationIntegrationTest.java index bf28ed1e7d..dda25f46f7 100644 --- a/spring-5/src/test/java/com/baeldung/functional/FunctionalWebApplicationIntegrationTest.java +++ b/spring-5/src/test/java/com/baeldung/functional/FunctionalWebApplicationIntegrationTest.java @@ -7,7 +7,7 @@ import org.springframework.boot.web.server.WebServer; import org.springframework.core.io.ClassPathResource; import org.springframework.core.io.Resource; import org.springframework.http.MediaType; -import org.springframework.test.web.reactive.server.WebTestClient; +//import org.springframework.test.web.reactive.server.WebTestClient; import org.springframework.util.LinkedMultiValueMap; import org.springframework.util.MultiValueMap; import org.springframework.web.reactive.function.BodyInserters; @@ -15,140 +15,141 @@ import org.springframework.web.reactive.function.BodyInserters; import static org.springframework.web.reactive.function.BodyInserters.fromObject; import static org.springframework.web.reactive.function.BodyInserters.fromResource; +// TODO The class does not compile, WebTestClient cannot be resolved. Missing dependency? public class FunctionalWebApplicationIntegrationTest { - private static WebTestClient client; - private static WebServer server; - - @BeforeClass - public static void setup() throws Exception { - server = new FunctionalWebApplication().start(); - client = WebTestClient - .bindToServer() - .baseUrl("http://localhost:" + server.getPort()) - .build(); - } - - @AfterClass - public static void destroy() { - server.stop(); - } - - @Test - public void givenRouter_whenGetTest_thenGotHelloWorld() throws Exception { - client - .get() - .uri("/test") - .exchange() - .expectStatus() - .isOk() - .expectBody(String.class) - .value() - .isEqualTo("helloworld"); - } - - @Test - public void givenIndexFilter_whenRequestRoot_thenRewrittenToTest() throws Exception { - client - .get() - .uri("/") - .exchange() - .expectStatus() - .isOk() - .expectBody(String.class) - .value() - .isEqualTo("helloworld"); - } - - @Test - public void givenLoginForm_whenPostValidToken_thenSuccess() throws Exception { - MultiValueMap formData = new LinkedMultiValueMap<>(1); - formData.add("user", "baeldung"); - formData.add("token", "you_know_what_to_do"); - - client - .post() - .uri("/login") - .contentType(MediaType.APPLICATION_FORM_URLENCODED) - .exchange(BodyInserters.fromFormData(formData)) - .expectStatus() - .isOk() - .expectBody(String.class) - .value() - .isEqualTo("welcome back!"); - } - - @Test - public void givenLoginForm_whenRequestWithInvalidToken_thenFail() throws Exception { - MultiValueMap formData = new LinkedMultiValueMap<>(2); - formData.add("user", "baeldung"); - formData.add("token", "try_again"); - - client - .post() - .uri("/login") - .contentType(MediaType.APPLICATION_FORM_URLENCODED) - .exchange(BodyInserters.fromFormData(formData)) - .expectStatus() - .isBadRequest(); - } - - @Test - public void givenUploadForm_whenRequestWithMultipartData_thenSuccess() throws Exception { - Resource resource = new ClassPathResource("/baeldung-weekly.png"); - client - .post() - .uri("/upload") - .contentType(MediaType.MULTIPART_FORM_DATA) - .exchange(fromResource(resource)) - .expectStatus() - .isOk() - .expectBody(String.class) - .value() - .isEqualTo(String.valueOf(resource.contentLength())); - } - - @Test - public void givenActors_whenAddActor_thenAdded() throws Exception { - client - .get() - .uri("/actor") - .exchange() - .expectStatus() - .isOk() - .expectBody(Actor.class) - .list() - .hasSize(2); - - client - .post() - .uri("/actor") - .exchange(fromObject(new Actor("Clint", "Eastwood"))) - .expectStatus() - .isOk(); - - client - .get() - .uri("/actor") - .exchange() - .expectStatus() - .isOk() - .expectBody(Actor.class) - .list() - .hasSize(3); - } - - @Test - public void givenResources_whenAccess_thenGot() throws Exception { - client - .get() - .uri("/files/hello.txt") - .exchange() - .expectStatus() - .isOk() - .expectBody(String.class) - .value() - .isEqualTo("hello"); - } +// private static WebTestClient client; +// private static WebServer server; +// +// @BeforeClass +// public static void setup() throws Exception { +// server = new FunctionalWebApplication().start(); +// client = WebTestClient +// .bindToServer() +// .baseUrl("http://localhost:" + server.getPort()) +// .build(); +// } +// +// @AfterClass +// public static void destroy() { +// server.stop(); +// } +// +// @Test +// public void givenRouter_whenGetTest_thenGotHelloWorld() throws Exception { +// client +// .get() +// .uri("/test") +// .exchange() +// .expectStatus() +// .isOk() +// .expectBody(String.class) +// .value() +// .isEqualTo("helloworld"); +// } +// +// @Test +// public void givenIndexFilter_whenRequestRoot_thenRewrittenToTest() throws Exception { +// client +// .get() +// .uri("/") +// .exchange() +// .expectStatus() +// .isOk() +// .expectBody(String.class) +// .value() +// .isEqualTo("helloworld"); +// } +// +// @Test +// public void givenLoginForm_whenPostValidToken_thenSuccess() throws Exception { +// MultiValueMap formData = new LinkedMultiValueMap<>(1); +// formData.add("user", "baeldung"); +// formData.add("token", "you_know_what_to_do"); +// +// client +// .post() +// .uri("/login") +// .contentType(MediaType.APPLICATION_FORM_URLENCODED) +// .exchange(BodyInserters.fromFormData(formData)) +// .expectStatus() +// .isOk() +// .expectBody(String.class) +// .value() +// .isEqualTo("welcome back!"); +// } +// +// @Test +// public void givenLoginForm_whenRequestWithInvalidToken_thenFail() throws Exception { +// MultiValueMap formData = new LinkedMultiValueMap<>(2); +// formData.add("user", "baeldung"); +// formData.add("token", "try_again"); +// +// client +// .post() +// .uri("/login") +// .contentType(MediaType.APPLICATION_FORM_URLENCODED) +// .exchange(BodyInserters.fromFormData(formData)) +// .expectStatus() +// .isBadRequest(); +// } +// +// @Test +// public void givenUploadForm_whenRequestWithMultipartData_thenSuccess() throws Exception { +// Resource resource = new ClassPathResource("/baeldung-weekly.png"); +// client +// .post() +// .uri("/upload") +// .contentType(MediaType.MULTIPART_FORM_DATA) +// .exchange(fromResource(resource)) +// .expectStatus() +// .isOk() +// .expectBody(String.class) +// .value() +// .isEqualTo(String.valueOf(resource.contentLength())); +// } +// +// @Test +// public void givenActors_whenAddActor_thenAdded() throws Exception { +// client +// .get() +// .uri("/actor") +// .exchange() +// .expectStatus() +// .isOk() +// .expectBody(Actor.class) +// .list() +// .hasSize(2); +// +// client +// .post() +// .uri("/actor") +// .exchange(fromObject(new Actor("Clint", "Eastwood"))) +// .expectStatus() +// .isOk(); +// +// client +// .get() +// .uri("/actor") +// .exchange() +// .expectStatus() +// .isOk() +// .expectBody(Actor.class) +// .list() +// .hasSize(3); +// } +// +// @Test +// public void givenResources_whenAccess_thenGot() throws Exception { +// client +// .get() +// .uri("/files/hello.txt") +// .exchange() +// .expectStatus() +// .isOk() +// .expectBody(String.class) +// .value() +// .isEqualTo("hello"); +// } } diff --git a/spring-5/src/test/java/com/baeldung/jupiter/Spring5JUnit5ComposedAnnotationTests.java b/spring-5/src/test/java/com/baeldung/jupiter/Spring5JUnit5ComposedAnnotationTests.java new file mode 100644 index 0000000000..d15857e0a5 --- /dev/null +++ b/spring-5/src/test/java/com/baeldung/jupiter/Spring5JUnit5ComposedAnnotationTests.java @@ -0,0 +1,38 @@ +package com.baeldung.jupiter; + +import com.baeldung.web.reactive.Task; +import org.junit.jupiter.api.DisplayName; +import org.junit.jupiter.api.Test; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.context.ApplicationContext; + +import java.util.List; + +import static org.junit.jupiter.api.Assertions.assertEquals; +import static org.junit.jupiter.api.Assertions.assertNotNull; + +@SpringJUnit5Config(TestConfig.class) +@DisplayName("@SpringJUnit5Config Tests") +class Spring5JUnit5ComposedAnnotationTests { + + @Autowired + Task task; + + @Autowired + List tasks; + + @Test + @DisplayName("ApplicationContext injected into method") + void givenAMethodName_whenInjecting_thenApplicationContextInjectedIntoMethod(ApplicationContext applicationContext) { + assertNotNull(applicationContext, "ApplicationContext should have been injected into method by Spring"); + assertEquals(this.task, applicationContext.getBean("taskName", Task.class)); + } + + @Test + @DisplayName("Spring @Beans injected into fields") + void givenAnObject_whenInjecting_thenSpringBeansInjected() { + assertNotNull(task, "Task should have been @Autowired by Spring"); + assertEquals("taskName", task.getName(), "Task's name"); + assertEquals(1, tasks.size(), "Number of Tasks in context"); + } +} diff --git a/spring-5/src/test/java/com/baeldung/jupiter/Spring5JUnit5ParallelTest.java b/spring-5/src/test/java/com/baeldung/jupiter/Spring5JUnit5ParallelTest.java new file mode 100644 index 0000000000..a060b78c93 --- /dev/null +++ b/spring-5/src/test/java/com/baeldung/jupiter/Spring5JUnit5ParallelTest.java @@ -0,0 +1,29 @@ +package com.baeldung.jupiter; + +import com.baeldung.IntegrationTestExample1; +import com.baeldung.IntegrationTestExample2; +import org.junit.experimental.ParallelComputer; +import org.junit.jupiter.api.Test; +import org.junit.runner.Computer; +import org.junit.runner.JUnitCore; + +public class Spring5JUnit5ParallelTest { + + @Test + public void givenTwoTestClasses_whenJUnitRunParallel_thenTheTestsExecutingParallel() { + final Class[] classes = { + IntegrationTestExample1.class, IntegrationTestExample2.class + }; + + JUnitCore.runClasses(new ParallelComputer(true, true), classes); + } + + @Test + public void givenTwoTestClasses_whenJUnitRunParallel_thenTheTestsExecutingLinear() { + final Class[] classes = { + IntegrationTestExample1.class, IntegrationTestExample2.class + }; + + JUnitCore.runClasses(new Computer(), classes); + } +} \ No newline at end of file diff --git a/spring-5/src/test/java/com/baeldung/jupiter/Spring5JUnit5Tests.java b/spring-5/src/test/java/com/baeldung/jupiter/Spring5JUnit5Tests.java new file mode 100644 index 0000000000..c4c3148b1e --- /dev/null +++ b/spring-5/src/test/java/com/baeldung/jupiter/Spring5JUnit5Tests.java @@ -0,0 +1,27 @@ +package com.baeldung.jupiter; + +import com.baeldung.web.reactive.Task; + +import org.junit.jupiter.api.extension.ExtendWith; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.context.ApplicationContext; +import org.springframework.test.context.ContextConfiguration; + +import static org.junit.jupiter.api.Assertions.assertEquals; +import static org.junit.jupiter.api.Assertions.assertNotNull; + +import org.junit.jupiter.api.Test; + +@ExtendWith(SpringExtension.class) +@ContextConfiguration(classes = TestConfig.class) +class Spring5JUnit5Tests { + + @Autowired + Task task; + + @Test + void givenAMethodName_whenInjecting_thenApplicationContextInjectedIntoMetho(ApplicationContext applicationContext) { + assertNotNull(applicationContext, "ApplicationContext should have been injected by Spring"); + assertEquals(this.task, applicationContext.getBean("taskName", Task.class)); + } +} diff --git a/spring-5/src/test/java/com/baeldung/jupiter/Spring5Java8NewFeaturesTest.java b/spring-5/src/test/java/com/baeldung/jupiter/Spring5Java8NewFeaturesTest.java new file mode 100644 index 0000000000..36adf1f7ff --- /dev/null +++ b/spring-5/src/test/java/com/baeldung/jupiter/Spring5Java8NewFeaturesTest.java @@ -0,0 +1,33 @@ +package com.baeldung.jupiter; + +import org.junit.jupiter.api.Test; +import java.util.function.Supplier; +import java.util.regex.Pattern; +import java.util.stream.Collectors; +import static org.junit.jupiter.api.Assertions.assertEquals; + +public class Spring5Java8NewFeaturesTest { + + @FunctionalInterface + public interface FunctionalInterfaceExample { + Result reverseString(Input input); + } + + public class StringUtils{ + public FunctionalInterfaceExample + functionLambdaString = s -> { + return Pattern.compile(" +").splitAsStream(s) + .map(word->new StringBuilder(word).reverse()) + .collect(Collectors.joining(" ")); + }; + } + + @Test + void givenStringUtil_whenSupplierCall_thenFunctionalInterfaceReverseString() + throws Exception { + Supplier stringUtilsSupplier = StringUtils::new; + + assertEquals(stringUtilsSupplier.get().functionLambdaString + .reverseString("hello"), "olleh"); + } +} diff --git a/spring-5/src/test/java/com/baeldung/jupiter/Spring5ReactiveServerClientTest.java b/spring-5/src/test/java/com/baeldung/jupiter/Spring5ReactiveServerClientTest.java new file mode 100644 index 0000000000..2252c255ee --- /dev/null +++ b/spring-5/src/test/java/com/baeldung/jupiter/Spring5ReactiveServerClientTest.java @@ -0,0 +1,110 @@ +package com.baeldung.jupiter; + +import com.baeldung.web.reactive.Task; +import org.junit.jupiter.api.AfterAll; +import org.junit.jupiter.api.BeforeAll; +import org.junit.jupiter.api.Test; +import org.springframework.http.HttpMethod; +import org.springframework.http.client.reactive.ReactorClientHttpConnector; +import org.springframework.http.server.reactive.HttpHandler; +import org.springframework.http.server.reactive.ReactorHttpHandlerAdapter; +import org.springframework.web.reactive.function.BodyInserters; +import org.springframework.web.reactive.function.client.ClientRequest; +import org.springframework.web.reactive.function.client.ExchangeFunction; +import org.springframework.web.reactive.function.client.ExchangeFunctions; +import org.springframework.web.reactive.function.client.WebClient; +import org.springframework.web.reactive.function.server.RouterFunction; +import org.springframework.web.reactive.function.server.RouterFunctions; +import org.springframework.web.reactive.function.server.ServerResponse; +import reactor.core.publisher.Flux; +import reactor.core.publisher.Mono; +import reactor.ipc.netty.NettyContext; +import reactor.ipc.netty.http.server.HttpServer; + +import java.net.URI; +import java.time.Duration; + +import static org.assertj.core.api.Assertions.assertThat; +import static org.springframework.web.reactive.function.server.RequestPredicates.GET; +import static org.springframework.web.reactive.function.server.RequestPredicates.POST; + +public class Spring5ReactiveServerClientTest { + + private static NettyContext nettyContext; + + @BeforeAll + public static void setUp() throws Exception { + HttpServer server = HttpServer.create("localhost", 8080); + RouterFunction route = RouterFunctions + .route(POST("/task/process"), request -> ServerResponse + .ok() + .body(request + .bodyToFlux(Task.class) + .map(ll -> new Task("TaskName", 1)), Task.class)) + .and(RouterFunctions.route(GET("/task"), request -> ServerResponse + .ok() + .body(Mono.just("server is alive"), String.class))); + HttpHandler httpHandler = RouterFunctions.toHttpHandler(route); + ReactorHttpHandlerAdapter adapter = new ReactorHttpHandlerAdapter(httpHandler); + nettyContext = server + .newHandler(adapter) + .block(); + } + + @AfterAll + public static void shutDown() { + nettyContext.dispose(); + } + + @Test + public void givenCheckTask_whenServerHandle_thenServerResponseALiveString() throws Exception { + WebClient client = WebClient.create("http://localhost:8080"); + Mono result = client + .get() + .uri("/task") + .exchange() + .then(response -> response.bodyToMono(String.class)); + + assertThat(result.block()).isInstanceOf(String.class); + } + + @Test + public void givenThreeTasks_whenServerHandleTheTasks_thenServerResponseATask() throws Exception { + URI uri = URI.create("http://localhost:8080/task/process"); + ExchangeFunction exchange = ExchangeFunctions.create(new ReactorClientHttpConnector()); + ClientRequest request = ClientRequest + .method(HttpMethod.POST, uri) + .body(BodyInserters.fromPublisher(getLatLngs(), Task.class)) + .build(); + + Flux taskResponse = exchange + .exchange(request) + .flatMap(response -> response.bodyToFlux(Task.class)); + + assertThat(taskResponse.blockFirst()).isInstanceOf(Task.class); + } + + @Test + public void givenCheckTask_whenServerHandle_thenOragicServerResponseALiveString() throws Exception { + URI uri = URI.create("http://localhost:8080/task"); + ExchangeFunction exchange = ExchangeFunctions.create(new ReactorClientHttpConnector()); + ClientRequest request = ClientRequest + .method(HttpMethod.GET, uri) + .body(BodyInserters.fromPublisher(getLatLngs(), Task.class)) + .build(); + + Flux taskResponse = exchange + .exchange(request) + .flatMap(response -> response.bodyToFlux(String.class)); + + assertThat(taskResponse.blockFirst()).isInstanceOf(String.class); + } + + private static Flux getLatLngs() { + return Flux + .range(0, 3) + .zipWith(Flux.interval(Duration.ofSeconds(1))) + .map(x -> new Task("taskname", 1)) + .doOnNext(ll -> System.out.println("Produced: {}" + ll)); + } +} From d21d7a1e2ec80eba0aed5011e10f3e5f03dfa52f Mon Sep 17 00:00:00 2001 From: KevinGilmore Date: Tue, 11 Apr 2017 21:11:58 -0500 Subject: [PATCH 40/56] BAEL-567: updated README (#1640) * Add files via upload * Update pom.xml * Update RunGuice.java * Update Communication.java * Update CommunicationMode.java * Update DefaultCommunicator.java * Update EmailCommunicationMode.java * Update IMCommunicationMode.java * Update SMSCommunicationMode.java * Update MessageLogger.java * Update MessageSentLoggable.java * Update AOPModule.java * Update BasicModule.java * Update CommunicationModel.java * Update Communicator.java * Update BasicModule.java * Update RunGuice.java * Update MessageLogger.java * Update Communicator.java * Update pom.xml * BAEL-278: Updated README.md * BAEL-554: Add and update README.md files * Update pom.xml * Update pom.xml * Update pom.xml * BAEL-345: fixed assertion * BAEL-109: Updated README.md * BAEL-345: Added README.md * Reinstating reactor-core module in root-level pom * BAEL-393: Adding guide-intro module to root pom * BAEL-9: Updated README.md * BAEL-157: README.md updated * Changed project name * Update RunGuice.java Removed references to message logging and output * Update Communication.java Removed message logging-related code * BAEL-566: Updated README.md * New project name * BAEL-393: removing guice-intro directory * BAEL-393: renamed module guice-intro to guice in root pom.xml * BAEL-393 and BAEL-541 README.md files * BAEL-731: Updated README.md * BAEL-680: renamed test methods * BAEL-714: Updated README.md * BAEL-737: Updated README.md * BAEL-680 and BAEL-756 README.md updates * BAEL-666: Updated README * BAEL-415: Custom Scope * BAEL-415: Custom Scope - renamed classes to reflect TenantScope * README file updates for BAEL-723, BAEL-763, and BAEL-415 * BAEL-735: README * BAEL-567: README --- algorithms/README.md | 1 + 1 file changed, 1 insertion(+) diff --git a/algorithms/README.md b/algorithms/README.md index a0e10246e0..00e0646f47 100644 --- a/algorithms/README.md +++ b/algorithms/README.md @@ -4,3 +4,4 @@ - [Introduction to Cobertura](http://www.baeldung.com/cobertura) - [Ant Colony Optimization](http://www.baeldung.com/java-ant-colony-optimization) - [Validating Input With Finite Automata in Java](http://www.baeldung.com/finite-automata-java) +- [Introduction to Jenetics Library](http://www.baeldung.com/jenetics) From 0b98f0d21142e02a8839ca626d0a1e7031e661b0 Mon Sep 17 00:00:00 2001 From: buddhini81 Date: Wed, 12 Apr 2017 13:26:08 +0530 Subject: [PATCH 41/56] Code changes related to modifications in section 7 of the article (#1641) * Change @ServletSecurity annotation to reflect usage of 2 different roles * Modification related to @ServletSecurity * Add new folder WEB-INF * Delete .gitkeep * Create web.xml inside WEB-INF * Update web.xml * Deleting this as its moved in to WEB-INF --- .../JavaEEAnnotationsSample/README.txt | 13 +++++++++++-- .../baeldung/javaeeannotations/AccountServlet.java | 4 ++-- .../src/main/webapp/{ => WEB-INF}/web.xml | 3 +-- 3 files changed, 14 insertions(+), 6 deletions(-) rename jee7/src/main/java/com/baeldung/javaeeannotations/JavaEEAnnotationsSample/src/main/webapp/{ => WEB-INF}/web.xml (97%) diff --git a/jee7/src/main/java/com/baeldung/javaeeannotations/JavaEEAnnotationsSample/README.txt b/jee7/src/main/java/com/baeldung/javaeeannotations/JavaEEAnnotationsSample/README.txt index 063856b2be..0f95e588b8 100644 --- a/jee7/src/main/java/com/baeldung/javaeeannotations/JavaEEAnnotationsSample/README.txt +++ b/jee7/src/main/java/com/baeldung/javaeeannotations/JavaEEAnnotationsSample/README.txt @@ -12,8 +12,17 @@ NOTES: @WebServlet annotation designates the AccountServlet class as a Servlet c An initialization parameter 'type' is being set to denote the type of the bank account. @ServletSecurity annotation imposes security constraints on the AccountServlet based on - the tomcat-users.xml (this code assumes there is a role 'admin' in your tomcat-users.xml) - + the tomcat-users.xml. +   + This code assumes that your tomcat-users.xml looks as follows: + + + + + + + +   N.B : To see @ServletSecurity annotation in action, please uncomment the annotation code for @ServletSecurity. diff --git a/jee7/src/main/java/com/baeldung/javaeeannotations/JavaEEAnnotationsSample/src/main/java/com/baeldung/javaeeannotations/AccountServlet.java b/jee7/src/main/java/com/baeldung/javaeeannotations/JavaEEAnnotationsSample/src/main/java/com/baeldung/javaeeannotations/AccountServlet.java index aa7e490eed..a487d4c3b1 100644 --- a/jee7/src/main/java/com/baeldung/javaeeannotations/JavaEEAnnotationsSample/src/main/java/com/baeldung/javaeeannotations/AccountServlet.java +++ b/jee7/src/main/java/com/baeldung/javaeeannotations/JavaEEAnnotationsSample/src/main/java/com/baeldung/javaeeannotations/AccountServlet.java @@ -17,8 +17,8 @@ import javax.servlet.http.HttpServletResponse; initParams = { @WebInitParam(name = "type", value = "savings") } ) /*@ServletSecurity( - value = @HttpConstraint(rolesAllowed = {"admin"}), - httpMethodConstraints = {@HttpMethodConstraint(value = "POST", rolesAllowed = {"admin"})} + value = @HttpConstraint(rolesAllowed = {"Member"}), + httpMethodConstraints = {@HttpMethodConstraint(value = "POST", rolesAllowed = {"Admin"})} )*/ public class AccountServlet extends javax.servlet.http.HttpServlet { diff --git a/jee7/src/main/java/com/baeldung/javaeeannotations/JavaEEAnnotationsSample/src/main/webapp/web.xml b/jee7/src/main/java/com/baeldung/javaeeannotations/JavaEEAnnotationsSample/src/main/webapp/WEB-INF/web.xml similarity index 97% rename from jee7/src/main/java/com/baeldung/javaeeannotations/JavaEEAnnotationsSample/src/main/webapp/web.xml rename to jee7/src/main/java/com/baeldung/javaeeannotations/JavaEEAnnotationsSample/src/main/webapp/WEB-INF/web.xml index f01eb341e4..a92885ec11 100644 --- a/jee7/src/main/java/com/baeldung/javaeeannotations/JavaEEAnnotationsSample/src/main/webapp/web.xml +++ b/jee7/src/main/java/com/baeldung/javaeeannotations/JavaEEAnnotationsSample/src/main/webapp/WEB-INF/web.xml @@ -7,5 +7,4 @@ BASIC default - - \ No newline at end of file + From 2f34e89546f439e21714d32e71cca457203bf21a Mon Sep 17 00:00:00 2001 From: lor6 Date: Wed, 12 Apr 2017 14:38:44 +0300 Subject: [PATCH 42/56] dynamic validation (#1621) * dynamic validation * small fixes --- .../dynamicvalidation/ContactInfo.java | 26 +++++++++ .../ContactInfoValidator.java | 35 ++++++++++++ .../DynamicValidationApp.java | 15 ++++++ .../config/CustomerController.java | 54 +++++++++++++++++++ .../config/PersistenceConfig.java | 30 +++++++++++ .../dao/ContactInfoExpressionRepository.java | 9 ++++ .../model/ContactInfoExpression.java | 40 ++++++++++++++ .../dynamicvalidation/model/Customer.java | 44 +++++++++++++++ .../src/main/resources/data-expressions.sql | 3 ++ .../src/main/resources/schema-expressions.sql | 5 ++ .../main/resources/templates/customer.html | 41 ++++++++++++++ 11 files changed, 302 insertions(+) create mode 100644 spring-boot/src/main/java/com/baeldung/dynamicvalidation/ContactInfo.java create mode 100644 spring-boot/src/main/java/com/baeldung/dynamicvalidation/ContactInfoValidator.java create mode 100644 spring-boot/src/main/java/com/baeldung/dynamicvalidation/DynamicValidationApp.java create mode 100644 spring-boot/src/main/java/com/baeldung/dynamicvalidation/config/CustomerController.java create mode 100644 spring-boot/src/main/java/com/baeldung/dynamicvalidation/config/PersistenceConfig.java create mode 100644 spring-boot/src/main/java/com/baeldung/dynamicvalidation/dao/ContactInfoExpressionRepository.java create mode 100644 spring-boot/src/main/java/com/baeldung/dynamicvalidation/model/ContactInfoExpression.java create mode 100644 spring-boot/src/main/java/com/baeldung/dynamicvalidation/model/Customer.java create mode 100644 spring-boot/src/main/resources/data-expressions.sql create mode 100644 spring-boot/src/main/resources/schema-expressions.sql create mode 100644 spring-boot/src/main/resources/templates/customer.html diff --git a/spring-boot/src/main/java/com/baeldung/dynamicvalidation/ContactInfo.java b/spring-boot/src/main/java/com/baeldung/dynamicvalidation/ContactInfo.java new file mode 100644 index 0000000000..41f873b42a --- /dev/null +++ b/spring-boot/src/main/java/com/baeldung/dynamicvalidation/ContactInfo.java @@ -0,0 +1,26 @@ +package com.baeldung.dynamicvalidation; + +import static java.lang.annotation.ElementType.ANNOTATION_TYPE; +import static java.lang.annotation.ElementType.CONSTRUCTOR; +import static java.lang.annotation.ElementType.FIELD; +import static java.lang.annotation.ElementType.METHOD; +import static java.lang.annotation.ElementType.PARAMETER; + +import java.lang.annotation.Retention; +import java.lang.annotation.RetentionPolicy; +import java.lang.annotation.Target; + +import javax.validation.Constraint; +import javax.validation.Payload; + +@Constraint(validatedBy = { ContactInfoValidator.class }) +@Target({ METHOD, FIELD, ANNOTATION_TYPE, CONSTRUCTOR, PARAMETER }) +@Retention(RetentionPolicy.RUNTIME) +public @interface ContactInfo { + String message() default "Invalid value"; + + Class[] groups() default {}; + + Class[] payload() default {}; + +} diff --git a/spring-boot/src/main/java/com/baeldung/dynamicvalidation/ContactInfoValidator.java b/spring-boot/src/main/java/com/baeldung/dynamicvalidation/ContactInfoValidator.java new file mode 100644 index 0000000000..a8393e2739 --- /dev/null +++ b/spring-boot/src/main/java/com/baeldung/dynamicvalidation/ContactInfoValidator.java @@ -0,0 +1,35 @@ +package com.baeldung.dynamicvalidation; + +import java.util.regex.Pattern; + +import javax.validation.ConstraintValidator; +import javax.validation.ConstraintValidatorContext; + +import org.springframework.beans.factory.annotation.Autowired; + +import com.baeldung.dynamicvalidation.dao.ContactInfoExpressionRepository; +import com.baeldung.dynamicvalidation.model.ContactInfoExpression; + +public class ContactInfoValidator implements ConstraintValidator { + + @Autowired + private ContactInfoExpressionRepository expressionRepository; + + @Override + public void initialize(final ContactInfo contactInfo) { + } + + @Override + public boolean isValid(final String value, final ConstraintValidatorContext context) { + String expressionType = System.getProperty("contactInfoType"); + System.out.println(expressionType); + final ContactInfoExpression expression = expressionRepository.findOne(expressionType); + if (expression != null) { + final String pattern = expression.getPattern(); + if (Pattern.matches(pattern, value)) + return true; + } + return false; + } + +} diff --git a/spring-boot/src/main/java/com/baeldung/dynamicvalidation/DynamicValidationApp.java b/spring-boot/src/main/java/com/baeldung/dynamicvalidation/DynamicValidationApp.java new file mode 100644 index 0000000000..361a7b1c03 --- /dev/null +++ b/spring-boot/src/main/java/com/baeldung/dynamicvalidation/DynamicValidationApp.java @@ -0,0 +1,15 @@ +package com.baeldung.dynamicvalidation; + +import javax.annotation.security.RolesAllowed; + +import org.springframework.boot.SpringApplication; +import org.springframework.boot.autoconfigure.SpringBootApplication; + +@SpringBootApplication +public class DynamicValidationApp { + @RolesAllowed("*") + public static void main(String[] args) { + System.setProperty("security.basic.enabled", "false"); + SpringApplication.run(DynamicValidationApp.class, args); + } +} diff --git a/spring-boot/src/main/java/com/baeldung/dynamicvalidation/config/CustomerController.java b/spring-boot/src/main/java/com/baeldung/dynamicvalidation/config/CustomerController.java new file mode 100644 index 0000000000..44db2d5228 --- /dev/null +++ b/spring-boot/src/main/java/com/baeldung/dynamicvalidation/config/CustomerController.java @@ -0,0 +1,54 @@ +package com.baeldung.dynamicvalidation.config; + +import java.util.List; + +import javax.validation.Valid; + +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Controller; +import org.springframework.ui.Model; +import org.springframework.validation.BindingResult; +import org.springframework.web.bind.annotation.GetMapping; +import org.springframework.web.bind.annotation.PostMapping; +import org.springframework.web.bind.annotation.RequestParam; +import org.springframework.web.bind.annotation.ResponseBody; +import com.baeldung.dynamicvalidation.dao.ContactInfoExpressionRepository; +import com.baeldung.dynamicvalidation.model.ContactInfoExpression; +import com.baeldung.dynamicvalidation.model.Customer; + +@Controller +public class CustomerController { + + @Autowired + private ContactInfoExpressionRepository expressionRepository; + + @GetMapping("/customer") + public String getCustomerPage(Model model) { + model.addAttribute("contactInfoType", System.getProperty("contactInfoType")); + return "customer"; + } + + @PostMapping("/customer") + public String validateCustomer(@Valid final Customer customer, final BindingResult result, final Model model) { + if (result.hasErrors()) { + model.addAttribute("message", "The information is invalid!"); + } else { + model.addAttribute("message", "The information is valid!"); + } + model.addAttribute("contactInfoType", System.getProperty("contactInfoType")); + return "customer"; + } + + @PostMapping("/updateContactInfoType") + @ResponseBody + public void updateContactInfoType(@RequestParam final String type) { + System.setProperty("contactInfoType", type); + } + + @GetMapping("/contactInfoTypes") + @ResponseBody + public List getContactInfoType(Model model) { + return expressionRepository.findAll(); + } + +} diff --git a/spring-boot/src/main/java/com/baeldung/dynamicvalidation/config/PersistenceConfig.java b/spring-boot/src/main/java/com/baeldung/dynamicvalidation/config/PersistenceConfig.java new file mode 100644 index 0000000000..0eeac2a8dc --- /dev/null +++ b/spring-boot/src/main/java/com/baeldung/dynamicvalidation/config/PersistenceConfig.java @@ -0,0 +1,30 @@ +package com.baeldung.dynamicvalidation.config; + +import javax.sql.DataSource; + +import org.springframework.boot.autoconfigure.domain.EntityScan; +import org.springframework.context.annotation.Bean; +import org.springframework.context.annotation.Configuration; +import org.springframework.data.jpa.repository.config.EnableJpaRepositories; +import org.springframework.jdbc.core.JdbcTemplate; +import org.springframework.jdbc.datasource.embedded.EmbeddedDatabase; +import org.springframework.jdbc.datasource.embedded.EmbeddedDatabaseBuilder; +import org.springframework.jdbc.datasource.embedded.EmbeddedDatabaseType; + +@EnableJpaRepositories("com.baeldung.dynamicvalidation.dao") +@EntityScan("com.baeldung.dynamicvalidation.model") +@Configuration +public class PersistenceConfig { + + @Bean + public JdbcTemplate getJdbcTemplate() { + return new JdbcTemplate(dataSource()); + } + + @Bean + public DataSource dataSource() { + EmbeddedDatabaseBuilder builder = new EmbeddedDatabaseBuilder(); + EmbeddedDatabase db = builder.setType(EmbeddedDatabaseType.H2).addScript("schema-expressions.sql").addScript("data-expressions.sql").build(); + return db; + } +} diff --git a/spring-boot/src/main/java/com/baeldung/dynamicvalidation/dao/ContactInfoExpressionRepository.java b/spring-boot/src/main/java/com/baeldung/dynamicvalidation/dao/ContactInfoExpressionRepository.java new file mode 100644 index 0000000000..ccacc297a5 --- /dev/null +++ b/spring-boot/src/main/java/com/baeldung/dynamicvalidation/dao/ContactInfoExpressionRepository.java @@ -0,0 +1,9 @@ +package com.baeldung.dynamicvalidation.dao; + +import org.springframework.data.jpa.repository.JpaRepository; + +import com.baeldung.dynamicvalidation.model.ContactInfoExpression; + +public interface ContactInfoExpressionRepository extends JpaRepository { + +} diff --git a/spring-boot/src/main/java/com/baeldung/dynamicvalidation/model/ContactInfoExpression.java b/spring-boot/src/main/java/com/baeldung/dynamicvalidation/model/ContactInfoExpression.java new file mode 100644 index 0000000000..9c202b07c8 --- /dev/null +++ b/spring-boot/src/main/java/com/baeldung/dynamicvalidation/model/ContactInfoExpression.java @@ -0,0 +1,40 @@ +package com.baeldung.dynamicvalidation.model; + +import javax.persistence.Column; +import javax.persistence.Entity; +import javax.persistence.Id; + +@Entity +public class ContactInfoExpression { + + @Id + @Column(name = "expression_type") + private String type; + private String pattern; + + public ContactInfoExpression() { + + } + + public ContactInfoExpression(final String type, final String pattern) { + this.type = type; + this.pattern = pattern; + } + + public String getType() { + return type; + } + + public void setType(final String type) { + this.type = type; + } + + public String getPattern() { + return pattern; + } + + public void setPattern(final String pattern) { + this.pattern = pattern; + } + +} diff --git a/spring-boot/src/main/java/com/baeldung/dynamicvalidation/model/Customer.java b/spring-boot/src/main/java/com/baeldung/dynamicvalidation/model/Customer.java new file mode 100644 index 0000000000..f043458fce --- /dev/null +++ b/spring-boot/src/main/java/com/baeldung/dynamicvalidation/model/Customer.java @@ -0,0 +1,44 @@ +package com.baeldung.dynamicvalidation.model; + +import javax.persistence.Entity; +import javax.persistence.GeneratedValue; +import javax.persistence.GenerationType; +import javax.persistence.Id; + +import com.baeldung.dynamicvalidation.ContactInfo; + +@Entity +public class Customer { + + @Id + @GeneratedValue(strategy = GenerationType.IDENTITY) + private long id; + + @ContactInfo + private String contactInfo; + + public Customer() { + } + + public Customer(final long id, final String contactInfo) { + this.id = id; + this.contactInfo = contactInfo; + } + + public String getContactInfo() { + return contactInfo; + } + + public void setContactInfo(final String contactInfo) { + this.contactInfo = contactInfo; + } + + public long getId() { + return id; + } + + public void setId(final long id) { + this.id = id; + } + +} diff --git a/spring-boot/src/main/resources/data-expressions.sql b/spring-boot/src/main/resources/data-expressions.sql new file mode 100644 index 0000000000..3e702a759d --- /dev/null +++ b/spring-boot/src/main/resources/data-expressions.sql @@ -0,0 +1,3 @@ +insert into contact_info_expression values ('email','[a-z0-9!#$%&*+/=?^_`{|}~-]+(?:\.[a-z0-9!#$%&*+/=?^_`{|}~-]+)*@(?:[a-z0-9](?:[a-z0-9-]*[a-z0-9])?\.)+[a-z0-9](?:[a-z0-9-]*[a-z0-9])?') +insert into contact_info_expression values ('phone','^([0-9]( |-)?)?(\(?[0-9]{3}\)?|[0-9]{3})( |-)?([0-9]{3}( |-)?[0-9]{4}|[a-zA-Z0-9]{7})$') +insert into contact_info_expression values ('website','^(http:\/\/www\.|https:\/\/www\.|http:\/\/|https:\/\/)?[a-z0-9]+([\-\.]{1}[a-z0-9]+)*\.[a-z]{2,5}(:[0-9]{1,5})?(\/.*)?$') \ No newline at end of file diff --git a/spring-boot/src/main/resources/schema-expressions.sql b/spring-boot/src/main/resources/schema-expressions.sql new file mode 100644 index 0000000000..59f6ab05eb --- /dev/null +++ b/spring-boot/src/main/resources/schema-expressions.sql @@ -0,0 +1,5 @@ +create table contact_info_expression( + expression_type varchar(50) not null, + pattern varchar(500) not null, + PRIMARY KEY ( expression_type ) +); \ No newline at end of file diff --git a/spring-boot/src/main/resources/templates/customer.html b/spring-boot/src/main/resources/templates/customer.html new file mode 100644 index 0000000000..6aec5ab590 --- /dev/null +++ b/spring-boot/src/main/resources/templates/customer.html @@ -0,0 +1,41 @@ + + + +Customer Page + + + + +
+
+Contact Info:
+Contact Info Type:
+ +
+

+
+
+ + \ No newline at end of file From e3a45f50e65b2cc00a3682f3906a982bf77cccdf Mon Sep 17 00:00:00 2001 From: baljeet20 Date: Wed, 12 Apr 2017 18:55:05 +0530 Subject: [PATCH 43/56] BAEL-788 A guid to mybatis (#1637) * BAEL-788 A guid to mybatis * BAEL-788 A guid to mybatis --- mybatis/pom.xml | 34 ++++ .../mybatis/mapper/AddressMapper.java | 24 +++ .../baeldung/mybatis/mapper/PersonMapper.java | 52 ++++++ .../com/baeldung/mybatis/model/Address.java | 49 ++++++ .../com/baeldung/mybatis/model/Person.java | 40 +++++ .../baeldung/mybatis/utils/MyBatisUtil.java | 33 ++++ mybatis/src/main/resources/mybatis-config.xml | 21 +++ .../mybatis/mapper/PersonMapperTest.java | 149 ++++++++++++++++++ pom.xml | 1 + 9 files changed, 403 insertions(+) create mode 100644 mybatis/pom.xml create mode 100644 mybatis/src/main/java/com/baeldung/mybatis/mapper/AddressMapper.java create mode 100644 mybatis/src/main/java/com/baeldung/mybatis/mapper/PersonMapper.java create mode 100644 mybatis/src/main/java/com/baeldung/mybatis/model/Address.java create mode 100644 mybatis/src/main/java/com/baeldung/mybatis/model/Person.java create mode 100644 mybatis/src/main/java/com/baeldung/mybatis/utils/MyBatisUtil.java create mode 100644 mybatis/src/main/resources/mybatis-config.xml create mode 100644 mybatis/src/test/java/com/baeldung/mybatis/mapper/PersonMapperTest.java diff --git a/mybatis/pom.xml b/mybatis/pom.xml new file mode 100644 index 0000000000..56de727b21 --- /dev/null +++ b/mybatis/pom.xml @@ -0,0 +1,34 @@ + + + 4.0.0 + + com.baeldung + mybatis + 1.0.0-SNAPSHOT + + 4.12 + 10.13.1.1 + 3.2.2 + + + + org.apache.derby + derby + ${derby.version} + + + org.mybatis + mybatis + ${mybatis.version} + + + junit + junit + ${junit.version} + test + + + + \ No newline at end of file diff --git a/mybatis/src/main/java/com/baeldung/mybatis/mapper/AddressMapper.java b/mybatis/src/main/java/com/baeldung/mybatis/mapper/AddressMapper.java new file mode 100644 index 0000000000..588707383b --- /dev/null +++ b/mybatis/src/main/java/com/baeldung/mybatis/mapper/AddressMapper.java @@ -0,0 +1,24 @@ +package com.baeldung.mybatis.mapper; + +import com.baeldung.mybatis.model.Address; +import com.baeldung.mybatis.model.Person; +import org.apache.ibatis.annotations.*; + + +public interface AddressMapper { + + @Insert("Insert into address (streetAddress,personId) values(#{streetAddress},#{personId})") + @Options(useGeneratedKeys = true,flushCache=true ) + public Integer saveAddress(Address address); + + @Select("SELECT addressId, streetAddress FROM Address WHERE addressId = #{addressId}") + @Results(value = { + @Result(property = "addressId", column = "addressId"), + @Result(property = "streetAddress", column = "streetAddress"), + @Result(property = "person", column = "personId",javaType =Person.class,one=@One(select = "getPerson")) + }) + Address getAddresses(Integer addressID); + + @Select("SELECT personId FROM address WHERE addressId = #{addressId})") + Person getPerson(Integer personId); +} diff --git a/mybatis/src/main/java/com/baeldung/mybatis/mapper/PersonMapper.java b/mybatis/src/main/java/com/baeldung/mybatis/mapper/PersonMapper.java new file mode 100644 index 0000000000..ab207325ad --- /dev/null +++ b/mybatis/src/main/java/com/baeldung/mybatis/mapper/PersonMapper.java @@ -0,0 +1,52 @@ +package com.baeldung.mybatis.mapper; + +import com.baeldung.mybatis.model.Address; +import com.baeldung.mybatis.model.Person; +import com.baeldung.mybatis.utils.MyBatisUtil; +import org.apache.ibatis.annotations.*; +import org.apache.ibatis.mapping.StatementType; + +import java.util.List; +import java.util.Map; + + +public interface PersonMapper { + + @Insert("Insert into person(name) values (#{name})") + public Integer save(Person person); + + @Update("Update Person set name= #{name} where personId=#{personId}") + public void updatePerson(Person person); + + @Delete("Delete from Person where personId=#{personId}") + public void deletePersonById(Integer personId); + + @Select("SELECT person.personId, person.name FROM person WHERE person.personId = #{personId}") + Person getPerson(Integer personId); + + @Select("Select personId,name from Person where personId=#{personId}") + @Results(value ={ + @Result(property = "personId", column = "personId"), + @Result(property="name", column = "name"), + @Result(property = "addresses",javaType = List.class,column = "personId", + many=@Many(select = "getAddresses")) + + }) + public Person getPersonById(Integer personId); + + @Select("select addressId,streetAddress,personId from address where personId=#{personId}") + public Address getAddresses(Integer personId); + + @Select("select * from Person ") + @MapKey("personId") + Map getAllPerson(); + + @SelectProvider(type=MyBatisUtil.class,method="getPersonByName") + public Person getPersonByName(String name); + + + @Select(value= "{ CALL getPersonByProc( #{personId, mode=IN, jdbcType=INTEGER})}") + @Options(statementType = StatementType.CALLABLE) + public Person getPersonByProc(Integer personId); + +} diff --git a/mybatis/src/main/java/com/baeldung/mybatis/model/Address.java b/mybatis/src/main/java/com/baeldung/mybatis/model/Address.java new file mode 100644 index 0000000000..f32e47aef2 --- /dev/null +++ b/mybatis/src/main/java/com/baeldung/mybatis/model/Address.java @@ -0,0 +1,49 @@ +package com.baeldung.mybatis.model; + + +public class Address { + + private Integer addressId; + private String streetAddress; + private Integer personId; + + public Address() { + } + + public Integer getPersonId() { + return personId; + } + + public void setPersonId(Integer personId) { + this.personId = personId; + } + + + + public Address(String streetAddress) { + this.streetAddress =streetAddress; + } + + public Person getPerson() { + return person; + } + + public void setPerson(Person person) { + this.person = person; + } + + private Person person; + + public Address(int i, String name) { + this.streetAddress = name; + } + + public Integer getAddressId() { + return addressId; + } + + public String getStreetAddress() { + return streetAddress; + } + +} diff --git a/mybatis/src/main/java/com/baeldung/mybatis/model/Person.java b/mybatis/src/main/java/com/baeldung/mybatis/model/Person.java new file mode 100644 index 0000000000..248e3ca7a1 --- /dev/null +++ b/mybatis/src/main/java/com/baeldung/mybatis/model/Person.java @@ -0,0 +1,40 @@ +package com.baeldung.mybatis.model; + +import java.util.ArrayList; +import java.util.List; + + +public class Person { + + private Integer personId; + private String name; + private List
addresses; + + public Person() { + } + + public Person(Integer personId, String name) { + this.personId=personId; + this.name = name; + addresses = new ArrayList
(); + } + + public Person(String name) { + this.name=name; + } + + public Integer getPersonId() { + return personId; + } + + public String getName() { + return name; + } + public void addAddress(Address address){ + addresses.add(address); + } + + public List
getAddresses() { + return addresses; + } +} diff --git a/mybatis/src/main/java/com/baeldung/mybatis/utils/MyBatisUtil.java b/mybatis/src/main/java/com/baeldung/mybatis/utils/MyBatisUtil.java new file mode 100644 index 0000000000..a045e70333 --- /dev/null +++ b/mybatis/src/main/java/com/baeldung/mybatis/utils/MyBatisUtil.java @@ -0,0 +1,33 @@ +package com.baeldung.mybatis.utils; +import org.apache.ibatis.io.Resources; +import org.apache.ibatis.jdbc.SQL; +import org.apache.ibatis.session.SqlSessionFactory; +import org.apache.ibatis.session.SqlSessionFactoryBuilder; + +import java.io.IOException; +import java.io.InputStream; + +public class MyBatisUtil { + private static SqlSessionFactory sqlSessionFactory; + static { + String resource = "mybatis-config.xml"; + InputStream inputStream; + try { + inputStream = Resources.getResourceAsStream(resource); + sqlSessionFactory = new SqlSessionFactoryBuilder().build(inputStream); + } catch (IOException e) { + e.printStackTrace(); + } + } + public static SqlSessionFactory getSqlSessionFactory(){ + return sqlSessionFactory; + } + + public String getPersonByName(String name){ + return new SQL(){{ + SELECT("*"); + FROM("person"); + WHERE("name like #{name} || '%'"); + }}.toString(); + } +} diff --git a/mybatis/src/main/resources/mybatis-config.xml b/mybatis/src/main/resources/mybatis-config.xml new file mode 100644 index 0000000000..6987797068 --- /dev/null +++ b/mybatis/src/main/resources/mybatis-config.xml @@ -0,0 +1,21 @@ + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/mybatis/src/test/java/com/baeldung/mybatis/mapper/PersonMapperTest.java b/mybatis/src/test/java/com/baeldung/mybatis/mapper/PersonMapperTest.java new file mode 100644 index 0000000000..8724aaa545 --- /dev/null +++ b/mybatis/src/test/java/com/baeldung/mybatis/mapper/PersonMapperTest.java @@ -0,0 +1,149 @@ +package com.baeldung.mybatis.mapper; + +import com.baeldung.mybatis.model.Address; +import com.baeldung.mybatis.model.Person; +import com.baeldung.mybatis.utils.MyBatisUtil; +import org.apache.ibatis.session.SqlSession; +import org.junit.After; +import org.junit.Before; +import org.junit.Test; + +import java.sql.Connection; +import java.sql.PreparedStatement; +import java.sql.ResultSet; +import java.sql.SQLException; +import java.util.Map; + +import static junit.framework.TestCase.assertEquals; + +public class PersonMapperTest { + + SqlSession session; + + @Before + public void setup() throws SQLException { + + session = MyBatisUtil.getSqlSessionFactory().openSession(); + createTables(session); + + } + + private void createTables(SqlSession session) throws SQLException { + + String createPersonTable = "create table person (" + + "personId integer not null generated always as" + + " identity (start with 1, increment by 1), " + + "name varchar(30) not null, " + + "constraint primary_key_person primary key (personId))"; + + String createAddressTable = "create table address (" + + "addressId integer not null generated always as" + + " identity (start with 1, increment by 1), " + + "streetAddress varchar(300), personId integer, " + + "constraint primary_key_address primary key (addressId))"; + + String alterTable="ALTER TABLE " + + " address ADD CONSTRAINT fk_person FOREIGN KEY (personId) REFERENCES person (personId)"; + + + session.getConnection().createStatement().execute(createPersonTable); + session.getConnection().createStatement().execute(createAddressTable); + session.getConnection().createStatement().execute(alterTable); + + } + + @Test + public void whenPersonAdressSaved_ThenPersonAddressCanBeQueried(){ + Person person=new Person("Baljeet S"); + Address address = new Address("Pune"); + PersonMapper personMapper=session.getMapper(PersonMapper.class); + Integer id =personMapper.save(person); + address.setPersonId(id); + AddressMapper addressMapper=session.getMapper(AddressMapper.class); + addressMapper.saveAddress(address); + + Person returnedPerson= personMapper.getPersonById(id); + assertEquals("Baljeet S", returnedPerson.getName()); + assertEquals("Pune", returnedPerson.getAddresses().get(0).getStreetAddress()); + } + + @Test + public void whenPersonSaved_ThenPersonCanBeQueried(){ + Person person=new Person("Baljeet S"); + Address address = new Address("Pune"); + PersonMapper personMapper=session.getMapper(PersonMapper.class); + Integer id =personMapper.save(person); + address.setPersonId(id); + AddressMapper addressMapper=session.getMapper(AddressMapper.class); + addressMapper.saveAddress(address); + + Person returnedPerson= personMapper.getPerson(id); + assertEquals("Baljeet S", returnedPerson.getName()); + } + + @Test + public void whenPersonUpdated_ThenPersonIsChanged(){ + Person person=new Person("Baljeet S"); + Address address = new Address("Pune"); + PersonMapper personMapper=session.getMapper(PersonMapper.class); + Integer id =personMapper.save(person); + address.setPersonId(id); + AddressMapper addressMapper=session.getMapper(AddressMapper.class); + addressMapper.saveAddress(address); + + personMapper.updatePerson(new Person(id,"Baljeet1")); + Person returnedPerson= personMapper.getPerson(id); + assertEquals("Baljeet1", returnedPerson.getName()); + } + @Test + public void whenPersoSaved_ThenMapIsReturned(){ + Person person=new Person("Baljeet S"); + Address address = new Address("Pune"); + PersonMapper personMapper=session.getMapper(PersonMapper.class); + Integer id =personMapper.save(person); + address.setPersonId(id); + AddressMapper addressMapper=session.getMapper(AddressMapper.class); + addressMapper.saveAddress(address); + + Map returnedPerson= personMapper.getAllPerson(); + assertEquals(1, returnedPerson.size()); + } + + @Test + public void whenPersonSearched_ThenResultIsReturned(){ + Person person=new Person("Baljeet S"); + Address address = new Address("Pune"); + PersonMapper personMapper=session.getMapper(PersonMapper.class); + Integer id =personMapper.save(person); + address.setPersonId(id); + AddressMapper addressMapper=session.getMapper(AddressMapper.class); + addressMapper.saveAddress(address); + + Person returnedPerson= personMapper.getPersonByName("Baljeet S"); + assertEquals("Baljeet S", returnedPerson.getName()); + } + + @Test + public void whenAddressSearched_ThenResultIsReturned(){ + Person person=new Person("Baljeet S"); + Address address = new Address("Pune"); + PersonMapper personMapper=session.getMapper(PersonMapper.class); + Integer id =personMapper.save(person); + address.setPersonId(id); + AddressMapper addressMapper=session.getMapper(AddressMapper.class); + Integer addressId=addressMapper.saveAddress(address); + Address returnedAddress=addressMapper.getAddresses(addressId); + + assertEquals("Pune", returnedAddress.getStreetAddress()); + } + + @After + public void cleanup() throws SQLException { + session.getConnection().createStatement().execute("drop table address"); + session.getConnection().createStatement().execute("drop table person"); + + session.close(); + + } + +} diff --git a/pom.xml b/pom.xml index 1a11bd055f..a705ac7cb1 100644 --- a/pom.xml +++ b/pom.xml @@ -215,6 +215,7 @@ vertx spring-data-gemfire cucumber + mybatis From 910826733c8770b2a4f46d62ca94030a76320c03 Mon Sep 17 00:00:00 2001 From: Jesus Boadas Date: Wed, 12 Apr 2017 09:30:12 -0400 Subject: [PATCH 44/56] Converters, Listeners and Validators (#1634) * Converters, Listeners and Validators in Java EE 7 * Convertesrs, Listeners and validators Tests --- jee7/pom.xml | 27 ++++- jee7/src/main/webapp/ConvListVal.xhtml | 10 +- jee7/src/main/webapp/WEB-INF/faces-config.xml | 13 +++ jee7/src/main/webapp/WEB-INF/web.xml | 41 +++++++ .../baeldung/convListVal/ConvListValTest.java | 101 ++++++++++++++++++ 5 files changed, 186 insertions(+), 6 deletions(-) create mode 100644 jee7/src/main/webapp/WEB-INF/faces-config.xml create mode 100644 jee7/src/main/webapp/WEB-INF/web.xml create mode 100644 jee7/src/test/java/com/baeldung/convListVal/ConvListValTest.java diff --git a/jee7/pom.xml b/jee7/pom.xml index addb586b74..e398651055 100644 --- a/jee7/pom.xml +++ b/jee7/pom.xml @@ -98,7 +98,16 @@ shrinkwrap-resolver-impl-maven-archive test - + + org.apache.httpcomponents + httpclient + 4.5 + + + commons-io + commons-io + 2.4 + com.sun.faces jsf-api @@ -378,5 +387,21 @@ + + webdriver-chrome + + true + + + chrome + + + + + webdriver-firefox + + firefox + + diff --git a/jee7/src/main/webapp/ConvListVal.xhtml b/jee7/src/main/webapp/ConvListVal.xhtml index e5425e87a5..8c5213764c 100644 --- a/jee7/src/main/webapp/ConvListVal.xhtml +++ b/jee7/src/main/webapp/ConvListVal.xhtml @@ -8,7 +8,7 @@

Testing converters

- + @@ -19,13 +19,13 @@ - +
- + - +
@@ -41,7 +41,7 @@ - +
diff --git a/jee7/src/main/webapp/WEB-INF/faces-config.xml b/jee7/src/main/webapp/WEB-INF/faces-config.xml new file mode 100644 index 0000000000..d5b2cd6612 --- /dev/null +++ b/jee7/src/main/webapp/WEB-INF/faces-config.xml @@ -0,0 +1,13 @@ + + + + convListVal + com.baeldung.convListVal.ConvListVal + session + + \ No newline at end of file diff --git a/jee7/src/main/webapp/WEB-INF/web.xml b/jee7/src/main/webapp/WEB-INF/web.xml new file mode 100644 index 0000000000..11bd87cf99 --- /dev/null +++ b/jee7/src/main/webapp/WEB-INF/web.xml @@ -0,0 +1,41 @@ + + + + + Faces Servlet + javax.faces.webapp.FacesServlet + + + Faces Servlet + *.jsf + + + javax.faces.PROJECT_STAGE + Development + + + State saving method: 'client' or 'server' (default). See JSF Specification section 2.5.2 + javax.faces.STATE_SAVING_METHOD + client + + + + index.jsf + welcome.jsf + index.html + index.jsp + + \ No newline at end of file diff --git a/jee7/src/test/java/com/baeldung/convListVal/ConvListValTest.java b/jee7/src/test/java/com/baeldung/convListVal/ConvListValTest.java new file mode 100644 index 0000000000..4450a26f43 --- /dev/null +++ b/jee7/src/test/java/com/baeldung/convListVal/ConvListValTest.java @@ -0,0 +1,101 @@ +package com.baeldung.convListVal; + +import static org.jboss.arquillian.graphene.Graphene.guardHttp; + +import java.io.File; +import java.net.URL; + +import org.jboss.arquillian.container.test.api.Deployment; +import org.jboss.arquillian.container.test.api.RunAsClient; +import org.jboss.arquillian.drone.api.annotation.Drone; +import org.jboss.arquillian.junit.Arquillian; +import org.jboss.arquillian.test.api.ArquillianResource; +import org.jboss.shrinkwrap.api.ShrinkWrap; +import org.jboss.shrinkwrap.api.asset.EmptyAsset; +import org.jboss.shrinkwrap.api.spec.WebArchive; +import org.junit.Assert; +import org.junit.Test; +import org.junit.runner.RunWith; +import org.openqa.selenium.By; +import org.openqa.selenium.WebDriver; +import org.openqa.selenium.WebElement; +import org.openqa.selenium.support.FindBy; + +@RunWith(Arquillian.class) +public class ConvListValTest { + + @ArquillianResource + private URL deploymentUrl; + + private static final String WEBAPP_SRC = "src/main/webapp"; + + @Deployment(testable = false) + public static WebArchive createDeployment() { + return ( ShrinkWrap.create( + WebArchive.class, "jee7.war"). + addClasses(ConvListVal.class, MyListener.class)). + addAsWebResource(new File(WEBAPP_SRC, "ConvListVal.xhtml")). + addAsWebInfResource(EmptyAsset.INSTANCE, "beans.xml"); + } + + @Drone + WebDriver browser; + + @ArquillianResource + URL contextPath; + + @FindBy(id="myForm:age") + private WebElement ageInput; + + @FindBy(id="myForm:average") + private WebElement averageInput; + + @FindBy(id="myForm:send") + private WebElement sendButton; + + @Test + @RunAsClient + public void givenAge_whenAgeInvalid_thenErrorMessage() throws Exception { + browser.get(deploymentUrl.toExternalForm() + "ConvListVal.jsf"); + ageInput.sendKeys("stringage"); + guardHttp(sendButton).click(); + Assert.assertTrue("Show Age error message", browser.findElements(By.id("myForm:ageError")).size() > 0); + } + + @Test + @RunAsClient + public void givenAverage_whenAverageInvalid_thenErrorMessage() throws Exception { + browser.get(deploymentUrl.toExternalForm() + "ConvListVal.jsf"); + averageInput.sendKeys("stringaverage"); + guardHttp(sendButton).click(); + Assert.assertTrue("Show Average error message", browser.findElements(By.id("myForm:averageError")).size() > 0); + } + + @Test + @RunAsClient + public void givenDate_whenDateInvalid_thenErrorMessage() throws Exception { + browser.get(deploymentUrl.toExternalForm() + "ConvListVal.jsf"); + averageInput.sendKeys("123"); + guardHttp(sendButton).click(); + Assert.assertTrue("Show Date error message", browser.findElements(By.id("myForm:myDateError")).size() > 0); + } + + @Test + @RunAsClient + public void givenSurname_whenSurnameMinLenghtInvalid_thenErrorMessage() throws Exception { + browser.get(deploymentUrl.toExternalForm() + "ConvListVal.jsf"); + averageInput.sendKeys("aaa"); + guardHttp(sendButton).click(); + Assert.assertTrue("Show Surname error message", browser.findElements(By.id("myForm:surnameError")).size() > 0); + } + + @Test + @RunAsClient + public void givenSurname_whenSurnameMaxLenghtInvalid_thenErrorMessage() throws Exception { + browser.get(deploymentUrl.toExternalForm() + "ConvListVal.jsf"); + averageInput.sendKeys("aaaaabbbbbc"); + guardHttp(sendButton).click(); + Assert.assertTrue("Show Surname error message", browser.findElements(By.id("myForm:surnameError")).size() > 0); + } + +} From 891f0ba9814b6ca1d55f6af322abc5a4643ca70c Mon Sep 17 00:00:00 2001 From: Grzegorz Piwowarek Date: Thu, 13 Apr 2017 02:11:05 +0200 Subject: [PATCH 45/56] Assertj refactor (#1635) --- .../com/baeldung/flink/WordCountIntegrationTest.java | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/libraries/src/test/java/com/baeldung/flink/WordCountIntegrationTest.java b/libraries/src/test/java/com/baeldung/flink/WordCountIntegrationTest.java index 3190debef8..a5613e2406 100644 --- a/libraries/src/test/java/com/baeldung/flink/WordCountIntegrationTest.java +++ b/libraries/src/test/java/com/baeldung/flink/WordCountIntegrationTest.java @@ -22,7 +22,7 @@ import static org.assertj.core.api.Assertions.assertThat; public class WordCountIntegrationTest { - final ExecutionEnvironment env = ExecutionEnvironment.getExecutionEnvironment(); + private final ExecutionEnvironment env = ExecutionEnvironment.getExecutionEnvironment(); @Test public void givenDataSet_whenExecuteWordCount_thenReturnWordCount() throws Exception { @@ -65,8 +65,8 @@ public class WordCountIntegrationTest { List ages = personDataSource.map(p -> p.age).collect(); //then - assertThat(ages.size()).isEqualTo(2); - assertThat(ages.containsAll(Arrays.asList(23, 75))).isTrue(); + assertThat(ages).hasSize(2); + assertThat(ages).contains(23, 75); } @@ -110,8 +110,8 @@ public class WordCountIntegrationTest { .collect(); //then - assertThat(joined.size()).isEqualTo(1); - assertThat(joined.contains(new Tuple2<>(firstTransaction, address))); + assertThat(joined).hasSize(1); + assertThat(joined).contains(new Tuple2<>(firstTransaction, address)); } From f5991d1eeb963f993dca1e50e26bb2be765cc6a7 Mon Sep 17 00:00:00 2001 From: Tomasz Lelek Date: Thu, 13 Apr 2017 10:06:52 +0200 Subject: [PATCH 46/56] readme (#1631) --- libraries/README.md | 1 + 1 file changed, 1 insertion(+) diff --git a/libraries/README.md b/libraries/README.md index a8ecf56cc2..7d95caa6b1 100644 --- a/libraries/README.md +++ b/libraries/README.md @@ -5,6 +5,7 @@ - [String Processing with Apache Commons Lang 3](http://www.baeldung.com/string-processing-commons-lang) - [Introduction to Javatuples](http://www.baeldung.com/java-tuples) - [Introduction to Javassist](http://www.baeldung.com/javassist) +- [Embedded Jetty Server in Java](http://www.baeldung.com/jetty-embedded) The libraries module contains examples related to small libraries that are relatively easy to use and does not require any separate module of its own. From 782c5565fed250deb831076aec91090dfefdfaa1 Mon Sep 17 00:00:00 2001 From: Abhinab Kanrar Date: Thu, 13 Apr 2017 13:38:01 +0530 Subject: [PATCH 47/56] jvm log forging (#1643) * jvm log forging * jvm log forging * jvm log forging --- core-java/pom.xml | 10 +- .../baeldung/logforging/LogForgingDemo.java | 28 ++ core-java/src/main/resources/ESAPI.properties | 453 ++++++++++++++++++ 3 files changed, 489 insertions(+), 2 deletions(-) create mode 100644 core-java/src/main/java/com/baeldung/logforging/LogForgingDemo.java create mode 100644 core-java/src/main/resources/ESAPI.properties diff --git a/core-java/pom.xml b/core-java/pom.xml index 1212465280..d2fa1cdd2e 100644 --- a/core-java/pom.xml +++ b/core-java/pom.xml @@ -170,7 +170,13 @@ org.javamoney moneta 1.1 - + + + + org.owasp.esapi + esapi + 2.1.0.1 + @@ -391,4 +397,4 @@ - \ No newline at end of file + diff --git a/core-java/src/main/java/com/baeldung/logforging/LogForgingDemo.java b/core-java/src/main/java/com/baeldung/logforging/LogForgingDemo.java new file mode 100644 index 0000000000..84c069a746 --- /dev/null +++ b/core-java/src/main/java/com/baeldung/logforging/LogForgingDemo.java @@ -0,0 +1,28 @@ +package com.baeldung.logforging; + +import org.owasp.esapi.ESAPI; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; + +public class LogForgingDemo { + + private final Logger logger = LoggerFactory.getLogger(LogForgingDemo.class); + + public void addLog(String amount) { + logger.info("Amount credited = {}", amount); + } + + public static void main(String[] args) { + LogForgingDemo demo = new LogForgingDemo(); + demo.addLog(String.valueOf(300)); + demo.addLog(String.valueOf(300 + "\n\nweb - 2017-04-12 17:47:08,957 [main] INFO Amount reversed successfully")); + demo.addLog(String.valueOf(encode(300 + "\n\nweb - 2017-04-12 17:47:08,957 [main] INFO Amount reversed successfully"))); + } + + public static String encode(String message) { + message = message.replace('\n', '_').replace('\r', '_').replace('\t', '_'); + message = ESAPI.encoder().encodeForHTML(message); + return message; + } + +} diff --git a/core-java/src/main/resources/ESAPI.properties b/core-java/src/main/resources/ESAPI.properties new file mode 100644 index 0000000000..24dcaa9dfa --- /dev/null +++ b/core-java/src/main/resources/ESAPI.properties @@ -0,0 +1,453 @@ +# +# OWASP Enterprise Security API (ESAPI) Properties file -- PRODUCTION Version +# +# This file is part of the Open Web Application Security Project (OWASP) +# Enterprise Security API (ESAPI) project. For details, please see +# http://www.owasp.org/index.php/ESAPI. +# +# Copyright (c) 2008,2009 - The OWASP Foundation +# +# DISCUSS: This may cause a major backwards compatibility issue, etc. but +# from a name space perspective, we probably should have prefaced +# all the property names with ESAPI or at least OWASP. Otherwise +# there could be problems is someone loads this properties file into +# the System properties. We could also put this file into the +# esapi.jar file (perhaps as a ResourceBundle) and then allow an external +# ESAPI properties be defined that would overwrite these defaults. +# That keeps the application's properties relatively simple as usually +# they will only want to override a few properties. If looks like we +# already support multiple override levels of this in the +# DefaultSecurityConfiguration class, but I'm suggesting placing the +# defaults in the esapi.jar itself. That way, if the jar is signed, +# we could detect if those properties had been tampered with. (The +# code to check the jar signatures is pretty simple... maybe 70-90 LOC, +# but off course there is an execution penalty (similar to the way +# that the separate sunjce.jar used to be when a class from it was +# first loaded). Thoughts? +############################################################################### +# +# WARNING: Operating system protection should be used to lock down the .esapi +# resources directory and all the files inside and all the directories all the +# way up to the root directory of the file system. Note that if you are using +# file-based implementations, that some files may need to be read-write as they +# get updated dynamically. +# +# Before using, be sure to update the MasterKey and MasterSalt as described below. +# N.B.: If you had stored data that you have previously encrypted with ESAPI 1.4, +# you *must* FIRST decrypt it using ESAPI 1.4 and then (if so desired) +# re-encrypt it with ESAPI 2.0. If you fail to do this, you will NOT be +# able to decrypt your data with ESAPI 2.0. +# +# YOU HAVE BEEN WARNED!!! More details are in the ESAPI 2.0 Release Notes. +# +#=========================================================================== +# ESAPI Configuration +# +# If true, then print all the ESAPI properties set here when they are loaded. +# If false, they are not printed. Useful to reduce output when running JUnit tests. +# If you need to troubleshoot a properties related problem, turning this on may help. +# This is 'false' in the src/test/resources/.esapi version. It is 'true' by +# default for reasons of backward compatibility with earlier ESAPI versions. +ESAPI.printProperties=true + +# ESAPI is designed to be easily extensible. You can use the reference implementation +# or implement your own providers to take advantage of your enterprise's security +# infrastructure. The functions in ESAPI are referenced using the ESAPI locator, like: +# +# String ciphertext = +# ESAPI.encryptor().encrypt("Secret message"); // Deprecated in 2.0 +# CipherText cipherText = +# ESAPI.encryptor().encrypt(new PlainText("Secret message")); // Preferred +# +# Below you can specify the classname for the provider that you wish to use in your +# application. The only requirement is that it implement the appropriate ESAPI interface. +# This allows you to switch security implementations in the future without rewriting the +# entire application. +# +# ExperimentalAccessController requires ESAPI-AccessControlPolicy.xml in .esapi directory +ESAPI.AccessControl=org.owasp.esapi.reference.DefaultAccessController +# FileBasedAuthenticator requires users.txt file in .esapi directory +ESAPI.Authenticator=org.owasp.esapi.reference.FileBasedAuthenticator +ESAPI.Encoder=org.owasp.esapi.reference.DefaultEncoder +ESAPI.Encryptor=org.owasp.esapi.reference.crypto.JavaEncryptor + +ESAPI.Executor=org.owasp.esapi.reference.DefaultExecutor +ESAPI.HTTPUtilities=org.owasp.esapi.reference.DefaultHTTPUtilities +ESAPI.IntrusionDetector=org.owasp.esapi.reference.DefaultIntrusionDetector +# Log4JFactory Requires log4j.xml or log4j.properties in classpath - http://www.laliluna.de/log4j-tutorial.html +ESAPI.Logger=org.owasp.esapi.reference.Log4JLogFactory +#ESAPI.Logger=org.owasp.esapi.reference.JavaLogFactory +ESAPI.Randomizer=org.owasp.esapi.reference.DefaultRandomizer +ESAPI.Validator=org.owasp.esapi.reference.DefaultValidator + +#=========================================================================== +# ESAPI Authenticator +# +Authenticator.AllowedLoginAttempts=3 +Authenticator.MaxOldPasswordHashes=13 +Authenticator.UsernameParameterName=username +Authenticator.PasswordParameterName=password +# RememberTokenDuration (in days) +Authenticator.RememberTokenDuration=14 +# Session Timeouts (in minutes) +Authenticator.IdleTimeoutDuration=20 +Authenticator.AbsoluteTimeoutDuration=120 + +#=========================================================================== +# ESAPI Encoder +# +# ESAPI canonicalizes input before validation to prevent bypassing filters with encoded attacks. +# Failure to canonicalize input is a very common mistake when implementing validation schemes. +# Canonicalization is automatic when using the ESAPI Validator, but you can also use the +# following code to canonicalize data. +# +# ESAPI.Encoder().canonicalize( "%22hello world"" ); +# +# Multiple encoding is when a single encoding format is applied multiple times. Allowing +# multiple encoding is strongly discouraged. +Encoder.AllowMultipleEncoding=false + +# Mixed encoding is when multiple different encoding formats are applied, or when +# multiple formats are nested. Allowing multiple encoding is strongly discouraged. +Encoder.AllowMixedEncoding=false + +# The default list of codecs to apply when canonicalizing untrusted data. The list should include the codecs +# for all downstream interpreters or decoders. For example, if the data is likely to end up in a URL, HTML, or +# inside JavaScript, then the list of codecs below is appropriate. The order of the list is not terribly important. +Encoder.DefaultCodecList=HTMLEntityCodec,PercentCodec,JavaScriptCodec + + +#=========================================================================== +# ESAPI Encryption +# +# The ESAPI Encryptor provides basic cryptographic functions with a simplified API. +# To get started, generate a new key using java -classpath esapi.jar org.owasp.esapi.reference.crypto.JavaEncryptor +# There is not currently any support for key rotation, so be careful when changing your key and salt as it +# will invalidate all signed, encrypted, and hashed data. +# +# WARNING: Not all combinations of algorithms and key lengths are supported. +# If you choose to use a key length greater than 128, you MUST download the +# unlimited strength policy files and install in the lib directory of your JRE/JDK. +# See http://java.sun.com/javase/downloads/index.jsp for more information. +# +# Backward compatibility with ESAPI Java 1.4 is supported by the two deprecated API +# methods, Encryptor.encrypt(String) and Encryptor.decrypt(String). However, whenever +# possible, these methods should be avoided as they use ECB cipher mode, which in almost +# all circumstances a poor choice because of it's weakness. CBC cipher mode is the default +# for the new Encryptor encrypt / decrypt methods for ESAPI Java 2.0. In general, you +# should only use this compatibility setting if you have persistent data encrypted with +# version 1.4 and even then, you should ONLY set this compatibility mode UNTIL +# you have decrypted all of your old encrypted data and then re-encrypted it with +# ESAPI 2.0 using CBC mode. If you have some reason to mix the deprecated 1.4 mode +# with the new 2.0 methods, make sure that you use the same cipher algorithm for both +# (256-bit AES was the default for 1.4; 128-bit is the default for 2.0; see below for +# more details.) Otherwise, you will have to use the new 2.0 encrypt / decrypt methods +# where you can specify a SecretKey. (Note that if you are using the 256-bit AES, +# that requires downloading the special jurisdiction policy files mentioned above.) +# +# ***** IMPORTANT: Do NOT forget to replace these with your own values! ***** +# To calculate these values, you can run: +# java -classpath esapi.jar org.owasp.esapi.reference.crypto.JavaEncryptor +# +Encryptor.MasterKey=tzfztf56ftv +Encryptor.MasterSalt=123456ztrewq + +# Provides the default JCE provider that ESAPI will "prefer" for its symmetric +# encryption and hashing. (That is it will look to this provider first, but it +# will defer to other providers if the requested algorithm is not implemented +# by this provider.) If left unset, ESAPI will just use your Java VM's current +# preferred JCE provider, which is generally set in the file +# "$JAVA_HOME/jre/lib/security/java.security". +# +# The main intent of this is to allow ESAPI symmetric encryption to be +# used with a FIPS 140-2 compliant crypto-module. For details, see the section +# "Using ESAPI Symmetric Encryption with FIPS 140-2 Cryptographic Modules" in +# the ESAPI 2.0 Symmetric Encryption User Guide, at: +# http://owasp-esapi-java.googlecode.com/svn/trunk/documentation/esapi4java-core-2.0-symmetric-crypto-user-guide.html +# However, this property also allows you to easily use an alternate JCE provider +# such as "Bouncy Castle" without having to make changes to "java.security". +# See Javadoc for SecurityProviderLoader for further details. If you wish to use +# a provider that is not known to SecurityProviderLoader, you may specify the +# fully-qualified class name of the JCE provider class that implements +# java.security.Provider. If the name contains a '.', this is interpreted as +# a fully-qualified class name that implements java.security.Provider. +# +# NOTE: Setting this property has the side-effect of changing it in your application +# as well, so if you are using JCE in your application directly rather than +# through ESAPI (you wouldn't do that, would you? ;-), it will change the +# preferred JCE provider there as well. +# +# Default: Keeps the JCE provider set to whatever JVM sets it to. +Encryptor.PreferredJCEProvider= + +# AES is the most widely used and strongest encryption algorithm. This +# should agree with your Encryptor.CipherTransformation property. +# By default, ESAPI Java 1.4 uses "PBEWithMD5AndDES" and which is +# very weak. It is essentially a password-based encryption key, hashed +# with MD5 around 1K times and then encrypted with the weak DES algorithm +# (56-bits) using ECB mode and an unspecified padding (it is +# JCE provider specific, but most likely "NoPadding"). However, 2.0 uses +# "AES/CBC/PKCSPadding". If you want to change these, change them here. +# Warning: This property does not control the default reference implementation for +# ESAPI 2.0 using JavaEncryptor. Also, this property will be dropped +# in the future. +# @deprecated +Encryptor.EncryptionAlgorithm=AES +# For ESAPI Java 2.0 - New encrypt / decrypt methods use this. +Encryptor.CipherTransformation=AES/CBC/PKCS5Padding + +# Applies to ESAPI 2.0 and later only! +# Comma-separated list of cipher modes that provide *BOTH* +# confidentiality *AND* message authenticity. (NIST refers to such cipher +# modes as "combined modes" so that's what we shall call them.) If any of these +# cipher modes are used then no MAC is calculated and stored +# in the CipherText upon encryption. Likewise, if one of these +# cipher modes is used with decryption, no attempt will be made +# to validate the MAC contained in the CipherText object regardless +# of whether it contains one or not. Since the expectation is that +# these cipher modes support support message authenticity already, +# injecting a MAC in the CipherText object would be at best redundant. +# +# Note that as of JDK 1.5, the SunJCE provider does not support *any* +# of these cipher modes. Of these listed, only GCM and CCM are currently +# NIST approved. YMMV for other JCE providers. E.g., Bouncy Castle supports +# GCM and CCM with "NoPadding" mode, but not with "PKCS5Padding" or other +# padding modes. +Encryptor.cipher_modes.combined_modes=GCM,CCM,IAPM,EAX,OCB,CWC + +# Applies to ESAPI 2.0 and later only! +# Additional cipher modes allowed for ESAPI 2.0 encryption. These +# cipher modes are in _addition_ to those specified by the property +# 'Encryptor.cipher_modes.combined_modes'. +# Note: We will add support for streaming modes like CFB & OFB once +# we add support for 'specified' to the property 'Encryptor.ChooseIVMethod' +# (probably in ESAPI 2.1). +# DISCUSS: Better name? +Encryptor.cipher_modes.additional_allowed=CBC + +# 128-bit is almost always sufficient and appears to be more resistant to +# related key attacks than is 256-bit AES. Use '_' to use default key size +# for cipher algorithms (where it makes sense because the algorithm supports +# a variable key size). Key length must agree to what's provided as the +# cipher transformation, otherwise this will be ignored after logging a +# warning. +# +# NOTE: This is what applies BOTH ESAPI 1.4 and 2.0. See warning above about mixing! +Encryptor.EncryptionKeyLength=128 + +# Because 2.0 uses CBC mode by default, it requires an initialization vector (IV). +# (All cipher modes except ECB require an IV.) There are two choices: we can either +# use a fixed IV known to both parties or allow ESAPI to choose a random IV. While +# the IV does not need to be hidden from adversaries, it is important that the +# adversary not be allowed to choose it. Also, random IVs are generally much more +# secure than fixed IVs. (In fact, it is essential that feed-back cipher modes +# such as CFB and OFB use a different IV for each encryption with a given key so +# in such cases, random IVs are much preferred. By default, ESAPI 2.0 uses random +# IVs. If you wish to use 'fixed' IVs, set 'Encryptor.ChooseIVMethod=fixed' and +# uncomment the Encryptor.fixedIV. +# +# Valid values: random|fixed|specified 'specified' not yet implemented; planned for 2.1 +Encryptor.ChooseIVMethod=random +# If you choose to use a fixed IV, then you must place a fixed IV here that +# is known to all others who are sharing your secret key. The format should +# be a hex string that is the same length as the cipher block size for the +# cipher algorithm that you are using. The following is an *example* for AES +# from an AES test vector for AES-128/CBC as described in: +# NIST Special Publication 800-38A (2001 Edition) +# "Recommendation for Block Cipher Modes of Operation". +# (Note that the block size for AES is 16 bytes == 128 bits.) +# +Encryptor.fixedIV=0x000102030405060708090a0b0c0d0e0f + +# Whether or not CipherText should use a message authentication code (MAC) with it. +# This prevents an adversary from altering the IV as well as allowing a more +# fool-proof way of determining the decryption failed because of an incorrect +# key being supplied. This refers to the "separate" MAC calculated and stored +# in CipherText, not part of any MAC that is calculated as a result of a +# "combined mode" cipher mode. +# +# If you are using ESAPI with a FIPS 140-2 cryptographic module, you *must* also +# set this property to false. +Encryptor.CipherText.useMAC=true + +# Whether or not the PlainText object may be overwritten and then marked +# eligible for garbage collection. If not set, this is still treated as 'true'. +Encryptor.PlainText.overwrite=true + +# Do not use DES except in a legacy situations. 56-bit is way too small key size. +#Encryptor.EncryptionKeyLength=56 +#Encryptor.EncryptionAlgorithm=DES + +# TripleDES is considered strong enough for most purposes. +# Note: There is also a 112-bit version of DESede. Using the 168-bit version +# requires downloading the special jurisdiction policy from Sun. +#Encryptor.EncryptionKeyLength=168 +#Encryptor.EncryptionAlgorithm=DESede + +Encryptor.HashAlgorithm=SHA-512 +Encryptor.HashIterations=1024 +Encryptor.DigitalSignatureAlgorithm=SHA1withDSA +Encryptor.DigitalSignatureKeyLength=1024 +Encryptor.RandomAlgorithm=SHA1PRNG +Encryptor.CharacterEncoding=UTF-8 + +# This is the Pseudo Random Function (PRF) that ESAPI's Key Derivation Function +# (KDF) normally uses. Note this is *only* the PRF used for ESAPI's KDF and +# *not* what is used for ESAPI's MAC. (Currently, HmacSHA1 is always used for +# the MAC, mostly to keep the overall size at a minimum.) +# +# Currently supported choices for JDK 1.5 and 1.6 are: +# HmacSHA1 (160 bits), HmacSHA256 (256 bits), HmacSHA384 (384 bits), and +# HmacSHA512 (512 bits). +# Note that HmacMD5 is *not* supported for the PRF used by the KDF even though +# the JDKs support it. See the ESAPI 2.0 Symmetric Encryption User Guide +# further details. +Encryptor.KDF.PRF=HmacSHA256 +#=========================================================================== +# ESAPI HttpUtilties +# +# The HttpUtilities provide basic protections to HTTP requests and responses. Primarily these methods +# protect against malicious data from attackers, such as unprintable characters, escaped characters, +# and other simple attacks. The HttpUtilities also provides utility methods for dealing with cookies, +# headers, and CSRF tokens. +# +# Default file upload location (remember to escape backslashes with \\) +HttpUtilities.UploadDir=C:\\ESAPI\\testUpload +HttpUtilities.UploadTempDir=C:\\temp +# Force flags on cookies, if you use HttpUtilities to set cookies +HttpUtilities.ForceHttpOnlySession=false +HttpUtilities.ForceSecureSession=false +HttpUtilities.ForceHttpOnlyCookies=true +HttpUtilities.ForceSecureCookies=true +# Maximum size of HTTP headers +HttpUtilities.MaxHeaderSize=4096 +# File upload configuration +HttpUtilities.ApprovedUploadExtensions=.zip,.pdf,.doc,.docx,.ppt,.pptx,.tar,.gz,.tgz,.rar,.war,.jar,.ear,.xls,.rtf,.properties,.java,.class,.txt,.xml,.jsp,.jsf,.exe,.dll +HttpUtilities.MaxUploadFileBytes=500000000 +# Using UTF-8 throughout your stack is highly recommended. That includes your database driver, +# container, and any other technologies you may be using. Failure to do this may expose you +# to Unicode transcoding injection attacks. Use of UTF-8 does not hinder internationalization. +HttpUtilities.ResponseContentType=text/html; charset=UTF-8 +# This is the name of the cookie used to represent the HTTP session +# Typically this will be the default "JSESSIONID" +HttpUtilities.HttpSessionIdName=JSESSIONID + + + +#=========================================================================== +# ESAPI Executor +# CHECKME - Not sure what this is used for, but surely it should be made OS independent. +Executor.WorkingDirectory=C:\\Windows\\Temp +Executor.ApprovedExecutables=C:\\Windows\\System32\\cmd.exe,C:\\Windows\\System32\\runas.exe + + +#=========================================================================== +# ESAPI Logging +# Set the application name if these logs are combined with other applications +Logger.ApplicationName=ExampleApplication +# If you use an HTML log viewer that does not properly HTML escape log data, you can set LogEncodingRequired to true +Logger.LogEncodingRequired=false +# Determines whether ESAPI should log the application name. This might be clutter in some single-server/single-app environments. +Logger.LogApplicationName=true +# Determines whether ESAPI should log the server IP and port. This might be clutter in some single-server environments. +Logger.LogServerIP=true +# LogFileName, the name of the logging file. Provide a full directory path (e.g., C:\\ESAPI\\ESAPI_logging_file) if you +# want to place it in a specific directory. +Logger.LogFileName=ESAPI_logging_file +# MaxLogFileSize, the max size (in bytes) of a single log file before it cuts over to a new one (default is 10,000,000) +Logger.MaxLogFileSize=10000000 + + +#=========================================================================== +# ESAPI Intrusion Detection +# +# Each event has a base to which .count, .interval, and .action are added +# The IntrusionException will fire if we receive "count" events within "interval" seconds +# The IntrusionDetector is configurable to take the following actions: log, logout, and disable +# (multiple actions separated by commas are allowed e.g. event.test.actions=log,disable +# +# Custom Events +# Names must start with "event." as the base +# Use IntrusionDetector.addEvent( "test" ) in your code to trigger "event.test" here +# You can also disable intrusion detection completely by changing +# the following parameter to true +# +IntrusionDetector.Disable=false +# +IntrusionDetector.event.test.count=2 +IntrusionDetector.event.test.interval=10 +IntrusionDetector.event.test.actions=disable,log + +# Exception Events +# All EnterpriseSecurityExceptions are registered automatically +# Call IntrusionDetector.getInstance().addException(e) for Exceptions that do not extend EnterpriseSecurityException +# Use the fully qualified classname of the exception as the base + +# any intrusion is an attack +IntrusionDetector.org.owasp.esapi.errors.IntrusionException.count=1 +IntrusionDetector.org.owasp.esapi.errors.IntrusionException.interval=1 +IntrusionDetector.org.owasp.esapi.errors.IntrusionException.actions=log,disable,logout + +# for test purposes +# CHECKME: Shouldn't there be something in the property name itself that designates +# that these are for testing??? +IntrusionDetector.org.owasp.esapi.errors.IntegrityException.count=10 +IntrusionDetector.org.owasp.esapi.errors.IntegrityException.interval=5 +IntrusionDetector.org.owasp.esapi.errors.IntegrityException.actions=log,disable,logout + +# rapid validation errors indicate scans or attacks in progress +# org.owasp.esapi.errors.ValidationException.count=10 +# org.owasp.esapi.errors.ValidationException.interval=10 +# org.owasp.esapi.errors.ValidationException.actions=log,logout + +# sessions jumping between hosts indicates session hijacking +IntrusionDetector.org.owasp.esapi.errors.AuthenticationHostException.count=2 +IntrusionDetector.org.owasp.esapi.errors.AuthenticationHostException.interval=10 +IntrusionDetector.org.owasp.esapi.errors.AuthenticationHostException.actions=log,logout + + +#=========================================================================== +# ESAPI Validation +# +# The ESAPI Validator works on regular expressions with defined names. You can define names +# either here, or you may define application specific patterns in a separate file defined below. +# This allows enterprises to specify both organizational standards as well as application specific +# validation rules. +# +Validator.ConfigurationFile=validation.properties + +# Validators used by ESAPI +Validator.AccountName=^[a-zA-Z0-9]{3,20}$ +Validator.SystemCommand=^[a-zA-Z\\-\\/]{1,64}$ +Validator.RoleName=^[a-z]{1,20}$ + +#the word TEST below should be changed to your application +#name - only relative URL's are supported +Validator.Redirect=^\\/test.*$ + +# Global HTTP Validation Rules +# Values with Base64 encoded data (e.g. encrypted state) will need at least [a-zA-Z0-9\/+=] +Validator.HTTPScheme=^(http|https)$ +Validator.HTTPServerName=^[a-zA-Z0-9_.\\-]*$ +Validator.HTTPParameterName=^[a-zA-Z0-9_]{1,32}$ +Validator.HTTPParameterValue=^[a-zA-Z0-9.\\-\\/+=@_ ]*$ +Validator.HTTPCookieName=^[a-zA-Z0-9\\-_]{1,32}$ +Validator.HTTPCookieValue=^[a-zA-Z0-9\\-\\/+=_ ]*$ +Validator.HTTPHeaderName=^[a-zA-Z0-9\\-_]{1,32}$ +Validator.HTTPHeaderValue=^[a-zA-Z0-9()\\-=\\*\\.\\?;,+\\/:&_ ]*$ +Validator.HTTPContextPath=^\\/?[a-zA-Z0-9.\\-\\/_]*$ +Validator.HTTPServletPath=^[a-zA-Z0-9.\\-\\/_]*$ +Validator.HTTPPath=^[a-zA-Z0-9.\\-_]*$ +Validator.HTTPQueryString=^[a-zA-Z0-9()\\-=\\*\\.\\?;,+\\/:&_ %]*$ +Validator.HTTPURI=^[a-zA-Z0-9()\\-=\\*\\.\\?;,+\\/:&_ ]*$ +Validator.HTTPURL=^.*$ +Validator.HTTPJSESSIONID=^[A-Z0-9]{10,30}$ + +# Validation of file related input +Validator.FileName=^[a-zA-Z0-9!@#$%^&{}\\[\\]()_+\\-=,.~'` ]{1,255}$ +Validator.DirectoryName=^[a-zA-Z0-9:/\\\\!@#$%^&{}\\[\\]()_+\\-=,.~'` ]{1,255}$ + +# Validation of dates. Controls whether or not 'lenient' dates are accepted. +# See DataFormat.setLenient(boolean flag) for further details. +Validator.AcceptLenientDates=false + From 2ac22b3ffc39d35518b0819757e79f3fecde4073 Mon Sep 17 00:00:00 2001 From: Tomasz Lelek Date: Thu, 13 Apr 2017 15:02:22 +0200 Subject: [PATCH 48/56] Bael 766 flink (#1644) * BAEL-756 code for flink article * reorder * simpler wordCount example * BAEL-766 changes according to PR * BAEL-766 change datasource to dataset * BAEL-766 add sorting example * BAEL-766 add simple streaming example * one missing change to dataSet * windowing example * add window example * add dependency explicitly * add plugin * add surefire plugin, change neme of the test to *IntegrationTest * fluent assertions * test scope * remove duplicated dep --- libraries/pom.xml | 16 +--------------- 1 file changed, 1 insertion(+), 15 deletions(-) diff --git a/libraries/pom.xml b/libraries/pom.xml index 1d908c453a..939d674d97 100644 --- a/libraries/pom.xml +++ b/libraries/pom.xml @@ -151,21 +151,7 @@ org.apache.flink flink-test-utils_2.10 ${flink.version} - - - org.apache.flink - flink-core - ${flink.version} - - - org.apache.flink - flink-java - ${flink.version} - - - org.apache.flink - flink-test-utils_2.10 - ${flink.version} + test From a5879bf8b7342e81c87b7fa084fb05713dd27b66 Mon Sep 17 00:00:00 2001 From: Tomasz Lelek Date: Fri, 14 Apr 2017 04:16:53 +0200 Subject: [PATCH 49/56] Bael 822 thread local (#1625) * code for thread local article * userNameSecret * better to string * fix typo --- .../com/baeldung/threadlocal/Context.java | 17 +++++++++ .../threadlocal/SharedMapWithUserContext.java | 21 +++++++++++ .../ThreadLocalWithUserContext.java | 20 +++++++++++ .../baeldung/threadlocal/UserRepository.java | 10 ++++++ .../baeldung/threadlocal/ThreadLocalTest.java | 35 +++++++++++++++++++ 5 files changed, 103 insertions(+) create mode 100644 core-java/src/main/java/com/baeldung/threadlocal/Context.java create mode 100644 core-java/src/main/java/com/baeldung/threadlocal/SharedMapWithUserContext.java create mode 100644 core-java/src/main/java/com/baeldung/threadlocal/ThreadLocalWithUserContext.java create mode 100644 core-java/src/main/java/com/baeldung/threadlocal/UserRepository.java create mode 100644 core-java/src/test/java/com/baeldung/threadlocal/ThreadLocalTest.java diff --git a/core-java/src/main/java/com/baeldung/threadlocal/Context.java b/core-java/src/main/java/com/baeldung/threadlocal/Context.java new file mode 100644 index 0000000000..241fb2f1e0 --- /dev/null +++ b/core-java/src/main/java/com/baeldung/threadlocal/Context.java @@ -0,0 +1,17 @@ +package com.baeldung.threadlocal; + + +public class Context { + private final String userName; + + public Context(String userName) { + this.userName = userName; + } + + @Override + public String toString() { + return "Context{" + + "userNameSecret='" + userName + '\'' + + '}'; + } +} diff --git a/core-java/src/main/java/com/baeldung/threadlocal/SharedMapWithUserContext.java b/core-java/src/main/java/com/baeldung/threadlocal/SharedMapWithUserContext.java new file mode 100644 index 0000000000..e5854e218a --- /dev/null +++ b/core-java/src/main/java/com/baeldung/threadlocal/SharedMapWithUserContext.java @@ -0,0 +1,21 @@ +package com.baeldung.threadlocal; + + +import java.util.Map; +import java.util.concurrent.ConcurrentHashMap; + +public class SharedMapWithUserContext implements Runnable { + public final static Map userContextPerUserId = new ConcurrentHashMap<>(); + private final Integer userId; + private UserRepository userRepository = new UserRepository(); + + public SharedMapWithUserContext(Integer userId) { + this.userId = userId; + } + + @Override + public void run() { + String userName = userRepository.getUserNameForUserId(userId); + userContextPerUserId.put(userId, new Context(userName)); + } +} diff --git a/core-java/src/main/java/com/baeldung/threadlocal/ThreadLocalWithUserContext.java b/core-java/src/main/java/com/baeldung/threadlocal/ThreadLocalWithUserContext.java new file mode 100644 index 0000000000..0d6a7e5572 --- /dev/null +++ b/core-java/src/main/java/com/baeldung/threadlocal/ThreadLocalWithUserContext.java @@ -0,0 +1,20 @@ +package com.baeldung.threadlocal; + + +public class ThreadLocalWithUserContext implements Runnable { + private static final ThreadLocal userContext = new ThreadLocal<>(); + private final Integer userId; + private UserRepository userRepository = new UserRepository(); + + public ThreadLocalWithUserContext(Integer userId) { + this.userId = userId; + } + + + @Override + public void run() { + String userName = userRepository.getUserNameForUserId(userId); + userContext.set(new Context(userName)); + System.out.println("thread context for given userId: " + userId + " is: " + userContext.get()); + } +} diff --git a/core-java/src/main/java/com/baeldung/threadlocal/UserRepository.java b/core-java/src/main/java/com/baeldung/threadlocal/UserRepository.java new file mode 100644 index 0000000000..3fe76f75c0 --- /dev/null +++ b/core-java/src/main/java/com/baeldung/threadlocal/UserRepository.java @@ -0,0 +1,10 @@ +package com.baeldung.threadlocal; + +import java.util.UUID; + + +public class UserRepository { + public String getUserNameForUserId(Integer userId) { + return UUID.randomUUID().toString(); + } +} diff --git a/core-java/src/test/java/com/baeldung/threadlocal/ThreadLocalTest.java b/core-java/src/test/java/com/baeldung/threadlocal/ThreadLocalTest.java new file mode 100644 index 0000000000..ac2e8fbe63 --- /dev/null +++ b/core-java/src/test/java/com/baeldung/threadlocal/ThreadLocalTest.java @@ -0,0 +1,35 @@ +package com.baeldung.threadlocal; + + +import org.junit.Test; + +import java.util.concurrent.ExecutionException; + +import static org.junit.Assert.assertEquals; + +public class ThreadLocalTest { + @Test + public void givenThreadThatStoresContextInAMap_whenStartThread_thenShouldSetContextForBothUsers() throws ExecutionException, InterruptedException { + //when + SharedMapWithUserContext firstUser = new SharedMapWithUserContext(1); + SharedMapWithUserContext secondUser = new SharedMapWithUserContext(2); + new Thread(firstUser).start(); + new Thread(secondUser).start(); + + Thread.sleep(3000); + //then + assertEquals(SharedMapWithUserContext.userContextPerUserId.size(), 2); + } + + @Test + public void givenThreadThatStoresContextInThreadLocal_whenStartThread_thenShouldStoreContextInThreadLocal() throws ExecutionException, InterruptedException { + //when + ThreadLocalWithUserContext firstUser = new ThreadLocalWithUserContext(1); + ThreadLocalWithUserContext secondUser = new ThreadLocalWithUserContext(2); + new Thread(firstUser).start(); + new Thread(secondUser).start(); + + Thread.sleep(3000); + } + +} From 2b8ba178e42b391cb73248985f45894f0779f73c Mon Sep 17 00:00:00 2001 From: lor6 Date: Fri, 14 Apr 2017 08:14:44 +0300 Subject: [PATCH 50/56] Bael 736 (#1646) * dynamic validation * small fixes * remove set property * fix conflicts * fix conflicts * add optional --- .../ContactInfoValidator.java | 12 +++++---- .../config/CustomerController.java | 22 ---------------- .../dao/ContactInfoExpressionRepository.java | 8 +++--- .../src/main/resources/application.properties | 4 ++- .../main/resources/templates/customer.html | 25 ------------------- 5 files changed, 15 insertions(+), 56 deletions(-) diff --git a/spring-boot/src/main/java/com/baeldung/dynamicvalidation/ContactInfoValidator.java b/spring-boot/src/main/java/com/baeldung/dynamicvalidation/ContactInfoValidator.java index a8393e2739..53fb418ad6 100644 --- a/spring-boot/src/main/java/com/baeldung/dynamicvalidation/ContactInfoValidator.java +++ b/spring-boot/src/main/java/com/baeldung/dynamicvalidation/ContactInfoValidator.java @@ -6,6 +6,8 @@ import javax.validation.ConstraintValidator; import javax.validation.ConstraintValidatorContext; import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.beans.factory.annotation.Value; +import org.thymeleaf.util.StringUtils; import com.baeldung.dynamicvalidation.dao.ContactInfoExpressionRepository; import com.baeldung.dynamicvalidation.model.ContactInfoExpression; @@ -15,17 +17,17 @@ public class ContactInfoValidator implements ConstraintValidator getContactInfoType(Model model) { - return expressionRepository.findAll(); - } - } diff --git a/spring-boot/src/main/java/com/baeldung/dynamicvalidation/dao/ContactInfoExpressionRepository.java b/spring-boot/src/main/java/com/baeldung/dynamicvalidation/dao/ContactInfoExpressionRepository.java index ccacc297a5..0d7797b996 100644 --- a/spring-boot/src/main/java/com/baeldung/dynamicvalidation/dao/ContactInfoExpressionRepository.java +++ b/spring-boot/src/main/java/com/baeldung/dynamicvalidation/dao/ContactInfoExpressionRepository.java @@ -1,9 +1,11 @@ package com.baeldung.dynamicvalidation.dao; -import org.springframework.data.jpa.repository.JpaRepository; +import java.util.Optional; + +import org.springframework.data.repository.Repository; import com.baeldung.dynamicvalidation.model.ContactInfoExpression; -public interface ContactInfoExpressionRepository extends JpaRepository { - +public interface ContactInfoExpressionRepository extends Repository { + Optional findOne(String id); } diff --git a/spring-boot/src/main/resources/application.properties b/spring-boot/src/main/resources/application.properties index 84315a2477..444f68d50a 100644 --- a/spring-boot/src/main/resources/application.properties +++ b/spring-boot/src/main/resources/application.properties @@ -43,4 +43,6 @@ servlet.mapping=/dispatcherExampleURL #banner.image.width= //TODO #banner.image.height= //TODO #banner.image.margin= //TODO -#banner.image.invert= //TODO \ No newline at end of file +#banner.image.invert= //TODO + +contactInfoType=email \ No newline at end of file diff --git a/spring-boot/src/main/resources/templates/customer.html b/spring-boot/src/main/resources/templates/customer.html index 6aec5ab590..c8f5a25d5e 100644 --- a/spring-boot/src/main/resources/templates/customer.html +++ b/spring-boot/src/main/resources/templates/customer.html @@ -3,39 +3,14 @@ Customer Page -
Contact Info:
-Contact Info Type:



-
\ No newline at end of file From 14909f6c2f742dee09d74d37d53927bb941c4643 Mon Sep 17 00:00:00 2001 From: Grzegorz Piwowarek Date: Fri, 14 Apr 2017 11:26:51 +0200 Subject: [PATCH 51/56] Refactor ContactInfoValidator (#1647) * Refactor ContactInfoValidator * Refactor ContactInfoValidator --- .../ContactInfoValidator.java | 25 ++++++++++--------- 1 file changed, 13 insertions(+), 12 deletions(-) diff --git a/spring-boot/src/main/java/com/baeldung/dynamicvalidation/ContactInfoValidator.java b/spring-boot/src/main/java/com/baeldung/dynamicvalidation/ContactInfoValidator.java index 53fb418ad6..81345eac83 100644 --- a/spring-boot/src/main/java/com/baeldung/dynamicvalidation/ContactInfoValidator.java +++ b/spring-boot/src/main/java/com/baeldung/dynamicvalidation/ContactInfoValidator.java @@ -1,16 +1,14 @@ package com.baeldung.dynamicvalidation; -import java.util.regex.Pattern; - -import javax.validation.ConstraintValidator; -import javax.validation.ConstraintValidatorContext; - +import com.baeldung.dynamicvalidation.dao.ContactInfoExpressionRepository; +import com.baeldung.dynamicvalidation.model.ContactInfoExpression; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Value; import org.thymeleaf.util.StringUtils; -import com.baeldung.dynamicvalidation.dao.ContactInfoExpressionRepository; -import com.baeldung.dynamicvalidation.model.ContactInfoExpression; +import javax.validation.ConstraintValidator; +import javax.validation.ConstraintValidatorContext; +import java.util.regex.Pattern; public class ContactInfoValidator implements ConstraintValidator { @@ -26,12 +24,15 @@ public class ContactInfoValidator implements ConstraintValidator Pattern.matches(p, value)) + .orElse(false); } } From 389927d901394d13cb6e1db3d14fd3a50206b99b Mon Sep 17 00:00:00 2001 From: Anton Date: Sat, 15 Apr 2017 04:40:39 +0300 Subject: [PATCH 52/56] BAEL-748 quick guide to @Value (#1577) * BAEL-748 quick guide to @Value * BAEL-748 changes from review --- .../java/com/baeldung/value/SomeBean.java | 17 +++++ .../java/com/baeldung/value/ValuesApp.java | 68 +++++++++++++++++++ .../src/main/resources/values.properties | 3 + 3 files changed, 88 insertions(+) create mode 100644 spring-core/src/main/java/com/baeldung/value/SomeBean.java create mode 100644 spring-core/src/main/java/com/baeldung/value/ValuesApp.java create mode 100644 spring-core/src/main/resources/values.properties diff --git a/spring-core/src/main/java/com/baeldung/value/SomeBean.java b/spring-core/src/main/java/com/baeldung/value/SomeBean.java new file mode 100644 index 0000000000..39d5245049 --- /dev/null +++ b/spring-core/src/main/java/com/baeldung/value/SomeBean.java @@ -0,0 +1,17 @@ +package com.baeldung.value; + +public class SomeBean { + private int someValue; + + public SomeBean(int someValue) { + this.someValue = someValue; + } + + public int getSomeValue() { + return someValue; + } + + public void setSomeValue(int someValue) { + this.someValue = someValue; + } +} diff --git a/spring-core/src/main/java/com/baeldung/value/ValuesApp.java b/spring-core/src/main/java/com/baeldung/value/ValuesApp.java new file mode 100644 index 0000000000..25f4b9fb9c --- /dev/null +++ b/spring-core/src/main/java/com/baeldung/value/ValuesApp.java @@ -0,0 +1,68 @@ +package com.baeldung.value; + +import java.util.List; + +import javax.annotation.PostConstruct; + +import org.springframework.beans.factory.annotation.Value; +import org.springframework.context.ApplicationContext; +import org.springframework.context.annotation.AnnotationConfigApplicationContext; +import org.springframework.context.annotation.Bean; +import org.springframework.context.annotation.Configuration; +import org.springframework.context.annotation.PropertySource; + +@Configuration +@PropertySource(name = "myProperties", value = "values.properties") +public class ValuesApp { + + @Value("string value") + private String stringValue; + + @Value("${value.from.file}") + private String valueFromFile; + + @Value("${systemValue}") + private String systemValue; + + @Value("${unknown_param:some default}") + private String someDefault; + + @Value("${priority}") + private String prioritySystemProperty; + + @Value("#{systemProperties['priority']}") + private String spelValue; + + @Value("#{systemProperties['unknown'] ?: 'some default'}") + private String spelSomeDefault; + + @Value("#{someBean.someValue}") + private Integer someBeanValue; + + @Value("#{'${listOfValues}'.split(',')}") + private List valuesList; + + public static void main(String[] args) { + System.setProperty("systemValue", "Some system parameter value"); + System.setProperty("priority", "System property"); + ApplicationContext applicationContext = new AnnotationConfigApplicationContext(ValuesApp.class); + } + + @Bean + public SomeBean someBean() { + return new SomeBean(10); + } + + @PostConstruct + public void afterInitialize() { + System.out.println(stringValue); + System.out.println(valueFromFile); + System.out.println(systemValue); + System.out.println(someDefault); + System.out.println(prioritySystemProperty); + System.out.println(spelValue); + System.out.println(spelSomeDefault); + System.out.println(someBeanValue); + System.out.println(valuesList); + } +} diff --git a/spring-core/src/main/resources/values.properties b/spring-core/src/main/resources/values.properties new file mode 100644 index 0000000000..d7d61b8ee8 --- /dev/null +++ b/spring-core/src/main/resources/values.properties @@ -0,0 +1,3 @@ +value.from.file=Value got from the file +priority=Properties file +listOfValues=A,B,C \ No newline at end of file From 2dbca951cbef70bf3bf11aba3408ac4ccfd7676a Mon Sep 17 00:00:00 2001 From: KevinGilmore Date: Sat, 15 Apr 2017 10:00:58 -0500 Subject: [PATCH 53/56] BAEL-736 Update README (#1651) * Add files via upload * Update pom.xml * Update RunGuice.java * Update Communication.java * Update CommunicationMode.java * Update DefaultCommunicator.java * Update EmailCommunicationMode.java * Update IMCommunicationMode.java * Update SMSCommunicationMode.java * Update MessageLogger.java * Update MessageSentLoggable.java * Update AOPModule.java * Update BasicModule.java * Update CommunicationModel.java * Update Communicator.java * Update BasicModule.java * Update RunGuice.java * Update MessageLogger.java * Update Communicator.java * Update pom.xml * BAEL-278: Updated README.md * BAEL-554: Add and update README.md files * Update pom.xml * Update pom.xml * Update pom.xml * BAEL-345: fixed assertion * BAEL-109: Updated README.md * BAEL-345: Added README.md * Reinstating reactor-core module in root-level pom * BAEL-393: Adding guide-intro module to root pom * BAEL-9: Updated README.md * BAEL-157: README.md updated * Changed project name * Update RunGuice.java Removed references to message logging and output * Update Communication.java Removed message logging-related code * BAEL-566: Updated README.md * New project name * BAEL-393: removing guice-intro directory * BAEL-393: renamed module guice-intro to guice in root pom.xml * BAEL-393 and BAEL-541 README.md files * BAEL-731: Updated README.md * BAEL-680: renamed test methods * BAEL-714: Updated README.md * BAEL-737: Updated README.md * BAEL-680 and BAEL-756 README.md updates * BAEL-666: Updated README * BAEL-415: Custom Scope * BAEL-415: Custom Scope - renamed classes to reflect TenantScope * README file updates for BAEL-723, BAEL-763, and BAEL-415 * BAEL-735: README * BAEL-567: README * BAEL-736: README --- spring-boot/README.MD | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/spring-boot/README.MD b/spring-boot/README.MD index 1874f621b5..bb15ffc8cc 100644 --- a/spring-boot/README.MD +++ b/spring-boot/README.MD @@ -17,4 +17,4 @@ The "REST With Spring" Classes: http://bit.ly/restwithspring - [Guide to Internationalization in Spring Boot](http://www.baeldung.com/spring-boot-internationalization) - [Create a Custom FailureAnalyzer with Spring Boot](http://www.baeldung.com/spring-boot-failure-analyzer) - [Configuring Separate Spring DataSource for Tests](http://www.baeldung.com/spring-testing-separate-data-source) - +- [Dynamic DTO Validation Config Retrieved from DB](http://www.baeldung.com/spring-dynamic-dto-validation) From 5e0d1e88ef20cb7965a726bed4a4f9b567b68a4f Mon Sep 17 00:00:00 2001 From: Tomasz Lelek Date: Sat, 15 Apr 2017 17:34:56 +0200 Subject: [PATCH 54/56] BAEL-814 unsafe (#1645) * code for the unsafe article * more descriptive example * proper eng * better test name * free memory call * java 8 style --- .../java/com/baeldung/unsafe/CASCounter.java | 33 +++++ .../com/baeldung/unsafe/OffHeapArray.java | 39 ++++++ .../java/com/baeldung/unsafe/UnsafeTest.java | 118 ++++++++++++++++++ 3 files changed, 190 insertions(+) create mode 100644 core-java/src/test/java/com/baeldung/unsafe/CASCounter.java create mode 100644 core-java/src/test/java/com/baeldung/unsafe/OffHeapArray.java create mode 100644 core-java/src/test/java/com/baeldung/unsafe/UnsafeTest.java diff --git a/core-java/src/test/java/com/baeldung/unsafe/CASCounter.java b/core-java/src/test/java/com/baeldung/unsafe/CASCounter.java new file mode 100644 index 0000000000..f7f3b340c2 --- /dev/null +++ b/core-java/src/test/java/com/baeldung/unsafe/CASCounter.java @@ -0,0 +1,33 @@ +package com.baeldung.unsafe; + +import sun.misc.Unsafe; + +import java.lang.reflect.Field; + +class CASCounter { + private final Unsafe unsafe; + private volatile long counter = 0; + private long offset; + + private Unsafe getUnsafe() throws IllegalAccessException, NoSuchFieldException { + Field f = Unsafe.class.getDeclaredField("theUnsafe"); + f.setAccessible(true); + return (Unsafe) f.get(null); + } + + public CASCounter() throws Exception { + unsafe = getUnsafe(); + offset = unsafe.objectFieldOffset(CASCounter.class.getDeclaredField("counter")); + } + + public void increment() { + long before = counter; + while (!unsafe.compareAndSwapLong(this, offset, before, before + 1)) { + before = counter; + } + } + + public long getCounter() { + return counter; + } +} \ No newline at end of file diff --git a/core-java/src/test/java/com/baeldung/unsafe/OffHeapArray.java b/core-java/src/test/java/com/baeldung/unsafe/OffHeapArray.java new file mode 100644 index 0000000000..f5cab88f3d --- /dev/null +++ b/core-java/src/test/java/com/baeldung/unsafe/OffHeapArray.java @@ -0,0 +1,39 @@ +package com.baeldung.unsafe; + +import sun.misc.Unsafe; + +import java.lang.reflect.Field; + +class OffHeapArray { + private final static int BYTE = 1; + private long size; + private long address; + + private Unsafe getUnsafe() throws IllegalAccessException, NoSuchFieldException { + Field f = Unsafe.class.getDeclaredField("theUnsafe"); + f.setAccessible(true); + return (Unsafe) f.get(null); + } + + public OffHeapArray(long size) throws NoSuchFieldException, IllegalAccessException { + this.size = size; + address = getUnsafe().allocateMemory(size * BYTE); + } + + public void set(long i, byte value) throws NoSuchFieldException, IllegalAccessException { + getUnsafe().putByte(address + i * BYTE, value); + } + + public int get(long idx) throws NoSuchFieldException, IllegalAccessException { + return getUnsafe().getByte(address + idx * BYTE); + } + + public long size() { + return size; + } + + public void freeMemory() throws NoSuchFieldException, IllegalAccessException { + getUnsafe().freeMemory(address); + } + +} diff --git a/core-java/src/test/java/com/baeldung/unsafe/UnsafeTest.java b/core-java/src/test/java/com/baeldung/unsafe/UnsafeTest.java new file mode 100644 index 0000000000..6aa4973ee7 --- /dev/null +++ b/core-java/src/test/java/com/baeldung/unsafe/UnsafeTest.java @@ -0,0 +1,118 @@ +package com.baeldung.unsafe; + +import org.junit.Before; +import org.junit.Test; +import sun.misc.Unsafe; + +import java.io.IOException; +import java.lang.reflect.Field; +import java.util.concurrent.ExecutorService; +import java.util.concurrent.Executors; +import java.util.concurrent.TimeUnit; +import java.util.stream.IntStream; + +import static junit.framework.Assert.assertTrue; +import static junit.framework.TestCase.assertEquals; + +public class UnsafeTest { + + private Unsafe unsafe; + + @Before + public void setup() throws NoSuchFieldException, IllegalAccessException { + Field f = Unsafe.class.getDeclaredField("theUnsafe"); + f.setAccessible(true); + unsafe = (Unsafe) f.get(null); + } + + + @Test + public void givenClass_whenInitializeIt_thenShouldHaveDifferentStateWhenUseUnsafe() throws IllegalAccessException, InstantiationException { + //when + InitializationOrdering o1 = new InitializationOrdering(); + assertEquals(o1.getA(), 1); + + //when + InitializationOrdering o3 = (InitializationOrdering) unsafe.allocateInstance(InitializationOrdering.class); + assertEquals(o3.getA(), 0); + } + + @Test + public void givenPrivateMethod_whenUsingUnsafe_thenCanModifyPrivateField() throws NoSuchFieldException { + //given + SecretHolder secretHolder = new SecretHolder(); + + //when + Field f = secretHolder.getClass().getDeclaredField("SECRET_VALUE"); + unsafe.putInt(secretHolder, unsafe.objectFieldOffset(f), 1); + + //then + assertTrue(secretHolder.secretIsDisclosed()); + } + + @Test(expected = IOException.class) + public void givenUnsafeThrowException_whenThrowCheckedException_thenNotNeedToCatchIt() { + unsafe.throwException(new IOException()); + } + + @Test + public void givenArrayBiggerThatMaxInt_whenAllocateItOffHeapMemory_thenSuccess() throws NoSuchFieldException, IllegalAccessException { + //given + long SUPER_SIZE = (long) Integer.MAX_VALUE * 2; + OffHeapArray array = new OffHeapArray(SUPER_SIZE); + + //when + int sum = 0; + for (int i = 0; i < 100; i++) { + array.set((long) Integer.MAX_VALUE + i, (byte) 3); + sum += array.get((long) Integer.MAX_VALUE + i); + } + + //then + assertEquals(array.size(), SUPER_SIZE); + assertEquals(sum, 300); + } + + @Test + public void givenUnsafeCompareAndSwap_whenUseIt_thenCounterYildCorrectLockFreeResults() throws Exception { + //given + int NUM_OF_THREADS = 1_000; + int NUM_OF_INCREMENTS = 10_000; + ExecutorService service = Executors.newFixedThreadPool(NUM_OF_THREADS); + CASCounter casCounter = new CASCounter(); + + //when + IntStream.rangeClosed(0, NUM_OF_THREADS - 1) + .forEach(i -> service.submit(() -> IntStream + .rangeClosed(0, NUM_OF_INCREMENTS - 1) + .forEach(j -> casCounter.increment()))); + + service.shutdown(); + service.awaitTermination(1, TimeUnit.MINUTES); + + //then + assertEquals(NUM_OF_INCREMENTS * NUM_OF_THREADS, casCounter.getCounter()); + + } + + class InitializationOrdering { + private long a; + + public InitializationOrdering() { + this.a = 1; + } + + public long getA() { + return this.a; + } + } + + class SecretHolder { + private int SECRET_VALUE = 0; + + public boolean secretIsDisclosed() { + return SECRET_VALUE == 1; + } + } + +} From b7d64875471623c5b7b25bd68402d02adc7c4a06 Mon Sep 17 00:00:00 2001 From: Yasin Date: Sat, 15 Apr 2017 21:15:26 +0530 Subject: [PATCH 55/56] BAEL-88 Testing in Spring Boot (#1653) * yasin.bhojawala@gmail.com Evaluation article on Different Types of Bean Injection in Spring * Revert "yasin.bhojawala@gmail.com" This reverts commit 963cc51a7a15b75b550108fe4e198cd65a274032. * Fixing compilation error and removing unused import * Introduction to Java9 StackWalking API - yasin.bhojawala@gmail.com Code examples for the article "Introduction to Java9 StackWalking API" * BAEL-608 Introduction to Java9 StackWalking API * BAEL-608 Introduction to Java9 StackWalking API changing the test names to BDD style * BAEL-608 Introduction to Java9 StackWalking API correcting the typo * BAEL-608 Introduction to Java9 StackWalking API improving method names * BAEL-608 Introduction to Java9 StackWalking API test method names improvements * BAEL-718 Quick intro to javatuples * merging pom from master * BAEL-722 Intro to JSONassert * BAEL-722 Intro to JSONassert Updated to 1.5.0 * BAEL-745 Quick Math.pow example * BAEL-729 Adding custom info to actuator's /info endpoint * BAEL-88 Testing in Spring Boot * BAEL-88 Testing in Spring Boot --- .../org/baeldung/boot/boottest/Employee.java | 43 ++++++ .../boot/boottest/EmployeeRepository.java | 21 +++ .../boot/boottest/EmployeeRestController.java | 32 ++++ .../boot/boottest/EmployeeService.java | 17 ++ .../boot/boottest/EmployeeServiceImpl.java | 45 ++++++ .../boot/boottest/EmployeeRepositoryTest.java | 78 ++++++++++ .../EmployeeRestControllerIntTest.java | 78 ++++++++++ .../boottest/EmployeeRestControllerTest.java | 78 ++++++++++ .../boottest/EmployeeServiceImplTest.java | 145 ++++++++++++++++++ .../org/baeldung/boot/boottest/JsonUtil.java | 14 ++ .../application-integrationtest.properties | 2 + 11 files changed, 553 insertions(+) create mode 100644 spring-boot/src/main/java/org/baeldung/boot/boottest/Employee.java create mode 100644 spring-boot/src/main/java/org/baeldung/boot/boottest/EmployeeRepository.java create mode 100644 spring-boot/src/main/java/org/baeldung/boot/boottest/EmployeeRestController.java create mode 100644 spring-boot/src/main/java/org/baeldung/boot/boottest/EmployeeService.java create mode 100644 spring-boot/src/main/java/org/baeldung/boot/boottest/EmployeeServiceImpl.java create mode 100644 spring-boot/src/test/java/org/baeldung/boot/boottest/EmployeeRepositoryTest.java create mode 100644 spring-boot/src/test/java/org/baeldung/boot/boottest/EmployeeRestControllerIntTest.java create mode 100644 spring-boot/src/test/java/org/baeldung/boot/boottest/EmployeeRestControllerTest.java create mode 100644 spring-boot/src/test/java/org/baeldung/boot/boottest/EmployeeServiceImplTest.java create mode 100644 spring-boot/src/test/java/org/baeldung/boot/boottest/JsonUtil.java create mode 100644 spring-boot/src/test/resources/application-integrationtest.properties diff --git a/spring-boot/src/main/java/org/baeldung/boot/boottest/Employee.java b/spring-boot/src/main/java/org/baeldung/boot/boottest/Employee.java new file mode 100644 index 0000000000..a805e8f5fe --- /dev/null +++ b/spring-boot/src/main/java/org/baeldung/boot/boottest/Employee.java @@ -0,0 +1,43 @@ +package org.baeldung.boot.boottest; + +import javax.persistence.Entity; +import javax.persistence.GeneratedValue; +import javax.persistence.GenerationType; +import javax.persistence.Id; +import javax.persistence.Table; +import javax.validation.constraints.Size; + +@Entity +@Table(name = "person") +public class Employee { + + public Employee() { + } + + public Employee(String name) { + this.name = name; + } + + @Id + @GeneratedValue(strategy = GenerationType.AUTO) + private Long id; + + @Size(min = 3, max = 20) + private String name; + + public Long getId() { + return id; + } + + public void setId(Long id) { + this.id = id; + } + + public String getName() { + return name; + } + + public void setName(String name) { + this.name = name; + } +} \ No newline at end of file diff --git a/spring-boot/src/main/java/org/baeldung/boot/boottest/EmployeeRepository.java b/spring-boot/src/main/java/org/baeldung/boot/boottest/EmployeeRepository.java new file mode 100644 index 0000000000..fa234f0e3a --- /dev/null +++ b/spring-boot/src/main/java/org/baeldung/boot/boottest/EmployeeRepository.java @@ -0,0 +1,21 @@ +package org.baeldung.boot.boottest; + +import java.util.List; +import java.util.Optional; + +import javax.transaction.Transactional; + +import org.springframework.data.jpa.repository.JpaRepository; +import org.springframework.stereotype.Repository; + +@Repository +@Transactional +public interface EmployeeRepository extends JpaRepository { + + public Optional findByName(String name); + + public Optional findById(Long id); + + public List findAll(); + +} diff --git a/spring-boot/src/main/java/org/baeldung/boot/boottest/EmployeeRestController.java b/spring-boot/src/main/java/org/baeldung/boot/boottest/EmployeeRestController.java new file mode 100644 index 0000000000..8442fc03a3 --- /dev/null +++ b/spring-boot/src/main/java/org/baeldung/boot/boottest/EmployeeRestController.java @@ -0,0 +1,32 @@ +package org.baeldung.boot.boottest; + +import java.util.List; + +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.http.HttpStatus; +import org.springframework.http.ResponseEntity; +import org.springframework.web.bind.annotation.RequestBody; +import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.RequestMethod; +import org.springframework.web.bind.annotation.RestController; + +@RestController +@RequestMapping("/api") +public class EmployeeRestController { + + @Autowired + EmployeeService employeeService; + + @RequestMapping(value = "/employees", method = RequestMethod.POST) + public ResponseEntity createEmployee(@RequestBody Employee employee) { + HttpStatus status = HttpStatus.CREATED; + Employee saved = employeeService.save(employee); + return new ResponseEntity<>(saved, status); + } + + @RequestMapping(value = "/employees", method = RequestMethod.GET) + public List getAllEmployees() { + return employeeService.getAllEmployees(); + } + +} diff --git a/spring-boot/src/main/java/org/baeldung/boot/boottest/EmployeeService.java b/spring-boot/src/main/java/org/baeldung/boot/boottest/EmployeeService.java new file mode 100644 index 0000000000..f0ed49e699 --- /dev/null +++ b/spring-boot/src/main/java/org/baeldung/boot/boottest/EmployeeService.java @@ -0,0 +1,17 @@ +package org.baeldung.boot.boottest; + +import java.util.List; +import java.util.Optional; + +public interface EmployeeService { + + public Optional getEmployeeById(Long id); + + public Optional getEmployeeByName(String name); + + public List getAllEmployees(); + + public boolean exists(String email); + + public Employee save(Employee employee); +} diff --git a/spring-boot/src/main/java/org/baeldung/boot/boottest/EmployeeServiceImpl.java b/spring-boot/src/main/java/org/baeldung/boot/boottest/EmployeeServiceImpl.java new file mode 100644 index 0000000000..21936255e0 --- /dev/null +++ b/spring-boot/src/main/java/org/baeldung/boot/boottest/EmployeeServiceImpl.java @@ -0,0 +1,45 @@ +package org.baeldung.boot.boottest; + +import java.util.List; +import java.util.Optional; + +import javax.transaction.Transactional; + +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Service; + +@Service +@Transactional +public class EmployeeServiceImpl implements EmployeeService { + + @Autowired + EmployeeRepository employeeRepository; + + @Override + public Optional getEmployeeById(Long id) { + return employeeRepository.findById(id); + } + + @Override + public Optional getEmployeeByName(String name) { + return employeeRepository.findByName(name); + } + + @Override + public boolean exists(String name) { + if (employeeRepository.findByName(name) != null) { + return true; + } + return false; + } + + @Override + public Employee save(Employee employee) { + return employeeRepository.save(employee); + } + + @Override + public List getAllEmployees() { + return employeeRepository.findAll(); + } +} diff --git a/spring-boot/src/test/java/org/baeldung/boot/boottest/EmployeeRepositoryTest.java b/spring-boot/src/test/java/org/baeldung/boot/boottest/EmployeeRepositoryTest.java new file mode 100644 index 0000000000..f47e28a7e1 --- /dev/null +++ b/spring-boot/src/test/java/org/baeldung/boot/boottest/EmployeeRepositoryTest.java @@ -0,0 +1,78 @@ +package org.baeldung.boot.boottest; + +import static org.assertj.core.api.Assertions.assertThat; + +import java.util.List; +import java.util.NoSuchElementException; +import java.util.Optional; + +import org.baeldung.boot.boottest.Employee; +import org.baeldung.boot.boottest.EmployeeRepository; +import org.junit.Test; +import org.junit.runner.RunWith; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.boot.test.autoconfigure.orm.jpa.DataJpaTest; +import org.springframework.boot.test.autoconfigure.orm.jpa.TestEntityManager; +import org.springframework.test.context.junit4.SpringRunner; + +@RunWith(SpringRunner.class) +@DataJpaTest +public class EmployeeRepositoryTest { + + @Autowired + TestEntityManager entityManager; + + @Autowired + EmployeeRepository employeeRepository; + + @Test + public void whenFindByName_thenReturnEmployee() { + Employee emp = new Employee("test"); + entityManager.persistAndFlush(emp); + + Optional fromDb = employeeRepository.findByName(emp.getName()); + assertThat(fromDb.get() + .getName()).isEqualTo(emp.getName()); + } + + @Test(expected = NoSuchElementException.class) + public void whenInvalidName_thenNoSuchElementException() { + Optional fromDb = employeeRepository.findByName("doesNotExist"); + fromDb.get(); + } + + @Test + public void whenFindById_thenReturnEmployee() { + Employee emp = new Employee("test"); + entityManager.persistAndFlush(emp); + + Optional fromDb = employeeRepository.findById(emp.getId()); + assertThat(fromDb.get() + .getName()).isEqualTo(emp.getName()); + } + + @Test(expected = NoSuchElementException.class) + public void whenInvalidId_thenNoSuchElementException() { + Optional fromDb = employeeRepository.findById(-11L); + fromDb.get(); + } + + @Test + public void givenSetOfEmployees_whenFindAll_thenReturnAllEmployees() { + Employee alex = new Employee("alex"); + Employee ron = new Employee("ron"); + Employee bob = new Employee("bob"); + + entityManager.persist(alex); + entityManager.persist(bob); + entityManager.persist(ron); + entityManager.flush(); + + List allEmployees = employeeRepository.findAll(); + + assertThat(allEmployees).hasSize(3) + .extracting(Employee::getName) + .containsOnly(alex.getName(), ron.getName(), bob.getName()); + } + +} diff --git a/spring-boot/src/test/java/org/baeldung/boot/boottest/EmployeeRestControllerIntTest.java b/spring-boot/src/test/java/org/baeldung/boot/boottest/EmployeeRestControllerIntTest.java new file mode 100644 index 0000000000..6360970345 --- /dev/null +++ b/spring-boot/src/test/java/org/baeldung/boot/boottest/EmployeeRestControllerIntTest.java @@ -0,0 +1,78 @@ +package org.baeldung.boot.boottest; + +import static org.assertj.core.api.Assertions.assertThat; +import static org.hamcrest.CoreMatchers.is; +import static org.hamcrest.Matchers.greaterThanOrEqualTo; +import static org.hamcrest.Matchers.hasSize; +import static org.springframework.test.web.servlet.request.MockMvcRequestBuilders.get; +import static org.springframework.test.web.servlet.request.MockMvcRequestBuilders.post; +import static org.springframework.test.web.servlet.result.MockMvcResultHandlers.print; +import static org.springframework.test.web.servlet.result.MockMvcResultMatchers.content; +import static org.springframework.test.web.servlet.result.MockMvcResultMatchers.jsonPath; +import static org.springframework.test.web.servlet.result.MockMvcResultMatchers.status; + +import java.io.IOException; +import java.util.List; + +import org.baeldung.boot.DemoApplication; +import org.junit.After; +import org.junit.Test; +import org.junit.runner.RunWith; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.boot.test.autoconfigure.web.servlet.AutoConfigureMockMvc; +import org.springframework.boot.test.context.SpringBootTest; +import org.springframework.boot.test.context.SpringBootTest.WebEnvironment; +import org.springframework.http.MediaType; +import org.springframework.test.context.TestPropertySource; +import org.springframework.test.context.junit4.SpringRunner; +import org.springframework.test.web.servlet.MockMvc; + +@RunWith(SpringRunner.class) +@SpringBootTest(webEnvironment = WebEnvironment.RANDOM_PORT, classes = DemoApplication.class) +@AutoConfigureMockMvc +@TestPropertySource(locations = "classpath:application-integrationtest.properties") +public class EmployeeRestControllerIntTest { + + @Autowired + MockMvc mvc; + + @Autowired + EmployeeRepository repository; + + @After + public void resetDb() { + repository.deleteAll(); + } + + @Test + public void whenValidInput_thenCreateEmployee() throws IOException, Exception { + Employee bob = new Employee("bob"); + mvc.perform(post("/api/employees").contentType(MediaType.APPLICATION_JSON) + .content(JsonUtil.toJson(bob))); + + List found = repository.findAll(); + assertThat(found).extracting(Employee::getName) + .containsOnly("bob"); + } + + @Test + public void givenEmployees_whenGetEmployees_thenStatus200() throws Exception { + + createTestEmployee("bob"); + createTestEmployee("alex"); + + mvc.perform(get("/api/employees").contentType(MediaType.APPLICATION_JSON)) + .andDo(print()) + .andExpect(status().isOk()) + .andExpect(content().contentTypeCompatibleWith(MediaType.APPLICATION_JSON)) + .andExpect(jsonPath("$", hasSize(greaterThanOrEqualTo(2)))) + .andExpect(jsonPath("$[0].name", is("bob"))) + .andExpect(jsonPath("$[1].name", is("alex"))); + } + + private void createTestEmployee(String name) { + Employee emp = new Employee(name); + repository.saveAndFlush(emp); + } + +} diff --git a/spring-boot/src/test/java/org/baeldung/boot/boottest/EmployeeRestControllerTest.java b/spring-boot/src/test/java/org/baeldung/boot/boottest/EmployeeRestControllerTest.java new file mode 100644 index 0000000000..0187ba9969 --- /dev/null +++ b/spring-boot/src/test/java/org/baeldung/boot/boottest/EmployeeRestControllerTest.java @@ -0,0 +1,78 @@ +package org.baeldung.boot.boottest; + +import static org.hamcrest.CoreMatchers.is; +import static org.hamcrest.Matchers.hasSize; +import static org.mockito.BDDMockito.given; +import static org.mockito.Mockito.reset; +import static org.mockito.Mockito.verify; +import static org.springframework.test.web.servlet.request.MockMvcRequestBuilders.get; +import static org.springframework.test.web.servlet.request.MockMvcRequestBuilders.post; +import static org.springframework.test.web.servlet.result.MockMvcResultMatchers.jsonPath; +import static org.springframework.test.web.servlet.result.MockMvcResultMatchers.status; + +import java.util.Arrays; +import java.util.List; + +import org.baeldung.boot.boottest.Employee; +import org.baeldung.boot.boottest.EmployeeRestController; +import org.baeldung.boot.boottest.EmployeeService; +import org.junit.Before; +import org.junit.Test; +import org.junit.runner.RunWith; +import org.mockito.Mockito; +import org.mockito.internal.verification.VerificationModeFactory; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.boot.test.autoconfigure.web.servlet.WebMvcTest; +import org.springframework.boot.test.mock.mockito.MockBean; +import org.springframework.http.MediaType; +import org.springframework.test.context.junit4.SpringRunner; +import org.springframework.test.web.servlet.MockMvc; + +@RunWith(SpringRunner.class) +@WebMvcTest(EmployeeRestController.class) +public class EmployeeRestControllerTest { + + @Autowired + MockMvc mvc; + + @MockBean + EmployeeService service; + + @Before + public void setUp() throws Exception { + } + + @Test + public void whenPostEmployee_thenCreateEmployee() throws Exception { + Employee alex = new Employee("alex"); + given(service.save(Mockito.anyObject())).willReturn(alex); + + mvc.perform(post("/api/employees").contentType(MediaType.APPLICATION_JSON) + .content(JsonUtil.toJson(alex))) + .andExpect(status().isCreated()) + .andExpect(jsonPath("$.name", is("alex"))); + verify(service, VerificationModeFactory.times(1)).save(Mockito.anyObject()); + reset(service); + } + + @Test + public void givenEmployees_whenGetEmployees_thenReturnJsonArray() throws Exception { + Employee alex = new Employee("alex"); + Employee john = new Employee("john"); + Employee bob = new Employee("bob"); + + List allEmployees = Arrays.asList(alex, john, bob); + + given(service.getAllEmployees()).willReturn(allEmployees); + + mvc.perform(get("/api/employees").contentType(MediaType.APPLICATION_JSON)) + .andExpect(status().isOk()) + .andExpect(jsonPath("$", hasSize(3))) + .andExpect(jsonPath("$[0].name", is(alex.getName()))) + .andExpect(jsonPath("$[1].name", is(john.getName()))) + .andExpect(jsonPath("$[2].name", is(bob.getName()))); + verify(service, VerificationModeFactory.times(1)).getAllEmployees(); + reset(service); + } + +} \ No newline at end of file diff --git a/spring-boot/src/test/java/org/baeldung/boot/boottest/EmployeeServiceImplTest.java b/spring-boot/src/test/java/org/baeldung/boot/boottest/EmployeeServiceImplTest.java new file mode 100644 index 0000000000..345cc29e02 --- /dev/null +++ b/spring-boot/src/test/java/org/baeldung/boot/boottest/EmployeeServiceImplTest.java @@ -0,0 +1,145 @@ +package org.baeldung.boot.boottest; + +import static org.assertj.core.api.Assertions.assertThat; + +import java.util.Arrays; +import java.util.List; +import java.util.NoSuchElementException; +import java.util.Optional; + +import org.baeldung.boot.boottest.Employee; +import org.baeldung.boot.boottest.EmployeeRepository; +import org.baeldung.boot.boottest.EmployeeService; +import org.baeldung.boot.boottest.EmployeeServiceImpl; +import org.junit.Before; +import org.junit.Test; +import org.junit.runner.RunWith; +import org.mockito.Mockito; +import org.mockito.internal.verification.VerificationModeFactory; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.boot.test.context.TestConfiguration; +import org.springframework.boot.test.mock.mockito.MockBean; +import org.springframework.context.annotation.Bean; +import org.springframework.test.context.junit4.SpringRunner; + +@RunWith(SpringRunner.class) +public class EmployeeServiceImplTest { + + @TestConfiguration + static class EmployeeServiceImplTestContextConfiguration { + @Bean + public EmployeeService employeeService() { + return new EmployeeServiceImpl(); + } + } + + @Autowired + EmployeeService employeeService; + + @MockBean + EmployeeRepository employeeRepository; + + @Before + public void setUp() { + Employee john = new Employee("john"); + john.setId(11L); + + Optional emp = Optional.of(john); + + Employee bob = new Employee("bob"); + Employee alex = new Employee("alex"); + + List allEmployees = Arrays.asList(john, bob, alex); + + Mockito.when(employeeRepository.findByName(john.getName())) + .thenReturn(emp); + Mockito.when(employeeRepository.findByName("wrong_name")) + .thenReturn(Optional.empty()); + Mockito.when(employeeRepository.findById(john.getId())) + .thenReturn(emp); + Mockito.when(employeeRepository.findAll()) + .thenReturn(allEmployees); + Mockito.when(employeeRepository.findById(-99L)) + .thenReturn(Optional.empty()); + } + + @Test + public void whenValidName_thenEmployeeShouldBeFound() { + Optional fromDb = employeeService.getEmployeeByName("john"); + assertThat(fromDb.get() + .getName()).isEqualTo("john"); + + verifyFindByNameIsCalledOnce("john"); + } + + @Test(expected = NoSuchElementException.class) + public void whenInValidName_thenEmployeeShouldNotBeFound() { + Optional fromDb = employeeService.getEmployeeByName("wrong_name"); + fromDb.get(); + + verifyFindByNameIsCalledOnce("wrong_name"); + } + + @Test + public void whenValidName_thenEmployeeShouldExist() { + boolean doesEmployeeExist = employeeService.exists("john"); + assertThat(doesEmployeeExist).isEqualTo(true); + + verifyFindByNameIsCalledOnce("john"); + } + + @Test + public void whenNonExistingName_thenEmployeeShouldNotExist() { + boolean doesEmployeeExist = employeeService.exists("some_name"); + assertThat(doesEmployeeExist).isEqualTo(false); + + verifyFindByNameIsCalledOnce("some_name"); + } + + @Test + public void whenValidI_thendEmployeeShouldBeFound() { + Optional fromDb = employeeService.getEmployeeById(11L); + assertThat(fromDb.get() + .getName()).isEqualTo("john"); + + verifyFindByIdIsCalledOnce(); + } + + @Test(expected = NoSuchElementException.class) + public void whenInValidId_thenEmployeeShouldNotBeFound() { + Optional fromDb = employeeService.getEmployeeById(-99L); + verifyFindByIdIsCalledOnce(); + fromDb.get(); + } + + @Test + public void given3Employees_whengetAll_thenReturn3Records() { + Employee alex = new Employee("alex"); + Employee john = new Employee("john"); + Employee bob = new Employee("bob"); + + List allEmployees = employeeService.getAllEmployees(); + verifyFindAllEmployeesIsCalledOnce(); + assertThat(allEmployees).hasSize(3) + .extracting(Employee::getName) + .contains(alex.getName(), john.getName(), bob.getName()); + } + + private void verifyFindByNameIsCalledOnce(String name) { + Mockito.verify(employeeRepository, VerificationModeFactory.times(1)) + .findByName(name); + Mockito.reset(employeeRepository); + } + + private void verifyFindByIdIsCalledOnce() { + Mockito.verify(employeeRepository, VerificationModeFactory.times(1)) + .findById(Mockito.anyLong()); + Mockito.reset(employeeRepository); + } + + private void verifyFindAllEmployeesIsCalledOnce() { + Mockito.verify(employeeRepository, VerificationModeFactory.times(1)) + .findAll(); + Mockito.reset(employeeRepository); + } +} diff --git a/spring-boot/src/test/java/org/baeldung/boot/boottest/JsonUtil.java b/spring-boot/src/test/java/org/baeldung/boot/boottest/JsonUtil.java new file mode 100644 index 0000000000..3d532ce54a --- /dev/null +++ b/spring-boot/src/test/java/org/baeldung/boot/boottest/JsonUtil.java @@ -0,0 +1,14 @@ +package org.baeldung.boot.boottest; + +import java.io.IOException; + +import com.fasterxml.jackson.annotation.JsonInclude; +import com.fasterxml.jackson.databind.ObjectMapper; + +public class JsonUtil { + public static byte[] toJson(Object object) throws IOException { + ObjectMapper mapper = new ObjectMapper(); + mapper.setSerializationInclusion(JsonInclude.Include.NON_NULL); + return mapper.writeValueAsBytes(object); + } +} diff --git a/spring-boot/src/test/resources/application-integrationtest.properties b/spring-boot/src/test/resources/application-integrationtest.properties new file mode 100644 index 0000000000..508acf45e0 --- /dev/null +++ b/spring-boot/src/test/resources/application-integrationtest.properties @@ -0,0 +1,2 @@ +spring.datasource.url = jdbc:h2:mem:test +spring.jpa.properties.hibernate.dialect = org.hibernate.dialect.H2Dialect \ No newline at end of file From 99a0b6e2f1f51236276785fdb59e4050c8f545d9 Mon Sep 17 00:00:00 2001 From: pedja4 Date: Sat, 15 Apr 2017 18:32:41 +0200 Subject: [PATCH 56/56] Update UnsafeTest.java (#1655) --- .../src/test/java/com/baeldung/unsafe/UnsafeTest.java | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/core-java/src/test/java/com/baeldung/unsafe/UnsafeTest.java b/core-java/src/test/java/com/baeldung/unsafe/UnsafeTest.java index 6aa4973ee7..9f53e38969 100644 --- a/core-java/src/test/java/com/baeldung/unsafe/UnsafeTest.java +++ b/core-java/src/test/java/com/baeldung/unsafe/UnsafeTest.java @@ -68,9 +68,14 @@ public class UnsafeTest { sum += array.get((long) Integer.MAX_VALUE + i); } + long arraySize = array.size(); + + array.freeMemory(); + //then - assertEquals(array.size(), SUPER_SIZE); + assertEquals(arraySize, SUPER_SIZE); assertEquals(sum, 300); + } @Test