From 9beb2693866c493b021e5cceed70947ad2f938b8 Mon Sep 17 00:00:00 2001 From: Mitch Taylor Date: Mon, 9 Apr 2018 10:43:15 -0400 Subject: [PATCH 01/33] Groundwork --- .../bank/controller/AccountController.java | 31 +++++++++ .../java/io/zipcoder/bank/model/Account.java | 65 +++++++++++++++++++ .../bank/repository/AccountRepository.java | 9 +++ .../zipcoder/bank/service/AccountService.java | 18 +++++ .../io/zipcoder/core/model/BaseEntity.java | 6 ++ .../core/repository/BaseRepository.java | 10 +++ src/main/resources/application-h2.properties | 4 ++ src/main/resources/application.properties | 3 + src/main/resources/schema-h2.sql | 11 ++++ 9 files changed, 157 insertions(+) create mode 100644 src/main/java/io/zipcoder/bank/controller/AccountController.java create mode 100644 src/main/java/io/zipcoder/bank/model/Account.java create mode 100644 src/main/java/io/zipcoder/bank/repository/AccountRepository.java create mode 100644 src/main/java/io/zipcoder/bank/service/AccountService.java create mode 100644 src/main/java/io/zipcoder/core/model/BaseEntity.java create mode 100644 src/main/java/io/zipcoder/core/repository/BaseRepository.java create mode 100644 src/main/resources/application-h2.properties create mode 100644 src/main/resources/schema-h2.sql diff --git a/src/main/java/io/zipcoder/bank/controller/AccountController.java b/src/main/java/io/zipcoder/bank/controller/AccountController.java new file mode 100644 index 0000000..7f0d11a --- /dev/null +++ b/src/main/java/io/zipcoder/bank/controller/AccountController.java @@ -0,0 +1,31 @@ +package io.zipcoder.bank.controller; + +import io.zipcoder.bank.model.Account; +import io.zipcoder.bank.service.AccountService; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.http.HttpStatus; +import org.springframework.http.MediaType; +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("/accounts") +public class AccountController { + + private AccountService accountService; + + @Autowired + public AccountController(AccountService accountService) { + this.accountService = accountService; + } + + @RequestMapping(method = RequestMethod.POST, consumes = MediaType.APPLICATION_JSON_VALUE) + public ResponseEntity createPerson(@RequestBody Account account) { + Account savedAccount = accountService.createAccount(account); + return new ResponseEntity<>(savedAccount, HttpStatus.CREATED); + } + +} diff --git a/src/main/java/io/zipcoder/bank/model/Account.java b/src/main/java/io/zipcoder/bank/model/Account.java new file mode 100644 index 0000000..44f421e --- /dev/null +++ b/src/main/java/io/zipcoder/bank/model/Account.java @@ -0,0 +1,65 @@ +package io.zipcoder.bank.model; + +import io.zipcoder.core.model.BaseEntity; +import org.hibernate.validator.constraints.NotEmpty; + +import javax.persistence.*; + +@Entity +public class Account extends BaseEntity { + + private static final Long serialVersionUID = 12345L; + + @Id + @GeneratedValue(strategy = GenerationType.AUTO) + @Column(name = "ID") + private Long id; + + // Put the account type here when we decide to store it as a string or enum + + @NotEmpty + @Column(name = "NICKNAME") + private String nickname; + + @Column(name = "REWARDS") + private Integer rewards; + + @Column(name = "BALANCE") + private Double balance; + + // Noted out for now until we make the customer class +// @Column(name = "CUSTOMER") +// private Customer customer; + + public Long getId() { + return id; + } + + public void setId(Long id) { + this.id = id; + } + + public String getNickname() { + return nickname; + } + + public void setNickname(String nickname) { + this.nickname = nickname; + } + + public Integer getRewards() { + return rewards; + } + + public void setRewards(Integer rewards) { + this.rewards = rewards; + } + + public Double getBalance() { + return balance; + } + + public void setBalance(Double balance) { + this.balance = balance; + } +} diff --git a/src/main/java/io/zipcoder/bank/repository/AccountRepository.java b/src/main/java/io/zipcoder/bank/repository/AccountRepository.java new file mode 100644 index 0000000..36a3bdb --- /dev/null +++ b/src/main/java/io/zipcoder/bank/repository/AccountRepository.java @@ -0,0 +1,9 @@ +package io.zipcoder.bank.repository; + +import io.zipcoder.bank.model.Account; +import io.zipcoder.core.repository.BaseRepository; +import org.springframework.stereotype.Repository; + +@Repository +public interface AccountRepository extends BaseRepository { +} diff --git a/src/main/java/io/zipcoder/bank/service/AccountService.java b/src/main/java/io/zipcoder/bank/service/AccountService.java new file mode 100644 index 0000000..4582927 --- /dev/null +++ b/src/main/java/io/zipcoder/bank/service/AccountService.java @@ -0,0 +1,18 @@ +package io.zipcoder.bank.service; + +import io.zipcoder.bank.model.Account; +import io.zipcoder.bank.repository.AccountRepository; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Service; + +@Service +public class AccountService { + + private AccountRepository accountRepository; + + @Autowired + public AccountService(AccountRepository accountRepository) {this.accountRepository = accountRepository;} + + public Account createAccount(Account account) {return accountRepository.save(account);} + +} diff --git a/src/main/java/io/zipcoder/core/model/BaseEntity.java b/src/main/java/io/zipcoder/core/model/BaseEntity.java new file mode 100644 index 0000000..65b9ee2 --- /dev/null +++ b/src/main/java/io/zipcoder/core/model/BaseEntity.java @@ -0,0 +1,6 @@ +package io.zipcoder.core.model; + +import java.io.Serializable; + +public abstract class BaseEntity implements Serializable { +} diff --git a/src/main/java/io/zipcoder/core/repository/BaseRepository.java b/src/main/java/io/zipcoder/core/repository/BaseRepository.java new file mode 100644 index 0000000..e92007f --- /dev/null +++ b/src/main/java/io/zipcoder/core/repository/BaseRepository.java @@ -0,0 +1,10 @@ +package io.zipcoder.core.repository; + +import org.springframework.data.jpa.repository.JpaRepository; +import org.springframework.data.repository.NoRepositoryBean; + +import java.io.Serializable; + +@NoRepositoryBean +public interface BaseRepository extends JpaRepository { +} diff --git a/src/main/resources/application-h2.properties b/src/main/resources/application-h2.properties new file mode 100644 index 0000000..74765cc --- /dev/null +++ b/src/main/resources/application-h2.properties @@ -0,0 +1,4 @@ +spring.datasource.url=jdbc:h2:mem:testdb;Mode=Oracle +spring.datasource.platform=h2 +spring.jpa.hibernate.ddl-auto=none +spring.datasource.continue-on-error=true \ No newline at end of file diff --git a/src/main/resources/application.properties b/src/main/resources/application.properties index e69de29..7d4dc6f 100644 --- a/src/main/resources/application.properties +++ b/src/main/resources/application.properties @@ -0,0 +1,3 @@ +spring.profiles.active=h2 +logging.level.org.springframework.boot.context.embedded=INFO +spring.jpa.database-platform=org.hibernate.dialect.Oracle10gDialect \ No newline at end of file diff --git a/src/main/resources/schema-h2.sql b/src/main/resources/schema-h2.sql new file mode 100644 index 0000000..72427fb --- /dev/null +++ b/src/main/resources/schema-h2.sql @@ -0,0 +1,11 @@ +DROP TABLE IF EXISTS ACCOUNT; + +CREATE TABLE ACCOUNT ( + ID INT NOT NULL AUTO_INCREMENT, + TYPE VARCHAR2(255) NOT NULL DEFAULT '', + NICKNAME VARCHAR2(255) NOT NULL DEFAULT '', + REWARDS INT DEFAULT NULL, + BALANCE DOUBLE DEFAULT NULL, + CUSTOMER VARCHAR2(255) NOT NULL DEFAULT '', + PRIMARY KEY (ID) +); \ No newline at end of file From 0fa99cf7318a1d67eb077df443bfc41020259100 Mon Sep 17 00:00:00 2001 From: ahsonali Date: Mon, 9 Apr 2018 11:34:56 -0400 Subject: [PATCH 02/33] added a few tables, sitll not done --- src/main/resources/schema-h2.sql | 32 +++++++++++++++++++++++++++++++- 1 file changed, 31 insertions(+), 1 deletion(-) diff --git a/src/main/resources/schema-h2.sql b/src/main/resources/schema-h2.sql index 72427fb..26ae199 100644 --- a/src/main/resources/schema-h2.sql +++ b/src/main/resources/schema-h2.sql @@ -8,4 +8,34 @@ CREATE TABLE ACCOUNT ( BALANCE DOUBLE DEFAULT NULL, CUSTOMER VARCHAR2(255) NOT NULL DEFAULT '', PRIMARY KEY (ID) -); \ No newline at end of file +); + +DROP TABLE IF EXISTS CUSTOMER; + +CREATE TABLE CUSTOMER ( +ID INT NOT NULL AUTO_INCREMENT, +FIRST_NAME VARCHAR(255), +LAST_NAME VARCHAR(255); + +) + +DROP TABLE IF EXISTS ADDRESS; + +CREATE TABLE ADDRESS ( + ID INT NOT NULL AUTO_INCREMENT, + STREET_NUMBER VARCHAR(255), + STREET_NAME VARCHAR(255), + CITY VARCHAR(255), + STATE VARCHAR (2), + ZIP NVARCHAR(5); + +) + +DROP TABLE IF EXISTS BILL; + +CREATE TABLE BILL ( +ID INT NOT NULL AUTO_INCREMENT, +STATUS VARCHAR(255), +TRANSACTION_DATE VARCHAR(255), +) + From 184144dc5ae2bf86e20feeea179fac20be3f4a46 Mon Sep 17 00:00:00 2001 From: Mitch Taylor Date: Tue, 10 Apr 2018 08:08:05 -0400 Subject: [PATCH 03/33] AccountController getAll, more AccountService methods added --- .../bank/controller/AccountController.java | 10 +++++++++- .../zipcoder/bank/service/AccountService.java | 19 +++++++++++++++++++ 2 files changed, 28 insertions(+), 1 deletion(-) diff --git a/src/main/java/io/zipcoder/bank/controller/AccountController.java b/src/main/java/io/zipcoder/bank/controller/AccountController.java index 7f0d11a..94d1577 100644 --- a/src/main/java/io/zipcoder/bank/controller/AccountController.java +++ b/src/main/java/io/zipcoder/bank/controller/AccountController.java @@ -11,6 +11,8 @@ import org.springframework.web.bind.annotation.RequestMethod; import org.springframework.web.bind.annotation.RestController; +import java.util.Collection; + @RestController @RequestMapping("/accounts") public class AccountController { @@ -22,8 +24,14 @@ public AccountController(AccountService accountService) { this.accountService = accountService; } + @RequestMapping(method = RequestMethod.GET) + public ResponseEntity> getPerson() { + Collection accounts = accountService.findAllStudents(); + return new ResponseEntity<>(accounts, HttpStatus.OK); + } + @RequestMapping(method = RequestMethod.POST, consumes = MediaType.APPLICATION_JSON_VALUE) - public ResponseEntity createPerson(@RequestBody Account account) { + public ResponseEntity createAccount(@RequestBody Account account) { Account savedAccount = accountService.createAccount(account); return new ResponseEntity<>(savedAccount, HttpStatus.CREATED); } diff --git a/src/main/java/io/zipcoder/bank/service/AccountService.java b/src/main/java/io/zipcoder/bank/service/AccountService.java index 4582927..287acce 100644 --- a/src/main/java/io/zipcoder/bank/service/AccountService.java +++ b/src/main/java/io/zipcoder/bank/service/AccountService.java @@ -5,6 +5,8 @@ import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; +import java.util.Collection; + @Service public class AccountService { @@ -15,4 +17,21 @@ public class AccountService { public Account createAccount(Account account) {return accountRepository.save(account);} + public Collection findAllStudents() { + return accountRepository.findAll(); + } + + public Account findStudentById(int id) { + return accountRepository.findOne(id); + } + + public Account updateStudentById(Long id, Account account) { + account.setId(id); + return accountRepository.save(account); + } + + public void deleteStudentById(int id) { + accountRepository.delete(id); + } + } From 0d1000eb4deee8b11e308f7b63f1ea8066d2d2d1 Mon Sep 17 00:00:00 2001 From: Mitch Taylor Date: Tue, 10 Apr 2018 08:31:55 -0400 Subject: [PATCH 04/33] More controller methods added --- .../bank/controller/AccountController.java | 23 +++++++++++++++---- .../zipcoder/bank/service/AccountService.java | 6 ++--- 2 files changed, 22 insertions(+), 7 deletions(-) diff --git a/src/main/java/io/zipcoder/bank/controller/AccountController.java b/src/main/java/io/zipcoder/bank/controller/AccountController.java index 94d1577..8286e42 100644 --- a/src/main/java/io/zipcoder/bank/controller/AccountController.java +++ b/src/main/java/io/zipcoder/bank/controller/AccountController.java @@ -6,10 +6,7 @@ import org.springframework.http.HttpStatus; import org.springframework.http.MediaType; 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; +import org.springframework.web.bind.annotation.*; import java.util.Collection; @@ -30,10 +27,28 @@ public ResponseEntity> getPerson() { return new ResponseEntity<>(accounts, HttpStatus.OK); } + @RequestMapping(value = "/{id}", method = RequestMethod.GET) + public ResponseEntity findAccountById(@PathVariable("id") int id) { + Account account = accountService.findAccountById(id); + return new ResponseEntity<>(account, HttpStatus.OK); + } + @RequestMapping(method = RequestMethod.POST, consumes = MediaType.APPLICATION_JSON_VALUE) public ResponseEntity createAccount(@RequestBody Account account) { Account savedAccount = accountService.createAccount(account); return new ResponseEntity<>(savedAccount, HttpStatus.CREATED); } + @RequestMapping(value = "/{id}", method = RequestMethod.PUT) + public ResponseEntity updateStudentById(@RequestBody Account account, @PathVariable("id") Long id) { + Account returnAccount = accountService.updateAccountById(id, account); + return new ResponseEntity<>(returnAccount, HttpStatus.OK); + } + + @RequestMapping(value = "/{id}", method = RequestMethod.DELETE) + public ResponseEntity deleteAccountById(@PathVariable("id") int id) { + accountService.deleteAccountById(id); + return new ResponseEntity<>(HttpStatus.OK); + } + } diff --git a/src/main/java/io/zipcoder/bank/service/AccountService.java b/src/main/java/io/zipcoder/bank/service/AccountService.java index 287acce..ae97e34 100644 --- a/src/main/java/io/zipcoder/bank/service/AccountService.java +++ b/src/main/java/io/zipcoder/bank/service/AccountService.java @@ -21,16 +21,16 @@ public Collection findAllStudents() { return accountRepository.findAll(); } - public Account findStudentById(int id) { + public Account findAccountById(int id) { return accountRepository.findOne(id); } - public Account updateStudentById(Long id, Account account) { + public Account updateAccountById(Long id, Account account) { account.setId(id); return accountRepository.save(account); } - public void deleteStudentById(int id) { + public void deleteAccountById(int id) { accountRepository.delete(id); } From dca0bab3a9970bac234420969d138acabddbb574 Mon Sep 17 00:00:00 2001 From: Mitch Taylor Date: Tue, 10 Apr 2018 10:36:05 -0400 Subject: [PATCH 05/33] Testing utilities made --- .../controller/AccountControllerTest.java | 12 ++ .../zipcoder/service/AccountServiceTest.java | 4 + src/test/java/util/BaseControllerTest.java | 115 ++++++++++++++++++ src/test/java/util/BaseServiceTest.java | 34 ++++++ src/test/java/util/JsonTestUtil.java | 15 +++ 5 files changed, 180 insertions(+) create mode 100644 src/test/java/io/zipcoder/controller/AccountControllerTest.java create mode 100644 src/test/java/io/zipcoder/service/AccountServiceTest.java create mode 100644 src/test/java/util/BaseControllerTest.java create mode 100644 src/test/java/util/BaseServiceTest.java create mode 100644 src/test/java/util/JsonTestUtil.java diff --git a/src/test/java/io/zipcoder/controller/AccountControllerTest.java b/src/test/java/io/zipcoder/controller/AccountControllerTest.java new file mode 100644 index 0000000..b414c45 --- /dev/null +++ b/src/test/java/io/zipcoder/controller/AccountControllerTest.java @@ -0,0 +1,12 @@ +package io.zipcoder.controller; + +import io.zipcoder.bank.model.Account; +import org.junit.runner.RunWith; +import org.springframework.test.context.junit4.SpringRunner; +import util.BaseControllerTest; + +import static org.mockito.Mockito.when; + +@RunWith(SpringRunner.class) +public class AccountControllerTest extends BaseControllerTest { +} diff --git a/src/test/java/io/zipcoder/service/AccountServiceTest.java b/src/test/java/io/zipcoder/service/AccountServiceTest.java new file mode 100644 index 0000000..7fe40d9 --- /dev/null +++ b/src/test/java/io/zipcoder/service/AccountServiceTest.java @@ -0,0 +1,4 @@ +package io.zipcoder.service; + +public class AccountServiceTest { +} diff --git a/src/test/java/util/BaseControllerTest.java b/src/test/java/util/BaseControllerTest.java new file mode 100644 index 0000000..953e5f4 --- /dev/null +++ b/src/test/java/util/BaseControllerTest.java @@ -0,0 +1,115 @@ +package util; + +import org.springframework.http.MediaType; +import org.springframework.test.web.servlet.MockMvc; +import org.springframework.test.web.servlet.ResultActions; + +import java.io.UnsupportedEncodingException; +import java.util.Collection; +import java.util.Collections; + +import static org.springframework.test.web.servlet.request.MockMvcRequestBuilders.*; +import static org.springframework.test.web.servlet.request.MockMvcRequestBuilders.delete; +import static org.springframework.test.web.servlet.result.MockMvcResultMatchers.status; + +public abstract class BaseControllerTest { + + public MockMvc mvc; + public String baseEndpointUrl; + public String idEndpointUrl; + public String entityNotReturnedMessage = "The expected entity is not being returned"; + public String entityNotDeletedMessage = "The entity is not being deleted"; + public String predictedEntity; + public String returnedEntity; + public int parentEntityId; + public int childEntityId; + public E entity; + public Collection entityCollection = Collections.singleton(entity); + public String entityAsJsonString; + public String entityCollectionAsJsonString; + + public void initDependentVariables() { + parentEntityId = 1; + childEntityId = 3; + idEndpointUrl = baseEndpointUrl + "/{id}"; + entityAsJsonString = JsonTestUtil.writeEntityAsJsonString(entity); + entityCollection = Collections.singleton(entity); + entityCollectionAsJsonString = JsonTestUtil.writeEntityAsJsonString(entityCollection); + } + + public ResultActions mvcPerformPostWithNoPathVariables + (String endpointUrl, String entityAsJsonString) throws Exception { + return mvc.perform(post(endpointUrl) + .contentType(MediaType.APPLICATION_JSON) + .content(entityAsJsonString)) + .andExpect(status().isCreated()); + } + + public ResultActions mvcPerformPostWithOnePathVariable + (String endpointUrl, Integer parentId, String entityAsJsonString) throws Exception { + return mvc.perform(post(endpointUrl, parentId) + .contentType(MediaType.APPLICATION_JSON) + .content(entityAsJsonString)) + .andExpect(status().isCreated()); + } + + public String mvcPerformGetWithNoPathVariables(String endpointUrl) throws Exception { + return convertMvcResultToString(mvc.perform(get(endpointUrl) + .contentType(MediaType.APPLICATION_JSON)) + .andExpect(status().isOk())); + } + + public String mvcPerformGetWithOnePathVariable(String endpointUrl, Integer parentId) throws Exception { + return convertMvcResultToString(mvc.perform(get(endpointUrl, parentId) + .contentType(MediaType.APPLICATION_JSON)) + .andExpect(status().isOk())); + } + + public String mvcPerformGetWithOnePathVariable(String endpointUrl, String parentId) throws Exception { + return convertMvcResultToString(mvc.perform(get(endpointUrl, parentId) + .contentType(MediaType.APPLICATION_JSON)) + .andExpect(status().isOk())); + } + + public String mvcPerformGetWithTwoPathVariables(String endpointUrl, Integer parentId, Integer childId) + throws Exception { + return convertMvcResultToString(mvc.perform(get(endpointUrl, parentId, childId) + .contentType(MediaType.APPLICATION_JSON)) + .andExpect(status().isOk())); + } + + public ResultActions mvcPerformUpdateWithOnePathVariable + (String endpointUrl, Integer parentId, String entityAsJsonString) throws Exception { + return mvc.perform(put(endpointUrl, parentId) + .contentType(MediaType.APPLICATION_JSON) + .content(entityAsJsonString)) + .andExpect(status().isOk()); + } + + public ResultActions mvcPerformUpdateWithTwoPathVariables + (String endpointUrl, Integer parentId, Integer childId, String entityAsJsonString) throws Exception { + return mvc.perform(put(endpointUrl, parentId, childId) + .contentType(MediaType.APPLICATION_JSON) + .content(entityAsJsonString)) + .andExpect(status().isOk()); + } + + public String mvcPerformDeleteWithOnePathVariable(String endpointUrl, Integer parentId) + throws Exception { + return convertMvcResultToString(mvc.perform(delete(endpointUrl, parentId) + .contentType(MediaType.APPLICATION_JSON)) + .andExpect(status().isOk())); + } + + public String mvcPerformDeleteWithTwoPathVariables(String endpointUrl, Integer parentId, Integer childId) + throws Exception { + return convertMvcResultToString(mvc.perform(delete(endpointUrl, parentId, childId) + .contentType(MediaType.APPLICATION_JSON)) + .andExpect(status().isOk())); + } + + private String convertMvcResultToString(ResultActions resultActions) throws UnsupportedEncodingException { + return resultActions.andReturn().getResponse().getContentAsString(); + } + +} diff --git a/src/test/java/util/BaseServiceTest.java b/src/test/java/util/BaseServiceTest.java new file mode 100644 index 0000000..da031f0 --- /dev/null +++ b/src/test/java/util/BaseServiceTest.java @@ -0,0 +1,34 @@ +package util; + +import org.springframework.data.domain.Sort; + +import java.util.Collection; +import java.util.Collections; + +public abstract class BaseServiceTest { + + public String entityNotReturnedMessage = "The expected entity is not being returned"; + public String entityNotDeletedMessage = "The entity is not being deleted"; + public E entity; + public Integer entityId; + public Integer parentEntityId; + public Collection entityCollection; + public E returnedEntity; + public Collection returnedEntityCollection; + public Sort sort; + + public void initDependentVariables() { + entityCollection = Collections.singleton(entity); + entityId = 10; + parentEntityId = 20; + } + + public void initSortAsc(String sortCode) { + sort = new Sort(Sort.Direction.ASC, sortCode); + } + + public void initSortDesc(String sortCode) { + sort = new Sort(Sort.Direction.DESC, sortCode); + } + +} diff --git a/src/test/java/util/JsonTestUtil.java b/src/test/java/util/JsonTestUtil.java new file mode 100644 index 0000000..5320eb2 --- /dev/null +++ b/src/test/java/util/JsonTestUtil.java @@ -0,0 +1,15 @@ +package util; + +import com.fasterxml.jackson.core.JsonProcessingException; +import com.fasterxml.jackson.databind.ObjectMapper; + +public class JsonTestUtil { + public static String writeEntityAsJsonString(E entity) { + try { + return new ObjectMapper().writeValueAsString(entity); + } catch (JsonProcessingException e) { + System.out.println(e.getMessage()); + return "JsonProcessingException"; + } + } +} From 40f70417c95367062c15ffeb080a403b0d2ecce6 Mon Sep 17 00:00:00 2001 From: Mitch Taylor Date: Tue, 10 Apr 2018 20:59:28 -0400 Subject: [PATCH 06/33] Service Tests --- .../bank/controller/AccountController.java | 8 +-- .../java/io/zipcoder/bank/model/Account.java | 8 +-- .../zipcoder/bank/service/AccountService.java | 8 +-- .../zipcoder/service/AccountServiceTest.java | 64 ++++++++++++++++++- 4 files changed, 75 insertions(+), 13 deletions(-) diff --git a/src/main/java/io/zipcoder/bank/controller/AccountController.java b/src/main/java/io/zipcoder/bank/controller/AccountController.java index 8286e42..d61bb04 100644 --- a/src/main/java/io/zipcoder/bank/controller/AccountController.java +++ b/src/main/java/io/zipcoder/bank/controller/AccountController.java @@ -23,12 +23,12 @@ public AccountController(AccountService accountService) { @RequestMapping(method = RequestMethod.GET) public ResponseEntity> getPerson() { - Collection accounts = accountService.findAllStudents(); + Collection accounts = accountService.findAllAccounts(); return new ResponseEntity<>(accounts, HttpStatus.OK); } @RequestMapping(value = "/{id}", method = RequestMethod.GET) - public ResponseEntity findAccountById(@PathVariable("id") int id) { + public ResponseEntity findAccountById(@PathVariable("id") Integer id) { Account account = accountService.findAccountById(id); return new ResponseEntity<>(account, HttpStatus.OK); } @@ -40,13 +40,13 @@ public ResponseEntity createAccount(@RequestBody Account account) { } @RequestMapping(value = "/{id}", method = RequestMethod.PUT) - public ResponseEntity updateStudentById(@RequestBody Account account, @PathVariable("id") Long id) { + public ResponseEntity updateStudentById(@RequestBody Account account, @PathVariable("id") Integer id) { Account returnAccount = accountService.updateAccountById(id, account); return new ResponseEntity<>(returnAccount, HttpStatus.OK); } @RequestMapping(value = "/{id}", method = RequestMethod.DELETE) - public ResponseEntity deleteAccountById(@PathVariable("id") int id) { + public ResponseEntity deleteAccountById(@PathVariable("id") Integer id) { accountService.deleteAccountById(id); return new ResponseEntity<>(HttpStatus.OK); } diff --git a/src/main/java/io/zipcoder/bank/model/Account.java b/src/main/java/io/zipcoder/bank/model/Account.java index 44f421e..14512e5 100644 --- a/src/main/java/io/zipcoder/bank/model/Account.java +++ b/src/main/java/io/zipcoder/bank/model/Account.java @@ -8,12 +8,12 @@ @Entity public class Account extends BaseEntity { - private static final Long serialVersionUID = 12345L; + private static final Integer serialVersionUID = 12345; @Id @GeneratedValue(strategy = GenerationType.AUTO) @Column(name = "ID") - private Long id; + private Integer id; // Put the account type here when we decide to store it as a string or enum @@ -31,11 +31,11 @@ public class Account extends BaseEntity { // @Column(name = "CUSTOMER") // private Customer customer; - public Long getId() { + public Integer getId() { return id; } - public void setId(Long id) { + public void setId(Integer id) { this.id = id; } diff --git a/src/main/java/io/zipcoder/bank/service/AccountService.java b/src/main/java/io/zipcoder/bank/service/AccountService.java index ae97e34..6a09333 100644 --- a/src/main/java/io/zipcoder/bank/service/AccountService.java +++ b/src/main/java/io/zipcoder/bank/service/AccountService.java @@ -17,20 +17,20 @@ public class AccountService { public Account createAccount(Account account) {return accountRepository.save(account);} - public Collection findAllStudents() { + public Collection findAllAccounts() { return accountRepository.findAll(); } - public Account findAccountById(int id) { + public Account findAccountById(Integer id) { return accountRepository.findOne(id); } - public Account updateAccountById(Long id, Account account) { + public Account updateAccountById(Integer id, Account account) { account.setId(id); return accountRepository.save(account); } - public void deleteAccountById(int id) { + public void deleteAccountById(Integer id) { accountRepository.delete(id); } diff --git a/src/test/java/io/zipcoder/service/AccountServiceTest.java b/src/test/java/io/zipcoder/service/AccountServiceTest.java index 7fe40d9..3019c89 100644 --- a/src/test/java/io/zipcoder/service/AccountServiceTest.java +++ b/src/test/java/io/zipcoder/service/AccountServiceTest.java @@ -1,4 +1,66 @@ package io.zipcoder.service; -public class AccountServiceTest { +import io.zipcoder.bank.model.Account; +import io.zipcoder.bank.repository.AccountRepository; +import io.zipcoder.bank.service.AccountService; +import org.junit.Assert; +import org.junit.Before; +import org.junit.Test; +import org.junit.runner.RunWith; +import org.mockito.InjectMocks; +import org.mockito.Mock; +import org.mockito.runners.MockitoJUnitRunner; +import util.BaseServiceTest; + +import java.util.List; + +import static org.mockito.Mockito.when; + +@RunWith(MockitoJUnitRunner.class) +public class AccountServiceTest extends BaseServiceTest { + + @Mock + private static AccountRepository accountRepository; + + @InjectMocks + private static AccountService accountService = new AccountService(accountRepository); + + @Before + public void init() { + entity = new Account(); + initDependentVariables(); + } + + @Test + public void testCreateAccount() { + when(accountRepository.save(entity)) + .thenReturn(entity); + returnedEntity = accountService.createAccount(entity); + Assert.assertEquals(entityNotReturnedMessage, entity, returnedEntity); + } + + @Test + public void testFindAllAccounts() { + when(accountRepository.findAll()) + .thenReturn(entityCollection); + returnedEntityCollection = accountService.findAllAccounts(); + Assert.assertEquals(entityNotReturnedMessage, entityCollection, returnedEntityCollection); + } + + @Test + public void testFindAccountById() { + when(accountRepository.findOne(entityId)) + .thenReturn(entity); + returnedEntity = accountService.findAccountById(entityId); + Assert.assertEquals(entityNotReturnedMessage, entity, returnedEntity); + } + + @Test + public void testUpdateStudentById() { + when(accountRepository.save(entity)) + .thenReturn(entity); + returnedEntity = accountService.updateAccountById(entityId, entity); + Assert.assertEquals(entityNotReturnedMessage, entity, returnedEntity); + } + } From de4d80077c3f6f5fadf209235fa698ca2b77eb8a Mon Sep 17 00:00:00 2001 From: Mitch Taylor Date: Tue, 10 Apr 2018 21:32:38 -0400 Subject: [PATCH 07/33] Controller tests made plus dumb tweaks --- .../bank/controller/AccountController.java | 6 +- .../zipcoder/bank/service/AccountService.java | 2 +- .../core/repository/BaseRepository.java | 4 +- src/main/resources/application.properties | 2 +- .../controller/AccountControllerTest.java | 62 +++++++++++++++++++ .../zipcoder/service/AccountServiceTest.java | 2 - 6 files changed, 69 insertions(+), 9 deletions(-) diff --git a/src/main/java/io/zipcoder/bank/controller/AccountController.java b/src/main/java/io/zipcoder/bank/controller/AccountController.java index d61bb04..522a3fa 100644 --- a/src/main/java/io/zipcoder/bank/controller/AccountController.java +++ b/src/main/java/io/zipcoder/bank/controller/AccountController.java @@ -11,7 +11,7 @@ import java.util.Collection; @RestController -@RequestMapping("/accounts") +@RequestMapping("/api/accounts") public class AccountController { private AccountService accountService; @@ -22,7 +22,7 @@ public AccountController(AccountService accountService) { } @RequestMapping(method = RequestMethod.GET) - public ResponseEntity> getPerson() { + public ResponseEntity> getAccount() { Collection accounts = accountService.findAllAccounts(); return new ResponseEntity<>(accounts, HttpStatus.OK); } @@ -40,7 +40,7 @@ public ResponseEntity createAccount(@RequestBody Account account) { } @RequestMapping(value = "/{id}", method = RequestMethod.PUT) - public ResponseEntity updateStudentById(@RequestBody Account account, @PathVariable("id") Integer id) { + public ResponseEntity updateAccountById(@RequestBody Account account, @PathVariable("id") Integer id) { Account returnAccount = accountService.updateAccountById(id, account); return new ResponseEntity<>(returnAccount, HttpStatus.OK); } diff --git a/src/main/java/io/zipcoder/bank/service/AccountService.java b/src/main/java/io/zipcoder/bank/service/AccountService.java index 6a09333..628fae9 100644 --- a/src/main/java/io/zipcoder/bank/service/AccountService.java +++ b/src/main/java/io/zipcoder/bank/service/AccountService.java @@ -18,7 +18,7 @@ public class AccountService { public Account createAccount(Account account) {return accountRepository.save(account);} public Collection findAllAccounts() { - return accountRepository.findAll(); + return (Collection) accountRepository.findAll(); } public Account findAccountById(Integer id) { diff --git a/src/main/java/io/zipcoder/core/repository/BaseRepository.java b/src/main/java/io/zipcoder/core/repository/BaseRepository.java index e92007f..6709415 100644 --- a/src/main/java/io/zipcoder/core/repository/BaseRepository.java +++ b/src/main/java/io/zipcoder/core/repository/BaseRepository.java @@ -1,10 +1,10 @@ package io.zipcoder.core.repository; -import org.springframework.data.jpa.repository.JpaRepository; +import org.springframework.data.repository.CrudRepository; import org.springframework.data.repository.NoRepositoryBean; import java.io.Serializable; @NoRepositoryBean -public interface BaseRepository extends JpaRepository { +public interface BaseRepository extends CrudRepository { } diff --git a/src/main/resources/application.properties b/src/main/resources/application.properties index 7d4dc6f..dde67ef 100644 --- a/src/main/resources/application.properties +++ b/src/main/resources/application.properties @@ -1,3 +1,3 @@ spring.profiles.active=h2 -logging.level.org.springframework.boot.context.embedded=INFO + spring.jpa.database-platform=org.hibernate.dialect.Oracle10gDialect \ No newline at end of file diff --git a/src/test/java/io/zipcoder/controller/AccountControllerTest.java b/src/test/java/io/zipcoder/controller/AccountControllerTest.java index b414c45..d601969 100644 --- a/src/test/java/io/zipcoder/controller/AccountControllerTest.java +++ b/src/test/java/io/zipcoder/controller/AccountControllerTest.java @@ -1,12 +1,74 @@ package io.zipcoder.controller; +import io.zipcoder.bank.controller.AccountController; import io.zipcoder.bank.model.Account; +import io.zipcoder.bank.service.AccountService; +import org.junit.Assert; +import org.junit.Before; +import org.junit.Test; import org.junit.runner.RunWith; +import org.mockito.InjectMocks; +import org.mockito.MockitoAnnotations; +import org.springframework.boot.test.mock.mockito.MockBean; import org.springframework.test.context.junit4.SpringRunner; +import org.springframework.test.web.servlet.setup.MockMvcBuilders; import util.BaseControllerTest; import static org.mockito.Mockito.when; @RunWith(SpringRunner.class) public class AccountControllerTest extends BaseControllerTest { + + @MockBean + private AccountService accountService; + + @InjectMocks + private AccountController accountController; + + @Before + public void init() { + MockitoAnnotations.initMocks(this); + mvc = MockMvcBuilders.standaloneSetup(accountController).build(); + baseEndpointUrl = "/api/accounts"; + entity = new Account(); + initDependentVariables(); + } + + @Test + public void testCreateAccount() throws Exception { + when(accountService.createAccount(entity)) + .thenReturn(entity); + mvcPerformPostWithNoPathVariables(baseEndpointUrl, entityAsJsonString); + } + + @Test + public void testFindAllAccounts() throws Exception { + when(accountService.findAllAccounts()) + .thenReturn(entityCollection); + returnedEntity = mvcPerformGetWithNoPathVariables(baseEndpointUrl); + Assert.assertEquals(entityNotReturnedMessage, entityCollectionAsJsonString, returnedEntity); + } + + @Test + public void testFindAccountById() throws Exception { + when(accountService.findAccountById(childEntityId)) + .thenReturn(entity); + returnedEntity = mvcPerformGetWithOnePathVariable(idEndpointUrl, childEntityId); + Assert.assertEquals(entityNotReturnedMessage, entityAsJsonString, returnedEntity); + } + + @Test + public void testUpdateAccountById() throws Exception { + when(accountService.updateAccountById(childEntityId, entity)) + .thenReturn(entity); + mvcPerformUpdateWithOnePathVariable(idEndpointUrl, childEntityId, entityAsJsonString); + } + + @Test + public void testDeleteAccountById() throws Exception { + when(accountService.findAccountById(childEntityId)) + .thenReturn(entity); + returnedEntity = mvcPerformDeleteWithOnePathVariable(idEndpointUrl, childEntityId); + } + } diff --git a/src/test/java/io/zipcoder/service/AccountServiceTest.java b/src/test/java/io/zipcoder/service/AccountServiceTest.java index 3019c89..9233165 100644 --- a/src/test/java/io/zipcoder/service/AccountServiceTest.java +++ b/src/test/java/io/zipcoder/service/AccountServiceTest.java @@ -12,8 +12,6 @@ import org.mockito.runners.MockitoJUnitRunner; import util.BaseServiceTest; -import java.util.List; - import static org.mockito.Mockito.when; @RunWith(MockitoJUnitRunner.class) From 9d4be6627da7d04662f915143e2211f374716057 Mon Sep 17 00:00:00 2001 From: Joe Hendricks Date: Tue, 10 Apr 2018 21:41:46 -0400 Subject: [PATCH 08/33] Added Customer and Address models --- pom.xml | 7 +- .../java/io/zipcoder/ZcwbankApplication.java | 12 +++ .../bank/controller/AccountController.java | 1 + .../java/io/zipcoder/bank/model/Address.java | 79 +++++++++++++++++++ .../java/io/zipcoder/bank/model/Customer.java | 57 +++++++++++++ .../zipcoder/bank/service/AccountService.java | 9 ++- 6 files changed, 162 insertions(+), 3 deletions(-) create mode 100644 src/main/java/io/zipcoder/bank/model/Address.java create mode 100644 src/main/java/io/zipcoder/bank/model/Customer.java diff --git a/pom.xml b/pom.xml index 0a99788..d1a6b47 100644 --- a/pom.xml +++ b/pom.xml @@ -49,7 +49,12 @@ javax.inject 1 - + + com.h2database + h2 + 1.4.194 + + diff --git a/src/main/java/io/zipcoder/ZcwbankApplication.java b/src/main/java/io/zipcoder/ZcwbankApplication.java index 60df46b..7fa3936 100644 --- a/src/main/java/io/zipcoder/ZcwbankApplication.java +++ b/src/main/java/io/zipcoder/ZcwbankApplication.java @@ -1,12 +1,24 @@ package io.zipcoder; +import org.h2.server.web.WebServlet; import org.springframework.boot.SpringApplication; import org.springframework.boot.autoconfigure.SpringBootApplication; +import org.springframework.boot.web.servlet.ServletRegistrationBean; +import org.springframework.context.annotation.Bean; + + @SpringBootApplication public class ZcwbankApplication { public static void main(String[] args) { + SpringApplication.run(ZcwbankApplication.class, args); } + @Bean + ServletRegistrationBean h2servletRegistration(){ + ServletRegistrationBean registrationBean = new ServletRegistrationBean( new WebServlet()); + registrationBean.addUrlMappings("/console/*"); + return registrationBean; + } } diff --git a/src/main/java/io/zipcoder/bank/controller/AccountController.java b/src/main/java/io/zipcoder/bank/controller/AccountController.java index 8286e42..45e32ed 100644 --- a/src/main/java/io/zipcoder/bank/controller/AccountController.java +++ b/src/main/java/io/zipcoder/bank/controller/AccountController.java @@ -18,6 +18,7 @@ public class AccountController { @Autowired public AccountController(AccountService accountService) { + this.accountService = accountService; } diff --git a/src/main/java/io/zipcoder/bank/model/Address.java b/src/main/java/io/zipcoder/bank/model/Address.java new file mode 100644 index 0000000..f5309a6 --- /dev/null +++ b/src/main/java/io/zipcoder/bank/model/Address.java @@ -0,0 +1,79 @@ +package io.zipcoder.bank.model; + +import javax.persistence.Column; +import javax.persistence.GeneratedValue; +import javax.persistence.GenerationType; +import javax.persistence.Id; + +public class Address { + + @Id + @GeneratedValue(strategy = GenerationType.AUTO) + @Column(name = "ID") + private Long id; + + @Column(name = "STREET_NUMBER") + private String street_number; + + @Column(name = "STREET_NAME") + private String street_name; + + @Column(name = "CITY") + private String city; + + @Column(name = "STATE") + private String state; + + @Column(name = "ZIP") + private String zip; + + + public Long getId() { + return id; + } + + public void setId(Long id) { + this.id = id; + } + + public String getStreet_number() { + return street_number; + } + + public void setStreet_number(String street_number) { + this.street_number = street_number; + } + + public String getStreet_name() { + return street_name; + } + + public void setStreet_name(String street_name) { + this.street_name = street_name; + } + + public String getCity() { + return city; + } + + public void setCity(String city) { + this.city = city; + } + + public String getState() { + return state; + } + + public void setState(String state) { + this.state = state; + } + + public String getZip() { + return zip; + } + + public void setZip(String zip) { + this.zip = zip; + } + +} diff --git a/src/main/java/io/zipcoder/bank/model/Customer.java b/src/main/java/io/zipcoder/bank/model/Customer.java new file mode 100644 index 0000000..cea9a58 --- /dev/null +++ b/src/main/java/io/zipcoder/bank/model/Customer.java @@ -0,0 +1,57 @@ +package io.zipcoder.bank.model; + +import javax.persistence.Column; +import javax.persistence.GeneratedValue; +import javax.persistence.GenerationType; +import javax.persistence.Id; +import java.util.Set; + +public class Customer { + + @Id + @GeneratedValue(strategy = GenerationType.AUTO) + @Column(name = "ID") + private Long id; + + @Column(name = "FIRST_NAME") + private String first_name; + + @Column(name = "LAST_NAME") + private String last_name; + + private Set
address; + + + public Long getId() { + return id; + } + + public void setId(Long id) { + this.id = id; + } + + public String getFirst_name() { + return first_name; + } + + public void setFirst_name(String first_name) { + this.first_name = first_name; + } + + public String getLast_name() { + return last_name; + } + + public void setLast_name(String last_name) { + this.last_name = last_name; + } + + public Set
getAddress() { + return address; + } + + public void setAddress(Set
address) { + this.address = address; + } + +} diff --git a/src/main/java/io/zipcoder/bank/service/AccountService.java b/src/main/java/io/zipcoder/bank/service/AccountService.java index ae97e34..62c4c89 100644 --- a/src/main/java/io/zipcoder/bank/service/AccountService.java +++ b/src/main/java/io/zipcoder/bank/service/AccountService.java @@ -13,11 +13,16 @@ public class AccountService { private AccountRepository accountRepository; @Autowired - public AccountService(AccountRepository accountRepository) {this.accountRepository = accountRepository;} + public AccountService(AccountRepository accountRepository) { + this.accountRepository = accountRepository; + } - public Account createAccount(Account account) {return accountRepository.save(account);} + public Account createAccount(Account account) { + return accountRepository.save(account); + } public Collection findAllStudents() { + return accountRepository.findAll(); } From 380c2563fc43a263ad0cac4756d993bbb9a8699d Mon Sep 17 00:00:00 2001 From: ahsonali Date: Wed, 11 Apr 2018 12:50:51 -0400 Subject: [PATCH 09/33] created tables, but have to touch base with group --- .../simple-spring-webapp/build.gradle | 31 + .../simple-spring-webapp/pom.xml | 94 + .../simple-spring-webapp/settings.gradle | 1 + .../workshop/web/SimpleController.java | 29 + .../src/main/resources/logback.xml | 14 + .../webapp/WEB-INF/applicationContext.xml | 16 + .../WEB-INF/dispatcherServlet-servlet.xml | 40 + .../src/main/webapp/WEB-INF/view/index.html | 11 + .../main/webapp/WEB-INF/view/showMessage.html | 11 + .../src/main/webapp/WEB-INF/web.xml | 45 + .../.mvn/wrapper/maven-wrapper.properties | 1 + .../directory-web/build.gradle | 37 + .../gradle/wrapper/gradle-wrapper.properties | 5 + .../directory-web/gradlew | 172 + .../directory-web/gradlew.bat | 84 + .../directory-web/pom.xml | 101 + .../directory/DirectoryWebApplication.java | 12 + .../controller/DirectoryController.java | 116 + .../workshop/directory/domain/Person.java | 109 + .../workshop/directory/error/PersonError.java | 40 + .../repository/DirectoryRepository.java | 77 + .../src/main/resources/application.properties | 2 + .../DirectoryWebApplicationTests.java | 16 + .../.mvn/wrapper/maven-wrapper.properties | 1 + .../directory-web-internals/build.gradle | 42 + .../gradle/wrapper/gradle-wrapper.properties | 5 + .../directory-web-internals/gradlew | 172 + .../directory-web-internals/gradlew.bat | 84 + .../directory-web-internals/pom.xml | 114 + .../DirectoryWebInternalsApplication.java | 12 + .../workshop/directory/annotation/Audit.java | 12 + .../directory/annotation/Auditor.java | 5 + .../directory/aop/DirectoryAudit.java | 74 + .../workshop/directory/aop/SimpleAudit.java | 20 + .../directory/config/DirectoryConfig.java | 33 + .../directory/config/DirectoryProperties.java | 29 + .../controller/DirectoryController.java | 116 + .../workshop/directory/domain/Person.java | 115 + .../workshop/directory/error/PersonError.java | 40 + .../repository/DirectoryRepository.java | 79 + ...itional-spring-configuration-metadata.json | 9 + .../src/main/resources/application.properties | 6 + ...DirectoryWebInternalsApplicationTests.java | 16 + .../.mvn/wrapper/maven-wrapper.properties | 1 + .../directory-web-features/build.gradle | 42 + .../gradle/wrapper/gradle-wrapper.properties | 5 + .../directory-web-features/gradlew | 172 + .../directory-web-features/gradlew.bat | 84 + .../directory-web-features/pom.xml | 114 + .../DirectoryWebFeaturesApplication.java | 78 + .../workshop/directory/annotation/Audit.java | 12 + .../directory/annotation/Auditor.java | 5 + .../directory/aop/DirectoryAudit.java | 74 + .../workshop/directory/aop/SimpleAudit.java | 20 + .../directory/config/DirectoryConfig.java | 33 + .../directory/config/DirectoryProperties.java | 29 + .../controller/DirectoryController.java | 116 + .../workshop/directory/domain/Person.java | 115 + .../workshop/directory/error/PersonError.java | 40 + .../repository/DirectoryRepository.java | 79 + .../src/main/resources/META-INF/MANIFEST.MF | 3 + ...itional-spring-configuration-metadata.json | 9 + .../src/main/resources/application.properties | 14 + .../src/main/resources/banner.txt | 10 + .../src/main/resources/static/index.html | 1 + .../DirectoryWebFeaturesApplicationTests.java | 16 + .../.mvn/wrapper/maven-wrapper.properties | 1 + .../code-snippet-manager/build.gradle | 37 + .../code-snippet-manager/code/cs-code.txt | 5 + .../code-snippet-manager/code/erl-code.txt | 4 + .../code-snippet-manager/code/html-code.txt | 5 + .../code-snippet-manager/code/js-code.txt | 1 + .../code-snippet-manager/code/pas-code.txt | 5 + .../gradle/wrapper/gradle-wrapper.properties | 5 + .../code-snippet-manager/gradlew | 172 + .../code-snippet-manager/gradlew.bat | 84 + .../code-snippet-manager/pom.xml | 119 + .../CodeSnippetManagerApplication.java | 13 + .../snippet/config/SnippetConfiguration.java | 39 + .../snippet/controller/SnippetController.java | 71 + .../pivotal/workshop/snippet/domain/Code.java | 32 + .../workshop/snippet/domain/Language.java | 46 + .../workshop/snippet/domain/Snippet.java | 98 + .../snippet/repository/CodeRepository.java | 54 + .../repository/LanguageRepository.java | 51 + .../snippet/repository/SimpleRepository.java | 11 + .../snippet/repository/SnippetRepository.java | 62 + .../src/main/resources/application.properties | 1 + .../main/resources/static/css/offcanvas.css | 59 + .../src/main/resources/static/css/theme.css | 238 + .../resources/static/js/syntaxhighlighter.js | 5332 +++++++++++++++ .../main/resources/templates/layouts/main.tpl | 41 + .../main/resources/templates/views/home.tpl | 47 + .../CodeSnippetManagerApplicationTests.java | 16 + .../.mvn/wrapper/maven-wrapper.properties | 1 + .../code-snippet-manager-jdbc/build.gradle | 43 + .../code/cs-code.txt | 5 + .../code/erl-code.txt | 4 + .../code/html-code.txt | 5 + .../code/js-code.txt | 1 + .../code/pas-code.txt | 5 + .../gradle/wrapper/gradle-wrapper.properties | 5 + .../code-snippet-manager-jdbc/gradlew | 172 + .../code-snippet-manager-jdbc/gradlew.bat | 84 + .../code-snippet-manager-jdbc/pom.xml | 131 + .../CodeSnippetManagerJdbcApplication.java | 13 + .../snippet/config/SnippetConfiguration.java | 39 + .../snippet/controller/SnippetController.java | 71 + .../pivotal/workshop/snippet/domain/Code.java | 32 + .../domain/CrossSnippetLanguageCode.java | 43 + .../workshop/snippet/domain/Language.java | 46 + .../workshop/snippet/domain/Snippet.java | 100 + .../snippet/repository/CodeRepository.java | 74 + .../CrossSnippetLanguageCodeRepository.java | 88 + .../repository/LanguageRepository.java | 74 + .../snippet/repository/SimpleRepository.java | 11 + .../snippet/repository/SnippetRepository.java | 113 + .../repository/mapper/CodeRowMapper.java | 20 + .../repository/mapper/LanguageRowMapper.java | 21 + .../repository/mapper/SnippetRowMapper.java | 38 + .../src/main/resources/application.properties | 0 .../src/main/resources/schema.sql | 39 + .../main/resources/static/css/offcanvas.css | 59 + .../src/main/resources/static/css/theme.css | 238 + .../resources/static/js/syntaxhighlighter.js | 5332 +++++++++++++++ .../main/resources/templates/layouts/main.tpl | 41 + .../main/resources/templates/views/home.tpl | 47 + ...odeSnippetManagerJdbcApplicationTests.java | 16 + .../.mvn/wrapper/maven-wrapper.properties | 1 + .../build.gradle | 45 + .../code/cs-code.txt | 5 + .../code/erl-code.txt | 4 + .../code/html-code.txt | 5 + .../code/js-code.txt | 1 + .../code/pas-code.txt | 5 + .../gradle/wrapper/gradle-wrapper.properties | 5 + .../code-snippet-manager-jpa-rest/gradlew | 172 + .../code-snippet-manager-jpa-rest/gradlew.bat | 84 + .../code-snippet-manager-jpa-rest/pom.xml | 133 + .../CodeSnippetManagerJpaRestApplication.java | 12 + .../snippet/config/SnippetConfiguration.java | 39 + .../snippet/controller/SnippetController.java | 36 + .../pivotal/workshop/snippet/domain/Code.java | 42 + .../workshop/snippet/domain/Language.java | 55 + .../workshop/snippet/domain/Snippet.java | 131 + .../snippet/repository/CodeRepository.java | 9 + .../repository/LanguageRepository.java | 9 + .../snippet/repository/SnippetRepository.java | 9 + .../src/main/resources/application.properties | 8 + .../main/resources/static/css/offcanvas.css | 59 + .../src/main/resources/static/css/theme.css | 238 + .../resources/static/js/syntaxhighlighter.js | 5332 +++++++++++++++ .../main/resources/templates/layouts/main.tpl | 41 + .../main/resources/templates/views/home.tpl | 47 + ...SnippetManagerJpaRestApplicationTests.java | 16 + .../.mvn/wrapper/maven-wrapper.properties | 1 + .../code-snippet-manager-jpa/build.gradle | 43 + .../code-snippet-manager-jpa/code/cs-code.txt | 5 + .../code/erl-code.txt | 4 + .../code/html-code.txt | 5 + .../code-snippet-manager-jpa/code/js-code.txt | 1 + .../code/pas-code.txt | 5 + .../gradle/wrapper/gradle-wrapper.properties | 5 + .../code-snippet-manager-jpa/gradlew | 172 + .../code-snippet-manager-jpa/gradlew.bat | 84 + .../code-snippet-manager-jpa/pom.xml | 129 + .../CodeSnippetManagerJpaApplication.java | 13 + .../snippet/config/SnippetConfiguration.java | 39 + .../snippet/controller/SnippetController.java | 71 + .../pivotal/workshop/snippet/domain/Code.java | 42 + .../workshop/snippet/domain/Language.java | 55 + .../workshop/snippet/domain/Snippet.java | 131 + .../snippet/repository/CodeRepository.java | 9 + .../repository/LanguageRepository.java | 9 + .../snippet/repository/SnippetRepository.java | 9 + .../src/main/resources/application.properties | 4 + .../main/resources/static/css/offcanvas.css | 59 + .../src/main/resources/static/css/theme.css | 238 + .../resources/static/js/syntaxhighlighter.js | 5332 +++++++++++++++ .../main/resources/templates/layouts/main.tpl | 41 + .../main/resources/templates/views/home.tpl | 47 + ...CodeSnippetManagerJpaApplicationTests.java | 16 + .../.mvn/wrapper/maven-wrapper.properties | 1 + .../build.gradle | 46 + .../code/cs-code.txt | 5 + .../code/erl-code.txt | 4 + .../code/html-code.txt | 5 + .../code/js-code.txt | 1 + .../code/pas-code.txt | 5 + .../gradle/wrapper/gradle-wrapper.properties | 5 + .../gradlew | 172 + .../gradlew.bat | 84 + .../pom.xml | 143 + ...eSnippetManagerJpaRestTestApplication.java | 13 + .../snippet/config/SnippetConfiguration.java | 39 + .../snippet/controller/SnippetController.java | 36 + .../pivotal/workshop/snippet/domain/Code.java | 42 + .../workshop/snippet/domain/Language.java | 67 + .../workshop/snippet/domain/Snippet.java | 131 + .../snippet/repository/CodeRepository.java | 9 + .../repository/LanguageRepository.java | 9 + .../snippet/repository/SnippetRepository.java | 9 + .../src/main/resources/application.properties | 8 + .../main/resources/static/css/offcanvas.css | 59 + .../src/main/resources/static/css/theme.css | 238 + .../resources/static/js/syntaxhighlighter.js | 5332 +++++++++++++++ .../main/resources/templates/layouts/main.tpl | 41 + .../main/resources/templates/views/home.tpl | 47 + .../CodeSnippetManagerIntegrationTests.java | 16 + .../workshop/snippet/IntegrationTest.java | 77 + .../io/pivotal/workshop/snippet/JpaTests.java | 39 + .../pivotal/workshop/snippet/JsonTests.java | 50 + .../workshop/snippet/language-expected.json | 5 + .../.mvn/wrapper/maven-wrapper.properties | 1 + .../build.gradle | 47 + .../code/cs-code.txt | 5 + .../code/erl-code.txt | 4 + .../code/html-code.txt | 5 + .../code/js-code.txt | 1 + .../code/pas-code.txt | 5 + .../gradle/wrapper/gradle-wrapper.properties | 5 + .../code-snippet-manager-actuator/gradlew | 172 + .../code-snippet-manager-actuator/gradlew.bat | 84 + .../code-snippet-manager-actuator/pom.xml | 150 + ...CodeSnippetManagerActuatorApplication.java | 12 + .../snippet/actuator/SnippetHealthCheck.java | 40 + .../snippet/config/SnippetConfiguration.java | 42 + .../snippet/config/SnippetProperties.java | 18 + .../snippet/controller/SnippetController.java | 36 + .../pivotal/workshop/snippet/domain/Code.java | 42 + .../workshop/snippet/domain/Language.java | 55 + .../workshop/snippet/domain/Snippet.java | 131 + .../snippet/repository/CodeRepository.java | 9 + .../repository/LanguageRepository.java | 9 + .../snippet/repository/SnippetRepository.java | 9 + ...itional-spring-configuration-metadata.json | 5 + .../src/main/resources/application.properties | 32 + .../main/resources/static/css/offcanvas.css | 59 + .../src/main/resources/static/css/theme.css | 238 + .../resources/static/js/syntaxhighlighter.js | 5332 +++++++++++++++ .../main/resources/templates/layouts/main.tpl | 41 + .../main/resources/templates/views/home.tpl | 47 + ...nippetManagerActuatorApplicationTests.java | 16 + .../.mvn/wrapper/maven-wrapper.properties | 1 + .../build.gradle | 52 + .../code/cs-code.txt | 5 + .../code/erl-code.txt | 4 + .../code/html-code.txt | 5 + .../code/js-code.txt | 1 + .../code/pas-code.txt | 5 + .../gradle/wrapper/gradle-wrapper.properties | 5 + .../code-snippet-manager-security/gradlew | 172 + .../code-snippet-manager-security/gradlew.bat | 84 + .../code-snippet-manager-security/pom.xml | 154 + ...CodeSnippetManagerSecurityApplication.java | 12 + .../snippet/actuator/SnippetHealthCheck.java | 40 + .../snippet/config/SnippetConfiguration.java | 54 + .../snippet/config/SnippetProperties.java | 44 + .../snippet/config/SnippetSecurityConfig.java | 105 + .../snippet/controller/SnippetController.java | 36 + .../pivotal/workshop/snippet/domain/Code.java | 42 + .../workshop/snippet/domain/Language.java | 55 + .../workshop/snippet/domain/Person.java | 36 + .../workshop/snippet/domain/Snippet.java | 131 + .../snippet/repository/CodeRepository.java | 9 + .../repository/LanguageRepository.java | 9 + .../snippet/repository/SnippetRepository.java | 9 + ...itional-spring-configuration-metadata.json | 18 + .../src/main/resources/application.properties | 23 + .../main/resources/static/css/offcanvas.css | 59 + .../src/main/resources/static/css/theme.css | 238 + .../resources/static/js/syntaxhighlighter.js | 5332 +++++++++++++++ .../main/resources/templates/layouts/main.tpl | 41 + .../main/resources/templates/views/home.tpl | 47 + ...nippetManagerSecurityApplicationTests.java | 16 + .../.mvn/wrapper/maven-wrapper.properties | 1 + .../directory-web-security/build.gradle | 53 + .../gradle/wrapper/gradle-wrapper.properties | 5 + .../directory-web-security/gradlew | 172 + .../directory-web-security/gradlew.bat | 84 + .../directory-web-security/pom.xml | 152 + .../DirectoryWebSecurityApplication.java | 12 + .../directory/config/DirectoryConfig.java | 65 + .../config/DirectorySecurityConfig.java | 127 + .../config/PersonRepositoryConfig.java | 16 + .../workshop/directory/domain/Person.java | 145 + .../repository/PersonRepository.java | 11 + .../security/DirectoryUserDetailsService.java | 30 + .../src/main/resources/application.properties | 21 + .../src/main/resources/banner.txt | 8 + .../src/main/resources/keystore.jks | Bin 0 -> 2250 bytes .../main/resources/static/css/offcanvas.css | 59 + .../src/main/resources/static/css/theme.css | 238 + .../resources/static/js/syntaxhighlighter.js | 5332 +++++++++++++++ .../main/resources/templates/layouts/main.tpl | 40 + .../main/resources/templates/views/home.tpl | 20 + .../DirectoryWebSecurityApplicationTests.java | 16 + .../.mvn/wrapper/maven-wrapper.properties | 1 + .../code-snippet-manager-amqp/build.gradle | 50 + .../code/cs-code.txt | 5 + .../code/erl-code.txt | 4 + .../code/html-code.txt | 5 + .../code/js-code.txt | 1 + .../code/pas-code.txt | 5 + .../gradle/wrapper/gradle-wrapper.properties | 5 + .../code-snippet-manager-amqp/gradlew | 172 + .../code-snippet-manager-amqp/gradlew.bat | 84 + .../code-snippet-manager-amqp/pom.xml | 156 + .../CodeSnippetManagerAmqpApplication.java | 12 + .../snippet/actuator/SnippetHealthCheck.java | 40 + .../snippet/amqp/SnippetAmqpListener.java | 36 + .../snippet/aop/SnippetAmqpNotification.java | 58 + .../snippet/config/SnippetAmqpConfig.java | 69 + .../snippet/config/SnippetConfiguration.java | 39 + .../snippet/config/SnippetProperties.java | 18 + .../snippet/controller/SnippetController.java | 36 + .../pivotal/workshop/snippet/domain/Code.java | 42 + .../workshop/snippet/domain/Language.java | 55 + .../workshop/snippet/domain/Snippet.java | 131 + .../workshop/snippet/domain/SnippetError.java | 31 + .../snippet/domain/SnippetNotification.java | 55 + .../snippet/repository/CodeRepository.java | 9 + .../repository/LanguageRepository.java | 9 + .../snippet/repository/SnippetRepository.java | 9 + ...itional-spring-configuration-metadata.json | 5 + .../src/main/resources/application.properties | 16 + .../main/resources/static/css/offcanvas.css | 59 + .../src/main/resources/static/css/theme.css | 238 + .../resources/static/js/syntaxhighlighter.js | 5332 +++++++++++++++ .../main/resources/templates/layouts/main.tpl | 41 + .../main/resources/templates/views/home.tpl | 47 + ...odeSnippetManagerAmqpApplicationTests.java | 16 + .../.mvn/wrapper/maven-wrapper.properties | 1 + .../snippet-amqp-client/build.gradle | 35 + .../snippet-amqp-client/code/Hello.kt | 5 + .../gradle/wrapper/gradle-wrapper.properties | 5 + .../snippet-amqp-client/gradlew | 172 + .../snippet-amqp-client/gradlew.bat | 84 + .../snippet-amqp-client/pom.xml | 92 + .../client/SnippetAmqpClientApplication.java | 12 + .../amqp/SnippetNotificationListener.java | 14 + .../snippet/client/amqp/SnippetProducer.java | 34 + .../config/SnippetClientAmqpConfig.java | 39 + .../client/config/SnippetClientConfig.java | 30 + .../workshop/snippet/client/domain/Code.java | 22 + .../snippet/client/domain/Language.java | 36 + .../snippet/client/domain/Snippet.java | 55 + .../snippet/client/domain/SnippetError.java | 31 + .../client/domain/SnippetNotification.java | 61 + .../src/main/resources/application.properties | 0 .../SnippetAmqpClientApplicationTests.java | 16 + .../.mvn/wrapper/maven-wrapper.properties | 1 + .../code-snippet-manager-flux/build.gradle | 42 + .../code/cs-code.txt | 5 + .../code/erl-code.txt | 4 + .../code/html-code.txt | 5 + .../code/js-code.txt | 1 + .../code/pas-code.txt | 5 + .../gradle/wrapper/gradle-wrapper.properties | 6 + .../code-snippet-manager-flux/gradlew | 172 + .../code-snippet-manager-flux/gradlew.bat | 84 + .../code-snippet-manager-flux/pom.xml | 132 + .../CodeSnippetManagerFluxApplication.java | 13 + .../snippet/config/SnippetConfiguration.java | 53 + .../snippet/config/SnippetReactiveConfig.java | 42 + .../workshop/snippet/domain/Language.java | 60 + .../workshop/snippet/domain/Snippet.java | 121 + .../snippet/reactive/SnippetController.java | 30 + .../snippet/reactive/SnippetHandler.java | 67 + .../repository/LanguageRepository.java | 12 + .../snippet/repository/SnippetRepository.java | 14 + .../src/main/resources/application.properties | 9 + ...odeSnippetManagerFluxApplicationTests.java | 16 + .../.mvn/wrapper/maven-wrapper.properties | 1 + .../build.gradle | 47 + .../gradle/wrapper/gradle-wrapper.properties | 6 + .../code-snippet-manager-stream-log/gradlew | 172 + .../gradlew.bat | 84 + .../code-snippet-manager-stream-log/pom.xml | 114 + ...odeSnippetManagerStreamLogApplication.java | 14 + .../workshop/snippet/domain/Language.java | 54 + .../workshop/snippet/domain/Snippet.java | 113 + .../snippet/stream/SnippetLogger.java | 19 + .../src/main/resources/application.properties | 2 + ...ippetManagerStreamLogApplicationTests.java | 16 + .../.mvn/wrapper/maven-wrapper.properties | 1 + .../code-snippet-manager-stream/build.gradle | 57 + .../code/hello-world-erl.code | 11 + .../code/hello-world-javascript.code | 8 + .../gradle/wrapper/gradle-wrapper.properties | 6 + .../code-snippet-manager-stream/gradlew | 172 + .../code-snippet-manager-stream/gradlew.bat | 84 + .../code-snippet-manager-stream/pom.xml | 157 + .../CodeSnippetManagerStreamApplication.java | 12 + .../snippet/config/SnippetConfiguration.java | 28 + .../snippet/config/SnippetProperties.java | 26 + .../snippet/config/SnippetReactiveConfig.java | 42 + .../workshop/snippet/domain/Language.java | 59 + .../workshop/snippet/domain/Snippet.java | 120 + .../integration/SnippetTransformer.java | 35 + .../snippet/reactive/SnippetController.java | 24 + .../snippet/reactive/SnippetHandler.java | 52 + .../repository/LanguageRepository.java | 10 + .../snippet/repository/SnippetRepository.java | 13 + .../snippet/service/SnippetService.java | 53 + .../stream/SnippetFileSystemIntegration.java | 46 + ...itional-spring-configuration-metadata.json | 8 + .../src/main/resources/application.properties | 5 + ...eSnippetManagerStreamApplicationTests.java | 16 + .../.mvn/wrapper/maven-wrapper.properties | 1 + .../demo-starter/pom.xml | 94 + .../workshop/DemoStarterApplication.java | 51 + .../src/main/resources/application.properties | 3 + .../workshop/DemoStarterApplicationTests.java | 18 + .../.mvn/wrapper/maven-wrapper.properties | 1 + .../pom.xml | 71 + .../directory/annotation/Algorithm.java | 5 + .../EnableDirectoryWebClientUtils.java | 17 + .../directory/client/DirectoryWebClient.java | 56 + .../DirectoryWebClientAutoConfiguration.java | 47 + .../DirectoryWebClientProperties.java | 17 + .../workshop/directory/domain/Directory.java | 23 + .../workshop/directory/domain/Person.java | 141 + .../directory/utils/BCryptEncoder.java | 14 + .../utils/DirectoryWebClientUtils.java | 16 + .../DirectoryWebClientUtilsConfiguration.java | 25 + .../directory/utils/Pbkdf2Encoder.java | 14 + ...itional-spring-configuration-metadata.json | 13 + .../main/resources/META-INF/spring.factories | 1 + .../src/main/resources/application.properties | 0 ...ringBootAutoConfigureApplicationTests.java | 16 + .../pom.xml | 35 + .../14-spring-boot-extending/pom.xml | 71 + .../workingsets.properties | 0 src/main/UploadedContent/student-handout.pdf | Bin 0 -> 6679164 bytes .../01-spring-framework.html | 962 +++ .../02-spring-boot-overview.html | 1078 +++ .../03-spring-boot-internals.html | 952 +++ .../04-spring-boot-features.html | 1052 +++ .../05-spring-boot-web.html | 1355 ++++ .../06-spring-boot-data.html | 1987 ++++++ .../07-spring-boot-testing.html | 825 +++ .../08-spring-boot-actuator.html | 932 +++ .../09-spring-boot-security.html | 1293 ++++ .../10-spring-boot-messaging.html | 1467 ++++ .../11-spring-boot-webflux.html | 1223 ++++ .../12-spring-boot-cloud-stream.html | 1242 ++++ .../13-spring-boot-microservices.html | 1101 +++ .../14-spring-boot-extending.html | 1722 +++++ .../artifacts/spring-boot-security/home.html | 609 ++ .../artifacts/spring-boot-security/main.html | 629 ++ .../spring-boot-security/offcanvas.html | 648 ++ .../artifacts/spring-boot-security/theme.html | 827 +++ .../artifacts/spring-boot-web/offcanvas.html | 648 ++ .../spring-boot-web/syntaxhighlighter.html | 5921 +++++++++++++++++ .../artifacts/spring-boot-web/theme.html | 827 +++ .../images/02-spring-boot-01.png | Bin 0 -> 177803 bytes .../images/03-spring-boot-internals-01.png | Bin 0 -> 182775 bytes .../images/03-spring-boot-internals-02.png | Bin 0 -> 128105 bytes .../images/04-spring-boot-features-01.png | Bin 0 -> 358603 bytes .../images/05-spring-boot-web-01.png | Bin 0 -> 162490 bytes .../images/05-spring-boot-web-02.png | Bin 0 -> 142420 bytes .../images/05-spring-boot-web-03.png | Bin 0 -> 174590 bytes .../images/06-spring-boot-data-01.png | Bin 0 -> 165852 bytes .../images/06-spring-boot-data-02.png | Bin 0 -> 166142 bytes .../images/06-spring-boot-data-03.png | Bin 0 -> 170221 bytes .../images/06-spring-boot-data-04.png | Bin 0 -> 174590 bytes .../images/06-spring-boot-data-05.png | Bin 0 -> 116701 bytes .../images/06-spring-boot-data-06.png | Bin 0 -> 215721 bytes .../images/07-spring-boot-test-01.png | Bin 0 -> 169995 bytes .../images/08-spring-boot-actuator-01.png | Bin 0 -> 174652 bytes .../images/08-spring-boot-actuator-02.png | Bin 0 -> 191708 bytes .../images/08-spring-boot-actuator-03.png | Bin 0 -> 131983 bytes .../images/08-spring-boot-actuator-04.png | Bin 0 -> 126974 bytes .../images/08-spring-boot-actuator-05.png | Bin 0 -> 124859 bytes .../images/08-spring-boot-actuator-06.png | Bin 0 -> 87725 bytes .../images/09-spring-boot-security-01.png | Bin 0 -> 172496 bytes .../images/09-spring-boot-security-02.png | Bin 0 -> 74195 bytes .../images/09-spring-boot-security-03.png | Bin 0 -> 65836 bytes .../images/09-spring-boot-security-04.png | Bin 0 -> 239780 bytes .../images/09-spring-boot-security-xx.png | Bin 0 -> 175275 bytes .../images/10-spring-boot-messaging-00.png | Bin 0 -> 71194 bytes .../images/10-spring-boot-messaging-01.png | Bin 0 -> 380583 bytes .../images/10-spring-boot-messaging-02.png | Bin 0 -> 159903 bytes .../images/11-spring-boot-webflux-01.png | Bin 0 -> 168697 bytes .../images/11-spring-boot-webflux-02.png | Bin 0 -> 199396 bytes .../images/11-spring-boot-webflux-03.png | Bin 0 -> 192191 bytes .../images/12-spring-boot-cloud-stream-01.png | Bin 0 -> 177959 bytes .../images/12-spring-boot-cloud-stream-02.png | Bin 0 -> 170437 bytes .../images/14-spring-boot-extending-01.png | Bin 0 -> 175599 bytes .../images/14-spring-boot-extending-02.png | Bin 0 -> 154530 bytes .../student-lab-instructions/index.html | 661 ++ .../js/jquery-3.2.1.min.js | 4 + .../using-docker.html | 814 +++ src/main/resources/schema-h2.sql | 53 +- 495 files changed, 96522 insertions(+), 9 deletions(-) create mode 100644 src/main/UploadedContent/Spring-Boot-2.0.0.M7.a.RELEASE/01-spring-framework/simple-spring-webapp/build.gradle create mode 100644 src/main/UploadedContent/Spring-Boot-2.0.0.M7.a.RELEASE/01-spring-framework/simple-spring-webapp/pom.xml create mode 100644 src/main/UploadedContent/Spring-Boot-2.0.0.M7.a.RELEASE/01-spring-framework/simple-spring-webapp/settings.gradle create mode 100644 src/main/UploadedContent/Spring-Boot-2.0.0.M7.a.RELEASE/01-spring-framework/simple-spring-webapp/src/main/java/io/pivotal/workshop/web/SimpleController.java create mode 100644 src/main/UploadedContent/Spring-Boot-2.0.0.M7.a.RELEASE/01-spring-framework/simple-spring-webapp/src/main/resources/logback.xml create mode 100644 src/main/UploadedContent/Spring-Boot-2.0.0.M7.a.RELEASE/01-spring-framework/simple-spring-webapp/src/main/webapp/WEB-INF/applicationContext.xml create mode 100644 src/main/UploadedContent/Spring-Boot-2.0.0.M7.a.RELEASE/01-spring-framework/simple-spring-webapp/src/main/webapp/WEB-INF/dispatcherServlet-servlet.xml create mode 100644 src/main/UploadedContent/Spring-Boot-2.0.0.M7.a.RELEASE/01-spring-framework/simple-spring-webapp/src/main/webapp/WEB-INF/view/index.html create mode 100644 src/main/UploadedContent/Spring-Boot-2.0.0.M7.a.RELEASE/01-spring-framework/simple-spring-webapp/src/main/webapp/WEB-INF/view/showMessage.html create mode 100644 src/main/UploadedContent/Spring-Boot-2.0.0.M7.a.RELEASE/01-spring-framework/simple-spring-webapp/src/main/webapp/WEB-INF/web.xml create mode 100644 src/main/UploadedContent/Spring-Boot-2.0.0.M7.a.RELEASE/02-spring-boot-overview/directory-web/.mvn/wrapper/maven-wrapper.properties create mode 100644 src/main/UploadedContent/Spring-Boot-2.0.0.M7.a.RELEASE/02-spring-boot-overview/directory-web/build.gradle create mode 100644 src/main/UploadedContent/Spring-Boot-2.0.0.M7.a.RELEASE/02-spring-boot-overview/directory-web/gradle/wrapper/gradle-wrapper.properties create mode 100644 src/main/UploadedContent/Spring-Boot-2.0.0.M7.a.RELEASE/02-spring-boot-overview/directory-web/gradlew create mode 100644 src/main/UploadedContent/Spring-Boot-2.0.0.M7.a.RELEASE/02-spring-boot-overview/directory-web/gradlew.bat create mode 100644 src/main/UploadedContent/Spring-Boot-2.0.0.M7.a.RELEASE/02-spring-boot-overview/directory-web/pom.xml create mode 100644 src/main/UploadedContent/Spring-Boot-2.0.0.M7.a.RELEASE/02-spring-boot-overview/directory-web/src/main/java/io/pivotal/workshop/directory/DirectoryWebApplication.java create mode 100644 src/main/UploadedContent/Spring-Boot-2.0.0.M7.a.RELEASE/02-spring-boot-overview/directory-web/src/main/java/io/pivotal/workshop/directory/controller/DirectoryController.java create mode 100644 src/main/UploadedContent/Spring-Boot-2.0.0.M7.a.RELEASE/02-spring-boot-overview/directory-web/src/main/java/io/pivotal/workshop/directory/domain/Person.java create mode 100644 src/main/UploadedContent/Spring-Boot-2.0.0.M7.a.RELEASE/02-spring-boot-overview/directory-web/src/main/java/io/pivotal/workshop/directory/error/PersonError.java create mode 100644 src/main/UploadedContent/Spring-Boot-2.0.0.M7.a.RELEASE/02-spring-boot-overview/directory-web/src/main/java/io/pivotal/workshop/directory/repository/DirectoryRepository.java create mode 100644 src/main/UploadedContent/Spring-Boot-2.0.0.M7.a.RELEASE/02-spring-boot-overview/directory-web/src/main/resources/application.properties create mode 100644 src/main/UploadedContent/Spring-Boot-2.0.0.M7.a.RELEASE/02-spring-boot-overview/directory-web/src/test/java/io/pivotal/workshop/directory/DirectoryWebApplicationTests.java create mode 100644 src/main/UploadedContent/Spring-Boot-2.0.0.M7.a.RELEASE/03-spring-boot-internals/directory-web-internals/.mvn/wrapper/maven-wrapper.properties create mode 100644 src/main/UploadedContent/Spring-Boot-2.0.0.M7.a.RELEASE/03-spring-boot-internals/directory-web-internals/build.gradle create mode 100644 src/main/UploadedContent/Spring-Boot-2.0.0.M7.a.RELEASE/03-spring-boot-internals/directory-web-internals/gradle/wrapper/gradle-wrapper.properties create mode 100644 src/main/UploadedContent/Spring-Boot-2.0.0.M7.a.RELEASE/03-spring-boot-internals/directory-web-internals/gradlew create mode 100644 src/main/UploadedContent/Spring-Boot-2.0.0.M7.a.RELEASE/03-spring-boot-internals/directory-web-internals/gradlew.bat create mode 100644 src/main/UploadedContent/Spring-Boot-2.0.0.M7.a.RELEASE/03-spring-boot-internals/directory-web-internals/pom.xml create mode 100644 src/main/UploadedContent/Spring-Boot-2.0.0.M7.a.RELEASE/03-spring-boot-internals/directory-web-internals/src/main/java/io/pivotal/workshop/directory/DirectoryWebInternalsApplication.java create mode 100644 src/main/UploadedContent/Spring-Boot-2.0.0.M7.a.RELEASE/03-spring-boot-internals/directory-web-internals/src/main/java/io/pivotal/workshop/directory/annotation/Audit.java create mode 100644 src/main/UploadedContent/Spring-Boot-2.0.0.M7.a.RELEASE/03-spring-boot-internals/directory-web-internals/src/main/java/io/pivotal/workshop/directory/annotation/Auditor.java create mode 100644 src/main/UploadedContent/Spring-Boot-2.0.0.M7.a.RELEASE/03-spring-boot-internals/directory-web-internals/src/main/java/io/pivotal/workshop/directory/aop/DirectoryAudit.java create mode 100644 src/main/UploadedContent/Spring-Boot-2.0.0.M7.a.RELEASE/03-spring-boot-internals/directory-web-internals/src/main/java/io/pivotal/workshop/directory/aop/SimpleAudit.java create mode 100644 src/main/UploadedContent/Spring-Boot-2.0.0.M7.a.RELEASE/03-spring-boot-internals/directory-web-internals/src/main/java/io/pivotal/workshop/directory/config/DirectoryConfig.java create mode 100644 src/main/UploadedContent/Spring-Boot-2.0.0.M7.a.RELEASE/03-spring-boot-internals/directory-web-internals/src/main/java/io/pivotal/workshop/directory/config/DirectoryProperties.java create mode 100644 src/main/UploadedContent/Spring-Boot-2.0.0.M7.a.RELEASE/03-spring-boot-internals/directory-web-internals/src/main/java/io/pivotal/workshop/directory/controller/DirectoryController.java create mode 100644 src/main/UploadedContent/Spring-Boot-2.0.0.M7.a.RELEASE/03-spring-boot-internals/directory-web-internals/src/main/java/io/pivotal/workshop/directory/domain/Person.java create mode 100644 src/main/UploadedContent/Spring-Boot-2.0.0.M7.a.RELEASE/03-spring-boot-internals/directory-web-internals/src/main/java/io/pivotal/workshop/directory/error/PersonError.java create mode 100644 src/main/UploadedContent/Spring-Boot-2.0.0.M7.a.RELEASE/03-spring-boot-internals/directory-web-internals/src/main/java/io/pivotal/workshop/directory/repository/DirectoryRepository.java create mode 100644 src/main/UploadedContent/Spring-Boot-2.0.0.M7.a.RELEASE/03-spring-boot-internals/directory-web-internals/src/main/resources/META-INF/additional-spring-configuration-metadata.json create mode 100644 src/main/UploadedContent/Spring-Boot-2.0.0.M7.a.RELEASE/03-spring-boot-internals/directory-web-internals/src/main/resources/application.properties create mode 100644 src/main/UploadedContent/Spring-Boot-2.0.0.M7.a.RELEASE/03-spring-boot-internals/directory-web-internals/src/test/java/io/pivotal/workshop/directory/DirectoryWebInternalsApplicationTests.java create mode 100644 src/main/UploadedContent/Spring-Boot-2.0.0.M7.a.RELEASE/04-spring-boot-features/directory-web-features/.mvn/wrapper/maven-wrapper.properties create mode 100644 src/main/UploadedContent/Spring-Boot-2.0.0.M7.a.RELEASE/04-spring-boot-features/directory-web-features/build.gradle create mode 100644 src/main/UploadedContent/Spring-Boot-2.0.0.M7.a.RELEASE/04-spring-boot-features/directory-web-features/gradle/wrapper/gradle-wrapper.properties create mode 100644 src/main/UploadedContent/Spring-Boot-2.0.0.M7.a.RELEASE/04-spring-boot-features/directory-web-features/gradlew create mode 100644 src/main/UploadedContent/Spring-Boot-2.0.0.M7.a.RELEASE/04-spring-boot-features/directory-web-features/gradlew.bat create mode 100644 src/main/UploadedContent/Spring-Boot-2.0.0.M7.a.RELEASE/04-spring-boot-features/directory-web-features/pom.xml create mode 100644 src/main/UploadedContent/Spring-Boot-2.0.0.M7.a.RELEASE/04-spring-boot-features/directory-web-features/src/main/java/io/pivotal/workshop/directory/DirectoryWebFeaturesApplication.java create mode 100644 src/main/UploadedContent/Spring-Boot-2.0.0.M7.a.RELEASE/04-spring-boot-features/directory-web-features/src/main/java/io/pivotal/workshop/directory/annotation/Audit.java create mode 100644 src/main/UploadedContent/Spring-Boot-2.0.0.M7.a.RELEASE/04-spring-boot-features/directory-web-features/src/main/java/io/pivotal/workshop/directory/annotation/Auditor.java create mode 100644 src/main/UploadedContent/Spring-Boot-2.0.0.M7.a.RELEASE/04-spring-boot-features/directory-web-features/src/main/java/io/pivotal/workshop/directory/aop/DirectoryAudit.java create mode 100644 src/main/UploadedContent/Spring-Boot-2.0.0.M7.a.RELEASE/04-spring-boot-features/directory-web-features/src/main/java/io/pivotal/workshop/directory/aop/SimpleAudit.java create mode 100644 src/main/UploadedContent/Spring-Boot-2.0.0.M7.a.RELEASE/04-spring-boot-features/directory-web-features/src/main/java/io/pivotal/workshop/directory/config/DirectoryConfig.java create mode 100644 src/main/UploadedContent/Spring-Boot-2.0.0.M7.a.RELEASE/04-spring-boot-features/directory-web-features/src/main/java/io/pivotal/workshop/directory/config/DirectoryProperties.java create mode 100644 src/main/UploadedContent/Spring-Boot-2.0.0.M7.a.RELEASE/04-spring-boot-features/directory-web-features/src/main/java/io/pivotal/workshop/directory/controller/DirectoryController.java create mode 100644 src/main/UploadedContent/Spring-Boot-2.0.0.M7.a.RELEASE/04-spring-boot-features/directory-web-features/src/main/java/io/pivotal/workshop/directory/domain/Person.java create mode 100644 src/main/UploadedContent/Spring-Boot-2.0.0.M7.a.RELEASE/04-spring-boot-features/directory-web-features/src/main/java/io/pivotal/workshop/directory/error/PersonError.java create mode 100644 src/main/UploadedContent/Spring-Boot-2.0.0.M7.a.RELEASE/04-spring-boot-features/directory-web-features/src/main/java/io/pivotal/workshop/directory/repository/DirectoryRepository.java create mode 100644 src/main/UploadedContent/Spring-Boot-2.0.0.M7.a.RELEASE/04-spring-boot-features/directory-web-features/src/main/resources/META-INF/MANIFEST.MF create mode 100644 src/main/UploadedContent/Spring-Boot-2.0.0.M7.a.RELEASE/04-spring-boot-features/directory-web-features/src/main/resources/META-INF/additional-spring-configuration-metadata.json create mode 100644 src/main/UploadedContent/Spring-Boot-2.0.0.M7.a.RELEASE/04-spring-boot-features/directory-web-features/src/main/resources/application.properties create mode 100644 src/main/UploadedContent/Spring-Boot-2.0.0.M7.a.RELEASE/04-spring-boot-features/directory-web-features/src/main/resources/banner.txt create mode 100644 src/main/UploadedContent/Spring-Boot-2.0.0.M7.a.RELEASE/04-spring-boot-features/directory-web-features/src/main/resources/static/index.html create mode 100644 src/main/UploadedContent/Spring-Boot-2.0.0.M7.a.RELEASE/04-spring-boot-features/directory-web-features/src/test/java/io/pivotal/workshop/directory/DirectoryWebFeaturesApplicationTests.java create mode 100644 src/main/UploadedContent/Spring-Boot-2.0.0.M7.a.RELEASE/05-spring-boot-web/code-snippet-manager/.mvn/wrapper/maven-wrapper.properties create mode 100644 src/main/UploadedContent/Spring-Boot-2.0.0.M7.a.RELEASE/05-spring-boot-web/code-snippet-manager/build.gradle create mode 100644 src/main/UploadedContent/Spring-Boot-2.0.0.M7.a.RELEASE/05-spring-boot-web/code-snippet-manager/code/cs-code.txt create mode 100644 src/main/UploadedContent/Spring-Boot-2.0.0.M7.a.RELEASE/05-spring-boot-web/code-snippet-manager/code/erl-code.txt create mode 100644 src/main/UploadedContent/Spring-Boot-2.0.0.M7.a.RELEASE/05-spring-boot-web/code-snippet-manager/code/html-code.txt create mode 100644 src/main/UploadedContent/Spring-Boot-2.0.0.M7.a.RELEASE/05-spring-boot-web/code-snippet-manager/code/js-code.txt create mode 100644 src/main/UploadedContent/Spring-Boot-2.0.0.M7.a.RELEASE/05-spring-boot-web/code-snippet-manager/code/pas-code.txt create mode 100644 src/main/UploadedContent/Spring-Boot-2.0.0.M7.a.RELEASE/05-spring-boot-web/code-snippet-manager/gradle/wrapper/gradle-wrapper.properties create mode 100644 src/main/UploadedContent/Spring-Boot-2.0.0.M7.a.RELEASE/05-spring-boot-web/code-snippet-manager/gradlew create mode 100644 src/main/UploadedContent/Spring-Boot-2.0.0.M7.a.RELEASE/05-spring-boot-web/code-snippet-manager/gradlew.bat create mode 100644 src/main/UploadedContent/Spring-Boot-2.0.0.M7.a.RELEASE/05-spring-boot-web/code-snippet-manager/pom.xml create mode 100644 src/main/UploadedContent/Spring-Boot-2.0.0.M7.a.RELEASE/05-spring-boot-web/code-snippet-manager/src/main/java/io/pivotal/workshop/snippet/CodeSnippetManagerApplication.java create mode 100644 src/main/UploadedContent/Spring-Boot-2.0.0.M7.a.RELEASE/05-spring-boot-web/code-snippet-manager/src/main/java/io/pivotal/workshop/snippet/config/SnippetConfiguration.java create mode 100644 src/main/UploadedContent/Spring-Boot-2.0.0.M7.a.RELEASE/05-spring-boot-web/code-snippet-manager/src/main/java/io/pivotal/workshop/snippet/controller/SnippetController.java create mode 100644 src/main/UploadedContent/Spring-Boot-2.0.0.M7.a.RELEASE/05-spring-boot-web/code-snippet-manager/src/main/java/io/pivotal/workshop/snippet/domain/Code.java create mode 100644 src/main/UploadedContent/Spring-Boot-2.0.0.M7.a.RELEASE/05-spring-boot-web/code-snippet-manager/src/main/java/io/pivotal/workshop/snippet/domain/Language.java create mode 100644 src/main/UploadedContent/Spring-Boot-2.0.0.M7.a.RELEASE/05-spring-boot-web/code-snippet-manager/src/main/java/io/pivotal/workshop/snippet/domain/Snippet.java create mode 100644 src/main/UploadedContent/Spring-Boot-2.0.0.M7.a.RELEASE/05-spring-boot-web/code-snippet-manager/src/main/java/io/pivotal/workshop/snippet/repository/CodeRepository.java create mode 100644 src/main/UploadedContent/Spring-Boot-2.0.0.M7.a.RELEASE/05-spring-boot-web/code-snippet-manager/src/main/java/io/pivotal/workshop/snippet/repository/LanguageRepository.java create mode 100644 src/main/UploadedContent/Spring-Boot-2.0.0.M7.a.RELEASE/05-spring-boot-web/code-snippet-manager/src/main/java/io/pivotal/workshop/snippet/repository/SimpleRepository.java create mode 100644 src/main/UploadedContent/Spring-Boot-2.0.0.M7.a.RELEASE/05-spring-boot-web/code-snippet-manager/src/main/java/io/pivotal/workshop/snippet/repository/SnippetRepository.java create mode 100644 src/main/UploadedContent/Spring-Boot-2.0.0.M7.a.RELEASE/05-spring-boot-web/code-snippet-manager/src/main/resources/application.properties create mode 100644 src/main/UploadedContent/Spring-Boot-2.0.0.M7.a.RELEASE/05-spring-boot-web/code-snippet-manager/src/main/resources/static/css/offcanvas.css create mode 100644 src/main/UploadedContent/Spring-Boot-2.0.0.M7.a.RELEASE/05-spring-boot-web/code-snippet-manager/src/main/resources/static/css/theme.css create mode 100644 src/main/UploadedContent/Spring-Boot-2.0.0.M7.a.RELEASE/05-spring-boot-web/code-snippet-manager/src/main/resources/static/js/syntaxhighlighter.js create mode 100644 src/main/UploadedContent/Spring-Boot-2.0.0.M7.a.RELEASE/05-spring-boot-web/code-snippet-manager/src/main/resources/templates/layouts/main.tpl create mode 100644 src/main/UploadedContent/Spring-Boot-2.0.0.M7.a.RELEASE/05-spring-boot-web/code-snippet-manager/src/main/resources/templates/views/home.tpl create mode 100644 src/main/UploadedContent/Spring-Boot-2.0.0.M7.a.RELEASE/05-spring-boot-web/code-snippet-manager/src/test/java/io/pivotal/workshop/CodeSnippetManagerApplicationTests.java create mode 100644 src/main/UploadedContent/Spring-Boot-2.0.0.M7.a.RELEASE/06-spring-boot-data/code-snippet-manager-jdbc/.mvn/wrapper/maven-wrapper.properties create mode 100644 src/main/UploadedContent/Spring-Boot-2.0.0.M7.a.RELEASE/06-spring-boot-data/code-snippet-manager-jdbc/build.gradle create mode 100644 src/main/UploadedContent/Spring-Boot-2.0.0.M7.a.RELEASE/06-spring-boot-data/code-snippet-manager-jdbc/code/cs-code.txt create mode 100644 src/main/UploadedContent/Spring-Boot-2.0.0.M7.a.RELEASE/06-spring-boot-data/code-snippet-manager-jdbc/code/erl-code.txt create mode 100644 src/main/UploadedContent/Spring-Boot-2.0.0.M7.a.RELEASE/06-spring-boot-data/code-snippet-manager-jdbc/code/html-code.txt create mode 100644 src/main/UploadedContent/Spring-Boot-2.0.0.M7.a.RELEASE/06-spring-boot-data/code-snippet-manager-jdbc/code/js-code.txt create mode 100644 src/main/UploadedContent/Spring-Boot-2.0.0.M7.a.RELEASE/06-spring-boot-data/code-snippet-manager-jdbc/code/pas-code.txt create mode 100644 src/main/UploadedContent/Spring-Boot-2.0.0.M7.a.RELEASE/06-spring-boot-data/code-snippet-manager-jdbc/gradle/wrapper/gradle-wrapper.properties create mode 100644 src/main/UploadedContent/Spring-Boot-2.0.0.M7.a.RELEASE/06-spring-boot-data/code-snippet-manager-jdbc/gradlew create mode 100644 src/main/UploadedContent/Spring-Boot-2.0.0.M7.a.RELEASE/06-spring-boot-data/code-snippet-manager-jdbc/gradlew.bat create mode 100644 src/main/UploadedContent/Spring-Boot-2.0.0.M7.a.RELEASE/06-spring-boot-data/code-snippet-manager-jdbc/pom.xml create mode 100644 src/main/UploadedContent/Spring-Boot-2.0.0.M7.a.RELEASE/06-spring-boot-data/code-snippet-manager-jdbc/src/main/java/io/pivotal/workshop/snippet/CodeSnippetManagerJdbcApplication.java create mode 100644 src/main/UploadedContent/Spring-Boot-2.0.0.M7.a.RELEASE/06-spring-boot-data/code-snippet-manager-jdbc/src/main/java/io/pivotal/workshop/snippet/config/SnippetConfiguration.java create mode 100644 src/main/UploadedContent/Spring-Boot-2.0.0.M7.a.RELEASE/06-spring-boot-data/code-snippet-manager-jdbc/src/main/java/io/pivotal/workshop/snippet/controller/SnippetController.java create mode 100644 src/main/UploadedContent/Spring-Boot-2.0.0.M7.a.RELEASE/06-spring-boot-data/code-snippet-manager-jdbc/src/main/java/io/pivotal/workshop/snippet/domain/Code.java create mode 100644 src/main/UploadedContent/Spring-Boot-2.0.0.M7.a.RELEASE/06-spring-boot-data/code-snippet-manager-jdbc/src/main/java/io/pivotal/workshop/snippet/domain/CrossSnippetLanguageCode.java create mode 100644 src/main/UploadedContent/Spring-Boot-2.0.0.M7.a.RELEASE/06-spring-boot-data/code-snippet-manager-jdbc/src/main/java/io/pivotal/workshop/snippet/domain/Language.java create mode 100644 src/main/UploadedContent/Spring-Boot-2.0.0.M7.a.RELEASE/06-spring-boot-data/code-snippet-manager-jdbc/src/main/java/io/pivotal/workshop/snippet/domain/Snippet.java create mode 100644 src/main/UploadedContent/Spring-Boot-2.0.0.M7.a.RELEASE/06-spring-boot-data/code-snippet-manager-jdbc/src/main/java/io/pivotal/workshop/snippet/repository/CodeRepository.java create mode 100644 src/main/UploadedContent/Spring-Boot-2.0.0.M7.a.RELEASE/06-spring-boot-data/code-snippet-manager-jdbc/src/main/java/io/pivotal/workshop/snippet/repository/CrossSnippetLanguageCodeRepository.java create mode 100644 src/main/UploadedContent/Spring-Boot-2.0.0.M7.a.RELEASE/06-spring-boot-data/code-snippet-manager-jdbc/src/main/java/io/pivotal/workshop/snippet/repository/LanguageRepository.java create mode 100644 src/main/UploadedContent/Spring-Boot-2.0.0.M7.a.RELEASE/06-spring-boot-data/code-snippet-manager-jdbc/src/main/java/io/pivotal/workshop/snippet/repository/SimpleRepository.java create mode 100644 src/main/UploadedContent/Spring-Boot-2.0.0.M7.a.RELEASE/06-spring-boot-data/code-snippet-manager-jdbc/src/main/java/io/pivotal/workshop/snippet/repository/SnippetRepository.java create mode 100644 src/main/UploadedContent/Spring-Boot-2.0.0.M7.a.RELEASE/06-spring-boot-data/code-snippet-manager-jdbc/src/main/java/io/pivotal/workshop/snippet/repository/mapper/CodeRowMapper.java create mode 100644 src/main/UploadedContent/Spring-Boot-2.0.0.M7.a.RELEASE/06-spring-boot-data/code-snippet-manager-jdbc/src/main/java/io/pivotal/workshop/snippet/repository/mapper/LanguageRowMapper.java create mode 100644 src/main/UploadedContent/Spring-Boot-2.0.0.M7.a.RELEASE/06-spring-boot-data/code-snippet-manager-jdbc/src/main/java/io/pivotal/workshop/snippet/repository/mapper/SnippetRowMapper.java create mode 100644 src/main/UploadedContent/Spring-Boot-2.0.0.M7.a.RELEASE/06-spring-boot-data/code-snippet-manager-jdbc/src/main/resources/application.properties create mode 100644 src/main/UploadedContent/Spring-Boot-2.0.0.M7.a.RELEASE/06-spring-boot-data/code-snippet-manager-jdbc/src/main/resources/schema.sql create mode 100644 src/main/UploadedContent/Spring-Boot-2.0.0.M7.a.RELEASE/06-spring-boot-data/code-snippet-manager-jdbc/src/main/resources/static/css/offcanvas.css create mode 100644 src/main/UploadedContent/Spring-Boot-2.0.0.M7.a.RELEASE/06-spring-boot-data/code-snippet-manager-jdbc/src/main/resources/static/css/theme.css create mode 100644 src/main/UploadedContent/Spring-Boot-2.0.0.M7.a.RELEASE/06-spring-boot-data/code-snippet-manager-jdbc/src/main/resources/static/js/syntaxhighlighter.js create mode 100644 src/main/UploadedContent/Spring-Boot-2.0.0.M7.a.RELEASE/06-spring-boot-data/code-snippet-manager-jdbc/src/main/resources/templates/layouts/main.tpl create mode 100644 src/main/UploadedContent/Spring-Boot-2.0.0.M7.a.RELEASE/06-spring-boot-data/code-snippet-manager-jdbc/src/main/resources/templates/views/home.tpl create mode 100644 src/main/UploadedContent/Spring-Boot-2.0.0.M7.a.RELEASE/06-spring-boot-data/code-snippet-manager-jdbc/src/test/java/io/pivotal/workshop/snippet/CodeSnippetManagerJdbcApplicationTests.java create mode 100644 src/main/UploadedContent/Spring-Boot-2.0.0.M7.a.RELEASE/06-spring-boot-data/code-snippet-manager-jpa-rest/.mvn/wrapper/maven-wrapper.properties create mode 100644 src/main/UploadedContent/Spring-Boot-2.0.0.M7.a.RELEASE/06-spring-boot-data/code-snippet-manager-jpa-rest/build.gradle create mode 100644 src/main/UploadedContent/Spring-Boot-2.0.0.M7.a.RELEASE/06-spring-boot-data/code-snippet-manager-jpa-rest/code/cs-code.txt create mode 100644 src/main/UploadedContent/Spring-Boot-2.0.0.M7.a.RELEASE/06-spring-boot-data/code-snippet-manager-jpa-rest/code/erl-code.txt create mode 100644 src/main/UploadedContent/Spring-Boot-2.0.0.M7.a.RELEASE/06-spring-boot-data/code-snippet-manager-jpa-rest/code/html-code.txt create mode 100644 src/main/UploadedContent/Spring-Boot-2.0.0.M7.a.RELEASE/06-spring-boot-data/code-snippet-manager-jpa-rest/code/js-code.txt create mode 100644 src/main/UploadedContent/Spring-Boot-2.0.0.M7.a.RELEASE/06-spring-boot-data/code-snippet-manager-jpa-rest/code/pas-code.txt create mode 100644 src/main/UploadedContent/Spring-Boot-2.0.0.M7.a.RELEASE/06-spring-boot-data/code-snippet-manager-jpa-rest/gradle/wrapper/gradle-wrapper.properties create mode 100644 src/main/UploadedContent/Spring-Boot-2.0.0.M7.a.RELEASE/06-spring-boot-data/code-snippet-manager-jpa-rest/gradlew create mode 100644 src/main/UploadedContent/Spring-Boot-2.0.0.M7.a.RELEASE/06-spring-boot-data/code-snippet-manager-jpa-rest/gradlew.bat create mode 100644 src/main/UploadedContent/Spring-Boot-2.0.0.M7.a.RELEASE/06-spring-boot-data/code-snippet-manager-jpa-rest/pom.xml create mode 100644 src/main/UploadedContent/Spring-Boot-2.0.0.M7.a.RELEASE/06-spring-boot-data/code-snippet-manager-jpa-rest/src/main/java/io/pivotal/workshop/snippet/CodeSnippetManagerJpaRestApplication.java create mode 100644 src/main/UploadedContent/Spring-Boot-2.0.0.M7.a.RELEASE/06-spring-boot-data/code-snippet-manager-jpa-rest/src/main/java/io/pivotal/workshop/snippet/config/SnippetConfiguration.java create mode 100644 src/main/UploadedContent/Spring-Boot-2.0.0.M7.a.RELEASE/06-spring-boot-data/code-snippet-manager-jpa-rest/src/main/java/io/pivotal/workshop/snippet/controller/SnippetController.java create mode 100644 src/main/UploadedContent/Spring-Boot-2.0.0.M7.a.RELEASE/06-spring-boot-data/code-snippet-manager-jpa-rest/src/main/java/io/pivotal/workshop/snippet/domain/Code.java create mode 100644 src/main/UploadedContent/Spring-Boot-2.0.0.M7.a.RELEASE/06-spring-boot-data/code-snippet-manager-jpa-rest/src/main/java/io/pivotal/workshop/snippet/domain/Language.java create mode 100644 src/main/UploadedContent/Spring-Boot-2.0.0.M7.a.RELEASE/06-spring-boot-data/code-snippet-manager-jpa-rest/src/main/java/io/pivotal/workshop/snippet/domain/Snippet.java create mode 100644 src/main/UploadedContent/Spring-Boot-2.0.0.M7.a.RELEASE/06-spring-boot-data/code-snippet-manager-jpa-rest/src/main/java/io/pivotal/workshop/snippet/repository/CodeRepository.java create mode 100644 src/main/UploadedContent/Spring-Boot-2.0.0.M7.a.RELEASE/06-spring-boot-data/code-snippet-manager-jpa-rest/src/main/java/io/pivotal/workshop/snippet/repository/LanguageRepository.java create mode 100644 src/main/UploadedContent/Spring-Boot-2.0.0.M7.a.RELEASE/06-spring-boot-data/code-snippet-manager-jpa-rest/src/main/java/io/pivotal/workshop/snippet/repository/SnippetRepository.java create mode 100644 src/main/UploadedContent/Spring-Boot-2.0.0.M7.a.RELEASE/06-spring-boot-data/code-snippet-manager-jpa-rest/src/main/resources/application.properties create mode 100644 src/main/UploadedContent/Spring-Boot-2.0.0.M7.a.RELEASE/06-spring-boot-data/code-snippet-manager-jpa-rest/src/main/resources/static/css/offcanvas.css create mode 100644 src/main/UploadedContent/Spring-Boot-2.0.0.M7.a.RELEASE/06-spring-boot-data/code-snippet-manager-jpa-rest/src/main/resources/static/css/theme.css create mode 100644 src/main/UploadedContent/Spring-Boot-2.0.0.M7.a.RELEASE/06-spring-boot-data/code-snippet-manager-jpa-rest/src/main/resources/static/js/syntaxhighlighter.js create mode 100644 src/main/UploadedContent/Spring-Boot-2.0.0.M7.a.RELEASE/06-spring-boot-data/code-snippet-manager-jpa-rest/src/main/resources/templates/layouts/main.tpl create mode 100644 src/main/UploadedContent/Spring-Boot-2.0.0.M7.a.RELEASE/06-spring-boot-data/code-snippet-manager-jpa-rest/src/main/resources/templates/views/home.tpl create mode 100644 src/main/UploadedContent/Spring-Boot-2.0.0.M7.a.RELEASE/06-spring-boot-data/code-snippet-manager-jpa-rest/src/test/java/io/pivotal/workshop/snippet/CodeSnippetManagerJpaRestApplicationTests.java create mode 100644 src/main/UploadedContent/Spring-Boot-2.0.0.M7.a.RELEASE/06-spring-boot-data/code-snippet-manager-jpa/.mvn/wrapper/maven-wrapper.properties create mode 100644 src/main/UploadedContent/Spring-Boot-2.0.0.M7.a.RELEASE/06-spring-boot-data/code-snippet-manager-jpa/build.gradle create mode 100644 src/main/UploadedContent/Spring-Boot-2.0.0.M7.a.RELEASE/06-spring-boot-data/code-snippet-manager-jpa/code/cs-code.txt create mode 100644 src/main/UploadedContent/Spring-Boot-2.0.0.M7.a.RELEASE/06-spring-boot-data/code-snippet-manager-jpa/code/erl-code.txt create mode 100644 src/main/UploadedContent/Spring-Boot-2.0.0.M7.a.RELEASE/06-spring-boot-data/code-snippet-manager-jpa/code/html-code.txt create mode 100644 src/main/UploadedContent/Spring-Boot-2.0.0.M7.a.RELEASE/06-spring-boot-data/code-snippet-manager-jpa/code/js-code.txt create mode 100644 src/main/UploadedContent/Spring-Boot-2.0.0.M7.a.RELEASE/06-spring-boot-data/code-snippet-manager-jpa/code/pas-code.txt create mode 100644 src/main/UploadedContent/Spring-Boot-2.0.0.M7.a.RELEASE/06-spring-boot-data/code-snippet-manager-jpa/gradle/wrapper/gradle-wrapper.properties create mode 100644 src/main/UploadedContent/Spring-Boot-2.0.0.M7.a.RELEASE/06-spring-boot-data/code-snippet-manager-jpa/gradlew create mode 100644 src/main/UploadedContent/Spring-Boot-2.0.0.M7.a.RELEASE/06-spring-boot-data/code-snippet-manager-jpa/gradlew.bat create mode 100644 src/main/UploadedContent/Spring-Boot-2.0.0.M7.a.RELEASE/06-spring-boot-data/code-snippet-manager-jpa/pom.xml create mode 100644 src/main/UploadedContent/Spring-Boot-2.0.0.M7.a.RELEASE/06-spring-boot-data/code-snippet-manager-jpa/src/main/java/io/pivotal/workshop/snippet/CodeSnippetManagerJpaApplication.java create mode 100644 src/main/UploadedContent/Spring-Boot-2.0.0.M7.a.RELEASE/06-spring-boot-data/code-snippet-manager-jpa/src/main/java/io/pivotal/workshop/snippet/config/SnippetConfiguration.java create mode 100644 src/main/UploadedContent/Spring-Boot-2.0.0.M7.a.RELEASE/06-spring-boot-data/code-snippet-manager-jpa/src/main/java/io/pivotal/workshop/snippet/controller/SnippetController.java create mode 100644 src/main/UploadedContent/Spring-Boot-2.0.0.M7.a.RELEASE/06-spring-boot-data/code-snippet-manager-jpa/src/main/java/io/pivotal/workshop/snippet/domain/Code.java create mode 100644 src/main/UploadedContent/Spring-Boot-2.0.0.M7.a.RELEASE/06-spring-boot-data/code-snippet-manager-jpa/src/main/java/io/pivotal/workshop/snippet/domain/Language.java create mode 100644 src/main/UploadedContent/Spring-Boot-2.0.0.M7.a.RELEASE/06-spring-boot-data/code-snippet-manager-jpa/src/main/java/io/pivotal/workshop/snippet/domain/Snippet.java create mode 100644 src/main/UploadedContent/Spring-Boot-2.0.0.M7.a.RELEASE/06-spring-boot-data/code-snippet-manager-jpa/src/main/java/io/pivotal/workshop/snippet/repository/CodeRepository.java create mode 100644 src/main/UploadedContent/Spring-Boot-2.0.0.M7.a.RELEASE/06-spring-boot-data/code-snippet-manager-jpa/src/main/java/io/pivotal/workshop/snippet/repository/LanguageRepository.java create mode 100644 src/main/UploadedContent/Spring-Boot-2.0.0.M7.a.RELEASE/06-spring-boot-data/code-snippet-manager-jpa/src/main/java/io/pivotal/workshop/snippet/repository/SnippetRepository.java create mode 100644 src/main/UploadedContent/Spring-Boot-2.0.0.M7.a.RELEASE/06-spring-boot-data/code-snippet-manager-jpa/src/main/resources/application.properties create mode 100644 src/main/UploadedContent/Spring-Boot-2.0.0.M7.a.RELEASE/06-spring-boot-data/code-snippet-manager-jpa/src/main/resources/static/css/offcanvas.css create mode 100644 src/main/UploadedContent/Spring-Boot-2.0.0.M7.a.RELEASE/06-spring-boot-data/code-snippet-manager-jpa/src/main/resources/static/css/theme.css create mode 100644 src/main/UploadedContent/Spring-Boot-2.0.0.M7.a.RELEASE/06-spring-boot-data/code-snippet-manager-jpa/src/main/resources/static/js/syntaxhighlighter.js create mode 100644 src/main/UploadedContent/Spring-Boot-2.0.0.M7.a.RELEASE/06-spring-boot-data/code-snippet-manager-jpa/src/main/resources/templates/layouts/main.tpl create mode 100644 src/main/UploadedContent/Spring-Boot-2.0.0.M7.a.RELEASE/06-spring-boot-data/code-snippet-manager-jpa/src/main/resources/templates/views/home.tpl create mode 100644 src/main/UploadedContent/Spring-Boot-2.0.0.M7.a.RELEASE/06-spring-boot-data/code-snippet-manager-jpa/src/test/java/io/pivotal/workshop/snippet/CodeSnippetManagerJpaApplicationTests.java create mode 100644 src/main/UploadedContent/Spring-Boot-2.0.0.M7.a.RELEASE/07-spring-boot-test/code-snippet-manager-jpa-rest-test/.mvn/wrapper/maven-wrapper.properties create mode 100644 src/main/UploadedContent/Spring-Boot-2.0.0.M7.a.RELEASE/07-spring-boot-test/code-snippet-manager-jpa-rest-test/build.gradle create mode 100644 src/main/UploadedContent/Spring-Boot-2.0.0.M7.a.RELEASE/07-spring-boot-test/code-snippet-manager-jpa-rest-test/code/cs-code.txt create mode 100644 src/main/UploadedContent/Spring-Boot-2.0.0.M7.a.RELEASE/07-spring-boot-test/code-snippet-manager-jpa-rest-test/code/erl-code.txt create mode 100644 src/main/UploadedContent/Spring-Boot-2.0.0.M7.a.RELEASE/07-spring-boot-test/code-snippet-manager-jpa-rest-test/code/html-code.txt create mode 100644 src/main/UploadedContent/Spring-Boot-2.0.0.M7.a.RELEASE/07-spring-boot-test/code-snippet-manager-jpa-rest-test/code/js-code.txt create mode 100644 src/main/UploadedContent/Spring-Boot-2.0.0.M7.a.RELEASE/07-spring-boot-test/code-snippet-manager-jpa-rest-test/code/pas-code.txt create mode 100644 src/main/UploadedContent/Spring-Boot-2.0.0.M7.a.RELEASE/07-spring-boot-test/code-snippet-manager-jpa-rest-test/gradle/wrapper/gradle-wrapper.properties create mode 100644 src/main/UploadedContent/Spring-Boot-2.0.0.M7.a.RELEASE/07-spring-boot-test/code-snippet-manager-jpa-rest-test/gradlew create mode 100644 src/main/UploadedContent/Spring-Boot-2.0.0.M7.a.RELEASE/07-spring-boot-test/code-snippet-manager-jpa-rest-test/gradlew.bat create mode 100644 src/main/UploadedContent/Spring-Boot-2.0.0.M7.a.RELEASE/07-spring-boot-test/code-snippet-manager-jpa-rest-test/pom.xml create mode 100644 src/main/UploadedContent/Spring-Boot-2.0.0.M7.a.RELEASE/07-spring-boot-test/code-snippet-manager-jpa-rest-test/src/main/java/io/pivotal/workshop/snippet/CodeSnippetManagerJpaRestTestApplication.java create mode 100644 src/main/UploadedContent/Spring-Boot-2.0.0.M7.a.RELEASE/07-spring-boot-test/code-snippet-manager-jpa-rest-test/src/main/java/io/pivotal/workshop/snippet/config/SnippetConfiguration.java create mode 100644 src/main/UploadedContent/Spring-Boot-2.0.0.M7.a.RELEASE/07-spring-boot-test/code-snippet-manager-jpa-rest-test/src/main/java/io/pivotal/workshop/snippet/controller/SnippetController.java create mode 100644 src/main/UploadedContent/Spring-Boot-2.0.0.M7.a.RELEASE/07-spring-boot-test/code-snippet-manager-jpa-rest-test/src/main/java/io/pivotal/workshop/snippet/domain/Code.java create mode 100644 src/main/UploadedContent/Spring-Boot-2.0.0.M7.a.RELEASE/07-spring-boot-test/code-snippet-manager-jpa-rest-test/src/main/java/io/pivotal/workshop/snippet/domain/Language.java create mode 100644 src/main/UploadedContent/Spring-Boot-2.0.0.M7.a.RELEASE/07-spring-boot-test/code-snippet-manager-jpa-rest-test/src/main/java/io/pivotal/workshop/snippet/domain/Snippet.java create mode 100644 src/main/UploadedContent/Spring-Boot-2.0.0.M7.a.RELEASE/07-spring-boot-test/code-snippet-manager-jpa-rest-test/src/main/java/io/pivotal/workshop/snippet/repository/CodeRepository.java create mode 100644 src/main/UploadedContent/Spring-Boot-2.0.0.M7.a.RELEASE/07-spring-boot-test/code-snippet-manager-jpa-rest-test/src/main/java/io/pivotal/workshop/snippet/repository/LanguageRepository.java create mode 100644 src/main/UploadedContent/Spring-Boot-2.0.0.M7.a.RELEASE/07-spring-boot-test/code-snippet-manager-jpa-rest-test/src/main/java/io/pivotal/workshop/snippet/repository/SnippetRepository.java create mode 100644 src/main/UploadedContent/Spring-Boot-2.0.0.M7.a.RELEASE/07-spring-boot-test/code-snippet-manager-jpa-rest-test/src/main/resources/application.properties create mode 100644 src/main/UploadedContent/Spring-Boot-2.0.0.M7.a.RELEASE/07-spring-boot-test/code-snippet-manager-jpa-rest-test/src/main/resources/static/css/offcanvas.css create mode 100644 src/main/UploadedContent/Spring-Boot-2.0.0.M7.a.RELEASE/07-spring-boot-test/code-snippet-manager-jpa-rest-test/src/main/resources/static/css/theme.css create mode 100644 src/main/UploadedContent/Spring-Boot-2.0.0.M7.a.RELEASE/07-spring-boot-test/code-snippet-manager-jpa-rest-test/src/main/resources/static/js/syntaxhighlighter.js create mode 100644 src/main/UploadedContent/Spring-Boot-2.0.0.M7.a.RELEASE/07-spring-boot-test/code-snippet-manager-jpa-rest-test/src/main/resources/templates/layouts/main.tpl create mode 100644 src/main/UploadedContent/Spring-Boot-2.0.0.M7.a.RELEASE/07-spring-boot-test/code-snippet-manager-jpa-rest-test/src/main/resources/templates/views/home.tpl create mode 100644 src/main/UploadedContent/Spring-Boot-2.0.0.M7.a.RELEASE/07-spring-boot-test/code-snippet-manager-jpa-rest-test/src/test/java/io/pivotal/workshop/snippet/CodeSnippetManagerIntegrationTests.java create mode 100644 src/main/UploadedContent/Spring-Boot-2.0.0.M7.a.RELEASE/07-spring-boot-test/code-snippet-manager-jpa-rest-test/src/test/java/io/pivotal/workshop/snippet/IntegrationTest.java create mode 100644 src/main/UploadedContent/Spring-Boot-2.0.0.M7.a.RELEASE/07-spring-boot-test/code-snippet-manager-jpa-rest-test/src/test/java/io/pivotal/workshop/snippet/JpaTests.java create mode 100644 src/main/UploadedContent/Spring-Boot-2.0.0.M7.a.RELEASE/07-spring-boot-test/code-snippet-manager-jpa-rest-test/src/test/java/io/pivotal/workshop/snippet/JsonTests.java create mode 100644 src/main/UploadedContent/Spring-Boot-2.0.0.M7.a.RELEASE/07-spring-boot-test/code-snippet-manager-jpa-rest-test/src/test/resources/io/pivotal/workshop/snippet/language-expected.json create mode 100644 src/main/UploadedContent/Spring-Boot-2.0.0.M7.a.RELEASE/08-spring-boot-actuator/code-snippet-manager-actuator/.mvn/wrapper/maven-wrapper.properties create mode 100644 src/main/UploadedContent/Spring-Boot-2.0.0.M7.a.RELEASE/08-spring-boot-actuator/code-snippet-manager-actuator/build.gradle create mode 100644 src/main/UploadedContent/Spring-Boot-2.0.0.M7.a.RELEASE/08-spring-boot-actuator/code-snippet-manager-actuator/code/cs-code.txt create mode 100644 src/main/UploadedContent/Spring-Boot-2.0.0.M7.a.RELEASE/08-spring-boot-actuator/code-snippet-manager-actuator/code/erl-code.txt create mode 100644 src/main/UploadedContent/Spring-Boot-2.0.0.M7.a.RELEASE/08-spring-boot-actuator/code-snippet-manager-actuator/code/html-code.txt create mode 100644 src/main/UploadedContent/Spring-Boot-2.0.0.M7.a.RELEASE/08-spring-boot-actuator/code-snippet-manager-actuator/code/js-code.txt create mode 100644 src/main/UploadedContent/Spring-Boot-2.0.0.M7.a.RELEASE/08-spring-boot-actuator/code-snippet-manager-actuator/code/pas-code.txt create mode 100644 src/main/UploadedContent/Spring-Boot-2.0.0.M7.a.RELEASE/08-spring-boot-actuator/code-snippet-manager-actuator/gradle/wrapper/gradle-wrapper.properties create mode 100644 src/main/UploadedContent/Spring-Boot-2.0.0.M7.a.RELEASE/08-spring-boot-actuator/code-snippet-manager-actuator/gradlew create mode 100644 src/main/UploadedContent/Spring-Boot-2.0.0.M7.a.RELEASE/08-spring-boot-actuator/code-snippet-manager-actuator/gradlew.bat create mode 100644 src/main/UploadedContent/Spring-Boot-2.0.0.M7.a.RELEASE/08-spring-boot-actuator/code-snippet-manager-actuator/pom.xml create mode 100644 src/main/UploadedContent/Spring-Boot-2.0.0.M7.a.RELEASE/08-spring-boot-actuator/code-snippet-manager-actuator/src/main/java/io/pivotal/workshop/snippet/CodeSnippetManagerActuatorApplication.java create mode 100644 src/main/UploadedContent/Spring-Boot-2.0.0.M7.a.RELEASE/08-spring-boot-actuator/code-snippet-manager-actuator/src/main/java/io/pivotal/workshop/snippet/actuator/SnippetHealthCheck.java create mode 100644 src/main/UploadedContent/Spring-Boot-2.0.0.M7.a.RELEASE/08-spring-boot-actuator/code-snippet-manager-actuator/src/main/java/io/pivotal/workshop/snippet/config/SnippetConfiguration.java create mode 100644 src/main/UploadedContent/Spring-Boot-2.0.0.M7.a.RELEASE/08-spring-boot-actuator/code-snippet-manager-actuator/src/main/java/io/pivotal/workshop/snippet/config/SnippetProperties.java create mode 100644 src/main/UploadedContent/Spring-Boot-2.0.0.M7.a.RELEASE/08-spring-boot-actuator/code-snippet-manager-actuator/src/main/java/io/pivotal/workshop/snippet/controller/SnippetController.java create mode 100644 src/main/UploadedContent/Spring-Boot-2.0.0.M7.a.RELEASE/08-spring-boot-actuator/code-snippet-manager-actuator/src/main/java/io/pivotal/workshop/snippet/domain/Code.java create mode 100644 src/main/UploadedContent/Spring-Boot-2.0.0.M7.a.RELEASE/08-spring-boot-actuator/code-snippet-manager-actuator/src/main/java/io/pivotal/workshop/snippet/domain/Language.java create mode 100644 src/main/UploadedContent/Spring-Boot-2.0.0.M7.a.RELEASE/08-spring-boot-actuator/code-snippet-manager-actuator/src/main/java/io/pivotal/workshop/snippet/domain/Snippet.java create mode 100644 src/main/UploadedContent/Spring-Boot-2.0.0.M7.a.RELEASE/08-spring-boot-actuator/code-snippet-manager-actuator/src/main/java/io/pivotal/workshop/snippet/repository/CodeRepository.java create mode 100644 src/main/UploadedContent/Spring-Boot-2.0.0.M7.a.RELEASE/08-spring-boot-actuator/code-snippet-manager-actuator/src/main/java/io/pivotal/workshop/snippet/repository/LanguageRepository.java create mode 100644 src/main/UploadedContent/Spring-Boot-2.0.0.M7.a.RELEASE/08-spring-boot-actuator/code-snippet-manager-actuator/src/main/java/io/pivotal/workshop/snippet/repository/SnippetRepository.java create mode 100644 src/main/UploadedContent/Spring-Boot-2.0.0.M7.a.RELEASE/08-spring-boot-actuator/code-snippet-manager-actuator/src/main/resources/META-INF/additional-spring-configuration-metadata.json create mode 100644 src/main/UploadedContent/Spring-Boot-2.0.0.M7.a.RELEASE/08-spring-boot-actuator/code-snippet-manager-actuator/src/main/resources/application.properties create mode 100644 src/main/UploadedContent/Spring-Boot-2.0.0.M7.a.RELEASE/08-spring-boot-actuator/code-snippet-manager-actuator/src/main/resources/static/css/offcanvas.css create mode 100644 src/main/UploadedContent/Spring-Boot-2.0.0.M7.a.RELEASE/08-spring-boot-actuator/code-snippet-manager-actuator/src/main/resources/static/css/theme.css create mode 100644 src/main/UploadedContent/Spring-Boot-2.0.0.M7.a.RELEASE/08-spring-boot-actuator/code-snippet-manager-actuator/src/main/resources/static/js/syntaxhighlighter.js create mode 100644 src/main/UploadedContent/Spring-Boot-2.0.0.M7.a.RELEASE/08-spring-boot-actuator/code-snippet-manager-actuator/src/main/resources/templates/layouts/main.tpl create mode 100644 src/main/UploadedContent/Spring-Boot-2.0.0.M7.a.RELEASE/08-spring-boot-actuator/code-snippet-manager-actuator/src/main/resources/templates/views/home.tpl create mode 100644 src/main/UploadedContent/Spring-Boot-2.0.0.M7.a.RELEASE/08-spring-boot-actuator/code-snippet-manager-actuator/src/test/java/io/pivotal/workshop/snippet/CodeSnippetManagerActuatorApplicationTests.java create mode 100644 src/main/UploadedContent/Spring-Boot-2.0.0.M7.a.RELEASE/09-spring-boot-security/code-snippet-manager-security/.mvn/wrapper/maven-wrapper.properties create mode 100644 src/main/UploadedContent/Spring-Boot-2.0.0.M7.a.RELEASE/09-spring-boot-security/code-snippet-manager-security/build.gradle create mode 100644 src/main/UploadedContent/Spring-Boot-2.0.0.M7.a.RELEASE/09-spring-boot-security/code-snippet-manager-security/code/cs-code.txt create mode 100644 src/main/UploadedContent/Spring-Boot-2.0.0.M7.a.RELEASE/09-spring-boot-security/code-snippet-manager-security/code/erl-code.txt create mode 100644 src/main/UploadedContent/Spring-Boot-2.0.0.M7.a.RELEASE/09-spring-boot-security/code-snippet-manager-security/code/html-code.txt create mode 100644 src/main/UploadedContent/Spring-Boot-2.0.0.M7.a.RELEASE/09-spring-boot-security/code-snippet-manager-security/code/js-code.txt create mode 100644 src/main/UploadedContent/Spring-Boot-2.0.0.M7.a.RELEASE/09-spring-boot-security/code-snippet-manager-security/code/pas-code.txt create mode 100644 src/main/UploadedContent/Spring-Boot-2.0.0.M7.a.RELEASE/09-spring-boot-security/code-snippet-manager-security/gradle/wrapper/gradle-wrapper.properties create mode 100644 src/main/UploadedContent/Spring-Boot-2.0.0.M7.a.RELEASE/09-spring-boot-security/code-snippet-manager-security/gradlew create mode 100644 src/main/UploadedContent/Spring-Boot-2.0.0.M7.a.RELEASE/09-spring-boot-security/code-snippet-manager-security/gradlew.bat create mode 100644 src/main/UploadedContent/Spring-Boot-2.0.0.M7.a.RELEASE/09-spring-boot-security/code-snippet-manager-security/pom.xml create mode 100644 src/main/UploadedContent/Spring-Boot-2.0.0.M7.a.RELEASE/09-spring-boot-security/code-snippet-manager-security/src/main/java/io/pivotal/workshop/snippet/CodeSnippetManagerSecurityApplication.java create mode 100644 src/main/UploadedContent/Spring-Boot-2.0.0.M7.a.RELEASE/09-spring-boot-security/code-snippet-manager-security/src/main/java/io/pivotal/workshop/snippet/actuator/SnippetHealthCheck.java create mode 100644 src/main/UploadedContent/Spring-Boot-2.0.0.M7.a.RELEASE/09-spring-boot-security/code-snippet-manager-security/src/main/java/io/pivotal/workshop/snippet/config/SnippetConfiguration.java create mode 100644 src/main/UploadedContent/Spring-Boot-2.0.0.M7.a.RELEASE/09-spring-boot-security/code-snippet-manager-security/src/main/java/io/pivotal/workshop/snippet/config/SnippetProperties.java create mode 100644 src/main/UploadedContent/Spring-Boot-2.0.0.M7.a.RELEASE/09-spring-boot-security/code-snippet-manager-security/src/main/java/io/pivotal/workshop/snippet/config/SnippetSecurityConfig.java create mode 100644 src/main/UploadedContent/Spring-Boot-2.0.0.M7.a.RELEASE/09-spring-boot-security/code-snippet-manager-security/src/main/java/io/pivotal/workshop/snippet/controller/SnippetController.java create mode 100644 src/main/UploadedContent/Spring-Boot-2.0.0.M7.a.RELEASE/09-spring-boot-security/code-snippet-manager-security/src/main/java/io/pivotal/workshop/snippet/domain/Code.java create mode 100644 src/main/UploadedContent/Spring-Boot-2.0.0.M7.a.RELEASE/09-spring-boot-security/code-snippet-manager-security/src/main/java/io/pivotal/workshop/snippet/domain/Language.java create mode 100644 src/main/UploadedContent/Spring-Boot-2.0.0.M7.a.RELEASE/09-spring-boot-security/code-snippet-manager-security/src/main/java/io/pivotal/workshop/snippet/domain/Person.java create mode 100644 src/main/UploadedContent/Spring-Boot-2.0.0.M7.a.RELEASE/09-spring-boot-security/code-snippet-manager-security/src/main/java/io/pivotal/workshop/snippet/domain/Snippet.java create mode 100644 src/main/UploadedContent/Spring-Boot-2.0.0.M7.a.RELEASE/09-spring-boot-security/code-snippet-manager-security/src/main/java/io/pivotal/workshop/snippet/repository/CodeRepository.java create mode 100644 src/main/UploadedContent/Spring-Boot-2.0.0.M7.a.RELEASE/09-spring-boot-security/code-snippet-manager-security/src/main/java/io/pivotal/workshop/snippet/repository/LanguageRepository.java create mode 100644 src/main/UploadedContent/Spring-Boot-2.0.0.M7.a.RELEASE/09-spring-boot-security/code-snippet-manager-security/src/main/java/io/pivotal/workshop/snippet/repository/SnippetRepository.java create mode 100644 src/main/UploadedContent/Spring-Boot-2.0.0.M7.a.RELEASE/09-spring-boot-security/code-snippet-manager-security/src/main/resources/META-INF/additional-spring-configuration-metadata.json create mode 100644 src/main/UploadedContent/Spring-Boot-2.0.0.M7.a.RELEASE/09-spring-boot-security/code-snippet-manager-security/src/main/resources/application.properties create mode 100644 src/main/UploadedContent/Spring-Boot-2.0.0.M7.a.RELEASE/09-spring-boot-security/code-snippet-manager-security/src/main/resources/static/css/offcanvas.css create mode 100644 src/main/UploadedContent/Spring-Boot-2.0.0.M7.a.RELEASE/09-spring-boot-security/code-snippet-manager-security/src/main/resources/static/css/theme.css create mode 100644 src/main/UploadedContent/Spring-Boot-2.0.0.M7.a.RELEASE/09-spring-boot-security/code-snippet-manager-security/src/main/resources/static/js/syntaxhighlighter.js create mode 100644 src/main/UploadedContent/Spring-Boot-2.0.0.M7.a.RELEASE/09-spring-boot-security/code-snippet-manager-security/src/main/resources/templates/layouts/main.tpl create mode 100644 src/main/UploadedContent/Spring-Boot-2.0.0.M7.a.RELEASE/09-spring-boot-security/code-snippet-manager-security/src/main/resources/templates/views/home.tpl create mode 100644 src/main/UploadedContent/Spring-Boot-2.0.0.M7.a.RELEASE/09-spring-boot-security/code-snippet-manager-security/src/test/java/io/pivotal/workshop/snippet/CodeSnippetManagerSecurityApplicationTests.java create mode 100644 src/main/UploadedContent/Spring-Boot-2.0.0.M7.a.RELEASE/09-spring-boot-security/directory-web-security/.mvn/wrapper/maven-wrapper.properties create mode 100644 src/main/UploadedContent/Spring-Boot-2.0.0.M7.a.RELEASE/09-spring-boot-security/directory-web-security/build.gradle create mode 100644 src/main/UploadedContent/Spring-Boot-2.0.0.M7.a.RELEASE/09-spring-boot-security/directory-web-security/gradle/wrapper/gradle-wrapper.properties create mode 100644 src/main/UploadedContent/Spring-Boot-2.0.0.M7.a.RELEASE/09-spring-boot-security/directory-web-security/gradlew create mode 100644 src/main/UploadedContent/Spring-Boot-2.0.0.M7.a.RELEASE/09-spring-boot-security/directory-web-security/gradlew.bat create mode 100644 src/main/UploadedContent/Spring-Boot-2.0.0.M7.a.RELEASE/09-spring-boot-security/directory-web-security/pom.xml create mode 100644 src/main/UploadedContent/Spring-Boot-2.0.0.M7.a.RELEASE/09-spring-boot-security/directory-web-security/src/main/java/io/pivotal/workshop/directory/DirectoryWebSecurityApplication.java create mode 100644 src/main/UploadedContent/Spring-Boot-2.0.0.M7.a.RELEASE/09-spring-boot-security/directory-web-security/src/main/java/io/pivotal/workshop/directory/config/DirectoryConfig.java create mode 100644 src/main/UploadedContent/Spring-Boot-2.0.0.M7.a.RELEASE/09-spring-boot-security/directory-web-security/src/main/java/io/pivotal/workshop/directory/config/DirectorySecurityConfig.java create mode 100644 src/main/UploadedContent/Spring-Boot-2.0.0.M7.a.RELEASE/09-spring-boot-security/directory-web-security/src/main/java/io/pivotal/workshop/directory/config/PersonRepositoryConfig.java create mode 100644 src/main/UploadedContent/Spring-Boot-2.0.0.M7.a.RELEASE/09-spring-boot-security/directory-web-security/src/main/java/io/pivotal/workshop/directory/domain/Person.java create mode 100644 src/main/UploadedContent/Spring-Boot-2.0.0.M7.a.RELEASE/09-spring-boot-security/directory-web-security/src/main/java/io/pivotal/workshop/directory/repository/PersonRepository.java create mode 100644 src/main/UploadedContent/Spring-Boot-2.0.0.M7.a.RELEASE/09-spring-boot-security/directory-web-security/src/main/java/io/pivotal/workshop/directory/security/DirectoryUserDetailsService.java create mode 100644 src/main/UploadedContent/Spring-Boot-2.0.0.M7.a.RELEASE/09-spring-boot-security/directory-web-security/src/main/resources/application.properties create mode 100644 src/main/UploadedContent/Spring-Boot-2.0.0.M7.a.RELEASE/09-spring-boot-security/directory-web-security/src/main/resources/banner.txt create mode 100644 src/main/UploadedContent/Spring-Boot-2.0.0.M7.a.RELEASE/09-spring-boot-security/directory-web-security/src/main/resources/keystore.jks create mode 100644 src/main/UploadedContent/Spring-Boot-2.0.0.M7.a.RELEASE/09-spring-boot-security/directory-web-security/src/main/resources/static/css/offcanvas.css create mode 100644 src/main/UploadedContent/Spring-Boot-2.0.0.M7.a.RELEASE/09-spring-boot-security/directory-web-security/src/main/resources/static/css/theme.css create mode 100644 src/main/UploadedContent/Spring-Boot-2.0.0.M7.a.RELEASE/09-spring-boot-security/directory-web-security/src/main/resources/static/js/syntaxhighlighter.js create mode 100644 src/main/UploadedContent/Spring-Boot-2.0.0.M7.a.RELEASE/09-spring-boot-security/directory-web-security/src/main/resources/templates/layouts/main.tpl create mode 100644 src/main/UploadedContent/Spring-Boot-2.0.0.M7.a.RELEASE/09-spring-boot-security/directory-web-security/src/main/resources/templates/views/home.tpl create mode 100644 src/main/UploadedContent/Spring-Boot-2.0.0.M7.a.RELEASE/09-spring-boot-security/directory-web-security/src/test/java/io/pivotal/workshop/directory/DirectoryWebSecurityApplicationTests.java create mode 100644 src/main/UploadedContent/Spring-Boot-2.0.0.M7.a.RELEASE/10-spring-boot-messaging/code-snippet-manager-amqp/.mvn/wrapper/maven-wrapper.properties create mode 100644 src/main/UploadedContent/Spring-Boot-2.0.0.M7.a.RELEASE/10-spring-boot-messaging/code-snippet-manager-amqp/build.gradle create mode 100644 src/main/UploadedContent/Spring-Boot-2.0.0.M7.a.RELEASE/10-spring-boot-messaging/code-snippet-manager-amqp/code/cs-code.txt create mode 100644 src/main/UploadedContent/Spring-Boot-2.0.0.M7.a.RELEASE/10-spring-boot-messaging/code-snippet-manager-amqp/code/erl-code.txt create mode 100644 src/main/UploadedContent/Spring-Boot-2.0.0.M7.a.RELEASE/10-spring-boot-messaging/code-snippet-manager-amqp/code/html-code.txt create mode 100644 src/main/UploadedContent/Spring-Boot-2.0.0.M7.a.RELEASE/10-spring-boot-messaging/code-snippet-manager-amqp/code/js-code.txt create mode 100644 src/main/UploadedContent/Spring-Boot-2.0.0.M7.a.RELEASE/10-spring-boot-messaging/code-snippet-manager-amqp/code/pas-code.txt create mode 100644 src/main/UploadedContent/Spring-Boot-2.0.0.M7.a.RELEASE/10-spring-boot-messaging/code-snippet-manager-amqp/gradle/wrapper/gradle-wrapper.properties create mode 100644 src/main/UploadedContent/Spring-Boot-2.0.0.M7.a.RELEASE/10-spring-boot-messaging/code-snippet-manager-amqp/gradlew create mode 100644 src/main/UploadedContent/Spring-Boot-2.0.0.M7.a.RELEASE/10-spring-boot-messaging/code-snippet-manager-amqp/gradlew.bat create mode 100644 src/main/UploadedContent/Spring-Boot-2.0.0.M7.a.RELEASE/10-spring-boot-messaging/code-snippet-manager-amqp/pom.xml create mode 100644 src/main/UploadedContent/Spring-Boot-2.0.0.M7.a.RELEASE/10-spring-boot-messaging/code-snippet-manager-amqp/src/main/java/io/pivotal/workshop/snippet/CodeSnippetManagerAmqpApplication.java create mode 100644 src/main/UploadedContent/Spring-Boot-2.0.0.M7.a.RELEASE/10-spring-boot-messaging/code-snippet-manager-amqp/src/main/java/io/pivotal/workshop/snippet/actuator/SnippetHealthCheck.java create mode 100644 src/main/UploadedContent/Spring-Boot-2.0.0.M7.a.RELEASE/10-spring-boot-messaging/code-snippet-manager-amqp/src/main/java/io/pivotal/workshop/snippet/amqp/SnippetAmqpListener.java create mode 100644 src/main/UploadedContent/Spring-Boot-2.0.0.M7.a.RELEASE/10-spring-boot-messaging/code-snippet-manager-amqp/src/main/java/io/pivotal/workshop/snippet/aop/SnippetAmqpNotification.java create mode 100644 src/main/UploadedContent/Spring-Boot-2.0.0.M7.a.RELEASE/10-spring-boot-messaging/code-snippet-manager-amqp/src/main/java/io/pivotal/workshop/snippet/config/SnippetAmqpConfig.java create mode 100644 src/main/UploadedContent/Spring-Boot-2.0.0.M7.a.RELEASE/10-spring-boot-messaging/code-snippet-manager-amqp/src/main/java/io/pivotal/workshop/snippet/config/SnippetConfiguration.java create mode 100644 src/main/UploadedContent/Spring-Boot-2.0.0.M7.a.RELEASE/10-spring-boot-messaging/code-snippet-manager-amqp/src/main/java/io/pivotal/workshop/snippet/config/SnippetProperties.java create mode 100644 src/main/UploadedContent/Spring-Boot-2.0.0.M7.a.RELEASE/10-spring-boot-messaging/code-snippet-manager-amqp/src/main/java/io/pivotal/workshop/snippet/controller/SnippetController.java create mode 100644 src/main/UploadedContent/Spring-Boot-2.0.0.M7.a.RELEASE/10-spring-boot-messaging/code-snippet-manager-amqp/src/main/java/io/pivotal/workshop/snippet/domain/Code.java create mode 100644 src/main/UploadedContent/Spring-Boot-2.0.0.M7.a.RELEASE/10-spring-boot-messaging/code-snippet-manager-amqp/src/main/java/io/pivotal/workshop/snippet/domain/Language.java create mode 100644 src/main/UploadedContent/Spring-Boot-2.0.0.M7.a.RELEASE/10-spring-boot-messaging/code-snippet-manager-amqp/src/main/java/io/pivotal/workshop/snippet/domain/Snippet.java create mode 100644 src/main/UploadedContent/Spring-Boot-2.0.0.M7.a.RELEASE/10-spring-boot-messaging/code-snippet-manager-amqp/src/main/java/io/pivotal/workshop/snippet/domain/SnippetError.java create mode 100644 src/main/UploadedContent/Spring-Boot-2.0.0.M7.a.RELEASE/10-spring-boot-messaging/code-snippet-manager-amqp/src/main/java/io/pivotal/workshop/snippet/domain/SnippetNotification.java create mode 100644 src/main/UploadedContent/Spring-Boot-2.0.0.M7.a.RELEASE/10-spring-boot-messaging/code-snippet-manager-amqp/src/main/java/io/pivotal/workshop/snippet/repository/CodeRepository.java create mode 100644 src/main/UploadedContent/Spring-Boot-2.0.0.M7.a.RELEASE/10-spring-boot-messaging/code-snippet-manager-amqp/src/main/java/io/pivotal/workshop/snippet/repository/LanguageRepository.java create mode 100644 src/main/UploadedContent/Spring-Boot-2.0.0.M7.a.RELEASE/10-spring-boot-messaging/code-snippet-manager-amqp/src/main/java/io/pivotal/workshop/snippet/repository/SnippetRepository.java create mode 100644 src/main/UploadedContent/Spring-Boot-2.0.0.M7.a.RELEASE/10-spring-boot-messaging/code-snippet-manager-amqp/src/main/resources/META-INF/additional-spring-configuration-metadata.json create mode 100644 src/main/UploadedContent/Spring-Boot-2.0.0.M7.a.RELEASE/10-spring-boot-messaging/code-snippet-manager-amqp/src/main/resources/application.properties create mode 100644 src/main/UploadedContent/Spring-Boot-2.0.0.M7.a.RELEASE/10-spring-boot-messaging/code-snippet-manager-amqp/src/main/resources/static/css/offcanvas.css create mode 100644 src/main/UploadedContent/Spring-Boot-2.0.0.M7.a.RELEASE/10-spring-boot-messaging/code-snippet-manager-amqp/src/main/resources/static/css/theme.css create mode 100644 src/main/UploadedContent/Spring-Boot-2.0.0.M7.a.RELEASE/10-spring-boot-messaging/code-snippet-manager-amqp/src/main/resources/static/js/syntaxhighlighter.js create mode 100644 src/main/UploadedContent/Spring-Boot-2.0.0.M7.a.RELEASE/10-spring-boot-messaging/code-snippet-manager-amqp/src/main/resources/templates/layouts/main.tpl create mode 100644 src/main/UploadedContent/Spring-Boot-2.0.0.M7.a.RELEASE/10-spring-boot-messaging/code-snippet-manager-amqp/src/main/resources/templates/views/home.tpl create mode 100644 src/main/UploadedContent/Spring-Boot-2.0.0.M7.a.RELEASE/10-spring-boot-messaging/code-snippet-manager-amqp/src/test/java/io/pivotal/workshop/snippet/CodeSnippetManagerAmqpApplicationTests.java create mode 100644 src/main/UploadedContent/Spring-Boot-2.0.0.M7.a.RELEASE/10-spring-boot-messaging/snippet-amqp-client/.mvn/wrapper/maven-wrapper.properties create mode 100644 src/main/UploadedContent/Spring-Boot-2.0.0.M7.a.RELEASE/10-spring-boot-messaging/snippet-amqp-client/build.gradle create mode 100644 src/main/UploadedContent/Spring-Boot-2.0.0.M7.a.RELEASE/10-spring-boot-messaging/snippet-amqp-client/code/Hello.kt create mode 100644 src/main/UploadedContent/Spring-Boot-2.0.0.M7.a.RELEASE/10-spring-boot-messaging/snippet-amqp-client/gradle/wrapper/gradle-wrapper.properties create mode 100644 src/main/UploadedContent/Spring-Boot-2.0.0.M7.a.RELEASE/10-spring-boot-messaging/snippet-amqp-client/gradlew create mode 100644 src/main/UploadedContent/Spring-Boot-2.0.0.M7.a.RELEASE/10-spring-boot-messaging/snippet-amqp-client/gradlew.bat create mode 100644 src/main/UploadedContent/Spring-Boot-2.0.0.M7.a.RELEASE/10-spring-boot-messaging/snippet-amqp-client/pom.xml create mode 100644 src/main/UploadedContent/Spring-Boot-2.0.0.M7.a.RELEASE/10-spring-boot-messaging/snippet-amqp-client/src/main/java/io/pivotal/workshop/snippet/client/SnippetAmqpClientApplication.java create mode 100644 src/main/UploadedContent/Spring-Boot-2.0.0.M7.a.RELEASE/10-spring-boot-messaging/snippet-amqp-client/src/main/java/io/pivotal/workshop/snippet/client/amqp/SnippetNotificationListener.java create mode 100644 src/main/UploadedContent/Spring-Boot-2.0.0.M7.a.RELEASE/10-spring-boot-messaging/snippet-amqp-client/src/main/java/io/pivotal/workshop/snippet/client/amqp/SnippetProducer.java create mode 100644 src/main/UploadedContent/Spring-Boot-2.0.0.M7.a.RELEASE/10-spring-boot-messaging/snippet-amqp-client/src/main/java/io/pivotal/workshop/snippet/client/config/SnippetClientAmqpConfig.java create mode 100644 src/main/UploadedContent/Spring-Boot-2.0.0.M7.a.RELEASE/10-spring-boot-messaging/snippet-amqp-client/src/main/java/io/pivotal/workshop/snippet/client/config/SnippetClientConfig.java create mode 100644 src/main/UploadedContent/Spring-Boot-2.0.0.M7.a.RELEASE/10-spring-boot-messaging/snippet-amqp-client/src/main/java/io/pivotal/workshop/snippet/client/domain/Code.java create mode 100644 src/main/UploadedContent/Spring-Boot-2.0.0.M7.a.RELEASE/10-spring-boot-messaging/snippet-amqp-client/src/main/java/io/pivotal/workshop/snippet/client/domain/Language.java create mode 100644 src/main/UploadedContent/Spring-Boot-2.0.0.M7.a.RELEASE/10-spring-boot-messaging/snippet-amqp-client/src/main/java/io/pivotal/workshop/snippet/client/domain/Snippet.java create mode 100644 src/main/UploadedContent/Spring-Boot-2.0.0.M7.a.RELEASE/10-spring-boot-messaging/snippet-amqp-client/src/main/java/io/pivotal/workshop/snippet/client/domain/SnippetError.java create mode 100644 src/main/UploadedContent/Spring-Boot-2.0.0.M7.a.RELEASE/10-spring-boot-messaging/snippet-amqp-client/src/main/java/io/pivotal/workshop/snippet/client/domain/SnippetNotification.java create mode 100644 src/main/UploadedContent/Spring-Boot-2.0.0.M7.a.RELEASE/10-spring-boot-messaging/snippet-amqp-client/src/main/resources/application.properties create mode 100644 src/main/UploadedContent/Spring-Boot-2.0.0.M7.a.RELEASE/10-spring-boot-messaging/snippet-amqp-client/src/test/java/io/pivotal/workshop/snippet/SnippetAmqpClientApplicationTests.java create mode 100644 src/main/UploadedContent/Spring-Boot-2.0.0.M7.a.RELEASE/11-spring-boot-webflux/code-snippet-manager-flux/.mvn/wrapper/maven-wrapper.properties create mode 100644 src/main/UploadedContent/Spring-Boot-2.0.0.M7.a.RELEASE/11-spring-boot-webflux/code-snippet-manager-flux/build.gradle create mode 100644 src/main/UploadedContent/Spring-Boot-2.0.0.M7.a.RELEASE/11-spring-boot-webflux/code-snippet-manager-flux/code/cs-code.txt create mode 100644 src/main/UploadedContent/Spring-Boot-2.0.0.M7.a.RELEASE/11-spring-boot-webflux/code-snippet-manager-flux/code/erl-code.txt create mode 100644 src/main/UploadedContent/Spring-Boot-2.0.0.M7.a.RELEASE/11-spring-boot-webflux/code-snippet-manager-flux/code/html-code.txt create mode 100644 src/main/UploadedContent/Spring-Boot-2.0.0.M7.a.RELEASE/11-spring-boot-webflux/code-snippet-manager-flux/code/js-code.txt create mode 100644 src/main/UploadedContent/Spring-Boot-2.0.0.M7.a.RELEASE/11-spring-boot-webflux/code-snippet-manager-flux/code/pas-code.txt create mode 100644 src/main/UploadedContent/Spring-Boot-2.0.0.M7.a.RELEASE/11-spring-boot-webflux/code-snippet-manager-flux/gradle/wrapper/gradle-wrapper.properties create mode 100644 src/main/UploadedContent/Spring-Boot-2.0.0.M7.a.RELEASE/11-spring-boot-webflux/code-snippet-manager-flux/gradlew create mode 100644 src/main/UploadedContent/Spring-Boot-2.0.0.M7.a.RELEASE/11-spring-boot-webflux/code-snippet-manager-flux/gradlew.bat create mode 100644 src/main/UploadedContent/Spring-Boot-2.0.0.M7.a.RELEASE/11-spring-boot-webflux/code-snippet-manager-flux/pom.xml create mode 100644 src/main/UploadedContent/Spring-Boot-2.0.0.M7.a.RELEASE/11-spring-boot-webflux/code-snippet-manager-flux/src/main/java/io/pivotal/workshop/snippet/CodeSnippetManagerFluxApplication.java create mode 100644 src/main/UploadedContent/Spring-Boot-2.0.0.M7.a.RELEASE/11-spring-boot-webflux/code-snippet-manager-flux/src/main/java/io/pivotal/workshop/snippet/config/SnippetConfiguration.java create mode 100644 src/main/UploadedContent/Spring-Boot-2.0.0.M7.a.RELEASE/11-spring-boot-webflux/code-snippet-manager-flux/src/main/java/io/pivotal/workshop/snippet/config/SnippetReactiveConfig.java create mode 100644 src/main/UploadedContent/Spring-Boot-2.0.0.M7.a.RELEASE/11-spring-boot-webflux/code-snippet-manager-flux/src/main/java/io/pivotal/workshop/snippet/domain/Language.java create mode 100644 src/main/UploadedContent/Spring-Boot-2.0.0.M7.a.RELEASE/11-spring-boot-webflux/code-snippet-manager-flux/src/main/java/io/pivotal/workshop/snippet/domain/Snippet.java create mode 100644 src/main/UploadedContent/Spring-Boot-2.0.0.M7.a.RELEASE/11-spring-boot-webflux/code-snippet-manager-flux/src/main/java/io/pivotal/workshop/snippet/reactive/SnippetController.java create mode 100644 src/main/UploadedContent/Spring-Boot-2.0.0.M7.a.RELEASE/11-spring-boot-webflux/code-snippet-manager-flux/src/main/java/io/pivotal/workshop/snippet/reactive/SnippetHandler.java create mode 100644 src/main/UploadedContent/Spring-Boot-2.0.0.M7.a.RELEASE/11-spring-boot-webflux/code-snippet-manager-flux/src/main/java/io/pivotal/workshop/snippet/repository/LanguageRepository.java create mode 100644 src/main/UploadedContent/Spring-Boot-2.0.0.M7.a.RELEASE/11-spring-boot-webflux/code-snippet-manager-flux/src/main/java/io/pivotal/workshop/snippet/repository/SnippetRepository.java create mode 100644 src/main/UploadedContent/Spring-Boot-2.0.0.M7.a.RELEASE/11-spring-boot-webflux/code-snippet-manager-flux/src/main/resources/application.properties create mode 100644 src/main/UploadedContent/Spring-Boot-2.0.0.M7.a.RELEASE/11-spring-boot-webflux/code-snippet-manager-flux/src/test/java/io/pivotal/workshop/snippet/CodeSnippetManagerFluxApplicationTests.java create mode 100644 src/main/UploadedContent/Spring-Boot-2.0.0.M7.a.RELEASE/12-spring-boot-cloud-stream/code-snippet-manager-stream-log/.mvn/wrapper/maven-wrapper.properties create mode 100644 src/main/UploadedContent/Spring-Boot-2.0.0.M7.a.RELEASE/12-spring-boot-cloud-stream/code-snippet-manager-stream-log/build.gradle create mode 100644 src/main/UploadedContent/Spring-Boot-2.0.0.M7.a.RELEASE/12-spring-boot-cloud-stream/code-snippet-manager-stream-log/gradle/wrapper/gradle-wrapper.properties create mode 100644 src/main/UploadedContent/Spring-Boot-2.0.0.M7.a.RELEASE/12-spring-boot-cloud-stream/code-snippet-manager-stream-log/gradlew create mode 100644 src/main/UploadedContent/Spring-Boot-2.0.0.M7.a.RELEASE/12-spring-boot-cloud-stream/code-snippet-manager-stream-log/gradlew.bat create mode 100644 src/main/UploadedContent/Spring-Boot-2.0.0.M7.a.RELEASE/12-spring-boot-cloud-stream/code-snippet-manager-stream-log/pom.xml create mode 100644 src/main/UploadedContent/Spring-Boot-2.0.0.M7.a.RELEASE/12-spring-boot-cloud-stream/code-snippet-manager-stream-log/src/main/java/io/pivotal/workshop/snippet/CodeSnippetManagerStreamLogApplication.java create mode 100644 src/main/UploadedContent/Spring-Boot-2.0.0.M7.a.RELEASE/12-spring-boot-cloud-stream/code-snippet-manager-stream-log/src/main/java/io/pivotal/workshop/snippet/domain/Language.java create mode 100644 src/main/UploadedContent/Spring-Boot-2.0.0.M7.a.RELEASE/12-spring-boot-cloud-stream/code-snippet-manager-stream-log/src/main/java/io/pivotal/workshop/snippet/domain/Snippet.java create mode 100644 src/main/UploadedContent/Spring-Boot-2.0.0.M7.a.RELEASE/12-spring-boot-cloud-stream/code-snippet-manager-stream-log/src/main/java/io/pivotal/workshop/snippet/stream/SnippetLogger.java create mode 100644 src/main/UploadedContent/Spring-Boot-2.0.0.M7.a.RELEASE/12-spring-boot-cloud-stream/code-snippet-manager-stream-log/src/main/resources/application.properties create mode 100644 src/main/UploadedContent/Spring-Boot-2.0.0.M7.a.RELEASE/12-spring-boot-cloud-stream/code-snippet-manager-stream-log/src/test/java/io/pivotal/workshop/snippet/CodeSnippetManagerStreamLogApplicationTests.java create mode 100644 src/main/UploadedContent/Spring-Boot-2.0.0.M7.a.RELEASE/12-spring-boot-cloud-stream/code-snippet-manager-stream/.mvn/wrapper/maven-wrapper.properties create mode 100644 src/main/UploadedContent/Spring-Boot-2.0.0.M7.a.RELEASE/12-spring-boot-cloud-stream/code-snippet-manager-stream/build.gradle create mode 100644 src/main/UploadedContent/Spring-Boot-2.0.0.M7.a.RELEASE/12-spring-boot-cloud-stream/code-snippet-manager-stream/code/hello-world-erl.code create mode 100644 src/main/UploadedContent/Spring-Boot-2.0.0.M7.a.RELEASE/12-spring-boot-cloud-stream/code-snippet-manager-stream/code/hello-world-javascript.code create mode 100644 src/main/UploadedContent/Spring-Boot-2.0.0.M7.a.RELEASE/12-spring-boot-cloud-stream/code-snippet-manager-stream/gradle/wrapper/gradle-wrapper.properties create mode 100644 src/main/UploadedContent/Spring-Boot-2.0.0.M7.a.RELEASE/12-spring-boot-cloud-stream/code-snippet-manager-stream/gradlew create mode 100644 src/main/UploadedContent/Spring-Boot-2.0.0.M7.a.RELEASE/12-spring-boot-cloud-stream/code-snippet-manager-stream/gradlew.bat create mode 100644 src/main/UploadedContent/Spring-Boot-2.0.0.M7.a.RELEASE/12-spring-boot-cloud-stream/code-snippet-manager-stream/pom.xml create mode 100644 src/main/UploadedContent/Spring-Boot-2.0.0.M7.a.RELEASE/12-spring-boot-cloud-stream/code-snippet-manager-stream/src/main/java/io/pivotal/workshop/snippet/CodeSnippetManagerStreamApplication.java create mode 100644 src/main/UploadedContent/Spring-Boot-2.0.0.M7.a.RELEASE/12-spring-boot-cloud-stream/code-snippet-manager-stream/src/main/java/io/pivotal/workshop/snippet/config/SnippetConfiguration.java create mode 100644 src/main/UploadedContent/Spring-Boot-2.0.0.M7.a.RELEASE/12-spring-boot-cloud-stream/code-snippet-manager-stream/src/main/java/io/pivotal/workshop/snippet/config/SnippetProperties.java create mode 100644 src/main/UploadedContent/Spring-Boot-2.0.0.M7.a.RELEASE/12-spring-boot-cloud-stream/code-snippet-manager-stream/src/main/java/io/pivotal/workshop/snippet/config/SnippetReactiveConfig.java create mode 100644 src/main/UploadedContent/Spring-Boot-2.0.0.M7.a.RELEASE/12-spring-boot-cloud-stream/code-snippet-manager-stream/src/main/java/io/pivotal/workshop/snippet/domain/Language.java create mode 100644 src/main/UploadedContent/Spring-Boot-2.0.0.M7.a.RELEASE/12-spring-boot-cloud-stream/code-snippet-manager-stream/src/main/java/io/pivotal/workshop/snippet/domain/Snippet.java create mode 100644 src/main/UploadedContent/Spring-Boot-2.0.0.M7.a.RELEASE/12-spring-boot-cloud-stream/code-snippet-manager-stream/src/main/java/io/pivotal/workshop/snippet/integration/SnippetTransformer.java create mode 100644 src/main/UploadedContent/Spring-Boot-2.0.0.M7.a.RELEASE/12-spring-boot-cloud-stream/code-snippet-manager-stream/src/main/java/io/pivotal/workshop/snippet/reactive/SnippetController.java create mode 100644 src/main/UploadedContent/Spring-Boot-2.0.0.M7.a.RELEASE/12-spring-boot-cloud-stream/code-snippet-manager-stream/src/main/java/io/pivotal/workshop/snippet/reactive/SnippetHandler.java create mode 100644 src/main/UploadedContent/Spring-Boot-2.0.0.M7.a.RELEASE/12-spring-boot-cloud-stream/code-snippet-manager-stream/src/main/java/io/pivotal/workshop/snippet/repository/LanguageRepository.java create mode 100644 src/main/UploadedContent/Spring-Boot-2.0.0.M7.a.RELEASE/12-spring-boot-cloud-stream/code-snippet-manager-stream/src/main/java/io/pivotal/workshop/snippet/repository/SnippetRepository.java create mode 100644 src/main/UploadedContent/Spring-Boot-2.0.0.M7.a.RELEASE/12-spring-boot-cloud-stream/code-snippet-manager-stream/src/main/java/io/pivotal/workshop/snippet/service/SnippetService.java create mode 100644 src/main/UploadedContent/Spring-Boot-2.0.0.M7.a.RELEASE/12-spring-boot-cloud-stream/code-snippet-manager-stream/src/main/java/io/pivotal/workshop/snippet/stream/SnippetFileSystemIntegration.java create mode 100644 src/main/UploadedContent/Spring-Boot-2.0.0.M7.a.RELEASE/12-spring-boot-cloud-stream/code-snippet-manager-stream/src/main/resources/META-INF/additional-spring-configuration-metadata.json create mode 100644 src/main/UploadedContent/Spring-Boot-2.0.0.M7.a.RELEASE/12-spring-boot-cloud-stream/code-snippet-manager-stream/src/main/resources/application.properties create mode 100644 src/main/UploadedContent/Spring-Boot-2.0.0.M7.a.RELEASE/12-spring-boot-cloud-stream/code-snippet-manager-stream/src/test/java/io/pivotal/workshop/snippet/CodeSnippetManagerStreamApplicationTests.java create mode 100644 src/main/UploadedContent/Spring-Boot-2.0.0.M7.a.RELEASE/14-spring-boot-extending/demo-starter/.mvn/wrapper/maven-wrapper.properties create mode 100644 src/main/UploadedContent/Spring-Boot-2.0.0.M7.a.RELEASE/14-spring-boot-extending/demo-starter/pom.xml create mode 100644 src/main/UploadedContent/Spring-Boot-2.0.0.M7.a.RELEASE/14-spring-boot-extending/demo-starter/src/main/java/io/pivotal/workshop/DemoStarterApplication.java create mode 100644 src/main/UploadedContent/Spring-Boot-2.0.0.M7.a.RELEASE/14-spring-boot-extending/demo-starter/src/main/resources/application.properties create mode 100644 src/main/UploadedContent/Spring-Boot-2.0.0.M7.a.RELEASE/14-spring-boot-extending/demo-starter/src/test/java/io/pivotal/workshop/DemoStarterApplicationTests.java create mode 100644 src/main/UploadedContent/Spring-Boot-2.0.0.M7.a.RELEASE/14-spring-boot-extending/directory-web-client-spring-boot-autoconfigure/.mvn/wrapper/maven-wrapper.properties create mode 100644 src/main/UploadedContent/Spring-Boot-2.0.0.M7.a.RELEASE/14-spring-boot-extending/directory-web-client-spring-boot-autoconfigure/pom.xml create mode 100644 src/main/UploadedContent/Spring-Boot-2.0.0.M7.a.RELEASE/14-spring-boot-extending/directory-web-client-spring-boot-autoconfigure/src/main/java/io/pivotal/workshop/directory/annotation/Algorithm.java create mode 100644 src/main/UploadedContent/Spring-Boot-2.0.0.M7.a.RELEASE/14-spring-boot-extending/directory-web-client-spring-boot-autoconfigure/src/main/java/io/pivotal/workshop/directory/annotation/EnableDirectoryWebClientUtils.java create mode 100644 src/main/UploadedContent/Spring-Boot-2.0.0.M7.a.RELEASE/14-spring-boot-extending/directory-web-client-spring-boot-autoconfigure/src/main/java/io/pivotal/workshop/directory/client/DirectoryWebClient.java create mode 100644 src/main/UploadedContent/Spring-Boot-2.0.0.M7.a.RELEASE/14-spring-boot-extending/directory-web-client-spring-boot-autoconfigure/src/main/java/io/pivotal/workshop/directory/configuration/DirectoryWebClientAutoConfiguration.java create mode 100644 src/main/UploadedContent/Spring-Boot-2.0.0.M7.a.RELEASE/14-spring-boot-extending/directory-web-client-spring-boot-autoconfigure/src/main/java/io/pivotal/workshop/directory/configuration/DirectoryWebClientProperties.java create mode 100644 src/main/UploadedContent/Spring-Boot-2.0.0.M7.a.RELEASE/14-spring-boot-extending/directory-web-client-spring-boot-autoconfigure/src/main/java/io/pivotal/workshop/directory/domain/Directory.java create mode 100644 src/main/UploadedContent/Spring-Boot-2.0.0.M7.a.RELEASE/14-spring-boot-extending/directory-web-client-spring-boot-autoconfigure/src/main/java/io/pivotal/workshop/directory/domain/Person.java create mode 100644 src/main/UploadedContent/Spring-Boot-2.0.0.M7.a.RELEASE/14-spring-boot-extending/directory-web-client-spring-boot-autoconfigure/src/main/java/io/pivotal/workshop/directory/utils/BCryptEncoder.java create mode 100644 src/main/UploadedContent/Spring-Boot-2.0.0.M7.a.RELEASE/14-spring-boot-extending/directory-web-client-spring-boot-autoconfigure/src/main/java/io/pivotal/workshop/directory/utils/DirectoryWebClientUtils.java create mode 100644 src/main/UploadedContent/Spring-Boot-2.0.0.M7.a.RELEASE/14-spring-boot-extending/directory-web-client-spring-boot-autoconfigure/src/main/java/io/pivotal/workshop/directory/utils/DirectoryWebClientUtilsConfiguration.java create mode 100644 src/main/UploadedContent/Spring-Boot-2.0.0.M7.a.RELEASE/14-spring-boot-extending/directory-web-client-spring-boot-autoconfigure/src/main/java/io/pivotal/workshop/directory/utils/Pbkdf2Encoder.java create mode 100644 src/main/UploadedContent/Spring-Boot-2.0.0.M7.a.RELEASE/14-spring-boot-extending/directory-web-client-spring-boot-autoconfigure/src/main/resources/META-INF/additional-spring-configuration-metadata.json create mode 100644 src/main/UploadedContent/Spring-Boot-2.0.0.M7.a.RELEASE/14-spring-boot-extending/directory-web-client-spring-boot-autoconfigure/src/main/resources/META-INF/spring.factories create mode 100644 src/main/UploadedContent/Spring-Boot-2.0.0.M7.a.RELEASE/14-spring-boot-extending/directory-web-client-spring-boot-autoconfigure/src/main/resources/application.properties create mode 100644 src/main/UploadedContent/Spring-Boot-2.0.0.M7.a.RELEASE/14-spring-boot-extending/directory-web-client-spring-boot-autoconfigure/src/test/java/io/pivotal/workshop/directory/DirectoryWebSpringBootAutoConfigureApplicationTests.java create mode 100644 src/main/UploadedContent/Spring-Boot-2.0.0.M7.a.RELEASE/14-spring-boot-extending/directory-web-client-spring-boot-starter/pom.xml create mode 100644 src/main/UploadedContent/Spring-Boot-2.0.0.M7.a.RELEASE/14-spring-boot-extending/pom.xml create mode 100644 src/main/UploadedContent/Spring-Boot-2.0.0.M7.a.RELEASE/workingsets.properties create mode 100644 src/main/UploadedContent/student-handout.pdf create mode 100644 src/main/UploadedContent/student-lab-instructions/01-spring-framework.html create mode 100644 src/main/UploadedContent/student-lab-instructions/02-spring-boot-overview.html create mode 100644 src/main/UploadedContent/student-lab-instructions/03-spring-boot-internals.html create mode 100644 src/main/UploadedContent/student-lab-instructions/04-spring-boot-features.html create mode 100644 src/main/UploadedContent/student-lab-instructions/05-spring-boot-web.html create mode 100644 src/main/UploadedContent/student-lab-instructions/06-spring-boot-data.html create mode 100644 src/main/UploadedContent/student-lab-instructions/07-spring-boot-testing.html create mode 100644 src/main/UploadedContent/student-lab-instructions/08-spring-boot-actuator.html create mode 100644 src/main/UploadedContent/student-lab-instructions/09-spring-boot-security.html create mode 100644 src/main/UploadedContent/student-lab-instructions/10-spring-boot-messaging.html create mode 100644 src/main/UploadedContent/student-lab-instructions/11-spring-boot-webflux.html create mode 100644 src/main/UploadedContent/student-lab-instructions/12-spring-boot-cloud-stream.html create mode 100644 src/main/UploadedContent/student-lab-instructions/13-spring-boot-microservices.html create mode 100644 src/main/UploadedContent/student-lab-instructions/14-spring-boot-extending.html create mode 100644 src/main/UploadedContent/student-lab-instructions/artifacts/spring-boot-security/home.html create mode 100644 src/main/UploadedContent/student-lab-instructions/artifacts/spring-boot-security/main.html create mode 100644 src/main/UploadedContent/student-lab-instructions/artifacts/spring-boot-security/offcanvas.html create mode 100644 src/main/UploadedContent/student-lab-instructions/artifacts/spring-boot-security/theme.html create mode 100644 src/main/UploadedContent/student-lab-instructions/artifacts/spring-boot-web/offcanvas.html create mode 100644 src/main/UploadedContent/student-lab-instructions/artifacts/spring-boot-web/syntaxhighlighter.html create mode 100644 src/main/UploadedContent/student-lab-instructions/artifacts/spring-boot-web/theme.html create mode 100644 src/main/UploadedContent/student-lab-instructions/images/02-spring-boot-01.png create mode 100644 src/main/UploadedContent/student-lab-instructions/images/03-spring-boot-internals-01.png create mode 100644 src/main/UploadedContent/student-lab-instructions/images/03-spring-boot-internals-02.png create mode 100644 src/main/UploadedContent/student-lab-instructions/images/04-spring-boot-features-01.png create mode 100644 src/main/UploadedContent/student-lab-instructions/images/05-spring-boot-web-01.png create mode 100644 src/main/UploadedContent/student-lab-instructions/images/05-spring-boot-web-02.png create mode 100644 src/main/UploadedContent/student-lab-instructions/images/05-spring-boot-web-03.png create mode 100644 src/main/UploadedContent/student-lab-instructions/images/06-spring-boot-data-01.png create mode 100644 src/main/UploadedContent/student-lab-instructions/images/06-spring-boot-data-02.png create mode 100644 src/main/UploadedContent/student-lab-instructions/images/06-spring-boot-data-03.png create mode 100644 src/main/UploadedContent/student-lab-instructions/images/06-spring-boot-data-04.png create mode 100644 src/main/UploadedContent/student-lab-instructions/images/06-spring-boot-data-05.png create mode 100644 src/main/UploadedContent/student-lab-instructions/images/06-spring-boot-data-06.png create mode 100644 src/main/UploadedContent/student-lab-instructions/images/07-spring-boot-test-01.png create mode 100644 src/main/UploadedContent/student-lab-instructions/images/08-spring-boot-actuator-01.png create mode 100644 src/main/UploadedContent/student-lab-instructions/images/08-spring-boot-actuator-02.png create mode 100644 src/main/UploadedContent/student-lab-instructions/images/08-spring-boot-actuator-03.png create mode 100644 src/main/UploadedContent/student-lab-instructions/images/08-spring-boot-actuator-04.png create mode 100644 src/main/UploadedContent/student-lab-instructions/images/08-spring-boot-actuator-05.png create mode 100644 src/main/UploadedContent/student-lab-instructions/images/08-spring-boot-actuator-06.png create mode 100644 src/main/UploadedContent/student-lab-instructions/images/09-spring-boot-security-01.png create mode 100644 src/main/UploadedContent/student-lab-instructions/images/09-spring-boot-security-02.png create mode 100644 src/main/UploadedContent/student-lab-instructions/images/09-spring-boot-security-03.png create mode 100644 src/main/UploadedContent/student-lab-instructions/images/09-spring-boot-security-04.png create mode 100644 src/main/UploadedContent/student-lab-instructions/images/09-spring-boot-security-xx.png create mode 100644 src/main/UploadedContent/student-lab-instructions/images/10-spring-boot-messaging-00.png create mode 100644 src/main/UploadedContent/student-lab-instructions/images/10-spring-boot-messaging-01.png create mode 100644 src/main/UploadedContent/student-lab-instructions/images/10-spring-boot-messaging-02.png create mode 100644 src/main/UploadedContent/student-lab-instructions/images/11-spring-boot-webflux-01.png create mode 100644 src/main/UploadedContent/student-lab-instructions/images/11-spring-boot-webflux-02.png create mode 100644 src/main/UploadedContent/student-lab-instructions/images/11-spring-boot-webflux-03.png create mode 100644 src/main/UploadedContent/student-lab-instructions/images/12-spring-boot-cloud-stream-01.png create mode 100644 src/main/UploadedContent/student-lab-instructions/images/12-spring-boot-cloud-stream-02.png create mode 100644 src/main/UploadedContent/student-lab-instructions/images/14-spring-boot-extending-01.png create mode 100644 src/main/UploadedContent/student-lab-instructions/images/14-spring-boot-extending-02.png create mode 100644 src/main/UploadedContent/student-lab-instructions/index.html create mode 100644 src/main/UploadedContent/student-lab-instructions/js/jquery-3.2.1.min.js create mode 100644 src/main/UploadedContent/student-lab-instructions/using-docker.html diff --git a/src/main/UploadedContent/Spring-Boot-2.0.0.M7.a.RELEASE/01-spring-framework/simple-spring-webapp/build.gradle b/src/main/UploadedContent/Spring-Boot-2.0.0.M7.a.RELEASE/01-spring-framework/simple-spring-webapp/build.gradle new file mode 100644 index 0000000..a543cc9 --- /dev/null +++ b/src/main/UploadedContent/Spring-Boot-2.0.0.M7.a.RELEASE/01-spring-framework/simple-spring-webapp/build.gradle @@ -0,0 +1,31 @@ +apply plugin: 'java' +apply plugin: 'maven' + +group = 'io.pivotal.workshop' +version = '1.0-SNAPSHOT' + +description = """simple-spring-webapp Maven Webapp""" + +sourceCompatibility = 1.8 +targetCompatibility = 1.8 + + + +repositories { + + maven { url "http://repo.maven.apache.org/maven2" } +} +dependencies { + compile group: 'org.springframework', name: 'spring-webmvc', version:'5.0.1.RELEASE' + compile group: 'org.springframework', name: 'spring-context', version:'5.0.1.RELEASE' + compile group: 'org.springframework', name: 'spring-aop', version:'5.0.1.RELEASE' + compile group: 'org.springframework', name: 'spring-web', version:'5.0.1.RELEASE' + + compile group: 'org.thymeleaf', name: 'thymeleaf', version:'3.0.9.RELEASE' + compile group: 'org.thymeleaf', name: 'thymeleaf-spring5', version:'3.0.9.RELEASE' + + compile group: 'org.slf4j', name: 'slf4j-api', version:'1.7.25' + compile group: 'ch.qos.logback', name: 'logback-classic', version:'1.2.3' + + providedCompile group: 'javax.servlet', name: 'servlet-api', version:'3.1.0' +} diff --git a/src/main/UploadedContent/Spring-Boot-2.0.0.M7.a.RELEASE/01-spring-framework/simple-spring-webapp/pom.xml b/src/main/UploadedContent/Spring-Boot-2.0.0.M7.a.RELEASE/01-spring-framework/simple-spring-webapp/pom.xml new file mode 100644 index 0000000..5416151 --- /dev/null +++ b/src/main/UploadedContent/Spring-Boot-2.0.0.M7.a.RELEASE/01-spring-framework/simple-spring-webapp/pom.xml @@ -0,0 +1,94 @@ + + 4.0.0 + io.pivotal.workshop + simple-spring-webapp + war + 1.0-SNAPSHOT + simple-spring-webapp Maven Webapp + http://maven.apache.org + + io.pivotal.education.boot + parentProject + 1.0.a.RELEASE + ../../ + + + + + 1.8 + + + 3.1.0 + + + 5.0.1.RELEASE + + + 3.0.9.RELEASE + + + 1.7.25 + 1.2.3 + + + + + + + org.springframework + spring-context + ${spring-framework.version} + + + org.springframework + spring-aop + ${spring-framework.version} + + + org.springframework + spring-webmvc + ${spring-framework.version} + + + org.springframework + spring-web + ${spring-framework.version} + + + + org.thymeleaf + thymeleaf + ${thymeleaf.version} + + + org.thymeleaf + thymeleaf-spring5 + ${thymeleaf.version} + + + + + org.slf4j + slf4j-api + ${slf4j.version} + + + ch.qos.logback + logback-classic + ${logback.version} + + + + + javax.servlet + javax.servlet-api + ${servlet.version} + provided + + + + + simple-spring-webapp + + diff --git a/src/main/UploadedContent/Spring-Boot-2.0.0.M7.a.RELEASE/01-spring-framework/simple-spring-webapp/settings.gradle b/src/main/UploadedContent/Spring-Boot-2.0.0.M7.a.RELEASE/01-spring-framework/simple-spring-webapp/settings.gradle new file mode 100644 index 0000000..2c26010 --- /dev/null +++ b/src/main/UploadedContent/Spring-Boot-2.0.0.M7.a.RELEASE/01-spring-framework/simple-spring-webapp/settings.gradle @@ -0,0 +1 @@ +rootProject.name = 'simple-spring-webapp' diff --git a/src/main/UploadedContent/Spring-Boot-2.0.0.M7.a.RELEASE/01-spring-framework/simple-spring-webapp/src/main/java/io/pivotal/workshop/web/SimpleController.java b/src/main/UploadedContent/Spring-Boot-2.0.0.M7.a.RELEASE/01-spring-framework/simple-spring-webapp/src/main/java/io/pivotal/workshop/web/SimpleController.java new file mode 100644 index 0000000..ca56838 --- /dev/null +++ b/src/main/UploadedContent/Spring-Boot-2.0.0.M7.a.RELEASE/01-spring-framework/simple-spring-webapp/src/main/java/io/pivotal/workshop/web/SimpleController.java @@ -0,0 +1,29 @@ +package io.pivotal.workshop.web; + +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; +import org.springframework.stereotype.Controller; +import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.RequestMethod; +import org.springframework.web.servlet.ModelAndView; + +@Controller +public class SimpleController{ + + Logger log = LoggerFactory.getLogger(SimpleController.class); + + @RequestMapping("/") + public ModelAndView index(){ + log.debug("About to redirect..."); + return new ModelAndView("redirect:/showMessage"); + } + + @RequestMapping(value="/showMessage",method = RequestMethod.GET) + public ModelAndView helloWorld(){ + final String message = "Simple Spring MVC Web App with Thymeleaf and Spring 5"; + log.debug("Showing the Message: " + message); + ModelAndView model = new ModelAndView("showMessage"); + model.addObject("message", message); + return model; + } +} \ No newline at end of file diff --git a/src/main/UploadedContent/Spring-Boot-2.0.0.M7.a.RELEASE/01-spring-framework/simple-spring-webapp/src/main/resources/logback.xml b/src/main/UploadedContent/Spring-Boot-2.0.0.M7.a.RELEASE/01-spring-framework/simple-spring-webapp/src/main/resources/logback.xml new file mode 100644 index 0000000..8e1ce0e --- /dev/null +++ b/src/main/UploadedContent/Spring-Boot-2.0.0.M7.a.RELEASE/01-spring-framework/simple-spring-webapp/src/main/resources/logback.xml @@ -0,0 +1,14 @@ + + + + %d{HH:mm:ss.SSS} [%thread] %-5level %logger{36} - %msg%n + + + + + + + + + + \ No newline at end of file diff --git a/src/main/UploadedContent/Spring-Boot-2.0.0.M7.a.RELEASE/01-spring-framework/simple-spring-webapp/src/main/webapp/WEB-INF/applicationContext.xml b/src/main/UploadedContent/Spring-Boot-2.0.0.M7.a.RELEASE/01-spring-framework/simple-spring-webapp/src/main/webapp/WEB-INF/applicationContext.xml new file mode 100644 index 0000000..364977e --- /dev/null +++ b/src/main/UploadedContent/Spring-Boot-2.0.0.M7.a.RELEASE/01-spring-framework/simple-spring-webapp/src/main/webapp/WEB-INF/applicationContext.xml @@ -0,0 +1,16 @@ + + + + + + + + + diff --git a/src/main/UploadedContent/Spring-Boot-2.0.0.M7.a.RELEASE/01-spring-framework/simple-spring-webapp/src/main/webapp/WEB-INF/dispatcherServlet-servlet.xml b/src/main/UploadedContent/Spring-Boot-2.0.0.M7.a.RELEASE/01-spring-framework/simple-spring-webapp/src/main/webapp/WEB-INF/dispatcherServlet-servlet.xml new file mode 100644 index 0000000..a3ac749 --- /dev/null +++ b/src/main/UploadedContent/Spring-Boot-2.0.0.M7.a.RELEASE/01-spring-framework/simple-spring-webapp/src/main/webapp/WEB-INF/dispatcherServlet-servlet.xml @@ -0,0 +1,40 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/src/main/UploadedContent/Spring-Boot-2.0.0.M7.a.RELEASE/01-spring-framework/simple-spring-webapp/src/main/webapp/WEB-INF/view/index.html b/src/main/UploadedContent/Spring-Boot-2.0.0.M7.a.RELEASE/01-spring-framework/simple-spring-webapp/src/main/webapp/WEB-INF/view/index.html new file mode 100644 index 0000000..40f6c29 --- /dev/null +++ b/src/main/UploadedContent/Spring-Boot-2.0.0.M7.a.RELEASE/01-spring-framework/simple-spring-webapp/src/main/webapp/WEB-INF/view/index.html @@ -0,0 +1,11 @@ + + + + + + Welcome + + +

This page never will show up

+ + diff --git a/src/main/UploadedContent/Spring-Boot-2.0.0.M7.a.RELEASE/01-spring-framework/simple-spring-webapp/src/main/webapp/WEB-INF/view/showMessage.html b/src/main/UploadedContent/Spring-Boot-2.0.0.M7.a.RELEASE/01-spring-framework/simple-spring-webapp/src/main/webapp/WEB-INF/view/showMessage.html new file mode 100644 index 0000000..ac1c69b --- /dev/null +++ b/src/main/UploadedContent/Spring-Boot-2.0.0.M7.a.RELEASE/01-spring-framework/simple-spring-webapp/src/main/webapp/WEB-INF/view/showMessage.html @@ -0,0 +1,11 @@ + + + + + + Welcome + + +

+ + diff --git a/src/main/UploadedContent/Spring-Boot-2.0.0.M7.a.RELEASE/01-spring-framework/simple-spring-webapp/src/main/webapp/WEB-INF/web.xml b/src/main/UploadedContent/Spring-Boot-2.0.0.M7.a.RELEASE/01-spring-framework/simple-spring-webapp/src/main/webapp/WEB-INF/web.xml new file mode 100644 index 0000000..40c2f7d --- /dev/null +++ b/src/main/UploadedContent/Spring-Boot-2.0.0.M7.a.RELEASE/01-spring-framework/simple-spring-webapp/src/main/webapp/WEB-INF/web.xml @@ -0,0 +1,45 @@ + + + + Simple Spring Web Application + + + + + + + + dispatcherServlet + org.springframework.web.servlet.DispatcherServlet + + 1 + + + + dispatcherServlet + / + + + diff --git a/src/main/UploadedContent/Spring-Boot-2.0.0.M7.a.RELEASE/02-spring-boot-overview/directory-web/.mvn/wrapper/maven-wrapper.properties b/src/main/UploadedContent/Spring-Boot-2.0.0.M7.a.RELEASE/02-spring-boot-overview/directory-web/.mvn/wrapper/maven-wrapper.properties new file mode 100644 index 0000000..c315043 --- /dev/null +++ b/src/main/UploadedContent/Spring-Boot-2.0.0.M7.a.RELEASE/02-spring-boot-overview/directory-web/.mvn/wrapper/maven-wrapper.properties @@ -0,0 +1 @@ +distributionUrl=https://repo1.maven.org/maven2/org/apache/maven/apache-maven/3.5.0/apache-maven-3.5.0-bin.zip diff --git a/src/main/UploadedContent/Spring-Boot-2.0.0.M7.a.RELEASE/02-spring-boot-overview/directory-web/build.gradle b/src/main/UploadedContent/Spring-Boot-2.0.0.M7.a.RELEASE/02-spring-boot-overview/directory-web/build.gradle new file mode 100644 index 0000000..73e2539 --- /dev/null +++ b/src/main/UploadedContent/Spring-Boot-2.0.0.M7.a.RELEASE/02-spring-boot-overview/directory-web/build.gradle @@ -0,0 +1,37 @@ +buildscript { + ext { + springBootVersion = '2.0.0.M7' + } + repositories { + mavenCentral() + maven { url "https://repo.spring.io/snapshot" } + maven { url "https://repo.spring.io/milestone" } + } + dependencies { + classpath("org.springframework.boot:spring-boot-gradle-plugin:${springBootVersion}") + } +} + +apply plugin: 'java' +apply plugin: 'eclipse' +apply plugin: 'org.springframework.boot' +apply plugin: 'io.spring.dependency-management' + +version = '0.0.1-SNAPSHOT' +sourceCompatibility = 1.8 + +repositories { + mavenCentral() + maven { url "https://repo.spring.io/snapshot" } + maven { url "https://repo.spring.io/milestone" } +} + + +dependencies { + compile('org.springframework.boot:spring-boot-starter-web') + + // SOLUTION: XML response + // compile('com.fasterxml.jackson.dataformat:jackson-dataformat-xml') + + testCompile('org.springframework.boot:spring-boot-starter-test') +} diff --git a/src/main/UploadedContent/Spring-Boot-2.0.0.M7.a.RELEASE/02-spring-boot-overview/directory-web/gradle/wrapper/gradle-wrapper.properties b/src/main/UploadedContent/Spring-Boot-2.0.0.M7.a.RELEASE/02-spring-boot-overview/directory-web/gradle/wrapper/gradle-wrapper.properties new file mode 100644 index 0000000..90a06ce --- /dev/null +++ b/src/main/UploadedContent/Spring-Boot-2.0.0.M7.a.RELEASE/02-spring-boot-overview/directory-web/gradle/wrapper/gradle-wrapper.properties @@ -0,0 +1,5 @@ +distributionBase=GRADLE_USER_HOME +distributionPath=wrapper/dists +zipStoreBase=GRADLE_USER_HOME +zipStorePath=wrapper/dists +distributionUrl=https\://services.gradle.org/distributions/gradle-3.5.1-bin.zip diff --git a/src/main/UploadedContent/Spring-Boot-2.0.0.M7.a.RELEASE/02-spring-boot-overview/directory-web/gradlew b/src/main/UploadedContent/Spring-Boot-2.0.0.M7.a.RELEASE/02-spring-boot-overview/directory-web/gradlew new file mode 100644 index 0000000..4453cce --- /dev/null +++ b/src/main/UploadedContent/Spring-Boot-2.0.0.M7.a.RELEASE/02-spring-boot-overview/directory-web/gradlew @@ -0,0 +1,172 @@ +#!/usr/bin/env sh + +############################################################################## +## +## Gradle start up script for UN*X +## +############################################################################## + +# Attempt to set APP_HOME +# Resolve links: $0 may be a link +PRG="$0" +# Need this for relative symlinks. +while [ -h "$PRG" ] ; do + ls=`ls -ld "$PRG"` + link=`expr "$ls" : '.*-> \(.*\)$'` + if expr "$link" : '/.*' > /dev/null; then + PRG="$link" + else + PRG=`dirname "$PRG"`"/$link" + fi +done +SAVED="`pwd`" +cd "`dirname \"$PRG\"`/" >/dev/null +APP_HOME="`pwd -P`" +cd "$SAVED" >/dev/null + +APP_NAME="Gradle" +APP_BASE_NAME=`basename "$0"` + +# Add default JVM options here. You can also use JAVA_OPTS and GRADLE_OPTS to pass JVM options to this script. +DEFAULT_JVM_OPTS="" + +# Use the maximum available, or set MAX_FD != -1 to use that value. +MAX_FD="maximum" + +warn ( ) { + echo "$*" +} + +die ( ) { + echo + echo "$*" + echo + exit 1 +} + +# OS specific support (must be 'true' or 'false'). +cygwin=false +msys=false +darwin=false +nonstop=false +case "`uname`" in + CYGWIN* ) + cygwin=true + ;; + Darwin* ) + darwin=true + ;; + MINGW* ) + msys=true + ;; + NONSTOP* ) + nonstop=true + ;; +esac + +CLASSPATH=$APP_HOME/gradle/wrapper/gradle-wrapper.jar + +# Determine the Java command to use to start the JVM. +if [ -n "$JAVA_HOME" ] ; then + if [ -x "$JAVA_HOME/jre/sh/java" ] ; then + # IBM's JDK on AIX uses strange locations for the executables + JAVACMD="$JAVA_HOME/jre/sh/java" + else + JAVACMD="$JAVA_HOME/bin/java" + fi + if [ ! -x "$JAVACMD" ] ; then + die "ERROR: JAVA_HOME is set to an invalid directory: $JAVA_HOME + +Please set the JAVA_HOME variable in your environment to match the +location of your Java installation." + fi +else + JAVACMD="java" + which java >/dev/null 2>&1 || die "ERROR: JAVA_HOME is not set and no 'java' command could be found in your PATH. + +Please set the JAVA_HOME variable in your environment to match the +location of your Java installation." +fi + +# Increase the maximum file descriptors if we can. +if [ "$cygwin" = "false" -a "$darwin" = "false" -a "$nonstop" = "false" ] ; then + MAX_FD_LIMIT=`ulimit -H -n` + if [ $? -eq 0 ] ; then + if [ "$MAX_FD" = "maximum" -o "$MAX_FD" = "max" ] ; then + MAX_FD="$MAX_FD_LIMIT" + fi + ulimit -n $MAX_FD + if [ $? -ne 0 ] ; then + warn "Could not set maximum file descriptor limit: $MAX_FD" + fi + else + warn "Could not query maximum file descriptor limit: $MAX_FD_LIMIT" + fi +fi + +# For Darwin, add options to specify how the application appears in the dock +if $darwin; then + GRADLE_OPTS="$GRADLE_OPTS \"-Xdock:name=$APP_NAME\" \"-Xdock:icon=$APP_HOME/media/gradle.icns\"" +fi + +# For Cygwin, switch paths to Windows format before running java +if $cygwin ; then + APP_HOME=`cygpath --path --mixed "$APP_HOME"` + CLASSPATH=`cygpath --path --mixed "$CLASSPATH"` + JAVACMD=`cygpath --unix "$JAVACMD"` + + # We build the pattern for arguments to be converted via cygpath + ROOTDIRSRAW=`find -L / -maxdepth 1 -mindepth 1 -type d 2>/dev/null` + SEP="" + for dir in $ROOTDIRSRAW ; do + ROOTDIRS="$ROOTDIRS$SEP$dir" + SEP="|" + done + OURCYGPATTERN="(^($ROOTDIRS))" + # Add a user-defined pattern to the cygpath arguments + if [ "$GRADLE_CYGPATTERN" != "" ] ; then + OURCYGPATTERN="$OURCYGPATTERN|($GRADLE_CYGPATTERN)" + fi + # Now convert the arguments - kludge to limit ourselves to /bin/sh + i=0 + for arg in "$@" ; do + CHECK=`echo "$arg"|egrep -c "$OURCYGPATTERN" -` + CHECK2=`echo "$arg"|egrep -c "^-"` ### Determine if an option + + if [ $CHECK -ne 0 ] && [ $CHECK2 -eq 0 ] ; then ### Added a condition + eval `echo args$i`=`cygpath --path --ignore --mixed "$arg"` + else + eval `echo args$i`="\"$arg\"" + fi + i=$((i+1)) + done + case $i in + (0) set -- ;; + (1) set -- "$args0" ;; + (2) set -- "$args0" "$args1" ;; + (3) set -- "$args0" "$args1" "$args2" ;; + (4) set -- "$args0" "$args1" "$args2" "$args3" ;; + (5) set -- "$args0" "$args1" "$args2" "$args3" "$args4" ;; + (6) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" ;; + (7) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" "$args6" ;; + (8) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" "$args6" "$args7" ;; + (9) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" "$args6" "$args7" "$args8" ;; + esac +fi + +# Escape application args +save ( ) { + for i do printf %s\\n "$i" | sed "s/'/'\\\\''/g;1s/^/'/;\$s/\$/' \\\\/" ; done + echo " " +} +APP_ARGS=$(save "$@") + +# Collect all arguments for the java command, following the shell quoting and substitution rules +eval set -- $DEFAULT_JVM_OPTS $JAVA_OPTS $GRADLE_OPTS "\"-Dorg.gradle.appname=$APP_BASE_NAME\"" -classpath "\"$CLASSPATH\"" org.gradle.wrapper.GradleWrapperMain "$APP_ARGS" + +# by default we should be in the correct project dir, but when run from Finder on Mac, the cwd is wrong +if [ "$(uname)" = "Darwin" ] && [ "$HOME" = "$PWD" ]; then + cd "$(dirname "$0")" +fi + +exec "$JAVACMD" "$@" diff --git a/src/main/UploadedContent/Spring-Boot-2.0.0.M7.a.RELEASE/02-spring-boot-overview/directory-web/gradlew.bat b/src/main/UploadedContent/Spring-Boot-2.0.0.M7.a.RELEASE/02-spring-boot-overview/directory-web/gradlew.bat new file mode 100644 index 0000000..e95643d --- /dev/null +++ b/src/main/UploadedContent/Spring-Boot-2.0.0.M7.a.RELEASE/02-spring-boot-overview/directory-web/gradlew.bat @@ -0,0 +1,84 @@ +@if "%DEBUG%" == "" @echo off +@rem ########################################################################## +@rem +@rem Gradle startup script for Windows +@rem +@rem ########################################################################## + +@rem Set local scope for the variables with windows NT shell +if "%OS%"=="Windows_NT" setlocal + +set DIRNAME=%~dp0 +if "%DIRNAME%" == "" set DIRNAME=. +set APP_BASE_NAME=%~n0 +set APP_HOME=%DIRNAME% + +@rem Add default JVM options here. You can also use JAVA_OPTS and GRADLE_OPTS to pass JVM options to this script. +set DEFAULT_JVM_OPTS= + +@rem Find java.exe +if defined JAVA_HOME goto findJavaFromJavaHome + +set JAVA_EXE=java.exe +%JAVA_EXE% -version >NUL 2>&1 +if "%ERRORLEVEL%" == "0" goto init + +echo. +echo ERROR: JAVA_HOME is not set and no 'java' command could be found in your PATH. +echo. +echo Please set the JAVA_HOME variable in your environment to match the +echo location of your Java installation. + +goto fail + +:findJavaFromJavaHome +set JAVA_HOME=%JAVA_HOME:"=% +set JAVA_EXE=%JAVA_HOME%/bin/java.exe + +if exist "%JAVA_EXE%" goto init + +echo. +echo ERROR: JAVA_HOME is set to an invalid directory: %JAVA_HOME% +echo. +echo Please set the JAVA_HOME variable in your environment to match the +echo location of your Java installation. + +goto fail + +:init +@rem Get command-line arguments, handling Windows variants + +if not "%OS%" == "Windows_NT" goto win9xME_args + +:win9xME_args +@rem Slurp the command line arguments. +set CMD_LINE_ARGS= +set _SKIP=2 + +:win9xME_args_slurp +if "x%~1" == "x" goto execute + +set CMD_LINE_ARGS=%* + +:execute +@rem Setup the command line + +set CLASSPATH=%APP_HOME%\gradle\wrapper\gradle-wrapper.jar + +@rem Execute Gradle +"%JAVA_EXE%" %DEFAULT_JVM_OPTS% %JAVA_OPTS% %GRADLE_OPTS% "-Dorg.gradle.appname=%APP_BASE_NAME%" -classpath "%CLASSPATH%" org.gradle.wrapper.GradleWrapperMain %CMD_LINE_ARGS% + +:end +@rem End local scope for the variables with windows NT shell +if "%ERRORLEVEL%"=="0" goto mainEnd + +:fail +rem Set variable GRADLE_EXIT_CONSOLE if you need the _script_ return code instead of +rem the _cmd.exe /c_ return code! +if not "" == "%GRADLE_EXIT_CONSOLE%" exit 1 +exit /b 1 + +:mainEnd +if "%OS%"=="Windows_NT" endlocal + +:omega diff --git a/src/main/UploadedContent/Spring-Boot-2.0.0.M7.a.RELEASE/02-spring-boot-overview/directory-web/pom.xml b/src/main/UploadedContent/Spring-Boot-2.0.0.M7.a.RELEASE/02-spring-boot-overview/directory-web/pom.xml new file mode 100644 index 0000000..f0be831 --- /dev/null +++ b/src/main/UploadedContent/Spring-Boot-2.0.0.M7.a.RELEASE/02-spring-boot-overview/directory-web/pom.xml @@ -0,0 +1,101 @@ + + + 4.0.0 + + io.pivotal.workshop + directory-web + 0.0.1-SNAPSHOT + jar + + directory-web + Demo project for Spring Boot + + + org.springframework.boot + spring-boot-starter-parent + 2.0.0.M7 + + + + + UTF-8 + UTF-8 + 1.8 + + + + + org.springframework.boot + spring-boot-starter-web + + + + + + + + org.springframework.boot + spring-boot-starter-test + test + + + + + + + org.springframework.boot + spring-boot-maven-plugin + + + + + + + + + + + spring-snapshots + Spring Snapshots + https://repo.spring.io/snapshot + + true + + + + spring-milestones + Spring Milestones + https://repo.spring.io/milestone + + false + + + + + + + spring-snapshots + Spring Snapshots + https://repo.spring.io/snapshot + + true + + + + spring-milestones + Spring Milestones + https://repo.spring.io/milestone + + false + + + + + + diff --git a/src/main/UploadedContent/Spring-Boot-2.0.0.M7.a.RELEASE/02-spring-boot-overview/directory-web/src/main/java/io/pivotal/workshop/directory/DirectoryWebApplication.java b/src/main/UploadedContent/Spring-Boot-2.0.0.M7.a.RELEASE/02-spring-boot-overview/directory-web/src/main/java/io/pivotal/workshop/directory/DirectoryWebApplication.java new file mode 100644 index 0000000..4a9dac3 --- /dev/null +++ b/src/main/UploadedContent/Spring-Boot-2.0.0.M7.a.RELEASE/02-spring-boot-overview/directory-web/src/main/java/io/pivotal/workshop/directory/DirectoryWebApplication.java @@ -0,0 +1,12 @@ +package io.pivotal.workshop.directory; + +import org.springframework.boot.SpringApplication; +import org.springframework.boot.autoconfigure.SpringBootApplication; + +@SpringBootApplication +public class DirectoryWebApplication { + + public static void main(String[] args) { + SpringApplication.run(DirectoryWebApplication.class, args); + } +} diff --git a/src/main/UploadedContent/Spring-Boot-2.0.0.M7.a.RELEASE/02-spring-boot-overview/directory-web/src/main/java/io/pivotal/workshop/directory/controller/DirectoryController.java b/src/main/UploadedContent/Spring-Boot-2.0.0.M7.a.RELEASE/02-spring-boot-overview/directory-web/src/main/java/io/pivotal/workshop/directory/controller/DirectoryController.java new file mode 100644 index 0000000..a73fffb --- /dev/null +++ b/src/main/UploadedContent/Spring-Boot-2.0.0.M7.a.RELEASE/02-spring-boot-overview/directory-web/src/main/java/io/pivotal/workshop/directory/controller/DirectoryController.java @@ -0,0 +1,116 @@ +package io.pivotal.workshop.directory.controller; + +import java.net.URI; +import java.util.Optional; + +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.http.HttpStatus; +import org.springframework.http.ResponseEntity; +import org.springframework.web.bind.annotation.PathVariable; +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.RequestParam; +import org.springframework.web.bind.annotation.ResponseStatus; +import org.springframework.web.bind.annotation.RestController; +import org.springframework.web.servlet.support.ServletUriComponentsBuilder; + +import io.pivotal.workshop.directory.domain.Person; +import io.pivotal.workshop.directory.repository.DirectoryRepository; + +@RestController +public class DirectoryController { + + private DirectoryRepository repo; + + @Autowired + public DirectoryController(DirectoryRepository repo) { + this.repo = repo; + } + + @RequestMapping("/directory") + public ResponseEntity> findAll() { + return ResponseEntity.ok(this.repo.findAll()); + } + + + //SOLUTION: Challenges + @RequestMapping("/directory/{id}") + public ResponseEntity findById(@PathVariable String id) { + Optional result = this.repo.findById(id); + + if (result.isPresent()) { + return ResponseEntity.ok(result.get()); + } + + return ResponseEntity.status(HttpStatus.NOT_FOUND).body("{}"); + } + + @RequestMapping("/directory/search") + public ResponseEntity searchByEmail(@RequestParam String email) { + Optional result = this.repo.findByEmail(email); + + if (result.isPresent()) { + return ResponseEntity.ok(result.get()); + } + + return ResponseEntity.status(HttpStatus.NOT_FOUND).body("{}"); + } + + @RequestMapping(value = "/directory/{id}", method = { RequestMethod.DELETE }) + @ResponseStatus(HttpStatus.NO_CONTENT) + public void deletePerson(@PathVariable String id) { + this.repo.delete(id); + } + + + @RequestMapping(value = "/directory", method = { RequestMethod.POST }) + public ResponseEntity addPerson(@RequestBody Person person) { + + return this.save(person); + } + + @RequestMapping(value = "/directory", method = { RequestMethod.PUT }) + public ResponseEntity updatePerson(@RequestBody Person person) { + return this.save(person); + } + + private ResponseEntity save(Person person) { + + Person result = this.repo.save(person); + + final URI location = ServletUriComponentsBuilder.fromCurrentServletMapping().path("/directory/{id}").build() + .expand(person.getId()).toUri(); + + return ResponseEntity.created(location).body(result); + } + + + //SOLUTION: Homework + /* + @RequestMapping(value = "/directory", method = { RequestMethod.POST }) + public ResponseEntity addPerson(@Valid @RequestBody Person person, BindingResult bindingResult) { + + return this.save(person, bindingResult); + } + + @RequestMapping(value = "/directory", method = { RequestMethod.PUT }) + public ResponseEntity updatePerson(@Valid @RequestBody Person person, BindingResult bindingResult) { + return this.save(person, bindingResult); + } + + private ResponseEntity save(Person person, BindingResult bindingResult) { + + if (bindingResult.hasErrors()) { + return ResponseEntity.status(HttpStatus.BAD_REQUEST).body(new PersonError(bindingResult.getAllErrors())); + } + + Person result = this.repo.save(person); + + final URI location = ServletUriComponentsBuilder.fromCurrentServletMapping().path("/directory/{id}").build() + .expand(person.getId()).toUri(); + + return ResponseEntity.created(location).body(result); + } + */ +} diff --git a/src/main/UploadedContent/Spring-Boot-2.0.0.M7.a.RELEASE/02-spring-boot-overview/directory-web/src/main/java/io/pivotal/workshop/directory/domain/Person.java b/src/main/UploadedContent/Spring-Boot-2.0.0.M7.a.RELEASE/02-spring-boot-overview/directory-web/src/main/java/io/pivotal/workshop/directory/domain/Person.java new file mode 100644 index 0000000..97aeba2 --- /dev/null +++ b/src/main/UploadedContent/Spring-Boot-2.0.0.M7.a.RELEASE/02-spring-boot-overview/directory-web/src/main/java/io/pivotal/workshop/directory/domain/Person.java @@ -0,0 +1,109 @@ +package io.pivotal.workshop.directory.domain; + +import java.text.ParseException; +import java.text.SimpleDateFormat; +import java.util.Date; +import java.util.UUID; + +import javax.validation.constraints.NotNull; + +public class Person { + + private SimpleDateFormat date = new SimpleDateFormat("yyyy-MM-dd"); + + private String id; + + @NotNull + private String email; + @NotNull + private String name; + @NotNull + private String password; + private Date birthday; + private Date created; + private Date modified; + + public Person(){ + this.id = UUID.randomUUID().toString().replaceAll("-", ""); + this.created = new Date(); + this.modified = new Date(); + } + + public Person(String email, String name, String password, String birthday) { + this(); + this.email = email; + this.name = name; + this.password = password; + + try { + this.birthday = date.parse(birthday); + } catch (ParseException e) { + this.birthday = null; + } + } + + public Person(String email, String name, String password, Date birthday) { + this(); + this.email = email; + this.name = name; + this.password = password; + this.birthday = birthday; + } + + public String getId() { + return id; + } + + public void setId(String id) { + this.id = id; + } + + public String getEmail() { + return email; + } + + public void setEmail(String email) { + this.email = email; + } + + public String getName() { + return name; + } + + public void setName(String name) { + this.name = name; + } + + public String getPassword() { + return password; + } + + public void setPassword(String password) { + this.password = password; + } + + public Date getBirthday() { + return birthday; + } + + public void setBirthday(Date birthday) { + this.birthday = birthday; + } + + public Date getCreated() { + return created; + } + + public void setCreated(Date created) { + this.created = created; + } + + public Date getModified() { + return modified; + } + + public void setModified(Date modified) { + this.modified = modified; + } + +} diff --git a/src/main/UploadedContent/Spring-Boot-2.0.0.M7.a.RELEASE/02-spring-boot-overview/directory-web/src/main/java/io/pivotal/workshop/directory/error/PersonError.java b/src/main/UploadedContent/Spring-Boot-2.0.0.M7.a.RELEASE/02-spring-boot-overview/directory-web/src/main/java/io/pivotal/workshop/directory/error/PersonError.java new file mode 100644 index 0000000..5b0611e --- /dev/null +++ b/src/main/UploadedContent/Spring-Boot-2.0.0.M7.a.RELEASE/02-spring-boot-overview/directory-web/src/main/java/io/pivotal/workshop/directory/error/PersonError.java @@ -0,0 +1,40 @@ +package io.pivotal.workshop.directory.error; + +import java.util.Date; +import java.util.List; + +import org.springframework.validation.ObjectError; + +public class PersonError { + + private List errors; + private Date date; + + public PersonError(){ + this.date = new Date(); + } + + public PersonError(List errors){ + this(); + this.errors = errors; + } + + public List getErrors() { + return errors; + } + + public void setErrors(List errors) { + this.errors = errors; + } + + public Date getDate() { + return date; + } + + public void setDate(Date date) { + this.date = date; + } + + + +} diff --git a/src/main/UploadedContent/Spring-Boot-2.0.0.M7.a.RELEASE/02-spring-boot-overview/directory-web/src/main/java/io/pivotal/workshop/directory/repository/DirectoryRepository.java b/src/main/UploadedContent/Spring-Boot-2.0.0.M7.a.RELEASE/02-spring-boot-overview/directory-web/src/main/java/io/pivotal/workshop/directory/repository/DirectoryRepository.java new file mode 100644 index 0000000..fe92f7c --- /dev/null +++ b/src/main/UploadedContent/Spring-Boot-2.0.0.M7.a.RELEASE/02-spring-boot-overview/directory-web/src/main/java/io/pivotal/workshop/directory/repository/DirectoryRepository.java @@ -0,0 +1,77 @@ +package io.pivotal.workshop.directory.repository; + +import java.util.ArrayList; +import java.util.Date; +import java.util.List; +import java.util.Optional; +import java.util.UUID; +import java.util.function.Predicate; + +import org.springframework.stereotype.Repository; + +import io.pivotal.workshop.directory.domain.Person; + +@Repository +public class DirectoryRepository { + + + @SuppressWarnings("serial") + private List directory = new ArrayList(){{ + add(new Person("john@email.com","John S","password","1985-11-10")); + add(new Person("mike@email.com","Mike H","password","1984-12-02")); + add(new Person("dan@email.com","Dan B","password","1983-03-07")); + add(new Person("bill@email.com","Bill G","password","1983-06-12")); + add(new Person("mark@email.com","Mark S","password","1986-02-22")); + }}; + + public Iterable findAll(){ + return this.directory; + } + + // SOLUTION: + public Optional findByEmail(String email){ + return findFirstBy( p -> p.getEmail().equals(email)); + } + + public Optional findById(String id){ + return findFirstBy( p -> p.getId().equals(id)); + } + + public Person save(Person person){ + Optional result = this.findById(person.getId()); + + if(result.isPresent()){ + + if( person.getEmail() != null) result.get().setEmail(person.getEmail()); + if( person.getName() != null) result.get().setName(person.getName()); + if( person.getPassword() != null) result.get().setPassword(person.getPassword()); + if( person.getBirthday() != null) result.get().setBirthday(person.getBirthday()); + result.get().setModified(new Date()); + + return result.get(); + + }else{ + + if (person.getId() != null){ + person.setId(UUID.randomUUID().toString().replaceAll("-","")); + } + + person.setCreated(new Date()); + person.setModified(new Date()); + this.directory.add(person); + + return person; + } + } + + public void delete(String id){ + this.findById(id).ifPresent(p -> { this.directory.remove(p); }); + } + + private Optional findFirstBy(Predicate findBy){ + return directory.stream() + .filter(findBy) + .findFirst(); + } + +} diff --git a/src/main/UploadedContent/Spring-Boot-2.0.0.M7.a.RELEASE/02-spring-boot-overview/directory-web/src/main/resources/application.properties b/src/main/UploadedContent/Spring-Boot-2.0.0.M7.a.RELEASE/02-spring-boot-overview/directory-web/src/main/resources/application.properties new file mode 100644 index 0000000..0226d86 --- /dev/null +++ b/src/main/UploadedContent/Spring-Boot-2.0.0.M7.a.RELEASE/02-spring-boot-overview/directory-web/src/main/resources/application.properties @@ -0,0 +1,2 @@ +# SOLUTION: Date format +#spring.jackson.date-format=yyyy-MM-dd \ No newline at end of file diff --git a/src/main/UploadedContent/Spring-Boot-2.0.0.M7.a.RELEASE/02-spring-boot-overview/directory-web/src/test/java/io/pivotal/workshop/directory/DirectoryWebApplicationTests.java b/src/main/UploadedContent/Spring-Boot-2.0.0.M7.a.RELEASE/02-spring-boot-overview/directory-web/src/test/java/io/pivotal/workshop/directory/DirectoryWebApplicationTests.java new file mode 100644 index 0000000..b2bf59e --- /dev/null +++ b/src/main/UploadedContent/Spring-Boot-2.0.0.M7.a.RELEASE/02-spring-boot-overview/directory-web/src/test/java/io/pivotal/workshop/directory/DirectoryWebApplicationTests.java @@ -0,0 +1,16 @@ +package io.pivotal.workshop.directory; + +import org.junit.Test; +import org.junit.runner.RunWith; +import org.springframework.boot.test.context.SpringBootTest; +import org.springframework.test.context.junit4.SpringRunner; + +@RunWith(SpringRunner.class) +@SpringBootTest +public class DirectoryWebApplicationTests { + + @Test + public void contextLoads() { + } + +} diff --git a/src/main/UploadedContent/Spring-Boot-2.0.0.M7.a.RELEASE/03-spring-boot-internals/directory-web-internals/.mvn/wrapper/maven-wrapper.properties b/src/main/UploadedContent/Spring-Boot-2.0.0.M7.a.RELEASE/03-spring-boot-internals/directory-web-internals/.mvn/wrapper/maven-wrapper.properties new file mode 100644 index 0000000..c315043 --- /dev/null +++ b/src/main/UploadedContent/Spring-Boot-2.0.0.M7.a.RELEASE/03-spring-boot-internals/directory-web-internals/.mvn/wrapper/maven-wrapper.properties @@ -0,0 +1 @@ +distributionUrl=https://repo1.maven.org/maven2/org/apache/maven/apache-maven/3.5.0/apache-maven-3.5.0-bin.zip diff --git a/src/main/UploadedContent/Spring-Boot-2.0.0.M7.a.RELEASE/03-spring-boot-internals/directory-web-internals/build.gradle b/src/main/UploadedContent/Spring-Boot-2.0.0.M7.a.RELEASE/03-spring-boot-internals/directory-web-internals/build.gradle new file mode 100644 index 0000000..1df9956 --- /dev/null +++ b/src/main/UploadedContent/Spring-Boot-2.0.0.M7.a.RELEASE/03-spring-boot-internals/directory-web-internals/build.gradle @@ -0,0 +1,42 @@ +buildscript { + ext { + springBootVersion = '2.0.0.M7' + } + repositories { + mavenCentral() + maven { url "https://repo.spring.io/snapshot" } + maven { url "https://repo.spring.io/milestone" } + } + dependencies { + classpath("org.springframework.boot:spring-boot-gradle-plugin:${springBootVersion}") + } +} + +apply plugin: 'java' +apply plugin: 'eclipse' +apply plugin: 'org.springframework.boot' +apply plugin: 'io.spring.dependency-management' + +version = '0.0.1-SNAPSHOT' +sourceCompatibility = 1.8 + +repositories { + mavenCentral() + maven { url "https://repo.spring.io/snapshot" } + maven { url "https://repo.spring.io/milestone" } +} + + +dependencies { + compile('org.springframework.boot:spring-boot-starter-web') + compile('org.springframework.boot:spring-boot-starter-aop') + + + compile('org.springframework.boot:spring-boot-devtools') + optional("org.springframework.boot:spring-boot-configuration-processor") + + // SOLUTION: XML response + // compile('com.fasterxml.jackson.dataformat:jackson-dataformat-xml') + + testCompile('org.springframework.boot:spring-boot-starter-test') +} diff --git a/src/main/UploadedContent/Spring-Boot-2.0.0.M7.a.RELEASE/03-spring-boot-internals/directory-web-internals/gradle/wrapper/gradle-wrapper.properties b/src/main/UploadedContent/Spring-Boot-2.0.0.M7.a.RELEASE/03-spring-boot-internals/directory-web-internals/gradle/wrapper/gradle-wrapper.properties new file mode 100644 index 0000000..90a06ce --- /dev/null +++ b/src/main/UploadedContent/Spring-Boot-2.0.0.M7.a.RELEASE/03-spring-boot-internals/directory-web-internals/gradle/wrapper/gradle-wrapper.properties @@ -0,0 +1,5 @@ +distributionBase=GRADLE_USER_HOME +distributionPath=wrapper/dists +zipStoreBase=GRADLE_USER_HOME +zipStorePath=wrapper/dists +distributionUrl=https\://services.gradle.org/distributions/gradle-3.5.1-bin.zip diff --git a/src/main/UploadedContent/Spring-Boot-2.0.0.M7.a.RELEASE/03-spring-boot-internals/directory-web-internals/gradlew b/src/main/UploadedContent/Spring-Boot-2.0.0.M7.a.RELEASE/03-spring-boot-internals/directory-web-internals/gradlew new file mode 100644 index 0000000..4453cce --- /dev/null +++ b/src/main/UploadedContent/Spring-Boot-2.0.0.M7.a.RELEASE/03-spring-boot-internals/directory-web-internals/gradlew @@ -0,0 +1,172 @@ +#!/usr/bin/env sh + +############################################################################## +## +## Gradle start up script for UN*X +## +############################################################################## + +# Attempt to set APP_HOME +# Resolve links: $0 may be a link +PRG="$0" +# Need this for relative symlinks. +while [ -h "$PRG" ] ; do + ls=`ls -ld "$PRG"` + link=`expr "$ls" : '.*-> \(.*\)$'` + if expr "$link" : '/.*' > /dev/null; then + PRG="$link" + else + PRG=`dirname "$PRG"`"/$link" + fi +done +SAVED="`pwd`" +cd "`dirname \"$PRG\"`/" >/dev/null +APP_HOME="`pwd -P`" +cd "$SAVED" >/dev/null + +APP_NAME="Gradle" +APP_BASE_NAME=`basename "$0"` + +# Add default JVM options here. You can also use JAVA_OPTS and GRADLE_OPTS to pass JVM options to this script. +DEFAULT_JVM_OPTS="" + +# Use the maximum available, or set MAX_FD != -1 to use that value. +MAX_FD="maximum" + +warn ( ) { + echo "$*" +} + +die ( ) { + echo + echo "$*" + echo + exit 1 +} + +# OS specific support (must be 'true' or 'false'). +cygwin=false +msys=false +darwin=false +nonstop=false +case "`uname`" in + CYGWIN* ) + cygwin=true + ;; + Darwin* ) + darwin=true + ;; + MINGW* ) + msys=true + ;; + NONSTOP* ) + nonstop=true + ;; +esac + +CLASSPATH=$APP_HOME/gradle/wrapper/gradle-wrapper.jar + +# Determine the Java command to use to start the JVM. +if [ -n "$JAVA_HOME" ] ; then + if [ -x "$JAVA_HOME/jre/sh/java" ] ; then + # IBM's JDK on AIX uses strange locations for the executables + JAVACMD="$JAVA_HOME/jre/sh/java" + else + JAVACMD="$JAVA_HOME/bin/java" + fi + if [ ! -x "$JAVACMD" ] ; then + die "ERROR: JAVA_HOME is set to an invalid directory: $JAVA_HOME + +Please set the JAVA_HOME variable in your environment to match the +location of your Java installation." + fi +else + JAVACMD="java" + which java >/dev/null 2>&1 || die "ERROR: JAVA_HOME is not set and no 'java' command could be found in your PATH. + +Please set the JAVA_HOME variable in your environment to match the +location of your Java installation." +fi + +# Increase the maximum file descriptors if we can. +if [ "$cygwin" = "false" -a "$darwin" = "false" -a "$nonstop" = "false" ] ; then + MAX_FD_LIMIT=`ulimit -H -n` + if [ $? -eq 0 ] ; then + if [ "$MAX_FD" = "maximum" -o "$MAX_FD" = "max" ] ; then + MAX_FD="$MAX_FD_LIMIT" + fi + ulimit -n $MAX_FD + if [ $? -ne 0 ] ; then + warn "Could not set maximum file descriptor limit: $MAX_FD" + fi + else + warn "Could not query maximum file descriptor limit: $MAX_FD_LIMIT" + fi +fi + +# For Darwin, add options to specify how the application appears in the dock +if $darwin; then + GRADLE_OPTS="$GRADLE_OPTS \"-Xdock:name=$APP_NAME\" \"-Xdock:icon=$APP_HOME/media/gradle.icns\"" +fi + +# For Cygwin, switch paths to Windows format before running java +if $cygwin ; then + APP_HOME=`cygpath --path --mixed "$APP_HOME"` + CLASSPATH=`cygpath --path --mixed "$CLASSPATH"` + JAVACMD=`cygpath --unix "$JAVACMD"` + + # We build the pattern for arguments to be converted via cygpath + ROOTDIRSRAW=`find -L / -maxdepth 1 -mindepth 1 -type d 2>/dev/null` + SEP="" + for dir in $ROOTDIRSRAW ; do + ROOTDIRS="$ROOTDIRS$SEP$dir" + SEP="|" + done + OURCYGPATTERN="(^($ROOTDIRS))" + # Add a user-defined pattern to the cygpath arguments + if [ "$GRADLE_CYGPATTERN" != "" ] ; then + OURCYGPATTERN="$OURCYGPATTERN|($GRADLE_CYGPATTERN)" + fi + # Now convert the arguments - kludge to limit ourselves to /bin/sh + i=0 + for arg in "$@" ; do + CHECK=`echo "$arg"|egrep -c "$OURCYGPATTERN" -` + CHECK2=`echo "$arg"|egrep -c "^-"` ### Determine if an option + + if [ $CHECK -ne 0 ] && [ $CHECK2 -eq 0 ] ; then ### Added a condition + eval `echo args$i`=`cygpath --path --ignore --mixed "$arg"` + else + eval `echo args$i`="\"$arg\"" + fi + i=$((i+1)) + done + case $i in + (0) set -- ;; + (1) set -- "$args0" ;; + (2) set -- "$args0" "$args1" ;; + (3) set -- "$args0" "$args1" "$args2" ;; + (4) set -- "$args0" "$args1" "$args2" "$args3" ;; + (5) set -- "$args0" "$args1" "$args2" "$args3" "$args4" ;; + (6) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" ;; + (7) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" "$args6" ;; + (8) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" "$args6" "$args7" ;; + (9) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" "$args6" "$args7" "$args8" ;; + esac +fi + +# Escape application args +save ( ) { + for i do printf %s\\n "$i" | sed "s/'/'\\\\''/g;1s/^/'/;\$s/\$/' \\\\/" ; done + echo " " +} +APP_ARGS=$(save "$@") + +# Collect all arguments for the java command, following the shell quoting and substitution rules +eval set -- $DEFAULT_JVM_OPTS $JAVA_OPTS $GRADLE_OPTS "\"-Dorg.gradle.appname=$APP_BASE_NAME\"" -classpath "\"$CLASSPATH\"" org.gradle.wrapper.GradleWrapperMain "$APP_ARGS" + +# by default we should be in the correct project dir, but when run from Finder on Mac, the cwd is wrong +if [ "$(uname)" = "Darwin" ] && [ "$HOME" = "$PWD" ]; then + cd "$(dirname "$0")" +fi + +exec "$JAVACMD" "$@" diff --git a/src/main/UploadedContent/Spring-Boot-2.0.0.M7.a.RELEASE/03-spring-boot-internals/directory-web-internals/gradlew.bat b/src/main/UploadedContent/Spring-Boot-2.0.0.M7.a.RELEASE/03-spring-boot-internals/directory-web-internals/gradlew.bat new file mode 100644 index 0000000..e95643d --- /dev/null +++ b/src/main/UploadedContent/Spring-Boot-2.0.0.M7.a.RELEASE/03-spring-boot-internals/directory-web-internals/gradlew.bat @@ -0,0 +1,84 @@ +@if "%DEBUG%" == "" @echo off +@rem ########################################################################## +@rem +@rem Gradle startup script for Windows +@rem +@rem ########################################################################## + +@rem Set local scope for the variables with windows NT shell +if "%OS%"=="Windows_NT" setlocal + +set DIRNAME=%~dp0 +if "%DIRNAME%" == "" set DIRNAME=. +set APP_BASE_NAME=%~n0 +set APP_HOME=%DIRNAME% + +@rem Add default JVM options here. You can also use JAVA_OPTS and GRADLE_OPTS to pass JVM options to this script. +set DEFAULT_JVM_OPTS= + +@rem Find java.exe +if defined JAVA_HOME goto findJavaFromJavaHome + +set JAVA_EXE=java.exe +%JAVA_EXE% -version >NUL 2>&1 +if "%ERRORLEVEL%" == "0" goto init + +echo. +echo ERROR: JAVA_HOME is not set and no 'java' command could be found in your PATH. +echo. +echo Please set the JAVA_HOME variable in your environment to match the +echo location of your Java installation. + +goto fail + +:findJavaFromJavaHome +set JAVA_HOME=%JAVA_HOME:"=% +set JAVA_EXE=%JAVA_HOME%/bin/java.exe + +if exist "%JAVA_EXE%" goto init + +echo. +echo ERROR: JAVA_HOME is set to an invalid directory: %JAVA_HOME% +echo. +echo Please set the JAVA_HOME variable in your environment to match the +echo location of your Java installation. + +goto fail + +:init +@rem Get command-line arguments, handling Windows variants + +if not "%OS%" == "Windows_NT" goto win9xME_args + +:win9xME_args +@rem Slurp the command line arguments. +set CMD_LINE_ARGS= +set _SKIP=2 + +:win9xME_args_slurp +if "x%~1" == "x" goto execute + +set CMD_LINE_ARGS=%* + +:execute +@rem Setup the command line + +set CLASSPATH=%APP_HOME%\gradle\wrapper\gradle-wrapper.jar + +@rem Execute Gradle +"%JAVA_EXE%" %DEFAULT_JVM_OPTS% %JAVA_OPTS% %GRADLE_OPTS% "-Dorg.gradle.appname=%APP_BASE_NAME%" -classpath "%CLASSPATH%" org.gradle.wrapper.GradleWrapperMain %CMD_LINE_ARGS% + +:end +@rem End local scope for the variables with windows NT shell +if "%ERRORLEVEL%"=="0" goto mainEnd + +:fail +rem Set variable GRADLE_EXIT_CONSOLE if you need the _script_ return code instead of +rem the _cmd.exe /c_ return code! +if not "" == "%GRADLE_EXIT_CONSOLE%" exit 1 +exit /b 1 + +:mainEnd +if "%OS%"=="Windows_NT" endlocal + +:omega diff --git a/src/main/UploadedContent/Spring-Boot-2.0.0.M7.a.RELEASE/03-spring-boot-internals/directory-web-internals/pom.xml b/src/main/UploadedContent/Spring-Boot-2.0.0.M7.a.RELEASE/03-spring-boot-internals/directory-web-internals/pom.xml new file mode 100644 index 0000000..ca78af2 --- /dev/null +++ b/src/main/UploadedContent/Spring-Boot-2.0.0.M7.a.RELEASE/03-spring-boot-internals/directory-web-internals/pom.xml @@ -0,0 +1,114 @@ + + + 4.0.0 + + io.pivotal.workshop + directory-web-internals + 0.0.1-SNAPSHOT + jar + + directory-web-internals + Demo project for Spring Boot + + + org.springframework.boot + spring-boot-starter-parent + 2.0.0.M7 + + + + + UTF-8 + UTF-8 + 1.8 + + + + + org.springframework.boot + spring-boot-starter-web + + + + org.springframework.boot + spring-boot-starter-aop + + + + + + + + org.springframework.boot + spring-boot-devtools + + + + + org.springframework.boot + spring-boot-starter-test + test + + + + org.springframework.boot + spring-boot-configuration-processor + true + + + + + + + org.springframework.boot + spring-boot-maven-plugin + + + + + + + spring-snapshots + Spring Snapshots + https://repo.spring.io/snapshot + + true + + + + spring-milestones + Spring Milestones + https://repo.spring.io/milestone + + false + + + + + + + spring-snapshots + Spring Snapshots + https://repo.spring.io/snapshot + + true + + + + spring-milestones + Spring Milestones + https://repo.spring.io/milestone + + false + + + + + + diff --git a/src/main/UploadedContent/Spring-Boot-2.0.0.M7.a.RELEASE/03-spring-boot-internals/directory-web-internals/src/main/java/io/pivotal/workshop/directory/DirectoryWebInternalsApplication.java b/src/main/UploadedContent/Spring-Boot-2.0.0.M7.a.RELEASE/03-spring-boot-internals/directory-web-internals/src/main/java/io/pivotal/workshop/directory/DirectoryWebInternalsApplication.java new file mode 100644 index 0000000..da31c92 --- /dev/null +++ b/src/main/UploadedContent/Spring-Boot-2.0.0.M7.a.RELEASE/03-spring-boot-internals/directory-web-internals/src/main/java/io/pivotal/workshop/directory/DirectoryWebInternalsApplication.java @@ -0,0 +1,12 @@ +package io.pivotal.workshop.directory; + +import org.springframework.boot.SpringApplication; +import org.springframework.boot.autoconfigure.SpringBootApplication; + +@SpringBootApplication +public class DirectoryWebInternalsApplication { + + public static void main(String[] args) { + SpringApplication.run(DirectoryWebInternalsApplication.class, args); + } +} diff --git a/src/main/UploadedContent/Spring-Boot-2.0.0.M7.a.RELEASE/03-spring-boot-internals/directory-web-internals/src/main/java/io/pivotal/workshop/directory/annotation/Audit.java b/src/main/UploadedContent/Spring-Boot-2.0.0.M7.a.RELEASE/03-spring-boot-internals/directory-web-internals/src/main/java/io/pivotal/workshop/directory/annotation/Audit.java new file mode 100644 index 0000000..ddb2121 --- /dev/null +++ b/src/main/UploadedContent/Spring-Boot-2.0.0.M7.a.RELEASE/03-spring-boot-internals/directory-web-internals/src/main/java/io/pivotal/workshop/directory/annotation/Audit.java @@ -0,0 +1,12 @@ +package io.pivotal.workshop.directory.annotation; + +import java.lang.annotation.ElementType; +import java.lang.annotation.Retention; +import java.lang.annotation.RetentionPolicy; +import java.lang.annotation.Target; + +@Target(ElementType.METHOD) +@Retention(RetentionPolicy.RUNTIME) +public @interface Audit { + Auditor value() default Auditor.NOTHING; +} diff --git a/src/main/UploadedContent/Spring-Boot-2.0.0.M7.a.RELEASE/03-spring-boot-internals/directory-web-internals/src/main/java/io/pivotal/workshop/directory/annotation/Auditor.java b/src/main/UploadedContent/Spring-Boot-2.0.0.M7.a.RELEASE/03-spring-boot-internals/directory-web-internals/src/main/java/io/pivotal/workshop/directory/annotation/Auditor.java new file mode 100644 index 0000000..44fcec3 --- /dev/null +++ b/src/main/UploadedContent/Spring-Boot-2.0.0.M7.a.RELEASE/03-spring-boot-internals/directory-web-internals/src/main/java/io/pivotal/workshop/directory/annotation/Auditor.java @@ -0,0 +1,5 @@ +package io.pivotal.workshop.directory.annotation; + +public enum Auditor { + BEFORE, AFTER, BEFORE_AND_AFTER, NOTHING +} diff --git a/src/main/UploadedContent/Spring-Boot-2.0.0.M7.a.RELEASE/03-spring-boot-internals/directory-web-internals/src/main/java/io/pivotal/workshop/directory/aop/DirectoryAudit.java b/src/main/UploadedContent/Spring-Boot-2.0.0.M7.a.RELEASE/03-spring-boot-internals/directory-web-internals/src/main/java/io/pivotal/workshop/directory/aop/DirectoryAudit.java new file mode 100644 index 0000000..9dae222 --- /dev/null +++ b/src/main/UploadedContent/Spring-Boot-2.0.0.M7.a.RELEASE/03-spring-boot-internals/directory-web-internals/src/main/java/io/pivotal/workshop/directory/aop/DirectoryAudit.java @@ -0,0 +1,74 @@ +package io.pivotal.workshop.directory.aop; + +import java.util.stream.IntStream; + +import org.aspectj.lang.ProceedingJoinPoint; +import org.aspectj.lang.annotation.Around; +import org.aspectj.lang.annotation.Aspect; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; + +import io.pivotal.workshop.directory.annotation.Audit; +import io.pivotal.workshop.directory.config.DirectoryProperties; + +@Aspect +public class DirectoryAudit { + + private DirectoryProperties props; + + public DirectoryAudit(DirectoryProperties props){ + this.props = props; + } + + private static Logger log = LoggerFactory.getLogger("[AUDIT]"); + + @Around("execution(* *(..)) && @annotation(audit)") + public Object audit(ProceedingJoinPoint jp, Audit audit) throws Throwable { + // Step. Get the Arguments + Object[] args = jp.getArgs(); + + // Step. Print execution information + this.printBar(); + this.print("[executing] " + (props.getInfo().toLowerCase().equals("short") ? jp.getSignature().getName() : jp.getSignature() )); + + // Step. Print arguments if any + switch (audit.value()) { + case BEFORE: + case BEFORE_AND_AFTER: + this.printArgs(args); + default: + break; + } + + // Step. Proceed + Object obj = jp.proceed(args); + + // Step. Print result if needed + switch (audit.value()) { + case AFTER: + case BEFORE_AND_AFTER: + this.print("[result] " + obj); + default: + this.printBar(); + break; + } + + // Step. Return + return obj; + } + + private void print(Object obj) { + log.info(obj.toString()); + } + + private void printArgs(Object[] args) { + IntStream.range(0, args.length).forEach(idx -> { + log.info(String.format("[params] arg%d = %s", idx, args[idx])); + }); + + } + + private void printBar(){ + log.info("==========="); + } +} diff --git a/src/main/UploadedContent/Spring-Boot-2.0.0.M7.a.RELEASE/03-spring-boot-internals/directory-web-internals/src/main/java/io/pivotal/workshop/directory/aop/SimpleAudit.java b/src/main/UploadedContent/Spring-Boot-2.0.0.M7.a.RELEASE/03-spring-boot-internals/directory-web-internals/src/main/java/io/pivotal/workshop/directory/aop/SimpleAudit.java new file mode 100644 index 0000000..a31cd5f --- /dev/null +++ b/src/main/UploadedContent/Spring-Boot-2.0.0.M7.a.RELEASE/03-spring-boot-internals/directory-web-internals/src/main/java/io/pivotal/workshop/directory/aop/SimpleAudit.java @@ -0,0 +1,20 @@ +package io.pivotal.workshop.directory.aop; + +import org.aspectj.lang.JoinPoint; +import org.aspectj.lang.annotation.Aspect; +import org.aspectj.lang.annotation.Before; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; + +import io.pivotal.workshop.directory.annotation.Audit; + +@Aspect +public class SimpleAudit { + + private static Logger log = LoggerFactory.getLogger("[AUDIT]"); + + @Before("@annotation(audit)") + public void audit(JoinPoint jp, Audit audit){ + log.info("[EXECUTING] " + jp.getSignature()); + } +} diff --git a/src/main/UploadedContent/Spring-Boot-2.0.0.M7.a.RELEASE/03-spring-boot-internals/directory-web-internals/src/main/java/io/pivotal/workshop/directory/config/DirectoryConfig.java b/src/main/UploadedContent/Spring-Boot-2.0.0.M7.a.RELEASE/03-spring-boot-internals/directory-web-internals/src/main/java/io/pivotal/workshop/directory/config/DirectoryConfig.java new file mode 100644 index 0000000..8e4f482 --- /dev/null +++ b/src/main/UploadedContent/Spring-Boot-2.0.0.M7.a.RELEASE/03-spring-boot-internals/directory-web-internals/src/main/java/io/pivotal/workshop/directory/config/DirectoryConfig.java @@ -0,0 +1,33 @@ +package io.pivotal.workshop.directory.config; + +import org.springframework.boot.autoconfigure.condition.ConditionalOnClass; +import org.springframework.context.annotation.Bean; +import org.springframework.context.annotation.Configuration; + +import io.pivotal.workshop.directory.aop.SimpleAudit; + +@Configuration +public class DirectoryConfig { + + @ConditionalOnClass(name={"io.pivotal.workshop.directory.repository.DirectoryRepository"}) + @Bean + public SimpleAudit simpleAudit(){ + return new SimpleAudit(); + } + +} + +// SOLUTION: +/* +@Configuration +@EnableConfigurationProperties(DirectoryProperties.class) +public class DirectoryConfig { + + @ConditionalOnProperty(prefix="directory",name="audit",havingValue="on") + @Bean + public DirectoryAudit directoryAudit(DirectoryProperties props){ + return new DirectoryAudit(props); + } + +} +*/ \ No newline at end of file diff --git a/src/main/UploadedContent/Spring-Boot-2.0.0.M7.a.RELEASE/03-spring-boot-internals/directory-web-internals/src/main/java/io/pivotal/workshop/directory/config/DirectoryProperties.java b/src/main/UploadedContent/Spring-Boot-2.0.0.M7.a.RELEASE/03-spring-boot-internals/directory-web-internals/src/main/java/io/pivotal/workshop/directory/config/DirectoryProperties.java new file mode 100644 index 0000000..7f80ccb --- /dev/null +++ b/src/main/UploadedContent/Spring-Boot-2.0.0.M7.a.RELEASE/03-spring-boot-internals/directory-web-internals/src/main/java/io/pivotal/workshop/directory/config/DirectoryProperties.java @@ -0,0 +1,29 @@ +package io.pivotal.workshop.directory.config; + +import org.springframework.boot.context.properties.ConfigurationProperties; + + +//SOLUTION: +@ConfigurationProperties(prefix = "directory") +public class DirectoryProperties { + + private String audit = "off"; + private String info = "long"; + + public String getAudit() { + return audit; + } + + public void setAudit(String audit) { + this.audit = audit; + } + + public String getInfo() { + return info; + } + + public void setInfo(String info) { + this.info = info; + } + +} diff --git a/src/main/UploadedContent/Spring-Boot-2.0.0.M7.a.RELEASE/03-spring-boot-internals/directory-web-internals/src/main/java/io/pivotal/workshop/directory/controller/DirectoryController.java b/src/main/UploadedContent/Spring-Boot-2.0.0.M7.a.RELEASE/03-spring-boot-internals/directory-web-internals/src/main/java/io/pivotal/workshop/directory/controller/DirectoryController.java new file mode 100644 index 0000000..a73fffb --- /dev/null +++ b/src/main/UploadedContent/Spring-Boot-2.0.0.M7.a.RELEASE/03-spring-boot-internals/directory-web-internals/src/main/java/io/pivotal/workshop/directory/controller/DirectoryController.java @@ -0,0 +1,116 @@ +package io.pivotal.workshop.directory.controller; + +import java.net.URI; +import java.util.Optional; + +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.http.HttpStatus; +import org.springframework.http.ResponseEntity; +import org.springframework.web.bind.annotation.PathVariable; +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.RequestParam; +import org.springframework.web.bind.annotation.ResponseStatus; +import org.springframework.web.bind.annotation.RestController; +import org.springframework.web.servlet.support.ServletUriComponentsBuilder; + +import io.pivotal.workshop.directory.domain.Person; +import io.pivotal.workshop.directory.repository.DirectoryRepository; + +@RestController +public class DirectoryController { + + private DirectoryRepository repo; + + @Autowired + public DirectoryController(DirectoryRepository repo) { + this.repo = repo; + } + + @RequestMapping("/directory") + public ResponseEntity> findAll() { + return ResponseEntity.ok(this.repo.findAll()); + } + + + //SOLUTION: Challenges + @RequestMapping("/directory/{id}") + public ResponseEntity findById(@PathVariable String id) { + Optional result = this.repo.findById(id); + + if (result.isPresent()) { + return ResponseEntity.ok(result.get()); + } + + return ResponseEntity.status(HttpStatus.NOT_FOUND).body("{}"); + } + + @RequestMapping("/directory/search") + public ResponseEntity searchByEmail(@RequestParam String email) { + Optional result = this.repo.findByEmail(email); + + if (result.isPresent()) { + return ResponseEntity.ok(result.get()); + } + + return ResponseEntity.status(HttpStatus.NOT_FOUND).body("{}"); + } + + @RequestMapping(value = "/directory/{id}", method = { RequestMethod.DELETE }) + @ResponseStatus(HttpStatus.NO_CONTENT) + public void deletePerson(@PathVariable String id) { + this.repo.delete(id); + } + + + @RequestMapping(value = "/directory", method = { RequestMethod.POST }) + public ResponseEntity addPerson(@RequestBody Person person) { + + return this.save(person); + } + + @RequestMapping(value = "/directory", method = { RequestMethod.PUT }) + public ResponseEntity updatePerson(@RequestBody Person person) { + return this.save(person); + } + + private ResponseEntity save(Person person) { + + Person result = this.repo.save(person); + + final URI location = ServletUriComponentsBuilder.fromCurrentServletMapping().path("/directory/{id}").build() + .expand(person.getId()).toUri(); + + return ResponseEntity.created(location).body(result); + } + + + //SOLUTION: Homework + /* + @RequestMapping(value = "/directory", method = { RequestMethod.POST }) + public ResponseEntity addPerson(@Valid @RequestBody Person person, BindingResult bindingResult) { + + return this.save(person, bindingResult); + } + + @RequestMapping(value = "/directory", method = { RequestMethod.PUT }) + public ResponseEntity updatePerson(@Valid @RequestBody Person person, BindingResult bindingResult) { + return this.save(person, bindingResult); + } + + private ResponseEntity save(Person person, BindingResult bindingResult) { + + if (bindingResult.hasErrors()) { + return ResponseEntity.status(HttpStatus.BAD_REQUEST).body(new PersonError(bindingResult.getAllErrors())); + } + + Person result = this.repo.save(person); + + final URI location = ServletUriComponentsBuilder.fromCurrentServletMapping().path("/directory/{id}").build() + .expand(person.getId()).toUri(); + + return ResponseEntity.created(location).body(result); + } + */ +} diff --git a/src/main/UploadedContent/Spring-Boot-2.0.0.M7.a.RELEASE/03-spring-boot-internals/directory-web-internals/src/main/java/io/pivotal/workshop/directory/domain/Person.java b/src/main/UploadedContent/Spring-Boot-2.0.0.M7.a.RELEASE/03-spring-boot-internals/directory-web-internals/src/main/java/io/pivotal/workshop/directory/domain/Person.java new file mode 100644 index 0000000..5b4ba27 --- /dev/null +++ b/src/main/UploadedContent/Spring-Boot-2.0.0.M7.a.RELEASE/03-spring-boot-internals/directory-web-internals/src/main/java/io/pivotal/workshop/directory/domain/Person.java @@ -0,0 +1,115 @@ +package io.pivotal.workshop.directory.domain; + +import java.text.ParseException; +import java.text.SimpleDateFormat; +import java.util.Date; +import java.util.UUID; + +import javax.validation.constraints.NotNull; + +public class Person { + + private SimpleDateFormat date = new SimpleDateFormat("yyyy-MM-dd"); + + private String id; + + @NotNull + private String email; + @NotNull + private String name; + @NotNull + private String password; + private Date birthday; + private Date created; + private Date modified; + + public Person() { + this.id = UUID.randomUUID().toString().replaceAll("-", ""); + this.created = new Date(); + this.modified = new Date(); + } + + public Person(String email, String name, String password, String birthday) { + this(); + this.email = email; + this.name = name; + this.password = password; + + try { + this.birthday = date.parse(birthday); + } catch (ParseException e) { + this.birthday = null; + } + } + + public Person(String email, String name, String password, Date birthday) { + this(); + this.email = email; + this.name = name; + this.password = password; + this.birthday = birthday; + } + + public String getId() { + return id; + } + + public void setId(String id) { + this.id = id; + } + + public String getEmail() { + return email; + } + + public void setEmail(String email) { + this.email = email; + } + + public String getName() { + return name; + } + + public void setName(String name) { + this.name = name; + } + + public String getPassword() { + return password; + } + + public void setPassword(String password) { + this.password = password; + } + + public Date getBirthday() { + return birthday; + } + + public void setBirthday(Date birthday) { + this.birthday = birthday; + } + + public Date getCreated() { + return created; + } + + public void setCreated(Date created) { + this.created = created; + } + + public Date getModified() { + return modified; + } + + public void setModified(Date modified) { + this.modified = modified; + } + + @Override + public String toString() { + return "Person [date=" + date + ", id=" + id + ", email=" + email + ", name=" + name + ", password=" + password + + ", birthday=" + birthday + ", created=" + created + ", modified=" + modified + "]"; + } + +} diff --git a/src/main/UploadedContent/Spring-Boot-2.0.0.M7.a.RELEASE/03-spring-boot-internals/directory-web-internals/src/main/java/io/pivotal/workshop/directory/error/PersonError.java b/src/main/UploadedContent/Spring-Boot-2.0.0.M7.a.RELEASE/03-spring-boot-internals/directory-web-internals/src/main/java/io/pivotal/workshop/directory/error/PersonError.java new file mode 100644 index 0000000..5b0611e --- /dev/null +++ b/src/main/UploadedContent/Spring-Boot-2.0.0.M7.a.RELEASE/03-spring-boot-internals/directory-web-internals/src/main/java/io/pivotal/workshop/directory/error/PersonError.java @@ -0,0 +1,40 @@ +package io.pivotal.workshop.directory.error; + +import java.util.Date; +import java.util.List; + +import org.springframework.validation.ObjectError; + +public class PersonError { + + private List errors; + private Date date; + + public PersonError(){ + this.date = new Date(); + } + + public PersonError(List errors){ + this(); + this.errors = errors; + } + + public List getErrors() { + return errors; + } + + public void setErrors(List errors) { + this.errors = errors; + } + + public Date getDate() { + return date; + } + + public void setDate(Date date) { + this.date = date; + } + + + +} diff --git a/src/main/UploadedContent/Spring-Boot-2.0.0.M7.a.RELEASE/03-spring-boot-internals/directory-web-internals/src/main/java/io/pivotal/workshop/directory/repository/DirectoryRepository.java b/src/main/UploadedContent/Spring-Boot-2.0.0.M7.a.RELEASE/03-spring-boot-internals/directory-web-internals/src/main/java/io/pivotal/workshop/directory/repository/DirectoryRepository.java new file mode 100644 index 0000000..d2c0907 --- /dev/null +++ b/src/main/UploadedContent/Spring-Boot-2.0.0.M7.a.RELEASE/03-spring-boot-internals/directory-web-internals/src/main/java/io/pivotal/workshop/directory/repository/DirectoryRepository.java @@ -0,0 +1,79 @@ +package io.pivotal.workshop.directory.repository; + +import java.util.ArrayList; +import java.util.Date; +import java.util.List; +import java.util.Optional; +import java.util.UUID; +import java.util.function.Predicate; + +import org.springframework.stereotype.Repository; + +import io.pivotal.workshop.directory.annotation.Audit; +import io.pivotal.workshop.directory.domain.Person; + +@Repository +public class DirectoryRepository { + + + @SuppressWarnings("serial") + private List directory = new ArrayList(){{ + add(new Person("john@email.com","John S","password","1985-11-10")); + add(new Person("mike@email.com","Mike H","password","1984-12-02")); + add(new Person("dan@email.com","Dan B","password","1983-03-07")); + add(new Person("bill@email.com","Bill G","password","1983-06-12")); + add(new Person("mark@email.com","Mark S","password","1986-02-22")); + }}; + + public Iterable findAll(){ + return this.directory; + } + + // SOLUTION: + @Audit + public Optional findByEmail(String email){ + return findFirstBy( p -> p.getEmail().equals(email)); + } + + public Optional findById(String id){ + return findFirstBy( p -> p.getId().equals(id)); + } + + public Person save(Person person){ + Optional result = this.findById(person.getId()); + + if(result.isPresent()){ + + if( person.getEmail() != null) result.get().setEmail(person.getEmail()); + if( person.getName() != null) result.get().setName(person.getName()); + if( person.getPassword() != null) result.get().setPassword(person.getPassword()); + if( person.getBirthday() != null) result.get().setBirthday(person.getBirthday()); + result.get().setModified(new Date()); + + return result.get(); + + }else{ + + if (person.getId() != null){ + person.setId(UUID.randomUUID().toString().replaceAll("-","")); + } + + person.setCreated(new Date()); + person.setModified(new Date()); + this.directory.add(person); + + return person; + } + } + + public void delete(String id){ + this.findById(id).ifPresent(p -> { this.directory.remove(p); }); + } + + private Optional findFirstBy(Predicate findBy){ + return directory.stream() + .filter(findBy) + .findFirst(); + } + +} diff --git a/src/main/UploadedContent/Spring-Boot-2.0.0.M7.a.RELEASE/03-spring-boot-internals/directory-web-internals/src/main/resources/META-INF/additional-spring-configuration-metadata.json b/src/main/UploadedContent/Spring-Boot-2.0.0.M7.a.RELEASE/03-spring-boot-internals/directory-web-internals/src/main/resources/META-INF/additional-spring-configuration-metadata.json new file mode 100644 index 0000000..f61eb2c --- /dev/null +++ b/src/main/UploadedContent/Spring-Boot-2.0.0.M7.a.RELEASE/03-spring-boot-internals/directory-web-internals/src/main/resources/META-INF/additional-spring-configuration-metadata.json @@ -0,0 +1,9 @@ +{"properties": [{ + "name": "directory.audit", + "type": "java.lang.String", + "description": "Directory Audit, use the @Audit annotation over methods, possible values: on, off" +},{ + "name": "directory.info", + "type": "java.lang.String", + "description": "Directory Audit, print out information about paramters and result. Possible values: short, long (default)" +}]} \ No newline at end of file diff --git a/src/main/UploadedContent/Spring-Boot-2.0.0.M7.a.RELEASE/03-spring-boot-internals/directory-web-internals/src/main/resources/application.properties b/src/main/UploadedContent/Spring-Boot-2.0.0.M7.a.RELEASE/03-spring-boot-internals/directory-web-internals/src/main/resources/application.properties new file mode 100644 index 0000000..00673cd --- /dev/null +++ b/src/main/UploadedContent/Spring-Boot-2.0.0.M7.a.RELEASE/03-spring-boot-internals/directory-web-internals/src/main/resources/application.properties @@ -0,0 +1,6 @@ +# SOLUTION: Date format +#spring.jackson.date-format=yyyy-MM-dd + + +#directory.audit=off +#directory.info=short \ No newline at end of file diff --git a/src/main/UploadedContent/Spring-Boot-2.0.0.M7.a.RELEASE/03-spring-boot-internals/directory-web-internals/src/test/java/io/pivotal/workshop/directory/DirectoryWebInternalsApplicationTests.java b/src/main/UploadedContent/Spring-Boot-2.0.0.M7.a.RELEASE/03-spring-boot-internals/directory-web-internals/src/test/java/io/pivotal/workshop/directory/DirectoryWebInternalsApplicationTests.java new file mode 100644 index 0000000..12c24c0 --- /dev/null +++ b/src/main/UploadedContent/Spring-Boot-2.0.0.M7.a.RELEASE/03-spring-boot-internals/directory-web-internals/src/test/java/io/pivotal/workshop/directory/DirectoryWebInternalsApplicationTests.java @@ -0,0 +1,16 @@ +package io.pivotal.workshop.directory; + +import org.junit.Test; +import org.junit.runner.RunWith; +import org.springframework.boot.test.context.SpringBootTest; +import org.springframework.test.context.junit4.SpringRunner; + +@RunWith(SpringRunner.class) +@SpringBootTest +public class DirectoryWebInternalsApplicationTests { + + @Test + public void contextLoads() { + } + +} diff --git a/src/main/UploadedContent/Spring-Boot-2.0.0.M7.a.RELEASE/04-spring-boot-features/directory-web-features/.mvn/wrapper/maven-wrapper.properties b/src/main/UploadedContent/Spring-Boot-2.0.0.M7.a.RELEASE/04-spring-boot-features/directory-web-features/.mvn/wrapper/maven-wrapper.properties new file mode 100644 index 0000000..c315043 --- /dev/null +++ b/src/main/UploadedContent/Spring-Boot-2.0.0.M7.a.RELEASE/04-spring-boot-features/directory-web-features/.mvn/wrapper/maven-wrapper.properties @@ -0,0 +1 @@ +distributionUrl=https://repo1.maven.org/maven2/org/apache/maven/apache-maven/3.5.0/apache-maven-3.5.0-bin.zip diff --git a/src/main/UploadedContent/Spring-Boot-2.0.0.M7.a.RELEASE/04-spring-boot-features/directory-web-features/build.gradle b/src/main/UploadedContent/Spring-Boot-2.0.0.M7.a.RELEASE/04-spring-boot-features/directory-web-features/build.gradle new file mode 100644 index 0000000..1df9956 --- /dev/null +++ b/src/main/UploadedContent/Spring-Boot-2.0.0.M7.a.RELEASE/04-spring-boot-features/directory-web-features/build.gradle @@ -0,0 +1,42 @@ +buildscript { + ext { + springBootVersion = '2.0.0.M7' + } + repositories { + mavenCentral() + maven { url "https://repo.spring.io/snapshot" } + maven { url "https://repo.spring.io/milestone" } + } + dependencies { + classpath("org.springframework.boot:spring-boot-gradle-plugin:${springBootVersion}") + } +} + +apply plugin: 'java' +apply plugin: 'eclipse' +apply plugin: 'org.springframework.boot' +apply plugin: 'io.spring.dependency-management' + +version = '0.0.1-SNAPSHOT' +sourceCompatibility = 1.8 + +repositories { + mavenCentral() + maven { url "https://repo.spring.io/snapshot" } + maven { url "https://repo.spring.io/milestone" } +} + + +dependencies { + compile('org.springframework.boot:spring-boot-starter-web') + compile('org.springframework.boot:spring-boot-starter-aop') + + + compile('org.springframework.boot:spring-boot-devtools') + optional("org.springframework.boot:spring-boot-configuration-processor") + + // SOLUTION: XML response + // compile('com.fasterxml.jackson.dataformat:jackson-dataformat-xml') + + testCompile('org.springframework.boot:spring-boot-starter-test') +} diff --git a/src/main/UploadedContent/Spring-Boot-2.0.0.M7.a.RELEASE/04-spring-boot-features/directory-web-features/gradle/wrapper/gradle-wrapper.properties b/src/main/UploadedContent/Spring-Boot-2.0.0.M7.a.RELEASE/04-spring-boot-features/directory-web-features/gradle/wrapper/gradle-wrapper.properties new file mode 100644 index 0000000..90a06ce --- /dev/null +++ b/src/main/UploadedContent/Spring-Boot-2.0.0.M7.a.RELEASE/04-spring-boot-features/directory-web-features/gradle/wrapper/gradle-wrapper.properties @@ -0,0 +1,5 @@ +distributionBase=GRADLE_USER_HOME +distributionPath=wrapper/dists +zipStoreBase=GRADLE_USER_HOME +zipStorePath=wrapper/dists +distributionUrl=https\://services.gradle.org/distributions/gradle-3.5.1-bin.zip diff --git a/src/main/UploadedContent/Spring-Boot-2.0.0.M7.a.RELEASE/04-spring-boot-features/directory-web-features/gradlew b/src/main/UploadedContent/Spring-Boot-2.0.0.M7.a.RELEASE/04-spring-boot-features/directory-web-features/gradlew new file mode 100644 index 0000000..4453cce --- /dev/null +++ b/src/main/UploadedContent/Spring-Boot-2.0.0.M7.a.RELEASE/04-spring-boot-features/directory-web-features/gradlew @@ -0,0 +1,172 @@ +#!/usr/bin/env sh + +############################################################################## +## +## Gradle start up script for UN*X +## +############################################################################## + +# Attempt to set APP_HOME +# Resolve links: $0 may be a link +PRG="$0" +# Need this for relative symlinks. +while [ -h "$PRG" ] ; do + ls=`ls -ld "$PRG"` + link=`expr "$ls" : '.*-> \(.*\)$'` + if expr "$link" : '/.*' > /dev/null; then + PRG="$link" + else + PRG=`dirname "$PRG"`"/$link" + fi +done +SAVED="`pwd`" +cd "`dirname \"$PRG\"`/" >/dev/null +APP_HOME="`pwd -P`" +cd "$SAVED" >/dev/null + +APP_NAME="Gradle" +APP_BASE_NAME=`basename "$0"` + +# Add default JVM options here. You can also use JAVA_OPTS and GRADLE_OPTS to pass JVM options to this script. +DEFAULT_JVM_OPTS="" + +# Use the maximum available, or set MAX_FD != -1 to use that value. +MAX_FD="maximum" + +warn ( ) { + echo "$*" +} + +die ( ) { + echo + echo "$*" + echo + exit 1 +} + +# OS specific support (must be 'true' or 'false'). +cygwin=false +msys=false +darwin=false +nonstop=false +case "`uname`" in + CYGWIN* ) + cygwin=true + ;; + Darwin* ) + darwin=true + ;; + MINGW* ) + msys=true + ;; + NONSTOP* ) + nonstop=true + ;; +esac + +CLASSPATH=$APP_HOME/gradle/wrapper/gradle-wrapper.jar + +# Determine the Java command to use to start the JVM. +if [ -n "$JAVA_HOME" ] ; then + if [ -x "$JAVA_HOME/jre/sh/java" ] ; then + # IBM's JDK on AIX uses strange locations for the executables + JAVACMD="$JAVA_HOME/jre/sh/java" + else + JAVACMD="$JAVA_HOME/bin/java" + fi + if [ ! -x "$JAVACMD" ] ; then + die "ERROR: JAVA_HOME is set to an invalid directory: $JAVA_HOME + +Please set the JAVA_HOME variable in your environment to match the +location of your Java installation." + fi +else + JAVACMD="java" + which java >/dev/null 2>&1 || die "ERROR: JAVA_HOME is not set and no 'java' command could be found in your PATH. + +Please set the JAVA_HOME variable in your environment to match the +location of your Java installation." +fi + +# Increase the maximum file descriptors if we can. +if [ "$cygwin" = "false" -a "$darwin" = "false" -a "$nonstop" = "false" ] ; then + MAX_FD_LIMIT=`ulimit -H -n` + if [ $? -eq 0 ] ; then + if [ "$MAX_FD" = "maximum" -o "$MAX_FD" = "max" ] ; then + MAX_FD="$MAX_FD_LIMIT" + fi + ulimit -n $MAX_FD + if [ $? -ne 0 ] ; then + warn "Could not set maximum file descriptor limit: $MAX_FD" + fi + else + warn "Could not query maximum file descriptor limit: $MAX_FD_LIMIT" + fi +fi + +# For Darwin, add options to specify how the application appears in the dock +if $darwin; then + GRADLE_OPTS="$GRADLE_OPTS \"-Xdock:name=$APP_NAME\" \"-Xdock:icon=$APP_HOME/media/gradle.icns\"" +fi + +# For Cygwin, switch paths to Windows format before running java +if $cygwin ; then + APP_HOME=`cygpath --path --mixed "$APP_HOME"` + CLASSPATH=`cygpath --path --mixed "$CLASSPATH"` + JAVACMD=`cygpath --unix "$JAVACMD"` + + # We build the pattern for arguments to be converted via cygpath + ROOTDIRSRAW=`find -L / -maxdepth 1 -mindepth 1 -type d 2>/dev/null` + SEP="" + for dir in $ROOTDIRSRAW ; do + ROOTDIRS="$ROOTDIRS$SEP$dir" + SEP="|" + done + OURCYGPATTERN="(^($ROOTDIRS))" + # Add a user-defined pattern to the cygpath arguments + if [ "$GRADLE_CYGPATTERN" != "" ] ; then + OURCYGPATTERN="$OURCYGPATTERN|($GRADLE_CYGPATTERN)" + fi + # Now convert the arguments - kludge to limit ourselves to /bin/sh + i=0 + for arg in "$@" ; do + CHECK=`echo "$arg"|egrep -c "$OURCYGPATTERN" -` + CHECK2=`echo "$arg"|egrep -c "^-"` ### Determine if an option + + if [ $CHECK -ne 0 ] && [ $CHECK2 -eq 0 ] ; then ### Added a condition + eval `echo args$i`=`cygpath --path --ignore --mixed "$arg"` + else + eval `echo args$i`="\"$arg\"" + fi + i=$((i+1)) + done + case $i in + (0) set -- ;; + (1) set -- "$args0" ;; + (2) set -- "$args0" "$args1" ;; + (3) set -- "$args0" "$args1" "$args2" ;; + (4) set -- "$args0" "$args1" "$args2" "$args3" ;; + (5) set -- "$args0" "$args1" "$args2" "$args3" "$args4" ;; + (6) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" ;; + (7) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" "$args6" ;; + (8) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" "$args6" "$args7" ;; + (9) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" "$args6" "$args7" "$args8" ;; + esac +fi + +# Escape application args +save ( ) { + for i do printf %s\\n "$i" | sed "s/'/'\\\\''/g;1s/^/'/;\$s/\$/' \\\\/" ; done + echo " " +} +APP_ARGS=$(save "$@") + +# Collect all arguments for the java command, following the shell quoting and substitution rules +eval set -- $DEFAULT_JVM_OPTS $JAVA_OPTS $GRADLE_OPTS "\"-Dorg.gradle.appname=$APP_BASE_NAME\"" -classpath "\"$CLASSPATH\"" org.gradle.wrapper.GradleWrapperMain "$APP_ARGS" + +# by default we should be in the correct project dir, but when run from Finder on Mac, the cwd is wrong +if [ "$(uname)" = "Darwin" ] && [ "$HOME" = "$PWD" ]; then + cd "$(dirname "$0")" +fi + +exec "$JAVACMD" "$@" diff --git a/src/main/UploadedContent/Spring-Boot-2.0.0.M7.a.RELEASE/04-spring-boot-features/directory-web-features/gradlew.bat b/src/main/UploadedContent/Spring-Boot-2.0.0.M7.a.RELEASE/04-spring-boot-features/directory-web-features/gradlew.bat new file mode 100644 index 0000000..e95643d --- /dev/null +++ b/src/main/UploadedContent/Spring-Boot-2.0.0.M7.a.RELEASE/04-spring-boot-features/directory-web-features/gradlew.bat @@ -0,0 +1,84 @@ +@if "%DEBUG%" == "" @echo off +@rem ########################################################################## +@rem +@rem Gradle startup script for Windows +@rem +@rem ########################################################################## + +@rem Set local scope for the variables with windows NT shell +if "%OS%"=="Windows_NT" setlocal + +set DIRNAME=%~dp0 +if "%DIRNAME%" == "" set DIRNAME=. +set APP_BASE_NAME=%~n0 +set APP_HOME=%DIRNAME% + +@rem Add default JVM options here. You can also use JAVA_OPTS and GRADLE_OPTS to pass JVM options to this script. +set DEFAULT_JVM_OPTS= + +@rem Find java.exe +if defined JAVA_HOME goto findJavaFromJavaHome + +set JAVA_EXE=java.exe +%JAVA_EXE% -version >NUL 2>&1 +if "%ERRORLEVEL%" == "0" goto init + +echo. +echo ERROR: JAVA_HOME is not set and no 'java' command could be found in your PATH. +echo. +echo Please set the JAVA_HOME variable in your environment to match the +echo location of your Java installation. + +goto fail + +:findJavaFromJavaHome +set JAVA_HOME=%JAVA_HOME:"=% +set JAVA_EXE=%JAVA_HOME%/bin/java.exe + +if exist "%JAVA_EXE%" goto init + +echo. +echo ERROR: JAVA_HOME is set to an invalid directory: %JAVA_HOME% +echo. +echo Please set the JAVA_HOME variable in your environment to match the +echo location of your Java installation. + +goto fail + +:init +@rem Get command-line arguments, handling Windows variants + +if not "%OS%" == "Windows_NT" goto win9xME_args + +:win9xME_args +@rem Slurp the command line arguments. +set CMD_LINE_ARGS= +set _SKIP=2 + +:win9xME_args_slurp +if "x%~1" == "x" goto execute + +set CMD_LINE_ARGS=%* + +:execute +@rem Setup the command line + +set CLASSPATH=%APP_HOME%\gradle\wrapper\gradle-wrapper.jar + +@rem Execute Gradle +"%JAVA_EXE%" %DEFAULT_JVM_OPTS% %JAVA_OPTS% %GRADLE_OPTS% "-Dorg.gradle.appname=%APP_BASE_NAME%" -classpath "%CLASSPATH%" org.gradle.wrapper.GradleWrapperMain %CMD_LINE_ARGS% + +:end +@rem End local scope for the variables with windows NT shell +if "%ERRORLEVEL%"=="0" goto mainEnd + +:fail +rem Set variable GRADLE_EXIT_CONSOLE if you need the _script_ return code instead of +rem the _cmd.exe /c_ return code! +if not "" == "%GRADLE_EXIT_CONSOLE%" exit 1 +exit /b 1 + +:mainEnd +if "%OS%"=="Windows_NT" endlocal + +:omega diff --git a/src/main/UploadedContent/Spring-Boot-2.0.0.M7.a.RELEASE/04-spring-boot-features/directory-web-features/pom.xml b/src/main/UploadedContent/Spring-Boot-2.0.0.M7.a.RELEASE/04-spring-boot-features/directory-web-features/pom.xml new file mode 100644 index 0000000..ff2307b --- /dev/null +++ b/src/main/UploadedContent/Spring-Boot-2.0.0.M7.a.RELEASE/04-spring-boot-features/directory-web-features/pom.xml @@ -0,0 +1,114 @@ + + + 4.0.0 + + io.pivotal.workshop + directory-web-features + 0.0.1-SNAPSHOT + jar + + directory-web-features + Demo project for Spring Boot + + + org.springframework.boot + spring-boot-starter-parent + 2.0.0.M7 + + + + + UTF-8 + UTF-8 + 1.8 + + + + + org.springframework.boot + spring-boot-starter-web + + + + org.springframework.boot + spring-boot-starter-aop + + + + + + + + org.springframework.boot + spring-boot-devtools + + + + + org.springframework.boot + spring-boot-starter-test + test + + + + org.springframework.boot + spring-boot-configuration-processor + true + + + + + + + org.springframework.boot + spring-boot-maven-plugin + + + + + + + spring-snapshots + Spring Snapshots + https://repo.spring.io/snapshot + + true + + + + spring-milestones + Spring Milestones + https://repo.spring.io/milestone + + false + + + + + + + spring-snapshots + Spring Snapshots + https://repo.spring.io/snapshot + + true + + + + spring-milestones + Spring Milestones + https://repo.spring.io/milestone + + false + + + + + + diff --git a/src/main/UploadedContent/Spring-Boot-2.0.0.M7.a.RELEASE/04-spring-boot-features/directory-web-features/src/main/java/io/pivotal/workshop/directory/DirectoryWebFeaturesApplication.java b/src/main/UploadedContent/Spring-Boot-2.0.0.M7.a.RELEASE/04-spring-boot-features/directory-web-features/src/main/java/io/pivotal/workshop/directory/DirectoryWebFeaturesApplication.java new file mode 100644 index 0000000..3d38a3e --- /dev/null +++ b/src/main/UploadedContent/Spring-Boot-2.0.0.M7.a.RELEASE/04-spring-boot-features/directory-web-features/src/main/java/io/pivotal/workshop/directory/DirectoryWebFeaturesApplication.java @@ -0,0 +1,78 @@ +package io.pivotal.workshop.directory; + +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; +import org.springframework.boot.ApplicationRunner; +import org.springframework.boot.Banner; +import org.springframework.boot.CommandLineRunner; +import org.springframework.boot.SpringApplication; +import org.springframework.boot.autoconfigure.SpringBootApplication; +import org.springframework.context.annotation.Bean; + +import java.util.stream.Stream; + +@SpringBootApplication +public class DirectoryWebFeaturesApplication { + + // SOLUTION: Using Application Listeners + //private static final Logger log = LoggerFactory.getLogger("[EVENTS]"); + + private static final Logger log = LoggerFactory.getLogger("[ARGS]"); + + public static void main(String[] args) { + //SpringApplication.run(DirectoryWebFeaturesApplication.class, args); + + //SOLUTION: + /* Turn off Banner + SpringApplication app = new SpringApplication(DirectoryWebFeaturesApplication.class); + app.setBannerMode(Banner.Mode.OFF); + app.run(args); + */ + + /* Using Application Listeners + ApplicationListener event = e -> { + log.info(e.toString()); + }; + + SpringApplication app = new SpringApplication(DirectoryWebFeaturesApplication.class); + app.setBannerMode(Banner.Mode.OFF); + app.setListeners(Arrays.asList(event)); + app.run(args); + */ + + /* Turn off Web Context + SpringApplication app = new SpringApplication(DirectoryWebFeaturesApplication.class); + app.setWebApplicationType(WebApplicationType.NONE); + app.run(args); + */ + + SpringApplication app = new SpringApplication(DirectoryWebFeaturesApplication.class); + app.run(args); + + } + + @Bean + public ApplicationRunner appRunner() { + return args -> { + args.getOptionNames().forEach( s -> { + log.info("Option Name: " + s); + }); + + if (args.containsOption("option")) log.info("Found Value:" + args.getOptionValues("option").toString()); + if (args.containsOption("enable-audit")) log.info("Found Value:" + args.getOptionValues("enable-audit").toString()); + + Stream.of(args.getSourceArgs()).forEach( s -> { + log.info("Argument: " + s); + }); + }; + } + + @Bean + public CommandLineRunner commandRunner() { + return args -> { + Stream.of(args).forEach(s -> { + log.info("CommandLine: " + s); + }); + }; + } +} diff --git a/src/main/UploadedContent/Spring-Boot-2.0.0.M7.a.RELEASE/04-spring-boot-features/directory-web-features/src/main/java/io/pivotal/workshop/directory/annotation/Audit.java b/src/main/UploadedContent/Spring-Boot-2.0.0.M7.a.RELEASE/04-spring-boot-features/directory-web-features/src/main/java/io/pivotal/workshop/directory/annotation/Audit.java new file mode 100644 index 0000000..ddb2121 --- /dev/null +++ b/src/main/UploadedContent/Spring-Boot-2.0.0.M7.a.RELEASE/04-spring-boot-features/directory-web-features/src/main/java/io/pivotal/workshop/directory/annotation/Audit.java @@ -0,0 +1,12 @@ +package io.pivotal.workshop.directory.annotation; + +import java.lang.annotation.ElementType; +import java.lang.annotation.Retention; +import java.lang.annotation.RetentionPolicy; +import java.lang.annotation.Target; + +@Target(ElementType.METHOD) +@Retention(RetentionPolicy.RUNTIME) +public @interface Audit { + Auditor value() default Auditor.NOTHING; +} diff --git a/src/main/UploadedContent/Spring-Boot-2.0.0.M7.a.RELEASE/04-spring-boot-features/directory-web-features/src/main/java/io/pivotal/workshop/directory/annotation/Auditor.java b/src/main/UploadedContent/Spring-Boot-2.0.0.M7.a.RELEASE/04-spring-boot-features/directory-web-features/src/main/java/io/pivotal/workshop/directory/annotation/Auditor.java new file mode 100644 index 0000000..44fcec3 --- /dev/null +++ b/src/main/UploadedContent/Spring-Boot-2.0.0.M7.a.RELEASE/04-spring-boot-features/directory-web-features/src/main/java/io/pivotal/workshop/directory/annotation/Auditor.java @@ -0,0 +1,5 @@ +package io.pivotal.workshop.directory.annotation; + +public enum Auditor { + BEFORE, AFTER, BEFORE_AND_AFTER, NOTHING +} diff --git a/src/main/UploadedContent/Spring-Boot-2.0.0.M7.a.RELEASE/04-spring-boot-features/directory-web-features/src/main/java/io/pivotal/workshop/directory/aop/DirectoryAudit.java b/src/main/UploadedContent/Spring-Boot-2.0.0.M7.a.RELEASE/04-spring-boot-features/directory-web-features/src/main/java/io/pivotal/workshop/directory/aop/DirectoryAudit.java new file mode 100644 index 0000000..9dae222 --- /dev/null +++ b/src/main/UploadedContent/Spring-Boot-2.0.0.M7.a.RELEASE/04-spring-boot-features/directory-web-features/src/main/java/io/pivotal/workshop/directory/aop/DirectoryAudit.java @@ -0,0 +1,74 @@ +package io.pivotal.workshop.directory.aop; + +import java.util.stream.IntStream; + +import org.aspectj.lang.ProceedingJoinPoint; +import org.aspectj.lang.annotation.Around; +import org.aspectj.lang.annotation.Aspect; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; + +import io.pivotal.workshop.directory.annotation.Audit; +import io.pivotal.workshop.directory.config.DirectoryProperties; + +@Aspect +public class DirectoryAudit { + + private DirectoryProperties props; + + public DirectoryAudit(DirectoryProperties props){ + this.props = props; + } + + private static Logger log = LoggerFactory.getLogger("[AUDIT]"); + + @Around("execution(* *(..)) && @annotation(audit)") + public Object audit(ProceedingJoinPoint jp, Audit audit) throws Throwable { + // Step. Get the Arguments + Object[] args = jp.getArgs(); + + // Step. Print execution information + this.printBar(); + this.print("[executing] " + (props.getInfo().toLowerCase().equals("short") ? jp.getSignature().getName() : jp.getSignature() )); + + // Step. Print arguments if any + switch (audit.value()) { + case BEFORE: + case BEFORE_AND_AFTER: + this.printArgs(args); + default: + break; + } + + // Step. Proceed + Object obj = jp.proceed(args); + + // Step. Print result if needed + switch (audit.value()) { + case AFTER: + case BEFORE_AND_AFTER: + this.print("[result] " + obj); + default: + this.printBar(); + break; + } + + // Step. Return + return obj; + } + + private void print(Object obj) { + log.info(obj.toString()); + } + + private void printArgs(Object[] args) { + IntStream.range(0, args.length).forEach(idx -> { + log.info(String.format("[params] arg%d = %s", idx, args[idx])); + }); + + } + + private void printBar(){ + log.info("==========="); + } +} diff --git a/src/main/UploadedContent/Spring-Boot-2.0.0.M7.a.RELEASE/04-spring-boot-features/directory-web-features/src/main/java/io/pivotal/workshop/directory/aop/SimpleAudit.java b/src/main/UploadedContent/Spring-Boot-2.0.0.M7.a.RELEASE/04-spring-boot-features/directory-web-features/src/main/java/io/pivotal/workshop/directory/aop/SimpleAudit.java new file mode 100644 index 0000000..a31cd5f --- /dev/null +++ b/src/main/UploadedContent/Spring-Boot-2.0.0.M7.a.RELEASE/04-spring-boot-features/directory-web-features/src/main/java/io/pivotal/workshop/directory/aop/SimpleAudit.java @@ -0,0 +1,20 @@ +package io.pivotal.workshop.directory.aop; + +import org.aspectj.lang.JoinPoint; +import org.aspectj.lang.annotation.Aspect; +import org.aspectj.lang.annotation.Before; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; + +import io.pivotal.workshop.directory.annotation.Audit; + +@Aspect +public class SimpleAudit { + + private static Logger log = LoggerFactory.getLogger("[AUDIT]"); + + @Before("@annotation(audit)") + public void audit(JoinPoint jp, Audit audit){ + log.info("[EXECUTING] " + jp.getSignature()); + } +} diff --git a/src/main/UploadedContent/Spring-Boot-2.0.0.M7.a.RELEASE/04-spring-boot-features/directory-web-features/src/main/java/io/pivotal/workshop/directory/config/DirectoryConfig.java b/src/main/UploadedContent/Spring-Boot-2.0.0.M7.a.RELEASE/04-spring-boot-features/directory-web-features/src/main/java/io/pivotal/workshop/directory/config/DirectoryConfig.java new file mode 100644 index 0000000..8e4f482 --- /dev/null +++ b/src/main/UploadedContent/Spring-Boot-2.0.0.M7.a.RELEASE/04-spring-boot-features/directory-web-features/src/main/java/io/pivotal/workshop/directory/config/DirectoryConfig.java @@ -0,0 +1,33 @@ +package io.pivotal.workshop.directory.config; + +import org.springframework.boot.autoconfigure.condition.ConditionalOnClass; +import org.springframework.context.annotation.Bean; +import org.springframework.context.annotation.Configuration; + +import io.pivotal.workshop.directory.aop.SimpleAudit; + +@Configuration +public class DirectoryConfig { + + @ConditionalOnClass(name={"io.pivotal.workshop.directory.repository.DirectoryRepository"}) + @Bean + public SimpleAudit simpleAudit(){ + return new SimpleAudit(); + } + +} + +// SOLUTION: +/* +@Configuration +@EnableConfigurationProperties(DirectoryProperties.class) +public class DirectoryConfig { + + @ConditionalOnProperty(prefix="directory",name="audit",havingValue="on") + @Bean + public DirectoryAudit directoryAudit(DirectoryProperties props){ + return new DirectoryAudit(props); + } + +} +*/ \ No newline at end of file diff --git a/src/main/UploadedContent/Spring-Boot-2.0.0.M7.a.RELEASE/04-spring-boot-features/directory-web-features/src/main/java/io/pivotal/workshop/directory/config/DirectoryProperties.java b/src/main/UploadedContent/Spring-Boot-2.0.0.M7.a.RELEASE/04-spring-boot-features/directory-web-features/src/main/java/io/pivotal/workshop/directory/config/DirectoryProperties.java new file mode 100644 index 0000000..7f80ccb --- /dev/null +++ b/src/main/UploadedContent/Spring-Boot-2.0.0.M7.a.RELEASE/04-spring-boot-features/directory-web-features/src/main/java/io/pivotal/workshop/directory/config/DirectoryProperties.java @@ -0,0 +1,29 @@ +package io.pivotal.workshop.directory.config; + +import org.springframework.boot.context.properties.ConfigurationProperties; + + +//SOLUTION: +@ConfigurationProperties(prefix = "directory") +public class DirectoryProperties { + + private String audit = "off"; + private String info = "long"; + + public String getAudit() { + return audit; + } + + public void setAudit(String audit) { + this.audit = audit; + } + + public String getInfo() { + return info; + } + + public void setInfo(String info) { + this.info = info; + } + +} diff --git a/src/main/UploadedContent/Spring-Boot-2.0.0.M7.a.RELEASE/04-spring-boot-features/directory-web-features/src/main/java/io/pivotal/workshop/directory/controller/DirectoryController.java b/src/main/UploadedContent/Spring-Boot-2.0.0.M7.a.RELEASE/04-spring-boot-features/directory-web-features/src/main/java/io/pivotal/workshop/directory/controller/DirectoryController.java new file mode 100644 index 0000000..a73fffb --- /dev/null +++ b/src/main/UploadedContent/Spring-Boot-2.0.0.M7.a.RELEASE/04-spring-boot-features/directory-web-features/src/main/java/io/pivotal/workshop/directory/controller/DirectoryController.java @@ -0,0 +1,116 @@ +package io.pivotal.workshop.directory.controller; + +import java.net.URI; +import java.util.Optional; + +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.http.HttpStatus; +import org.springframework.http.ResponseEntity; +import org.springframework.web.bind.annotation.PathVariable; +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.RequestParam; +import org.springframework.web.bind.annotation.ResponseStatus; +import org.springframework.web.bind.annotation.RestController; +import org.springframework.web.servlet.support.ServletUriComponentsBuilder; + +import io.pivotal.workshop.directory.domain.Person; +import io.pivotal.workshop.directory.repository.DirectoryRepository; + +@RestController +public class DirectoryController { + + private DirectoryRepository repo; + + @Autowired + public DirectoryController(DirectoryRepository repo) { + this.repo = repo; + } + + @RequestMapping("/directory") + public ResponseEntity> findAll() { + return ResponseEntity.ok(this.repo.findAll()); + } + + + //SOLUTION: Challenges + @RequestMapping("/directory/{id}") + public ResponseEntity findById(@PathVariable String id) { + Optional result = this.repo.findById(id); + + if (result.isPresent()) { + return ResponseEntity.ok(result.get()); + } + + return ResponseEntity.status(HttpStatus.NOT_FOUND).body("{}"); + } + + @RequestMapping("/directory/search") + public ResponseEntity searchByEmail(@RequestParam String email) { + Optional result = this.repo.findByEmail(email); + + if (result.isPresent()) { + return ResponseEntity.ok(result.get()); + } + + return ResponseEntity.status(HttpStatus.NOT_FOUND).body("{}"); + } + + @RequestMapping(value = "/directory/{id}", method = { RequestMethod.DELETE }) + @ResponseStatus(HttpStatus.NO_CONTENT) + public void deletePerson(@PathVariable String id) { + this.repo.delete(id); + } + + + @RequestMapping(value = "/directory", method = { RequestMethod.POST }) + public ResponseEntity addPerson(@RequestBody Person person) { + + return this.save(person); + } + + @RequestMapping(value = "/directory", method = { RequestMethod.PUT }) + public ResponseEntity updatePerson(@RequestBody Person person) { + return this.save(person); + } + + private ResponseEntity save(Person person) { + + Person result = this.repo.save(person); + + final URI location = ServletUriComponentsBuilder.fromCurrentServletMapping().path("/directory/{id}").build() + .expand(person.getId()).toUri(); + + return ResponseEntity.created(location).body(result); + } + + + //SOLUTION: Homework + /* + @RequestMapping(value = "/directory", method = { RequestMethod.POST }) + public ResponseEntity addPerson(@Valid @RequestBody Person person, BindingResult bindingResult) { + + return this.save(person, bindingResult); + } + + @RequestMapping(value = "/directory", method = { RequestMethod.PUT }) + public ResponseEntity updatePerson(@Valid @RequestBody Person person, BindingResult bindingResult) { + return this.save(person, bindingResult); + } + + private ResponseEntity save(Person person, BindingResult bindingResult) { + + if (bindingResult.hasErrors()) { + return ResponseEntity.status(HttpStatus.BAD_REQUEST).body(new PersonError(bindingResult.getAllErrors())); + } + + Person result = this.repo.save(person); + + final URI location = ServletUriComponentsBuilder.fromCurrentServletMapping().path("/directory/{id}").build() + .expand(person.getId()).toUri(); + + return ResponseEntity.created(location).body(result); + } + */ +} diff --git a/src/main/UploadedContent/Spring-Boot-2.0.0.M7.a.RELEASE/04-spring-boot-features/directory-web-features/src/main/java/io/pivotal/workshop/directory/domain/Person.java b/src/main/UploadedContent/Spring-Boot-2.0.0.M7.a.RELEASE/04-spring-boot-features/directory-web-features/src/main/java/io/pivotal/workshop/directory/domain/Person.java new file mode 100644 index 0000000..5b4ba27 --- /dev/null +++ b/src/main/UploadedContent/Spring-Boot-2.0.0.M7.a.RELEASE/04-spring-boot-features/directory-web-features/src/main/java/io/pivotal/workshop/directory/domain/Person.java @@ -0,0 +1,115 @@ +package io.pivotal.workshop.directory.domain; + +import java.text.ParseException; +import java.text.SimpleDateFormat; +import java.util.Date; +import java.util.UUID; + +import javax.validation.constraints.NotNull; + +public class Person { + + private SimpleDateFormat date = new SimpleDateFormat("yyyy-MM-dd"); + + private String id; + + @NotNull + private String email; + @NotNull + private String name; + @NotNull + private String password; + private Date birthday; + private Date created; + private Date modified; + + public Person() { + this.id = UUID.randomUUID().toString().replaceAll("-", ""); + this.created = new Date(); + this.modified = new Date(); + } + + public Person(String email, String name, String password, String birthday) { + this(); + this.email = email; + this.name = name; + this.password = password; + + try { + this.birthday = date.parse(birthday); + } catch (ParseException e) { + this.birthday = null; + } + } + + public Person(String email, String name, String password, Date birthday) { + this(); + this.email = email; + this.name = name; + this.password = password; + this.birthday = birthday; + } + + public String getId() { + return id; + } + + public void setId(String id) { + this.id = id; + } + + public String getEmail() { + return email; + } + + public void setEmail(String email) { + this.email = email; + } + + public String getName() { + return name; + } + + public void setName(String name) { + this.name = name; + } + + public String getPassword() { + return password; + } + + public void setPassword(String password) { + this.password = password; + } + + public Date getBirthday() { + return birthday; + } + + public void setBirthday(Date birthday) { + this.birthday = birthday; + } + + public Date getCreated() { + return created; + } + + public void setCreated(Date created) { + this.created = created; + } + + public Date getModified() { + return modified; + } + + public void setModified(Date modified) { + this.modified = modified; + } + + @Override + public String toString() { + return "Person [date=" + date + ", id=" + id + ", email=" + email + ", name=" + name + ", password=" + password + + ", birthday=" + birthday + ", created=" + created + ", modified=" + modified + "]"; + } + +} diff --git a/src/main/UploadedContent/Spring-Boot-2.0.0.M7.a.RELEASE/04-spring-boot-features/directory-web-features/src/main/java/io/pivotal/workshop/directory/error/PersonError.java b/src/main/UploadedContent/Spring-Boot-2.0.0.M7.a.RELEASE/04-spring-boot-features/directory-web-features/src/main/java/io/pivotal/workshop/directory/error/PersonError.java new file mode 100644 index 0000000..5b0611e --- /dev/null +++ b/src/main/UploadedContent/Spring-Boot-2.0.0.M7.a.RELEASE/04-spring-boot-features/directory-web-features/src/main/java/io/pivotal/workshop/directory/error/PersonError.java @@ -0,0 +1,40 @@ +package io.pivotal.workshop.directory.error; + +import java.util.Date; +import java.util.List; + +import org.springframework.validation.ObjectError; + +public class PersonError { + + private List errors; + private Date date; + + public PersonError(){ + this.date = new Date(); + } + + public PersonError(List errors){ + this(); + this.errors = errors; + } + + public List getErrors() { + return errors; + } + + public void setErrors(List errors) { + this.errors = errors; + } + + public Date getDate() { + return date; + } + + public void setDate(Date date) { + this.date = date; + } + + + +} diff --git a/src/main/UploadedContent/Spring-Boot-2.0.0.M7.a.RELEASE/04-spring-boot-features/directory-web-features/src/main/java/io/pivotal/workshop/directory/repository/DirectoryRepository.java b/src/main/UploadedContent/Spring-Boot-2.0.0.M7.a.RELEASE/04-spring-boot-features/directory-web-features/src/main/java/io/pivotal/workshop/directory/repository/DirectoryRepository.java new file mode 100644 index 0000000..d2c0907 --- /dev/null +++ b/src/main/UploadedContent/Spring-Boot-2.0.0.M7.a.RELEASE/04-spring-boot-features/directory-web-features/src/main/java/io/pivotal/workshop/directory/repository/DirectoryRepository.java @@ -0,0 +1,79 @@ +package io.pivotal.workshop.directory.repository; + +import java.util.ArrayList; +import java.util.Date; +import java.util.List; +import java.util.Optional; +import java.util.UUID; +import java.util.function.Predicate; + +import org.springframework.stereotype.Repository; + +import io.pivotal.workshop.directory.annotation.Audit; +import io.pivotal.workshop.directory.domain.Person; + +@Repository +public class DirectoryRepository { + + + @SuppressWarnings("serial") + private List directory = new ArrayList(){{ + add(new Person("john@email.com","John S","password","1985-11-10")); + add(new Person("mike@email.com","Mike H","password","1984-12-02")); + add(new Person("dan@email.com","Dan B","password","1983-03-07")); + add(new Person("bill@email.com","Bill G","password","1983-06-12")); + add(new Person("mark@email.com","Mark S","password","1986-02-22")); + }}; + + public Iterable findAll(){ + return this.directory; + } + + // SOLUTION: + @Audit + public Optional findByEmail(String email){ + return findFirstBy( p -> p.getEmail().equals(email)); + } + + public Optional findById(String id){ + return findFirstBy( p -> p.getId().equals(id)); + } + + public Person save(Person person){ + Optional result = this.findById(person.getId()); + + if(result.isPresent()){ + + if( person.getEmail() != null) result.get().setEmail(person.getEmail()); + if( person.getName() != null) result.get().setName(person.getName()); + if( person.getPassword() != null) result.get().setPassword(person.getPassword()); + if( person.getBirthday() != null) result.get().setBirthday(person.getBirthday()); + result.get().setModified(new Date()); + + return result.get(); + + }else{ + + if (person.getId() != null){ + person.setId(UUID.randomUUID().toString().replaceAll("-","")); + } + + person.setCreated(new Date()); + person.setModified(new Date()); + this.directory.add(person); + + return person; + } + } + + public void delete(String id){ + this.findById(id).ifPresent(p -> { this.directory.remove(p); }); + } + + private Optional findFirstBy(Predicate findBy){ + return directory.stream() + .filter(findBy) + .findFirst(); + } + +} diff --git a/src/main/UploadedContent/Spring-Boot-2.0.0.M7.a.RELEASE/04-spring-boot-features/directory-web-features/src/main/resources/META-INF/MANIFEST.MF b/src/main/UploadedContent/Spring-Boot-2.0.0.M7.a.RELEASE/04-spring-boot-features/directory-web-features/src/main/resources/META-INF/MANIFEST.MF new file mode 100644 index 0000000..b3363c0 --- /dev/null +++ b/src/main/UploadedContent/Spring-Boot-2.0.0.M7.a.RELEASE/04-spring-boot-features/directory-web-features/src/main/resources/META-INF/MANIFEST.MF @@ -0,0 +1,3 @@ +Manifest-Version: 1.0 +Implementation-Title: Directory Service +Implementation-Version: 0.0.1-SNAPSHOT \ No newline at end of file diff --git a/src/main/UploadedContent/Spring-Boot-2.0.0.M7.a.RELEASE/04-spring-boot-features/directory-web-features/src/main/resources/META-INF/additional-spring-configuration-metadata.json b/src/main/UploadedContent/Spring-Boot-2.0.0.M7.a.RELEASE/04-spring-boot-features/directory-web-features/src/main/resources/META-INF/additional-spring-configuration-metadata.json new file mode 100644 index 0000000..f61eb2c --- /dev/null +++ b/src/main/UploadedContent/Spring-Boot-2.0.0.M7.a.RELEASE/04-spring-boot-features/directory-web-features/src/main/resources/META-INF/additional-spring-configuration-metadata.json @@ -0,0 +1,9 @@ +{"properties": [{ + "name": "directory.audit", + "type": "java.lang.String", + "description": "Directory Audit, use the @Audit annotation over methods, possible values: on, off" +},{ + "name": "directory.info", + "type": "java.lang.String", + "description": "Directory Audit, print out information about paramters and result. Possible values: short, long (default)" +}]} \ No newline at end of file diff --git a/src/main/UploadedContent/Spring-Boot-2.0.0.M7.a.RELEASE/04-spring-boot-features/directory-web-features/src/main/resources/application.properties b/src/main/UploadedContent/Spring-Boot-2.0.0.M7.a.RELEASE/04-spring-boot-features/directory-web-features/src/main/resources/application.properties new file mode 100644 index 0000000..267081d --- /dev/null +++ b/src/main/UploadedContent/Spring-Boot-2.0.0.M7.a.RELEASE/04-spring-boot-features/directory-web-features/src/main/resources/application.properties @@ -0,0 +1,14 @@ +# SOLUTION: Date format +#spring.jackson.date-format=yyyy-MM-dd + +#directory.audit=off +#directory.info=short + + +#debug=false + +logging.level.org.springframework=INFO + +#spring.main.banner-mode= +#spring.main.web-environment= +#spring.main.sources= \ No newline at end of file diff --git a/src/main/UploadedContent/Spring-Boot-2.0.0.M7.a.RELEASE/04-spring-boot-features/directory-web-features/src/main/resources/banner.txt b/src/main/UploadedContent/Spring-Boot-2.0.0.M7.a.RELEASE/04-spring-boot-features/directory-web-features/src/main/resources/banner.txt new file mode 100644 index 0000000..d4c2c1a --- /dev/null +++ b/src/main/UploadedContent/Spring-Boot-2.0.0.M7.a.RELEASE/04-spring-boot-features/directory-web-features/src/main/resources/banner.txt @@ -0,0 +1,10 @@ + ____ _ _ ____ _ +| _ \(_)_ __ ___ ___| |_ ___ _ __ _ _ / ___| ___ _ ____ _(_) ___ ___ +| | | | | '__/ _ \/ __| __/ _ \| '__| | | | \___ \ / _ \ '__\ \ / / |/ __/ _ \ +| |_| | | | | __/ (__| || (_) | | | |_| | ___) | __/ | \ V /| | (_| __/ +|____/|_|_| \___|\___|\__\___/|_| \__, | |____/ \___|_| \_/ |_|\___\___| + |___/ +Using Spring Boot: ${spring-boot.version} + +${application.version} +${application.title} \ No newline at end of file diff --git a/src/main/UploadedContent/Spring-Boot-2.0.0.M7.a.RELEASE/04-spring-boot-features/directory-web-features/src/main/resources/static/index.html b/src/main/UploadedContent/Spring-Boot-2.0.0.M7.a.RELEASE/04-spring-boot-features/directory-web-features/src/main/resources/static/index.html new file mode 100644 index 0000000..af4d664 --- /dev/null +++ b/src/main/UploadedContent/Spring-Boot-2.0.0.M7.a.RELEASE/04-spring-boot-features/directory-web-features/src/main/resources/static/index.html @@ -0,0 +1 @@ +

Directory Service API

\ No newline at end of file diff --git a/src/main/UploadedContent/Spring-Boot-2.0.0.M7.a.RELEASE/04-spring-boot-features/directory-web-features/src/test/java/io/pivotal/workshop/directory/DirectoryWebFeaturesApplicationTests.java b/src/main/UploadedContent/Spring-Boot-2.0.0.M7.a.RELEASE/04-spring-boot-features/directory-web-features/src/test/java/io/pivotal/workshop/directory/DirectoryWebFeaturesApplicationTests.java new file mode 100644 index 0000000..aaa9ee6 --- /dev/null +++ b/src/main/UploadedContent/Spring-Boot-2.0.0.M7.a.RELEASE/04-spring-boot-features/directory-web-features/src/test/java/io/pivotal/workshop/directory/DirectoryWebFeaturesApplicationTests.java @@ -0,0 +1,16 @@ +package io.pivotal.workshop.directory; + +import org.junit.Test; +import org.junit.runner.RunWith; +import org.springframework.boot.test.context.SpringBootTest; +import org.springframework.test.context.junit4.SpringRunner; + +@RunWith(SpringRunner.class) +@SpringBootTest +public class DirectoryWebFeaturesApplicationTests { + + @Test + public void contextLoads() { + } + +} diff --git a/src/main/UploadedContent/Spring-Boot-2.0.0.M7.a.RELEASE/05-spring-boot-web/code-snippet-manager/.mvn/wrapper/maven-wrapper.properties b/src/main/UploadedContent/Spring-Boot-2.0.0.M7.a.RELEASE/05-spring-boot-web/code-snippet-manager/.mvn/wrapper/maven-wrapper.properties new file mode 100644 index 0000000..c315043 --- /dev/null +++ b/src/main/UploadedContent/Spring-Boot-2.0.0.M7.a.RELEASE/05-spring-boot-web/code-snippet-manager/.mvn/wrapper/maven-wrapper.properties @@ -0,0 +1 @@ +distributionUrl=https://repo1.maven.org/maven2/org/apache/maven/apache-maven/3.5.0/apache-maven-3.5.0-bin.zip diff --git a/src/main/UploadedContent/Spring-Boot-2.0.0.M7.a.RELEASE/05-spring-boot-web/code-snippet-manager/build.gradle b/src/main/UploadedContent/Spring-Boot-2.0.0.M7.a.RELEASE/05-spring-boot-web/code-snippet-manager/build.gradle new file mode 100644 index 0000000..cc030d3 --- /dev/null +++ b/src/main/UploadedContent/Spring-Boot-2.0.0.M7.a.RELEASE/05-spring-boot-web/code-snippet-manager/build.gradle @@ -0,0 +1,37 @@ +buildscript { + ext { + springBootVersion = '2.0.0.M7' + } + repositories { + mavenCentral() + maven { url "https://repo.spring.io/snapshot" } + maven { url "https://repo.spring.io/milestone" } + } + dependencies { + classpath("org.springframework.boot:spring-boot-gradle-plugin:${springBootVersion}") + } +} + +apply plugin: 'java' +apply plugin: 'eclipse' +apply plugin: 'org.springframework.boot' +apply plugin: 'io.spring.dependency-management' + +version = '0.0.1-SNAPSHOT' +sourceCompatibility = 1.8 + +repositories { + mavenCentral() + maven { url "https://repo.spring.io/snapshot" } + maven { url "https://repo.spring.io/milestone" } +} + +dependencies { + compile('org.springframework.boot:spring-boot-starter-groovy-templates') + compile('org.springframework.boot:spring-boot-starter-web') + compile('org.webjars:jquery:2.2.4') + compile('org.webjars:bootstrap:3.3.6') + compile('org.webjars:angularjs:1.5.7') + runtime('org.springframework.boot:spring-boot-devtools') + testCompile('org.springframework.boot:spring-boot-starter-test') +} diff --git a/src/main/UploadedContent/Spring-Boot-2.0.0.M7.a.RELEASE/05-spring-boot-web/code-snippet-manager/code/cs-code.txt b/src/main/UploadedContent/Spring-Boot-2.0.0.M7.a.RELEASE/05-spring-boot-web/code-snippet-manager/code/cs-code.txt new file mode 100644 index 0000000..077a1e4 --- /dev/null +++ b/src/main/UploadedContent/Spring-Boot-2.0.0.M7.a.RELEASE/05-spring-boot-web/code-snippet-manager/code/cs-code.txt @@ -0,0 +1,5 @@ +class Hello { + static void Main() { + System.Console.Write("Hello World"); + } +} \ No newline at end of file diff --git a/src/main/UploadedContent/Spring-Boot-2.0.0.M7.a.RELEASE/05-spring-boot-web/code-snippet-manager/code/erl-code.txt b/src/main/UploadedContent/Spring-Boot-2.0.0.M7.a.RELEASE/05-spring-boot-web/code-snippet-manager/code/erl-code.txt new file mode 100644 index 0000000..c45b6f0 --- /dev/null +++ b/src/main/UploadedContent/Spring-Boot-2.0.0.M7.a.RELEASE/05-spring-boot-web/code-snippet-manager/code/erl-code.txt @@ -0,0 +1,4 @@ + -module(hello). + -export([hello_world/0]). + + hello_world() -> io:fwrite("hello, world\n"). \ No newline at end of file diff --git a/src/main/UploadedContent/Spring-Boot-2.0.0.M7.a.RELEASE/05-spring-boot-web/code-snippet-manager/code/html-code.txt b/src/main/UploadedContent/Spring-Boot-2.0.0.M7.a.RELEASE/05-spring-boot-web/code-snippet-manager/code/html-code.txt new file mode 100644 index 0000000..c22655d --- /dev/null +++ b/src/main/UploadedContent/Spring-Boot-2.0.0.M7.a.RELEASE/05-spring-boot-web/code-snippet-manager/code/html-code.txt @@ -0,0 +1,5 @@ + + +

Hello World

+ + \ No newline at end of file diff --git a/src/main/UploadedContent/Spring-Boot-2.0.0.M7.a.RELEASE/05-spring-boot-web/code-snippet-manager/code/js-code.txt b/src/main/UploadedContent/Spring-Boot-2.0.0.M7.a.RELEASE/05-spring-boot-web/code-snippet-manager/code/js-code.txt new file mode 100644 index 0000000..7df7d57 --- /dev/null +++ b/src/main/UploadedContent/Spring-Boot-2.0.0.M7.a.RELEASE/05-spring-boot-web/code-snippet-manager/code/js-code.txt @@ -0,0 +1 @@ +console.log("Hello World"); \ No newline at end of file diff --git a/src/main/UploadedContent/Spring-Boot-2.0.0.M7.a.RELEASE/05-spring-boot-web/code-snippet-manager/code/pas-code.txt b/src/main/UploadedContent/Spring-Boot-2.0.0.M7.a.RELEASE/05-spring-boot-web/code-snippet-manager/code/pas-code.txt new file mode 100644 index 0000000..0564b41 --- /dev/null +++ b/src/main/UploadedContent/Spring-Boot-2.0.0.M7.a.RELEASE/05-spring-boot-web/code-snippet-manager/code/pas-code.txt @@ -0,0 +1,5 @@ +program HelloWorld; + +begin + writeln('Hello World'); +end. \ No newline at end of file diff --git a/src/main/UploadedContent/Spring-Boot-2.0.0.M7.a.RELEASE/05-spring-boot-web/code-snippet-manager/gradle/wrapper/gradle-wrapper.properties b/src/main/UploadedContent/Spring-Boot-2.0.0.M7.a.RELEASE/05-spring-boot-web/code-snippet-manager/gradle/wrapper/gradle-wrapper.properties new file mode 100644 index 0000000..90a06ce --- /dev/null +++ b/src/main/UploadedContent/Spring-Boot-2.0.0.M7.a.RELEASE/05-spring-boot-web/code-snippet-manager/gradle/wrapper/gradle-wrapper.properties @@ -0,0 +1,5 @@ +distributionBase=GRADLE_USER_HOME +distributionPath=wrapper/dists +zipStoreBase=GRADLE_USER_HOME +zipStorePath=wrapper/dists +distributionUrl=https\://services.gradle.org/distributions/gradle-3.5.1-bin.zip diff --git a/src/main/UploadedContent/Spring-Boot-2.0.0.M7.a.RELEASE/05-spring-boot-web/code-snippet-manager/gradlew b/src/main/UploadedContent/Spring-Boot-2.0.0.M7.a.RELEASE/05-spring-boot-web/code-snippet-manager/gradlew new file mode 100644 index 0000000..4453cce --- /dev/null +++ b/src/main/UploadedContent/Spring-Boot-2.0.0.M7.a.RELEASE/05-spring-boot-web/code-snippet-manager/gradlew @@ -0,0 +1,172 @@ +#!/usr/bin/env sh + +############################################################################## +## +## Gradle start up script for UN*X +## +############################################################################## + +# Attempt to set APP_HOME +# Resolve links: $0 may be a link +PRG="$0" +# Need this for relative symlinks. +while [ -h "$PRG" ] ; do + ls=`ls -ld "$PRG"` + link=`expr "$ls" : '.*-> \(.*\)$'` + if expr "$link" : '/.*' > /dev/null; then + PRG="$link" + else + PRG=`dirname "$PRG"`"/$link" + fi +done +SAVED="`pwd`" +cd "`dirname \"$PRG\"`/" >/dev/null +APP_HOME="`pwd -P`" +cd "$SAVED" >/dev/null + +APP_NAME="Gradle" +APP_BASE_NAME=`basename "$0"` + +# Add default JVM options here. You can also use JAVA_OPTS and GRADLE_OPTS to pass JVM options to this script. +DEFAULT_JVM_OPTS="" + +# Use the maximum available, or set MAX_FD != -1 to use that value. +MAX_FD="maximum" + +warn ( ) { + echo "$*" +} + +die ( ) { + echo + echo "$*" + echo + exit 1 +} + +# OS specific support (must be 'true' or 'false'). +cygwin=false +msys=false +darwin=false +nonstop=false +case "`uname`" in + CYGWIN* ) + cygwin=true + ;; + Darwin* ) + darwin=true + ;; + MINGW* ) + msys=true + ;; + NONSTOP* ) + nonstop=true + ;; +esac + +CLASSPATH=$APP_HOME/gradle/wrapper/gradle-wrapper.jar + +# Determine the Java command to use to start the JVM. +if [ -n "$JAVA_HOME" ] ; then + if [ -x "$JAVA_HOME/jre/sh/java" ] ; then + # IBM's JDK on AIX uses strange locations for the executables + JAVACMD="$JAVA_HOME/jre/sh/java" + else + JAVACMD="$JAVA_HOME/bin/java" + fi + if [ ! -x "$JAVACMD" ] ; then + die "ERROR: JAVA_HOME is set to an invalid directory: $JAVA_HOME + +Please set the JAVA_HOME variable in your environment to match the +location of your Java installation." + fi +else + JAVACMD="java" + which java >/dev/null 2>&1 || die "ERROR: JAVA_HOME is not set and no 'java' command could be found in your PATH. + +Please set the JAVA_HOME variable in your environment to match the +location of your Java installation." +fi + +# Increase the maximum file descriptors if we can. +if [ "$cygwin" = "false" -a "$darwin" = "false" -a "$nonstop" = "false" ] ; then + MAX_FD_LIMIT=`ulimit -H -n` + if [ $? -eq 0 ] ; then + if [ "$MAX_FD" = "maximum" -o "$MAX_FD" = "max" ] ; then + MAX_FD="$MAX_FD_LIMIT" + fi + ulimit -n $MAX_FD + if [ $? -ne 0 ] ; then + warn "Could not set maximum file descriptor limit: $MAX_FD" + fi + else + warn "Could not query maximum file descriptor limit: $MAX_FD_LIMIT" + fi +fi + +# For Darwin, add options to specify how the application appears in the dock +if $darwin; then + GRADLE_OPTS="$GRADLE_OPTS \"-Xdock:name=$APP_NAME\" \"-Xdock:icon=$APP_HOME/media/gradle.icns\"" +fi + +# For Cygwin, switch paths to Windows format before running java +if $cygwin ; then + APP_HOME=`cygpath --path --mixed "$APP_HOME"` + CLASSPATH=`cygpath --path --mixed "$CLASSPATH"` + JAVACMD=`cygpath --unix "$JAVACMD"` + + # We build the pattern for arguments to be converted via cygpath + ROOTDIRSRAW=`find -L / -maxdepth 1 -mindepth 1 -type d 2>/dev/null` + SEP="" + for dir in $ROOTDIRSRAW ; do + ROOTDIRS="$ROOTDIRS$SEP$dir" + SEP="|" + done + OURCYGPATTERN="(^($ROOTDIRS))" + # Add a user-defined pattern to the cygpath arguments + if [ "$GRADLE_CYGPATTERN" != "" ] ; then + OURCYGPATTERN="$OURCYGPATTERN|($GRADLE_CYGPATTERN)" + fi + # Now convert the arguments - kludge to limit ourselves to /bin/sh + i=0 + for arg in "$@" ; do + CHECK=`echo "$arg"|egrep -c "$OURCYGPATTERN" -` + CHECK2=`echo "$arg"|egrep -c "^-"` ### Determine if an option + + if [ $CHECK -ne 0 ] && [ $CHECK2 -eq 0 ] ; then ### Added a condition + eval `echo args$i`=`cygpath --path --ignore --mixed "$arg"` + else + eval `echo args$i`="\"$arg\"" + fi + i=$((i+1)) + done + case $i in + (0) set -- ;; + (1) set -- "$args0" ;; + (2) set -- "$args0" "$args1" ;; + (3) set -- "$args0" "$args1" "$args2" ;; + (4) set -- "$args0" "$args1" "$args2" "$args3" ;; + (5) set -- "$args0" "$args1" "$args2" "$args3" "$args4" ;; + (6) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" ;; + (7) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" "$args6" ;; + (8) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" "$args6" "$args7" ;; + (9) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" "$args6" "$args7" "$args8" ;; + esac +fi + +# Escape application args +save ( ) { + for i do printf %s\\n "$i" | sed "s/'/'\\\\''/g;1s/^/'/;\$s/\$/' \\\\/" ; done + echo " " +} +APP_ARGS=$(save "$@") + +# Collect all arguments for the java command, following the shell quoting and substitution rules +eval set -- $DEFAULT_JVM_OPTS $JAVA_OPTS $GRADLE_OPTS "\"-Dorg.gradle.appname=$APP_BASE_NAME\"" -classpath "\"$CLASSPATH\"" org.gradle.wrapper.GradleWrapperMain "$APP_ARGS" + +# by default we should be in the correct project dir, but when run from Finder on Mac, the cwd is wrong +if [ "$(uname)" = "Darwin" ] && [ "$HOME" = "$PWD" ]; then + cd "$(dirname "$0")" +fi + +exec "$JAVACMD" "$@" diff --git a/src/main/UploadedContent/Spring-Boot-2.0.0.M7.a.RELEASE/05-spring-boot-web/code-snippet-manager/gradlew.bat b/src/main/UploadedContent/Spring-Boot-2.0.0.M7.a.RELEASE/05-spring-boot-web/code-snippet-manager/gradlew.bat new file mode 100644 index 0000000..e95643d --- /dev/null +++ b/src/main/UploadedContent/Spring-Boot-2.0.0.M7.a.RELEASE/05-spring-boot-web/code-snippet-manager/gradlew.bat @@ -0,0 +1,84 @@ +@if "%DEBUG%" == "" @echo off +@rem ########################################################################## +@rem +@rem Gradle startup script for Windows +@rem +@rem ########################################################################## + +@rem Set local scope for the variables with windows NT shell +if "%OS%"=="Windows_NT" setlocal + +set DIRNAME=%~dp0 +if "%DIRNAME%" == "" set DIRNAME=. +set APP_BASE_NAME=%~n0 +set APP_HOME=%DIRNAME% + +@rem Add default JVM options here. You can also use JAVA_OPTS and GRADLE_OPTS to pass JVM options to this script. +set DEFAULT_JVM_OPTS= + +@rem Find java.exe +if defined JAVA_HOME goto findJavaFromJavaHome + +set JAVA_EXE=java.exe +%JAVA_EXE% -version >NUL 2>&1 +if "%ERRORLEVEL%" == "0" goto init + +echo. +echo ERROR: JAVA_HOME is not set and no 'java' command could be found in your PATH. +echo. +echo Please set the JAVA_HOME variable in your environment to match the +echo location of your Java installation. + +goto fail + +:findJavaFromJavaHome +set JAVA_HOME=%JAVA_HOME:"=% +set JAVA_EXE=%JAVA_HOME%/bin/java.exe + +if exist "%JAVA_EXE%" goto init + +echo. +echo ERROR: JAVA_HOME is set to an invalid directory: %JAVA_HOME% +echo. +echo Please set the JAVA_HOME variable in your environment to match the +echo location of your Java installation. + +goto fail + +:init +@rem Get command-line arguments, handling Windows variants + +if not "%OS%" == "Windows_NT" goto win9xME_args + +:win9xME_args +@rem Slurp the command line arguments. +set CMD_LINE_ARGS= +set _SKIP=2 + +:win9xME_args_slurp +if "x%~1" == "x" goto execute + +set CMD_LINE_ARGS=%* + +:execute +@rem Setup the command line + +set CLASSPATH=%APP_HOME%\gradle\wrapper\gradle-wrapper.jar + +@rem Execute Gradle +"%JAVA_EXE%" %DEFAULT_JVM_OPTS% %JAVA_OPTS% %GRADLE_OPTS% "-Dorg.gradle.appname=%APP_BASE_NAME%" -classpath "%CLASSPATH%" org.gradle.wrapper.GradleWrapperMain %CMD_LINE_ARGS% + +:end +@rem End local scope for the variables with windows NT shell +if "%ERRORLEVEL%"=="0" goto mainEnd + +:fail +rem Set variable GRADLE_EXIT_CONSOLE if you need the _script_ return code instead of +rem the _cmd.exe /c_ return code! +if not "" == "%GRADLE_EXIT_CONSOLE%" exit 1 +exit /b 1 + +:mainEnd +if "%OS%"=="Windows_NT" endlocal + +:omega diff --git a/src/main/UploadedContent/Spring-Boot-2.0.0.M7.a.RELEASE/05-spring-boot-web/code-snippet-manager/pom.xml b/src/main/UploadedContent/Spring-Boot-2.0.0.M7.a.RELEASE/05-spring-boot-web/code-snippet-manager/pom.xml new file mode 100644 index 0000000..8e40d2d --- /dev/null +++ b/src/main/UploadedContent/Spring-Boot-2.0.0.M7.a.RELEASE/05-spring-boot-web/code-snippet-manager/pom.xml @@ -0,0 +1,119 @@ + + + 4.0.0 + + io.pivotal.workshop + code-snippet-manager + 0.0.1-SNAPSHOT + jar + + code-snippet-manager + Demo project for Spring Boot + + + org.springframework.boot + spring-boot-starter-parent + 2.0.0.M7 + + + + + UTF-8 + UTF-8 + 1.8 + + + + + org.springframework.boot + spring-boot-starter-groovy-templates + + + org.springframework.boot + spring-boot-starter-web + + + + org.webjars + jquery + 2.2.4 + + + org.webjars + bootstrap + 3.3.6 + + + org.webjars + angularjs + 1.5.7 + + + + + + org.springframework.boot + spring-boot-devtools + runtime + + + org.springframework.boot + spring-boot-starter-test + test + + + + + + + org.springframework.boot + spring-boot-maven-plugin + + + + + + + spring-snapshots + Spring Snapshots + https://repo.spring.io/snapshot + + true + + + + spring-milestones + Spring Milestones + https://repo.spring.io/milestone + + false + + + + + + + spring-snapshots + Spring Snapshots + https://repo.spring.io/snapshot + + true + + + + spring-milestones + Spring Milestones + https://repo.spring.io/milestone + + false + + + + + diff --git a/src/main/UploadedContent/Spring-Boot-2.0.0.M7.a.RELEASE/05-spring-boot-web/code-snippet-manager/src/main/java/io/pivotal/workshop/snippet/CodeSnippetManagerApplication.java b/src/main/UploadedContent/Spring-Boot-2.0.0.M7.a.RELEASE/05-spring-boot-web/code-snippet-manager/src/main/java/io/pivotal/workshop/snippet/CodeSnippetManagerApplication.java new file mode 100644 index 0000000..f98033d --- /dev/null +++ b/src/main/UploadedContent/Spring-Boot-2.0.0.M7.a.RELEASE/05-spring-boot-web/code-snippet-manager/src/main/java/io/pivotal/workshop/snippet/CodeSnippetManagerApplication.java @@ -0,0 +1,13 @@ +package io.pivotal.workshop.snippet; + +import org.springframework.boot.SpringApplication; +import org.springframework.boot.autoconfigure.SpringBootApplication; + +@SpringBootApplication +public class CodeSnippetManagerApplication { + + public static void main(String[] args) { + SpringApplication.run(CodeSnippetManagerApplication.class, args); + } + +} diff --git a/src/main/UploadedContent/Spring-Boot-2.0.0.M7.a.RELEASE/05-spring-boot-web/code-snippet-manager/src/main/java/io/pivotal/workshop/snippet/config/SnippetConfiguration.java b/src/main/UploadedContent/Spring-Boot-2.0.0.M7.a.RELEASE/05-spring-boot-web/code-snippet-manager/src/main/java/io/pivotal/workshop/snippet/config/SnippetConfiguration.java new file mode 100644 index 0000000..335d056 --- /dev/null +++ b/src/main/UploadedContent/Spring-Boot-2.0.0.M7.a.RELEASE/05-spring-boot-web/code-snippet-manager/src/main/java/io/pivotal/workshop/snippet/config/SnippetConfiguration.java @@ -0,0 +1,39 @@ +package io.pivotal.workshop.snippet.config; + +import java.nio.file.Files; +import java.nio.file.Paths; +import java.util.ArrayList; +import java.util.List; + +import org.springframework.boot.CommandLineRunner; +import org.springframework.context.annotation.Bean; +import org.springframework.context.annotation.Configuration; + +import io.pivotal.workshop.snippet.domain.Code; +import io.pivotal.workshop.snippet.domain.Language; +import io.pivotal.workshop.snippet.domain.Snippet; +import io.pivotal.workshop.snippet.repository.SnippetRepository; + +@Configuration +public class SnippetConfiguration { + + @Bean + public CommandLineRunner runner(SnippetRepository snippetRepo) { + return args -> { + @SuppressWarnings("serial") + List snippets = new ArrayList() { + { + add(new Snippet("Hello World", new Language("HTML", "xml"),new Code(new String(Files.readAllBytes(Paths.get("code/html-code.txt")))))); + add(new Snippet("Hello World", new Language("C#", "c#"),new Code(new String(Files.readAllBytes(Paths.get("code/cs-code.txt")))))); + add(new Snippet("Hello World", new Language("Pascal", "py"),new Code(new String(Files.readAllBytes(Paths.get("code/pas-code.txt")))))); + add(new Snippet("Hello World", new Language("Erlang", "erl"),new Code(new String(Files.readAllBytes(Paths.get("code/erl-code.txt")))))); + add(new Snippet("Hello World", new Language("JavaScript", "js"),new Code(new String(Files.readAllBytes(Paths.get("code/js-code.txt")))))); + add(new Snippet("Hello World", new Language("Groovy", "groovy"),new Code("println 'Hello World'"))); + } + }; + + snippetRepo.saveAll(snippets); + + }; + } +} diff --git a/src/main/UploadedContent/Spring-Boot-2.0.0.M7.a.RELEASE/05-spring-boot-web/code-snippet-manager/src/main/java/io/pivotal/workshop/snippet/controller/SnippetController.java b/src/main/UploadedContent/Spring-Boot-2.0.0.M7.a.RELEASE/05-spring-boot-web/code-snippet-manager/src/main/java/io/pivotal/workshop/snippet/controller/SnippetController.java new file mode 100644 index 0000000..b8d4acb --- /dev/null +++ b/src/main/UploadedContent/Spring-Boot-2.0.0.M7.a.RELEASE/05-spring-boot-web/code-snippet-manager/src/main/java/io/pivotal/workshop/snippet/controller/SnippetController.java @@ -0,0 +1,71 @@ +package io.pivotal.workshop.snippet.controller; + +import java.util.HashMap; +import java.util.Map; + +import org.springframework.http.HttpHeaders; +import org.springframework.http.HttpStatus; +import org.springframework.http.ResponseEntity; +import org.springframework.web.bind.annotation.PathVariable; +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; +import org.springframework.web.servlet.ModelAndView; +import org.springframework.web.servlet.support.ServletUriComponentsBuilder; + +import io.pivotal.workshop.snippet.domain.Snippet; +import io.pivotal.workshop.snippet.repository.LanguageRepository; +import io.pivotal.workshop.snippet.repository.SnippetRepository; + +@RestController +public class SnippetController { + + + private SnippetRepository snippetRepository; + private LanguageRepository languageRepository; + + public SnippetController(SnippetRepository snippetRepository,LanguageRepository languageRepository){ + this.snippetRepository = snippetRepository; + this.languageRepository = languageRepository; + } + + @RequestMapping("/") + public ModelAndView home(){ + assert snippetRepository != null; + + Map model = new HashMap(); + model.put("langs", languageRepository.findAll()); + model.put("snippets", snippetRepository.findAll()); + + return new ModelAndView("views/home",model); + } + + @RequestMapping("/snippets") + public ResponseEntity snippets(){ + assert snippetRepository != null; + return ResponseEntity.ok(snippetRepository.findAll()); + } + + @RequestMapping("/snippets/{id}") + public ResponseEntity snippet(@PathVariable("id") String id){ + assert snippetRepository != null; + return ResponseEntity.ok(snippetRepository.findById(id)); + } + + @RequestMapping(value="/snippets",method = { RequestMethod.POST, RequestMethod.PUT}) + public ResponseEntity upsert(@RequestBody Snippet snippet){ + assert snippetRepository != null; + + Snippet _snippet = snippetRepository.saveAll(snippet); + assert _snippet != null; + + HttpHeaders httpHeaders = new HttpHeaders(); + httpHeaders.setLocation(ServletUriComponentsBuilder + .fromCurrentRequest().path("/" + _snippet.getId()) + .buildAndExpand().toUri()); + + return new ResponseEntity<>(_snippet,httpHeaders,HttpStatus.CREATED); + } + +} \ No newline at end of file diff --git a/src/main/UploadedContent/Spring-Boot-2.0.0.M7.a.RELEASE/05-spring-boot-web/code-snippet-manager/src/main/java/io/pivotal/workshop/snippet/domain/Code.java b/src/main/UploadedContent/Spring-Boot-2.0.0.M7.a.RELEASE/05-spring-boot-web/code-snippet-manager/src/main/java/io/pivotal/workshop/snippet/domain/Code.java new file mode 100644 index 0000000..fa02b24 --- /dev/null +++ b/src/main/UploadedContent/Spring-Boot-2.0.0.M7.a.RELEASE/05-spring-boot-web/code-snippet-manager/src/main/java/io/pivotal/workshop/snippet/domain/Code.java @@ -0,0 +1,32 @@ +package io.pivotal.workshop.snippet.domain; + +public class Code { + private String id; + private String source; + + public Code() { + this.id = java.util.UUID.randomUUID().toString().replaceAll("-", "");; + } + + public Code(String source) { + this(); + this.source = source; + } + + public String getId() { + return id; + } + + public void setId(String id) { + this.id = id; + } + + public String getSource() { + return source; + } + + public void setSource(String source) { + this.source = source; + } + +} diff --git a/src/main/UploadedContent/Spring-Boot-2.0.0.M7.a.RELEASE/05-spring-boot-web/code-snippet-manager/src/main/java/io/pivotal/workshop/snippet/domain/Language.java b/src/main/UploadedContent/Spring-Boot-2.0.0.M7.a.RELEASE/05-spring-boot-web/code-snippet-manager/src/main/java/io/pivotal/workshop/snippet/domain/Language.java new file mode 100644 index 0000000..28beb5d --- /dev/null +++ b/src/main/UploadedContent/Spring-Boot-2.0.0.M7.a.RELEASE/05-spring-boot-web/code-snippet-manager/src/main/java/io/pivotal/workshop/snippet/domain/Language.java @@ -0,0 +1,46 @@ +package io.pivotal.workshop.snippet.domain; + +public class Language { + + private String id; + private String name; + private String syntax = "text"; + + public Language() { + this.id = java.util.UUID.randomUUID().toString().replaceAll("-", "");; + } + + public Language(String name) { + this(); + this.name = name; + } + + public Language(String name, String syntax) { + this(name); + this.syntax = syntax; + } + + public String getId() { + return id; + } + + public void setId(String id) { + this.id = id; + } + + public String getName() { + return name; + } + + public void setName(String name) { + this.name = name; + } + + public String getSyntax() { + return syntax; + } + + public void setSyntax(String syntax) { + this.syntax = syntax; + } +} diff --git a/src/main/UploadedContent/Spring-Boot-2.0.0.M7.a.RELEASE/05-spring-boot-web/code-snippet-manager/src/main/java/io/pivotal/workshop/snippet/domain/Snippet.java b/src/main/UploadedContent/Spring-Boot-2.0.0.M7.a.RELEASE/05-spring-boot-web/code-snippet-manager/src/main/java/io/pivotal/workshop/snippet/domain/Snippet.java new file mode 100644 index 0000000..4cfa0cf --- /dev/null +++ b/src/main/UploadedContent/Spring-Boot-2.0.0.M7.a.RELEASE/05-spring-boot-web/code-snippet-manager/src/main/java/io/pivotal/workshop/snippet/domain/Snippet.java @@ -0,0 +1,98 @@ +package io.pivotal.workshop.snippet.domain; + +import java.util.Date; + +public class Snippet { + + private String id; + private String title; + private String keywords; + private String description; + private Language lang; + private Code code; + private Date created; + private Date modified; + + public Snippet() { + this.id = java.util.UUID.randomUUID().toString().replaceAll("-", ""); + this.created = new Date(); + this.modified = new Date(); + } + + public Snippet(String title, String keywords, String description, Language lang, Code code) { + this(); + this.title = title; + this.keywords = keywords; + this.description = description; + this.lang = lang; + this.code = code; + } + + public Snippet(String title, Language lang, Code code) { + this(title, "", "", lang, code); + } + + public String getId() { + return id; + } + + public void setId(String id) { + this.id = id; + } + + public String getTitle() { + return title; + } + + public void setTitle(String title) { + this.title = title; + } + + public Language getLang() { + return lang; + } + + public void setLang(Language lang) { + this.lang = lang; + } + + public String getDescription() { + return description; + } + + public void setDescription(String description) { + this.description = description; + } + + public String getKeywords() { + return keywords; + } + + public void setKeywords(String keywords) { + this.keywords = keywords; + } + + public Code getCode() { + return code; + } + + public void setCode(Code code) { + this.code = code; + } + + public Date getCreated() { + return created; + } + + public void setCreated(Date created) { + this.created = created; + } + + public Date getModified() { + return modified; + } + + public void setModified(Date modified) { + this.modified = modified; + } +} diff --git a/src/main/UploadedContent/Spring-Boot-2.0.0.M7.a.RELEASE/05-spring-boot-web/code-snippet-manager/src/main/java/io/pivotal/workshop/snippet/repository/CodeRepository.java b/src/main/UploadedContent/Spring-Boot-2.0.0.M7.a.RELEASE/05-spring-boot-web/code-snippet-manager/src/main/java/io/pivotal/workshop/snippet/repository/CodeRepository.java new file mode 100644 index 0000000..e9a5de3 --- /dev/null +++ b/src/main/UploadedContent/Spring-Boot-2.0.0.M7.a.RELEASE/05-spring-boot-web/code-snippet-manager/src/main/java/io/pivotal/workshop/snippet/repository/CodeRepository.java @@ -0,0 +1,54 @@ +package io.pivotal.workshop.snippet.repository; + +import java.util.ArrayList; +import java.util.Collection; +import java.util.List; +import java.util.Optional; + +import org.springframework.stereotype.Repository; + +import io.pivotal.workshop.snippet.domain.Code; + +@Repository +public class CodeRepository implements SimpleRepository{ + + private List codes = new ArrayList<>(); + + public List findAll() { + return codes; + } + + @Override + public void saveAll(Collection items) { + this.codes.addAll(items); + } + + @Override + public Code saveAll(Code item) { + assert item.getSource() != null; + + Code code = findById(item.getId()); + + if(code == null){ + this.codes.add(item); + return item; + } + else { + code.setSource(item.getSource()); + return code; + } + } + + @Override + public Code findById(String id) { + Optional code = codes + .stream() + .filter(c -> c.getId().equals(id)) + .findFirst(); + if (code.isPresent()) return code.get(); + + return null; + } + + +} diff --git a/src/main/UploadedContent/Spring-Boot-2.0.0.M7.a.RELEASE/05-spring-boot-web/code-snippet-manager/src/main/java/io/pivotal/workshop/snippet/repository/LanguageRepository.java b/src/main/UploadedContent/Spring-Boot-2.0.0.M7.a.RELEASE/05-spring-boot-web/code-snippet-manager/src/main/java/io/pivotal/workshop/snippet/repository/LanguageRepository.java new file mode 100644 index 0000000..6a33b4a --- /dev/null +++ b/src/main/UploadedContent/Spring-Boot-2.0.0.M7.a.RELEASE/05-spring-boot-web/code-snippet-manager/src/main/java/io/pivotal/workshop/snippet/repository/LanguageRepository.java @@ -0,0 +1,51 @@ +package io.pivotal.workshop.snippet.repository; + +import java.util.ArrayList; +import java.util.Collection; +import java.util.List; +import java.util.Optional; +import java.util.stream.StreamSupport; + +import org.springframework.stereotype.Repository; + +import io.pivotal.workshop.snippet.domain.Language; + +@Repository +public class LanguageRepository implements SimpleRepository{ + + private List languages = new ArrayList<>(); + + public Iterable findAll(){ + return languages; + } + + public void saveAll(Collection languages){ + this.languages.addAll(languages); + } + + public Language findById(String name) { + Optional language = StreamSupport + .stream(this.languages.spliterator(), false) + .filter(lang -> lang.getName().equals(name)) + .findFirst(); + + if (language.isPresent()) return language.get(); + + return null; + } + + public Language saveAll(Language item) { + assert item.getName() != null; + + Language language = this.findById(item.getName()); + + if(language == null) { + this.languages.add(item); + return item; + }else { + language.setName(item.getName()); + language.setSyntax(item.getSyntax()); + return language; + } + } +} \ No newline at end of file diff --git a/src/main/UploadedContent/Spring-Boot-2.0.0.M7.a.RELEASE/05-spring-boot-web/code-snippet-manager/src/main/java/io/pivotal/workshop/snippet/repository/SimpleRepository.java b/src/main/UploadedContent/Spring-Boot-2.0.0.M7.a.RELEASE/05-spring-boot-web/code-snippet-manager/src/main/java/io/pivotal/workshop/snippet/repository/SimpleRepository.java new file mode 100644 index 0000000..2be274e --- /dev/null +++ b/src/main/UploadedContent/Spring-Boot-2.0.0.M7.a.RELEASE/05-spring-boot-web/code-snippet-manager/src/main/java/io/pivotal/workshop/snippet/repository/SimpleRepository.java @@ -0,0 +1,11 @@ +package io.pivotal.workshop.snippet.repository; + +import java.util.Collection; + +public interface SimpleRepository { + + Iterable findAll(); + void saveAll(Collection items); + T saveAll(T item); + T findById(String id); +} diff --git a/src/main/UploadedContent/Spring-Boot-2.0.0.M7.a.RELEASE/05-spring-boot-web/code-snippet-manager/src/main/java/io/pivotal/workshop/snippet/repository/SnippetRepository.java b/src/main/UploadedContent/Spring-Boot-2.0.0.M7.a.RELEASE/05-spring-boot-web/code-snippet-manager/src/main/java/io/pivotal/workshop/snippet/repository/SnippetRepository.java new file mode 100644 index 0000000..d305802 --- /dev/null +++ b/src/main/UploadedContent/Spring-Boot-2.0.0.M7.a.RELEASE/05-spring-boot-web/code-snippet-manager/src/main/java/io/pivotal/workshop/snippet/repository/SnippetRepository.java @@ -0,0 +1,62 @@ +package io.pivotal.workshop.snippet.repository; + +import java.util.ArrayList; +import java.util.Collection; +import java.util.Date; +import java.util.List; +import java.util.Optional; + +import org.springframework.stereotype.Repository; + +import io.pivotal.workshop.snippet.domain.Snippet; + +@Repository +public class SnippetRepository implements SimpleRepository{ + + private List snippets = new ArrayList<>(); + + @Override + public Snippet saveAll(Snippet snippet){ + assert snippet.getTitle() != null; + assert snippet.getCode() != null; + assert snippet.getLang() != null; + + Snippet _snippet = null; + + if (snippet.getId() == null) { + _snippet = new Snippet(snippet.getTitle(), snippet.getLang(),snippet.getCode()); + + } else { + _snippet = this.findById(snippet.getId()); + if(_snippet != null){ + _snippet.setTitle(snippet.getTitle()); + _snippet.setCode(snippet.getCode()); + _snippet.setLang(snippet.getLang()); + _snippet.setModified(new Date()); + } + } + + return _snippet; + } + + @Override + public Iterable findAll(){ + return this.snippets; + } + + @Override + public Snippet findById(String id){ + Optional result = snippets.stream() + .filter(snippet -> snippet.getId().equals(id)) + .findFirst(); + + if (result.isPresent()) return result.get(); + + return null; + } + + @Override + public void saveAll(Collection items) { + this.snippets.addAll(items); + } +} diff --git a/src/main/UploadedContent/Spring-Boot-2.0.0.M7.a.RELEASE/05-spring-boot-web/code-snippet-manager/src/main/resources/application.properties b/src/main/UploadedContent/Spring-Boot-2.0.0.M7.a.RELEASE/05-spring-boot-web/code-snippet-manager/src/main/resources/application.properties new file mode 100644 index 0000000..a4c32e9 --- /dev/null +++ b/src/main/UploadedContent/Spring-Boot-2.0.0.M7.a.RELEASE/05-spring-boot-web/code-snippet-manager/src/main/resources/application.properties @@ -0,0 +1 @@ +spring.jackson.date-format=yyyy-mm-dd \ No newline at end of file diff --git a/src/main/UploadedContent/Spring-Boot-2.0.0.M7.a.RELEASE/05-spring-boot-web/code-snippet-manager/src/main/resources/static/css/offcanvas.css b/src/main/UploadedContent/Spring-Boot-2.0.0.M7.a.RELEASE/05-spring-boot-web/code-snippet-manager/src/main/resources/static/css/offcanvas.css new file mode 100644 index 0000000..2a72199 --- /dev/null +++ b/src/main/UploadedContent/Spring-Boot-2.0.0.M7.a.RELEASE/05-spring-boot-web/code-snippet-manager/src/main/resources/static/css/offcanvas.css @@ -0,0 +1,59 @@ +/* + * Style tweaks + * -------------------------------------------------- + */ +html, +body { + overflow-x: hidden; /* Prevent scroll on narrow devices */ +} +body { + padding-top: 70px; +} +footer { + padding: 30px 0; +} + +/* + * Off Canvas + * -------------------------------------------------- + */ +@media screen and (max-width: 767px) { + .row-offcanvas { + position: relative; + -webkit-transition: all .25s ease-out; + -o-transition: all .25s ease-out; + transition: all .25s ease-out; + } + + .row-offcanvas-right { + right: 0; + } + + .row-offcanvas-left { + left: 0; + } + + .row-offcanvas-right + .sidebar-offcanvas { + right: -50%; /* 6 columns */ + } + + .row-offcanvas-left + .sidebar-offcanvas { + left: -50%; /* 6 columns */ + } + + .row-offcanvas-right.active { + right: 50%; /* 6 columns */ + } + + .row-offcanvas-left.active { + left: 50%; /* 6 columns */ + } + + .sidebar-offcanvas { + position: absolute; + top: 0; + width: 50%; /* 6 columns */ + } +} diff --git a/src/main/UploadedContent/Spring-Boot-2.0.0.M7.a.RELEASE/05-spring-boot-web/code-snippet-manager/src/main/resources/static/css/theme.css b/src/main/UploadedContent/Spring-Boot-2.0.0.M7.a.RELEASE/05-spring-boot-web/code-snippet-manager/src/main/resources/static/css/theme.css new file mode 100644 index 0000000..bbd2546 --- /dev/null +++ b/src/main/UploadedContent/Spring-Boot-2.0.0.M7.a.RELEASE/05-spring-boot-web/code-snippet-manager/src/main/resources/static/css/theme.css @@ -0,0 +1,238 @@ +.syntaxhighlighter a, +.syntaxhighlighter div, +.syntaxhighlighter code, +.syntaxhighlighter table, +.syntaxhighlighter table td, +.syntaxhighlighter table tr, +.syntaxhighlighter table tbody, +.syntaxhighlighter table thead, +.syntaxhighlighter table caption, +.syntaxhighlighter textarea { + -moz-border-radius: 0 0 0 0 !important; + -webkit-border-radius: 0 0 0 0 !important; + background: none !important; + border: 0 !important; + bottom: auto !important; + float: none !important; + height: auto !important; + left: auto !important; + line-height: 1.1em !important; + margin: 0 !important; + outline: 0 !important; + overflow: visible !important; + padding: 0 !important; + position: static !important; + right: auto !important; + text-align: left !important; + top: auto !important; + vertical-align: baseline !important; + width: auto !important; + box-sizing: content-box !important; + font-family: "Consolas", "Bitstream Vera Sans Mono", "Courier New", Courier, monospace !important; + font-weight: normal !important; + font-style: normal !important; + font-size: 1em !important; + min-height: inherit !important; + min-height: auto !important; } + +.syntaxhighlighter { + width: 100% !important; + margin: 1em 0 1em 0 !important; + position: relative !important; + overflow: auto !important; + font-size: 1em !important; } + .syntaxhighlighter .container:before, .syntaxhighlighter .container:after { + content: none !important; } + .syntaxhighlighter.source { + overflow: hidden !important; } + .syntaxhighlighter .bold { + font-weight: bold !important; } + .syntaxhighlighter .italic { + font-style: italic !important; } + .syntaxhighlighter .line { + white-space: pre !important; } + .syntaxhighlighter table { + width: 100% !important; } + .syntaxhighlighter table caption { + text-align: left !important; + padding: .5em 0 0.5em 1em !important; } + .syntaxhighlighter table td.code { + width: 100% !important; } + .syntaxhighlighter table td.code .container { + position: relative !important; } + .syntaxhighlighter table td.code .container textarea { + box-sizing: border-box !important; + position: absolute !important; + left: 0 !important; + top: 0 !important; + width: 100% !important; + height: 100% !important; + border: none !important; + background: white !important; + padding-left: 1em !important; + overflow: hidden !important; + white-space: pre !important; } + .syntaxhighlighter table td.gutter .line { + text-align: right !important; + padding: 0 0.5em 0 1em !important; } + .syntaxhighlighter table td.code .line { + padding: 0 1em !important; } + .syntaxhighlighter.nogutter td.code .container textarea, .syntaxhighlighter.nogutter td.code .line { + padding-left: 0em !important; } + .syntaxhighlighter.show { + display: block !important; } + .syntaxhighlighter.collapsed table { + display: none !important; } + .syntaxhighlighter.collapsed .toolbar { + padding: 0.1em 0.8em 0em 0.8em !important; + font-size: 1em !important; + position: static !important; + width: auto !important; + height: auto !important; } + .syntaxhighlighter.collapsed .toolbar span { + display: inline !important; + margin-right: 1em !important; } + .syntaxhighlighter.collapsed .toolbar span a { + padding: 0 !important; + display: none !important; } + .syntaxhighlighter.collapsed .toolbar span a.expandSource { + display: inline !important; } + .syntaxhighlighter .toolbar { + position: absolute !important; + right: 1px !important; + top: 1px !important; + width: 11px !important; + height: 11px !important; + font-size: 10px !important; + z-index: 10 !important; } + .syntaxhighlighter .toolbar span.title { + display: inline !important; } + .syntaxhighlighter .toolbar a { + display: block !important; + text-align: center !important; + text-decoration: none !important; + padding-top: 1px !important; } + .syntaxhighlighter .toolbar a.expandSource { + display: none !important; } + .syntaxhighlighter.ie { + font-size: .9em !important; + padding: 1px 0 1px 0 !important; } + .syntaxhighlighter.ie .toolbar { + line-height: 8px !important; } + .syntaxhighlighter.ie .toolbar a { + padding-top: 0px !important; } + .syntaxhighlighter.printing .line.alt1 .content, + .syntaxhighlighter.printing .line.alt2 .content, + .syntaxhighlighter.printing .line.highlighted .number, + .syntaxhighlighter.printing .line.highlighted.alt1 .content, + .syntaxhighlighter.printing .line.highlighted.alt2 .content { + background: none !important; } + .syntaxhighlighter.printing .line .number { + color: #bbbbbb !important; } + .syntaxhighlighter.printing .line .content { + color: black !important; } + .syntaxhighlighter.printing .toolbar { + display: none !important; } + .syntaxhighlighter.printing a { + text-decoration: none !important; } + .syntaxhighlighter.printing .plain, .syntaxhighlighter.printing .plain a { + color: black !important; } + .syntaxhighlighter.printing .comments, .syntaxhighlighter.printing .comments a { + color: #008200 !important; } + .syntaxhighlighter.printing .string, .syntaxhighlighter.printing .string a { + color: blue !important; } + .syntaxhighlighter.printing .keyword { + color: #006699 !important; + font-weight: bold !important; } + .syntaxhighlighter.printing .preprocessor { + color: gray !important; } + .syntaxhighlighter.printing .variable { + color: #aa7700 !important; } + .syntaxhighlighter.printing .value { + color: #009900 !important; } + .syntaxhighlighter.printing .functions { + color: #ff1493 !important; } + .syntaxhighlighter.printing .constants { + color: #0066cc !important; } + .syntaxhighlighter.printing .script { + font-weight: bold !important; } + .syntaxhighlighter.printing .color1, .syntaxhighlighter.printing .color1 a { + color: gray !important; } + .syntaxhighlighter.printing .color2, .syntaxhighlighter.printing .color2 a { + color: #ff1493 !important; } + .syntaxhighlighter.printing .color3, .syntaxhighlighter.printing .color3 a { + color: red !important; } + .syntaxhighlighter.printing .break, .syntaxhighlighter.printing .break a { + color: black !important; } + +.syntaxhighlighter { + background-color: white !important; } + .syntaxhighlighter .line.alt1 { + background-color: white !important; } + .syntaxhighlighter .line.alt2 { + background-color: white !important; } + .syntaxhighlighter .line.highlighted.alt1, .syntaxhighlighter .line.highlighted.alt2 { + background-color: #e0e0e0 !important; } + .syntaxhighlighter .line.highlighted.number { + color: black !important; } + .syntaxhighlighter table caption { + color: black !important; } + .syntaxhighlighter table td.code .container textarea { + background: white; + color: black; } + .syntaxhighlighter .gutter { + color: #afafaf !important; } + .syntaxhighlighter .gutter .line { + border-right: 3px solid #6ce26c !important; } + .syntaxhighlighter .gutter .line.highlighted { + background-color: #6ce26c !important; + color: white !important; } + .syntaxhighlighter.printing .line .content { + border: none !important; } + .syntaxhighlighter.collapsed { + overflow: visible !important; } + .syntaxhighlighter.collapsed .toolbar { + color: #00f !important; + background: #fff !important; + border: 1px solid #6ce26c !important; } + .syntaxhighlighter.collapsed .toolbar a { + color: #00f !important; } + .syntaxhighlighter.collapsed .toolbar a:hover { + color: #f00 !important; } + .syntaxhighlighter .toolbar { + color: #fff !important; + background: #6ce26c !important; + border: none !important; } + .syntaxhighlighter .toolbar a { + color: #fff !important; } + .syntaxhighlighter .toolbar a:hover { + color: #000 !important; } + .syntaxhighlighter .plain, .syntaxhighlighter .plain a { + color: black !important; } + .syntaxhighlighter .comments, .syntaxhighlighter .comments a { + color: #008200 !important; } + .syntaxhighlighter .string, .syntaxhighlighter .string a { + color: blue !important; } + .syntaxhighlighter .keyword { + font-weight: bold !important; + color: #006699 !important; } + .syntaxhighlighter .preprocessor { + color: gray !important; } + .syntaxhighlighter .variable { + color: #aa7700 !important; } + .syntaxhighlighter .value { + color: #009900 !important; } + .syntaxhighlighter .functions { + color: #ff1493 !important; } + .syntaxhighlighter .constants { + color: #0066cc !important; } + .syntaxhighlighter .script { + font-weight: bold !important; + color: #006699 !important; + background-color: none !important; } + .syntaxhighlighter .color1, .syntaxhighlighter .color1 a { + color: gray !important; } + .syntaxhighlighter .color2, .syntaxhighlighter .color2 a { + color: #ff1493 !important; } + .syntaxhighlighter .color3, .syntaxhighlighter .color3 a { + color: red !important; } diff --git a/src/main/UploadedContent/Spring-Boot-2.0.0.M7.a.RELEASE/05-spring-boot-web/code-snippet-manager/src/main/resources/static/js/syntaxhighlighter.js b/src/main/UploadedContent/Spring-Boot-2.0.0.M7.a.RELEASE/05-spring-boot-web/code-snippet-manager/src/main/resources/static/js/syntaxhighlighter.js new file mode 100644 index 0000000..006e4ab --- /dev/null +++ b/src/main/UploadedContent/Spring-Boot-2.0.0.M7.a.RELEASE/05-spring-boot-web/code-snippet-manager/src/main/resources/static/js/syntaxhighlighter.js @@ -0,0 +1,5332 @@ +/*! + * SyntaxHighlighter + * https://github.com/syntaxhighlighter/syntaxhighlighter + * + * SyntaxHighlighter is donationware. If you are using it, please donate. + * http://alexgorbatchev.com/SyntaxHighlighter/donate.html + * + * @version + * 4.0.1 (Tue, 05 Jul 2016 16:28:21 GMT) + * + * @copyright + * Copyright (C) 2004-2016 Alex Gorbatchev. + * + * @license + * Dual licensed under the MIT and GPL licenses. + */ +/******/ (function(modules) { // webpackBootstrap +/******/ // The module cache +/******/ var installedModules = {}; +/******/ +/******/ // The require function +/******/ function __webpack_require__(moduleId) { +/******/ +/******/ // Check if module is in cache +/******/ if(installedModules[moduleId]) +/******/ return installedModules[moduleId].exports; +/******/ +/******/ // Create a new module (and put it into the cache) +/******/ var module = installedModules[moduleId] = { +/******/ exports: {}, +/******/ id: moduleId, +/******/ loaded: false +/******/ }; +/******/ +/******/ // Execute the module function +/******/ modules[moduleId].call(module.exports, module, module.exports, __webpack_require__); +/******/ +/******/ // Flag the module as loaded +/******/ module.loaded = true; +/******/ +/******/ // Return the exports of the module +/******/ return module.exports; +/******/ } +/******/ +/******/ +/******/ // expose the modules object (__webpack_modules__) +/******/ __webpack_require__.m = modules; +/******/ +/******/ // expose the module cache +/******/ __webpack_require__.c = installedModules; +/******/ +/******/ // __webpack_public_path__ +/******/ __webpack_require__.p = ""; +/******/ +/******/ // Load entry module and return exports +/******/ return __webpack_require__(0); +/******/ }) +/************************************************************************/ +/******/ ([ +/* 0 */ +/***/ function(module, exports, __webpack_require__) { + + 'use strict'; + + Object.defineProperty(exports, "__esModule", { + value: true + }); + + var _core = __webpack_require__(1); + + Object.keys(_core).forEach(function (key) { + if (key === "default") return; + Object.defineProperty(exports, key, { + enumerable: true, + get: function get() { + return _core[key]; + } + }); + }); + + var _domready = __webpack_require__(52); + + var _domready2 = _interopRequireDefault(_domready); + + var _core2 = _interopRequireDefault(_core); + + var _dasherize = __webpack_require__(53); + + var dasherize = _interopRequireWildcard(_dasherize); + + function _interopRequireWildcard(obj) { if (obj && obj.__esModule) { return obj; } else { var newObj = {}; if (obj != null) { for (var key in obj) { if (Object.prototype.hasOwnProperty.call(obj, key)) newObj[key] = obj[key]; } } newObj.default = obj; return newObj; } } + + function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } + + // configured through the `--compat` parameter. + if (false) { + require('./compatibility_layer_v3'); + } + + (0, _domready2.default)(function () { + return _core2.default.highlight(dasherize.object(window.syntaxhighlighterConfig || {})); + }); + +/***/ }, +/* 1 */ +/***/ function(module, exports, __webpack_require__) { + + 'use strict'; + + Object.defineProperty(exports, "__esModule", { + value: true + }); + var optsParser = __webpack_require__(2), + match = __webpack_require__(5), + Renderer = __webpack_require__(9).default, + utils = __webpack_require__(10), + transformers = __webpack_require__(11), + dom = __webpack_require__(17), + config = __webpack_require__(18), + defaults = __webpack_require__(19), + HtmlScript = __webpack_require__(20); + + var sh = { + Match: match.Match, + Highlighter: __webpack_require__(22), + + config: __webpack_require__(18), + regexLib: __webpack_require__(3).commonRegExp, + + /** Internal 'global' variables. */ + vars: { + discoveredBrushes: null, + highlighters: {} + }, + + /** This object is populated by user included external brush files. */ + brushes: {}, + + /** + * Finds all elements on the page which should be processes by SyntaxHighlighter. + * + * @param {Object} globalParams Optional parameters which override element's + * parameters. Only used if element is specified. + * + * @param {Object} element Optional element to highlight. If none is + * provided, all elements in the current document + * are returned which qualify. + * + * @return {Array} Returns list of { target: DOMElement, params: Object } objects. + */ + findElements: function findElements(globalParams, element) { + var elements = element ? [element] : utils.toArray(document.getElementsByTagName(sh.config.tagName)), + conf = sh.config, + result = []; + + // support for + + + + + + +
+
+
+
+

Review all the necessary steps required to create a simple web application with the Spring Framework 5.

+
+
+

Time: 25 minutes.

+
+ +
+
+
+

Requirements:

+
+
+ +
+
+
+
+

Simple Spring Web Application with Thymeleaf

+
+
+
    +
  1. +

    To create a simple Spring Web application, open a terminal window and execute the following statement:

    +
    +
    +
    mvn archetype:generate -DgroupId=io.pivotal.workshop -DartifactId=simple-spring-webapp -Dversion=1.0-SNAPSHOT -DinteractiveMode=false -DarchetypeArtifactId=maven-archetype-webapp
    +
    +
    +
    + + + + + +
    + + +If you have a Maven version below 3.x, you need to use the command mvn archetype:create instead. +
    +
    +
  2. +
  3. +

    Create the missing Java EE structure (ex: src/main/java, src/main/webapp/WEB-INF, etc.)

    +
  4. +
  5. +

    Create the web controller SimpleController class in src/main/java/io/pivotal/workshop/web folder.

    +
    +
    io.pivotal.workshop.web.SimpleController.java
    +
    +
    package io.pivotal.workshop.web;
    +
    +import org.slf4j.Logger;
    +import org.slf4j.LoggerFactory;
    +import org.springframework.stereotype.Controller;
    +import org.springframework.web.bind.annotation.RequestMapping;
    +import org.springframework.web.bind.annotation.RequestMethod;
    +import org.springframework.web.servlet.ModelAndView;
    +
    +@Controller
    +public class SimpleController{
    +
    +        Logger log = LoggerFactory.getLogger(SimpleController.class);
    +
    +        @RequestMapping("/")
    +        public ModelAndView index(){
    +                log.debug("About to redirect...");
    +                return new ModelAndView("redirect:/showMessage");
    +        }
    +
    +        @RequestMapping(value="/showMessage",method = RequestMethod.GET)
    +        public ModelAndView helloWorld(){
    +                final String message = "Simple Spring MVC Web App with Thymeleaf and Spring 5";
    +                 log.debug("Showing the Message: " + message);
    +                ModelAndView model = new ModelAndView("showMessage");
    +                model.addObject("message", message);
    +                return model;
    +        }
    +}
    +
    +
    +
  6. +
  7. +

    Modify the src/main/webapp/WEB-INF/web.xml file.

    +
    +
    web.xml
    +
    +
    <!DOCTYPE web-app PUBLIC
    + "-//Sun Microsystems, Inc.//DTD Web Application 2.3//EN"
    + "http://java.sun.com/dtd/web-app_2_3.dtd" >
    +
    +<web-app>
    +  <display-name>Simple Spring Web Application</display-name>
    +
    +  <servlet>
    +      <servlet-name>dispatcherServlet</servlet-name>
    +      <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
    +      <load-on-startup>1</load-on-startup>
    +  </servlet>
    +
    +  <servlet-mapping>
    +      <servlet-name>dispatcherServlet</servlet-name>
    +      <url-pattern>/</url-pattern>
    +  </servlet-mapping>
    +
    +</web-app>
    +
    +
    +
  8. +
  9. +

    Create the src/main/webapp/WEB-INF/dispatcherServlet-servlet.xml file.

    +
    +
    dispatcherServlet-servlet.xml
    +
    +
    <?xml version="1.0" encoding="UTF-8"?>
    +
    +<beans xmlns="http://www.springframework.org/schema/beans" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    +        xmlns:mvc="http://www.springframework.org/schema/mvc" xmlns:context="http://www.springframework.org/schema/context"
    +        xsi:schemaLocation="http://www.springframework.org/schema/mvc http://www.springframework.org/schema/mvc/spring-mvc.xsd
    +                http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd
    +                http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context.xsd">
    +
    +        <!--
    +        DispatcherServlet creates its own WebApplicationContext and the handlers/controllers/view-resolvers are managed
    +        by this context.
    +        -->
    +
    +         <context:component-scan base-package="io.pivotal.workshop.web" />
    +
    +        <!-- Useful when only JSP is required. The javax.servlet.jsp:avax.servlet.jsp-api:2.3.1 dendency is necessary-->
    +        <!--
    +        <bean class="org.springframework.web.servlet.view.InternalResourceViewResolver">
    +                <property name="prefix" value="/WEB-INF/view/"/>
    +                <property name="suffix" value=".jsp"/>
    +        </bean>
    +        -->
    +
    +        <!-- Thymeleaf Configuration -->
    +        <bean id="templateResolver" class="org.thymeleaf.spring5.templateresolver.SpringResourceTemplateResolver">
    +                <property name="prefix" value="/WEB-INF/view/" />
    +                <property name="suffix" value=".html" />
    +                <property name="templateMode" value="HTML5" />
    +        </bean>
    +
    +        <bean id="templateEngine" class="org.thymeleaf.spring5.SpringTemplateEngine">
    +                <property name="templateResolver" ref="templateResolver" />
    +                <property name="enableSpringELCompiler" value="true" />
    +        </bean>
    +
    +        <bean id="viewResolver" class="org.thymeleaf.spring5.view.ThymeleafViewResolver">
    +                <property name="templateEngine" ref="templateEngine" />
    +</bean>
    +
    +</beans>
    +
    +
    +
  10. +
  11. +

    Modify the src/main/webapp/index.html file and move it to the src/main/webapp/WEB-INF/view directory.

    +
    +
    index.html
    +
    +
    <!DOCTYPE html>
    +
    +<html lang="en" xmlns:th="http://www.thymeleaf.org">
    +        <head>
    +                <meta charset="utf-8">
    +                <title>Welcome</title>
    +        </head>
    +        <body>
    +                <p>This page never will show up</p>
    +        </body>
    +</html>
    +
    +
    +
    +

    This page will never show up, because the handler will do a redirect to the showMessage.html.

    +
    +
  12. +
  13. +

    Create the src/main/webapp/WEB-INF/view/showMessage.html file.

    +
    +
    showMessage.jsp
    +
    +
    <!DOCTYPE html>
    +
    +<html lang="en" xmlns:th="http://www.thymeleaf.org">
    +        <head>
    +                <meta charset="utf-8">
    +                <title>Welcome</title>
    +        </head>
    +        <body style="font-family: Verdana, sans-serif;">
    +        <h2><p th:text="${message}"/></h2>
    +        </body>
    +</html>
    +
    +
    +
  14. +
  15. +

    Create the logging configuration. Create a logback.xml file in the src/main/resources directory.

    +
    +
    logback.xml
    +
    +
    <configuration>
    +    <appender name="STDOUT" class="ch.qos.logback.core.ConsoleAppender">
    +        <encoder>
    +            <pattern>%d{HH:mm:ss.SSS} [%thread] %-5level %logger{36} - %msg%n</pattern>
    +        </encoder>
    +    </appender>
    +
    +    <logger name="io.pivotal.workshop" level="DEBUG"/>
    +        <logger name="org.thymeleaf" level="OFF"/>
    +
    +    <root level="INFO">
    +        <appender-ref ref="STDOUT" />
    +    </root>
    +</configuration>
    +
    +
    +
  16. +
  17. +

    Modify the pom.xml file. Add the necessary dependencies. See all the Spring 5 dependencies.

    +
    +
    pom.xml
    +
    +
    <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    +        xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
    +        <modelVersion>4.0.0</modelVersion>
    +        <groupId>io.pivotal.workshop</groupId>
    +        <artifactId>simple-spring-webapp</artifactId>
    +        <packaging>war</packaging>
    +        <version>1.0-SNAPSHOT</version>
    +        <name>simple-spring-webapp Maven Webapp</name>
    +        <url>http://maven.apache.org</url>
    +        <parent>
    +                <groupId>io.pivotal.education.boot</groupId>
    +                <artifactId>parentProject</artifactId>
    +                <version>1.0.a.RELEASE</version>
    +                <relativePath>../../</relativePath>
    +        </parent>
    +        <properties>
    +
    +                <!-- Generic properties -->
    +                <java.version>1.8</java.version>
    +
    +                <!-- Web -->
    +                <servlet.version>3.1.0</servlet.version>
    +
    +                <!-- Spring -->
    +                <spring-framework.version>5.0.1.RELEASE</spring-framework.version>
    +
    +                <!-- Thymeleaf -->
    +                <thymeleaf.version>3.0.9.RELEASE</thymeleaf.version>
    +
    +                <!--  Logging -->
    +                <slf4j.version>1.7.25</slf4j.version>
    +                <logback.version>1.2.3</logback.version>
    +        </properties>
    +
    +        <dependencies>
    +
    +                <!-- Spring MVC -->
    +                <dependency>
    +                        <groupId>org.springframework</groupId>
    +                        <artifactId>spring-context</artifactId>
    +                        <version>${spring-framework.version}</version>
    +                </dependency>
    +                <dependency>
    +                        <groupId>org.springframework</groupId>
    +                        <artifactId>spring-aop</artifactId>
    +                        <version>${spring-framework.version}</version>
    +                </dependency>
    +                <dependency>
    +                        <groupId>org.springframework</groupId>
    +                        <artifactId>spring-webmvc</artifactId>
    +                        <version>${spring-framework.version}</version>
    +                </dependency>
    +                <dependency>
    +                        <groupId>org.springframework</groupId>
    +                        <artifactId>spring-web</artifactId>
    +                        <version>${spring-framework.version}</version>
    +                </dependency>
    +
    +                <dependency>
    +                        <groupId>org.thymeleaf</groupId>
    +                        <artifactId>thymeleaf</artifactId>
    +                        <version>${thymeleaf.version}</version>
    +                </dependency>
    +                <dependency>
    +                        <groupId>org.thymeleaf</groupId>
    +                        <artifactId>thymeleaf-spring5</artifactId>
    +                        <version>${thymeleaf.version}</version>
    +                </dependency>
    +
    +
    +                <dependency>
    +                        <groupId>org.slf4j</groupId>
    +                        <artifactId>slf4j-api</artifactId>
    +                        <version>${slf4j.version}</version>
    +                </dependency>
    +                <dependency>
    +                        <groupId>ch.qos.logback</groupId>
    +                        <artifactId>logback-classic</artifactId>
    +                        <version>${logback.version}</version>
    +                </dependency>
    +
    +                <!-- Other Web dependencies -->
    +                <dependency>
    +                        <groupId>javax.servlet</groupId>
    +                        <artifactId>javax.servlet-api</artifactId>
    +                        <version>${servlet.version}</version>
    +                        <scope>provided</scope>
    +                </dependency>
    +        </dependencies>
    +
    +        <build>
    +                <finalName>simple-spring-webapp</finalName>
    +        </build>
    +</project>
    +
    +
    +
  18. +
+
+
+

Building the Spring Web Application

+
+

To build the Spring Web application, execute the following command:

+
+
+
+
mvn clean compile package
+
+
+
+

the above command will generate the target/simple-spring-webapp.war.

+
+
+
+

Deploying the Spring Web Application

+
+

To deploy the application, install any application container that supports the Java Servlets specification.

+
+
+

For example, to deploy to Apache Tomcat, copy the target/simple-spring-webapp.war file into the $TOMCAT-INSTALLATION/webapps/ directory and start the container. Then, go to your browser and hit the http://localhost:8080/simple-spring-webapp/ URL.

+
+
+

You should see the text: Simple Spring MVC Web App with Thymeleaf and Spring 5.

+
+
+
+
+
+ + + \ No newline at end of file diff --git a/src/main/UploadedContent/student-lab-instructions/02-spring-boot-overview.html b/src/main/UploadedContent/student-lab-instructions/02-spring-boot-overview.html new file mode 100644 index 0000000..ef84dc4 --- /dev/null +++ b/src/main/UploadedContent/student-lab-instructions/02-spring-boot-overview.html @@ -0,0 +1,1078 @@ + + + + + + + +Spring Boot - Create a Simple Rest API + + + + + + + + + + + + + + + +
+
+
+
+

Get familiar with the Spring Initializr interface by creating a simple Spring Boot Web application.

+
+
+

Time: 25 minutes.

+
+ +
+
+
+

Directory Web App

+
+
+
    +
  1. +

    Open a browser and hit the url: http://start.spring.io

    +
  2. +
  3. +

    Click the Switch to the full version link.

    +
  4. +
  5. +

    Fill out the Directory Web App Project metadata with (See Figure 1.0):

    + + ++++ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    Table 1. Directory Web App - metadata
    PropertyValue

    Group:

    io.pivotal.workshop

    Artifact:

    directory-web

    Name:

    directory-web

    Package Name:

    io.pivotal.workshop.directory

    Dependencies:

    Web

    Spring Boot:

    2.0.0.M7

    +
    +
    Figure 1.0: Spring Initializr - http://start.spring.io
    +

    SpringInitializr

    +
    +
    + + + + + +
    +
    Tip
    +
    +You can choose either Maven or Gradle project types. +
    +
    +
  6. +
  7. +

    Type Web in the Dependencies field and press Enter.

    +
  8. +
  9. +

    Click the Generate Project button.

    +
  10. +
  11. +

    Unzip the file in any directory you want.

    +
  12. +
  13. +

    Import your project in any IDE you want.

    +
  14. +
  15. +

    Once imported, review the pom.xml file (or build.gradle).

    +
    +
    maven - pom.xml
    +
    +
    <?xml version="1.0" encoding="UTF-8"?>
    +<project xmlns="http://maven.apache.org/POM/4.0.0"
    +    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    +        xsi:schemaLocation="
    +    http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
    +        <modelVersion>4.0.0</modelVersion>
    +
    +        <groupId>io.pivotal.workshop</groupId>
    +        <artifactId>directory-web-app</artifactId>
    +        <version>0.0.1-SNAPSHOT</version>
    +        <packaging>jar</packaging>
    +
    +        <name>directory-web-app</name>
    +        <description>Demo project for Spring Boot</description>
    +
    +        <parent>
    +                <groupId>org.springframework.boot</groupId>
    +                <artifactId>spring-boot-starter-parent</artifactId>
    +                <version>2.0.0.RC1</version>
    +                <relativePath/> <!-- lookup parent from repository -->
    +        </parent>
    +
    +        <properties>
    +                <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
    +                <project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding>
    +                <java.version>1.8</java.version>
    +        </properties>
    +
    +        <dependencies>
    +                <dependency>
    +                        <groupId>org.springframework.boot</groupId>
    +                        <artifactId>spring-boot-starter-web</artifactId>
    +                </dependency>
    +
    +                <dependency>
    +                        <groupId>org.springframework.boot</groupId>
    +                        <artifactId>spring-boot-starter-test</artifactId>
    +                        <scope>test</scope>
    +                </dependency>
    +        </dependencies>
    +
    +        <build>
    +                <plugins>
    +                        <plugin>
    +                                <groupId>org.springframework.boot</groupId>
    +                                <artifactId>spring-boot-maven-plugin</artifactId>
    +                        </plugin>
    +                </plugins>
    +        </build>
    +
    +    <repositories>
    +                <repository>
    +                        <id>spring-milestones</id>
    +                        <name>Spring Milestones</name>
    +                        <url>https://repo.spring.io/libs-milestone</url>
    +                        <snapshots>
    +                                <enabled>false</enabled>
    +                        </snapshots>
    +                </repository>
    +        </repositories>
    +
    +</project>
    +
    +
    +
    +

    Remember the Spring Boot components:

    +
    +
    +
      +
    • +

      spring-boot-starter-parent

      +
    • +
    • +

      dependencies: spring-boot-starter-web

      +
    • +
    • +

      plugin: spring-boot-maven-plugin

      +
    • +
    +
    +
    +
    gradle - build.gradle
    +
    +
    buildscript {
    +        ext {
    +                springBootVersion = '2.0.0.RC1'
    +        }
    +        repositories {
    +                mavenCentral()
    +        maven { url "https://repo.spring.io/snapshot" }
    +                maven { url "https://repo.spring.io/milestone" }
    +        }
    +        dependencies {
    +                classpath("org.springframework.boot:spring-boot-gradle-plugin:${springBootVersion}")
    +        }
    +}
    +
    +apply plugin: 'java'
    +apply plugin: 'eclipse'
    +apply plugin: 'org.springframework.boot'
    +apply plugin: 'io.spring.dependency-management'
    +
    +version = '0.0.1-SNAPSHOT'
    +sourceCompatibility = 1.8
    +
    +repositories {
    +        mavenCentral()
    +    maven { url "https://repo.spring.io/snapshot" }
    +        maven { url "https://repo.spring.io/milestone" }
    +}
    +
    +
    +dependencies {
    +        compile('org.springframework.boot:spring-boot-starter-web')
    +        testCompile('org.springframework.boot:spring-boot-starter-test')
    +}
    +
    +
    +
  16. +
  17. +

    Create the domain io.pivotal.workshop.directory.domain.Person class.

    +
    +
    io.pivotal.workshop.directory.domain.Person.java
    +
    +
    package io.pivotal.workshop.directory.domain;
    +
    +import java.text.ParseException;
    +import java.text.SimpleDateFormat;
    +import java.util.Date;
    +import java.util.UUID;
    +
    +import javax.validation.constraints.NotNull;
    +
    +public class Person {
    +
    +        private SimpleDateFormat date = new SimpleDateFormat("yyyy-MM-dd");
    +
    +        private String id;
    +
    +        @NotNull
    +        private String email;
    +        @NotNull
    +        private String name;
    +        @NotNull
    +        private String password;
    +        private Date birthday;
    +        private Date created;
    +        private Date modified;
    +
    +        public Person(){
    +                this.id = UUID.randomUUID().toString().replaceAll("-", "");
    +                this.created = new Date();
    +                this.modified = new Date();
    +        }
    +
    +        public Person(String email, String name, String password, String birthday) {
    +                this();
    +                this.email = email;
    +                this.name = name;
    +                this.password = password;
    +
    +                try {
    +                        this.birthday = date.parse(birthday);
    +                } catch (ParseException e) {
    +                        this.birthday = null;
    +                }
    +        }
    +
    +        public Person(String email, String name, String password, Date birthday) {
    +                this();
    +                this.email = email;
    +                this.name = name;
    +                this.password = password;
    +                this.birthday = birthday;
    +        }
    +
    +        public String getId() {
    +                return id;
    +        }
    +
    +        public void setId(String id) {
    +                this.id = id;
    +        }
    +
    +        public String getEmail() {
    +                return email;
    +        }
    +
    +        public void setEmail(String email) {
    +                this.email = email;
    +        }
    +
    +        public String getName() {
    +                return name;
    +        }
    +
    +        public void setName(String name) {
    +                this.name = name;
    +        }
    +
    +        public String getPassword() {
    +                return password;
    +        }
    +
    +        public void setPassword(String password) {
    +                this.password = password;
    +        }
    +
    +        public Date getBirthday() {
    +                return birthday;
    +        }
    +
    +        public void setBirthday(Date birthday) {
    +                this.birthday = birthday;
    +        }
    +
    +        public Date getCreated() {
    +                return created;
    +        }
    +
    +        public void setCreated(Date created) {
    +                this.created = created;
    +        }
    +
    +        public Date getModified() {
    +                return modified;
    +        }
    +
    +        public void setModified(Date modified) {
    +                this.modified = modified;
    +        }
    +
    +}
    +
    +
    +
  18. +
  19. +

    Create the io.pivotal.workshop.directory.repository.DirectoryRepository class. This is you in-memory persistence.

    +
    +
    io.pivotal.workshop.directory.repository.DirectoryRepository.java
    +
    +
    package io.pivotal.workshop.directory.repository;
    +
    +import java.util.ArrayList;
    +import java.util.List;
    +
    +import org.springframework.stereotype.Repository;
    +
    +import io.pivotal.workshop.directory.domain.Person;
    +
    +@Repository
    +public class DirectoryRepository {
    +
    +
    +        @SuppressWarnings("serial")
    +        private List<Person> directory = new ArrayList<Person>(){{
    +        add(new Person("john@email.com","John S","password","1985-11-10"));
    +                add(new Person("mike@email.com","Mike H","password","1984-12-02"));
    +                add(new Person("dan@email.com","Dan B","password","1983-03-07"));
    +                add(new Person("bill@email.com","Bill G","password","1983-06-12"));
    +                add(new Person("mark@email.com","Mark S","password","1986-02-22"));
    +        }};
    +
    +        public Iterable<Person> findAll(){
    +                return this.directory;
    +        }
    +
    +}
    +
    +
    +
  20. +
  21. +

    Create the io.pivotal.workshop.directory.controller.DirectoryController class. This will handle your REST API.

    +
    +
    io.pivotal.workshop.directory.controller.DirectoryController.java
    +
    +
    package io.pivotal.workshop.directory.controller;
    +
    +import org.springframework.beans.factory.annotation.Autowired;
    +import org.springframework.http.ResponseEntity;
    +import org.springframework.web.bind.annotation.RequestMapping;
    +import org.springframework.web.bind.annotation.RestController;
    +
    +import io.pivotal.workshop.directory.domain.Person;
    +import io.pivotal.workshop.directory.repository.DirectoryRepository;
    +
    +@RestController
    +public class DirectoryController {
    +
    +        private DirectoryRepository repo;
    +
    +        @Autowired
    +        public DirectoryController(DirectoryRepository repo){
    +                this.repo = repo;
    +        }
    +
    +        @RequestMapping("/directory")
    +        public ResponseEntity<Iterable<Person>> findAll(){
    +                return ResponseEntity.ok(this.repo.findAll());
    +        }
    +
    +
    +}
    +
    +
    +
  22. +
  23. +

    Run your application and test the /directory endpoint by open a browser and hit: http://localhost:8080/directory

    +
  24. +
+
+
+ + + + + +
+
Tip
+
+If you are not using any IDE, then you can run your application with maven: ./mvnw spring-boot:run or if you are using gradle: ./gradlew bootRun +
+
+
+
+
+

Challenges

+
+
+

So far this is a very simple application, but still missing some of the HTTP request methods:

+
+
+
    +
  • +

    Add a index.html page to be render as Home page (tip: src/main/resources/static).

    +
  • +
  • +

    Add the POST method for adding a new person (tip: Use the @RequestBody annotation).

    +
  • +
  • +

    Add the PUT method for updating a new person (tip: Use the @RequestBody annotation).

    +
  • +
  • +

    Add the DELETE method for removing a person by id (tip: Use the @PathVariable annotation).

    +
  • +
  • +

    Add a GET method for search by email (tip: Use the @RequestParam annotation).

    +
  • +
  • +

    Add a GET method for finding by Id (tip: Use the @PathVariable annotation).

    +
  • +
+
+
+

do any necessary changes to the classes.

+
+
+

[EXTRA - OPTIONAL] Challenges

+
+
    +
  • +

    Mask the password when getting a directory JSON object.

    +
  • +
  • +

    The /directory endpoint response as a JSON object and the dates are show as a long type. Modify it to get a formatted 'yyyy-MM-dd' date.

    +
  • +
  • +

    By default Spring Boot serialize automatically a JSON object, add a XML serialization too.

    +
  • +
+
+
+
+

HOMEWORK

+
+
    +
  • +

    Add validation to the Person object when doing POST or UPDATE.

    +
  • +
+
+
+
+
+
+ + + \ No newline at end of file diff --git a/src/main/UploadedContent/student-lab-instructions/03-spring-boot-internals.html b/src/main/UploadedContent/student-lab-instructions/03-spring-boot-internals.html new file mode 100644 index 0000000..fb7f066 --- /dev/null +++ b/src/main/UploadedContent/student-lab-instructions/03-spring-boot-internals.html @@ -0,0 +1,952 @@ + + + + + + + +Spring Boot Internals + + + + + + + + + + + + + + + +
+
+
+
+

Get familiar with the Spring Boot Internals by using the @Conditional annotations.

+
+
+

Time: 35 minutes.

+
+ +
+
+
+

Directory Web Internals App

+
+
+

This application will use a custom @Audit annotation over any method and log the execution.

+
+
+
    +
  1. +

    Open a browser and hit the url: http://start.spring.io

    +
  2. +
  3. +

    Click the Switch to the full version link.

    +
  4. +
  5. +

    Fill out the Directory Web App Project metadata with (See Figure 1):

    + + ++++ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    Table 1. Directory Web App - metadata
    PropertyValue

    Group:

    io.pivotal.workshop

    Artifact:

    directory-web-internals

    Name:

    directory-web-internals

    Package Name:

    io.pivotal.workshop.directory

    Dependencies:

    Web

    Spring Boot:

    2.0.0.M7

    +
    +
    Figure 1: Spring Initializr - http://start.spring.io
    +

    SpringInitializr

    +
    +
    + + + + + +
    +
    Tip
    +
    +You can choose either Maven or Gradle project types. +
    +
    +
  6. +
  7. +

    Type Web in the Dependencies field and press Enter.

    +
  8. +
  9. +

    Click the Generate Project button.

    +
  10. +
  11. +

    Unzip the file in any directory you want.

    +
  12. +
  13. +

    Import your project in any IDE you want.

    +
  14. +
  15. +

    You can copy all the code from the previous lab (we are going to use it).

    +
  16. +
  17. +

    Add the following dependency to your pom.xml or build.gradle:

    +
    +
    maven - pom.xml
    +
    +
    <dependency>
    +    <groupId>org.springframework.boot</groupId>
    +        <artifactId>spring-boot-starter-aop</artifactId>
    +</dependency>
    +
    +
    +
    +
    gradle - build.gradle
    +
    +
    compile('org.springframework.boot:spring-boot-starter-aop')
    +
    +
    +
    +

    we are going to use AOP, Aspect Oriented Programming.

    +
    +
    + + + + + +
    +
    Tip
    +
    +Adding dependencies like this is commonly used. You don’t need to re-gerate the project if you forgot to add a dependency. There is a naming convention for Spring Boot: spring-boot-starter-[TECHNOLOGY]. +
    +
    +
  18. +
  19. +

    Create the custom @Audit annotation by adding the io.pivotal.workshop.directory.annotation.Audit interface to the project.

    +
    +
    +
    package io.pivotal.workshop.directory.annotation;
    +
    +import java.lang.annotation.ElementType;
    +import java.lang.annotation.Retention;
    +import java.lang.annotation.RetentionPolicy;
    +import java.lang.annotation.Target;
    +
    +@Target(ElementType.METHOD)
    +@Retention(RetentionPolicy.RUNTIME)
    +public @interface Audit {
    +        Auditor value() default Auditor.NOTHING;
    +}
    +
    +
    +
  20. +
  21. +

    Create the io.pivotal.workshop.directory.annotation.Auditor enum, that is part of the @Audit annotation possible values.

    +
    +
    +
    package io.pivotal.workshop.directory.annotation;
    +
    +public enum Auditor {
    +        BEFORE, AFTER, BEFORE_AND_AFTER, NOTHING
    +}
    +
    +
    +
    +

    the values in the enum above will be used later in the challenges section.

    +
    +
  22. +
  23. +

    Create the io.pivotal.workshop.directory.aop.SimpleAudit class that will be used as cross-cutting concern for logging the execution of any method that has the @Audit annotation.

    +
    +
    +
    package io.pivotal.workshop.directory.aop;
    +
    +import org.aspectj.lang.JoinPoint;
    +import org.aspectj.lang.annotation.Aspect;
    +import org.aspectj.lang.annotation.Before;
    +import org.slf4j.Logger;
    +import org.slf4j.LoggerFactory;
    +
    +import io.pivotal.workshop.directory.annotation.Audit;
    +
    +@Aspect
    +public class SimpleAudit {
    +
    +        private static Logger log = LoggerFactory.getLogger("[AUDIT]");
    +
    +        @Before("@annotation(audit)")
    +        public void audit(JoinPoint jp, Audit audit){
    +                log.info("[EXECUTING] " + jp.getSignature());
    +        }
    +}
    +
    +
    +
  24. +
  25. +

    In the io.pivotal.workshop.directory.repository.DirectoryRepository class add the findByEmail method (a challenge from the previous lab).

    +
    +
    +
        @Audit
    +        public Optional<Person> findByEmail(String email){
    +                return findFirstBy( p -> p.getEmail().equals(email));
    +        }
    +
    +
    +
    +

    as you can see, this method will have the @Audit annotation that will be log the execution of this method. If you missed the challenge from the previous lab, here it is, the +findFirstBy code:

    +
    +
    +
    +
    private Optional<Person> findFirstBy(Predicate<Person> findBy){
    +        return directory.stream()
    +                .filter(findBy)
    +                .findFirst();
    +}
    +
    +
    +
  26. +
  27. +

    Create a io.pivotal.workshop.directory.config.DirectoryConfig class that will create the aspect as Spring bean.

    +
    +
    +
    package io.pivotal.workshop.directory.config;
    +
    +import org.springframework.boot.autoconfigure.condition.ConditionalOnClass;
    +import org.springframework.context.annotation.Bean;
    +import org.springframework.context.annotation.Configuration;
    +
    +import io.pivotal.workshop.directory.aop.SimpleAudit;
    +
    +@Configuration
    +public class DirectoryConfig {
    +
    +        @ConditionalOnClass(name={"io.pivotal.workshop.directory.repository.PersonRepository"})
    +        @Bean
    +        public SimpleAudit simpleAudit(){
    +                return new SimpleAudit();
    +        }
    +
    +}
    +
    +
    +
    +

    is important to notice the usage of the @ConditionalOnClass annotation. Here the simpleAudit bean will be created only if the PersonRepository is on your classpath.

    +
    +
  28. +
  29. +

    In the io.pivotal.workshop.directory.controller.DirectoryController class add the searchByEmail method ( achallenge from the previous lab).

    +
    +
    +
    @RequestMapping("/directory/search")
    +public ResponseEntity<?> searchByEmail(@RequestParam String email) {
    +        Optional<Person> result = this.repo.findByEmail(email);
    +
    +        if (result.isPresent()) {
    +                return ResponseEntity.ok(result.get());
    +        }
    +
    +        return ResponseEntity.status(HttpStatus.NOT_FOUND).body("{}");
    +}
    +
    +
    +
  30. +
  31. +

    Run your application and test the /directory/search endpoint by open a browser and hit: http://localhost:8080/directory/search?email=john@email.com.

    +
    + + + + + +
    +
    Tip
    +
    +If you are not using any IDE, then you can run your application with maven: ./mvnw spring-boot:run or if you are using gradle: ./gradlew bootRun +
    +
    +
  32. +
  33. +

    You should see the result.

    +
    +
    Figure 2: Directory Web Internals App - http://localhost:8080/directory/search?email=john@email.com
    +

    03 spring boot internals 02

    +
    +
  34. +
+
+
+
+
+

Questions

+
+
+

Q: Did you see the logs in the console window (or terminal)?

+
+
+

A: NO, because the @ConditionalOnClass annotation is looking for a PersonRepository class.

+
+
+

Modify the DirectoryConfig class and change the right class in the @ConditionalOnClass annotation and run the application again:

+
+
+
+
@ConditionalOnClass(name={"io.pivotal.workshop.directory.repository.DirectoryRepository"})
+
+
+
+

now you should see:

+
+
+
+
[AUDIT] : [EXECUTING] Optional io.pivotal.workshop.directory.repository.DirectoryRepository.findByEmail(String)
+
+
+
+
+
+

Challenges

+
+
+

This is a trivial example using the @ConditionalOnClass annotation, so let’s add more features to our project and have a real use of the Auditor enum:

+
+
+
    +
  • +

    Create a new @Around advice for using the Auditor enum, so it can log also:

    +
    +
      +
    • +

      the parameters values if @Audit(Auditor.BEFORE).

      +
    • +
    • +

      the return value if @Audit(Auditor.AFTER).

      +
    • +
    • +

      the parameters and return values if @Audit(Auditor.BEFORE_AND_AFTER).

      +
    • +
    +
    +
  • +
  • +

    Use the @ConditionalOnProperty to evaluate if the directory.audit is on or off. If is on then log, but if is off or not present then don’t do anything.

    +
  • +
  • +

    Add the logic to the Aspect to review the directory.info if is with value short to log just the name of the method being executed, or with value long to show the full name of the method being executed.

    +
  • +
+
+
+

[HOMEWORK]

+
+

This lab is just simple enough to get started, but everything is in the same code. +The challenge is now to create a new audit project and use it in the directory-web-internals by creating @EnableAudit annotation.

+
+
+
+
+
+ + + \ No newline at end of file diff --git a/src/main/UploadedContent/student-lab-instructions/04-spring-boot-features.html b/src/main/UploadedContent/student-lab-instructions/04-spring-boot-features.html new file mode 100644 index 0000000..c3b96a1 --- /dev/null +++ b/src/main/UploadedContent/student-lab-instructions/04-spring-boot-features.html @@ -0,0 +1,1052 @@ + + + + + + + +Spring Boot Features + + + + + + + + + + + + + + + +
+
+
+
+

Get familiar with the main Spring Boot features.

+
+
+

Time: 25 minutes.

+
+ +
+
+
+

Directory Web Features

+
+
+

This lab will show you how to use some of the Spring Boot features. You are going to use the code from previous labs (directory-web-internals project)

+
+
+
    +
  1. +

    Open a browser and hit the url: http://start.spring.io

    +
  2. +
  3. +

    Click the Switch to the full version link.

    +
  4. +
  5. +

    Fill out the Directory Web App Project metadata with (See Figure 1):

    + + ++++ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    Table 1. Directory Web App - metadata
    PropertyValue

    Group:

    io.pivotal.workshop

    Artifact:

    directory-web-features

    Name:

    directory-web-features

    Package Name:

    io.pivotal.workshop.directory

    Dependencies:

    Web, AOP

    Spring Boot:

    2.0.0.M7

    +
    +
    Figure 1: Spring Initializr - http://start.spring.io
    +

    SpringInitializr

    +
    +
    + + + + + +
    +
    Tip
    +
    +You can choose either Maven or Gradle project types. +
    +
    +
  6. +
  7. +

    Type Web and AOP in the Dependencies field and press Enter.

    +
  8. +
  9. +

    Click the Generate Project button.

    +
  10. +
  11. +

    Unzip the file in any directory you want.

    +
  12. +
  13. +

    Import your project in any IDE you want.

    +
  14. +
  15. +

    You can copy all the code from the previous lab (we are going to use it).

    +
  16. +
+
+
+

SpringBootApplication: Banner and Web Environment

+
+

Let’s start with the SpringBootApplication class. In the main source code: DirectoryWebFeaturesApplication class, add the following code:

+
+
+
io.pivotal.workshop.directory.DirectoryWebFeaturesApplication.java
+
+
package io.pivotal.workshop.directory;
+
+import org.springframework.boot.SpringApplication;
+import org.springframework.boot.autoconfigure.SpringBootApplication;
+
+@SpringBootApplication
+public class DirectoryWebFeaturesApplication {
+
+        public static void main(String[] args) {
+
+                SpringApplication app = new SpringApplication(DirectoryWebFeaturesApplication.class);
+                app.run(args);
+        }
+}
+
+
+
+

the SpringApplication will be use to turn on/off some features.

+
+
+

Challenges

+
+
    +
  • +

    Add a banner.txt with some ASCII ART in the src/main/resources folder and run the application. You can choose some ascii art from: http://patorjk.com/software/taag

    +
  • +
  • +

    Turn off the Banner using the app instance.

    +
  • +
  • +

    Turn off the Web Environment using the app instance.

    +
  • +
  • +

    You can turn on/off the Banner and Web Environment using the application.properties, find out how.

    +
  • +
+
+
+
+
+

SpringBootApplication: CommandLineRunner / ApplicationRunner

+
+

In the main source code: DirectoryWebFeaturesApplication class, replace the class definition with the following code:

+
+
+
io.pivotal.workshop.directory.DirectoryWebFeaturesApplication.java
+
+
package io.pivotal.workshop.directory;
+
+import java.util.stream.Stream;
+
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+
+import org.springframework.boot.CommandLineRunner;
+import org.springframework.boot.SpringApplication;
+import org.springframework.boot.autoconfigure.SpringBootApplication;
+import org.springframework.context.annotation.Bean;
+
+@SpringBootApplication
+public class DirectoryWebFeaturesApplication {
+
+        public static void main(String[] args) {
+
+                SpringApplication app = new SpringApplication(DirectoryWebFeaturesApplication.class);
+                app.run(args);
+        }
+
+    private static final Logger log = LoggerFactory.getLogger("[ARGUMENTS]");
+
+    @Bean
+        public CommandLineRunner commandRunner() {
+                return args -> {
+                        Stream.of(args).forEach(s -> {
+                                log.info("CommandLine: " + s);
+                        });
+                };
+        }
+}
+
+
+
+

the CommandLineRunner is use to execute code before your Spring Boot application start. The previous code will log all the arguments passed to the application.

+
+
+

Package and run the application with the following arguments: --option=A,B,C --enable-audit=yes

+
+
+

+ +.create the JAR

+
+
+
+
./mvnw clean package -DskipTests=true
+
+
+
+

+ +.run the application with some arguments

+
+
+
+
java -jar target/directory-web-features-0.0.1-SNAPSHOT.jar --option=A,B,C --enable-audit=yes
+
+
+
+

see the logs.

+
+
+

Challenges

+
+
    +
  • +

    Use now the ApplicationRunner and get the option and enable-audit values, you should log something similar:

    +
    +
    +
    [ARGS]  : Option Name: enable-audit
    +[ARGS]  : Option Name: option
    +[ARGS]  : Found Value:[A,B,C]
    +[ARGS]  : Found Value:[yes]
    +[ARGS]  : Argument: --option=A,B,C
    +[ARGS]  : Argument: --enable-audit=yes
    +
    +
    +
  • +
+
+
+
+
+

SpringBootApplication: External Configuration

+
+

If you didn’t finish the previous lab (directory-web-internals) this is you chance! Create a DirectoryProperties class that will hold the information about audit (on/off) and the info to be display (long/short) for the AOP audit.

+
+
+

Here you will use the @ConfigurationProperties annotation to enable a properties binding, you will use the prefix directory.

+
+
+
io.pivotal.workshop.directory.config.DirectoryProperties.java
+
+
package io.pivotal.workshop.directory.config;
+
+import org.springframework.boot.context.properties.ConfigurationProperties;
+
+@ConfigurationProperties(prefix = "directory")
+public class DirectoryProperties {
+
+        private String audit = "off";
+        private String info = "long";
+
+        public String getAudit() {
+                return audit;
+        }
+
+        public void setAudit(String audit) {
+                this.audit = audit;
+        }
+
+        public String getInfo() {
+                return info;
+        }
+
+        public void setInfo(String info) {
+                this.info = info;
+        }
+
+}
+
+
+
+

Modify the application.properties by adding the new properties:

+
+
+
src/main/resource/application.properties
+
+
directory.audit=on
+directory.info=short
+
+
+
+

Create the aspect DirectoryAudit and read the values to audit the method findByEmail from the DirectoryRepository class. (This is the challenge from the directory-web-internals lab).

+
+
+
io.pivotal.workshop.directory.aop.DirectoryAudit.java
+
+
package io.pivotal.workshop.directory.aop;
+
+import java.util.stream.IntStream;
+
+import org.aspectj.lang.ProceedingJoinPoint;
+import org.aspectj.lang.annotation.Around;
+import org.aspectj.lang.annotation.Aspect;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+
+import io.pivotal.workshop.directory.annotation.Audit;
+import io.pivotal.workshop.directory.config.DirectoryProperties;
+
+@Aspect
+public class DirectoryAudit {
+
+        private DirectoryProperties props;
+
+        public DirectoryAudit(DirectoryProperties props){
+                this.props = props;
+        }
+
+        private static Logger log = LoggerFactory.getLogger("[AUDIT]");
+
+        @Around("execution(* *(..)) && @annotation(audit)")
+        public Object audit(ProceedingJoinPoint jp, Audit audit) throws Throwable {
+                Object[] args = jp.getArgs();
+
+                this.printBar();
+                this.print("[executing] " + (props.getInfo().toLowerCase().equals("short") ? jp.getSignature().getName() : jp.getSignature() ));
+
+                switch (audit.value()) {
+                case BEFORE:
+                case BEFORE_AND_AFTER:
+                        this.printArgs(args);
+                default:
+                        break;
+                }
+
+                Object obj = jp.proceed(args);
+
+                switch (audit.value()) {
+                case AFTER:
+                case BEFORE_AND_AFTER:
+                        this.print("[result] " + obj);
+                default:
+                        this.printBar();
+                        break;
+                }
+
+                return obj;
+        }
+
+        private void print(Object obj) {
+                log.info(obj.toString());
+        }
+
+        private void printArgs(Object[] args) {
+                IntStream.range(0, args.length).forEach(idx -> {
+                        log.info(String.format("[params] arg%d = %s", idx, args[idx]));
+                });
+
+        }
+
+        private void printBar(){
+                log.info("===========");
+        }
+}
+
+
+
+

In the DirectoryRepository add the @Audit annotation in the findByEmail method.

+
+
+
io.pivotal.workshop.directory.repository.DirectoryRepository.java - snippet
+
+
@Audit
+public Optional<Person> findByEmail(String email){
+        return findFirstBy( p -> p.getEmail().equals(email));
+}
+
+
+
+

Run you application and check out the logs.

+
+
+ + + + + +
+
Warning
+
+The on/off feature only works if you did the challenge from the previous lab. You need to add the @ConditionalOnProperty to evaluate if the directory.audit is on or off. +
+
+
+

Challenges

+
+
    +
  • +

    Run you application by testing the @Audit annotation values: Auditor.BEFORE,Auditor.AFTER,Auditor.BEFORE_AND_AFTER

    +
  • +
  • +

    Package your application and:

    +
    +
      +
    • +

      override the audit and info properties in the command line.

      +
    • +
    • +

      use environment variables to override the audit and info properties.

      +
    • +
    • +

      create a application.yml file in the current directory, add the audit and info properties and execute the program, what happen? did it worked?

      +
    • +
    +
    +
  • +
+
+
+ + + + + +
+
Tip
+
+Remember that, by adding an application.properties or application.yml to the current directory will override the values. +
+
+
+
+
+

[HOMEWORK]

+
+
    +
  • +

    Create profiles by:

    +
    +
      +
    • +

      Creating an application-qa.properties and application-prod.properties. Add the properties audit and info and test by enable the two profiles.

      +
    • +
    • +

      Creating an application.yml and add the profile section. Test by enable each profile.

      +
    • +
    +
    +
  • +
  • +

    Instead of using the @Configuration properties, use application arguments to enable the audit and info.

    +
  • +
+
+
+
+
+
+ + + \ No newline at end of file diff --git a/src/main/UploadedContent/student-lab-instructions/05-spring-boot-web.html b/src/main/UploadedContent/student-lab-instructions/05-spring-boot-web.html new file mode 100644 index 0000000..96c51b0 --- /dev/null +++ b/src/main/UploadedContent/student-lab-instructions/05-spring-boot-web.html @@ -0,0 +1,1355 @@ + + + + + + + +Spring Boot Web + + + + + + + + + + + + + + + +
+
+
+
+

Get familiar with the Spring MVC and the Spring Boot Web applications.

+
+
+

Time: 30 minutes.

+
+ +
+
+
+

Code Snippet Manager

+
+
+

As developers normally we require to have some code snippets that help us to code fast and safe.

+
+
+

The main idea of this application is to create a site that can manage our Code Snippets. We are going to create a RESTful API for any external client.

+
+
+
    +
  1. +

    Open a browser and hit the url: http://start.spring.io

    +
  2. +
  3. +

    Click the Switch to the full version link.

    +
  4. +
  5. +

    Fill out the Code Snippet Manager Project metadata with (See Figure 1.0):

    + + ++++ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    Table 1. Code Snippet Manager App - metadata
    PropertyValue

    Group:

    io.pivotal.workshop

    Artifact:

    code-snippet-manager

    Name:

    code-snippet-manager

    Package Name:

    io.pivotal.workshop.snippet

    Dependencies:

    Web, DevTools, Groovy Templates

    Spring Boot:

    2.0.0.M7

    +
    +
    Figure 1.0: Spring Initializr - http://start.spring.io/
    +

    SpringInitializr

    +
    +
    + + + + + +
    +
    Tip
    +
    +You can choose either Maven or Gradle project types. +
    +
    +
  6. +
  7. +

    Type Web, DevTools, Groovy Templates, in the Dependencies field and press Enter.

    +
  8. +
  9. +

    Click the Generate Project button.

    +
  10. +
  11. +

    Unzip the file in any directory you want.

    +
  12. +
  13. +

    Import your project in any IDE you want.

    +
  14. +
  15. +

    Let’s start by defining the domain models. Create the following classes:

    +
    +
    io.pivotal.workshop.snippet.domain.Language.java
    +
    +
    package io.pivotal.workshop.snippet.domain;
    +
    +public class Language {
    +
    +        private String id;
    +        private String name;
    +        private String syntax = "text";
    +
    +        public Language() {
    +                this.id = java.util.UUID.randomUUID().toString().replaceAll("-", "");;
    +        }
    +
    +        public Language(String name) {
    +                this();
    +                this.name = name;
    +        }
    +
    +        public Language(String name, String syntax) {
    +                this(name);
    +                this.syntax = syntax;
    +        }
    +
    +        public String getId() {
    +                return id;
    +        }
    +
    +        public void setId(String id) {
    +                this.id = id;
    +        }
    +
    +        public String getName() {
    +                return name;
    +        }
    +
    +        public void setName(String name) {
    +                this.name = name;
    +        }
    +
    +        public String getSyntax() {
    +                return syntax;
    +        }
    +
    +        public void setSyntax(String syntax) {
    +                this.syntax = syntax;
    +        }
    +}
    +
    +
    +
    +

    We can have multiple snippets in different programming languages, that’s why we have this class. Take a look that also there is a syntax field; this field will be use later on for syntax highlight.

    +
    +
    +
    io.pivotal.workshop.snippet.domain.Code.java
    +
    +
    package io.pivotal.workshop.snippet.domain;
    +
    +public class Code {
    +        private String id;
    +        private String source;
    +
    +        public Code() {
    +                this.id = java.util.UUID.randomUUID().toString().replaceAll("-", "");;
    +        }
    +
    +        public Code(String source) {
    +                this();
    +                this.source = source;
    +        }
    +
    +        public String getId() {
    +                return id;
    +        }
    +
    +        public void setId(String id) {
    +                this.id = id;
    +        }
    +
    +        public String getSource() {
    +                return source;
    +        }
    +
    +        public void setSource(String source) {
    +                this.source = source;
    +        }
    +
    +}
    +
    +
    +
    +

    This class will be use to hold the actual snippet code.

    +
    +
    +
    io.pivotal.workshop.snippet.domain.Snippet.java
    +
    +
    package io.pivotal.workshop.snippet.domain;
    +
    +import java.util.Date;
    +
    +public class Snippet {
    +
    +        private String id;
    +        private String title;
    +        private String keywords;
    +        private String description;
    +        private Language lang;
    +        private Code code;
    +        private Date created;
    +        private Date modified;
    +
    +        public Snippet() {
    +                this.id = java.util.UUID.randomUUID().toString().replaceAll("-", "");
    +                this.created = new Date();
    +                this.modified = new Date();
    +        }
    +
    +        public Snippet(String title, String keywords, String description, Language lang, Code code) {
    +                this();
    +                this.title = title;
    +                this.keywords = keywords;
    +                this.description = description;
    +                this.lang = lang;
    +                this.code = code;
    +        }
    +
    +        public Snippet(String title, Language lang, Code code) {
    +                this(title, "", "", lang, code);
    +        }
    +
    +        public String getId() {
    +                return id;
    +        }
    +
    +        public void setId(String id) {
    +                this.id = id;
    +        }
    +
    +        public String getTitle() {
    +                return title;
    +        }
    +
    +        public void setTitle(String title) {
    +                this.title = title;
    +        }
    +
    +        public Language getLang() {
    +                return lang;
    +        }
    +
    +        public void setLang(Language lang) {
    +                this.lang = lang;
    +        }
    +
    +        public String getDescription() {
    +                return description;
    +        }
    +
    +        public void setDescription(String description) {
    +                this.description = description;
    +        }
    +
    +        public String getKeywords() {
    +                return keywords;
    +        }
    +
    +        public void setKeywords(String keywords) {
    +                this.keywords = keywords;
    +        }
    +
    +        public Code getCode() {
    +                return code;
    +        }
    +
    +        public void setCode(Code code) {
    +                this.code = code;
    +        }
    +
    +        public Date getCreated() {
    +                return created;
    +        }
    +
    +        public void setCreated(Date created) {
    +                this.created = created;
    +        }
    +
    +        public Date getModified() {
    +                return modified;
    +        }
    +
    +        public void setModified(Date modified) {
    +                this.modified = modified;
    +        }
    +}
    +
    +
    +
    +

    The above class will be the main reponse.

    +
    +
  16. +
  17. +

    Next let’s create a base interface that will be use as main repository. In this case we are going to hold all the data in Memory using collections:

    +
    +
    io.pivotal.workshop.snippet.repository.SimpleRepository.java
    +
    +
    package io.pivotal.workshop.snippet.repository;
    +
    +import java.util.Collection;
    +
    +public interface SimpleRepository<T> {
    +
    +        Iterable<T> findAll();
    +        void saveAll(Collection<T> items);
    +        T saveAll(T item);
    +        T findById(String id);
    +}
    +
    +
    +
    +

    as you can see it has just the most common actions.

    +
    +
  18. +
  19. +

    Let’s create now all the Repositories that will be implementing the SimpleRepository interface.

    +
    +
    io.pivotal.workshop.snippet.repository.LanguageRepository.java
    +
    +
    package io.pivotal.workshop.snippet.repository;
    +
    +import java.util.ArrayList;
    +import java.util.Collection;
    +import java.util.List;
    +import java.util.Optional;
    +import java.util.stream.StreamSupport;
    +
    +import org.springframework.stereotype.Repository;
    +
    +import io.pivotal.workshop.snippet.domain.Language;
    +
    +@Repository
    +public class LanguageRepository implements SimpleRepository<Language>{
    +
    +    private List<Language> languages = new ArrayList<>();
    +
    +        public Iterable<Language> findAll(){
    +                return languages;
    +        }
    +
    +        public void saveAll(Collection<Language> languages){
    +                this.languages.addAll(languages);
    +        }
    +
    +        public Language findById(String name) {
    +                Optional<Language> language = StreamSupport
    +                        .stream(this.languages.spliterator(), false)
    +                        .filter(lang -> lang.getName().equals(name))
    +                        .findFirst();
    +
    +                if (language.isPresent()) return language.get();
    +
    +                return null;
    +        }
    +
    +        public Language saveAll(Language item) {
    +                assert item.getName() != null;
    +
    +                Language language = this.findById(item.getName());
    +
    +                if(language == null) {
    +                        this.languages.add(item);
    +                        return item;
    +                }else {
    +                        language.setName(item.getName());
    +                        language.setSyntax(item.getSyntax());
    +                        return language;
    +                }
    +        }
    +}
    +
    +
    +
    +
    io.pivotal.workshop.snippet.repository.CodeRepository.java
    +
    +
    package io.pivotal.workshop.snippet.repository;
    +
    +import java.util.ArrayList;
    +import java.util.Collection;
    +import java.util.List;
    +import java.util.Optional;
    +
    +import org.springframework.stereotype.Repository;
    +
    +import io.pivotal.workshop.snippet.domain.Code;
    +
    +@Repository
    +public class CodeRepository implements SimpleRepository<Code>{
    +
    +        private List<Code> codes = new ArrayList<>();
    +
    +        public List<Code> findAll() {
    +                return codes;
    +        }
    +
    +        @Override
    +        public void saveAll(Collection<Code> items) {
    +                this.codes.addAll(items);
    +        }
    +
    +        @Override
    +        public Code saveAll(Code item) {
    +                assert item.getSource() != null;
    +
    +                Code code = findById(item.getId());
    +
    +                if(code == null){
    +                        this.codes.add(item);
    +                        return item;
    +                }
    +                else {
    +                        code.setSource(item.getSource());
    +                        return code;
    +                }
    +        }
    +
    +        @Override
    +        public Code findById(String id) {
    +                Optional<Code> code = codes
    +                                .stream()
    +                                .filter(c -> c.getId().equals(id))
    +                                .findFirst();
    +                if (code.isPresent()) return code.get();
    +
    +                return null;
    +        }
    +
    +
    +}
    +
    +
    +
    +
    io.pivotal.workshop.snippet.repository.SnippetRepository.java
    +
    +
    package io.pivotal.workshop.snippet.repository;
    +
    +import java.util.ArrayList;
    +import java.util.Collection;
    +import java.util.Date;
    +import java.util.List;
    +import java.util.Optional;
    +
    +import org.springframework.stereotype.Repository;
    +
    +import io.pivotal.workshop.snippet.domain.Snippet;
    +
    +@Repository
    +public class SnippetRepository implements SimpleRepository<Snippet>{
    +
    +        private List<Snippet> snippets = new ArrayList<>();
    +
    +        @Override
    +        public Snippet saveAll(Snippet snippet){
    +                assert snippet.getTitle() != null;
    +                assert snippet.getCode() != null;
    +                assert snippet.getLang() != null;
    +
    +                Snippet _snippet =  null;
    +
    +                if (snippet.getId() == null) {
    +                        _snippet = new Snippet(snippet.getTitle(), snippet.getLang(),snippet.getCode());
    +
    +                } else {
    +                         _snippet = this.findById(snippet.getId());
    +                         if(_snippet != null){
    +                                 _snippet.setTitle(snippet.getTitle());
    +                                 _snippet.setCode(snippet.getCode());
    +                                 _snippet.setLang(snippet.getLang());
    +                                 _snippet.setModified(new Date());
    +                         }
    +                }
    +
    +                return _snippet;
    +        }
    +
    +        @Override
    +        public Iterable<Snippet> findAll(){
    +                return this.snippets;
    +        }
    +
    +        @Override
    +        public Snippet findById(String id){
    +                Optional<Snippet> result = snippets.stream()
    +                                .filter(snippet -> snippet.getId().equals(id))
    +                                .findFirst();
    +
    +                if (result.isPresent()) return result.get();
    +
    +                return null;
    +        }
    +
    +        @Override
    +        public void saveAll(Collection<Snippet> items) {
    +                this.snippets.addAll(items);
    +        }
    +}
    +
    +
    +
  20. +
  21. +

    Next lets do the main controller that will expose the REST API:

    +
    +
    io.pivotal.workshop.snippet.controller.SnippetController.java
    +
    +
    @RestController
    +public class SnippetController {
    +
    +
    +        private SnippetRepository snippetRepository;
    +        private LanguageRepository languageRepository;
    +
    +        public SnippetController(SnippetRepository snippetRepository,LanguageRepository languageRepository){
    +                this.snippetRepository = snippetRepository;
    +                this.languageRepository = languageRepository;
    +        }
    +
    +        @RequestMapping("/")
    +        public ModelAndView home(){
    +                assert snippetRepository != null;
    +
    +                Map<String,Object> model = new HashMap<String,Object>();
    +                model.put("langs", languageRepository.findAll());
    +                model.put("snippets", snippetRepository.findAll());
    +
    +                return new ModelAndView("views/home",model);
    +        }
    +
    +        @RequestMapping("/snippets")
    +        public ResponseEntity<?> snippets(){
    +                assert snippetRepository != null;
    +                return ResponseEntity.ok(snippetRepository.findAll());
    +        }
    +}
    +
    +
    +
  22. +
  23. +

    Create a configuration class to initialize your repositories:

    +
    +
    io.pivotal.workshop.snippet.config.SnippetConfiguration.java
    +
    +
    package io.pivotal.workshop.snippet.config;
    +
    +import java.nio.file.Files;
    +import java.nio.file.Paths;
    +import java.util.ArrayList;
    +import java.util.List;
    +
    +import org.springframework.boot.CommandLineRunner;
    +import org.springframework.context.annotation.Bean;
    +import org.springframework.context.annotation.Configuration;
    +
    +import io.pivotal.workshop.snippet.domain.Code;
    +import io.pivotal.workshop.snippet.domain.Language;
    +import io.pivotal.workshop.snippet.domain.Snippet;
    +import io.pivotal.workshop.snippet.repository.SnippetRepository;
    +
    +@Configuration
    +public class SnippetConfiguration {
    +
    +        @Bean
    +        public CommandLineRunner runner(SnippetRepository snippetRepo) {
    +                return args -> {
    +                        @SuppressWarnings("serial")
    +                        List<Snippet> snippets = new ArrayList<Snippet>() {
    +                                {
    +                                        add(new Snippet("Hello World", new Language("HTML", "xml"),new Code(new String(Files.readAllBytes(Paths.get("code/html-code.txt"))))));
    +                                        add(new Snippet("Hello World", new Language("C#", "c#"),new Code(new String(Files.readAllBytes(Paths.get("code/cs-code.txt"))))));
    +                                        add(new Snippet("Hello World", new Language("Pascal", "py"),new Code(new String(Files.readAllBytes(Paths.get("code/pas-code.txt"))))));
    +                                        add(new Snippet("Hello World", new Language("Erlang", "erl"),new Code(new String(Files.readAllBytes(Paths.get("code/erl-code.txt"))))));
    +                                        add(new Snippet("Hello World", new Language("JavaScript", "js"),new Code(new String(Files.readAllBytes(Paths.get("code/js-code.txt"))))));
    +                                        add(new Snippet("Hello World", new Language("Groovy", "groovy"),new Code("println 'Hello World'")));
    +                                }
    +                        };
    +
    +                        snippetRepo.saveAll(snippets);
    +
    +                };
    +        }
    +}
    +
    +
    +
    +

    as you can see from the above code, we are building up our data.

    +
    +
    +

    If you take a close look, we are using the Files.readAllBytes helper class to read from a file, and this file is located in the code/ folder.

    +
    +
  24. +
  25. +

    Add some code snippets in the code/ folder.

    +
    +
    code/html-code.txt - HTML
    +
    +
    <html>
    +  <body>
    +    <h1>Hello World</h1>
    +  </body>
    +</html>
    +
    +
    +
    +
    code/cs-code.txt - C#
    +
    +
    class Hello {
    + static void Main() {
    +  System.Console.Write("Hello World");
    + }
    +}
    +
    +
    +
    +
    code/pas-code.txt - Pascal
    +
    +
    program HelloWorld;
    +
    +begin
    +  writeln('Hello World');
    +end.
    +
    +
    +
    +
    code/erl-code.txt - Erlang
    +
    +
     -module(hello).
    + -export([hello_world/0]).
    +
    + hello_world() -> io:fwrite("hello, world\n").
    +
    +
    +
    +
    code/js-code.txt - JavaScript
    +
    +
    console.log("Hello World");
    +
    +
    +
  26. +
  27. +

    A lot of code, right? Well now its time to run the application. You can use your IDE or command line. Once running you application, go to your browser and hit: http://localhost:8080/snippets and you should get the a response like Figure 2.0.

    +
    +
    Figure 2.0: Snippet Code Manager - http://localhost:8080/snippets
    +

    /snippets

    +
    +
  28. +
+
+
+
+
+

Challenges

+
+
+

Adding a UI - Home Page

+
+

You can see that the io.pivotal.workshop.snippet.controller.SnippetController.java has the home() method, and it returns the view: views/home and the model, a map that contains the languages and the snippets: +Add the following missing dependencies to your pom.xml because you will need them:

+
+
+
+
<dependency>
+    <groupId>org.webjars</groupId>
+        <artifactId>jquery</artifactId>
+        <version>2.2.4</version>
+</dependency>
+<dependency>
+        <groupId>org.webjars</groupId>
+        <artifactId>bootstrap</artifactId>
+        <version>3.3.6</version>
+</dependency>
+<dependency>
+        <groupId>org.webjars</groupId>
+        <artifactId>angularjs</artifactId>
+        <version>1.5.7</version>
+</dependency>
+
+
+
+

Add the following libraries in the src/main/resources/static/css: +theme.css and offcanvas.css +and in the src/main/resources/static/js folder add the syntaxhighlighter.js script.

+
+
+
    +
  • +

    Create the necessary layout and home page to have the same as Figure 3.0.

    +
    +
    Figure 3.0: Code Snippet Manager - http://localhost:8080
    +

    /

    +
    +
  • +
+
+
+ + + + + +
+
Tip
+
+You can take a look at the Groovy Template Engine: http://docs.groovy-lang.org/next/html/documentation/template-engines.html#_the_markuptemplateengine +
+
+
+
+

REST API

+
+
    +
  • +

    Complete the RESTful API:

    +
    +
      +
    • +

      provide the /snippets/{id} path endpoint to search by snippet Id.

      +
    • +
    • +

      provide methods to handle the: POST, PUT for adding a new snippet and updating the snippet.

      +
    • +
    +
    +
  • +
  • +

    Make changes to repose either JSON or XML.

    +
  • +
  • +

    When doing a XML response, the snippet code should be in a CDATA tag. Modify the code to show a CDATA for every source code. (tip: @JacksonXmlCData)

    +
  • +
+
+
+
+
+
+

[HOMEWORK]

+
+
+
    +
  • +

    Add validation to the POST and PUT methods (tip: @Valid).

    +
  • +
  • +

    Finish up any missing UI or Controller methods.

    +
  • +
+
+
+
+
+ + + \ No newline at end of file diff --git a/src/main/UploadedContent/student-lab-instructions/06-spring-boot-data.html b/src/main/UploadedContent/student-lab-instructions/06-spring-boot-data.html new file mode 100644 index 0000000..87af322 --- /dev/null +++ b/src/main/UploadedContent/student-lab-instructions/06-spring-boot-data.html @@ -0,0 +1,1987 @@ + + + + + + + +Spring Boot Data + + + + + + + + + + + + + + + +
+
+
+
+

Get familiar with the Spring Data and the Spring Boot Data features.

+
+
+

Time: 60 minutes (20 minutes per section).

+
+ +
+
+
+

Code Snippet Manager JDBC

+
+
+

You will continue with the Code Snippet Manager code, but this time using a persistence engine. You will reuse the code from previous labs.

+
+
+
    +
  1. +

    Open a browser and hit the url: http://start.spring.io

    +
  2. +
  3. +

    Click the Switch to the full version link.

    +
  4. +
  5. +

    Fill out the Code Snippet Manager JDBC Project metadata with (See Figure 1.0):

    + + ++++ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    Table 1. Code Snippet Manager JDBC App - metadata
    PropertyValue

    Group:

    io.pivotal.workshop

    Artifact:

    code-snippet-manager-jdbc

    Name:

    code-snippet-manager-jdbc

    Package Name:

    io.pivotal.workshop.snippet

    Dependencies:

    Web, DevTools, Groovy Templates, JDBC, H2, MySQL

    Spring Boot:

    2.0.0.M7

    +
    +
    Figure 1.0: Spring Initializr - http://start.spring.io/
    +

    SpringInitializr

    +
    +
    + + + + + +
    +
    Tip
    +
    +You can choose either Maven or Gradle project types. +
    +
    +
  6. +
  7. +

    Type Web, DevTools, Groovy Templates, JDBC, H2, and MySQL in the Dependencies field and press Enter.

    +
  8. +
  9. +

    Click the Generate Project button.

    +
  10. +
  11. +

    Unzip the file in any directory you want.

    +
  12. +
  13. +

    Import your project in any IDE you want.

    +
  14. +
  15. +

    Copy all the packages (with code) into the new project.

    +
  16. +
  17. +

    The classes in io.pivotal.workshop.snippet.domain: Code, Language and Snippet should be the same.

    +
  18. +
  19. +

    Create a new class CrossSnippetLanguageCode in the domain package:

    +
    +
    +
    package io.pivotal.workshop.snippet.domain;
    +
    +public class CrossSnippetLanguageCode {
    +
    +        private String snippetId;
    +        private String languageId;
    +        private String codeId;
    +
    +        public CrossSnippetLanguageCode() {
    +        }
    +
    +        public CrossSnippetLanguageCode(String snippetId, String languageId, String codeId) {
    +
    +                this.snippetId = snippetId;
    +                this.languageId = languageId;
    +                this.codeId = codeId;
    +        }
    +
    +        public String getSnippetId() {
    +                return snippetId;
    +        }
    +
    +        public void setSnippetId(String snippetId) {
    +                this.snippetId = snippetId;
    +        }
    +
    +        public String getLanguageId() {
    +                return languageId;
    +        }
    +
    +        public void setLanguageId(String languageId) {
    +                this.languageId = languageId;
    +        }
    +
    +        public String getCodeId() {
    +                return codeId;
    +        }
    +
    +        public void setCodeId(String codeId) {
    +                this.codeId = codeId;
    +        }
    +
    +}
    +
    +
    +
    +

    this class will hold the relationship between the Code and Language within the Snippet class.

    +
    +
  20. +
  21. +

    Because you will reuse the SimpleRepository interface, is necessary modify all the implementations. Modify the code accordingly:

    +
    +
    io.pivotal.workshop.snippet.repository.LanguageRepository.java
    +
    +
    package io.pivotal.workshop.snippet.repository;
    +
    +import java.sql.PreparedStatement;
    +import java.util.Collection;
    +
    +import org.springframework.beans.factory.annotation.Autowired;
    +import org.springframework.dao.EmptyResultDataAccessException;
    +import org.springframework.jdbc.core.JdbcTemplate;
    +import org.springframework.stereotype.Repository;
    +
    +import io.pivotal.workshop.snippet.domain.Language;
    +import io.pivotal.workshop.snippet.repository.mapper.LanguageRowMapper;
    +
    +@Repository
    +public class LanguageRepository implements SimpleRepository<Language>{
    +
    +    private final String SQL_FIND_ALL = "select * from language";
    +    private final String SQL_FIND_ONE = "select * from language where name = ?";
    +    private final String SQL_INSERT = "insert into language(id,name,syntax) values(?,?,?)";
    +    private final String SQL_UPDATE = "update language set name = ?, syntax = ? where id = ?";
    +
    +    private JdbcTemplate jdbcTemplate;
    +
    +    @Autowired
    +    public LanguageRepository(JdbcTemplate jdbcTemplate){
    +                    this.jdbcTemplate = jdbcTemplate;
    +    }
    +
    +    @Override
    +        public Iterable<Language> findAll(){
    +                return this.jdbcTemplate.query(SQL_FIND_ALL, new LanguageRowMapper());
    +        }
    +
    +    @Override
    +        public void saveAll(Collection<Language> languages){
    +                languages.forEach( lang -> saveAll(lang) );
    +        }
    +
    +    @Override
    +        public Language findById(String name) {
    +                    try {
    +                            return this.jdbcTemplate.queryForObject(SQL_FIND_ONE, new Object[]{name}, new LanguageRowMapper());
    +                } catch (EmptyResultDataAccessException ex){
    +                            return null;
    +                    }
    +        }
    +
    +    @Override
    +        public Language saveAll(Language item) {
    +                assert item.getName() != null;
    +
    +                Language language = this.findById(item.getName());
    +
    +                if(language == null) {
    +                        this.jdbcTemplate.update( psc -> {
    +                                PreparedStatement ps = psc.prepareStatement(SQL_INSERT);
    +                                ps.setString(1, item.getId());
    +                                ps.setString(2, item.getName());
    +                                ps.setString(3, item.getSyntax());
    +                                return ps;
    +                        });
    +                        return item;
    +                }else {
    +                        this.jdbcTemplate.update( psc -> {
    +                                PreparedStatement ps = psc.prepareStatement(SQL_UPDATE);
    +                                ps.setString(1, item.getName());
    +                                ps.setString(2, item.getSyntax());
    +                                ps.setString(3, item.getId());
    +                                return ps;
    +                        });
    +                        return language;
    +                }
    +        }
    +}
    +
    +
    +
    +
    io.pivotal.workshop.snippet.repository.CodeRepository.java
    +
    +
    package io.pivotal.workshop.snippet.repository;
    +
    +import java.sql.PreparedStatement;
    +import java.util.Collection;
    +import java.util.List;
    +
    +import org.springframework.beans.factory.annotation.Autowired;
    +import org.springframework.dao.EmptyResultDataAccessException;
    +import org.springframework.jdbc.core.JdbcTemplate;
    +import org.springframework.stereotype.Repository;
    +
    +import io.pivotal.workshop.snippet.domain.Code;
    +import io.pivotal.workshop.snippet.repository.mapper.CodeRowMapper;
    +
    +@Repository
    +public class CodeRepository implements SimpleRepository<Code> {
    +
    +        private final String SQL_FIND_ALL = "select * from code";
    +        private final String SQL_FIND_ONE = "select * from code where id = ?";
    +        private final String SQL_INSERT = "insert into code(id,source) values(?,?)";
    +        private final String SQL_UPDATE = "update code set source = ? where id = ?";
    +
    +        private JdbcTemplate jdbcTemplate;
    +
    +        @Autowired
    +        public CodeRepository(JdbcTemplate jdbcTemplate) {
    +                this.jdbcTemplate = jdbcTemplate;
    +        }
    +
    +        @Override
    +        public List<Code> findAll() {
    +                return this.jdbcTemplate.query(SQL_FIND_ALL, new CodeRowMapper());
    +        }
    +
    +        @Override
    +        public void saveAll(Collection<Code> items) {
    +                items.forEach(code -> this.saveAll(code));
    +        }
    +
    +        @Override
    +        public Code findById(String id) {
    +                try {
    +                        return this.jdbcTemplate.queryForObject(SQL_FIND_ONE, new Object[] { id }, new CodeRowMapper());
    +                } catch (EmptyResultDataAccessException ex) {
    +                        return null;
    +                }
    +        }
    +
    +        @Override
    +        public Code saveAll(Code item) {
    +                assert item.getSource() != null;
    +
    +                Code code = this.findById(item.getId());
    +
    +                if (code == null) {
    +                        this.jdbcTemplate.update(psc -> {
    +                                PreparedStatement ps = psc.prepareStatement(SQL_INSERT);
    +                                ps.setString(1, item.getId());
    +                                ps.setString(2, item.getSource());
    +                                return ps;
    +                        });
    +                        return item;
    +                } else {
    +                        this.jdbcTemplate.update(psc -> {
    +                                PreparedStatement ps = psc.prepareStatement(SQL_UPDATE);
    +                                ps.setString(1, item.getSource());
    +                                ps.setString(2, item.getId());
    +                                return ps;
    +                        });
    +                        return code;
    +                }
    +        }
    +
    +}
    +
    +
    +
    +
    io.pivotal.workshop.snippet.repository.SnippetRepository.java
    +
    +
    package io.pivotal.workshop.snippet.repository;
    +
    +import java.sql.PreparedStatement;
    +import java.text.SimpleDateFormat;
    +import java.util.Collection;
    +import java.util.Date;
    +import java.util.List;
    +
    +import org.springframework.beans.factory.annotation.Autowired;
    +import org.springframework.dao.EmptyResultDataAccessException;
    +import org.springframework.jdbc.core.JdbcTemplate;
    +import org.springframework.stereotype.Repository;
    +
    +import io.pivotal.workshop.snippet.domain.CrossSnippetLanguageCode;
    +import io.pivotal.workshop.snippet.domain.Snippet;
    +import io.pivotal.workshop.snippet.repository.mapper.SnippetRowMapper;
    +
    +@Repository
    +public class SnippetRepository implements SimpleRepository<Snippet> {
    +
    +        private final String SQL_FIND_ALL = "select s.*,l.id lang_id, l.name lang_name, l.syntax lang_syntax, c.id code_id, c.source code_source from cross_snippet_language_code cx " +
    +                        "inner join snippet s on cx.snippet_id = s.id " +
    +                        "inner join language l on cx.language_id = l.id " +
    +                        "inner join code c on cx.code_id = c.id ";
    +
    +        private final String SQL_FIND_ONE = SQL_FIND_ALL + " where s.id = ?";
    +        private final String SQL_INSERT = "insert into snippet(id,title, keywords, description, created, modified) values(?,?,?,?,?,?)";
    +        private final String SQL_UPDATE = "update snippet set title = ?, keywords = ?, description = ?, modified = ? where id = ?";
    +
    +        private JdbcTemplate jdbcTemplate;
    +        private LanguageRepository langRepo;
    +        private CodeRepository codeRepo;
    +        private CrossSnippetLanguageCodeRepository crossRepo;
    +
    +        @Autowired
    +        public SnippetRepository(JdbcTemplate jdbcTemplate, LanguageRepository langRepo, CodeRepository codeRepo, CrossSnippetLanguageCodeRepository crossRepo) {
    +                this.jdbcTemplate = jdbcTemplate;
    +                this.langRepo = langRepo;
    +                this.codeRepo = codeRepo;
    +                this.crossRepo = crossRepo;
    +        }
    +
    +        @Override
    +        public List<Snippet> findAll() {
    +                return this.jdbcTemplate.query(SQL_FIND_ALL, new SnippetRowMapper());
    +        }
    +
    +        @Override
    +        public void saveAll(Collection<Snippet> items) {
    +                items.forEach(code -> this.saveAll(code));
    +        }
    +
    +        @Override
    +        public Snippet findById(String id) {
    +                try {
    +                        return this.jdbcTemplate.queryForObject(SQL_FIND_ONE, new Object[] { id }, new SnippetRowMapper());
    +                } catch (EmptyResultDataAccessException ex) {
    +                        return null;
    +                }
    +        }
    +
    +        @Override
    +        public Snippet saveAll(final Snippet item) {
    +                assert item.getId() != null;
    +                assert item.getTitle() != null;
    +                assert item.getLang() != null;
    +                assert item.getCode() != null;
    +
    +                Snippet snippet = this.findById(item.getId());
    +
    +                Date date = new Date();
    +                SimpleDateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd");
    +
    +                if (snippet == null) {
    +
    +                        this.crossRepo.saveAll(new CrossSnippetLanguageCode(item.getId(), item.getLang().getId(), item.getCode().getId()));
    +                        this.langRepo.saveAll(item.getLang());
    +                        this.codeRepo.saveAll(item.getCode());
    +
    +                        this.jdbcTemplate.update(psc -> {
    +                                PreparedStatement ps = psc.prepareStatement(SQL_INSERT);
    +                                ps.setString(1, item.getId());
    +                                ps.setString(2, item.getTitle());
    +                                ps.setString(3, item.getKeywords());
    +                                ps.setString(4, item.getDescription());
    +                                ps.setString(5, dateFormat.format(date));
    +                                ps.setString(6, dateFormat.format(date));
    +                                return ps;
    +                        });
    +
    +                        return item;
    +
    +                } else {
    +                        this.crossRepo.saveAll(new CrossSnippetLanguageCode(snippet.getId(), snippet.getLang().getId(), snippet.getCode().getId()));
    +                        this.langRepo.saveAll(item.getLang());
    +                        this.codeRepo.saveAll(item.getCode());
    +
    +                        this.jdbcTemplate.update(psc -> {
    +                                PreparedStatement ps = psc.prepareStatement(SQL_UPDATE);
    +                                ps.setString(1, item.getTitle());
    +                                ps.setString(2, item.getKeywords());
    +                                ps.setString(3, item.getDescription());
    +                                ps.setString(4, dateFormat.format(date));
    +                                ps.setString(5, item.getId());
    +                                return ps;
    +                        });
    +
    +                        return snippet;
    +                }
    +        }
    +
    +
    +}
    +
    +
    +
    +

    Every single class is using the JdbcTemplate (with some methods like: queryForObject, query and update) and the RowMapper, analyze the code and review the SQL statements.

    +
    +
  22. +
  23. +

    As you already guess from the code above, the SnippetRepository class has on its constructor the CrossSnippetLanguageCodeRepository reference. Create this class:

    +
    +
    io.pivotal.workshop.snippet.repository.CrossSnippetLanguageCodeRepository.java
    +
    +
    package io.pivotal.workshop.snippet.repository;
    +
    +import java.sql.PreparedStatement;
    +import java.sql.ResultSet;
    +import java.util.Collection;
    +
    +import org.springframework.beans.factory.annotation.Autowired;
    +import org.springframework.dao.EmptyResultDataAccessException;
    +import org.springframework.jdbc.core.JdbcTemplate;
    +import org.springframework.jdbc.core.RowMapper;
    +import org.springframework.stereotype.Repository;
    +
    +import io.pivotal.workshop.snippet.domain.CrossSnippetLanguageCode;
    +
    +@Repository
    +public class CrossSnippetLanguageCodeRepository implements SimpleRepository<CrossSnippetLanguageCode> {
    +
    +        private final String SQL_FIND_ALL = "select * from cross_snippet_language_code";
    +        private final String SQL_FIND_ONE = "select * from cross_snippet_language_code where snippet_id = ?";
    +        private final String SQL_INSERT = "insert into cross_snippet_language_code(snippet_id,language_id,code_id) values(?,?,?)";
    +        private final String SQL_UPDATE = "update cross_snippet_language_code set langauge_id = ?, code_id = ? where snippet_id = ?";
    +        private JdbcTemplate jdbcTemplate;
    +
    +        private final RowMapper<CrossSnippetLanguageCode> rowMapper = (ResultSet rs, int row) -> {
    +                CrossSnippetLanguageCode cross = new CrossSnippetLanguageCode();
    +                cross.setSnippetId(rs.getString("snippet_id"));
    +                cross.setLanguageId(rs.getString("language_id"));
    +                cross.setCodeId(rs.getString("code_id"));
    +                return cross;
    +        };
    +
    +        @Autowired
    +        public CrossSnippetLanguageCodeRepository(JdbcTemplate jdbcTemplate) {
    +                this.jdbcTemplate = jdbcTemplate;
    +        }
    +
    +        @Override
    +        public Iterable<CrossSnippetLanguageCode> findAll() {
    +                return this.jdbcTemplate.query(SQL_FIND_ALL, rowMapper);
    +        }
    +
    +        @Override
    +        public void saveAll(Collection<CrossSnippetLanguageCode> items) {
    +                items.forEach(cross -> {
    +                        this.saveAll(cross);
    +                });
    +        }
    +
    +        @Override
    +        public CrossSnippetLanguageCode saveAll(CrossSnippetLanguageCode item) {
    +                assert item.getSnippetId() != null;
    +                assert item.getLanguageId() != null;
    +                assert item.getCodeId() != null;
    +
    +                CrossSnippetLanguageCode cross = this.findById(item.getSnippetId());
    +
    +                if (cross == null) {
    +                        this.jdbcTemplate.update(psc -> {
    +                                PreparedStatement ps = psc.prepareStatement(SQL_INSERT);
    +                                ps.setString(1, item.getSnippetId());
    +                                ps.setString(2, item.getLanguageId());
    +                                ps.setString(3, item.getCodeId());
    +                                return ps;
    +                        });
    +                        return item;
    +                } else {
    +                        this.jdbcTemplate.update(psc -> {
    +                                PreparedStatement ps = psc.prepareStatement(SQL_UPDATE);
    +                                ps.setString(1, item.getLanguageId());
    +                                ps.setString(2, item.getCodeId());
    +                                ps.setString(3, item.getSnippetId());
    +                                return ps;
    +                        });
    +                        return cross;
    +                }
    +
    +        }
    +
    +        @Override
    +        public CrossSnippetLanguageCode findById(String id) {
    +                try {
    +                        return this.jdbcTemplate.queryForObject(SQL_FIND_ONE, new Object[] { id }, rowMapper);
    +                } catch (EmptyResultDataAccessException ex) {
    +                        return null;
    +                }
    +        }
    +
    +}
    +
    +
    +
    +

    Have you noticed that the CrossSnippetLanguageCodeRepository is using a declared Java 8 lambda notation for the RowMapper?

    +
    +
  24. +
  25. +

    Talking about RowMapper, all the above code is using it to map the ResultSet with the domain class. Create the following mappers in the io.pivotal.workshop.snippet.repository.mapper package:

    +
    +
    io.pivotal.workshop.snippet.repository.mapper.LanguageRowMapper.java
    +
    +
    package io.pivotal.workshop.snippet.repository.mapper;
    +
    +import java.sql.ResultSet;
    +import java.sql.SQLException;
    +
    +import org.springframework.jdbc.core.RowMapper;
    +
    +import io.pivotal.workshop.snippet.domain.Language;
    +
    +public class LanguageRowMapper implements RowMapper<Language> {
    +
    +        @Override
    +        public Language mapRow(ResultSet rs, int rowNum) throws SQLException {
    +                 Language lang = new Language();
    +                 lang.setId(rs.getString("id"));
    +                 lang.setName(rs.getString("name"));
    +                 lang.setSyntax(rs.getString("syntax"));
    +                return lang;
    +        }
    +
    +}
    +
    +
    +
    +
    io.pivotal.workshop.snippet.repository.mapper.CodeRowMapper.java
    +
    +
    package io.pivotal.workshop.snippet.repository.mapper;
    +
    +import java.sql.ResultSet;
    +import java.sql.SQLException;
    +
    +import org.springframework.jdbc.core.RowMapper;
    +
    +import io.pivotal.workshop.snippet.domain.Code;
    +
    +public class CodeRowMapper implements RowMapper<Code> {
    +
    +        @Override
    +        public Code mapRow(ResultSet rs, int rowNum) throws SQLException {
    +                Code code = new Code();
    +                code.setId(rs.getString("id"));
    +                code.setSource(rs.getString("source"));
    +                return code;
    +        }
    +
    +}
    +
    +
    +
    +
    io.pivotal.workshop.snippet.repository.mapper.SnippetRowMapper.java
    +
    +
    package io.pivotal.workshop.snippet.repository.mapper;
    +
    +import java.sql.ResultSet;
    +import java.sql.SQLException;
    +
    +import org.springframework.jdbc.core.RowMapper;
    +
    +import io.pivotal.workshop.snippet.domain.Code;
    +import io.pivotal.workshop.snippet.domain.Language;
    +import io.pivotal.workshop.snippet.domain.Snippet;
    +
    +public class SnippetRowMapper implements RowMapper<Snippet> {
    +
    +        @Override
    +        public Snippet mapRow(ResultSet rs, int rowNum) throws SQLException {
    +                Language lang = new Language();
    +                lang.setId(rs.getString("lang_id"));
    +                lang.setName(rs.getString("lang_name"));
    +                lang.setSyntax(rs.getString("lang_syntax"));
    +
    +                Code code = new Code();
    +                code.setId(rs.getString("code_id"));
    +                code.setSource(rs.getString("code_source"));
    +
    +                Snippet snippet = new Snippet();
    +                snippet.setId(rs.getString("id"));
    +                snippet.setTitle(rs.getString("title"));
    +                snippet.setDescription(rs.getString("description"));
    +                snippet.setKeywords(rs.getString("keywords"));
    +                snippet.setCreated(rs.getDate("created"));
    +                snippet.setModified(rs.getDate("modified"));
    +                snippet.setLang(lang);
    +                snippet.setCode(code);
    +
    +                return snippet;
    +        }
    +
    +}
    +
    +
    +
  26. +
  27. +

    The SnippetController and the SnippetConfiguration classes must be the same. Practically there is no change on any of them, they should work.

    +
  28. +
  29. +

    Next add the schema.sql in the src/main/resources/ folder.

    +
    +
    +
    DROP TABLE IF EXISTS snippet;
    +CREATE TABLE snippet
    +(
    +    id varchar(36) NOT NULL,
    +    title varchar(200) NOT NULL,
    +    keywords varchar(250) DEFAULT NULL,
    +    description varchar(500) DEFAULT NULL,
    +    created date NOT NULL,
    +    modified date NOT NULL,
    +    PRIMARY KEY (id)
    +);
    +
    +
    +DROP TABLE IF EXISTS language;
    +CREATE TABLE language
    +(
    +    id varchar(36) NOT NULL,
    +    name varchar(250) NOT NULL,
    +    syntax varchar(250) DEFAULT NULL,
    +    PRIMARY KEY (id)
    +);
    +
    +DROP TABLE IF EXISTS code;
    +CREATE TABLE code
    +(
    +    id varchar(36) NOT NULL,
    +    source varchar(5000) NOT NULL,
    +    PRIMARY KEY (id)
    +);
    +
    +
    +DROP TABLE IF EXISTS cross_snippet_language_code;
    +CREATE TABLE cross_snippet_language_code
    +(
    +    snippet_id varchar(36) NOT NULL,
    +    language_id varchar(36) NOT NULL,
    +    code_id varchar(36) NOT NULL,
    +    PRIMARY KEY (snippet_id)
    +);
    +
    +
    +
  30. +
+
+
+ + + + + +
+
Tip
+
+Before you run your application make sure to have copied resources/static and resources/templates files from the previous labs. +
+
+
+

Challenges

+
+
    +
  • +

    Run the application and make sure it works.

    +
  • +
  • +

    Do any necessary change to have the home page working.

    +
    +
    Figure 1.1: Code Snippet Manager JDBC - http://localhost:8080/
    +

    Code Snippet Manager

    +
    +
  • +
+
+
+
+
+
+

Code Snippet Manager JPA

+
+
+

You will continue with the Code Snippet Manager code, but this time using JPA. You will reuse the code from previous labs.

+
+
+
    +
  1. +

    Open a browser and hit the url: http://start.spring.io

    +
  2. +
  3. +

    Click the Switch to the full version link.

    +
  4. +
  5. +

    Fill out the Code Snippet Manager JPA Project metadata with (See Figure 2.0):

    + + ++++ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    Table 2. Code Snippet Manager JPA App - metadata
    PropertyValue

    Group:

    io.pivotal.workshop

    Artifact:

    code-snippet-manager-jpa

    Name:

    code-snippet-manager-jpa

    Package Name:

    io.pivotal.workshop.snippet

    Dependencies:

    Web, DevTools, Groovy Templates, JPA, H2, MySQL

    Spring Boot:

    2.0.0.M7

    +
    +
    Figure 2.0: Spring Initializr - http://start.spring.io/
    +

    SpringInitializr

    +
    +
    + + + + + +
    +
    Tip
    +
    +You can choose either Maven or Gradle project types. +
    +
    +
  6. +
  7. +

    type Web, DevTools, Groovy Templates, JPA, H2, and MySQL in the Dependencies field and press Enter.

    +
  8. +
  9. +

    Click the Generate Project button.

    +
  10. +
  11. +

    Unzip the file in any directory you want.

    +
  12. +
  13. +

    Import your project in any IDE you want.

    +
  14. +
  15. +

    Copy all the packages (with code) into the new project.

    +
  16. +
  17. +

    The classes in io.pivotal.workshop.snippet.domain: Code, Language and Snippet will change because you will use the JPA features. Create/modify the following classes:

    +
    +
    io.pivotal.workshop.snippet.domain.Language.java
    +
    +
    package io.pivotal.workshop.snippet.domain;
    +
    +import javax.persistence.Entity;
    +import javax.persistence.GeneratedValue;
    +import javax.persistence.Id;
    +
    +import org.hibernate.annotations.GenericGenerator;
    +
    +@Entity
    +public class Language {
    +
    +        @Id
    +        @GeneratedValue(generator = "system-uuid")
    +        @GenericGenerator(name = "system-uuid", strategy = "uuid")
    +        private String id;
    +        private String name;
    +        private String syntax = "text";
    +
    +        public Language() {
    +        }
    +
    +        public Language(String name) {
    +                this();
    +                this.name = name;
    +        }
    +
    +        public Language(String name, String syntax) {
    +                this(name);
    +                this.syntax = syntax;
    +        }
    +
    +        public String getId() {
    +                return id;
    +        }
    +
    +        public void setId(String id) {
    +                this.id = id;
    +        }
    +
    +        public String getName() {
    +                return name;
    +        }
    +
    +        public void setName(String name) {
    +                this.name = name;
    +        }
    +
    +        public String getSyntax() {
    +                return syntax;
    +        }
    +
    +        public void setSyntax(String syntax) {
    +                this.syntax = syntax;
    +        }
    +}
    +
    +
    +
    +
    io.pivotal.workshop.snippet.domain.Code.java
    +
    +
    package io.pivotal.workshop.snippet.domain;
    +
    +import javax.persistence.Entity;
    +import javax.persistence.GeneratedValue;
    +import javax.persistence.Id;
    +
    +import org.hibernate.annotations.GenericGenerator;
    +
    +@Entity
    +public class Code {
    +
    +        @Id
    +        @GeneratedValue(generator = "system-uuid")
    +        @GenericGenerator(name = "system-uuid", strategy = "uuid")
    +        private String id;
    +        private String source;
    +
    +        public Code() {
    +        }
    +
    +        public Code(String source) {
    +                this();
    +                this.source = source;
    +        }
    +
    +        public String getId() {
    +                return id;
    +        }
    +
    +        public void setId(String id) {
    +                this.id = id;
    +        }
    +
    +        public String getSource() {
    +                return source;
    +        }
    +
    +        public void setSource(String source) {
    +                this.source = source;
    +        }
    +
    +}
    +
    +
    +
    +
    io.pivotal.workshop.snippet.domain.Snippet.java
    +
    +
    package io.pivotal.workshop.snippet.domain;
    +
    +import java.util.Date;
    +
    +import javax.persistence.CascadeType;
    +import javax.persistence.Column;
    +import javax.persistence.Entity;
    +import javax.persistence.FetchType;
    +import javax.persistence.GeneratedValue;
    +import javax.persistence.Id;
    +import javax.persistence.OneToOne;
    +import javax.persistence.PrePersist;
    +import javax.persistence.PreUpdate;
    +
    +import org.hibernate.annotations.GenericGenerator;
    +
    +@Entity
    +public class Snippet {
    +
    +        @Id
    +        @GeneratedValue(generator = "system-uuid")
    +        @GenericGenerator(name = "system-uuid", strategy = "uuid")
    +        private String id;
    +        private String title;
    +        private String keywords = "";
    +        private String description = "";
    +
    +        @OneToOne(fetch=FetchType.EAGER, cascade = CascadeType.ALL)
    +        private Language lang;
    +
    +        @OneToOne(fetch=FetchType.EAGER, cascade = CascadeType.ALL)
    +        private Code code;
    +
    +        @Column(insertable = true, updatable = false)
    +        private Date created;
    +        private Date modified;
    +
    +        public Snippet() {
    +                this.id = java.util.UUID.randomUUID().toString().replaceAll("-", "");
    +                this.created = new Date();
    +                this.modified = new Date();
    +        }
    +
    +        public Snippet(String title, String keywords, String description, Language lang, Code code) {
    +                this();
    +                this.title = title;
    +                this.keywords = keywords;
    +                this.description = description;
    +                this.lang = lang;
    +                this.code = code;
    +        }
    +
    +        public Snippet(String title, Language lang, Code code) {
    +                this(title, "", "", lang, code);
    +        }
    +
    +        public String getId() {
    +                return id;
    +        }
    +
    +        public void setId(String id) {
    +                this.id = id;
    +        }
    +
    +        public String getTitle() {
    +                return title;
    +        }
    +
    +        public void setTitle(String title) {
    +                this.title = title;
    +        }
    +
    +        public Language getLang() {
    +                return lang;
    +        }
    +
    +        public void setLang(Language lang) {
    +                this.lang = lang;
    +        }
    +
    +        public String getDescription() {
    +                return description;
    +        }
    +
    +        public void setDescription(String description) {
    +                this.description = description;
    +        }
    +
    +        public String getKeywords() {
    +                return keywords;
    +        }
    +
    +        public void setKeywords(String keywords) {
    +                this.keywords = keywords;
    +        }
    +
    +        public Code getCode() {
    +                return code;
    +        }
    +
    +        public void setCode(Code code) {
    +                this.code = code;
    +        }
    +
    +        public Date getCreated() {
    +                return created;
    +        }
    +
    +        public void setCreated(Date created) {
    +                this.created = created;
    +        }
    +
    +        public Date getModified() {
    +                return modified;
    +        }
    +
    +        public void setModified(Date modified) {
    +                this.modified = modified;
    +        }
    +
    +        @PrePersist
    +        void onCreate() {
    +                this.setCreated(new Date());
    +            this.setModified(new Date());
    +        }
    +
    +        @PreUpdate
    +        void onUpdate() {
    +                this.setModified(new Date());
    +        }
    +}
    +
    +
    +
    +

    See that you are using now the JPA standard annotations: @Entity, @Id, @OneToOne, etc.

    +
    +
  18. +
  19. +

    The repositories will change becasue you will use the power of the spring-data and spring-data-jpa projects. Create/Modify the following classes:

    +
    +
    io.pivotal.workshop.snippet.repository.LanguageRepository.java
    +
    +
    package io.pivotal.workshop.snippet.repository;
    +
    +import org.springframework.data.repository.CrudRepository;
    +
    +import io.pivotal.workshop.snippet.domain.Language;
    +
    +public interface LanguageRepository extends CrudRepository<Language, String> {
    +
    +}
    +
    +
    +
    +
    io.pivotal.workshop.snippet.repository.CodeRepository.java
    +
    +
    package io.pivotal.workshop.snippet.repository;
    +
    +import org.springframework.data.repository.CrudRepository;
    +
    +import io.pivotal.workshop.snippet.domain.Code;
    +
    +public interface CodeRepository extends CrudRepository<Code, String> {
    +
    +}
    +
    +
    +
    +
    io.pivotal.workshop.snippet.repository.SnippetRepository.java
    +
    +
    package io.pivotal.workshop.snippet.repository;
    +
    +import org.springframework.data.repository.CrudRepository;
    +
    +import io.pivotal.workshop.snippet.domain.Snippet;
    +
    +public interface SnippetRepository extends CrudRepository<Snippet, String> {
    +
    +}
    +
    +
    +
    +

    As you can see from the code above, you don’t need to implement anything but just extend from the CrudRepository<T,ID> interface, which uses generics, meaning that you need to +pass the domain class and the unique identifies, in this case what is marked as @Id. All the operation from the CrudRepository<T,ID> interface will be implemented by the spring-data classes.

    +
    +
  20. +
  21. +

    The SnippetController and the SnippetConfiguration classes must be the same. Practically there is no change on any of them, they should work.

    +
  22. +
  23. +

    This time there is no need for any SQL schema, this time you will use the DDL auto-creation feature. In the src/main/resources/application.properties file add the following content:

    +
    +
    src/main/resources/application.properties
    +
    +
    ## JPA
    +spring.jpa.generate-ddl=true
    +spring.jpa.hibernate.ddl-auto=create-drop
    +
    +
    +
  24. +
+
+
+ + + + + +
+
Tip
+
+Before you run your application make sure to have copied resources/static and resources/templates files from the previous labs. +
+
+
+

Challenges

+
+
    +
  • +

    Run the application and make sure it works.

    +
  • +
  • +

    Do any necessary change to have the home page working.

    +
    +
    Figure 1.1: Code Snippet Manager JPA - http://localhost:8080/
    +

    Code Snippet Manager JPA

    +
    +
  • +
+
+
+
+
+
+

Code Snippet Manager JPA REST

+
+
+

You will continue with the Code Snippet Manager code, but this time using Data Rest module. You will reuse the code from previous labs.

+
+
+
    +
  1. +

    Open a browser and hit the url: http://start.spring.io

    +
  2. +
  3. +

    Click the Switch to the full version link.

    +
  4. +
  5. +

    Fill out the Code Snippet Manager JPA REST Project metadata with (See Figure 3.0):

    + + ++++ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    Table 3. Code Snippet Manager JPA REST App - metadata
    PropertyValue

    Group:

    io.pivotal.workshop

    Artifact:

    code-snippet-manager-jpa-rest

    Name:

    code-snippet-manager-jpa-rest

    Package Name:

    io.pivotal.workshop.snippet

    Dependencies:

    Web, DevTools, Groovy Templates, JPA, Rest Repositories, H2, MySQL

    Spring Boot:

    2.0.0.M7

    +
    +
    Figure 3.0: Spring Initializr - http://start.spring.io/
    +

    SpringInitializr

    +
    +
    + + + + + +
    +
    Tip
    +
    +You can choose either Maven or Gradle project types. +
    +
    +
  6. +
  7. +

    type Web, DevTools, Groovy Templates, JPA, Rest Repositories, H2, and MySQL in the Dependencies field and press Enter.

    +
  8. +
  9. +

    Click the Generate Project button.

    +
  10. +
  11. +

    Unzip the file in any directory you want.

    +
  12. +
  13. +

    Import your project in any IDE you want.

    +
  14. +
  15. +

    Copy all the packages (with code) into the new project.

    +
  16. +
  17. +

    The only class that will change will be the SnippetController. Create/modify the folowing class:

    +
    +
    io.pivotal.workshop.snippet.controller.SnippetController.java
    +
    +
    package io.pivotal.workshop.snippet.controller;
    +
    +import java.util.HashMap;
    +import java.util.Map;
    +
    +import org.springframework.web.bind.annotation.RequestMapping;
    +import org.springframework.web.bind.annotation.RestController;
    +import org.springframework.web.servlet.ModelAndView;
    +
    +import io.pivotal.workshop.snippet.repository.LanguageRepository;
    +import io.pivotal.workshop.snippet.repository.SnippetRepository;
    +
    +@RestController
    +public class SnippetController {
    +
    +
    +        private SnippetRepository snippetRepository;
    +        private LanguageRepository languageRepository;
    +
    +        public SnippetController(SnippetRepository snippetRepository,LanguageRepository languageRepository){
    +                this.snippetRepository = snippetRepository;
    +                this.languageRepository = languageRepository;
    +        }
    +
    +        @RequestMapping("/")
    +        public ModelAndView home(){
    +                assert snippetRepository != null;
    +
    +                Map<String,Object> model = new HashMap<String,Object>();
    +                model.put("langs", languageRepository.findAll());
    +                model.put("snippets", snippetRepository.findAll());
    +
    +                return new ModelAndView("views/home",model);
    +        }
    +
    +}
    +
    +
    +
    +

    As you can see, only is necessary the home method, and this is because the spring-data-rest module will take care of creating all the web controllers for accepting any request regarding to the domain repositories.

    +
    +
  18. +
  19. +

    When using the spring-data-rest libraries, the default path for the controllers is the root: /, but in this case you are using the root as home page, that’s why is necessary to override the spring-data-rest context path defaults, +in the src/main/resources/application.properties file add the following:

    +
    +
    src/main/resources/application.properties
    +
    +
    ## JPA
    +spring.jpa.generate-ddl=true
    +spring.jpa.hibernate.ddl-auto=create-drop
    +
    +## REST
    +spring.data.rest.base-path=api
    +
    +
    +
    +

    Now you should be able to use the http://localhost:8080/api to access the REST repositories.

    +
    +
  20. +
+
+
+ + + + + +
+
Tip
+
+Before you run your application make sure to have copied resources/static and resources/templates files from the previous labs. +
+
+
+

Challenges

+
+
    +
  • +

    Run the application and make sure it works.

    +
    + + + + + +
    +
    Tip
    +
    +See the logs and take a look at all the mapping that is being generated. +
    +
    +
  • +
  • +

    Do any necessary change to have the home page working.

    +
    +
    Figure 3.1: Code Snippet Manager JPA REST - http://localhost:8080/
    +

    Code Snippet Manager

    +
    +
  • +
  • +

    Go to the http://localhost:8080/api, you should see the following image:

    +
    +
    Figure 3.2: Code Snippet Manager JPA REST - http://localhost:8080/api
    +

    Code Snippet Manager API

    +
    +
    +

    and if you click the http://localhost:8080/api/snippets you should see the following image:

    +
    +
    +
    Figure 3.2: Code Snippet Manager JPA REST - http://localhost:8080/api/snippets
    +

    Code Snippet Manager API

    +
    +
  • +
  • +

    Review all the links and see that the all the information is being translated into a JSON/HAL.

    +
  • +
  • +

    So far we are using the H2 engine, do the necessary changes to use now MySQL, how can you accomplish this?

    +
  • +
+
+
+
+
+
+

HOMEWORK

+
+
+
    +
  • +

    Use multiple databases like MySQL and MongoDB (multiple Datasources).

    +
  • +
  • +

    Use Flyway or Liquibase to do a Database migration. Add an executeCommand field to the Code domain class. This field will tell how to execute the source code provided.

    +
  • +
  • +

    Use jOOQ framework.

    +
  • +
+
+
+
+
+ + + \ No newline at end of file diff --git a/src/main/UploadedContent/student-lab-instructions/07-spring-boot-testing.html b/src/main/UploadedContent/student-lab-instructions/07-spring-boot-testing.html new file mode 100644 index 0000000..9a27e9b --- /dev/null +++ b/src/main/UploadedContent/student-lab-instructions/07-spring-boot-testing.html @@ -0,0 +1,825 @@ + + + + + + + +Spring Boot Testing + + + + + + + + + + + + + + + +
+
+
+
+

Get familiar with the Spring Testing and the Spring Boot Testing features.

+
+
+

Time: 20 minutes.

+
+ +
+
+
+

Code Snippet Manager JPA REST Testing

+
+
+

In this lab you will use the code from the Code Snippet Manager JPA Rest project. You will adding some tests.

+
+
+
    +
  1. +

    Open a browser and hit the url: http://start.spring.io

    +
  2. +
  3. +

    Click the Switch to the full version link.

    +
  4. +
  5. +

    Fill out the Code Snippet Manager JPA REST Test Project metadata with (See Figure 1.0):

    + + ++++ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    Table 1. Code Snippet Manager JPA REST Test App - metadata
    PropertyValue

    Group:

    io.pivotal.workshop

    Artifact:

    code-snippet-manager-jpa-rest-test

    Name:

    code-snippet-manager-jpa-rest-test

    Package Name:

    io.pivotal.workshop.snippet

    Dependencies:

    Web, DevTools, Groovy Templates, JPA, Rest Repositories, H2, MySQL

    Spring Boot:

    2.0.0.M7

    +
    +
    Figure 1.0: Spring Initializr - http://start.spring.io/
    +

    SpringInitializr

    +
    +
    + + + + + +
    +
    Tip
    +
    +You can choose either Maven or Gradle project types. +
    +
    +
  6. +
  7. +

    Type Web, DevTools, Groovy Templates, JPA, Rest Repositories, H2, and MySQL in the Dependencies field and press Enter.

    +
  8. +
  9. +

    Click the Generate Project button.

    +
  10. +
  11. +

    Unzip the file in any directory you want.

    +
  12. +
  13. +

    Import your project in any IDE you want.

    +
  14. +
  15. +

    Copy all the packages (with code) into the new project. None of the code will be changed.

    +
  16. +
  17. +

    In this lab you will use also a 3rd Party library called: Rest Assured. Add the following dependency to your pom.xml or build.gradle

    +
    +
    pom.xml
    +
    +
    <dependency>
    +        <groupId>io.rest-assured</groupId>
    +        <artifactId>spring-mock-mvc</artifactId>
    +        <version>3.0.0</version>
    +        <scope>test</scope>
    +</dependency>
    +
    +
    +
    +
    build.gradle
    +
    +
    testCompile('io.rest-assured:spring-mock-mvc:3.0.0')
    +
    +
    +
  18. +
  19. +

    Add in the src/test/java folder in the package io.pivotal.workshop.snippet the following integration test:

    +
    +
    io.pivotal.workshop.snippet.IntegrationTest.java
    +
    +
    package io.pivotal.workshop.snippet;
    +
    +import static io.restassured.module.mockmvc.RestAssuredMockMvc.when;
    +import static org.assertj.core.api.Assertions.assertThat;
    +import static org.hamcrest.CoreMatchers.equalTo;
    +import static org.springframework.test.web.servlet.result.MockMvcResultMatchers.status;
    +
    +import java.util.Collection;
    +import java.util.Collections;
    +import java.util.stream.StreamSupport;
    +
    +import org.junit.Before;
    +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.boot.test.context.SpringBootTest.WebEnvironment;
    +import org.springframework.boot.test.web.client.TestRestTemplate;
    +import org.springframework.core.ParameterizedTypeReference;
    +import org.springframework.hateoas.Resource;
    +import org.springframework.hateoas.Resources;
    +import org.springframework.http.HttpMethod;
    +import org.springframework.http.HttpStatus;
    +import org.springframework.http.ResponseEntity;
    +import org.springframework.test.context.junit4.SpringRunner;
    +import org.springframework.test.web.servlet.setup.MockMvcBuilders;
    +import org.springframework.web.context.WebApplicationContext;
    +
    +import io.pivotal.workshop.snippet.domain.Snippet;
    +import io.restassured.module.mockmvc.RestAssuredMockMvc;
    +
    +@RunWith(SpringRunner.class)
    +@SpringBootTest(webEnvironment = WebEnvironment.RANDOM_PORT)
    +public class IntegrationTest {
    +
    +        @Autowired
    +        private TestRestTemplate restTemplate;
    +
    +        @Autowired
    +        private WebApplicationContext context;
    +
    +        @Before
    +        public void setUp() {
    +                RestAssuredMockMvc.mockMvc(MockMvcBuilders.webAppContextSetup(context).build());
    +        }
    +
    +        @Test
    +        public void homePageTest() {
    +                String body = this.restTemplate.getForObject("/", String.class);
    +                assertThat(body).contains("Hello World");
    +        }
    +
    +        @Test
    +        public void linksTests() {
    +                when().get("/api/snippets").then().assertThat(status().isOk()).body("_links.self.href",
    +                                equalTo("http://localhost/api/snippets"));
    +        }
    +}
    +
    +
    +
    +

    Take a look at the code and see that is exposing the RestAssuredMockMvc and also the usage of the TestRestTemplate.

    +
    +
  20. +
+
+
+

Challenges: Integration Tests

+
+
    +
  • +

    Analyze the code and run the test, either using your IDE, maven or gradle.

    +
  • +
  • +

    Add a new test method restControllerTest that asserts the HAL/JSON response.

    +
    + + + + + +
    +
    Tip
    +
    +Use the ResponseEntity<Resources<Resource<Snippet>>> instance and the restTemplate.exchange method. +
    +
    +
  • +
+
+
+
+

Challenges: Slices

+
+
    +
  • +

    Add a new JsonTest class and use the @JsonTest annotation. You will use the JacksonTester<T> class and the assertj library to do the assertions.

    +
  • +
  • +

    Add a new JpaTests class and use the @DataJpaTest annotation. You will use the TestEntityManager class and the hamcrest library to do the assertions.

    +
  • +
+
+
+
+
+
+ + + \ No newline at end of file diff --git a/src/main/UploadedContent/student-lab-instructions/08-spring-boot-actuator.html b/src/main/UploadedContent/student-lab-instructions/08-spring-boot-actuator.html new file mode 100644 index 0000000..2ac8a58 --- /dev/null +++ b/src/main/UploadedContent/student-lab-instructions/08-spring-boot-actuator.html @@ -0,0 +1,932 @@ + + + + + + + +Spring Boot Actuator + + + + + + + + + + + + + + + +
+
+
+
+

Get familiar with the Spring Boot Actuator and its features.

+
+
+

Time: 20 minutes.

+
+ +
+
+
+

Code Snippet Manager Actuator

+
+
+

You will continue with the Code Snippet Manager code. For this lab you will need the snippet-code-manager-jpa-rest project code. You will reuse the code from previous labs.

+
+
+
    +
  1. +

    Open a browser and hit the url: http://start.spring.io

    +
  2. +
  3. +

    Click the Switch to the full version link.

    +
  4. +
  5. +

    Fill out the Code Snippet Manager Actuator Project metadata with (See Figure 1.0):

    + + ++++ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    Table 1. Code Snippet Manager Actuator - metadata
    PropertyValue

    Group:

    io.pivotal.workshop

    Artifact:

    code-snippet-manager-actuator

    Name:

    code-snippet-manager-actuator

    Package Name:

    io.pivotal.workshop.snippet

    Dependencies:

    Web, DevTools, Groovy Templates, JPA, Rest Repositories, H2, MySQL, Actuator, HATEOAS

    Spring Boot:

    2.0.0.M7

    +
    +
    Figure 1.0: Spring Initializr - http://start.spring.io/
    +

    SpringInitializr

    +
    +
    + + + + + +
    +
    Tip
    +
    +You can choose either Maven or Gradle project types. +
    +
    +
  6. +
  7. +

    Type Web, DevTools, Groovy Templates, JPA, Rest Repositories, H2, MySQL, Actuator, HATEOAS in the Dependencies field and press Enter.

    +
  8. +
  9. +

    Click the Generate Project button.

    +
  10. +
  11. +

    Unzip the file in any directory you want.

    +
  12. +
  13. +

    Import your project in any IDE you want.

    +
  14. +
  15. +

    Copy all the packages (with code) into the new project.

    +
  16. +
  17. +

    The packages: domain, repository and config will remain with no change.

    +
  18. +
+
+
+

Spring Boot Actuator: Review Endpoints

+
+
    +
  1. +

    In the src/main/resources/application.properties:

    +
    +
      +
    • +

      Enable all the endpoints

      +
    • +
    • +

      Change the default path /actuator, instead use the path /admin

      +
      +
      application.properties
      +
      +
      management.endpoints.web.base-path=/admin
      +management.endpoints.web.expose=*
      +
      +
      +
    • +
    +
    +
  2. +
  3. +

    Run the application and make sure all the endpoints are enable. Review all of them.

    +
  4. +
+
+
+
+

Spring Boot Actuator: HealthIndicator

+
+

Using the same code, imagine that we are going to use a FileSystem to save some information. A specific path, by using the snippet.path property. We need to know:

+
+
+
    +
  • +

    If the path doesn’t exists, report out of service.

    +
  • +
  • +

    If the path exists but doesn’t have writing permissions, report system down.

    +
  • +
  • +

    If the path exists and it has write permissions, report up.

    +
  • +
+
+
+
    +
  1. +

    Let’s create a properties holder class. Add the SnippetProperties class in the io.pivotal.workshop.snippet.config package:

    +
    +
    io.pivotal.workshop.snippet.config.SnippetProperties.java
    +
    +
    package io.pivotal.workshop.snippet.config;
    +
    +import org.springframework.boot.context.properties.ConfigurationProperties;
    +
    +@ConfigurationProperties(prefix = "snippet")
    +public class SnippetProperties {
    +
    +        private String path;
    +
    +        public String getPath() {
    +                return path;
    +        }
    +
    +        public void setPath(String path) {
    +                this.path = path;
    +        }
    +
    +}
    +
    +
    +
    +

    The above code will hold the information about the path with the property: snippet.path.

    +
    +
  2. +
  3. +

    Create the SnippetHealthCheck class in the io.pivotal.workshop.snippet.actuator package:

    +
    +
    io.pivotal.workshop.snippet.actuator.SnippetHealthCheck.java
    +
    +
    package io.pivotal.workshop.snippet.actuator;
    +
    +import java.io.File;
    +
    +import org.springframework.beans.factory.annotation.Value;
    +import org.springframework.boot.actuate.health.Health;
    +import org.springframework.boot.actuate.health.HealthIndicator;
    +import org.springframework.stereotype.Component;
    +
    +@Component
    +public class SnippetHealthCheck implements HealthIndicator {
    +
    +        private String path;
    +
    +        public SnippetHealthCheck(@Value("${snippet.path:/tmp}")String path){
    +                this.path = path;
    +        }
    +
    +        @Override
    +        public Health health() {
    +
    +                try {
    +
    +                        File file = new File(path);
    +                        if(file.exists()){
    +
    +                                if(file.canWrite())
    +                                        return Health.up().build();
    +
    +                                return Health.down().build();
    +
    +                        }else{
    +                                return Health.outOfService().build();
    +                        }
    +                }catch(Exception ex) {
    +                        return Health.down(ex).build();
    +                }
    +        }
    +
    +}
    +
    +
    +
    +

    Take a look at the constructor. If the snippet.path is not found, it will use the /tmp as default path.

    +
    +
  4. +
  5. +

    In the src/main/resources/application.properties file add the following property:

    +
    +
    +
    ## Snippet
    +snippet.path=/tmp/snippets
    +
    +
    +
    + + + + + +
    +
    Tip
    +
    +Do not create this folder yet, we will make sure our custom health indicator works. +
    +
    +
    + + + + + +
    +
    Tip
    +
    +If you are using Windows try to use the C:/tmp/snippets or C:\\tmp\\snippets format. +
    +
    +
  6. +
  7. +

    If you run the application and go to the http://localhost:8080/admin/health, you should have something like the following Figure 3.0:

    +
    +
    Figure 3.0: Spring Boot Actuator - http://localhost:8080/admin/health
    +

    Spring Boot Actuator

    +
    +
    +

    Here you can see the SnippetHealthCheck value: OUT_OF_SERVICE.

    +
    +
  8. +
  9. +

    Create the /tmp/snippets (or C:\tmp\snippets for Windows) path but add/modify only read access, and then you can refresh the page, you should see the same as Figure 4.0:

    +
    +
    Figure 4.0: Spring Boot Actuator - http://localhost:8080/admin/health
    +

    Spring Boot Actuator

    +
    +
    +

    Here you can see the SnippetHealthCheck value: DOWN.

    +
    +
  10. +
  11. +

    Modify the path to write access and refresh, you should have the following, see Figure 5.0.

    +
    +
    Figure 5.0: Spring Boot Actuator - http://localhost:8080/admin/health
    +

    Spring Boot Actuator

    +
    +
    +

    Here you can see the SnippetHealthCheck value: UP.

    +
    +
  12. +
+
+
+
+

CHALLENGES

+
+
    +
  1. +

    Add a graceful shutdown to the application by executing the following command:

    +
    +
    +
    curl -X POST localhost:8080/admin/shutdown
    +
    +
    +
    + + + + + +
    +
    Tip
    +
    +If you are a Windows user, you can use the POSTMAN (https://www.getpostman.com/) application to execute the POST. +
    +
    +
  2. +
+
+
+
+

HOMEWORK

+
+

Review the Micrometer technology (http://micrometer.io) and apply it to the Code Snippet Manager.

+
+
+
+
+
+ + + \ No newline at end of file diff --git a/src/main/UploadedContent/student-lab-instructions/09-spring-boot-security.html b/src/main/UploadedContent/student-lab-instructions/09-spring-boot-security.html new file mode 100644 index 0000000..8f17b69 --- /dev/null +++ b/src/main/UploadedContent/student-lab-instructions/09-spring-boot-security.html @@ -0,0 +1,1293 @@ + + + + + + + +Spring Boot Security + + + + + + + + + + + + + + + +
+
+
+
+

Get familiar with Spring Security and the Spring Boot Security features.

+
+
+

Time: 35 minutes.

+
+ +
+
+
+

Directory Web Security App

+
+
+

Remember this lab? Where we have a persons directory? We are going to re-take part of the code and make this project more secure. +You saw in the demo how easy is to set up the security using the JDBC but it was using a pre-configured schema (users and authorities). +In this lab we will use our own schema (our own data) so you see how easy is to implement spring-security in a web project.

+
+
+
    +
  1. +

    Open a browser and hit the url: http://start.spring.io

    +
  2. +
  3. +

    Click the Switch to the full version link.

    +
  4. +
  5. +

    Fill out the Directory Web App Project metadata with (See Figure 1.0):

    + + ++++ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    Table 1. Directory Web Security App - metadata
    PropertyValue

    Group:

    io.pivotal.workshop

    Artifact:

    directory-web-security

    Name:

    directory-web-security

    Package Name:

    io.pivotal.workshop.directory

    Dependencies:

    Web, DevTools, H2, MySQL, Security, JPA, Rest Repositories, Actuator, HATEOAS, Groovy Templates

    Spring Boot:

    2.0.0.M7

    +
    +
    Figure 1.0: Spring Initializr - http://start.spring.io
    +

    SpringInitializr

    +
    +
    + + + + + +
    +
    Tip
    +
    +You can choose either Maven or Gradle project types. +
    +
    +
  6. +
  7. +

    Type Web, DevTools, H2, MySQL, Security, JPA, Rest Repositories, Actuator, HATEOAS and Groovy Templates in the Dependencies field and press Enter.

    +
  8. +
  9. +

    Click the Generate Project button.

    +
  10. +
  11. +

    Unzip the file in any directory you want.

    +
  12. +
  13. +

    Import your project in any IDE you want.

    +
  14. +
  15. +

    You can copy the code from the first labs (Spring Boot Overview).

    +
  16. +
  17. +

    Because we are using JPA and Rest Repositories dependencies, lets convert the Person as entity. Create/Modify the Person class:

    +
    +
    io.pivotal.workshop.directory.domain.Person.java
    +
    +
    package io.pivotal.workshop.directory.domain;
    +
    +import java.text.ParseException;
    +import java.text.SimpleDateFormat;
    +import java.util.Date;
    +
    +import javax.persistence.Column;
    +import javax.persistence.Entity;
    +import javax.persistence.GeneratedValue;
    +import javax.persistence.Id;
    +import javax.persistence.PrePersist;
    +import javax.persistence.PreUpdate;
    +import javax.persistence.Transient;
    +
    +import org.hibernate.annotations.GenericGenerator;
    +
    +@Entity
    +public class Person {
    +
    +        @Transient
    +        private SimpleDateFormat date = new SimpleDateFormat("yyyy-MM-dd");
    +
    +        @Id
    +        @GeneratedValue(generator = "system-uuid")
    +        @GenericGenerator(name = "system-uuid", strategy = "uuid")
    +        private String id;
    +        @Column(unique = true)
    +        private String email;
    +        private String name;
    +        private String password;
    +        private String role = "USER";
    +        private boolean enabled = true;
    +        private Date birthday;
    +
    +        @Column(insertable = true, updatable = false)
    +        private Date created;
    +        private Date modified;
    +
    +        public Person() {
    +                this.created = new Date();
    +                this.modified = new Date();
    +        }
    +
    +        public Person(String email, String name, String password, String birthday) {
    +                this();
    +                this.email = email;
    +                this.name = name;
    +                this.password = password;
    +
    +                try {
    +                        this.birthday = date.parse(birthday);
    +                } catch (ParseException e) {
    +                        this.birthday = null;
    +                }
    +        }
    +
    +        public Person(String email, String name, String password, Date birthday) {
    +                this();
    +                this.email = email;
    +                this.name = name;
    +                this.password = password;
    +                this.birthday = birthday;
    +        }
    +
    +        public Person(String email, String name, String password, String birthday, String role, boolean enabled) {
    +                this(email, name, password, birthday);
    +                this.role = role;
    +                this.enabled = enabled;
    +        }
    +
    +        public String getId() {
    +                return id;
    +        }
    +
    +        public void setId(String id) {
    +                this.id = id;
    +        }
    +
    +        public String getEmail() {
    +                return email;
    +        }
    +
    +        public void setEmail(String email) {
    +                this.email = email;
    +        }
    +
    +        public String getName() {
    +                return name;
    +        }
    +
    +        public void setName(String name) {
    +                this.name = name;
    +        }
    +
    +        public String getPassword() {
    +                return password;
    +        }
    +
    +        public void setPassword(String password) {
    +                this.password = password;
    +        }
    +
    +        public Date getBirthday() {
    +                return birthday;
    +        }
    +
    +        public void setBirthday(Date birthday) {
    +                this.birthday = birthday;
    +        }
    +
    +        public Date getCreated() {
    +                return created;
    +        }
    +
    +        public Date getModified() {
    +                return modified;
    +        }
    +
    +        public String getRole() {
    +                return role;
    +        }
    +
    +        public void setRole(String role) {
    +                this.role = role;
    +        }
    +
    +        public boolean isEnabled() {
    +                return enabled;
    +        }
    +
    +        public void setEnabled(boolean enabled) {
    +                this.enabled = enabled;
    +        }
    +
    +        @PrePersist
    +        void onCreate() {
    +                this.created = new Date();
    +                this.modified = new Date();
    +        }
    +
    +        @PreUpdate
    +        void onUpdate() {
    +                this.modified = new Date();
    +        }
    +}
    +
    +
    +
    +

    See that we are using the @Entity and @Id annotations from JPA. What is new in this class is the two new fields: role and enabled, that we are going to use later on.

    +
    +
  18. +
  19. +

    Next, create/modify the PersonRepository class:

    +
    +
    io.pivotal.workshop.directory.repository.PersonRepository.java
    +
    +
    package io.pivotal.workshop.directory.repository;
    +
    +import org.springframework.data.repository.CrudRepository;
    +
    +import io.pivotal.workshop.directory.domain.Person;
    +import org.springframework.data.repository.query.Param;
    +
    +public interface PersonRepository extends CrudRepository<Person,String>{
    +
    +        public Person findByEmailIgnoreCase(@Param("email") String email);
    +}
    +
    +
    +
    +

    This is part of the spring-data project, where only by extending from the CrudRepository<T,ID> interface we get all the persistence functionality. Also take a look that we are defining a findBy named method, that will be also implemented for us.

    +
    +
  20. +
  21. +

    Next, let create a configuration that will initialize our database:

    +
    +
    io.pivotal.workshop.directory.config.DirectoryConfig.java
    +
    +
    @Configuration
    +public class DirectoryConfig extends WebMvcConfigurerAdapter {
    +
    +        @Override
    +        public void addViewControllers(ViewControllerRegistry registry) {
    +                registry.addViewController("/").setViewName("views/home");
    +        }
    +
    +        @Bean
    +        public CommandLineRunner directoryProcess(PersonRepository repo) {
    +                return args -> {
    +                        repo.save(new Person("admin", "Administrator", "admin", "1980-08-22", "ADMIN", true));
    +                        repo.save(new Person("john@email.com", "John C.", "simplepwd", "1980-08-03", "USER", true));
    +                        repo.save(new Person("mike@email.com", "Mike H.", "simplepwd", "1980-04-10", "USER", true));
    +                        repo.save(new Person("mark@email.com", "Mark S.", "simplepwd", "1981-10-08", "USER", true));
    +            repo.save(new Person("dan@email.com", "Dan B.", "simplepwd", "1981-10-08", "ACTUATOR", true));
    +                };
    +        }
    +}
    +
    +
    +
    +

    As you can see we are extending from WebMvcConfigurerAdapter and the purpose of this is to configure our home page (or view) by overriding the addViewControllers method (this is another way to configure a web controller).

    +
    +
  22. +
  23. +

    We need to add our own security based on the Person class. Let’s add the security configuration. Create the DirectorySecurityConfig class:

    +
    +
    io.pivotal.workshop.directory.config.DirectorySecurityConfig.java
    +
    +
    package io.pivotal.workshop.directory.config;
    +
    +import io.pivotal.workshop.directory.security.DirectoryUserDetailsService;
    +import org.springframework.boot.actuate.autoconfigure.security.EndpointRequest;
    +import org.springframework.boot.autoconfigure.security.StaticResourceRequest;
    +import org.springframework.context.annotation.Configuration;
    +import org.springframework.security.config.annotation.authentication.builders.AuthenticationManagerBuilder;
    +import org.springframework.security.config.annotation.web.builders.HttpSecurity;
    +import org.springframework.security.config.annotation.web.configuration.WebSecurityConfigurerAdapter;
    +
    +@Configuration
    +public class DirectorySecurityConfig extends WebSecurityConfigurerAdapter{
    +
    +
    +        private DirectoryUserDetailsService userDetailsService;
    +
    +        public DirectorySecurityConfig(DirectoryUserDetailsService userDetailsService){
    +                this.userDetailsService = userDetailsService;
    +        }
    +
    +        @Override
    +        protected void configure(HttpSecurity http) throws Exception {
    +        http
    +            .authorizeRequests()
    +                    .requestMatchers(EndpointRequest.to("status", "info"))
    +                    .permitAll()
    +
    +                .requestMatchers(EndpointRequest.toAnyEndpoint())
    +                    .hasRole("ACTUATOR")
    +
    +                .requestMatchers(StaticResourceRequest.toCommonLocations())
    +                    .permitAll()
    +
    +                .antMatchers("/api/**").hasRole("ADMIN")
    +                .antMatchers("/").permitAll()
    +
    +            .and()
    +                .formLogin();
    +        }
    +
    +        @Override
    +        public void configure(AuthenticationManagerBuilder auth) throws Exception {
    +                auth.userDetailsService(this.userDetailsService);
    +        }
    +
    +}
    +
    +
    +
    +

    As you can see we are extending from WebSecurityConfigurerAdapter and it give us a way to override some methods, +in this case the configure(HttpSecurity) (that provides an easy way to configure the request access) +and configure(AuthenticationManagerBuilder (where we are adding our custom secured service, in this case the UserDetailsService).

    +
    +
  24. +
  25. +

    Next, create the DirectoryUserDetailsService class that will have our custom access to our own schema:

    +
    +
    io.pivotal.workshop.directory.security.DirectoryUserDetailsService.java
    +
    +
    package io.pivotal.workshop.directory.security;
    +
    +import io.pivotal.workshop.directory.domain.Person;
    +import io.pivotal.workshop.directory.repository.PersonRepository;
    +import org.springframework.security.core.userdetails.User;
    +import org.springframework.security.core.userdetails.UserDetails;
    +import org.springframework.security.core.userdetails.UserDetailsService;
    +import org.springframework.security.core.userdetails.UsernameNotFoundException;
    +import org.springframework.stereotype.Component;
    +
    +@Component
    +public class DirectoryUserDetailsService  implements UserDetailsService {
    +
    +        private PersonRepository repo;
    +
    +        public DirectoryUserDetailsService(PersonRepository repo) {
    +                this.repo = repo;
    +        }
    +
    +        @Override
    +        public UserDetails loadUserByUsername(String username) throws UsernameNotFoundException {
    +            try {
    +            final Person person = this.repo.findByEmailIgnoreCase(username);
    +            return User.withDefaultPasswordEncoder().username(person.getEmail()).password(person.getPassword()).roles(person.getRole()).build();
    +        }catch(Exception ex){
    +                ex.printStackTrace();
    +                throw new UsernameNotFoundException(username);
    +        }
    +        }
    +}
    +
    +
    +
    +

    In this class we are including the PersonRepository and we are using the findByEmail method. +See that we are implementing the UserDetailsService interface and we are implementing the loadUserByUsername that returns a UserDetails.

    +
    +
  26. +
  27. +

    Next, open the src/main/resources/application.properties file and add/modify it to look like the following:

    +
    +
    src/main/resources/application.properties
    +
    +
    ## Server
    +server.port=${port:8585}
    +
    +## REST
    +spring.data.rest.base-path=api
    +
    +## ACTUATOR
    +management.context-path=/admin
    +
    +## JPA
    +spring.jpa.generate-ddl=true
    +spring.jpa.hibernate.ddl-auto=create-drop
    +
    +
    +
    +

    As you can see, all these properties are well known from previous labs. The Rest repository is exposed in the /api endpoint and the spring-boot-actuator endpoint at the /admin context-path.

    +
    +
  28. +
  29. +

    Add the necessary UI, remember where? Here are the files you need:

    +
    + +
    +
  30. +
  31. +

    Don’t forget to add the necessary dependencies in your pom.xml or build.gradle.

    +
    +
    pom.xml
    +
    +
    <dependency>
    +        <groupId>org.webjars</groupId>
    +        <artifactId>jquery</artifactId>
    +        <version>2.2.4</version>
    +</dependency>
    +<dependency>
    +        <groupId>org.webjars</groupId>
    +        <artifactId>bootstrap</artifactId>
    +        <version>3.3.6</version>
    +</dependency>
    +<dependency>
    +        <groupId>org.webjars</groupId>
    +        <artifactId>angularjs</artifactId>
    +        <version>1.5.7</version>
    +</dependency>
    +
    +
    +
    +
    build.gradle
    +
    +
    compile('org.webjars:jquery:2.2.4')
    +compile('org.webjars:bootstrap:3.3.6')
    +compile('org.webjars:angularjs:1.5.7')
    +
    +
    +
  32. +
  33. +

    Run the application, either command line or through your IDE. If you go to the http://localhost:8585 in your browser, you should get the same as the following Figure 2.0:

    +
    +
    Figure 2.0: Directory Web Security App - http://localhost:8585
    +

    Directory Web Security App

    +
    +
  34. +
  35. +

    If you try to go to the http://localhost:8585/api, you should get the following Figure 3.0:

    +
    +
    Figure 3.0: Directory Web Security App Login - http://localhost:8585/api
    +

    Directory Web Security App

    +
    +
    +

    You can now use one of the persons we added in the configurations, for example use: admin and admin as password, and you should get now the Person Repository Rest API response.

    +
    +
  36. +
+
+
+ + + + + +
+
Tip
+
+If by any reason during the testing in your browser you get the "403 - Forbidden error", try to remove the CACHE from your browser. Remember that you can still use a curl command or if you are a Windows user, you can use POSTMAN https://www.getpostman.com/. +
+
+
+
+
+

Code Snippet Manager Security

+
+
+

The purpose of this Lab is to add security to your Code Snippet Manager and prepare it for the Challenges. The idea is that the Code Snippet Manager will use the directory-web-security to authenticate to use the snippet /api.

+
+
+

You will reuse the code from the code-snippet-manager-actuator project.

+
+
+
    +
  1. +

    Open a browser and hit the url: http://start.spring.io

    +
  2. +
  3. +

    Click the Switch to the full version link.

    +
  4. +
  5. +

    Fill out the Code Snippet Manager Security Project metadata with (See Figure 1.0):

    + + ++++ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    Table 2. Code Snippet Manager Security App - metadata
    PropertyValue

    Group:

    io.pivotal.workshop

    Artifact:

    code-snippet-manager-security

    Name:

    code-snippet-manager-security

    Package Name:

    io.pivotal.workshop.snippet

    Dependencies:

    Web, DevTools, H2, MySQL, Security, JPA, Rest Repositories, Actuator, HATEOAS, Groovy Templates

    Spring Boot:

    2.0.0.M7

    +
    +
    Figure 1.0: Spring Initializr - http://start.spring.io
    +

    SpringInitializr

    +
    +
    + + + + + +
    +
    Tip
    +
    +You can choose either Maven or Gradle project types. +
    +
    +
  6. +
  7. +

    Type Web, DevTools, H2, MySQL, Security, JPA, Rest Repositories, Actuator, HATEOAS and Groovy Templates in the Dependencies field and press Enter.

    +
  8. +
  9. +

    Click the Generate Project button.

    +
  10. +
  11. +

    Unzip the file in any directory you want.

    +
  12. +
  13. +

    Import your project in any IDE you want.

    +
  14. +
  15. +

    Copy all the code from code-snippet-manager-actuator

    +
  16. +
  17. +

    Create a io.pivotal.workshop.snippet.domain.Person class. This will be use for using the directory-web-security domain.

    +
    +
    /src/main/java/io/pivota/workshop/snippet/domain/Person.java
    +
    +
    package io.pivotal.workshop.snippet.domain;
    +
    +
    +import com.fasterxml.jackson.annotation.JsonIgnoreProperties;
    +
    +@JsonIgnoreProperties(ignoreUnknown = true)
    +public class Person {
    +
    +    private String email;
    +    private String password;
    +    private String role;
    +
    +    public String getEmail() {
    +        return email;
    +    }
    +
    +    public void setEmail(String email) {
    +        this.email = email;
    +    }
    +
    +    public String getPassword() {
    +        return password;
    +    }
    +
    +    public void setPassword(String password) {
    +        this.password = password;
    +    }
    +
    +    public String getRole() {
    +        return role;
    +    }
    +
    +    public void setRole(String role) {
    +        this.role = role;
    +    }
    +}
    +
    +
    +
    + + + + + +
    +
    Tip
    +
    +You can get all the templates, css and js files from other projects. +
    +
    +
  18. +
  19. +

    That’s it, just preparing the code-snippet-manager for the Challenges

    +
  20. +
+
+
+

Challenges

+
+
    +
  • +

    Make sure you have access to the /admin/health actuator endpoint in the directory-web-security project. Use the user that has the role ACTUATOR.

    +
  • +
  • +

    Make the HOME PAGE is only reachable to users with role USER in the directory-web-security project*.

    +
  • +
  • +

    Modify the code-snippet-manager-security project and use the directory-web-security project as authentication authority.

    +
  • +
+
+
+
+
+
+

HOMEWORK

+
+
+
    +
  • +

    Add SSL to both projects.

    +
  • +
+
+
+
+
+ + + \ No newline at end of file diff --git a/src/main/UploadedContent/student-lab-instructions/10-spring-boot-messaging.html b/src/main/UploadedContent/student-lab-instructions/10-spring-boot-messaging.html new file mode 100644 index 0000000..6471844 --- /dev/null +++ b/src/main/UploadedContent/student-lab-instructions/10-spring-boot-messaging.html @@ -0,0 +1,1467 @@ + + + + + + + +Spring Boot AMQP + + + + + + + + + + + + + + + +
+
+
+
+

Get familiar with the RabbitMQ and Spring Boot AMQP and its features.

+
+
+

Time: 20 minutes.

+
+ +
+
+
+

Part 1: Code Snippet Manager AMQP

+
+
+

You will continue with the Code Snippet Manager code. For this lab you will need the snippet-code-manager-actuator project code.

+
+
+

There are new requirements for the Code Snippet Manager:

+
+
+
    +
  • +

    Receive code snippets using RabbitMQ:

    +
    +
      +
    • +

      The communication should be as RPC (emulate synchronous communication) from/to a client.

      +
    • +
    • +

      Accept messages for save, update and delete code snippets.

      +
    • +
    • +

      Create Listeners for two queues: snippet.upsert and snippet.remove.

      +
    • +
    • +

      For every message that process, send a Snippet Notification to the snippet.notifications queue.

      +
    • +
    +
    +
  • +
  • +

    Should you be able to create the next topology:

    +
    +
    RabbitMQ Topology
    +

    Topology

    +
    +
  • +
+
+
+
    +
  1. +

    Open a browser and hit the url: http://start.spring.io

    +
  2. +
  3. +

    Click the Switch to the full version link.

    +
  4. +
  5. +

    Fill out the Code Snippet Manager AMQP Project metadata with (See Figure 1.0):

    + + ++++ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    Table 1. Code Snippet Manager AMQP - metadata
    PropertyValue

    Group:

    io.pivotal.workshop

    Artifact:

    code-snippet-manager-amqp

    Name:

    code-snippet-manager-amqp

    Package Name:

    io.pivotal.workshop.snippet

    Dependencies:

    Web, DevTools, Groovy Templates, JPA, Rest Repositories, H2, MySQL, Actuator, HATEOAS, AMQP

    Spring Boot:

    2.0.0.M7

    +
    +
    Figure 1.0: Spring Initializr - http://start.spring.io/
    +

    SpringInitializr

    +
    +
    + + + + + +
    +
    Tip
    +
    +You can choose either Maven or Gradle project types. +
    +
    +
  6. +
  7. +

    Type Web, DevTools, Groovy Templates, JPA, Rest Repositories, H2, MySQL, Actuator, HATEOAS and AMQP in the Dependencies field and press Enter.

    +
  8. +
  9. +

    Click the Generate Project button.

    +
  10. +
  11. +

    Unzip the file in any directory you want.

    +
  12. +
  13. +

    Import your project in any IDE you want.

    +
  14. +
  15. +

    Copy all the packages (with code) into the new project.

    +
  16. +
  17. +

    The packages: domain, actuator, controller, repository and config will remain with no change.

    +
  18. +
  19. +

    Next, start by adding the Listeners that will be using the queues, create the SnippetAmqpListener class in the io.pivotal.workshop.snippet.amqp package:

    +
    +
    io.pivotal.workshop.snippet.amqp.SnippetAmqpListener.java
    +
    +
    package io.pivotal.workshop.snippet.amqp;
    +
    +import java.util.Date;
    +
    +import org.springframework.amqp.rabbit.annotation.RabbitListener;
    +import org.springframework.messaging.handler.annotation.SendTo;
    +import org.springframework.stereotype.Component;
    +
    +import io.pivotal.workshop.snippet.domain.Snippet;
    +import io.pivotal.workshop.snippet.domain.SnippetNotification;
    +import io.pivotal.workshop.snippet.repository.SnippetRepository;
    +
    +@Component
    +public class SnippetAmqpListener {
    +
    +        private SnippetRepository repo;
    +        public SnippetAmqpListener(SnippetRepository repo){
    +                this.repo = repo;
    +        }
    +
    +
    +        @RabbitListener(queues={"snippet.upsert"})
    +        @SendTo
    +        public SnippetNotification save(Snippet snippet){
    +                Snippet result = this.repo.save(snippet);
    +                return new SnippetNotification(result.getId(),"SAVE",new Date(),null);
    +        }
    +
    +        @RabbitListener(queues={"snippet.remove"})
    +        @SendTo
    +        public SnippetNotification delete(Snippet snippet){
    +                this.repo.deleteById(snippet.getId());
    +                return new SnippetNotification(snippet.getId(),"DELETE",new Date(),null);
    +        }
    +
    +}
    +
    +
    +
    +

    In the code above we are using the @RabbitListener and @SendTo annotations. There are two methods that handle the messages (receiving a Snippet) from the two queues. +Also notice that both methods return a new SnippetNotification. Actually the @SendTo annotation will be the mechanism to reply that notification to the client.

    +
    +
  20. +
  21. +

    Create in the domain package the SnippetNotification and SnippetError classes:

    +
    +
    io.pivotal.workshop.snippet.domain.SnippetNotification.java
    +
    +
    package io.pivotal.workshop.snippet.domain;
    +
    +import java.util.Date;
    +
    +public class SnippetNotification {
    +
    +        private String snippetId;
    +        private String action;
    +        private Date processed;
    +        private SnippetError error;
    +
    +        public SnippetNotification() {
    +        }
    +
    +        public SnippetNotification(String snippetId, String action, Date processed, SnippetError error) {
    +                super();
    +                this.snippetId = snippetId;
    +                this.action = action;
    +                this.processed = processed;
    +                this.error = error;
    +        }
    +
    +        public String getSnippetId() {
    +                return snippetId;
    +        }
    +
    +        public void setSnippetId(String snippetId) {
    +                this.snippetId = snippetId;
    +        }
    +
    +        public String getAction() {
    +                return action;
    +        }
    +
    +        public void setAction(String action) {
    +                this.action = action;
    +        }
    +
    +        public Date getProcessed() {
    +                return processed;
    +        }
    +
    +        public void setProcessed(Date processed) {
    +                this.processed = processed;
    +        }
    +
    +        public SnippetError getError() {
    +                return error;
    +        }
    +
    +        public void setError(SnippetError error) {
    +                this.error = error;
    +        }
    +
    +}
    +
    +
    +
    +
    io.pivotal.workshop.snippet.domain.SnippetError.java
    +
    +
    package io.pivotal.workshop.snippet.domain;
    +
    +public class SnippetError {
    +
    +        private String message;
    +        private String errorCode;
    +
    +        public SnippetError() {
    +        }
    +
    +        public SnippetError(String message, String errorCode) {
    +                this.message = message;
    +                this.errorCode = errorCode;
    +        }
    +
    +        public String getMessage() {
    +                return message;
    +        }
    +
    +        public void setMessage(String message) {
    +                this.message = message;
    +        }
    +
    +        public String getErrorCode() {
    +                return errorCode;
    +        }
    +
    +        public void setErrorCode(String errorCode) {
    +                this.errorCode = errorCode;
    +        }
    +}
    +
    +
    +
  22. +
  23. +

    Next let’s create the configuration that will be use to convert the incoming messages into a Snippet instances and also let’s wire up the topology we are going to need. +Create the SnippetAmqpConfig class in the io.pivotal.workshop.snippet.config package:

    +
    +
    io.pivotal.workshop.snippet.config.SnippetAmqpConfig.java
    +
    +
    package io.pivotal.workshop.snippet.config;
    +
    +import org.springframework.amqp.core.AmqpAdmin;
    +import org.springframework.amqp.core.Binding;
    +import org.springframework.amqp.core.Binding.DestinationType;
    +import org.springframework.amqp.core.DirectExchange;
    +import org.springframework.amqp.core.Queue;
    +import org.springframework.amqp.rabbit.config.SimpleRabbitListenerContainerFactory;
    +import org.springframework.amqp.rabbit.connection.ConnectionFactory;
    +import org.springframework.amqp.support.converter.Jackson2JsonMessageConverter;
    +import org.springframework.boot.CommandLineRunner;
    +import org.springframework.context.annotation.Bean;
    +import org.springframework.context.annotation.Configuration;
    +
    +@Configuration
    +public class SnippetAmqpConfig {
    +
    +        private final String SNIPPET_EXCHANGE = "snippet.manager";
    +
    +        @Bean
    +        public SimpleRabbitListenerContainerFactory rabbitListenerContainerFactory(ConnectionFactory connectionFactory){
    +                SimpleRabbitListenerContainerFactory container = new SimpleRabbitListenerContainerFactory();
    +                container.setConnectionFactory(connectionFactory);
    +                container.setMessageConverter(new Jackson2JsonMessageConverter());
    +                return container;
    +        }
    +
    +        @Bean
    +        public DirectExchange directExchange(){
    +                return new DirectExchange(SNIPPET_EXCHANGE, true, false);
    +        }
    +
    +        @Bean
    +        public Queue upsert(){
    +                return new Queue("snippet.upsert");
    +        }
    +
    +        @Bean
    +        public Queue remove(){
    +                return new Queue("snippet.remove");
    +        }
    +
    +        @Bean
    +        public CommandLineRunner queuesAndBindings(AmqpAdmin admin){
    +                return args -> {
    +                    admin.declareBinding(new Binding("snippet.upsert", DestinationType.QUEUE, SNIPPET_EXCHANGE, "snippet.save", null));
    +                        admin.declareBinding(new Binding("snippet.remove", DestinationType.QUEUE, SNIPPET_EXCHANGE, "snippet.delete", null));
    +                        admin.declareBinding(new Binding("snippet.upsert", DestinationType.QUEUE, SNIPPET_EXCHANGE, "snippet.update", null));
    +                };
    +        }
    +}
    +
    +
    +
    +

    In the above code we need to create a SimpleRabbitListenerContainerFactory so it can any JSON format into our Snippet class. In other words, the queues will receive a snippet as JSON object. +Also we are creating the Exchange and the Queues, and after the application is about to start we Bind the exchange with all the queues by specifying the Routing Keys.

    +
    +
  24. +
  25. +

    Now you can run the code and take a look at the RabbitMQ Web Console by going to http://localhost:15672 and see the exchange and queues created and the consumers listening to the queues.

    +
  26. +
+
+
+ + + + + +
+
Tip
+
+The username/password for the RabbitMQ console is: guest/guest. +
+
+
+
+
+

Part 2: Snippet AMQP Client

+
+
+

The idea of this application is be able to send snippets to be saved or delete, and receive a notification.

+
+
+
    +
  1. +

    Open a browser and hit the url: http://start.spring.io

    +
  2. +
  3. +

    Click the Switch to the full version link.

    +
  4. +
  5. +

    Fill out the Snippet AMQP Client Project metadata with (See Figure 2.0):

    + + ++++ + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    Table 2. Snippet AMQP Client - metadata
    PropertyValue

    Group:

    io.pivotal.workshop

    Artifact:

    snippet-amqp-client

    Name:

    snippet-amqp-client

    Package Name:

    io.pivotal.workshop.snippet.client

    Dependencies:

    DevTools, AMQP

    +
    +
    Figure 2.0: Spring Initializr - http://start.spring.io/
    +

    SpringInitializr

    +
    +
    + + + + + +
    +
    Tip
    +
    +You can choose either Maven or Gradle project types. +
    +
    +
  6. +
  7. +

    Type Web, DevTools, Groovy Templates, JPA, Rest Repositories, H2, MySQL, Actuator, HATEOAS and AMQP in the Dependencies field and press Enter.

    +
  8. +
  9. +

    Click the Generate Project button.

    +
  10. +
  11. +

    Unzip the file in any directory you want.

    +
  12. +
  13. +

    Import your project in any IDE you want.

    +
  14. +
  15. +

    Lets start by creating the domains will use, create the following classes in the io.pivotal.workshop.snippet.client.domain package:

    +
    +
    io.pivotal.workshop.snippet.client.domain.Code.java
    +
    +
    package io.pivotal.workshop.snippet.client.domain;
    +
    +public class Code {
    +
    +        private String source;
    +
    +        public Code() {
    +        }
    +
    +        public Code(String source) {
    +                this.source = source;
    +        }
    +
    +        public String getSource() {
    +                return source;
    +        }
    +
    +        public void setSource(String source) {
    +                this.source = source;
    +        }
    +
    +}
    +
    +
    +
    +
    io.pivotal.workshop.snippet.client.domain.Language.java
    +
    +
    package io.pivotal.workshop.snippet.client.domain;
    +
    +public class Language {
    +
    +        private String name;
    +        private String syntax = "text";
    +
    +        public Language() {
    +        }
    +
    +        public Language(String name) {
    +                this();
    +                this.name = name;
    +        }
    +
    +        public Language(String name, String syntax) {
    +                this(name);
    +                this.syntax = syntax;
    +        }
    +
    +        public String getName() {
    +                return name;
    +        }
    +
    +        public void setName(String name) {
    +                this.name = name;
    +        }
    +
    +        public String getSyntax() {
    +                return syntax;
    +        }
    +
    +        public void setSyntax(String syntax) {
    +                this.syntax = syntax;
    +        }
    +}
    +
    +
    +
    +
    io.pivotal.workshop.snippet.client.domain.Snippet.java
    +
    +
    package io.pivotal.workshop.snippet.client.domain;
    +
    +public class Snippet {
    +
    +        private String title;
    +        private String keywords = "";
    +        private Language lang;
    +        private Code code;
    +
    +        public Snippet() {
    +        }
    +
    +        public Snippet(String title, String keywords, String description, Language lang, Code code) {
    +                this.title = title;
    +                this.keywords = keywords;
    +                this.lang = lang;
    +                this.code = code;
    +        }
    +
    +        public Snippet(String title, Language lang, Code code) {
    +                this(title, "", "", lang, code);
    +        }
    +
    +        public String getTitle() {
    +                return title;
    +        }
    +
    +        public void setTitle(String title) {
    +                this.title = title;
    +        }
    +
    +        public Language getLang() {
    +                return lang;
    +        }
    +
    +        public void setLang(Language lang) {
    +                this.lang = lang;
    +        }
    +
    +        public String getKeywords() {
    +                return keywords;
    +        }
    +
    +        public void setKeywords(String keywords) {
    +                this.keywords = keywords;
    +        }
    +
    +        public Code getCode() {
    +                return code;
    +        }
    +
    +        public void setCode(Code code) {
    +                this.code = code;
    +        }
    +}
    +
    +
    +
    +
    io.pivotal.workshop.snippet.client.domain.SnippetError.java
    +
    +
    package io.pivotal.workshop.snippet.client.domain;
    +
    +public class SnippetError {
    +
    +        private String message;
    +        private String errorCode;
    +
    +        public SnippetError() {
    +        }
    +
    +        public SnippetError(String message, String errorCode) {
    +                this.message = message;
    +                this.errorCode = errorCode;
    +        }
    +
    +        public String getMessage() {
    +                return message;
    +        }
    +
    +        public void setMessage(String message) {
    +                this.message = message;
    +        }
    +
    +        public String getErrorCode() {
    +                return errorCode;
    +        }
    +
    +        public void setErrorCode(String errorCode) {
    +                this.errorCode = errorCode;
    +        }
    +}
    +
    +
    +
    +
    io.pivotal.workshop.snippet.client.domain.SnippetNotification.java
    +
    +
    package io.pivotal.workshop.snippet.client.domain;
    +
    +import java.util.Date;
    +
    +public class SnippetNotification {
    +
    +        private String snipetId;
    +        private String action;
    +        private Date processed;
    +        private SnippetError error;
    +
    +        public SnippetNotification() {
    +        }
    +
    +        public SnippetNotification(String snipetId, String action, Date processed, SnippetError error) {
    +                super();
    +                this.snipetId = snipetId;
    +                this.action = action;
    +                this.processed = processed;
    +                this.error = error;
    +        }
    +
    +        public String getSnipetId() {
    +                return snipetId;
    +        }
    +
    +        public void setSnipetId(String snipetId) {
    +                this.snipetId = snipetId;
    +        }
    +
    +        public String getAction() {
    +                return action;
    +        }
    +
    +        public void setAction(String action) {
    +                this.action = action;
    +        }
    +
    +        public Date getProcessed() {
    +                return processed;
    +        }
    +
    +        public void setProcessed(Date processed) {
    +                this.processed = processed;
    +        }
    +
    +        public SnippetError getError() {
    +                return error;
    +        }
    +
    +        public void setError(SnippetError error) {
    +                this.error = error;
    +        }
    +
    +        @Override
    +        public String toString() {
    +                return "SnippetNotification [snipetId=" + snipetId + ", action=" + action + ", processed=" + processed
    +                                + ", error=" + error + "]";
    +        }
    +
    +}
    +
    +
    +
  16. +
  17. +

    Next, lets create a producer that will send the messages to the exchange, create the SnippetProducer class in the io.pivotal.workshop.snippet.client.amqp package:

    +
    +
    io.pivotal.workshop.snippet.client.amqp.SnippetProducer.java
    +
    +
    package io.pivotal.workshop.snippet.client.amqp;
    +
    +import org.springframework.amqp.rabbit.core.RabbitTemplate;
    +import org.springframework.stereotype.Component;
    +
    +import io.pivotal.workshop.snippet.client.domain.Snippet;
    +
    +@Component
    +public class SnippetProducer {
    +
    +        public enum SnippetAction {
    +                SAVE("snippet.save"), DELETE("snippet.delete"), UPDATE("snippet.update");
    +
    +                private final String routingKey;
    +                private SnippetAction(String routingKey){
    +                        this.routingKey = routingKey;
    +                }
    +
    +                public String getRoutingKey(){
    +                        return this.routingKey;
    +                }
    +        }
    +
    +        private RabbitTemplate template;
    +
    +        public SnippetProducer(RabbitTemplate template){
    +                this.template = template;
    +        }
    +
    +        public Object send(SnippetAction action,Snippet snippet){
    +                return this.template.convertSendAndReceive(action.getRoutingKey(),snippet);
    +        }
    +
    +}
    +
    +
    +
    +

    Here we are using the RabbitTemplate and it’s method convertSendAndReceive (here we are doing the RPC - emulating the synchronous communication).

    +
    +
  18. +
  19. +

    Because we are doing an RPC, we are getting back from the Code Snippet Manager AMQP app the SnippetNotification (as JSON), so we need to configure the RabbitTemplate to support this conversion. +Create the SnippetClientAmqpConfig in the io.pivotal.workshop.snippet.client.config package:

    +
    +
    io.pivotal.workshop.snippet.client.config.SnippetClientAmqpConfig.java
    +
    +
    package io.pivotal.workshop.snippet.client.config;
    +
    +import org.springframework.amqp.core.MessageProperties;
    +import org.springframework.amqp.rabbit.connection.ConnectionFactory;
    +import org.springframework.amqp.rabbit.core.RabbitTemplate;
    +import org.springframework.amqp.support.converter.DefaultJackson2JavaTypeMapper;
    +import org.springframework.amqp.support.converter.Jackson2JavaTypeMapper;
    +import org.springframework.amqp.support.converter.Jackson2JsonMessageConverter;
    +import org.springframework.context.annotation.Bean;
    +import org.springframework.context.annotation.Configuration;
    +
    +import com.fasterxml.jackson.databind.JavaType;
    +
    +@Configuration
    +public class SnippetClientAmqpConfig {
    +
    +        private final String SNIPPET_EXCHANGE = "snippet.manager";
    +
    +        @Bean
    +        public RabbitTemplate rabbitTemplate(ConnectionFactory connectionFactory){
    +                Jackson2JsonMessageConverter converter = new Jackson2JsonMessageConverter();
    +                Jackson2JavaTypeMapper mapper = new DefaultJackson2JavaTypeMapper() {
    +
    +                        @Override
    +                        public JavaType toJavaType(MessageProperties properties) {
    +                                properties.setHeader("__TypeId__", "io.pivotal.workshop.snippet.client.domain.SnippetNotification");
    +                                return super.toJavaType(properties);
    +                        }
    +
    +                };
    +                converter.setJavaTypeMapper(mapper);
    +
    +                RabbitTemplate template = new RabbitTemplate(connectionFactory);
    +                template.setMessageConverter(converter);
    +                template.setExchange(SNIPPET_EXCHANGE);
    +                return template;
    +        }
    +
    +}
    +
    +
    +
    +

    Its important to notice that we are using the same converter as before, the Jackson2JsonMessageConverter, that practically will map the JSON object to the SnippetNotification. +Here we are adding a little trick, a special header: TypeId that will be use as reference for the mapping, our own SnippetNotification.

    +
    +
    + + + + + +
    +
    Tip
    +
    +If you want to know more about this solution, ask the instructor to explain a little further. Also you can take a look at the documentation: http://docs.spring.io/spring-amqp/reference/html/_reference.html#message-converters +
    +
    +
  20. +
  21. +

    Now its time to send some Snippet. Create the SnippetClientConfig class in the io.pivotal.workshop.snippet.client.config package:

    +
    +
    io.pivotal.workshop.snippet.client.config.SnippetClientConfig.java
    +
    +
    package io.pivotal.workshop.snippet.client.config;
    +
    +import java.nio.file.Files;
    +import java.nio.file.Paths;
    +
    +import org.slf4j.Logger;
    +import org.slf4j.LoggerFactory;
    +import org.springframework.boot.CommandLineRunner;
    +import org.springframework.context.annotation.Bean;
    +import org.springframework.context.annotation.Configuration;
    +
    +import io.pivotal.workshop.snippet.client.amqp.SnippetProducer;
    +import io.pivotal.workshop.snippet.client.amqp.SnippetProducer.SnippetAction;
    +import io.pivotal.workshop.snippet.client.domain.Code;
    +import io.pivotal.workshop.snippet.client.domain.Language;
    +import io.pivotal.workshop.snippet.client.domain.Snippet;
    +
    +@Configuration
    +public class SnippetClientConfig {
    +
    +        private final Logger log = LoggerFactory.getLogger("SNIPPET-SENDER");
    +
    +        @Bean
    +        public CommandLineRunner sendSnippets(SnippetProducer producer){
    +                return args -> {
    +                        Object obj = producer.send(SnippetAction.SAVE, new Snippet("Hello World", new Language("Kotlin", "java"),new Code(new String(Files.readAllBytes(Paths.get("code/Hello.kt"))))));
    +                        log.info(obj.toString());
    +                };
    +        }
    +}
    +
    +
    +
    +

    Here we are using the Snippet producer to send the Snippet message.

    +
    +
  22. +
  23. +

    Now you can run the application, and you should get your response back, a SnippetNotification object.

    +
  24. +
+
+
+
+
+

Challenges

+
+
+

As you already know we havent implemented some of the requirements:

+
+
+
    +
  • +

    Create the snippet.notifications queue and bind it to the snippet.manager exchange.

    +
  • +
  • +

    The Code Snippet Manager AMQP app needs to send a notification every time it receives a Snippet:

    +
    +
      +
    • +

      Without modifying the SnippetAmqpListener add the behavior to send a SnippetNotification to the snippet.notifications queue.

      +
      + + + + + +
      +
      Tip
      +
      +Use AOP for this particular concern and use the RabbitTemplate to send a asynchronous notification. +
      +
      +
    • +
    +
    +
  • +
  • +

    Make the Snippet AMQP Client app listen for any notification.

    +
  • +
+
+
+
+
+ + + \ No newline at end of file diff --git a/src/main/UploadedContent/student-lab-instructions/11-spring-boot-webflux.html b/src/main/UploadedContent/student-lab-instructions/11-spring-boot-webflux.html new file mode 100644 index 0000000..db25f7b --- /dev/null +++ b/src/main/UploadedContent/student-lab-instructions/11-spring-boot-webflux.html @@ -0,0 +1,1223 @@ + + + + + + + +Spring Boot WebFlux + + + + + + + + + + + + + + + +
+
+
+
+

Get familiar with Spring Boot and WebFlux features. +Time: 20 minutes.

+
+ +
+
+
+

Code Snippet Manager App

+
+
+

We are going to make our Code Snippet Manager reactive. You will use the spring-boot-starter-webflux starter. Remember that Spring WebFlux provides two ways to create a reactive apps: Functional and Annotation-Based; in this lab will explore both.

+
+
+
    +
  1. +

    Open a browser and hit the url: http://start.spring.io

    +
  2. +
  3. +

    Click the Switch to the full version link.

    +
  4. +
  5. +

    Fill out the Code Snippet Manager App Project metadata with (See Figure 1.0):

    + + ++++ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    Table 1. Code Snippet Manager App App - metadata
    PropertyValue

    Group:

    io.pivotal.workshop

    Artifact:

    code-snippet-manager-flux

    Name:

    code-snippet-manager-flux

    Package Name:

    io.pivotal.workshop.snippet

    Dependencies:

    Reactive Web, DevTools, MongoDB, Actuator

    Spring Boot:

    2.0.0.M7

    +
    +
    Figure 1.0: Spring Initializr - http://start.spring.io
    +

    SpringInitializr

    +
    +
    + + + + + +
    +
    Tip
    +
    +You can choose either Maven or Gradle project types. +
    +
    +
  6. +
  7. +

    Type Reactive Web, DevTools, MongoDB, Reactive MongoDB and Actuator in the Dependencies field and press Enter.

    +
  8. +
  9. +

    Click the Generate Project button.

    +
  10. +
  11. +

    Unzip the file in any directory you want.

    +
  12. +
  13. +

    Import your project in any IDE you want.

    +
  14. +
  15. +

    Add the following domain classes: io.pivotal.workshop.snippet.domain.Language and io.pivotal.workshop.snippet.domain.Snippet, practically are the same as before, just a small modifications:

    +
    +
    src/main/java/io/pivotal/workshop/snippet/domain/Language.java
    +
    +
    package io.pivotal.workshop.snippet.domain;
    +
    +import org.bson.types.ObjectId;
    +import org.springframework.data.annotation.Id;
    +import org.springframework.data.mongodb.core.mapping.Document;
    +
    +@Document
    +public class Language {
    +
    +        @Id
    +        private String id;
    +        private String name;
    +        private String syntax = "text";
    +
    +        public Language() {
    +        }
    +
    +        public Language(String name) {
    +                this();
    +                this.name = name;
    +        }
    +
    +        public Language(String name, String syntax) {
    +                this(name);
    +                this.syntax = syntax;
    +        }
    +
    +        public String getId() {
    +                return id;
    +        }
    +
    +        public void setId(String id) {
    +                this.id = id;
    +        }
    +
    +        public String getName() {
    +                return name;
    +        }
    +
    +        public void setName(String name) {
    +                this.name = name;
    +        }
    +
    +        public String getSyntax() {
    +                return syntax;
    +        }
    +
    +        public void setSyntax(String syntax) {
    +                this.syntax = syntax;
    +        }
    +
    +    @Override
    +    public String toString() {
    +        return "Language{" +
    +                "id='" + id + '\'' +
    +                ", name='" + name + '\'' +
    +                ", syntax='" + syntax + '\'' +
    +                '}';
    +    }
    +}
    +
    +
    +
    +
    src/main/java/io/pivotal/workshop/snippet/domain/Snippet.java
    +
    +
    package io.pivotal.workshop.snippet.domain;
    +
    +import org.bson.types.ObjectId;
    +import org.springframework.data.annotation.Id;
    +import org.springframework.data.mongodb.core.mapping.DBRef;
    +import org.springframework.data.mongodb.core.mapping.Document;
    +
    +import java.util.Date;
    +
    +@Document
    +public class Snippet {
    +
    +        @Id
    +        private String id;
    +        private String title;
    +        private String keywords = "";
    +        private String description = "";
    +
    +    @DBRef
    +        private Language lang;
    +    private String code;
    +
    +    private Date created;
    +        private Date modified;
    +
    +        public Snippet() {
    +                this.created = new Date();
    +                this.modified = new Date();
    +        }
    +
    +        public Snippet(String title, String keywords, String description, Language lang, String code) {
    +                this();
    +                this.title = title;
    +                this.keywords = keywords;
    +                this.description = description;
    +                this.lang = lang;
    +                this.code = code;
    +        }
    +
    +        public Snippet(String title, Language lang, String code) {
    +                this(title, "", "", lang, code);
    +        }
    +
    +        public String getId() {
    +                return id;
    +        }
    +
    +        public void setId(String id) {
    +                this.id = id;
    +        }
    +
    +        public String getTitle() {
    +                return title;
    +        }
    +
    +        public void setTitle(String title) {
    +                this.title = title;
    +        }
    +
    +        public Language getLang() {
    +                return lang;
    +        }
    +
    +        public void setLang(Language lang) {
    +                this.lang = lang;
    +        }
    +
    +        public String getDescription() {
    +                return description;
    +        }
    +
    +        public void setDescription(String description) {
    +                this.description = description;
    +        }
    +
    +        public String getKeywords() {
    +                return keywords;
    +        }
    +
    +        public void setKeywords(String keywords) {
    +                this.keywords = keywords;
    +        }
    +
    +        public String getCode() {
    +                return code;
    +        }
    +
    +        public void setCode(String code) {
    +                this.code = code;
    +        }
    +
    +        public Date getCreated() {
    +                return created;
    +        }
    +
    +        public void setCreated(Date created) {
    +                this.created = created;
    +        }
    +
    +        public Date getModified() {
    +                return modified;
    +        }
    +
    +        public void setModified(Date modified) {
    +                this.modified = modified;
    +        }
    +
    +    @Override
    +    public String toString() {
    +        return "Snippet{" +
    +                "id='" + id + '\'' +
    +                ", title='" + title + '\'' +
    +                ", keywords='" + keywords + '\'' +
    +                ", description='" + description + '\'' +
    +                ", lang=" + lang +
    +                ", code='" + code + '\'' +
    +                ", created=" + created +
    +                ", modified=" + modified +
    +                '}';
    +    }
    +}
    +
    +
    +
  16. +
  17. +

    Add the Repositories. Create/Copy the io.pivotal.workshop.snippet.repository.LanguageRespository.java and io.pivotal.workshop.snippet.repository.SnippetRespository.java interfaces.

    +
    +
    src/main/java/io/pivotal/workshop/snippet/repository/LanguageRepository.java
    +
    +
    package io.pivotal.workshop.snippet.repository;
    +
    +import io.pivotal.workshop.snippet.domain.Language;
    +import io.pivotal.workshop.snippet.domain.Snippet;
    +import org.springframework.data.mongodb.repository.MongoRepository;
    +import reactor.core.publisher.Mono;
    +
    +public interface LanguageRepository extends MongoRepository<Language, String> {
    +
    +    Language findByName(String name);
    +
    +}
    +
    +
    +
    +
    src/main/java/io/pivotal/workshop/snippet/repository/SnippetRepository.java
    +
    +
    package io.pivotal.workshop.snippet.repository;
    +
    +import io.pivotal.workshop.snippet.domain.Snippet;
    +import org.springframework.data.mongodb.repository.MongoRepository;
    +import org.springframework.data.mongodb.repository.Query;
    +
    +import java.util.concurrent.CompletableFuture;
    +import java.util.stream.Stream;
    +
    +public interface SnippetRepository extends MongoRepository<Snippet, String> {
    +
    +    @Query("{}")
    +    Stream<Snippet> findAllAsStream();
    +}
    +
    +
    +
    +

    As you can see in the SnippetRepository interface declares a findAllAsStream method that returns all the snippets from MongoDB.

    +
    +
  18. +
  19. +

    Next, lets create the Reative Server and the Functional Router for the app. Create the io.pivotal.workshop.snippet.config.SnippetReactive class:

    +
    +
    src/main/java/io/pivotal/workshop/snippet/config/SnippetReactiveConfig.java
    +
    +
    package io.pivotal.workshop.snippet.config;
    +
    +
    +import io.pivotal.workshop.snippet.domain.Snippet;
    +import io.pivotal.workshop.snippet.reactive.SnippetHandler;
    +import org.springframework.context.annotation.Bean;
    +import org.springframework.context.annotation.Configuration;
    +import org.springframework.http.server.reactive.ReactorHttpHandlerAdapter;
    +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.EmitterProcessor;
    +import reactor.ipc.netty.http.server.HttpServer;
    +
    +import static org.springframework.http.MediaType.APPLICATION_JSON;
    +import static org.springframework.web.reactive.function.server.RequestPredicates.*;
    +
    +
    +@Configuration
    +public class SnippetReactiveConfig {
    +
    +
    +    @Bean
    +    public HttpServer httpServer(RouterFunction<ServerResponse> router){        //(1)
    +        HttpServer server = HttpServer.create("localhost", 8080);
    +        server.newHandler(new ReactorHttpHandlerAdapter(RouterFunctions.toHttpHandler(router))).block();
    +        return server;
    +    }
    +
    +    @Bean
    +    public RouterFunction<ServerResponse> router(SnippetHandler handler){       //(2)
    +        return RouterFunctions
    +                .route(GET("/snippets").and(accept(APPLICATION_JSON)), handler::findAll)
    +                .andRoute(GET("/snippets/{id}").and(accept(APPLICATION_JSON)),handler::findById)
    +                .andRoute(POST("/snippets").and(accept(APPLICATION_JSON)),handler::createSnippet);
    +    }
    +
    +    @Bean
    +    public EmitterProcessor snippetStream(){                                   //(3)
    +        return EmitterProcessor.<Snippet>create();
    +    }
    +}
    +
    +
    +
    +
      +
    1. +

      This method returns a HttpServer bean class that belongs to the Netty package, meaning that the app will run in a Reactive Server. This method is receiving a router function.

      +
    2. +
    3. +

      This method returns a RouterFunction bean as a ServerResponse type. It defines what are the endpoints and how they will be handled. In this case we are using the SnippetHandler class that will have all the logic for handling all incoming requests.

      +
    4. +
    5. +

      This method returns a EmitterProcessor bean that will be use to stream all the new Snippets created.

      +
    6. +
    +
    +
  20. +
  21. +

    Let’s continue with the SnippetHandler. Create the io.pivotal.workshop.snippet.reactive.SnippetHandler class.

    +
    +
    src/main/java/io/pivotal/workshop/snippet/reactive/SnippetHandler.java
    +
    +
    package io.pivotal.workshop.snippet.reactive;
    +
    +import io.pivotal.workshop.snippet.domain.Language;
    +import io.pivotal.workshop.snippet.domain.Snippet;
    +import io.pivotal.workshop.snippet.repository.LanguageRepository;
    +import io.pivotal.workshop.snippet.repository.SnippetRepository;
    +import org.springframework.beans.factory.annotation.Autowired;
    +import org.springframework.stereotype.Component;
    +import org.springframework.web.reactive.function.BodyInserters;
    +import org.springframework.web.reactive.function.server.ServerRequest;
    +import org.springframework.web.reactive.function.server.ServerResponse;
    +import reactor.core.publisher.EmitterProcessor;
    +import reactor.core.publisher.Flux;
    +import reactor.core.publisher.Mono;
    +
    +import java.util.Optional;
    +
    +import static org.springframework.web.reactive.function.server.ServerResponse.notFound;
    +import static org.springframework.web.reactive.function.server.ServerResponse.ok;
    +
    +@Component
    +public class SnippetHandler {
    +
    +    private EmitterProcessor<Snippet> snippetEmitterProcessor;
    +    private SnippetRepository snippetRepository;
    +    private LanguageRepository languageRepository;
    +
    +    @Autowired  //(1)
    +    public SnippetHandler(SnippetRepository snippetRepository, LanguageRepository languageRepository, EmitterProcessor<Snippet> snippetEmitterProcessor) {
    +        this.snippetRepository = snippetRepository;
    +        this.languageRepository = languageRepository;
    +        this.snippetEmitterProcessor = snippetEmitterProcessor;
    +    }
    +
    +    public Mono<ServerResponse> findAll(ServerRequest request){     //(2)
    +        return ok().body(BodyInserters.fromPublisher(Flux.fromStream(this.snippetRepository.findAllAsStream()),Snippet.class));
    +    }
    +
    +    public Mono<ServerResponse> findById(ServerRequest request) {
    +        String snippetId = request.pathVariable("id");
    +        Optional<Snippet> result = this.snippetRepository.findById(snippetId);
    +        if(result.isPresent())
    +            return ok().body(BodyInserters.fromPublisher(Mono.just(result.get()),Snippet.class));
    +        else
    +            return notFound().build();
    +    }
    +
    +    public Mono<ServerResponse> createSnippet(ServerRequest request) {
    +        Mono<Snippet> snippetMono = request.bodyToMono(Snippet.class);
    +        return ok().build(snippetMono.doOnNext(snippetConsumer -> {
    +            Language language = new Language("Unknown","txt");
    +            if(snippetConsumer.getLang()!=null){
    +                language = this.languageRepository.findByName(snippetConsumer.getLang().getName());
    +                if(language == null) {
    +                    language = this.languageRepository.save(snippetConsumer.getLang());
    +                }
    +            }else
    +                language = this.languageRepository.save(language);
    +
    +            snippetConsumer.setLang(language);
    +            Snippet result = this.snippetRepository.save(snippetConsumer);
    +            this.snippetEmitterProcessor.onNext(result);   //(3)
    +        }).then());
    +    }
    +
    +
    +}
    +
    +
    +
    +
      +
    1. +

      The constructor will autowired all the repositories and the EmitterProcessor.

      +
    2. +
    3. +

      Take a look that all the methods receive a ServerRequest and the response is a Mono<ServerResponse> type.

      +
    4. +
    5. +

      The createSnippet method will handle all the POST requests (/snippets) and create the necessary Language and Snippet, but the most important part here is that it will emit the snippet saved as stream.

      +
    6. +
    +
    +
  22. +
  23. +

    Now, let’s create a rest controller that will stream all the new snippets. Create the io.pivotal.workshop.snippet.reactive.SnippetController class.

    +
    +
    src/main/java/io/pivotal/workshop/snippet/reactive/SnippetController.java
    +
    +
    package io.pivotal.workshop.snippet.reactive;
    +
    +import io.pivotal.workshop.snippet.domain.Snippet;
    +import org.springframework.http.MediaType;
    +import org.springframework.web.bind.annotation.GetMapping;
    +import org.springframework.web.bind.annotation.RestController;
    +import org.springframework.web.reactive.function.BodyInserters;
    +import org.springframework.web.reactive.function.server.ServerRequest;
    +import org.springframework.web.reactive.function.server.ServerResponse;
    +import reactor.core.publisher.EmitterProcessor;
    +import reactor.core.publisher.Flux;
    +import reactor.core.publisher.Mono;
    +
    +import static org.springframework.web.reactive.function.server.ServerResponse.ok;
    +
    +@RestController
    +public class SnippetController {
    +
    +    private EmitterProcessor snippetStream;
    +
    +    public SnippetController(EmitterProcessor snippetStream) {  //(1)
    +        this.snippetStream = snippetStream;
    +    }
    +
    +    @GetMapping(path = "/logs", produces = MediaType.TEXT_EVENT_STREAM_VALUE)
    +    public Flux<Snippet> snippetLog(){                          //(2)
    +        return snippetStream.doOnSubscribe(subscription -> { snippetStream.next().subscribe(); });
    +
    +    }
    +}
    +
    +
    +
    +
      +
    1. +

      The constructor injects the EmitterProcessor.

      +
    2. +
    3. +

      This method will handle the stream publish in /logs endpoint. See that it’s subscribe to the stream.

      +
    4. +
    +
    +
  24. +
  25. +

    In the src/main/resources/application.properties file add the following properties:

    +
    +
    src/main/resources/application.properties
    +
    +
    spring.data.mongodb.database=snippets-[YOUR INITIALS]
    +spring.data.mongodb.host=[PROVIDED BY THE INSTRUCTOR]
    +spring.data.mongodb.port=27017
    +spring.data.mongodb.username=[PROVIDED BY THE INSTRUCTOR]
    +spring.data.mongodb.password=[PROVIDED BY THE INSTRUCTOR]
    +
    +
    +
    +

    REPLACE the values accordingly.

    +
    +
  26. +
  27. +

    Run the application and go to your browser and hit the http://localhost:8080/logs and browser should be waiting for incoming data.

    +
  28. +
  29. +

    Open a new browser tab or window and point to the http://localhost:8080/snippets and you will see an empty json collection.

    +
  30. +
  31. +

    Open a Terminal window and add some snippets using the cUrl command:

    +
    +
    +
    curl -i -X POST -H "Content-Type: application/json" -H "Accept: application/json" -d '{"title":"Hello World","code":"println \"This is awesome\".upperCase()","lang":{"name": "Groovy", "syntax":"groovy"}}' http://localhost:8080/snippets
    +
    +
    +
    + + + + + +
    +
    Tip
    +
    +If you are a Windows user, you can use the POSTMAN (https://www.getpostman.com/) application to execute the POST. +
    +
    +
    +

    Add more snippets and see how the http://localhost:8080/logs start receiving some Snippet streams.

    +
    +
    +

    Logs

    +
    +
  32. +
  33. +

    Review the snippets by hitting again the http://localhost:8080/snippets

    +
    +

    Snippets

    +
    +
  34. +
+
+
+

Challenges

+
+
    +
  • +

    Add an Embedded MongoDB and run the same application. You must add the following dependency to your pom.xml or gradle:

    +
    +
    pom.xml
    +
    +
    <dependency>
    +        <groupId>de.flapdoodle.embed</groupId>
    +        <artifactId>de.flapdoodle.embed.mongo</artifactId>
    +        <scope>runtime</scope>
    +</dependency>
    +
    +
    +
    +

    or

    +
    +
    +
    build.gradle
    +
    +
    runtime('de.flapdoodle.embed:de.flapdoodle.embed.mongo')
    +
    +
    +
  • +
+
+
+
+
+
+

HOMEWORK

+
+
+
    +
  • +

    Use the annotation-based WebFlux variant for the Code Snippet Manager App for all the endpoints.

    +
  • +
+
+
+
+
+ + + \ No newline at end of file diff --git a/src/main/UploadedContent/student-lab-instructions/12-spring-boot-cloud-stream.html b/src/main/UploadedContent/student-lab-instructions/12-spring-boot-cloud-stream.html new file mode 100644 index 0000000..63fcaf2 --- /dev/null +++ b/src/main/UploadedContent/student-lab-instructions/12-spring-boot-cloud-stream.html @@ -0,0 +1,1242 @@ + + + + + + + +Spring Boot - Spring Integration and Spring Cloud Stream + + + + + + + + + + + + + + + +
+
+
+
+

Get familiar with Spring Integration and Spring Cloud Stream using Spring Boot and learn how Microservices can communicate with each other. +Time: 30 minutes.

+
+
+
+
+

Requirements

+
+
+
    +
  • +

    You will need RabbitMQ up and running.

    +
  • +
+
+ +
+
+
+

Code Snippet Manager Stream App - Source

+
+
+

We are going create a Source (our Code Snippet Manager). This Source will use Spring Integration to read snippets from the File System and it will forward the snippet to a Sink application.

+
+
+
    +
  1. +

    Open a browser and hit the url: http://start.spring.io

    +
  2. +
  3. +

    Click the Switch to the full version link.

    +
  4. +
  5. +

    Fill out the Code Snippet Manager Stream App Project metadata with (See Figure 1.0):

    + + ++++ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    Table 1. Code Snippet Manager Stream App Source - metadata
    PropertyValue

    Group:

    io.pivotal.workshop

    Artifact:

    code-snippet-manager-stream

    Name:

    code-snippet-manager-stream

    Package Name:

    io.pivotal.workshop.snippet

    Dependencies:

    Reactive Web, DevTools, MongoDB, Actuator, Stream Rabbit, Embedded MongoDB, Integration

    Spring Boot:

    2.0.0.M7

    +
    +
    Figure 1.0: Spring Initializr - http://start.spring.io
    +

    SpringInitializr

    +
    +
    + + + + + +
    +
    Tip
    +
    +You can choose either Maven or Gradle project types. +
    +
    +
  6. +
  7. +

    Type Reactive Web, DevTools, MongoDB, Reactive MongoDB, Actuator, Stream Rabbit, Embedded MongoDB and Integration in the Dependencies field and press Enter.

    +
  8. +
  9. +

    Click the Generate Project button.

    +
  10. +
  11. +

    Unzip the file in any directory you want.

    +
  12. +
  13. +

    Import your project in any IDE you want.

    +
  14. +
  15. +

    Copy ONLY the classes from the previous Lab (WebFlux), we are going to reuse them.

    +
  16. +
  17. +

    Is necessary to do several mofications to the pom.xml or build.gradle files. First modify the spirng-cloud-starter-stream-rabbit dependency to look like this:

    +
    +
    pom.xml
    +
    +
    <dependency>
    +        <groupId>org.springframework.cloud</groupId>
    +        <artifactId>spring-cloud-starter-stream-rabbit</artifactId>
    +    <exclusions>
    +        <exclusion>
    +            <groupId>org.springframework.boot</groupId>
    +            <artifactId>spring-boot-starter-tomcat</artifactId>
    +        </exclusion>
    +    </exclusions>
    +</dependency>
    +
    +
    +
    +

    or

    +
    +
    +
    buildf.gradle
    +
    +
    compile('org.springframework.cloud:spring-cloud-starter-stream-rabbit'){
    +    exclude module: "spring-boot-starter-tomcat"
    +}
    +
    +
    +
    +

    This dependency is part of the Spring Cloud Stream; the Binder that we are going to use: RabbitMQ. This dependency brings Tomcat, something that we don’t need because we are using Netty instead for the reactive part.

    +
    +
  18. +
  19. +

    Next, modify the pom.xml or build.gradle so the Embedded MongoDB is used at runtime.

    +
    +
    pom.xml
    +
    +
    <dependency>
    +        <groupId>de.flapdoodle.embed</groupId>
    +    <artifactId>de.flapdoodle.embed.mongo</artifactId>
    +    <scope>runtime</scope>
    +</dependency>
    +
    +
    +
    +

    or

    +
    +
    +
    build.gradle
    +
    +
    runtime('de.flapdoodle.embed:de.flapdoodle.embed.mongo')
    +
    +
    +
  20. +
  21. +

    Because we are going to use Spring Integration to read from the File System we need to add the following dependencies:

    +
    +
    pom.xml
    +
    +
    <dependency>
    +    <groupId>org.springframework.integration</groupId>
    +    <artifactId>spring-integration-file</artifactId>
    +</dependency>
    +<dependency>
    +    <groupId>org.springframework.integration</groupId>
    +    <artifactId>spring-integration-java-dsl</artifactId>
    +</dependency>
    +<dependency>
    +    <groupId>org.yaml</groupId>
    +    <artifactId>snakeyaml</artifactId>
    +</dependency>
    +
    +
    +
    +

    or

    +
    +
    +
    build.gradle
    +
    +
    compile('org.springframework.integration:spring-integration-file')
    +compile('org.springframework.integration:spring-integration-java-dsl')
    +compile('org.yaml:snakeyaml')
    +
    +
    +
  22. +
  23. +

    This application will have its own MongoDB (embedded) running in a random port, so it’s necessary to configure the client so it can connect. Create a io.pivotal.workshop.snippet.config.SnippetConfiguration class.

    +
    +
    src/main/java/io/pivotal/workshop/snippet/config/SnippetConfig.java
    +
    +
    package io.pivotal.workshop.snippet.config;
    +
    +import com.mongodb.MongoClient;
    +import org.springframework.context.annotation.Bean;
    +import org.springframework.context.annotation.Configuration;
    +import org.springframework.context.annotation.DependsOn;
    +import org.springframework.core.env.Environment;
    +
    +@Configuration
    +public class SnippetConfiguration {
    +
    +
    +    private Environment environment;
    +
    +    public SnippetConfiguration(Environment environment) {
    +        this.environment = environment;
    +    }
    +
    +
    +    @Bean
    +    @DependsOn("embeddedMongoServer")           //(1)
    +    public MongoClient reactiveMongoClient() {
    +        int port = this.environment.getProperty("local.mongo.port", Integer.class);
    +        return new MongoClient("localhost",port);
    +    }
    +
    +
    +}
    +
    +
    +
    +
      +
    1. +

      Take a look that the MongoClient that it will be created after the embeddedMongoServer bean (due the @DependsOn annotation).

      +
    2. +
    +
    +
  24. +
  25. +

    If you run your application, it should work with out any issues, the only difference is that you are using an Embedded MongoDB.

    +
  26. +
  27. +

    Create (or copy/reuse from another Lab) a io.pivotal.workshop.snippet.config.SnippetProperties class. This class will have just the path where the snippet will be read.

    +
    +
    src/main/java/io/pivotal/workshop/snippet/config/SnippetProperties.java
    +
    +
    package io.pivotal.workshop.snippet.config;
    +
    +import org.springframework.boot.context.properties.ConfigurationProperties;
    +
    +@ConfigurationProperties(prefix = "snippet")
    +public class SnippetProperties {
    +
    +        private String path = "/tmp";
    +        private String extension = "*.code";
    +
    +        public String getPath() {
    +                return path;
    +        }
    +
    +        public void setPath(String path) {
    +                this.path = path;
    +        }
    +
    +    public String getExtension() {
    +        return extension;
    +    }
    +
    +    public void setExtension(String extension) {
    +        this.extension = extension;
    +    }
    +}
    +
    +
    +
  28. +
  29. +

    Next lets create the Stream Source. Create the io.pivotal.workshop.snippet.stream.SnippetFileSystemIntegration class, in this class we are going to use Spring Integration with Spring Cloud Stream:

    +
    +
    src/main/java/io/pivotal/workshop/snippet/stream/SnippetFileSystemIntegration.java
    +
    +
    package io.pivotal.workshop.snippet.stream;
    +
    +import io.pivotal.workshop.snippet.config.SnippetProperties;
    +import io.pivotal.workshop.snippet.integration.SnippetTransformer;
    +import org.springframework.boot.context.properties.EnableConfigurationProperties;
    +import org.springframework.cloud.stream.annotation.EnableBinding;
    +import org.springframework.cloud.stream.messaging.Source;
    +import org.springframework.context.annotation.Bean;
    +import org.springframework.integration.dsl.IntegrationFlow;
    +import org.springframework.integration.dsl.IntegrationFlows;
    +import org.springframework.integration.dsl.Pollers;
    +import org.springframework.integration.dsl.Transformers;
    +import org.springframework.integration.file.dsl.Files;
    +import org.springframework.integration.file.transformer.FileToStringTransformer;
    +
    +import java.io.File;
    +
    +@EnableConfigurationProperties(SnippetProperties.class)
    +@EnableBinding(Source.class)
    +public class SnippetFileSystemIntegration {
    +
    +    private SnippetProperties snippetProperties;
    +    private SnippetTransformer snippetTransformer;
    +
    +    public SnippetFileSystemIntegration(SnippetProperties snippetProperties, SnippetTransformer snippetTransformer) {  //(1)
    +        this.snippetProperties = snippetProperties;
    +        this.snippetTransformer = snippetTransformer;
    +    }
    +
    +    @Bean
    +    public IntegrationFlow snippetFlow(){   //(2)
    +        return
    +                IntegrationFlows.from(
    +                        Files
    +                            .inboundAdapter(new File(this.snippetProperties.getPath()))   //(3)
    +                            .preventDuplicates(true)
    +                            .patternFilter(this.snippetProperties.getExtension()),
    +                        e -> e.poller(Pollers.fixedDelay(5000L)))                  //(4)
    +                .transform(new FileToStringTransformer())                                 //(5)
    +                .transform(Transformers.converter(this.snippetTransformer))               //(6)
    +                .channel(Source.OUTPUT)                                                   //(7)
    +                .get();
    +
    +    }
    +
    +}
    +
    +
    +
    +
      +
    1. +

      The constructor is using the SnippetProperties and the SnippetTransformer (that we are going create later) instances.

      +
    2. +
    3. +

      We are declaring the IntegrationFlow (this is part of Spring Integration) that will read files from the directory (from the snippet.path property).

      +
    4. +
    5. +

      Spring Integration provides an Inbound Adapter that will read the files with the extension provided (from the snippet.extension property).

      +
    6. +
    7. +

      The Inbound Adapter will polling from file very 5 seconds (Poller).

      +
    8. +
    9. +

      We are going to use a transform that will read the file and convert it into a String. The class FileToStringTransformer is part of the Spring Integration out-of-the-box utility classes.

      +
    10. +
    11. +

      This transformer uses a custom transformer (SnippetTransformer), the previous transformer will send the text in the file into this new transformer.

      +
    12. +
    13. +

      This will be the final step, where to send the transformed message (a Snippet object), in this case it will use a channel named: OUTPUT.

      +
    14. +
    +
    +
  30. +
  31. +

    Create the io.pivotal.workshop.snippet.integration.SnippetTransformer class, this class will transform the String into an Snippet object.

    +
    +
    src/main/java/io/pivotal/workshop/snippet/integration/SnippetTransformer.java
    +
    +
    package io.pivotal.workshop.snippet.integration;
    +
    +
    +import io.pivotal.workshop.snippet.domain.Snippet;
    +import org.springframework.core.convert.converter.Converter;
    +import org.springframework.lang.Nullable;
    +import org.springframework.stereotype.Component;
    +import org.yaml.snakeyaml.Yaml;
    +
    +@Component
    +public class SnippetTransformer implements Converter<String,Snippet> { //(1)
    +
    +    @Nullable
    +    @Override
    +    public Snippet convert(String snippet) {
    +        return new Yaml().loadAs(snippet,Snippet.class);                //(2)
    +    }
    +}
    +
    +
    +
    +
      +
    1. +

      Here we need to be compliant witht the Converter interface. This a generic interface, its first type is what it receives (the String, the file’s content) and the second, the object converted to (the Snippet object).

      +
    2. +
    3. +

      We are using the Yaml object (meaning that our file will have a YAML format) to convert it to Snippet.

      +
    4. +
    +
    +
  32. +
  33. +

    Next, open the src/main/resources/application.properties file a modify it to look like this:

    +
    +
    src/main/resources/application.properties
    +
    +
    # Snippet
    +snippet.path=/tmp/snippets
    +snippet.extension=*.code
    +
    +spring.cloud.stream.bindings.output.destination=snippet
    +
    +
    +
    +

    The spring.cloud.stream.bindings.output.destination is the property that specifies the output channel where the message will be sent (in this case the Snippet object)

    +
    +
  34. +
  35. +

    Now we are ready, but before running or testing it, we are going to create another application that will receive the Snippet object and just print it out into the console.

    +
  36. +
+
+
+
+
+

Code Snippet Manager Stream Log App - Sink

+
+
+

We are going create now a Sink. This Sink will just print out the Snippet object that was sent by the previous app.

+
+
+
    +
  1. +

    Open a browser and hit the url: http://start.spring.io

    +
  2. +
  3. +

    Click the Switch to the full version link.

    +
  4. +
  5. +

    Fill out the Code Snippet Manager Log App Project metadata with (See Figure 1.0):

    + + ++++ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    Table 2. Code Snippet Manager Stream Log App Sink - metadata
    PropertyValue

    Group:

    io.pivotal.workshop

    Artifact:

    code-snippet-manager-stream-log

    Name:

    code-snippet-manager-stream-log

    Package Name:

    io.pivotal.workshop.snippet

    Dependencies:

    DevTools, Actuator, Stream Rabbit, Integration

    Spring Boot:

    2.0.0.M7

    +
    +
    Figure 1.0: Spring Initializr - http://start.spring.io
    +

    SpringInitializr

    +
    +
    + + + + + +
    +
    Tip
    +
    +You can choose either Maven or Gradle project types. +
    +
    +
  6. +
  7. +

    Type DevTools, Actuator, Stream Rabbit and Integration in the Dependencies field and press Enter.

    +
  8. +
  9. +

    Click the Generate Project button.

    +
  10. +
  11. +

    Unzip the file in any directory you want.

    +
  12. +
  13. +

    Import your project in any IDE you want.

    +
  14. +
  15. +

    Copy only the Language and Snippet classes over. REMOVE the @Document, @Id and @DebRef annotations, we are not going to use them.

    +
  16. +
  17. +

    Create the io.pivotal.workshop.snippet.stream.SnippetLogger class.

    +
    +
    src/main/java/io/pivotal/workshop/snippet/stream/SnippetLogger.java
    +
    +
    package io.pivotal.workshop.snippet.stream;
    +
    +import io.pivotal.workshop.snippet.domain.Snippet;
    +import org.slf4j.Logger;
    +import org.slf4j.LoggerFactory;
    +import org.springframework.cloud.stream.annotation.EnableBinding;
    +import org.springframework.cloud.stream.annotation.StreamListener;
    +import org.springframework.cloud.stream.messaging.Sink;
    +
    +@EnableBinding(Sink.class)
    +public class SnippetLogger {
    +
    +    private Logger log = LoggerFactory.getLogger("[SNIPPET LOGGER]");
    +
    +    @StreamListener(Sink.INPUT) //(1)
    +    public void log(Snippet snippet){
    +        log.info(snippet.toString());
    +    }
    +}
    +
    +
    +
    +
      +
    1. +

      Here the importat part is the use of the @StreamListener(Sink.INPUT) annotation that will listen for any incoming Snippet message through the INPUT channel. Then it will be just logged.

      +
    2. +
    +
    +
  18. +
  19. +

    Open the src/main/resources/application.properties file and modify it to look like this:

    +
    +
    src/main/resources/application.properties
    +
    +
    server.port=8181
    +spring.cloud.stream.bindings.input.destination=snippet
    +
    +
    +
    +

    See that here we are going to use the port 8181 and the spring.cloud.stream.bindings.input.destination property that will be listen to (in this case the input channel: snippet).

    +
    +
  20. +
  21. +

    Now is time to test these microservices!

    +
  22. +
+
+
+
+
+

Testing

+
+
+

This part of the lab involves testing directly into these two microservices.

+
+
+
    +
  1. +

    Make sure you have RabbitMQ up and running.

    +
  2. +
  3. +

    Make sure you have the /tmp/snippets (or C:\tmp\snippets) directory with write permissions.

    +
  4. +
  5. +

    Start your code-snippet-manager-stream-log application.

    +
  6. +
  7. +

    Start your code-snippet-manager-stream application.

    +
  8. +
  9. +

    Create some code snippets files OUTSIDE the /tmp/snippets (or C:\tmp\snippets) directory first. These files will have a YAML format and they will contain a particular structure:

    +
    +
    hello-world-erl.code
    +
    +
    title: Hello World
    +description: A Erlang Hello World
    +lang: {
    +  name: Erlang,
    +  syntax: erl
    +  }
    +code: |
    +  -module(hello).
    +  -export([hello_world/0]).
    +
    +  hello_world() -> io:fwrite("hello, world\n").
    +
    +
    +
    +
    hello-world-javascript.code
    +
    +
    title: Hello World
    +description: A JavaScript Hello World
    +lang: {
    +  name: JavaScript,
    +  syntax: js
    +  }
    +code: |
    +    console.log("Hello World");
    +
    +
    +
  10. +
  11. +

    Copy these files into the /tmp/snippets (or C:\tmp\snippets) directory.

    +
  12. +
  13. +

    See how the code-snippet-manager-stream-log application print the receive Snippet objects.

    +
  14. +
+
+
+

Challenges

+
+
    +
  • +

    In the SnippetTransformer add a logic to save the Snippet into the Embedded MongoDB so it can be viewed over the http://localhost:8080/logs and the http://localhost:8080/snippets:

    +
    +
      +
    • +

      Create a io.pivotal.workshop.snippet.service.SnippetService class. This class will be a facade for all repository operations so it can be reused by the SnippetHandler and the SnippetTransformer classes.

      +
    • +
    +
    +
  • +
+
+
+
+
+
+

HOMEWORK

+
+
+ +
+
+
+
+ + + \ No newline at end of file diff --git a/src/main/UploadedContent/student-lab-instructions/13-spring-boot-microservices.html b/src/main/UploadedContent/student-lab-instructions/13-spring-boot-microservices.html new file mode 100644 index 0000000..709a6b1 --- /dev/null +++ b/src/main/UploadedContent/student-lab-instructions/13-spring-boot-microservices.html @@ -0,0 +1,1101 @@ + + + + + + + +Microservices with Spring Boot + + + + + + + + + + + + + + + +
+
+
+
+

Create Microservices with Spring Boot and deploy them into Cloud Foundry

+
+
+

Time: 35 minutes.

+
+ +
+
+
+

Cloud Foundry

+
+
+

This lab is just to get familiar with some of the common Cloud Foundry command using the CF CLI.

+
+
+
    +
  1. +

    Make sure you have an account in PWS if not, create a trial account in Pivotal Web Services: https://run.pivotal.io

    +
  2. +
  3. +

    Install Cloud Foundry CLI. You can get it from: https://github.com/cloudfoundry/cli#installers-and-compressed-binaries

    +
  4. +
  5. +

    Login into Cloud Foundry

    +
    +
    cf login
    +
    +
    $ cf login -a api.run.pivotal.io
    +
    +
    +
  6. +
+
+
+

Useful CF CLI commands

+
+
cf help - Show help
+
+
$ cf help -a
+
+
+
+
marketplace - List available offerings in the marketplace
+
+
$ cf marketplace
+
+
+
+
services - List all service instances in the target space
+
+
$ cf services
+
+
+
+
create-service - Create a service instance
+
+
$ cf create-service cloudamqp lemur rabbitmq
+
+
+
+
bind-service - Bind a service instance to an app
+
+
$ cf bind-service myapp rabbitmq
+
+
+
+
push - Push a new app or sync changes to an existing app
+
+
$ cf push myapp
+
+
+
+
set-env - Set an env variable for an app
+
+
$ cf set-env myapp MY_VARIABLE ITS_VALUE
+
+
+
+
+
+
+

Deploy Spring Boot Microservices to Cloud Foundry

+
+
+

For this lab you will deploy two projects, the directory-web-security and the code-snippet-manager-security, both must be completed with OAuth2 implementation. +Remember that the directory-web-security is the Authorization Server and the code-snippet-manager-security is the Resource Server. +If you haven’t finish the challenges for both projects, the it’s time to do it.

+
+
+

Deploying directory-web-security project

+
+
    +
  1. +

    Open the direcoty-web-security app in your favorite IDE. Make sure your io.pivotal.workshop.directory.config.DirectorySecurityConfig class in the configure(HttpSecurity http) is based in the Http Basic Security (httpBasic()). +This will allow our code-snippet-manager-security app to connect passing credentials using a basic authentication,

    +
  2. +
  3. +

    Open a terminal window in the directory-web-security project and create the JAR file.

    +
    +
    maven
    +
    +
    ./mvnw clean package -DskipTests=true
    +
    +
    +
    +
    gradle
    +
    +
    ./gradlew build -x test
    +
    +
    +
  4. +
  5. +

    Deploy the directory-web-security JAR.

    +
    +
    If you used Maven, it creates the JAR in the target/ folder. If you used Gradle, the JAR is in the build/libs folder.
    +
    +
    cf push directory-web -p target/directory-web-security-0.0.1-SNAPSHOT.jar --random-route -b java_buildpack
    +
    +
    +
  6. +
  7. +

    Once deployed make sure is working by accessing the /api endpoint using the administrator credentials.

    +
  8. +
+
+
+
+

Deploying code-snippet-manager-security project

+
+

You will be using the code-snippet-manager-security project.

+
+
+

Remember that you had a Challenge for this project? Modify the code-snippet-manager-security project and use the directory-web-security project as authentication authority.

+
+
+

Well, this is the solution to that Challenge!!

+
+
+
    +
  1. +

    Open your code-snippet-manager-security project and open the io.pivotal.workshop.snippet.config.SnippetConfiguration class. Modify it to look like the following code:

    +
    +
    src/main/java/io/pivotal/workshop/snippet/config/SnippetConfiguration.java
    +
    +
    package io.pivotal.workshop.snippet.config;
    +
    +import io.pivotal.workshop.snippet.domain.Code;
    +import io.pivotal.workshop.snippet.domain.Language;
    +import io.pivotal.workshop.snippet.domain.Snippet;
    +import io.pivotal.workshop.snippet.repository.SnippetRepository;
    +import org.springframework.boot.CommandLineRunner;
    +import org.springframework.context.annotation.Bean;
    +import org.springframework.context.annotation.Configuration;
    +import org.springframework.context.annotation.Profile;
    +
    +import java.nio.file.Files;
    +import java.nio.file.Paths;
    +import java.util.ArrayList;
    +import java.util.List;
    +
    +@Configuration
    +public class SnippetConfiguration {
    +
    +
    +        @Bean
    +        @Profile("local")
    +        public CommandLineRunner runner(SnippetRepository snippetRepo) {
    +                return args -> {
    +                        @SuppressWarnings("serial")
    +                        List<Snippet> snippets = new ArrayList<Snippet>() {
    +                                {
    +                                        add(new Snippet("Hello World", new Language("HTML", "xml"),new Code(new String(Files.readAllBytes(Paths.get("code/html-code.txt"))))));
    +                                        add(new Snippet("Hello World", new Language("C#", "c#"),new Code(new String(Files.readAllBytes(Paths.get("code/cs-code.txt"))))));
    +                                        add(new Snippet("Hello World", new Language("Pascal", "py"),new Code(new String(Files.readAllBytes(Paths.get("code/pas-code.txt"))))));
    +                                        add(new Snippet("Hello World", new Language("Erlang", "erl"),new Code(new String(Files.readAllBytes(Paths.get("code/erl-code.txt"))))));
    +                                        add(new Snippet("Hello World", new Language("JavaScript", "js"),new Code(new String(Files.readAllBytes(Paths.get("code/js-code.txt"))))));
    +                                        add(new Snippet("Hello World", new Language("Groovy", "groovy"),new Code("println 'Hello World'")));
    +                                }
    +                        };
    +
    +                        snippetRepo.saveAll(snippets);
    +
    +                };
    +        }
    +
    +        @Bean
    +        @Profile("cloud") //(1)
    +        public CommandLineRunner runnerCloud(SnippetRepository snippetRepo) {
    +                return args -> {
    +                        @SuppressWarnings("serial")
    +                        List<Snippet> snippets = new ArrayList<Snippet>() {{
    +                                add(new Snippet("Hello World", new Language("JavaScript", "js"),new Code("console.log(\"Hello World\");")));
    +                                add(new Snippet("Hello World", new Language("Groovy", "groovy"),new Code("println 'Hello World'")));
    +                        }};
    +                        snippetRepo.saveAll(snippets);
    +                };
    +        }
    +}
    +
    +
    +
    +
      +
    1. +

      As you can see we are using the @Profile annotation, and we adding it to the runner method, making it a local profile, but also we are adding a new method runnerCloud +and using the cloud profile. Why do we need to do this? well we are not deploying the code/ folder, so there are no initial snippets.

      +
    2. +
    +
    +
    + + + + + +
    +
    Tip
    +
    +By default Cloud Foundry activates the cloud profile. +
    +
    +
  2. +
  3. +

    This is part of the Challenge: Use the directory-web-security project as authentication-authority for the code-snippet-manager project. Here we are going to see the solution. Create the io.pivotal.workshop.snippet.config.SnippetSecurityConfig class, this class will reach out to the directory-web-security app.

    +
    +
    src/main/java/io/pivotal/workshop/snippet/config/SnippetSecurityConfig.java
    +
    +
    package io.pivotal.workshop.snippet.config;
    +
    +import io.pivotal.workshop.snippet.domain.Person;
    +import org.slf4j.Logger;
    +import org.slf4j.LoggerFactory;
    +import org.springframework.beans.factory.annotation.Value;
    +import org.springframework.boot.actuate.autoconfigure.security.EndpointRequest;
    +import org.springframework.boot.autoconfigure.security.StaticResourceRequest;
    +import org.springframework.boot.context.properties.EnableConfigurationProperties;
    +import org.springframework.boot.web.client.RestTemplateBuilder;
    +import org.springframework.context.annotation.Configuration;
    +import org.springframework.core.ParameterizedTypeReference;
    +import org.springframework.hateoas.MediaTypes;
    +import org.springframework.hateoas.Resource;
    +import org.springframework.http.HttpMethod;
    +import org.springframework.http.HttpStatus;
    +import org.springframework.http.RequestEntity;
    +import org.springframework.http.ResponseEntity;
    +import org.springframework.security.config.annotation.authentication.builders.AuthenticationManagerBuilder;
    +import org.springframework.security.config.annotation.web.builders.HttpSecurity;
    +import org.springframework.security.config.annotation.web.configuration.WebSecurityConfigurerAdapter;
    +import org.springframework.security.core.userdetails.User;
    +import org.springframework.security.core.userdetails.UserDetails;
    +import org.springframework.security.core.userdetails.UserDetailsService;
    +import org.springframework.security.core.userdetails.UsernameNotFoundException;
    +import org.springframework.web.client.RestTemplate;
    +import org.springframework.web.util.UriComponentsBuilder;
    +
    +import java.net.URI;
    +import java.util.Collections;
    +
    +@EnableConfigurationProperties(SnippetProperties.class)
    +@Configuration
    +public class SnippetSecurityConfig extends WebSecurityConfigurerAdapter {
    +
    +    private final Logger log = LoggerFactory.getLogger(SnippetSecurityConfig.class);
    +    private RestTemplate restTemplate;
    +    private UriComponentsBuilder builder;
    +    private SnippetProperties properties;
    +
    +    public SnippetSecurityConfig(RestTemplateBuilder restTemplateBuilder,SnippetProperties properties){
    +        this.restTemplate = restTemplateBuilder.basicAuthorization(properties.getAuthenticationUsername(),properties.getAuthenticationPassword()).build();
    +        this.properties = properties;
    +    }
    +
    +    @Override
    +    protected void configure(HttpSecurity http) throws Exception {
    +        http
    +                .authorizeRequests()
    +                .requestMatchers(EndpointRequest.to("status", "info"))
    +                .permitAll()
    +
    +                .requestMatchers(EndpointRequest.toAnyEndpoint())
    +                .hasRole("ACTUATOR")
    +
    +
    +                .requestMatchers(StaticResourceRequest.toCommonLocations())
    +                .permitAll()
    +
    +                .antMatchers("/api/**").hasRole("ADMIN")
    +                .antMatchers("/").hasRole("USER")
    +
    +                .and()
    +                .httpBasic();
    +    }
    +
    +    @Override
    +    public void configure(AuthenticationManagerBuilder auth) throws Exception { //(1)
    +        auth.userDetailsService(new UserDetailsService(){
    +
    +            @Override
    +            public UserDetails loadUserByUsername(String email) throws UsernameNotFoundException {
    +
    +                try {
    +                    builder = UriComponentsBuilder.fromUriString(properties.getAuthenticationUri())
    +                            .queryParam("email", email);
    +
    +                    log.info("Querying: " + builder.toUriString());
    +
    +                    ResponseEntity<Resource<Person>> responseEntity = restTemplate.exchange(  //(2)
    +                            RequestEntity.get(URI.create(builder.toUriString()))
    +                                .accept(MediaTypes.HAL_JSON)
    +                                .build()
    +                            , new ParameterizedTypeReference<Resource<Person>>() {
    +                            });
    +
    +                    if (responseEntity.getStatusCode() == HttpStatus.OK) {
    +
    +                        Resource<Person> resource = responseEntity.getBody();
    +                        Person person = resource.getContent();
    +                        return User.withDefaultPasswordEncoder().username(person.getEmail()).password(person.getPassword()).roles(person.getRole()).build();
    +                    }
    +
    +                }catch(Exception ex) {
    +                    ex.printStackTrace();
    +                }
    +
    +                throw new UsernameNotFoundException(email);
    +
    +
    +            }
    +        });
    +    }
    +
    +}
    +
    +
    +
    +
      +
    1. +

      We are configuring the AuthenticationManagerBuilder and the UserDetailsService that will use a restTemplate to contact the directory-web-security-app.

      +
    2. +
    3. +

      We are going to reach the /api/persons/search/findByEmailIgnoreCase endpoint. This endpoint returns a HAL+JSON, meaning that we need a Resource that will get email we are looking for.

      +
    4. +
    +
    +
  4. +
  5. +

    From the previous class, you’ve already saw that we need the SnippetProperties. Create/Modify the io.pivotal.workshop.snippet.config.SnippetProperties class.

    +
    +
    src/main/java/io/pivotal/workshop/snippet/config/SnippetProperties.java
    +
    +
    package io.pivotal.workshop.snippet.config;
    +
    +import org.springframework.boot.context.properties.ConfigurationProperties;
    +
    +@ConfigurationProperties(prefix = "snippet")
    +public class SnippetProperties {
    +
    +        private String path;
    +        private String authenticationUri;
    +        private String authenticationUsername;
    +        private String authenticationPassword;
    +
    +        public String getPath() {
    +                return path;
    +        }
    +
    +        public void setPath(String path) {
    +                this.path = path;
    +        }
    +
    +    public String getAuthenticationUri() {
    +        return authenticationUri;
    +    }
    +
    +    public void setAuthenticationUri(String authenticationUri) {
    +        this.authenticationUri = authenticationUri;
    +    }
    +
    +    public String getAuthenticationUsername() {
    +        return authenticationUsername;
    +    }
    +
    +    public void setAuthenticationUsername(String authenticationUsername) {
    +        this.authenticationUsername = authenticationUsername;
    +    }
    +
    +    public String getAuthenticationPassword() {
    +        return authenticationPassword;
    +    }
    +
    +    public void setAuthenticationPassword(String authenticationPassword) {
    +        this.authenticationPassword = authenticationPassword;
    +    }
    +}
    +
    +
    +
  6. +
  7. +

    Open the src/main/resources/application.properties file and add the following configuration.

    +
    +
    src/main/resources/application.properties
    +
    +
    ## Web App Port
    +server.port=${port:8081}
    +
    +## JPA
    +# spring.jpa.show-sql=true
    +spring.jpa.generate-ddl=true
    +spring.jpa.hibernate.ddl-auto=create-drop
    +
    +## REST
    +spring.data.rest.base-path=api
    +
    +## ACTUATOR
    +management.endpoints.web.base-path=/admin
    +endpoints.default.web.enabled=true
    +
    +## Snippet
    +snippet.path=/tmp/snippets
    +
    +## URL
    +snippet.authentication-uri=http://localhost:8585/api/persons/search/findByEmailIgnoreCase
    +snippet.authentication-username=admin
    +snippet.authentication-password=admin
    +
    +
    +
    +

    As you can see we are adding the snippet.authentication* properties, with the credentials and uri of the directory-web-security app.

    +
    +
  8. +
  9. +

    Next, open a terminal window in the code-snippet-manager-security project and create the JAR file.

    +
    +
    maven
    +
    +
    ./mvnw clean package -DskipTests=true
    +
    +
    +
    +
    gradle
    +
    +
    ./gradlew build -x test
    +
    +
    +
  10. +
  11. +

    Deploy the code-snippet-manager-security JAR but don’t start the application just yet.

    +
    +
    If you used Maven, it creates the JAR in the target/ folder. If you used Gradle, the JAR is in the build/libs folder.
    +
    +
    cf push code-snippet-manager -p target/code-snippet-manager-security-0.0.1-SNAPSHOT.jar --random-route -b java_buildpack --no-start
    +
    +
    +
  12. +
  13. +

    Remember that this application relies on the application.properties because it was added the credentials and the uri, so we need to alter at least the snippet.authentication-uri, so we can add the directory-web's uri. +to Modify this we are going to use environment variables:

    +
    +
    +
    cf set-env code-snippet-manager SNIPPET_AUTHENTICATION_URI http://directory-web-unapprehended-pluralism.cfapps.io/api/persons/search/findByEmailIgnoreCase
    +
    +
    +
    +

    The URI is the one from the directory-web application you have just deployed.

    +
    +
  14. +
  15. +

    Start the code-snippet-manager application.

    +
    +
    +
    cf start code-snippet-manager
    +
    +
    +
  16. +
  17. +

    Once started make sure is working by accessing the code-snippet-manager app /api using the credentials.

    +
  18. +
+
+
+
+
+
+

Challenges

+
+
+
    +
  • +

    Add the code from the code-snippet-manager-amqp to use a RabbitMQ service.

    +
  • +
  • +

    Instead of using an H2 as persistence engine, use a MySQL service, what changes do you need to do in your code?

    +
  • +
+
+
+
+
+ + + \ No newline at end of file diff --git a/src/main/UploadedContent/student-lab-instructions/14-spring-boot-extending.html b/src/main/UploadedContent/student-lab-instructions/14-spring-boot-extending.html new file mode 100644 index 0000000..de1061c --- /dev/null +++ b/src/main/UploadedContent/student-lab-instructions/14-spring-boot-extending.html @@ -0,0 +1,1722 @@ + + + + + + + +Spring Boot - Creating a Custom Spring Boot Starter + + + + + + + + + + + + + + + +
+
+
+
+

You will create a custom Spring Boot Starter using the auto-configuration features.

+
+
+

Time: 30 minutes.

+
+ +
+
+
+

Spring Boot Starter

+
+
+

We are going create custom Spring Boot Starter. This starter will be a reusable client for the directory-web-security project. It will have the following features:

+
+
+
    +
  • +

    DirectoryWebClient bean that will have access to the persons in the directory. You will add a new person or list all the persons.

    +
  • +
  • +

    @EnableDirectoryWebClientUtils annotation that will bring a DirectoryWebClientUtils that will expose password encode using either BCRYPT (default) or PBKDF2 algorthims.

    +
  • +
+
+
+
+
+

Project Structure

+
+
+
    +
  1. +

    Create a directory structure where we are going to place 3 apps:

    +
    +
      +
    • +

      demo-starter

      +
    • +
    • +

      directory-web-client-spring-boot-autoconfigure

      +
    • +
    • +

      directory-web-client-spring-boot-starter

      +
      +
      +
      mkdir -p workspace/demo-starter workspace/directory-web-client-spring-boot-autoconfigure workspace/directory-web-client-spring-boot-starter
      +
      +
      +
    • +
    +
    +
  2. +
  3. +

    In the workspace directory add the following pom.xml. This will hold all the module information and the general dependencies.

    +
    +
    +
    <?xml version="1.0" encoding="UTF-8"?>
    +<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    +                 xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
    +        <modelVersion>4.0.0</modelVersion>
    +        <groupId>io.pivotal.workshop</groupId>
    +        <artifactId>directory-web-client</artifactId>
    +        <version>0.0.1-SNAPSHOT</version>
    +        <packaging>pom</packaging>
    +        <name>directory-web-client</name>
    +
    +        <modules>
    +                <module>directory-web-client-spring-boot-autoconfigure</module>
    +                <module>directory-web-client-spring-boot-starter</module>
    +                <module>demo-starter</module>
    +        </modules>
    +
    +
    +
    +        <dependencyManagement>
    +                <dependencies>
    +                        <dependency>
    +                                <groupId>org.springframework.boot</groupId>
    +                                <artifactId>spring-boot-dependencies</artifactId>
    +                                <version>2.0.0.M7</version>
    +                                <type>pom</type>
    +                                <scope>import</scope>
    +                        </dependency>
    +                </dependencies>
    +        </dependencyManagement>
    +
    +
    +    <repositories>
    +        <repository>
    +            <id>spring-snapshots</id>
    +            <name>Spring Snapshots</name>
    +            <url>https://repo.spring.io/snapshot</url>
    +            <snapshots>
    +                <enabled>true</enabled>
    +            </snapshots>
    +        </repository>
    +        <repository>
    +            <id>spring-milestones</id>
    +            <name>Spring Milestones</name>
    +            <url>https://repo.spring.io/milestone</url>
    +            <snapshots>
    +                <enabled>false</enabled>
    +            </snapshots>
    +        </repository>
    +    </repositories>
    +
    +    <pluginRepositories>
    +        <pluginRepository>
    +            <id>spring-snapshots</id>
    +            <name>Spring Snapshots</name>
    +            <url>https://repo.spring.io/snapshot</url>
    +            <snapshots>
    +                <enabled>true</enabled>
    +            </snapshots>
    +        </pluginRepository>
    +        <pluginRepository>
    +            <id>spring-milestones</id>
    +            <name>Spring Milestones</name>
    +            <url>https://repo.spring.io/milestone</url>
    +            <snapshots>
    +                <enabled>false</enabled>
    +            </snapshots>
    +        </pluginRepository>
    +    </pluginRepositories>
    +
    +
    +</project>
    +
    +
    +
    +

    As you can see it has the main dependency right now spring-boot-dependencies:2.0.0.M6 and is a pom import. It defines our 3 modules.

    +
    +
  4. +
+
+
+
+
+

Directory Web Client Spring Boot Starter

+
+
+

It’s a good idea to create custom starter by leaving at the end the keywords *-spring-boot-starter and at the beginning the technology that you are going to build.

+
+
+
    +
  1. +

    In the directory workspace/directory-web-client-spring-boot-starter add the following pom.xml file:

    +
    +
    +
    <?xml version="1.0" encoding="UTF-8"?>
    +<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    +                 xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
    +        <modelVersion>4.0.0</modelVersion>
    +        <groupId>io.pivotal.workshop</groupId>
    +        <artifactId>directory-web-client-spring-boot-starter</artifactId>
    +        <version>0.0.1-SNAPSHOT</version>
    +        <packaging>jar</packaging>
    +
    +        <name>directory-web-client-spring-boot-starter</name>
    +        <description>Demo project for Spring Boot</description>
    +
    +        <properties>
    +                <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
    +                <project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding>
    +        </properties>
    +
    +    <parent>  <!-- <1> -->
    +        <groupId>io.pivotal.workshop</groupId>
    +        <artifactId>directory-web-client</artifactId>
    +        <version>0.0.1-SNAPSHOT</version>
    +        <relativePath>..</relativePath>
    +    </parent>
    +
    +        <dependencies>
    +                <dependency>
    +                        <groupId>io.pivotal.workshop</groupId>   <!-- <2> -->
    +                        <artifactId>directory-web-client-spring-boot-autoconfigure</artifactId>
    +                        <version>0.0.1-SNAPSHOT</version>
    +                </dependency>
    +        </dependencies>
    +
    +
    +
    +</project>
    +
    +
    +
    +
      +
    1. +

      See that we are using our parent pom.

      +
    2. +
    3. +

      We are adding our auto-configuration app.

      +
    4. +
    +
    +
    +

    Thats it, the spring-boot-starter is just a pom.xml file that declares the auto-configuration dependency.

    +
    +
  2. +
+
+
+
+
+

Directory Web Client Spring Boot Autoconfigure

+
+
+

This project will have all the logic to be a reusable component in any project.

+
+
+
    +
  1. +

    Open a browser and hit the url: http://start.spring.io

    +
  2. +
  3. +

    Click the Switch to the full version link.

    +
  4. +
  5. +

    Fill out the Directory Web Client Spring Boot Autoconfigure Project metadata with (See Figure 1.0):

    + + ++++ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    Table 1. Directory Web Client Spring Boot Autoconfigure - metadata
    PropertyValue

    Group:

    io.pivotal.workshop

    Artifact:

    directory-web-client-spring-boot-autoconfigure

    Name:

    directory-web-client-spring-boot-autoconfigure

    Package Name:

    io.pivotal.workshop.directory

    Dependencies:

    Web, HATEOAS, Security, Lombok, Configuration Processor

    Project Type:

    Maven

    Spring Boot:

    2.0.0.M7

    +
    +
    Figure 1.0: Spring Initializr - http://start.spring.io
    +

    SpringInitializr

    +
    +
  6. +
  7. +

    Type Web, HATEOAS, Security, Lombok and Configuration Processor in the Dependencies field and press Enter.

    +
  8. +
  9. +

    Click the Generate Project button.

    +
  10. +
  11. +

    IMPORTANT Unzip the file in any directory you want and COPY the content in the workspace/directory-web-client-spring-boot-autoconfigure directory.

    +
  12. +
  13. +

    Import your project in any IDE you want.

    +
  14. +
  15. +

    Modify the pom.xml and make sure it looks like this:

    +
    +
    +
    <?xml version="1.0" encoding="UTF-8"?>
    +<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    +        xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
    +        <modelVersion>4.0.0</modelVersion>
    +
    +        <groupId>io.pivotal.workshop</groupId>
    +        <artifactId>directory-web-client-spring-boot-autoconfigure</artifactId>
    +        <version>0.0.1-SNAPSHOT</version>
    +        <packaging>jar</packaging>
    +
    +        <name>directory-web-client-spring-boot-autoconfigure</name>
    +        <description>Demo project for Spring Boot</description>
    +
    +        <properties>
    +                <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
    +                <project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding>
    +                <java.version>1.8</java.version>
    +        </properties>
    +
    +    <parent>
    +        <groupId>io.pivotal.workshop</groupId>
    +        <artifactId>directory-web-client</artifactId>
    +        <version>0.0.1-SNAPSHOT</version>
    +        <relativePath>..</relativePath>
    +    </parent>
    +
    +        <dependencies>
    +
    +                <dependency>
    +                        <groupId>org.projectlombok</groupId>
    +                        <artifactId>lombok</artifactId>
    +                </dependency>
    +                <dependency>
    +                        <groupId>org.springframework.boot</groupId>
    +                        <artifactId>spring-boot-starter-security</artifactId>
    +                </dependency>
    +
    +                <dependency>
    +                        <groupId>org.springframework.hateoas</groupId>
    +                        <artifactId>spring-hateoas</artifactId>
    +                </dependency>
    +
    +                <dependency>
    +                        <groupId>org.springframework.boot</groupId>
    +                        <artifactId>spring-boot-starter-web</artifactId>
    +                </dependency>
    +
    +
    +                <dependency>
    +                        <groupId>org.springframework.boot</groupId>
    +                        <artifactId>spring-boot-starter-test</artifactId>
    +                        <scope>test</scope>
    +                </dependency>
    +                <dependency>
    +                        <groupId>org.springframework.security</groupId>
    +                        <artifactId>spring-security-test</artifactId>
    +                        <scope>test</scope>
    +                </dependency>
    +
    +                <dependency>
    +                        <groupId>org.springframework.boot</groupId>
    +                        <artifactId>spring-boot-configuration-processor</artifactId>
    +                        <optional>true</optional>
    +                </dependency>
    +
    +
    +
    +        </dependencies>
    +
    +
    +</project>
    +
    +
    +
  16. +
  17. +

    Let’s start by telling Spring Boot where to go for the auto-configuration. Create in the src/main/resources directory, a new folder named: META-INF and inside this folder a file named: spring.factories with the following content:

    +
    +
    src/main/resources/META-INF/spring.factories
    +
    +
    org.springframework.boot.autoconfigure.EnableAutoConfiguration=io.pivotal.workshop.directory.configuration.DirectoryWebClientAutoConfiguration
    +
    +
    +
    +

    Here we are declaring the class that will do the auto-configuration, in this case the io.pivotal.workshop.directory.configuration.DirectoryWebClientAutoConfiguration class.

    +
    +
  18. +
  19. +

    Next let’s create the io.pivotal.workshop.directory.configuration.DirectoryWebClientAutoConfiguration class:

    +
    +
    src/main/java/io/pivotal/workshop/directory/configuration/DirectoryWebClientAutoConfiguration.java
    +
    +
    package io.pivotal.workshop.directory.configuration;
    +
    +import io.pivotal.workshop.directory.client.DirectoryWebClient;
    +import org.slf4j.Logger;
    +import org.slf4j.LoggerFactory;
    +import org.springframework.boot.autoconfigure.condition.ConditionalOnClass;
    +import org.springframework.boot.context.properties.EnableConfigurationProperties;
    +import org.springframework.boot.web.client.RestTemplateBuilder;
    +import org.springframework.context.annotation.Bean;
    +import org.springframework.context.annotation.Configuration;
    +import org.springframework.hateoas.Resource;
    +import org.springframework.web.client.RestTemplate;
    +
    +//(1)
    +@Configuration
    +@ConditionalOnClass({Resource.class,RestTemplateBuilder.class})
    +@EnableConfigurationProperties(DirectoryWebClientProperties.class)
    +public class DirectoryWebClientAutoConfiguration {
    +
    +    private final Logger log = LoggerFactory.getLogger(DirectoryWebClientAutoConfiguration.class);
    +    private DirectoryWebClientProperties webClientProperties;
    +    private RestTemplateBuilder restTemplateBuilder;
    +
    +    //(2)
    +    public DirectoryWebClientAutoConfiguration(DirectoryWebClientProperties webClientProperties, RestTemplateBuilder restTemplateBuilder) {
    +        this.webClientProperties = webClientProperties;
    +        this.restTemplateBuilder = restTemplateBuilder;
    +    }
    +
    +    //(3)
    +    @Bean
    +    public DirectoryWebClient directoryClient(){
    +        log.info("Creating a Directory Web Client...");
    +        return new DirectoryWebClient(restTemplate(),this.webClientProperties);
    +    }
    +
    +
    +    //(4)
    +    @Bean
    +    public RestTemplate restTemplate(){
    +        // Make sure the directory-web-security has the httpBasic() security enabled and NOT the formLogin()
    +        log.info("Setting up admin credentials for Directory Web Client ...");
    +        return this.restTemplateBuilder.basicAuthorization(webClientProperties.getUsername(),webClientProperties.getPassword()).build();
    +    }
    +
    +
    +}
    +
    +
    +
    +
      +
    1. +

      This class is annotated with the @ConditionalOnClass that checks if in the classpath is the Resource and the RestTemplateBuilder classes, and if they do, then it will configure all the beans declared in this class.

      +
    2. +
    3. +

      The constructor injects the DirectoryWebClientProperties and the RestTemplateBuilder. The DirectoryWebClientProperties will bring the username and password (the admin credentials for the directory-web-security app.), and the RestTemplateBuilder will create the RestTemplate instance, needed for do all the rest operations.

      +
    4. +
    5. +

      The directoryClient is the one created to do all the rest operations over the directory-web-security app endpoints.

      +
    6. +
    7. +

      This is the RestTeamplate that holds the administrator credentials so it can do all the Rest operations.

      +
    8. +
    +
    +
    + + + + + +
    +
    Tip
    +
    +Is important to make sure the directory-web-security has the httpBasic() security enabled and NOT the formLogin() +
    +
    +
  20. +
  21. +

    Create the io.pivotal.workshop.directory.configuration.DirectoryWebClientProperties class. This class will have the admin credentials and the uri of the directory-web-security app.:

    +
    +
    src/main/java/io/pivotal/workshop/directory/configuration/DirectoryWebClientProperties.java
    +
    +
    package io.pivotal.workshop.directory.configuration;
    +
    +import lombok.Data;
    +import org.springframework.boot.context.properties.ConfigurationProperties;
    +
    +import java.util.Arrays;
    +import java.util.List;
    +
    +@Data
    +@ConfigurationProperties(prefix = "directory.web.client")
    +public class DirectoryWebClientProperties {
    +
    +    String username = "admin";
    +    String password = "admin";
    +    String uri = "http://localhost:8585/api/persons";
    +
    +}
    +
    +
    +
    +

    See that we are using the Lombok library (with the @Data annotation)so it can generate the setters and getters from the fields.

    +
    +
  22. +
  23. +

    Next, let’s create the actual DirectoryWebClient class that will do all the Rest operations. Create the io.pivotal.workshop.directory.client.DirectoryWebClient class:

    +
    +
    src/main/java/io/pivotal/workshop/directory/client/DirectoryWebClient.java
    +
    +
    package io.pivotal.workshop.directory.client;
    +
    +
    +import io.pivotal.workshop.directory.configuration.DirectoryWebClientProperties;
    +import io.pivotal.workshop.directory.domain.Directory;
    +import io.pivotal.workshop.directory.domain.Person;
    +import org.springframework.core.ParameterizedTypeReference;
    +import org.springframework.hateoas.MediaTypes;
    +import org.springframework.hateoas.Resource;
    +import org.springframework.http.HttpStatus;
    +import org.springframework.http.RequestEntity;
    +import org.springframework.http.ResponseEntity;
    +import org.springframework.web.client.RestTemplate;
    +
    +import java.util.Collection;
    +import java.util.Collections;
    +
    +import static java.net.URI.create;
    +
    +public class DirectoryWebClient {
    +
    +
    +    private RestTemplate restTemplate;
    +    private DirectoryWebClientProperties props;
    +
    +    public DirectoryWebClient(RestTemplate restTemplate, DirectoryWebClientProperties props){
    +        this.restTemplate = restTemplate;
    +        this.props = props;
    +    }
    +
    +    public Person add(Person person){
    +        ResponseEntity<Resource<Person>> response =
    +                this.restTemplate.exchange(
    +                        RequestEntity.post(
    +                            create(this.props.getUri()))
    +                            .body(person)
    +                        ,new ParameterizedTypeReference<Resource<Person>>() {});
    +
    +        return response.getBody().getContent();
    +    }
    +
    +    public Collection<Person> getAll() {
    +
    +        ResponseEntity<Resource<Directory>> responseEntity =
    +                this.restTemplate.exchange(RequestEntity.get(create(this.props.getUri()))
    +                        .accept(MediaTypes.HAL_JSON)
    +                        .build(),new ParameterizedTypeReference<Resource<Directory>>() {});
    +
    +        if(responseEntity.getStatusCode() == HttpStatus.OK) {
    +            Directory company = responseEntity.getBody().getContent();
    +            return company.getEmbedded().getPersons();
    +        }else
    +            return Collections.emptyList();
    +    }
    +
    +}
    +
    +
    +
    +

    See that it has (for now) two methods. To add a new person object to the directory and get all the persons in the directory. As you can see, is using a Directoy and Person domain classes.

    +
    +
  24. +
  25. +

    Create the necessary domains, the io.pivotal.workshop.directory.domain.Directory and io.pivotal.workshop.directory.domain.Person classes, you can copy the Person class from the directory-web-security app, without the JPA annotations:

    +
    +
    src/main/java/io/pivotal/workshop/directory/domain/Directory.java
    +
    +
    package io.pivotal.workshop.directory.domain;
    +
    +import com.fasterxml.jackson.annotation.JsonIgnoreProperties;
    +import com.fasterxml.jackson.annotation.JsonProperty;
    +import lombok.Data;
    +
    +import java.util.List;
    +
    +@Data
    +@JsonIgnoreProperties(ignoreUnknown = true)
    +public class Directory {
    +
    +    @JsonProperty("_embedded")
    +    public Embedded embedded;
    +
    +    @Data
    +    public class Embedded {
    +
    +        public List<Person> persons;
    +
    +    }
    +}
    +
    +
    +
    +
    src/main/java/io/pivotal/workshop/directory/domain/Person.java
    +
    +
    package io.pivotal.workshop.directory.domain;
    +
    +
    +import com.fasterxml.jackson.annotation.JsonIgnoreProperties;
    +import com.fasterxml.jackson.annotation.JsonProperty;
    +import lombok.AllArgsConstructor;
    +import lombok.Data;
    +import lombok.NoArgsConstructor;
    +
    +import java.text.ParseException;
    +import java.text.SimpleDateFormat;
    +import java.util.Date;
    +
    +@JsonIgnoreProperties(ignoreUnknown = true)
    +public class Person {
    +
    +
    +    private SimpleDateFormat date = new SimpleDateFormat("yyyy-MM-dd");
    +
    +    private String id;
    +    private String email;
    +    private String name;
    +    private String password;
    +    private String role = "USER";
    +    private boolean enabled = true;
    +    private Date birthday;
    +    private Date created;
    +    private Date modified;
    +
    +    public Person() {
    +        this.created = new Date();
    +        this.modified = new Date();
    +    }
    +
    +    public Person(String email, String name, String password, String birthday) {
    +        this();
    +        this.email = email;
    +        this.name = name;
    +        this.password = password;
    +
    +        try {
    +            this.birthday = date.parse(birthday);
    +        } catch (ParseException e) {
    +            this.birthday = null;
    +        }
    +    }
    +
    +    public Person(String email, String name, String password, Date birthday) {
    +        this();
    +        this.email = email;
    +        this.name = name;
    +        this.password = password;
    +        this.birthday = birthday;
    +    }
    +
    +    public Person(String email, String name, String password, String birthday, String role, boolean enabled) {
    +        this(email, name, password, birthday);
    +        this.role = role;
    +        this.enabled = enabled;
    +    }
    +
    +    public String getId() {
    +        return id;
    +    }
    +
    +    public void setId(String id) {
    +        this.id = id;
    +    }
    +
    +    public String getEmail() {
    +        return email;
    +    }
    +
    +    public void setEmail(String email) {
    +        this.email = email;
    +    }
    +
    +    public String getName() {
    +        return name;
    +    }
    +
    +    public void setName(String name) {
    +        this.name = name;
    +    }
    +
    +    public String getPassword() {
    +        return password;
    +    }
    +
    +    public void setPassword(String password) {
    +        this.password = password;
    +    }
    +
    +    public Date getBirthday() {
    +        return birthday;
    +    }
    +
    +    public void setBirthday(Date birthday) {
    +        this.birthday = birthday;
    +    }
    +
    +    public Date getCreated() {
    +        return created;
    +    }
    +
    +    public Date getModified() {
    +        return modified;
    +    }
    +
    +    public String getRole() {
    +        return role;
    +    }
    +
    +    public void setRole(String role) {
    +        this.role = role;
    +    }
    +
    +    public boolean isEnabled() {
    +        return enabled;
    +    }
    +
    +    public void setEnabled(boolean enabled) {
    +        this.enabled = enabled;
    +    }
    +
    +    @Override
    +    public String toString() {
    +        return "Person{" +
    +                "id='" + id + '\'' +
    +                ", email='" + email + '\'' +
    +                ", name='" + name + '\'' +
    +                ", password='" + password + '\'' +
    +                ", role='" + role + '\'' +
    +                ", enabled=" + enabled +
    +                ", birthday=" + birthday +
    +                ", date=" + date +
    +                ", created=" + created +
    +                ", modified=" + modified +
    +                '}';
    +    }
    +}
    +
    +
    +
  26. +
  27. +

    Lets add the next feature, the @EnableDirectoryWebClientUtils that will create a DirectoryWebClientUtils bean depending of what algorithm was declared. Add the custom annotation io.pivotal.workshop.directory.annotation.EnableDirectoryWebClientUtils class and its dependency, the io.pivotal.workshop.directory.annotation.Algorithm enum:

    +
    +
    src/main/java/io/pivotal/workshop/directory/annotation/EnableDirectoryWebClientUtils.java
    +
    +
    package io.pivotal.workshop.directory.annotation;
    +
    +
    +import io.pivotal.workshop.directory.utils.DirectoryWebClientUtilsConfiguration;
    +import org.springframework.context.annotation.Import;
    +
    +import java.lang.annotation.ElementType;
    +import java.lang.annotation.Retention;
    +import java.lang.annotation.RetentionPolicy;
    +import java.lang.annotation.Target;
    +
    +@Retention(RetentionPolicy.RUNTIME)
    +@Target(ElementType.TYPE)
    +@Import(DirectoryWebClientUtilsConfiguration.class)
    +public @interface EnableDirectoryWebClientUtils {
    +    Algorithm algorithm() default Algorithm.BCRYPT;
    +}
    +
    +
    +
    +
    src/main/java/io/pivotal/workshop/directory/annotation/Algorithm.java
    +
    +
    package io.pivotal.workshop.directory.annotation;
    +
    +public enum Algorithm {
    +    BCRYPT, PBKDF2
    +}
    +
    +
    +
  28. +
  29. +

    Next let’s create the configuration needed to create the DirectoryWebClientUtils bean. Create the io.pivotal.workshop.directory.utils.DirectoryWebClientUtilsConfiguration class. This class will implement the ImportSelector interface that will be picked up by Spring Boot during the auto-configuration. It will identify if the @EnableDirectoryWebClientUtils was declared in a @Configuration class and it will create the necessary beans.

    +
    +
    src/main/java/io/pivotal/workshop/directory/utils/DirectoryWebClientUtilsConfiguration.java
    +
    +
    package io.pivotal.workshop.directory.utils;
    +
    +
    +import io.pivotal.workshop.directory.annotation.Algorithm;
    +import io.pivotal.workshop.directory.annotation.EnableDirectoryWebClientUtils;
    +import org.springframework.context.annotation.ImportSelector;
    +import org.springframework.core.annotation.AnnotationAttributes;
    +import org.springframework.core.type.AnnotationMetadata;
    +
    +public class DirectoryWebClientUtilsConfiguration implements ImportSelector {
    +
    +    public String[] selectImports(AnnotationMetadata annotationMetadata) {
    +        AnnotationAttributes attributes =
    +                AnnotationAttributes.fromMap(
    +                        annotationMetadata.getAnnotationAttributes(EnableDirectoryWebClientUtils.class.getName(), false));
    +        Algorithm algorithm = attributes.getEnum("algorithm");
    +        switch(algorithm){
    +            case PBKDF2:
    +                return new String[] {"io.pivotal.workshop.directory.utils.Pbkdf2Encoder"};
    +            case BCRYPT:
    +                default:
    +                return new String[] {"io.pivotal.workshop.directory.utils.BcryptEncoder"};
    +        }
    +    }
    +}
    +
    +
    +
    +

    The DirectoryWebClientUtilsConfiguration will decide which class to configure based on the Algorithm selected.

    +
    +
  30. +
  31. +

    Lets create the io.pivotal.workshop.directory.utils.BCryptEncoder and io.pivotal.workshop.directory.utils.Pbkdf2Encoder configuration classes. These classes will declare the DirectoryWebClientUtils bean and it will have the Algorithm selected.

    +
    +
    src/main/java/io/pivotal/workshop/directory/utils/BCryptEncoder.java
    +
    +
    package io.pivotal.workshop.directory.utils;
    +
    +import org.springframework.context.annotation.Bean;
    +import org.springframework.context.annotation.Configuration;
    +import org.springframework.security.crypto.bcrypt.BCryptPasswordEncoder;
    +
    +@Configuration
    +public class BCryptEncoder {
    +
    +    @Bean
    +    public DirectoryWebClientUtils utils(){
    +        return new DirectoryWebClientUtils(new BCryptPasswordEncoder(16));
    +    }
    +}
    +
    +
    +
    +
    src/main/java/io/pivotal/workshop/directory/utils/Pbkdf2Encoder.java
    +
    +
    package io.pivotal.workshop.directory.utils;
    +
    +import org.springframework.context.annotation.Bean;
    +import org.springframework.context.annotation.Configuration;
    +import org.springframework.security.crypto.password.Pbkdf2PasswordEncoder;
    +
    +@Configuration
    +public class Pbkdf2Encoder {
    +
    +    @Bean
    +    public DirectoryWebClientUtils utils(){
    +        return new DirectoryWebClientUtils(new Pbkdf2PasswordEncoder());
    +    }
    +}
    +
    +
    +
  32. +
  33. +

    Next, create the io.pivotal.workshop.directory.utils.DirectoryWebClientUtils class that will be the bean created based on the Algorithm selected:

    +
    +
    src/main/java/io/pivotal/workshop/directory/utils/DirectoryWebClientUtils.java
    +
    +
    package io.pivotal.workshop.directory.utils;
    +
    +import lombok.Data;
    +import org.springframework.security.crypto.password.PasswordEncoder;
    +
    +
    +@Data
    +public class DirectoryWebClientUtils {
    +
    +    private PasswordEncoder encoder;
    +
    +    public DirectoryWebClientUtils(PasswordEncoder encoder){
    +        this.encoder = encoder;
    +    }
    +
    +}
    +
    +
    +
  34. +
+
+
+
+
+

Demo Starter

+
+
+

This project will test the custom spring-boot-starter.

+
+
+
    +
  1. +

    Open a browser and hit the url: http://start.spring.io

    +
  2. +
  3. +

    Click the Switch to the full version link.

    +
  4. +
  5. +

    Fill out the Demo Starter Project metadata with (See Figure 1.0):

    + + ++++ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    Table 2. Demo Starter - metadata
    PropertyValue

    Group:

    io.pivotal.workshop

    Artifact:

    demo-starter

    Name:

    demo-starter

    Package Name:

    io.pivotal.workshop

    Project Type:

    Maven

    Spring Boot:

    2.0.0.M7

    +
    +
    Figure 1.0: Spring Initializr - http://start.spring.io
    +

    SpringInitializr

    +
    +
  6. +
  7. +

    This is just a simple Spring Boot app, without any additional Dependencies from the Spring Initializr.

    +
  8. +
  9. +

    Click the Generate Project button.

    +
  10. +
  11. +

    IMPORTANT Unzip the file in any directory you want and COPY the content in the workspace/demo-starter directory.

    +
  12. +
  13. +

    Import the project into your favorite IDE.

    +
  14. +
  15. +

    Add the directory-web-client-spring-boot-starter dependency to your pom.xml:

    +
    +
    +
    <dependency>
    +    <groupId>io.pivotal.workshop</groupId>
    +    <artifactId>directory-web-client-spring-boot-starter</artifactId>
    +    <version>0.0.1-SNAPSHOT</version>
    +</dependency>
    +
    +
    +
  16. +
  17. +

    In the src/main/resources/application.properties file add the following properties:

    +
    +
    +
    directory.web.client.username=admin
    +directory.web.client.password=admin
    +directory.web.client.uri=http://localhost:8585/api/persons
    +
    +
    +
    +

    These are the defaul values, but this give us more flexibility if the directory-web-security app has different credentials or is running in a different port.

    +
    +
  18. +
  19. +

    Next, we are ready to start testing. Make sure you have the directory-web-security running in the port 8585.

    +
  20. +
+
+
+

Testing the DirectoryWebClient bean

+
+
    +
  1. +

    In your demo-starter project open the DemoStarterApplication class and add the following code:

    +
    +
    +
    package io.pivotal.workshop;
    +
    +import io.pivotal.workshop.directory.client.DirectoryWebClient;
    +import org.springframework.boot.ApplicationRunner;
    +import org.springframework.boot.SpringApplication;
    +import org.springframework.boot.autoconfigure.SpringBootApplication;
    +import org.springframework.context.annotation.Bean;
    +
    +@SpringBootApplication
    +public class DemoStarterApplication {
    +
    +        public static void main(String[] args) {
    +                SpringApplication.run(DemoStarterApplication.class, args);
    +        }
    +
    +        @Bean
    +        ApplicationRunner getPersons(DirectoryWebClient client){
    +                return args -> {
    +                        client.getAll().forEach(System.out::println);
    +                };
    +        }
    +
    +}
    +
    +
    +
    +

    In the above code we are using the DirectoryWebClient client and calling the getAll() method.

    +
    +
  2. +
  3. +

    Run the application and you should see all the persons that are in the directory-web-security app.

    +
  4. +
+
+
+ + + + + +
+
Tip
+
+If you are using the command: ./mvnw spring-boot:run remember that you need to do a: ./mvnw install in the root folder (workspace), so the directory-web-client-spring-boot-starter and its dependencies get installed so they can be used. +
+
+
+
+

Testing the @EnableDirectoryWebClientUtils annotation.

+
+
    +
  1. +

    In your demo-starter project open the DemoStarterApplication class and add the following code:

    +
    +
    +
    package io.pivotal.workshop;
    +
    +import io.pivotal.workshop.directory.annotation.Algorithm;
    +import io.pivotal.workshop.directory.annotation.EnableDirectoryWebClientUtils;
    +import io.pivotal.workshop.directory.client.DirectoryWebClient;
    +import io.pivotal.workshop.directory.utils.DirectoryWebClientUtils;
    +import org.springframework.boot.ApplicationRunner;
    +import org.springframework.boot.SpringApplication;
    +import org.springframework.boot.autoconfigure.SpringBootApplication;
    +import org.springframework.context.annotation.Bean;
    +
    +@EnableDirectoryWebClientUtils(algorithm = Algorithm.PBKDF2)
    +@SpringBootApplication
    +public class DemoStarterApplication {
    +
    +        public static void main(String[] args) {
    +                SpringApplication.run(DemoStarterApplication.class, args);
    +        }
    +
    +        @Bean
    +        ApplicationRunner getPersons(DirectoryWebClient client){
    +                return args -> {
    +                        client.getAll().forEach(System.out::println);
    +                };
    +        }
    +
    +        @Bean
    +        ApplicationRunner encode(DirectoryWebClientUtils utils){
    +                return args -> {
    +                    String text = "This text will be encrypted";
    +                        String hash = utils.getEncoder().encode(text);
    +                        System.out.println(">>> ENCRYPT: " + hash);
    +                        System.out.println(">>> Verify: " + utils.getEncoder().matches(text,hash));
    +                };
    +        }
    +
    +}
    +
    +
    +
  2. +
  3. +

    Run the application and you will see the encrypted text.

    +
  4. +
+
+
+

CONGRATS! you have created your first custom spring-boot-starter

+
+
+
+
+
+

Challenges

+
+
+
    +
  1. +

    Comment out the @EnableDirectoryWebClientUtils, run the app again and see how the it fails because is looking for the DirectoryWebClientUtils bean. That’s the power of creating a @Enable* technology.

    +
  2. +
  3. +

    Add the code to add a new person using the DirectoryWebClient bean.

    +
  4. +
+
+
+
+
+

HOMEWORK

+
+
+
    +
  1. +

    Create a Web app that has the CRUD (Create, Read, Up, Delete) Forms for all these actions. It will use the directory-web-client-spring-boot-starter:

    +
    +
      +
    • +

      It will encrypt the user password (TIP: You can use the DirectoryWebClientUtils bean)

      +
    • +
    • +

      Add all the missing logic for Update, Delete, etc to the directory-web-client-spring-boot-autoconfigure so it can be more reusable for this new web app.

      +
    • +
    +
    +
  2. +
+
+
+
+
+ + + \ No newline at end of file diff --git a/src/main/UploadedContent/student-lab-instructions/artifacts/spring-boot-security/home.html b/src/main/UploadedContent/student-lab-instructions/artifacts/spring-boot-security/home.html new file mode 100644 index 0000000..ee920a2 --- /dev/null +++ b/src/main/UploadedContent/student-lab-instructions/artifacts/spring-boot-security/home.html @@ -0,0 +1,609 @@ + + + + + + + +Untitled + + + + + + + + + + + + + + + +
+
+
src/main/resources/templates/views/home.tpl
+
+
layout 'layouts/main.tpl',
+        pageTitle: 'Code Snippet Manager',
+        mainBody: contents {
+                        div(class: 'col-xs-12 col-sm-12'){
+
+                                p(class: 'pull-right visible-xs') {
+                                        button(type: 'button', class: 'btn btn-primary btn-xs', 'data-toggle':'offcanvas', 'Toggle nav')
+                                }
+
+                                div(class: 'jumbotron') {
+                                    h1('Web Directory')
+                                    p('A new way to save your contacts information!')
+                            }
+
+                            div(class: 'row') {
+
+                            }
+            }
+
+        }
+
+
+
+ + + \ No newline at end of file diff --git a/src/main/UploadedContent/student-lab-instructions/artifacts/spring-boot-security/main.html b/src/main/UploadedContent/student-lab-instructions/artifacts/spring-boot-security/main.html new file mode 100644 index 0000000..1f1bf14 --- /dev/null +++ b/src/main/UploadedContent/student-lab-instructions/artifacts/spring-boot-security/main.html @@ -0,0 +1,629 @@ + + + + + + + +Untitled + + + + + + + + + + + + + + + +
+
+
src/main/resources/templates/layouts/main.tpl
+
+
yieldUnescaped '<!DOCTYPE html>'
+html {
+    head {
+        title(pageTitle)
+        meta(name: 'viewport', content:'width=device-width, initial-scale=1')
+
+        link(rel: 'stylesheet', href: 'webjars/bootstrap/3.3.6/css/bootstrap.min.css')
+        link(rel: 'stylesheet', href: 'css/offcanvas.css')
+        link(rel: 'stylesheet', href: 'css/theme.css')
+
+        script(src: 'webjars/jquery/2.2.4/jquery.min.js'){ }
+        script(src: 'webjars/bootstrap/3.3.6/js/bootstrap.min.js'){ }
+        script(src: 'webjars/angularjs/1.5.7/angular.min.js') { }
+
+    }
+    body {
+                    nav (class: 'navbar navbar-fixed-top navbar-inverse') {
+                            div(class: 'container'){
+                                    div(class: 'navbar-header'){
+                                            button(type: 'button', class: 'navbar-toggle collapsed', 'data-toggle':'collapse', 'data-target':'#navbar', 'aria-expanded':'false', 'aria-controls':'navbar'){
+
+                                            }
+                                            a(class:'navbar-brand','Web Directory')
+                                    }
+                            }
+                    }
+                    div(class: 'container'){
+                            div(class: 'row row-offcanvas row-offcanvas-right'){
+                                mainBody()
+                        }
+
+                        hr()
+
+            footer {
+                            p('&copy; 2017 Web Directory')
+            }
+        }
+
+    }
+}
+
+
+
+ + + \ No newline at end of file diff --git a/src/main/UploadedContent/student-lab-instructions/artifacts/spring-boot-security/offcanvas.html b/src/main/UploadedContent/student-lab-instructions/artifacts/spring-boot-security/offcanvas.html new file mode 100644 index 0000000..beb64bb --- /dev/null +++ b/src/main/UploadedContent/student-lab-instructions/artifacts/spring-boot-security/offcanvas.html @@ -0,0 +1,648 @@ + + + + + + + +Untitled + + + + + + + + + + + + + + + +
+
+
src/main/resources/static/css/offcanvas.css
+
+
/*
+ * Style tweaks
+ * --------------------------------------------------
+ */
+html,
+body {
+  overflow-x: hidden; /* Prevent scroll on narrow devices */
+}
+body {
+  padding-top: 70px;
+}
+footer {
+  padding: 30px 0;
+}
+
+/*
+ * Off Canvas
+ * --------------------------------------------------
+ */
+@media screen and (max-width: 767px) {
+  .row-offcanvas {
+    position: relative;
+    -webkit-transition: all .25s ease-out;
+         -o-transition: all .25s ease-out;
+            transition: all .25s ease-out;
+  }
+
+  .row-offcanvas-right {
+    right: 0;
+  }
+
+  .row-offcanvas-left {
+    left: 0;
+  }
+
+  .row-offcanvas-right
+  .sidebar-offcanvas {
+    right: -50%; /* 6 columns */
+  }
+
+  .row-offcanvas-left
+  .sidebar-offcanvas {
+    left: -50%; /* 6 columns */
+  }
+
+  .row-offcanvas-right.active {
+    right: 50%; /* 6 columns */
+  }
+
+  .row-offcanvas-left.active {
+    left: 50%; /* 6 columns */
+  }
+
+  .sidebar-offcanvas {
+    position: absolute;
+    top: 0;
+    width: 50%; /* 6 columns */
+  }
+}
+
+
+
+ + + \ No newline at end of file diff --git a/src/main/UploadedContent/student-lab-instructions/artifacts/spring-boot-security/theme.html b/src/main/UploadedContent/student-lab-instructions/artifacts/spring-boot-security/theme.html new file mode 100644 index 0000000..1bd8cea --- /dev/null +++ b/src/main/UploadedContent/student-lab-instructions/artifacts/spring-boot-security/theme.html @@ -0,0 +1,827 @@ + + + + + + + +Untitled + + + + + + + + + + + + + + + +
+
+
src/main/resources/static/css/theme.css
+
+
.syntaxhighlighter a,
+.syntaxhighlighter div,
+.syntaxhighlighter code,
+.syntaxhighlighter table,
+.syntaxhighlighter table td,
+.syntaxhighlighter table tr,
+.syntaxhighlighter table tbody,
+.syntaxhighlighter table thead,
+.syntaxhighlighter table caption,
+.syntaxhighlighter textarea {
+  -moz-border-radius: 0 0 0 0 !important;
+  -webkit-border-radius: 0 0 0 0 !important;
+  background: none !important;
+  border: 0 !important;
+  bottom: auto !important;
+  float: none !important;
+  height: auto !important;
+  left: auto !important;
+  line-height: 1.1em !important;
+  margin: 0 !important;
+  outline: 0 !important;
+  overflow: visible !important;
+  padding: 0 !important;
+  position: static !important;
+  right: auto !important;
+  text-align: left !important;
+  top: auto !important;
+  vertical-align: baseline !important;
+  width: auto !important;
+  box-sizing: content-box !important;
+  font-family: "Consolas", "Bitstream Vera Sans Mono", "Courier New", Courier, monospace !important;
+  font-weight: normal !important;
+  font-style: normal !important;
+  font-size: 1em !important;
+  min-height: inherit !important;
+  min-height: auto !important; }
+
+.syntaxhighlighter {
+  width: 100% !important;
+  margin: 1em 0 1em 0 !important;
+  position: relative !important;
+  overflow: auto !important;
+  font-size: 1em !important; }
+  .syntaxhighlighter .container:before, .syntaxhighlighter .container:after {
+    content: none !important; }
+  .syntaxhighlighter.source {
+    overflow: hidden !important; }
+  .syntaxhighlighter .bold {
+    font-weight: bold !important; }
+  .syntaxhighlighter .italic {
+    font-style: italic !important; }
+  .syntaxhighlighter .line {
+    white-space: pre !important; }
+  .syntaxhighlighter table {
+    width: 100% !important; }
+    .syntaxhighlighter table caption {
+      text-align: left !important;
+      padding: .5em 0 0.5em 1em !important; }
+    .syntaxhighlighter table td.code {
+      width: 100% !important; }
+      .syntaxhighlighter table td.code .container {
+        position: relative !important; }
+        .syntaxhighlighter table td.code .container textarea {
+          box-sizing: border-box !important;
+          position: absolute !important;
+          left: 0 !important;
+          top: 0 !important;
+          width: 100% !important;
+          height: 100% !important;
+          border: none !important;
+          background: white !important;
+          padding-left: 1em !important;
+          overflow: hidden !important;
+          white-space: pre !important; }
+    .syntaxhighlighter table td.gutter .line {
+      text-align: right !important;
+      padding: 0 0.5em 0 1em !important; }
+    .syntaxhighlighter table td.code .line {
+      padding: 0 1em !important; }
+  .syntaxhighlighter.nogutter td.code .container textarea, .syntaxhighlighter.nogutter td.code .line {
+    padding-left: 0em !important; }
+  .syntaxhighlighter.show {
+    display: block !important; }
+  .syntaxhighlighter.collapsed table {
+    display: none !important; }
+  .syntaxhighlighter.collapsed .toolbar {
+    padding: 0.1em 0.8em 0em 0.8em !important;
+    font-size: 1em !important;
+    position: static !important;
+    width: auto !important;
+    height: auto !important; }
+    .syntaxhighlighter.collapsed .toolbar span {
+      display: inline !important;
+      margin-right: 1em !important; }
+      .syntaxhighlighter.collapsed .toolbar span a {
+        padding: 0 !important;
+        display: none !important; }
+        .syntaxhighlighter.collapsed .toolbar span a.expandSource {
+          display: inline !important; }
+  .syntaxhighlighter .toolbar {
+    position: absolute !important;
+    right: 1px !important;
+    top: 1px !important;
+    width: 11px !important;
+    height: 11px !important;
+    font-size: 10px !important;
+    z-index: 10 !important; }
+    .syntaxhighlighter .toolbar span.title {
+      display: inline !important; }
+    .syntaxhighlighter .toolbar a {
+      display: block !important;
+      text-align: center !important;
+      text-decoration: none !important;
+      padding-top: 1px !important; }
+      .syntaxhighlighter .toolbar a.expandSource {
+        display: none !important; }
+  .syntaxhighlighter.ie {
+    font-size: .9em !important;
+    padding: 1px 0 1px 0 !important; }
+    .syntaxhighlighter.ie .toolbar {
+      line-height: 8px !important; }
+      .syntaxhighlighter.ie .toolbar a {
+        padding-top: 0px !important; }
+  .syntaxhighlighter.printing .line.alt1 .content,
+  .syntaxhighlighter.printing .line.alt2 .content,
+  .syntaxhighlighter.printing .line.highlighted .number,
+  .syntaxhighlighter.printing .line.highlighted.alt1 .content,
+  .syntaxhighlighter.printing .line.highlighted.alt2 .content {
+    background: none !important; }
+  .syntaxhighlighter.printing .line .number {
+    color: #bbbbbb !important; }
+  .syntaxhighlighter.printing .line .content {
+    color: black !important; }
+  .syntaxhighlighter.printing .toolbar {
+    display: none !important; }
+  .syntaxhighlighter.printing a {
+    text-decoration: none !important; }
+  .syntaxhighlighter.printing .plain, .syntaxhighlighter.printing .plain a {
+    color: black !important; }
+  .syntaxhighlighter.printing .comments, .syntaxhighlighter.printing .comments a {
+    color: #008200 !important; }
+  .syntaxhighlighter.printing .string, .syntaxhighlighter.printing .string a {
+    color: blue !important; }
+  .syntaxhighlighter.printing .keyword {
+    color: #006699 !important;
+    font-weight: bold !important; }
+  .syntaxhighlighter.printing .preprocessor {
+    color: gray !important; }
+  .syntaxhighlighter.printing .variable {
+    color: #aa7700 !important; }
+  .syntaxhighlighter.printing .value {
+    color: #009900 !important; }
+  .syntaxhighlighter.printing .functions {
+    color: #ff1493 !important; }
+  .syntaxhighlighter.printing .constants {
+    color: #0066cc !important; }
+  .syntaxhighlighter.printing .script {
+    font-weight: bold !important; }
+  .syntaxhighlighter.printing .color1, .syntaxhighlighter.printing .color1 a {
+    color: gray !important; }
+  .syntaxhighlighter.printing .color2, .syntaxhighlighter.printing .color2 a {
+    color: #ff1493 !important; }
+  .syntaxhighlighter.printing .color3, .syntaxhighlighter.printing .color3 a {
+    color: red !important; }
+  .syntaxhighlighter.printing .break, .syntaxhighlighter.printing .break a {
+    color: black !important; }
+
+.syntaxhighlighter {
+  background-color: white !important; }
+  .syntaxhighlighter .line.alt1 {
+    background-color: white !important; }
+  .syntaxhighlighter .line.alt2 {
+    background-color: white !important; }
+  .syntaxhighlighter .line.highlighted.alt1, .syntaxhighlighter .line.highlighted.alt2 {
+    background-color: #e0e0e0 !important; }
+  .syntaxhighlighter .line.highlighted.number {
+    color: black !important; }
+  .syntaxhighlighter table caption {
+    color: black !important; }
+  .syntaxhighlighter table td.code .container textarea {
+    background: white;
+    color: black; }
+  .syntaxhighlighter .gutter {
+    color: #afafaf !important; }
+    .syntaxhighlighter .gutter .line {
+      border-right: 3px solid #6ce26c !important; }
+      .syntaxhighlighter .gutter .line.highlighted {
+        background-color: #6ce26c !important;
+        color: white !important; }
+  .syntaxhighlighter.printing .line .content {
+    border: none !important; }
+  .syntaxhighlighter.collapsed {
+    overflow: visible !important; }
+    .syntaxhighlighter.collapsed .toolbar {
+      color: #00f !important;
+      background: #fff !important;
+      border: 1px solid #6ce26c !important; }
+      .syntaxhighlighter.collapsed .toolbar a {
+        color: #00f !important; }
+        .syntaxhighlighter.collapsed .toolbar a:hover {
+          color: #f00 !important; }
+  .syntaxhighlighter .toolbar {
+    color: #fff !important;
+    background: #6ce26c !important;
+    border: none !important; }
+    .syntaxhighlighter .toolbar a {
+      color: #fff !important; }
+      .syntaxhighlighter .toolbar a:hover {
+        color: #000 !important; }
+  .syntaxhighlighter .plain, .syntaxhighlighter .plain a {
+    color: black !important; }
+  .syntaxhighlighter .comments, .syntaxhighlighter .comments a {
+    color: #008200 !important; }
+  .syntaxhighlighter .string, .syntaxhighlighter .string a {
+    color: blue !important; }
+  .syntaxhighlighter .keyword {
+    font-weight: bold !important;
+    color: #006699 !important; }
+  .syntaxhighlighter .preprocessor {
+    color: gray !important; }
+  .syntaxhighlighter .variable {
+    color: #aa7700 !important; }
+  .syntaxhighlighter .value {
+    color: #009900 !important; }
+  .syntaxhighlighter .functions {
+    color: #ff1493 !important; }
+  .syntaxhighlighter .constants {
+    color: #0066cc !important; }
+  .syntaxhighlighter .script {
+    font-weight: bold !important;
+    color: #006699 !important;
+    background-color: none !important; }
+  .syntaxhighlighter .color1, .syntaxhighlighter .color1 a {
+    color: gray !important; }
+  .syntaxhighlighter .color2, .syntaxhighlighter .color2 a {
+    color: #ff1493 !important; }
+  .syntaxhighlighter .color3, .syntaxhighlighter .color3 a {
+    color: red !important; }
+
+
+
+ + + \ No newline at end of file diff --git a/src/main/UploadedContent/student-lab-instructions/artifacts/spring-boot-web/offcanvas.html b/src/main/UploadedContent/student-lab-instructions/artifacts/spring-boot-web/offcanvas.html new file mode 100644 index 0000000..ee6841d --- /dev/null +++ b/src/main/UploadedContent/student-lab-instructions/artifacts/spring-boot-web/offcanvas.html @@ -0,0 +1,648 @@ + + + + + + + +Untitled + + + + + + + + + + + + + + + +
+
+
src/main/resources/static/css/offcanvas.css
+
+
/*
+ * Style tweaks
+ * --------------------------------------------------
+ */
+html,
+body {
+  overflow-x: hidden; /* Prevent scroll on narrow devices */
+}
+body {
+  padding-top: 70px;
+}
+footer {
+  padding: 30px 0;
+}
+
+/*
+ * Off Canvas
+ * --------------------------------------------------
+ */
+@media screen and (max-width: 767px) {
+  .row-offcanvas {
+    position: relative;
+    -webkit-transition: all .25s ease-out;
+         -o-transition: all .25s ease-out;
+            transition: all .25s ease-out;
+  }
+
+  .row-offcanvas-right {
+    right: 0;
+  }
+
+  .row-offcanvas-left {
+    left: 0;
+  }
+
+  .row-offcanvas-right
+  .sidebar-offcanvas {
+    right: -50%; /* 6 columns */
+  }
+
+  .row-offcanvas-left
+  .sidebar-offcanvas {
+    left: -50%; /* 6 columns */
+  }
+
+  .row-offcanvas-right.active {
+    right: 50%; /* 6 columns */
+  }
+
+  .row-offcanvas-left.active {
+    left: 50%; /* 6 columns */
+  }
+
+  .sidebar-offcanvas {
+    position: absolute;
+    top: 0;
+    width: 50%; /* 6 columns */
+  }
+}
+
+
+
+ + + \ No newline at end of file diff --git a/src/main/UploadedContent/student-lab-instructions/artifacts/spring-boot-web/syntaxhighlighter.html b/src/main/UploadedContent/student-lab-instructions/artifacts/spring-boot-web/syntaxhighlighter.html new file mode 100644 index 0000000..409969b --- /dev/null +++ b/src/main/UploadedContent/student-lab-instructions/artifacts/spring-boot-web/syntaxhighlighter.html @@ -0,0 +1,5921 @@ + + + + + + + +Untitled + + + + + + + + + + + + + + + +
+
+
syntaxhighlighter.js
+
+
/*!
+ * SyntaxHighlighter
+ * https://github.com/syntaxhighlighter/syntaxhighlighter
+ *
+ * SyntaxHighlighter is donationware. If you are using it, please donate.
+ * http://alexgorbatchev.com/SyntaxHighlighter/donate.html
+ *
+ * @version
+ * 4.0.1 (Tue, 05 Jul 2016 16:28:21 GMT)
+ *
+ * @copyright
+ * Copyright (C) 2004-2016 Alex Gorbatchev.
+ *
+ * @license
+ * Dual licensed under the MIT and GPL licenses.
+ */
+/******/ (function(modules) { // webpackBootstrap
+/******/         // The module cache
+/******/         var installedModules = {};
+/******/
+/******/         // The require function
+/******/         function __webpack_require__(moduleId) {
+/******/
+/******/                 // Check if module is in cache
+/******/                 if(installedModules[moduleId])
+/******/                         return installedModules[moduleId].exports;
+/******/
+/******/                 // Create a new module (and put it into the cache)
+/******/                 var module = installedModules[moduleId] = {
+/******/                         exports: {},
+/******/                         id: moduleId,
+/******/                         loaded: false
+/******/                 };
+/******/
+/******/                 // Execute the module function
+/******/                 modules[moduleId].call(module.exports, module, module.exports, __webpack_require__);
+/******/
+/******/                 // Flag the module as loaded
+/******/                 module.loaded = true;
+/******/
+/******/                 // Return the exports of the module
+/******/                 return module.exports;
+/******/         }
+/******/
+/******/
+/******/         // expose the modules object (__webpack_modules__)
+/******/         __webpack_require__.m = modules;
+/******/
+/******/         // expose the module cache
+/******/         __webpack_require__.c = installedModules;
+/******/
+/******/         // __webpack_public_path__
+/******/         __webpack_require__.p = "";
+/******/
+/******/         // Load entry module and return exports
+/******/         return __webpack_require__(0);
+/******/ })
+/************************************************************************/
+/******/ ([
+/* 0 */
+/***/ function(module, exports, __webpack_require__) {
+
+        'use strict';
+
+        Object.defineProperty(exports, "__esModule", {
+          value: true
+        });
+
+        var _core = __webpack_require__(1);
+
+        Object.keys(_core).forEach(function (key) {
+          if (key === "default") return;
+          Object.defineProperty(exports, key, {
+            enumerable: true,
+            get: function get() {
+              return _core[key];
+            }
+          });
+        });
+
+        var _domready = __webpack_require__(52);
+
+        var _domready2 = _interopRequireDefault(_domready);
+
+        var _core2 = _interopRequireDefault(_core);
+
+        var _dasherize = __webpack_require__(53);
+
+        var dasherize = _interopRequireWildcard(_dasherize);
+
+        function _interopRequireWildcard(obj) { if (obj && obj.__esModule) { return obj; } else { var newObj = {}; if (obj != null) { for (var key in obj) { if (Object.prototype.hasOwnProperty.call(obj, key)) newObj[key] = obj[key]; } } newObj.default = obj; return newObj; } }
+
+        function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
+
+        // configured through the `--compat` parameter.
+        if (false) {
+          require('./compatibility_layer_v3');
+        }
+
+        (0, _domready2.default)(function () {
+          return _core2.default.highlight(dasherize.object(window.syntaxhighlighterConfig || {}));
+        });
+
+/***/ },
+/* 1 */
+/***/ function(module, exports, __webpack_require__) {
+
+        'use strict';
+
+        Object.defineProperty(exports, "__esModule", {
+          value: true
+        });
+        var optsParser = __webpack_require__(2),
+            match = __webpack_require__(5),
+            Renderer = __webpack_require__(9).default,
+            utils = __webpack_require__(10),
+            transformers = __webpack_require__(11),
+            dom = __webpack_require__(17),
+            config = __webpack_require__(18),
+            defaults = __webpack_require__(19),
+            HtmlScript = __webpack_require__(20);
+
+        var sh = {
+          Match: match.Match,
+          Highlighter: __webpack_require__(22),
+
+          config: __webpack_require__(18),
+          regexLib: __webpack_require__(3).commonRegExp,
+
+          /** Internal 'global' variables. */
+          vars: {
+            discoveredBrushes: null,
+            highlighters: {}
+          },
+
+          /** This object is populated by user included external brush files. */
+          brushes: {},
+
+          /**
+           * Finds all elements on the page which should be processes by SyntaxHighlighter.
+           *
+           * @param {Object} globalParams   Optional parameters which override element's
+           *                  parameters. Only used if element is specified.
+           *
+           * @param {Object} element  Optional element to highlight. If none is
+           *              provided, all elements in the current document
+           *              are returned which qualify.
+           *
+           * @return {Array}  Returns list of <code>{ target: DOMElement, params: Object }</code> objects.
+           */
+          findElements: function findElements(globalParams, element) {
+            var elements = element ? [element] : utils.toArray(document.getElementsByTagName(sh.config.tagName)),
+                conf = sh.config,
+                result = [];
+
+            // support for <SCRIPT TYPE="syntaxhighlighter" /> feature
+            elements = elements.concat(dom.getSyntaxHighlighterScriptTags());
+
+            if (elements.length === 0) return result;
+
+            for (var i = 0, l = elements.length; i < l; i++) {
+              var item = {
+                target: elements[i],
+                // local params take precedence over globals
+                params: optsParser.defaults(optsParser.parse(elements[i].className), globalParams)
+              };
+
+              if (item.params['brush'] == null) continue;
+
+              result.push(item);
+            }
+
+            return result;
+          },
+
+          /**
+           * Shorthand to highlight all elements on the page that are marked as
+           * SyntaxHighlighter source code.
+           *
+           * @param {Object} globalParams   Optional parameters which override element's
+           *                  parameters. Only used if element is specified.
+           *
+           * @param {Object} element  Optional element to highlight. If none is
+           *              provided, all elements in the current document
+           *              are highlighted.
+           */
+          highlight: function highlight(globalParams, element) {
+            var elements = sh.findElements(globalParams, element),
+                propertyName = 'innerHTML',
+                brush = null,
+                renderer,
+                conf = sh.config;
+
+            if (elements.length === 0) return;
+
+            for (var i = 0, l = elements.length; i < l; i++) {
+              var element = elements[i],
+                  target = element.target,
+                  params = element.params,
+                  brushName = params.brush,
+                  brush,
+                  matches,
+                  code;
+
+              if (brushName == null) continue;
+
+              brush = findBrush(brushName);
+
+              if (!brush) continue;
+
+              // local params take precedence over defaults
+              params = optsParser.defaults(params || {}, defaults);
+              params = optsParser.defaults(params, config);
+
+              // Instantiate a brush
+              if (params['html-script'] == true || defaults['html-script'] == true) {
+                brush = new HtmlScript(findBrush('xml'), brush);
+                brushName = 'htmlscript';
+              } else {
+                brush = new brush();
+              }
+
+              code = target[propertyName];
+
+              // remove CDATA from <SCRIPT/> tags if it's present
+              if (conf.useScriptTags) code = stripCData(code);
+
+              // Inject title if the attribute is present
+              if ((target.title || '') != '') params.title = target.title;
+
+              params['brush'] = brushName;
+
+              code = transformers(code, params);
+              matches = match.applyRegexList(code, brush.regexList, params);
+              renderer = new Renderer(code, matches, params);
+
+              element = dom.create('div');
+              element.innerHTML = renderer.getHtml();
+
+              // id = utils.guid();
+              // element.id = highlighters.id(id);
+              // highlighters.set(id, element);
+
+              if (params.quickCode) dom.attachEvent(dom.findElement(element, '.code'), 'dblclick', dom.quickCodeHandler);
+
+              // carry over ID
+              if ((target.id || '') != '') element.id = target.id;
+
+              target.parentNode.replaceChild(element, target);
+            }
+          }
+        }; // end of sh
+
+        /**
+         * Displays an alert.
+         * @param {String} str String to display.
+         */
+        function alert(str) {
+          window.alert('SyntaxHighlighter\n\n' + str);
+        };
+
+        /**
+         * Finds a brush by its alias.
+         *
+         * @param {String} alias    Brush alias.
+         * @param {Boolean} showAlert Suppresses the alert if false.
+         * @return {Brush}        Returns bursh constructor if found, null otherwise.
+         */
+        function findBrush(alias, showAlert) {
+          var brushes = sh.vars.discoveredBrushes,
+              result = null;
+
+          if (brushes == null) {
+            brushes = {};
+
+            // Find all brushes
+            for (var brushName in sh.brushes) {
+              var brush = sh.brushes[brushName],
+                  aliases = brush.aliases;
+
+              if (aliases == null) {
+                continue;
+              }
+
+              brush.className = brush.className || brush.aliases[0];
+              brush.brushName = brush.className || brushName.toLowerCase();
+
+              for (var i = 0, l = aliases.length; i < l; i++) {
+                brushes[aliases[i]] = brushName;
+              }
+            }
+
+            sh.vars.discoveredBrushes = brushes;
+          }
+
+          result = sh.brushes[brushes[alias]];
+
+          if (result == null && showAlert) alert(sh.config.strings.noBrush + alias);
+
+          return result;
+        };
+
+        /**
+         * Strips <![CDATA[]]> from <SCRIPT /> content because it should be used
+         * there in most cases for XHTML compliance.
+         * @param {String} original Input code.
+         * @return {String} Returns code without leading <![CDATA[]]> tags.
+         */
+        function stripCData(original) {
+          var left = '<![CDATA[',
+              right = ']]>',
+
+          // for some reason IE inserts some leading blanks here
+          copy = utils.trim(original),
+              changed = false,
+              leftLength = left.length,
+              rightLength = right.length;
+
+          if (copy.indexOf(left) == 0) {
+            copy = copy.substring(leftLength);
+            changed = true;
+          }
+
+          var copyLength = copy.length;
+
+          if (copy.indexOf(right) == copyLength - rightLength) {
+            copy = copy.substring(0, copyLength - rightLength);
+            changed = true;
+          }
+
+          return changed ? copy : original;
+        };
+
+        var brushCounter = 0;
+
+        exports.default = sh;
+        var registerBrush = exports.registerBrush = function registerBrush(brush) {
+          return sh.brushes['brush' + brushCounter++] = brush.default || brush;
+        };
+        var clearRegisteredBrushes = exports.clearRegisteredBrushes = function clearRegisteredBrushes() {
+          sh.brushes = {};
+          brushCounter = 0;
+        };
+
+        /* an EJS hook for `gulp build --brushes` command
+         * */
+
+        registerBrush(__webpack_require__(23));
+
+        registerBrush(__webpack_require__(24));
+
+        registerBrush(__webpack_require__(22));
+
+        registerBrush(__webpack_require__(25));
+
+        registerBrush(__webpack_require__(26));
+
+        registerBrush(__webpack_require__(27));
+
+        registerBrush(__webpack_require__(28));
+
+        registerBrush(__webpack_require__(29));
+
+        registerBrush(__webpack_require__(30));
+
+        registerBrush(__webpack_require__(31));
+
+        registerBrush(__webpack_require__(32));
+
+        registerBrush(__webpack_require__(33));
+
+        registerBrush(__webpack_require__(34));
+
+        registerBrush(__webpack_require__(35));
+
+        registerBrush(__webpack_require__(36));
+
+        registerBrush(__webpack_require__(37));
+
+        registerBrush(__webpack_require__(38));
+
+        registerBrush(__webpack_require__(39));
+
+        registerBrush(__webpack_require__(40));
+
+        registerBrush(__webpack_require__(41));
+
+        registerBrush(__webpack_require__(42));
+
+        registerBrush(__webpack_require__(43));
+
+        registerBrush(__webpack_require__(44));
+
+        registerBrush(__webpack_require__(45));
+
+        registerBrush(__webpack_require__(46));
+
+        registerBrush(__webpack_require__(47));
+
+        registerBrush(__webpack_require__(48));
+
+        registerBrush(__webpack_require__(49));
+
+        registerBrush(__webpack_require__(50));
+
+        registerBrush(__webpack_require__(51));
+
+        /*
+
+         */
+
+/***/ },
+/* 2 */
+/***/ function(module, exports, __webpack_require__) {
+
+        'use strict';
+
+        var XRegExp = __webpack_require__(3).XRegExp;
+
+        var BOOLEANS = { 'true': true, 'false': false };
+
+        function camelize(key) {
+          return key.replace(/-(\w+)/g, function (match, word) {
+            return word.charAt(0).toUpperCase() + word.substr(1);
+          });
+        }
+
+        function process(value) {
+          var result = BOOLEANS[value];
+          return result == null ? value : result;
+        }
+
+        module.exports = {
+          defaults: function defaults(target, source) {
+            for (var key in source || {}) {
+              if (!target.hasOwnProperty(key)) target[key] = target[camelize(key)] = source[key];
+            }return target;
+          },
+
+          parse: function parse(str) {
+            var match,
+                key,
+                result = {},
+                arrayRegex = XRegExp("^\\[(?<values>(.*?))\\]$"),
+                pos = 0,
+                regex = XRegExp("(?<name>[\\w-]+)" + "\\s*:\\s*" + "(?<value>" + "[\\w%#-]+|" + // word
+            "\\[.*?\\]|" + // [] array
+            '".*?"|' + // "" string
+            "'.*?'" + // '' string
+            ")\\s*;?", "g");
+
+            while ((match = XRegExp.exec(str, regex, pos)) != null) {
+              var value = match.value.replace(/^['"]|['"]$/g, '') // strip quotes from end of strings
+              ;
+
+              // try to parse array value
+              if (value != null && arrayRegex.test(value)) {
+                var m = XRegExp.exec(value, arrayRegex);
+                value = m.values.length > 0 ? m.values.split(/\s*,\s*/) : [];
+              }
+
+              value = process(value);
+              result[match.name] = result[camelize(match.name)] = value;
+              pos = match.index + match[0].length;
+            }
+
+            return result;
+          }
+        };
+
+/***/ },
+/* 3 */
+/***/ function(module, exports, __webpack_require__) {
+
+        'use strict';
+
+        Object.defineProperty(exports, "__esModule", {
+          value: true
+        });
+        exports.commonRegExp = exports.XRegExp = undefined;
+
+        var _xregexp = __webpack_require__(4);
+
+        var _xregexp2 = _interopRequireDefault(_xregexp);
+
+        function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
+
+        exports.XRegExp = _xregexp2.default;
+        var commonRegExp = exports.commonRegExp = {
+          multiLineCComments: (0, _xregexp2.default)('/\\*.*?\\*/', 'gs'),
+          singleLineCComments: /\/\/.*$/gm,
+          singleLinePerlComments: /#.*$/gm,
+          doubleQuotedString: /"([^\\"\n]|\\.)*"/g,
+          singleQuotedString: /'([^\\'\n]|\\.)*'/g,
+          multiLineDoubleQuotedString: (0, _xregexp2.default)('"([^\\\\"]|\\\\.)*"', 'gs'),
+          multiLineSingleQuotedString: (0, _xregexp2.default)("'([^\\\\']|\\\\.)*'", 'gs'),
+          xmlComments: (0, _xregexp2.default)('(&lt;|<)!--.*?--(&gt;|>)', 'gs'),
+          url: /\w+:\/\/[\w-.\/?%&=:@;#]*/g,
+          phpScriptTags: { left: /(&lt;|<)\?(?:=|php)?/g, right: /\?(&gt;|>)/g, 'eof': true },
+          aspScriptTags: { left: /(&lt;|<)%=?/g, right: /%(&gt;|>)/g },
+          scriptScriptTags: { left: /(&lt;|<)\s*script.*?(&gt;|>)/gi, right: /(&lt;|<)\/\s*script\s*(&gt;|>)/gi }
+        };
+
+/***/ },
+/* 4 */
+/***/ function(module, exports) {
+
+        /*!
+         * XRegExp 3.1.0-dev
+         * <xregexp.com>
+         * Steven Levithan (c) 2007-2015 MIT License
+         */
+
+        /**
+         * XRegExp provides augmented, extensible regular expressions. You get additional regex syntax and
+         * flags, beyond what browsers support natively. XRegExp is also a regex utility belt with tools to
+         * make your client-side grepping simpler and more powerful, while freeing you from related
+         * cross-browser inconsistencies.
+         */
+
+        'use strict';
+
+        /* ==============================
+         * Private variables
+         * ============================== */
+
+        // Property name used for extended regex instance data
+
+        var REGEX_DATA = 'xregexp';
+        // Optional features that can be installed and uninstalled
+        var features = {
+            astral: false,
+            natives: false
+        };
+        // Native methods to use and restore ('native' is an ES3 reserved keyword)
+        var nativ = {
+            exec: RegExp.prototype.exec,
+            test: RegExp.prototype.test,
+            match: String.prototype.match,
+            replace: String.prototype.replace,
+            split: String.prototype.split
+        };
+        // Storage for fixed/extended native methods
+        var fixed = {};
+        // Storage for regexes cached by `XRegExp.cache`
+        var regexCache = {};
+        // Storage for pattern details cached by the `XRegExp` constructor
+        var patternCache = {};
+        // Storage for regex syntax tokens added internally or by `XRegExp.addToken`
+        var tokens = [];
+        // Token scopes
+        var defaultScope = 'default';
+        var classScope = 'class';
+        // Regexes that match native regex syntax, including octals
+        var nativeTokens = {
+            // Any native multicharacter token in default scope, or any single character
+            'default': /\\(?:0(?:[0-3][0-7]{0,2}|[4-7][0-7]?)?|[1-9]\d*|x[\dA-Fa-f]{2}|u(?:[\dA-Fa-f]{4}|{[\dA-Fa-f]+})|c[A-Za-z]|[\s\S])|\(\?[:=!]|[?*+]\?|{\d+(?:,\d*)?}\??|[\s\S]/,
+            // Any native multicharacter token in character class scope, or any single character
+            'class': /\\(?:[0-3][0-7]{0,2}|[4-7][0-7]?|x[\dA-Fa-f]{2}|u(?:[\dA-Fa-f]{4}|{[\dA-Fa-f]+})|c[A-Za-z]|[\s\S])|[\s\S]/
+        };
+        // Any backreference or dollar-prefixed character in replacement strings
+        var replacementToken = /\$(?:{([\w$]+)}|(\d\d?|[\s\S]))/g;
+        // Check for correct `exec` handling of nonparticipating capturing groups
+        var correctExecNpcg = nativ.exec.call(/()??/, '')[1] === undefined;
+        // Check for ES6 `u` flag support
+        var hasNativeU = function () {
+            var isSupported = true;
+            try {
+                new RegExp('', 'u');
+            } catch (exception) {
+                isSupported = false;
+            }
+            return isSupported;
+        }();
+        // Check for ES6 `y` flag support
+        var hasNativeY = function () {
+            var isSupported = true;
+            try {
+                new RegExp('', 'y');
+            } catch (exception) {
+                isSupported = false;
+            }
+            return isSupported;
+        }();
+        // Check for ES6 `flags` prop support
+        var hasFlagsProp = /a/.flags !== undefined;
+        // Tracker for known flags, including addon flags
+        var registeredFlags = {
+            g: true,
+            i: true,
+            m: true,
+            u: hasNativeU,
+            y: hasNativeY
+        };
+        // Shortcut to `Object.prototype.toString`
+        var toString = {}.toString;
+
+        /* ==============================
+         * Private functions
+         * ============================== */
+
+        /**
+         * Attaches extended data and `XRegExp.prototype` properties to a regex object.
+         *
+         * @private
+         * @param {RegExp} regex Regex to augment.
+         * @param {Array} captureNames Array with capture names, or `null`.
+         * @param {String} xSource XRegExp pattern used to generate `regex`, or `null` if N/A.
+         * @param {String} xFlags XRegExp flags used to generate `regex`, or `null` if N/A.
+         * @param {Boolean} [isInternalOnly=false] Whether the regex will be used only for internal
+         *   operations, and never exposed to users. For internal-only regexes, we can improve perf by
+         *   skipping some operations like attaching `XRegExp.prototype` properties.
+         * @returns {RegExp} Augmented regex.
+         */
+        function augment(regex, captureNames, xSource, xFlags, isInternalOnly) {
+            var p;
+
+            regex[REGEX_DATA] = {
+                captureNames: captureNames
+            };
+
+            if (isInternalOnly) {
+                return regex;
+            }
+
+            // Can't auto-inherit these since the XRegExp constructor returns a nonprimitive value
+            if (regex.__proto__) {
+                regex.__proto__ = XRegExp.prototype;
+            } else {
+                for (p in XRegExp.prototype) {
+                    // An `XRegExp.prototype.hasOwnProperty(p)` check wouldn't be worth it here, since
+                    // this is performance sensitive, and enumerable `Object.prototype` or
+                    // `RegExp.prototype` extensions exist on `regex.prototype` anyway
+                    regex[p] = XRegExp.prototype[p];
+                }
+            }
+
+            regex[REGEX_DATA].source = xSource;
+            // Emulate the ES6 `flags` prop by ensuring flags are in alphabetical order
+            regex[REGEX_DATA].flags = xFlags ? xFlags.split('').sort().join('') : xFlags;
+
+            return regex;
+        }
+
+        /**
+         * Removes any duplicate characters from the provided string.
+         *
+         * @private
+         * @param {String} str String to remove duplicate characters from.
+         * @returns {String} String with any duplicate characters removed.
+         */
+        function clipDuplicates(str) {
+            return nativ.replace.call(str, /([\s\S])(?=[\s\S]*\1)/g, '');
+        }
+
+        /**
+         * Copies a regex object while preserving extended data and augmenting with `XRegExp.prototype`
+         * properties. The copy has a fresh `lastIndex` property (set to zero). Allows adding and removing
+         * flags g and y while copying the regex.
+         *
+         * @private
+         * @param {RegExp} regex Regex to copy.
+         * @param {Object} [options] Options object with optional properties:
+         *   <li>`addG` {Boolean} Add flag g while copying the regex.
+         *   <li>`addY` {Boolean} Add flag y while copying the regex.
+         *   <li>`removeG` {Boolean} Remove flag g while copying the regex.
+         *   <li>`removeY` {Boolean} Remove flag y while copying the regex.
+         *   <li>`isInternalOnly` {Boolean} Whether the copied regex will be used only for internal
+         *     operations, and never exposed to users. For internal-only regexes, we can improve perf by
+         *     skipping some operations like attaching `XRegExp.prototype` properties.
+         * @returns {RegExp} Copy of the provided regex, possibly with modified flags.
+         */
+        function copyRegex(regex, options) {
+            if (!XRegExp.isRegExp(regex)) {
+                throw new TypeError('Type RegExp expected');
+            }
+
+            var xData = regex[REGEX_DATA] || {},
+                flags = getNativeFlags(regex),
+                flagsToAdd = '',
+                flagsToRemove = '',
+                xregexpSource = null,
+                xregexpFlags = null;
+
+            options = options || {};
+
+            if (options.removeG) {
+                flagsToRemove += 'g';
+            }
+            if (options.removeY) {
+                flagsToRemove += 'y';
+            }
+            if (flagsToRemove) {
+                flags = nativ.replace.call(flags, new RegExp('[' + flagsToRemove + ']+', 'g'), '');
+            }
+
+            if (options.addG) {
+                flagsToAdd += 'g';
+            }
+            if (options.addY) {
+                flagsToAdd += 'y';
+            }
+            if (flagsToAdd) {
+                flags = clipDuplicates(flags + flagsToAdd);
+            }
+
+            if (!options.isInternalOnly) {
+                if (xData.source !== undefined) {
+                    xregexpSource = xData.source;
+                }
+                // null or undefined; don't want to add to `flags` if the previous value was null, since
+                // that indicates we're not tracking original precompilation flags
+                if (xData.flags != null) {
+                    // Flags are only added for non-internal regexes by `XRegExp.globalize`. Flags are
+                    // never removed for non-internal regexes, so don't need to handle it
+                    xregexpFlags = flagsToAdd ? clipDuplicates(xData.flags + flagsToAdd) : xData.flags;
+                }
+            }
+
+            // Augment with `XRegExp.prototype` properties, but use the native `RegExp` constructor to
+            // avoid searching for special tokens. That would be wrong for regexes constructed by
+            // `RegExp`, and unnecessary for regexes constructed by `XRegExp` because the regex has
+            // already undergone the translation to native regex syntax
+            regex = augment(new RegExp(regex.source, flags), hasNamedCapture(regex) ? xData.captureNames.slice(0) : null, xregexpSource, xregexpFlags, options.isInternalOnly);
+
+            return regex;
+        }
+
+        /**
+         * Converts hexadecimal to decimal.
+         *
+         * @private
+         * @param {String} hex
+         * @returns {Number}
+         */
+        function dec(hex) {
+            return parseInt(hex, 16);
+        }
+
+        /**
+         * Returns native `RegExp` flags used by a regex object.
+         *
+         * @private
+         * @param {RegExp} regex Regex to check.
+         * @returns {String} Native flags in use.
+         */
+        function getNativeFlags(regex) {
+            return hasFlagsProp ? regex.flags :
+            // Explicitly using `RegExp.prototype.toString` (rather than e.g. `String` or
+            // concatenation with an empty string) allows this to continue working predictably when
+            // `XRegExp.proptotype.toString` is overriden
+            nativ.exec.call(/\/([a-z]*)$/i, RegExp.prototype.toString.call(regex))[1];
+        }
+
+        /**
+         * Determines whether a regex has extended instance data used to track capture names.
+         *
+         * @private
+         * @param {RegExp} regex Regex to check.
+         * @returns {Boolean} Whether the regex uses named capture.
+         */
+        function hasNamedCapture(regex) {
+            return !!(regex[REGEX_DATA] && regex[REGEX_DATA].captureNames);
+        }
+
+        /**
+         * Converts decimal to hexadecimal.
+         *
+         * @private
+         * @param {Number|String} dec
+         * @returns {String}
+         */
+        function hex(dec) {
+            return parseInt(dec, 10).toString(16);
+        }
+
+        /**
+         * Returns the first index at which a given value can be found in an array.
+         *
+         * @private
+         * @param {Array} array Array to search.
+         * @param {*} value Value to locate in the array.
+         * @returns {Number} Zero-based index at which the item is found, or -1.
+         */
+        function indexOf(array, value) {
+            var len = array.length,
+                i;
+
+            for (i = 0; i < len; ++i) {
+                if (array[i] === value) {
+                    return i;
+                }
+            }
+
+            return -1;
+        }
+
+        /**
+         * Determines whether a value is of the specified type, by resolving its internal [[Class]].
+         *
+         * @private
+         * @param {*} value Object to check.
+         * @param {String} type Type to check for, in TitleCase.
+         * @returns {Boolean} Whether the object matches the type.
+         */
+        function isType(value, type) {
+            return toString.call(value) === '[object ' + type + ']';
+        }
+
+        /**
+         * Checks whether the next nonignorable token after the specified position is a quantifier.
+         *
+         * @private
+         * @param {String} pattern Pattern to search within.
+         * @param {Number} pos Index in `pattern` to search at.
+         * @param {String} flags Flags used by the pattern.
+         * @returns {Boolean} Whether the next token is a quantifier.
+         */
+        function isQuantifierNext(pattern, pos, flags) {
+            return nativ.test.call(flags.indexOf('x') > -1 ?
+            // Ignore any leading whitespace, line comments, and inline comments
+            /^(?:\s+|#.*|\(\?#[^)]*\))*(?:[?*+]|{\d+(?:,\d*)?})/ :
+            // Ignore any leading inline comments
+            /^(?:\(\?#[^)]*\))*(?:[?*+]|{\d+(?:,\d*)?})/, pattern.slice(pos));
+        }
+
+        /**
+         * Pads the provided string with as many leading zeros as needed to get to length 4. Used to produce
+         * fixed-length hexadecimal values.
+         *
+         * @private
+         * @param {String} str
+         * @returns {String}
+         */
+        function pad4(str) {
+            while (str.length < 4) {
+                str = '0' + str;
+            }
+            return str;
+        }
+
+        /**
+         * Checks for flag-related errors, and strips/applies flags in a leading mode modifier. Offloads
+         * the flag preparation logic from the `XRegExp` constructor.
+         *
+         * @private
+         * @param {String} pattern Regex pattern, possibly with a leading mode modifier.
+         * @param {String} flags Any combination of flags.
+         * @returns {Object} Object with properties `pattern` and `flags`.
+         */
+        function prepareFlags(pattern, flags) {
+            var i;
+
+            // Recent browsers throw on duplicate flags, so copy this behavior for nonnative flags
+            if (clipDuplicates(flags) !== flags) {
+                throw new SyntaxError('Invalid duplicate regex flag ' + flags);
+            }
+
+            // Strip and apply a leading mode modifier with any combination of flags except g or y
+            pattern = nativ.replace.call(pattern, /^\(\?([\w$]+)\)/, function ($0, $1) {
+                if (nativ.test.call(/[gy]/, $1)) {
+                    throw new SyntaxError('Cannot use flag g or y in mode modifier ' + $0);
+                }
+                // Allow duplicate flags within the mode modifier
+                flags = clipDuplicates(flags + $1);
+                return '';
+            });
+
+            // Throw on unknown native or nonnative flags
+            for (i = 0; i < flags.length; ++i) {
+                if (!registeredFlags[flags.charAt(i)]) {
+                    throw new SyntaxError('Unknown regex flag ' + flags.charAt(i));
+                }
+            }
+
+            return {
+                pattern: pattern,
+                flags: flags
+            };
+        }
+
+        /**
+         * Prepares an options object from the given value.
+         *
+         * @private
+         * @param {String|Object} value Value to convert to an options object.
+         * @returns {Object} Options object.
+         */
+        function prepareOptions(value) {
+            var options = {};
+
+            if (isType(value, 'String')) {
+                XRegExp.forEach(value, /[^\s,]+/, function (match) {
+                    options[match] = true;
+                });
+
+                return options;
+            }
+
+            return value;
+        }
+
+        /**
+         * Registers a flag so it doesn't throw an 'unknown flag' error.
+         *
+         * @private
+         * @param {String} flag Single-character flag to register.
+         */
+        function registerFlag(flag) {
+            if (!/^[\w$]$/.test(flag)) {
+                throw new Error('Flag must be a single character A-Za-z0-9_$');
+            }
+
+            registeredFlags[flag] = true;
+        }
+
+        /**
+         * Runs built-in and custom regex syntax tokens in reverse insertion order at the specified
+         * position, until a match is found.
+         *
+         * @private
+         * @param {String} pattern Original pattern from which an XRegExp object is being built.
+         * @param {String} flags Flags being used to construct the regex.
+         * @param {Number} pos Position to search for tokens within `pattern`.
+         * @param {Number} scope Regex scope to apply: 'default' or 'class'.
+         * @param {Object} context Context object to use for token handler functions.
+         * @returns {Object} Object with properties `matchLength`, `output`, and `reparse`; or `null`.
+         */
+        function runTokens(pattern, flags, pos, scope, context) {
+            var i = tokens.length,
+                leadChar = pattern.charAt(pos),
+                result = null,
+                match,
+                t;
+
+            // Run in reverse insertion order
+            while (i--) {
+                t = tokens[i];
+                if (t.leadChar && t.leadChar !== leadChar || t.scope !== scope && t.scope !== 'all' || t.flag && flags.indexOf(t.flag) === -1) {
+                    continue;
+                }
+
+                match = XRegExp.exec(pattern, t.regex, pos, 'sticky');
+                if (match) {
+                    result = {
+                        matchLength: match[0].length,
+                        output: t.handler.call(context, match, scope, flags),
+                        reparse: t.reparse
+                    };
+                    // Finished with token tests
+                    break;
+                }
+            }
+
+            return result;
+        }
+
+        /**
+         * Enables or disables implicit astral mode opt-in. When enabled, flag A is automatically added to
+         * all new regexes created by XRegExp. This causes an error to be thrown when creating regexes if
+         * the Unicode Base addon is not available, since flag A is registered by that addon.
+         *
+         * @private
+         * @param {Boolean} on `true` to enable; `false` to disable.
+         */
+        function setAstral(on) {
+            features.astral = on;
+        }
+
+        /**
+         * Enables or disables native method overrides.
+         *
+         * @private
+         * @param {Boolean} on `true` to enable; `false` to disable.
+         */
+        function setNatives(on) {
+            RegExp.prototype.exec = (on ? fixed : nativ).exec;
+            RegExp.prototype.test = (on ? fixed : nativ).test;
+            String.prototype.match = (on ? fixed : nativ).match;
+            String.prototype.replace = (on ? fixed : nativ).replace;
+            String.prototype.split = (on ? fixed : nativ).split;
+
+            features.natives = on;
+        }
+
+        /**
+         * Returns the object, or throws an error if it is `null` or `undefined`. This is used to follow
+         * the ES5 abstract operation `ToObject`.
+         *
+         * @private
+         * @param {*} value Object to check and return.
+         * @returns {*} The provided object.
+         */
+        function toObject(value) {
+            // null or undefined
+            if (value == null) {
+                throw new TypeError('Cannot convert null or undefined to object');
+            }
+
+            return value;
+        }
+
+        /* ==============================
+         * Constructor
+         * ============================== */
+
+        /**
+         * Creates an extended regular expression object for matching text with a pattern. Differs from a
+         * native regular expression in that additional syntax and flags are supported. The returned object
+         * is in fact a native `RegExp` and works with all native methods.
+         *
+         * @class XRegExp
+         * @constructor
+         * @param {String|RegExp} pattern Regex pattern string, or an existing regex object to copy.
+         * @param {String} [flags] Any combination of flags.
+         *   Native flags:
+         *     <li>`g` - global
+         *     <li>`i` - ignore case
+         *     <li>`m` - multiline anchors
+         *     <li>`u` - unicode (ES6)
+         *     <li>`y` - sticky (Firefox 3+, ES6)
+         *   Additional XRegExp flags:
+         *     <li>`n` - explicit capture
+         *     <li>`s` - dot matches all (aka singleline)
+         *     <li>`x` - free-spacing and line comments (aka extended)
+         *     <li>`A` - astral (requires the Unicode Base addon)
+         *   Flags cannot be provided when constructing one `RegExp` from another.
+         * @returns {RegExp} Extended regular expression object.
+         * @example
+         *
+         * // With named capture and flag x
+         * XRegExp('(?<year>  [0-9]{4} ) -?  # year  \n\
+         *          (?<month> [0-9]{2} ) -?  # month \n\
+         *          (?<day>   [0-9]{2} )     # day   ', 'x');
+         *
+         * // Providing a regex object copies it. Native regexes are recompiled using native (not XRegExp)
+         * // syntax. Copies maintain extended data, are augmented with `XRegExp.prototype` properties, and
+         * // have fresh `lastIndex` properties (set to zero).
+         * XRegExp(/regex/);
+         */
+        function XRegExp(pattern, flags) {
+            var context = {
+                hasNamedCapture: false,
+                captureNames: []
+            },
+                scope = defaultScope,
+                output = '',
+                pos = 0,
+                result,
+                token,
+                generated,
+                appliedPattern,
+                appliedFlags;
+
+            if (XRegExp.isRegExp(pattern)) {
+                if (flags !== undefined) {
+                    throw new TypeError('Cannot supply flags when copying a RegExp');
+                }
+                return copyRegex(pattern);
+            }
+
+            // Copy the argument behavior of `RegExp`
+            pattern = pattern === undefined ? '' : String(pattern);
+            flags = flags === undefined ? '' : String(flags);
+
+            if (XRegExp.isInstalled('astral') && flags.indexOf('A') === -1) {
+                // This causes an error to be thrown if the Unicode Base addon is not available
+                flags += 'A';
+            }
+
+            if (!patternCache[pattern]) {
+                patternCache[pattern] = {};
+            }
+
+            if (!patternCache[pattern][flags]) {
+                // Check for flag-related errors, and strip/apply flags in a leading mode modifier
+                result = prepareFlags(pattern, flags);
+                appliedPattern = result.pattern;
+                appliedFlags = result.flags;
+
+                // Use XRegExp's tokens to translate the pattern to a native regex pattern.
+                // `appliedPattern.length` may change on each iteration if tokens use `reparse`
+                while (pos < appliedPattern.length) {
+                    do {
+                        // Check for custom tokens at the current position
+                        result = runTokens(appliedPattern, appliedFlags, pos, scope, context);
+                        // If the matched token used the `reparse` option, splice its output into the
+                        // pattern before running tokens again at the same position
+                        if (result && result.reparse) {
+                            appliedPattern = appliedPattern.slice(0, pos) + result.output + appliedPattern.slice(pos + result.matchLength);
+                        }
+                    } while (result && result.reparse);
+
+                    if (result) {
+                        output += result.output;
+                        pos += result.matchLength || 1;
+                    } else {
+                        // Get the native token at the current position
+                        token = XRegExp.exec(appliedPattern, nativeTokens[scope], pos, 'sticky')[0];
+                        output += token;
+                        pos += token.length;
+                        if (token === '[' && scope === defaultScope) {
+                            scope = classScope;
+                        } else if (token === ']' && scope === classScope) {
+                            scope = defaultScope;
+                        }
+                    }
+                }
+
+                patternCache[pattern][flags] = {
+                    // Cleanup token cruft: repeated `(?:)(?:)` and leading/trailing `(?:)`
+                    pattern: nativ.replace.call(output, /\(\?:\)(?:[*+?]|\{\d+(?:,\d*)?})?\??(?=\(\?:\))|^\(\?:\)(?:[*+?]|\{\d+(?:,\d*)?})?\??|\(\?:\)(?:[*+?]|\{\d+(?:,\d*)?})?\??$/g, ''),
+                    // Strip all but native flags
+                    flags: nativ.replace.call(appliedFlags, /[^gimuy]+/g, ''),
+                    // `context.captureNames` has an item for each capturing group, even if unnamed
+                    captures: context.hasNamedCapture ? context.captureNames : null
+                };
+            }
+
+            generated = patternCache[pattern][flags];
+            return augment(new RegExp(generated.pattern, generated.flags), generated.captures, pattern, flags);
+        };
+
+        // Add `RegExp.prototype` to the prototype chain
+        XRegExp.prototype = new RegExp();
+
+        /* ==============================
+         * Public properties
+         * ============================== */
+
+        /**
+         * The XRegExp version number as a string containing three dot-separated parts. For example,
+         * '2.0.0-beta-3'.
+         *
+         * @static
+         * @memberOf XRegExp
+         * @type String
+         */
+        XRegExp.version = '3.1.0-dev';
+
+        /* ==============================
+         * Public methods
+         * ============================== */
+
+        /**
+         * Extends XRegExp syntax and allows custom flags. This is used internally and can be used to
+         * create XRegExp addons. If more than one token can match the same string, the last added wins.
+         *
+         * @memberOf XRegExp
+         * @param {RegExp} regex Regex object that matches the new token.
+         * @param {Function} handler Function that returns a new pattern string (using native regex syntax)
+         *   to replace the matched token within all future XRegExp regexes. Has access to persistent
+         *   properties of the regex being built, through `this`. Invoked with three arguments:
+         *   <li>The match array, with named backreference properties.
+         *   <li>The regex scope where the match was found: 'default' or 'class'.
+         *   <li>The flags used by the regex, including any flags in a leading mode modifier.
+         *   The handler function becomes part of the XRegExp construction process, so be careful not to
+         *   construct XRegExps within the function or you will trigger infinite recursion.
+         * @param {Object} [options] Options object with optional properties:
+         *   <li>`scope` {String} Scope where the token applies: 'default', 'class', or 'all'.
+         *   <li>`flag` {String} Single-character flag that triggers the token. This also registers the
+         *     flag, which prevents XRegExp from throwing an 'unknown flag' error when the flag is used.
+         *   <li>`optionalFlags` {String} Any custom flags checked for within the token `handler` that are
+         *     not required to trigger the token. This registers the flags, to prevent XRegExp from
+         *     throwing an 'unknown flag' error when any of the flags are used.
+         *   <li>`reparse` {Boolean} Whether the `handler` function's output should not be treated as
+         *     final, and instead be reparseable by other tokens (including the current token). Allows
+         *     token chaining or deferring.
+         *   <li>`leadChar` {String} Single character that occurs at the beginning of any successful match
+         *     of the token (not always applicable). This doesn't change the behavior of the token unless
+         *     you provide an erroneous value. However, providing it can increase the token's performance
+         *     since the token can be skipped at any positions where this character doesn't appear.
+         * @example
+         *
+         * // Basic usage: Add \a for the ALERT control code
+         * XRegExp.addToken(
+         *   /\\a/,
+         *   function() {return '\\x07';},
+         *   {scope: 'all'}
+         * );
+         * XRegExp('\\a[\\a-\\n]+').test('\x07\n\x07'); // -> true
+         *
+         * // Add the U (ungreedy) flag from PCRE and RE2, which reverses greedy and lazy quantifiers.
+         * // Since `scope` is not specified, it uses 'default' (i.e., transformations apply outside of
+         * // character classes only)
+         * XRegExp.addToken(
+         *   /([?*+]|{\d+(?:,\d*)?})(\??)/,
+         *   function(match) {return match[1] + (match[2] ? '' : '?');},
+         *   {flag: 'U'}
+         * );
+         * XRegExp('a+', 'U').exec('aaa')[0]; // -> 'a'
+         * XRegExp('a+?', 'U').exec('aaa')[0]; // -> 'aaa'
+         */
+        XRegExp.addToken = function (regex, handler, options) {
+            options = options || {};
+            var optionalFlags = options.optionalFlags,
+                i;
+
+            if (options.flag) {
+                registerFlag(options.flag);
+            }
+
+            if (optionalFlags) {
+                optionalFlags = nativ.split.call(optionalFlags, '');
+                for (i = 0; i < optionalFlags.length; ++i) {
+                    registerFlag(optionalFlags[i]);
+                }
+            }
+
+            // Add to the private list of syntax tokens
+            tokens.push({
+                regex: copyRegex(regex, {
+                    addG: true,
+                    addY: hasNativeY,
+                    isInternalOnly: true
+                }),
+                handler: handler,
+                scope: options.scope || defaultScope,
+                flag: options.flag,
+                reparse: options.reparse,
+                leadChar: options.leadChar
+            });
+
+            // Reset the pattern cache used by the `XRegExp` constructor, since the same pattern and
+            // flags might now produce different results
+            XRegExp.cache.flush('patterns');
+        };
+
+        /**
+         * Caches and returns the result of calling `XRegExp(pattern, flags)`. On any subsequent call with
+         * the same pattern and flag combination, the cached copy of the regex is returned.
+         *
+         * @memberOf XRegExp
+         * @param {String} pattern Regex pattern string.
+         * @param {String} [flags] Any combination of XRegExp flags.
+         * @returns {RegExp} Cached XRegExp object.
+         * @example
+         *
+         * while (match = XRegExp.cache('.', 'gs').exec(str)) {
+         *   // The regex is compiled once only
+         * }
+         */
+        XRegExp.cache = function (pattern, flags) {
+            if (!regexCache[pattern]) {
+                regexCache[pattern] = {};
+            }
+            return regexCache[pattern][flags] || (regexCache[pattern][flags] = XRegExp(pattern, flags));
+        };
+
+        // Intentionally undocumented
+        XRegExp.cache.flush = function (cacheName) {
+            if (cacheName === 'patterns') {
+                // Flush the pattern cache used by the `XRegExp` constructor
+                patternCache = {};
+            } else {
+                // Flush the regex cache populated by `XRegExp.cache`
+                regexCache = {};
+            }
+        };
+
+        /**
+         * Escapes any regular expression metacharacters, for use when matching literal strings. The result
+         * can safely be used at any point within a regex that uses any flags.
+         *
+         * @memberOf XRegExp
+         * @param {String} str String to escape.
+         * @returns {String} String with regex metacharacters escaped.
+         * @example
+         *
+         * XRegExp.escape('Escaped? <.>');
+         * // -> 'Escaped\?\ <\.>'
+         */
+        XRegExp.escape = function (str) {
+            return nativ.replace.call(toObject(str), /[-[\]{}()*+?.,\\^$|#\s]/g, '\\$&');
+        };
+
+        /**
+         * Executes a regex search in a specified string. Returns a match array or `null`. If the provided
+         * regex uses named capture, named backreference properties are included on the match array.
+         * Optional `pos` and `sticky` arguments specify the search start position, and whether the match
+         * must start at the specified position only. The `lastIndex` property of the provided regex is not
+         * used, but is updated for compatibility. Also fixes browser bugs compared to the native
+         * `RegExp.prototype.exec` and can be used reliably cross-browser.
+         *
+         * @memberOf XRegExp
+         * @param {String} str String to search.
+         * @param {RegExp} regex Regex to search with.
+         * @param {Number} [pos=0] Zero-based index at which to start the search.
+         * @param {Boolean|String} [sticky=false] Whether the match must start at the specified position
+         *   only. The string `'sticky'` is accepted as an alternative to `true`.
+         * @returns {Array} Match array with named backreference properties, or `null`.
+         * @example
+         *
+         * // Basic use, with named backreference
+         * var match = XRegExp.exec('U+2620', XRegExp('U\\+(?<hex>[0-9A-F]{4})'));
+         * match.hex; // -> '2620'
+         *
+         * // With pos and sticky, in a loop
+         * var pos = 2, result = [], match;
+         * while (match = XRegExp.exec('<1><2><3><4>5<6>', /<(\d)>/, pos, 'sticky')) {
+         *   result.push(match[1]);
+         *   pos = match.index + match[0].length;
+         * }
+         * // result -> ['2', '3', '4']
+         */
+        XRegExp.exec = function (str, regex, pos, sticky) {
+            var cacheKey = 'g',
+                addY = false,
+                match,
+                r2;
+
+            addY = hasNativeY && !!(sticky || regex.sticky && sticky !== false);
+            if (addY) {
+                cacheKey += 'y';
+            }
+
+            regex[REGEX_DATA] = regex[REGEX_DATA] || {};
+
+            // Shares cached copies with `XRegExp.match`/`replace`
+            r2 = regex[REGEX_DATA][cacheKey] || (regex[REGEX_DATA][cacheKey] = copyRegex(regex, {
+                addG: true,
+                addY: addY,
+                removeY: sticky === false,
+                isInternalOnly: true
+            }));
+
+            r2.lastIndex = pos = pos || 0;
+
+            // Fixed `exec` required for `lastIndex` fix, named backreferences, etc.
+            match = fixed.exec.call(r2, str);
+
+            if (sticky && match && match.index !== pos) {
+                match = null;
+            }
+
+            if (regex.global) {
+                regex.lastIndex = match ? r2.lastIndex : 0;
+            }
+
+            return match;
+        };
+
+        /**
+         * Executes a provided function once per regex match. Searches always start at the beginning of the
+         * string and continue until the end, regardless of the state of the regex's `global` property and
+         * initial `lastIndex`.
+         *
+         * @memberOf XRegExp
+         * @param {String} str String to search.
+         * @param {RegExp} regex Regex to search with.
+         * @param {Function} callback Function to execute for each match. Invoked with four arguments:
+         *   <li>The match array, with named backreference properties.
+         *   <li>The zero-based match index.
+         *   <li>The string being traversed.
+         *   <li>The regex object being used to traverse the string.
+         * @example
+         *
+         * // Extracts every other digit from a string
+         * var evens = [];
+         * XRegExp.forEach('1a2345', /\d/, function(match, i) {
+         *   if (i % 2) evens.push(+match[0]);
+         * });
+         * // evens -> [2, 4]
+         */
+        XRegExp.forEach = function (str, regex, callback) {
+            var pos = 0,
+                i = -1,
+                match;
+
+            while (match = XRegExp.exec(str, regex, pos)) {
+                // Because `regex` is provided to `callback`, the function could use the deprecated/
+                // nonstandard `RegExp.prototype.compile` to mutate the regex. However, since
+                // `XRegExp.exec` doesn't use `lastIndex` to set the search position, this can't lead
+                // to an infinite loop, at least. Actually, because of the way `XRegExp.exec` caches
+                // globalized versions of regexes, mutating the regex will not have any effect on the
+                // iteration or matched strings, which is a nice side effect that brings extra safety
+                callback(match, ++i, str, regex);
+
+                pos = match.index + (match[0].length || 1);
+            }
+        };
+
+        /**
+         * Copies a regex object and adds flag `g`. The copy maintains extended data, is augmented with
+         * `XRegExp.prototype` properties, and has a fresh `lastIndex` property (set to zero). Native
+         * regexes are not recompiled using XRegExp syntax.
+         *
+         * @memberOf XRegExp
+         * @param {RegExp} regex Regex to globalize.
+         * @returns {RegExp} Copy of the provided regex with flag `g` added.
+         * @example
+         *
+         * var globalCopy = XRegExp.globalize(/regex/);
+         * globalCopy.global; // -> true
+         */
+        XRegExp.globalize = function (regex) {
+            return copyRegex(regex, { addG: true });
+        };
+
+        /**
+         * Installs optional features according to the specified options. Can be undone using
+         * {@link #XRegExp.uninstall}.
+         *
+         * @memberOf XRegExp
+         * @param {Object|String} options Options object or string.
+         * @example
+         *
+         * // With an options object
+         * XRegExp.install({
+         *   // Enables support for astral code points in Unicode addons (implicitly sets flag A)
+         *   astral: true,
+         *
+         *   // Overrides native regex methods with fixed/extended versions that support named
+         *   // backreferences and fix numerous cross-browser bugs
+         *   natives: true
+         * });
+         *
+         * // With an options string
+         * XRegExp.install('astral natives');
+         */
+        XRegExp.install = function (options) {
+            options = prepareOptions(options);
+
+            if (!features.astral && options.astral) {
+                setAstral(true);
+            }
+
+            if (!features.natives && options.natives) {
+                setNatives(true);
+            }
+        };
+
+        /**
+         * Checks whether an individual optional feature is installed.
+         *
+         * @memberOf XRegExp
+         * @param {String} feature Name of the feature to check. One of:
+         *   <li>`natives`
+         *   <li>`astral`
+         * @returns {Boolean} Whether the feature is installed.
+         * @example
+         *
+         * XRegExp.isInstalled('natives');
+         */
+        XRegExp.isInstalled = function (feature) {
+            return !!features[feature];
+        };
+
+        /**
+         * Returns `true` if an object is a regex; `false` if it isn't. This works correctly for regexes
+         * created in another frame, when `instanceof` and `constructor` checks would fail.
+         *
+         * @memberOf XRegExp
+         * @param {*} value Object to check.
+         * @returns {Boolean} Whether the object is a `RegExp` object.
+         * @example
+         *
+         * XRegExp.isRegExp('string'); // -> false
+         * XRegExp.isRegExp(/regex/i); // -> true
+         * XRegExp.isRegExp(RegExp('^', 'm')); // -> true
+         * XRegExp.isRegExp(XRegExp('(?s).')); // -> true
+         */
+        XRegExp.isRegExp = function (value) {
+            return toString.call(value) === '[object RegExp]';
+            //return isType(value, 'RegExp');
+        };
+
+        /**
+         * Returns the first matched string, or in global mode, an array containing all matched strings.
+         * This is essentially a more convenient re-implementation of `String.prototype.match` that gives
+         * the result types you actually want (string instead of `exec`-style array in match-first mode,
+         * and an empty array instead of `null` when no matches are found in match-all mode). It also lets
+         * you override flag g and ignore `lastIndex`, and fixes browser bugs.
+         *
+         * @memberOf XRegExp
+         * @param {String} str String to search.
+         * @param {RegExp} regex Regex to search with.
+         * @param {String} [scope='one'] Use 'one' to return the first match as a string. Use 'all' to
+         *   return an array of all matched strings. If not explicitly specified and `regex` uses flag g,
+         *   `scope` is 'all'.
+         * @returns {String|Array} In match-first mode: First match as a string, or `null`. In match-all
+         *   mode: Array of all matched strings, or an empty array.
+         * @example
+         *
+         * // Match first
+         * XRegExp.match('abc', /\w/); // -> 'a'
+         * XRegExp.match('abc', /\w/g, 'one'); // -> 'a'
+         * XRegExp.match('abc', /x/g, 'one'); // -> null
+         *
+         * // Match all
+         * XRegExp.match('abc', /\w/g); // -> ['a', 'b', 'c']
+         * XRegExp.match('abc', /\w/, 'all'); // -> ['a', 'b', 'c']
+         * XRegExp.match('abc', /x/, 'all'); // -> []
+         */
+        XRegExp.match = function (str, regex, scope) {
+            var global = regex.global && scope !== 'one' || scope === 'all',
+                cacheKey = (global ? 'g' : '') + (regex.sticky ? 'y' : '') || 'noGY',
+                result,
+                r2;
+
+            regex[REGEX_DATA] = regex[REGEX_DATA] || {};
+
+            // Shares cached copies with `XRegExp.exec`/`replace`
+            r2 = regex[REGEX_DATA][cacheKey] || (regex[REGEX_DATA][cacheKey] = copyRegex(regex, {
+                addG: !!global,
+                addY: !!regex.sticky,
+                removeG: scope === 'one',
+                isInternalOnly: true
+            }));
+
+            result = nativ.match.call(toObject(str), r2);
+
+            if (regex.global) {
+                regex.lastIndex = scope === 'one' && result ?
+                // Can't use `r2.lastIndex` since `r2` is nonglobal in this case
+                result.index + result[0].length : 0;
+            }
+
+            return global ? result || [] : result && result[0];
+        };
+
+        /**
+         * Retrieves the matches from searching a string using a chain of regexes that successively search
+         * within previous matches. The provided `chain` array can contain regexes and or objects with
+         * `regex` and `backref` properties. When a backreference is specified, the named or numbered
+         * backreference is passed forward to the next regex or returned.
+         *
+         * @memberOf XRegExp
+         * @param {String} str String to search.
+         * @param {Array} chain Regexes that each search for matches within preceding results.
+         * @returns {Array} Matches by the last regex in the chain, or an empty array.
+         * @example
+         *
+         * // Basic usage; matches numbers within <b> tags
+         * XRegExp.matchChain('1 <b>2</b> 3 <b>4 a 56</b>', [
+         *   XRegExp('(?is)<b>.*?</b>'),
+         *   /\d+/
+         * ]);
+         * // -> ['2', '4', '56']
+         *
+         * // Passing forward and returning specific backreferences
+         * html = '<a href="http://xregexp.com/api/">XRegExp</a>\
+         *         <a href="http://www.google.com/">Google</a>';
+         * XRegExp.matchChain(html, [
+         *   {regex: /<a href="([^"]+)">/i, backref: 1},
+         *   {regex: XRegExp('(?i)^https?://(?<domain>[^/?#]+)'), backref: 'domain'}
+         * ]);
+         * // -> ['xregexp.com', 'www.google.com']
+         */
+        XRegExp.matchChain = function (str, chain) {
+            return function recurseChain(values, level) {
+                var item = chain[level].regex ? chain[level] : { regex: chain[level] },
+                    matches = [],
+                    addMatch = function addMatch(match) {
+                    if (item.backref) {
+                        /* Safari 4.0.5 (but not 5.0.5+) inappropriately uses sparse arrays to hold
+                         * the `undefined`s for backreferences to nonparticipating capturing
+                         * groups. In such cases, a `hasOwnProperty` or `in` check on its own would
+                         * inappropriately throw the exception, so also check if the backreference
+                         * is a number that is within the bounds of the array.
+                         */
+                        if (!(match.hasOwnProperty(item.backref) || +item.backref < match.length)) {
+                            throw new ReferenceError('Backreference to undefined group: ' + item.backref);
+                        }
+
+                        matches.push(match[item.backref] || '');
+                    } else {
+                        matches.push(match[0]);
+                    }
+                },
+                    i;
+
+                for (i = 0; i < values.length; ++i) {
+                    XRegExp.forEach(values[i], item.regex, addMatch);
+                }
+
+                return level === chain.length - 1 || !matches.length ? matches : recurseChain(matches, level + 1);
+            }([str], 0);
+        };
+
+        /**
+         * Returns a new string with one or all matches of a pattern replaced. The pattern can be a string
+         * or regex, and the replacement can be a string or a function to be called for each match. To
+         * perform a global search and replace, use the optional `scope` argument or include flag g if using
+         * a regex. Replacement strings can use `${n}` for named and numbered backreferences. Replacement
+         * functions can use named backreferences via `arguments[0].name`. Also fixes browser bugs compared
+         * to the native `String.prototype.replace` and can be used reliably cross-browser.
+         *
+         * @memberOf XRegExp
+         * @param {String} str String to search.
+         * @param {RegExp|String} search Search pattern to be replaced.
+         * @param {String|Function} replacement Replacement string or a function invoked to create it.
+         *   Replacement strings can include special replacement syntax:
+         *     <li>$$ - Inserts a literal $ character.
+         *     <li>$&, $0 - Inserts the matched substring.
+         *     <li>$` - Inserts the string that precedes the matched substring (left context).
+         *     <li>$' - Inserts the string that follows the matched substring (right context).
+         *     <li>$n, $nn - Where n/nn are digits referencing an existent capturing group, inserts
+         *       backreference n/nn.
+         *     <li>${n} - Where n is a name or any number of digits that reference an existent capturing
+         *       group, inserts backreference n.
+         *   Replacement functions are invoked with three or more arguments:
+         *     <li>The matched substring (corresponds to $& above). Named backreferences are accessible as
+         *       properties of this first argument.
+         *     <li>0..n arguments, one for each backreference (corresponding to $1, $2, etc. above).
+         *     <li>The zero-based index of the match within the total search string.
+         *     <li>The total string being searched.
+         * @param {String} [scope='one'] Use 'one' to replace the first match only, or 'all'. If not
+         *   explicitly specified and using a regex with flag g, `scope` is 'all'.
+         * @returns {String} New string with one or all matches replaced.
+         * @example
+         *
+         * // Regex search, using named backreferences in replacement string
+         * var name = XRegExp('(?<first>\\w+) (?<last>\\w+)');
+         * XRegExp.replace('John Smith', name, '${last}, ${first}');
+         * // -> 'Smith, John'
+         *
+         * // Regex search, using named backreferences in replacement function
+         * XRegExp.replace('John Smith', name, function(match) {
+         *   return match.last + ', ' + match.first;
+         * });
+         * // -> 'Smith, John'
+         *
+         * // String search, with replace-all
+         * XRegExp.replace('RegExp builds RegExps', 'RegExp', 'XRegExp', 'all');
+         * // -> 'XRegExp builds XRegExps'
+         */
+        XRegExp.replace = function (str, search, replacement, scope) {
+            var isRegex = XRegExp.isRegExp(search),
+                global = search.global && scope !== 'one' || scope === 'all',
+                cacheKey = (global ? 'g' : '') + (search.sticky ? 'y' : '') || 'noGY',
+                s2 = search,
+                result;
+
+            if (isRegex) {
+                search[REGEX_DATA] = search[REGEX_DATA] || {};
+
+                // Shares cached copies with `XRegExp.exec`/`match`. Since a copy is used, `search`'s
+                // `lastIndex` isn't updated *during* replacement iterations
+                s2 = search[REGEX_DATA][cacheKey] || (search[REGEX_DATA][cacheKey] = copyRegex(search, {
+                    addG: !!global,
+                    addY: !!search.sticky,
+                    removeG: scope === 'one',
+                    isInternalOnly: true
+                }));
+            } else if (global) {
+                s2 = new RegExp(XRegExp.escape(String(search)), 'g');
+            }
+
+            // Fixed `replace` required for named backreferences, etc.
+            result = fixed.replace.call(toObject(str), s2, replacement);
+
+            if (isRegex && search.global) {
+                // Fixes IE, Safari bug (last tested IE 9, Safari 5.1)
+                search.lastIndex = 0;
+            }
+
+            return result;
+        };
+
+        /**
+         * Performs batch processing of string replacements. Used like {@link #XRegExp.replace}, but
+         * accepts an array of replacement details. Later replacements operate on the output of earlier
+         * replacements. Replacement details are accepted as an array with a regex or string to search for,
+         * the replacement string or function, and an optional scope of 'one' or 'all'. Uses the XRegExp
+         * replacement text syntax, which supports named backreference properties via `${name}`.
+         *
+         * @memberOf XRegExp
+         * @param {String} str String to search.
+         * @param {Array} replacements Array of replacement detail arrays.
+         * @returns {String} New string with all replacements.
+         * @example
+         *
+         * str = XRegExp.replaceEach(str, [
+         *   [XRegExp('(?<name>a)'), 'z${name}'],
+         *   [/b/gi, 'y'],
+         *   [/c/g, 'x', 'one'], // scope 'one' overrides /g
+         *   [/d/, 'w', 'all'],  // scope 'all' overrides lack of /g
+         *   ['e', 'v', 'all'],  // scope 'all' allows replace-all for strings
+         *   [/f/g, function($0) {
+         *     return $0.toUpperCase();
+         *   }]
+         * ]);
+         */
+        XRegExp.replaceEach = function (str, replacements) {
+            var i, r;
+
+            for (i = 0; i < replacements.length; ++i) {
+                r = replacements[i];
+                str = XRegExp.replace(str, r[0], r[1], r[2]);
+            }
+
+            return str;
+        };
+
+        /**
+         * Splits a string into an array of strings using a regex or string separator. Matches of the
+         * separator are not included in the result array. However, if `separator` is a regex that contains
+         * capturing groups, backreferences are spliced into the result each time `separator` is matched.
+         * Fixes browser bugs compared to the native `String.prototype.split` and can be used reliably
+         * cross-browser.
+         *
+         * @memberOf XRegExp
+         * @param {String} str String to split.
+         * @param {RegExp|String} separator Regex or string to use for separating the string.
+         * @param {Number} [limit] Maximum number of items to include in the result array.
+         * @returns {Array} Array of substrings.
+         * @example
+         *
+         * // Basic use
+         * XRegExp.split('a b c', ' ');
+         * // -> ['a', 'b', 'c']
+         *
+         * // With limit
+         * XRegExp.split('a b c', ' ', 2);
+         * // -> ['a', 'b']
+         *
+         * // Backreferences in result array
+         * XRegExp.split('..word1..', /([a-z]+)(\d+)/i);
+         * // -> ['..', 'word', '1', '..']
+         */
+        XRegExp.split = function (str, separator, limit) {
+            return fixed.split.call(toObject(str), separator, limit);
+        };
+
+        /**
+         * Executes a regex search in a specified string. Returns `true` or `false`. Optional `pos` and
+         * `sticky` arguments specify the search start position, and whether the match must start at the
+         * specified position only. The `lastIndex` property of the provided regex is not used, but is
+         * updated for compatibility. Also fixes browser bugs compared to the native
+         * `RegExp.prototype.test` and can be used reliably cross-browser.
+         *
+         * @memberOf XRegExp
+         * @param {String} str String to search.
+         * @param {RegExp} regex Regex to search with.
+         * @param {Number} [pos=0] Zero-based index at which to start the search.
+         * @param {Boolean|String} [sticky=false] Whether the match must start at the specified position
+         *   only. The string `'sticky'` is accepted as an alternative to `true`.
+         * @returns {Boolean} Whether the regex matched the provided value.
+         * @example
+         *
+         * // Basic use
+         * XRegExp.test('abc', /c/); // -> true
+         *
+         * // With pos and sticky
+         * XRegExp.test('abc', /c/, 0, 'sticky'); // -> false
+         * XRegExp.test('abc', /c/, 2, 'sticky'); // -> true
+         */
+        XRegExp.test = function (str, regex, pos, sticky) {
+            // Do this the easy way :-)
+            return !!XRegExp.exec(str, regex, pos, sticky);
+        };
+
+        /**
+         * Uninstalls optional features according to the specified options. All optional features start out
+         * uninstalled, so this is used to undo the actions of {@link #XRegExp.install}.
+         *
+         * @memberOf XRegExp
+         * @param {Object|String} options Options object or string.
+         * @example
+         *
+         * // With an options object
+         * XRegExp.uninstall({
+         *   // Disables support for astral code points in Unicode addons
+         *   astral: true,
+         *
+         *   // Restores native regex methods
+         *   natives: true
+         * });
+         *
+         * // With an options string
+         * XRegExp.uninstall('astral natives');
+         */
+        XRegExp.uninstall = function (options) {
+            options = prepareOptions(options);
+
+            if (features.astral && options.astral) {
+                setAstral(false);
+            }
+
+            if (features.natives && options.natives) {
+                setNatives(false);
+            }
+        };
+
+        /**
+         * Returns an XRegExp object that is the union of the given patterns. Patterns can be provided as
+         * regex objects or strings. Metacharacters are escaped in patterns provided as strings.
+         * Backreferences in provided regex objects are automatically renumbered to work correctly within
+         * the larger combined pattern. Native flags used by provided regexes are ignored in favor of the
+         * `flags` argument.
+         *
+         * @memberOf XRegExp
+         * @param {Array} patterns Regexes and strings to combine.
+         * @param {String} [flags] Any combination of XRegExp flags.
+         * @returns {RegExp} Union of the provided regexes and strings.
+         * @example
+         *
+         * XRegExp.union(['a+b*c', /(dogs)\1/, /(cats)\1/], 'i');
+         * // -> /a\+b\*c|(dogs)\1|(cats)\2/i
+         */
+        XRegExp.union = function (patterns, flags) {
+            var parts = /(\()(?!\?)|\\([1-9]\d*)|\\[\s\S]|\[(?:[^\\\]]|\\[\s\S])*]/g,
+                output = [],
+                numCaptures = 0,
+                numPriorCaptures,
+                captureNames,
+                pattern,
+                rewrite = function rewrite(match, paren, backref) {
+                var name = captureNames[numCaptures - numPriorCaptures];
+
+                // Capturing group
+                if (paren) {
+                    ++numCaptures;
+                    // If the current capture has a name, preserve the name
+                    if (name) {
+                        return '(?<' + name + '>';
+                    }
+                    // Backreference
+                } else if (backref) {
+                    // Rewrite the backreference
+                    return '\\' + (+backref + numPriorCaptures);
+                }
+
+                return match;
+            },
+                i;
+
+            if (!(isType(patterns, 'Array') && patterns.length)) {
+                throw new TypeError('Must provide a nonempty array of patterns to merge');
+            }
+
+            for (i = 0; i < patterns.length; ++i) {
+                pattern = patterns[i];
+
+                if (XRegExp.isRegExp(pattern)) {
+                    numPriorCaptures = numCaptures;
+                    captureNames = pattern[REGEX_DATA] && pattern[REGEX_DATA].captureNames || [];
+
+                    // Rewrite backreferences. Passing to XRegExp dies on octals and ensures patterns
+                    // are independently valid; helps keep this simple. Named captures are put back
+                    output.push(nativ.replace.call(XRegExp(pattern.source).source, parts, rewrite));
+                } else {
+                    output.push(XRegExp.escape(pattern));
+                }
+            }
+
+            return XRegExp(output.join('|'), flags);
+        };
+
+        /* ==============================
+         * Fixed/extended native methods
+         * ============================== */
+
+        /**
+         * Adds named capture support (with backreferences returned as `result.name`), and fixes browser
+         * bugs in the native `RegExp.prototype.exec`. Calling `XRegExp.install('natives')` uses this to
+         * override the native method. Use via `XRegExp.exec` without overriding natives.
+         *
+         * @private
+         * @param {String} str String to search.
+         * @returns {Array} Match array with named backreference properties, or `null`.
+         */
+        fixed.exec = function (str) {
+            var origLastIndex = this.lastIndex,
+                match = nativ.exec.apply(this, arguments),
+                name,
+                r2,
+                i;
+
+            if (match) {
+                // Fix browsers whose `exec` methods don't return `undefined` for nonparticipating
+                // capturing groups. This fixes IE 5.5-8, but not IE 9's quirks mode or emulation of
+                // older IEs. IE 9 in standards mode follows the spec
+                if (!correctExecNpcg && match.length > 1 && indexOf(match, '') > -1) {
+                    r2 = copyRegex(this, {
+                        removeG: true,
+                        isInternalOnly: true
+                    });
+                    // Using `str.slice(match.index)` rather than `match[0]` in case lookahead allowed
+                    // matching due to characters outside the match
+                    nativ.replace.call(String(str).slice(match.index), r2, function () {
+                        var len = arguments.length,
+                            i;
+                        // Skip index 0 and the last 2
+                        for (i = 1; i < len - 2; ++i) {
+                            if (arguments[i] === undefined) {
+                                match[i] = undefined;
+                            }
+                        }
+                    });
+                }
+
+                // Attach named capture properties
+                if (this[REGEX_DATA] && this[REGEX_DATA].captureNames) {
+                    // Skip index 0
+                    for (i = 1; i < match.length; ++i) {
+                        name = this[REGEX_DATA].captureNames[i - 1];
+                        if (name) {
+                            match[name] = match[i];
+                        }
+                    }
+                }
+
+                // Fix browsers that increment `lastIndex` after zero-length matches
+                if (this.global && !match[0].length && this.lastIndex > match.index) {
+                    this.lastIndex = match.index;
+                }
+            }
+
+            if (!this.global) {
+                // Fixes IE, Opera bug (last tested IE 9, Opera 11.6)
+                this.lastIndex = origLastIndex;
+            }
+
+            return match;
+        };
+
+        /**
+         * Fixes browser bugs in the native `RegExp.prototype.test`. Calling `XRegExp.install('natives')`
+         * uses this to override the native method.
+         *
+         * @private
+         * @param {String} str String to search.
+         * @returns {Boolean} Whether the regex matched the provided value.
+         */
+        fixed.test = function (str) {
+            // Do this the easy way :-)
+            return !!fixed.exec.call(this, str);
+        };
+
+        /**
+         * Adds named capture support (with backreferences returned as `result.name`), and fixes browser
+         * bugs in the native `String.prototype.match`. Calling `XRegExp.install('natives')` uses this to
+         * override the native method.
+         *
+         * @private
+         * @param {RegExp|*} regex Regex to search with. If not a regex object, it is passed to `RegExp`.
+         * @returns {Array} If `regex` uses flag g, an array of match strings or `null`. Without flag g,
+         *   the result of calling `regex.exec(this)`.
+         */
+        fixed.match = function (regex) {
+            var result;
+
+            if (!XRegExp.isRegExp(regex)) {
+                // Use the native `RegExp` rather than `XRegExp`
+                regex = new RegExp(regex);
+            } else if (regex.global) {
+                result = nativ.match.apply(this, arguments);
+                // Fixes IE bug
+                regex.lastIndex = 0;
+
+                return result;
+            }
+
+            return fixed.exec.call(regex, toObject(this));
+        };
+
+        /**
+         * Adds support for `${n}` tokens for named and numbered backreferences in replacement text, and
+         * provides named backreferences to replacement functions as `arguments[0].name`. Also fixes browser
+         * bugs in replacement text syntax when performing a replacement using a nonregex search value, and
+         * the value of a replacement regex's `lastIndex` property during replacement iterations and upon
+         * completion. Calling `XRegExp.install('natives')` uses this to override the native method. Note
+         * that this doesn't support SpiderMonkey's proprietary third (`flags`) argument. Use via
+         * `XRegExp.replace` without overriding natives.
+         *
+         * @private
+         * @param {RegExp|String} search Search pattern to be replaced.
+         * @param {String|Function} replacement Replacement string or a function invoked to create it.
+         * @returns {String} New string with one or all matches replaced.
+         */
+        fixed.replace = function (search, replacement) {
+            var isRegex = XRegExp.isRegExp(search),
+                origLastIndex,
+                captureNames,
+                result;
+
+            if (isRegex) {
+                if (search[REGEX_DATA]) {
+                    captureNames = search[REGEX_DATA].captureNames;
+                }
+                // Only needed if `search` is nonglobal
+                origLastIndex = search.lastIndex;
+            } else {
+                search += ''; // Type-convert
+            }
+
+            // Don't use `typeof`; some older browsers return 'function' for regex objects
+            if (isType(replacement, 'Function')) {
+                // Stringifying `this` fixes a bug in IE < 9 where the last argument in replacement
+                // functions isn't type-converted to a string
+                result = nativ.replace.call(String(this), search, function () {
+                    var args = arguments,
+                        i;
+                    if (captureNames) {
+                        // Change the `arguments[0]` string primitive to a `String` object that can
+                        // store properties. This really does need to use `String` as a constructor
+                        args[0] = new String(args[0]);
+                        // Store named backreferences on the first argument
+                        for (i = 0; i < captureNames.length; ++i) {
+                            if (captureNames[i]) {
+                                args[0][captureNames[i]] = args[i + 1];
+                            }
+                        }
+                    }
+                    // Update `lastIndex` before calling `replacement`. Fixes IE, Chrome, Firefox,
+                    // Safari bug (last tested IE 9, Chrome 17, Firefox 11, Safari 5.1)
+                    if (isRegex && search.global) {
+                        search.lastIndex = args[args.length - 2] + args[0].length;
+                    }
+                    // ES6 specs the context for replacement functions as `undefined`
+                    return replacement.apply(undefined, args);
+                });
+            } else {
+                // Ensure that the last value of `args` will be a string when given nonstring `this`,
+                // while still throwing on null or undefined context
+                result = nativ.replace.call(this == null ? this : String(this), search, function () {
+                    // Keep this function's `arguments` available through closure
+                    var args = arguments;
+                    return nativ.replace.call(String(replacement), replacementToken, function ($0, $1, $2) {
+                        var n;
+                        // Named or numbered backreference with curly braces
+                        if ($1) {
+                            // XRegExp behavior for `${n}`:
+                            // 1. Backreference to numbered capture, if `n` is an integer. Use `0` for
+                            //    for the entire match. Any number of leading zeros may be used.
+                            // 2. Backreference to named capture `n`, if it exists and is not an
+                            //    integer overridden by numbered capture. In practice, this does not
+                            //    overlap with numbered capture since XRegExp does not allow named
+                            //    capture to use a bare integer as the name.
+                            // 3. If the name or number does not refer to an existing capturing group,
+                            //    it's an error.
+                            n = +$1; // Type-convert; drop leading zeros
+                            if (n <= args.length - 3) {
+                                return args[n] || '';
+                            }
+                            // Groups with the same name is an error, else would need `lastIndexOf`
+                            n = captureNames ? indexOf(captureNames, $1) : -1;
+                            if (n < 0) {
+                                throw new SyntaxError('Backreference to undefined group ' + $0);
+                            }
+                            return args[n + 1] || '';
+                        }
+                        // Else, special variable or numbered backreference without curly braces
+                        if ($2 === '$') {
+                            // $$
+                            return '$';
+                        }
+                        if ($2 === '&' || +$2 === 0) {
+                            // $&, $0 (not followed by 1-9), $00
+                            return args[0];
+                        }
+                        if ($2 === '`') {
+                            // $` (left context)
+                            return args[args.length - 1].slice(0, args[args.length - 2]);
+                        }
+                        if ($2 === "'") {
+                            // $' (right context)
+                            return args[args.length - 1].slice(args[args.length - 2] + args[0].length);
+                        }
+                        // Else, numbered backreference without curly braces
+                        $2 = +$2; // Type-convert; drop leading zero
+                        // XRegExp behavior for `$n` and `$nn`:
+                        // - Backrefs end after 1 or 2 digits. Use `${..}` for more digits.
+                        // - `$1` is an error if no capturing groups.
+                        // - `$10` is an error if less than 10 capturing groups. Use `${1}0` instead.
+                        // - `$01` is `$1` if at least one capturing group, else it's an error.
+                        // - `$0` (not followed by 1-9) and `$00` are the entire match.
+                        // Native behavior, for comparison:
+                        // - Backrefs end after 1 or 2 digits. Cannot reference capturing group 100+.
+                        // - `$1` is a literal `$1` if no capturing groups.
+                        // - `$10` is `$1` followed by a literal `0` if less than 10 capturing groups.
+                        // - `$01` is `$1` if at least one capturing group, else it's a literal `$01`.
+                        // - `$0` is a literal `$0`.
+                        if (!isNaN($2)) {
+                            if ($2 > args.length - 3) {
+                                throw new SyntaxError('Backreference to undefined group ' + $0);
+                            }
+                            return args[$2] || '';
+                        }
+                        // `$` followed by an unsupported char is an error, unlike native JS
+                        throw new SyntaxError('Invalid token ' + $0);
+                    });
+                });
+            }
+
+            if (isRegex) {
+                if (search.global) {
+                    // Fixes IE, Safari bug (last tested IE 9, Safari 5.1)
+                    search.lastIndex = 0;
+                } else {
+                    // Fixes IE, Opera bug (last tested IE 9, Opera 11.6)
+                    search.lastIndex = origLastIndex;
+                }
+            }
+
+            return result;
+        };
+
+        /**
+         * Fixes browser bugs in the native `String.prototype.split`. Calling `XRegExp.install('natives')`
+         * uses this to override the native method. Use via `XRegExp.split` without overriding natives.
+         *
+         * @private
+         * @param {RegExp|String} separator Regex or string to use for separating the string.
+         * @param {Number} [limit] Maximum number of items to include in the result array.
+         * @returns {Array} Array of substrings.
+         */
+        fixed.split = function (separator, limit) {
+            if (!XRegExp.isRegExp(separator)) {
+                // Browsers handle nonregex split correctly, so use the faster native method
+                return nativ.split.apply(this, arguments);
+            }
+
+            var str = String(this),
+                output = [],
+                origLastIndex = separator.lastIndex,
+                lastLastIndex = 0,
+                lastLength;
+
+            // Values for `limit`, per the spec:
+            // If undefined: pow(2,32) - 1
+            // If 0, Infinity, or NaN: 0
+            // If positive number: limit = floor(limit); if (limit >= pow(2,32)) limit -= pow(2,32);
+            // If negative number: pow(2,32) - floor(abs(limit))
+            // If other: Type-convert, then use the above rules
+            // This line fails in very strange ways for some values of `limit` in Opera 10.5-10.63,
+            // unless Opera Dragonfly is open (go figure). It works in at least Opera 9.5-10.1 and 11+
+            limit = (limit === undefined ? -1 : limit) >>> 0;
+
+            XRegExp.forEach(str, separator, function (match) {
+                // This condition is not the same as `if (match[0].length)`
+                if (match.index + match[0].length > lastLastIndex) {
+                    output.push(str.slice(lastLastIndex, match.index));
+                    if (match.length > 1 && match.index < str.length) {
+                        Array.prototype.push.apply(output, match.slice(1));
+                    }
+                    lastLength = match[0].length;
+                    lastLastIndex = match.index + lastLength;
+                }
+            });
+
+            if (lastLastIndex === str.length) {
+                if (!nativ.test.call(separator, '') || lastLength) {
+                    output.push('');
+                }
+            } else {
+                output.push(str.slice(lastLastIndex));
+            }
+
+            separator.lastIndex = origLastIndex;
+            return output.length > limit ? output.slice(0, limit) : output;
+        };
+
+        /* ==============================
+         * Built-in syntax/flag tokens
+         * ============================== */
+
+        /*
+         * Letter escapes that natively match literal characters: `\a`, `\A`, etc. These should be
+         * SyntaxErrors but are allowed in web reality. XRegExp makes them errors for cross-browser
+         * consistency and to reserve their syntax, but lets them be superseded by addons.
+         */
+        XRegExp.addToken(/\\([ABCE-RTUVXYZaeg-mopqyz]|c(?![A-Za-z])|u(?![\dA-Fa-f]{4}|{[\dA-Fa-f]+})|x(?![\dA-Fa-f]{2}))/, function (match, scope) {
+            // \B is allowed in default scope only
+            if (match[1] === 'B' && scope === defaultScope) {
+                return match[0];
+            }
+            throw new SyntaxError('Invalid escape ' + match[0]);
+        }, {
+            scope: 'all',
+            leadChar: '\\'
+        });
+
+        /*
+         * Unicode code point escape with curly braces: `\u{N..}`. `N..` is any one or more digit
+         * hexadecimal number from 0-10FFFF, and can include leading zeros. Requires the native ES6 `u` flag
+         * to support code points greater than U+FFFF. Avoids converting code points above U+FFFF to
+         * surrogate pairs (which could be done without flag `u`), since that could lead to broken behavior
+         * if you follow a `\u{N..}` token that references a code point above U+FFFF with a quantifier, or
+         * if you use the same in a character class.
+         */
+        XRegExp.addToken(/\\u{([\dA-Fa-f]+)}/, function (match, scope, flags) {
+            var code = dec(match[1]);
+            if (code > 0x10FFFF) {
+                throw new SyntaxError('Invalid Unicode code point ' + match[0]);
+            }
+            if (code <= 0xFFFF) {
+                // Converting to \uNNNN avoids needing to escape the literal character and keep it
+                // separate from preceding tokens
+                return '\\u' + pad4(hex(code));
+            }
+            // If `code` is between 0xFFFF and 0x10FFFF, require and defer to native handling
+            if (hasNativeU && flags.indexOf('u') > -1) {
+                return match[0];
+            }
+            throw new SyntaxError('Cannot use Unicode code point above \\u{FFFF} without flag u');
+        }, {
+            scope: 'all',
+            leadChar: '\\'
+        });
+
+        /*
+         * Empty character class: `[]` or `[^]`. This fixes a critical cross-browser syntax inconsistency.
+         * Unless this is standardized (per the ES spec), regex syntax can't be accurately parsed because
+         * character class endings can't be determined.
+         */
+        XRegExp.addToken(/\[(\^?)]/, function (match) {
+            // For cross-browser compatibility with ES3, convert [] to \b\B and [^] to [\s\S].
+            // (?!) should work like \b\B, but is unreliable in some versions of Firefox
+            return match[1] ? '[\\s\\S]' : '\\b\\B';
+        }, { leadChar: '[' });
+
+        /*
+         * Comment pattern: `(?# )`. Inline comments are an alternative to the line comments allowed in
+         * free-spacing mode (flag x).
+         */
+        XRegExp.addToken(/\(\?#[^)]*\)/, function (match, scope, flags) {
+            // Keep tokens separated unless the following token is a quantifier
+            return isQuantifierNext(match.input, match.index + match[0].length, flags) ? '' : '(?:)';
+        }, { leadChar: '(' });
+
+        /*
+         * Whitespace and line comments, in free-spacing mode (aka extended mode, flag x) only.
+         */
+        XRegExp.addToken(/\s+|#.*/, function (match, scope, flags) {
+            // Keep tokens separated unless the following token is a quantifier
+            return isQuantifierNext(match.input, match.index + match[0].length, flags) ? '' : '(?:)';
+        }, { flag: 'x' });
+
+        /*
+         * Dot, in dotall mode (aka singleline mode, flag s) only.
+         */
+        XRegExp.addToken(/\./, function () {
+            return '[\\s\\S]';
+        }, {
+            flag: 's',
+            leadChar: '.'
+        });
+
+        /*
+         * Named backreference: `\k<name>`. Backreference names can use the characters A-Z, a-z, 0-9, _,
+         * and $ only. Also allows numbered backreferences as `\k<n>`.
+         */
+        XRegExp.addToken(/\\k<([\w$]+)>/, function (match) {
+            // Groups with the same name is an error, else would need `lastIndexOf`
+            var index = isNaN(match[1]) ? indexOf(this.captureNames, match[1]) + 1 : +match[1],
+                endIndex = match.index + match[0].length;
+            if (!index || index > this.captureNames.length) {
+                throw new SyntaxError('Backreference to undefined group ' + match[0]);
+            }
+            // Keep backreferences separate from subsequent literal numbers
+            return '\\' + index + (endIndex === match.input.length || isNaN(match.input.charAt(endIndex)) ? '' : '(?:)');
+        }, { leadChar: '\\' });
+
+        /*
+         * Numbered backreference or octal, plus any following digits: `\0`, `\11`, etc. Octals except `\0`
+         * not followed by 0-9 and backreferences to unopened capture groups throw an error. Other matches
+         * are returned unaltered. IE < 9 doesn't support backreferences above `\99` in regex syntax.
+         */
+        XRegExp.addToken(/\\(\d+)/, function (match, scope) {
+            if (!(scope === defaultScope && /^[1-9]/.test(match[1]) && +match[1] <= this.captureNames.length) && match[1] !== '0') {
+                throw new SyntaxError('Cannot use octal escape or backreference to undefined group ' + match[0]);
+            }
+            return match[0];
+        }, {
+            scope: 'all',
+            leadChar: '\\'
+        });
+
+        /*
+         * Named capturing group; match the opening delimiter only: `(?<name>`. Capture names can use the
+         * characters A-Z, a-z, 0-9, _, and $ only. Names can't be integers. Supports Python-style
+         * `(?P<name>` as an alternate syntax to avoid issues in some older versions of Opera which natively
+         * supported the Python-style syntax. Otherwise, XRegExp might treat numbered backreferences to
+         * Python-style named capture as octals.
+         */
+        XRegExp.addToken(/\(\?P?<([\w$]+)>/, function (match) {
+            // Disallow bare integers as names because named backreferences are added to match
+            // arrays and therefore numeric properties may lead to incorrect lookups
+            if (!isNaN(match[1])) {
+                throw new SyntaxError('Cannot use integer as capture name ' + match[0]);
+            }
+            if (match[1] === 'length' || match[1] === '__proto__') {
+                throw new SyntaxError('Cannot use reserved word as capture name ' + match[0]);
+            }
+            if (indexOf(this.captureNames, match[1]) > -1) {
+                throw new SyntaxError('Cannot use same name for multiple groups ' + match[0]);
+            }
+            this.captureNames.push(match[1]);
+            this.hasNamedCapture = true;
+            return '(';
+        }, { leadChar: '(' });
+
+        /*
+         * Capturing group; match the opening parenthesis only. Required for support of named capturing
+         * groups. Also adds explicit capture mode (flag n).
+         */
+        XRegExp.addToken(/\((?!\?)/, function (match, scope, flags) {
+            if (flags.indexOf('n') > -1) {
+                return '(?:';
+            }
+            this.captureNames.push(null);
+            return '(';
+        }, {
+            optionalFlags: 'n',
+            leadChar: '('
+        });
+
+        /* ==============================
+         * Expose XRegExp
+         * ============================== */
+
+        module.exports = XRegExp;
+
+/***/ },
+/* 5 */
+/***/ function(module, exports, __webpack_require__) {
+
+        'use strict';
+
+        Object.defineProperty(exports, "__esModule", {
+          value: true
+        });
+
+        var _match = __webpack_require__(6);
+
+        Object.keys(_match).forEach(function (key) {
+          if (key === "default") return;
+          Object.defineProperty(exports, key, {
+            enumerable: true,
+            get: function get() {
+              return _match[key];
+            }
+          });
+        });
+
+        var _applyRegexList = __webpack_require__(7);
+
+        Object.keys(_applyRegexList).forEach(function (key) {
+          if (key === "default") return;
+          Object.defineProperty(exports, key, {
+            enumerable: true,
+            get: function get() {
+              return _applyRegexList[key];
+            }
+          });
+        });
+
+/***/ },
+/* 6 */
+/***/ function(module, exports) {
+
+        "use strict";
+
+        Object.defineProperty(exports, "__esModule", {
+          value: true
+        });
+
+        var _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();
+
+        function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } }
+
+        var Match = exports.Match = function () {
+          function Match(value, index, css) {
+            _classCallCheck(this, Match);
+
+            this.value = value;
+            this.index = index;
+            this.length = value.length;
+            this.css = css;
+            this.brushName = null;
+          }
+
+          _createClass(Match, [{
+            key: "toString",
+            value: function toString() {
+              return this.value;
+            }
+          }]);
+
+          return Match;
+        }();
+
+/***/ },
+/* 7 */
+/***/ function(module, exports, __webpack_require__) {
+
+        'use strict';
+
+        Object.defineProperty(exports, "__esModule", {
+          value: true
+        });
+
+        var _typeof = typeof Symbol === "function" && typeof Symbol.iterator === "symbol" ? function (obj) { return typeof obj; } : function (obj) { return obj && typeof Symbol === "function" && obj.constructor === Symbol ? "symbol" : typeof obj; };
+
+        exports.applyRegexList = applyRegexList;
+
+        var _matches = __webpack_require__(8);
+
+        /**
+         * Applies all regular expression to the code and stores all found
+         * matches in the `this.matches` array.
+         */
+        function applyRegexList(code, regexList) {
+          var result = [];
+
+          regexList = regexList || [];
+
+          for (var i = 0, l = regexList.length; i < l; i++) {
+            // BUG: length returns len+1 for array if methods added to prototype chain (oising@gmail.com)
+            if (_typeof(regexList[i]) === 'object') result = result.concat((0, _matches.find)(code, regexList[i]));
+          }
+
+          result = (0, _matches.sort)(result);
+          result = (0, _matches.removeNested)(result);
+          result = (0, _matches.compact)(result);
+
+          return result;
+        }
+
+/***/ },
+/* 8 */
+/***/ function(module, exports, __webpack_require__) {
+
+        'use strict';
+
+        Object.defineProperty(exports, "__esModule", {
+          value: true
+        });
+        exports.find = find;
+        exports.sort = sort;
+        exports.compact = compact;
+        exports.removeNested = removeNested;
+
+        var _match = __webpack_require__(6);
+
+        var _syntaxhighlighterRegex = __webpack_require__(3);
+
+        /**
+         * Executes given regular expression on provided code and returns all matches that are found.
+         *
+         * @param {String} code    Code to execute regular expression on.
+         * @param {Object} regex   Regular expression item info from `regexList` collection.
+         * @return {Array}         Returns a list of Match objects.
+         */
+        function find(code, regexInfo) {
+          function defaultAdd(match, regexInfo) {
+            return match[0];
+          };
+
+          var index = 0,
+              match = null,
+              matches = [],
+              process = regexInfo.func ? regexInfo.func : defaultAdd,
+              pos = 0;
+
+          while (match = _syntaxhighlighterRegex.XRegExp.exec(code, regexInfo.regex, pos)) {
+            var resultMatch = process(match, regexInfo);
+
+            if (typeof resultMatch === 'string') resultMatch = [new _match.Match(resultMatch, match.index, regexInfo.css)];
+
+            matches = matches.concat(resultMatch);
+            pos = match.index + match[0].length;
+          }
+
+          return matches;
+        };
+
+        /**
+         * Sorts matches by index position and then by length.
+         */
+        function sort(matches) {
+          function sortMatchesCallback(m1, m2) {
+            // sort matches by index first
+            if (m1.index < m2.index) return -1;else if (m1.index > m2.index) return 1;else {
+              // if index is the same, sort by length
+              if (m1.length < m2.length) return -1;else if (m1.length > m2.length) return 1;
+            }
+
+            return 0;
+          }
+
+          return matches.sort(sortMatchesCallback);
+        }
+
+        function compact(matches) {
+          var result = [],
+              i,
+              l;
+
+          for (i = 0, l = matches.length; i < l; i++) {
+            if (matches[i]) result.push(matches[i]);
+          }return result;
+        }
+
+        /**
+         * Checks to see if any of the matches are inside of other matches.
+         * This process would get rid of highligted strings inside comments,
+         * keywords inside strings and so on.
+         */
+        function removeNested(matches) {
+          // Optimized by Jose Prado (http://joseprado.com)
+          for (var i = 0, l = matches.length; i < l; i++) {
+            if (matches[i] === null) continue;
+
+            var itemI = matches[i],
+                itemIEndPos = itemI.index + itemI.length;
+
+            for (var j = i + 1, l = matches.length; j < l && matches[i] !== null; j++) {
+              var itemJ = matches[j];
+
+              if (itemJ === null) continue;else if (itemJ.index > itemIEndPos) break;else if (itemJ.index == itemI.index && itemJ.length > itemI.length) matches[i] = null;else if (itemJ.index >= itemI.index && itemJ.index < itemIEndPos) matches[j] = null;
+            }
+          }
+
+          return matches;
+        }
+
+/***/ },
+/* 9 */
+/***/ function(module, exports) {
+
+        'use strict';
+
+        Object.defineProperty(exports, "__esModule", {
+          value: true
+        });
+        exports.default = Renderer;
+        /**
+         * Pads number with zeros until it's length is the same as given length.
+         *
+         * @param {Number} number Number to pad.
+         * @param {Number} length Max string length with.
+         * @return {String}     Returns a string padded with proper amount of '0'.
+         */
+        function padNumber(number, length) {
+          var result = number.toString();
+
+          while (result.length < length) {
+            result = '0' + result;
+          }return result;
+        };
+
+        function getLines(str) {
+          return str.split(/\r?\n/);
+        }
+
+        function getLinesToHighlight(opts) {
+          var results = {},
+              linesToHighlight,
+              l,
+              i;
+
+          linesToHighlight = opts.highlight || [];
+
+          if (typeof linesToHighlight.push !== 'function') linesToHighlight = [linesToHighlight];
+
+          for (i = 0, l = linesToHighlight.length; i < l; i++) {
+            results[linesToHighlight[i]] = true;
+          }return results;
+        }
+
+        function Renderer(code, matches, opts) {
+          var _this = this;
+
+          _this.opts = opts;
+          _this.code = code;
+          _this.matches = matches;
+          _this.lines = getLines(code);
+          _this.linesToHighlight = getLinesToHighlight(opts);
+        }
+
+        Renderer.prototype = {
+          /**
+           * Wraps each line of the string into <code/> tag with given style applied to it.
+           *
+           * @param {String} str   Input string.
+           * @param {String} css   Style name to apply to the string.
+           * @return {String}      Returns input string with each line surrounded by <span/> tag.
+           */
+          wrapLinesWithCode: function wrapLinesWithCode(str, css) {
+            if (str == null || str.length == 0 || str == '\n' || css == null) return str;
+
+            var _this = this,
+                results = [],
+                lines,
+                line,
+                spaces,
+                i,
+                l;
+
+            str = str.replace(/</g, '&lt;');
+
+            // Replace two or more sequential spaces with &nbsp; leaving last space untouched.
+            str = str.replace(/ {2,}/g, function (m) {
+              spaces = '';
+
+              for (i = 0, l = m.length; i < l - 1; i++) {
+                spaces += _this.opts.space;
+              }return spaces + ' ';
+            });
+
+            lines = getLines(str);
+
+            // Split each line and apply <span class="...">...</span> to them so that leading spaces aren't included.
+            for (i = 0, l = lines.length; i < l; i++) {
+              line = lines[i];
+              spaces = '';
+
+              if (line.length > 0) {
+                line = line.replace(/^(&nbsp;| )+/, function (s) {
+                  spaces = s;
+                  return '';
+                });
+
+                line = line.length === 0 ? spaces : spaces + '<code class="' + css + '">' + line + '</code>';
+              }
+
+              results.push(line);
+            }
+
+            return results.join('\n');
+          },
+
+          /**
+           * Turns all URLs in the code into <a/> tags.
+           * @param {String} code Input code.
+           * @return {String} Returns code with </a> tags.
+           */
+          processUrls: function processUrls(code) {
+            var gt = /(.*)((&gt;|&lt;).*)/,
+                url = /\w+:\/\/[\w-.\/?%&=:@;#]*/g;
+
+            return code.replace(url, function (m) {
+              var suffix = '',
+                  match = null;
+
+              // We include &lt; and &gt; in the URL for the common cases like <http://google.com>
+              // The problem is that they get transformed into &lt;http://google.com&gt;
+              // Where as &gt; easily looks like part of the URL string.
+
+              if (match = gt.exec(m)) {
+                m = match[1];
+                suffix = match[2];
+              }
+
+              return '<a href="' + m + '">' + m + '</a>' + suffix;
+            });
+          },
+
+          /**
+           * Creates an array containing integer line numbers starting from the 'first-line' param.
+           * @return {Array} Returns array of integers.
+           */
+          figureOutLineNumbers: function figureOutLineNumbers(code) {
+            var lineNumbers = [],
+                lines = this.lines,
+                firstLine = parseInt(this.opts.firstLine || 1),
+                i,
+                l;
+
+            for (i = 0, l = lines.length; i < l; i++) {
+              lineNumbers.push(i + firstLine);
+            }return lineNumbers;
+          },
+
+          /**
+           * Generates HTML markup for a single line of code while determining alternating line style.
+           * @param {Integer} lineNumber  Line number.
+           * @param {String} code Line  HTML markup.
+           * @return {String}       Returns HTML markup.
+           */
+          wrapLine: function wrapLine(lineIndex, lineNumber, lineHtml) {
+            var classes = ['line', 'number' + lineNumber, 'index' + lineIndex, 'alt' + (lineNumber % 2 == 0 ? 1 : 2).toString()];
+
+            if (this.linesToHighlight[lineNumber]) classes.push('highlighted');
+
+            if (lineNumber == 0) classes.push('break');
+
+            return '<div class="' + classes.join(' ') + '">' + lineHtml + '</div>';
+          },
+
+          /**
+           * Generates HTML markup for line number column.
+           * @param {String} code     Complete code HTML markup.
+           * @param {Array} lineNumbers Calculated line numbers.
+           * @return {String}       Returns HTML markup.
+           */
+          renderLineNumbers: function renderLineNumbers(code, lineNumbers) {
+            var _this = this,
+                opts = _this.opts,
+                html = '',
+                count = _this.lines.length,
+                firstLine = parseInt(opts.firstLine || 1),
+                pad = opts.padLineNumbers,
+                lineNumber,
+                i;
+
+            if (pad == true) pad = (firstLine + count - 1).toString().length;else if (isNaN(pad) == true) pad = 0;
+
+            for (i = 0; i < count; i++) {
+              lineNumber = lineNumbers ? lineNumbers[i] : firstLine + i;
+              code = lineNumber == 0 ? opts.space : padNumber(lineNumber, pad);
+              html += _this.wrapLine(i, lineNumber, code);
+            }
+
+            return html;
+          },
+
+          /**
+           * Splits block of text into individual DIV lines.
+           * @param {String} code     Code to highlight.
+           * @param {Array} lineNumbers Calculated line numbers.
+           * @return {String}       Returns highlighted code in HTML form.
+           */
+          getCodeLinesHtml: function getCodeLinesHtml(html, lineNumbers) {
+            // html = utils.trim(html);
+
+            var _this = this,
+                opts = _this.opts,
+                lines = getLines(html),
+                padLength = opts.padLineNumbers,
+                firstLine = parseInt(opts.firstLine || 1),
+                brushName = opts.brush,
+                html = '';
+
+            for (var i = 0, l = lines.length; i < l; i++) {
+              var line = lines[i],
+                  indent = /^(&nbsp;|\s)+/.exec(line),
+                  spaces = null,
+                  lineNumber = lineNumbers ? lineNumbers[i] : firstLine + i;
+              ;
+
+              if (indent != null) {
+                spaces = indent[0].toString();
+                line = line.substr(spaces.length);
+                spaces = spaces.replace(' ', opts.space);
+              }
+
+              // line = utils.trim(line);
+
+              if (line.length == 0) line = opts.space;
+
+              html += _this.wrapLine(i, lineNumber, (spaces != null ? '<code class="' + brushName + ' spaces">' + spaces + '</code>' : '') + line);
+            }
+
+            return html;
+          },
+
+          /**
+           * Returns HTML for the table title or empty string if title is null.
+           */
+          getTitleHtml: function getTitleHtml(title) {
+            return title ? '<caption>' + title + '</caption>' : '';
+          },
+
+          /**
+           * Finds all matches in the source code.
+           * @param {String} code   Source code to process matches in.
+           * @param {Array} matches Discovered regex matches.
+           * @return {String} Returns formatted HTML with processed mathes.
+           */
+          getMatchesHtml: function getMatchesHtml(code, matches) {
+            function getBrushNameCss(match) {
+              var result = match ? match.brushName || brushName : brushName;
+              return result ? result + ' ' : '';
+            };
+
+            var _this = this,
+                pos = 0,
+                result = '',
+                brushName = _this.opts.brush || '',
+                match,
+                matchBrushName,
+                i,
+                l;
+
+            // Finally, go through the final list of matches and pull the all
+            // together adding everything in between that isn't a match.
+            for (i = 0, l = matches.length; i < l; i++) {
+              match = matches[i];
+
+              if (match === null || match.length === 0) continue;
+
+              matchBrushName = getBrushNameCss(match);
+
+              result += _this.wrapLinesWithCode(code.substr(pos, match.index - pos), matchBrushName + 'plain') + _this.wrapLinesWithCode(match.value, matchBrushName + match.css);
+
+              pos = match.index + match.length + (match.offset || 0);
+            }
+
+            // don't forget to add whatever's remaining in the string
+            result += _this.wrapLinesWithCode(code.substr(pos), getBrushNameCss() + 'plain');
+
+            return result;
+          },
+
+          /**
+           * Generates HTML markup for the whole syntax highlighter.
+           * @param {String} code Source code.
+           * @return {String} Returns HTML markup.
+           */
+          getHtml: function getHtml() {
+            var _this = this,
+                opts = _this.opts,
+                code = _this.code,
+                matches = _this.matches,
+                classes = ['syntaxhighlighter'],
+                lineNumbers,
+                gutter,
+                html;
+
+            if (opts.collapse === true) classes.push('collapsed');
+
+            gutter = opts.gutter !== false;
+
+            if (!gutter) classes.push('nogutter');
+
+            // add custom user style name
+            classes.push(opts.className);
+
+            // add brush alias to the class name for custom CSS
+            classes.push(opts.brush);
+
+            if (gutter) lineNumbers = _this.figureOutLineNumbers(code);
+
+            // processes found matches into the html
+            html = _this.getMatchesHtml(code, matches);
+
+            // finally, split all lines so that they wrap well
+            html = _this.getCodeLinesHtml(html, lineNumbers);
+
+            // finally, process the links
+            if (opts.autoLinks) html = _this.processUrls(html);
+
+            html = '\n      <div class="' + classes.join(' ') + '">\n        <table border="0" cellpadding="0" cellspacing="0">\n          ' + _this.getTitleHtml(opts.title) + '\n          <tbody>\n            <tr>\n              ' + (gutter ? '<td class="gutter">' + _this.renderLineNumbers(code) + '</td>' : '') + '\n              <td class="code">\n                <div class="container">' + html + '</div>\n              </td>\n            </tr>\n          </tbody>\n        </table>\n      </div>\n    ';
+
+            return html;
+          }
+        };
+
+/***/ },
+/* 10 */
+/***/ function(module, exports) {
+
+        'use strict';
+
+        /**
+         * Splits block of text into lines.
+         * @param {String} block Block of text.
+         * @return {Array} Returns array of lines.
+         */
+        function splitLines(block) {
+          return block.split(/\r?\n/);
+        }
+
+        /**
+         * Executes a callback on each line and replaces each line with result from the callback.
+         * @param {Object} str      Input string.
+         * @param {Object} callback   Callback function taking one string argument and returning a string.
+         */
+        function eachLine(str, callback) {
+          var lines = splitLines(str);
+
+          for (var i = 0, l = lines.length; i < l; i++) {
+            lines[i] = callback(lines[i], i);
+          }return lines.join('\n');
+        }
+
+        /**
+         * Generates a unique element ID.
+         */
+        function guid(prefix) {
+          return (prefix || '') + Math.round(Math.random() * 1000000).toString();
+        }
+
+        /**
+         * Merges two objects. Values from obj2 override values in obj1.
+         * Function is NOT recursive and works only for one dimensional objects.
+         * @param {Object} obj1 First object.
+         * @param {Object} obj2 Second object.
+         * @return {Object} Returns combination of both objects.
+         */
+        function merge(obj1, obj2) {
+          var result = {},
+              name;
+
+          for (name in obj1) {
+            result[name] = obj1[name];
+          }for (name in obj2) {
+            result[name] = obj2[name];
+          }return result;
+        }
+
+        /**
+         * Removes all white space at the begining and end of a string.
+         *
+         * @param {String} str   String to trim.
+         * @return {String}      Returns string without leading and following white space characters.
+         */
+        function trim(str) {
+          return str.replace(/^\s+|\s+$/g, '');
+        }
+
+        /**
+         * Converts the source to array object. Mostly used for function arguments and
+         * lists returned by getElementsByTagName() which aren't Array objects.
+         * @param {List} source Source list.
+         * @return {Array} Returns array.
+         */
+        function toArray(source) {
+          return Array.prototype.slice.apply(source);
+        }
+
+        /**
+         * Attempts to convert string to boolean.
+         * @param {String} value Input string.
+         * @return {Boolean} Returns true if input was "true", false if input was "false" and value otherwise.
+         */
+        function toBoolean(value) {
+          var result = { "true": true, "false": false }[value];
+          return result == null ? value : result;
+        }
+
+        module.exports = {
+          splitLines: splitLines,
+          eachLine: eachLine,
+          guid: guid,
+          merge: merge,
+          trim: trim,
+          toArray: toArray,
+          toBoolean: toBoolean
+        };
+
+/***/ },
+/* 11 */
+/***/ function(module, exports, __webpack_require__) {
+
+        'use strict';
+
+        var trim = __webpack_require__(12),
+            bloggerMode = __webpack_require__(13),
+            stripBrs = __webpack_require__(14),
+            unindenter = __webpack_require__(15),
+            retabber = __webpack_require__(16);
+
+        module.exports = function (code, opts) {
+          code = trim(code, opts);
+          code = bloggerMode(code, opts);
+          code = stripBrs(code, opts);
+          code = unindenter.unindent(code, opts);
+
+          var tabSize = opts['tab-size'];
+          code = opts['smart-tabs'] === true ? retabber.smart(code, tabSize) : retabber.regular(code, tabSize);
+
+          return code;
+        };
+
+/***/ },
+/* 12 */
+/***/ function(module, exports) {
+
+        'use strict';
+
+        module.exports = function (code, opts) {
+           return code
+           // This is a special trim which only removes first and last empty lines
+           // and doesn't affect valid leading space on the first line.
+           .replace(/^[ ]*[\n]+|[\n]*[ ]*$/g, '')
+
+           // IE lets these buggers through
+           .replace(/\r/g, ' ');
+        };
+
+/***/ },
+/* 13 */
+/***/ function(module, exports) {
+
+        'use strict';
+
+        module.exports = function (code, opts) {
+          var br = /<br\s*\/?>|&lt;br\s*\/?&gt;/gi;
+
+          if (opts['bloggerMode'] === true) code = code.replace(br, '\n');
+
+          return code;
+        };
+
+/***/ },
+/* 14 */
+/***/ function(module, exports) {
+
+        'use strict';
+
+        module.exports = function (code, opts) {
+          var br = /<br\s*\/?>|&lt;br\s*\/?&gt;/gi;
+
+          if (opts['stripBrs'] === true) code = code.replace(br, '');
+
+          return code;
+        };
+
+/***/ },
+/* 15 */
+/***/ function(module, exports) {
+
+        'use strict';
+
+        function isEmpty(str) {
+          return (/^\s*$/.test(str)
+          );
+        }
+
+        module.exports = {
+          unindent: function unindent(code) {
+            var lines = code.split(/\r?\n/),
+                regex = /^\s*/,
+                min = 1000,
+                line,
+                matches,
+                i,
+                l;
+
+            // go through every line and check for common number of indents
+            for (i = 0, l = lines.length; i < l && min > 0; i++) {
+              line = lines[i];
+
+              if (isEmpty(line)) continue;
+
+              matches = regex.exec(line);
+
+              // In the event that just one line doesn't have leading white space
+              // we can't unindent anything, so bail completely.
+              if (matches == null) return code;
+
+              min = Math.min(matches[0].length, min);
+            }
+
+            // trim minimum common number of white space from the begining of every line
+            if (min > 0) for (i = 0, l = lines.length; i < l; i++) {
+              if (!isEmpty(lines[i])) lines[i] = lines[i].substr(min);
+            }return lines.join('\n');
+          }
+        };
+
+/***/ },
+/* 16 */
+/***/ function(module, exports) {
+
+        'use strict';
+
+        var spaces = '';
+
+        // Create a string with 1000 spaces to copy spaces from...
+        // It's assumed that there would be no indentation longer than that.
+        for (var i = 0; i < 50; i++) {
+          spaces += '                    ';
+        } // 20 spaces * 50
+
+        // This function inserts specified amount of spaces in the string
+        // where a tab is while removing that given tab.
+        function insertSpaces(line, pos, count) {
+          return line.substr(0, pos) + spaces.substr(0, count) + line.substr(pos + 1, line.length) // pos + 1 will get rid of the tab
+          ;
+        }
+
+        module.exports = {
+          smart: function smart(code, tabSize) {
+            var lines = code.split(/\r?\n/),
+                tab = '\t',
+                line,
+                pos,
+                i,
+                l;
+
+            // Go through all the lines and do the 'smart tabs' magic.
+            for (i = 0, l = lines.length; i < l; i++) {
+              line = lines[i];
+
+              if (line.indexOf(tab) === -1) continue;
+
+              pos = 0;
+
+              while ((pos = line.indexOf(tab)) !== -1) {
+                // This is pretty much all there is to the 'smart tabs' logic.
+                // Based on the position within the line and size of a tab,
+                // calculate the amount of spaces we need to insert.
+                line = insertSpaces(line, pos, tabSize - pos % tabSize);
+              }
+
+              lines[i] = line;
+            }
+
+            return lines.join('\n');
+          },
+
+          regular: function regular(code, tabSize) {
+            return code.replace(/\t/g, spaces.substr(0, tabSize));
+          }
+        };
+
+/***/ },
+/* 17 */
+/***/ function(module, exports) {
+
+        'use strict';
+
+        /**
+         * Finds all &lt;SCRIPT TYPE="text/syntaxhighlighter" /> elementss.
+         * Finds both "text/syntaxhighlighter" and "syntaxhighlighter"
+         * ...in order to make W3C validator happy with subtype and backwardscompatible without subtype
+         * @return {Array} Returns array of all found SyntaxHighlighter tags.
+         */
+        function getSyntaxHighlighterScriptTags() {
+          var tags = document.getElementsByTagName('script'),
+              result = [];
+
+          for (var i = 0; i < tags.length; i++) {
+            if (tags[i].type == 'text/syntaxhighlighter' || tags[i].type == 'syntaxhighlighter') result.push(tags[i]);
+          }return result;
+        };
+
+        /**
+         * Checks if target DOM elements has specified CSS class.
+         * @param {DOMElement} target Target DOM element to check.
+         * @param {String} className Name of the CSS class to check for.
+         * @return {Boolean} Returns true if class name is present, false otherwise.
+         */
+        function hasClass(target, className) {
+          return target.className.indexOf(className) != -1;
+        }
+
+        /**
+         * Adds CSS class name to the target DOM element.
+         * @param {DOMElement} target Target DOM element.
+         * @param {String} className New CSS class to add.
+         */
+        function addClass(target, className) {
+          if (!hasClass(target, className)) target.className += ' ' + className;
+        }
+
+        /**
+         * Removes CSS class name from the target DOM element.
+         * @param {DOMElement} target Target DOM element.
+         * @param {String} className CSS class to remove.
+         */
+        function removeClass(target, className) {
+          target.className = target.className.replace(className, '');
+        }
+
+        /**
+         * Adds event handler to the target object.
+         * @param {Object} obj    Target object.
+         * @param {String} type   Name of the event.
+         * @param {Function} func Handling function.
+         */
+        function attachEvent(obj, type, func, scope) {
+          function handler(e) {
+            e = e || window.event;
+
+            if (!e.target) {
+              e.target = e.srcElement;
+              e.preventDefault = function () {
+                this.returnValue = false;
+              };
+            }
+
+            func.call(scope || window, e);
+          };
+
+          if (obj.attachEvent) {
+            obj.attachEvent('on' + type, handler);
+          } else {
+            obj.addEventListener(type, handler, false);
+          }
+        }
+
+        /**
+         * Looks for a child or parent node which has specified classname.
+         * Equivalent to jQuery's $(container).find(".className")
+         * @param {Element} target Target element.
+         * @param {String} search Class name or node name to look for.
+         * @param {Boolean} reverse If set to true, will go up the node tree instead of down.
+         * @return {Element} Returns found child or parent element on null.
+         */
+        function findElement(target, search, reverse /* optional */) {
+          if (target == null) return null;
+
+          var nodes = reverse != true ? target.childNodes : [target.parentNode],
+              propertyToFind = { '#': 'id', '.': 'className' }[search.substr(0, 1)] || 'nodeName',
+              expectedValue,
+              found;
+
+          expectedValue = propertyToFind != 'nodeName' ? search.substr(1) : search.toUpperCase();
+
+          // main return of the found node
+          if ((target[propertyToFind] || '').indexOf(expectedValue) != -1) return target;
+
+          for (var i = 0, l = nodes.length; nodes && i < l && found == null; i++) {
+            found = findElement(nodes[i], search, reverse);
+          }return found;
+        }
+
+        /**
+         * Looks for a parent node which has specified classname.
+         * This is an alias to <code>findElement(container, className, true)</code>.
+         * @param {Element} target Target element.
+         * @param {String} className Class name to look for.
+         * @return {Element} Returns found parent element on null.
+         */
+        function findParentElement(target, className) {
+          return findElement(target, className, true);
+        }
+
+        /**
+         * Opens up a centered popup window.
+         * @param {String} url    URL to open in the window.
+         * @param {String} name   Popup name.
+         * @param {int} width   Popup width.
+         * @param {int} height    Popup height.
+         * @param {String} options  window.open() options.
+         * @return {Window}     Returns window instance.
+         */
+        function popup(url, name, width, height, options) {
+          var x = (screen.width - width) / 2,
+              y = (screen.height - height) / 2;
+
+          options += ', left=' + x + ', top=' + y + ', width=' + width + ', height=' + height;
+          options = options.replace(/^,/, '');
+
+          var win = window.open(url, name, options);
+          win.focus();
+          return win;
+        }
+
+        function getElementsByTagName(name) {
+          return document.getElementsByTagName(name);
+        }
+
+        /**
+         * Finds all elements on the page which could be processes by SyntaxHighlighter.
+         */
+        function findElementsToHighlight(opts) {
+          var elements = getElementsByTagName(opts['tagName']),
+              scripts,
+              i;
+
+          // support for <SCRIPT TYPE="syntaxhighlighter" /> feature
+          if (opts['useScriptTags']) {
+            scripts = getElementsByTagName('script');
+
+            for (i = 0; i < scripts.length; i++) {
+              if (scripts[i].type.match(/^(text\/)?syntaxhighlighter$/)) elements.push(scripts[i]);
+            }
+          }
+
+          return elements;
+        }
+
+        function create(name) {
+          return document.createElement(name);
+        }
+
+        /**
+         * Quick code mouse double click handler.
+         */
+        function quickCodeHandler(e) {
+          var target = e.target,
+              highlighterDiv = findParentElement(target, '.syntaxhighlighter'),
+              container = findParentElement(target, '.container'),
+              textarea = document.createElement('textarea'),
+              highlighter;
+
+          if (!container || !highlighterDiv || findElement(container, 'textarea')) return;
+
+          //highlighter = highlighters.get(highlighterDiv.id);
+
+          // add source class name
+          addClass(highlighterDiv, 'source');
+
+          // Have to go over each line and grab it's text, can't just do it on the
+          // container because Firefox loses all \n where as Webkit doesn't.
+          var lines = container.childNodes,
+              code = [];
+
+          for (var i = 0, l = lines.length; i < l; i++) {
+            code.push(lines[i].innerText || lines[i].textContent);
+          } // using \r instead of \r or \r\n makes this work equally well on IE, FF and Webkit
+          code = code.join('\r');
+
+          // For Webkit browsers, replace nbsp with a breaking space
+          code = code.replace(/\u00a0/g, " ");
+
+          // inject <textarea/> tag
+          textarea.readOnly = true; // https://github.com/syntaxhighlighter/syntaxhighlighter/pull/329
+          textarea.appendChild(document.createTextNode(code));
+          container.appendChild(textarea);
+
+          // preselect all text
+          textarea.focus();
+          textarea.select();
+
+          // set up handler for lost focus
+          attachEvent(textarea, 'blur', function (e) {
+            textarea.parentNode.removeChild(textarea);
+            removeClass(highlighterDiv, 'source');
+          });
+        };
+
+        module.exports = {
+          quickCodeHandler: quickCodeHandler,
+          create: create,
+          popup: popup,
+          hasClass: hasClass,
+          addClass: addClass,
+          removeClass: removeClass,
+          attachEvent: attachEvent,
+          findElement: findElement,
+          findParentElement: findParentElement,
+          getSyntaxHighlighterScriptTags: getSyntaxHighlighterScriptTags,
+          findElementsToHighlight: findElementsToHighlight
+        };
+
+/***/ },
+/* 18 */
+/***/ function(module, exports) {
+
+        'use strict';
+
+        module.exports = {
+          space: '&nbsp;',
+
+          /** Enables use of <SCRIPT type="syntaxhighlighter" /> tags. */
+          useScriptTags: true,
+
+          /** Blogger mode flag. */
+          bloggerMode: false,
+
+          stripBrs: false,
+
+          /** Name of the tag that SyntaxHighlighter will automatically look for. */
+          tagName: 'pre'
+        };
+
+/***/ },
+/* 19 */
+/***/ function(module, exports) {
+
+        'use strict';
+
+        module.exports = {
+          /** Additional CSS class names to be added to highlighter elements. */
+          'class-name': '',
+
+          /** First line number. */
+          'first-line': 1,
+
+          /**
+           * Pads line numbers. Possible values are:
+           *
+           *   false - don't pad line numbers.
+           *   true  - automaticaly pad numbers with minimum required number of leading zeroes.
+           *   [int] - length up to which pad line numbers.
+           */
+          'pad-line-numbers': false,
+
+          /** Lines to highlight. */
+          'highlight': null,
+
+          /** Title to be displayed above the code block. */
+          'title': null,
+
+          /** Enables or disables smart tabs. */
+          'smart-tabs': true,
+
+          /** Gets or sets tab size. */
+          'tab-size': 4,
+
+          /** Enables or disables gutter. */
+          'gutter': true,
+
+          /** Enables quick code copy and paste from double click. */
+          'quick-code': true,
+
+          /** Forces code view to be collapsed. */
+          'collapse': false,
+
+          /** Enables or disables automatic links. */
+          'auto-links': true,
+
+          'unindent': true,
+
+          'html-script': false
+        };
+
+/***/ },
+/* 20 */
+/***/ function(module, exports, __webpack_require__) {
+
+        /* WEBPACK VAR INJECTION */(function(process) {'use strict';
+
+        var applyRegexList = __webpack_require__(5).applyRegexList;
+
+        function HtmlScript(BrushXML, brushClass) {
+          var scriptBrush,
+              xmlBrush = new BrushXML();
+
+          if (brushClass == null) return;
+
+          scriptBrush = new brushClass();
+
+          if (scriptBrush.htmlScript == null) throw new Error('Brush wasn\'t configured for html-script option: ' + brushClass.brushName);
+
+          xmlBrush.regexList.push({ regex: scriptBrush.htmlScript.code, func: process });
+
+          this.regexList = xmlBrush.regexList;
+
+          function offsetMatches(matches, offset) {
+            for (var j = 0, l = matches.length; j < l; j++) {
+              matches[j].index += offset;
+            }
+          }
+
+          function process(match, info) {
+            var code = match.code,
+                results = [],
+                regexList = scriptBrush.regexList,
+                offset = match.index + match.left.length,
+                htmlScript = scriptBrush.htmlScript,
+                matches;
+
+            function add(matches) {
+              results = results.concat(matches);
+            }
+
+            matches = applyRegexList(code, regexList);
+            offsetMatches(matches, offset);
+            add(matches);
+
+            // add left script bracket
+            if (htmlScript.left != null && match.left != null) {
+              matches = applyRegexList(match.left, [htmlScript.left]);
+              offsetMatches(matches, match.index);
+              add(matches);
+            }
+
+            // add right script bracket
+            if (htmlScript.right != null && match.right != null) {
+              matches = applyRegexList(match.right, [htmlScript.right]);
+              offsetMatches(matches, match.index + match[0].lastIndexOf(match.right));
+              add(matches);
+            }
+
+            for (var j = 0, l = results.length; j < l; j++) {
+              results[j].brushName = brushClass.brushName;
+            }return results;
+          }
+        };
+
+        module.exports = HtmlScript;
+        /* WEBPACK VAR INJECTION */}.call(exports, __webpack_require__(21)))
+
+/***/ },
+/* 21 */
+/***/ function(module, exports) {
+
+        'use strict';
+
+        // shim for using process in browser
+
+        var process = module.exports = {};
+
+        // cached from whatever global is present so that test runners that stub it
+        // don't break things.  But we need to wrap it in a try catch in case it is
+        // wrapped in strict mode code which doesn't define any globals.  It's inside a
+        // function because try/catches deoptimize in certain engines.
+
+        var cachedSetTimeout;
+        var cachedClearTimeout;
+
+        (function () {
+            try {
+                cachedSetTimeout = setTimeout;
+            } catch (e) {
+                cachedSetTimeout = function cachedSetTimeout() {
+                    throw new Error('setTimeout is not defined');
+                };
+            }
+            try {
+                cachedClearTimeout = clearTimeout;
+            } catch (e) {
+                cachedClearTimeout = function cachedClearTimeout() {
+                    throw new Error('clearTimeout is not defined');
+                };
+            }
+        })();
+        var queue = [];
+        var draining = false;
+        var currentQueue;
+        var queueIndex = -1;
+
+        function cleanUpNextTick() {
+            if (!draining || !currentQueue) {
+                return;
+            }
+            draining = false;
+            if (currentQueue.length) {
+                queue = currentQueue.concat(queue);
+            } else {
+                queueIndex = -1;
+            }
+            if (queue.length) {
+                drainQueue();
+            }
+        }
+
+        function drainQueue() {
+            if (draining) {
+                return;
+            }
+            var timeout = cachedSetTimeout(cleanUpNextTick);
+            draining = true;
+
+            var len = queue.length;
+            while (len) {
+                currentQueue = queue;
+                queue = [];
+                while (++queueIndex < len) {
+                    if (currentQueue) {
+                        currentQueue[queueIndex].run();
+                    }
+                }
+                queueIndex = -1;
+                len = queue.length;
+            }
+            currentQueue = null;
+            draining = false;
+            cachedClearTimeout(timeout);
+        }
+
+        process.nextTick = function (fun) {
+            var args = new Array(arguments.length - 1);
+            if (arguments.length > 1) {
+                for (var i = 1; i < arguments.length; i++) {
+                    args[i - 1] = arguments[i];
+                }
+            }
+            queue.push(new Item(fun, args));
+            if (queue.length === 1 && !draining) {
+                cachedSetTimeout(drainQueue, 0);
+            }
+        };
+
+        // v8 likes predictible objects
+        function Item(fun, array) {
+            this.fun = fun;
+            this.array = array;
+        }
+        Item.prototype.run = function () {
+            this.fun.apply(null, this.array);
+        };
+        process.title = 'browser';
+        process.browser = true;
+        process.env = {};
+        process.argv = [];
+        process.version = ''; // empty string to avoid regexp issues
+        process.versions = {};
+
+        function noop() {}
+
+        process.on = noop;
+        process.addListener = noop;
+        process.once = noop;
+        process.off = noop;
+        process.removeListener = noop;
+        process.removeAllListeners = noop;
+        process.emit = noop;
+
+        process.binding = function (name) {
+            throw new Error('process.binding is not supported');
+        };
+
+        process.cwd = function () {
+            return '/';
+        };
+        process.chdir = function (dir) {
+            throw new Error('process.chdir is not supported');
+        };
+        process.umask = function () {
+            return 0;
+        };
+
+/***/ },
+/* 22 */
+/***/ function(module, exports, __webpack_require__) {
+
+        'use strict';
+
+        var _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();
+
+        var _syntaxhighlighterHtmlRenderer = __webpack_require__(9);
+
+        var _syntaxhighlighterHtmlRenderer2 = _interopRequireDefault(_syntaxhighlighterHtmlRenderer);
+
+        var _syntaxhighlighterRegex = __webpack_require__(3);
+
+        var _syntaxhighlighterMatch = __webpack_require__(5);
+
+        function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
+
+        function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } }
+
+        module.exports = function () {
+          function BrushBase() {
+            _classCallCheck(this, BrushBase);
+          }
+
+          _createClass(BrushBase, [{
+            key: 'getKeywords',
+
+            /**
+             * Converts space separated list of keywords into a regular expression string.
+             * @param {String} str Space separated keywords.
+             * @return {String} Returns regular expression string.
+             */
+            value: function getKeywords(str) {
+              var results = str.replace(/^\s+|\s+$/g, '').replace(/\s+/g, '|');
+
+              return '\\b(?:' + results + ')\\b';
+            }
+
+            /**
+             * Makes a brush compatible with the `html-script` functionality.
+             * @param {Object} regexGroup Object containing `left` and `right` regular expressions.
+             */
+
+          }, {
+            key: 'forHtmlScript',
+            value: function forHtmlScript(regexGroup) {
+              var regex = { 'end': regexGroup.right.source };
+
+              if (regexGroup.eof) {
+                regex.end = '(?:(?:' + regex.end + ')|$)';
+              }
+
+              this.htmlScript = {
+                left: { regex: regexGroup.left, css: 'script' },
+                right: { regex: regexGroup.right, css: 'script' },
+                code: (0, _syntaxhighlighterRegex.XRegExp)("(?<left>" + regexGroup.left.source + ")" + "(?<code>.*?)" + "(?<right>" + regex.end + ")", "sgi")
+              };
+            }
+          }, {
+            key: 'getHtml',
+            value: function getHtml(code) {
+              var params = arguments.length <= 1 || arguments[1] === undefined ? {} : arguments[1];
+
+              var matches = (0, _syntaxhighlighterMatch.applyRegexList)(code, this.regexList);
+              var renderer = new _syntaxhighlighterHtmlRenderer2.default(code, matches, params);
+              return renderer.getHtml();
+            }
+          }]);
+
+          return BrushBase;
+        }();
+
+/***/ },
+/* 23 */
+/***/ function(module, exports, __webpack_require__) {
+
+        'use strict';
+
+        var BrushBase = __webpack_require__(22);
+        var regexLib = __webpack_require__(3).commonRegExp;
+
+        function Brush() {
+          // AppleScript brush by David Chambers
+          // http://davidchambersdesign.com/
+          var keywords = 'after before beginning continue copy each end every from return get global in local named of set some that the then times to where whose with without';
+          var ordinals = 'first second third fourth fifth sixth seventh eighth ninth tenth last front back middle';
+          var specials = 'activate add alias ask attachment boolean class constant delete duplicate empty exists id integer list make message modal modified new no pi properties quit real record remove rest result reveal reverse run running save string word yes';
+
+          this.regexList = [{
+            regex: /(--|#).*$/gm,
+            css: 'comments'
+          }, {
+            regex: /\(\*(?:[\s\S]*?\(\*[\s\S]*?\*\))*[\s\S]*?\*\)/gm, // support nested comments
+            css: 'comments'
+          }, {
+            regex: /"[\s\S]*?"/gm,
+            css: 'string'
+          }, {
+            regex: /(?:,|:|¬|'s\b|\(|\)|\{|\}|«|\b\w*»)/g, // operators
+            css: 'color1'
+          }, {
+            regex: /(-)?(\d)+(\.(\d)?)?(E\+(\d)+)?/g, // numbers
+            css: 'color1'
+          }, {
+            regex: /(?:&(amp;|gt;|lt;)?|=|>|<|≥|>=|≤|<=|\*|\+|-|\/|÷|\^)/g,
+            css: 'color2'
+          }, {
+            regex: /\b(?:and|as|div|mod|not|or|return(?!\s&)(ing)?|equals|(is(n't| not)? )?equal( to)?|does(n't| not) equal|(is(n't| not)? )?(greater|less) than( or equal( to)?)?|(comes|does(n't| not) come) (after|before)|is(n't| not)?( in)? (back|front) of|is(n't| not)? behind|is(n't| not)?( (in|contained by))?|does(n't| not) contain|contain(s)?|(start|begin|end)(s)? with|((but|end) )?(consider|ignor)ing|prop(erty)?|(a )?ref(erence)?( to)?|repeat (until|while|with)|((end|exit) )?repeat|((else|end) )?if|else|(end )?(script|tell|try)|(on )?error|(put )?into|(of )?(it|me)|its|my|with (timeout( of)?|transaction)|end (timeout|transaction))\b/g,
+            css: 'keyword'
+          }, {
+            regex: /\b\d+(st|nd|rd|th)\b/g, // ordinals
+            css: 'keyword'
+          }, {
+            regex: /\b(?:about|above|against|around|at|below|beneath|beside|between|by|(apart|aside) from|(instead|out) of|into|on(to)?|over|since|thr(ough|u)|under)\b/g,
+            css: 'color3'
+          }, {
+            regex: /\b(?:adding folder items to|after receiving|clipboard info|set the clipboard to|(the )?clipboard|entire contents|document( (edited|file|nib name))?|file( (name|type))?|(info )?for|giving up after|(name )?extension|return(ed)?|second(?! item)(s)?|list (disks|folder)|(Unicode )?text|(disk )?item(s)?|((current|list) )?view|((container|key) )?window|case|diacriticals|hyphens|numeric strings|punctuation|white space|folder creation|application(s( folder)?| (processes|scripts position|support))?|((desktop )?(pictures )?|(documents|downloads|favorites|home|keychain|library|movies|music|public|scripts|sites|system|users|utilities|workflows) )folder|desktop|Folder Action scripts|font(s| panel)?|help|internet plugins|modem scripts|(system )?preferences|printer descriptions|scripting (additions|components)|shared (documents|libraries)|startup (disk|items)|temporary items|trash|on server|in AppleTalk zone|((as|long|short) )?user name|user (ID|locale)|(with )?password|in (bundle( with identifier)?|directory)|(close|open for) access|read|write( permission)?|(g|s)et eof|starting at|hidden( answer)?|open(ed| (location|untitled))?|error (handling|reporting)|administrator privileges|altering line endings|get volume settings|(alert|boot|input|mount|output|set) volume|output muted|(fax|random )?number|round(ing)?|up|down|toward zero|to nearest|as taught in school|system (attribute|info)|((AppleScript( Studio)?|system) )?version|(home )?directory|(IPv4|primary Ethernet) address|CPU (type|speed)|physical memory|time (stamp|to GMT)|replacing|ASCII (character|number)|localized string|from table|offset|summarize|beep|delay|say|(empty|multiple) selections allowed|(of|preferred) type|invisibles|showing( package contents)?|editable URL|(File|FTP|News|Media|Web) [Ss]ervers|Telnet hosts|Directory services|Remote applications|waiting until completion|saving( (in|to))?|path (for|to( (((current|frontmost) )?application|resource))?)|(background|RGB) color|(OK|cancel) button name|cancel button|button(s)?|cubic ((centi)?met(re|er)s|yards|feet|inches)|square ((kilo)?met(re|er)s|miles|yards|feet)|(centi|kilo)?met(re|er)s|miles|yards|feet|inches|lit(re|er)s|gallons|quarts|(kilo)?grams|ounces|pounds|degrees (Celsius|Fahrenheit|Kelvin)|print( (dialog|settings))?|clos(e(able)?|ing)|(de)?miniaturized|miniaturizable|zoom(ed|able)|attribute run|action (method|property|title)|phone|email|((start|end)ing|home) page|((birth|creation|current|custom|modification) )?date|((((phonetic )?(first|last|middle))|computer|host|maiden|related) |nick)?name|aim|icq|jabber|msn|yahoo|address(es)?|save addressbook|should enable action|city|country( code)?|formatte(r|d address)|(palette )?label|state|street|zip|AIM [Hh]andle(s)?|my card|select(ion| all)?|unsaved|(alpha )?value|entr(y|ies)|(ICQ|Jabber|MSN) handle|person|people|company|department|icon image|job title|note|organization|suffix|vcard|url|copies|collating|pages (across|down)|request print time|target( printer)?|((GUI Scripting|Script menu) )?enabled|show Computer scripts|(de)?activated|awake from nib|became (key|main)|call method|of (class|object)|center|clicked toolbar item|closed|for document|exposed|(can )?hide|idle|keyboard (down|up)|event( (number|type))?|launch(ed)?|load (image|movie|nib|sound)|owner|log|mouse (down|dragged|entered|exited|moved|up)|move|column|localization|resource|script|register|drag (info|types)|resigned (active|key|main)|resiz(e(d)?|able)|right mouse (down|dragged|up)|scroll wheel|(at )?index|should (close|open( untitled)?|quit( after last window closed)?|zoom)|((proposed|screen) )?bounds|show(n)?|behind|in front of|size (mode|to fit)|update(d| toolbar item)?|was (hidden|miniaturized)|will (become active|close|finish launching|hide|miniaturize|move|open|quit|(resign )?active|((maximum|minimum|proposed) )?size|show|zoom)|bundle|data source|movie|pasteboard|sound|tool(bar| tip)|(color|open|save) panel|coordinate system|frontmost|main( (bundle|menu|window))?|((services|(excluded from )?windows) )?menu|((executable|frameworks|resource|scripts|shared (frameworks|support)) )?path|(selected item )?identifier|data|content(s| view)?|character(s)?|click count|(command|control|option|shift) key down|context|delta (x|y|z)|key( code)?|location|pressure|unmodified characters|types|(first )?responder|playing|(allowed|selectable) identifiers|allows customization|(auto saves )?configuration|visible|image( name)?|menu form representation|tag|user(-| )defaults|associated file name|(auto|needs) display|current field editor|floating|has (resize indicator|shadow)|hides when deactivated|level|minimized (image|title)|opaque|position|release when closed|sheet|title(d)?)\b/g,
+            css: 'color4'
+          }, {
+            regex: /\b(?:tracks|paragraph|text item(s)?)\b/g,
+            css: 'classes'
+          }, {
+            regex: /\b(?:AppleScript|album|video kind|grouping|length|text item delimiters|quoted form|POSIX path(?= of))\b/g,
+            css: 'properties'
+          }, {
+            regex: /\b(?:run|exists|count)\b/g,
+            css: 'commandNames'
+          }, {
+            regex: /\b(?:POSIX (file|path))\b/g,
+            css: 'additionClasses'
+          }, {
+            regex: /\b(?:message|with (data|icon( (caution|note|stop))?|parameter(s)?|prompt|properties|seed|title)|regexp|string result|using( delimiters)?|default (answer|button|color|country code|entr(y|ies)|identifiers|items|name|location|script editor))\b/g,
+            css: 'additionParameterNames'
+          }, {
+            regex: /\b(?:display(ing| (alert|dialog|mode))?|choose( ((remote )?application|color|folder|from list|URL))?|(do( shell)?|load|run|store) script|re_compile|find text)\b/g,
+            css: 'additionCommandNames'
+          }, {
+            regex: /\b(?:xxx)\b/g,
+            css: 'parameterNames'
+          }, {
+            regex: /\b(?:true|false|none)\b/g,
+            css: 'enumeratedValues'
+          }, {
+            regex: new RegExp(this.getKeywords(specials), 'gm'),
+            css: 'color3'
+          }, {
+            regex: new RegExp(this.getKeywords(keywords), 'gm'),
+            css: 'keyword'
+          }, {
+            regex: new RegExp(this.getKeywords(ordinals), 'gm'),
+            css: 'keyword'
+          }];
+        };
+
+        Brush.prototype = new BrushBase();
+        Brush.aliases = ['applescript'];
+        module.exports = Brush;
+
+/***/ },
+/* 24 */
+/***/ function(module, exports, __webpack_require__) {
+
+        'use strict';
+
+        var BrushBase = __webpack_require__(22);
+        var regexLib = __webpack_require__(3).commonRegExp;
+
+        function Brush() {
+          // Created by Peter Atoria @ http://iAtoria.com
+
+          var inits = 'class interface function package';
+
+          var keywords = '-Infinity ...rest Array as AS3 Boolean break case catch const continue Date decodeURI ' + 'decodeURIComponent default delete do dynamic each else encodeURI encodeURIComponent escape ' + 'extends false final finally flash_proxy for get if implements import in include Infinity ' + 'instanceof int internal is isFinite isNaN isXMLName label namespace NaN native new null ' + 'Null Number Object object_proxy override parseFloat parseInt private protected public ' + 'return set static String super switch this throw true try typeof uint undefined unescape ' + 'use void while with';
+
+          this.regexList = [{
+            regex: regexLib.singleLineCComments,
+            css: 'comments'
+          }, {
+            regex: regexLib.multiLineCComments,
+            css: 'comments'
+          }, {
+            regex: regexLib.doubleQuotedString,
+            css: 'string'
+          }, {
+            regex: regexLib.singleQuotedString,
+            css: 'string'
+          }, {
+            regex: /\b([\d]+(\.[\d]+)?|0x[a-f0-9]+)\b/gi,
+            css: 'value'
+          }, {
+            regex: new RegExp(this.getKeywords(inits), 'gm'),
+            css: 'color3'
+          }, {
+            regex: new RegExp(this.getKeywords(keywords), 'gm'),
+            css: 'keyword'
+          }, {
+            regex: new RegExp('var', 'gm'),
+            css: 'variable'
+          }, {
+            regex: new RegExp('trace', 'gm'),
+            css: 'color1'
+          }];
+
+          this.forHtmlScript(regexLib.scriptScriptTags);
+        };
+
+        Brush.prototype = new BrushBase();
+        Brush.aliases = ['actionscript3', 'as3'];
+        module.exports = Brush;
+
+/***/ },
+/* 25 */
+/***/ function(module, exports, __webpack_require__) {
+
+        'use strict';
+
+        var BrushBase = __webpack_require__(22);
+        var regexLib = __webpack_require__(3).commonRegExp;
+        var XRegExp = __webpack_require__(3).XRegExp;
+        var Match = __webpack_require__(5).Match;
+
+        function Brush() {
+          function hereDocProcess(match, regexInfo) {
+            var result = [];
+
+            if (match.here_doc != null) result.push(new Match(match.here_doc, match.index + match[0].indexOf(match.here_doc), 'string'));
+
+            if (match.full_tag != null) result.push(new Match(match.full_tag, match.index, 'preprocessor'));
+
+            if (match.end_tag != null) result.push(new Match(match.end_tag, match.index + match[0].lastIndexOf(match.end_tag), 'preprocessor'));
+
+            return result;
+          }
+
+          var keywords = 'if fi then elif else for do done until while break continue case esac function return in eq ne ge le';
+          var commands = 'alias apropos awk basename base64 bash bc bg builtin bunzip2 bzcat bzip2 bzip2recover cal cat cd cfdisk chgrp chmod chown chroot' + 'cksum clear cmp comm command cp cron crontab crypt csplit cut date dc dd ddrescue declare df ' + 'diff diff3 dig dir dircolors dirname dirs du echo egrep eject enable env ethtool eval ' + 'exec exit expand export expr false fdformat fdisk fg fgrep file find fmt fold format ' + 'free fsck ftp gawk gcc gdb getconf getopts grep groups gunzip gzcat gzip hash head history hostname id ifconfig ' + 'import install join kill less let ln local locate logname logout look lpc lpr lprint ' + 'lprintd lprintq lprm ls lsof make man mkdir mkfifo mkisofs mknod more mount mtools ' + 'mv nasm nc ndisasm netstat nice nl nohup nslookup objdump od open op passwd paste pathchk ping popd pr printcap ' + 'printenv printf ps pushd pwd quota quotacheck quotactl ram rcp read readonly renice ' + 'remsync rm rmdir rsync screen scp sdiff sed select seq set sftp shift shopt shutdown ' + 'sleep sort source split ssh strace strings su sudo sum symlink sync tail tar tee test time ' + 'times touch top traceroute trap tr true tsort tty type ulimit umask umount unalias ' + 'uname unexpand uniq units unset unshar useradd usermod users uuencode uudecode v vdir ' + 'vi watch wc whereis which who whoami Wget xargs xxd yes chsh zcat';
+
+          this.regexList = [{
+            regex: /^#!.*$/gm,
+            css: 'preprocessor bold'
+          }, {
+            regex: /\/[\w-\/]+/gm,
+            css: 'plain'
+          }, {
+            regex: regexLib.singleLinePerlComments,
+            css: 'comments'
+          }, {
+            regex: regexLib.doubleQuotedString,
+            css: 'string'
+          }, {
+            regex: regexLib.singleQuotedString,
+            css: 'string'
+          }, {
+            regex: new RegExp(this.getKeywords(keywords), 'gm'),
+            css: 'keyword'
+          }, {
+            regex: new RegExp(this.getKeywords(commands), 'gm'),
+            css: 'functions'
+          }, {
+            regex: new XRegExp("(?<full_tag>(&lt;|<){2}(?<tag>\\w+)) .*$(?<here_doc>[\\s\\S]*)(?<end_tag>^\\k<tag>$)", 'gm'),
+            func: hereDocProcess
+          }];
+        }
+
+        Brush.prototype = new BrushBase();
+        Brush.aliases = ['bash', 'shell', 'sh'];
+        module.exports = Brush;
+
+/***/ },
+/* 26 */
+/***/ function(module, exports, __webpack_require__) {
+
+        'use strict';
+
+        var BrushBase = __webpack_require__(22);
+        var regexLib = __webpack_require__(3).commonRegExp;
+
+        function Brush() {
+          // Contributed by Jen
+          // http://www.jensbits.com/2009/05/14/coldfusion-brush-for-syntaxhighlighter-plus
+
+          var funcs = 'Abs ACos AddSOAPRequestHeader AddSOAPResponseHeader AjaxLink AjaxOnLoad ArrayAppend ArrayAvg ArrayClear ArrayDeleteAt ' + 'ArrayInsertAt ArrayIsDefined ArrayIsEmpty ArrayLen ArrayMax ArrayMin ArraySet ArraySort ArraySum ArraySwap ArrayToList ' + 'Asc ASin Atn BinaryDecode BinaryEncode BitAnd BitMaskClear BitMaskRead BitMaskSet BitNot BitOr BitSHLN BitSHRN BitXor ' + 'Ceiling CharsetDecode CharsetEncode Chr CJustify Compare CompareNoCase Cos CreateDate CreateDateTime CreateObject ' + 'CreateODBCDate CreateODBCDateTime CreateODBCTime CreateTime CreateTimeSpan CreateUUID DateAdd DateCompare DateConvert ' + 'DateDiff DateFormat DatePart Day DayOfWeek DayOfWeekAsString DayOfYear DaysInMonth DaysInYear DE DecimalFormat DecrementValue ' + 'Decrypt DecryptBinary DeleteClientVariable DeserializeJSON DirectoryExists DollarFormat DotNetToCFType Duplicate Encrypt ' + 'EncryptBinary Evaluate Exp ExpandPath FileClose FileCopy FileDelete FileExists FileIsEOF FileMove FileOpen FileRead ' + 'FileReadBinary FileReadLine FileSetAccessMode FileSetAttribute FileSetLastModified FileWrite Find FindNoCase FindOneOf ' + 'FirstDayOfMonth Fix FormatBaseN GenerateSecretKey GetAuthUser GetBaseTagData GetBaseTagList GetBaseTemplatePath ' + 'GetClientVariablesList GetComponentMetaData GetContextRoot GetCurrentTemplatePath GetDirectoryFromPath GetEncoding ' + 'GetException GetFileFromPath GetFileInfo GetFunctionList GetGatewayHelper GetHttpRequestData GetHttpTimeString ' + 'GetK2ServerDocCount GetK2ServerDocCountLimit GetLocale GetLocaleDisplayName GetLocalHostIP GetMetaData GetMetricData ' + 'GetPageContext GetPrinterInfo GetProfileSections GetProfileString GetReadableImageFormats GetSOAPRequest GetSOAPRequestHeader ' + 'GetSOAPResponse GetSOAPResponseHeader GetTempDirectory GetTempFile GetTemplatePath GetTickCount GetTimeZoneInfo GetToken ' + 'GetUserRoles GetWriteableImageFormats Hash Hour HTMLCodeFormat HTMLEditFormat IIf ImageAddBorder ImageBlur ImageClearRect ' + 'ImageCopy ImageCrop ImageDrawArc ImageDrawBeveledRect ImageDrawCubicCurve ImageDrawLine ImageDrawLines ImageDrawOval ' + 'ImageDrawPoint ImageDrawQuadraticCurve ImageDrawRect ImageDrawRoundRect ImageDrawText ImageFlip ImageGetBlob ImageGetBufferedImage ' + 'ImageGetEXIFTag ImageGetHeight ImageGetIPTCTag ImageGetWidth ImageGrayscale ImageInfo ImageNegative ImageNew ImageOverlay ImagePaste ' + 'ImageRead ImageReadBase64 ImageResize ImageRotate ImageRotateDrawingAxis ImageScaleToFit ImageSetAntialiasing ImageSetBackgroundColor ' + 'ImageSetDrawingColor ImageSetDrawingStroke ImageSetDrawingTransparency ImageSharpen ImageShear ImageShearDrawingAxis ImageTranslate ' + 'ImageTranslateDrawingAxis ImageWrite ImageWriteBase64 ImageXORDrawingMode IncrementValue InputBaseN Insert Int IsArray IsBinary ' + 'IsBoolean IsCustomFunction IsDate IsDDX IsDebugMode IsDefined IsImage IsImageFile IsInstanceOf IsJSON IsLeapYear IsLocalHost ' + 'IsNumeric IsNumericDate IsObject IsPDFFile IsPDFObject IsQuery IsSimpleValue IsSOAPRequest IsStruct IsUserInAnyRole IsUserInRole ' + 'IsUserLoggedIn IsValid IsWDDX IsXML IsXmlAttribute IsXmlDoc IsXmlElem IsXmlNode IsXmlRoot JavaCast JSStringFormat LCase Left Len ' + 'ListAppend ListChangeDelims ListContains ListContainsNoCase ListDeleteAt ListFind ListFindNoCase ListFirst ListGetAt ListInsertAt ' + 'ListLast ListLen ListPrepend ListQualify ListRest ListSetAt ListSort ListToArray ListValueCount ListValueCountNoCase LJustify Log ' + 'Log10 LSCurrencyFormat LSDateFormat LSEuroCurrencyFormat LSIsCurrency LSIsDate LSIsNumeric LSNumberFormat LSParseCurrency LSParseDateTime ' + 'LSParseEuroCurrency LSParseNumber LSTimeFormat LTrim Max Mid Min Minute Month MonthAsString Now NumberFormat ParagraphFormat ParseDateTime ' + 'Pi PrecisionEvaluate PreserveSingleQuotes Quarter QueryAddColumn QueryAddRow QueryConvertForGrid QueryNew QuerySetCell QuotedValueList Rand ' + 'Randomize RandRange REFind REFindNoCase ReleaseComObject REMatch REMatchNoCase RemoveChars RepeatString Replace ReplaceList ReplaceNoCase ' + 'REReplace REReplaceNoCase Reverse Right RJustify Round RTrim Second SendGatewayMessage SerializeJSON SetEncoding SetLocale SetProfileString ' + 'SetVariable Sgn Sin Sleep SpanExcluding SpanIncluding Sqr StripCR StructAppend StructClear StructCopy StructCount StructDelete StructFind ' + 'StructFindKey StructFindValue StructGet StructInsert StructIsEmpty StructKeyArray StructKeyExists StructKeyList StructKeyList StructNew ' + 'StructSort StructUpdate Tan TimeFormat ToBase64 ToBinary ToScript ToString Trim UCase URLDecode URLEncodedFormat URLSessionFormat Val ' + 'ValueList VerifyClient Week Wrap Wrap WriteOutput XmlChildPos XmlElemNew XmlFormat XmlGetNodeType XmlNew XmlParse XmlSearch XmlTransform ' + 'XmlValidate Year YesNoFormat';
+
+          var keywords = 'cfabort cfajaximport cfajaxproxy cfapplet cfapplication cfargument cfassociate cfbreak cfcache cfcalendar ' + 'cfcase cfcatch cfchart cfchartdata cfchartseries cfcol cfcollection cfcomponent cfcontent cfcookie cfdbinfo ' + 'cfdefaultcase cfdirectory cfdiv cfdocument cfdocumentitem cfdocumentsection cfdump cfelse cfelseif cferror ' + 'cfexchangecalendar cfexchangeconnection cfexchangecontact cfexchangefilter cfexchangemail cfexchangetask ' + 'cfexecute cfexit cffeed cffile cfflush cfform cfformgroup cfformitem cfftp cffunction cfgrid cfgridcolumn ' + 'cfgridrow cfgridupdate cfheader cfhtmlhead cfhttp cfhttpparam cfif cfimage cfimport cfinclude cfindex ' + 'cfinput cfinsert cfinterface cfinvoke cfinvokeargument cflayout cflayoutarea cfldap cflocation cflock cflog ' + 'cflogin cfloginuser cflogout cfloop cfmail cfmailparam cfmailpart cfmenu cfmenuitem cfmodule cfNTauthenticate ' + 'cfobject cfobjectcache cfoutput cfparam cfpdf cfpdfform cfpdfformparam cfpdfparam cfpdfsubform cfpod cfpop ' + 'cfpresentation cfpresentationslide cfpresenter cfprint cfprocessingdirective cfprocparam cfprocresult ' + 'cfproperty cfquery cfqueryparam cfregistry cfreport cfreportparam cfrethrow cfreturn cfsavecontent cfschedule ' + 'cfscript cfsearch cfselect cfset cfsetting cfsilent cfslider cfsprydataset cfstoredproc cfswitch cftable ' + 'cftextarea cfthread cfthrow cftimer cftooltip cftrace cftransaction cftree cftreeitem cftry cfupdate cfwddx ' + 'cfwindow cfxml cfzip cfzipparam';
+
+          var operators = 'all and any between cross in join like not null or outer some';
+
+          this.regexList = [{
+            regex: new RegExp('--(.*)$', 'gm'),
+            css: 'comments'
+          }, {
+            regex: regexLib.xmlComments,
+            css: 'comments'
+          }, {
+            regex: regexLib.doubleQuotedString,
+            css: 'string'
+          }, {
+            regex: regexLib.singleQuotedString,
+            css: 'string'
+          }, {
+            regex: new RegExp(this.getKeywords(funcs), 'gmi'),
+            css: 'functions'
+          }, {
+            regex: new RegExp(this.getKeywords(operators), 'gmi'),
+            css: 'color1'
+          }, {
+            regex: new RegExp(this.getKeywords(keywords), 'gmi'),
+            css: 'keyword'
+          }];
+        }
+
+        Brush.prototype = new BrushBase();
+        Brush.aliases = ['coldfusion', 'cf'];
+        module.exports = Brush;
+
+/***/ },
+/* 27 */
+/***/ function(module, exports, __webpack_require__) {
+
+        'use strict';
+
+        var BrushBase = __webpack_require__(22);
+        var regexLib = __webpack_require__(3).commonRegExp;
+
+        function Brush() {
+          // Copyright 2006 Shin, YoungJin
+
+          var datatypes = 'ATOM BOOL BOOLEAN BYTE CHAR COLORREF DWORD DWORDLONG DWORD_PTR ' + 'DWORD32 DWORD64 FLOAT HACCEL HALF_PTR HANDLE HBITMAP HBRUSH ' + 'HCOLORSPACE HCONV HCONVLIST HCURSOR HDC HDDEDATA HDESK HDROP HDWP ' + 'HENHMETAFILE HFILE HFONT HGDIOBJ HGLOBAL HHOOK HICON HINSTANCE HKEY ' + 'HKL HLOCAL HMENU HMETAFILE HMODULE HMONITOR HPALETTE HPEN HRESULT ' + 'HRGN HRSRC HSZ HWINSTA HWND INT INT_PTR INT32 INT64 LANGID LCID LCTYPE ' + 'LGRPID LONG LONGLONG LONG_PTR LONG32 LONG64 LPARAM LPBOOL LPBYTE LPCOLORREF ' + 'LPCSTR LPCTSTR LPCVOID LPCWSTR LPDWORD LPHANDLE LPINT LPLONG LPSTR LPTSTR ' + 'LPVOID LPWORD LPWSTR LRESULT PBOOL PBOOLEAN PBYTE PCHAR PCSTR PCTSTR PCWSTR ' + 'PDWORDLONG PDWORD_PTR PDWORD32 PDWORD64 PFLOAT PHALF_PTR PHANDLE PHKEY PINT ' + 'PINT_PTR PINT32 PINT64 PLCID PLONG PLONGLONG PLONG_PTR PLONG32 PLONG64 POINTER_32 ' + 'POINTER_64 PSHORT PSIZE_T PSSIZE_T PSTR PTBYTE PTCHAR PTSTR PUCHAR PUHALF_PTR ' + 'PUINT PUINT_PTR PUINT32 PUINT64 PULONG PULONGLONG PULONG_PTR PULONG32 PULONG64 ' + 'PUSHORT PVOID PWCHAR PWORD PWSTR SC_HANDLE SC_LOCK SERVICE_STATUS_HANDLE SHORT ' + 'SIZE_T SSIZE_T TBYTE TCHAR UCHAR UHALF_PTR UINT UINT_PTR UINT32 UINT64 ULONG ' + 'ULONGLONG ULONG_PTR ULONG32 ULONG64 USHORT USN VOID WCHAR WORD WPARAM WPARAM WPARAM ' + 'char char16_t char32_t bool short int __int32 __int64 __int8 __int16 long float double __wchar_t ' + 'clock_t _complex _dev_t _diskfree_t div_t ldiv_t _exception _EXCEPTION_POINTERS ' + 'FILE _finddata_t _finddatai64_t _wfinddata_t _wfinddatai64_t __finddata64_t ' + '__wfinddata64_t _FPIEEE_RECORD fpos_t _HEAPINFO _HFILE lconv intptr_t ' + 'jmp_buf mbstate_t _off_t _onexit_t _PNH ptrdiff_t _purecall_handler ' + 'sig_atomic_t size_t _stat __stat64 _stati64 terminate_function ' + 'time_t __time64_t _timeb __timeb64 tm uintptr_t _utimbuf ' + 'va_list wchar_t wctrans_t wctype_t wint_t signed';
+
+          var keywords = 'alignas alignof auto break case catch class const constexpr decltype __finally __exception __try ' + 'const_cast continue private public protected __declspec ' + 'default delete deprecated dllexport dllimport do dynamic_cast ' + 'else enum explicit extern if for friend goto inline ' + 'mutable naked namespace new noinline noreturn nothrow noexcept nullptr ' + 'register reinterpret_cast return selectany ' + 'sizeof static static_cast static_assert struct switch template this ' + 'thread thread_local throw true false try typedef typeid typename union ' + 'using uuid virtual void volatile whcar_t while';
+
+          var functions = 'assert isalnum isalpha iscntrl isdigit isgraph islower isprint ' + 'ispunct isspace isupper isxdigit tolower toupper errno localeconv ' + 'setlocale acos asin atan atan2 ceil cos cosh exp fabs floor fmod ' + 'frexp ldexp log log10 modf pow sin sinh sqrt tan tanh jmp_buf ' + 'longjmp setjmp raise signal sig_atomic_t va_arg va_end va_start ' + 'clearerr fclose feof ferror fflush fgetc fgetpos fgets fopen ' + 'fprintf fputc fputs fread freopen fscanf fseek fsetpos ftell ' + 'fwrite getc getchar gets perror printf putc putchar puts remove ' + 'rename rewind scanf setbuf setvbuf sprintf sscanf tmpfile tmpnam ' + 'ungetc vfprintf vprintf vsprintf abort abs atexit atof atoi atol ' + 'bsearch calloc div exit free getenv labs ldiv malloc mblen mbstowcs ' + 'mbtowc qsort rand realloc srand strtod strtol strtoul system ' + 'wcstombs wctomb memchr memcmp memcpy memmove memset strcat strchr ' + 'strcmp strcoll strcpy strcspn strerror strlen strncat strncmp ' + 'strncpy strpbrk strrchr strspn strstr strtok strxfrm asctime ' + 'clock ctime difftime gmtime localtime mktime strftime time';
+
+          this.regexList = [{
+            regex: regexLib.singleLineCComments,
+            css: 'comments'
+          }, {
+            regex: regexLib.multiLineCComments,
+            css: 'comments'
+          }, {
+            regex: regexLib.doubleQuotedString,
+            css: 'string'
+          }, {
+            regex: regexLib.singleQuotedString,
+            css: 'string'
+          }, {
+            regex: /^ *#.*/gm,
+            css: 'preprocessor'
+          }, {
+            regex: new RegExp(this.getKeywords(datatypes), 'gm'),
+            css: 'color1 bold'
+          }, {
+            regex: new RegExp(this.getKeywords(functions), 'gm'),
+            css: 'functions bold'
+          }, {
+            regex: new RegExp(this.getKeywords(keywords), 'gm'),
+            css: 'keyword bold'
+          }];
+        };
+
+        Brush.prototype = new BrushBase();
+        Brush.aliases = ['cpp', 'cc', 'c++', 'c', 'h', 'hpp', 'h++'];
+        module.exports = Brush;
+
+/***/ },
+/* 28 */
+/***/ function(module, exports, __webpack_require__) {
+
+        'use strict';
+
+        var BrushBase = __webpack_require__(22);
+        var regexLib = __webpack_require__(3).commonRegExp;
+        var Match = __webpack_require__(5).Match;
+
+        function Brush() {
+          var keywords = 'abstract as base bool break byte case catch char checked class const ' + 'continue decimal default delegate do double else enum event explicit volatile ' + 'extern false finally fixed float for foreach get goto if implicit in int ' + 'interface internal is lock long namespace new null object operator out ' + 'override params private protected public readonly ref return sbyte sealed set ' + 'short sizeof stackalloc static string struct switch this throw true try ' + 'typeof uint ulong unchecked unsafe ushort using virtual void while var ' + 'from group by into select let where orderby join on equals ascending descending';
+
+          function fixComments(match, regexInfo) {
+            var css = match[0].indexOf("///") == 0 ? 'color1' : 'comments';
+            return [new Match(match[0], match.index, css)];
+          }
+
+          this.regexList = [{
+            regex: regexLib.singleLineCComments,
+            func: fixComments
+          }, {
+            regex: regexLib.multiLineCComments,
+            css: 'comments'
+          }, {
+            regex: /@"(?:[^"]|"")*"/g,
+            css: 'string'
+          }, {
+            regex: regexLib.doubleQuotedString,
+            css: 'string'
+          }, {
+            regex: regexLib.singleQuotedString,
+            css: 'string'
+          }, {
+            regex: /^\s*#.*/gm,
+            css: 'preprocessor'
+          }, {
+            regex: new RegExp(this.getKeywords(keywords), 'gm'),
+            css: 'keyword'
+          }, {
+            regex: /\bpartial(?=\s+(?:class|interface|struct)\b)/g,
+            css: 'keyword'
+          }, {
+            regex: /\byield(?=\s+(?:return|break)\b)/g,
+            css: 'keyword'
+          }];
+
+          this.forHtmlScript(regexLib.aspScriptTags);
+        };
+
+        Brush.prototype = new BrushBase();
+        Brush.aliases = ['c#', 'c-sharp', 'csharp'];
+        module.exports = Brush;
+
+/***/ },
+/* 29 */
+/***/ function(module, exports, __webpack_require__) {
+
+        'use strict';
+
+        var BrushBase = __webpack_require__(22);
+        var regexLib = __webpack_require__(3).commonRegExp;
+
+        function Brush() {
+          function getKeywordsCSS(str) {
+            return '\\b([a-z_]|)' + str.replace(/ /g, '(?=:)\\b|\\b([a-z_\\*]|\\*|)') + '(?=:)\\b';
+          };
+
+          function getValuesCSS(str) {
+            return '\\b' + str.replace(/ /g, '(?!-)(?!:)\\b|\\b()') + '\:\\b';
+          };
+
+          var keywords = 'ascent azimuth background-attachment background-color background-image background-position ' + 'background-repeat background baseline bbox border-collapse border-color border-spacing border-style border-top ' + 'border-right border-bottom border-left border-top-color border-right-color border-bottom-color border-left-color ' + 'border-top-style border-right-style border-bottom-style border-left-style border-top-width border-right-width ' + 'border-bottom-width border-left-width border-width border bottom cap-height caption-side centerline clear clip color ' + 'content counter-increment counter-reset cue-after cue-before cue cursor definition-src descent direction display ' + 'elevation empty-cells float font-size-adjust font-family font-size font-stretch font-style font-variant font-weight font ' + 'height left letter-spacing line-height list-style-image list-style-position list-style-type list-style margin-top ' + 'margin-right margin-bottom margin-left margin marker-offset marks mathline max-height max-width min-height min-width orphans ' + 'outline-color outline-style outline-width outline overflow padding-top padding-right padding-bottom padding-left padding page ' + 'page-break-after page-break-before page-break-inside pause pause-after pause-before pitch pitch-range play-during position ' + 'quotes right richness size slope src speak-header speak-numeral speak-punctuation speak speech-rate stemh stemv stress ' + 'table-layout text-align top text-decoration text-indent text-shadow text-transform unicode-bidi unicode-range units-per-em ' + 'vertical-align visibility voice-family volume white-space widows width widths word-spacing x-height z-index';
+
+          var values = 'above absolute all always aqua armenian attr aural auto avoid baseline behind below bidi-override black blink block blue bold bolder ' + 'both bottom braille capitalize caption center center-left center-right circle close-quote code collapse compact condensed ' + 'continuous counter counters crop cross crosshair cursive dashed decimal decimal-leading-zero default digits disc dotted double ' + 'embed embossed e-resize expanded extra-condensed extra-expanded fantasy far-left far-right fast faster fixed format fuchsia ' + 'gray green groove handheld hebrew help hidden hide high higher icon inline-table inline inset inside invert italic ' + 'justify landscape large larger left-side left leftwards level lighter lime line-through list-item local loud lower-alpha ' + 'lowercase lower-greek lower-latin lower-roman lower low ltr marker maroon medium message-box middle mix move narrower ' + 'navy ne-resize no-close-quote none no-open-quote no-repeat normal nowrap n-resize nw-resize oblique olive once open-quote outset ' + 'outside overline pointer portrait pre print projection purple red relative repeat repeat-x repeat-y rgb ridge right right-side ' + 'rightwards rtl run-in screen scroll semi-condensed semi-expanded separate se-resize show silent silver slower slow ' + 'small small-caps small-caption smaller soft solid speech spell-out square s-resize static status-bar sub super sw-resize ' + 'table-caption table-cell table-column table-column-group table-footer-group table-header-group table-row table-row-group teal ' + 'text-bottom text-top thick thin top transparent tty tv ultra-condensed ultra-expanded underline upper-alpha uppercase upper-latin ' + 'upper-roman url visible wait white wider w-resize x-fast x-high x-large x-loud x-low x-slow x-small x-soft xx-large xx-small yellow';
+
+          var fonts = '[mM]onospace [tT]ahoma [vV]erdana [aA]rial [hH]elvetica [sS]ans-serif [sS]erif [cC]ourier mono sans serif';
+
+          this.regexList = [{
+            regex: regexLib.multiLineCComments,
+            css: 'comments'
+          }, {
+            regex: regexLib.doubleQuotedString,
+            css: 'string'
+          }, {
+            regex: regexLib.singleQuotedString,
+            css: 'string'
+          }, {
+            regex: /\#[a-fA-F0-9]{3,6}/g,
+            css: 'value'
+          }, {
+            regex: /(-?\d+)(\.\d+)?(px|em|pt|\:|\%|)/g,
+            css: 'value'
+          }, {
+            regex: /!important/g,
+            css: 'color3'
+          }, {
+            regex: new RegExp(getKeywordsCSS(keywords), 'gm'),
+            css: 'keyword'
+          }, {
+            regex: new RegExp(getValuesCSS(values), 'g'),
+            css: 'value'
+          }, {
+            regex: new RegExp(this.getKeywords(fonts), 'g'),
+            css: 'color1'
+          }];
+
+          this.forHtmlScript({
+            left: /(&lt;|<)\s*style.*?(&gt;|>)/gi,
+            right: /(&lt;|<)\/\s*style\s*(&gt;|>)/gi
+          });
+        };
+
+        Brush.prototype = new BrushBase();
+        Brush.aliases = ['css'];
+        module.exports = Brush;
+
+/***/ },
+/* 30 */
+/***/ function(module, exports, __webpack_require__) {
+
+        'use strict';
+
+        var BrushBase = __webpack_require__(22);
+        var regexLib = __webpack_require__(3).commonRegExp;
+
+        function Brush() {
+          var keywords = 'abs addr and ansichar ansistring array as asm begin boolean byte cardinal ' + 'case char class comp const constructor currency destructor div do double ' + 'downto else end except exports extended false file finalization finally ' + 'for function goto if implementation in inherited int64 initialization ' + 'integer interface is label library longint longword mod nil not object ' + 'of on or packed pansichar pansistring pchar pcurrency pdatetime pextended ' + 'pint64 pointer private procedure program property pshortstring pstring ' + 'pvariant pwidechar pwidestring protected public published raise real real48 ' + 'record repeat set shl shortint shortstring shr single smallint string then ' + 'threadvar to true try type unit until uses val var varirnt while widechar ' + 'widestring with word write writeln xor';
+
+          this.regexList = [{
+            regex: /\(\*[\s\S]*?\*\)/gm,
+            css: 'comments'
+          }, {
+            regex: /{(?!\$)[\s\S]*?}/gm,
+            css: 'comments'
+          }, {
+            regex: regexLib.singleLineCComments,
+            css: 'comments'
+          }, {
+            regex: regexLib.singleQuotedString,
+            css: 'string'
+          }, {
+            regex: /\{\$[a-zA-Z]+ .+\}/g,
+            css: 'color1'
+          }, {
+            regex: /\b[\d\.]+\b/g,
+            css: 'value'
+          }, {
+            regex: /\$[a-zA-Z0-9]+\b/g,
+            css: 'value'
+          }, {
+            regex: new RegExp(this.getKeywords(keywords), 'gmi'),
+            css: 'keyword'
+          }];
+        };
+
+        Brush.prototype = new BrushBase();
+        Brush.aliases = ['delphi', 'pascal', 'pas'];
+        module.exports = Brush;
+
+/***/ },
+/* 31 */
+/***/ function(module, exports, __webpack_require__) {
+
+        'use strict';
+
+        var BrushBase = __webpack_require__(22);
+        var regexLib = __webpack_require__(3).commonRegExp;
+
+        function Brush() {
+          this.regexList = [{
+            regex: /^\+\+\+ .*$/gm,
+            css: 'color2'
+          }, {
+            regex: /^\-\-\- .*$/gm,
+            css: 'color2'
+          }, {
+            regex: /^\s.*$/gm,
+            css: 'color1'
+          }, {
+            regex: /^@@.*@@.*$/gm,
+            css: 'variable'
+          }, {
+            regex: /^\+.*$/gm,
+            css: 'string'
+          }, {
+            regex: /^\-.*$/gm,
+            css: 'color3'
+          }];
+        };
+
+        Brush.prototype = new BrushBase();
+        Brush.aliases = ['diff', 'patch'];
+        module.exports = Brush;
+
+/***/ },
+/* 32 */
+/***/ function(module, exports, __webpack_require__) {
+
+        'use strict';
+
+        var BrushBase = __webpack_require__(22);
+        var regexLib = __webpack_require__(3).commonRegExp;
+
+        function Brush() {
+          // Contributed by Jean-Lou Dupont
+          // http://jldupont.blogspot.com/2009/06/erlang-syntax-highlighter.html
+
+          // According to: http://erlang.org/doc/reference_manual/introduction.html#1.5
+          var keywords = 'after and andalso band begin bnot bor bsl bsr bxor ' + 'case catch cond div end fun if let not of or orelse ' + 'query receive rem try when xor' +
+          // additional
+          ' module export import define';
+
+          this.regexList = [{
+            regex: new RegExp("[A-Z][A-Za-z0-9_]+", 'g'),
+            css: 'constants'
+          }, {
+            regex: new RegExp("\\%.+", 'gm'),
+            css: 'comments'
+          }, {
+            regex: new RegExp("\\?[A-Za-z0-9_]+", 'g'),
+            css: 'preprocessor'
+          }, {
+            regex: new RegExp("[a-z0-9_]+:[a-z0-9_]+", 'g'),
+            css: 'functions'
+          }, {
+            regex: regexLib.doubleQuotedString,
+            css: 'string'
+          }, {
+            regex: regexLib.singleQuotedString,
+            css: 'string'
+          }, {
+            regex: new RegExp(this.getKeywords(keywords), 'gm'),
+            css: 'keyword'
+          }];
+        };
+
+        Brush.prototype = new BrushBase();
+        Brush.aliases = ['erl', 'erlang'];
+        module.exports = Brush;
+
+/***/ },
+/* 33 */
+/***/ function(module, exports, __webpack_require__) {
+
+        'use strict';
+
+        var BrushBase = __webpack_require__(22);
+        var regexLib = __webpack_require__(3).commonRegExp;
+
+        function Brush() {
+          // Contributed by Andres Almiray
+          // http://jroller.com/aalmiray/entry/nice_source_code_syntax_highlighter
+
+          var keywords = 'as assert break case catch class continue def default do else extends finally ' + 'if in implements import instanceof interface new package property return switch ' + 'throw throws try while public protected private static';
+          var types = 'void boolean byte char short int long float double';
+          var constants = 'null';
+          var methods = 'allProperties count get size ' + 'collect each eachProperty eachPropertyName eachWithIndex find findAll ' + 'findIndexOf grep inject max min reverseEach sort ' + 'asImmutable asSynchronized flatten intersect join pop reverse subMap toList ' + 'padRight padLeft contains eachMatch toCharacter toLong toUrl tokenize ' + 'eachFile eachFileRecurse eachB yte eachLine readBytes readLine getText ' + 'splitEachLine withReader append encodeBase64 decodeBase64 filterLine ' + 'transformChar transformLine withOutputStream withPrintWriter withStream ' + 'withStreams withWriter withWriterAppend write writeLine ' + 'dump inspect invokeMethod print println step times upto use waitForOrKill ' + 'getText';
+
+          this.regexList = [{
+            regex: regexLib.singleLineCComments,
+            css: 'comments'
+          }, {
+            regex: regexLib.multiLineCComments,
+            css: 'comments'
+          }, {
+            regex: regexLib.doubleQuotedString,
+            css: 'string'
+          }, {
+            regex: regexLib.singleQuotedString,
+            css: 'string'
+          }, {
+            regex: /""".*"""/g,
+            css: 'string'
+          }, {
+            regex: new RegExp('\\b([\\d]+(\\.[\\d]+)?|0x[a-f0-9]+)\\b', 'gi'),
+            css: 'value'
+          }, {
+            regex: new RegExp(this.getKeywords(keywords), 'gm'),
+            css: 'keyword'
+          }, {
+            regex: new RegExp(this.getKeywords(types), 'gm'),
+            css: 'color1'
+          }, {
+            regex: new RegExp(this.getKeywords(constants), 'gm'),
+            css: 'constants'
+          }, {
+            regex: new RegExp(this.getKeywords(methods), 'gm'),
+            css: 'functions'
+          }];
+
+          this.forHtmlScript(regexLib.aspScriptTags);
+        }
+
+        Brush.prototype = new BrushBase();
+        Brush.aliases = ['groovy'];
+        module.exports = Brush;
+
+/***/ },
+/* 34 */
+/***/ function(module, exports, __webpack_require__) {
+
+        'use strict';
+
+        var BrushBase = __webpack_require__(22);
+        var regexLib = __webpack_require__(3).commonRegExp;
+
+        function Brush() {
+
+          var inits = 'class interface package macro enum typedef extends implements dynamic in for if while else do try switch case catch';
+
+          var keywords = 'return break continue new throw cast using import function public private inline static untyped callback true false null Int Float String Void Std Bool Dynamic Array Vector';
+
+          this.regexList = [{
+            regex: regexLib.singleLineCComments,
+            css: 'comments'
+          }, {
+            regex: regexLib.multiLineCComments,
+            css: 'comments'
+          }, {
+            regex: regexLib.doubleQuotedString,
+            css: 'string'
+          }, {
+            regex: regexLib.singleQuotedString,
+            css: 'string'
+          }, {
+            regex: /\b([\d]+(\.[\d]+)?|0x[a-f0-9]+)\b/gi,
+            css: 'value'
+          }, {
+            regex: new RegExp(this.getKeywords(inits), 'gm'),
+            css: 'color3'
+          }, {
+            regex: new RegExp(this.getKeywords(keywords), 'gm'),
+            css: 'keyword'
+          }, {
+            regex: new RegExp('var', 'gm'),
+            css: 'variable'
+          }, {
+            regex: new RegExp('trace', 'gm'),
+            css: 'color1'
+          }, {
+            regex: new RegExp('#if', 'gm'),
+            css: 'comments'
+          }, {
+            regex: new RegExp('#elseif', 'gm'),
+            css: 'comments'
+          }, {
+            regex: new RegExp('#end', 'gm'),
+            css: 'comments'
+          }, {
+            regex: new RegExp('#error', 'gm'),
+            css: 'comments'
+          }];
+
+          //standard compiler conditionals flags
+          var flags = ["debug", "error", "cpp", "js", "neko", "php", "flash", "flash8", "flash9", "flash10", "flash10", "mobile", "desktop", "web", "ios", "android", "iphone"];
+
+          //append the flags to the array with a ! operator
+          var i;
+          var length = flags.length;
+          for (i = 0; i <= length - 1; i++) {
+            this.regexList.push({
+              regex: new RegExp(flags[i], 'gm'),
+              css: 'comments'
+            });
+            this.regexList.push({
+              regex: new RegExp('!' + flags[i], 'gm'),
+              css: 'comments'
+            });
+          }
+
+          this.forHtmlScript(regexLib.scriptScriptTags);
+        }
+
+        ;
+
+        Brush.prototype = new BrushBase();
+        Brush.aliases = ['haxe', 'hx'];
+        module.exports = Brush;
+
+/***/ },
+/* 35 */
+/***/ function(module, exports, __webpack_require__) {
+
+        'use strict';
+
+        var BrushBase = __webpack_require__(22);
+        var regexLib = __webpack_require__(3).commonRegExp;
+
+        function Brush() {
+          var keywords = 'abstract assert boolean break byte case catch char class const ' + 'continue default do double else enum extends ' + 'false final finally float for goto if implements import ' + 'instanceof int interface long native new null ' + 'package private protected public return ' + 'short static strictfp super switch synchronized this throw throws true ' + 'transient try void volatile while';
+
+          this.regexList = [{
+            regex: regexLib.singleLineCComments,
+            css: 'comments'
+          }, {
+            regex: /\/\*([^\*][\s\S]*?)?\*\//gm,
+            css: 'comments'
+          }, {
+            regex: /\/\*(?!\*\/)\*[\s\S]*?\*\//gm,
+            css: 'preprocessor'
+          }, {
+            regex: regexLib.doubleQuotedString,
+            css: 'string'
+          }, {
+            regex: regexLib.singleQuotedString,
+            css: 'string'
+          }, {
+            regex: /\b([\d]+(\.[\d]+)?f?|[\d]+l?|0x[a-f0-9]+)\b/gi,
+            css: 'value'
+          }, {
+            regex: /(?!\@interface\b)\@[\$\w]+\b/g,
+            css: 'color1'
+          }, {
+            regex: /\@interface\b/g,
+            css: 'color2'
+          }, {
+            regex: new RegExp(this.getKeywords(keywords), 'gm'),
+            css: 'keyword'
+          }];
+
+          this.forHtmlScript({
+            left: /(&lt;|<)%[@!=]?/g,
+            right: /%(&gt;|>)/g
+          });
+        };
+
+        Brush.prototype = new BrushBase();
+        Brush.aliases = ['java'];
+        module.exports = Brush;
+
+/***/ },
+/* 36 */
+/***/ function(module, exports, __webpack_require__) {
+
+        'use strict';
+
+        var BrushBase = __webpack_require__(22);
+        var regexLib = __webpack_require__(3).commonRegExp;
+
+        function Brush() {
+          // Contributed by Patrick Webster
+          // http://patrickwebster.blogspot.com/2009/04/javafx-brush-for-syntaxhighlighter.html
+          var datatypes = 'Boolean Byte Character Double Duration ' + 'Float Integer Long Number Short String Void';
+
+          var keywords = 'abstract after and as assert at before bind bound break catch class ' + 'continue def delete else exclusive extends false finally first for from ' + 'function if import in indexof init insert instanceof into inverse last ' + 'lazy mixin mod nativearray new not null on or override package postinit ' + 'protected public public-init public-read replace return reverse sizeof ' + 'step super then this throw true try tween typeof var where while with ' + 'attribute let private readonly static trigger';
+
+          this.regexList = [{
+            regex: regexLib.singleLineCComments,
+            css: 'comments'
+          }, {
+            regex: regexLib.multiLineCComments,
+            css: 'comments'
+          }, {
+            regex: regexLib.singleQuotedString,
+            css: 'string'
+          }, {
+            regex: regexLib.doubleQuotedString,
+            css: 'string'
+          }, {
+            regex: /(-?\.?)(\b(\d*\.?\d+|\d+\.?\d*)(e[+-]?\d+)?|0x[a-f\d]+)\b\.?/gi,
+            css: 'color2'
+          }, {
+            regex: new RegExp(this.getKeywords(datatypes), 'gm'),
+            css: 'variable'
+          }, {
+            regex: new RegExp(this.getKeywords(keywords), 'gm'),
+            css: 'keyword'
+          }];
+          this.forHtmlScript(regexLib.aspScriptTags);
+        };
+
+        Brush.prototype = new BrushBase();
+        Brush.aliases = ['jfx', 'javafx'];
+        module.exports = Brush;
+
+/***/ },
+/* 37 */
+/***/ function(module, exports, __webpack_require__) {
+
+        'use strict';
+
+        var BrushBase = __webpack_require__(22);
+        var regexLib = __webpack_require__(3).commonRegExp;
+
+        function Brush() {
+          var keywords = 'break case catch class continue ' + 'default delete do else enum export extends false  ' + 'for from as function if implements import in instanceof ' + 'interface let new null package private protected ' + 'static return super switch ' + 'this throw true try typeof var while with yield';
+
+          this.regexList = [{
+            regex: regexLib.multiLineDoubleQuotedString,
+            css: 'string'
+          }, {
+            regex: regexLib.multiLineSingleQuotedString,
+            css: 'string'
+          }, {
+            regex: regexLib.singleLineCComments,
+            css: 'comments'
+          }, {
+            regex: regexLib.multiLineCComments,
+            css: 'comments'
+          }, {
+            regex: /\s*#.*/gm,
+            css: 'preprocessor'
+          }, {
+            regex: new RegExp(this.getKeywords(keywords), 'gm'),
+            css: 'keyword'
+          }];
+
+          this.forHtmlScript(regexLib.scriptScriptTags);
+        }
+
+        Brush.prototype = new BrushBase();
+        Brush.aliases = ['js', 'jscript', 'javascript', 'json'];
+        module.exports = Brush;
+
+/***/ },
+/* 38 */
+/***/ function(module, exports, __webpack_require__) {
+
+        'use strict';
+
+        var BrushBase = __webpack_require__(22);
+        var regexLib = __webpack_require__(3).commonRegExp;
+
+        function Brush() {
+          // Contributed by David Simmons-Duffin and Marty Kube
+
+          var funcs = 'abs accept alarm atan2 bind binmode chdir chmod chomp chop chown chr ' + 'chroot close closedir connect cos crypt defined delete each endgrent ' + 'endhostent endnetent endprotoent endpwent endservent eof exec exists ' + 'exp fcntl fileno flock fork format formline getc getgrent getgrgid ' + 'getgrnam gethostbyaddr gethostbyname gethostent getlogin getnetbyaddr ' + 'getnetbyname getnetent getpeername getpgrp getppid getpriority ' + 'getprotobyname getprotobynumber getprotoent getpwent getpwnam getpwuid ' + 'getservbyname getservbyport getservent getsockname getsockopt glob ' + 'gmtime grep hex index int ioctl join keys kill lc lcfirst length link ' + 'listen localtime lock log lstat map mkdir msgctl msgget msgrcv msgsnd ' + 'oct open opendir ord pack pipe pop pos print printf prototype push ' + 'quotemeta rand read readdir readline readlink readpipe recv rename ' + 'reset reverse rewinddir rindex rmdir scalar seek seekdir select semctl ' + 'semget semop send setgrent sethostent setnetent setpgrp setpriority ' + 'setprotoent setpwent setservent setsockopt shift shmctl shmget shmread ' + 'shmwrite shutdown sin sleep socket socketpair sort splice split sprintf ' + 'sqrt srand stat study substr symlink syscall sysopen sysread sysseek ' + 'system syswrite tell telldir time times tr truncate uc ucfirst umask ' + 'undef unlink unpack unshift utime values vec wait waitpid warn write ' +
+          // feature
+          'say';
+
+          var keywords = 'bless caller continue dbmclose dbmopen die do dump else elsif eval exit ' + 'for foreach goto if import last local my next no our package redo ref ' + 'require return sub tie tied unless untie until use wantarray while ' +
+          // feature
+          'given when default ' +
+          // Try::Tiny
+          'try catch finally ' +
+          // Moose
+          'has extends with before after around override augment';
+
+          this.regexList = [{
+            regex: /(<<|&lt;&lt;)((\w+)|(['"])(.+?)\4)[\s\S]+?\n\3\5\n/g,
+            css: 'string'
+          }, {
+            regex: /#.*$/gm,
+            css: 'comments'
+          }, {
+            regex: /^#!.*\n/g,
+            css: 'preprocessor'
+          }, {
+            regex: /-?\w+(?=\s*=(>|&gt;))/g,
+            css: 'string'
+          },
+
+          // is this too much?
+          {
+            regex: /\bq[qwxr]?\([\s\S]*?\)/g,
+            css: 'string'
+          }, {
+            regex: /\bq[qwxr]?\{[\s\S]*?\}/g,
+            css: 'string'
+          }, {
+            regex: /\bq[qwxr]?\[[\s\S]*?\]/g,
+            css: 'string'
+          }, {
+            regex: /\bq[qwxr]?(<|&lt;)[\s\S]*?(>|&gt;)/g,
+            css: 'string'
+          }, {
+            regex: /\bq[qwxr]?([^\w({<[])[\s\S]*?\1/g,
+            css: 'string'
+          }, {
+            regex: regexLib.doubleQuotedString,
+            css: 'string'
+          }, {
+            regex: regexLib.singleQuotedString,
+            css: 'string'
+          }, {
+            regex: /(?:&amp;|[$@%*]|\$#)\$?[a-zA-Z_](\w+|::)*/g,
+            css: 'variable'
+          }, {
+            regex: /\b__(?:END|DATA)__\b[\s\S]*$/g,
+            css: 'comments'
+          }, {
+            regex: /(^|\n)=\w[\s\S]*?(\n=cut\s*(?=\n)|$)/g,
+            css: 'comments'
+          }, {
+            regex: new RegExp(this.getKeywords(funcs), 'gm'),
+            css: 'functions'
+          }, {
+            regex: new RegExp(this.getKeywords(keywords), 'gm'),
+            css: 'keyword'
+          }];
+
+          this.forHtmlScript(regexLib.phpScriptTags);
+        }
+
+        Brush.prototype = new BrushBase();
+        Brush.aliases = ['perl', 'Perl', 'pl'];
+        module.exports = Brush;
+
+/***/ },
+/* 39 */
+/***/ function(module, exports, __webpack_require__) {
+
+        'use strict';
+
+        Object.defineProperty(exports, "__esModule", {
+          value: true
+        });
+
+        var _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();
+
+        var _brushBase = __webpack_require__(22);
+
+        var _brushBase2 = _interopRequireDefault(_brushBase);
+
+        var _syntaxhighlighterRegex = __webpack_require__(3);
+
+        function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
+
+        function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } }
+
+        function _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError("this hasn't been initialised - super() hasn't been called"); } return call && (typeof call === "object" || typeof call === "function") ? call : self; }
+
+        function _inherits(subClass, superClass) { if (typeof superClass !== "function" && superClass !== null) { throw new TypeError("Super expression must either be null or a function, not " + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }
+
+        var functions = 'abs acos acosh addcslashes addslashes ' + 'array_change_key_case array_chunk array_combine array_count_values array_diff ' + 'array_diff_assoc array_diff_key array_diff_uassoc array_diff_ukey array_fill ' + 'array_filter array_flip array_intersect array_intersect_assoc array_intersect_key ' + 'array_intersect_uassoc array_intersect_ukey array_key_exists array_keys array_map ' + 'array_merge array_merge_recursive array_multisort array_pad array_pop array_product ' + 'array_push array_rand array_reduce array_reverse array_search array_shift ' + 'array_slice array_splice array_sum array_udiff array_udiff_assoc ' + 'array_udiff_uassoc array_uintersect array_uintersect_assoc ' + 'array_uintersect_uassoc array_unique array_unshift array_values array_walk ' + 'array_walk_recursive atan atan2 atanh base64_decode base64_encode base_convert ' + 'basename bcadd bccomp bcdiv bcmod bcmul bindec bindtextdomain bzclose bzcompress ' + 'bzdecompress bzerrno bzerror bzerrstr bzflush bzopen bzread bzwrite ceil chdir ' + 'checkdate checkdnsrr chgrp chmod chop chown chr chroot chunk_split class_exists ' + 'closedir closelog copy cos cosh count count_chars date decbin dechex decoct ' + 'deg2rad delete ebcdic2ascii echo empty end ereg ereg_replace eregi eregi_replace error_log ' + 'error_reporting escapeshellarg escapeshellcmd eval exec exit exp explode extension_loaded ' + 'feof fflush fgetc fgetcsv fgets fgetss file_exists file_get_contents file_put_contents ' + 'fileatime filectime filegroup fileinode filemtime fileowner fileperms filesize filetype ' + 'floatval flock floor flush fmod fnmatch fopen fpassthru fprintf fputcsv fputs fread fscanf ' + 'fseek fsockopen fstat ftell ftok getallheaders getcwd getdate getenv gethostbyaddr gethostbyname ' + 'gethostbynamel getimagesize getlastmod getmxrr getmygid getmyinode getmypid getmyuid getopt ' + 'getprotobyname getprotobynumber getrandmax getrusage getservbyname getservbyport gettext ' + 'gettimeofday gettype glob gmdate gmmktime ini_alter ini_get ini_get_all ini_restore ini_set ' + 'interface_exists intval ip2long is_a is_array is_bool is_callable is_dir is_double ' + 'is_executable is_file is_finite is_float is_infinite is_int is_integer is_link is_long ' + 'is_nan is_null is_numeric is_object is_readable is_real is_resource is_scalar is_soap_fault ' + 'is_string is_subclass_of is_uploaded_file is_writable is_writeable mkdir mktime nl2br ' + 'parse_ini_file parse_str parse_url passthru pathinfo print readlink realpath rewind rewinddir rmdir ' + 'round str_ireplace str_pad str_repeat str_replace str_rot13 str_shuffle str_split ' + 'str_word_count strcasecmp strchr strcmp strcoll strcspn strftime strip_tags stripcslashes ' + 'stripos stripslashes stristr strlen strnatcasecmp strnatcmp strncasecmp strncmp strpbrk ' + 'strpos strptime strrchr strrev strripos strrpos strspn strstr strtok strtolower strtotime ' + 'strtoupper strtr strval substr substr_compare';
+
+        var keywords = 'abstract and array as break case catch cfunction class clone const continue declare default die do ' + 'else elseif enddeclare endfor endforeach endif endswitch endwhile extends final finally for foreach ' + 'function global goto if implements include include_once interface instanceof insteadof namespace new ' + 'old_function or private protected public return require require_once static switch ' + 'trait throw try use const while xor yield ';
+
+        var constants = '__FILE__ __LINE__ __METHOD__ __FUNCTION__ __CLASS__';
+
+        var Brush = function (_BrushBase) {
+          _inherits(Brush, _BrushBase);
+
+          _createClass(Brush, null, [{
+            key: 'aliases',
+            get: function get() {
+              return ['php'];
+            }
+          }]);
+
+          function Brush() {
+            _classCallCheck(this, Brush);
+
+            var _this = _possibleConstructorReturn(this, Object.getPrototypeOf(Brush).call(this));
+
+            _this.regexList = [{ regex: _syntaxhighlighterRegex.commonRegExp.singleLineCComments, css: 'comments' }, { regex: _syntaxhighlighterRegex.commonRegExp.multiLineCComments, css: 'comments' }, { regex: _syntaxhighlighterRegex.commonRegExp.doubleQuotedString, css: 'string' }, { regex: _syntaxhighlighterRegex.commonRegExp.singleQuotedString, css: 'string' }, { regex: /\$\w+/g, css: 'variable' }, { regex: new RegExp(_this.getKeywords(functions), 'gmi'), css: 'functions' }, { regex: new RegExp(_this.getKeywords(constants), 'gmi'), css: 'constants' }, { regex: new RegExp(_this.getKeywords(keywords), 'gm'), css: 'keyword' }];
+
+            _this.forHtmlScript(_syntaxhighlighterRegex.commonRegExp.phpScriptTags);
+            return _this;
+          }
+
+          return Brush;
+        }(_brushBase2.default);
+
+        exports.default = Brush;
+
+/***/ },
+/* 40 */
+/***/ function(module, exports, __webpack_require__) {
+
+        'use strict';
+
+        var BrushBase = __webpack_require__(22);
+        var regexLib = __webpack_require__(3).commonRegExp;
+
+        function Brush() {
+          this.regexList = [];
+        };
+
+        Brush.prototype = new BrushBase();
+        Brush.aliases = ['text', 'plain'];
+        module.exports = Brush;
+
+/***/ },
+/* 41 */
+/***/ function(module, exports, __webpack_require__) {
+
+        'use strict';
+
+        var BrushBase = __webpack_require__(22);
+        var regexLib = __webpack_require__(3).commonRegExp;
+
+        function Brush() {
+          // Contributed by Joel 'Jaykul' Bennett, http://PoshCode.org | http://HuddledMasses.org
+          var keywords = 'while validateset validaterange validatepattern validatelength validatecount ' + 'until trap switch return ref process param parameter in if global: ' + 'function foreach for finally filter end elseif else dynamicparam do default ' + 'continue cmdletbinding break begin alias \\? % #script #private #local #global ' + 'mandatory parametersetname position valuefrompipeline ' + 'valuefrompipelinebypropertyname valuefromremainingarguments helpmessage ';
+
+          var operators = ' and as band bnot bor bxor casesensitive ccontains ceq cge cgt cle ' + 'clike clt cmatch cne cnotcontains cnotlike cnotmatch contains ' + 'creplace eq exact f file ge gt icontains ieq ige igt ile ilike ilt ' + 'imatch ine inotcontains inotlike inotmatch ireplace is isnot le like ' + 'lt match ne not notcontains notlike notmatch or regex replace wildcard';
+
+          var verbs = 'write where wait use update unregister undo trace test tee take suspend ' + 'stop start split sort skip show set send select scroll resume restore ' + 'restart resolve resize reset rename remove register receive read push ' + 'pop ping out new move measure limit join invoke import group get format ' + 'foreach export expand exit enter enable disconnect disable debug cxnew ' + 'copy convertto convertfrom convert connect complete compare clear ' + 'checkpoint aggregate add';
+
+          // I can't find a way to match the comment based help in multi-line comments, because SH won't highlight in highlights, and javascript doesn't support lookbehind
+          var commenthelp = ' component description example externalhelp forwardhelpcategory forwardhelptargetname forwardhelptargetname functionality inputs link notes outputs parameter remotehelprunspace role synopsis';
+
+          this.regexList = [{
+            regex: new RegExp('^\\s*#[#\\s]*\\.(' + this.getKeywords(commenthelp) + ').*$', 'gim'),
+            css: 'preprocessor help bold'
+          }, {
+            regex: regexLib.singleLinePerlComments,
+            css: 'comments'
+          }, {
+            regex: /(&lt;|<)#[\s\S]*?#(&gt;|>)/gm,
+            css: 'comments here'
+          }, {
+            regex: new RegExp('@"\\n[\\s\\S]*?\\n"@', 'gm'),
+            css: 'script string here'
+          }, {
+            regex: new RegExp("@'\\n[\\s\\S]*?\\n'@", 'gm'),
+            css: 'script string single here'
+          }, {
+            regex: new RegExp('"(?:\\$\\([^\\)]*\\)|[^"]|`"|"")*[^`]"', 'g'),
+            css: 'string'
+          }, {
+            regex: new RegExp("'(?:[^']|'')*'", 'g'),
+            css: 'string single'
+          }, {
+            regex: new RegExp('[\\$|@|@@](?:(?:global|script|private|env):)?[A-Z0-9_]+', 'gi'),
+            css: 'variable'
+          }, {
+            regex: new RegExp('(?:\\b' + verbs.replace(/ /g, '\\b|\\b') + ')-[a-zA-Z_][a-zA-Z0-9_]*', 'gmi'),
+            css: 'functions'
+          }, {
+            regex: new RegExp(this.getKeywords(keywords), 'gmi'),
+            css: 'keyword'
+          }, {
+            regex: new RegExp('-' + this.getKeywords(operators), 'gmi'),
+            css: 'operator value'
+          }, {
+            regex: new RegExp('\\[[A-Z_\\[][A-Z0-9_. `,\\[\\]]*\\]', 'gi'),
+            css: 'constants'
+          }, {
+            regex: new RegExp('\\s+-(?!' + this.getKeywords(operators) + ')[a-zA-Z_][a-zA-Z0-9_]*', 'gmi'),
+            css: 'color1'
+          }];
+        };
+
+        Brush.prototype = new BrushBase();
+        Brush.aliases = ['powershell', 'ps', 'posh'];
+        module.exports = Brush;
+
+/***/ },
+/* 42 */
+/***/ function(module, exports, __webpack_require__) {
+
+        'use strict';
+
+        var BrushBase = __webpack_require__(22);
+        var regexLib = __webpack_require__(3).commonRegExp;
+
+        function Brush() {
+          // Contributed by Gheorghe Milas and Ahmad Sherif
+
+          var keywords = 'and assert break class continue def del elif else ' + 'except exec finally for from global if import in is ' + 'lambda not or pass raise return try yield while';
+
+          var funcs = '__import__ abs all any apply basestring bin bool buffer callable ' + 'chr classmethod cmp coerce compile complex delattr dict dir ' + 'divmod enumerate eval execfile file filter float format frozenset ' + 'getattr globals hasattr hash help hex id input int intern ' + 'isinstance issubclass iter len list locals long map max min next ' + 'object oct open ord pow print property range raw_input reduce ' + 'reload repr reversed round set setattr slice sorted staticmethod ' + 'str sum super tuple type type unichr unicode vars xrange zip';
+
+          var special = 'None True False self cls class_';
+
+          this.regexList = [{
+            regex: regexLib.singleLinePerlComments,
+            css: 'comments'
+          }, {
+            regex: /^\s*@\w+/gm,
+            css: 'decorator'
+          }, {
+            regex: /(['\"]{3})([^\1])*?\1/gm,
+            css: 'comments'
+          }, {
+            regex: /"(?!")(?:\.|\\\"|[^\""\n])*"/gm,
+            css: 'string'
+          }, {
+            regex: /'(?!')(?:\.|(\\\')|[^\''\n])*'/gm,
+            css: 'string'
+          }, {
+            regex: /\+|\-|\*|\/|\%|=|==/gm,
+            css: 'keyword'
+          }, {
+            regex: /\b\d+\.?\w*/g,
+            css: 'value'
+          }, {
+            regex: new RegExp(this.getKeywords(funcs), 'gmi'),
+            css: 'functions'
+          }, {
+            regex: new RegExp(this.getKeywords(keywords), 'gm'),
+            css: 'keyword'
+          }, {
+            regex: new RegExp(this.getKeywords(special), 'gm'),
+            css: 'color1'
+          }];
+
+          this.forHtmlScript(regexLib.aspScriptTags);
+        };
+
+        Brush.prototype = new BrushBase();
+        Brush.aliases = ['py', 'python'];
+        module.exports = Brush;
+
+/***/ },
+/* 43 */
+/***/ function(module, exports, __webpack_require__) {
+
+        'use strict';
+
+        var BrushBase = __webpack_require__(22);
+        var regexLib = __webpack_require__(3).commonRegExp;
+
+        function Brush() {
+          // Contributed by Erik Peterson.
+
+          var keywords = 'alias and BEGIN begin break case class def define_method defined do each else elsif ' + 'END end ensure false for if in module new next nil not or raise redo rescue retry return ' + 'self super then throw true undef unless until when while yield';
+
+          var builtins = 'Array Bignum Binding Class Continuation Dir Exception FalseClass File::Stat File Fixnum Fload ' + 'Hash Integer IO MatchData Method Module NilClass Numeric Object Proc Range Regexp String Struct::TMS Symbol ' + 'ThreadGroup Thread Time TrueClass';
+
+          this.regexList = [{
+            regex: regexLib.singleLinePerlComments,
+            css: 'comments'
+          }, {
+            regex: regexLib.doubleQuotedString,
+            css: 'string'
+          }, {
+            regex: regexLib.singleQuotedString,
+            css: 'string'
+          }, {
+            regex: /\b[A-Z0-9_]+\b/g,
+            css: 'constants'
+          }, {
+            regex: /:[a-z][A-Za-z0-9_]*/g,
+            css: 'color2'
+          }, {
+            regex: /(\$|@@|@)\w+/g,
+            css: 'variable bold'
+          }, {
+            regex: new RegExp(this.getKeywords(keywords), 'gm'),
+            css: 'keyword'
+          }, {
+            regex: new RegExp(this.getKeywords(builtins), 'gm'),
+            css: 'color1'
+          }];
+
+          this.forHtmlScript(regexLib.aspScriptTags);
+        };
+
+        Brush.prototype = new BrushBase();
+        Brush.aliases = ['ruby', 'rails', 'ror', 'rb'];
+        module.exports = Brush;
+
+/***/ },
+/* 44 */
+/***/ function(module, exports, __webpack_require__) {
+
+        'use strict';
+
+        var BrushBase = __webpack_require__(22);
+        var regexLib = __webpack_require__(3).commonRegExp;
+
+        function Brush() {
+          function getKeywordsCSS(str) {
+            return '\\b([a-z_]|)' + str.replace(/ /g, '(?=:)\\b|\\b([a-z_\\*]|\\*|)') + '(?=:)\\b';
+          };
+
+          function getValuesCSS(str) {
+            return '\\b' + str.replace(/ /g, '(?!-)(?!:)\\b|\\b()') + '\:\\b';
+          };
+
+          function getKeywordsPrependedBy(keywords, by) {
+            return '(?:' + keywords.replace(/^\s+|\s+$/g, '').replace(/\s+/g, '|' + by + '\\b').replace(/^/, by + '\\b') + ')\\b';
+          }
+
+          var keywords = 'ascent azimuth background-attachment background-color background-image background-position ' + 'background-repeat background baseline bbox border-collapse border-color border-spacing border-style border-top ' + 'border-right border-bottom border-left border-top-color border-right-color border-bottom-color border-left-color ' + 'border-top-style border-right-style border-bottom-style border-left-style border-top-width border-right-width ' + 'border-bottom-width border-left-width border-width border bottom cap-height caption-side centerline clear clip color ' + 'content counter-increment counter-reset cue-after cue-before cue cursor definition-src descent direction display ' + 'elevation empty-cells float font-size-adjust font-family font-size font-stretch font-style font-variant font-weight font ' + 'height left letter-spacing line-height list-style-image list-style-position list-style-type list-style margin-top ' + 'margin-right margin-bottom margin-left margin marker-offset marks mathline max-height max-width min-height min-width orphans ' + 'outline-color outline-style outline-width outline overflow padding-top padding-right padding-bottom padding-left padding page ' + 'page-break-after page-break-before page-break-inside pause pause-after pause-before pitch pitch-range play-during position ' + 'quotes right richness size slope src speak-header speak-numeral speak-punctuation speak speech-rate stemh stemv stress ' + 'table-layout text-align top text-decoration text-indent text-shadow text-transform unicode-bidi unicode-range units-per-em ' + 'vertical-align visibility voice-family volume white-space widows width widths word-spacing x-height z-index zoom';
+
+          var values = 'above absolute all always aqua armenian attr aural auto avoid baseline behind below bidi-override black blink block blue bold bolder ' + 'both bottom braille capitalize caption center center-left center-right circle close-quote code collapse compact condensed ' + 'continuous counter counters crop cross crosshair cursive dashed decimal decimal-leading-zero digits disc dotted double ' + 'embed embossed e-resize expanded extra-condensed extra-expanded fantasy far-left far-right fast faster fixed format fuchsia ' + 'gray green groove handheld hebrew help hidden hide high higher icon inline-table inline inset inside invert italic ' + 'justify landscape large larger left-side left leftwards level lighter lime line-through list-item local loud lower-alpha ' + 'lowercase lower-greek lower-latin lower-roman lower low ltr marker maroon medium message-box middle mix move narrower ' + 'navy ne-resize no-close-quote none no-open-quote no-repeat normal nowrap n-resize nw-resize oblique olive once open-quote outset ' + 'outside overline pointer portrait pre print projection purple red relative repeat repeat-x repeat-y rgb ridge right right-side ' + 'rightwards rtl run-in screen scroll semi-condensed semi-expanded separate se-resize show silent silver slower slow ' + 'small small-caps small-caption smaller soft solid speech spell-out square s-resize static status-bar sub super sw-resize ' + 'table-caption table-cell table-column table-column-group table-footer-group table-header-group table-row table-row-group teal ' + 'text-bottom text-top thick thin top transparent tty tv ultra-condensed ultra-expanded underline upper-alpha uppercase upper-latin ' + 'upper-roman url visible wait white wider w-resize x-fast x-high x-large x-loud x-low x-slow x-small x-soft xx-large xx-small yellow';
+
+          var fonts = '[mM]onospace [tT]ahoma [vV]erdana [aA]rial [hH]elvetica [sS]ans-serif [sS]erif [cC]ourier mono sans serif';
+
+          var statements = 'important default';
+          var preprocessor = 'import extend debug warn if else for while mixin function include content media';
+
+          var r = regexLib;
+
+          this.regexList = [{
+            regex: r.multiLineCComments,
+            css: 'comments'
+          }, {
+            regex: r.singleLineCComments,
+            css: 'comments'
+          }, {
+            regex: r.doubleQuotedString,
+            css: 'string'
+          }, {
+            regex: r.singleQuotedString,
+            css: 'string'
+          }, {
+            regex: /\#[a-fA-F0-9]{3,6}/g,
+            css: 'value'
+          }, {
+            regex: /\b(-?\d+)(\.\d+)?(px|em|rem|pt|\:|\%|)\b/g,
+            css: 'value'
+          }, {
+            regex: /\$[\w-]+/g,
+            css: 'variable'
+          }, {
+            regex: new RegExp(getKeywordsPrependedBy(statements, '!'), 'g'),
+            css: 'color3'
+          }, {
+            regex: new RegExp(getKeywordsPrependedBy(preprocessor, '@'), 'g'),
+            css: 'preprocessor'
+          }, {
+            regex: new RegExp(getKeywordsCSS(keywords), 'gm'),
+            css: 'keyword'
+          }, {
+            regex: new RegExp(getValuesCSS(values), 'g'),
+            css: 'value'
+          }, {
+            regex: new RegExp(this.getKeywords(fonts), 'g'),
+            css: 'color1'
+          }];
+        };
+
+        Brush.prototype = new BrushBase();
+        Brush.aliases = ['sass', 'scss'];
+        module.exports = Brush;
+
+/***/ },
+/* 45 */
+/***/ function(module, exports, __webpack_require__) {
+
+        'use strict';
+
+        var BrushBase = __webpack_require__(22);
+        var regexLib = __webpack_require__(3).commonRegExp;
+
+        function Brush() {
+          // Contributed by Yegor Jbanov and David Bernard.
+
+          var keywords = 'val sealed case def true trait implicit forSome import match object null finally super ' + 'override try lazy for var catch throw type extends class while with new final yield abstract ' + 'else do if return protected private this package false';
+
+          var keyops = '[_:=><%#@]+';
+
+          this.regexList = [{
+            regex: regexLib.singleLineCComments,
+            css: 'comments'
+          }, {
+            regex: regexLib.multiLineCComments,
+            css: 'comments'
+          }, {
+            regex: regexLib.multiLineSingleQuotedString,
+            css: 'string'
+          }, {
+            regex: regexLib.multiLineDoubleQuotedString,
+            css: 'string'
+          }, {
+            regex: regexLib.singleQuotedString,
+            css: 'string'
+          }, {
+            regex: /0x[a-f0-9]+|\d+(\.\d+)?/gi,
+            css: 'value'
+          }, {
+            regex: new RegExp(this.getKeywords(keywords), 'gm'),
+            css: 'keyword'
+          }, {
+            regex: new RegExp(keyops, 'gm'),
+            css: 'keyword'
+          }];
+        }
+
+        Brush.prototype = new BrushBase();
+        Brush.aliases = ['scala'];
+        module.exports = Brush;
+
+/***/ },
+/* 46 */
+/***/ function(module, exports, __webpack_require__) {
+
+        'use strict';
+
+        var BrushBase = __webpack_require__(22);
+        var regexLib = __webpack_require__(3).commonRegExp;
+
+        function Brush() {
+          var funcs = 'abs avg case cast coalesce convert count current_timestamp ' + 'current_user day isnull left lower month nullif replace right ' + 'session_user space substring sum system_user upper user year';
+
+          var keywords = 'absolute action add after alter as asc at authorization begin bigint ' + 'binary bit by cascade char character check checkpoint close collate ' + 'column commit committed connect connection constraint contains continue ' + 'create cube current current_date current_time cursor database date ' + 'deallocate dec decimal declare default delete desc distinct double drop ' + 'dynamic else end end-exec escape except exec execute false fetch first ' + 'float for force foreign forward free from full function global goto grant ' + 'group grouping having hour ignore index inner insensitive insert instead ' + 'int integer intersect into is isolation key last level load local max min ' + 'minute modify move name national nchar next no numeric of off on only ' + 'open option order out output partial password precision prepare primary ' + 'prior privileges procedure public read real references relative repeatable ' + 'restrict return returns revoke rollback rollup rows rule schema scroll ' + 'second section select sequence serializable set size smallint static ' + 'statistics table temp temporary then time timestamp to top transaction ' + 'translation trigger true truncate uncommitted union unique update values ' + 'varchar varying view when where with work';
+
+          var operators = 'all and any between cross in join like not null or outer some';
+
+          this.regexList = [{
+            regex: /--(.*)$/gm,
+            css: 'comments'
+          }, {
+            regex: /\/\*([^\*][\s\S]*?)?\*\//gm,
+            css: 'comments'
+          }, {
+            regex: regexLib.multiLineDoubleQuotedString,
+            css: 'string'
+          }, {
+            regex: regexLib.multiLineSingleQuotedString,
+            css: 'string'
+          }, {
+            regex: new RegExp(this.getKeywords(funcs), 'gmi'),
+            css: 'color2'
+          }, {
+            regex: new RegExp(this.getKeywords(operators), 'gmi'),
+            css: 'color1'
+          }, {
+            regex: new RegExp(this.getKeywords(keywords), 'gmi'),
+            css: 'keyword'
+          }];
+        };
+
+        Brush.prototype = new BrushBase();
+        Brush.aliases = ['sql'];
+        module.exports = Brush;
+
+/***/ },
+/* 47 */
+/***/ function(module, exports, __webpack_require__) {
+
+        'use strict';
+
+        var BrushBase = __webpack_require__(22);
+        var regexLib = __webpack_require__(3).commonRegExp;
+        var Match = __webpack_require__(5).Match;
+
+        function Brush() {
+          // Swift brush contributed by Nate Cook
+          // http://natecook.com/code/swift-syntax-highlighting
+
+          function getKeywordsPrependedBy(keywords, by) {
+            return '(?:' + keywords.replace(/^\s+|\s+$/g, '').replace(/\s+/g, '|' + by + '\\b').replace(/^/, by + '\\b') + ')\\b';
+          }
+
+          function multiLineCCommentsAdd(match, regexInfo) {
+            var str = match[0],
+                result = [],
+                pos = 0,
+                matchStart = 0,
+                level = 0;
+
+            while (pos < str.length - 1) {
+              var chunk = str.substr(pos, 2);
+              if (level == 0) {
+                if (chunk == "/*") {
+                  matchStart = pos;
+                  level++;
+                  pos += 2;
+                } else {
+                  pos++;
+                }
+              } else {
+                if (chunk == "/*") {
+                  level++;
+                  pos += 2;
+                } else if (chunk == "*/") {
+                  level--;
+                  if (level == 0) {
+                    result.push(new Match(str.substring(matchStart, pos + 2), matchStart + match.index, regexInfo.css));
+                  }
+                  pos += 2;
+                } else {
+                  pos++;
+                }
+              }
+            }
+
+            return result;
+          }
+
+          function stringAdd(match, regexInfo) {
+            var str = match[0],
+                result = [],
+                pos = 0,
+                matchStart = 0,
+                level = 0;
+
+            while (pos < str.length - 1) {
+              if (level == 0) {
+                if (str.substr(pos, 2) == "\\(") {
+                  result.push(new Match(str.substring(matchStart, pos + 2), matchStart + match.index, regexInfo.css));
+                  level++;
+                  pos += 2;
+                } else {
+                  pos++;
+                }
+              } else {
+                if (str[pos] == "(") {
+                  level++;
+                }
+                if (str[pos] == ")") {
+                  level--;
+                  if (level == 0) {
+                    matchStart = pos;
+                  }
+                }
+                pos++;
+              }
+            }
+            if (level == 0) {
+              result.push(new Match(str.substring(matchStart, str.length), matchStart + match.index, regexInfo.css));
+            }
+
+            return result;
+          };
+
+          // "Swift-native types" are all the protocols, classes, structs, enums, funcs, vars, and typealiases built into the language
+          var swiftTypes = 'AbsoluteValuable Any AnyClass Array ArrayBound ArrayBuffer ArrayBufferType ArrayLiteralConvertible ArrayType AutoreleasingUnsafePointer BidirectionalIndex Bit BitwiseOperations Bool C CBool CChar CChar16 CChar32 CConstPointer CConstVoidPointer CDouble CFloat CInt CLong CLongLong CMutablePointer CMutableVoidPointer COpaquePointer CShort CSignedChar CString CUnsignedChar CUnsignedInt CUnsignedLong CUnsignedLongLong CUnsignedShort CVaListPointer CVarArg CWideChar Character CharacterLiteralConvertible Collection CollectionOfOne Comparable ContiguousArray ContiguousArrayBuffer DebugPrintable Dictionary DictionaryGenerator DictionaryIndex DictionaryLiteralConvertible Double EmptyCollection EmptyGenerator EnumerateGenerator Equatable ExtendedGraphemeClusterLiteralConvertible ExtendedGraphemeClusterType ExtensibleCollection FilterCollectionView FilterCollectionViewIndex FilterGenerator FilterSequenceView Float Float32 Float64 Float80 FloatLiteralConvertible FloatLiteralType FloatingPointClassification FloatingPointNumber ForwardIndex Generator GeneratorOf GeneratorOfOne GeneratorSequence Hashable HeapBuffer HeapBufferStorage HeapBufferStorageBase ImplicitlyUnwrappedOptional IndexingGenerator Int Int16 Int32 Int64 Int8 IntEncoder IntMax Integer IntegerArithmetic IntegerLiteralConvertible IntegerLiteralType Less LifetimeManager LogicValue MapCollectionView MapSequenceGenerator MapSequenceView MaxBuiltinFloatType MaxBuiltinIntegerType Mirror MirrorDisposition MutableCollection MutableSliceable ObjectIdentifier OnHeap Optional OutputStream PermutationGenerator Printable QuickLookObject RandomAccessIndex Range RangeGenerator RawByte RawOptionSet RawRepresentable Reflectable Repeat ReverseIndex ReverseRange ReverseRangeGenerator ReverseView Sequence SequenceOf SignedInteger SignedNumber Sink SinkOf Slice SliceBuffer Sliceable StaticString Streamable StridedRangeGenerator String StringElement StringInterpolationConvertible StringLiteralConvertible StringLiteralType UInt UInt16 UInt32 UInt64 UInt8 UIntMax UTF16 UTF32 UTF8 UWord UnicodeCodec UnicodeScalar Unmanaged UnsafeArray UnsafePointer UnsignedInteger Void Word Zip2 ZipGenerator2 abs advance alignof alignofValue assert bridgeFromObjectiveC bridgeFromObjectiveCUnconditional bridgeToObjectiveC bridgeToObjectiveCUnconditional c contains count countElements countLeadingZeros debugPrint debugPrintln distance dropFirst dropLast dump encodeBitsAsWords enumerate equal false filter find getBridgedObjectiveCType getVaList indices insertionSort isBridgedToObjectiveC isBridgedVerbatimToObjectiveC isUniquelyReferenced join lexicographicalCompare map max maxElement min minElement nil numericCast partition posix print println quickSort reduce reflect reinterpretCast reverse roundUpToAlignment sizeof sizeofValue sort split startsWith strideof strideofValue swap swift toString transcode true underestimateCount unsafeReflect withExtendedLifetime withObjectAtPlusZero withUnsafePointer withUnsafePointerToObject withUnsafePointers withVaList';
+
+          var keywords = 'as break case class continue default deinit do dynamicType else enum ' + 'extension fallthrough for func if import in init is let new protocol ' + 'return self Self static struct subscript super switch Type typealias ' + 'var where while __COLUMN__ __FILE__ __FUNCTION__ __LINE__ associativity ' + 'didSet get infix inout left mutating none nonmutating operator override ' + 'postfix precedence prefix right set unowned unowned(safe) unowned(unsafe) weak willSet';
+
+          var attributes = 'assignment class_protocol exported final lazy noreturn NSCopying NSManaged objc optional required auto_closure noreturn IBAction IBDesignable IBInspectable IBOutlet infix prefix postfix';
+
+          this.regexList = [
+          // html entities
+          {
+            regex: new RegExp('\&[a-z]+;', 'gi'),
+            css: 'plain'
+          }, {
+            regex: regexLib.singleLineCComments,
+            css: 'comments'
+          }, {
+            regex: new RegExp('\\/\\*[\\s\\S]*\\*\\/', 'g'),
+            css: 'comments',
+            func: multiLineCCommentsAdd
+          }, {
+            regex: regexLib.doubleQuotedString,
+            css: 'string',
+            func: stringAdd
+          }, {
+            regex: new RegExp('\\b([\\d_]+(\\.[\\de_]+)?|0x[a-f0-9_]+(\\.[a-f0-9p_]+)?|0b[01_]+|0o[0-7_]+)\\b', 'gi'),
+            css: 'value'
+          }, {
+            regex: new RegExp(this.getKeywords(keywords), 'gm'),
+            css: 'keyword'
+          }, {
+            regex: new RegExp(getKeywordsPrependedBy(attributes, '@'), 'gm'),
+            css: 'color1'
+          }, {
+            regex: new RegExp(this.getKeywords(swiftTypes), 'gm'),
+            css: 'color2'
+          }, {
+            regex: new RegExp('\\b([a-zA-Z_][a-zA-Z0-9_]*)\\b', 'gi'),
+            css: 'variable'
+          }];
+        };
+
+        Brush.prototype = new BrushBase();
+        Brush.aliases = ['swift'];
+        module.exports = Brush;
+
+/***/ },
+/* 48 */
+/***/ function(module, exports, __webpack_require__) {
+
+        'use strict';
+
+        var BrushBase = __webpack_require__(22);
+        var regexLib = __webpack_require__(3).commonRegExp;
+
+        function Brush() {
+          // Contributed by Chad Granum
+          this.regexList = [{
+            regex: new RegExp('^1..\\d+', 'gm'),
+            css: 'plain bold italic'
+          }, {
+            regex: new RegExp('^ok( \\d+)?', 'gm'),
+            css: 'keyword'
+          }, {
+            regex: new RegExp('^not ok( \\d+)?', 'gm'),
+            css: 'color3 bold'
+          }, {
+            regex: new RegExp('(?!^\\s*)#.*$', 'gm'),
+            css: 'variable bold'
+          }, {
+            regex: new RegExp('^#.*$', 'gm'),
+            css: 'comments bold'
+          }, {
+            regex: new RegExp('^(?!(not )?ok)[^1].*$', 'gm'),
+            css: 'comments'
+          }, {
+            regex: regexLib.doubleQuotedString,
+            css: 'string'
+          }, {
+            regex: regexLib.singleQuotedString,
+            css: 'string'
+          }];
+        }
+
+        Brush.prototype = new BrushBase();
+        Brush.aliases = ['tap', 'Tap', 'TAP'];
+        module.exports = Brush;
+
+/***/ },
+/* 49 */
+/***/ function(module, exports, __webpack_require__) {
+
+        'use strict';
+
+        var BrushBase = __webpack_require__(22);
+        var regexLib = __webpack_require__(3).commonRegExp;
+
+        function Brush() {
+          var keywords = 'break case catch class continue ' + 'default delete do else enum export extends false  ' + 'for function if implements import in instanceof ' + 'interface let new null package private protected ' + 'static return super switch ' + 'this throw true try typeof var while with yield' + ' any bool declare get module number public set string'; // TypeScript-specific, everything above is common with JavaScript
+
+          this.regexList = [{
+            regex: regexLib.multiLineDoubleQuotedString,
+            css: 'string'
+          }, {
+            regex: regexLib.multiLineSingleQuotedString,
+            css: 'string'
+          }, {
+            regex: regexLib.singleLineCComments,
+            css: 'comments'
+          }, {
+            regex: regexLib.multiLineCComments,
+            css: 'comments'
+          }, {
+            regex: new RegExp(this.getKeywords(keywords), 'gm'),
+            css: 'keyword'
+          }];
+
+          this.forHtmlScript(regexLib.scriptScriptTags);
+        };
+
+        Brush.prototype = new BrushBase();
+        Brush.aliases = ['ts', 'typescript'];
+        module.exports = Brush;
+
+/***/ },
+/* 50 */
+/***/ function(module, exports, __webpack_require__) {
+
+        'use strict';
+
+        var BrushBase = __webpack_require__(22);
+        var regexLib = __webpack_require__(3).commonRegExp;
+
+        function Brush() {
+          var keywords = 'AddHandler AddressOf AndAlso Alias And Ansi As Assembly Auto ' + 'Boolean ByRef Byte ByVal Call Case Catch CBool CByte CChar CDate ' + 'CDec CDbl Char CInt Class CLng CObj Const CShort CSng CStr CType ' + 'Date Decimal Declare Default Delegate Dim DirectCast Do Double Each ' + 'Else ElseIf End Enum Erase Error Event Exit False Finally For Friend ' + 'Function Get GetType GoSub GoTo Handles If Implements Imports In ' + 'Inherits Integer Interface Is Let Lib Like Long Loop Me Mod Module ' + 'MustInherit MustOverride MyBase MyClass Namespace New Next Not Nothing ' + 'NotInheritable NotOverridable Object On Option Optional Or OrElse ' + 'Overloads Overridable Overrides ParamArray Preserve Private Property ' + 'Protected Public RaiseEvent ReadOnly ReDim REM RemoveHandler Resume ' + 'Return Select Set Shadows Shared Short Single Static Step Stop String ' + 'Structure Sub SyncLock Then Throw To True Try TypeOf Unicode Until ' + 'Variant When While With WithEvents WriteOnly Xor';
+
+          this.regexList = [{
+            regex: /'.*$/gm,
+            css: 'comments'
+          }, {
+            regex: regexLib.doubleQuotedString,
+            css: 'string'
+          }, {
+            regex: /^\s*#.*$/gm,
+            css: 'preprocessor'
+          }, {
+            regex: new RegExp(this.getKeywords(keywords), 'gm'),
+            css: 'keyword'
+          }];
+
+          this.forHtmlScript(regexLib.aspScriptTags);
+        };
+
+        Brush.prototype = new BrushBase();
+        Brush.aliases = ['vb', 'vbnet'];
+        module.exports = Brush;
+
+/***/ },
+/* 51 */
+/***/ function(module, exports, __webpack_require__) {
+
+        'use strict';
+
+        var BrushBase = __webpack_require__(22);
+        var regexLib = __webpack_require__(3).commonRegExp;
+        var XRegExp = __webpack_require__(3).XRegExp;
+        var Match = __webpack_require__(5).Match;
+
+        function Brush() {
+          function process(match, regexInfo) {
+            var code = match[0],
+                tag = XRegExp.exec(code, XRegExp('(&lt;|<)[\\s\\/\\?!]*(?<name>[:\\w-\\.]+)', 'xg')),
+                result = [];
+
+            if (match.attributes != null) {
+              var attributes,
+                  pos = 0,
+                  regex = XRegExp('(?<name> [\\w:.-]+)' + '\\s*=\\s*' + '(?<value> ".*?"|\'.*?\'|\\w+)', 'xg');
+
+              while ((attributes = XRegExp.exec(code, regex, pos)) != null) {
+                result.push(new Match(attributes.name, match.index + attributes.index, 'color1'));
+                result.push(new Match(attributes.value, match.index + attributes.index + attributes[0].indexOf(attributes.value), 'string'));
+                pos = attributes.index + attributes[0].length;
+              }
+            }
+
+            if (tag != null) result.push(new Match(tag.name, match.index + tag[0].indexOf(tag.name), 'keyword'));
+
+            return result;
+          }
+
+          this.regexList = [{
+            regex: XRegExp('(\\&lt;|<)\\!\\[[\\w\\s]*?\\[(.|\\s)*?\\]\\](\\&gt;|>)', 'gm'),
+            css: 'color2'
+          }, {
+            regex: regexLib.xmlComments,
+            css: 'comments'
+          }, {
+            regex: XRegExp('(&lt;|<)[\\s\\/\\?!]*(\\w+)(?<attributes>.*?)[\\s\\/\\?]*(&gt;|>)', 'sg'),
+            func: process
+          }];
+        };
+
+        Brush.prototype = new BrushBase();
+        Brush.aliases = ['xml', 'xhtml', 'xslt', 'html', 'plist'];
+        module.exports = Brush;
+
+/***/ },
+/* 52 */
+/***/ function(module, exports, __webpack_require__) {
+
+        'use strict';
+
+        var _typeof = typeof Symbol === "function" && typeof Symbol.iterator === "symbol" ? function (obj) { return typeof obj; } : function (obj) { return obj && typeof Symbol === "function" && obj.constructor === Symbol ? "symbol" : typeof obj; };
+
+        /*!
+          * domready (c) Dustin Diaz 2014 - License MIT
+          */
+        !function (name, definition) {
+
+          if (true) module.exports = definition();else if (typeof define == 'function' && _typeof(define.amd) == 'object') define(definition);else this[name] = definition();
+        }('domready', function () {
+
+          var fns = [],
+              _listener,
+              doc = document,
+              hack = doc.documentElement.doScroll,
+              domContentLoaded = 'DOMContentLoaded',
+              loaded = (hack ? /^loaded|^c/ : /^loaded|^i|^c/).test(doc.readyState);
+
+          if (!loaded) doc.addEventListener(domContentLoaded, _listener = function listener() {
+            doc.removeEventListener(domContentLoaded, _listener);
+            loaded = 1;
+            while (_listener = fns.shift()) {
+              _listener();
+            }
+          });
+
+          return function (fn) {
+            loaded ? setTimeout(fn, 0) : fns.push(fn);
+          };
+        });
+
+/***/ },
+/* 53 */
+/***/ function(module, exports) {
+
+        'use strict';
+
+        Object.defineProperty(exports, "__esModule", {
+          value: true
+        });
+        var string = exports.string = function string(value) {
+          return value.replace(/^([A-Z])/g, function (_, character) {
+            return character.toLowerCase();
+          }).replace(/([A-Z])/g, function (_, character) {
+            return '-' + character.toLowerCase();
+          });
+        };
+
+        var object = exports.object = function object(value) {
+          var result = {};
+          Object.keys(value).forEach(function (key) {
+            return result[string(key)] = value[key];
+          });
+          return result;
+        };
+
+/***/ }
+/******/ ]);
+//# sourceMappingURL=syntaxhighlighter.js.map
+
+
+
+ + + \ No newline at end of file diff --git a/src/main/UploadedContent/student-lab-instructions/artifacts/spring-boot-web/theme.html b/src/main/UploadedContent/student-lab-instructions/artifacts/spring-boot-web/theme.html new file mode 100644 index 0000000..70e6dd4 --- /dev/null +++ b/src/main/UploadedContent/student-lab-instructions/artifacts/spring-boot-web/theme.html @@ -0,0 +1,827 @@ + + + + + + + +Untitled + + + + + + + + + + + + + + + +
+
+
src/main/resources/static/css/theme.css
+
+
.syntaxhighlighter a,
+.syntaxhighlighter div,
+.syntaxhighlighter code,
+.syntaxhighlighter table,
+.syntaxhighlighter table td,
+.syntaxhighlighter table tr,
+.syntaxhighlighter table tbody,
+.syntaxhighlighter table thead,
+.syntaxhighlighter table caption,
+.syntaxhighlighter textarea {
+  -moz-border-radius: 0 0 0 0 !important;
+  -webkit-border-radius: 0 0 0 0 !important;
+  background: none !important;
+  border: 0 !important;
+  bottom: auto !important;
+  float: none !important;
+  height: auto !important;
+  left: auto !important;
+  line-height: 1.1em !important;
+  margin: 0 !important;
+  outline: 0 !important;
+  overflow: visible !important;
+  padding: 0 !important;
+  position: static !important;
+  right: auto !important;
+  text-align: left !important;
+  top: auto !important;
+  vertical-align: baseline !important;
+  width: auto !important;
+  box-sizing: content-box !important;
+  font-family: "Consolas", "Bitstream Vera Sans Mono", "Courier New", Courier, monospace !important;
+  font-weight: normal !important;
+  font-style: normal !important;
+  font-size: 1em !important;
+  min-height: inherit !important;
+  min-height: auto !important; }
+
+.syntaxhighlighter {
+  width: 100% !important;
+  margin: 1em 0 1em 0 !important;
+  position: relative !important;
+  overflow: auto !important;
+  font-size: 1em !important; }
+  .syntaxhighlighter .container:before, .syntaxhighlighter .container:after {
+    content: none !important; }
+  .syntaxhighlighter.source {
+    overflow: hidden !important; }
+  .syntaxhighlighter .bold {
+    font-weight: bold !important; }
+  .syntaxhighlighter .italic {
+    font-style: italic !important; }
+  .syntaxhighlighter .line {
+    white-space: pre !important; }
+  .syntaxhighlighter table {
+    width: 100% !important; }
+    .syntaxhighlighter table caption {
+      text-align: left !important;
+      padding: .5em 0 0.5em 1em !important; }
+    .syntaxhighlighter table td.code {
+      width: 100% !important; }
+      .syntaxhighlighter table td.code .container {
+        position: relative !important; }
+        .syntaxhighlighter table td.code .container textarea {
+          box-sizing: border-box !important;
+          position: absolute !important;
+          left: 0 !important;
+          top: 0 !important;
+          width: 100% !important;
+          height: 100% !important;
+          border: none !important;
+          background: white !important;
+          padding-left: 1em !important;
+          overflow: hidden !important;
+          white-space: pre !important; }
+    .syntaxhighlighter table td.gutter .line {
+      text-align: right !important;
+      padding: 0 0.5em 0 1em !important; }
+    .syntaxhighlighter table td.code .line {
+      padding: 0 1em !important; }
+  .syntaxhighlighter.nogutter td.code .container textarea, .syntaxhighlighter.nogutter td.code .line {
+    padding-left: 0em !important; }
+  .syntaxhighlighter.show {
+    display: block !important; }
+  .syntaxhighlighter.collapsed table {
+    display: none !important; }
+  .syntaxhighlighter.collapsed .toolbar {
+    padding: 0.1em 0.8em 0em 0.8em !important;
+    font-size: 1em !important;
+    position: static !important;
+    width: auto !important;
+    height: auto !important; }
+    .syntaxhighlighter.collapsed .toolbar span {
+      display: inline !important;
+      margin-right: 1em !important; }
+      .syntaxhighlighter.collapsed .toolbar span a {
+        padding: 0 !important;
+        display: none !important; }
+        .syntaxhighlighter.collapsed .toolbar span a.expandSource {
+          display: inline !important; }
+  .syntaxhighlighter .toolbar {
+    position: absolute !important;
+    right: 1px !important;
+    top: 1px !important;
+    width: 11px !important;
+    height: 11px !important;
+    font-size: 10px !important;
+    z-index: 10 !important; }
+    .syntaxhighlighter .toolbar span.title {
+      display: inline !important; }
+    .syntaxhighlighter .toolbar a {
+      display: block !important;
+      text-align: center !important;
+      text-decoration: none !important;
+      padding-top: 1px !important; }
+      .syntaxhighlighter .toolbar a.expandSource {
+        display: none !important; }
+  .syntaxhighlighter.ie {
+    font-size: .9em !important;
+    padding: 1px 0 1px 0 !important; }
+    .syntaxhighlighter.ie .toolbar {
+      line-height: 8px !important; }
+      .syntaxhighlighter.ie .toolbar a {
+        padding-top: 0px !important; }
+  .syntaxhighlighter.printing .line.alt1 .content,
+  .syntaxhighlighter.printing .line.alt2 .content,
+  .syntaxhighlighter.printing .line.highlighted .number,
+  .syntaxhighlighter.printing .line.highlighted.alt1 .content,
+  .syntaxhighlighter.printing .line.highlighted.alt2 .content {
+    background: none !important; }
+  .syntaxhighlighter.printing .line .number {
+    color: #bbbbbb !important; }
+  .syntaxhighlighter.printing .line .content {
+    color: black !important; }
+  .syntaxhighlighter.printing .toolbar {
+    display: none !important; }
+  .syntaxhighlighter.printing a {
+    text-decoration: none !important; }
+  .syntaxhighlighter.printing .plain, .syntaxhighlighter.printing .plain a {
+    color: black !important; }
+  .syntaxhighlighter.printing .comments, .syntaxhighlighter.printing .comments a {
+    color: #008200 !important; }
+  .syntaxhighlighter.printing .string, .syntaxhighlighter.printing .string a {
+    color: blue !important; }
+  .syntaxhighlighter.printing .keyword {
+    color: #006699 !important;
+    font-weight: bold !important; }
+  .syntaxhighlighter.printing .preprocessor {
+    color: gray !important; }
+  .syntaxhighlighter.printing .variable {
+    color: #aa7700 !important; }
+  .syntaxhighlighter.printing .value {
+    color: #009900 !important; }
+  .syntaxhighlighter.printing .functions {
+    color: #ff1493 !important; }
+  .syntaxhighlighter.printing .constants {
+    color: #0066cc !important; }
+  .syntaxhighlighter.printing .script {
+    font-weight: bold !important; }
+  .syntaxhighlighter.printing .color1, .syntaxhighlighter.printing .color1 a {
+    color: gray !important; }
+  .syntaxhighlighter.printing .color2, .syntaxhighlighter.printing .color2 a {
+    color: #ff1493 !important; }
+  .syntaxhighlighter.printing .color3, .syntaxhighlighter.printing .color3 a {
+    color: red !important; }
+  .syntaxhighlighter.printing .break, .syntaxhighlighter.printing .break a {
+    color: black !important; }
+
+.syntaxhighlighter {
+  background-color: white !important; }
+  .syntaxhighlighter .line.alt1 {
+    background-color: white !important; }
+  .syntaxhighlighter .line.alt2 {
+    background-color: white !important; }
+  .syntaxhighlighter .line.highlighted.alt1, .syntaxhighlighter .line.highlighted.alt2 {
+    background-color: #e0e0e0 !important; }
+  .syntaxhighlighter .line.highlighted.number {
+    color: black !important; }
+  .syntaxhighlighter table caption {
+    color: black !important; }
+  .syntaxhighlighter table td.code .container textarea {
+    background: white;
+    color: black; }
+  .syntaxhighlighter .gutter {
+    color: #afafaf !important; }
+    .syntaxhighlighter .gutter .line {
+      border-right: 3px solid #6ce26c !important; }
+      .syntaxhighlighter .gutter .line.highlighted {
+        background-color: #6ce26c !important;
+        color: white !important; }
+  .syntaxhighlighter.printing .line .content {
+    border: none !important; }
+  .syntaxhighlighter.collapsed {
+    overflow: visible !important; }
+    .syntaxhighlighter.collapsed .toolbar {
+      color: #00f !important;
+      background: #fff !important;
+      border: 1px solid #6ce26c !important; }
+      .syntaxhighlighter.collapsed .toolbar a {
+        color: #00f !important; }
+        .syntaxhighlighter.collapsed .toolbar a:hover {
+          color: #f00 !important; }
+  .syntaxhighlighter .toolbar {
+    color: #fff !important;
+    background: #6ce26c !important;
+    border: none !important; }
+    .syntaxhighlighter .toolbar a {
+      color: #fff !important; }
+      .syntaxhighlighter .toolbar a:hover {
+        color: #000 !important; }
+  .syntaxhighlighter .plain, .syntaxhighlighter .plain a {
+    color: black !important; }
+  .syntaxhighlighter .comments, .syntaxhighlighter .comments a {
+    color: #008200 !important; }
+  .syntaxhighlighter .string, .syntaxhighlighter .string a {
+    color: blue !important; }
+  .syntaxhighlighter .keyword {
+    font-weight: bold !important;
+    color: #006699 !important; }
+  .syntaxhighlighter .preprocessor {
+    color: gray !important; }
+  .syntaxhighlighter .variable {
+    color: #aa7700 !important; }
+  .syntaxhighlighter .value {
+    color: #009900 !important; }
+  .syntaxhighlighter .functions {
+    color: #ff1493 !important; }
+  .syntaxhighlighter .constants {
+    color: #0066cc !important; }
+  .syntaxhighlighter .script {
+    font-weight: bold !important;
+    color: #006699 !important;
+    background-color: none !important; }
+  .syntaxhighlighter .color1, .syntaxhighlighter .color1 a {
+    color: gray !important; }
+  .syntaxhighlighter .color2, .syntaxhighlighter .color2 a {
+    color: #ff1493 !important; }
+  .syntaxhighlighter .color3, .syntaxhighlighter .color3 a {
+    color: red !important; }
+
+
+
+ + + \ No newline at end of file diff --git a/src/main/UploadedContent/student-lab-instructions/images/02-spring-boot-01.png b/src/main/UploadedContent/student-lab-instructions/images/02-spring-boot-01.png new file mode 100644 index 0000000000000000000000000000000000000000..d0751599868d04e8e67232438f009d760a43dd41 GIT binary patch literal 177803 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

0XrRM6nLXyvlF#C7`D}4 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 f#_=W3e{CB{`$s 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

cl!e3m@fdR8&lEA=$ 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 WWtcAz;#uUw00f?{elF{r5}E)#VNy2$ literal 0 HcmV?d00001 diff --git a/src/main/UploadedContent/student-lab-instructions/images/04-spring-boot-features-01.png b/src/main/UploadedContent/student-lab-instructions/images/04-spring-boot-features-01.png new file mode 100644 index 0000000000000000000000000000000000000000..596eb576c0b5ac2dfc3b7c66239cf58b7ee3eb22 GIT binary patch literal 358603 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 literal 0 HcmV?d00001 diff --git a/src/main/UploadedContent/student-lab-instructions/images/05-spring-boot-web-01.png b/src/main/UploadedContent/student-lab-instructions/images/05-spring-boot-web-01.png new file mode 100644 index 0000000000000000000000000000000000000000..5b07594c06385369bb9b4ad4adb8cfae55ab26d7 GIT binary patch literal 162490 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

x~do+TfAM*VxgB0_Q=%G-j$_udxa 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 literal 0 HcmV?d00001 diff --git a/src/main/UploadedContent/student-lab-instructions/images/05-spring-boot-web-02.png b/src/main/UploadedContent/student-lab-instructions/images/05-spring-boot-web-02.png new file mode 100644 index 0000000000000000000000000000000000000000..b2b9afa04810c6617dc9f04f4e2014dabfdab540 GIT binary patch literal 142420 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 literal 0 HcmV?d00001 diff --git a/src/main/UploadedContent/student-lab-instructions/images/06-spring-boot-data-02.png b/src/main/UploadedContent/student-lab-instructions/images/06-spring-boot-data-02.png new file mode 100644 index 0000000000000000000000000000000000000000..b46a84bfae799faef3bdfdf6ff752b4fd3c2a4a2 GIT binary patch literal 166142 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

Fw3=laK^_vVrE0L;)+IkZo8F8`7T?b-xgpg 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 i_I*6x4+7nsFmW@{(9p0v)_7<@Lqj)3 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 literal 0 HcmV?d00001 diff --git a/src/main/UploadedContent/student-lab-instructions/images/06-spring-boot-data-01.png b/src/main/UploadedContent/student-lab-instructions/images/06-spring-boot-data-01.png new file mode 100644 index 0000000000000000000000000000000000000000..3a906a827ac795c269806cf8ddb66b6a39ec8259 GIT binary patch literal 165852 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