From b0b3a20749525083669e6219c7a5534a4576898b Mon Sep 17 00:00:00 2001 From: Sameera Nelson Date: Wed, 4 May 2016 22:55:34 +0530 Subject: [PATCH 001/108] Adding neo4j project skeleton --- spring-data-neo4j/README.md | 15 ++++ spring-data-neo4j/pom.xml | 69 ++++++++++++++++++ .../src/main/resources/logback.xml | 20 +++++ spring-data-neo4j/src/main/resources/test.png | Bin 0 -> 855 bytes 4 files changed, 104 insertions(+) create mode 100644 spring-data-neo4j/README.md create mode 100644 spring-data-neo4j/pom.xml create mode 100644 spring-data-neo4j/src/main/resources/logback.xml create mode 100644 spring-data-neo4j/src/main/resources/test.png diff --git a/spring-data-neo4j/README.md b/spring-data-neo4j/README.md new file mode 100644 index 0000000000..89eae99f05 --- /dev/null +++ b/spring-data-neo4j/README.md @@ -0,0 +1,15 @@ +## Spring Data Redis + +### Relevant Articles: +- [Introduction to Spring Data Redis](http://www.baeldung.com/spring-data-redis-tutorial) + +### Build the Project with Tests Running +``` +mvn clean install +``` + +### Run Tests Directly +``` +mvn test +``` + diff --git a/spring-data-neo4j/pom.xml b/spring-data-neo4j/pom.xml new file mode 100644 index 0000000000..5d04e0c3b4 --- /dev/null +++ b/spring-data-neo4j/pom.xml @@ -0,0 +1,69 @@ + + + 4.0.0 + com.baeldung + spring-data-neo4j + 1.0 + jar + + + UTF-8 + 4.2.5.RELEASE + 4.1.1.RELEASE + 0.8.0 + + + + + org.springframework.data + spring-data-neo4j + ${spring-data-neo4j} + + + + cglib + cglib-nodep + 2.2 + + + + log4j + log4j + 1.2.16 + + + + org.springframework + spring-core + ${spring.version} + + + + org.springframework + spring-context + ${spring.version} + + + + junit + junit + 4.12 + test + + + + org.springframework + spring-test + ${spring.version} + test + + + + com.lordofthejars + nosqlunit-redis + ${nosqlunit.version} + + + + diff --git a/spring-data-neo4j/src/main/resources/logback.xml b/spring-data-neo4j/src/main/resources/logback.xml new file mode 100644 index 0000000000..215eeede64 --- /dev/null +++ b/spring-data-neo4j/src/main/resources/logback.xml @@ -0,0 +1,20 @@ + + + + + web - %date [%thread] %-5level %logger{36} - %message%n + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/spring-data-neo4j/src/main/resources/test.png b/spring-data-neo4j/src/main/resources/test.png new file mode 100644 index 0000000000000000000000000000000000000000..c3b5e8027635ff4f0a0b10c0a9a6aa7a014e6086 GIT binary patch literal 855 zcmex=6kE^cmKJ|O{KK0!WiZUHd? zL17V5QBfX#aS1UI2_X?t5k_Vf7B*H^PBu0!em)*P5fKr7L0%pn0bT(feo-D?UVdI4 zpg0dNAHM*Q$HT+J$HNcg@q#%Zh5rvQ2y!sUFvu`73NkPWGBOJ?{y)MX0rV0OKpYGv zIoQ})S%5M+0t`%y%uFn-%&bsZMkb)c1=$oC*g1rh3>^~-jRG5mMVuBM1ge%|WME=O zF^8Fjk%^U!0Vt;gv=3+$3p2tNMkYaKCBqLwfr*X6ijMzpG4L=04G?4&WUyx___R78 z`bEZ3n*%y$c1p?=OzsY{vOIcDRID^@mH5k5n_VmCLN*tlQtc~BqmaI3acZm^A1dHBrChNRU-KfIG`3a9F1Z+JCT zaBkFRt*1+W!zihZ}s%F&cxn?h~EIRD%9;ni-#KyOjOZ3l7 z_6Ks(XSKVYPbdvPm!tpIJj%Ot(S2`WC0AaXj1Ds{Yc~e@JYj`ND^=I^G)#%-Q1qX7 z;Q8}@p=SNS>z3K2PrXivv`$ Date: Mon, 9 May 2016 00:29:00 +0530 Subject: [PATCH 002/108] Adding example project --- .../spring/data/neo4j/BookServiceTest.java | 40 ++++++++++++ .../config/LibraryNeo4jConfiguration.java | 32 ++++++++++ .../spring/data/neo4j/model/Book.java | 54 ++++++++++++++++ .../data/neo4j/repostory/BookRepository.java | 22 +++++++ .../data/neo4j/service/BookService.java | 62 +++++++++++++++++++ 5 files changed, 210 insertions(+) create mode 100644 spring-data-neo4j/src/main/java/com/baeldung/spring/data/neo4j/BookServiceTest.java create mode 100644 spring-data-neo4j/src/main/java/com/baeldung/spring/data/neo4j/config/LibraryNeo4jConfiguration.java create mode 100644 spring-data-neo4j/src/main/java/com/baeldung/spring/data/neo4j/model/Book.java create mode 100644 spring-data-neo4j/src/main/java/com/baeldung/spring/data/neo4j/repostory/BookRepository.java create mode 100644 spring-data-neo4j/src/main/java/com/baeldung/spring/data/neo4j/service/BookService.java diff --git a/spring-data-neo4j/src/main/java/com/baeldung/spring/data/neo4j/BookServiceTest.java b/spring-data-neo4j/src/main/java/com/baeldung/spring/data/neo4j/BookServiceTest.java new file mode 100644 index 0000000000..100465838e --- /dev/null +++ b/spring-data-neo4j/src/main/java/com/baeldung/spring/data/neo4j/BookServiceTest.java @@ -0,0 +1,40 @@ +package com.baeldung.spring.data.neo4j; + +import com.baeldung.spring.data.neo4j.config.LibraryNeo4jConfiguration; +import com.baeldung.spring.data.neo4j.model.Book; +import com.baeldung.spring.data.neo4j.model.Person; +import com.baeldung.spring.data.neo4j.service.BookService; +import org.apache.commons.logging.Log; +import org.apache.commons.logging.LogFactory; +import org.junit.Test; +import org.junit.runner.RunWith; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.test.context.ContextConfiguration; +import org.springframework.test.context.junit4.SpringJUnit4ClassRunner; + +import static org.junit.Assert.assertEquals; + +@RunWith(SpringJUnit4ClassRunner.class) +@ContextConfiguration(classes = LibraryNeo4jConfiguration.class) +public class BookServiceTest { + + private static final Log LOGGER = LogFactory.getLog(BookServiceTest.class); + + @Autowired + private BookService bookService; + + @Test + public void testSaveBook() { + final Person author1 = new Person(); + author1.setName("Mark Twain"); + author1.setBorn(1835); + final Book book = new Book(); + book.setTitle("The Adventures of Tom Sawyer"); + book.setReleased(1876); + book.setPerson(author1); + + bookService.save(book); + final Book savedBook = bookService.findBookById(book.getId()); + assertEquals(book.getTitle(), savedBook.getTitle()); + } +} diff --git a/spring-data-neo4j/src/main/java/com/baeldung/spring/data/neo4j/config/LibraryNeo4jConfiguration.java b/spring-data-neo4j/src/main/java/com/baeldung/spring/data/neo4j/config/LibraryNeo4jConfiguration.java new file mode 100644 index 0000000000..c497c944d1 --- /dev/null +++ b/spring-data-neo4j/src/main/java/com/baeldung/spring/data/neo4j/config/LibraryNeo4jConfiguration.java @@ -0,0 +1,32 @@ +package com.baeldung.spring.data.neo4j.config; + + +import org.neo4j.ogm.session.SessionFactory; +import org.springframework.context.annotation.ComponentScan; +import org.springframework.context.annotation.Configuration; +import org.springframework.context.annotation.Import; +import org.springframework.data.neo4j.config.Neo4jConfiguration; +import org.springframework.data.neo4j.repository.config.EnableNeo4jRepositories; +import org.springframework.data.neo4j.server.Neo4jServer; +import org.springframework.data.neo4j.server.RemoteServer; +import org.springframework.scheduling.annotation.EnableScheduling; +import org.springframework.transaction.annotation.EnableTransactionManagement; + + +@Configuration +@ComponentScan("com.baeldung.spring.data.neo4j") +@EnableNeo4jRepositories(basePackages = "com.baeldung.spring.data.neo4j.repostory") +public class LibraryNeo4jConfiguration extends Neo4jConfiguration { + + public static final String URL = System.getenv("NEO4J_URL") != null ? System.getenv("NEO4J_URL") : "http://localhost:7474"; + + @Override + public Neo4jServer neo4jServer() { + return new RemoteServer(URL,"neo4j","password"); + } + + @Override + public SessionFactory getSessionFactory() { + return new SessionFactory("com.baeldung.spring.data.neo4j.model"); + } +} \ No newline at end of file diff --git a/spring-data-neo4j/src/main/java/com/baeldung/spring/data/neo4j/model/Book.java b/spring-data-neo4j/src/main/java/com/baeldung/spring/data/neo4j/model/Book.java new file mode 100644 index 0000000000..2c643a4b7c --- /dev/null +++ b/spring-data-neo4j/src/main/java/com/baeldung/spring/data/neo4j/model/Book.java @@ -0,0 +1,54 @@ +package com.baeldung.spring.data.neo4j.model; + +import org.neo4j.graphdb.Direction; +import org.neo4j.ogm.annotation.*; + +import java.util.Collection; +import java.util.List; +import java.util.concurrent.atomic.AtomicLong; + +@NodeEntity +public class Book { + + private static final AtomicLong TS = new AtomicLong(); + + @GraphId + private Long id; + private String title; + private int released; + + @Relationship(type="AUTHORED_BY", direction = Relationship.INCOMING) + private Person person; + + public Book() { + this.id = TS.getAndIncrement(); + } + + public Long getId() { + return id; + } + + public String getTitle() { + return title; + } + + public void setTitle(String title) { + this.title = title; + } + + public int getReleased() { + return released; + } + + public void setReleased(int released) { + this.released = released; + } + + public Person getPerson() { + return person; + } + + public void setPerson(Person person) { + this.person = person; + } +} \ No newline at end of file diff --git a/spring-data-neo4j/src/main/java/com/baeldung/spring/data/neo4j/repostory/BookRepository.java b/spring-data-neo4j/src/main/java/com/baeldung/spring/data/neo4j/repostory/BookRepository.java new file mode 100644 index 0000000000..5c980b0381 --- /dev/null +++ b/spring-data-neo4j/src/main/java/com/baeldung/spring/data/neo4j/repostory/BookRepository.java @@ -0,0 +1,22 @@ +package com.baeldung.spring.data.neo4j.repostory; + +import com.baeldung.spring.data.neo4j.model.Book; +import org.springframework.data.neo4j.annotation.Query; +import org.springframework.data.neo4j.repository.GraphRepository; +import org.springframework.data.repository.query.Param; +import org.springframework.stereotype.Repository; + +import java.util.Collection; +import java.util.List; +import java.util.Map; + +@Repository +public interface BookRepository extends GraphRepository { + Book findByTitle(@Param("title") String title); + + @Query("MATCH (m:Book) WHERE m.title =~ ('(?i).*'+{title}+'.*') RETURN m") + Collection findByTitleContaining(@Param("title") String title); + + @Query("MATCH (m:Book)<-[:ACTED_IN]-(a:Person) RETURN m.title as Book, collect(a.name) as cast LIMIT {limit}") + List> graph(@Param("limit") int limit); +} \ No newline at end of file diff --git a/spring-data-neo4j/src/main/java/com/baeldung/spring/data/neo4j/service/BookService.java b/spring-data-neo4j/src/main/java/com/baeldung/spring/data/neo4j/service/BookService.java new file mode 100644 index 0000000000..52323f689b --- /dev/null +++ b/spring-data-neo4j/src/main/java/com/baeldung/spring/data/neo4j/service/BookService.java @@ -0,0 +1,62 @@ +package com.baeldung.spring.data.neo4j.service; + + +import com.baeldung.spring.data.neo4j.model.Book; +import com.baeldung.spring.data.neo4j.repostory.BookRepository; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Service; + +import java.util.*; + +@Service +public class BookService { + + @Autowired + private BookRepository bookRepository; + + private Map toD3Format(final Iterator> result) { + List> nodes = new ArrayList>(); + List> rels= new ArrayList>(); + int i=0; + while (result.hasNext()) { + Map row = result.next(); + nodes.add(map("title",row.get("book"),"label","book")); + int target=i; + i++; + for (Object name : (Collection) row.get("cast")) { + Map actor = map("title", name,"label","actor"); + int source = nodes.indexOf(actor); + if (source == -1) { + nodes.add(actor); + source = i++; + } + rels.add(map("source",source,"target",target)); + } + } + return map("nodes", nodes, "links", rels); + } + + private Map map(final String key1, final Object value1, final String key2, final Object value2) { + Map result = new HashMap(2); + result.put(key1,value1); + result.put(key2,value2); + return result; + } + + public Map graph(final int limit) { + Iterator> result = bookRepository.graph(limit).iterator(); + return toD3Format(result); + } + + public Book save(final Book book){ + return bookRepository.save(book); + } + + public Book findBookById(final Long id){ + return bookRepository.findOne(id); + } + + public void deleteAllInGraph(){ + bookRepository.deleteAll(); + } +} \ No newline at end of file From 87496539c705356922c0f102a8de31cdcf0492f0 Mon Sep 17 00:00:00 2001 From: Sameera Nelson Date: Mon, 9 May 2016 00:31:00 +0530 Subject: [PATCH 003/108] Adding example project --- .../java/com/baeldung/spring/data/neo4j/BookServiceTest.java | 0 1 file changed, 0 insertions(+), 0 deletions(-) rename spring-data-neo4j/src/{main => test}/java/com/baeldung/spring/data/neo4j/BookServiceTest.java (100%) diff --git a/spring-data-neo4j/src/main/java/com/baeldung/spring/data/neo4j/BookServiceTest.java b/spring-data-neo4j/src/test/java/com/baeldung/spring/data/neo4j/BookServiceTest.java similarity index 100% rename from spring-data-neo4j/src/main/java/com/baeldung/spring/data/neo4j/BookServiceTest.java rename to spring-data-neo4j/src/test/java/com/baeldung/spring/data/neo4j/BookServiceTest.java From 78bfd55b9b95f5b1008c9484f58655924787c4a6 Mon Sep 17 00:00:00 2001 From: Sameera Nelson Date: Mon, 9 May 2016 00:33:59 +0530 Subject: [PATCH 004/108] Adding example project --- spring-data-neo4j/README.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/spring-data-neo4j/README.md b/spring-data-neo4j/README.md index 89eae99f05..e62c69f8b9 100644 --- a/spring-data-neo4j/README.md +++ b/spring-data-neo4j/README.md @@ -1,7 +1,7 @@ -## Spring Data Redis +## Spring Data Neo4j ### Relevant Articles: -- [Introduction to Spring Data Redis](http://www.baeldung.com/spring-data-redis-tutorial) +- [Introduction to Spring Data Neo4j](http://www.baeldung.com/spring-data-neo4j-tutorial) ### Build the Project with Tests Running ``` From a317e91d375e9d09aebef69a0c6afad95a3f46ea Mon Sep 17 00:00:00 2001 From: Sameera Nelson Date: Mon, 9 May 2016 00:34:59 +0530 Subject: [PATCH 005/108] Adding example project --- spring-data-neo4j/pom.xml | 37 +++++++++++++++---------------------- 1 file changed, 15 insertions(+), 22 deletions(-) diff --git a/spring-data-neo4j/pom.xml b/spring-data-neo4j/pom.xml index 5d04e0c3b4..72e17250db 100644 --- a/spring-data-neo4j/pom.xml +++ b/spring-data-neo4j/pom.xml @@ -10,7 +10,7 @@ UTF-8 4.2.5.RELEASE - 4.1.1.RELEASE + 4.0.0.RELEASE 0.8.0 @@ -18,19 +18,7 @@ org.springframework.data spring-data-neo4j - ${spring-data-neo4j} - - - - cglib - cglib-nodep - 2.2 - - - - log4j - log4j - 1.2.16 + ${spring-data-neo4j.version} @@ -45,24 +33,29 @@ ${spring.version} + + com.voodoodyne.jackson.jsog + jackson-jsog + 1.1 + compile + + + + log4j + log4j + 1.2.16 + + junit junit 4.12 - test org.springframework spring-test ${spring.version} - test - - - - com.lordofthejars - nosqlunit-redis - ${nosqlunit.version} From 6f95540287139c5754f6d4f5c02065dc3e8f1937 Mon Sep 17 00:00:00 2001 From: Sameera Nelson Date: Fri, 13 May 2016 18:57:52 +0530 Subject: [PATCH 006/108] Adding Book service interface --- .../data/neo4j/service/BookService.java | 64 +++---------------- .../data/neo4j/service/BookServiceImpl.java | 62 ++++++++++++++++++ .../spring/data/neo4j/BookServiceTest.java | 5 +- 3 files changed, 74 insertions(+), 57 deletions(-) create mode 100644 spring-data-neo4j/src/main/java/com/baeldung/spring/data/neo4j/service/BookServiceImpl.java diff --git a/spring-data-neo4j/src/main/java/com/baeldung/spring/data/neo4j/service/BookService.java b/spring-data-neo4j/src/main/java/com/baeldung/spring/data/neo4j/service/BookService.java index 52323f689b..f8983dfd16 100644 --- a/spring-data-neo4j/src/main/java/com/baeldung/spring/data/neo4j/service/BookService.java +++ b/spring-data-neo4j/src/main/java/com/baeldung/spring/data/neo4j/service/BookService.java @@ -1,62 +1,18 @@ package com.baeldung.spring.data.neo4j.service; - import com.baeldung.spring.data.neo4j.model.Book; -import com.baeldung.spring.data.neo4j.repostory.BookRepository; -import org.springframework.beans.factory.annotation.Autowired; -import org.springframework.stereotype.Service; -import java.util.*; +import java.util.Map; -@Service -public class BookService { +/** + * Created by SDN on 5/13/2016. + */ +public interface BookService { + Map graph(int limit); - @Autowired - private BookRepository bookRepository; + Book save(Book book); - private Map toD3Format(final Iterator> result) { - List> nodes = new ArrayList>(); - List> rels= new ArrayList>(); - int i=0; - while (result.hasNext()) { - Map row = result.next(); - nodes.add(map("title",row.get("book"),"label","book")); - int target=i; - i++; - for (Object name : (Collection) row.get("cast")) { - Map actor = map("title", name,"label","actor"); - int source = nodes.indexOf(actor); - if (source == -1) { - nodes.add(actor); - source = i++; - } - rels.add(map("source",source,"target",target)); - } - } - return map("nodes", nodes, "links", rels); - } + Book findBookById(Long id); - private Map map(final String key1, final Object value1, final String key2, final Object value2) { - Map result = new HashMap(2); - result.put(key1,value1); - result.put(key2,value2); - return result; - } - - public Map graph(final int limit) { - Iterator> result = bookRepository.graph(limit).iterator(); - return toD3Format(result); - } - - public Book save(final Book book){ - return bookRepository.save(book); - } - - public Book findBookById(final Long id){ - return bookRepository.findOne(id); - } - - public void deleteAllInGraph(){ - bookRepository.deleteAll(); - } -} \ No newline at end of file + void deleteAllInGraph(); +} diff --git a/spring-data-neo4j/src/main/java/com/baeldung/spring/data/neo4j/service/BookServiceImpl.java b/spring-data-neo4j/src/main/java/com/baeldung/spring/data/neo4j/service/BookServiceImpl.java new file mode 100644 index 0000000000..cd50f8b740 --- /dev/null +++ b/spring-data-neo4j/src/main/java/com/baeldung/spring/data/neo4j/service/BookServiceImpl.java @@ -0,0 +1,62 @@ +package com.baeldung.spring.data.neo4j.service; + + +import com.baeldung.spring.data.neo4j.model.Book; +import com.baeldung.spring.data.neo4j.repostory.BookRepository; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Service; + +import java.util.*; + +@Service +public class BookServiceImpl implements BookService { + + @Autowired + private BookRepository bookRepository; + + private Map toD3Format(final Iterator> result) { + List> nodes = new ArrayList>(); + List> rels= new ArrayList>(); + int i=0; + while (result.hasNext()) { + Map row = result.next(); + nodes.add(map("title",row.get("book"),"label","book")); + int target=i; + i++; + for (Object name : (Collection) row.get("cast")) { + Map actor = map("title", name,"label","actor"); + int source = nodes.indexOf(actor); + if (source == -1) { + nodes.add(actor); + source = i++; + } + rels.add(map("source",source,"target",target)); + } + } + return map("nodes", nodes, "links", rels); + } + + private Map map(final String key1, final Object value1, final String key2, final Object value2) { + Map result = new HashMap(2); + result.put(key1,value1); + result.put(key2,value2); + return result; + } + + public Map graph(final int limit) { + Iterator> result = bookRepository.graph(limit).iterator(); + return toD3Format(result); + } + + public Book save(final Book book){ + return bookRepository.save(book); + } + + public Book findBookById(final Long id){ + return bookRepository.findOne(id); + } + + public void deleteAllInGraph(){ + bookRepository.deleteAll(); + } +} \ No newline at end of file diff --git a/spring-data-neo4j/src/test/java/com/baeldung/spring/data/neo4j/BookServiceTest.java b/spring-data-neo4j/src/test/java/com/baeldung/spring/data/neo4j/BookServiceTest.java index 100465838e..9a791f87da 100644 --- a/spring-data-neo4j/src/test/java/com/baeldung/spring/data/neo4j/BookServiceTest.java +++ b/spring-data-neo4j/src/test/java/com/baeldung/spring/data/neo4j/BookServiceTest.java @@ -21,7 +21,7 @@ public class BookServiceTest { private static final Log LOGGER = LogFactory.getLog(BookServiceTest.class); @Autowired - private BookService bookService; + private BookService bookServiceImpl; @Test public void testSaveBook() { @@ -33,8 +33,7 @@ public class BookServiceTest { book.setReleased(1876); book.setPerson(author1); - bookService.save(book); - final Book savedBook = bookService.findBookById(book.getId()); + final Book savedBook = bookServiceImpl.save(book); assertEquals(book.getTitle(), savedBook.getTitle()); } } From 6e6b4612f8dd914484118cde4fad6f12c879fbc4 Mon Sep 17 00:00:00 2001 From: Sameera Nelson Date: Fri, 13 May 2016 19:58:19 +0530 Subject: [PATCH 007/108] Adding test cases --- .../spring/data/neo4j/model/Person.java | 52 +++++++++++++++++++ .../data/neo4j/repostory/BookRepository.java | 6 --- .../data/neo4j/service/BookService.java | 8 +-- .../data/neo4j/service/BookServiceImpl.java | 44 ++++------------ .../spring/data/neo4j/BookServiceTest.java | 50 ++++++++++++++++-- 5 files changed, 111 insertions(+), 49 deletions(-) create mode 100644 spring-data-neo4j/src/main/java/com/baeldung/spring/data/neo4j/model/Person.java diff --git a/spring-data-neo4j/src/main/java/com/baeldung/spring/data/neo4j/model/Person.java b/spring-data-neo4j/src/main/java/com/baeldung/spring/data/neo4j/model/Person.java new file mode 100644 index 0000000000..53444c8f6c --- /dev/null +++ b/spring-data-neo4j/src/main/java/com/baeldung/spring/data/neo4j/model/Person.java @@ -0,0 +1,52 @@ +package com.baeldung.spring.data.neo4j.model; + +import org.neo4j.ogm.annotation.*; + +import java.util.List; +import java.util.concurrent.atomic.AtomicLong; + +@NodeEntity +public class Person { + + private static final AtomicLong TS = new AtomicLong(); + + @GraphId + private Long id; + private String name; + private int born; + + @Relationship(type = "AUTHORED_BY") + private List books; + + public Person() { + this.id = TS.incrementAndGet(); + } + + public Long getId() { + return id; + } + + public String getName() { + return name; + } + + public void setName(String name) { + this.name = name; + } + + public int getBorn() { + return born; + } + + public void setBorn(int born) { + this.born = born; + } + + public List getBooks() { + return books; + } + + public void setBooks(List books) { + this.books = books; + } +} diff --git a/spring-data-neo4j/src/main/java/com/baeldung/spring/data/neo4j/repostory/BookRepository.java b/spring-data-neo4j/src/main/java/com/baeldung/spring/data/neo4j/repostory/BookRepository.java index 5c980b0381..c76d2862fc 100644 --- a/spring-data-neo4j/src/main/java/com/baeldung/spring/data/neo4j/repostory/BookRepository.java +++ b/spring-data-neo4j/src/main/java/com/baeldung/spring/data/neo4j/repostory/BookRepository.java @@ -12,11 +12,5 @@ import java.util.Map; @Repository public interface BookRepository extends GraphRepository { - Book findByTitle(@Param("title") String title); - @Query("MATCH (m:Book) WHERE m.title =~ ('(?i).*'+{title}+'.*') RETURN m") - Collection findByTitleContaining(@Param("title") String title); - - @Query("MATCH (m:Book)<-[:ACTED_IN]-(a:Person) RETURN m.title as Book, collect(a.name) as cast LIMIT {limit}") - List> graph(@Param("limit") int limit); } \ No newline at end of file diff --git a/spring-data-neo4j/src/main/java/com/baeldung/spring/data/neo4j/service/BookService.java b/spring-data-neo4j/src/main/java/com/baeldung/spring/data/neo4j/service/BookService.java index f8983dfd16..daa988c92d 100644 --- a/spring-data-neo4j/src/main/java/com/baeldung/spring/data/neo4j/service/BookService.java +++ b/spring-data-neo4j/src/main/java/com/baeldung/spring/data/neo4j/service/BookService.java @@ -4,14 +4,14 @@ import com.baeldung.spring.data.neo4j.model.Book; import java.util.Map; -/** - * Created by SDN on 5/13/2016. - */ public interface BookService { - Map graph(int limit); Book save(Book book); + void delete(long bookId); + + long bookCount(); + Book findBookById(Long id); void deleteAllInGraph(); diff --git a/spring-data-neo4j/src/main/java/com/baeldung/spring/data/neo4j/service/BookServiceImpl.java b/spring-data-neo4j/src/main/java/com/baeldung/spring/data/neo4j/service/BookServiceImpl.java index cd50f8b740..0c07e4acd9 100644 --- a/spring-data-neo4j/src/main/java/com/baeldung/spring/data/neo4j/service/BookServiceImpl.java +++ b/spring-data-neo4j/src/main/java/com/baeldung/spring/data/neo4j/service/BookServiceImpl.java @@ -14,49 +14,25 @@ public class BookServiceImpl implements BookService { @Autowired private BookRepository bookRepository; - private Map toD3Format(final Iterator> result) { - List> nodes = new ArrayList>(); - List> rels= new ArrayList>(); - int i=0; - while (result.hasNext()) { - Map row = result.next(); - nodes.add(map("title",row.get("book"),"label","book")); - int target=i; - i++; - for (Object name : (Collection) row.get("cast")) { - Map actor = map("title", name,"label","actor"); - int source = nodes.indexOf(actor); - if (source == -1) { - nodes.add(actor); - source = i++; - } - rels.add(map("source",source,"target",target)); - } - } - return map("nodes", nodes, "links", rels); - } - - private Map map(final String key1, final Object value1, final String key2, final Object value2) { - Map result = new HashMap(2); - result.put(key1,value1); - result.put(key2,value2); - return result; - } - - public Map graph(final int limit) { - Iterator> result = bookRepository.graph(limit).iterator(); - return toD3Format(result); - } - public Book save(final Book book){ return bookRepository.save(book); } + public long bookCount(){ + return bookRepository.count(); + } + public Book findBookById(final Long id){ return bookRepository.findOne(id); } + public void delete(final long bookId){ + bookRepository.delete(bookId); + } + public void deleteAllInGraph(){ bookRepository.deleteAll(); } + + } \ No newline at end of file diff --git a/spring-data-neo4j/src/test/java/com/baeldung/spring/data/neo4j/BookServiceTest.java b/spring-data-neo4j/src/test/java/com/baeldung/spring/data/neo4j/BookServiceTest.java index 9a791f87da..17c75a1921 100644 --- a/spring-data-neo4j/src/test/java/com/baeldung/spring/data/neo4j/BookServiceTest.java +++ b/spring-data-neo4j/src/test/java/com/baeldung/spring/data/neo4j/BookServiceTest.java @@ -4,8 +4,6 @@ import com.baeldung.spring.data.neo4j.config.LibraryNeo4jConfiguration; import com.baeldung.spring.data.neo4j.model.Book; import com.baeldung.spring.data.neo4j.model.Person; import com.baeldung.spring.data.neo4j.service.BookService; -import org.apache.commons.logging.Log; -import org.apache.commons.logging.LogFactory; import org.junit.Test; import org.junit.runner.RunWith; import org.springframework.beans.factory.annotation.Autowired; @@ -13,18 +11,17 @@ import org.springframework.test.context.ContextConfiguration; import org.springframework.test.context.junit4.SpringJUnit4ClassRunner; import static org.junit.Assert.assertEquals; +import static org.junit.Assert.assertNull; @RunWith(SpringJUnit4ClassRunner.class) @ContextConfiguration(classes = LibraryNeo4jConfiguration.class) public class BookServiceTest { - private static final Log LOGGER = LogFactory.getLog(BookServiceTest.class); - @Autowired private BookService bookServiceImpl; @Test - public void testSaveBook() { + public void testSavingBook() { final Person author1 = new Person(); author1.setName("Mark Twain"); author1.setBorn(1835); @@ -36,4 +33,47 @@ public class BookServiceTest { final Book savedBook = bookServiceImpl.save(book); assertEquals(book.getTitle(), savedBook.getTitle()); } + + @Test + public void testFindingTheSavedBook() { + final Person author1 = new Person(); + author1.setName("Edgar Allan Poe"); + author1.setBorn(1809); + final Book book = new Book(); + book.setTitle("The Cask of Amontillado"); + book.setReleased(1846); + book.setPerson(author1); + + bookServiceImpl.save(book); + final Book retrievedBook = bookServiceImpl.findBookById(book.getId()); + assertEquals(book.getTitle(), retrievedBook.getTitle()); + } + + @Test + public void testCountTheSavedBooks() { + long bookCount = bookServiceImpl.bookCount(); + assertEquals(bookCount, 2); + } + @Test + public void testDeletingASavedBook() { + final Person author1 = new Person(); + author1.setName("Rider Haggard"); + author1.setBorn(1856); + final Book book = new Book(); + book.setTitle("King Solomon's Mines"); + book.setReleased(1885); + book.setPerson(author1); + + final Book savedBook = bookServiceImpl.save(book); + bookServiceImpl.delete(savedBook.getId()); + final Book retrievedBook = bookServiceImpl.findBookById(book.getId()); + assertNull(retrievedBook); + } + + @Test + public void testDeleteAllSavedBook() { + bookServiceImpl.deleteAllInGraph(); + final long bookCount = bookServiceImpl.bookCount(); + assertEquals(bookCount, 0); + } } From 44e50693d7873bfe4e8928e7a1051172af7e82e8 Mon Sep 17 00:00:00 2001 From: sivabalachandran Date: Wed, 25 May 2016 11:35:27 -0400 Subject: [PATCH 008/108] First cut for basics of java 8 date time api --- .../com/baeldung/datetime/UseDuration.java | 16 ++++++ .../com/baeldung/datetime/UseLocalDate.java | 46 ++++++++++++++++ .../baeldung/datetime/UseLocalDateTime.java | 11 ++++ .../com/baeldung/datetime/UseLocalTime.java | 35 ++++++++++++ .../java/com/baeldung/datetime/UsePeriod.java | 15 +++++ .../com/baeldung/datetime/UseToInstant.java | 19 +++++++ .../baeldung/datetime/UseZonedDateTime.java | 13 +++++ .../baeldung/datetime/UseLocalDateTest.java | 55 +++++++++++++++++++ .../datetime/UseLocalDateTimeTest.java | 19 +++++++ .../baeldung/datetime/UseLocalTimeTest.java | 36 ++++++++++++ .../com/baeldung/datetime/UsePeriodTest.java | 29 ++++++++++ .../datetime/UseZonedDateTimeTest.java | 20 +++++++ 12 files changed, 314 insertions(+) create mode 100644 core-java-8/src/main/java/com/baeldung/datetime/UseDuration.java create mode 100644 core-java-8/src/main/java/com/baeldung/datetime/UseLocalDate.java create mode 100644 core-java-8/src/main/java/com/baeldung/datetime/UseLocalDateTime.java create mode 100644 core-java-8/src/main/java/com/baeldung/datetime/UseLocalTime.java create mode 100644 core-java-8/src/main/java/com/baeldung/datetime/UsePeriod.java create mode 100644 core-java-8/src/main/java/com/baeldung/datetime/UseToInstant.java create mode 100644 core-java-8/src/main/java/com/baeldung/datetime/UseZonedDateTime.java create mode 100644 core-java-8/src/test/java/com/baeldung/datetime/UseLocalDateTest.java create mode 100644 core-java-8/src/test/java/com/baeldung/datetime/UseLocalDateTimeTest.java create mode 100644 core-java-8/src/test/java/com/baeldung/datetime/UseLocalTimeTest.java create mode 100644 core-java-8/src/test/java/com/baeldung/datetime/UsePeriodTest.java create mode 100644 core-java-8/src/test/java/com/baeldung/datetime/UseZonedDateTimeTest.java diff --git a/core-java-8/src/main/java/com/baeldung/datetime/UseDuration.java b/core-java-8/src/main/java/com/baeldung/datetime/UseDuration.java new file mode 100644 index 0000000000..125b6fbe38 --- /dev/null +++ b/core-java-8/src/main/java/com/baeldung/datetime/UseDuration.java @@ -0,0 +1,16 @@ +package com.baeldung.datetime; + +import java.time.Duration; +import java.time.LocalTime; +import java.time.Period; + +public class UseDuration { + + public LocalTime modifyDates(LocalTime localTime,Duration duration){ + return localTime.plus(duration); + } + + public Duration getDifferenceBetweenDates(LocalTime localTime1,LocalTime localTime2){ + return Duration.between(localTime1, localTime2); + } +} diff --git a/core-java-8/src/main/java/com/baeldung/datetime/UseLocalDate.java b/core-java-8/src/main/java/com/baeldung/datetime/UseLocalDate.java new file mode 100644 index 0000000000..47b1b3f67d --- /dev/null +++ b/core-java-8/src/main/java/com/baeldung/datetime/UseLocalDate.java @@ -0,0 +1,46 @@ +package com.baeldung.datetime; + +import java.time.DayOfWeek; +import java.time.LocalDate; +import java.time.LocalDateTime; +import java.time.temporal.ChronoUnit; +import java.time.temporal.TemporalAdjusters; + +public class UseLocalDate { + + public LocalDate getLocalDateUsingFactoryOfMethod(int year, int month, int dayOfMonth){ + return LocalDate.of(year, month, dayOfMonth); + } + + public LocalDate getLocalDateUsingParseMethod(String representation){ + return LocalDate.parse(representation); + } + + public LocalDate getLocalDateFromClock(){ + LocalDate localDate = LocalDate.now(); + return localDate; + } + + public LocalDate getNextDay(LocalDate localDate){ + return localDate.plusDays(1); + } + + public LocalDate getPreviousDay(LocalDate localDate){ + return localDate.minus(1, ChronoUnit.DAYS); + } + + public DayOfWeek getDayOfWeek(LocalDate localDate){ + DayOfWeek day = localDate.getDayOfWeek(); + return day; + } + + public LocalDate getFirstDayOfMonth(){ + LocalDate firstDayOfMonth = LocalDate.now().with(TemporalAdjusters.firstDayOfMonth()); + return firstDayOfMonth; + } + + public LocalDateTime getStartOfDay(LocalDate localDate){ + LocalDateTime startofDay = localDate.atStartOfDay(); + return startofDay; + } +} diff --git a/core-java-8/src/main/java/com/baeldung/datetime/UseLocalDateTime.java b/core-java-8/src/main/java/com/baeldung/datetime/UseLocalDateTime.java new file mode 100644 index 0000000000..7aa1eaa276 --- /dev/null +++ b/core-java-8/src/main/java/com/baeldung/datetime/UseLocalDateTime.java @@ -0,0 +1,11 @@ +package com.baeldung.datetime; + +import java.time.LocalDateTime; + +public class UseLocalDateTime { + + public LocalDateTime getLocalDateTimeUsingParseMethod(String representation){ + return LocalDateTime.parse(representation); + } + +} diff --git a/core-java-8/src/main/java/com/baeldung/datetime/UseLocalTime.java b/core-java-8/src/main/java/com/baeldung/datetime/UseLocalTime.java new file mode 100644 index 0000000000..e13fd10d6f --- /dev/null +++ b/core-java-8/src/main/java/com/baeldung/datetime/UseLocalTime.java @@ -0,0 +1,35 @@ +package com.baeldung.datetime; + +import java.time.LocalTime; +import java.time.temporal.ChronoUnit; + +public class UseLocalTime { + + public LocalTime getLocalTimeUsingFactoryOfMethod(int hour, int min, int seconds){ + LocalTime localTime = LocalTime.of(hour, min, seconds); + return localTime; + } + + public LocalTime getLocalTimeUsingParseMethod(String timeRepresentation){ + LocalTime localTime = LocalTime.parse(timeRepresentation); + return localTime; + } + + public LocalTime getLocalTimeFromClock(){ + LocalTime localTime = LocalTime.now(); + return localTime; + } + + public LocalTime addAnHour(LocalTime localTime){ + LocalTime newTime = localTime.plus(1,ChronoUnit.HOURS); + return newTime; + } + + public int getHourFromLocalTime(LocalTime localTime){ + return localTime.getHour(); + } + + public LocalTime getLocalTimeWithMinuteSetToValue(LocalTime localTime, int minute){ + return localTime.withMinute(minute); + } +} diff --git a/core-java-8/src/main/java/com/baeldung/datetime/UsePeriod.java b/core-java-8/src/main/java/com/baeldung/datetime/UsePeriod.java new file mode 100644 index 0000000000..326cfad650 --- /dev/null +++ b/core-java-8/src/main/java/com/baeldung/datetime/UsePeriod.java @@ -0,0 +1,15 @@ +package com.baeldung.datetime; + +import java.time.LocalDate; +import java.time.Period; + +public class UsePeriod { + + public LocalDate modifyDates(LocalDate localDate,Period period){ + return localDate.plus(period); + } + + public Period getDifferenceBetweenDates(LocalDate localDate1,LocalDate localDate2){ + return Period.between(localDate1, localDate2); + } +} diff --git a/core-java-8/src/main/java/com/baeldung/datetime/UseToInstant.java b/core-java-8/src/main/java/com/baeldung/datetime/UseToInstant.java new file mode 100644 index 0000000000..1ddb096cf6 --- /dev/null +++ b/core-java-8/src/main/java/com/baeldung/datetime/UseToInstant.java @@ -0,0 +1,19 @@ +package com.baeldung.datetime; + +import java.time.LocalDateTime; +import java.time.ZoneId; +import java.util.Calendar; +import java.util.Date; + +public class UseToInstant { + + public LocalDateTime convertDateToLocalDate(Date date){ + LocalDateTime localDateTime = LocalDateTime.ofInstant(date.toInstant(), ZoneId.systemDefault()); + return localDateTime; + } + + public LocalDateTime convertDateToLocalDate(Calendar calendar){ + LocalDateTime localDateTime = LocalDateTime.ofInstant(calendar.toInstant(), ZoneId.systemDefault()); + return localDateTime; + } +} diff --git a/core-java-8/src/main/java/com/baeldung/datetime/UseZonedDateTime.java b/core-java-8/src/main/java/com/baeldung/datetime/UseZonedDateTime.java new file mode 100644 index 0000000000..0369de9835 --- /dev/null +++ b/core-java-8/src/main/java/com/baeldung/datetime/UseZonedDateTime.java @@ -0,0 +1,13 @@ +package com.baeldung.datetime; + +import java.time.LocalDateTime; +import java.time.ZoneId; +import java.time.ZonedDateTime; + +public class UseZonedDateTime { + + public ZonedDateTime getZonedDateTime(LocalDateTime localDateTime,ZoneId zoneId){ + ZonedDateTime zonedDateTime = ZonedDateTime.of(localDateTime, zoneId); + return zonedDateTime; + } +} diff --git a/core-java-8/src/test/java/com/baeldung/datetime/UseLocalDateTest.java b/core-java-8/src/test/java/com/baeldung/datetime/UseLocalDateTest.java new file mode 100644 index 0000000000..8af33393be --- /dev/null +++ b/core-java-8/src/test/java/com/baeldung/datetime/UseLocalDateTest.java @@ -0,0 +1,55 @@ +package com.baeldung.datetime; + +import java.time.DayOfWeek; +import java.time.LocalDate; +import java.time.LocalDateTime; +import java.time.Month; + +import org.junit.Assert; +import org.junit.Test; + +public class UseLocalDateTest { + + UseLocalDate useLocalDate = new UseLocalDate(); + + @Test + public void givenValues_whenUsingFactoryOf_thenLocalDate(){ + Assert.assertEquals("2016-05-10",useLocalDate.getLocalDateUsingFactoryOfMethod(2016,5,10).toString()); + } + + @Test + public void givenString_whenUsingParse_thenLocalDate(){ + Assert.assertEquals("2016-05-10",useLocalDate.getLocalDateUsingParseMethod("2016-05-10").toString()); + } + + @Test + public void whenUsingClock_thenLocalDate(){ + Assert.assertEquals(LocalDate.now(),useLocalDate.getLocalDateFromClock()); + } + + @Test + public void givenDate_whenUsingPlus_thenNextDay(){ + Assert.assertEquals(LocalDate.now().plusDays(1),useLocalDate.getNextDay(LocalDate.now())); + } + + @Test + public void givenDate_whenUsingMinus_thenPreviousDay(){ + Assert.assertEquals(LocalDate.now().minusDays(1),useLocalDate.getPreviousDay(LocalDate.now())); + } + + @Test + public void givenToday_whenUsingGetDayOfWeek_thenDayOfWeek(){ + Assert.assertEquals(DayOfWeek.SUNDAY,useLocalDate.getDayOfWeek(LocalDate.parse("2016-05-22"))); + } + + @Test + public void givenToday_whenUsingWithTemporalAdjuster_thenFirstDayOfMonth(){ + Assert.assertEquals(1,useLocalDate.getFirstDayOfMonth().getDayOfMonth()); + } + + @Test + public void givenLocalDate_whenUsingAtStartOfDay_thenReturnMidnight(){ + Assert.assertEquals(LocalDateTime.parse("2016-05-22T00:00:00"),useLocalDate.getStartOfDay(LocalDate.parse("2016-05-22"))); + } + +} diff --git a/core-java-8/src/test/java/com/baeldung/datetime/UseLocalDateTimeTest.java b/core-java-8/src/test/java/com/baeldung/datetime/UseLocalDateTimeTest.java new file mode 100644 index 0000000000..69a289fd02 --- /dev/null +++ b/core-java-8/src/test/java/com/baeldung/datetime/UseLocalDateTimeTest.java @@ -0,0 +1,19 @@ +package com.baeldung.datetime; + +import java.time.LocalDate; +import java.time.LocalTime; +import java.time.Month; + +import org.junit.Assert; +import org.junit.Test; + +public class UseLocalDateTimeTest { + + UseLocalDateTime useLocalDateTime = new UseLocalDateTime(); + + @Test + public void givenString_whenUsingParse_thenLocalDateTime(){ + Assert.assertEquals(LocalDate.of(2016, Month.MAY, 10),useLocalDateTime.getLocalDateTimeUsingParseMethod("2016-05-10T06:30").toLocalDate()); + Assert.assertEquals(LocalTime.of(6,30),useLocalDateTime.getLocalDateTimeUsingParseMethod("2016-05-10T06:30").toLocalTime()); + } +} diff --git a/core-java-8/src/test/java/com/baeldung/datetime/UseLocalTimeTest.java b/core-java-8/src/test/java/com/baeldung/datetime/UseLocalTimeTest.java new file mode 100644 index 0000000000..7776fad363 --- /dev/null +++ b/core-java-8/src/test/java/com/baeldung/datetime/UseLocalTimeTest.java @@ -0,0 +1,36 @@ +package com.baeldung.datetime; + +import java.time.LocalTime; + +import org.junit.Assert; +import org.junit.Test; + +public class UseLocalTimeTest { + + UseLocalTime useLocalTime = new UseLocalTime(); + + @Test + public void givenValues_whenUsingFactoryOf_thenLocalTime(){ + Assert.assertEquals("07:07:07",useLocalTime.getLocalTimeUsingFactoryOfMethod(7,7,7).toString()); + } + + @Test + public void givenString_whenUsingParse_thenLocalTime(){ + Assert.assertEquals("06:30",useLocalTime.getLocalTimeUsingParseMethod("06:30").toString()); + } + + @Test + public void givenTime_whenAddHour_thenLocalTime(){ + Assert.assertEquals("07:30",useLocalTime.addAnHour(LocalTime.of(6,30)).toString()); + } + + @Test + public void getHourFromLocalTime(){ + Assert.assertEquals(1, useLocalTime.getHourFromLocalTime(LocalTime.of(1,1))); + } + + @Test + public void getLocalTimeWithMinuteSetToValue(){ + Assert.assertEquals(LocalTime.of(10, 20), useLocalTime.getLocalTimeWithMinuteSetToValue(LocalTime.of(10,10), 20)); + } +} diff --git a/core-java-8/src/test/java/com/baeldung/datetime/UsePeriodTest.java b/core-java-8/src/test/java/com/baeldung/datetime/UsePeriodTest.java new file mode 100644 index 0000000000..8a3228aaa5 --- /dev/null +++ b/core-java-8/src/test/java/com/baeldung/datetime/UsePeriodTest.java @@ -0,0 +1,29 @@ +package com.baeldung.datetime; + +import java.time.LocalDate; +import java.time.LocalDateTime; +import java.time.Period; +import java.time.ZoneId; +import java.time.ZonedDateTime; + +import org.junit.Assert; +import org.junit.Test; + +public class UsePeriodTest { + UsePeriod usingPeriod=new UsePeriod(); + + @Test + public void givenPeriodAndLocalDate_thenCalculateModifiedDate(){ + Period period = Period.ofDays(1); + LocalDate localDate = LocalDate.parse("2007-05-10"); + Assert.assertEquals(localDate.plusDays(1),usingPeriod.modifyDates(localDate, period)); + } + + @Test + public void givenDates_thenGetPeriod(){ + LocalDate localDate1 = LocalDate.parse("2007-05-10"); + LocalDate localDate2 = LocalDate.parse("2007-05-15"); + + Assert.assertEquals(Period.ofDays(5), usingPeriod.getDifferenceBetweenDates(localDate1, localDate2)); + } +} diff --git a/core-java-8/src/test/java/com/baeldung/datetime/UseZonedDateTimeTest.java b/core-java-8/src/test/java/com/baeldung/datetime/UseZonedDateTimeTest.java new file mode 100644 index 0000000000..5af01ad678 --- /dev/null +++ b/core-java-8/src/test/java/com/baeldung/datetime/UseZonedDateTimeTest.java @@ -0,0 +1,20 @@ +package com.baeldung.datetime; + +import java.time.LocalDateTime; +import java.time.ZoneId; +import java.time.ZonedDateTime; + +import org.junit.Assert; +import org.junit.Test; + +public class UseZonedDateTimeTest { + + UseZonedDateTime zonedDateTime=new UseZonedDateTime(); + + @Test + public void givenZoneId_thenZonedDateTime(){ + ZoneId zoneId=ZoneId.of("Europe/Paris"); + ZonedDateTime zonedDatetime=zonedDateTime.getZonedDateTime(LocalDateTime.parse("2016-05-20T06:30"), zoneId); + Assert.assertEquals(zoneId,ZoneId.from(zonedDatetime)); + } +} From e8bbe6eba606d8661ec691249f2eedd921b2c48e Mon Sep 17 00:00:00 2001 From: Thai Nguyen Date: Thu, 26 May 2016 17:36:32 +0700 Subject: [PATCH 009/108] initial commit for wiremock --- rest-testing/pom.xml | 285 +++++++++--------- .../wiremock/introduction/JUnitManaged.java | 53 ++++ .../introduction/ProgrammaticallyManaged.java | 52 ++++ 3 files changed, 251 insertions(+), 139 deletions(-) create mode 100644 rest-testing/src/test/java/com/baeldung/rest/wiremock/introduction/JUnitManaged.java create mode 100644 rest-testing/src/test/java/com/baeldung/rest/wiremock/introduction/ProgrammaticallyManaged.java diff --git a/rest-testing/pom.xml b/rest-testing/pom.xml index e159af0b77..3bd7efb4d5 100644 --- a/rest-testing/pom.xml +++ b/rest-testing/pom.xml @@ -1,173 +1,180 @@ - - 4.0.0 - com.baeldung - rest-testing - 0.1-SNAPSHOT + + 4.0.0 + com.baeldung + rest-testing + 0.1-SNAPSHOT - rest-testing + rest-testing - + - + - - com.google.guava - guava - ${guava.version} - + + com.google.guava + guava + ${guava.version} + - - commons-io - commons-io - 2.4 - + + commons-io + commons-io + 2.4 + - - org.apache.commons - commons-lang3 - ${commons-lang3.version} - + + org.apache.commons + commons-lang3 + ${commons-lang3.version} + - + - - org.apache.httpcomponents - httpclient - ${httpclient.version} - - - org.apache.httpcomponents - httpcore - ${httpcore.version} - + + org.apache.httpcomponents + httpclient + ${httpclient.version} + + + org.apache.httpcomponents + httpcore + ${httpcore.version} + - + - - com.fasterxml.jackson.core - jackson-databind - ${jackson.version} - + + com.fasterxml.jackson.core + jackson-databind + ${jackson.version} + - + - - org.slf4j - slf4j-api - ${org.slf4j.version} - - - ch.qos.logback - logback-classic - ${logback.version} - - - - org.slf4j - jcl-over-slf4j - ${org.slf4j.version} - runtime - - - org.slf4j - log4j-over-slf4j - ${org.slf4j.version} - + + org.slf4j + slf4j-api + ${org.slf4j.version} + + + ch.qos.logback + logback-classic + ${logback.version} + + + + org.slf4j + jcl-over-slf4j + ${org.slf4j.version} + runtime + + + org.slf4j + log4j-over-slf4j + ${org.slf4j.version} + - + - - junit - junit - ${junit.version} - test - + + junit + junit + ${junit.version} + test + - - org.hamcrest - hamcrest-core - ${org.hamcrest.version} - test - - - org.hamcrest - hamcrest-library - ${org.hamcrest.version} - test - + + org.hamcrest + hamcrest-core + ${org.hamcrest.version} + test + + + org.hamcrest + hamcrest-library + ${org.hamcrest.version} + test + - - org.mockito - mockito-core - ${mockito.version} - test - + + org.mockito + mockito-core + ${mockito.version} + test + + + com.github.tomakehurst + wiremock + 1.58 + test + - + - - rest-testing - - - src/main/resources - true - - + + rest-testing + + + src/main/resources + true + + - + - - org.apache.maven.plugins - maven-compiler-plugin - ${maven-compiler-plugin.version} - - 1.8 - 1.8 - - + + org.apache.maven.plugins + maven-compiler-plugin + ${maven-compiler-plugin.version} + + 1.8 + 1.8 + + - - org.apache.maven.plugins - maven-surefire-plugin - ${maven-surefire-plugin.version} - + + org.apache.maven.plugins + maven-surefire-plugin + ${maven-surefire-plugin.version} + - + - + - - - 2.7.2 + + + 2.7.2 - - 1.7.13 - 1.1.3 + + 1.7.13 + 1.1.3 - - 5.1.3.Final + + 5.1.3.Final - - 19.0 - 3.4 + + 19.0 + 3.4 - - 1.3 - 4.12 - 1.10.19 + + 1.3 + 4.12 + 1.10.19 - 4.4.1 - 4.5 + 4.4.1 + 4.5 - 2.9.0 + 2.9.0 - - 3.5.1 - 2.6 - 2.19.1 - 2.7 - 1.4.18 + + 3.5.1 + 2.6 + 2.19.1 + 2.7 + 1.4.18 - + \ No newline at end of file diff --git a/rest-testing/src/test/java/com/baeldung/rest/wiremock/introduction/JUnitManaged.java b/rest-testing/src/test/java/com/baeldung/rest/wiremock/introduction/JUnitManaged.java new file mode 100644 index 0000000000..9fef6017c1 --- /dev/null +++ b/rest-testing/src/test/java/com/baeldung/rest/wiremock/introduction/JUnitManaged.java @@ -0,0 +1,53 @@ +package com.baeldung.rest.wiremock.introduction; + +import static com.github.tomakehurst.wiremock.client.WireMock.aResponse; +import static com.github.tomakehurst.wiremock.client.WireMock.configureFor; +import static com.github.tomakehurst.wiremock.client.WireMock.get; +import static com.github.tomakehurst.wiremock.client.WireMock.getRequestedFor; +import static com.github.tomakehurst.wiremock.client.WireMock.stubFor; +import static com.github.tomakehurst.wiremock.client.WireMock.urlEqualTo; +import static com.github.tomakehurst.wiremock.client.WireMock.urlPathMatching; +import static com.github.tomakehurst.wiremock.client.WireMock.verify; +import static org.junit.Assert.assertEquals; + +import java.io.IOException; +import java.io.InputStream; +import java.util.Scanner; + +import org.apache.http.HttpResponse; +import org.apache.http.client.methods.HttpGet; +import org.apache.http.impl.client.CloseableHttpClient; +import org.apache.http.impl.client.HttpClients; +import org.junit.Rule; +import org.junit.Test; + +import com.github.tomakehurst.wiremock.junit.WireMockRule; + +public class JUnitManaged { + @Rule + public WireMockRule wireMockRule = new WireMockRule(); + + @Test + public void givenJUnitManagedServer_whenStubbingURL_thenCorrect() throws IOException { + configureFor("localhost", 8080); + stubFor(get(urlPathMatching("/baeldung/.*")).willReturn(aResponse().withStatus(200).withHeader("Content-Type", "application/json").withBody("\"testing-library\": \"WireMock\""))); + + CloseableHttpClient httpClient = HttpClients.createDefault(); + HttpGet request = new HttpGet("http://localhost:8080/baeldung/wiremock"); + HttpResponse httpResponse = httpClient.execute(request); + String stringResponse = convertResponseToString(httpResponse); + + verify(getRequestedFor(urlEqualTo("/baeldung/wiremock"))); + assertEquals(200, httpResponse.getStatusLine().getStatusCode()); + assertEquals("application/json", httpResponse.getFirstHeader("Content-Type").getValue()); + assertEquals("\"testing-library\": \"WireMock\"", stringResponse); + } + + private String convertResponseToString(HttpResponse response) throws IOException { + InputStream responseStream = response.getEntity().getContent(); + Scanner scanner = new Scanner(responseStream, "UTF-8"); + String stringResponse = scanner.useDelimiter("\\Z").next(); + scanner.close(); + return stringResponse; + } +} diff --git a/rest-testing/src/test/java/com/baeldung/rest/wiremock/introduction/ProgrammaticallyManaged.java b/rest-testing/src/test/java/com/baeldung/rest/wiremock/introduction/ProgrammaticallyManaged.java new file mode 100644 index 0000000000..34b445ac0f --- /dev/null +++ b/rest-testing/src/test/java/com/baeldung/rest/wiremock/introduction/ProgrammaticallyManaged.java @@ -0,0 +1,52 @@ +package com.baeldung.rest.wiremock.introduction; + +import static com.github.tomakehurst.wiremock.client.WireMock.aResponse; +import static com.github.tomakehurst.wiremock.client.WireMock.configureFor; +import static com.github.tomakehurst.wiremock.client.WireMock.get; +import static com.github.tomakehurst.wiremock.client.WireMock.getRequestedFor; +import static com.github.tomakehurst.wiremock.client.WireMock.stubFor; +import static com.github.tomakehurst.wiremock.client.WireMock.urlEqualTo; +import static com.github.tomakehurst.wiremock.client.WireMock.verify; +import static org.junit.Assert.assertEquals; + +import java.io.IOException; +import java.io.InputStream; +import java.util.Scanner; + +import org.apache.http.HttpResponse; +import org.apache.http.client.methods.HttpGet; +import org.apache.http.impl.client.CloseableHttpClient; +import org.apache.http.impl.client.HttpClients; +import org.junit.Test; + +import com.github.tomakehurst.wiremock.WireMockServer; + +public class ProgrammaticallyManaged { + WireMockServer wireMockServer = new WireMockServer(); + CloseableHttpClient httpClient = HttpClients.createDefault(); + + @Test + public void givenProgrammaticallyManagedServer_whenUsingSimpleStubbing_thenCorrect() throws IOException { + wireMockServer.start(); + + configureFor("localhost", 8080); + stubFor(get(urlEqualTo("/baeldung")).willReturn(aResponse().withBody("Welcome to Baeldung!"))); + + HttpGet request = new HttpGet("http://localhost:8080/baeldung"); + HttpResponse httpResponse = httpClient.execute(request); + String stringResponse = convertResponseToString(httpResponse); + + verify(getRequestedFor(urlEqualTo("/baeldung"))); + assertEquals("Welcome to Baeldung!", stringResponse); + + wireMockServer.stop(); + } + + private String convertResponseToString(HttpResponse response) throws IOException { + InputStream responseStream = response.getEntity().getContent(); + Scanner scanner = new Scanner(responseStream, "UTF-8"); + String stringResponse = scanner.useDelimiter("\\Z").next(); + scanner.close(); + return stringResponse; + } +} \ No newline at end of file From ce7c3954175b84d5987835af0f39164fa04befff Mon Sep 17 00:00:00 2001 From: Ivan Paolillo Date: Fri, 27 May 2016 15:49:07 +0200 Subject: [PATCH 010/108] A Gatling load test demo --- gatling-loadtest-demo/.cache-tests | 166 ++++++++++++++++++ gatling-loadtest-demo/.classpath | 32 ++++ gatling-loadtest-demo/.project | 24 +++ gatling-loadtest-demo/pom.xml | 113 ++++++++++++ .../src/test/resources/gatling.conf | 127 ++++++++++++++ .../src/test/resources/logback.xml | 22 +++ .../src/test/resources/recorder.conf | 57 ++++++ .../src/test/scala/Engine.scala | 13 ++ .../src/test/scala/IDEPathHelper.scala | 22 +++ .../src/test/scala/Recorder.scala | 12 ++ .../org/baeldung/RecordedSimulation.scala | 46 +++++ 11 files changed, 634 insertions(+) create mode 100644 gatling-loadtest-demo/.cache-tests create mode 100644 gatling-loadtest-demo/.classpath create mode 100644 gatling-loadtest-demo/.project create mode 100644 gatling-loadtest-demo/pom.xml create mode 100644 gatling-loadtest-demo/src/test/resources/gatling.conf create mode 100644 gatling-loadtest-demo/src/test/resources/logback.xml create mode 100644 gatling-loadtest-demo/src/test/resources/recorder.conf create mode 100644 gatling-loadtest-demo/src/test/scala/Engine.scala create mode 100644 gatling-loadtest-demo/src/test/scala/IDEPathHelper.scala create mode 100644 gatling-loadtest-demo/src/test/scala/Recorder.scala create mode 100644 gatling-loadtest-demo/src/test/scala/org/baeldung/RecordedSimulation.scala diff --git a/gatling-loadtest-demo/.cache-tests b/gatling-loadtest-demo/.cache-tests new file mode 100644 index 0000000000..31b0015eef --- /dev/null +++ b/gatling-loadtest-demo/.cache-tests @@ -0,0 +1,166 @@ +format version: 5 +output mode: +1 items +0 -> multiple +output directories: +2 items +C:\develop\git\tutorials\gatling-loadtest-demo\src\test\resources -> C:\develop\git\tutorials\gatling-loadtest-demo\target\test-classes +C:\develop\git\tutorials\gatling-loadtest-demo\src\test\scala -> C:\develop\git\tutorials\gatling-loadtest-demo\target\test-classes +compile options: +8 items +0 -> -javabootclasspath +1 -> C:\develop\Java\jdk1.8.0_77\jre\lib\resources.jar;C:\develop\Java\jdk1.8.0_77\jre\lib\rt.jar;C:\develop\Java\jdk1.8.0_77\jre\lib\jsse.jar;C:\develop\Java\jdk1.8.0_77\jre\lib\jce.jar;C:\develop\Java\jdk1.8.0_77\jre\lib\charsets.jar;C:\develop\Java\jdk1.8.0_77\jre\lib\jfr.jar;C:\develop\Java\jdk1.8.0_77\jre\lib\ext\access-bridge-64.jar;C:\develop\Java\jdk1.8.0_77\jre\lib\ext\cldrdata.jar;C:\develop\Java\jdk1.8.0_77\jre\lib\ext\dnsns.jar;C:\develop\Java\jdk1.8.0_77\jre\lib\ext\jaccess.jar;C:\develop\Java\jdk1.8.0_77\jre\lib\ext\jfxrt.jar;C:\develop\Java\jdk1.8.0_77\jre\lib\ext\localedata.jar;C:\develop\Java\jdk1.8.0_77\jre\lib\ext\nashorn.jar;C:\develop\Java\jdk1.8.0_77\jre\lib\ext\sunec.jar;C:\develop\Java\jdk1.8.0_77\jre\lib\ext\sunjce_provider.jar;C:\develop\Java\jdk1.8.0_77\jre\lib\ext\sunmscapi.jar;C:\develop\Java\jdk1.8.0_77\jre\lib\ext\sunpkcs11.jar;C:\develop\Java\jdk1.8.0_77\jre\lib\ext\zipfs.jar +2 -> -javaextdirs +3 -> +4 -> -bootclasspath +5 -> C:\develop\IDE\sts-bundle\sts-3.7.3.RELEASE\plugins\org.scala-lang.scala-library_2.11.8.v20160304-115712-1706a37eb8.jar +6 -> -encoding +7 -> UTF-8 +javac options: +0 items +compiler version: +1 items +0 -> 2.11.8 +compile order: +1 items +0 -> Mixed +name hashing: +1 items +0 -> false +products: +9 items +C:\develop\git\tutorials\gatling-loadtest-demo\src\test\scala\Engine.scala -> C:\develop\git\tutorials\gatling-loadtest-demo\target\test-classes\Engine$.class +C:\develop\git\tutorials\gatling-loadtest-demo\src\test\scala\Engine.scala -> C:\develop\git\tutorials\gatling-loadtest-demo\target\test-classes\Engine$delayedInit$body.class +C:\develop\git\tutorials\gatling-loadtest-demo\src\test\scala\Engine.scala -> C:\develop\git\tutorials\gatling-loadtest-demo\target\test-classes\Engine.class +C:\develop\git\tutorials\gatling-loadtest-demo\src\test\scala\IDEPathHelper.scala -> C:\develop\git\tutorials\gatling-loadtest-demo\target\test-classes\IDEPathHelper$.class +C:\develop\git\tutorials\gatling-loadtest-demo\src\test\scala\IDEPathHelper.scala -> C:\develop\git\tutorials\gatling-loadtest-demo\target\test-classes\IDEPathHelper.class +C:\develop\git\tutorials\gatling-loadtest-demo\src\test\scala\org\baeldung\RecordedSimulation.scala -> C:\develop\git\tutorials\gatling-loadtest-demo\target\test-classes\org\baeldung\RecordedSimulation.class +C:\develop\git\tutorials\gatling-loadtest-demo\src\test\scala\Recorder.scala -> C:\develop\git\tutorials\gatling-loadtest-demo\target\test-classes\Recorder$.class +C:\develop\git\tutorials\gatling-loadtest-demo\src\test\scala\Recorder.scala -> C:\develop\git\tutorials\gatling-loadtest-demo\target\test-classes\Recorder$delayedInit$body.class +C:\develop\git\tutorials\gatling-loadtest-demo\src\test\scala\Recorder.scala -> C:\develop\git\tutorials\gatling-loadtest-demo\target\test-classes\Recorder.class +binary dependencies: +15 items +C:\develop\git\tutorials\gatling-loadtest-demo\src\test\scala\Engine.scala -> C:\Users\Ivan Paolillo\.m2\repository\io\gatling\gatling-app\2.2.0\gatling-app-2.2.0.jar +C:\develop\git\tutorials\gatling-loadtest-demo\src\test\scala\Engine.scala -> C:\Users\Ivan Paolillo\.m2\repository\io\gatling\gatling-core\2.2.0\gatling-core-2.2.0.jar +C:\develop\git\tutorials\gatling-loadtest-demo\src\test\scala\Engine.scala -> C:\develop\IDE\sts-bundle\sts-3.7.3.RELEASE\plugins\org.scala-lang.scala-library_2.11.8.v20160304-115712-1706a37eb8.jar +C:\develop\git\tutorials\gatling-loadtest-demo\src\test\scala\Engine.scala -> C:\develop\Java\jdk1.8.0_77\jre\lib\rt.jar +C:\develop\git\tutorials\gatling-loadtest-demo\src\test\scala\IDEPathHelper.scala -> C:\Users\Ivan Paolillo\.m2\repository\io\gatling\gatling-commons\2.2.0\gatling-commons-2.2.0.jar +C:\develop\git\tutorials\gatling-loadtest-demo\src\test\scala\IDEPathHelper.scala -> C:\develop\Java\jdk1.8.0_77\jre\lib\rt.jar +C:\develop\git\tutorials\gatling-loadtest-demo\src\test\scala\org\baeldung\RecordedSimulation.scala -> C:\Users\Ivan Paolillo\.m2\repository\io\gatling\gatling-commons\2.2.0\gatling-commons-2.2.0.jar +C:\develop\git\tutorials\gatling-loadtest-demo\src\test\scala\org\baeldung\RecordedSimulation.scala -> C:\Users\Ivan Paolillo\.m2\repository\io\gatling\gatling-core\2.2.0\gatling-core-2.2.0.jar +C:\develop\git\tutorials\gatling-loadtest-demo\src\test\scala\org\baeldung\RecordedSimulation.scala -> C:\Users\Ivan Paolillo\.m2\repository\io\gatling\gatling-http\2.2.0\gatling-http-2.2.0.jar +C:\develop\git\tutorials\gatling-loadtest-demo\src\test\scala\org\baeldung\RecordedSimulation.scala -> C:\Users\Ivan Paolillo\.m2\repository\io\gatling\gatling-jdbc\2.2.0\gatling-jdbc-2.2.0.jar +C:\develop\git\tutorials\gatling-loadtest-demo\src\test\scala\org\baeldung\RecordedSimulation.scala -> C:\develop\IDE\sts-bundle\sts-3.7.3.RELEASE\plugins\org.scala-lang.scala-library_2.11.8.v20160304-115712-1706a37eb8.jar +C:\develop\git\tutorials\gatling-loadtest-demo\src\test\scala\org\baeldung\RecordedSimulation.scala -> C:\develop\Java\jdk1.8.0_77\jre\lib\rt.jar +C:\develop\git\tutorials\gatling-loadtest-demo\src\test\scala\Recorder.scala -> C:\Users\Ivan Paolillo\.m2\repository\io\gatling\gatling-recorder\2.2.0\gatling-recorder-2.2.0.jar +C:\develop\git\tutorials\gatling-loadtest-demo\src\test\scala\Recorder.scala -> C:\develop\IDE\sts-bundle\sts-3.7.3.RELEASE\plugins\org.scala-lang.scala-library_2.11.8.v20160304-115712-1706a37eb8.jar +C:\develop\git\tutorials\gatling-loadtest-demo\src\test\scala\Recorder.scala -> C:\develop\Java\jdk1.8.0_77\jre\lib\rt.jar +direct source dependencies: +2 items +C:\develop\git\tutorials\gatling-loadtest-demo\src\test\scala\Engine.scala -> C:\develop\git\tutorials\gatling-loadtest-demo\src\test\scala\IDEPathHelper.scala +C:\develop\git\tutorials\gatling-loadtest-demo\src\test\scala\Recorder.scala -> C:\develop\git\tutorials\gatling-loadtest-demo\src\test\scala\IDEPathHelper.scala +direct external dependencies: +0 items +public inherited source dependencies: +0 items +public inherited external dependencies: +0 items +member reference internal dependencies: +0 items +member reference external dependencies: +0 items +inheritance internal dependencies: +0 items +inheritance external dependencies: +0 items +class names: +9 items +C:\develop\git\tutorials\gatling-loadtest-demo\src\test\scala\Engine.scala -> Engine +C:\develop\git\tutorials\gatling-loadtest-demo\src\test\scala\Engine.scala -> Engine$ +C:\develop\git\tutorials\gatling-loadtest-demo\src\test\scala\Engine.scala -> Engine$delayedInit$body +C:\develop\git\tutorials\gatling-loadtest-demo\src\test\scala\IDEPathHelper.scala -> IDEPathHelper +C:\develop\git\tutorials\gatling-loadtest-demo\src\test\scala\IDEPathHelper.scala -> IDEPathHelper$ +C:\develop\git\tutorials\gatling-loadtest-demo\src\test\scala\org\baeldung\RecordedSimulation.scala -> org.baeldung.RecordedSimulation +C:\develop\git\tutorials\gatling-loadtest-demo\src\test\scala\Recorder.scala -> Recorder +C:\develop\git\tutorials\gatling-loadtest-demo\src\test\scala\Recorder.scala -> Recorder$ +C:\develop\git\tutorials\gatling-loadtest-demo\src\test\scala\Recorder.scala -> Recorder$delayedInit$body +used names: +0 items +product stamps: +9 items +C:\develop\git\tutorials\gatling-loadtest-demo\target\test-classes\Engine$.class -> lastModified(1464356690978) +C:\develop\git\tutorials\gatling-loadtest-demo\target\test-classes\Engine$delayedInit$body.class -> lastModified(1464356690989) +C:\develop\git\tutorials\gatling-loadtest-demo\target\test-classes\Engine.class -> lastModified(1464356690863) +C:\develop\git\tutorials\gatling-loadtest-demo\target\test-classes\IDEPathHelper$.class -> lastModified(1464356691030) +C:\develop\git\tutorials\gatling-loadtest-demo\target\test-classes\IDEPathHelper.class -> lastModified(1464356691005) +C:\develop\git\tutorials\gatling-loadtest-demo\target\test-classes\org\baeldung\RecordedSimulation.class -> lastModified(1464356691072) +C:\develop\git\tutorials\gatling-loadtest-demo\target\test-classes\Recorder$.class -> lastModified(1464356691045) +C:\develop\git\tutorials\gatling-loadtest-demo\target\test-classes\Recorder$delayedInit$body.class -> lastModified(1464356691049) +C:\develop\git\tutorials\gatling-loadtest-demo\target\test-classes\Recorder.class -> lastModified(1464356691034) +source stamps: +4 items +C:\develop\git\tutorials\gatling-loadtest-demo\src\test\scala\Engine.scala -> hash(e98bacf89a84be65d2a131fa7e072d4f6ebef89d) +C:\develop\git\tutorials\gatling-loadtest-demo\src\test\scala\IDEPathHelper.scala -> hash(20255b66020a40c67db52f8248fab7e3250fc940) +C:\develop\git\tutorials\gatling-loadtest-demo\src\test\scala\org\baeldung\RecordedSimulation.scala -> hash(1d4aab935ed26aa3fee62aff5bc9d1d2dbc3f776) +C:\develop\git\tutorials\gatling-loadtest-demo\src\test\scala\Recorder.scala -> hash(667da8a9d712f988ed7b14bdfa7b293c76ac3b61) +binary stamps: +8 items +C:\develop\IDE\sts-bundle\sts-3.7.3.RELEASE\plugins\org.scala-lang.scala-library_2.11.8.v20160304-115712-1706a37eb8.jar -> lastModified(1463581376873) +C:\develop\Java\jdk1.8.0_77\jre\lib\rt.jar -> lastModified(1460466041763) +C:\Users\Ivan Paolillo\.m2\repository\io\gatling\gatling-app\2.2.0\gatling-app-2.2.0.jar -> lastModified(1463577683111) +C:\Users\Ivan Paolillo\.m2\repository\io\gatling\gatling-commons\2.2.0\gatling-commons-2.2.0.jar -> lastModified(1463577434095) +C:\Users\Ivan Paolillo\.m2\repository\io\gatling\gatling-core\2.2.0\gatling-core-2.2.0.jar -> lastModified(1463577425041) +C:\Users\Ivan Paolillo\.m2\repository\io\gatling\gatling-http\2.2.0\gatling-http-2.2.0.jar -> lastModified(1463577691216) +C:\Users\Ivan Paolillo\.m2\repository\io\gatling\gatling-jdbc\2.2.0\gatling-jdbc-2.2.0.jar -> lastModified(1463577767127) +C:\Users\Ivan Paolillo\.m2\repository\io\gatling\gatling-recorder\2.2.0\gatling-recorder-2.2.0.jar -> lastModified(1463577812366) +class names: +8 items +C:\develop\IDE\sts-bundle\sts-3.7.3.RELEASE\plugins\org.scala-lang.scala-library_2.11.8.v20160304-115712-1706a37eb8.jar -> scala.reflect.ClassTag$ +C:\develop\Java\jdk1.8.0_77\jre\lib\rt.jar -> java.lang.Object +C:\Users\Ivan Paolillo\.m2\repository\io\gatling\gatling-app\2.2.0\gatling-app-2.2.0.jar -> io.gatling.app.Gatling$ +C:\Users\Ivan Paolillo\.m2\repository\io\gatling\gatling-commons\2.2.0\gatling-commons-2.2.0.jar -> io.gatling.commons.util.TypeCaster$ +C:\Users\Ivan Paolillo\.m2\repository\io\gatling\gatling-core\2.2.0\gatling-core-2.2.0.jar -> io.gatling.core.scenario.Simulation +C:\Users\Ivan Paolillo\.m2\repository\io\gatling\gatling-http\2.2.0\gatling-http-2.2.0.jar -> io.gatling.http.protocol.HttpProtocolBuilder +C:\Users\Ivan Paolillo\.m2\repository\io\gatling\gatling-jdbc\2.2.0\gatling-jdbc-2.2.0.jar -> io.gatling.jdbc.Predef$ +C:\Users\Ivan Paolillo\.m2\repository\io\gatling\gatling-recorder\2.2.0\gatling-recorder-2.2.0.jar -> io.gatling.recorder.GatlingRecorder$ +internal apis: +4 items +C:\develop\git\tutorials\gatling-loadtest-demo\src\test\scala\Engine.scala -> +rO0ABXNyABB4c2J0aS5hcGkuU291cmNlFlpwRASfbtoCAAZJAAdhcGlIYXNoWgAIaGFzTWFjcm9MABhfaW50ZXJuYWxPbmx5X25hbWVIYXNoZXN0ACRMeHNidGkvYXBpL19pbnRlcm5hbE9ubHlfTmFtZUhhc2hlcztMAANhcGl0ABVMeHNidGkvYXBpL1NvdXJjZUFQSTtMAAtjb21waWxhdGlvbnQAF0x4c2J0aS9hcGkvQ29tcGlsYXRpb247WwAEaGFzaHQAAltCeHA7lBuUAHNyACJ4c2J0aS5hcGkuX2ludGVybmFsT25seV9OYW1lSGFzaGVzVNq+mfrU7EwCAAJbAA9pbXBsaWNpdE1lbWJlcnN0ACNbTHhzYnRpL2FwaS9faW50ZXJuYWxPbmx5X05hbWVIYXNoO1sADnJlZ3VsYXJNZW1iZXJzcQB+AAd4cHVyACNbTHhzYnRpLmFwaS5faW50ZXJuYWxPbmx5X05hbWVIYXNoO0lagLbdlov0AgAAeHAAAAAAdXEAfgAJAAAAAHNyABN4c2J0aS5hcGkuU291cmNlQVBJuV6n+SkjOKQCAAJbAAtkZWZpbml0aW9uc3QAF1tMeHNidGkvYXBpL0RlZmluaXRpb247WwAIcGFja2FnZXN0ABRbTHhzYnRpL2FwaS9QYWNrYWdlO3hwdXIAF1tMeHNidGkuYXBpLkRlZmluaXRpb247iMlc57TjXg4CAAB4cAAAAAFzcgATeHNidGkuYXBpLkNsYXNzTGlrZYM0HKHfsJdsAgAETAAOZGVmaW5pdGlvblR5cGV0ABpMeHNidGkvYXBpL0RlZmluaXRpb25UeXBlO1sAEHNhdmVkQW5ub3RhdGlvbnN0ABNbTGphdmEvbGFuZy9TdHJpbmc7TAAIc2VsZlR5cGV0ABBMeHNidGkvYXBpL0xhenk7TAAJc3RydWN0dXJlcQB+ABV4cgAheHNidGkuYXBpLlBhcmFtZXRlcml6ZWREZWZpbml0aW9u+RFusdVQPOICAAFbAA50eXBlUGFyYW1ldGVyc3QAGltMeHNidGkvYXBpL1R5cGVQYXJhbWV0ZXI7eHIAFHhzYnRpLmFwaS5EZWZpbml0aW9uhyob6HFC40YCAARMAAZhY2Nlc3N0ABJMeHNidGkvYXBpL0FjY2VzcztbAAthbm5vdGF0aW9uc3QAF1tMeHNidGkvYXBpL0Fubm90YXRpb247TAAJbW9kaWZpZXJzdAAVTHhzYnRpL2FwaS9Nb2RpZmllcnM7TAAEbmFtZXQAEkxqYXZhL2xhbmcvU3RyaW5nO3hwc3IAEHhzYnRpLmFwaS5QdWJsaWO6WD2ubC1gQgIAAHhyABB4c2J0aS5hcGkuQWNjZXNz3WKa+B1jMUgCAAB4cHVyABdbTHhzYnRpLmFwaS5Bbm5vdGF0aW9uO+uX6xkQ9o1IAgAAeHAAAAAAc3IAE3hzYnRpLmFwaS5Nb2RpZmllcnPHERMhaZzcJAIAAUIABWZsYWdzeHAAdAAGRW5naW5ldXIAGltMeHNidGkuYXBpLlR5cGVQYXJhbWV0ZXI72W0mDyid8rYCAAB4cAAAAAB+cgAYeHNidGkuYXBpLkRlZmluaXRpb25UeXBlAAAAAAAAAAASAAB4cgAOamF2YS5sYW5nLkVudW0AAAAAAAAAABIAAHhwdAAGTW9kdWxldXIAE1tMamF2YS5sYW5nLlN0cmluZzut0lbn6R17RwIAAHhwAAAAAnQAEHNjYWxhLmRlcHJlY2F0ZWR0ABpzY2FsYS5kZXByZWNhdGVkT3ZlcnJpZGluZ3NyABN4c2J0aS5TYWZlTGF6eSRJbXBsO5FPEfRFTMkCAANaAAhiaXRtYXAkMEwAAl90dAASTGphdmEvbGFuZy9PYmplY3Q7TAAEZXZhbHQAEUxzY2FsYS9GdW5jdGlvbjA7eHIAFnhzYnRpLmFwaS5BYnN0cmFjdExhennTd7UBX7vnoAIAAHhwAXNyABN4c2J0aS5hcGkuRW1wdHlUeXBlvP2eRkk7iSQCAAB4cgAUeHNidGkuYXBpLlNpbXBsZVR5cGVyeGKIISO/QAIAAHhyAA54c2J0aS5hcGkuVHlwZT9q2SEWSarKAgAAeHBwc3EAfgAwAXNyABN4c2J0aS5hcGkuU3RydWN0dXJlqar5gJNv2AACAANMAAhkZWNsYXJlZHEAfgAVTAAJaW5oZXJpdGVkcQB+ABVMAAdwYXJlbnRzcQB+ABV4cQB+ADdzcQB+ADABdXEAfgAQAAAAAHBzcQB+ADABdXEAfgAQAAAAAXNyAA14c2J0aS5hcGkuRGVmUr6f4ny0NmkCAAJMAApyZXR1cm5UeXBldAAQTHhzYnRpL2FwaS9UeXBlO1sAD3ZhbHVlUGFyYW1ldGVyc3QAGltMeHNidGkvYXBpL1BhcmFtZXRlckxpc3Q7eHEAfgAWcQB+ACB1cQB+ACEAAAABc3IAFHhzYnRpLmFwaS5Bbm5vdGF0aW9u3g6BovZcCrICAAJbAAlhcmd1bWVudHN0AB9bTHhzYnRpL2FwaS9Bbm5vdGF0aW9uQXJndW1lbnQ7TAAEYmFzZXEAfgBBeHB1cgAfW0x4c2J0aS5hcGkuQW5ub3RhdGlvbkFyZ3VtZW50O1Gdpo84JQ94AgAAeHAAAAABc3IAHHhzYnRpLmFwaS5Bbm5vdGF0aW9uQXJndW1lbnTWRbHYAxsXfAIAAkwABG5hbWVxAH4AHEwABXZhbHVlcQB+ABx4cHQAAHQAKigibWFpbiBzaG91bGQgbm90IGJlIG92ZXJyaWRkZW4iLCIyLjExLjAiKXNyABR4c2J0aS5hcGkuUHJvamVjdGlvbvPSjVTpRaQtAgACTAACaWRxAH4AHEwABnByZWZpeHQAFkx4c2J0aS9hcGkvU2ltcGxlVHlwZTt4cQB+ADZ0ABRkZXByZWNhdGVkT3ZlcnJpZGluZ3NyABN4c2J0aS5hcGkuU2luZ2xldG9u/Kdf+M9W5EYCAAFMAARwYXRodAAQTHhzYnRpL2FwaS9QYXRoO3hxAH4ANnNyAA54c2J0aS5hcGkuUGF0aJs9XAjOpSeEAgABWwAKY29tcG9uZW50c3QAGltMeHNidGkvYXBpL1BhdGhDb21wb25lbnQ7eHB1cgAaW0x4c2J0aS5hcGkuUGF0aENvbXBvbmVudDtD2gl0LWcWdAIAAHhwAAAAAnNyAAx4c2J0aS5hcGkuSWSYMmyLN1PEQAIAAUwAAmlkcQB+ABx4cgAXeHNidGkuYXBpLlBhdGhDb21wb25lbnRfmiJbLoafvAIAAHhwdAAFc2NhbGFzcgAOeHNidGkuYXBpLlRoaXPbCe2mzFpAXAIAAHhxAH4AW3NxAH4AIwB0AARtYWludXEAfgAmAAAAAHNxAH4ATnQABFVuaXRxAH4AVHVyABpbTHhzYnRpLmFwaS5QYXJhbWV0ZXJMaXN0O/XTOh3ys3DuAgAAeHAAAAABc3IAF3hzYnRpLmFwaS5QYXJhbWV0ZXJMaXN01sW8HGRJdOMCAAJaAAppc0ltcGxpY2l0WwAKcGFyYW1ldGVyc3QAHFtMeHNidGkvYXBpL01ldGhvZFBhcmFtZXRlcjt4cAB1cgAcW0x4c2J0aS5hcGkuTWV0aG9kUGFyYW1ldGVyO8+4xV2l3bVtAgAAeHAAAAABc3IAGXhzYnRpLmFwaS5NZXRob2RQYXJhbWV0ZXIfRa4X00mw6gIABFoACmhhc0RlZmF1bHRMAAhtb2RpZmllcnQAHUx4c2J0aS9hcGkvUGFyYW1ldGVyTW9kaWZpZXI7TAAEbmFtZXEAfgAcTAADdHBlcQB+AEF4cAB+cgAbeHNidGkuYXBpLlBhcmFtZXRlck1vZGlmaWVyAAAAAAAAAAASAAB4cQB+ACl0AAVQbGFpbnQABGFyZ3NzcgAXeHNidGkuYXBpLlBhcmFtZXRlcml6ZWQWbO5pA8m7fwIAAkwACGJhc2VUeXBlcQB+AE9bAA10eXBlQXJndW1lbnRzdAARW0x4c2J0aS9hcGkvVHlwZTt4cQB+ADZzcQB+AE50AAVBcnJheXEAfgBUdXIAEVtMeHNidGkuYXBpLlR5cGU7dP+lWnv56UECAAB4cAAAAAFzcQB+AE50AAZTdHJpbmdzcQB+AFJzcQB+AFV1cQB+AFgAAAADc3EAfgBadAAEamF2YXNxAH4AWnQABGxhbmdxAH4AX3BzcQB+ADABdXEAfgB4AAAABHNxAH4ATnQAA0FwcHEAfgBUc3EAfgBOdAALRGVsYXllZEluaXRxAH4AVHNxAH4ATnQABk9iamVjdHEAfgB8c3EAfgBOdAADQW55cQB+AFRwcHVyABRbTHhzYnRpLmFwaS5QYWNrYWdlO1sTGTdwpyehAgAAeHAAAAAAc3IAFXhzYnRpLmFwaS5Db21waWxhdGlvbu364MNq6KBCAgACSgAJc3RhcnRUaW1lWwAHb3V0cHV0c3QAGltMeHNidGkvYXBpL091dHB1dFNldHRpbmc7eHAAAAFU8nXEpnVyABpbTHhzYnRpLmFwaS5PdXRwdXRTZXR0aW5nO39qwvOnh6VCAgAAeHAAAAACc3IAF3hzYnRpLmFwaS5PdXRwdXRTZXR0aW5netmaR3T7HXsCAAJMAA9vdXRwdXREaXJlY3RvcnlxAH4AHEwAD3NvdXJjZURpcmVjdG9yeXEAfgAceHB0AEJDOlxkZXZlbG9wXGdpdFx0dXRvcmlhbHNcZ2F0bGluZy1sb2FkdGVzdC1kZW1vXHRhcmdldFx0ZXN0LWNsYXNzZXN0AD1DOlxkZXZlbG9wXGdpdFx0dXRvcmlhbHNcZ2F0bGluZy1sb2FkdGVzdC1kZW1vXHNyY1x0ZXN0XHNjYWxhc3EAfgCUdABCQzpcZGV2ZWxvcFxnaXRcdHV0b3JpYWxzXGdhdGxpbmctbG9hZHRlc3QtZGVtb1x0YXJnZXRcdGVzdC1jbGFzc2VzdABBQzpcZGV2ZWxvcFxnaXRcdHV0b3JpYWxzXGdhdGxpbmctbG9hZHRlc3QtZGVtb1xzcmNcdGVzdFxyZXNvdXJjZXN1cgACW0Ks8xf4BghU4AIAAHhwAAAAFOmLrPiahL5l0qEx+n4HLU9uvvid +C:\develop\git\tutorials\gatling-loadtest-demo\src\test\scala\IDEPathHelper.scala -> +rO0ABXNyABB4c2J0aS5hcGkuU291cmNlFlpwRASfbtoCAAZJAAdhcGlIYXNoWgAIaGFzTWFjcm9MABhfaW50ZXJuYWxPbmx5X25hbWVIYXNoZXN0ACRMeHNidGkvYXBpL19pbnRlcm5hbE9ubHlfTmFtZUhhc2hlcztMAANhcGl0ABVMeHNidGkvYXBpL1NvdXJjZUFQSTtMAAtjb21waWxhdGlvbnQAF0x4c2J0aS9hcGkvQ29tcGlsYXRpb247WwAEaGFzaHQAAltCeHCXMg60AHNyACJ4c2J0aS5hcGkuX2ludGVybmFsT25seV9OYW1lSGFzaGVzVNq+mfrU7EwCAAJbAA9pbXBsaWNpdE1lbWJlcnN0ACNbTHhzYnRpL2FwaS9faW50ZXJuYWxPbmx5X05hbWVIYXNoO1sADnJlZ3VsYXJNZW1iZXJzcQB+AAd4cHVyACNbTHhzYnRpLmFwaS5faW50ZXJuYWxPbmx5X05hbWVIYXNoO0lagLbdlov0AgAAeHAAAAAAdXEAfgAJAAAAAHNyABN4c2J0aS5hcGkuU291cmNlQVBJuV6n+SkjOKQCAAJbAAtkZWZpbml0aW9uc3QAF1tMeHNidGkvYXBpL0RlZmluaXRpb247WwAIcGFja2FnZXN0ABRbTHhzYnRpL2FwaS9QYWNrYWdlO3hwdXIAF1tMeHNidGkuYXBpLkRlZmluaXRpb247iMlc57TjXg4CAAB4cAAAAAFzcgATeHNidGkuYXBpLkNsYXNzTGlrZYM0HKHfsJdsAgAETAAOZGVmaW5pdGlvblR5cGV0ABpMeHNidGkvYXBpL0RlZmluaXRpb25UeXBlO1sAEHNhdmVkQW5ub3RhdGlvbnN0ABNbTGphdmEvbGFuZy9TdHJpbmc7TAAIc2VsZlR5cGV0ABBMeHNidGkvYXBpL0xhenk7TAAJc3RydWN0dXJlcQB+ABV4cgAheHNidGkuYXBpLlBhcmFtZXRlcml6ZWREZWZpbml0aW9u+RFusdVQPOICAAFbAA50eXBlUGFyYW1ldGVyc3QAGltMeHNidGkvYXBpL1R5cGVQYXJhbWV0ZXI7eHIAFHhzYnRpLmFwaS5EZWZpbml0aW9uhyob6HFC40YCAARMAAZhY2Nlc3N0ABJMeHNidGkvYXBpL0FjY2VzcztbAAthbm5vdGF0aW9uc3QAF1tMeHNidGkvYXBpL0Fubm90YXRpb247TAAJbW9kaWZpZXJzdAAVTHhzYnRpL2FwaS9Nb2RpZmllcnM7TAAEbmFtZXQAEkxqYXZhL2xhbmcvU3RyaW5nO3hwc3IAEHhzYnRpLmFwaS5QdWJsaWO6WD2ubC1gQgIAAHhyABB4c2J0aS5hcGkuQWNjZXNz3WKa+B1jMUgCAAB4cHVyABdbTHhzYnRpLmFwaS5Bbm5vdGF0aW9uO+uX6xkQ9o1IAgAAeHAAAAAAc3IAE3hzYnRpLmFwaS5Nb2RpZmllcnPHERMhaZzcJAIAAUIABWZsYWdzeHAAdAANSURFUGF0aEhlbHBlcnVyABpbTHhzYnRpLmFwaS5UeXBlUGFyYW1ldGVyO9ltJg8onfK2AgAAeHAAAAAAfnIAGHhzYnRpLmFwaS5EZWZpbml0aW9uVHlwZQAAAAAAAAAAEgAAeHIADmphdmEubGFuZy5FbnVtAAAAAAAAAAASAAB4cHQABk1vZHVsZXVyABNbTGphdmEubGFuZy5TdHJpbmc7rdJW5+kde0cCAAB4cAAAAABzcgATeHNidGkuU2FmZUxhenkkSW1wbDuRTxH0RUzJAgADWgAIYml0bWFwJDBMAAJfdHQAEkxqYXZhL2xhbmcvT2JqZWN0O0wABGV2YWx0ABFMc2NhbGEvRnVuY3Rpb24wO3hyABZ4c2J0aS5hcGkuQWJzdHJhY3RMYXp503e1AV+756ACAAB4cAFzcgATeHNidGkuYXBpLkVtcHR5VHlwZbz9nkZJO4kkAgAAeHIAFHhzYnRpLmFwaS5TaW1wbGVUeXBlcnhiiCEjv0ACAAB4cgAOeHNidGkuYXBpLlR5cGU/atkhFkmqygIAAHhwcHNxAH4ALgFzcgATeHNidGkuYXBpLlN0cnVjdHVyZamq+YCTb9gAAgADTAAIZGVjbGFyZWRxAH4AFUwACWluaGVyaXRlZHEAfgAVTAAHcGFyZW50c3EAfgAVeHEAfgA1c3EAfgAuAXVxAH4AEAAAAABwc3EAfgAuAXVxAH4AEAAAAABwc3EAfgAuAXVyABFbTHhzYnRpLmFwaS5UeXBlO3T/pVp7+elBAgAAeHAAAAACc3IAFHhzYnRpLmFwaS5Qcm9qZWN0aW9u89KNVOlFpC0CAAJMAAJpZHEAfgAcTAAGcHJlZml4dAAWTHhzYnRpL2FwaS9TaW1wbGVUeXBlO3hxAH4ANHQABk9iamVjdHNyABN4c2J0aS5hcGkuU2luZ2xldG9u/Kdf+M9W5EYCAAFMAARwYXRodAAQTHhzYnRpL2FwaS9QYXRoO3hxAH4ANHNyAA54c2J0aS5hcGkuUGF0aJs9XAjOpSeEAgABWwAKY29tcG9uZW50c3QAGltMeHNidGkvYXBpL1BhdGhDb21wb25lbnQ7eHB1cgAaW0x4c2J0aS5hcGkuUGF0aENvbXBvbmVudDtD2gl0LWcWdAIAAHhwAAAAA3NyAAx4c2J0aS5hcGkuSWSYMmyLN1PEQAIAAUwAAmlkcQB+ABx4cgAXeHNidGkuYXBpLlBhdGhDb21wb25lbnRfmiJbLoafvAIAAHhwdAAEamF2YXNxAH4ATXQABGxhbmdzcgAOeHNidGkuYXBpLlRoaXPbCe2mzFpAXAIAAHhxAH4ATnNxAH4AQXQAA0FueXNxAH4ARXNxAH4ASHVxAH4ASwAAAAJzcQB+AE10AAVzY2FsYXEAfgBUcHB1cgAUW0x4c2J0aS5hcGkuUGFja2FnZTtbExk3cKcnoQIAAHhwAAAAAHNyABV4c2J0aS5hcGkuQ29tcGlsYXRpb27t+uDDauigQgIAAkoACXN0YXJ0VGltZVsAB291dHB1dHN0ABpbTHhzYnRpL2FwaS9PdXRwdXRTZXR0aW5nO3hwAAABVPJ1xKZ1cgAaW0x4c2J0aS5hcGkuT3V0cHV0U2V0dGluZzt/asLzp4elQgIAAHhwAAAAAnNyABd4c2J0aS5hcGkuT3V0cHV0U2V0dGluZ3rZmkd0+x17AgACTAAPb3V0cHV0RGlyZWN0b3J5cQB+ABxMAA9zb3VyY2VEaXJlY3RvcnlxAH4AHHhwdABCQzpcZGV2ZWxvcFxnaXRcdHV0b3JpYWxzXGdhdGxpbmctbG9hZHRlc3QtZGVtb1x0YXJnZXRcdGVzdC1jbGFzc2VzdAA9QzpcZGV2ZWxvcFxnaXRcdHV0b3JpYWxzXGdhdGxpbmctbG9hZHRlc3QtZGVtb1xzcmNcdGVzdFxzY2FsYXNxAH4AY3QAQkM6XGRldmVsb3BcZ2l0XHR1dG9yaWFsc1xnYXRsaW5nLWxvYWR0ZXN0LWRlbW9cdGFyZ2V0XHRlc3QtY2xhc3Nlc3QAQUM6XGRldmVsb3BcZ2l0XHR1dG9yaWFsc1xnYXRsaW5nLWxvYWR0ZXN0LWRlbW9cc3JjXHRlc3RccmVzb3VyY2VzdXIAAltCrPMX+AYIVOACAAB4cAAAABQgJVtmAgpAxn21L4JI+rfjJQ/JQA== +C:\develop\git\tutorials\gatling-loadtest-demo\src\test\scala\org\baeldung\RecordedSimulation.scala -> +rO0ABXNyABB4c2J0aS5hcGkuU291cmNlFlpwRASfbtoCAAZJAAdhcGlIYXNoWgAIaGFzTWFjcm9MABhfaW50ZXJuYWxPbmx5X25hbWVIYXNoZXN0ACRMeHNidGkvYXBpL19pbnRlcm5hbE9ubHlfTmFtZUhhc2hlcztMAANhcGl0ABVMeHNidGkvYXBpL1NvdXJjZUFQSTtMAAtjb21waWxhdGlvbnQAF0x4c2J0aS9hcGkvQ29tcGlsYXRpb247WwAEaGFzaHQAAltCeHARTQnpAHNyACJ4c2J0aS5hcGkuX2ludGVybmFsT25seV9OYW1lSGFzaGVzVNq+mfrU7EwCAAJbAA9pbXBsaWNpdE1lbWJlcnN0ACNbTHhzYnRpL2FwaS9faW50ZXJuYWxPbmx5X05hbWVIYXNoO1sADnJlZ3VsYXJNZW1iZXJzcQB+AAd4cHVyACNbTHhzYnRpLmFwaS5faW50ZXJuYWxPbmx5X05hbWVIYXNoO0lagLbdlov0AgAAeHAAAAAAdXEAfgAJAAAAAHNyABN4c2J0aS5hcGkuU291cmNlQVBJuV6n+SkjOKQCAAJbAAtkZWZpbml0aW9uc3QAF1tMeHNidGkvYXBpL0RlZmluaXRpb247WwAIcGFja2FnZXN0ABRbTHhzYnRpL2FwaS9QYWNrYWdlO3hwdXIAF1tMeHNidGkuYXBpLkRlZmluaXRpb247iMlc57TjXg4CAAB4cAAAAAFzcgATeHNidGkuYXBpLkNsYXNzTGlrZYM0HKHfsJdsAgAETAAOZGVmaW5pdGlvblR5cGV0ABpMeHNidGkvYXBpL0RlZmluaXRpb25UeXBlO1sAEHNhdmVkQW5ub3RhdGlvbnN0ABNbTGphdmEvbGFuZy9TdHJpbmc7TAAIc2VsZlR5cGV0ABBMeHNidGkvYXBpL0xhenk7TAAJc3RydWN0dXJlcQB+ABV4cgAheHNidGkuYXBpLlBhcmFtZXRlcml6ZWREZWZpbml0aW9u+RFusdVQPOICAAFbAA50eXBlUGFyYW1ldGVyc3QAGltMeHNidGkvYXBpL1R5cGVQYXJhbWV0ZXI7eHIAFHhzYnRpLmFwaS5EZWZpbml0aW9uhyob6HFC40YCAARMAAZhY2Nlc3N0ABJMeHNidGkvYXBpL0FjY2VzcztbAAthbm5vdGF0aW9uc3QAF1tMeHNidGkvYXBpL0Fubm90YXRpb247TAAJbW9kaWZpZXJzdAAVTHhzYnRpL2FwaS9Nb2RpZmllcnM7TAAEbmFtZXQAEkxqYXZhL2xhbmcvU3RyaW5nO3hwc3IAEHhzYnRpLmFwaS5QdWJsaWO6WD2ubC1gQgIAAHhyABB4c2J0aS5hcGkuQWNjZXNz3WKa+B1jMUgCAAB4cHVyABdbTHhzYnRpLmFwaS5Bbm5vdGF0aW9uO+uX6xkQ9o1IAgAAeHAAAAAAc3IAE3hzYnRpLmFwaS5Nb2RpZmllcnPHERMhaZzcJAIAAUIABWZsYWdzeHAAdAAfb3JnLmJhZWxkdW5nLlJlY29yZGVkU2ltdWxhdGlvbnVyABpbTHhzYnRpLmFwaS5UeXBlUGFyYW1ldGVyO9ltJg8onfK2AgAAeHAAAAAAfnIAGHhzYnRpLmFwaS5EZWZpbml0aW9uVHlwZQAAAAAAAAAAEgAAeHIADmphdmEubGFuZy5FbnVtAAAAAAAAAAASAAB4cHQACENsYXNzRGVmdXIAE1tMamF2YS5sYW5nLlN0cmluZzut0lbn6R17RwIAAHhwAAAAAHNyABN4c2J0aS5TYWZlTGF6eSRJbXBsO5FPEfRFTMkCAANaAAhiaXRtYXAkMEwAAl90dAASTGphdmEvbGFuZy9PYmplY3Q7TAAEZXZhbHQAEUxzY2FsYS9GdW5jdGlvbjA7eHIAFnhzYnRpLmFwaS5BYnN0cmFjdExhennTd7UBX7vnoAIAAHhwAXNyABN4c2J0aS5hcGkuRW1wdHlUeXBlvP2eRkk7iSQCAAB4cgAUeHNidGkuYXBpLlNpbXBsZVR5cGVyeGKIISO/QAIAAHhyAA54c2J0aS5hcGkuVHlwZT9q2SEWSarKAgAAeHBwc3EAfgAuAXNyABN4c2J0aS5hcGkuU3RydWN0dXJlqar5gJNv2AACAANMAAhkZWNsYXJlZHEAfgAVTAAJaW5oZXJpdGVkcQB+ABVMAAdwYXJlbnRzcQB+ABV4cQB+ADVzcQB+AC4BdXEAfgAQAAAAAHBzcQB+AC4BdXEAfgAQAAAAAHBzcQB+AC4BdXIAEVtMeHNidGkuYXBpLlR5cGU7dP+lWnv56UECAAB4cAAAAANzcgAUeHNidGkuYXBpLlByb2plY3Rpb27z0o1U6UWkLQIAAkwAAmlkcQB+ABxMAAZwcmVmaXh0ABZMeHNidGkvYXBpL1NpbXBsZVR5cGU7eHEAfgA0dAAKU2ltdWxhdGlvbnNyABN4c2J0aS5hcGkuU2luZ2xldG9u/Kdf+M9W5EYCAAFMAARwYXRodAAQTHhzYnRpL2FwaS9QYXRoO3hxAH4ANHNyAA54c2J0aS5hcGkuUGF0aJs9XAjOpSeEAgABWwAKY29tcG9uZW50c3QAGltMeHNidGkvYXBpL1BhdGhDb21wb25lbnQ7eHB1cgAaW0x4c2J0aS5hcGkuUGF0aENvbXBvbmVudDtD2gl0LWcWdAIAAHhwAAAABXNyAAx4c2J0aS5hcGkuSWSYMmyLN1PEQAIAAUwAAmlkcQB+ABx4cgAXeHNidGkuYXBpLlBhdGhDb21wb25lbnRfmiJbLoafvAIAAHhwdAACaW9zcQB+AE10AAdnYXRsaW5nc3EAfgBNdAAEY29yZXNxAH4ATXQACHNjZW5hcmlvc3IADnhzYnRpLmFwaS5UaGlz2wntpsxaQFwCAAB4cQB+AE5zcQB+AEF0AAZPYmplY3RzcQB+AEVzcQB+AEh1cQB+AEsAAAADc3EAfgBNdAAEamF2YXNxAH4ATXQABGxhbmdxAH4AWHNxAH4AQXQAA0FueXNxAH4ARXNxAH4ASHVxAH4ASwAAAAJzcQB+AE10AAVzY2FsYXEAfgBYcHB1cgAUW0x4c2J0aS5hcGkuUGFja2FnZTtbExk3cKcnoQIAAHhwAAAAAnNyABF4c2J0aS5hcGkuUGFja2FnZX5Zj/auzjlYAgABTAAEbmFtZXEAfgAceHB0AAxvcmcuYmFlbGR1bmdzcQB+AGt0AANvcmdzcgAVeHNidGkuYXBpLkNvbXBpbGF0aW9u7frgw2rooEICAAJKAAlzdGFydFRpbWVbAAdvdXRwdXRzdAAaW0x4c2J0aS9hcGkvT3V0cHV0U2V0dGluZzt4cAAAAVTydcSmdXIAGltMeHNidGkuYXBpLk91dHB1dFNldHRpbmc7f2rC86eHpUICAAB4cAAAAAJzcgAXeHNidGkuYXBpLk91dHB1dFNldHRpbmd62ZpHdPsdewIAAkwAD291dHB1dERpcmVjdG9yeXEAfgAcTAAPc291cmNlRGlyZWN0b3J5cQB+ABx4cHQAQkM6XGRldmVsb3BcZ2l0XHR1dG9yaWFsc1xnYXRsaW5nLWxvYWR0ZXN0LWRlbW9cdGFyZ2V0XHRlc3QtY2xhc3Nlc3QAPUM6XGRldmVsb3BcZ2l0XHR1dG9yaWFsc1xnYXRsaW5nLWxvYWR0ZXN0LWRlbW9cc3JjXHRlc3Rcc2NhbGFzcQB+AHV0AEJDOlxkZXZlbG9wXGdpdFx0dXRvcmlhbHNcZ2F0bGluZy1sb2FkdGVzdC1kZW1vXHRhcmdldFx0ZXN0LWNsYXNzZXN0AEFDOlxkZXZlbG9wXGdpdFx0dXRvcmlhbHNcZ2F0bGluZy1sb2FkdGVzdC1kZW1vXHNyY1x0ZXN0XHJlc291cmNlc3VyAAJbQqzzF/gGCFTgAgAAeHAAAAAUHUqrk17SaqP+5ir/W8nR0tvD93Y= +C:\develop\git\tutorials\gatling-loadtest-demo\src\test\scala\Recorder.scala -> +rO0ABXNyABB4c2J0aS5hcGkuU291cmNlFlpwRASfbtoCAAZJAAdhcGlIYXNoWgAIaGFzTWFjcm9MABhfaW50ZXJuYWxPbmx5X25hbWVIYXNoZXN0ACRMeHNidGkvYXBpL19pbnRlcm5hbE9ubHlfTmFtZUhhc2hlcztMAANhcGl0ABVMeHNidGkvYXBpL1NvdXJjZUFQSTtMAAtjb21waWxhdGlvbnQAF0x4c2J0aS9hcGkvQ29tcGlsYXRpb247WwAEaGFzaHQAAltCeHD3nMHWAHNyACJ4c2J0aS5hcGkuX2ludGVybmFsT25seV9OYW1lSGFzaGVzVNq+mfrU7EwCAAJbAA9pbXBsaWNpdE1lbWJlcnN0ACNbTHhzYnRpL2FwaS9faW50ZXJuYWxPbmx5X05hbWVIYXNoO1sADnJlZ3VsYXJNZW1iZXJzcQB+AAd4cHVyACNbTHhzYnRpLmFwaS5faW50ZXJuYWxPbmx5X05hbWVIYXNoO0lagLbdlov0AgAAeHAAAAAAdXEAfgAJAAAAAHNyABN4c2J0aS5hcGkuU291cmNlQVBJuV6n+SkjOKQCAAJbAAtkZWZpbml0aW9uc3QAF1tMeHNidGkvYXBpL0RlZmluaXRpb247WwAIcGFja2FnZXN0ABRbTHhzYnRpL2FwaS9QYWNrYWdlO3hwdXIAF1tMeHNidGkuYXBpLkRlZmluaXRpb247iMlc57TjXg4CAAB4cAAAAAFzcgATeHNidGkuYXBpLkNsYXNzTGlrZYM0HKHfsJdsAgAETAAOZGVmaW5pdGlvblR5cGV0ABpMeHNidGkvYXBpL0RlZmluaXRpb25UeXBlO1sAEHNhdmVkQW5ub3RhdGlvbnN0ABNbTGphdmEvbGFuZy9TdHJpbmc7TAAIc2VsZlR5cGV0ABBMeHNidGkvYXBpL0xhenk7TAAJc3RydWN0dXJlcQB+ABV4cgAheHNidGkuYXBpLlBhcmFtZXRlcml6ZWREZWZpbml0aW9u+RFusdVQPOICAAFbAA50eXBlUGFyYW1ldGVyc3QAGltMeHNidGkvYXBpL1R5cGVQYXJhbWV0ZXI7eHIAFHhzYnRpLmFwaS5EZWZpbml0aW9uhyob6HFC40YCAARMAAZhY2Nlc3N0ABJMeHNidGkvYXBpL0FjY2VzcztbAAthbm5vdGF0aW9uc3QAF1tMeHNidGkvYXBpL0Fubm90YXRpb247TAAJbW9kaWZpZXJzdAAVTHhzYnRpL2FwaS9Nb2RpZmllcnM7TAAEbmFtZXQAEkxqYXZhL2xhbmcvU3RyaW5nO3hwc3IAEHhzYnRpLmFwaS5QdWJsaWO6WD2ubC1gQgIAAHhyABB4c2J0aS5hcGkuQWNjZXNz3WKa+B1jMUgCAAB4cHVyABdbTHhzYnRpLmFwaS5Bbm5vdGF0aW9uO+uX6xkQ9o1IAgAAeHAAAAAAc3IAE3hzYnRpLmFwaS5Nb2RpZmllcnPHERMhaZzcJAIAAUIABWZsYWdzeHAAdAAIUmVjb3JkZXJ1cgAaW0x4c2J0aS5hcGkuVHlwZVBhcmFtZXRlcjvZbSYPKJ3ytgIAAHhwAAAAAH5yABh4c2J0aS5hcGkuRGVmaW5pdGlvblR5cGUAAAAAAAAAABIAAHhyAA5qYXZhLmxhbmcuRW51bQAAAAAAAAAAEgAAeHB0AAZNb2R1bGV1cgATW0xqYXZhLmxhbmcuU3RyaW5nO63SVufpHXtHAgAAeHAAAAACdAAQc2NhbGEuZGVwcmVjYXRlZHQAGnNjYWxhLmRlcHJlY2F0ZWRPdmVycmlkaW5nc3IAE3hzYnRpLlNhZmVMYXp5JEltcGw7kU8R9EVMyQIAA1oACGJpdG1hcCQwTAACX3R0ABJMamF2YS9sYW5nL09iamVjdDtMAARldmFsdAARTHNjYWxhL0Z1bmN0aW9uMDt4cgAWeHNidGkuYXBpLkFic3RyYWN0TGF6edN3tQFfu+egAgAAeHABc3IAE3hzYnRpLmFwaS5FbXB0eVR5cGW8/Z5GSTuJJAIAAHhyABR4c2J0aS5hcGkuU2ltcGxlVHlwZXJ4YoghI79AAgAAeHIADnhzYnRpLmFwaS5UeXBlP2rZIRZJqsoCAAB4cHBzcQB+ADABc3IAE3hzYnRpLmFwaS5TdHJ1Y3R1cmWpqvmAk2/YAAIAA0wACGRlY2xhcmVkcQB+ABVMAAlpbmhlcml0ZWRxAH4AFUwAB3BhcmVudHNxAH4AFXhxAH4AN3NxAH4AMAF1cQB+ABAAAAAAcHNxAH4AMAF1cQB+ABAAAAABc3IADXhzYnRpLmFwaS5EZWZSvp/ifLQ2aQIAAkwACnJldHVyblR5cGV0ABBMeHNidGkvYXBpL1R5cGU7WwAPdmFsdWVQYXJhbWV0ZXJzdAAaW0x4c2J0aS9hcGkvUGFyYW1ldGVyTGlzdDt4cQB+ABZxAH4AIHVxAH4AIQAAAAFzcgAUeHNidGkuYXBpLkFubm90YXRpb27eDoGi9lwKsgIAAlsACWFyZ3VtZW50c3QAH1tMeHNidGkvYXBpL0Fubm90YXRpb25Bcmd1bWVudDtMAARiYXNlcQB+AEF4cHVyAB9bTHhzYnRpLmFwaS5Bbm5vdGF0aW9uQXJndW1lbnQ7UZ2mjzglD3gCAAB4cAAAAAFzcgAceHNidGkuYXBpLkFubm90YXRpb25Bcmd1bWVudNZFsdgDGxd8AgACTAAEbmFtZXEAfgAcTAAFdmFsdWVxAH4AHHhwdAAAdAAqKCJtYWluIHNob3VsZCBub3QgYmUgb3ZlcnJpZGRlbiIsIjIuMTEuMCIpc3IAFHhzYnRpLmFwaS5Qcm9qZWN0aW9u89KNVOlFpC0CAAJMAAJpZHEAfgAcTAAGcHJlZml4dAAWTHhzYnRpL2FwaS9TaW1wbGVUeXBlO3hxAH4ANnQAFGRlcHJlY2F0ZWRPdmVycmlkaW5nc3IAE3hzYnRpLmFwaS5TaW5nbGV0b278p1/4z1bkRgIAAUwABHBhdGh0ABBMeHNidGkvYXBpL1BhdGg7eHEAfgA2c3IADnhzYnRpLmFwaS5QYXRomz1cCM6lJ4QCAAFbAApjb21wb25lbnRzdAAaW0x4c2J0aS9hcGkvUGF0aENvbXBvbmVudDt4cHVyABpbTHhzYnRpLmFwaS5QYXRoQ29tcG9uZW50O0PaCXQtZxZ0AgAAeHAAAAACc3IADHhzYnRpLmFwaS5JZJgybIs3U8RAAgABTAACaWRxAH4AHHhyABd4c2J0aS5hcGkuUGF0aENvbXBvbmVudF+aIlsuhp+8AgAAeHB0AAVzY2FsYXNyAA54c2J0aS5hcGkuVGhpc9sJ7abMWkBcAgAAeHEAfgBbc3EAfgAjAHQABG1haW51cQB+ACYAAAAAc3EAfgBOdAAEVW5pdHEAfgBUdXIAGltMeHNidGkuYXBpLlBhcmFtZXRlckxpc3Q79dM6HfKzcO4CAAB4cAAAAAFzcgAXeHNidGkuYXBpLlBhcmFtZXRlckxpc3TWxbwcZEl04wIAAloACmlzSW1wbGljaXRbAApwYXJhbWV0ZXJzdAAcW0x4c2J0aS9hcGkvTWV0aG9kUGFyYW1ldGVyO3hwAHVyABxbTHhzYnRpLmFwaS5NZXRob2RQYXJhbWV0ZXI7z7jFXaXdtW0CAAB4cAAAAAFzcgAZeHNidGkuYXBpLk1ldGhvZFBhcmFtZXRlch9FrhfTSbDqAgAEWgAKaGFzRGVmYXVsdEwACG1vZGlmaWVydAAdTHhzYnRpL2FwaS9QYXJhbWV0ZXJNb2RpZmllcjtMAARuYW1lcQB+ABxMAAN0cGVxAH4AQXhwAH5yABt4c2J0aS5hcGkuUGFyYW1ldGVyTW9kaWZpZXIAAAAAAAAAABIAAHhxAH4AKXQABVBsYWludAAEYXJnc3NyABd4c2J0aS5hcGkuUGFyYW1ldGVyaXplZBZs7mkDybt/AgACTAAIYmFzZVR5cGVxAH4AT1sADXR5cGVBcmd1bWVudHN0ABFbTHhzYnRpL2FwaS9UeXBlO3hxAH4ANnNxAH4ATnQABUFycmF5cQB+AFR1cgARW0x4c2J0aS5hcGkuVHlwZTt0/6Vae/npQQIAAHhwAAAAAXNxAH4ATnQABlN0cmluZ3NxAH4AUnNxAH4AVXVxAH4AWAAAAANzcQB+AFp0AARqYXZhc3EAfgBadAAEbGFuZ3EAfgBfcHNxAH4AMAF1cQB+AHgAAAAEc3EAfgBOdAADQXBwcQB+AFRzcQB+AE50AAtEZWxheWVkSW5pdHEAfgBUc3EAfgBOdAAGT2JqZWN0cQB+AHxzcQB+AE50AANBbnlxAH4AVHBwdXIAFFtMeHNidGkuYXBpLlBhY2thZ2U7WxMZN3CnJ6ECAAB4cAAAAABzcgAVeHNidGkuYXBpLkNvbXBpbGF0aW9u7frgw2rooEICAAJKAAlzdGFydFRpbWVbAAdvdXRwdXRzdAAaW0x4c2J0aS9hcGkvT3V0cHV0U2V0dGluZzt4cAAAAVTydcSmdXIAGltMeHNidGkuYXBpLk91dHB1dFNldHRpbmc7f2rC86eHpUICAAB4cAAAAAJzcgAXeHNidGkuYXBpLk91dHB1dFNldHRpbmd62ZpHdPsdewIAAkwAD291dHB1dERpcmVjdG9yeXEAfgAcTAAPc291cmNlRGlyZWN0b3J5cQB+ABx4cHQAQkM6XGRldmVsb3BcZ2l0XHR1dG9yaWFsc1xnYXRsaW5nLWxvYWR0ZXN0LWRlbW9cdGFyZ2V0XHRlc3QtY2xhc3Nlc3QAPUM6XGRldmVsb3BcZ2l0XHR1dG9yaWFsc1xnYXRsaW5nLWxvYWR0ZXN0LWRlbW9cc3JjXHRlc3Rcc2NhbGFzcQB+AJR0AEJDOlxkZXZlbG9wXGdpdFx0dXRvcmlhbHNcZ2F0bGluZy1sb2FkdGVzdC1kZW1vXHRhcmdldFx0ZXN0LWNsYXNzZXN0AEFDOlxkZXZlbG9wXGdpdFx0dXRvcmlhbHNcZ2F0bGluZy1sb2FkdGVzdC1kZW1vXHNyY1x0ZXN0XHJlc291cmNlc3VyAAJbQqzzF/gGCFTgAgAAeHAAAAAUZn2oqdcS+YjtexS9+nspPHasO2E= +external apis: +0 items +source infos: +4 items +C:\develop\git\tutorials\gatling-loadtest-demo\src\test\scala\Engine.scala -> +AAAAAAAAAAA= +C:\develop\git\tutorials\gatling-loadtest-demo\src\test\scala\IDEPathHelper.scala -> +AAAAAAAAAAA= +C:\develop\git\tutorials\gatling-loadtest-demo\src\test\scala\org\baeldung\RecordedSimulation.scala -> +AAAAAAAAAAA= +C:\develop\git\tutorials\gatling-loadtest-demo\src\test\scala\Recorder.scala -> +AAAAAAAAAAA= +compilations: +17 items +00 -> rO0ABXNyABV4c2J0aS5hcGkuQ29tcGlsYXRpb27t+uDDauigQgIAAkoACXN0YXJ0VGltZVsAB291dHB1dHN0ABpbTHhzYnRpL2FwaS9PdXRwdXRTZXR0aW5nO3hwAAABVOxQus91cgAaW0x4c2J0aS5hcGkuT3V0cHV0U2V0dGluZzt/asLzp4elQgIAAHhwAAAAAnNyABd4c2J0aS5hcGkuT3V0cHV0U2V0dGluZ3rZmkd0+x17AgACTAAPb3V0cHV0RGlyZWN0b3J5dAASTGphdmEvbGFuZy9TdHJpbmc7TAAPc291cmNlRGlyZWN0b3J5cQB+AAZ4cHQAUUM6XGRldmVsb3Bcd29ya3NwYWNlc1x2anBvcnRhbFdvcmtzcGFjZVxnYXRsaW5nLWxvYWR0ZXN0LWRlbW9cdGFyZ2V0XHRlc3QtY2xhc3Nlc3QATEM6XGRldmVsb3Bcd29ya3NwYWNlc1x2anBvcnRhbFdvcmtzcGFjZVxnYXRsaW5nLWxvYWR0ZXN0LWRlbW9cc3JjXHRlc3Rcc2NhbGFzcQB+AAV0AFFDOlxkZXZlbG9wXHdvcmtzcGFjZXNcdmpwb3J0YWxXb3Jrc3BhY2VcZ2F0bGluZy1sb2FkdGVzdC1kZW1vXHRhcmdldFx0ZXN0LWNsYXNzZXN0AFBDOlxkZXZlbG9wXHdvcmtzcGFjZXNcdmpwb3J0YWxXb3Jrc3BhY2VcZ2F0bGluZy1sb2FkdGVzdC1kZW1vXHNyY1x0ZXN0XHJlc291cmNlcw== +01 -> rO0ABXNyABV4c2J0aS5hcGkuQ29tcGlsYXRpb27t+uDDauigQgIAAkoACXN0YXJ0VGltZVsAB291dHB1dHN0ABpbTHhzYnRpL2FwaS9PdXRwdXRTZXR0aW5nO3hwAAABVO1Iw051cgAaW0x4c2J0aS5hcGkuT3V0cHV0U2V0dGluZzt/asLzp4elQgIAAHhwAAAAAnNyABd4c2J0aS5hcGkuT3V0cHV0U2V0dGluZ3rZmkd0+x17AgACTAAPb3V0cHV0RGlyZWN0b3J5dAASTGphdmEvbGFuZy9TdHJpbmc7TAAPc291cmNlRGlyZWN0b3J5cQB+AAZ4cHQAUUM6XGRldmVsb3Bcd29ya3NwYWNlc1x2anBvcnRhbFdvcmtzcGFjZVxnYXRsaW5nLWxvYWR0ZXN0LWRlbW9cdGFyZ2V0XHRlc3QtY2xhc3Nlc3QATEM6XGRldmVsb3Bcd29ya3NwYWNlc1x2anBvcnRhbFdvcmtzcGFjZVxnYXRsaW5nLWxvYWR0ZXN0LWRlbW9cc3JjXHRlc3Rcc2NhbGFzcQB+AAV0AFFDOlxkZXZlbG9wXHdvcmtzcGFjZXNcdmpwb3J0YWxXb3Jrc3BhY2VcZ2F0bGluZy1sb2FkdGVzdC1kZW1vXHRhcmdldFx0ZXN0LWNsYXNzZXN0AFBDOlxkZXZlbG9wXHdvcmtzcGFjZXNcdmpwb3J0YWxXb3Jrc3BhY2VcZ2F0bGluZy1sb2FkdGVzdC1kZW1vXHNyY1x0ZXN0XHJlc291cmNlcw== +02 -> rO0ABXNyABV4c2J0aS5hcGkuQ29tcGlsYXRpb27t+uDDauigQgIAAkoACXN0YXJ0VGltZVsAB291dHB1dHN0ABpbTHhzYnRpL2FwaS9PdXRwdXRTZXR0aW5nO3hwAAABVO1LJxV1cgAaW0x4c2J0aS5hcGkuT3V0cHV0U2V0dGluZzt/asLzp4elQgIAAHhwAAAAAnNyABd4c2J0aS5hcGkuT3V0cHV0U2V0dGluZ3rZmkd0+x17AgACTAAPb3V0cHV0RGlyZWN0b3J5dAASTGphdmEvbGFuZy9TdHJpbmc7TAAPc291cmNlRGlyZWN0b3J5cQB+AAZ4cHQAUUM6XGRldmVsb3Bcd29ya3NwYWNlc1x2anBvcnRhbFdvcmtzcGFjZVxnYXRsaW5nLWxvYWR0ZXN0LWRlbW9cdGFyZ2V0XHRlc3QtY2xhc3Nlc3QATEM6XGRldmVsb3Bcd29ya3NwYWNlc1x2anBvcnRhbFdvcmtzcGFjZVxnYXRsaW5nLWxvYWR0ZXN0LWRlbW9cc3JjXHRlc3Rcc2NhbGFzcQB+AAV0AFFDOlxkZXZlbG9wXHdvcmtzcGFjZXNcdmpwb3J0YWxXb3Jrc3BhY2VcZ2F0bGluZy1sb2FkdGVzdC1kZW1vXHRhcmdldFx0ZXN0LWNsYXNzZXN0AFBDOlxkZXZlbG9wXHdvcmtzcGFjZXNcdmpwb3J0YWxXb3Jrc3BhY2VcZ2F0bGluZy1sb2FkdGVzdC1kZW1vXHNyY1x0ZXN0XHJlc291cmNlcw== +03 -> rO0ABXNyABV4c2J0aS5hcGkuQ29tcGlsYXRpb27t+uDDauigQgIAAkoACXN0YXJ0VGltZVsAB291dHB1dHN0ABpbTHhzYnRpL2FwaS9PdXRwdXRTZXR0aW5nO3hwAAABVO1LOZV1cgAaW0x4c2J0aS5hcGkuT3V0cHV0U2V0dGluZzt/asLzp4elQgIAAHhwAAAAAnNyABd4c2J0aS5hcGkuT3V0cHV0U2V0dGluZ3rZmkd0+x17AgACTAAPb3V0cHV0RGlyZWN0b3J5dAASTGphdmEvbGFuZy9TdHJpbmc7TAAPc291cmNlRGlyZWN0b3J5cQB+AAZ4cHQAUUM6XGRldmVsb3Bcd29ya3NwYWNlc1x2anBvcnRhbFdvcmtzcGFjZVxnYXRsaW5nLWxvYWR0ZXN0LWRlbW9cdGFyZ2V0XHRlc3QtY2xhc3Nlc3QATEM6XGRldmVsb3Bcd29ya3NwYWNlc1x2anBvcnRhbFdvcmtzcGFjZVxnYXRsaW5nLWxvYWR0ZXN0LWRlbW9cc3JjXHRlc3Rcc2NhbGFzcQB+AAV0AFFDOlxkZXZlbG9wXHdvcmtzcGFjZXNcdmpwb3J0YWxXb3Jrc3BhY2VcZ2F0bGluZy1sb2FkdGVzdC1kZW1vXHRhcmdldFx0ZXN0LWNsYXNzZXN0AFBDOlxkZXZlbG9wXHdvcmtzcGFjZXNcdmpwb3J0YWxXb3Jrc3BhY2VcZ2F0bGluZy1sb2FkdGVzdC1kZW1vXHNyY1x0ZXN0XHJlc291cmNlcw== +04 -> rO0ABXNyABV4c2J0aS5hcGkuQ29tcGlsYXRpb27t+uDDauigQgIAAkoACXN0YXJ0VGltZVsAB291dHB1dHN0ABpbTHhzYnRpL2FwaS9PdXRwdXRTZXR0aW5nO3hwAAABVO1QxNd1cgAaW0x4c2J0aS5hcGkuT3V0cHV0U2V0dGluZzt/asLzp4elQgIAAHhwAAAAAnNyABd4c2J0aS5hcGkuT3V0cHV0U2V0dGluZ3rZmkd0+x17AgACTAAPb3V0cHV0RGlyZWN0b3J5dAASTGphdmEvbGFuZy9TdHJpbmc7TAAPc291cmNlRGlyZWN0b3J5cQB+AAZ4cHQAUUM6XGRldmVsb3Bcd29ya3NwYWNlc1x2anBvcnRhbFdvcmtzcGFjZVxnYXRsaW5nLWxvYWR0ZXN0LWRlbW9cdGFyZ2V0XHRlc3QtY2xhc3Nlc3QATEM6XGRldmVsb3Bcd29ya3NwYWNlc1x2anBvcnRhbFdvcmtzcGFjZVxnYXRsaW5nLWxvYWR0ZXN0LWRlbW9cc3JjXHRlc3Rcc2NhbGFzcQB+AAV0AFFDOlxkZXZlbG9wXHdvcmtzcGFjZXNcdmpwb3J0YWxXb3Jrc3BhY2VcZ2F0bGluZy1sb2FkdGVzdC1kZW1vXHRhcmdldFx0ZXN0LWNsYXNzZXN0AFBDOlxkZXZlbG9wXHdvcmtzcGFjZXNcdmpwb3J0YWxXb3Jrc3BhY2VcZ2F0bGluZy1sb2FkdGVzdC1kZW1vXHNyY1x0ZXN0XHJlc291cmNlcw== +05 -> rO0ABXNyABV4c2J0aS5hcGkuQ29tcGlsYXRpb27t+uDDauigQgIAAkoACXN0YXJ0VGltZVsAB291dHB1dHN0ABpbTHhzYnRpL2FwaS9PdXRwdXRTZXR0aW5nO3hwAAABVO1U4651cgAaW0x4c2J0aS5hcGkuT3V0cHV0U2V0dGluZzt/asLzp4elQgIAAHhwAAAAAnNyABd4c2J0aS5hcGkuT3V0cHV0U2V0dGluZ3rZmkd0+x17AgACTAAPb3V0cHV0RGlyZWN0b3J5dAASTGphdmEvbGFuZy9TdHJpbmc7TAAPc291cmNlRGlyZWN0b3J5cQB+AAZ4cHQAUUM6XGRldmVsb3Bcd29ya3NwYWNlc1x2anBvcnRhbFdvcmtzcGFjZVxnYXRsaW5nLWxvYWR0ZXN0LWRlbW9cdGFyZ2V0XHRlc3QtY2xhc3Nlc3QATEM6XGRldmVsb3Bcd29ya3NwYWNlc1x2anBvcnRhbFdvcmtzcGFjZVxnYXRsaW5nLWxvYWR0ZXN0LWRlbW9cc3JjXHRlc3Rcc2NhbGFzcQB+AAV0AFFDOlxkZXZlbG9wXHdvcmtzcGFjZXNcdmpwb3J0YWxXb3Jrc3BhY2VcZ2F0bGluZy1sb2FkdGVzdC1kZW1vXHRhcmdldFx0ZXN0LWNsYXNzZXN0AFBDOlxkZXZlbG9wXHdvcmtzcGFjZXNcdmpwb3J0YWxXb3Jrc3BhY2VcZ2F0bGluZy1sb2FkdGVzdC1kZW1vXHNyY1x0ZXN0XHJlc291cmNlcw== +06 -> rO0ABXNyABV4c2J0aS5hcGkuQ29tcGlsYXRpb27t+uDDauigQgIAAkoACXN0YXJ0VGltZVsAB291dHB1dHN0ABpbTHhzYnRpL2FwaS9PdXRwdXRTZXR0aW5nO3hwAAABVO1kjrl1cgAaW0x4c2J0aS5hcGkuT3V0cHV0U2V0dGluZzt/asLzp4elQgIAAHhwAAAAAnNyABd4c2J0aS5hcGkuT3V0cHV0U2V0dGluZ3rZmkd0+x17AgACTAAPb3V0cHV0RGlyZWN0b3J5dAASTGphdmEvbGFuZy9TdHJpbmc7TAAPc291cmNlRGlyZWN0b3J5cQB+AAZ4cHQAUUM6XGRldmVsb3Bcd29ya3NwYWNlc1x2anBvcnRhbFdvcmtzcGFjZVxnYXRsaW5nLWxvYWR0ZXN0LWRlbW9cdGFyZ2V0XHRlc3QtY2xhc3Nlc3QATEM6XGRldmVsb3Bcd29ya3NwYWNlc1x2anBvcnRhbFdvcmtzcGFjZVxnYXRsaW5nLWxvYWR0ZXN0LWRlbW9cc3JjXHRlc3Rcc2NhbGFzcQB+AAV0AFFDOlxkZXZlbG9wXHdvcmtzcGFjZXNcdmpwb3J0YWxXb3Jrc3BhY2VcZ2F0bGluZy1sb2FkdGVzdC1kZW1vXHRhcmdldFx0ZXN0LWNsYXNzZXN0AFBDOlxkZXZlbG9wXHdvcmtzcGFjZXNcdmpwb3J0YWxXb3Jrc3BhY2VcZ2F0bGluZy1sb2FkdGVzdC1kZW1vXHNyY1x0ZXN0XHJlc291cmNlcw== +07 -> rO0ABXNyABV4c2J0aS5hcGkuQ29tcGlsYXRpb27t+uDDauigQgIAAkoACXN0YXJ0VGltZVsAB291dHB1dHN0ABpbTHhzYnRpL2FwaS9PdXRwdXRTZXR0aW5nO3hwAAABVO1koUh1cgAaW0x4c2J0aS5hcGkuT3V0cHV0U2V0dGluZzt/asLzp4elQgIAAHhwAAAAAnNyABd4c2J0aS5hcGkuT3V0cHV0U2V0dGluZ3rZmkd0+x17AgACTAAPb3V0cHV0RGlyZWN0b3J5dAASTGphdmEvbGFuZy9TdHJpbmc7TAAPc291cmNlRGlyZWN0b3J5cQB+AAZ4cHQAUUM6XGRldmVsb3Bcd29ya3NwYWNlc1x2anBvcnRhbFdvcmtzcGFjZVxnYXRsaW5nLWxvYWR0ZXN0LWRlbW9cdGFyZ2V0XHRlc3QtY2xhc3Nlc3QATEM6XGRldmVsb3Bcd29ya3NwYWNlc1x2anBvcnRhbFdvcmtzcGFjZVxnYXRsaW5nLWxvYWR0ZXN0LWRlbW9cc3JjXHRlc3Rcc2NhbGFzcQB+AAV0AFFDOlxkZXZlbG9wXHdvcmtzcGFjZXNcdmpwb3J0YWxXb3Jrc3BhY2VcZ2F0bGluZy1sb2FkdGVzdC1kZW1vXHRhcmdldFx0ZXN0LWNsYXNzZXN0AFBDOlxkZXZlbG9wXHdvcmtzcGFjZXNcdmpwb3J0YWxXb3Jrc3BhY2VcZ2F0bGluZy1sb2FkdGVzdC1kZW1vXHNyY1x0ZXN0XHJlc291cmNlcw== +08 -> rO0ABXNyABV4c2J0aS5hcGkuQ29tcGlsYXRpb27t+uDDauigQgIAAkoACXN0YXJ0VGltZVsAB291dHB1dHN0ABpbTHhzYnRpL2FwaS9PdXRwdXRTZXR0aW5nO3hwAAABVO1kwGd1cgAaW0x4c2J0aS5hcGkuT3V0cHV0U2V0dGluZzt/asLzp4elQgIAAHhwAAAAAnNyABd4c2J0aS5hcGkuT3V0cHV0U2V0dGluZ3rZmkd0+x17AgACTAAPb3V0cHV0RGlyZWN0b3J5dAASTGphdmEvbGFuZy9TdHJpbmc7TAAPc291cmNlRGlyZWN0b3J5cQB+AAZ4cHQAUUM6XGRldmVsb3Bcd29ya3NwYWNlc1x2anBvcnRhbFdvcmtzcGFjZVxnYXRsaW5nLWxvYWR0ZXN0LWRlbW9cdGFyZ2V0XHRlc3QtY2xhc3Nlc3QATEM6XGRldmVsb3Bcd29ya3NwYWNlc1x2anBvcnRhbFdvcmtzcGFjZVxnYXRsaW5nLWxvYWR0ZXN0LWRlbW9cc3JjXHRlc3Rcc2NhbGFzcQB+AAV0AFFDOlxkZXZlbG9wXHdvcmtzcGFjZXNcdmpwb3J0YWxXb3Jrc3BhY2VcZ2F0bGluZy1sb2FkdGVzdC1kZW1vXHRhcmdldFx0ZXN0LWNsYXNzZXN0AFBDOlxkZXZlbG9wXHdvcmtzcGFjZXNcdmpwb3J0YWxXb3Jrc3BhY2VcZ2F0bGluZy1sb2FkdGVzdC1kZW1vXHNyY1x0ZXN0XHJlc291cmNlcw== +09 -> rO0ABXNyABV4c2J0aS5hcGkuQ29tcGlsYXRpb27t+uDDauigQgIAAkoACXN0YXJ0VGltZVsAB291dHB1dHN0ABpbTHhzYnRpL2FwaS9PdXRwdXRTZXR0aW5nO3hwAAABVO1lpUV1cgAaW0x4c2J0aS5hcGkuT3V0cHV0U2V0dGluZzt/asLzp4elQgIAAHhwAAAAAnNyABd4c2J0aS5hcGkuT3V0cHV0U2V0dGluZ3rZmkd0+x17AgACTAAPb3V0cHV0RGlyZWN0b3J5dAASTGphdmEvbGFuZy9TdHJpbmc7TAAPc291cmNlRGlyZWN0b3J5cQB+AAZ4cHQAUUM6XGRldmVsb3Bcd29ya3NwYWNlc1x2anBvcnRhbFdvcmtzcGFjZVxnYXRsaW5nLWxvYWR0ZXN0LWRlbW9cdGFyZ2V0XHRlc3QtY2xhc3Nlc3QATEM6XGRldmVsb3Bcd29ya3NwYWNlc1x2anBvcnRhbFdvcmtzcGFjZVxnYXRsaW5nLWxvYWR0ZXN0LWRlbW9cc3JjXHRlc3Rcc2NhbGFzcQB+AAV0AFFDOlxkZXZlbG9wXHdvcmtzcGFjZXNcdmpwb3J0YWxXb3Jrc3BhY2VcZ2F0bGluZy1sb2FkdGVzdC1kZW1vXHRhcmdldFx0ZXN0LWNsYXNzZXN0AFBDOlxkZXZlbG9wXHdvcmtzcGFjZXNcdmpwb3J0YWxXb3Jrc3BhY2VcZ2F0bGluZy1sb2FkdGVzdC1kZW1vXHNyY1x0ZXN0XHJlc291cmNlcw== +10 -> rO0ABXNyABV4c2J0aS5hcGkuQ29tcGlsYXRpb27t+uDDauigQgIAAkoACXN0YXJ0VGltZVsAB291dHB1dHN0ABpbTHhzYnRpL2FwaS9PdXRwdXRTZXR0aW5nO3hwAAABVO1oYjh1cgAaW0x4c2J0aS5hcGkuT3V0cHV0U2V0dGluZzt/asLzp4elQgIAAHhwAAAAAnNyABd4c2J0aS5hcGkuT3V0cHV0U2V0dGluZ3rZmkd0+x17AgACTAAPb3V0cHV0RGlyZWN0b3J5dAASTGphdmEvbGFuZy9TdHJpbmc7TAAPc291cmNlRGlyZWN0b3J5cQB+AAZ4cHQAUUM6XGRldmVsb3Bcd29ya3NwYWNlc1x2anBvcnRhbFdvcmtzcGFjZVxnYXRsaW5nLWxvYWR0ZXN0LWRlbW9cdGFyZ2V0XHRlc3QtY2xhc3Nlc3QATEM6XGRldmVsb3Bcd29ya3NwYWNlc1x2anBvcnRhbFdvcmtzcGFjZVxnYXRsaW5nLWxvYWR0ZXN0LWRlbW9cc3JjXHRlc3Rcc2NhbGFzcQB+AAV0AFFDOlxkZXZlbG9wXHdvcmtzcGFjZXNcdmpwb3J0YWxXb3Jrc3BhY2VcZ2F0bGluZy1sb2FkdGVzdC1kZW1vXHRhcmdldFx0ZXN0LWNsYXNzZXN0AFBDOlxkZXZlbG9wXHdvcmtzcGFjZXNcdmpwb3J0YWxXb3Jrc3BhY2VcZ2F0bGluZy1sb2FkdGVzdC1kZW1vXHNyY1x0ZXN0XHJlc291cmNlcw== +11 -> rO0ABXNyABV4c2J0aS5hcGkuQ29tcGlsYXRpb27t+uDDauigQgIAAkoACXN0YXJ0VGltZVsAB291dHB1dHN0ABpbTHhzYnRpL2FwaS9PdXRwdXRTZXR0aW5nO3hwAAABVO1ofWt1cgAaW0x4c2J0aS5hcGkuT3V0cHV0U2V0dGluZzt/asLzp4elQgIAAHhwAAAAAnNyABd4c2J0aS5hcGkuT3V0cHV0U2V0dGluZ3rZmkd0+x17AgACTAAPb3V0cHV0RGlyZWN0b3J5dAASTGphdmEvbGFuZy9TdHJpbmc7TAAPc291cmNlRGlyZWN0b3J5cQB+AAZ4cHQAUUM6XGRldmVsb3Bcd29ya3NwYWNlc1x2anBvcnRhbFdvcmtzcGFjZVxnYXRsaW5nLWxvYWR0ZXN0LWRlbW9cdGFyZ2V0XHRlc3QtY2xhc3Nlc3QATEM6XGRldmVsb3Bcd29ya3NwYWNlc1x2anBvcnRhbFdvcmtzcGFjZVxnYXRsaW5nLWxvYWR0ZXN0LWRlbW9cc3JjXHRlc3Rcc2NhbGFzcQB+AAV0AFFDOlxkZXZlbG9wXHdvcmtzcGFjZXNcdmpwb3J0YWxXb3Jrc3BhY2VcZ2F0bGluZy1sb2FkdGVzdC1kZW1vXHRhcmdldFx0ZXN0LWNsYXNzZXN0AFBDOlxkZXZlbG9wXHdvcmtzcGFjZXNcdmpwb3J0YWxXb3Jrc3BhY2VcZ2F0bGluZy1sb2FkdGVzdC1kZW1vXHNyY1x0ZXN0XHJlc291cmNlcw== +12 -> rO0ABXNyABV4c2J0aS5hcGkuQ29tcGlsYXRpb27t+uDDauigQgIAAkoACXN0YXJ0VGltZVsAB291dHB1dHN0ABpbTHhzYnRpL2FwaS9PdXRwdXRTZXR0aW5nO3hwAAABVO1px4J1cgAaW0x4c2J0aS5hcGkuT3V0cHV0U2V0dGluZzt/asLzp4elQgIAAHhwAAAAAnNyABd4c2J0aS5hcGkuT3V0cHV0U2V0dGluZ3rZmkd0+x17AgACTAAPb3V0cHV0RGlyZWN0b3J5dAASTGphdmEvbGFuZy9TdHJpbmc7TAAPc291cmNlRGlyZWN0b3J5cQB+AAZ4cHQAUUM6XGRldmVsb3Bcd29ya3NwYWNlc1x2anBvcnRhbFdvcmtzcGFjZVxnYXRsaW5nLWxvYWR0ZXN0LWRlbW9cdGFyZ2V0XHRlc3QtY2xhc3Nlc3QATEM6XGRldmVsb3Bcd29ya3NwYWNlc1x2anBvcnRhbFdvcmtzcGFjZVxnYXRsaW5nLWxvYWR0ZXN0LWRlbW9cc3JjXHRlc3Rcc2NhbGFzcQB+AAV0AFFDOlxkZXZlbG9wXHdvcmtzcGFjZXNcdmpwb3J0YWxXb3Jrc3BhY2VcZ2F0bGluZy1sb2FkdGVzdC1kZW1vXHRhcmdldFx0ZXN0LWNsYXNzZXN0AFBDOlxkZXZlbG9wXHdvcmtzcGFjZXNcdmpwb3J0YWxXb3Jrc3BhY2VcZ2F0bGluZy1sb2FkdGVzdC1kZW1vXHNyY1x0ZXN0XHJlc291cmNlcw== +13 -> rO0ABXNyABV4c2J0aS5hcGkuQ29tcGlsYXRpb27t+uDDauigQgIAAkoACXN0YXJ0VGltZVsAB291dHB1dHN0ABpbTHhzYnRpL2FwaS9PdXRwdXRTZXR0aW5nO3hwAAABVO1q7U91cgAaW0x4c2J0aS5hcGkuT3V0cHV0U2V0dGluZzt/asLzp4elQgIAAHhwAAAAAnNyABd4c2J0aS5hcGkuT3V0cHV0U2V0dGluZ3rZmkd0+x17AgACTAAPb3V0cHV0RGlyZWN0b3J5dAASTGphdmEvbGFuZy9TdHJpbmc7TAAPc291cmNlRGlyZWN0b3J5cQB+AAZ4cHQAUUM6XGRldmVsb3Bcd29ya3NwYWNlc1x2anBvcnRhbFdvcmtzcGFjZVxnYXRsaW5nLWxvYWR0ZXN0LWRlbW9cdGFyZ2V0XHRlc3QtY2xhc3Nlc3QATEM6XGRldmVsb3Bcd29ya3NwYWNlc1x2anBvcnRhbFdvcmtzcGFjZVxnYXRsaW5nLWxvYWR0ZXN0LWRlbW9cc3JjXHRlc3Rcc2NhbGFzcQB+AAV0AFFDOlxkZXZlbG9wXHdvcmtzcGFjZXNcdmpwb3J0YWxXb3Jrc3BhY2VcZ2F0bGluZy1sb2FkdGVzdC1kZW1vXHRhcmdldFx0ZXN0LWNsYXNzZXN0AFBDOlxkZXZlbG9wXHdvcmtzcGFjZXNcdmpwb3J0YWxXb3Jrc3BhY2VcZ2F0bGluZy1sb2FkdGVzdC1kZW1vXHNyY1x0ZXN0XHJlc291cmNlcw== +14 -> rO0ABXNyABV4c2J0aS5hcGkuQ29tcGlsYXRpb27t+uDDauigQgIAAkoACXN0YXJ0VGltZVsAB291dHB1dHN0ABpbTHhzYnRpL2FwaS9PdXRwdXRTZXR0aW5nO3hwAAABVPJoEOF1cgAaW0x4c2J0aS5hcGkuT3V0cHV0U2V0dGluZzt/asLzp4elQgIAAHhwAAAAAnNyABd4c2J0aS5hcGkuT3V0cHV0U2V0dGluZ3rZmkd0+x17AgACTAAPb3V0cHV0RGlyZWN0b3J5dAASTGphdmEvbGFuZy9TdHJpbmc7TAAPc291cmNlRGlyZWN0b3J5cQB+AAZ4cHQAUUM6XGRldmVsb3Bcd29ya3NwYWNlc1x2anBvcnRhbFdvcmtzcGFjZVxnYXRsaW5nLWxvYWR0ZXN0LWRlbW9cdGFyZ2V0XHRlc3QtY2xhc3Nlc3QATEM6XGRldmVsb3Bcd29ya3NwYWNlc1x2anBvcnRhbFdvcmtzcGFjZVxnYXRsaW5nLWxvYWR0ZXN0LWRlbW9cc3JjXHRlc3Rcc2NhbGFzcQB+AAV0AFFDOlxkZXZlbG9wXHdvcmtzcGFjZXNcdmpwb3J0YWxXb3Jrc3BhY2VcZ2F0bGluZy1sb2FkdGVzdC1kZW1vXHRhcmdldFx0ZXN0LWNsYXNzZXN0AFBDOlxkZXZlbG9wXHdvcmtzcGFjZXNcdmpwb3J0YWxXb3Jrc3BhY2VcZ2F0bGluZy1sb2FkdGVzdC1kZW1vXHNyY1x0ZXN0XHJlc291cmNlcw== +15 -> rO0ABXNyABV4c2J0aS5hcGkuQ29tcGlsYXRpb27t+uDDauigQgIAAkoACXN0YXJ0VGltZVsAB291dHB1dHN0ABpbTHhzYnRpL2FwaS9PdXRwdXRTZXR0aW5nO3hwAAABVPJ0QXt1cgAaW0x4c2J0aS5hcGkuT3V0cHV0U2V0dGluZzt/asLzp4elQgIAAHhwAAAAAnNyABd4c2J0aS5hcGkuT3V0cHV0U2V0dGluZ3rZmkd0+x17AgACTAAPb3V0cHV0RGlyZWN0b3J5dAASTGphdmEvbGFuZy9TdHJpbmc7TAAPc291cmNlRGlyZWN0b3J5cQB+AAZ4cHQAQkM6XGRldmVsb3BcZ2l0XHR1dG9yaWFsc1xnYXRsaW5nLWxvYWR0ZXN0LWRlbW9cdGFyZ2V0XHRlc3QtY2xhc3Nlc3QAPUM6XGRldmVsb3BcZ2l0XHR1dG9yaWFsc1xnYXRsaW5nLWxvYWR0ZXN0LWRlbW9cc3JjXHRlc3Rcc2NhbGFzcQB+AAV0AEJDOlxkZXZlbG9wXGdpdFx0dXRvcmlhbHNcZ2F0bGluZy1sb2FkdGVzdC1kZW1vXHRhcmdldFx0ZXN0LWNsYXNzZXN0AEFDOlxkZXZlbG9wXGdpdFx0dXRvcmlhbHNcZ2F0bGluZy1sb2FkdGVzdC1kZW1vXHNyY1x0ZXN0XHJlc291cmNlcw== +16 -> rO0ABXNyABV4c2J0aS5hcGkuQ29tcGlsYXRpb27t+uDDauigQgIAAkoACXN0YXJ0VGltZVsAB291dHB1dHN0ABpbTHhzYnRpL2FwaS9PdXRwdXRTZXR0aW5nO3hwAAABVPJ1xKZ1cgAaW0x4c2J0aS5hcGkuT3V0cHV0U2V0dGluZzt/asLzp4elQgIAAHhwAAAAAnNyABd4c2J0aS5hcGkuT3V0cHV0U2V0dGluZ3rZmkd0+x17AgACTAAPb3V0cHV0RGlyZWN0b3J5dAASTGphdmEvbGFuZy9TdHJpbmc7TAAPc291cmNlRGlyZWN0b3J5cQB+AAZ4cHQAQkM6XGRldmVsb3BcZ2l0XHR1dG9yaWFsc1xnYXRsaW5nLWxvYWR0ZXN0LWRlbW9cdGFyZ2V0XHRlc3QtY2xhc3Nlc3QAPUM6XGRldmVsb3BcZ2l0XHR1dG9yaWFsc1xnYXRsaW5nLWxvYWR0ZXN0LWRlbW9cc3JjXHRlc3Rcc2NhbGFzcQB+AAV0AEJDOlxkZXZlbG9wXGdpdFx0dXRvcmlhbHNcZ2F0bGluZy1sb2FkdGVzdC1kZW1vXHRhcmdldFx0ZXN0LWNsYXNzZXN0AEFDOlxkZXZlbG9wXGdpdFx0dXRvcmlhbHNcZ2F0bGluZy1sb2FkdGVzdC1kZW1vXHNyY1x0ZXN0XHJlc291cmNlcw== diff --git a/gatling-loadtest-demo/.classpath b/gatling-loadtest-demo/.classpath new file mode 100644 index 0000000000..6026072109 --- /dev/null +++ b/gatling-loadtest-demo/.classpath @@ -0,0 +1,32 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/gatling-loadtest-demo/.project b/gatling-loadtest-demo/.project new file mode 100644 index 0000000000..a5e3b774e0 --- /dev/null +++ b/gatling-loadtest-demo/.project @@ -0,0 +1,24 @@ + + + gatling-loadtest-demo + + + + + + org.scala-ide.sdt.core.scalabuilder + + + + + org.eclipse.m2e.core.maven2Builder + + + + + + org.scala-ide.sdt.core.scalanature + org.eclipse.jdt.core.javanature + org.eclipse.m2e.core.maven2Nature + + diff --git a/gatling-loadtest-demo/pom.xml b/gatling-loadtest-demo/pom.xml new file mode 100644 index 0000000000..f5ed1d7de7 --- /dev/null +++ b/gatling-loadtest-demo/pom.xml @@ -0,0 +1,113 @@ + + + 4.0.0 + org.baeldung + gatling-loadtest-demo + 1.0-SNAPSHOT + + + 1.8 + 1.8 + 2.11.7 + UTF-8 + + 2.2.0 + + 3.2.2 + + + + + + io.gatling + gatling-app + ${gatling.version} + + + io.gatling + gatling-recorder + ${gatling.version} + + + io.gatling.highcharts + gatling-charts-highcharts + ${gatling.version} + + + org.scala-lang + scala-library + ${scala.version} + + + + + + + io.gatling.highcharts + gatling-charts-highcharts + + + io.gatling + gatling-app + + + io.gatling + gatling-recorder + + + org.scala-lang + scala-library + + + + + src/test/scala + + + + net.alchim31.maven + scala-maven-plugin + ${scala-maven-plugin.version} + + + + + + net.alchim31.maven + scala-maven-plugin + + + + testCompile + + + + -Ybackend:GenBCode + -Ydelambdafy:method + -target:jvm-1.8 + -deprecation + -feature + -unchecked + -language:implicitConversions + -language:postfixOps + + + + + + + + io.gatling + gatling-maven-plugin + ${gatling.version} + + + test + execute + + + + + + diff --git a/gatling-loadtest-demo/src/test/resources/gatling.conf b/gatling-loadtest-demo/src/test/resources/gatling.conf new file mode 100644 index 0000000000..8bfa0ed366 --- /dev/null +++ b/gatling-loadtest-demo/src/test/resources/gatling.conf @@ -0,0 +1,127 @@ +######################### +# Gatling Configuration # +######################### + +# This file contains all the settings configurable for Gatling with their default values + +gatling { + core { + #outputDirectoryBaseName = "" # The prefix for each simulation result folder (then suffixed by the report generation timestamp) + #runDescription = "" # The description for this simulation run, displayed in each report + #encoding = "utf-8" # Encoding to use throughout Gatling for file and string manipulation + #simulationClass = "" # The FQCN of the simulation to run (when used in conjunction with noReports, the simulation for which assertions will be validated) + #mute = false # When set to true, don't ask for simulation name nor run description (currently only used by Gatling SBT plugin) + #elFileBodiesCacheMaxCapacity = 200 # Cache size for request body EL templates, set to 0 to disable + #rawFileBodiesCacheMaxCapacity = 200 # Cache size for request body Raw templates, set to 0 to disable + #rawFileBodiesInMemoryMaxSize = 1000 # Below this limit, raw file bodies will be cached in memory + + extract { + regex { + #cacheMaxCapacity = 200 # Cache size for the compiled regexes, set to 0 to disable caching + } + xpath { + #cacheMaxCapacity = 200 # Cache size for the compiled XPath queries, set to 0 to disable caching + } + jsonPath { + #cacheMaxCapacity = 200 # Cache size for the compiled jsonPath queries, set to 0 to disable caching + #preferJackson = false # When set to true, prefer Jackson over Boon for JSON-related operations + } + css { + #cacheMaxCapacity = 200 # Cache size for the compiled CSS selectors queries, set to 0 to disable caching + } + } + + directory { + #data = user-files/data # Folder where user's data (e.g. files used by Feeders) is located + #bodies = user-files/bodies # Folder where bodies are located + #simulations = user-files/simulations # Folder where the bundle's simulations are located + #reportsOnly = "" # If set, name of report folder to look for in order to generate its report + #binaries = "" # If set, name of the folder where compiles classes are located: Defaults to GATLING_HOME/target. + #results = results # Name of the folder where all reports folder are located + } + } + charting { + #noReports = false # When set to true, don't generate HTML reports + #maxPlotPerSeries = 1000 # Number of points per graph in Gatling reports + #useGroupDurationMetric = false # Switch group timings from cumulated response time to group duration. + indicators { + #lowerBound = 800 # Lower bound for the requests' response time to track in the reports and the console summary + #higherBound = 1200 # Higher bound for the requests' response time to track in the reports and the console summary + #percentile1 = 50 # Value for the 1st percentile to track in the reports, the console summary and Graphite + #percentile2 = 75 # Value for the 2nd percentile to track in the reports, the console summary and Graphite + #percentile3 = 95 # Value for the 3rd percentile to track in the reports, the console summary and Graphite + #percentile4 = 99 # Value for the 4th percentile to track in the reports, the console summary and Graphite + } + } + http { + #fetchedCssCacheMaxCapacity = 200 # Cache size for CSS parsed content, set to 0 to disable + #fetchedHtmlCacheMaxCapacity = 200 # Cache size for HTML parsed content, set to 0 to disable + #perUserCacheMaxCapacity = 200 # Per virtual user cache size, set to 0 to disable + #warmUpUrl = "http://gatling.io" # The URL to use to warm-up the HTTP stack (blank means disabled) + #enableGA = true # Very light Google Analytics, please support + ssl { + keyStore { + #type = "" # Type of SSLContext's KeyManagers store + #file = "" # Location of SSLContext's KeyManagers store + #password = "" # Password for SSLContext's KeyManagers store + #algorithm = "" # Algorithm used SSLContext's KeyManagers store + } + trustStore { + #type = "" # Type of SSLContext's TrustManagers store + #file = "" # Location of SSLContext's TrustManagers store + #password = "" # Password for SSLContext's TrustManagers store + #algorithm = "" # Algorithm used by SSLContext's TrustManagers store + } + } + ahc { + #keepAlive = true # Allow pooling HTTP connections (keep-alive header automatically added) + #connectTimeout = 60000 # Timeout when establishing a connection + #pooledConnectionIdleTimeout = 60000 # Timeout when a connection stays unused in the pool + #readTimeout = 60000 # Timeout when a used connection stays idle + #maxRetry = 2 # Number of times that a request should be tried again + #requestTimeout = 60000 # Timeout of the requests + #acceptAnyCertificate = true # When set to true, doesn't validate SSL certificates + #httpClientCodecMaxInitialLineLength = 4096 # Maximum length of the initial line of the response (e.g. "HTTP/1.0 200 OK") + #httpClientCodecMaxHeaderSize = 8192 # Maximum size, in bytes, of each request's headers + #httpClientCodecMaxChunkSize = 8192 # Maximum length of the content or each chunk + #webSocketMaxFrameSize = 10240000 # Maximum frame payload size + #sslEnabledProtocols = [TLSv1.2, TLSv1.1, TLSv1] # Array of enabled protocols for HTTPS, if empty use the JDK defaults + #sslEnabledCipherSuites = [] # Array of enabled cipher suites for HTTPS, if empty use the JDK defaults + #sslSessionCacheSize = 0 # SSLSession cache size, set to 0 to use JDK's default + #sslSessionTimeout = 0 # SSLSession timeout in seconds, set to 0 to use JDK's default (24h) + #useOpenSsl = false # if OpenSSL should be used instead of JSSE (requires tcnative jar) + #useNativeTransport = false # if native transport should be used instead of Java NIO (requires netty-transport-native-epoll, currently Linux only) + #usePooledMemory = true # if Gatling should use pooled memory + #tcpNoDelay = true + #soReuseAddress = false + #soLinger = -1 + #soSndBuf = -1 + #soRcvBuf = -1 + } + dns { + #queryTimeout = 5000 # Timeout of each DNS query in millis + #maxQueriesPerResolve = 3 # Maximum allowed number of DNS queries for a given name resolution + } + } + data { + #writers = [console, file] # The list of DataWriters to which Gatling write simulation data (currently supported : console, file, graphite, jdbc) + console { + #light = false # When set to true, displays a light version without detailed request stats + } + file { + #bufferSize = 8192 # FileDataWriter's internal data buffer size, in bytes + } + leak { + #noActivityTimeout = 30 # Period, in seconds, for which Gatling may have no activity before considering a leak may be happening + } + graphite { + #light = false # only send the all* stats + #host = "localhost" # The host where the Carbon server is located + #port = 2003 # The port to which the Carbon server listens to (2003 is default for plaintext, 2004 is default for pickle) + #protocol = "tcp" # The protocol used to send data to Carbon (currently supported : "tcp", "udp") + #rootPathPrefix = "gatling" # The common prefix of all metrics sent to Graphite + #bufferSize = 8192 # GraphiteDataWriter's internal data buffer size, in bytes + #writeInterval = 1 # GraphiteDataWriter's write interval, in seconds + } + } +} diff --git a/gatling-loadtest-demo/src/test/resources/logback.xml b/gatling-loadtest-demo/src/test/resources/logback.xml new file mode 100644 index 0000000000..a8fe714e7d --- /dev/null +++ b/gatling-loadtest-demo/src/test/resources/logback.xml @@ -0,0 +1,22 @@ + + + + + + %d{HH:mm:ss.SSS} [%-5level] %logger{15} - %msg%n%rEx + false + + + + + + + + + + + + + + + diff --git a/gatling-loadtest-demo/src/test/resources/recorder.conf b/gatling-loadtest-demo/src/test/resources/recorder.conf new file mode 100644 index 0000000000..f4ba60310b --- /dev/null +++ b/gatling-loadtest-demo/src/test/resources/recorder.conf @@ -0,0 +1,57 @@ +recorder { + core { + className=RecordedSimulation + encoding=utf-8 + harFilePath="" + headless=false + mode=Proxy + outputFolder="C:\\develop\\workspaces\\vjportalWorkspace\\gatling-loadtest-demo\\src\\test\\scala" + package="org.baeldung" + saveConfig=true + thresholdForPauseCreation=100 + } + filters { + blacklist=[ + ".*\\.css", + ".*\\.js", + ".*\\.ico" + ] + filterStrategy=BlacklistFirst + whitelist=[] + } + http { + automaticReferer=true + checkResponseBodies=false + followRedirect=true + inferHtmlResources=true + removeCacheHeaders=true + } + netty { + maxChunkSize=8192 + maxContentLength=100000000 + maxHeaderSize=20000 + maxInitialLineLength=10000 + } + proxy { + https { + certificateAuthority { + certificatePath="" + privateKeyPath="" + } + keyStore { + password="" + path="" + type=JKS + } + mode=SelfSignedCertificate + } + outgoing { + host="" + password="" + port=0 + sslPort=0 + username="" + } + port=8000 + } +} diff --git a/gatling-loadtest-demo/src/test/scala/Engine.scala b/gatling-loadtest-demo/src/test/scala/Engine.scala new file mode 100644 index 0000000000..0ac3abe948 --- /dev/null +++ b/gatling-loadtest-demo/src/test/scala/Engine.scala @@ -0,0 +1,13 @@ +import io.gatling.app.Gatling +import io.gatling.core.config.GatlingPropertiesBuilder + +object Engine extends App { + + val props = new GatlingPropertiesBuilder + props.dataDirectory(IDEPathHelper.dataDirectory.toString) + props.resultsDirectory(IDEPathHelper.resultsDirectory.toString) + props.bodiesDirectory(IDEPathHelper.bodiesDirectory.toString) + props.binariesDirectory(IDEPathHelper.mavenBinariesDirectory.toString) + + Gatling.fromMap(props.build) +} diff --git a/gatling-loadtest-demo/src/test/scala/IDEPathHelper.scala b/gatling-loadtest-demo/src/test/scala/IDEPathHelper.scala new file mode 100644 index 0000000000..32c986a072 --- /dev/null +++ b/gatling-loadtest-demo/src/test/scala/IDEPathHelper.scala @@ -0,0 +1,22 @@ +import java.nio.file.Path + +import io.gatling.commons.util.PathHelper._ + +object IDEPathHelper { + + val gatlingConfUrl: Path = getClass.getClassLoader.getResource("gatling.conf").toURI + val projectRootDir = gatlingConfUrl.ancestor(3) + + val mavenSourcesDirectory = projectRootDir / "src" / "test" / "scala" + val mavenResourcesDirectory = projectRootDir / "src" / "test" / "resources" + val mavenTargetDirectory = projectRootDir / "target" + val mavenBinariesDirectory = mavenTargetDirectory / "test-classes" + + val dataDirectory = mavenResourcesDirectory / "data" + val bodiesDirectory = mavenResourcesDirectory / "bodies" + + val recorderOutputDirectory = mavenSourcesDirectory + val resultsDirectory = mavenTargetDirectory / "gatling" + + val recorderConfigFile = mavenResourcesDirectory / "recorder.conf" +} diff --git a/gatling-loadtest-demo/src/test/scala/Recorder.scala b/gatling-loadtest-demo/src/test/scala/Recorder.scala new file mode 100644 index 0000000000..1372da6d41 --- /dev/null +++ b/gatling-loadtest-demo/src/test/scala/Recorder.scala @@ -0,0 +1,12 @@ +import io.gatling.recorder.GatlingRecorder +import io.gatling.recorder.config.RecorderPropertiesBuilder + +object Recorder extends App { + + val props = new RecorderPropertiesBuilder + props.simulationOutputFolder(IDEPathHelper.recorderOutputDirectory.toString) + props.simulationPackage("org.baeldung") + props.bodiesFolder(IDEPathHelper.bodiesDirectory.toString) + + GatlingRecorder.fromMap(props.build, Some(IDEPathHelper.recorderConfigFile)) +} diff --git a/gatling-loadtest-demo/src/test/scala/org/baeldung/RecordedSimulation.scala b/gatling-loadtest-demo/src/test/scala/org/baeldung/RecordedSimulation.scala new file mode 100644 index 0000000000..553e17e56f --- /dev/null +++ b/gatling-loadtest-demo/src/test/scala/org/baeldung/RecordedSimulation.scala @@ -0,0 +1,46 @@ +package org.baeldung + +import scala.concurrent.duration._ + +import io.gatling.core.Predef._ +import io.gatling.http.Predef._ +import io.gatling.jdbc.Predef._ + +class RecordedSimulation extends Simulation { + + val httpProtocol = http + .baseURL("http://computer-database.gatling.io") + .inferHtmlResources(BlackList(""".*\.css""", """.*\.js""", """.*\.ico"""), WhiteList()) + .acceptHeader("text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8") + .acceptEncodingHeader("gzip, deflate") + .acceptLanguageHeader("it-IT,it;q=0.8,en-US;q=0.5,en;q=0.3") + .userAgentHeader("Mozilla/5.0 (Windows NT 10.0; WOW64; rv:46.0) Gecko/20100101 Firefox/46.0") + + + + + + val scn = scenario("RecordedSimulation") + .exec(http("request_0") + .get("/")) + .pause(5) + .exec(http("request_1") + .get("/computers?f=amstrad")) + .pause(4) + .exec(http("request_2") + .get("/computers/412")) + .pause(2) + .exec(http("request_3") + .get("/")) + .pause(2) + .exec(http("request_4") + .get("/computers?p=1")) + .pause(1) + .exec(http("request_5") + .get("/computers?p=2")) + .pause(2) + .exec(http("request_6") + .get("/computers?p=3")) + + setUp(scn.inject(atOnceUsers(1))).protocols(httpProtocol) +} \ No newline at end of file From db9ecdb2392f5a7f4bc300be063a5c970644b1a5 Mon Sep 17 00:00:00 2001 From: Thai Nguyen Date: Sun, 29 May 2016 14:02:06 +0700 Subject: [PATCH 011/108] introduction to wiremock --- .../wiremock/introduction/JUnitManaged.java | 96 ++++++++++++++++--- 1 file changed, 85 insertions(+), 11 deletions(-) diff --git a/rest-testing/src/test/java/com/baeldung/rest/wiremock/introduction/JUnitManaged.java b/rest-testing/src/test/java/com/baeldung/rest/wiremock/introduction/JUnitManaged.java index 9fef6017c1..6f1ad640cb 100644 --- a/rest-testing/src/test/java/com/baeldung/rest/wiremock/introduction/JUnitManaged.java +++ b/rest-testing/src/test/java/com/baeldung/rest/wiremock/introduction/JUnitManaged.java @@ -1,12 +1,17 @@ package com.baeldung.rest.wiremock.introduction; import static com.github.tomakehurst.wiremock.client.WireMock.aResponse; -import static com.github.tomakehurst.wiremock.client.WireMock.configureFor; +import static com.github.tomakehurst.wiremock.client.WireMock.equalTo; import static com.github.tomakehurst.wiremock.client.WireMock.get; import static com.github.tomakehurst.wiremock.client.WireMock.getRequestedFor; +import static com.github.tomakehurst.wiremock.client.WireMock.post; +import static com.github.tomakehurst.wiremock.client.WireMock.postRequestedFor; import static com.github.tomakehurst.wiremock.client.WireMock.stubFor; import static com.github.tomakehurst.wiremock.client.WireMock.urlEqualTo; +import static com.github.tomakehurst.wiremock.client.WireMock.urlPathEqualTo; import static com.github.tomakehurst.wiremock.client.WireMock.urlPathMatching; +import static com.github.tomakehurst.wiremock.client.WireMock.matching; +import static com.github.tomakehurst.wiremock.client.WireMock.containing; import static com.github.tomakehurst.wiremock.client.WireMock.verify; import static org.junit.Assert.assertEquals; @@ -16,6 +21,8 @@ import java.util.Scanner; import org.apache.http.HttpResponse; import org.apache.http.client.methods.HttpGet; +import org.apache.http.client.methods.HttpPost; +import org.apache.http.entity.StringEntity; import org.apache.http.impl.client.CloseableHttpClient; import org.apache.http.impl.client.HttpClients; import org.junit.Rule; @@ -28,14 +35,13 @@ public class JUnitManaged { public WireMockRule wireMockRule = new WireMockRule(); @Test - public void givenJUnitManagedServer_whenStubbingURL_thenCorrect() throws IOException { - configureFor("localhost", 8080); + public void givenJUnitManagedServer_whenMatchingURL_thenCorrect() throws IOException { stubFor(get(urlPathMatching("/baeldung/.*")).willReturn(aResponse().withStatus(200).withHeader("Content-Type", "application/json").withBody("\"testing-library\": \"WireMock\""))); CloseableHttpClient httpClient = HttpClients.createDefault(); HttpGet request = new HttpGet("http://localhost:8080/baeldung/wiremock"); HttpResponse httpResponse = httpClient.execute(request); - String stringResponse = convertResponseToString(httpResponse); + String stringResponse = convertHttpResponseToString(httpResponse); verify(getRequestedFor(urlEqualTo("/baeldung/wiremock"))); assertEquals(200, httpResponse.getStatusLine().getStatusCode()); @@ -43,11 +49,79 @@ public class JUnitManaged { assertEquals("\"testing-library\": \"WireMock\"", stringResponse); } - private String convertResponseToString(HttpResponse response) throws IOException { - InputStream responseStream = response.getEntity().getContent(); - Scanner scanner = new Scanner(responseStream, "UTF-8"); - String stringResponse = scanner.useDelimiter("\\Z").next(); - scanner.close(); - return stringResponse; + @Test + public void givenJUnitManagedServer_whenMatchingHeaders_thenCorrect() throws IOException { + stubFor(get(urlPathEqualTo("/baeldung/wiremock")).withHeader("Accept", matching("text/.*")).willReturn(aResponse().withStatus(503).withBody("!!! Service Unavailable !!!"))); + + CloseableHttpClient httpClient = HttpClients.createDefault(); + HttpGet request = new HttpGet("http://localhost:8080/baeldung/wiremock"); + request.addHeader("Accept", "text/xml"); + HttpResponse httpResponse = httpClient.execute(request); + String stringResponse = convertHttpResponseToString(httpResponse); + + verify(getRequestedFor(urlEqualTo("/baeldung/wiremock"))); + assertEquals(503, httpResponse.getStatusLine().getStatusCode()); + assertEquals("!!! Service Unavailable !!!", stringResponse); } -} + + // @Test + public void givenJUnitManagedServer_whenMatchingBody_thenCorrect() throws IOException { + stubFor(post(urlEqualTo("/baeldung/wiremock")).withHeader("Content-Type", equalTo("application/json")).withRequestBody(containing("\"testing-library\": \"WireMock\"")).withRequestBody(containing("\"creator\": \"Tom Akehurst\"")) + .withRequestBody(containing("\"website\": \"wiremock.org\"")).willReturn(aResponse().withStatus(200))); + + InputStream jsonInputStream = this.getClass().getClassLoader().getResourceAsStream("wiremock_intro.json"); + String jsonString = convertInputStreamToString(jsonInputStream); + StringEntity entity = new StringEntity(jsonString); + + CloseableHttpClient httpClient = HttpClients.createDefault(); + HttpPost request = new HttpPost("http://localhost:8080/baeldung/wiremock"); + + request.addHeader("Content-Type", "application/json"); + request.setEntity(entity); + HttpResponse response = httpClient.execute(request); + + assertEquals(200, response.getStatusLine().getStatusCode()); + verify(postRequestedFor(urlEqualTo("/baeldung/wiremock")).withHeader("Content-Type", equalTo("application/json"))); + } + + @Test + public void givenJUnitManagedServer_whenNotUsingPriority_thenCorrect() throws IOException { + stubFor(get(urlPathMatching("/baeldung/.*")).willReturn(aResponse().withStatus(200))); + stubFor(get(urlPathEqualTo("/baeldung/wiremock")).withHeader("Accept", matching("text/.*")).willReturn(aResponse().withStatus(503))); + + HttpResponse httpResponse = generateClientAndReceiveResponseForPriorityTests(); + + verify(getRequestedFor(urlEqualTo("/baeldung/wiremock"))); + assertEquals(503, httpResponse.getStatusLine().getStatusCode()); + } + + @Test + public void givenJUnitManagedServer_whenUsingPriority_thenCorrect() throws IOException { + stubFor(get(urlPathMatching("/baeldung/.*")).atPriority(1).willReturn(aResponse().withStatus(200))); + stubFor(get(urlPathEqualTo("/baeldung/wiremock")).atPriority(2).withHeader("Accept", matching("text/.*")).willReturn(aResponse().withStatus(503))); + + HttpResponse httpResponse = generateClientAndReceiveResponseForPriorityTests(); + + verify(getRequestedFor(urlEqualTo("/baeldung/wiremock"))); + assertEquals(200, httpResponse.getStatusLine().getStatusCode()); + } + + private String convertHttpResponseToString(HttpResponse httpResponse) throws IOException { + InputStream inputStream = httpResponse.getEntity().getContent(); + return convertInputStreamToString(inputStream); + } + + private String convertInputStreamToString(InputStream inputStream) { + Scanner scanner = new Scanner(inputStream, "UTF-8"); + String string = scanner.useDelimiter("\\Z").next(); + scanner.close(); + return string; + } + + private HttpResponse generateClientAndReceiveResponseForPriorityTests() throws IOException { + CloseableHttpClient httpClient = HttpClients.createDefault(); + HttpGet request = new HttpGet("http://localhost:8080/baeldung/wiremock"); + request.addHeader("Accept", "text/xml"); + return httpClient.execute(request); + } +} \ No newline at end of file From 1cf09ba2a8b8f0d14b3c218b66af54f43dd5cccd Mon Sep 17 00:00:00 2001 From: Thai Nguyen Date: Sun, 29 May 2016 23:48:59 +0700 Subject: [PATCH 012/108] minor fixes --- .../rest/wiremock/introduction/JUnitManaged.java | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/rest-testing/src/test/java/com/baeldung/rest/wiremock/introduction/JUnitManaged.java b/rest-testing/src/test/java/com/baeldung/rest/wiremock/introduction/JUnitManaged.java index 6f1ad640cb..f6a46256ac 100644 --- a/rest-testing/src/test/java/com/baeldung/rest/wiremock/introduction/JUnitManaged.java +++ b/rest-testing/src/test/java/com/baeldung/rest/wiremock/introduction/JUnitManaged.java @@ -51,20 +51,21 @@ public class JUnitManaged { @Test public void givenJUnitManagedServer_whenMatchingHeaders_thenCorrect() throws IOException { - stubFor(get(urlPathEqualTo("/baeldung/wiremock")).withHeader("Accept", matching("text/.*")).willReturn(aResponse().withStatus(503).withBody("!!! Service Unavailable !!!"))); + stubFor(get(urlPathEqualTo("/baeldung/wiremock")).withHeader("Accept", matching("text/.*")).willReturn(aResponse().withStatus(503).withHeader("Content-Type", "text/html").withBody("!!! Service Unavailable !!!"))); CloseableHttpClient httpClient = HttpClients.createDefault(); HttpGet request = new HttpGet("http://localhost:8080/baeldung/wiremock"); - request.addHeader("Accept", "text/xml"); + request.addHeader("Accept", "text/html"); HttpResponse httpResponse = httpClient.execute(request); String stringResponse = convertHttpResponseToString(httpResponse); verify(getRequestedFor(urlEqualTo("/baeldung/wiremock"))); assertEquals(503, httpResponse.getStatusLine().getStatusCode()); + assertEquals("text/html", httpResponse.getFirstHeader("Content-Type").getValue()); assertEquals("!!! Service Unavailable !!!", stringResponse); } - // @Test + @Test public void givenJUnitManagedServer_whenMatchingBody_thenCorrect() throws IOException { stubFor(post(urlEqualTo("/baeldung/wiremock")).withHeader("Content-Type", equalTo("application/json")).withRequestBody(containing("\"testing-library\": \"WireMock\"")).withRequestBody(containing("\"creator\": \"Tom Akehurst\"")) .withRequestBody(containing("\"website\": \"wiremock.org\"")).willReturn(aResponse().withStatus(200))); @@ -75,13 +76,12 @@ public class JUnitManaged { CloseableHttpClient httpClient = HttpClients.createDefault(); HttpPost request = new HttpPost("http://localhost:8080/baeldung/wiremock"); - request.addHeader("Content-Type", "application/json"); request.setEntity(entity); HttpResponse response = httpClient.execute(request); - assertEquals(200, response.getStatusLine().getStatusCode()); verify(postRequestedFor(urlEqualTo("/baeldung/wiremock")).withHeader("Content-Type", equalTo("application/json"))); + assertEquals(200, response.getStatusLine().getStatusCode()); } @Test From b11f8ea8218189ca8f32c8988e5e35fe765c8af5 Mon Sep 17 00:00:00 2001 From: Slavisa Avramovic Date: Mon, 6 Jun 2016 07:29:44 +0200 Subject: [PATCH 013/108] spring-jsf-integration - adding maven-war-plugin --- jsf/pom.xml | 16 +++++++++++++++- 1 file changed, 15 insertions(+), 1 deletion(-) diff --git a/jsf/pom.xml b/jsf/pom.xml index 2f5d315e41..c4801996de 100644 --- a/jsf/pom.xml +++ b/jsf/pom.xml @@ -90,12 +90,21 @@ org.apache.maven.plugins maven-compiler-plugin - 3.5.1 + ${maven-compiler-plugin.version} 1.8 1.8 + + + org.apache.maven.plugins + maven-war-plugin + ${maven-war-plugin.version} + + false + + @@ -112,5 +121,10 @@ 3.1.0 + + + 3.5.1 + 2.6 + \ No newline at end of file From 635a5aa5ea55b8b540031d04e2502b39b1da6b4a Mon Sep 17 00:00:00 2001 From: egimaben Date: Mon, 6 Jun 2016 17:05:54 +0300 Subject: [PATCH 014/108] Added guava set+function=map tutorial and tests --- .../org/baeldung/guava/GuavaMapFromSet.java | 101 ++++++++++++++++++ .../baeldung/guava/GuavaMapFromSetTests.java | 66 ++++++++++++ 2 files changed, 167 insertions(+) create mode 100644 guava/src/test/java/org/baeldung/guava/GuavaMapFromSet.java create mode 100644 guava/src/test/java/org/baeldung/guava/GuavaMapFromSetTests.java diff --git a/guava/src/test/java/org/baeldung/guava/GuavaMapFromSet.java b/guava/src/test/java/org/baeldung/guava/GuavaMapFromSet.java new file mode 100644 index 0000000000..602205ff9f --- /dev/null +++ b/guava/src/test/java/org/baeldung/guava/GuavaMapFromSet.java @@ -0,0 +1,101 @@ +package org.baeldung.guava; + +import java.util.AbstractMap; +import java.util.AbstractSet; +import java.util.Iterator; +import java.util.Map; +import java.util.Set; +import java.util.WeakHashMap; + +import com.google.common.base.Function; + +public class GuavaMapFromSet extends AbstractMap { + + private class SingleEntry implements Entry { + private K key; + + public SingleEntry( K key) { + this.key = key; + } + + @Override + public K getKey() { + return this.key; + } + + @Override + public V getValue() { + V value = GuavaMapFromSet.this.cache.get(this.key); + if (value == null) { + value = GuavaMapFromSet.this.function.apply(this.key); + GuavaMapFromSet.this.cache.put(this.key, value); + } + return value; + } + + @Override + public V setValue( V value) { + throw new UnsupportedOperationException(); + } + } + + private class MyEntrySet extends AbstractSet> { + + public class EntryIterator implements Iterator> { + private Iterator inner; + + public EntryIterator() { + this.inner = MyEntrySet.this.keys.iterator(); + } + + @Override + public boolean hasNext() { + return this.inner.hasNext(); + } + + @Override + public Map.Entry next() { + K key = this.inner.next(); + return new SingleEntry(key); + } + + @Override + public void remove() { + throw new UnsupportedOperationException(); + } + } + + private Set keys; + + public MyEntrySet( Set keys) { + this.keys = keys; + } + + @Override + public Iterator> iterator() { + return new EntryIterator(); + } + + @Override + public int size() { + return this.keys.size(); + } + + } + + private WeakHashMap cache; + private Set> entries; + private Function function; + + public GuavaMapFromSet( Set keys, Function function) { + this.function = function; + this.cache = new WeakHashMap(); + this.entries = new MyEntrySet(keys); + } + + @Override + public Set> entrySet() { + return this.entries; + } + +} diff --git a/guava/src/test/java/org/baeldung/guava/GuavaMapFromSetTests.java b/guava/src/test/java/org/baeldung/guava/GuavaMapFromSetTests.java new file mode 100644 index 0000000000..9abb5d14a9 --- /dev/null +++ b/guava/src/test/java/org/baeldung/guava/GuavaMapFromSetTests.java @@ -0,0 +1,66 @@ +package org.baeldung.guava; + +import static org.junit.Assert.assertTrue; + +import java.util.Arrays; +import java.util.Map; +import java.util.Set; +import java.util.TreeSet; + +import org.junit.Test; + +import com.google.common.base.Function; + +public class GuavaMapFromSetTests { + + @Test + public void givenStringSet_whenMapsToElementLength_thenCorrect() { + Function function = new Function() { + + @Override + public String apply(Integer from) { + return Integer.toBinaryString(from.intValue()); + } + }; + Set set = (Set) new TreeSet(Arrays.asList( + 32, 64, 128)); + Map map = new GuavaMapFromSet(set, + function); + assertTrue(map.get(32).equals("100000") + && map.get(64).equals("1000000") + && map.get(128).equals("10000000")); + } + + @Test + public void givenIntSet_whenMapsToElementBinaryValue_thenCorrect() { + Function function = new Function() { + + @Override + public Integer apply(String from) { + return from.length(); + } + }; + Set set = (Set) new TreeSet(Arrays.asList( + "four", "three", "twelve")); + Map map = new GuavaMapFromSet(set, + function); + assertTrue(map.get("four") == 4 && map.get("three") == 5 + && map.get("twelve") == 6); + } + @Test + public void givenSet_whenNewSetElementAddedAndMappedLive_thenCorrect() { + Function function = new Function() { + + @Override + public Integer apply(String from) { + return from.length(); + } + }; + Set set = (Set) new TreeSet(Arrays.asList( + "four", "three", "twelve")); + Map map = new GuavaMapFromSet(set, + function); + set.add("one"); + assertTrue(map.get("one") == 3 && map.size()==4); + } +} From f53ac9d4a17365f652202064704b8b278c55b464 Mon Sep 17 00:00:00 2001 From: Thai Nguyen Date: Mon, 6 Jun 2016 23:19:05 +0700 Subject: [PATCH 015/108] adds the wire_mock.json file --- rest-testing/src/main/resources/wiremock_intro.json | 5 +++++ 1 file changed, 5 insertions(+) create mode 100644 rest-testing/src/main/resources/wiremock_intro.json diff --git a/rest-testing/src/main/resources/wiremock_intro.json b/rest-testing/src/main/resources/wiremock_intro.json new file mode 100644 index 0000000000..ece2d35907 --- /dev/null +++ b/rest-testing/src/main/resources/wiremock_intro.json @@ -0,0 +1,5 @@ +{ + "testing-library": "WireMock", + "creator": "Tom Akehurst", + "website": "wiremock.org" +} \ No newline at end of file From c38e6c187681113ad5403d3dcc501756538077c2 Mon Sep 17 00:00:00 2001 From: Thai Nguyen Date: Tue, 7 Jun 2016 00:22:22 +0700 Subject: [PATCH 016/108] initial commit for rest testing with cucumber --- rest-testing/pom.xml | 11 +++ .../main/resources/Feature/cucumber.feature | 10 +++ rest-testing/src/main/resources/cucumber.json | 14 ++++ .../baeldung/rest/cucumber/CucumberTest.java | 10 +++ .../rest/cucumber/StepDefinition.java | 83 +++++++++++++++++++ 5 files changed, 128 insertions(+) create mode 100644 rest-testing/src/main/resources/Feature/cucumber.feature create mode 100644 rest-testing/src/main/resources/cucumber.json create mode 100644 rest-testing/src/test/java/com/baeldung/rest/cucumber/CucumberTest.java create mode 100644 rest-testing/src/test/java/com/baeldung/rest/cucumber/StepDefinition.java diff --git a/rest-testing/pom.xml b/rest-testing/pom.xml index 3bd7efb4d5..652f2ab601 100644 --- a/rest-testing/pom.xml +++ b/rest-testing/pom.xml @@ -110,6 +110,17 @@ test + + info.cukes + cucumber-java + 1.2.4 + test + + + info.cukes + cucumber-junit + 1.2.4 + diff --git a/rest-testing/src/main/resources/Feature/cucumber.feature b/rest-testing/src/main/resources/Feature/cucumber.feature new file mode 100644 index 0000000000..99dd8249fe --- /dev/null +++ b/rest-testing/src/main/resources/Feature/cucumber.feature @@ -0,0 +1,10 @@ +Feature: Testing a REST API + Users should be able to submit GET and POST requests to a web service, represented by WireMock + + Scenario: Data Upload to a web service + When users upload data on a project + Then the server should handle it and return a success status + + Scenario: Data retrieval from a web service + When users want to get information on the Cucumber project + Then the requested data is returned \ No newline at end of file diff --git a/rest-testing/src/main/resources/cucumber.json b/rest-testing/src/main/resources/cucumber.json new file mode 100644 index 0000000000..38ebe066ac --- /dev/null +++ b/rest-testing/src/main/resources/cucumber.json @@ -0,0 +1,14 @@ +{ + "testing-framework": "cucumber", + "supported-language": + [ + "Ruby", + "Java", + "Javascript", + "PHP", + "Python", + "C++" + ], + + "website": "cucumber.io" +} \ No newline at end of file diff --git a/rest-testing/src/test/java/com/baeldung/rest/cucumber/CucumberTest.java b/rest-testing/src/test/java/com/baeldung/rest/cucumber/CucumberTest.java new file mode 100644 index 0000000000..041de592e9 --- /dev/null +++ b/rest-testing/src/test/java/com/baeldung/rest/cucumber/CucumberTest.java @@ -0,0 +1,10 @@ +package com.baeldung.rest.cucumber; + +import org.junit.runner.RunWith; +import cucumber.api.CucumberOptions; +import cucumber.api.junit.Cucumber; + +@RunWith(Cucumber.class) +@CucumberOptions(features = "classpath:Feature") +public class CucumberTest { +} \ No newline at end of file diff --git a/rest-testing/src/test/java/com/baeldung/rest/cucumber/StepDefinition.java b/rest-testing/src/test/java/com/baeldung/rest/cucumber/StepDefinition.java new file mode 100644 index 0000000000..0d72c60950 --- /dev/null +++ b/rest-testing/src/test/java/com/baeldung/rest/cucumber/StepDefinition.java @@ -0,0 +1,83 @@ +package com.baeldung.rest.cucumber; + +import static org.junit.Assert.*; +import static org.hamcrest.CoreMatchers.containsString; +import static com.github.tomakehurst.wiremock.client.WireMock.*; + +import java.io.IOException; +import java.io.InputStream; +import java.util.Scanner; + +import org.apache.http.HttpResponse; +import org.apache.http.client.methods.HttpGet; +import org.apache.http.client.methods.HttpPost; +import org.apache.http.entity.StringEntity; +import org.apache.http.impl.client.CloseableHttpClient; +import org.apache.http.impl.client.HttpClients; + +import com.github.tomakehurst.wiremock.WireMockServer; + +import cucumber.api.java.en.Then; +import cucumber.api.java.en.When; + +public class StepDefinition { + InputStream jsonInputStream = this.getClass().getClassLoader().getResourceAsStream("cucumber.json"); + String jsonString = new Scanner(jsonInputStream, "UTF-8").useDelimiter("\\Z").next(); + + WireMockServer wireMockServer = new WireMockServer(); + CloseableHttpClient httpClient = HttpClients.createDefault(); + + @When("^users upload data on a project$") + public void usersUploadDataOnAProject() throws IOException { + wireMockServer.start(); + + configureFor("localhost", 8080); + stubFor(post(urlEqualTo("/create")).withHeader("content-type", equalTo("application/json")).withRequestBody(containing("testing-framework")).willReturn(aResponse().withStatus(200))); + + HttpPost request = new HttpPost("http://localhost:8080/create"); + StringEntity entity = new StringEntity(jsonString); + request.addHeader("content-type", "application/json"); + request.setEntity(entity); + HttpResponse response = httpClient.execute(request); + + assertEquals(200, response.getStatusLine().getStatusCode()); + verify(postRequestedFor(urlEqualTo("/create")).withHeader("content-type", equalTo("application/json"))); + + wireMockServer.stop(); + } + + @When("^users want to get information on the (.+) project$") + public void usersGetInformationOnAProject(String projectName) throws IOException { + wireMockServer.start(); + + configureFor("localhost", 8080); + stubFor(get(urlEqualTo("/projects/cucumber")).withHeader("accept", equalTo("application/json")).willReturn(aResponse().withBody(jsonString))); + + HttpGet request = new HttpGet("http://localhost:8080/projects/" + projectName.toLowerCase()); + request.addHeader("accept", "application/json"); + HttpResponse httpResponse = httpClient.execute(request); + String responseString = convertResponseToString(httpResponse); + + assertThat(responseString, containsString("\"testing-framework\": \"cucumber\"")); + assertThat(responseString, containsString("\"website\": \"cucumber.io\"")); + verify(getRequestedFor(urlEqualTo("/projects/cucumber")).withHeader("accept", equalTo("application/json"))); + + wireMockServer.stop(); + } + + @Then("^the server should handle it and return a success status$") + public void theServerShouldReturnASuccessStatus() { + } + + @Then("^the requested data is returned$") + public void theRequestedDataIsReturned() { + } + + private String convertResponseToString(HttpResponse response) throws IOException { + InputStream responseStream = response.getEntity().getContent(); + Scanner scanner = new Scanner(responseStream, "UTF-8"); + String responseString = scanner.useDelimiter("\\Z").next(); + scanner.close(); + return responseString; + } +} \ No newline at end of file From aadaba033182c848c448a78c3cfa5274af5b3855 Mon Sep 17 00:00:00 2001 From: nguyennamthai Date: Tue, 7 Jun 2016 18:44:55 +0700 Subject: [PATCH 017/108] Introduction to WireMock (#437) * initial commit for wiremock * introduction to wiremock * minor fixes * adds the wire_mock.json file --- rest-testing/pom.xml | 285 +++++++++--------- .../src/main/resources/wiremock_intro.json | 5 + .../wiremock/introduction/JUnitManaged.java | 127 ++++++++ .../introduction/ProgrammaticallyManaged.java | 52 ++++ 4 files changed, 330 insertions(+), 139 deletions(-) create mode 100644 rest-testing/src/main/resources/wiremock_intro.json create mode 100644 rest-testing/src/test/java/com/baeldung/rest/wiremock/introduction/JUnitManaged.java create mode 100644 rest-testing/src/test/java/com/baeldung/rest/wiremock/introduction/ProgrammaticallyManaged.java diff --git a/rest-testing/pom.xml b/rest-testing/pom.xml index e159af0b77..3bd7efb4d5 100644 --- a/rest-testing/pom.xml +++ b/rest-testing/pom.xml @@ -1,173 +1,180 @@ - - 4.0.0 - com.baeldung - rest-testing - 0.1-SNAPSHOT + + 4.0.0 + com.baeldung + rest-testing + 0.1-SNAPSHOT - rest-testing + rest-testing - + - + - - com.google.guava - guava - ${guava.version} - + + com.google.guava + guava + ${guava.version} + - - commons-io - commons-io - 2.4 - + + commons-io + commons-io + 2.4 + - - org.apache.commons - commons-lang3 - ${commons-lang3.version} - + + org.apache.commons + commons-lang3 + ${commons-lang3.version} + - + - - org.apache.httpcomponents - httpclient - ${httpclient.version} - - - org.apache.httpcomponents - httpcore - ${httpcore.version} - + + org.apache.httpcomponents + httpclient + ${httpclient.version} + + + org.apache.httpcomponents + httpcore + ${httpcore.version} + - + - - com.fasterxml.jackson.core - jackson-databind - ${jackson.version} - + + com.fasterxml.jackson.core + jackson-databind + ${jackson.version} + - + - - org.slf4j - slf4j-api - ${org.slf4j.version} - - - ch.qos.logback - logback-classic - ${logback.version} - - - - org.slf4j - jcl-over-slf4j - ${org.slf4j.version} - runtime - - - org.slf4j - log4j-over-slf4j - ${org.slf4j.version} - + + org.slf4j + slf4j-api + ${org.slf4j.version} + + + ch.qos.logback + logback-classic + ${logback.version} + + + + org.slf4j + jcl-over-slf4j + ${org.slf4j.version} + runtime + + + org.slf4j + log4j-over-slf4j + ${org.slf4j.version} + - + - - junit - junit - ${junit.version} - test - + + junit + junit + ${junit.version} + test + - - org.hamcrest - hamcrest-core - ${org.hamcrest.version} - test - - - org.hamcrest - hamcrest-library - ${org.hamcrest.version} - test - + + org.hamcrest + hamcrest-core + ${org.hamcrest.version} + test + + + org.hamcrest + hamcrest-library + ${org.hamcrest.version} + test + - - org.mockito - mockito-core - ${mockito.version} - test - + + org.mockito + mockito-core + ${mockito.version} + test + + + com.github.tomakehurst + wiremock + 1.58 + test + - + - - rest-testing - - - src/main/resources - true - - + + rest-testing + + + src/main/resources + true + + - + - - org.apache.maven.plugins - maven-compiler-plugin - ${maven-compiler-plugin.version} - - 1.8 - 1.8 - - + + org.apache.maven.plugins + maven-compiler-plugin + ${maven-compiler-plugin.version} + + 1.8 + 1.8 + + - - org.apache.maven.plugins - maven-surefire-plugin - ${maven-surefire-plugin.version} - + + org.apache.maven.plugins + maven-surefire-plugin + ${maven-surefire-plugin.version} + - + - + - - - 2.7.2 + + + 2.7.2 - - 1.7.13 - 1.1.3 + + 1.7.13 + 1.1.3 - - 5.1.3.Final + + 5.1.3.Final - - 19.0 - 3.4 + + 19.0 + 3.4 - - 1.3 - 4.12 - 1.10.19 + + 1.3 + 4.12 + 1.10.19 - 4.4.1 - 4.5 + 4.4.1 + 4.5 - 2.9.0 + 2.9.0 - - 3.5.1 - 2.6 - 2.19.1 - 2.7 - 1.4.18 + + 3.5.1 + 2.6 + 2.19.1 + 2.7 + 1.4.18 - + \ No newline at end of file diff --git a/rest-testing/src/main/resources/wiremock_intro.json b/rest-testing/src/main/resources/wiremock_intro.json new file mode 100644 index 0000000000..ece2d35907 --- /dev/null +++ b/rest-testing/src/main/resources/wiremock_intro.json @@ -0,0 +1,5 @@ +{ + "testing-library": "WireMock", + "creator": "Tom Akehurst", + "website": "wiremock.org" +} \ No newline at end of file diff --git a/rest-testing/src/test/java/com/baeldung/rest/wiremock/introduction/JUnitManaged.java b/rest-testing/src/test/java/com/baeldung/rest/wiremock/introduction/JUnitManaged.java new file mode 100644 index 0000000000..f6a46256ac --- /dev/null +++ b/rest-testing/src/test/java/com/baeldung/rest/wiremock/introduction/JUnitManaged.java @@ -0,0 +1,127 @@ +package com.baeldung.rest.wiremock.introduction; + +import static com.github.tomakehurst.wiremock.client.WireMock.aResponse; +import static com.github.tomakehurst.wiremock.client.WireMock.equalTo; +import static com.github.tomakehurst.wiremock.client.WireMock.get; +import static com.github.tomakehurst.wiremock.client.WireMock.getRequestedFor; +import static com.github.tomakehurst.wiremock.client.WireMock.post; +import static com.github.tomakehurst.wiremock.client.WireMock.postRequestedFor; +import static com.github.tomakehurst.wiremock.client.WireMock.stubFor; +import static com.github.tomakehurst.wiremock.client.WireMock.urlEqualTo; +import static com.github.tomakehurst.wiremock.client.WireMock.urlPathEqualTo; +import static com.github.tomakehurst.wiremock.client.WireMock.urlPathMatching; +import static com.github.tomakehurst.wiremock.client.WireMock.matching; +import static com.github.tomakehurst.wiremock.client.WireMock.containing; +import static com.github.tomakehurst.wiremock.client.WireMock.verify; +import static org.junit.Assert.assertEquals; + +import java.io.IOException; +import java.io.InputStream; +import java.util.Scanner; + +import org.apache.http.HttpResponse; +import org.apache.http.client.methods.HttpGet; +import org.apache.http.client.methods.HttpPost; +import org.apache.http.entity.StringEntity; +import org.apache.http.impl.client.CloseableHttpClient; +import org.apache.http.impl.client.HttpClients; +import org.junit.Rule; +import org.junit.Test; + +import com.github.tomakehurst.wiremock.junit.WireMockRule; + +public class JUnitManaged { + @Rule + public WireMockRule wireMockRule = new WireMockRule(); + + @Test + public void givenJUnitManagedServer_whenMatchingURL_thenCorrect() throws IOException { + stubFor(get(urlPathMatching("/baeldung/.*")).willReturn(aResponse().withStatus(200).withHeader("Content-Type", "application/json").withBody("\"testing-library\": \"WireMock\""))); + + CloseableHttpClient httpClient = HttpClients.createDefault(); + HttpGet request = new HttpGet("http://localhost:8080/baeldung/wiremock"); + HttpResponse httpResponse = httpClient.execute(request); + String stringResponse = convertHttpResponseToString(httpResponse); + + verify(getRequestedFor(urlEqualTo("/baeldung/wiremock"))); + assertEquals(200, httpResponse.getStatusLine().getStatusCode()); + assertEquals("application/json", httpResponse.getFirstHeader("Content-Type").getValue()); + assertEquals("\"testing-library\": \"WireMock\"", stringResponse); + } + + @Test + public void givenJUnitManagedServer_whenMatchingHeaders_thenCorrect() throws IOException { + stubFor(get(urlPathEqualTo("/baeldung/wiremock")).withHeader("Accept", matching("text/.*")).willReturn(aResponse().withStatus(503).withHeader("Content-Type", "text/html").withBody("!!! Service Unavailable !!!"))); + + CloseableHttpClient httpClient = HttpClients.createDefault(); + HttpGet request = new HttpGet("http://localhost:8080/baeldung/wiremock"); + request.addHeader("Accept", "text/html"); + HttpResponse httpResponse = httpClient.execute(request); + String stringResponse = convertHttpResponseToString(httpResponse); + + verify(getRequestedFor(urlEqualTo("/baeldung/wiremock"))); + assertEquals(503, httpResponse.getStatusLine().getStatusCode()); + assertEquals("text/html", httpResponse.getFirstHeader("Content-Type").getValue()); + assertEquals("!!! Service Unavailable !!!", stringResponse); + } + + @Test + public void givenJUnitManagedServer_whenMatchingBody_thenCorrect() throws IOException { + stubFor(post(urlEqualTo("/baeldung/wiremock")).withHeader("Content-Type", equalTo("application/json")).withRequestBody(containing("\"testing-library\": \"WireMock\"")).withRequestBody(containing("\"creator\": \"Tom Akehurst\"")) + .withRequestBody(containing("\"website\": \"wiremock.org\"")).willReturn(aResponse().withStatus(200))); + + InputStream jsonInputStream = this.getClass().getClassLoader().getResourceAsStream("wiremock_intro.json"); + String jsonString = convertInputStreamToString(jsonInputStream); + StringEntity entity = new StringEntity(jsonString); + + CloseableHttpClient httpClient = HttpClients.createDefault(); + HttpPost request = new HttpPost("http://localhost:8080/baeldung/wiremock"); + request.addHeader("Content-Type", "application/json"); + request.setEntity(entity); + HttpResponse response = httpClient.execute(request); + + verify(postRequestedFor(urlEqualTo("/baeldung/wiremock")).withHeader("Content-Type", equalTo("application/json"))); + assertEquals(200, response.getStatusLine().getStatusCode()); + } + + @Test + public void givenJUnitManagedServer_whenNotUsingPriority_thenCorrect() throws IOException { + stubFor(get(urlPathMatching("/baeldung/.*")).willReturn(aResponse().withStatus(200))); + stubFor(get(urlPathEqualTo("/baeldung/wiremock")).withHeader("Accept", matching("text/.*")).willReturn(aResponse().withStatus(503))); + + HttpResponse httpResponse = generateClientAndReceiveResponseForPriorityTests(); + + verify(getRequestedFor(urlEqualTo("/baeldung/wiremock"))); + assertEquals(503, httpResponse.getStatusLine().getStatusCode()); + } + + @Test + public void givenJUnitManagedServer_whenUsingPriority_thenCorrect() throws IOException { + stubFor(get(urlPathMatching("/baeldung/.*")).atPriority(1).willReturn(aResponse().withStatus(200))); + stubFor(get(urlPathEqualTo("/baeldung/wiremock")).atPriority(2).withHeader("Accept", matching("text/.*")).willReturn(aResponse().withStatus(503))); + + HttpResponse httpResponse = generateClientAndReceiveResponseForPriorityTests(); + + verify(getRequestedFor(urlEqualTo("/baeldung/wiremock"))); + assertEquals(200, httpResponse.getStatusLine().getStatusCode()); + } + + private String convertHttpResponseToString(HttpResponse httpResponse) throws IOException { + InputStream inputStream = httpResponse.getEntity().getContent(); + return convertInputStreamToString(inputStream); + } + + private String convertInputStreamToString(InputStream inputStream) { + Scanner scanner = new Scanner(inputStream, "UTF-8"); + String string = scanner.useDelimiter("\\Z").next(); + scanner.close(); + return string; + } + + private HttpResponse generateClientAndReceiveResponseForPriorityTests() throws IOException { + CloseableHttpClient httpClient = HttpClients.createDefault(); + HttpGet request = new HttpGet("http://localhost:8080/baeldung/wiremock"); + request.addHeader("Accept", "text/xml"); + return httpClient.execute(request); + } +} \ No newline at end of file diff --git a/rest-testing/src/test/java/com/baeldung/rest/wiremock/introduction/ProgrammaticallyManaged.java b/rest-testing/src/test/java/com/baeldung/rest/wiremock/introduction/ProgrammaticallyManaged.java new file mode 100644 index 0000000000..34b445ac0f --- /dev/null +++ b/rest-testing/src/test/java/com/baeldung/rest/wiremock/introduction/ProgrammaticallyManaged.java @@ -0,0 +1,52 @@ +package com.baeldung.rest.wiremock.introduction; + +import static com.github.tomakehurst.wiremock.client.WireMock.aResponse; +import static com.github.tomakehurst.wiremock.client.WireMock.configureFor; +import static com.github.tomakehurst.wiremock.client.WireMock.get; +import static com.github.tomakehurst.wiremock.client.WireMock.getRequestedFor; +import static com.github.tomakehurst.wiremock.client.WireMock.stubFor; +import static com.github.tomakehurst.wiremock.client.WireMock.urlEqualTo; +import static com.github.tomakehurst.wiremock.client.WireMock.verify; +import static org.junit.Assert.assertEquals; + +import java.io.IOException; +import java.io.InputStream; +import java.util.Scanner; + +import org.apache.http.HttpResponse; +import org.apache.http.client.methods.HttpGet; +import org.apache.http.impl.client.CloseableHttpClient; +import org.apache.http.impl.client.HttpClients; +import org.junit.Test; + +import com.github.tomakehurst.wiremock.WireMockServer; + +public class ProgrammaticallyManaged { + WireMockServer wireMockServer = new WireMockServer(); + CloseableHttpClient httpClient = HttpClients.createDefault(); + + @Test + public void givenProgrammaticallyManagedServer_whenUsingSimpleStubbing_thenCorrect() throws IOException { + wireMockServer.start(); + + configureFor("localhost", 8080); + stubFor(get(urlEqualTo("/baeldung")).willReturn(aResponse().withBody("Welcome to Baeldung!"))); + + HttpGet request = new HttpGet("http://localhost:8080/baeldung"); + HttpResponse httpResponse = httpClient.execute(request); + String stringResponse = convertResponseToString(httpResponse); + + verify(getRequestedFor(urlEqualTo("/baeldung"))); + assertEquals("Welcome to Baeldung!", stringResponse); + + wireMockServer.stop(); + } + + private String convertResponseToString(HttpResponse response) throws IOException { + InputStream responseStream = response.getEntity().getContent(); + Scanner scanner = new Scanner(responseStream, "UTF-8"); + String stringResponse = scanner.useDelimiter("\\Z").next(); + scanner.close(); + return stringResponse; + } +} \ No newline at end of file From 04c942f5d0b73cb7961bcbc4b606bd2ce6b3a3d5 Mon Sep 17 00:00:00 2001 From: nguyennamthai Date: Tue, 7 Jun 2016 22:21:06 +0700 Subject: [PATCH 018/108] Spring Boot Support for jOOQ (#438) * initial commit * revision of spring boot support for jooq * initial commit for spring boot support for jooq --- jooq-spring/pom.xml | 20 +- .../information_schema/InformationSchema.java | 113 +++ .../db/information_schema/Keys.java | 42 + .../db/information_schema/Tables.java | 196 ++++ .../information_schema/tables/Catalogs.java | 87 ++ .../information_schema/tables/Collations.java | 92 ++ .../tables/ColumnPrivileges.java | 122 +++ .../db/information_schema/tables/Columns.java | 197 ++++ .../information_schema/tables/Constants.java | 117 +++ .../tables/Constraints.java | 147 +++ .../tables/CrossReferences.java | 152 +++ .../db/information_schema/tables/Domains.java | 152 +++ .../tables/FunctionAliases.java | 142 +++ .../tables/FunctionColumns.java | 167 ++++ .../db/information_schema/tables/Help.java | 107 ++ .../db/information_schema/tables/InDoubt.java | 92 ++ .../db/information_schema/tables/Indexes.java | 187 ++++ .../db/information_schema/tables/Locks.java | 102 ++ .../tables/QueryStatistics.java | 142 +++ .../db/information_schema/tables/Rights.java | 117 +++ .../db/information_schema/tables/Roles.java | 97 ++ .../information_schema/tables/Schemata.java | 122 +++ .../information_schema/tables/Sequences.java | 142 +++ .../tables/SessionState.java | 92 ++ .../information_schema/tables/Sessions.java | 112 +++ .../information_schema/tables/Settings.java | 92 ++ .../tables/TablePrivileges.java | 117 +++ .../information_schema/tables/TableTypes.java | 87 ++ .../db/information_schema/tables/Tables.java | 142 +++ .../information_schema/tables/Triggers.java | 152 +++ .../information_schema/tables/TypeInfo.java | 152 +++ .../db/information_schema/tables/Users.java | 102 ++ .../db/information_schema/tables/Views.java | 127 +++ .../tables/records/CatalogsRecord.java | 119 +++ .../tables/records/CollationsRecord.java | 160 +++ .../records/ColumnPrivilegesRecord.java | 406 ++++++++ .../tables/records/ColumnsRecord.java | 392 ++++++++ .../tables/records/ConstantsRecord.java | 365 +++++++ .../tables/records/ConstraintsRecord.java | 611 ++++++++++++ .../tables/records/CrossReferencesRecord.java | 652 ++++++++++++ .../tables/records/DomainsRecord.java | 652 ++++++++++++ .../tables/records/FunctionAliasesRecord.java | 570 +++++++++++ .../tables/records/FunctionColumnsRecord.java | 775 +++++++++++++++ .../tables/records/HelpRecord.java | 283 ++++++ .../tables/records/InDoubtRecord.java | 160 +++ .../tables/records/IndexesRecord.java | 939 ++++++++++++++++++ .../tables/records/LocksRecord.java | 242 +++++ .../tables/records/QueryStatisticsRecord.java | 570 +++++++++++ .../tables/records/RightsRecord.java | 365 +++++++ .../tables/records/RolesRecord.java | 201 ++++ .../tables/records/SchemataRecord.java | 406 ++++++++ .../tables/records/SequencesRecord.java | 570 +++++++++++ .../tables/records/SessionStateRecord.java | 160 +++ .../tables/records/SessionsRecord.java | 324 ++++++ .../tables/records/SettingsRecord.java | 160 +++ .../tables/records/TablePrivilegesRecord.java | 365 +++++++ .../tables/records/TableTypesRecord.java | 119 +++ .../tables/records/TablesRecord.java | 570 +++++++++++ .../tables/records/TriggersRecord.java | 652 ++++++++++++ .../tables/records/TypeInfoRecord.java | 652 ++++++++++++ .../tables/records/UsersRecord.java | 242 +++++ .../tables/records/ViewsRecord.java | 447 +++++++++ .../jooq/introduction/db/public_/Keys.java | 69 ++ .../jooq/introduction/db/public_/Public.java | 61 ++ .../jooq/introduction/db/public_/Tables.java | 41 + .../db/public_/tables/Author.java | 118 +++ .../db/public_/tables/AuthorBook.java | 122 +++ .../introduction/db/public_/tables/Book.java | 113 +++ .../tables/records/AuthorBookRecord.java | 172 ++++ .../public_/tables/records/AuthorRecord.java | 214 ++++ .../db/public_/tables/records/BookRecord.java | 173 ++++ .../src/main/resources/application.properties | 3 + .../baeldung/jooq/springboot/Application.java | 68 ++ .../jooq/springboot/SpringBootTest.java | 85 ++ 74 files changed, 17396 insertions(+), 1 deletion(-) create mode 100644 jooq-spring/src/main/java/com/baeldung/jooq/introduction/db/information_schema/InformationSchema.java create mode 100644 jooq-spring/src/main/java/com/baeldung/jooq/introduction/db/information_schema/Keys.java create mode 100644 jooq-spring/src/main/java/com/baeldung/jooq/introduction/db/information_schema/Tables.java create mode 100644 jooq-spring/src/main/java/com/baeldung/jooq/introduction/db/information_schema/tables/Catalogs.java create mode 100644 jooq-spring/src/main/java/com/baeldung/jooq/introduction/db/information_schema/tables/Collations.java create mode 100644 jooq-spring/src/main/java/com/baeldung/jooq/introduction/db/information_schema/tables/ColumnPrivileges.java create mode 100644 jooq-spring/src/main/java/com/baeldung/jooq/introduction/db/information_schema/tables/Columns.java create mode 100644 jooq-spring/src/main/java/com/baeldung/jooq/introduction/db/information_schema/tables/Constants.java create mode 100644 jooq-spring/src/main/java/com/baeldung/jooq/introduction/db/information_schema/tables/Constraints.java create mode 100644 jooq-spring/src/main/java/com/baeldung/jooq/introduction/db/information_schema/tables/CrossReferences.java create mode 100644 jooq-spring/src/main/java/com/baeldung/jooq/introduction/db/information_schema/tables/Domains.java create mode 100644 jooq-spring/src/main/java/com/baeldung/jooq/introduction/db/information_schema/tables/FunctionAliases.java create mode 100644 jooq-spring/src/main/java/com/baeldung/jooq/introduction/db/information_schema/tables/FunctionColumns.java create mode 100644 jooq-spring/src/main/java/com/baeldung/jooq/introduction/db/information_schema/tables/Help.java create mode 100644 jooq-spring/src/main/java/com/baeldung/jooq/introduction/db/information_schema/tables/InDoubt.java create mode 100644 jooq-spring/src/main/java/com/baeldung/jooq/introduction/db/information_schema/tables/Indexes.java create mode 100644 jooq-spring/src/main/java/com/baeldung/jooq/introduction/db/information_schema/tables/Locks.java create mode 100644 jooq-spring/src/main/java/com/baeldung/jooq/introduction/db/information_schema/tables/QueryStatistics.java create mode 100644 jooq-spring/src/main/java/com/baeldung/jooq/introduction/db/information_schema/tables/Rights.java create mode 100644 jooq-spring/src/main/java/com/baeldung/jooq/introduction/db/information_schema/tables/Roles.java create mode 100644 jooq-spring/src/main/java/com/baeldung/jooq/introduction/db/information_schema/tables/Schemata.java create mode 100644 jooq-spring/src/main/java/com/baeldung/jooq/introduction/db/information_schema/tables/Sequences.java create mode 100644 jooq-spring/src/main/java/com/baeldung/jooq/introduction/db/information_schema/tables/SessionState.java create mode 100644 jooq-spring/src/main/java/com/baeldung/jooq/introduction/db/information_schema/tables/Sessions.java create mode 100644 jooq-spring/src/main/java/com/baeldung/jooq/introduction/db/information_schema/tables/Settings.java create mode 100644 jooq-spring/src/main/java/com/baeldung/jooq/introduction/db/information_schema/tables/TablePrivileges.java create mode 100644 jooq-spring/src/main/java/com/baeldung/jooq/introduction/db/information_schema/tables/TableTypes.java create mode 100644 jooq-spring/src/main/java/com/baeldung/jooq/introduction/db/information_schema/tables/Tables.java create mode 100644 jooq-spring/src/main/java/com/baeldung/jooq/introduction/db/information_schema/tables/Triggers.java create mode 100644 jooq-spring/src/main/java/com/baeldung/jooq/introduction/db/information_schema/tables/TypeInfo.java create mode 100644 jooq-spring/src/main/java/com/baeldung/jooq/introduction/db/information_schema/tables/Users.java create mode 100644 jooq-spring/src/main/java/com/baeldung/jooq/introduction/db/information_schema/tables/Views.java create mode 100644 jooq-spring/src/main/java/com/baeldung/jooq/introduction/db/information_schema/tables/records/CatalogsRecord.java create mode 100644 jooq-spring/src/main/java/com/baeldung/jooq/introduction/db/information_schema/tables/records/CollationsRecord.java create mode 100644 jooq-spring/src/main/java/com/baeldung/jooq/introduction/db/information_schema/tables/records/ColumnPrivilegesRecord.java create mode 100644 jooq-spring/src/main/java/com/baeldung/jooq/introduction/db/information_schema/tables/records/ColumnsRecord.java create mode 100644 jooq-spring/src/main/java/com/baeldung/jooq/introduction/db/information_schema/tables/records/ConstantsRecord.java create mode 100644 jooq-spring/src/main/java/com/baeldung/jooq/introduction/db/information_schema/tables/records/ConstraintsRecord.java create mode 100644 jooq-spring/src/main/java/com/baeldung/jooq/introduction/db/information_schema/tables/records/CrossReferencesRecord.java create mode 100644 jooq-spring/src/main/java/com/baeldung/jooq/introduction/db/information_schema/tables/records/DomainsRecord.java create mode 100644 jooq-spring/src/main/java/com/baeldung/jooq/introduction/db/information_schema/tables/records/FunctionAliasesRecord.java create mode 100644 jooq-spring/src/main/java/com/baeldung/jooq/introduction/db/information_schema/tables/records/FunctionColumnsRecord.java create mode 100644 jooq-spring/src/main/java/com/baeldung/jooq/introduction/db/information_schema/tables/records/HelpRecord.java create mode 100644 jooq-spring/src/main/java/com/baeldung/jooq/introduction/db/information_schema/tables/records/InDoubtRecord.java create mode 100644 jooq-spring/src/main/java/com/baeldung/jooq/introduction/db/information_schema/tables/records/IndexesRecord.java create mode 100644 jooq-spring/src/main/java/com/baeldung/jooq/introduction/db/information_schema/tables/records/LocksRecord.java create mode 100644 jooq-spring/src/main/java/com/baeldung/jooq/introduction/db/information_schema/tables/records/QueryStatisticsRecord.java create mode 100644 jooq-spring/src/main/java/com/baeldung/jooq/introduction/db/information_schema/tables/records/RightsRecord.java create mode 100644 jooq-spring/src/main/java/com/baeldung/jooq/introduction/db/information_schema/tables/records/RolesRecord.java create mode 100644 jooq-spring/src/main/java/com/baeldung/jooq/introduction/db/information_schema/tables/records/SchemataRecord.java create mode 100644 jooq-spring/src/main/java/com/baeldung/jooq/introduction/db/information_schema/tables/records/SequencesRecord.java create mode 100644 jooq-spring/src/main/java/com/baeldung/jooq/introduction/db/information_schema/tables/records/SessionStateRecord.java create mode 100644 jooq-spring/src/main/java/com/baeldung/jooq/introduction/db/information_schema/tables/records/SessionsRecord.java create mode 100644 jooq-spring/src/main/java/com/baeldung/jooq/introduction/db/information_schema/tables/records/SettingsRecord.java create mode 100644 jooq-spring/src/main/java/com/baeldung/jooq/introduction/db/information_schema/tables/records/TablePrivilegesRecord.java create mode 100644 jooq-spring/src/main/java/com/baeldung/jooq/introduction/db/information_schema/tables/records/TableTypesRecord.java create mode 100644 jooq-spring/src/main/java/com/baeldung/jooq/introduction/db/information_schema/tables/records/TablesRecord.java create mode 100644 jooq-spring/src/main/java/com/baeldung/jooq/introduction/db/information_schema/tables/records/TriggersRecord.java create mode 100644 jooq-spring/src/main/java/com/baeldung/jooq/introduction/db/information_schema/tables/records/TypeInfoRecord.java create mode 100644 jooq-spring/src/main/java/com/baeldung/jooq/introduction/db/information_schema/tables/records/UsersRecord.java create mode 100644 jooq-spring/src/main/java/com/baeldung/jooq/introduction/db/information_schema/tables/records/ViewsRecord.java create mode 100644 jooq-spring/src/main/java/com/baeldung/jooq/introduction/db/public_/Keys.java create mode 100644 jooq-spring/src/main/java/com/baeldung/jooq/introduction/db/public_/Public.java create mode 100644 jooq-spring/src/main/java/com/baeldung/jooq/introduction/db/public_/Tables.java create mode 100644 jooq-spring/src/main/java/com/baeldung/jooq/introduction/db/public_/tables/Author.java create mode 100644 jooq-spring/src/main/java/com/baeldung/jooq/introduction/db/public_/tables/AuthorBook.java create mode 100644 jooq-spring/src/main/java/com/baeldung/jooq/introduction/db/public_/tables/Book.java create mode 100644 jooq-spring/src/main/java/com/baeldung/jooq/introduction/db/public_/tables/records/AuthorBookRecord.java create mode 100644 jooq-spring/src/main/java/com/baeldung/jooq/introduction/db/public_/tables/records/AuthorRecord.java create mode 100644 jooq-spring/src/main/java/com/baeldung/jooq/introduction/db/public_/tables/records/BookRecord.java create mode 100644 jooq-spring/src/main/resources/application.properties create mode 100644 jooq-spring/src/test/java/com/baeldung/jooq/springboot/Application.java create mode 100644 jooq-spring/src/test/java/com/baeldung/jooq/springboot/SpringBootTest.java diff --git a/jooq-spring/pom.xml b/jooq-spring/pom.xml index 76198c4993..7a3ec0ac24 100644 --- a/jooq-spring/pom.xml +++ b/jooq-spring/pom.xml @@ -14,6 +14,19 @@ 4.12 + + + + + org.springframework.boot + spring-boot-dependencies + 1.3.3.RELEASE + pom + import + + + + @@ -40,6 +53,11 @@ spring-jdbc ${org.springframework.version} + + org.springframework.boot + spring-boot-starter-jooq + 1.3.3.RELEASE + @@ -67,7 +85,7 @@ spring-test ${org.springframework.version} test - + diff --git a/jooq-spring/src/main/java/com/baeldung/jooq/introduction/db/information_schema/InformationSchema.java b/jooq-spring/src/main/java/com/baeldung/jooq/introduction/db/information_schema/InformationSchema.java new file mode 100644 index 0000000000..94138a9ebe --- /dev/null +++ b/jooq-spring/src/main/java/com/baeldung/jooq/introduction/db/information_schema/InformationSchema.java @@ -0,0 +1,113 @@ +/** + * This class is generated by jOOQ + */ +package com.baeldung.jooq.introduction.db.information_schema; + + +import com.baeldung.jooq.introduction.db.information_schema.tables.Catalogs; +import com.baeldung.jooq.introduction.db.information_schema.tables.Collations; +import com.baeldung.jooq.introduction.db.information_schema.tables.ColumnPrivileges; +import com.baeldung.jooq.introduction.db.information_schema.tables.Columns; +import com.baeldung.jooq.introduction.db.information_schema.tables.Constants; +import com.baeldung.jooq.introduction.db.information_schema.tables.Constraints; +import com.baeldung.jooq.introduction.db.information_schema.tables.CrossReferences; +import com.baeldung.jooq.introduction.db.information_schema.tables.Domains; +import com.baeldung.jooq.introduction.db.information_schema.tables.FunctionAliases; +import com.baeldung.jooq.introduction.db.information_schema.tables.FunctionColumns; +import com.baeldung.jooq.introduction.db.information_schema.tables.Help; +import com.baeldung.jooq.introduction.db.information_schema.tables.InDoubt; +import com.baeldung.jooq.introduction.db.information_schema.tables.Indexes; +import com.baeldung.jooq.introduction.db.information_schema.tables.Locks; +import com.baeldung.jooq.introduction.db.information_schema.tables.QueryStatistics; +import com.baeldung.jooq.introduction.db.information_schema.tables.Rights; +import com.baeldung.jooq.introduction.db.information_schema.tables.Roles; +import com.baeldung.jooq.introduction.db.information_schema.tables.Schemata; +import com.baeldung.jooq.introduction.db.information_schema.tables.Sequences; +import com.baeldung.jooq.introduction.db.information_schema.tables.SessionState; +import com.baeldung.jooq.introduction.db.information_schema.tables.Sessions; +import com.baeldung.jooq.introduction.db.information_schema.tables.Settings; +import com.baeldung.jooq.introduction.db.information_schema.tables.TablePrivileges; +import com.baeldung.jooq.introduction.db.information_schema.tables.TableTypes; +import com.baeldung.jooq.introduction.db.information_schema.tables.Tables; +import com.baeldung.jooq.introduction.db.information_schema.tables.Triggers; +import com.baeldung.jooq.introduction.db.information_schema.tables.TypeInfo; +import com.baeldung.jooq.introduction.db.information_schema.tables.Users; +import com.baeldung.jooq.introduction.db.information_schema.tables.Views; + +import java.util.ArrayList; +import java.util.Arrays; +import java.util.List; + +import javax.annotation.Generated; + +import org.jooq.Table; +import org.jooq.impl.SchemaImpl; + + +/** + * This class is generated by jOOQ. + */ +@Generated( + value = { + "http://www.jooq.org", + "jOOQ version:3.7.3" + }, + comments = "This class is generated by jOOQ" +) +@SuppressWarnings({ "all", "unchecked", "rawtypes" }) +public class InformationSchema extends SchemaImpl { + + private static final long serialVersionUID = 436617961; + + /** + * The reference instance of INFORMATION_SCHEMA + */ + public static final InformationSchema INFORMATION_SCHEMA = new InformationSchema(); + + /** + * No further instances allowed + */ + private InformationSchema() { + super("INFORMATION_SCHEMA"); + } + + @Override + public final List> getTables() { + List result = new ArrayList(); + result.addAll(getTables0()); + return result; + } + + private final List> getTables0() { + return Arrays.>asList( + QueryStatistics.QUERY_STATISTICS, + SessionState.SESSION_STATE, + Locks.LOCKS, + Sessions.SESSIONS, + Triggers.TRIGGERS, + Domains.DOMAINS, + Constants.CONSTANTS, + FunctionColumns.FUNCTION_COLUMNS, + Constraints.CONSTRAINTS, + CrossReferences.CROSS_REFERENCES, + InDoubt.IN_DOUBT, + Views.VIEWS, + Collations.COLLATIONS, + ColumnPrivileges.COLUMN_PRIVILEGES, + TablePrivileges.TABLE_PRIVILEGES, + Schemata.SCHEMATA, + FunctionAliases.FUNCTION_ALIASES, + Rights.RIGHTS, + Roles.ROLES, + Users.USERS, + Sequences.SEQUENCES, + Help.HELP, + Settings.SETTINGS, + Catalogs.CATALOGS, + TypeInfo.TYPE_INFO, + TableTypes.TABLE_TYPES, + Indexes.INDEXES, + Columns.COLUMNS, + Tables.TABLES); + } +} diff --git a/jooq-spring/src/main/java/com/baeldung/jooq/introduction/db/information_schema/Keys.java b/jooq-spring/src/main/java/com/baeldung/jooq/introduction/db/information_schema/Keys.java new file mode 100644 index 0000000000..87a1a03e55 --- /dev/null +++ b/jooq-spring/src/main/java/com/baeldung/jooq/introduction/db/information_schema/Keys.java @@ -0,0 +1,42 @@ +/** + * This class is generated by jOOQ + */ +package com.baeldung.jooq.introduction.db.information_schema; + + +import javax.annotation.Generated; + + +/** + * A class modelling foreign key relationships between tables of the INFORMATION_SCHEMA + * schema + */ +@Generated( + value = { + "http://www.jooq.org", + "jOOQ version:3.7.3" + }, + comments = "This class is generated by jOOQ" +) +@SuppressWarnings({ "all", "unchecked", "rawtypes" }) +public class Keys { + + // ------------------------------------------------------------------------- + // IDENTITY definitions + // ------------------------------------------------------------------------- + + + // ------------------------------------------------------------------------- + // UNIQUE and PRIMARY KEY definitions + // ------------------------------------------------------------------------- + + + // ------------------------------------------------------------------------- + // FOREIGN KEY definitions + // ------------------------------------------------------------------------- + + + // ------------------------------------------------------------------------- + // [#1459] distribute members to avoid static initialisers > 64kb + // ------------------------------------------------------------------------- +} diff --git a/jooq-spring/src/main/java/com/baeldung/jooq/introduction/db/information_schema/Tables.java b/jooq-spring/src/main/java/com/baeldung/jooq/introduction/db/information_schema/Tables.java new file mode 100644 index 0000000000..9d66776232 --- /dev/null +++ b/jooq-spring/src/main/java/com/baeldung/jooq/introduction/db/information_schema/Tables.java @@ -0,0 +1,196 @@ +/** + * This class is generated by jOOQ + */ +package com.baeldung.jooq.introduction.db.information_schema; + + +import com.baeldung.jooq.introduction.db.information_schema.tables.Catalogs; +import com.baeldung.jooq.introduction.db.information_schema.tables.Collations; +import com.baeldung.jooq.introduction.db.information_schema.tables.ColumnPrivileges; +import com.baeldung.jooq.introduction.db.information_schema.tables.Columns; +import com.baeldung.jooq.introduction.db.information_schema.tables.Constants; +import com.baeldung.jooq.introduction.db.information_schema.tables.Constraints; +import com.baeldung.jooq.introduction.db.information_schema.tables.CrossReferences; +import com.baeldung.jooq.introduction.db.information_schema.tables.Domains; +import com.baeldung.jooq.introduction.db.information_schema.tables.FunctionAliases; +import com.baeldung.jooq.introduction.db.information_schema.tables.FunctionColumns; +import com.baeldung.jooq.introduction.db.information_schema.tables.Help; +import com.baeldung.jooq.introduction.db.information_schema.tables.InDoubt; +import com.baeldung.jooq.introduction.db.information_schema.tables.Indexes; +import com.baeldung.jooq.introduction.db.information_schema.tables.Locks; +import com.baeldung.jooq.introduction.db.information_schema.tables.QueryStatistics; +import com.baeldung.jooq.introduction.db.information_schema.tables.Rights; +import com.baeldung.jooq.introduction.db.information_schema.tables.Roles; +import com.baeldung.jooq.introduction.db.information_schema.tables.Schemata; +import com.baeldung.jooq.introduction.db.information_schema.tables.Sequences; +import com.baeldung.jooq.introduction.db.information_schema.tables.SessionState; +import com.baeldung.jooq.introduction.db.information_schema.tables.Sessions; +import com.baeldung.jooq.introduction.db.information_schema.tables.Settings; +import com.baeldung.jooq.introduction.db.information_schema.tables.TablePrivileges; +import com.baeldung.jooq.introduction.db.information_schema.tables.TableTypes; +import com.baeldung.jooq.introduction.db.information_schema.tables.Triggers; +import com.baeldung.jooq.introduction.db.information_schema.tables.TypeInfo; +import com.baeldung.jooq.introduction.db.information_schema.tables.Users; +import com.baeldung.jooq.introduction.db.information_schema.tables.Views; + +import javax.annotation.Generated; + + +/** + * Convenience access to all tables in INFORMATION_SCHEMA + */ +@Generated( + value = { + "http://www.jooq.org", + "jOOQ version:3.7.3" + }, + comments = "This class is generated by jOOQ" +) +@SuppressWarnings({ "all", "unchecked", "rawtypes" }) +public class Tables { + + /** + * The table INFORMATION_SCHEMA.QUERY_STATISTICS + */ + public static final QueryStatistics QUERY_STATISTICS = com.baeldung.jooq.introduction.db.information_schema.tables.QueryStatistics.QUERY_STATISTICS; + + /** + * The table INFORMATION_SCHEMA.SESSION_STATE + */ + public static final SessionState SESSION_STATE = com.baeldung.jooq.introduction.db.information_schema.tables.SessionState.SESSION_STATE; + + /** + * The table INFORMATION_SCHEMA.LOCKS + */ + public static final Locks LOCKS = com.baeldung.jooq.introduction.db.information_schema.tables.Locks.LOCKS; + + /** + * The table INFORMATION_SCHEMA.SESSIONS + */ + public static final Sessions SESSIONS = com.baeldung.jooq.introduction.db.information_schema.tables.Sessions.SESSIONS; + + /** + * The table INFORMATION_SCHEMA.TRIGGERS + */ + public static final Triggers TRIGGERS = com.baeldung.jooq.introduction.db.information_schema.tables.Triggers.TRIGGERS; + + /** + * The table INFORMATION_SCHEMA.DOMAINS + */ + public static final Domains DOMAINS = com.baeldung.jooq.introduction.db.information_schema.tables.Domains.DOMAINS; + + /** + * The table INFORMATION_SCHEMA.CONSTANTS + */ + public static final Constants CONSTANTS = com.baeldung.jooq.introduction.db.information_schema.tables.Constants.CONSTANTS; + + /** + * The table INFORMATION_SCHEMA.FUNCTION_COLUMNS + */ + public static final FunctionColumns FUNCTION_COLUMNS = com.baeldung.jooq.introduction.db.information_schema.tables.FunctionColumns.FUNCTION_COLUMNS; + + /** + * The table INFORMATION_SCHEMA.CONSTRAINTS + */ + public static final Constraints CONSTRAINTS = com.baeldung.jooq.introduction.db.information_schema.tables.Constraints.CONSTRAINTS; + + /** + * The table INFORMATION_SCHEMA.CROSS_REFERENCES + */ + public static final CrossReferences CROSS_REFERENCES = com.baeldung.jooq.introduction.db.information_schema.tables.CrossReferences.CROSS_REFERENCES; + + /** + * The table INFORMATION_SCHEMA.IN_DOUBT + */ + public static final InDoubt IN_DOUBT = com.baeldung.jooq.introduction.db.information_schema.tables.InDoubt.IN_DOUBT; + + /** + * The table INFORMATION_SCHEMA.VIEWS + */ + public static final Views VIEWS = com.baeldung.jooq.introduction.db.information_schema.tables.Views.VIEWS; + + /** + * The table INFORMATION_SCHEMA.COLLATIONS + */ + public static final Collations COLLATIONS = com.baeldung.jooq.introduction.db.information_schema.tables.Collations.COLLATIONS; + + /** + * The table INFORMATION_SCHEMA.COLUMN_PRIVILEGES + */ + public static final ColumnPrivileges COLUMN_PRIVILEGES = com.baeldung.jooq.introduction.db.information_schema.tables.ColumnPrivileges.COLUMN_PRIVILEGES; + + /** + * The table INFORMATION_SCHEMA.TABLE_PRIVILEGES + */ + public static final TablePrivileges TABLE_PRIVILEGES = com.baeldung.jooq.introduction.db.information_schema.tables.TablePrivileges.TABLE_PRIVILEGES; + + /** + * The table INFORMATION_SCHEMA.SCHEMATA + */ + public static final Schemata SCHEMATA = com.baeldung.jooq.introduction.db.information_schema.tables.Schemata.SCHEMATA; + + /** + * The table INFORMATION_SCHEMA.FUNCTION_ALIASES + */ + public static final FunctionAliases FUNCTION_ALIASES = com.baeldung.jooq.introduction.db.information_schema.tables.FunctionAliases.FUNCTION_ALIASES; + + /** + * The table INFORMATION_SCHEMA.RIGHTS + */ + public static final Rights RIGHTS = com.baeldung.jooq.introduction.db.information_schema.tables.Rights.RIGHTS; + + /** + * The table INFORMATION_SCHEMA.ROLES + */ + public static final Roles ROLES = com.baeldung.jooq.introduction.db.information_schema.tables.Roles.ROLES; + + /** + * The table INFORMATION_SCHEMA.USERS + */ + public static final Users USERS = com.baeldung.jooq.introduction.db.information_schema.tables.Users.USERS; + + /** + * The table INFORMATION_SCHEMA.SEQUENCES + */ + public static final Sequences SEQUENCES = com.baeldung.jooq.introduction.db.information_schema.tables.Sequences.SEQUENCES; + + /** + * The table INFORMATION_SCHEMA.HELP + */ + public static final Help HELP = com.baeldung.jooq.introduction.db.information_schema.tables.Help.HELP; + + /** + * The table INFORMATION_SCHEMA.SETTINGS + */ + public static final Settings SETTINGS = com.baeldung.jooq.introduction.db.information_schema.tables.Settings.SETTINGS; + + /** + * The table INFORMATION_SCHEMA.CATALOGS + */ + public static final Catalogs CATALOGS = com.baeldung.jooq.introduction.db.information_schema.tables.Catalogs.CATALOGS; + + /** + * The table INFORMATION_SCHEMA.TYPE_INFO + */ + public static final TypeInfo TYPE_INFO = com.baeldung.jooq.introduction.db.information_schema.tables.TypeInfo.TYPE_INFO; + + /** + * The table INFORMATION_SCHEMA.TABLE_TYPES + */ + public static final TableTypes TABLE_TYPES = com.baeldung.jooq.introduction.db.information_schema.tables.TableTypes.TABLE_TYPES; + + /** + * The table INFORMATION_SCHEMA.INDEXES + */ + public static final Indexes INDEXES = com.baeldung.jooq.introduction.db.information_schema.tables.Indexes.INDEXES; + + /** + * The table INFORMATION_SCHEMA.COLUMNS + */ + public static final Columns COLUMNS = com.baeldung.jooq.introduction.db.information_schema.tables.Columns.COLUMNS; + + /** + * The table INFORMATION_SCHEMA.TABLES + */ + public static final com.baeldung.jooq.introduction.db.information_schema.tables.Tables TABLES = com.baeldung.jooq.introduction.db.information_schema.tables.Tables.TABLES; +} diff --git a/jooq-spring/src/main/java/com/baeldung/jooq/introduction/db/information_schema/tables/Catalogs.java b/jooq-spring/src/main/java/com/baeldung/jooq/introduction/db/information_schema/tables/Catalogs.java new file mode 100644 index 0000000000..f7091cfbe4 --- /dev/null +++ b/jooq-spring/src/main/java/com/baeldung/jooq/introduction/db/information_schema/tables/Catalogs.java @@ -0,0 +1,87 @@ +/** + * This class is generated by jOOQ + */ +package com.baeldung.jooq.introduction.db.information_schema.tables; + + +import com.baeldung.jooq.introduction.db.information_schema.InformationSchema; +import com.baeldung.jooq.introduction.db.information_schema.tables.records.CatalogsRecord; + +import javax.annotation.Generated; + +import org.jooq.Field; +import org.jooq.Table; +import org.jooq.TableField; +import org.jooq.impl.TableImpl; + + +/** + * This class is generated by jOOQ. + */ +@Generated( + value = { + "http://www.jooq.org", + "jOOQ version:3.7.3" + }, + comments = "This class is generated by jOOQ" +) +@SuppressWarnings({ "all", "unchecked", "rawtypes" }) +public class Catalogs extends TableImpl { + + private static final long serialVersionUID = 1558896306; + + /** + * The reference instance of INFORMATION_SCHEMA.CATALOGS + */ + public static final Catalogs CATALOGS = new Catalogs(); + + /** + * The class holding records for this type + */ + @Override + public Class getRecordType() { + return CatalogsRecord.class; + } + + /** + * The column INFORMATION_SCHEMA.CATALOGS.CATALOG_NAME. + */ + public final TableField CATALOG_NAME = createField("CATALOG_NAME", org.jooq.impl.SQLDataType.VARCHAR.length(2147483647), this, ""); + + /** + * Create a INFORMATION_SCHEMA.CATALOGS table reference + */ + public Catalogs() { + this("CATALOGS", null); + } + + /** + * Create an aliased INFORMATION_SCHEMA.CATALOGS table reference + */ + public Catalogs(String alias) { + this(alias, CATALOGS); + } + + private Catalogs(String alias, Table aliased) { + this(alias, aliased, null); + } + + private Catalogs(String alias, Table aliased, Field[] parameters) { + super(alias, InformationSchema.INFORMATION_SCHEMA, aliased, parameters, ""); + } + + /** + * {@inheritDoc} + */ + @Override + public Catalogs as(String alias) { + return new Catalogs(alias, this); + } + + /** + * Rename this table + */ + public Catalogs rename(String name) { + return new Catalogs(name, null); + } +} diff --git a/jooq-spring/src/main/java/com/baeldung/jooq/introduction/db/information_schema/tables/Collations.java b/jooq-spring/src/main/java/com/baeldung/jooq/introduction/db/information_schema/tables/Collations.java new file mode 100644 index 0000000000..e16ed17605 --- /dev/null +++ b/jooq-spring/src/main/java/com/baeldung/jooq/introduction/db/information_schema/tables/Collations.java @@ -0,0 +1,92 @@ +/** + * This class is generated by jOOQ + */ +package com.baeldung.jooq.introduction.db.information_schema.tables; + + +import com.baeldung.jooq.introduction.db.information_schema.InformationSchema; +import com.baeldung.jooq.introduction.db.information_schema.tables.records.CollationsRecord; + +import javax.annotation.Generated; + +import org.jooq.Field; +import org.jooq.Table; +import org.jooq.TableField; +import org.jooq.impl.TableImpl; + + +/** + * This class is generated by jOOQ. + */ +@Generated( + value = { + "http://www.jooq.org", + "jOOQ version:3.7.3" + }, + comments = "This class is generated by jOOQ" +) +@SuppressWarnings({ "all", "unchecked", "rawtypes" }) +public class Collations extends TableImpl { + + private static final long serialVersionUID = 1978393146; + + /** + * The reference instance of INFORMATION_SCHEMA.COLLATIONS + */ + public static final Collations COLLATIONS = new Collations(); + + /** + * The class holding records for this type + */ + @Override + public Class getRecordType() { + return CollationsRecord.class; + } + + /** + * The column INFORMATION_SCHEMA.COLLATIONS.NAME. + */ + public final TableField NAME = createField("NAME", org.jooq.impl.SQLDataType.VARCHAR.length(2147483647), this, ""); + + /** + * The column INFORMATION_SCHEMA.COLLATIONS.KEY. + */ + public final TableField KEY = createField("KEY", org.jooq.impl.SQLDataType.VARCHAR.length(2147483647), this, ""); + + /** + * Create a INFORMATION_SCHEMA.COLLATIONS table reference + */ + public Collations() { + this("COLLATIONS", null); + } + + /** + * Create an aliased INFORMATION_SCHEMA.COLLATIONS table reference + */ + public Collations(String alias) { + this(alias, COLLATIONS); + } + + private Collations(String alias, Table aliased) { + this(alias, aliased, null); + } + + private Collations(String alias, Table aliased, Field[] parameters) { + super(alias, InformationSchema.INFORMATION_SCHEMA, aliased, parameters, ""); + } + + /** + * {@inheritDoc} + */ + @Override + public Collations as(String alias) { + return new Collations(alias, this); + } + + /** + * Rename this table + */ + public Collations rename(String name) { + return new Collations(name, null); + } +} diff --git a/jooq-spring/src/main/java/com/baeldung/jooq/introduction/db/information_schema/tables/ColumnPrivileges.java b/jooq-spring/src/main/java/com/baeldung/jooq/introduction/db/information_schema/tables/ColumnPrivileges.java new file mode 100644 index 0000000000..307682f434 --- /dev/null +++ b/jooq-spring/src/main/java/com/baeldung/jooq/introduction/db/information_schema/tables/ColumnPrivileges.java @@ -0,0 +1,122 @@ +/** + * This class is generated by jOOQ + */ +package com.baeldung.jooq.introduction.db.information_schema.tables; + + +import com.baeldung.jooq.introduction.db.information_schema.InformationSchema; +import com.baeldung.jooq.introduction.db.information_schema.tables.records.ColumnPrivilegesRecord; + +import javax.annotation.Generated; + +import org.jooq.Field; +import org.jooq.Table; +import org.jooq.TableField; +import org.jooq.impl.TableImpl; + + +/** + * This class is generated by jOOQ. + */ +@Generated( + value = { + "http://www.jooq.org", + "jOOQ version:3.7.3" + }, + comments = "This class is generated by jOOQ" +) +@SuppressWarnings({ "all", "unchecked", "rawtypes" }) +public class ColumnPrivileges extends TableImpl { + + private static final long serialVersionUID = -282101680; + + /** + * The reference instance of INFORMATION_SCHEMA.COLUMN_PRIVILEGES + */ + public static final ColumnPrivileges COLUMN_PRIVILEGES = new ColumnPrivileges(); + + /** + * The class holding records for this type + */ + @Override + public Class getRecordType() { + return ColumnPrivilegesRecord.class; + } + + /** + * The column INFORMATION_SCHEMA.COLUMN_PRIVILEGES.GRANTOR. + */ + public final TableField GRANTOR = createField("GRANTOR", org.jooq.impl.SQLDataType.VARCHAR.length(2147483647), this, ""); + + /** + * The column INFORMATION_SCHEMA.COLUMN_PRIVILEGES.GRANTEE. + */ + public final TableField GRANTEE = createField("GRANTEE", org.jooq.impl.SQLDataType.VARCHAR.length(2147483647), this, ""); + + /** + * The column INFORMATION_SCHEMA.COLUMN_PRIVILEGES.TABLE_CATALOG. + */ + public final TableField TABLE_CATALOG = createField("TABLE_CATALOG", org.jooq.impl.SQLDataType.VARCHAR.length(2147483647), this, ""); + + /** + * The column INFORMATION_SCHEMA.COLUMN_PRIVILEGES.TABLE_SCHEMA. + */ + public final TableField TABLE_SCHEMA = createField("TABLE_SCHEMA", org.jooq.impl.SQLDataType.VARCHAR.length(2147483647), this, ""); + + /** + * The column INFORMATION_SCHEMA.COLUMN_PRIVILEGES.TABLE_NAME. + */ + public final TableField TABLE_NAME = createField("TABLE_NAME", org.jooq.impl.SQLDataType.VARCHAR.length(2147483647), this, ""); + + /** + * The column INFORMATION_SCHEMA.COLUMN_PRIVILEGES.COLUMN_NAME. + */ + public final TableField COLUMN_NAME = createField("COLUMN_NAME", org.jooq.impl.SQLDataType.VARCHAR.length(2147483647), this, ""); + + /** + * The column INFORMATION_SCHEMA.COLUMN_PRIVILEGES.PRIVILEGE_TYPE. + */ + public final TableField PRIVILEGE_TYPE = createField("PRIVILEGE_TYPE", org.jooq.impl.SQLDataType.VARCHAR.length(2147483647), this, ""); + + /** + * The column INFORMATION_SCHEMA.COLUMN_PRIVILEGES.IS_GRANTABLE. + */ + public final TableField IS_GRANTABLE = createField("IS_GRANTABLE", org.jooq.impl.SQLDataType.VARCHAR.length(2147483647), this, ""); + + /** + * Create a INFORMATION_SCHEMA.COLUMN_PRIVILEGES table reference + */ + public ColumnPrivileges() { + this("COLUMN_PRIVILEGES", null); + } + + /** + * Create an aliased INFORMATION_SCHEMA.COLUMN_PRIVILEGES table reference + */ + public ColumnPrivileges(String alias) { + this(alias, COLUMN_PRIVILEGES); + } + + private ColumnPrivileges(String alias, Table aliased) { + this(alias, aliased, null); + } + + private ColumnPrivileges(String alias, Table aliased, Field[] parameters) { + super(alias, InformationSchema.INFORMATION_SCHEMA, aliased, parameters, ""); + } + + /** + * {@inheritDoc} + */ + @Override + public ColumnPrivileges as(String alias) { + return new ColumnPrivileges(alias, this); + } + + /** + * Rename this table + */ + public ColumnPrivileges rename(String name) { + return new ColumnPrivileges(name, null); + } +} diff --git a/jooq-spring/src/main/java/com/baeldung/jooq/introduction/db/information_schema/tables/Columns.java b/jooq-spring/src/main/java/com/baeldung/jooq/introduction/db/information_schema/tables/Columns.java new file mode 100644 index 0000000000..d95a518c1f --- /dev/null +++ b/jooq-spring/src/main/java/com/baeldung/jooq/introduction/db/information_schema/tables/Columns.java @@ -0,0 +1,197 @@ +/** + * This class is generated by jOOQ + */ +package com.baeldung.jooq.introduction.db.information_schema.tables; + + +import com.baeldung.jooq.introduction.db.information_schema.InformationSchema; +import com.baeldung.jooq.introduction.db.information_schema.tables.records.ColumnsRecord; + +import javax.annotation.Generated; + +import org.jooq.Field; +import org.jooq.Table; +import org.jooq.TableField; +import org.jooq.impl.TableImpl; + + +/** + * This class is generated by jOOQ. + */ +@Generated( + value = { + "http://www.jooq.org", + "jOOQ version:3.7.3" + }, + comments = "This class is generated by jOOQ" +) +@SuppressWarnings({ "all", "unchecked", "rawtypes" }) +public class Columns extends TableImpl { + + private static final long serialVersionUID = 1721995161; + + /** + * The reference instance of INFORMATION_SCHEMA.COLUMNS + */ + public static final Columns COLUMNS = new Columns(); + + /** + * The class holding records for this type + */ + @Override + public Class getRecordType() { + return ColumnsRecord.class; + } + + /** + * The column INFORMATION_SCHEMA.COLUMNS.TABLE_CATALOG. + */ + public final TableField TABLE_CATALOG = createField("TABLE_CATALOG", org.jooq.impl.SQLDataType.VARCHAR.length(2147483647), this, ""); + + /** + * The column INFORMATION_SCHEMA.COLUMNS.TABLE_SCHEMA. + */ + public final TableField TABLE_SCHEMA = createField("TABLE_SCHEMA", org.jooq.impl.SQLDataType.VARCHAR.length(2147483647), this, ""); + + /** + * The column INFORMATION_SCHEMA.COLUMNS.TABLE_NAME. + */ + public final TableField TABLE_NAME = createField("TABLE_NAME", org.jooq.impl.SQLDataType.VARCHAR.length(2147483647), this, ""); + + /** + * The column INFORMATION_SCHEMA.COLUMNS.COLUMN_NAME. + */ + public final TableField COLUMN_NAME = createField("COLUMN_NAME", org.jooq.impl.SQLDataType.VARCHAR.length(2147483647), this, ""); + + /** + * The column INFORMATION_SCHEMA.COLUMNS.ORDINAL_POSITION. + */ + public final TableField ORDINAL_POSITION = createField("ORDINAL_POSITION", org.jooq.impl.SQLDataType.INTEGER, this, ""); + + /** + * The column INFORMATION_SCHEMA.COLUMNS.COLUMN_DEFAULT. + */ + public final TableField COLUMN_DEFAULT = createField("COLUMN_DEFAULT", org.jooq.impl.SQLDataType.VARCHAR.length(2147483647), this, ""); + + /** + * The column INFORMATION_SCHEMA.COLUMNS.IS_NULLABLE. + */ + public final TableField IS_NULLABLE = createField("IS_NULLABLE", org.jooq.impl.SQLDataType.VARCHAR.length(2147483647), this, ""); + + /** + * The column INFORMATION_SCHEMA.COLUMNS.DATA_TYPE. + */ + public final TableField DATA_TYPE = createField("DATA_TYPE", org.jooq.impl.SQLDataType.INTEGER, this, ""); + + /** + * The column INFORMATION_SCHEMA.COLUMNS.CHARACTER_MAXIMUM_LENGTH. + */ + public final TableField CHARACTER_MAXIMUM_LENGTH = createField("CHARACTER_MAXIMUM_LENGTH", org.jooq.impl.SQLDataType.INTEGER, this, ""); + + /** + * The column INFORMATION_SCHEMA.COLUMNS.CHARACTER_OCTET_LENGTH. + */ + public final TableField CHARACTER_OCTET_LENGTH = createField("CHARACTER_OCTET_LENGTH", org.jooq.impl.SQLDataType.INTEGER, this, ""); + + /** + * The column INFORMATION_SCHEMA.COLUMNS.NUMERIC_PRECISION. + */ + public final TableField NUMERIC_PRECISION = createField("NUMERIC_PRECISION", org.jooq.impl.SQLDataType.INTEGER, this, ""); + + /** + * The column INFORMATION_SCHEMA.COLUMNS.NUMERIC_PRECISION_RADIX. + */ + public final TableField NUMERIC_PRECISION_RADIX = createField("NUMERIC_PRECISION_RADIX", org.jooq.impl.SQLDataType.INTEGER, this, ""); + + /** + * The column INFORMATION_SCHEMA.COLUMNS.NUMERIC_SCALE. + */ + public final TableField NUMERIC_SCALE = createField("NUMERIC_SCALE", org.jooq.impl.SQLDataType.INTEGER, this, ""); + + /** + * The column INFORMATION_SCHEMA.COLUMNS.CHARACTER_SET_NAME. + */ + public final TableField CHARACTER_SET_NAME = createField("CHARACTER_SET_NAME", org.jooq.impl.SQLDataType.VARCHAR.length(2147483647), this, ""); + + /** + * The column INFORMATION_SCHEMA.COLUMNS.COLLATION_NAME. + */ + public final TableField COLLATION_NAME = createField("COLLATION_NAME", org.jooq.impl.SQLDataType.VARCHAR.length(2147483647), this, ""); + + /** + * The column INFORMATION_SCHEMA.COLUMNS.TYPE_NAME. + */ + public final TableField TYPE_NAME = createField("TYPE_NAME", org.jooq.impl.SQLDataType.VARCHAR.length(2147483647), this, ""); + + /** + * The column INFORMATION_SCHEMA.COLUMNS.NULLABLE. + */ + public final TableField NULLABLE = createField("NULLABLE", org.jooq.impl.SQLDataType.INTEGER, this, ""); + + /** + * The column INFORMATION_SCHEMA.COLUMNS.IS_COMPUTED. + */ + public final TableField IS_COMPUTED = createField("IS_COMPUTED", org.jooq.impl.SQLDataType.BOOLEAN, this, ""); + + /** + * The column INFORMATION_SCHEMA.COLUMNS.SELECTIVITY. + */ + public final TableField SELECTIVITY = createField("SELECTIVITY", org.jooq.impl.SQLDataType.INTEGER, this, ""); + + /** + * The column INFORMATION_SCHEMA.COLUMNS.CHECK_CONSTRAINT. + */ + public final TableField CHECK_CONSTRAINT = createField("CHECK_CONSTRAINT", org.jooq.impl.SQLDataType.VARCHAR.length(2147483647), this, ""); + + /** + * The column INFORMATION_SCHEMA.COLUMNS.SEQUENCE_NAME. + */ + public final TableField SEQUENCE_NAME = createField("SEQUENCE_NAME", org.jooq.impl.SQLDataType.VARCHAR.length(2147483647), this, ""); + + /** + * The column INFORMATION_SCHEMA.COLUMNS.REMARKS. + */ + public final TableField REMARKS = createField("REMARKS", org.jooq.impl.SQLDataType.VARCHAR.length(2147483647), this, ""); + + /** + * The column INFORMATION_SCHEMA.COLUMNS.SOURCE_DATA_TYPE. + */ + public final TableField SOURCE_DATA_TYPE = createField("SOURCE_DATA_TYPE", org.jooq.impl.SQLDataType.SMALLINT, this, ""); + + /** + * Create a INFORMATION_SCHEMA.COLUMNS table reference + */ + public Columns() { + this("COLUMNS", null); + } + + /** + * Create an aliased INFORMATION_SCHEMA.COLUMNS table reference + */ + public Columns(String alias) { + this(alias, COLUMNS); + } + + private Columns(String alias, Table aliased) { + this(alias, aliased, null); + } + + private Columns(String alias, Table aliased, Field[] parameters) { + super(alias, InformationSchema.INFORMATION_SCHEMA, aliased, parameters, ""); + } + + /** + * {@inheritDoc} + */ + @Override + public Columns as(String alias) { + return new Columns(alias, this); + } + + /** + * Rename this table + */ + public Columns rename(String name) { + return new Columns(name, null); + } +} diff --git a/jooq-spring/src/main/java/com/baeldung/jooq/introduction/db/information_schema/tables/Constants.java b/jooq-spring/src/main/java/com/baeldung/jooq/introduction/db/information_schema/tables/Constants.java new file mode 100644 index 0000000000..7d2d97f5f8 --- /dev/null +++ b/jooq-spring/src/main/java/com/baeldung/jooq/introduction/db/information_schema/tables/Constants.java @@ -0,0 +1,117 @@ +/** + * This class is generated by jOOQ + */ +package com.baeldung.jooq.introduction.db.information_schema.tables; + + +import com.baeldung.jooq.introduction.db.information_schema.InformationSchema; +import com.baeldung.jooq.introduction.db.information_schema.tables.records.ConstantsRecord; + +import javax.annotation.Generated; + +import org.jooq.Field; +import org.jooq.Table; +import org.jooq.TableField; +import org.jooq.impl.TableImpl; + + +/** + * This class is generated by jOOQ. + */ +@Generated( + value = { + "http://www.jooq.org", + "jOOQ version:3.7.3" + }, + comments = "This class is generated by jOOQ" +) +@SuppressWarnings({ "all", "unchecked", "rawtypes" }) +public class Constants extends TableImpl { + + private static final long serialVersionUID = 107996087; + + /** + * The reference instance of INFORMATION_SCHEMA.CONSTANTS + */ + public static final Constants CONSTANTS = new Constants(); + + /** + * The class holding records for this type + */ + @Override + public Class getRecordType() { + return ConstantsRecord.class; + } + + /** + * The column INFORMATION_SCHEMA.CONSTANTS.CONSTANT_CATALOG. + */ + public final TableField CONSTANT_CATALOG = createField("CONSTANT_CATALOG", org.jooq.impl.SQLDataType.VARCHAR.length(2147483647), this, ""); + + /** + * The column INFORMATION_SCHEMA.CONSTANTS.CONSTANT_SCHEMA. + */ + public final TableField CONSTANT_SCHEMA = createField("CONSTANT_SCHEMA", org.jooq.impl.SQLDataType.VARCHAR.length(2147483647), this, ""); + + /** + * The column INFORMATION_SCHEMA.CONSTANTS.CONSTANT_NAME. + */ + public final TableField CONSTANT_NAME = createField("CONSTANT_NAME", org.jooq.impl.SQLDataType.VARCHAR.length(2147483647), this, ""); + + /** + * The column INFORMATION_SCHEMA.CONSTANTS.DATA_TYPE. + */ + public final TableField DATA_TYPE = createField("DATA_TYPE", org.jooq.impl.SQLDataType.INTEGER, this, ""); + + /** + * The column INFORMATION_SCHEMA.CONSTANTS.REMARKS. + */ + public final TableField REMARKS = createField("REMARKS", org.jooq.impl.SQLDataType.VARCHAR.length(2147483647), this, ""); + + /** + * The column INFORMATION_SCHEMA.CONSTANTS.SQL. + */ + public final TableField SQL = createField("SQL", org.jooq.impl.SQLDataType.VARCHAR.length(2147483647), this, ""); + + /** + * The column INFORMATION_SCHEMA.CONSTANTS.ID. + */ + public final TableField ID = createField("ID", org.jooq.impl.SQLDataType.INTEGER, this, ""); + + /** + * Create a INFORMATION_SCHEMA.CONSTANTS table reference + */ + public Constants() { + this("CONSTANTS", null); + } + + /** + * Create an aliased INFORMATION_SCHEMA.CONSTANTS table reference + */ + public Constants(String alias) { + this(alias, CONSTANTS); + } + + private Constants(String alias, Table aliased) { + this(alias, aliased, null); + } + + private Constants(String alias, Table aliased, Field[] parameters) { + super(alias, InformationSchema.INFORMATION_SCHEMA, aliased, parameters, ""); + } + + /** + * {@inheritDoc} + */ + @Override + public Constants as(String alias) { + return new Constants(alias, this); + } + + /** + * Rename this table + */ + public Constants rename(String name) { + return new Constants(name, null); + } +} diff --git a/jooq-spring/src/main/java/com/baeldung/jooq/introduction/db/information_schema/tables/Constraints.java b/jooq-spring/src/main/java/com/baeldung/jooq/introduction/db/information_schema/tables/Constraints.java new file mode 100644 index 0000000000..1c95f369ec --- /dev/null +++ b/jooq-spring/src/main/java/com/baeldung/jooq/introduction/db/information_schema/tables/Constraints.java @@ -0,0 +1,147 @@ +/** + * This class is generated by jOOQ + */ +package com.baeldung.jooq.introduction.db.information_schema.tables; + + +import com.baeldung.jooq.introduction.db.information_schema.InformationSchema; +import com.baeldung.jooq.introduction.db.information_schema.tables.records.ConstraintsRecord; + +import javax.annotation.Generated; + +import org.jooq.Field; +import org.jooq.Table; +import org.jooq.TableField; +import org.jooq.impl.TableImpl; + + +/** + * This class is generated by jOOQ. + */ +@Generated( + value = { + "http://www.jooq.org", + "jOOQ version:3.7.3" + }, + comments = "This class is generated by jOOQ" +) +@SuppressWarnings({ "all", "unchecked", "rawtypes" }) +public class Constraints extends TableImpl { + + private static final long serialVersionUID = 529190017; + + /** + * The reference instance of INFORMATION_SCHEMA.CONSTRAINTS + */ + public static final Constraints CONSTRAINTS = new Constraints(); + + /** + * The class holding records for this type + */ + @Override + public Class getRecordType() { + return ConstraintsRecord.class; + } + + /** + * The column INFORMATION_SCHEMA.CONSTRAINTS.CONSTRAINT_CATALOG. + */ + public final TableField CONSTRAINT_CATALOG = createField("CONSTRAINT_CATALOG", org.jooq.impl.SQLDataType.VARCHAR.length(2147483647), this, ""); + + /** + * The column INFORMATION_SCHEMA.CONSTRAINTS.CONSTRAINT_SCHEMA. + */ + public final TableField CONSTRAINT_SCHEMA = createField("CONSTRAINT_SCHEMA", org.jooq.impl.SQLDataType.VARCHAR.length(2147483647), this, ""); + + /** + * The column INFORMATION_SCHEMA.CONSTRAINTS.CONSTRAINT_NAME. + */ + public final TableField CONSTRAINT_NAME = createField("CONSTRAINT_NAME", org.jooq.impl.SQLDataType.VARCHAR.length(2147483647), this, ""); + + /** + * The column INFORMATION_SCHEMA.CONSTRAINTS.CONSTRAINT_TYPE. + */ + public final TableField CONSTRAINT_TYPE = createField("CONSTRAINT_TYPE", org.jooq.impl.SQLDataType.VARCHAR.length(2147483647), this, ""); + + /** + * The column INFORMATION_SCHEMA.CONSTRAINTS.TABLE_CATALOG. + */ + public final TableField TABLE_CATALOG = createField("TABLE_CATALOG", org.jooq.impl.SQLDataType.VARCHAR.length(2147483647), this, ""); + + /** + * The column INFORMATION_SCHEMA.CONSTRAINTS.TABLE_SCHEMA. + */ + public final TableField TABLE_SCHEMA = createField("TABLE_SCHEMA", org.jooq.impl.SQLDataType.VARCHAR.length(2147483647), this, ""); + + /** + * The column INFORMATION_SCHEMA.CONSTRAINTS.TABLE_NAME. + */ + public final TableField TABLE_NAME = createField("TABLE_NAME", org.jooq.impl.SQLDataType.VARCHAR.length(2147483647), this, ""); + + /** + * The column INFORMATION_SCHEMA.CONSTRAINTS.UNIQUE_INDEX_NAME. + */ + public final TableField UNIQUE_INDEX_NAME = createField("UNIQUE_INDEX_NAME", org.jooq.impl.SQLDataType.VARCHAR.length(2147483647), this, ""); + + /** + * The column INFORMATION_SCHEMA.CONSTRAINTS.CHECK_EXPRESSION. + */ + public final TableField CHECK_EXPRESSION = createField("CHECK_EXPRESSION", org.jooq.impl.SQLDataType.VARCHAR.length(2147483647), this, ""); + + /** + * The column INFORMATION_SCHEMA.CONSTRAINTS.COLUMN_LIST. + */ + public final TableField COLUMN_LIST = createField("COLUMN_LIST", org.jooq.impl.SQLDataType.VARCHAR.length(2147483647), this, ""); + + /** + * The column INFORMATION_SCHEMA.CONSTRAINTS.REMARKS. + */ + public final TableField REMARKS = createField("REMARKS", org.jooq.impl.SQLDataType.VARCHAR.length(2147483647), this, ""); + + /** + * The column INFORMATION_SCHEMA.CONSTRAINTS.SQL. + */ + public final TableField SQL = createField("SQL", org.jooq.impl.SQLDataType.VARCHAR.length(2147483647), this, ""); + + /** + * The column INFORMATION_SCHEMA.CONSTRAINTS.ID. + */ + public final TableField ID = createField("ID", org.jooq.impl.SQLDataType.INTEGER, this, ""); + + /** + * Create a INFORMATION_SCHEMA.CONSTRAINTS table reference + */ + public Constraints() { + this("CONSTRAINTS", null); + } + + /** + * Create an aliased INFORMATION_SCHEMA.CONSTRAINTS table reference + */ + public Constraints(String alias) { + this(alias, CONSTRAINTS); + } + + private Constraints(String alias, Table aliased) { + this(alias, aliased, null); + } + + private Constraints(String alias, Table aliased, Field[] parameters) { + super(alias, InformationSchema.INFORMATION_SCHEMA, aliased, parameters, ""); + } + + /** + * {@inheritDoc} + */ + @Override + public Constraints as(String alias) { + return new Constraints(alias, this); + } + + /** + * Rename this table + */ + public Constraints rename(String name) { + return new Constraints(name, null); + } +} diff --git a/jooq-spring/src/main/java/com/baeldung/jooq/introduction/db/information_schema/tables/CrossReferences.java b/jooq-spring/src/main/java/com/baeldung/jooq/introduction/db/information_schema/tables/CrossReferences.java new file mode 100644 index 0000000000..d3d9cebded --- /dev/null +++ b/jooq-spring/src/main/java/com/baeldung/jooq/introduction/db/information_schema/tables/CrossReferences.java @@ -0,0 +1,152 @@ +/** + * This class is generated by jOOQ + */ +package com.baeldung.jooq.introduction.db.information_schema.tables; + + +import com.baeldung.jooq.introduction.db.information_schema.InformationSchema; +import com.baeldung.jooq.introduction.db.information_schema.tables.records.CrossReferencesRecord; + +import javax.annotation.Generated; + +import org.jooq.Field; +import org.jooq.Table; +import org.jooq.TableField; +import org.jooq.impl.TableImpl; + + +/** + * This class is generated by jOOQ. + */ +@Generated( + value = { + "http://www.jooq.org", + "jOOQ version:3.7.3" + }, + comments = "This class is generated by jOOQ" +) +@SuppressWarnings({ "all", "unchecked", "rawtypes" }) +public class CrossReferences extends TableImpl { + + private static final long serialVersionUID = 846378739; + + /** + * The reference instance of INFORMATION_SCHEMA.CROSS_REFERENCES + */ + public static final CrossReferences CROSS_REFERENCES = new CrossReferences(); + + /** + * The class holding records for this type + */ + @Override + public Class getRecordType() { + return CrossReferencesRecord.class; + } + + /** + * The column INFORMATION_SCHEMA.CROSS_REFERENCES.PKTABLE_CATALOG. + */ + public final TableField PKTABLE_CATALOG = createField("PKTABLE_CATALOG", org.jooq.impl.SQLDataType.VARCHAR.length(2147483647), this, ""); + + /** + * The column INFORMATION_SCHEMA.CROSS_REFERENCES.PKTABLE_SCHEMA. + */ + public final TableField PKTABLE_SCHEMA = createField("PKTABLE_SCHEMA", org.jooq.impl.SQLDataType.VARCHAR.length(2147483647), this, ""); + + /** + * The column INFORMATION_SCHEMA.CROSS_REFERENCES.PKTABLE_NAME. + */ + public final TableField PKTABLE_NAME = createField("PKTABLE_NAME", org.jooq.impl.SQLDataType.VARCHAR.length(2147483647), this, ""); + + /** + * The column INFORMATION_SCHEMA.CROSS_REFERENCES.PKCOLUMN_NAME. + */ + public final TableField PKCOLUMN_NAME = createField("PKCOLUMN_NAME", org.jooq.impl.SQLDataType.VARCHAR.length(2147483647), this, ""); + + /** + * The column INFORMATION_SCHEMA.CROSS_REFERENCES.FKTABLE_CATALOG. + */ + public final TableField FKTABLE_CATALOG = createField("FKTABLE_CATALOG", org.jooq.impl.SQLDataType.VARCHAR.length(2147483647), this, ""); + + /** + * The column INFORMATION_SCHEMA.CROSS_REFERENCES.FKTABLE_SCHEMA. + */ + public final TableField FKTABLE_SCHEMA = createField("FKTABLE_SCHEMA", org.jooq.impl.SQLDataType.VARCHAR.length(2147483647), this, ""); + + /** + * The column INFORMATION_SCHEMA.CROSS_REFERENCES.FKTABLE_NAME. + */ + public final TableField FKTABLE_NAME = createField("FKTABLE_NAME", org.jooq.impl.SQLDataType.VARCHAR.length(2147483647), this, ""); + + /** + * The column INFORMATION_SCHEMA.CROSS_REFERENCES.FKCOLUMN_NAME. + */ + public final TableField FKCOLUMN_NAME = createField("FKCOLUMN_NAME", org.jooq.impl.SQLDataType.VARCHAR.length(2147483647), this, ""); + + /** + * The column INFORMATION_SCHEMA.CROSS_REFERENCES.ORDINAL_POSITION. + */ + public final TableField ORDINAL_POSITION = createField("ORDINAL_POSITION", org.jooq.impl.SQLDataType.SMALLINT, this, ""); + + /** + * The column INFORMATION_SCHEMA.CROSS_REFERENCES.UPDATE_RULE. + */ + public final TableField UPDATE_RULE = createField("UPDATE_RULE", org.jooq.impl.SQLDataType.SMALLINT, this, ""); + + /** + * The column INFORMATION_SCHEMA.CROSS_REFERENCES.DELETE_RULE. + */ + public final TableField DELETE_RULE = createField("DELETE_RULE", org.jooq.impl.SQLDataType.SMALLINT, this, ""); + + /** + * The column INFORMATION_SCHEMA.CROSS_REFERENCES.FK_NAME. + */ + public final TableField FK_NAME = createField("FK_NAME", org.jooq.impl.SQLDataType.VARCHAR.length(2147483647), this, ""); + + /** + * The column INFORMATION_SCHEMA.CROSS_REFERENCES.PK_NAME. + */ + public final TableField PK_NAME = createField("PK_NAME", org.jooq.impl.SQLDataType.VARCHAR.length(2147483647), this, ""); + + /** + * The column INFORMATION_SCHEMA.CROSS_REFERENCES.DEFERRABILITY. + */ + public final TableField DEFERRABILITY = createField("DEFERRABILITY", org.jooq.impl.SQLDataType.SMALLINT, this, ""); + + /** + * Create a INFORMATION_SCHEMA.CROSS_REFERENCES table reference + */ + public CrossReferences() { + this("CROSS_REFERENCES", null); + } + + /** + * Create an aliased INFORMATION_SCHEMA.CROSS_REFERENCES table reference + */ + public CrossReferences(String alias) { + this(alias, CROSS_REFERENCES); + } + + private CrossReferences(String alias, Table aliased) { + this(alias, aliased, null); + } + + private CrossReferences(String alias, Table aliased, Field[] parameters) { + super(alias, InformationSchema.INFORMATION_SCHEMA, aliased, parameters, ""); + } + + /** + * {@inheritDoc} + */ + @Override + public CrossReferences as(String alias) { + return new CrossReferences(alias, this); + } + + /** + * Rename this table + */ + public CrossReferences rename(String name) { + return new CrossReferences(name, null); + } +} diff --git a/jooq-spring/src/main/java/com/baeldung/jooq/introduction/db/information_schema/tables/Domains.java b/jooq-spring/src/main/java/com/baeldung/jooq/introduction/db/information_schema/tables/Domains.java new file mode 100644 index 0000000000..597f3d2e2b --- /dev/null +++ b/jooq-spring/src/main/java/com/baeldung/jooq/introduction/db/information_schema/tables/Domains.java @@ -0,0 +1,152 @@ +/** + * This class is generated by jOOQ + */ +package com.baeldung.jooq.introduction.db.information_schema.tables; + + +import com.baeldung.jooq.introduction.db.information_schema.InformationSchema; +import com.baeldung.jooq.introduction.db.information_schema.tables.records.DomainsRecord; + +import javax.annotation.Generated; + +import org.jooq.Field; +import org.jooq.Table; +import org.jooq.TableField; +import org.jooq.impl.TableImpl; + + +/** + * This class is generated by jOOQ. + */ +@Generated( + value = { + "http://www.jooq.org", + "jOOQ version:3.7.3" + }, + comments = "This class is generated by jOOQ" +) +@SuppressWarnings({ "all", "unchecked", "rawtypes" }) +public class Domains extends TableImpl { + + private static final long serialVersionUID = -742107682; + + /** + * The reference instance of INFORMATION_SCHEMA.DOMAINS + */ + public static final Domains DOMAINS = new Domains(); + + /** + * The class holding records for this type + */ + @Override + public Class getRecordType() { + return DomainsRecord.class; + } + + /** + * The column INFORMATION_SCHEMA.DOMAINS.DOMAIN_CATALOG. + */ + public final TableField DOMAIN_CATALOG = createField("DOMAIN_CATALOG", org.jooq.impl.SQLDataType.VARCHAR.length(2147483647), this, ""); + + /** + * The column INFORMATION_SCHEMA.DOMAINS.DOMAIN_SCHEMA. + */ + public final TableField DOMAIN_SCHEMA = createField("DOMAIN_SCHEMA", org.jooq.impl.SQLDataType.VARCHAR.length(2147483647), this, ""); + + /** + * The column INFORMATION_SCHEMA.DOMAINS.DOMAIN_NAME. + */ + public final TableField DOMAIN_NAME = createField("DOMAIN_NAME", org.jooq.impl.SQLDataType.VARCHAR.length(2147483647), this, ""); + + /** + * The column INFORMATION_SCHEMA.DOMAINS.COLUMN_DEFAULT. + */ + public final TableField COLUMN_DEFAULT = createField("COLUMN_DEFAULT", org.jooq.impl.SQLDataType.VARCHAR.length(2147483647), this, ""); + + /** + * The column INFORMATION_SCHEMA.DOMAINS.IS_NULLABLE. + */ + public final TableField IS_NULLABLE = createField("IS_NULLABLE", org.jooq.impl.SQLDataType.VARCHAR.length(2147483647), this, ""); + + /** + * The column INFORMATION_SCHEMA.DOMAINS.DATA_TYPE. + */ + public final TableField DATA_TYPE = createField("DATA_TYPE", org.jooq.impl.SQLDataType.INTEGER, this, ""); + + /** + * The column INFORMATION_SCHEMA.DOMAINS.PRECISION. + */ + public final TableField PRECISION = createField("PRECISION", org.jooq.impl.SQLDataType.INTEGER, this, ""); + + /** + * The column INFORMATION_SCHEMA.DOMAINS.SCALE. + */ + public final TableField SCALE = createField("SCALE", org.jooq.impl.SQLDataType.INTEGER, this, ""); + + /** + * The column INFORMATION_SCHEMA.DOMAINS.TYPE_NAME. + */ + public final TableField TYPE_NAME = createField("TYPE_NAME", org.jooq.impl.SQLDataType.VARCHAR.length(2147483647), this, ""); + + /** + * The column INFORMATION_SCHEMA.DOMAINS.SELECTIVITY. + */ + public final TableField SELECTIVITY = createField("SELECTIVITY", org.jooq.impl.SQLDataType.INTEGER, this, ""); + + /** + * The column INFORMATION_SCHEMA.DOMAINS.CHECK_CONSTRAINT. + */ + public final TableField CHECK_CONSTRAINT = createField("CHECK_CONSTRAINT", org.jooq.impl.SQLDataType.VARCHAR.length(2147483647), this, ""); + + /** + * The column INFORMATION_SCHEMA.DOMAINS.REMARKS. + */ + public final TableField REMARKS = createField("REMARKS", org.jooq.impl.SQLDataType.VARCHAR.length(2147483647), this, ""); + + /** + * The column INFORMATION_SCHEMA.DOMAINS.SQL. + */ + public final TableField SQL = createField("SQL", org.jooq.impl.SQLDataType.VARCHAR.length(2147483647), this, ""); + + /** + * The column INFORMATION_SCHEMA.DOMAINS.ID. + */ + public final TableField ID = createField("ID", org.jooq.impl.SQLDataType.INTEGER, this, ""); + + /** + * Create a INFORMATION_SCHEMA.DOMAINS table reference + */ + public Domains() { + this("DOMAINS", null); + } + + /** + * Create an aliased INFORMATION_SCHEMA.DOMAINS table reference + */ + public Domains(String alias) { + this(alias, DOMAINS); + } + + private Domains(String alias, Table aliased) { + this(alias, aliased, null); + } + + private Domains(String alias, Table aliased, Field[] parameters) { + super(alias, InformationSchema.INFORMATION_SCHEMA, aliased, parameters, ""); + } + + /** + * {@inheritDoc} + */ + @Override + public Domains as(String alias) { + return new Domains(alias, this); + } + + /** + * Rename this table + */ + public Domains rename(String name) { + return new Domains(name, null); + } +} diff --git a/jooq-spring/src/main/java/com/baeldung/jooq/introduction/db/information_schema/tables/FunctionAliases.java b/jooq-spring/src/main/java/com/baeldung/jooq/introduction/db/information_schema/tables/FunctionAliases.java new file mode 100644 index 0000000000..8b85980d38 --- /dev/null +++ b/jooq-spring/src/main/java/com/baeldung/jooq/introduction/db/information_schema/tables/FunctionAliases.java @@ -0,0 +1,142 @@ +/** + * This class is generated by jOOQ + */ +package com.baeldung.jooq.introduction.db.information_schema.tables; + + +import com.baeldung.jooq.introduction.db.information_schema.InformationSchema; +import com.baeldung.jooq.introduction.db.information_schema.tables.records.FunctionAliasesRecord; + +import javax.annotation.Generated; + +import org.jooq.Field; +import org.jooq.Table; +import org.jooq.TableField; +import org.jooq.impl.TableImpl; + + +/** + * This class is generated by jOOQ. + */ +@Generated( + value = { + "http://www.jooq.org", + "jOOQ version:3.7.3" + }, + comments = "This class is generated by jOOQ" +) +@SuppressWarnings({ "all", "unchecked", "rawtypes" }) +public class FunctionAliases extends TableImpl { + + private static final long serialVersionUID = -232882186; + + /** + * The reference instance of INFORMATION_SCHEMA.FUNCTION_ALIASES + */ + public static final FunctionAliases FUNCTION_ALIASES = new FunctionAliases(); + + /** + * The class holding records for this type + */ + @Override + public Class getRecordType() { + return FunctionAliasesRecord.class; + } + + /** + * The column INFORMATION_SCHEMA.FUNCTION_ALIASES.ALIAS_CATALOG. + */ + public final TableField ALIAS_CATALOG = createField("ALIAS_CATALOG", org.jooq.impl.SQLDataType.VARCHAR.length(2147483647), this, ""); + + /** + * The column INFORMATION_SCHEMA.FUNCTION_ALIASES.ALIAS_SCHEMA. + */ + public final TableField ALIAS_SCHEMA = createField("ALIAS_SCHEMA", org.jooq.impl.SQLDataType.VARCHAR.length(2147483647), this, ""); + + /** + * The column INFORMATION_SCHEMA.FUNCTION_ALIASES.ALIAS_NAME. + */ + public final TableField ALIAS_NAME = createField("ALIAS_NAME", org.jooq.impl.SQLDataType.VARCHAR.length(2147483647), this, ""); + + /** + * The column INFORMATION_SCHEMA.FUNCTION_ALIASES.JAVA_CLASS. + */ + public final TableField JAVA_CLASS = createField("JAVA_CLASS", org.jooq.impl.SQLDataType.VARCHAR.length(2147483647), this, ""); + + /** + * The column INFORMATION_SCHEMA.FUNCTION_ALIASES.JAVA_METHOD. + */ + public final TableField JAVA_METHOD = createField("JAVA_METHOD", org.jooq.impl.SQLDataType.VARCHAR.length(2147483647), this, ""); + + /** + * The column INFORMATION_SCHEMA.FUNCTION_ALIASES.DATA_TYPE. + */ + public final TableField DATA_TYPE = createField("DATA_TYPE", org.jooq.impl.SQLDataType.INTEGER, this, ""); + + /** + * The column INFORMATION_SCHEMA.FUNCTION_ALIASES.TYPE_NAME. + */ + public final TableField TYPE_NAME = createField("TYPE_NAME", org.jooq.impl.SQLDataType.VARCHAR.length(2147483647), this, ""); + + /** + * The column INFORMATION_SCHEMA.FUNCTION_ALIASES.COLUMN_COUNT. + */ + public final TableField COLUMN_COUNT = createField("COLUMN_COUNT", org.jooq.impl.SQLDataType.INTEGER, this, ""); + + /** + * The column INFORMATION_SCHEMA.FUNCTION_ALIASES.RETURNS_RESULT. + */ + public final TableField RETURNS_RESULT = createField("RETURNS_RESULT", org.jooq.impl.SQLDataType.SMALLINT, this, ""); + + /** + * The column INFORMATION_SCHEMA.FUNCTION_ALIASES.REMARKS. + */ + public final TableField REMARKS = createField("REMARKS", org.jooq.impl.SQLDataType.VARCHAR.length(2147483647), this, ""); + + /** + * The column INFORMATION_SCHEMA.FUNCTION_ALIASES.ID. + */ + public final TableField ID = createField("ID", org.jooq.impl.SQLDataType.INTEGER, this, ""); + + /** + * The column INFORMATION_SCHEMA.FUNCTION_ALIASES.SOURCE. + */ + public final TableField SOURCE = createField("SOURCE", org.jooq.impl.SQLDataType.VARCHAR.length(2147483647), this, ""); + + /** + * Create a INFORMATION_SCHEMA.FUNCTION_ALIASES table reference + */ + public FunctionAliases() { + this("FUNCTION_ALIASES", null); + } + + /** + * Create an aliased INFORMATION_SCHEMA.FUNCTION_ALIASES table reference + */ + public FunctionAliases(String alias) { + this(alias, FUNCTION_ALIASES); + } + + private FunctionAliases(String alias, Table aliased) { + this(alias, aliased, null); + } + + private FunctionAliases(String alias, Table aliased, Field[] parameters) { + super(alias, InformationSchema.INFORMATION_SCHEMA, aliased, parameters, ""); + } + + /** + * {@inheritDoc} + */ + @Override + public FunctionAliases as(String alias) { + return new FunctionAliases(alias, this); + } + + /** + * Rename this table + */ + public FunctionAliases rename(String name) { + return new FunctionAliases(name, null); + } +} diff --git a/jooq-spring/src/main/java/com/baeldung/jooq/introduction/db/information_schema/tables/FunctionColumns.java b/jooq-spring/src/main/java/com/baeldung/jooq/introduction/db/information_schema/tables/FunctionColumns.java new file mode 100644 index 0000000000..b5df94b4f0 --- /dev/null +++ b/jooq-spring/src/main/java/com/baeldung/jooq/introduction/db/information_schema/tables/FunctionColumns.java @@ -0,0 +1,167 @@ +/** + * This class is generated by jOOQ + */ +package com.baeldung.jooq.introduction.db.information_schema.tables; + + +import com.baeldung.jooq.introduction.db.information_schema.InformationSchema; +import com.baeldung.jooq.introduction.db.information_schema.tables.records.FunctionColumnsRecord; + +import javax.annotation.Generated; + +import org.jooq.Field; +import org.jooq.Table; +import org.jooq.TableField; +import org.jooq.impl.TableImpl; + + +/** + * This class is generated by jOOQ. + */ +@Generated( + value = { + "http://www.jooq.org", + "jOOQ version:3.7.3" + }, + comments = "This class is generated by jOOQ" +) +@SuppressWarnings({ "all", "unchecked", "rawtypes" }) +public class FunctionColumns extends TableImpl { + + private static final long serialVersionUID = -406719584; + + /** + * The reference instance of INFORMATION_SCHEMA.FUNCTION_COLUMNS + */ + public static final FunctionColumns FUNCTION_COLUMNS = new FunctionColumns(); + + /** + * The class holding records for this type + */ + @Override + public Class getRecordType() { + return FunctionColumnsRecord.class; + } + + /** + * The column INFORMATION_SCHEMA.FUNCTION_COLUMNS.ALIAS_CATALOG. + */ + public final TableField ALIAS_CATALOG = createField("ALIAS_CATALOG", org.jooq.impl.SQLDataType.VARCHAR.length(2147483647), this, ""); + + /** + * The column INFORMATION_SCHEMA.FUNCTION_COLUMNS.ALIAS_SCHEMA. + */ + public final TableField ALIAS_SCHEMA = createField("ALIAS_SCHEMA", org.jooq.impl.SQLDataType.VARCHAR.length(2147483647), this, ""); + + /** + * The column INFORMATION_SCHEMA.FUNCTION_COLUMNS.ALIAS_NAME. + */ + public final TableField ALIAS_NAME = createField("ALIAS_NAME", org.jooq.impl.SQLDataType.VARCHAR.length(2147483647), this, ""); + + /** + * The column INFORMATION_SCHEMA.FUNCTION_COLUMNS.JAVA_CLASS. + */ + public final TableField JAVA_CLASS = createField("JAVA_CLASS", org.jooq.impl.SQLDataType.VARCHAR.length(2147483647), this, ""); + + /** + * The column INFORMATION_SCHEMA.FUNCTION_COLUMNS.JAVA_METHOD. + */ + public final TableField JAVA_METHOD = createField("JAVA_METHOD", org.jooq.impl.SQLDataType.VARCHAR.length(2147483647), this, ""); + + /** + * The column INFORMATION_SCHEMA.FUNCTION_COLUMNS.COLUMN_COUNT. + */ + public final TableField COLUMN_COUNT = createField("COLUMN_COUNT", org.jooq.impl.SQLDataType.INTEGER, this, ""); + + /** + * The column INFORMATION_SCHEMA.FUNCTION_COLUMNS.POS. + */ + public final TableField POS = createField("POS", org.jooq.impl.SQLDataType.INTEGER, this, ""); + + /** + * The column INFORMATION_SCHEMA.FUNCTION_COLUMNS.COLUMN_NAME. + */ + public final TableField COLUMN_NAME = createField("COLUMN_NAME", org.jooq.impl.SQLDataType.VARCHAR.length(2147483647), this, ""); + + /** + * The column INFORMATION_SCHEMA.FUNCTION_COLUMNS.DATA_TYPE. + */ + public final TableField DATA_TYPE = createField("DATA_TYPE", org.jooq.impl.SQLDataType.INTEGER, this, ""); + + /** + * The column INFORMATION_SCHEMA.FUNCTION_COLUMNS.TYPE_NAME. + */ + public final TableField TYPE_NAME = createField("TYPE_NAME", org.jooq.impl.SQLDataType.VARCHAR.length(2147483647), this, ""); + + /** + * The column INFORMATION_SCHEMA.FUNCTION_COLUMNS.PRECISION. + */ + public final TableField PRECISION = createField("PRECISION", org.jooq.impl.SQLDataType.INTEGER, this, ""); + + /** + * The column INFORMATION_SCHEMA.FUNCTION_COLUMNS.SCALE. + */ + public final TableField SCALE = createField("SCALE", org.jooq.impl.SQLDataType.SMALLINT, this, ""); + + /** + * The column INFORMATION_SCHEMA.FUNCTION_COLUMNS.RADIX. + */ + public final TableField RADIX = createField("RADIX", org.jooq.impl.SQLDataType.SMALLINT, this, ""); + + /** + * The column INFORMATION_SCHEMA.FUNCTION_COLUMNS.NULLABLE. + */ + public final TableField NULLABLE = createField("NULLABLE", org.jooq.impl.SQLDataType.SMALLINT, this, ""); + + /** + * The column INFORMATION_SCHEMA.FUNCTION_COLUMNS.COLUMN_TYPE. + */ + public final TableField COLUMN_TYPE = createField("COLUMN_TYPE", org.jooq.impl.SQLDataType.SMALLINT, this, ""); + + /** + * The column INFORMATION_SCHEMA.FUNCTION_COLUMNS.REMARKS. + */ + public final TableField REMARKS = createField("REMARKS", org.jooq.impl.SQLDataType.VARCHAR.length(2147483647), this, ""); + + /** + * The column INFORMATION_SCHEMA.FUNCTION_COLUMNS.COLUMN_DEFAULT. + */ + public final TableField COLUMN_DEFAULT = createField("COLUMN_DEFAULT", org.jooq.impl.SQLDataType.VARCHAR.length(2147483647), this, ""); + + /** + * Create a INFORMATION_SCHEMA.FUNCTION_COLUMNS table reference + */ + public FunctionColumns() { + this("FUNCTION_COLUMNS", null); + } + + /** + * Create an aliased INFORMATION_SCHEMA.FUNCTION_COLUMNS table reference + */ + public FunctionColumns(String alias) { + this(alias, FUNCTION_COLUMNS); + } + + private FunctionColumns(String alias, Table aliased) { + this(alias, aliased, null); + } + + private FunctionColumns(String alias, Table aliased, Field[] parameters) { + super(alias, InformationSchema.INFORMATION_SCHEMA, aliased, parameters, ""); + } + + /** + * {@inheritDoc} + */ + @Override + public FunctionColumns as(String alias) { + return new FunctionColumns(alias, this); + } + + /** + * Rename this table + */ + public FunctionColumns rename(String name) { + return new FunctionColumns(name, null); + } +} diff --git a/jooq-spring/src/main/java/com/baeldung/jooq/introduction/db/information_schema/tables/Help.java b/jooq-spring/src/main/java/com/baeldung/jooq/introduction/db/information_schema/tables/Help.java new file mode 100644 index 0000000000..449eed4f72 --- /dev/null +++ b/jooq-spring/src/main/java/com/baeldung/jooq/introduction/db/information_schema/tables/Help.java @@ -0,0 +1,107 @@ +/** + * This class is generated by jOOQ + */ +package com.baeldung.jooq.introduction.db.information_schema.tables; + + +import com.baeldung.jooq.introduction.db.information_schema.InformationSchema; +import com.baeldung.jooq.introduction.db.information_schema.tables.records.HelpRecord; + +import javax.annotation.Generated; + +import org.jooq.Field; +import org.jooq.Table; +import org.jooq.TableField; +import org.jooq.impl.TableImpl; + + +/** + * This class is generated by jOOQ. + */ +@Generated( + value = { + "http://www.jooq.org", + "jOOQ version:3.7.3" + }, + comments = "This class is generated by jOOQ" +) +@SuppressWarnings({ "all", "unchecked", "rawtypes" }) +public class Help extends TableImpl { + + private static final long serialVersionUID = 1402170374; + + /** + * The reference instance of INFORMATION_SCHEMA.HELP + */ + public static final Help HELP = new Help(); + + /** + * The class holding records for this type + */ + @Override + public Class getRecordType() { + return HelpRecord.class; + } + + /** + * The column INFORMATION_SCHEMA.HELP.ID. + */ + public final TableField ID = createField("ID", org.jooq.impl.SQLDataType.INTEGER, this, ""); + + /** + * The column INFORMATION_SCHEMA.HELP.SECTION. + */ + public final TableField SECTION = createField("SECTION", org.jooq.impl.SQLDataType.VARCHAR.length(2147483647), this, ""); + + /** + * The column INFORMATION_SCHEMA.HELP.TOPIC. + */ + public final TableField TOPIC = createField("TOPIC", org.jooq.impl.SQLDataType.VARCHAR.length(2147483647), this, ""); + + /** + * The column INFORMATION_SCHEMA.HELP.SYNTAX. + */ + public final TableField SYNTAX = createField("SYNTAX", org.jooq.impl.SQLDataType.VARCHAR.length(2147483647), this, ""); + + /** + * The column INFORMATION_SCHEMA.HELP.TEXT. + */ + public final TableField TEXT = createField("TEXT", org.jooq.impl.SQLDataType.VARCHAR.length(2147483647), this, ""); + + /** + * Create a INFORMATION_SCHEMA.HELP table reference + */ + public Help() { + this("HELP", null); + } + + /** + * Create an aliased INFORMATION_SCHEMA.HELP table reference + */ + public Help(String alias) { + this(alias, HELP); + } + + private Help(String alias, Table aliased) { + this(alias, aliased, null); + } + + private Help(String alias, Table aliased, Field[] parameters) { + super(alias, InformationSchema.INFORMATION_SCHEMA, aliased, parameters, ""); + } + + /** + * {@inheritDoc} + */ + @Override + public Help as(String alias) { + return new Help(alias, this); + } + + /** + * Rename this table + */ + public Help rename(String name) { + return new Help(name, null); + } +} diff --git a/jooq-spring/src/main/java/com/baeldung/jooq/introduction/db/information_schema/tables/InDoubt.java b/jooq-spring/src/main/java/com/baeldung/jooq/introduction/db/information_schema/tables/InDoubt.java new file mode 100644 index 0000000000..c37e06e47e --- /dev/null +++ b/jooq-spring/src/main/java/com/baeldung/jooq/introduction/db/information_schema/tables/InDoubt.java @@ -0,0 +1,92 @@ +/** + * This class is generated by jOOQ + */ +package com.baeldung.jooq.introduction.db.information_schema.tables; + + +import com.baeldung.jooq.introduction.db.information_schema.InformationSchema; +import com.baeldung.jooq.introduction.db.information_schema.tables.records.InDoubtRecord; + +import javax.annotation.Generated; + +import org.jooq.Field; +import org.jooq.Table; +import org.jooq.TableField; +import org.jooq.impl.TableImpl; + + +/** + * This class is generated by jOOQ. + */ +@Generated( + value = { + "http://www.jooq.org", + "jOOQ version:3.7.3" + }, + comments = "This class is generated by jOOQ" +) +@SuppressWarnings({ "all", "unchecked", "rawtypes" }) +public class InDoubt extends TableImpl { + + private static final long serialVersionUID = 284524946; + + /** + * The reference instance of INFORMATION_SCHEMA.IN_DOUBT + */ + public static final InDoubt IN_DOUBT = new InDoubt(); + + /** + * The class holding records for this type + */ + @Override + public Class getRecordType() { + return InDoubtRecord.class; + } + + /** + * The column INFORMATION_SCHEMA.IN_DOUBT.TRANSACTION. + */ + public final TableField TRANSACTION = createField("TRANSACTION", org.jooq.impl.SQLDataType.VARCHAR.length(2147483647), this, ""); + + /** + * The column INFORMATION_SCHEMA.IN_DOUBT.STATE. + */ + public final TableField STATE = createField("STATE", org.jooq.impl.SQLDataType.VARCHAR.length(2147483647), this, ""); + + /** + * Create a INFORMATION_SCHEMA.IN_DOUBT table reference + */ + public InDoubt() { + this("IN_DOUBT", null); + } + + /** + * Create an aliased INFORMATION_SCHEMA.IN_DOUBT table reference + */ + public InDoubt(String alias) { + this(alias, IN_DOUBT); + } + + private InDoubt(String alias, Table aliased) { + this(alias, aliased, null); + } + + private InDoubt(String alias, Table aliased, Field[] parameters) { + super(alias, InformationSchema.INFORMATION_SCHEMA, aliased, parameters, ""); + } + + /** + * {@inheritDoc} + */ + @Override + public InDoubt as(String alias) { + return new InDoubt(alias, this); + } + + /** + * Rename this table + */ + public InDoubt rename(String name) { + return new InDoubt(name, null); + } +} diff --git a/jooq-spring/src/main/java/com/baeldung/jooq/introduction/db/information_schema/tables/Indexes.java b/jooq-spring/src/main/java/com/baeldung/jooq/introduction/db/information_schema/tables/Indexes.java new file mode 100644 index 0000000000..1cc3b176a2 --- /dev/null +++ b/jooq-spring/src/main/java/com/baeldung/jooq/introduction/db/information_schema/tables/Indexes.java @@ -0,0 +1,187 @@ +/** + * This class is generated by jOOQ + */ +package com.baeldung.jooq.introduction.db.information_schema.tables; + + +import com.baeldung.jooq.introduction.db.information_schema.InformationSchema; +import com.baeldung.jooq.introduction.db.information_schema.tables.records.IndexesRecord; + +import javax.annotation.Generated; + +import org.jooq.Field; +import org.jooq.Table; +import org.jooq.TableField; +import org.jooq.impl.TableImpl; + + +/** + * This class is generated by jOOQ. + */ +@Generated( + value = { + "http://www.jooq.org", + "jOOQ version:3.7.3" + }, + comments = "This class is generated by jOOQ" +) +@SuppressWarnings({ "all", "unchecked", "rawtypes" }) +public class Indexes extends TableImpl { + + private static final long serialVersionUID = 2077967696; + + /** + * The reference instance of INFORMATION_SCHEMA.INDEXES + */ + public static final Indexes INDEXES = new Indexes(); + + /** + * The class holding records for this type + */ + @Override + public Class getRecordType() { + return IndexesRecord.class; + } + + /** + * The column INFORMATION_SCHEMA.INDEXES.TABLE_CATALOG. + */ + public final TableField TABLE_CATALOG = createField("TABLE_CATALOG", org.jooq.impl.SQLDataType.VARCHAR.length(2147483647), this, ""); + + /** + * The column INFORMATION_SCHEMA.INDEXES.TABLE_SCHEMA. + */ + public final TableField TABLE_SCHEMA = createField("TABLE_SCHEMA", org.jooq.impl.SQLDataType.VARCHAR.length(2147483647), this, ""); + + /** + * The column INFORMATION_SCHEMA.INDEXES.TABLE_NAME. + */ + public final TableField TABLE_NAME = createField("TABLE_NAME", org.jooq.impl.SQLDataType.VARCHAR.length(2147483647), this, ""); + + /** + * The column INFORMATION_SCHEMA.INDEXES.NON_UNIQUE. + */ + public final TableField NON_UNIQUE = createField("NON_UNIQUE", org.jooq.impl.SQLDataType.BOOLEAN, this, ""); + + /** + * The column INFORMATION_SCHEMA.INDEXES.INDEX_NAME. + */ + public final TableField INDEX_NAME = createField("INDEX_NAME", org.jooq.impl.SQLDataType.VARCHAR.length(2147483647), this, ""); + + /** + * The column INFORMATION_SCHEMA.INDEXES.ORDINAL_POSITION. + */ + public final TableField ORDINAL_POSITION = createField("ORDINAL_POSITION", org.jooq.impl.SQLDataType.SMALLINT, this, ""); + + /** + * The column INFORMATION_SCHEMA.INDEXES.COLUMN_NAME. + */ + public final TableField COLUMN_NAME = createField("COLUMN_NAME", org.jooq.impl.SQLDataType.VARCHAR.length(2147483647), this, ""); + + /** + * The column INFORMATION_SCHEMA.INDEXES.CARDINALITY. + */ + public final TableField CARDINALITY = createField("CARDINALITY", org.jooq.impl.SQLDataType.INTEGER, this, ""); + + /** + * The column INFORMATION_SCHEMA.INDEXES.PRIMARY_KEY. + */ + public final TableField PRIMARY_KEY = createField("PRIMARY_KEY", org.jooq.impl.SQLDataType.BOOLEAN, this, ""); + + /** + * The column INFORMATION_SCHEMA.INDEXES.INDEX_TYPE_NAME. + */ + public final TableField INDEX_TYPE_NAME = createField("INDEX_TYPE_NAME", org.jooq.impl.SQLDataType.VARCHAR.length(2147483647), this, ""); + + /** + * The column INFORMATION_SCHEMA.INDEXES.IS_GENERATED. + */ + public final TableField IS_GENERATED = createField("IS_GENERATED", org.jooq.impl.SQLDataType.BOOLEAN, this, ""); + + /** + * The column INFORMATION_SCHEMA.INDEXES.INDEX_TYPE. + */ + public final TableField INDEX_TYPE = createField("INDEX_TYPE", org.jooq.impl.SQLDataType.SMALLINT, this, ""); + + /** + * The column INFORMATION_SCHEMA.INDEXES.ASC_OR_DESC. + */ + public final TableField ASC_OR_DESC = createField("ASC_OR_DESC", org.jooq.impl.SQLDataType.VARCHAR.length(2147483647), this, ""); + + /** + * The column INFORMATION_SCHEMA.INDEXES.PAGES. + */ + public final TableField PAGES = createField("PAGES", org.jooq.impl.SQLDataType.INTEGER, this, ""); + + /** + * The column INFORMATION_SCHEMA.INDEXES.FILTER_CONDITION. + */ + public final TableField FILTER_CONDITION = createField("FILTER_CONDITION", org.jooq.impl.SQLDataType.VARCHAR.length(2147483647), this, ""); + + /** + * The column INFORMATION_SCHEMA.INDEXES.REMARKS. + */ + public final TableField REMARKS = createField("REMARKS", org.jooq.impl.SQLDataType.VARCHAR.length(2147483647), this, ""); + + /** + * The column INFORMATION_SCHEMA.INDEXES.SQL. + */ + public final TableField SQL = createField("SQL", org.jooq.impl.SQLDataType.VARCHAR.length(2147483647), this, ""); + + /** + * The column INFORMATION_SCHEMA.INDEXES.ID. + */ + public final TableField ID = createField("ID", org.jooq.impl.SQLDataType.INTEGER, this, ""); + + /** + * The column INFORMATION_SCHEMA.INDEXES.SORT_TYPE. + */ + public final TableField SORT_TYPE = createField("SORT_TYPE", org.jooq.impl.SQLDataType.INTEGER, this, ""); + + /** + * The column INFORMATION_SCHEMA.INDEXES.CONSTRAINT_NAME. + */ + public final TableField CONSTRAINT_NAME = createField("CONSTRAINT_NAME", org.jooq.impl.SQLDataType.VARCHAR.length(2147483647), this, ""); + + /** + * The column INFORMATION_SCHEMA.INDEXES.INDEX_CLASS. + */ + public final TableField INDEX_CLASS = createField("INDEX_CLASS", org.jooq.impl.SQLDataType.VARCHAR.length(2147483647), this, ""); + + /** + * Create a INFORMATION_SCHEMA.INDEXES table reference + */ + public Indexes() { + this("INDEXES", null); + } + + /** + * Create an aliased INFORMATION_SCHEMA.INDEXES table reference + */ + public Indexes(String alias) { + this(alias, INDEXES); + } + + private Indexes(String alias, Table aliased) { + this(alias, aliased, null); + } + + private Indexes(String alias, Table aliased, Field[] parameters) { + super(alias, InformationSchema.INFORMATION_SCHEMA, aliased, parameters, ""); + } + + /** + * {@inheritDoc} + */ + @Override + public Indexes as(String alias) { + return new Indexes(alias, this); + } + + /** + * Rename this table + */ + public Indexes rename(String name) { + return new Indexes(name, null); + } +} diff --git a/jooq-spring/src/main/java/com/baeldung/jooq/introduction/db/information_schema/tables/Locks.java b/jooq-spring/src/main/java/com/baeldung/jooq/introduction/db/information_schema/tables/Locks.java new file mode 100644 index 0000000000..df9f900f5c --- /dev/null +++ b/jooq-spring/src/main/java/com/baeldung/jooq/introduction/db/information_schema/tables/Locks.java @@ -0,0 +1,102 @@ +/** + * This class is generated by jOOQ + */ +package com.baeldung.jooq.introduction.db.information_schema.tables; + + +import com.baeldung.jooq.introduction.db.information_schema.InformationSchema; +import com.baeldung.jooq.introduction.db.information_schema.tables.records.LocksRecord; + +import javax.annotation.Generated; + +import org.jooq.Field; +import org.jooq.Table; +import org.jooq.TableField; +import org.jooq.impl.TableImpl; + + +/** + * This class is generated by jOOQ. + */ +@Generated( + value = { + "http://www.jooq.org", + "jOOQ version:3.7.3" + }, + comments = "This class is generated by jOOQ" +) +@SuppressWarnings({ "all", "unchecked", "rawtypes" }) +public class Locks extends TableImpl { + + private static final long serialVersionUID = 169116031; + + /** + * The reference instance of INFORMATION_SCHEMA.LOCKS + */ + public static final Locks LOCKS = new Locks(); + + /** + * The class holding records for this type + */ + @Override + public Class getRecordType() { + return LocksRecord.class; + } + + /** + * The column INFORMATION_SCHEMA.LOCKS.TABLE_SCHEMA. + */ + public final TableField TABLE_SCHEMA = createField("TABLE_SCHEMA", org.jooq.impl.SQLDataType.VARCHAR.length(2147483647), this, ""); + + /** + * The column INFORMATION_SCHEMA.LOCKS.TABLE_NAME. + */ + public final TableField TABLE_NAME = createField("TABLE_NAME", org.jooq.impl.SQLDataType.VARCHAR.length(2147483647), this, ""); + + /** + * The column INFORMATION_SCHEMA.LOCKS.SESSION_ID. + */ + public final TableField SESSION_ID = createField("SESSION_ID", org.jooq.impl.SQLDataType.INTEGER, this, ""); + + /** + * The column INFORMATION_SCHEMA.LOCKS.LOCK_TYPE. + */ + public final TableField LOCK_TYPE = createField("LOCK_TYPE", org.jooq.impl.SQLDataType.VARCHAR.length(2147483647), this, ""); + + /** + * Create a INFORMATION_SCHEMA.LOCKS table reference + */ + public Locks() { + this("LOCKS", null); + } + + /** + * Create an aliased INFORMATION_SCHEMA.LOCKS table reference + */ + public Locks(String alias) { + this(alias, LOCKS); + } + + private Locks(String alias, Table aliased) { + this(alias, aliased, null); + } + + private Locks(String alias, Table aliased, Field[] parameters) { + super(alias, InformationSchema.INFORMATION_SCHEMA, aliased, parameters, ""); + } + + /** + * {@inheritDoc} + */ + @Override + public Locks as(String alias) { + return new Locks(alias, this); + } + + /** + * Rename this table + */ + public Locks rename(String name) { + return new Locks(name, null); + } +} diff --git a/jooq-spring/src/main/java/com/baeldung/jooq/introduction/db/information_schema/tables/QueryStatistics.java b/jooq-spring/src/main/java/com/baeldung/jooq/introduction/db/information_schema/tables/QueryStatistics.java new file mode 100644 index 0000000000..6c65dd7de8 --- /dev/null +++ b/jooq-spring/src/main/java/com/baeldung/jooq/introduction/db/information_schema/tables/QueryStatistics.java @@ -0,0 +1,142 @@ +/** + * This class is generated by jOOQ + */ +package com.baeldung.jooq.introduction.db.information_schema.tables; + + +import com.baeldung.jooq.introduction.db.information_schema.InformationSchema; +import com.baeldung.jooq.introduction.db.information_schema.tables.records.QueryStatisticsRecord; + +import javax.annotation.Generated; + +import org.jooq.Field; +import org.jooq.Table; +import org.jooq.TableField; +import org.jooq.impl.TableImpl; + + +/** + * This class is generated by jOOQ. + */ +@Generated( + value = { + "http://www.jooq.org", + "jOOQ version:3.7.3" + }, + comments = "This class is generated by jOOQ" +) +@SuppressWarnings({ "all", "unchecked", "rawtypes" }) +public class QueryStatistics extends TableImpl { + + private static final long serialVersionUID = -1610174414; + + /** + * The reference instance of INFORMATION_SCHEMA.QUERY_STATISTICS + */ + public static final QueryStatistics QUERY_STATISTICS = new QueryStatistics(); + + /** + * The class holding records for this type + */ + @Override + public Class getRecordType() { + return QueryStatisticsRecord.class; + } + + /** + * The column INFORMATION_SCHEMA.QUERY_STATISTICS.SQL_STATEMENT. + */ + public final TableField SQL_STATEMENT = createField("SQL_STATEMENT", org.jooq.impl.SQLDataType.VARCHAR.length(2147483647), this, ""); + + /** + * The column INFORMATION_SCHEMA.QUERY_STATISTICS.EXECUTION_COUNT. + */ + public final TableField EXECUTION_COUNT = createField("EXECUTION_COUNT", org.jooq.impl.SQLDataType.INTEGER, this, ""); + + /** + * The column INFORMATION_SCHEMA.QUERY_STATISTICS.MIN_EXECUTION_TIME. + */ + public final TableField MIN_EXECUTION_TIME = createField("MIN_EXECUTION_TIME", org.jooq.impl.SQLDataType.BIGINT, this, ""); + + /** + * The column INFORMATION_SCHEMA.QUERY_STATISTICS.MAX_EXECUTION_TIME. + */ + public final TableField MAX_EXECUTION_TIME = createField("MAX_EXECUTION_TIME", org.jooq.impl.SQLDataType.BIGINT, this, ""); + + /** + * The column INFORMATION_SCHEMA.QUERY_STATISTICS.CUMULATIVE_EXECUTION_TIME. + */ + public final TableField CUMULATIVE_EXECUTION_TIME = createField("CUMULATIVE_EXECUTION_TIME", org.jooq.impl.SQLDataType.BIGINT, this, ""); + + /** + * The column INFORMATION_SCHEMA.QUERY_STATISTICS.AVERAGE_EXECUTION_TIME. + */ + public final TableField AVERAGE_EXECUTION_TIME = createField("AVERAGE_EXECUTION_TIME", org.jooq.impl.SQLDataType.DOUBLE, this, ""); + + /** + * The column INFORMATION_SCHEMA.QUERY_STATISTICS.STD_DEV_EXECUTION_TIME. + */ + public final TableField STD_DEV_EXECUTION_TIME = createField("STD_DEV_EXECUTION_TIME", org.jooq.impl.SQLDataType.DOUBLE, this, ""); + + /** + * The column INFORMATION_SCHEMA.QUERY_STATISTICS.MIN_ROW_COUNT. + */ + public final TableField MIN_ROW_COUNT = createField("MIN_ROW_COUNT", org.jooq.impl.SQLDataType.INTEGER, this, ""); + + /** + * The column INFORMATION_SCHEMA.QUERY_STATISTICS.MAX_ROW_COUNT. + */ + public final TableField MAX_ROW_COUNT = createField("MAX_ROW_COUNT", org.jooq.impl.SQLDataType.INTEGER, this, ""); + + /** + * The column INFORMATION_SCHEMA.QUERY_STATISTICS.CUMULATIVE_ROW_COUNT. + */ + public final TableField CUMULATIVE_ROW_COUNT = createField("CUMULATIVE_ROW_COUNT", org.jooq.impl.SQLDataType.BIGINT, this, ""); + + /** + * The column INFORMATION_SCHEMA.QUERY_STATISTICS.AVERAGE_ROW_COUNT. + */ + public final TableField AVERAGE_ROW_COUNT = createField("AVERAGE_ROW_COUNT", org.jooq.impl.SQLDataType.DOUBLE, this, ""); + + /** + * The column INFORMATION_SCHEMA.QUERY_STATISTICS.STD_DEV_ROW_COUNT. + */ + public final TableField STD_DEV_ROW_COUNT = createField("STD_DEV_ROW_COUNT", org.jooq.impl.SQLDataType.DOUBLE, this, ""); + + /** + * Create a INFORMATION_SCHEMA.QUERY_STATISTICS table reference + */ + public QueryStatistics() { + this("QUERY_STATISTICS", null); + } + + /** + * Create an aliased INFORMATION_SCHEMA.QUERY_STATISTICS table reference + */ + public QueryStatistics(String alias) { + this(alias, QUERY_STATISTICS); + } + + private QueryStatistics(String alias, Table aliased) { + this(alias, aliased, null); + } + + private QueryStatistics(String alias, Table aliased, Field[] parameters) { + super(alias, InformationSchema.INFORMATION_SCHEMA, aliased, parameters, ""); + } + + /** + * {@inheritDoc} + */ + @Override + public QueryStatistics as(String alias) { + return new QueryStatistics(alias, this); + } + + /** + * Rename this table + */ + public QueryStatistics rename(String name) { + return new QueryStatistics(name, null); + } +} diff --git a/jooq-spring/src/main/java/com/baeldung/jooq/introduction/db/information_schema/tables/Rights.java b/jooq-spring/src/main/java/com/baeldung/jooq/introduction/db/information_schema/tables/Rights.java new file mode 100644 index 0000000000..e00c2d336e --- /dev/null +++ b/jooq-spring/src/main/java/com/baeldung/jooq/introduction/db/information_schema/tables/Rights.java @@ -0,0 +1,117 @@ +/** + * This class is generated by jOOQ + */ +package com.baeldung.jooq.introduction.db.information_schema.tables; + + +import com.baeldung.jooq.introduction.db.information_schema.InformationSchema; +import com.baeldung.jooq.introduction.db.information_schema.tables.records.RightsRecord; + +import javax.annotation.Generated; + +import org.jooq.Field; +import org.jooq.Table; +import org.jooq.TableField; +import org.jooq.impl.TableImpl; + + +/** + * This class is generated by jOOQ. + */ +@Generated( + value = { + "http://www.jooq.org", + "jOOQ version:3.7.3" + }, + comments = "This class is generated by jOOQ" +) +@SuppressWarnings({ "all", "unchecked", "rawtypes" }) +public class Rights extends TableImpl { + + private static final long serialVersionUID = -2076280081; + + /** + * The reference instance of INFORMATION_SCHEMA.RIGHTS + */ + public static final Rights RIGHTS = new Rights(); + + /** + * The class holding records for this type + */ + @Override + public Class getRecordType() { + return RightsRecord.class; + } + + /** + * The column INFORMATION_SCHEMA.RIGHTS.GRANTEE. + */ + public final TableField GRANTEE = createField("GRANTEE", org.jooq.impl.SQLDataType.VARCHAR.length(2147483647), this, ""); + + /** + * The column INFORMATION_SCHEMA.RIGHTS.GRANTEETYPE. + */ + public final TableField GRANTEETYPE = createField("GRANTEETYPE", org.jooq.impl.SQLDataType.VARCHAR.length(2147483647), this, ""); + + /** + * The column INFORMATION_SCHEMA.RIGHTS.GRANTEDROLE. + */ + public final TableField GRANTEDROLE = createField("GRANTEDROLE", org.jooq.impl.SQLDataType.VARCHAR.length(2147483647), this, ""); + + /** + * The column INFORMATION_SCHEMA.RIGHTS.RIGHTS. + */ + public final TableField RIGHTS_ = createField("RIGHTS", org.jooq.impl.SQLDataType.VARCHAR.length(2147483647), this, ""); + + /** + * The column INFORMATION_SCHEMA.RIGHTS.TABLE_SCHEMA. + */ + public final TableField TABLE_SCHEMA = createField("TABLE_SCHEMA", org.jooq.impl.SQLDataType.VARCHAR.length(2147483647), this, ""); + + /** + * The column INFORMATION_SCHEMA.RIGHTS.TABLE_NAME. + */ + public final TableField TABLE_NAME = createField("TABLE_NAME", org.jooq.impl.SQLDataType.VARCHAR.length(2147483647), this, ""); + + /** + * The column INFORMATION_SCHEMA.RIGHTS.ID. + */ + public final TableField ID = createField("ID", org.jooq.impl.SQLDataType.INTEGER, this, ""); + + /** + * Create a INFORMATION_SCHEMA.RIGHTS table reference + */ + public Rights() { + this("RIGHTS", null); + } + + /** + * Create an aliased INFORMATION_SCHEMA.RIGHTS table reference + */ + public Rights(String alias) { + this(alias, RIGHTS); + } + + private Rights(String alias, Table aliased) { + this(alias, aliased, null); + } + + private Rights(String alias, Table aliased, Field[] parameters) { + super(alias, InformationSchema.INFORMATION_SCHEMA, aliased, parameters, ""); + } + + /** + * {@inheritDoc} + */ + @Override + public Rights as(String alias) { + return new Rights(alias, this); + } + + /** + * Rename this table + */ + public Rights rename(String name) { + return new Rights(name, null); + } +} diff --git a/jooq-spring/src/main/java/com/baeldung/jooq/introduction/db/information_schema/tables/Roles.java b/jooq-spring/src/main/java/com/baeldung/jooq/introduction/db/information_schema/tables/Roles.java new file mode 100644 index 0000000000..74a394945a --- /dev/null +++ b/jooq-spring/src/main/java/com/baeldung/jooq/introduction/db/information_schema/tables/Roles.java @@ -0,0 +1,97 @@ +/** + * This class is generated by jOOQ + */ +package com.baeldung.jooq.introduction.db.information_schema.tables; + + +import com.baeldung.jooq.introduction.db.information_schema.InformationSchema; +import com.baeldung.jooq.introduction.db.information_schema.tables.records.RolesRecord; + +import javax.annotation.Generated; + +import org.jooq.Field; +import org.jooq.Table; +import org.jooq.TableField; +import org.jooq.impl.TableImpl; + + +/** + * This class is generated by jOOQ. + */ +@Generated( + value = { + "http://www.jooq.org", + "jOOQ version:3.7.3" + }, + comments = "This class is generated by jOOQ" +) +@SuppressWarnings({ "all", "unchecked", "rawtypes" }) +public class Roles extends TableImpl { + + private static final long serialVersionUID = 1847269376; + + /** + * The reference instance of INFORMATION_SCHEMA.ROLES + */ + public static final Roles ROLES = new Roles(); + + /** + * The class holding records for this type + */ + @Override + public Class getRecordType() { + return RolesRecord.class; + } + + /** + * The column INFORMATION_SCHEMA.ROLES.NAME. + */ + public final TableField NAME = createField("NAME", org.jooq.impl.SQLDataType.VARCHAR.length(2147483647), this, ""); + + /** + * The column INFORMATION_SCHEMA.ROLES.REMARKS. + */ + public final TableField REMARKS = createField("REMARKS", org.jooq.impl.SQLDataType.VARCHAR.length(2147483647), this, ""); + + /** + * The column INFORMATION_SCHEMA.ROLES.ID. + */ + public final TableField ID = createField("ID", org.jooq.impl.SQLDataType.INTEGER, this, ""); + + /** + * Create a INFORMATION_SCHEMA.ROLES table reference + */ + public Roles() { + this("ROLES", null); + } + + /** + * Create an aliased INFORMATION_SCHEMA.ROLES table reference + */ + public Roles(String alias) { + this(alias, ROLES); + } + + private Roles(String alias, Table aliased) { + this(alias, aliased, null); + } + + private Roles(String alias, Table aliased, Field[] parameters) { + super(alias, InformationSchema.INFORMATION_SCHEMA, aliased, parameters, ""); + } + + /** + * {@inheritDoc} + */ + @Override + public Roles as(String alias) { + return new Roles(alias, this); + } + + /** + * Rename this table + */ + public Roles rename(String name) { + return new Roles(name, null); + } +} diff --git a/jooq-spring/src/main/java/com/baeldung/jooq/introduction/db/information_schema/tables/Schemata.java b/jooq-spring/src/main/java/com/baeldung/jooq/introduction/db/information_schema/tables/Schemata.java new file mode 100644 index 0000000000..b084c3501c --- /dev/null +++ b/jooq-spring/src/main/java/com/baeldung/jooq/introduction/db/information_schema/tables/Schemata.java @@ -0,0 +1,122 @@ +/** + * This class is generated by jOOQ + */ +package com.baeldung.jooq.introduction.db.information_schema.tables; + + +import com.baeldung.jooq.introduction.db.information_schema.InformationSchema; +import com.baeldung.jooq.introduction.db.information_schema.tables.records.SchemataRecord; + +import javax.annotation.Generated; + +import org.jooq.Field; +import org.jooq.Table; +import org.jooq.TableField; +import org.jooq.impl.TableImpl; + + +/** + * This class is generated by jOOQ. + */ +@Generated( + value = { + "http://www.jooq.org", + "jOOQ version:3.7.3" + }, + comments = "This class is generated by jOOQ" +) +@SuppressWarnings({ "all", "unchecked", "rawtypes" }) +public class Schemata extends TableImpl { + + private static final long serialVersionUID = -1029782582; + + /** + * The reference instance of INFORMATION_SCHEMA.SCHEMATA + */ + public static final Schemata SCHEMATA = new Schemata(); + + /** + * The class holding records for this type + */ + @Override + public Class getRecordType() { + return SchemataRecord.class; + } + + /** + * The column INFORMATION_SCHEMA.SCHEMATA.CATALOG_NAME. + */ + public final TableField CATALOG_NAME = createField("CATALOG_NAME", org.jooq.impl.SQLDataType.VARCHAR.length(2147483647), this, ""); + + /** + * The column INFORMATION_SCHEMA.SCHEMATA.SCHEMA_NAME. + */ + public final TableField SCHEMA_NAME = createField("SCHEMA_NAME", org.jooq.impl.SQLDataType.VARCHAR.length(2147483647), this, ""); + + /** + * The column INFORMATION_SCHEMA.SCHEMATA.SCHEMA_OWNER. + */ + public final TableField SCHEMA_OWNER = createField("SCHEMA_OWNER", org.jooq.impl.SQLDataType.VARCHAR.length(2147483647), this, ""); + + /** + * The column INFORMATION_SCHEMA.SCHEMATA.DEFAULT_CHARACTER_SET_NAME. + */ + public final TableField DEFAULT_CHARACTER_SET_NAME = createField("DEFAULT_CHARACTER_SET_NAME", org.jooq.impl.SQLDataType.VARCHAR.length(2147483647), this, ""); + + /** + * The column INFORMATION_SCHEMA.SCHEMATA.DEFAULT_COLLATION_NAME. + */ + public final TableField DEFAULT_COLLATION_NAME = createField("DEFAULT_COLLATION_NAME", org.jooq.impl.SQLDataType.VARCHAR.length(2147483647), this, ""); + + /** + * The column INFORMATION_SCHEMA.SCHEMATA.IS_DEFAULT. + */ + public final TableField IS_DEFAULT = createField("IS_DEFAULT", org.jooq.impl.SQLDataType.BOOLEAN, this, ""); + + /** + * The column INFORMATION_SCHEMA.SCHEMATA.REMARKS. + */ + public final TableField REMARKS = createField("REMARKS", org.jooq.impl.SQLDataType.VARCHAR.length(2147483647), this, ""); + + /** + * The column INFORMATION_SCHEMA.SCHEMATA.ID. + */ + public final TableField ID = createField("ID", org.jooq.impl.SQLDataType.INTEGER, this, ""); + + /** + * Create a INFORMATION_SCHEMA.SCHEMATA table reference + */ + public Schemata() { + this("SCHEMATA", null); + } + + /** + * Create an aliased INFORMATION_SCHEMA.SCHEMATA table reference + */ + public Schemata(String alias) { + this(alias, SCHEMATA); + } + + private Schemata(String alias, Table aliased) { + this(alias, aliased, null); + } + + private Schemata(String alias, Table aliased, Field[] parameters) { + super(alias, InformationSchema.INFORMATION_SCHEMA, aliased, parameters, ""); + } + + /** + * {@inheritDoc} + */ + @Override + public Schemata as(String alias) { + return new Schemata(alias, this); + } + + /** + * Rename this table + */ + public Schemata rename(String name) { + return new Schemata(name, null); + } +} diff --git a/jooq-spring/src/main/java/com/baeldung/jooq/introduction/db/information_schema/tables/Sequences.java b/jooq-spring/src/main/java/com/baeldung/jooq/introduction/db/information_schema/tables/Sequences.java new file mode 100644 index 0000000000..26c2da9080 --- /dev/null +++ b/jooq-spring/src/main/java/com/baeldung/jooq/introduction/db/information_schema/tables/Sequences.java @@ -0,0 +1,142 @@ +/** + * This class is generated by jOOQ + */ +package com.baeldung.jooq.introduction.db.information_schema.tables; + + +import com.baeldung.jooq.introduction.db.information_schema.InformationSchema; +import com.baeldung.jooq.introduction.db.information_schema.tables.records.SequencesRecord; + +import javax.annotation.Generated; + +import org.jooq.Field; +import org.jooq.Table; +import org.jooq.TableField; +import org.jooq.impl.TableImpl; + + +/** + * This class is generated by jOOQ. + */ +@Generated( + value = { + "http://www.jooq.org", + "jOOQ version:3.7.3" + }, + comments = "This class is generated by jOOQ" +) +@SuppressWarnings({ "all", "unchecked", "rawtypes" }) +public class Sequences extends TableImpl { + + private static final long serialVersionUID = -1302373749; + + /** + * The reference instance of INFORMATION_SCHEMA.SEQUENCES + */ + public static final Sequences SEQUENCES = new Sequences(); + + /** + * The class holding records for this type + */ + @Override + public Class getRecordType() { + return SequencesRecord.class; + } + + /** + * The column INFORMATION_SCHEMA.SEQUENCES.SEQUENCE_CATALOG. + */ + public final TableField SEQUENCE_CATALOG = createField("SEQUENCE_CATALOG", org.jooq.impl.SQLDataType.VARCHAR.length(2147483647), this, ""); + + /** + * The column INFORMATION_SCHEMA.SEQUENCES.SEQUENCE_SCHEMA. + */ + public final TableField SEQUENCE_SCHEMA = createField("SEQUENCE_SCHEMA", org.jooq.impl.SQLDataType.VARCHAR.length(2147483647), this, ""); + + /** + * The column INFORMATION_SCHEMA.SEQUENCES.SEQUENCE_NAME. + */ + public final TableField SEQUENCE_NAME = createField("SEQUENCE_NAME", org.jooq.impl.SQLDataType.VARCHAR.length(2147483647), this, ""); + + /** + * The column INFORMATION_SCHEMA.SEQUENCES.CURRENT_VALUE. + */ + public final TableField CURRENT_VALUE = createField("CURRENT_VALUE", org.jooq.impl.SQLDataType.BIGINT, this, ""); + + /** + * The column INFORMATION_SCHEMA.SEQUENCES.INCREMENT. + */ + public final TableField INCREMENT = createField("INCREMENT", org.jooq.impl.SQLDataType.BIGINT, this, ""); + + /** + * The column INFORMATION_SCHEMA.SEQUENCES.IS_GENERATED. + */ + public final TableField IS_GENERATED = createField("IS_GENERATED", org.jooq.impl.SQLDataType.BOOLEAN, this, ""); + + /** + * The column INFORMATION_SCHEMA.SEQUENCES.REMARKS. + */ + public final TableField REMARKS = createField("REMARKS", org.jooq.impl.SQLDataType.VARCHAR.length(2147483647), this, ""); + + /** + * The column INFORMATION_SCHEMA.SEQUENCES.CACHE. + */ + public final TableField CACHE = createField("CACHE", org.jooq.impl.SQLDataType.BIGINT, this, ""); + + /** + * The column INFORMATION_SCHEMA.SEQUENCES.MIN_VALUE. + */ + public final TableField MIN_VALUE = createField("MIN_VALUE", org.jooq.impl.SQLDataType.BIGINT, this, ""); + + /** + * The column INFORMATION_SCHEMA.SEQUENCES.MAX_VALUE. + */ + public final TableField MAX_VALUE = createField("MAX_VALUE", org.jooq.impl.SQLDataType.BIGINT, this, ""); + + /** + * The column INFORMATION_SCHEMA.SEQUENCES.IS_CYCLE. + */ + public final TableField IS_CYCLE = createField("IS_CYCLE", org.jooq.impl.SQLDataType.BOOLEAN, this, ""); + + /** + * The column INFORMATION_SCHEMA.SEQUENCES.ID. + */ + public final TableField ID = createField("ID", org.jooq.impl.SQLDataType.INTEGER, this, ""); + + /** + * Create a INFORMATION_SCHEMA.SEQUENCES table reference + */ + public Sequences() { + this("SEQUENCES", null); + } + + /** + * Create an aliased INFORMATION_SCHEMA.SEQUENCES table reference + */ + public Sequences(String alias) { + this(alias, SEQUENCES); + } + + private Sequences(String alias, Table aliased) { + this(alias, aliased, null); + } + + private Sequences(String alias, Table aliased, Field[] parameters) { + super(alias, InformationSchema.INFORMATION_SCHEMA, aliased, parameters, ""); + } + + /** + * {@inheritDoc} + */ + @Override + public Sequences as(String alias) { + return new Sequences(alias, this); + } + + /** + * Rename this table + */ + public Sequences rename(String name) { + return new Sequences(name, null); + } +} diff --git a/jooq-spring/src/main/java/com/baeldung/jooq/introduction/db/information_schema/tables/SessionState.java b/jooq-spring/src/main/java/com/baeldung/jooq/introduction/db/information_schema/tables/SessionState.java new file mode 100644 index 0000000000..78e0ff743a --- /dev/null +++ b/jooq-spring/src/main/java/com/baeldung/jooq/introduction/db/information_schema/tables/SessionState.java @@ -0,0 +1,92 @@ +/** + * This class is generated by jOOQ + */ +package com.baeldung.jooq.introduction.db.information_schema.tables; + + +import com.baeldung.jooq.introduction.db.information_schema.InformationSchema; +import com.baeldung.jooq.introduction.db.information_schema.tables.records.SessionStateRecord; + +import javax.annotation.Generated; + +import org.jooq.Field; +import org.jooq.Table; +import org.jooq.TableField; +import org.jooq.impl.TableImpl; + + +/** + * This class is generated by jOOQ. + */ +@Generated( + value = { + "http://www.jooq.org", + "jOOQ version:3.7.3" + }, + comments = "This class is generated by jOOQ" +) +@SuppressWarnings({ "all", "unchecked", "rawtypes" }) +public class SessionState extends TableImpl { + + private static final long serialVersionUID = 919891380; + + /** + * The reference instance of INFORMATION_SCHEMA.SESSION_STATE + */ + public static final SessionState SESSION_STATE = new SessionState(); + + /** + * The class holding records for this type + */ + @Override + public Class getRecordType() { + return SessionStateRecord.class; + } + + /** + * The column INFORMATION_SCHEMA.SESSION_STATE.KEY. + */ + public final TableField KEY = createField("KEY", org.jooq.impl.SQLDataType.VARCHAR.length(2147483647), this, ""); + + /** + * The column INFORMATION_SCHEMA.SESSION_STATE.SQL. + */ + public final TableField SQL = createField("SQL", org.jooq.impl.SQLDataType.VARCHAR.length(2147483647), this, ""); + + /** + * Create a INFORMATION_SCHEMA.SESSION_STATE table reference + */ + public SessionState() { + this("SESSION_STATE", null); + } + + /** + * Create an aliased INFORMATION_SCHEMA.SESSION_STATE table reference + */ + public SessionState(String alias) { + this(alias, SESSION_STATE); + } + + private SessionState(String alias, Table aliased) { + this(alias, aliased, null); + } + + private SessionState(String alias, Table aliased, Field[] parameters) { + super(alias, InformationSchema.INFORMATION_SCHEMA, aliased, parameters, ""); + } + + /** + * {@inheritDoc} + */ + @Override + public SessionState as(String alias) { + return new SessionState(alias, this); + } + + /** + * Rename this table + */ + public SessionState rename(String name) { + return new SessionState(name, null); + } +} diff --git a/jooq-spring/src/main/java/com/baeldung/jooq/introduction/db/information_schema/tables/Sessions.java b/jooq-spring/src/main/java/com/baeldung/jooq/introduction/db/information_schema/tables/Sessions.java new file mode 100644 index 0000000000..22166987d9 --- /dev/null +++ b/jooq-spring/src/main/java/com/baeldung/jooq/introduction/db/information_schema/tables/Sessions.java @@ -0,0 +1,112 @@ +/** + * This class is generated by jOOQ + */ +package com.baeldung.jooq.introduction.db.information_schema.tables; + + +import com.baeldung.jooq.introduction.db.information_schema.InformationSchema; +import com.baeldung.jooq.introduction.db.information_schema.tables.records.SessionsRecord; + +import javax.annotation.Generated; + +import org.jooq.Field; +import org.jooq.Table; +import org.jooq.TableField; +import org.jooq.impl.TableImpl; + + +/** + * This class is generated by jOOQ. + */ +@Generated( + value = { + "http://www.jooq.org", + "jOOQ version:3.7.3" + }, + comments = "This class is generated by jOOQ" +) +@SuppressWarnings({ "all", "unchecked", "rawtypes" }) +public class Sessions extends TableImpl { + + private static final long serialVersionUID = -975884629; + + /** + * The reference instance of INFORMATION_SCHEMA.SESSIONS + */ + public static final Sessions SESSIONS = new Sessions(); + + /** + * The class holding records for this type + */ + @Override + public Class getRecordType() { + return SessionsRecord.class; + } + + /** + * The column INFORMATION_SCHEMA.SESSIONS.ID. + */ + public final TableField ID = createField("ID", org.jooq.impl.SQLDataType.INTEGER, this, ""); + + /** + * The column INFORMATION_SCHEMA.SESSIONS.USER_NAME. + */ + public final TableField USER_NAME = createField("USER_NAME", org.jooq.impl.SQLDataType.VARCHAR.length(2147483647), this, ""); + + /** + * The column INFORMATION_SCHEMA.SESSIONS.SESSION_START. + */ + public final TableField SESSION_START = createField("SESSION_START", org.jooq.impl.SQLDataType.VARCHAR.length(2147483647), this, ""); + + /** + * The column INFORMATION_SCHEMA.SESSIONS.STATEMENT. + */ + public final TableField STATEMENT = createField("STATEMENT", org.jooq.impl.SQLDataType.VARCHAR.length(2147483647), this, ""); + + /** + * The column INFORMATION_SCHEMA.SESSIONS.STATEMENT_START. + */ + public final TableField STATEMENT_START = createField("STATEMENT_START", org.jooq.impl.SQLDataType.VARCHAR.length(2147483647), this, ""); + + /** + * The column INFORMATION_SCHEMA.SESSIONS.CONTAINS_UNCOMMITTED. + */ + public final TableField CONTAINS_UNCOMMITTED = createField("CONTAINS_UNCOMMITTED", org.jooq.impl.SQLDataType.VARCHAR.length(2147483647), this, ""); + + /** + * Create a INFORMATION_SCHEMA.SESSIONS table reference + */ + public Sessions() { + this("SESSIONS", null); + } + + /** + * Create an aliased INFORMATION_SCHEMA.SESSIONS table reference + */ + public Sessions(String alias) { + this(alias, SESSIONS); + } + + private Sessions(String alias, Table aliased) { + this(alias, aliased, null); + } + + private Sessions(String alias, Table aliased, Field[] parameters) { + super(alias, InformationSchema.INFORMATION_SCHEMA, aliased, parameters, ""); + } + + /** + * {@inheritDoc} + */ + @Override + public Sessions as(String alias) { + return new Sessions(alias, this); + } + + /** + * Rename this table + */ + public Sessions rename(String name) { + return new Sessions(name, null); + } +} diff --git a/jooq-spring/src/main/java/com/baeldung/jooq/introduction/db/information_schema/tables/Settings.java b/jooq-spring/src/main/java/com/baeldung/jooq/introduction/db/information_schema/tables/Settings.java new file mode 100644 index 0000000000..caca515c67 --- /dev/null +++ b/jooq-spring/src/main/java/com/baeldung/jooq/introduction/db/information_schema/tables/Settings.java @@ -0,0 +1,92 @@ +/** + * This class is generated by jOOQ + */ +package com.baeldung.jooq.introduction.db.information_schema.tables; + + +import com.baeldung.jooq.introduction.db.information_schema.InformationSchema; +import com.baeldung.jooq.introduction.db.information_schema.tables.records.SettingsRecord; + +import javax.annotation.Generated; + +import org.jooq.Field; +import org.jooq.Table; +import org.jooq.TableField; +import org.jooq.impl.TableImpl; + + +/** + * This class is generated by jOOQ. + */ +@Generated( + value = { + "http://www.jooq.org", + "jOOQ version:3.7.3" + }, + comments = "This class is generated by jOOQ" +) +@SuppressWarnings({ "all", "unchecked", "rawtypes" }) +public class Settings extends TableImpl { + + private static final long serialVersionUID = -1983664507; + + /** + * The reference instance of INFORMATION_SCHEMA.SETTINGS + */ + public static final Settings SETTINGS = new Settings(); + + /** + * The class holding records for this type + */ + @Override + public Class getRecordType() { + return SettingsRecord.class; + } + + /** + * The column INFORMATION_SCHEMA.SETTINGS.NAME. + */ + public final TableField NAME = createField("NAME", org.jooq.impl.SQLDataType.VARCHAR.length(2147483647), this, ""); + + /** + * The column INFORMATION_SCHEMA.SETTINGS.VALUE. + */ + public final TableField VALUE = createField("VALUE", org.jooq.impl.SQLDataType.VARCHAR.length(2147483647), this, ""); + + /** + * Create a INFORMATION_SCHEMA.SETTINGS table reference + */ + public Settings() { + this("SETTINGS", null); + } + + /** + * Create an aliased INFORMATION_SCHEMA.SETTINGS table reference + */ + public Settings(String alias) { + this(alias, SETTINGS); + } + + private Settings(String alias, Table aliased) { + this(alias, aliased, null); + } + + private Settings(String alias, Table aliased, Field[] parameters) { + super(alias, InformationSchema.INFORMATION_SCHEMA, aliased, parameters, ""); + } + + /** + * {@inheritDoc} + */ + @Override + public Settings as(String alias) { + return new Settings(alias, this); + } + + /** + * Rename this table + */ + public Settings rename(String name) { + return new Settings(name, null); + } +} diff --git a/jooq-spring/src/main/java/com/baeldung/jooq/introduction/db/information_schema/tables/TablePrivileges.java b/jooq-spring/src/main/java/com/baeldung/jooq/introduction/db/information_schema/tables/TablePrivileges.java new file mode 100644 index 0000000000..16104aa4bb --- /dev/null +++ b/jooq-spring/src/main/java/com/baeldung/jooq/introduction/db/information_schema/tables/TablePrivileges.java @@ -0,0 +1,117 @@ +/** + * This class is generated by jOOQ + */ +package com.baeldung.jooq.introduction.db.information_schema.tables; + + +import com.baeldung.jooq.introduction.db.information_schema.InformationSchema; +import com.baeldung.jooq.introduction.db.information_schema.tables.records.TablePrivilegesRecord; + +import javax.annotation.Generated; + +import org.jooq.Field; +import org.jooq.Table; +import org.jooq.TableField; +import org.jooq.impl.TableImpl; + + +/** + * This class is generated by jOOQ. + */ +@Generated( + value = { + "http://www.jooq.org", + "jOOQ version:3.7.3" + }, + comments = "This class is generated by jOOQ" +) +@SuppressWarnings({ "all", "unchecked", "rawtypes" }) +public class TablePrivileges extends TableImpl { + + private static final long serialVersionUID = -270543696; + + /** + * The reference instance of INFORMATION_SCHEMA.TABLE_PRIVILEGES + */ + public static final TablePrivileges TABLE_PRIVILEGES = new TablePrivileges(); + + /** + * The class holding records for this type + */ + @Override + public Class getRecordType() { + return TablePrivilegesRecord.class; + } + + /** + * The column INFORMATION_SCHEMA.TABLE_PRIVILEGES.GRANTOR. + */ + public final TableField GRANTOR = createField("GRANTOR", org.jooq.impl.SQLDataType.VARCHAR.length(2147483647), this, ""); + + /** + * The column INFORMATION_SCHEMA.TABLE_PRIVILEGES.GRANTEE. + */ + public final TableField GRANTEE = createField("GRANTEE", org.jooq.impl.SQLDataType.VARCHAR.length(2147483647), this, ""); + + /** + * The column INFORMATION_SCHEMA.TABLE_PRIVILEGES.TABLE_CATALOG. + */ + public final TableField TABLE_CATALOG = createField("TABLE_CATALOG", org.jooq.impl.SQLDataType.VARCHAR.length(2147483647), this, ""); + + /** + * The column INFORMATION_SCHEMA.TABLE_PRIVILEGES.TABLE_SCHEMA. + */ + public final TableField TABLE_SCHEMA = createField("TABLE_SCHEMA", org.jooq.impl.SQLDataType.VARCHAR.length(2147483647), this, ""); + + /** + * The column INFORMATION_SCHEMA.TABLE_PRIVILEGES.TABLE_NAME. + */ + public final TableField TABLE_NAME = createField("TABLE_NAME", org.jooq.impl.SQLDataType.VARCHAR.length(2147483647), this, ""); + + /** + * The column INFORMATION_SCHEMA.TABLE_PRIVILEGES.PRIVILEGE_TYPE. + */ + public final TableField PRIVILEGE_TYPE = createField("PRIVILEGE_TYPE", org.jooq.impl.SQLDataType.VARCHAR.length(2147483647), this, ""); + + /** + * The column INFORMATION_SCHEMA.TABLE_PRIVILEGES.IS_GRANTABLE. + */ + public final TableField IS_GRANTABLE = createField("IS_GRANTABLE", org.jooq.impl.SQLDataType.VARCHAR.length(2147483647), this, ""); + + /** + * Create a INFORMATION_SCHEMA.TABLE_PRIVILEGES table reference + */ + public TablePrivileges() { + this("TABLE_PRIVILEGES", null); + } + + /** + * Create an aliased INFORMATION_SCHEMA.TABLE_PRIVILEGES table reference + */ + public TablePrivileges(String alias) { + this(alias, TABLE_PRIVILEGES); + } + + private TablePrivileges(String alias, Table aliased) { + this(alias, aliased, null); + } + + private TablePrivileges(String alias, Table aliased, Field[] parameters) { + super(alias, InformationSchema.INFORMATION_SCHEMA, aliased, parameters, ""); + } + + /** + * {@inheritDoc} + */ + @Override + public TablePrivileges as(String alias) { + return new TablePrivileges(alias, this); + } + + /** + * Rename this table + */ + public TablePrivileges rename(String name) { + return new TablePrivileges(name, null); + } +} diff --git a/jooq-spring/src/main/java/com/baeldung/jooq/introduction/db/information_schema/tables/TableTypes.java b/jooq-spring/src/main/java/com/baeldung/jooq/introduction/db/information_schema/tables/TableTypes.java new file mode 100644 index 0000000000..6901b10786 --- /dev/null +++ b/jooq-spring/src/main/java/com/baeldung/jooq/introduction/db/information_schema/tables/TableTypes.java @@ -0,0 +1,87 @@ +/** + * This class is generated by jOOQ + */ +package com.baeldung.jooq.introduction.db.information_schema.tables; + + +import com.baeldung.jooq.introduction.db.information_schema.InformationSchema; +import com.baeldung.jooq.introduction.db.information_schema.tables.records.TableTypesRecord; + +import javax.annotation.Generated; + +import org.jooq.Field; +import org.jooq.Table; +import org.jooq.TableField; +import org.jooq.impl.TableImpl; + + +/** + * This class is generated by jOOQ. + */ +@Generated( + value = { + "http://www.jooq.org", + "jOOQ version:3.7.3" + }, + comments = "This class is generated by jOOQ" +) +@SuppressWarnings({ "all", "unchecked", "rawtypes" }) +public class TableTypes extends TableImpl { + + private static final long serialVersionUID = 676525061; + + /** + * The reference instance of INFORMATION_SCHEMA.TABLE_TYPES + */ + public static final TableTypes TABLE_TYPES = new TableTypes(); + + /** + * The class holding records for this type + */ + @Override + public Class getRecordType() { + return TableTypesRecord.class; + } + + /** + * The column INFORMATION_SCHEMA.TABLE_TYPES.TYPE. + */ + public final TableField TYPE = createField("TYPE", org.jooq.impl.SQLDataType.VARCHAR.length(2147483647), this, ""); + + /** + * Create a INFORMATION_SCHEMA.TABLE_TYPES table reference + */ + public TableTypes() { + this("TABLE_TYPES", null); + } + + /** + * Create an aliased INFORMATION_SCHEMA.TABLE_TYPES table reference + */ + public TableTypes(String alias) { + this(alias, TABLE_TYPES); + } + + private TableTypes(String alias, Table aliased) { + this(alias, aliased, null); + } + + private TableTypes(String alias, Table aliased, Field[] parameters) { + super(alias, InformationSchema.INFORMATION_SCHEMA, aliased, parameters, ""); + } + + /** + * {@inheritDoc} + */ + @Override + public TableTypes as(String alias) { + return new TableTypes(alias, this); + } + + /** + * Rename this table + */ + public TableTypes rename(String name) { + return new TableTypes(name, null); + } +} diff --git a/jooq-spring/src/main/java/com/baeldung/jooq/introduction/db/information_schema/tables/Tables.java b/jooq-spring/src/main/java/com/baeldung/jooq/introduction/db/information_schema/tables/Tables.java new file mode 100644 index 0000000000..f0927166a5 --- /dev/null +++ b/jooq-spring/src/main/java/com/baeldung/jooq/introduction/db/information_schema/tables/Tables.java @@ -0,0 +1,142 @@ +/** + * This class is generated by jOOQ + */ +package com.baeldung.jooq.introduction.db.information_schema.tables; + + +import com.baeldung.jooq.introduction.db.information_schema.InformationSchema; +import com.baeldung.jooq.introduction.db.information_schema.tables.records.TablesRecord; + +import javax.annotation.Generated; + +import org.jooq.Field; +import org.jooq.Table; +import org.jooq.TableField; +import org.jooq.impl.TableImpl; + + +/** + * This class is generated by jOOQ. + */ +@Generated( + value = { + "http://www.jooq.org", + "jOOQ version:3.7.3" + }, + comments = "This class is generated by jOOQ" +) +@SuppressWarnings({ "all", "unchecked", "rawtypes" }) +public class Tables extends TableImpl { + + private static final long serialVersionUID = 123051350; + + /** + * The reference instance of INFORMATION_SCHEMA.TABLES + */ + public static final Tables TABLES = new Tables(); + + /** + * The class holding records for this type + */ + @Override + public Class getRecordType() { + return TablesRecord.class; + } + + /** + * The column INFORMATION_SCHEMA.TABLES.TABLE_CATALOG. + */ + public final TableField TABLE_CATALOG = createField("TABLE_CATALOG", org.jooq.impl.SQLDataType.VARCHAR.length(2147483647), this, ""); + + /** + * The column INFORMATION_SCHEMA.TABLES.TABLE_SCHEMA. + */ + public final TableField TABLE_SCHEMA = createField("TABLE_SCHEMA", org.jooq.impl.SQLDataType.VARCHAR.length(2147483647), this, ""); + + /** + * The column INFORMATION_SCHEMA.TABLES.TABLE_NAME. + */ + public final TableField TABLE_NAME = createField("TABLE_NAME", org.jooq.impl.SQLDataType.VARCHAR.length(2147483647), this, ""); + + /** + * The column INFORMATION_SCHEMA.TABLES.TABLE_TYPE. + */ + public final TableField TABLE_TYPE = createField("TABLE_TYPE", org.jooq.impl.SQLDataType.VARCHAR.length(2147483647), this, ""); + + /** + * The column INFORMATION_SCHEMA.TABLES.STORAGE_TYPE. + */ + public final TableField STORAGE_TYPE = createField("STORAGE_TYPE", org.jooq.impl.SQLDataType.VARCHAR.length(2147483647), this, ""); + + /** + * The column INFORMATION_SCHEMA.TABLES.SQL. + */ + public final TableField SQL = createField("SQL", org.jooq.impl.SQLDataType.VARCHAR.length(2147483647), this, ""); + + /** + * The column INFORMATION_SCHEMA.TABLES.REMARKS. + */ + public final TableField REMARKS = createField("REMARKS", org.jooq.impl.SQLDataType.VARCHAR.length(2147483647), this, ""); + + /** + * The column INFORMATION_SCHEMA.TABLES.LAST_MODIFICATION. + */ + public final TableField LAST_MODIFICATION = createField("LAST_MODIFICATION", org.jooq.impl.SQLDataType.BIGINT, this, ""); + + /** + * The column INFORMATION_SCHEMA.TABLES.ID. + */ + public final TableField ID = createField("ID", org.jooq.impl.SQLDataType.INTEGER, this, ""); + + /** + * The column INFORMATION_SCHEMA.TABLES.TYPE_NAME. + */ + public final TableField TYPE_NAME = createField("TYPE_NAME", org.jooq.impl.SQLDataType.VARCHAR.length(2147483647), this, ""); + + /** + * The column INFORMATION_SCHEMA.TABLES.TABLE_CLASS. + */ + public final TableField TABLE_CLASS = createField("TABLE_CLASS", org.jooq.impl.SQLDataType.VARCHAR.length(2147483647), this, ""); + + /** + * The column INFORMATION_SCHEMA.TABLES.ROW_COUNT_ESTIMATE. + */ + public final TableField ROW_COUNT_ESTIMATE = createField("ROW_COUNT_ESTIMATE", org.jooq.impl.SQLDataType.BIGINT, this, ""); + + /** + * Create a INFORMATION_SCHEMA.TABLES table reference + */ + public Tables() { + this("TABLES", null); + } + + /** + * Create an aliased INFORMATION_SCHEMA.TABLES table reference + */ + public Tables(String alias) { + this(alias, TABLES); + } + + private Tables(String alias, Table aliased) { + this(alias, aliased, null); + } + + private Tables(String alias, Table aliased, Field[] parameters) { + super(alias, InformationSchema.INFORMATION_SCHEMA, aliased, parameters, ""); + } + + /** + * {@inheritDoc} + */ + @Override + public Tables as(String alias) { + return new Tables(alias, this); + } + + /** + * Rename this table + */ + public Tables rename(String name) { + return new Tables(name, null); + } +} diff --git a/jooq-spring/src/main/java/com/baeldung/jooq/introduction/db/information_schema/tables/Triggers.java b/jooq-spring/src/main/java/com/baeldung/jooq/introduction/db/information_schema/tables/Triggers.java new file mode 100644 index 0000000000..375478af7a --- /dev/null +++ b/jooq-spring/src/main/java/com/baeldung/jooq/introduction/db/information_schema/tables/Triggers.java @@ -0,0 +1,152 @@ +/** + * This class is generated by jOOQ + */ +package com.baeldung.jooq.introduction.db.information_schema.tables; + + +import com.baeldung.jooq.introduction.db.information_schema.InformationSchema; +import com.baeldung.jooq.introduction.db.information_schema.tables.records.TriggersRecord; + +import javax.annotation.Generated; + +import org.jooq.Field; +import org.jooq.Table; +import org.jooq.TableField; +import org.jooq.impl.TableImpl; + + +/** + * This class is generated by jOOQ. + */ +@Generated( + value = { + "http://www.jooq.org", + "jOOQ version:3.7.3" + }, + comments = "This class is generated by jOOQ" +) +@SuppressWarnings({ "all", "unchecked", "rawtypes" }) +public class Triggers extends TableImpl { + + private static final long serialVersionUID = 376103066; + + /** + * The reference instance of INFORMATION_SCHEMA.TRIGGERS + */ + public static final Triggers TRIGGERS = new Triggers(); + + /** + * The class holding records for this type + */ + @Override + public Class getRecordType() { + return TriggersRecord.class; + } + + /** + * The column INFORMATION_SCHEMA.TRIGGERS.TRIGGER_CATALOG. + */ + public final TableField TRIGGER_CATALOG = createField("TRIGGER_CATALOG", org.jooq.impl.SQLDataType.VARCHAR.length(2147483647), this, ""); + + /** + * The column INFORMATION_SCHEMA.TRIGGERS.TRIGGER_SCHEMA. + */ + public final TableField TRIGGER_SCHEMA = createField("TRIGGER_SCHEMA", org.jooq.impl.SQLDataType.VARCHAR.length(2147483647), this, ""); + + /** + * The column INFORMATION_SCHEMA.TRIGGERS.TRIGGER_NAME. + */ + public final TableField TRIGGER_NAME = createField("TRIGGER_NAME", org.jooq.impl.SQLDataType.VARCHAR.length(2147483647), this, ""); + + /** + * The column INFORMATION_SCHEMA.TRIGGERS.TRIGGER_TYPE. + */ + public final TableField TRIGGER_TYPE = createField("TRIGGER_TYPE", org.jooq.impl.SQLDataType.VARCHAR.length(2147483647), this, ""); + + /** + * The column INFORMATION_SCHEMA.TRIGGERS.TABLE_CATALOG. + */ + public final TableField TABLE_CATALOG = createField("TABLE_CATALOG", org.jooq.impl.SQLDataType.VARCHAR.length(2147483647), this, ""); + + /** + * The column INFORMATION_SCHEMA.TRIGGERS.TABLE_SCHEMA. + */ + public final TableField TABLE_SCHEMA = createField("TABLE_SCHEMA", org.jooq.impl.SQLDataType.VARCHAR.length(2147483647), this, ""); + + /** + * The column INFORMATION_SCHEMA.TRIGGERS.TABLE_NAME. + */ + public final TableField TABLE_NAME = createField("TABLE_NAME", org.jooq.impl.SQLDataType.VARCHAR.length(2147483647), this, ""); + + /** + * The column INFORMATION_SCHEMA.TRIGGERS.BEFORE. + */ + public final TableField BEFORE = createField("BEFORE", org.jooq.impl.SQLDataType.BOOLEAN, this, ""); + + /** + * The column INFORMATION_SCHEMA.TRIGGERS.JAVA_CLASS. + */ + public final TableField JAVA_CLASS = createField("JAVA_CLASS", org.jooq.impl.SQLDataType.VARCHAR.length(2147483647), this, ""); + + /** + * The column INFORMATION_SCHEMA.TRIGGERS.QUEUE_SIZE. + */ + public final TableField QUEUE_SIZE = createField("QUEUE_SIZE", org.jooq.impl.SQLDataType.INTEGER, this, ""); + + /** + * The column INFORMATION_SCHEMA.TRIGGERS.NO_WAIT. + */ + public final TableField NO_WAIT = createField("NO_WAIT", org.jooq.impl.SQLDataType.BOOLEAN, this, ""); + + /** + * The column INFORMATION_SCHEMA.TRIGGERS.REMARKS. + */ + public final TableField REMARKS = createField("REMARKS", org.jooq.impl.SQLDataType.VARCHAR.length(2147483647), this, ""); + + /** + * The column INFORMATION_SCHEMA.TRIGGERS.SQL. + */ + public final TableField SQL = createField("SQL", org.jooq.impl.SQLDataType.VARCHAR.length(2147483647), this, ""); + + /** + * The column INFORMATION_SCHEMA.TRIGGERS.ID. + */ + public final TableField ID = createField("ID", org.jooq.impl.SQLDataType.INTEGER, this, ""); + + /** + * Create a INFORMATION_SCHEMA.TRIGGERS table reference + */ + public Triggers() { + this("TRIGGERS", null); + } + + /** + * Create an aliased INFORMATION_SCHEMA.TRIGGERS table reference + */ + public Triggers(String alias) { + this(alias, TRIGGERS); + } + + private Triggers(String alias, Table aliased) { + this(alias, aliased, null); + } + + private Triggers(String alias, Table aliased, Field[] parameters) { + super(alias, InformationSchema.INFORMATION_SCHEMA, aliased, parameters, ""); + } + + /** + * {@inheritDoc} + */ + @Override + public Triggers as(String alias) { + return new Triggers(alias, this); + } + + /** + * Rename this table + */ + public Triggers rename(String name) { + return new Triggers(name, null); + } +} diff --git a/jooq-spring/src/main/java/com/baeldung/jooq/introduction/db/information_schema/tables/TypeInfo.java b/jooq-spring/src/main/java/com/baeldung/jooq/introduction/db/information_schema/tables/TypeInfo.java new file mode 100644 index 0000000000..3db18ebee4 --- /dev/null +++ b/jooq-spring/src/main/java/com/baeldung/jooq/introduction/db/information_schema/tables/TypeInfo.java @@ -0,0 +1,152 @@ +/** + * This class is generated by jOOQ + */ +package com.baeldung.jooq.introduction.db.information_schema.tables; + + +import com.baeldung.jooq.introduction.db.information_schema.InformationSchema; +import com.baeldung.jooq.introduction.db.information_schema.tables.records.TypeInfoRecord; + +import javax.annotation.Generated; + +import org.jooq.Field; +import org.jooq.Table; +import org.jooq.TableField; +import org.jooq.impl.TableImpl; + + +/** + * This class is generated by jOOQ. + */ +@Generated( + value = { + "http://www.jooq.org", + "jOOQ version:3.7.3" + }, + comments = "This class is generated by jOOQ" +) +@SuppressWarnings({ "all", "unchecked", "rawtypes" }) +public class TypeInfo extends TableImpl { + + private static final long serialVersionUID = -242556633; + + /** + * The reference instance of INFORMATION_SCHEMA.TYPE_INFO + */ + public static final TypeInfo TYPE_INFO = new TypeInfo(); + + /** + * The class holding records for this type + */ + @Override + public Class getRecordType() { + return TypeInfoRecord.class; + } + + /** + * The column INFORMATION_SCHEMA.TYPE_INFO.TYPE_NAME. + */ + public final TableField TYPE_NAME = createField("TYPE_NAME", org.jooq.impl.SQLDataType.VARCHAR.length(2147483647), this, ""); + + /** + * The column INFORMATION_SCHEMA.TYPE_INFO.DATA_TYPE. + */ + public final TableField DATA_TYPE = createField("DATA_TYPE", org.jooq.impl.SQLDataType.INTEGER, this, ""); + + /** + * The column INFORMATION_SCHEMA.TYPE_INFO.PRECISION. + */ + public final TableField PRECISION = createField("PRECISION", org.jooq.impl.SQLDataType.INTEGER, this, ""); + + /** + * The column INFORMATION_SCHEMA.TYPE_INFO.PREFIX. + */ + public final TableField PREFIX = createField("PREFIX", org.jooq.impl.SQLDataType.VARCHAR.length(2147483647), this, ""); + + /** + * The column INFORMATION_SCHEMA.TYPE_INFO.SUFFIX. + */ + public final TableField SUFFIX = createField("SUFFIX", org.jooq.impl.SQLDataType.VARCHAR.length(2147483647), this, ""); + + /** + * The column INFORMATION_SCHEMA.TYPE_INFO.PARAMS. + */ + public final TableField PARAMS = createField("PARAMS", org.jooq.impl.SQLDataType.VARCHAR.length(2147483647), this, ""); + + /** + * The column INFORMATION_SCHEMA.TYPE_INFO.AUTO_INCREMENT. + */ + public final TableField AUTO_INCREMENT = createField("AUTO_INCREMENT", org.jooq.impl.SQLDataType.BOOLEAN, this, ""); + + /** + * The column INFORMATION_SCHEMA.TYPE_INFO.MINIMUM_SCALE. + */ + public final TableField MINIMUM_SCALE = createField("MINIMUM_SCALE", org.jooq.impl.SQLDataType.SMALLINT, this, ""); + + /** + * The column INFORMATION_SCHEMA.TYPE_INFO.MAXIMUM_SCALE. + */ + public final TableField MAXIMUM_SCALE = createField("MAXIMUM_SCALE", org.jooq.impl.SQLDataType.SMALLINT, this, ""); + + /** + * The column INFORMATION_SCHEMA.TYPE_INFO.RADIX. + */ + public final TableField RADIX = createField("RADIX", org.jooq.impl.SQLDataType.INTEGER, this, ""); + + /** + * The column INFORMATION_SCHEMA.TYPE_INFO.POS. + */ + public final TableField POS = createField("POS", org.jooq.impl.SQLDataType.INTEGER, this, ""); + + /** + * The column INFORMATION_SCHEMA.TYPE_INFO.CASE_SENSITIVE. + */ + public final TableField CASE_SENSITIVE = createField("CASE_SENSITIVE", org.jooq.impl.SQLDataType.BOOLEAN, this, ""); + + /** + * The column INFORMATION_SCHEMA.TYPE_INFO.NULLABLE. + */ + public final TableField NULLABLE = createField("NULLABLE", org.jooq.impl.SQLDataType.SMALLINT, this, ""); + + /** + * The column INFORMATION_SCHEMA.TYPE_INFO.SEARCHABLE. + */ + public final TableField SEARCHABLE = createField("SEARCHABLE", org.jooq.impl.SQLDataType.SMALLINT, this, ""); + + /** + * Create a INFORMATION_SCHEMA.TYPE_INFO table reference + */ + public TypeInfo() { + this("TYPE_INFO", null); + } + + /** + * Create an aliased INFORMATION_SCHEMA.TYPE_INFO table reference + */ + public TypeInfo(String alias) { + this(alias, TYPE_INFO); + } + + private TypeInfo(String alias, Table aliased) { + this(alias, aliased, null); + } + + private TypeInfo(String alias, Table aliased, Field[] parameters) { + super(alias, InformationSchema.INFORMATION_SCHEMA, aliased, parameters, ""); + } + + /** + * {@inheritDoc} + */ + @Override + public TypeInfo as(String alias) { + return new TypeInfo(alias, this); + } + + /** + * Rename this table + */ + public TypeInfo rename(String name) { + return new TypeInfo(name, null); + } +} diff --git a/jooq-spring/src/main/java/com/baeldung/jooq/introduction/db/information_schema/tables/Users.java b/jooq-spring/src/main/java/com/baeldung/jooq/introduction/db/information_schema/tables/Users.java new file mode 100644 index 0000000000..417382aed0 --- /dev/null +++ b/jooq-spring/src/main/java/com/baeldung/jooq/introduction/db/information_schema/tables/Users.java @@ -0,0 +1,102 @@ +/** + * This class is generated by jOOQ + */ +package com.baeldung.jooq.introduction.db.information_schema.tables; + + +import com.baeldung.jooq.introduction.db.information_schema.InformationSchema; +import com.baeldung.jooq.introduction.db.information_schema.tables.records.UsersRecord; + +import javax.annotation.Generated; + +import org.jooq.Field; +import org.jooq.Table; +import org.jooq.TableField; +import org.jooq.impl.TableImpl; + + +/** + * This class is generated by jOOQ. + */ +@Generated( + value = { + "http://www.jooq.org", + "jOOQ version:3.7.3" + }, + comments = "This class is generated by jOOQ" +) +@SuppressWarnings({ "all", "unchecked", "rawtypes" }) +public class Users extends TableImpl { + + private static final long serialVersionUID = 1971797833; + + /** + * The reference instance of INFORMATION_SCHEMA.USERS + */ + public static final Users USERS = new Users(); + + /** + * The class holding records for this type + */ + @Override + public Class getRecordType() { + return UsersRecord.class; + } + + /** + * The column INFORMATION_SCHEMA.USERS.NAME. + */ + public final TableField NAME = createField("NAME", org.jooq.impl.SQLDataType.VARCHAR.length(2147483647), this, ""); + + /** + * The column INFORMATION_SCHEMA.USERS.ADMIN. + */ + public final TableField ADMIN = createField("ADMIN", org.jooq.impl.SQLDataType.VARCHAR.length(2147483647), this, ""); + + /** + * The column INFORMATION_SCHEMA.USERS.REMARKS. + */ + public final TableField REMARKS = createField("REMARKS", org.jooq.impl.SQLDataType.VARCHAR.length(2147483647), this, ""); + + /** + * The column INFORMATION_SCHEMA.USERS.ID. + */ + public final TableField ID = createField("ID", org.jooq.impl.SQLDataType.INTEGER, this, ""); + + /** + * Create a INFORMATION_SCHEMA.USERS table reference + */ + public Users() { + this("USERS", null); + } + + /** + * Create an aliased INFORMATION_SCHEMA.USERS table reference + */ + public Users(String alias) { + this(alias, USERS); + } + + private Users(String alias, Table aliased) { + this(alias, aliased, null); + } + + private Users(String alias, Table aliased, Field[] parameters) { + super(alias, InformationSchema.INFORMATION_SCHEMA, aliased, parameters, ""); + } + + /** + * {@inheritDoc} + */ + @Override + public Users as(String alias) { + return new Users(alias, this); + } + + /** + * Rename this table + */ + public Users rename(String name) { + return new Users(name, null); + } +} diff --git a/jooq-spring/src/main/java/com/baeldung/jooq/introduction/db/information_schema/tables/Views.java b/jooq-spring/src/main/java/com/baeldung/jooq/introduction/db/information_schema/tables/Views.java new file mode 100644 index 0000000000..54ffe377d7 --- /dev/null +++ b/jooq-spring/src/main/java/com/baeldung/jooq/introduction/db/information_schema/tables/Views.java @@ -0,0 +1,127 @@ +/** + * This class is generated by jOOQ + */ +package com.baeldung.jooq.introduction.db.information_schema.tables; + + +import com.baeldung.jooq.introduction.db.information_schema.InformationSchema; +import com.baeldung.jooq.introduction.db.information_schema.tables.records.ViewsRecord; + +import javax.annotation.Generated; + +import org.jooq.Field; +import org.jooq.Table; +import org.jooq.TableField; +import org.jooq.impl.TableImpl; + + +/** + * This class is generated by jOOQ. + */ +@Generated( + value = { + "http://www.jooq.org", + "jOOQ version:3.7.3" + }, + comments = "This class is generated by jOOQ" +) +@SuppressWarnings({ "all", "unchecked", "rawtypes" }) +public class Views extends TableImpl { + + private static final long serialVersionUID = 1565009994; + + /** + * The reference instance of INFORMATION_SCHEMA.VIEWS + */ + public static final Views VIEWS = new Views(); + + /** + * The class holding records for this type + */ + @Override + public Class getRecordType() { + return ViewsRecord.class; + } + + /** + * The column INFORMATION_SCHEMA.VIEWS.TABLE_CATALOG. + */ + public final TableField TABLE_CATALOG = createField("TABLE_CATALOG", org.jooq.impl.SQLDataType.VARCHAR.length(2147483647), this, ""); + + /** + * The column INFORMATION_SCHEMA.VIEWS.TABLE_SCHEMA. + */ + public final TableField TABLE_SCHEMA = createField("TABLE_SCHEMA", org.jooq.impl.SQLDataType.VARCHAR.length(2147483647), this, ""); + + /** + * The column INFORMATION_SCHEMA.VIEWS.TABLE_NAME. + */ + public final TableField TABLE_NAME = createField("TABLE_NAME", org.jooq.impl.SQLDataType.VARCHAR.length(2147483647), this, ""); + + /** + * The column INFORMATION_SCHEMA.VIEWS.VIEW_DEFINITION. + */ + public final TableField VIEW_DEFINITION = createField("VIEW_DEFINITION", org.jooq.impl.SQLDataType.VARCHAR.length(2147483647), this, ""); + + /** + * The column INFORMATION_SCHEMA.VIEWS.CHECK_OPTION. + */ + public final TableField CHECK_OPTION = createField("CHECK_OPTION", org.jooq.impl.SQLDataType.VARCHAR.length(2147483647), this, ""); + + /** + * The column INFORMATION_SCHEMA.VIEWS.IS_UPDATABLE. + */ + public final TableField IS_UPDATABLE = createField("IS_UPDATABLE", org.jooq.impl.SQLDataType.VARCHAR.length(2147483647), this, ""); + + /** + * The column INFORMATION_SCHEMA.VIEWS.STATUS. + */ + public final TableField STATUS = createField("STATUS", org.jooq.impl.SQLDataType.VARCHAR.length(2147483647), this, ""); + + /** + * The column INFORMATION_SCHEMA.VIEWS.REMARKS. + */ + public final TableField REMARKS = createField("REMARKS", org.jooq.impl.SQLDataType.VARCHAR.length(2147483647), this, ""); + + /** + * The column INFORMATION_SCHEMA.VIEWS.ID. + */ + public final TableField ID = createField("ID", org.jooq.impl.SQLDataType.INTEGER, this, ""); + + /** + * Create a INFORMATION_SCHEMA.VIEWS table reference + */ + public Views() { + this("VIEWS", null); + } + + /** + * Create an aliased INFORMATION_SCHEMA.VIEWS table reference + */ + public Views(String alias) { + this(alias, VIEWS); + } + + private Views(String alias, Table aliased) { + this(alias, aliased, null); + } + + private Views(String alias, Table aliased, Field[] parameters) { + super(alias, InformationSchema.INFORMATION_SCHEMA, aliased, parameters, ""); + } + + /** + * {@inheritDoc} + */ + @Override + public Views as(String alias) { + return new Views(alias, this); + } + + /** + * Rename this table + */ + public Views rename(String name) { + return new Views(name, null); + } +} diff --git a/jooq-spring/src/main/java/com/baeldung/jooq/introduction/db/information_schema/tables/records/CatalogsRecord.java b/jooq-spring/src/main/java/com/baeldung/jooq/introduction/db/information_schema/tables/records/CatalogsRecord.java new file mode 100644 index 0000000000..d59728bf01 --- /dev/null +++ b/jooq-spring/src/main/java/com/baeldung/jooq/introduction/db/information_schema/tables/records/CatalogsRecord.java @@ -0,0 +1,119 @@ +/** + * This class is generated by jOOQ + */ +package com.baeldung.jooq.introduction.db.information_schema.tables.records; + + +import com.baeldung.jooq.introduction.db.information_schema.tables.Catalogs; + +import javax.annotation.Generated; + +import org.jooq.Field; +import org.jooq.Record1; +import org.jooq.Row1; +import org.jooq.impl.TableRecordImpl; + + +/** + * This class is generated by jOOQ. + */ +@Generated( + value = { + "http://www.jooq.org", + "jOOQ version:3.7.3" + }, + comments = "This class is generated by jOOQ" +) +@SuppressWarnings({ "all", "unchecked", "rawtypes" }) +public class CatalogsRecord extends TableRecordImpl implements Record1 { + + private static final long serialVersionUID = -2119003002; + + /** + * Setter for INFORMATION_SCHEMA.CATALOGS.CATALOG_NAME. + */ + public void setCatalogName(String value) { + setValue(0, value); + } + + /** + * Getter for INFORMATION_SCHEMA.CATALOGS.CATALOG_NAME. + */ + public String getCatalogName() { + return (String) getValue(0); + } + + // ------------------------------------------------------------------------- + // Record1 type implementation + // ------------------------------------------------------------------------- + + /** + * {@inheritDoc} + */ + @Override + public Row1 fieldsRow() { + return (Row1) super.fieldsRow(); + } + + /** + * {@inheritDoc} + */ + @Override + public Row1 valuesRow() { + return (Row1) super.valuesRow(); + } + + /** + * {@inheritDoc} + */ + @Override + public Field field1() { + return Catalogs.CATALOGS.CATALOG_NAME; + } + + /** + * {@inheritDoc} + */ + @Override + public String value1() { + return getCatalogName(); + } + + /** + * {@inheritDoc} + */ + @Override + public CatalogsRecord value1(String value) { + setCatalogName(value); + return this; + } + + /** + * {@inheritDoc} + */ + @Override + public CatalogsRecord values(String value1) { + value1(value1); + return this; + } + + // ------------------------------------------------------------------------- + // Constructors + // ------------------------------------------------------------------------- + + /** + * Create a detached CatalogsRecord + */ + public CatalogsRecord() { + super(Catalogs.CATALOGS); + } + + /** + * Create a detached, initialised CatalogsRecord + */ + public CatalogsRecord(String catalogName) { + super(Catalogs.CATALOGS); + + setValue(0, catalogName); + } +} diff --git a/jooq-spring/src/main/java/com/baeldung/jooq/introduction/db/information_schema/tables/records/CollationsRecord.java b/jooq-spring/src/main/java/com/baeldung/jooq/introduction/db/information_schema/tables/records/CollationsRecord.java new file mode 100644 index 0000000000..e0abb49012 --- /dev/null +++ b/jooq-spring/src/main/java/com/baeldung/jooq/introduction/db/information_schema/tables/records/CollationsRecord.java @@ -0,0 +1,160 @@ +/** + * This class is generated by jOOQ + */ +package com.baeldung.jooq.introduction.db.information_schema.tables.records; + + +import com.baeldung.jooq.introduction.db.information_schema.tables.Collations; + +import javax.annotation.Generated; + +import org.jooq.Field; +import org.jooq.Record2; +import org.jooq.Row2; +import org.jooq.impl.TableRecordImpl; + + +/** + * This class is generated by jOOQ. + */ +@Generated( + value = { + "http://www.jooq.org", + "jOOQ version:3.7.3" + }, + comments = "This class is generated by jOOQ" +) +@SuppressWarnings({ "all", "unchecked", "rawtypes" }) +public class CollationsRecord extends TableRecordImpl implements Record2 { + + private static final long serialVersionUID = -890210086; + + /** + * Setter for INFORMATION_SCHEMA.COLLATIONS.NAME. + */ + public void setName(String value) { + setValue(0, value); + } + + /** + * Getter for INFORMATION_SCHEMA.COLLATIONS.NAME. + */ + public String getName() { + return (String) getValue(0); + } + + /** + * Setter for INFORMATION_SCHEMA.COLLATIONS.KEY. + */ + public void setKey(String value) { + setValue(1, value); + } + + /** + * Getter for INFORMATION_SCHEMA.COLLATIONS.KEY. + */ + public String getKey() { + return (String) getValue(1); + } + + // ------------------------------------------------------------------------- + // Record2 type implementation + // ------------------------------------------------------------------------- + + /** + * {@inheritDoc} + */ + @Override + public Row2 fieldsRow() { + return (Row2) super.fieldsRow(); + } + + /** + * {@inheritDoc} + */ + @Override + public Row2 valuesRow() { + return (Row2) super.valuesRow(); + } + + /** + * {@inheritDoc} + */ + @Override + public Field field1() { + return Collations.COLLATIONS.NAME; + } + + /** + * {@inheritDoc} + */ + @Override + public Field field2() { + return Collations.COLLATIONS.KEY; + } + + /** + * {@inheritDoc} + */ + @Override + public String value1() { + return getName(); + } + + /** + * {@inheritDoc} + */ + @Override + public String value2() { + return getKey(); + } + + /** + * {@inheritDoc} + */ + @Override + public CollationsRecord value1(String value) { + setName(value); + return this; + } + + /** + * {@inheritDoc} + */ + @Override + public CollationsRecord value2(String value) { + setKey(value); + return this; + } + + /** + * {@inheritDoc} + */ + @Override + public CollationsRecord values(String value1, String value2) { + value1(value1); + value2(value2); + return this; + } + + // ------------------------------------------------------------------------- + // Constructors + // ------------------------------------------------------------------------- + + /** + * Create a detached CollationsRecord + */ + public CollationsRecord() { + super(Collations.COLLATIONS); + } + + /** + * Create a detached, initialised CollationsRecord + */ + public CollationsRecord(String name, String key) { + super(Collations.COLLATIONS); + + setValue(0, name); + setValue(1, key); + } +} diff --git a/jooq-spring/src/main/java/com/baeldung/jooq/introduction/db/information_schema/tables/records/ColumnPrivilegesRecord.java b/jooq-spring/src/main/java/com/baeldung/jooq/introduction/db/information_schema/tables/records/ColumnPrivilegesRecord.java new file mode 100644 index 0000000000..105348a339 --- /dev/null +++ b/jooq-spring/src/main/java/com/baeldung/jooq/introduction/db/information_schema/tables/records/ColumnPrivilegesRecord.java @@ -0,0 +1,406 @@ +/** + * This class is generated by jOOQ + */ +package com.baeldung.jooq.introduction.db.information_schema.tables.records; + + +import com.baeldung.jooq.introduction.db.information_schema.tables.ColumnPrivileges; + +import javax.annotation.Generated; + +import org.jooq.Field; +import org.jooq.Record8; +import org.jooq.Row8; +import org.jooq.impl.TableRecordImpl; + + +/** + * This class is generated by jOOQ. + */ +@Generated( + value = { + "http://www.jooq.org", + "jOOQ version:3.7.3" + }, + comments = "This class is generated by jOOQ" +) +@SuppressWarnings({ "all", "unchecked", "rawtypes" }) +public class ColumnPrivilegesRecord extends TableRecordImpl implements Record8 { + + private static final long serialVersionUID = 1884367853; + + /** + * Setter for INFORMATION_SCHEMA.COLUMN_PRIVILEGES.GRANTOR. + */ + public void setGrantor(String value) { + setValue(0, value); + } + + /** + * Getter for INFORMATION_SCHEMA.COLUMN_PRIVILEGES.GRANTOR. + */ + public String getGrantor() { + return (String) getValue(0); + } + + /** + * Setter for INFORMATION_SCHEMA.COLUMN_PRIVILEGES.GRANTEE. + */ + public void setGrantee(String value) { + setValue(1, value); + } + + /** + * Getter for INFORMATION_SCHEMA.COLUMN_PRIVILEGES.GRANTEE. + */ + public String getGrantee() { + return (String) getValue(1); + } + + /** + * Setter for INFORMATION_SCHEMA.COLUMN_PRIVILEGES.TABLE_CATALOG. + */ + public void setTableCatalog(String value) { + setValue(2, value); + } + + /** + * Getter for INFORMATION_SCHEMA.COLUMN_PRIVILEGES.TABLE_CATALOG. + */ + public String getTableCatalog() { + return (String) getValue(2); + } + + /** + * Setter for INFORMATION_SCHEMA.COLUMN_PRIVILEGES.TABLE_SCHEMA. + */ + public void setTableSchema(String value) { + setValue(3, value); + } + + /** + * Getter for INFORMATION_SCHEMA.COLUMN_PRIVILEGES.TABLE_SCHEMA. + */ + public String getTableSchema() { + return (String) getValue(3); + } + + /** + * Setter for INFORMATION_SCHEMA.COLUMN_PRIVILEGES.TABLE_NAME. + */ + public void setTableName(String value) { + setValue(4, value); + } + + /** + * Getter for INFORMATION_SCHEMA.COLUMN_PRIVILEGES.TABLE_NAME. + */ + public String getTableName() { + return (String) getValue(4); + } + + /** + * Setter for INFORMATION_SCHEMA.COLUMN_PRIVILEGES.COLUMN_NAME. + */ + public void setColumnName(String value) { + setValue(5, value); + } + + /** + * Getter for INFORMATION_SCHEMA.COLUMN_PRIVILEGES.COLUMN_NAME. + */ + public String getColumnName() { + return (String) getValue(5); + } + + /** + * Setter for INFORMATION_SCHEMA.COLUMN_PRIVILEGES.PRIVILEGE_TYPE. + */ + public void setPrivilegeType(String value) { + setValue(6, value); + } + + /** + * Getter for INFORMATION_SCHEMA.COLUMN_PRIVILEGES.PRIVILEGE_TYPE. + */ + public String getPrivilegeType() { + return (String) getValue(6); + } + + /** + * Setter for INFORMATION_SCHEMA.COLUMN_PRIVILEGES.IS_GRANTABLE. + */ + public void setIsGrantable(String value) { + setValue(7, value); + } + + /** + * Getter for INFORMATION_SCHEMA.COLUMN_PRIVILEGES.IS_GRANTABLE. + */ + public String getIsGrantable() { + return (String) getValue(7); + } + + // ------------------------------------------------------------------------- + // Record8 type implementation + // ------------------------------------------------------------------------- + + /** + * {@inheritDoc} + */ + @Override + public Row8 fieldsRow() { + return (Row8) super.fieldsRow(); + } + + /** + * {@inheritDoc} + */ + @Override + public Row8 valuesRow() { + return (Row8) super.valuesRow(); + } + + /** + * {@inheritDoc} + */ + @Override + public Field field1() { + return ColumnPrivileges.COLUMN_PRIVILEGES.GRANTOR; + } + + /** + * {@inheritDoc} + */ + @Override + public Field field2() { + return ColumnPrivileges.COLUMN_PRIVILEGES.GRANTEE; + } + + /** + * {@inheritDoc} + */ + @Override + public Field field3() { + return ColumnPrivileges.COLUMN_PRIVILEGES.TABLE_CATALOG; + } + + /** + * {@inheritDoc} + */ + @Override + public Field field4() { + return ColumnPrivileges.COLUMN_PRIVILEGES.TABLE_SCHEMA; + } + + /** + * {@inheritDoc} + */ + @Override + public Field field5() { + return ColumnPrivileges.COLUMN_PRIVILEGES.TABLE_NAME; + } + + /** + * {@inheritDoc} + */ + @Override + public Field field6() { + return ColumnPrivileges.COLUMN_PRIVILEGES.COLUMN_NAME; + } + + /** + * {@inheritDoc} + */ + @Override + public Field field7() { + return ColumnPrivileges.COLUMN_PRIVILEGES.PRIVILEGE_TYPE; + } + + /** + * {@inheritDoc} + */ + @Override + public Field field8() { + return ColumnPrivileges.COLUMN_PRIVILEGES.IS_GRANTABLE; + } + + /** + * {@inheritDoc} + */ + @Override + public String value1() { + return getGrantor(); + } + + /** + * {@inheritDoc} + */ + @Override + public String value2() { + return getGrantee(); + } + + /** + * {@inheritDoc} + */ + @Override + public String value3() { + return getTableCatalog(); + } + + /** + * {@inheritDoc} + */ + @Override + public String value4() { + return getTableSchema(); + } + + /** + * {@inheritDoc} + */ + @Override + public String value5() { + return getTableName(); + } + + /** + * {@inheritDoc} + */ + @Override + public String value6() { + return getColumnName(); + } + + /** + * {@inheritDoc} + */ + @Override + public String value7() { + return getPrivilegeType(); + } + + /** + * {@inheritDoc} + */ + @Override + public String value8() { + return getIsGrantable(); + } + + /** + * {@inheritDoc} + */ + @Override + public ColumnPrivilegesRecord value1(String value) { + setGrantor(value); + return this; + } + + /** + * {@inheritDoc} + */ + @Override + public ColumnPrivilegesRecord value2(String value) { + setGrantee(value); + return this; + } + + /** + * {@inheritDoc} + */ + @Override + public ColumnPrivilegesRecord value3(String value) { + setTableCatalog(value); + return this; + } + + /** + * {@inheritDoc} + */ + @Override + public ColumnPrivilegesRecord value4(String value) { + setTableSchema(value); + return this; + } + + /** + * {@inheritDoc} + */ + @Override + public ColumnPrivilegesRecord value5(String value) { + setTableName(value); + return this; + } + + /** + * {@inheritDoc} + */ + @Override + public ColumnPrivilegesRecord value6(String value) { + setColumnName(value); + return this; + } + + /** + * {@inheritDoc} + */ + @Override + public ColumnPrivilegesRecord value7(String value) { + setPrivilegeType(value); + return this; + } + + /** + * {@inheritDoc} + */ + @Override + public ColumnPrivilegesRecord value8(String value) { + setIsGrantable(value); + return this; + } + + /** + * {@inheritDoc} + */ + @Override + public ColumnPrivilegesRecord values(String value1, String value2, String value3, String value4, String value5, String value6, String value7, String value8) { + value1(value1); + value2(value2); + value3(value3); + value4(value4); + value5(value5); + value6(value6); + value7(value7); + value8(value8); + return this; + } + + // ------------------------------------------------------------------------- + // Constructors + // ------------------------------------------------------------------------- + + /** + * Create a detached ColumnPrivilegesRecord + */ + public ColumnPrivilegesRecord() { + super(ColumnPrivileges.COLUMN_PRIVILEGES); + } + + /** + * Create a detached, initialised ColumnPrivilegesRecord + */ + public ColumnPrivilegesRecord(String grantor, String grantee, String tableCatalog, String tableSchema, String tableName, String columnName, String privilegeType, String isGrantable) { + super(ColumnPrivileges.COLUMN_PRIVILEGES); + + setValue(0, grantor); + setValue(1, grantee); + setValue(2, tableCatalog); + setValue(3, tableSchema); + setValue(4, tableName); + setValue(5, columnName); + setValue(6, privilegeType); + setValue(7, isGrantable); + } +} diff --git a/jooq-spring/src/main/java/com/baeldung/jooq/introduction/db/information_schema/tables/records/ColumnsRecord.java b/jooq-spring/src/main/java/com/baeldung/jooq/introduction/db/information_schema/tables/records/ColumnsRecord.java new file mode 100644 index 0000000000..63a83b0056 --- /dev/null +++ b/jooq-spring/src/main/java/com/baeldung/jooq/introduction/db/information_schema/tables/records/ColumnsRecord.java @@ -0,0 +1,392 @@ +/** + * This class is generated by jOOQ + */ +package com.baeldung.jooq.introduction.db.information_schema.tables.records; + + +import com.baeldung.jooq.introduction.db.information_schema.tables.Columns; + +import javax.annotation.Generated; + +import org.jooq.impl.TableRecordImpl; + + +/** + * This class is generated by jOOQ. + */ +@Generated( + value = { + "http://www.jooq.org", + "jOOQ version:3.7.3" + }, + comments = "This class is generated by jOOQ" +) +@SuppressWarnings({ "all", "unchecked", "rawtypes" }) +public class ColumnsRecord extends TableRecordImpl { + + private static final long serialVersionUID = 1850723283; + + /** + * Setter for INFORMATION_SCHEMA.COLUMNS.TABLE_CATALOG. + */ + public void setTableCatalog(String value) { + setValue(0, value); + } + + /** + * Getter for INFORMATION_SCHEMA.COLUMNS.TABLE_CATALOG. + */ + public String getTableCatalog() { + return (String) getValue(0); + } + + /** + * Setter for INFORMATION_SCHEMA.COLUMNS.TABLE_SCHEMA. + */ + public void setTableSchema(String value) { + setValue(1, value); + } + + /** + * Getter for INFORMATION_SCHEMA.COLUMNS.TABLE_SCHEMA. + */ + public String getTableSchema() { + return (String) getValue(1); + } + + /** + * Setter for INFORMATION_SCHEMA.COLUMNS.TABLE_NAME. + */ + public void setTableName(String value) { + setValue(2, value); + } + + /** + * Getter for INFORMATION_SCHEMA.COLUMNS.TABLE_NAME. + */ + public String getTableName() { + return (String) getValue(2); + } + + /** + * Setter for INFORMATION_SCHEMA.COLUMNS.COLUMN_NAME. + */ + public void setColumnName(String value) { + setValue(3, value); + } + + /** + * Getter for INFORMATION_SCHEMA.COLUMNS.COLUMN_NAME. + */ + public String getColumnName() { + return (String) getValue(3); + } + + /** + * Setter for INFORMATION_SCHEMA.COLUMNS.ORDINAL_POSITION. + */ + public void setOrdinalPosition(Integer value) { + setValue(4, value); + } + + /** + * Getter for INFORMATION_SCHEMA.COLUMNS.ORDINAL_POSITION. + */ + public Integer getOrdinalPosition() { + return (Integer) getValue(4); + } + + /** + * Setter for INFORMATION_SCHEMA.COLUMNS.COLUMN_DEFAULT. + */ + public void setColumnDefault(String value) { + setValue(5, value); + } + + /** + * Getter for INFORMATION_SCHEMA.COLUMNS.COLUMN_DEFAULT. + */ + public String getColumnDefault() { + return (String) getValue(5); + } + + /** + * Setter for INFORMATION_SCHEMA.COLUMNS.IS_NULLABLE. + */ + public void setIsNullable(String value) { + setValue(6, value); + } + + /** + * Getter for INFORMATION_SCHEMA.COLUMNS.IS_NULLABLE. + */ + public String getIsNullable() { + return (String) getValue(6); + } + + /** + * Setter for INFORMATION_SCHEMA.COLUMNS.DATA_TYPE. + */ + public void setDataType(Integer value) { + setValue(7, value); + } + + /** + * Getter for INFORMATION_SCHEMA.COLUMNS.DATA_TYPE. + */ + public Integer getDataType() { + return (Integer) getValue(7); + } + + /** + * Setter for INFORMATION_SCHEMA.COLUMNS.CHARACTER_MAXIMUM_LENGTH. + */ + public void setCharacterMaximumLength(Integer value) { + setValue(8, value); + } + + /** + * Getter for INFORMATION_SCHEMA.COLUMNS.CHARACTER_MAXIMUM_LENGTH. + */ + public Integer getCharacterMaximumLength() { + return (Integer) getValue(8); + } + + /** + * Setter for INFORMATION_SCHEMA.COLUMNS.CHARACTER_OCTET_LENGTH. + */ + public void setCharacterOctetLength(Integer value) { + setValue(9, value); + } + + /** + * Getter for INFORMATION_SCHEMA.COLUMNS.CHARACTER_OCTET_LENGTH. + */ + public Integer getCharacterOctetLength() { + return (Integer) getValue(9); + } + + /** + * Setter for INFORMATION_SCHEMA.COLUMNS.NUMERIC_PRECISION. + */ + public void setNumericPrecision(Integer value) { + setValue(10, value); + } + + /** + * Getter for INFORMATION_SCHEMA.COLUMNS.NUMERIC_PRECISION. + */ + public Integer getNumericPrecision() { + return (Integer) getValue(10); + } + + /** + * Setter for INFORMATION_SCHEMA.COLUMNS.NUMERIC_PRECISION_RADIX. + */ + public void setNumericPrecisionRadix(Integer value) { + setValue(11, value); + } + + /** + * Getter for INFORMATION_SCHEMA.COLUMNS.NUMERIC_PRECISION_RADIX. + */ + public Integer getNumericPrecisionRadix() { + return (Integer) getValue(11); + } + + /** + * Setter for INFORMATION_SCHEMA.COLUMNS.NUMERIC_SCALE. + */ + public void setNumericScale(Integer value) { + setValue(12, value); + } + + /** + * Getter for INFORMATION_SCHEMA.COLUMNS.NUMERIC_SCALE. + */ + public Integer getNumericScale() { + return (Integer) getValue(12); + } + + /** + * Setter for INFORMATION_SCHEMA.COLUMNS.CHARACTER_SET_NAME. + */ + public void setCharacterSetName(String value) { + setValue(13, value); + } + + /** + * Getter for INFORMATION_SCHEMA.COLUMNS.CHARACTER_SET_NAME. + */ + public String getCharacterSetName() { + return (String) getValue(13); + } + + /** + * Setter for INFORMATION_SCHEMA.COLUMNS.COLLATION_NAME. + */ + public void setCollationName(String value) { + setValue(14, value); + } + + /** + * Getter for INFORMATION_SCHEMA.COLUMNS.COLLATION_NAME. + */ + public String getCollationName() { + return (String) getValue(14); + } + + /** + * Setter for INFORMATION_SCHEMA.COLUMNS.TYPE_NAME. + */ + public void setTypeName(String value) { + setValue(15, value); + } + + /** + * Getter for INFORMATION_SCHEMA.COLUMNS.TYPE_NAME. + */ + public String getTypeName() { + return (String) getValue(15); + } + + /** + * Setter for INFORMATION_SCHEMA.COLUMNS.NULLABLE. + */ + public void setNullable(Integer value) { + setValue(16, value); + } + + /** + * Getter for INFORMATION_SCHEMA.COLUMNS.NULLABLE. + */ + public Integer getNullable() { + return (Integer) getValue(16); + } + + /** + * Setter for INFORMATION_SCHEMA.COLUMNS.IS_COMPUTED. + */ + public void setIsComputed(Boolean value) { + setValue(17, value); + } + + /** + * Getter for INFORMATION_SCHEMA.COLUMNS.IS_COMPUTED. + */ + public Boolean getIsComputed() { + return (Boolean) getValue(17); + } + + /** + * Setter for INFORMATION_SCHEMA.COLUMNS.SELECTIVITY. + */ + public void setSelectivity(Integer value) { + setValue(18, value); + } + + /** + * Getter for INFORMATION_SCHEMA.COLUMNS.SELECTIVITY. + */ + public Integer getSelectivity() { + return (Integer) getValue(18); + } + + /** + * Setter for INFORMATION_SCHEMA.COLUMNS.CHECK_CONSTRAINT. + */ + public void setCheckConstraint(String value) { + setValue(19, value); + } + + /** + * Getter for INFORMATION_SCHEMA.COLUMNS.CHECK_CONSTRAINT. + */ + public String getCheckConstraint() { + return (String) getValue(19); + } + + /** + * Setter for INFORMATION_SCHEMA.COLUMNS.SEQUENCE_NAME. + */ + public void setSequenceName(String value) { + setValue(20, value); + } + + /** + * Getter for INFORMATION_SCHEMA.COLUMNS.SEQUENCE_NAME. + */ + public String getSequenceName() { + return (String) getValue(20); + } + + /** + * Setter for INFORMATION_SCHEMA.COLUMNS.REMARKS. + */ + public void setRemarks(String value) { + setValue(21, value); + } + + /** + * Getter for INFORMATION_SCHEMA.COLUMNS.REMARKS. + */ + public String getRemarks() { + return (String) getValue(21); + } + + /** + * Setter for INFORMATION_SCHEMA.COLUMNS.SOURCE_DATA_TYPE. + */ + public void setSourceDataType(Short value) { + setValue(22, value); + } + + /** + * Getter for INFORMATION_SCHEMA.COLUMNS.SOURCE_DATA_TYPE. + */ + public Short getSourceDataType() { + return (Short) getValue(22); + } + + // ------------------------------------------------------------------------- + // Constructors + // ------------------------------------------------------------------------- + + /** + * Create a detached ColumnsRecord + */ + public ColumnsRecord() { + super(Columns.COLUMNS); + } + + /** + * Create a detached, initialised ColumnsRecord + */ + public ColumnsRecord(String tableCatalog, String tableSchema, String tableName, String columnName, Integer ordinalPosition, String columnDefault, String isNullable, Integer dataType, Integer characterMaximumLength, Integer characterOctetLength, Integer numericPrecision, Integer numericPrecisionRadix, Integer numericScale, String characterSetName, String collationName, String typeName, Integer nullable, Boolean isComputed, Integer selectivity, String checkConstraint, String sequenceName, String remarks, Short sourceDataType) { + super(Columns.COLUMNS); + + setValue(0, tableCatalog); + setValue(1, tableSchema); + setValue(2, tableName); + setValue(3, columnName); + setValue(4, ordinalPosition); + setValue(5, columnDefault); + setValue(6, isNullable); + setValue(7, dataType); + setValue(8, characterMaximumLength); + setValue(9, characterOctetLength); + setValue(10, numericPrecision); + setValue(11, numericPrecisionRadix); + setValue(12, numericScale); + setValue(13, characterSetName); + setValue(14, collationName); + setValue(15, typeName); + setValue(16, nullable); + setValue(17, isComputed); + setValue(18, selectivity); + setValue(19, checkConstraint); + setValue(20, sequenceName); + setValue(21, remarks); + setValue(22, sourceDataType); + } +} diff --git a/jooq-spring/src/main/java/com/baeldung/jooq/introduction/db/information_schema/tables/records/ConstantsRecord.java b/jooq-spring/src/main/java/com/baeldung/jooq/introduction/db/information_schema/tables/records/ConstantsRecord.java new file mode 100644 index 0000000000..b1225bd747 --- /dev/null +++ b/jooq-spring/src/main/java/com/baeldung/jooq/introduction/db/information_schema/tables/records/ConstantsRecord.java @@ -0,0 +1,365 @@ +/** + * This class is generated by jOOQ + */ +package com.baeldung.jooq.introduction.db.information_schema.tables.records; + + +import com.baeldung.jooq.introduction.db.information_schema.tables.Constants; + +import javax.annotation.Generated; + +import org.jooq.Field; +import org.jooq.Record7; +import org.jooq.Row7; +import org.jooq.impl.TableRecordImpl; + + +/** + * This class is generated by jOOQ. + */ +@Generated( + value = { + "http://www.jooq.org", + "jOOQ version:3.7.3" + }, + comments = "This class is generated by jOOQ" +) +@SuppressWarnings({ "all", "unchecked", "rawtypes" }) +public class ConstantsRecord extends TableRecordImpl implements Record7 { + + private static final long serialVersionUID = -775500532; + + /** + * Setter for INFORMATION_SCHEMA.CONSTANTS.CONSTANT_CATALOG. + */ + public void setConstantCatalog(String value) { + setValue(0, value); + } + + /** + * Getter for INFORMATION_SCHEMA.CONSTANTS.CONSTANT_CATALOG. + */ + public String getConstantCatalog() { + return (String) getValue(0); + } + + /** + * Setter for INFORMATION_SCHEMA.CONSTANTS.CONSTANT_SCHEMA. + */ + public void setConstantSchema(String value) { + setValue(1, value); + } + + /** + * Getter for INFORMATION_SCHEMA.CONSTANTS.CONSTANT_SCHEMA. + */ + public String getConstantSchema() { + return (String) getValue(1); + } + + /** + * Setter for INFORMATION_SCHEMA.CONSTANTS.CONSTANT_NAME. + */ + public void setConstantName(String value) { + setValue(2, value); + } + + /** + * Getter for INFORMATION_SCHEMA.CONSTANTS.CONSTANT_NAME. + */ + public String getConstantName() { + return (String) getValue(2); + } + + /** + * Setter for INFORMATION_SCHEMA.CONSTANTS.DATA_TYPE. + */ + public void setDataType(Integer value) { + setValue(3, value); + } + + /** + * Getter for INFORMATION_SCHEMA.CONSTANTS.DATA_TYPE. + */ + public Integer getDataType() { + return (Integer) getValue(3); + } + + /** + * Setter for INFORMATION_SCHEMA.CONSTANTS.REMARKS. + */ + public void setRemarks(String value) { + setValue(4, value); + } + + /** + * Getter for INFORMATION_SCHEMA.CONSTANTS.REMARKS. + */ + public String getRemarks() { + return (String) getValue(4); + } + + /** + * Setter for INFORMATION_SCHEMA.CONSTANTS.SQL. + */ + public void setSql(String value) { + setValue(5, value); + } + + /** + * Getter for INFORMATION_SCHEMA.CONSTANTS.SQL. + */ + public String getSql() { + return (String) getValue(5); + } + + /** + * Setter for INFORMATION_SCHEMA.CONSTANTS.ID. + */ + public void setId(Integer value) { + setValue(6, value); + } + + /** + * Getter for INFORMATION_SCHEMA.CONSTANTS.ID. + */ + public Integer getId() { + return (Integer) getValue(6); + } + + // ------------------------------------------------------------------------- + // Record7 type implementation + // ------------------------------------------------------------------------- + + /** + * {@inheritDoc} + */ + @Override + public Row7 fieldsRow() { + return (Row7) super.fieldsRow(); + } + + /** + * {@inheritDoc} + */ + @Override + public Row7 valuesRow() { + return (Row7) super.valuesRow(); + } + + /** + * {@inheritDoc} + */ + @Override + public Field field1() { + return Constants.CONSTANTS.CONSTANT_CATALOG; + } + + /** + * {@inheritDoc} + */ + @Override + public Field field2() { + return Constants.CONSTANTS.CONSTANT_SCHEMA; + } + + /** + * {@inheritDoc} + */ + @Override + public Field field3() { + return Constants.CONSTANTS.CONSTANT_NAME; + } + + /** + * {@inheritDoc} + */ + @Override + public Field field4() { + return Constants.CONSTANTS.DATA_TYPE; + } + + /** + * {@inheritDoc} + */ + @Override + public Field field5() { + return Constants.CONSTANTS.REMARKS; + } + + /** + * {@inheritDoc} + */ + @Override + public Field field6() { + return Constants.CONSTANTS.SQL; + } + + /** + * {@inheritDoc} + */ + @Override + public Field field7() { + return Constants.CONSTANTS.ID; + } + + /** + * {@inheritDoc} + */ + @Override + public String value1() { + return getConstantCatalog(); + } + + /** + * {@inheritDoc} + */ + @Override + public String value2() { + return getConstantSchema(); + } + + /** + * {@inheritDoc} + */ + @Override + public String value3() { + return getConstantName(); + } + + /** + * {@inheritDoc} + */ + @Override + public Integer value4() { + return getDataType(); + } + + /** + * {@inheritDoc} + */ + @Override + public String value5() { + return getRemarks(); + } + + /** + * {@inheritDoc} + */ + @Override + public String value6() { + return getSql(); + } + + /** + * {@inheritDoc} + */ + @Override + public Integer value7() { + return getId(); + } + + /** + * {@inheritDoc} + */ + @Override + public ConstantsRecord value1(String value) { + setConstantCatalog(value); + return this; + } + + /** + * {@inheritDoc} + */ + @Override + public ConstantsRecord value2(String value) { + setConstantSchema(value); + return this; + } + + /** + * {@inheritDoc} + */ + @Override + public ConstantsRecord value3(String value) { + setConstantName(value); + return this; + } + + /** + * {@inheritDoc} + */ + @Override + public ConstantsRecord value4(Integer value) { + setDataType(value); + return this; + } + + /** + * {@inheritDoc} + */ + @Override + public ConstantsRecord value5(String value) { + setRemarks(value); + return this; + } + + /** + * {@inheritDoc} + */ + @Override + public ConstantsRecord value6(String value) { + setSql(value); + return this; + } + + /** + * {@inheritDoc} + */ + @Override + public ConstantsRecord value7(Integer value) { + setId(value); + return this; + } + + /** + * {@inheritDoc} + */ + @Override + public ConstantsRecord values(String value1, String value2, String value3, Integer value4, String value5, String value6, Integer value7) { + value1(value1); + value2(value2); + value3(value3); + value4(value4); + value5(value5); + value6(value6); + value7(value7); + return this; + } + + // ------------------------------------------------------------------------- + // Constructors + // ------------------------------------------------------------------------- + + /** + * Create a detached ConstantsRecord + */ + public ConstantsRecord() { + super(Constants.CONSTANTS); + } + + /** + * Create a detached, initialised ConstantsRecord + */ + public ConstantsRecord(String constantCatalog, String constantSchema, String constantName, Integer dataType, String remarks, String sql, Integer id) { + super(Constants.CONSTANTS); + + setValue(0, constantCatalog); + setValue(1, constantSchema); + setValue(2, constantName); + setValue(3, dataType); + setValue(4, remarks); + setValue(5, sql); + setValue(6, id); + } +} diff --git a/jooq-spring/src/main/java/com/baeldung/jooq/introduction/db/information_schema/tables/records/ConstraintsRecord.java b/jooq-spring/src/main/java/com/baeldung/jooq/introduction/db/information_schema/tables/records/ConstraintsRecord.java new file mode 100644 index 0000000000..f1727739a2 --- /dev/null +++ b/jooq-spring/src/main/java/com/baeldung/jooq/introduction/db/information_schema/tables/records/ConstraintsRecord.java @@ -0,0 +1,611 @@ +/** + * This class is generated by jOOQ + */ +package com.baeldung.jooq.introduction.db.information_schema.tables.records; + + +import com.baeldung.jooq.introduction.db.information_schema.tables.Constraints; + +import javax.annotation.Generated; + +import org.jooq.Field; +import org.jooq.Record13; +import org.jooq.Row13; +import org.jooq.impl.TableRecordImpl; + + +/** + * This class is generated by jOOQ. + */ +@Generated( + value = { + "http://www.jooq.org", + "jOOQ version:3.7.3" + }, + comments = "This class is generated by jOOQ" +) +@SuppressWarnings({ "all", "unchecked", "rawtypes" }) +public class ConstraintsRecord extends TableRecordImpl implements Record13 { + + private static final long serialVersionUID = 759662490; + + /** + * Setter for INFORMATION_SCHEMA.CONSTRAINTS.CONSTRAINT_CATALOG. + */ + public void setConstraintCatalog(String value) { + setValue(0, value); + } + + /** + * Getter for INFORMATION_SCHEMA.CONSTRAINTS.CONSTRAINT_CATALOG. + */ + public String getConstraintCatalog() { + return (String) getValue(0); + } + + /** + * Setter for INFORMATION_SCHEMA.CONSTRAINTS.CONSTRAINT_SCHEMA. + */ + public void setConstraintSchema(String value) { + setValue(1, value); + } + + /** + * Getter for INFORMATION_SCHEMA.CONSTRAINTS.CONSTRAINT_SCHEMA. + */ + public String getConstraintSchema() { + return (String) getValue(1); + } + + /** + * Setter for INFORMATION_SCHEMA.CONSTRAINTS.CONSTRAINT_NAME. + */ + public void setConstraintName(String value) { + setValue(2, value); + } + + /** + * Getter for INFORMATION_SCHEMA.CONSTRAINTS.CONSTRAINT_NAME. + */ + public String getConstraintName() { + return (String) getValue(2); + } + + /** + * Setter for INFORMATION_SCHEMA.CONSTRAINTS.CONSTRAINT_TYPE. + */ + public void setConstraintType(String value) { + setValue(3, value); + } + + /** + * Getter for INFORMATION_SCHEMA.CONSTRAINTS.CONSTRAINT_TYPE. + */ + public String getConstraintType() { + return (String) getValue(3); + } + + /** + * Setter for INFORMATION_SCHEMA.CONSTRAINTS.TABLE_CATALOG. + */ + public void setTableCatalog(String value) { + setValue(4, value); + } + + /** + * Getter for INFORMATION_SCHEMA.CONSTRAINTS.TABLE_CATALOG. + */ + public String getTableCatalog() { + return (String) getValue(4); + } + + /** + * Setter for INFORMATION_SCHEMA.CONSTRAINTS.TABLE_SCHEMA. + */ + public void setTableSchema(String value) { + setValue(5, value); + } + + /** + * Getter for INFORMATION_SCHEMA.CONSTRAINTS.TABLE_SCHEMA. + */ + public String getTableSchema() { + return (String) getValue(5); + } + + /** + * Setter for INFORMATION_SCHEMA.CONSTRAINTS.TABLE_NAME. + */ + public void setTableName(String value) { + setValue(6, value); + } + + /** + * Getter for INFORMATION_SCHEMA.CONSTRAINTS.TABLE_NAME. + */ + public String getTableName() { + return (String) getValue(6); + } + + /** + * Setter for INFORMATION_SCHEMA.CONSTRAINTS.UNIQUE_INDEX_NAME. + */ + public void setUniqueIndexName(String value) { + setValue(7, value); + } + + /** + * Getter for INFORMATION_SCHEMA.CONSTRAINTS.UNIQUE_INDEX_NAME. + */ + public String getUniqueIndexName() { + return (String) getValue(7); + } + + /** + * Setter for INFORMATION_SCHEMA.CONSTRAINTS.CHECK_EXPRESSION. + */ + public void setCheckExpression(String value) { + setValue(8, value); + } + + /** + * Getter for INFORMATION_SCHEMA.CONSTRAINTS.CHECK_EXPRESSION. + */ + public String getCheckExpression() { + return (String) getValue(8); + } + + /** + * Setter for INFORMATION_SCHEMA.CONSTRAINTS.COLUMN_LIST. + */ + public void setColumnList(String value) { + setValue(9, value); + } + + /** + * Getter for INFORMATION_SCHEMA.CONSTRAINTS.COLUMN_LIST. + */ + public String getColumnList() { + return (String) getValue(9); + } + + /** + * Setter for INFORMATION_SCHEMA.CONSTRAINTS.REMARKS. + */ + public void setRemarks(String value) { + setValue(10, value); + } + + /** + * Getter for INFORMATION_SCHEMA.CONSTRAINTS.REMARKS. + */ + public String getRemarks() { + return (String) getValue(10); + } + + /** + * Setter for INFORMATION_SCHEMA.CONSTRAINTS.SQL. + */ + public void setSql(String value) { + setValue(11, value); + } + + /** + * Getter for INFORMATION_SCHEMA.CONSTRAINTS.SQL. + */ + public String getSql() { + return (String) getValue(11); + } + + /** + * Setter for INFORMATION_SCHEMA.CONSTRAINTS.ID. + */ + public void setId(Integer value) { + setValue(12, value); + } + + /** + * Getter for INFORMATION_SCHEMA.CONSTRAINTS.ID. + */ + public Integer getId() { + return (Integer) getValue(12); + } + + // ------------------------------------------------------------------------- + // Record13 type implementation + // ------------------------------------------------------------------------- + + /** + * {@inheritDoc} + */ + @Override + public Row13 fieldsRow() { + return (Row13) super.fieldsRow(); + } + + /** + * {@inheritDoc} + */ + @Override + public Row13 valuesRow() { + return (Row13) super.valuesRow(); + } + + /** + * {@inheritDoc} + */ + @Override + public Field field1() { + return Constraints.CONSTRAINTS.CONSTRAINT_CATALOG; + } + + /** + * {@inheritDoc} + */ + @Override + public Field field2() { + return Constraints.CONSTRAINTS.CONSTRAINT_SCHEMA; + } + + /** + * {@inheritDoc} + */ + @Override + public Field field3() { + return Constraints.CONSTRAINTS.CONSTRAINT_NAME; + } + + /** + * {@inheritDoc} + */ + @Override + public Field field4() { + return Constraints.CONSTRAINTS.CONSTRAINT_TYPE; + } + + /** + * {@inheritDoc} + */ + @Override + public Field field5() { + return Constraints.CONSTRAINTS.TABLE_CATALOG; + } + + /** + * {@inheritDoc} + */ + @Override + public Field field6() { + return Constraints.CONSTRAINTS.TABLE_SCHEMA; + } + + /** + * {@inheritDoc} + */ + @Override + public Field field7() { + return Constraints.CONSTRAINTS.TABLE_NAME; + } + + /** + * {@inheritDoc} + */ + @Override + public Field field8() { + return Constraints.CONSTRAINTS.UNIQUE_INDEX_NAME; + } + + /** + * {@inheritDoc} + */ + @Override + public Field field9() { + return Constraints.CONSTRAINTS.CHECK_EXPRESSION; + } + + /** + * {@inheritDoc} + */ + @Override + public Field field10() { + return Constraints.CONSTRAINTS.COLUMN_LIST; + } + + /** + * {@inheritDoc} + */ + @Override + public Field field11() { + return Constraints.CONSTRAINTS.REMARKS; + } + + /** + * {@inheritDoc} + */ + @Override + public Field field12() { + return Constraints.CONSTRAINTS.SQL; + } + + /** + * {@inheritDoc} + */ + @Override + public Field field13() { + return Constraints.CONSTRAINTS.ID; + } + + /** + * {@inheritDoc} + */ + @Override + public String value1() { + return getConstraintCatalog(); + } + + /** + * {@inheritDoc} + */ + @Override + public String value2() { + return getConstraintSchema(); + } + + /** + * {@inheritDoc} + */ + @Override + public String value3() { + return getConstraintName(); + } + + /** + * {@inheritDoc} + */ + @Override + public String value4() { + return getConstraintType(); + } + + /** + * {@inheritDoc} + */ + @Override + public String value5() { + return getTableCatalog(); + } + + /** + * {@inheritDoc} + */ + @Override + public String value6() { + return getTableSchema(); + } + + /** + * {@inheritDoc} + */ + @Override + public String value7() { + return getTableName(); + } + + /** + * {@inheritDoc} + */ + @Override + public String value8() { + return getUniqueIndexName(); + } + + /** + * {@inheritDoc} + */ + @Override + public String value9() { + return getCheckExpression(); + } + + /** + * {@inheritDoc} + */ + @Override + public String value10() { + return getColumnList(); + } + + /** + * {@inheritDoc} + */ + @Override + public String value11() { + return getRemarks(); + } + + /** + * {@inheritDoc} + */ + @Override + public String value12() { + return getSql(); + } + + /** + * {@inheritDoc} + */ + @Override + public Integer value13() { + return getId(); + } + + /** + * {@inheritDoc} + */ + @Override + public ConstraintsRecord value1(String value) { + setConstraintCatalog(value); + return this; + } + + /** + * {@inheritDoc} + */ + @Override + public ConstraintsRecord value2(String value) { + setConstraintSchema(value); + return this; + } + + /** + * {@inheritDoc} + */ + @Override + public ConstraintsRecord value3(String value) { + setConstraintName(value); + return this; + } + + /** + * {@inheritDoc} + */ + @Override + public ConstraintsRecord value4(String value) { + setConstraintType(value); + return this; + } + + /** + * {@inheritDoc} + */ + @Override + public ConstraintsRecord value5(String value) { + setTableCatalog(value); + return this; + } + + /** + * {@inheritDoc} + */ + @Override + public ConstraintsRecord value6(String value) { + setTableSchema(value); + return this; + } + + /** + * {@inheritDoc} + */ + @Override + public ConstraintsRecord value7(String value) { + setTableName(value); + return this; + } + + /** + * {@inheritDoc} + */ + @Override + public ConstraintsRecord value8(String value) { + setUniqueIndexName(value); + return this; + } + + /** + * {@inheritDoc} + */ + @Override + public ConstraintsRecord value9(String value) { + setCheckExpression(value); + return this; + } + + /** + * {@inheritDoc} + */ + @Override + public ConstraintsRecord value10(String value) { + setColumnList(value); + return this; + } + + /** + * {@inheritDoc} + */ + @Override + public ConstraintsRecord value11(String value) { + setRemarks(value); + return this; + } + + /** + * {@inheritDoc} + */ + @Override + public ConstraintsRecord value12(String value) { + setSql(value); + return this; + } + + /** + * {@inheritDoc} + */ + @Override + public ConstraintsRecord value13(Integer value) { + setId(value); + return this; + } + + /** + * {@inheritDoc} + */ + @Override + public ConstraintsRecord values(String value1, String value2, String value3, String value4, String value5, String value6, String value7, String value8, String value9, String value10, String value11, String value12, Integer value13) { + value1(value1); + value2(value2); + value3(value3); + value4(value4); + value5(value5); + value6(value6); + value7(value7); + value8(value8); + value9(value9); + value10(value10); + value11(value11); + value12(value12); + value13(value13); + return this; + } + + // ------------------------------------------------------------------------- + // Constructors + // ------------------------------------------------------------------------- + + /** + * Create a detached ConstraintsRecord + */ + public ConstraintsRecord() { + super(Constraints.CONSTRAINTS); + } + + /** + * Create a detached, initialised ConstraintsRecord + */ + public ConstraintsRecord(String constraintCatalog, String constraintSchema, String constraintName, String constraintType, String tableCatalog, String tableSchema, String tableName, String uniqueIndexName, String checkExpression, String columnList, String remarks, String sql, Integer id) { + super(Constraints.CONSTRAINTS); + + setValue(0, constraintCatalog); + setValue(1, constraintSchema); + setValue(2, constraintName); + setValue(3, constraintType); + setValue(4, tableCatalog); + setValue(5, tableSchema); + setValue(6, tableName); + setValue(7, uniqueIndexName); + setValue(8, checkExpression); + setValue(9, columnList); + setValue(10, remarks); + setValue(11, sql); + setValue(12, id); + } +} diff --git a/jooq-spring/src/main/java/com/baeldung/jooq/introduction/db/information_schema/tables/records/CrossReferencesRecord.java b/jooq-spring/src/main/java/com/baeldung/jooq/introduction/db/information_schema/tables/records/CrossReferencesRecord.java new file mode 100644 index 0000000000..ab5ae9c2a3 --- /dev/null +++ b/jooq-spring/src/main/java/com/baeldung/jooq/introduction/db/information_schema/tables/records/CrossReferencesRecord.java @@ -0,0 +1,652 @@ +/** + * This class is generated by jOOQ + */ +package com.baeldung.jooq.introduction.db.information_schema.tables.records; + + +import com.baeldung.jooq.introduction.db.information_schema.tables.CrossReferences; + +import javax.annotation.Generated; + +import org.jooq.Field; +import org.jooq.Record14; +import org.jooq.Row14; +import org.jooq.impl.TableRecordImpl; + + +/** + * This class is generated by jOOQ. + */ +@Generated( + value = { + "http://www.jooq.org", + "jOOQ version:3.7.3" + }, + comments = "This class is generated by jOOQ" +) +@SuppressWarnings({ "all", "unchecked", "rawtypes" }) +public class CrossReferencesRecord extends TableRecordImpl implements Record14 { + + private static final long serialVersionUID = -328289893; + + /** + * Setter for INFORMATION_SCHEMA.CROSS_REFERENCES.PKTABLE_CATALOG. + */ + public void setPktableCatalog(String value) { + setValue(0, value); + } + + /** + * Getter for INFORMATION_SCHEMA.CROSS_REFERENCES.PKTABLE_CATALOG. + */ + public String getPktableCatalog() { + return (String) getValue(0); + } + + /** + * Setter for INFORMATION_SCHEMA.CROSS_REFERENCES.PKTABLE_SCHEMA. + */ + public void setPktableSchema(String value) { + setValue(1, value); + } + + /** + * Getter for INFORMATION_SCHEMA.CROSS_REFERENCES.PKTABLE_SCHEMA. + */ + public String getPktableSchema() { + return (String) getValue(1); + } + + /** + * Setter for INFORMATION_SCHEMA.CROSS_REFERENCES.PKTABLE_NAME. + */ + public void setPktableName(String value) { + setValue(2, value); + } + + /** + * Getter for INFORMATION_SCHEMA.CROSS_REFERENCES.PKTABLE_NAME. + */ + public String getPktableName() { + return (String) getValue(2); + } + + /** + * Setter for INFORMATION_SCHEMA.CROSS_REFERENCES.PKCOLUMN_NAME. + */ + public void setPkcolumnName(String value) { + setValue(3, value); + } + + /** + * Getter for INFORMATION_SCHEMA.CROSS_REFERENCES.PKCOLUMN_NAME. + */ + public String getPkcolumnName() { + return (String) getValue(3); + } + + /** + * Setter for INFORMATION_SCHEMA.CROSS_REFERENCES.FKTABLE_CATALOG. + */ + public void setFktableCatalog(String value) { + setValue(4, value); + } + + /** + * Getter for INFORMATION_SCHEMA.CROSS_REFERENCES.FKTABLE_CATALOG. + */ + public String getFktableCatalog() { + return (String) getValue(4); + } + + /** + * Setter for INFORMATION_SCHEMA.CROSS_REFERENCES.FKTABLE_SCHEMA. + */ + public void setFktableSchema(String value) { + setValue(5, value); + } + + /** + * Getter for INFORMATION_SCHEMA.CROSS_REFERENCES.FKTABLE_SCHEMA. + */ + public String getFktableSchema() { + return (String) getValue(5); + } + + /** + * Setter for INFORMATION_SCHEMA.CROSS_REFERENCES.FKTABLE_NAME. + */ + public void setFktableName(String value) { + setValue(6, value); + } + + /** + * Getter for INFORMATION_SCHEMA.CROSS_REFERENCES.FKTABLE_NAME. + */ + public String getFktableName() { + return (String) getValue(6); + } + + /** + * Setter for INFORMATION_SCHEMA.CROSS_REFERENCES.FKCOLUMN_NAME. + */ + public void setFkcolumnName(String value) { + setValue(7, value); + } + + /** + * Getter for INFORMATION_SCHEMA.CROSS_REFERENCES.FKCOLUMN_NAME. + */ + public String getFkcolumnName() { + return (String) getValue(7); + } + + /** + * Setter for INFORMATION_SCHEMA.CROSS_REFERENCES.ORDINAL_POSITION. + */ + public void setOrdinalPosition(Short value) { + setValue(8, value); + } + + /** + * Getter for INFORMATION_SCHEMA.CROSS_REFERENCES.ORDINAL_POSITION. + */ + public Short getOrdinalPosition() { + return (Short) getValue(8); + } + + /** + * Setter for INFORMATION_SCHEMA.CROSS_REFERENCES.UPDATE_RULE. + */ + public void setUpdateRule(Short value) { + setValue(9, value); + } + + /** + * Getter for INFORMATION_SCHEMA.CROSS_REFERENCES.UPDATE_RULE. + */ + public Short getUpdateRule() { + return (Short) getValue(9); + } + + /** + * Setter for INFORMATION_SCHEMA.CROSS_REFERENCES.DELETE_RULE. + */ + public void setDeleteRule(Short value) { + setValue(10, value); + } + + /** + * Getter for INFORMATION_SCHEMA.CROSS_REFERENCES.DELETE_RULE. + */ + public Short getDeleteRule() { + return (Short) getValue(10); + } + + /** + * Setter for INFORMATION_SCHEMA.CROSS_REFERENCES.FK_NAME. + */ + public void setFkName(String value) { + setValue(11, value); + } + + /** + * Getter for INFORMATION_SCHEMA.CROSS_REFERENCES.FK_NAME. + */ + public String getFkName() { + return (String) getValue(11); + } + + /** + * Setter for INFORMATION_SCHEMA.CROSS_REFERENCES.PK_NAME. + */ + public void setPkName(String value) { + setValue(12, value); + } + + /** + * Getter for INFORMATION_SCHEMA.CROSS_REFERENCES.PK_NAME. + */ + public String getPkName() { + return (String) getValue(12); + } + + /** + * Setter for INFORMATION_SCHEMA.CROSS_REFERENCES.DEFERRABILITY. + */ + public void setDeferrability(Short value) { + setValue(13, value); + } + + /** + * Getter for INFORMATION_SCHEMA.CROSS_REFERENCES.DEFERRABILITY. + */ + public Short getDeferrability() { + return (Short) getValue(13); + } + + // ------------------------------------------------------------------------- + // Record14 type implementation + // ------------------------------------------------------------------------- + + /** + * {@inheritDoc} + */ + @Override + public Row14 fieldsRow() { + return (Row14) super.fieldsRow(); + } + + /** + * {@inheritDoc} + */ + @Override + public Row14 valuesRow() { + return (Row14) super.valuesRow(); + } + + /** + * {@inheritDoc} + */ + @Override + public Field field1() { + return CrossReferences.CROSS_REFERENCES.PKTABLE_CATALOG; + } + + /** + * {@inheritDoc} + */ + @Override + public Field field2() { + return CrossReferences.CROSS_REFERENCES.PKTABLE_SCHEMA; + } + + /** + * {@inheritDoc} + */ + @Override + public Field field3() { + return CrossReferences.CROSS_REFERENCES.PKTABLE_NAME; + } + + /** + * {@inheritDoc} + */ + @Override + public Field field4() { + return CrossReferences.CROSS_REFERENCES.PKCOLUMN_NAME; + } + + /** + * {@inheritDoc} + */ + @Override + public Field field5() { + return CrossReferences.CROSS_REFERENCES.FKTABLE_CATALOG; + } + + /** + * {@inheritDoc} + */ + @Override + public Field field6() { + return CrossReferences.CROSS_REFERENCES.FKTABLE_SCHEMA; + } + + /** + * {@inheritDoc} + */ + @Override + public Field field7() { + return CrossReferences.CROSS_REFERENCES.FKTABLE_NAME; + } + + /** + * {@inheritDoc} + */ + @Override + public Field field8() { + return CrossReferences.CROSS_REFERENCES.FKCOLUMN_NAME; + } + + /** + * {@inheritDoc} + */ + @Override + public Field field9() { + return CrossReferences.CROSS_REFERENCES.ORDINAL_POSITION; + } + + /** + * {@inheritDoc} + */ + @Override + public Field field10() { + return CrossReferences.CROSS_REFERENCES.UPDATE_RULE; + } + + /** + * {@inheritDoc} + */ + @Override + public Field field11() { + return CrossReferences.CROSS_REFERENCES.DELETE_RULE; + } + + /** + * {@inheritDoc} + */ + @Override + public Field field12() { + return CrossReferences.CROSS_REFERENCES.FK_NAME; + } + + /** + * {@inheritDoc} + */ + @Override + public Field field13() { + return CrossReferences.CROSS_REFERENCES.PK_NAME; + } + + /** + * {@inheritDoc} + */ + @Override + public Field field14() { + return CrossReferences.CROSS_REFERENCES.DEFERRABILITY; + } + + /** + * {@inheritDoc} + */ + @Override + public String value1() { + return getPktableCatalog(); + } + + /** + * {@inheritDoc} + */ + @Override + public String value2() { + return getPktableSchema(); + } + + /** + * {@inheritDoc} + */ + @Override + public String value3() { + return getPktableName(); + } + + /** + * {@inheritDoc} + */ + @Override + public String value4() { + return getPkcolumnName(); + } + + /** + * {@inheritDoc} + */ + @Override + public String value5() { + return getFktableCatalog(); + } + + /** + * {@inheritDoc} + */ + @Override + public String value6() { + return getFktableSchema(); + } + + /** + * {@inheritDoc} + */ + @Override + public String value7() { + return getFktableName(); + } + + /** + * {@inheritDoc} + */ + @Override + public String value8() { + return getFkcolumnName(); + } + + /** + * {@inheritDoc} + */ + @Override + public Short value9() { + return getOrdinalPosition(); + } + + /** + * {@inheritDoc} + */ + @Override + public Short value10() { + return getUpdateRule(); + } + + /** + * {@inheritDoc} + */ + @Override + public Short value11() { + return getDeleteRule(); + } + + /** + * {@inheritDoc} + */ + @Override + public String value12() { + return getFkName(); + } + + /** + * {@inheritDoc} + */ + @Override + public String value13() { + return getPkName(); + } + + /** + * {@inheritDoc} + */ + @Override + public Short value14() { + return getDeferrability(); + } + + /** + * {@inheritDoc} + */ + @Override + public CrossReferencesRecord value1(String value) { + setPktableCatalog(value); + return this; + } + + /** + * {@inheritDoc} + */ + @Override + public CrossReferencesRecord value2(String value) { + setPktableSchema(value); + return this; + } + + /** + * {@inheritDoc} + */ + @Override + public CrossReferencesRecord value3(String value) { + setPktableName(value); + return this; + } + + /** + * {@inheritDoc} + */ + @Override + public CrossReferencesRecord value4(String value) { + setPkcolumnName(value); + return this; + } + + /** + * {@inheritDoc} + */ + @Override + public CrossReferencesRecord value5(String value) { + setFktableCatalog(value); + return this; + } + + /** + * {@inheritDoc} + */ + @Override + public CrossReferencesRecord value6(String value) { + setFktableSchema(value); + return this; + } + + /** + * {@inheritDoc} + */ + @Override + public CrossReferencesRecord value7(String value) { + setFktableName(value); + return this; + } + + /** + * {@inheritDoc} + */ + @Override + public CrossReferencesRecord value8(String value) { + setFkcolumnName(value); + return this; + } + + /** + * {@inheritDoc} + */ + @Override + public CrossReferencesRecord value9(Short value) { + setOrdinalPosition(value); + return this; + } + + /** + * {@inheritDoc} + */ + @Override + public CrossReferencesRecord value10(Short value) { + setUpdateRule(value); + return this; + } + + /** + * {@inheritDoc} + */ + @Override + public CrossReferencesRecord value11(Short value) { + setDeleteRule(value); + return this; + } + + /** + * {@inheritDoc} + */ + @Override + public CrossReferencesRecord value12(String value) { + setFkName(value); + return this; + } + + /** + * {@inheritDoc} + */ + @Override + public CrossReferencesRecord value13(String value) { + setPkName(value); + return this; + } + + /** + * {@inheritDoc} + */ + @Override + public CrossReferencesRecord value14(Short value) { + setDeferrability(value); + return this; + } + + /** + * {@inheritDoc} + */ + @Override + public CrossReferencesRecord values(String value1, String value2, String value3, String value4, String value5, String value6, String value7, String value8, Short value9, Short value10, Short value11, String value12, String value13, Short value14) { + value1(value1); + value2(value2); + value3(value3); + value4(value4); + value5(value5); + value6(value6); + value7(value7); + value8(value8); + value9(value9); + value10(value10); + value11(value11); + value12(value12); + value13(value13); + value14(value14); + return this; + } + + // ------------------------------------------------------------------------- + // Constructors + // ------------------------------------------------------------------------- + + /** + * Create a detached CrossReferencesRecord + */ + public CrossReferencesRecord() { + super(CrossReferences.CROSS_REFERENCES); + } + + /** + * Create a detached, initialised CrossReferencesRecord + */ + public CrossReferencesRecord(String pktableCatalog, String pktableSchema, String pktableName, String pkcolumnName, String fktableCatalog, String fktableSchema, String fktableName, String fkcolumnName, Short ordinalPosition, Short updateRule, Short deleteRule, String fkName, String pkName, Short deferrability) { + super(CrossReferences.CROSS_REFERENCES); + + setValue(0, pktableCatalog); + setValue(1, pktableSchema); + setValue(2, pktableName); + setValue(3, pkcolumnName); + setValue(4, fktableCatalog); + setValue(5, fktableSchema); + setValue(6, fktableName); + setValue(7, fkcolumnName); + setValue(8, ordinalPosition); + setValue(9, updateRule); + setValue(10, deleteRule); + setValue(11, fkName); + setValue(12, pkName); + setValue(13, deferrability); + } +} diff --git a/jooq-spring/src/main/java/com/baeldung/jooq/introduction/db/information_schema/tables/records/DomainsRecord.java b/jooq-spring/src/main/java/com/baeldung/jooq/introduction/db/information_schema/tables/records/DomainsRecord.java new file mode 100644 index 0000000000..7f3b812750 --- /dev/null +++ b/jooq-spring/src/main/java/com/baeldung/jooq/introduction/db/information_schema/tables/records/DomainsRecord.java @@ -0,0 +1,652 @@ +/** + * This class is generated by jOOQ + */ +package com.baeldung.jooq.introduction.db.information_schema.tables.records; + + +import com.baeldung.jooq.introduction.db.information_schema.tables.Domains; + +import javax.annotation.Generated; + +import org.jooq.Field; +import org.jooq.Record14; +import org.jooq.Row14; +import org.jooq.impl.TableRecordImpl; + + +/** + * This class is generated by jOOQ. + */ +@Generated( + value = { + "http://www.jooq.org", + "jOOQ version:3.7.3" + }, + comments = "This class is generated by jOOQ" +) +@SuppressWarnings({ "all", "unchecked", "rawtypes" }) +public class DomainsRecord extends TableRecordImpl implements Record14 { + + private static final long serialVersionUID = 1750298997; + + /** + * Setter for INFORMATION_SCHEMA.DOMAINS.DOMAIN_CATALOG. + */ + public void setDomainCatalog(String value) { + setValue(0, value); + } + + /** + * Getter for INFORMATION_SCHEMA.DOMAINS.DOMAIN_CATALOG. + */ + public String getDomainCatalog() { + return (String) getValue(0); + } + + /** + * Setter for INFORMATION_SCHEMA.DOMAINS.DOMAIN_SCHEMA. + */ + public void setDomainSchema(String value) { + setValue(1, value); + } + + /** + * Getter for INFORMATION_SCHEMA.DOMAINS.DOMAIN_SCHEMA. + */ + public String getDomainSchema() { + return (String) getValue(1); + } + + /** + * Setter for INFORMATION_SCHEMA.DOMAINS.DOMAIN_NAME. + */ + public void setDomainName(String value) { + setValue(2, value); + } + + /** + * Getter for INFORMATION_SCHEMA.DOMAINS.DOMAIN_NAME. + */ + public String getDomainName() { + return (String) getValue(2); + } + + /** + * Setter for INFORMATION_SCHEMA.DOMAINS.COLUMN_DEFAULT. + */ + public void setColumnDefault(String value) { + setValue(3, value); + } + + /** + * Getter for INFORMATION_SCHEMA.DOMAINS.COLUMN_DEFAULT. + */ + public String getColumnDefault() { + return (String) getValue(3); + } + + /** + * Setter for INFORMATION_SCHEMA.DOMAINS.IS_NULLABLE. + */ + public void setIsNullable(String value) { + setValue(4, value); + } + + /** + * Getter for INFORMATION_SCHEMA.DOMAINS.IS_NULLABLE. + */ + public String getIsNullable() { + return (String) getValue(4); + } + + /** + * Setter for INFORMATION_SCHEMA.DOMAINS.DATA_TYPE. + */ + public void setDataType(Integer value) { + setValue(5, value); + } + + /** + * Getter for INFORMATION_SCHEMA.DOMAINS.DATA_TYPE. + */ + public Integer getDataType() { + return (Integer) getValue(5); + } + + /** + * Setter for INFORMATION_SCHEMA.DOMAINS.PRECISION. + */ + public void setPrecision(Integer value) { + setValue(6, value); + } + + /** + * Getter for INFORMATION_SCHEMA.DOMAINS.PRECISION. + */ + public Integer getPrecision() { + return (Integer) getValue(6); + } + + /** + * Setter for INFORMATION_SCHEMA.DOMAINS.SCALE. + */ + public void setScale(Integer value) { + setValue(7, value); + } + + /** + * Getter for INFORMATION_SCHEMA.DOMAINS.SCALE. + */ + public Integer getScale() { + return (Integer) getValue(7); + } + + /** + * Setter for INFORMATION_SCHEMA.DOMAINS.TYPE_NAME. + */ + public void setTypeName(String value) { + setValue(8, value); + } + + /** + * Getter for INFORMATION_SCHEMA.DOMAINS.TYPE_NAME. + */ + public String getTypeName() { + return (String) getValue(8); + } + + /** + * Setter for INFORMATION_SCHEMA.DOMAINS.SELECTIVITY. + */ + public void setSelectivity(Integer value) { + setValue(9, value); + } + + /** + * Getter for INFORMATION_SCHEMA.DOMAINS.SELECTIVITY. + */ + public Integer getSelectivity() { + return (Integer) getValue(9); + } + + /** + * Setter for INFORMATION_SCHEMA.DOMAINS.CHECK_CONSTRAINT. + */ + public void setCheckConstraint(String value) { + setValue(10, value); + } + + /** + * Getter for INFORMATION_SCHEMA.DOMAINS.CHECK_CONSTRAINT. + */ + public String getCheckConstraint() { + return (String) getValue(10); + } + + /** + * Setter for INFORMATION_SCHEMA.DOMAINS.REMARKS. + */ + public void setRemarks(String value) { + setValue(11, value); + } + + /** + * Getter for INFORMATION_SCHEMA.DOMAINS.REMARKS. + */ + public String getRemarks() { + return (String) getValue(11); + } + + /** + * Setter for INFORMATION_SCHEMA.DOMAINS.SQL. + */ + public void setSql(String value) { + setValue(12, value); + } + + /** + * Getter for INFORMATION_SCHEMA.DOMAINS.SQL. + */ + public String getSql() { + return (String) getValue(12); + } + + /** + * Setter for INFORMATION_SCHEMA.DOMAINS.ID. + */ + public void setId(Integer value) { + setValue(13, value); + } + + /** + * Getter for INFORMATION_SCHEMA.DOMAINS.ID. + */ + public Integer getId() { + return (Integer) getValue(13); + } + + // ------------------------------------------------------------------------- + // Record14 type implementation + // ------------------------------------------------------------------------- + + /** + * {@inheritDoc} + */ + @Override + public Row14 fieldsRow() { + return (Row14) super.fieldsRow(); + } + + /** + * {@inheritDoc} + */ + @Override + public Row14 valuesRow() { + return (Row14) super.valuesRow(); + } + + /** + * {@inheritDoc} + */ + @Override + public Field field1() { + return Domains.DOMAINS.DOMAIN_CATALOG; + } + + /** + * {@inheritDoc} + */ + @Override + public Field field2() { + return Domains.DOMAINS.DOMAIN_SCHEMA; + } + + /** + * {@inheritDoc} + */ + @Override + public Field field3() { + return Domains.DOMAINS.DOMAIN_NAME; + } + + /** + * {@inheritDoc} + */ + @Override + public Field field4() { + return Domains.DOMAINS.COLUMN_DEFAULT; + } + + /** + * {@inheritDoc} + */ + @Override + public Field field5() { + return Domains.DOMAINS.IS_NULLABLE; + } + + /** + * {@inheritDoc} + */ + @Override + public Field field6() { + return Domains.DOMAINS.DATA_TYPE; + } + + /** + * {@inheritDoc} + */ + @Override + public Field field7() { + return Domains.DOMAINS.PRECISION; + } + + /** + * {@inheritDoc} + */ + @Override + public Field field8() { + return Domains.DOMAINS.SCALE; + } + + /** + * {@inheritDoc} + */ + @Override + public Field field9() { + return Domains.DOMAINS.TYPE_NAME; + } + + /** + * {@inheritDoc} + */ + @Override + public Field field10() { + return Domains.DOMAINS.SELECTIVITY; + } + + /** + * {@inheritDoc} + */ + @Override + public Field field11() { + return Domains.DOMAINS.CHECK_CONSTRAINT; + } + + /** + * {@inheritDoc} + */ + @Override + public Field field12() { + return Domains.DOMAINS.REMARKS; + } + + /** + * {@inheritDoc} + */ + @Override + public Field field13() { + return Domains.DOMAINS.SQL; + } + + /** + * {@inheritDoc} + */ + @Override + public Field field14() { + return Domains.DOMAINS.ID; + } + + /** + * {@inheritDoc} + */ + @Override + public String value1() { + return getDomainCatalog(); + } + + /** + * {@inheritDoc} + */ + @Override + public String value2() { + return getDomainSchema(); + } + + /** + * {@inheritDoc} + */ + @Override + public String value3() { + return getDomainName(); + } + + /** + * {@inheritDoc} + */ + @Override + public String value4() { + return getColumnDefault(); + } + + /** + * {@inheritDoc} + */ + @Override + public String value5() { + return getIsNullable(); + } + + /** + * {@inheritDoc} + */ + @Override + public Integer value6() { + return getDataType(); + } + + /** + * {@inheritDoc} + */ + @Override + public Integer value7() { + return getPrecision(); + } + + /** + * {@inheritDoc} + */ + @Override + public Integer value8() { + return getScale(); + } + + /** + * {@inheritDoc} + */ + @Override + public String value9() { + return getTypeName(); + } + + /** + * {@inheritDoc} + */ + @Override + public Integer value10() { + return getSelectivity(); + } + + /** + * {@inheritDoc} + */ + @Override + public String value11() { + return getCheckConstraint(); + } + + /** + * {@inheritDoc} + */ + @Override + public String value12() { + return getRemarks(); + } + + /** + * {@inheritDoc} + */ + @Override + public String value13() { + return getSql(); + } + + /** + * {@inheritDoc} + */ + @Override + public Integer value14() { + return getId(); + } + + /** + * {@inheritDoc} + */ + @Override + public DomainsRecord value1(String value) { + setDomainCatalog(value); + return this; + } + + /** + * {@inheritDoc} + */ + @Override + public DomainsRecord value2(String value) { + setDomainSchema(value); + return this; + } + + /** + * {@inheritDoc} + */ + @Override + public DomainsRecord value3(String value) { + setDomainName(value); + return this; + } + + /** + * {@inheritDoc} + */ + @Override + public DomainsRecord value4(String value) { + setColumnDefault(value); + return this; + } + + /** + * {@inheritDoc} + */ + @Override + public DomainsRecord value5(String value) { + setIsNullable(value); + return this; + } + + /** + * {@inheritDoc} + */ + @Override + public DomainsRecord value6(Integer value) { + setDataType(value); + return this; + } + + /** + * {@inheritDoc} + */ + @Override + public DomainsRecord value7(Integer value) { + setPrecision(value); + return this; + } + + /** + * {@inheritDoc} + */ + @Override + public DomainsRecord value8(Integer value) { + setScale(value); + return this; + } + + /** + * {@inheritDoc} + */ + @Override + public DomainsRecord value9(String value) { + setTypeName(value); + return this; + } + + /** + * {@inheritDoc} + */ + @Override + public DomainsRecord value10(Integer value) { + setSelectivity(value); + return this; + } + + /** + * {@inheritDoc} + */ + @Override + public DomainsRecord value11(String value) { + setCheckConstraint(value); + return this; + } + + /** + * {@inheritDoc} + */ + @Override + public DomainsRecord value12(String value) { + setRemarks(value); + return this; + } + + /** + * {@inheritDoc} + */ + @Override + public DomainsRecord value13(String value) { + setSql(value); + return this; + } + + /** + * {@inheritDoc} + */ + @Override + public DomainsRecord value14(Integer value) { + setId(value); + return this; + } + + /** + * {@inheritDoc} + */ + @Override + public DomainsRecord values(String value1, String value2, String value3, String value4, String value5, Integer value6, Integer value7, Integer value8, String value9, Integer value10, String value11, String value12, String value13, Integer value14) { + value1(value1); + value2(value2); + value3(value3); + value4(value4); + value5(value5); + value6(value6); + value7(value7); + value8(value8); + value9(value9); + value10(value10); + value11(value11); + value12(value12); + value13(value13); + value14(value14); + return this; + } + + // ------------------------------------------------------------------------- + // Constructors + // ------------------------------------------------------------------------- + + /** + * Create a detached DomainsRecord + */ + public DomainsRecord() { + super(Domains.DOMAINS); + } + + /** + * Create a detached, initialised DomainsRecord + */ + public DomainsRecord(String domainCatalog, String domainSchema, String domainName, String columnDefault, String isNullable, Integer dataType, Integer precision, Integer scale, String typeName, Integer selectivity, String checkConstraint, String remarks, String sql, Integer id) { + super(Domains.DOMAINS); + + setValue(0, domainCatalog); + setValue(1, domainSchema); + setValue(2, domainName); + setValue(3, columnDefault); + setValue(4, isNullable); + setValue(5, dataType); + setValue(6, precision); + setValue(7, scale); + setValue(8, typeName); + setValue(9, selectivity); + setValue(10, checkConstraint); + setValue(11, remarks); + setValue(12, sql); + setValue(13, id); + } +} diff --git a/jooq-spring/src/main/java/com/baeldung/jooq/introduction/db/information_schema/tables/records/FunctionAliasesRecord.java b/jooq-spring/src/main/java/com/baeldung/jooq/introduction/db/information_schema/tables/records/FunctionAliasesRecord.java new file mode 100644 index 0000000000..7c095555bc --- /dev/null +++ b/jooq-spring/src/main/java/com/baeldung/jooq/introduction/db/information_schema/tables/records/FunctionAliasesRecord.java @@ -0,0 +1,570 @@ +/** + * This class is generated by jOOQ + */ +package com.baeldung.jooq.introduction.db.information_schema.tables.records; + + +import com.baeldung.jooq.introduction.db.information_schema.tables.FunctionAliases; + +import javax.annotation.Generated; + +import org.jooq.Field; +import org.jooq.Record12; +import org.jooq.Row12; +import org.jooq.impl.TableRecordImpl; + + +/** + * This class is generated by jOOQ. + */ +@Generated( + value = { + "http://www.jooq.org", + "jOOQ version:3.7.3" + }, + comments = "This class is generated by jOOQ" +) +@SuppressWarnings({ "all", "unchecked", "rawtypes" }) +public class FunctionAliasesRecord extends TableRecordImpl implements Record12 { + + private static final long serialVersionUID = -788602015; + + /** + * Setter for INFORMATION_SCHEMA.FUNCTION_ALIASES.ALIAS_CATALOG. + */ + public void setAliasCatalog(String value) { + setValue(0, value); + } + + /** + * Getter for INFORMATION_SCHEMA.FUNCTION_ALIASES.ALIAS_CATALOG. + */ + public String getAliasCatalog() { + return (String) getValue(0); + } + + /** + * Setter for INFORMATION_SCHEMA.FUNCTION_ALIASES.ALIAS_SCHEMA. + */ + public void setAliasSchema(String value) { + setValue(1, value); + } + + /** + * Getter for INFORMATION_SCHEMA.FUNCTION_ALIASES.ALIAS_SCHEMA. + */ + public String getAliasSchema() { + return (String) getValue(1); + } + + /** + * Setter for INFORMATION_SCHEMA.FUNCTION_ALIASES.ALIAS_NAME. + */ + public void setAliasName(String value) { + setValue(2, value); + } + + /** + * Getter for INFORMATION_SCHEMA.FUNCTION_ALIASES.ALIAS_NAME. + */ + public String getAliasName() { + return (String) getValue(2); + } + + /** + * Setter for INFORMATION_SCHEMA.FUNCTION_ALIASES.JAVA_CLASS. + */ + public void setJavaClass(String value) { + setValue(3, value); + } + + /** + * Getter for INFORMATION_SCHEMA.FUNCTION_ALIASES.JAVA_CLASS. + */ + public String getJavaClass() { + return (String) getValue(3); + } + + /** + * Setter for INFORMATION_SCHEMA.FUNCTION_ALIASES.JAVA_METHOD. + */ + public void setJavaMethod(String value) { + setValue(4, value); + } + + /** + * Getter for INFORMATION_SCHEMA.FUNCTION_ALIASES.JAVA_METHOD. + */ + public String getJavaMethod() { + return (String) getValue(4); + } + + /** + * Setter for INFORMATION_SCHEMA.FUNCTION_ALIASES.DATA_TYPE. + */ + public void setDataType(Integer value) { + setValue(5, value); + } + + /** + * Getter for INFORMATION_SCHEMA.FUNCTION_ALIASES.DATA_TYPE. + */ + public Integer getDataType() { + return (Integer) getValue(5); + } + + /** + * Setter for INFORMATION_SCHEMA.FUNCTION_ALIASES.TYPE_NAME. + */ + public void setTypeName(String value) { + setValue(6, value); + } + + /** + * Getter for INFORMATION_SCHEMA.FUNCTION_ALIASES.TYPE_NAME. + */ + public String getTypeName() { + return (String) getValue(6); + } + + /** + * Setter for INFORMATION_SCHEMA.FUNCTION_ALIASES.COLUMN_COUNT. + */ + public void setColumnCount(Integer value) { + setValue(7, value); + } + + /** + * Getter for INFORMATION_SCHEMA.FUNCTION_ALIASES.COLUMN_COUNT. + */ + public Integer getColumnCount() { + return (Integer) getValue(7); + } + + /** + * Setter for INFORMATION_SCHEMA.FUNCTION_ALIASES.RETURNS_RESULT. + */ + public void setReturnsResult(Short value) { + setValue(8, value); + } + + /** + * Getter for INFORMATION_SCHEMA.FUNCTION_ALIASES.RETURNS_RESULT. + */ + public Short getReturnsResult() { + return (Short) getValue(8); + } + + /** + * Setter for INFORMATION_SCHEMA.FUNCTION_ALIASES.REMARKS. + */ + public void setRemarks(String value) { + setValue(9, value); + } + + /** + * Getter for INFORMATION_SCHEMA.FUNCTION_ALIASES.REMARKS. + */ + public String getRemarks() { + return (String) getValue(9); + } + + /** + * Setter for INFORMATION_SCHEMA.FUNCTION_ALIASES.ID. + */ + public void setId(Integer value) { + setValue(10, value); + } + + /** + * Getter for INFORMATION_SCHEMA.FUNCTION_ALIASES.ID. + */ + public Integer getId() { + return (Integer) getValue(10); + } + + /** + * Setter for INFORMATION_SCHEMA.FUNCTION_ALIASES.SOURCE. + */ + public void setSource(String value) { + setValue(11, value); + } + + /** + * Getter for INFORMATION_SCHEMA.FUNCTION_ALIASES.SOURCE. + */ + public String getSource() { + return (String) getValue(11); + } + + // ------------------------------------------------------------------------- + // Record12 type implementation + // ------------------------------------------------------------------------- + + /** + * {@inheritDoc} + */ + @Override + public Row12 fieldsRow() { + return (Row12) super.fieldsRow(); + } + + /** + * {@inheritDoc} + */ + @Override + public Row12 valuesRow() { + return (Row12) super.valuesRow(); + } + + /** + * {@inheritDoc} + */ + @Override + public Field field1() { + return FunctionAliases.FUNCTION_ALIASES.ALIAS_CATALOG; + } + + /** + * {@inheritDoc} + */ + @Override + public Field field2() { + return FunctionAliases.FUNCTION_ALIASES.ALIAS_SCHEMA; + } + + /** + * {@inheritDoc} + */ + @Override + public Field field3() { + return FunctionAliases.FUNCTION_ALIASES.ALIAS_NAME; + } + + /** + * {@inheritDoc} + */ + @Override + public Field field4() { + return FunctionAliases.FUNCTION_ALIASES.JAVA_CLASS; + } + + /** + * {@inheritDoc} + */ + @Override + public Field field5() { + return FunctionAliases.FUNCTION_ALIASES.JAVA_METHOD; + } + + /** + * {@inheritDoc} + */ + @Override + public Field field6() { + return FunctionAliases.FUNCTION_ALIASES.DATA_TYPE; + } + + /** + * {@inheritDoc} + */ + @Override + public Field field7() { + return FunctionAliases.FUNCTION_ALIASES.TYPE_NAME; + } + + /** + * {@inheritDoc} + */ + @Override + public Field field8() { + return FunctionAliases.FUNCTION_ALIASES.COLUMN_COUNT; + } + + /** + * {@inheritDoc} + */ + @Override + public Field field9() { + return FunctionAliases.FUNCTION_ALIASES.RETURNS_RESULT; + } + + /** + * {@inheritDoc} + */ + @Override + public Field field10() { + return FunctionAliases.FUNCTION_ALIASES.REMARKS; + } + + /** + * {@inheritDoc} + */ + @Override + public Field field11() { + return FunctionAliases.FUNCTION_ALIASES.ID; + } + + /** + * {@inheritDoc} + */ + @Override + public Field field12() { + return FunctionAliases.FUNCTION_ALIASES.SOURCE; + } + + /** + * {@inheritDoc} + */ + @Override + public String value1() { + return getAliasCatalog(); + } + + /** + * {@inheritDoc} + */ + @Override + public String value2() { + return getAliasSchema(); + } + + /** + * {@inheritDoc} + */ + @Override + public String value3() { + return getAliasName(); + } + + /** + * {@inheritDoc} + */ + @Override + public String value4() { + return getJavaClass(); + } + + /** + * {@inheritDoc} + */ + @Override + public String value5() { + return getJavaMethod(); + } + + /** + * {@inheritDoc} + */ + @Override + public Integer value6() { + return getDataType(); + } + + /** + * {@inheritDoc} + */ + @Override + public String value7() { + return getTypeName(); + } + + /** + * {@inheritDoc} + */ + @Override + public Integer value8() { + return getColumnCount(); + } + + /** + * {@inheritDoc} + */ + @Override + public Short value9() { + return getReturnsResult(); + } + + /** + * {@inheritDoc} + */ + @Override + public String value10() { + return getRemarks(); + } + + /** + * {@inheritDoc} + */ + @Override + public Integer value11() { + return getId(); + } + + /** + * {@inheritDoc} + */ + @Override + public String value12() { + return getSource(); + } + + /** + * {@inheritDoc} + */ + @Override + public FunctionAliasesRecord value1(String value) { + setAliasCatalog(value); + return this; + } + + /** + * {@inheritDoc} + */ + @Override + public FunctionAliasesRecord value2(String value) { + setAliasSchema(value); + return this; + } + + /** + * {@inheritDoc} + */ + @Override + public FunctionAliasesRecord value3(String value) { + setAliasName(value); + return this; + } + + /** + * {@inheritDoc} + */ + @Override + public FunctionAliasesRecord value4(String value) { + setJavaClass(value); + return this; + } + + /** + * {@inheritDoc} + */ + @Override + public FunctionAliasesRecord value5(String value) { + setJavaMethod(value); + return this; + } + + /** + * {@inheritDoc} + */ + @Override + public FunctionAliasesRecord value6(Integer value) { + setDataType(value); + return this; + } + + /** + * {@inheritDoc} + */ + @Override + public FunctionAliasesRecord value7(String value) { + setTypeName(value); + return this; + } + + /** + * {@inheritDoc} + */ + @Override + public FunctionAliasesRecord value8(Integer value) { + setColumnCount(value); + return this; + } + + /** + * {@inheritDoc} + */ + @Override + public FunctionAliasesRecord value9(Short value) { + setReturnsResult(value); + return this; + } + + /** + * {@inheritDoc} + */ + @Override + public FunctionAliasesRecord value10(String value) { + setRemarks(value); + return this; + } + + /** + * {@inheritDoc} + */ + @Override + public FunctionAliasesRecord value11(Integer value) { + setId(value); + return this; + } + + /** + * {@inheritDoc} + */ + @Override + public FunctionAliasesRecord value12(String value) { + setSource(value); + return this; + } + + /** + * {@inheritDoc} + */ + @Override + public FunctionAliasesRecord values(String value1, String value2, String value3, String value4, String value5, Integer value6, String value7, Integer value8, Short value9, String value10, Integer value11, String value12) { + value1(value1); + value2(value2); + value3(value3); + value4(value4); + value5(value5); + value6(value6); + value7(value7); + value8(value8); + value9(value9); + value10(value10); + value11(value11); + value12(value12); + return this; + } + + // ------------------------------------------------------------------------- + // Constructors + // ------------------------------------------------------------------------- + + /** + * Create a detached FunctionAliasesRecord + */ + public FunctionAliasesRecord() { + super(FunctionAliases.FUNCTION_ALIASES); + } + + /** + * Create a detached, initialised FunctionAliasesRecord + */ + public FunctionAliasesRecord(String aliasCatalog, String aliasSchema, String aliasName, String javaClass, String javaMethod, Integer dataType, String typeName, Integer columnCount, Short returnsResult, String remarks, Integer id, String source) { + super(FunctionAliases.FUNCTION_ALIASES); + + setValue(0, aliasCatalog); + setValue(1, aliasSchema); + setValue(2, aliasName); + setValue(3, javaClass); + setValue(4, javaMethod); + setValue(5, dataType); + setValue(6, typeName); + setValue(7, columnCount); + setValue(8, returnsResult); + setValue(9, remarks); + setValue(10, id); + setValue(11, source); + } +} diff --git a/jooq-spring/src/main/java/com/baeldung/jooq/introduction/db/information_schema/tables/records/FunctionColumnsRecord.java b/jooq-spring/src/main/java/com/baeldung/jooq/introduction/db/information_schema/tables/records/FunctionColumnsRecord.java new file mode 100644 index 0000000000..3d0c81d2cd --- /dev/null +++ b/jooq-spring/src/main/java/com/baeldung/jooq/introduction/db/information_schema/tables/records/FunctionColumnsRecord.java @@ -0,0 +1,775 @@ +/** + * This class is generated by jOOQ + */ +package com.baeldung.jooq.introduction.db.information_schema.tables.records; + + +import com.baeldung.jooq.introduction.db.information_schema.tables.FunctionColumns; + +import javax.annotation.Generated; + +import org.jooq.Field; +import org.jooq.Record17; +import org.jooq.Row17; +import org.jooq.impl.TableRecordImpl; + + +/** + * This class is generated by jOOQ. + */ +@Generated( + value = { + "http://www.jooq.org", + "jOOQ version:3.7.3" + }, + comments = "This class is generated by jOOQ" +) +@SuppressWarnings({ "all", "unchecked", "rawtypes" }) +public class FunctionColumnsRecord extends TableRecordImpl implements Record17 { + + private static final long serialVersionUID = 1196004173; + + /** + * Setter for INFORMATION_SCHEMA.FUNCTION_COLUMNS.ALIAS_CATALOG. + */ + public void setAliasCatalog(String value) { + setValue(0, value); + } + + /** + * Getter for INFORMATION_SCHEMA.FUNCTION_COLUMNS.ALIAS_CATALOG. + */ + public String getAliasCatalog() { + return (String) getValue(0); + } + + /** + * Setter for INFORMATION_SCHEMA.FUNCTION_COLUMNS.ALIAS_SCHEMA. + */ + public void setAliasSchema(String value) { + setValue(1, value); + } + + /** + * Getter for INFORMATION_SCHEMA.FUNCTION_COLUMNS.ALIAS_SCHEMA. + */ + public String getAliasSchema() { + return (String) getValue(1); + } + + /** + * Setter for INFORMATION_SCHEMA.FUNCTION_COLUMNS.ALIAS_NAME. + */ + public void setAliasName(String value) { + setValue(2, value); + } + + /** + * Getter for INFORMATION_SCHEMA.FUNCTION_COLUMNS.ALIAS_NAME. + */ + public String getAliasName() { + return (String) getValue(2); + } + + /** + * Setter for INFORMATION_SCHEMA.FUNCTION_COLUMNS.JAVA_CLASS. + */ + public void setJavaClass(String value) { + setValue(3, value); + } + + /** + * Getter for INFORMATION_SCHEMA.FUNCTION_COLUMNS.JAVA_CLASS. + */ + public String getJavaClass() { + return (String) getValue(3); + } + + /** + * Setter for INFORMATION_SCHEMA.FUNCTION_COLUMNS.JAVA_METHOD. + */ + public void setJavaMethod(String value) { + setValue(4, value); + } + + /** + * Getter for INFORMATION_SCHEMA.FUNCTION_COLUMNS.JAVA_METHOD. + */ + public String getJavaMethod() { + return (String) getValue(4); + } + + /** + * Setter for INFORMATION_SCHEMA.FUNCTION_COLUMNS.COLUMN_COUNT. + */ + public void setColumnCount(Integer value) { + setValue(5, value); + } + + /** + * Getter for INFORMATION_SCHEMA.FUNCTION_COLUMNS.COLUMN_COUNT. + */ + public Integer getColumnCount() { + return (Integer) getValue(5); + } + + /** + * Setter for INFORMATION_SCHEMA.FUNCTION_COLUMNS.POS. + */ + public void setPos(Integer value) { + setValue(6, value); + } + + /** + * Getter for INFORMATION_SCHEMA.FUNCTION_COLUMNS.POS. + */ + public Integer getPos() { + return (Integer) getValue(6); + } + + /** + * Setter for INFORMATION_SCHEMA.FUNCTION_COLUMNS.COLUMN_NAME. + */ + public void setColumnName(String value) { + setValue(7, value); + } + + /** + * Getter for INFORMATION_SCHEMA.FUNCTION_COLUMNS.COLUMN_NAME. + */ + public String getColumnName() { + return (String) getValue(7); + } + + /** + * Setter for INFORMATION_SCHEMA.FUNCTION_COLUMNS.DATA_TYPE. + */ + public void setDataType(Integer value) { + setValue(8, value); + } + + /** + * Getter for INFORMATION_SCHEMA.FUNCTION_COLUMNS.DATA_TYPE. + */ + public Integer getDataType() { + return (Integer) getValue(8); + } + + /** + * Setter for INFORMATION_SCHEMA.FUNCTION_COLUMNS.TYPE_NAME. + */ + public void setTypeName(String value) { + setValue(9, value); + } + + /** + * Getter for INFORMATION_SCHEMA.FUNCTION_COLUMNS.TYPE_NAME. + */ + public String getTypeName() { + return (String) getValue(9); + } + + /** + * Setter for INFORMATION_SCHEMA.FUNCTION_COLUMNS.PRECISION. + */ + public void setPrecision(Integer value) { + setValue(10, value); + } + + /** + * Getter for INFORMATION_SCHEMA.FUNCTION_COLUMNS.PRECISION. + */ + public Integer getPrecision() { + return (Integer) getValue(10); + } + + /** + * Setter for INFORMATION_SCHEMA.FUNCTION_COLUMNS.SCALE. + */ + public void setScale(Short value) { + setValue(11, value); + } + + /** + * Getter for INFORMATION_SCHEMA.FUNCTION_COLUMNS.SCALE. + */ + public Short getScale() { + return (Short) getValue(11); + } + + /** + * Setter for INFORMATION_SCHEMA.FUNCTION_COLUMNS.RADIX. + */ + public void setRadix(Short value) { + setValue(12, value); + } + + /** + * Getter for INFORMATION_SCHEMA.FUNCTION_COLUMNS.RADIX. + */ + public Short getRadix() { + return (Short) getValue(12); + } + + /** + * Setter for INFORMATION_SCHEMA.FUNCTION_COLUMNS.NULLABLE. + */ + public void setNullable(Short value) { + setValue(13, value); + } + + /** + * Getter for INFORMATION_SCHEMA.FUNCTION_COLUMNS.NULLABLE. + */ + public Short getNullable() { + return (Short) getValue(13); + } + + /** + * Setter for INFORMATION_SCHEMA.FUNCTION_COLUMNS.COLUMN_TYPE. + */ + public void setColumnType(Short value) { + setValue(14, value); + } + + /** + * Getter for INFORMATION_SCHEMA.FUNCTION_COLUMNS.COLUMN_TYPE. + */ + public Short getColumnType() { + return (Short) getValue(14); + } + + /** + * Setter for INFORMATION_SCHEMA.FUNCTION_COLUMNS.REMARKS. + */ + public void setRemarks(String value) { + setValue(15, value); + } + + /** + * Getter for INFORMATION_SCHEMA.FUNCTION_COLUMNS.REMARKS. + */ + public String getRemarks() { + return (String) getValue(15); + } + + /** + * Setter for INFORMATION_SCHEMA.FUNCTION_COLUMNS.COLUMN_DEFAULT. + */ + public void setColumnDefault(String value) { + setValue(16, value); + } + + /** + * Getter for INFORMATION_SCHEMA.FUNCTION_COLUMNS.COLUMN_DEFAULT. + */ + public String getColumnDefault() { + return (String) getValue(16); + } + + // ------------------------------------------------------------------------- + // Record17 type implementation + // ------------------------------------------------------------------------- + + /** + * {@inheritDoc} + */ + @Override + public Row17 fieldsRow() { + return (Row17) super.fieldsRow(); + } + + /** + * {@inheritDoc} + */ + @Override + public Row17 valuesRow() { + return (Row17) super.valuesRow(); + } + + /** + * {@inheritDoc} + */ + @Override + public Field field1() { + return FunctionColumns.FUNCTION_COLUMNS.ALIAS_CATALOG; + } + + /** + * {@inheritDoc} + */ + @Override + public Field field2() { + return FunctionColumns.FUNCTION_COLUMNS.ALIAS_SCHEMA; + } + + /** + * {@inheritDoc} + */ + @Override + public Field field3() { + return FunctionColumns.FUNCTION_COLUMNS.ALIAS_NAME; + } + + /** + * {@inheritDoc} + */ + @Override + public Field field4() { + return FunctionColumns.FUNCTION_COLUMNS.JAVA_CLASS; + } + + /** + * {@inheritDoc} + */ + @Override + public Field field5() { + return FunctionColumns.FUNCTION_COLUMNS.JAVA_METHOD; + } + + /** + * {@inheritDoc} + */ + @Override + public Field field6() { + return FunctionColumns.FUNCTION_COLUMNS.COLUMN_COUNT; + } + + /** + * {@inheritDoc} + */ + @Override + public Field field7() { + return FunctionColumns.FUNCTION_COLUMNS.POS; + } + + /** + * {@inheritDoc} + */ + @Override + public Field field8() { + return FunctionColumns.FUNCTION_COLUMNS.COLUMN_NAME; + } + + /** + * {@inheritDoc} + */ + @Override + public Field field9() { + return FunctionColumns.FUNCTION_COLUMNS.DATA_TYPE; + } + + /** + * {@inheritDoc} + */ + @Override + public Field field10() { + return FunctionColumns.FUNCTION_COLUMNS.TYPE_NAME; + } + + /** + * {@inheritDoc} + */ + @Override + public Field field11() { + return FunctionColumns.FUNCTION_COLUMNS.PRECISION; + } + + /** + * {@inheritDoc} + */ + @Override + public Field field12() { + return FunctionColumns.FUNCTION_COLUMNS.SCALE; + } + + /** + * {@inheritDoc} + */ + @Override + public Field field13() { + return FunctionColumns.FUNCTION_COLUMNS.RADIX; + } + + /** + * {@inheritDoc} + */ + @Override + public Field field14() { + return FunctionColumns.FUNCTION_COLUMNS.NULLABLE; + } + + /** + * {@inheritDoc} + */ + @Override + public Field field15() { + return FunctionColumns.FUNCTION_COLUMNS.COLUMN_TYPE; + } + + /** + * {@inheritDoc} + */ + @Override + public Field field16() { + return FunctionColumns.FUNCTION_COLUMNS.REMARKS; + } + + /** + * {@inheritDoc} + */ + @Override + public Field field17() { + return FunctionColumns.FUNCTION_COLUMNS.COLUMN_DEFAULT; + } + + /** + * {@inheritDoc} + */ + @Override + public String value1() { + return getAliasCatalog(); + } + + /** + * {@inheritDoc} + */ + @Override + public String value2() { + return getAliasSchema(); + } + + /** + * {@inheritDoc} + */ + @Override + public String value3() { + return getAliasName(); + } + + /** + * {@inheritDoc} + */ + @Override + public String value4() { + return getJavaClass(); + } + + /** + * {@inheritDoc} + */ + @Override + public String value5() { + return getJavaMethod(); + } + + /** + * {@inheritDoc} + */ + @Override + public Integer value6() { + return getColumnCount(); + } + + /** + * {@inheritDoc} + */ + @Override + public Integer value7() { + return getPos(); + } + + /** + * {@inheritDoc} + */ + @Override + public String value8() { + return getColumnName(); + } + + /** + * {@inheritDoc} + */ + @Override + public Integer value9() { + return getDataType(); + } + + /** + * {@inheritDoc} + */ + @Override + public String value10() { + return getTypeName(); + } + + /** + * {@inheritDoc} + */ + @Override + public Integer value11() { + return getPrecision(); + } + + /** + * {@inheritDoc} + */ + @Override + public Short value12() { + return getScale(); + } + + /** + * {@inheritDoc} + */ + @Override + public Short value13() { + return getRadix(); + } + + /** + * {@inheritDoc} + */ + @Override + public Short value14() { + return getNullable(); + } + + /** + * {@inheritDoc} + */ + @Override + public Short value15() { + return getColumnType(); + } + + /** + * {@inheritDoc} + */ + @Override + public String value16() { + return getRemarks(); + } + + /** + * {@inheritDoc} + */ + @Override + public String value17() { + return getColumnDefault(); + } + + /** + * {@inheritDoc} + */ + @Override + public FunctionColumnsRecord value1(String value) { + setAliasCatalog(value); + return this; + } + + /** + * {@inheritDoc} + */ + @Override + public FunctionColumnsRecord value2(String value) { + setAliasSchema(value); + return this; + } + + /** + * {@inheritDoc} + */ + @Override + public FunctionColumnsRecord value3(String value) { + setAliasName(value); + return this; + } + + /** + * {@inheritDoc} + */ + @Override + public FunctionColumnsRecord value4(String value) { + setJavaClass(value); + return this; + } + + /** + * {@inheritDoc} + */ + @Override + public FunctionColumnsRecord value5(String value) { + setJavaMethod(value); + return this; + } + + /** + * {@inheritDoc} + */ + @Override + public FunctionColumnsRecord value6(Integer value) { + setColumnCount(value); + return this; + } + + /** + * {@inheritDoc} + */ + @Override + public FunctionColumnsRecord value7(Integer value) { + setPos(value); + return this; + } + + /** + * {@inheritDoc} + */ + @Override + public FunctionColumnsRecord value8(String value) { + setColumnName(value); + return this; + } + + /** + * {@inheritDoc} + */ + @Override + public FunctionColumnsRecord value9(Integer value) { + setDataType(value); + return this; + } + + /** + * {@inheritDoc} + */ + @Override + public FunctionColumnsRecord value10(String value) { + setTypeName(value); + return this; + } + + /** + * {@inheritDoc} + */ + @Override + public FunctionColumnsRecord value11(Integer value) { + setPrecision(value); + return this; + } + + /** + * {@inheritDoc} + */ + @Override + public FunctionColumnsRecord value12(Short value) { + setScale(value); + return this; + } + + /** + * {@inheritDoc} + */ + @Override + public FunctionColumnsRecord value13(Short value) { + setRadix(value); + return this; + } + + /** + * {@inheritDoc} + */ + @Override + public FunctionColumnsRecord value14(Short value) { + setNullable(value); + return this; + } + + /** + * {@inheritDoc} + */ + @Override + public FunctionColumnsRecord value15(Short value) { + setColumnType(value); + return this; + } + + /** + * {@inheritDoc} + */ + @Override + public FunctionColumnsRecord value16(String value) { + setRemarks(value); + return this; + } + + /** + * {@inheritDoc} + */ + @Override + public FunctionColumnsRecord value17(String value) { + setColumnDefault(value); + return this; + } + + /** + * {@inheritDoc} + */ + @Override + public FunctionColumnsRecord values(String value1, String value2, String value3, String value4, String value5, Integer value6, Integer value7, String value8, Integer value9, String value10, Integer value11, Short value12, Short value13, Short value14, Short value15, String value16, String value17) { + value1(value1); + value2(value2); + value3(value3); + value4(value4); + value5(value5); + value6(value6); + value7(value7); + value8(value8); + value9(value9); + value10(value10); + value11(value11); + value12(value12); + value13(value13); + value14(value14); + value15(value15); + value16(value16); + value17(value17); + return this; + } + + // ------------------------------------------------------------------------- + // Constructors + // ------------------------------------------------------------------------- + + /** + * Create a detached FunctionColumnsRecord + */ + public FunctionColumnsRecord() { + super(FunctionColumns.FUNCTION_COLUMNS); + } + + /** + * Create a detached, initialised FunctionColumnsRecord + */ + public FunctionColumnsRecord(String aliasCatalog, String aliasSchema, String aliasName, String javaClass, String javaMethod, Integer columnCount, Integer pos, String columnName, Integer dataType, String typeName, Integer precision, Short scale, Short radix, Short nullable, Short columnType, String remarks, String columnDefault) { + super(FunctionColumns.FUNCTION_COLUMNS); + + setValue(0, aliasCatalog); + setValue(1, aliasSchema); + setValue(2, aliasName); + setValue(3, javaClass); + setValue(4, javaMethod); + setValue(5, columnCount); + setValue(6, pos); + setValue(7, columnName); + setValue(8, dataType); + setValue(9, typeName); + setValue(10, precision); + setValue(11, scale); + setValue(12, radix); + setValue(13, nullable); + setValue(14, columnType); + setValue(15, remarks); + setValue(16, columnDefault); + } +} diff --git a/jooq-spring/src/main/java/com/baeldung/jooq/introduction/db/information_schema/tables/records/HelpRecord.java b/jooq-spring/src/main/java/com/baeldung/jooq/introduction/db/information_schema/tables/records/HelpRecord.java new file mode 100644 index 0000000000..1ed95e2ff7 --- /dev/null +++ b/jooq-spring/src/main/java/com/baeldung/jooq/introduction/db/information_schema/tables/records/HelpRecord.java @@ -0,0 +1,283 @@ +/** + * This class is generated by jOOQ + */ +package com.baeldung.jooq.introduction.db.information_schema.tables.records; + + +import com.baeldung.jooq.introduction.db.information_schema.tables.Help; + +import javax.annotation.Generated; + +import org.jooq.Field; +import org.jooq.Record5; +import org.jooq.Row5; +import org.jooq.impl.TableRecordImpl; + + +/** + * This class is generated by jOOQ. + */ +@Generated( + value = { + "http://www.jooq.org", + "jOOQ version:3.7.3" + }, + comments = "This class is generated by jOOQ" +) +@SuppressWarnings({ "all", "unchecked", "rawtypes" }) +public class HelpRecord extends TableRecordImpl implements Record5 { + + private static final long serialVersionUID = -1612064442; + + /** + * Setter for INFORMATION_SCHEMA.HELP.ID. + */ + public void setId(Integer value) { + setValue(0, value); + } + + /** + * Getter for INFORMATION_SCHEMA.HELP.ID. + */ + public Integer getId() { + return (Integer) getValue(0); + } + + /** + * Setter for INFORMATION_SCHEMA.HELP.SECTION. + */ + public void setSection(String value) { + setValue(1, value); + } + + /** + * Getter for INFORMATION_SCHEMA.HELP.SECTION. + */ + public String getSection() { + return (String) getValue(1); + } + + /** + * Setter for INFORMATION_SCHEMA.HELP.TOPIC. + */ + public void setTopic(String value) { + setValue(2, value); + } + + /** + * Getter for INFORMATION_SCHEMA.HELP.TOPIC. + */ + public String getTopic() { + return (String) getValue(2); + } + + /** + * Setter for INFORMATION_SCHEMA.HELP.SYNTAX. + */ + public void setSyntax(String value) { + setValue(3, value); + } + + /** + * Getter for INFORMATION_SCHEMA.HELP.SYNTAX. + */ + public String getSyntax() { + return (String) getValue(3); + } + + /** + * Setter for INFORMATION_SCHEMA.HELP.TEXT. + */ + public void setText(String value) { + setValue(4, value); + } + + /** + * Getter for INFORMATION_SCHEMA.HELP.TEXT. + */ + public String getText() { + return (String) getValue(4); + } + + // ------------------------------------------------------------------------- + // Record5 type implementation + // ------------------------------------------------------------------------- + + /** + * {@inheritDoc} + */ + @Override + public Row5 fieldsRow() { + return (Row5) super.fieldsRow(); + } + + /** + * {@inheritDoc} + */ + @Override + public Row5 valuesRow() { + return (Row5) super.valuesRow(); + } + + /** + * {@inheritDoc} + */ + @Override + public Field field1() { + return Help.HELP.ID; + } + + /** + * {@inheritDoc} + */ + @Override + public Field field2() { + return Help.HELP.SECTION; + } + + /** + * {@inheritDoc} + */ + @Override + public Field field3() { + return Help.HELP.TOPIC; + } + + /** + * {@inheritDoc} + */ + @Override + public Field field4() { + return Help.HELP.SYNTAX; + } + + /** + * {@inheritDoc} + */ + @Override + public Field field5() { + return Help.HELP.TEXT; + } + + /** + * {@inheritDoc} + */ + @Override + public Integer value1() { + return getId(); + } + + /** + * {@inheritDoc} + */ + @Override + public String value2() { + return getSection(); + } + + /** + * {@inheritDoc} + */ + @Override + public String value3() { + return getTopic(); + } + + /** + * {@inheritDoc} + */ + @Override + public String value4() { + return getSyntax(); + } + + /** + * {@inheritDoc} + */ + @Override + public String value5() { + return getText(); + } + + /** + * {@inheritDoc} + */ + @Override + public HelpRecord value1(Integer value) { + setId(value); + return this; + } + + /** + * {@inheritDoc} + */ + @Override + public HelpRecord value2(String value) { + setSection(value); + return this; + } + + /** + * {@inheritDoc} + */ + @Override + public HelpRecord value3(String value) { + setTopic(value); + return this; + } + + /** + * {@inheritDoc} + */ + @Override + public HelpRecord value4(String value) { + setSyntax(value); + return this; + } + + /** + * {@inheritDoc} + */ + @Override + public HelpRecord value5(String value) { + setText(value); + return this; + } + + /** + * {@inheritDoc} + */ + @Override + public HelpRecord values(Integer value1, String value2, String value3, String value4, String value5) { + value1(value1); + value2(value2); + value3(value3); + value4(value4); + value5(value5); + return this; + } + + // ------------------------------------------------------------------------- + // Constructors + // ------------------------------------------------------------------------- + + /** + * Create a detached HelpRecord + */ + public HelpRecord() { + super(Help.HELP); + } + + /** + * Create a detached, initialised HelpRecord + */ + public HelpRecord(Integer id, String section, String topic, String syntax, String text) { + super(Help.HELP); + + setValue(0, id); + setValue(1, section); + setValue(2, topic); + setValue(3, syntax); + setValue(4, text); + } +} diff --git a/jooq-spring/src/main/java/com/baeldung/jooq/introduction/db/information_schema/tables/records/InDoubtRecord.java b/jooq-spring/src/main/java/com/baeldung/jooq/introduction/db/information_schema/tables/records/InDoubtRecord.java new file mode 100644 index 0000000000..dd33d014fb --- /dev/null +++ b/jooq-spring/src/main/java/com/baeldung/jooq/introduction/db/information_schema/tables/records/InDoubtRecord.java @@ -0,0 +1,160 @@ +/** + * This class is generated by jOOQ + */ +package com.baeldung.jooq.introduction.db.information_schema.tables.records; + + +import com.baeldung.jooq.introduction.db.information_schema.tables.InDoubt; + +import javax.annotation.Generated; + +import org.jooq.Field; +import org.jooq.Record2; +import org.jooq.Row2; +import org.jooq.impl.TableRecordImpl; + + +/** + * This class is generated by jOOQ. + */ +@Generated( + value = { + "http://www.jooq.org", + "jOOQ version:3.7.3" + }, + comments = "This class is generated by jOOQ" +) +@SuppressWarnings({ "all", "unchecked", "rawtypes" }) +public class InDoubtRecord extends TableRecordImpl implements Record2 { + + private static final long serialVersionUID = 115858325; + + /** + * Setter for INFORMATION_SCHEMA.IN_DOUBT.TRANSACTION. + */ + public void setTransaction(String value) { + setValue(0, value); + } + + /** + * Getter for INFORMATION_SCHEMA.IN_DOUBT.TRANSACTION. + */ + public String getTransaction() { + return (String) getValue(0); + } + + /** + * Setter for INFORMATION_SCHEMA.IN_DOUBT.STATE. + */ + public void setState(String value) { + setValue(1, value); + } + + /** + * Getter for INFORMATION_SCHEMA.IN_DOUBT.STATE. + */ + public String getState() { + return (String) getValue(1); + } + + // ------------------------------------------------------------------------- + // Record2 type implementation + // ------------------------------------------------------------------------- + + /** + * {@inheritDoc} + */ + @Override + public Row2 fieldsRow() { + return (Row2) super.fieldsRow(); + } + + /** + * {@inheritDoc} + */ + @Override + public Row2 valuesRow() { + return (Row2) super.valuesRow(); + } + + /** + * {@inheritDoc} + */ + @Override + public Field field1() { + return InDoubt.IN_DOUBT.TRANSACTION; + } + + /** + * {@inheritDoc} + */ + @Override + public Field field2() { + return InDoubt.IN_DOUBT.STATE; + } + + /** + * {@inheritDoc} + */ + @Override + public String value1() { + return getTransaction(); + } + + /** + * {@inheritDoc} + */ + @Override + public String value2() { + return getState(); + } + + /** + * {@inheritDoc} + */ + @Override + public InDoubtRecord value1(String value) { + setTransaction(value); + return this; + } + + /** + * {@inheritDoc} + */ + @Override + public InDoubtRecord value2(String value) { + setState(value); + return this; + } + + /** + * {@inheritDoc} + */ + @Override + public InDoubtRecord values(String value1, String value2) { + value1(value1); + value2(value2); + return this; + } + + // ------------------------------------------------------------------------- + // Constructors + // ------------------------------------------------------------------------- + + /** + * Create a detached InDoubtRecord + */ + public InDoubtRecord() { + super(InDoubt.IN_DOUBT); + } + + /** + * Create a detached, initialised InDoubtRecord + */ + public InDoubtRecord(String transaction, String state) { + super(InDoubt.IN_DOUBT); + + setValue(0, transaction); + setValue(1, state); + } +} diff --git a/jooq-spring/src/main/java/com/baeldung/jooq/introduction/db/information_schema/tables/records/IndexesRecord.java b/jooq-spring/src/main/java/com/baeldung/jooq/introduction/db/information_schema/tables/records/IndexesRecord.java new file mode 100644 index 0000000000..87a34b2473 --- /dev/null +++ b/jooq-spring/src/main/java/com/baeldung/jooq/introduction/db/information_schema/tables/records/IndexesRecord.java @@ -0,0 +1,939 @@ +/** + * This class is generated by jOOQ + */ +package com.baeldung.jooq.introduction.db.information_schema.tables.records; + + +import com.baeldung.jooq.introduction.db.information_schema.tables.Indexes; + +import javax.annotation.Generated; + +import org.jooq.Field; +import org.jooq.Record21; +import org.jooq.Row21; +import org.jooq.impl.TableRecordImpl; + + +/** + * This class is generated by jOOQ. + */ +@Generated( + value = { + "http://www.jooq.org", + "jOOQ version:3.7.3" + }, + comments = "This class is generated by jOOQ" +) +@SuppressWarnings({ "all", "unchecked", "rawtypes" }) +public class IndexesRecord extends TableRecordImpl implements Record21 { + + private static final long serialVersionUID = -1683028432; + + /** + * Setter for INFORMATION_SCHEMA.INDEXES.TABLE_CATALOG. + */ + public void setTableCatalog(String value) { + setValue(0, value); + } + + /** + * Getter for INFORMATION_SCHEMA.INDEXES.TABLE_CATALOG. + */ + public String getTableCatalog() { + return (String) getValue(0); + } + + /** + * Setter for INFORMATION_SCHEMA.INDEXES.TABLE_SCHEMA. + */ + public void setTableSchema(String value) { + setValue(1, value); + } + + /** + * Getter for INFORMATION_SCHEMA.INDEXES.TABLE_SCHEMA. + */ + public String getTableSchema() { + return (String) getValue(1); + } + + /** + * Setter for INFORMATION_SCHEMA.INDEXES.TABLE_NAME. + */ + public void setTableName(String value) { + setValue(2, value); + } + + /** + * Getter for INFORMATION_SCHEMA.INDEXES.TABLE_NAME. + */ + public String getTableName() { + return (String) getValue(2); + } + + /** + * Setter for INFORMATION_SCHEMA.INDEXES.NON_UNIQUE. + */ + public void setNonUnique(Boolean value) { + setValue(3, value); + } + + /** + * Getter for INFORMATION_SCHEMA.INDEXES.NON_UNIQUE. + */ + public Boolean getNonUnique() { + return (Boolean) getValue(3); + } + + /** + * Setter for INFORMATION_SCHEMA.INDEXES.INDEX_NAME. + */ + public void setIndexName(String value) { + setValue(4, value); + } + + /** + * Getter for INFORMATION_SCHEMA.INDEXES.INDEX_NAME. + */ + public String getIndexName() { + return (String) getValue(4); + } + + /** + * Setter for INFORMATION_SCHEMA.INDEXES.ORDINAL_POSITION. + */ + public void setOrdinalPosition(Short value) { + setValue(5, value); + } + + /** + * Getter for INFORMATION_SCHEMA.INDEXES.ORDINAL_POSITION. + */ + public Short getOrdinalPosition() { + return (Short) getValue(5); + } + + /** + * Setter for INFORMATION_SCHEMA.INDEXES.COLUMN_NAME. + */ + public void setColumnName(String value) { + setValue(6, value); + } + + /** + * Getter for INFORMATION_SCHEMA.INDEXES.COLUMN_NAME. + */ + public String getColumnName() { + return (String) getValue(6); + } + + /** + * Setter for INFORMATION_SCHEMA.INDEXES.CARDINALITY. + */ + public void setCardinality(Integer value) { + setValue(7, value); + } + + /** + * Getter for INFORMATION_SCHEMA.INDEXES.CARDINALITY. + */ + public Integer getCardinality() { + return (Integer) getValue(7); + } + + /** + * Setter for INFORMATION_SCHEMA.INDEXES.PRIMARY_KEY. + */ + public void setPrimaryKey_(Boolean value) { + setValue(8, value); + } + + /** + * Getter for INFORMATION_SCHEMA.INDEXES.PRIMARY_KEY. + */ + public Boolean getPrimaryKey_() { + return (Boolean) getValue(8); + } + + /** + * Setter for INFORMATION_SCHEMA.INDEXES.INDEX_TYPE_NAME. + */ + public void setIndexTypeName(String value) { + setValue(9, value); + } + + /** + * Getter for INFORMATION_SCHEMA.INDEXES.INDEX_TYPE_NAME. + */ + public String getIndexTypeName() { + return (String) getValue(9); + } + + /** + * Setter for INFORMATION_SCHEMA.INDEXES.IS_GENERATED. + */ + public void setIsGenerated(Boolean value) { + setValue(10, value); + } + + /** + * Getter for INFORMATION_SCHEMA.INDEXES.IS_GENERATED. + */ + public Boolean getIsGenerated() { + return (Boolean) getValue(10); + } + + /** + * Setter for INFORMATION_SCHEMA.INDEXES.INDEX_TYPE. + */ + public void setIndexType(Short value) { + setValue(11, value); + } + + /** + * Getter for INFORMATION_SCHEMA.INDEXES.INDEX_TYPE. + */ + public Short getIndexType() { + return (Short) getValue(11); + } + + /** + * Setter for INFORMATION_SCHEMA.INDEXES.ASC_OR_DESC. + */ + public void setAscOrDesc(String value) { + setValue(12, value); + } + + /** + * Getter for INFORMATION_SCHEMA.INDEXES.ASC_OR_DESC. + */ + public String getAscOrDesc() { + return (String) getValue(12); + } + + /** + * Setter for INFORMATION_SCHEMA.INDEXES.PAGES. + */ + public void setPages(Integer value) { + setValue(13, value); + } + + /** + * Getter for INFORMATION_SCHEMA.INDEXES.PAGES. + */ + public Integer getPages() { + return (Integer) getValue(13); + } + + /** + * Setter for INFORMATION_SCHEMA.INDEXES.FILTER_CONDITION. + */ + public void setFilterCondition(String value) { + setValue(14, value); + } + + /** + * Getter for INFORMATION_SCHEMA.INDEXES.FILTER_CONDITION. + */ + public String getFilterCondition() { + return (String) getValue(14); + } + + /** + * Setter for INFORMATION_SCHEMA.INDEXES.REMARKS. + */ + public void setRemarks(String value) { + setValue(15, value); + } + + /** + * Getter for INFORMATION_SCHEMA.INDEXES.REMARKS. + */ + public String getRemarks() { + return (String) getValue(15); + } + + /** + * Setter for INFORMATION_SCHEMA.INDEXES.SQL. + */ + public void setSql(String value) { + setValue(16, value); + } + + /** + * Getter for INFORMATION_SCHEMA.INDEXES.SQL. + */ + public String getSql() { + return (String) getValue(16); + } + + /** + * Setter for INFORMATION_SCHEMA.INDEXES.ID. + */ + public void setId(Integer value) { + setValue(17, value); + } + + /** + * Getter for INFORMATION_SCHEMA.INDEXES.ID. + */ + public Integer getId() { + return (Integer) getValue(17); + } + + /** + * Setter for INFORMATION_SCHEMA.INDEXES.SORT_TYPE. + */ + public void setSortType(Integer value) { + setValue(18, value); + } + + /** + * Getter for INFORMATION_SCHEMA.INDEXES.SORT_TYPE. + */ + public Integer getSortType() { + return (Integer) getValue(18); + } + + /** + * Setter for INFORMATION_SCHEMA.INDEXES.CONSTRAINT_NAME. + */ + public void setConstraintName(String value) { + setValue(19, value); + } + + /** + * Getter for INFORMATION_SCHEMA.INDEXES.CONSTRAINT_NAME. + */ + public String getConstraintName() { + return (String) getValue(19); + } + + /** + * Setter for INFORMATION_SCHEMA.INDEXES.INDEX_CLASS. + */ + public void setIndexClass(String value) { + setValue(20, value); + } + + /** + * Getter for INFORMATION_SCHEMA.INDEXES.INDEX_CLASS. + */ + public String getIndexClass() { + return (String) getValue(20); + } + + // ------------------------------------------------------------------------- + // Record21 type implementation + // ------------------------------------------------------------------------- + + /** + * {@inheritDoc} + */ + @Override + public Row21 fieldsRow() { + return (Row21) super.fieldsRow(); + } + + /** + * {@inheritDoc} + */ + @Override + public Row21 valuesRow() { + return (Row21) super.valuesRow(); + } + + /** + * {@inheritDoc} + */ + @Override + public Field field1() { + return Indexes.INDEXES.TABLE_CATALOG; + } + + /** + * {@inheritDoc} + */ + @Override + public Field field2() { + return Indexes.INDEXES.TABLE_SCHEMA; + } + + /** + * {@inheritDoc} + */ + @Override + public Field field3() { + return Indexes.INDEXES.TABLE_NAME; + } + + /** + * {@inheritDoc} + */ + @Override + public Field field4() { + return Indexes.INDEXES.NON_UNIQUE; + } + + /** + * {@inheritDoc} + */ + @Override + public Field field5() { + return Indexes.INDEXES.INDEX_NAME; + } + + /** + * {@inheritDoc} + */ + @Override + public Field field6() { + return Indexes.INDEXES.ORDINAL_POSITION; + } + + /** + * {@inheritDoc} + */ + @Override + public Field field7() { + return Indexes.INDEXES.COLUMN_NAME; + } + + /** + * {@inheritDoc} + */ + @Override + public Field field8() { + return Indexes.INDEXES.CARDINALITY; + } + + /** + * {@inheritDoc} + */ + @Override + public Field field9() { + return Indexes.INDEXES.PRIMARY_KEY; + } + + /** + * {@inheritDoc} + */ + @Override + public Field field10() { + return Indexes.INDEXES.INDEX_TYPE_NAME; + } + + /** + * {@inheritDoc} + */ + @Override + public Field field11() { + return Indexes.INDEXES.IS_GENERATED; + } + + /** + * {@inheritDoc} + */ + @Override + public Field field12() { + return Indexes.INDEXES.INDEX_TYPE; + } + + /** + * {@inheritDoc} + */ + @Override + public Field field13() { + return Indexes.INDEXES.ASC_OR_DESC; + } + + /** + * {@inheritDoc} + */ + @Override + public Field field14() { + return Indexes.INDEXES.PAGES; + } + + /** + * {@inheritDoc} + */ + @Override + public Field field15() { + return Indexes.INDEXES.FILTER_CONDITION; + } + + /** + * {@inheritDoc} + */ + @Override + public Field field16() { + return Indexes.INDEXES.REMARKS; + } + + /** + * {@inheritDoc} + */ + @Override + public Field field17() { + return Indexes.INDEXES.SQL; + } + + /** + * {@inheritDoc} + */ + @Override + public Field field18() { + return Indexes.INDEXES.ID; + } + + /** + * {@inheritDoc} + */ + @Override + public Field field19() { + return Indexes.INDEXES.SORT_TYPE; + } + + /** + * {@inheritDoc} + */ + @Override + public Field field20() { + return Indexes.INDEXES.CONSTRAINT_NAME; + } + + /** + * {@inheritDoc} + */ + @Override + public Field field21() { + return Indexes.INDEXES.INDEX_CLASS; + } + + /** + * {@inheritDoc} + */ + @Override + public String value1() { + return getTableCatalog(); + } + + /** + * {@inheritDoc} + */ + @Override + public String value2() { + return getTableSchema(); + } + + /** + * {@inheritDoc} + */ + @Override + public String value3() { + return getTableName(); + } + + /** + * {@inheritDoc} + */ + @Override + public Boolean value4() { + return getNonUnique(); + } + + /** + * {@inheritDoc} + */ + @Override + public String value5() { + return getIndexName(); + } + + /** + * {@inheritDoc} + */ + @Override + public Short value6() { + return getOrdinalPosition(); + } + + /** + * {@inheritDoc} + */ + @Override + public String value7() { + return getColumnName(); + } + + /** + * {@inheritDoc} + */ + @Override + public Integer value8() { + return getCardinality(); + } + + /** + * {@inheritDoc} + */ + @Override + public Boolean value9() { + return getPrimaryKey_(); + } + + /** + * {@inheritDoc} + */ + @Override + public String value10() { + return getIndexTypeName(); + } + + /** + * {@inheritDoc} + */ + @Override + public Boolean value11() { + return getIsGenerated(); + } + + /** + * {@inheritDoc} + */ + @Override + public Short value12() { + return getIndexType(); + } + + /** + * {@inheritDoc} + */ + @Override + public String value13() { + return getAscOrDesc(); + } + + /** + * {@inheritDoc} + */ + @Override + public Integer value14() { + return getPages(); + } + + /** + * {@inheritDoc} + */ + @Override + public String value15() { + return getFilterCondition(); + } + + /** + * {@inheritDoc} + */ + @Override + public String value16() { + return getRemarks(); + } + + /** + * {@inheritDoc} + */ + @Override + public String value17() { + return getSql(); + } + + /** + * {@inheritDoc} + */ + @Override + public Integer value18() { + return getId(); + } + + /** + * {@inheritDoc} + */ + @Override + public Integer value19() { + return getSortType(); + } + + /** + * {@inheritDoc} + */ + @Override + public String value20() { + return getConstraintName(); + } + + /** + * {@inheritDoc} + */ + @Override + public String value21() { + return getIndexClass(); + } + + /** + * {@inheritDoc} + */ + @Override + public IndexesRecord value1(String value) { + setTableCatalog(value); + return this; + } + + /** + * {@inheritDoc} + */ + @Override + public IndexesRecord value2(String value) { + setTableSchema(value); + return this; + } + + /** + * {@inheritDoc} + */ + @Override + public IndexesRecord value3(String value) { + setTableName(value); + return this; + } + + /** + * {@inheritDoc} + */ + @Override + public IndexesRecord value4(Boolean value) { + setNonUnique(value); + return this; + } + + /** + * {@inheritDoc} + */ + @Override + public IndexesRecord value5(String value) { + setIndexName(value); + return this; + } + + /** + * {@inheritDoc} + */ + @Override + public IndexesRecord value6(Short value) { + setOrdinalPosition(value); + return this; + } + + /** + * {@inheritDoc} + */ + @Override + public IndexesRecord value7(String value) { + setColumnName(value); + return this; + } + + /** + * {@inheritDoc} + */ + @Override + public IndexesRecord value8(Integer value) { + setCardinality(value); + return this; + } + + /** + * {@inheritDoc} + */ + @Override + public IndexesRecord value9(Boolean value) { + setPrimaryKey_(value); + return this; + } + + /** + * {@inheritDoc} + */ + @Override + public IndexesRecord value10(String value) { + setIndexTypeName(value); + return this; + } + + /** + * {@inheritDoc} + */ + @Override + public IndexesRecord value11(Boolean value) { + setIsGenerated(value); + return this; + } + + /** + * {@inheritDoc} + */ + @Override + public IndexesRecord value12(Short value) { + setIndexType(value); + return this; + } + + /** + * {@inheritDoc} + */ + @Override + public IndexesRecord value13(String value) { + setAscOrDesc(value); + return this; + } + + /** + * {@inheritDoc} + */ + @Override + public IndexesRecord value14(Integer value) { + setPages(value); + return this; + } + + /** + * {@inheritDoc} + */ + @Override + public IndexesRecord value15(String value) { + setFilterCondition(value); + return this; + } + + /** + * {@inheritDoc} + */ + @Override + public IndexesRecord value16(String value) { + setRemarks(value); + return this; + } + + /** + * {@inheritDoc} + */ + @Override + public IndexesRecord value17(String value) { + setSql(value); + return this; + } + + /** + * {@inheritDoc} + */ + @Override + public IndexesRecord value18(Integer value) { + setId(value); + return this; + } + + /** + * {@inheritDoc} + */ + @Override + public IndexesRecord value19(Integer value) { + setSortType(value); + return this; + } + + /** + * {@inheritDoc} + */ + @Override + public IndexesRecord value20(String value) { + setConstraintName(value); + return this; + } + + /** + * {@inheritDoc} + */ + @Override + public IndexesRecord value21(String value) { + setIndexClass(value); + return this; + } + + /** + * {@inheritDoc} + */ + @Override + public IndexesRecord values(String value1, String value2, String value3, Boolean value4, String value5, Short value6, String value7, Integer value8, Boolean value9, String value10, Boolean value11, Short value12, String value13, Integer value14, String value15, String value16, String value17, Integer value18, Integer value19, String value20, String value21) { + value1(value1); + value2(value2); + value3(value3); + value4(value4); + value5(value5); + value6(value6); + value7(value7); + value8(value8); + value9(value9); + value10(value10); + value11(value11); + value12(value12); + value13(value13); + value14(value14); + value15(value15); + value16(value16); + value17(value17); + value18(value18); + value19(value19); + value20(value20); + value21(value21); + return this; + } + + // ------------------------------------------------------------------------- + // Constructors + // ------------------------------------------------------------------------- + + /** + * Create a detached IndexesRecord + */ + public IndexesRecord() { + super(Indexes.INDEXES); + } + + /** + * Create a detached, initialised IndexesRecord + */ + public IndexesRecord(String tableCatalog, String tableSchema, String tableName, Boolean nonUnique, String indexName, Short ordinalPosition, String columnName, Integer cardinality, Boolean primaryKey, String indexTypeName, Boolean isGenerated, Short indexType, String ascOrDesc, Integer pages, String filterCondition, String remarks, String sql, Integer id, Integer sortType, String constraintName, String indexClass) { + super(Indexes.INDEXES); + + setValue(0, tableCatalog); + setValue(1, tableSchema); + setValue(2, tableName); + setValue(3, nonUnique); + setValue(4, indexName); + setValue(5, ordinalPosition); + setValue(6, columnName); + setValue(7, cardinality); + setValue(8, primaryKey); + setValue(9, indexTypeName); + setValue(10, isGenerated); + setValue(11, indexType); + setValue(12, ascOrDesc); + setValue(13, pages); + setValue(14, filterCondition); + setValue(15, remarks); + setValue(16, sql); + setValue(17, id); + setValue(18, sortType); + setValue(19, constraintName); + setValue(20, indexClass); + } +} diff --git a/jooq-spring/src/main/java/com/baeldung/jooq/introduction/db/information_schema/tables/records/LocksRecord.java b/jooq-spring/src/main/java/com/baeldung/jooq/introduction/db/information_schema/tables/records/LocksRecord.java new file mode 100644 index 0000000000..23cbf780e6 --- /dev/null +++ b/jooq-spring/src/main/java/com/baeldung/jooq/introduction/db/information_schema/tables/records/LocksRecord.java @@ -0,0 +1,242 @@ +/** + * This class is generated by jOOQ + */ +package com.baeldung.jooq.introduction.db.information_schema.tables.records; + + +import com.baeldung.jooq.introduction.db.information_schema.tables.Locks; + +import javax.annotation.Generated; + +import org.jooq.Field; +import org.jooq.Record4; +import org.jooq.Row4; +import org.jooq.impl.TableRecordImpl; + + +/** + * This class is generated by jOOQ. + */ +@Generated( + value = { + "http://www.jooq.org", + "jOOQ version:3.7.3" + }, + comments = "This class is generated by jOOQ" +) +@SuppressWarnings({ "all", "unchecked", "rawtypes" }) +public class LocksRecord extends TableRecordImpl implements Record4 { + + private static final long serialVersionUID = 1548907854; + + /** + * Setter for INFORMATION_SCHEMA.LOCKS.TABLE_SCHEMA. + */ + public void setTableSchema(String value) { + setValue(0, value); + } + + /** + * Getter for INFORMATION_SCHEMA.LOCKS.TABLE_SCHEMA. + */ + public String getTableSchema() { + return (String) getValue(0); + } + + /** + * Setter for INFORMATION_SCHEMA.LOCKS.TABLE_NAME. + */ + public void setTableName(String value) { + setValue(1, value); + } + + /** + * Getter for INFORMATION_SCHEMA.LOCKS.TABLE_NAME. + */ + public String getTableName() { + return (String) getValue(1); + } + + /** + * Setter for INFORMATION_SCHEMA.LOCKS.SESSION_ID. + */ + public void setSessionId(Integer value) { + setValue(2, value); + } + + /** + * Getter for INFORMATION_SCHEMA.LOCKS.SESSION_ID. + */ + public Integer getSessionId() { + return (Integer) getValue(2); + } + + /** + * Setter for INFORMATION_SCHEMA.LOCKS.LOCK_TYPE. + */ + public void setLockType(String value) { + setValue(3, value); + } + + /** + * Getter for INFORMATION_SCHEMA.LOCKS.LOCK_TYPE. + */ + public String getLockType() { + return (String) getValue(3); + } + + // ------------------------------------------------------------------------- + // Record4 type implementation + // ------------------------------------------------------------------------- + + /** + * {@inheritDoc} + */ + @Override + public Row4 fieldsRow() { + return (Row4) super.fieldsRow(); + } + + /** + * {@inheritDoc} + */ + @Override + public Row4 valuesRow() { + return (Row4) super.valuesRow(); + } + + /** + * {@inheritDoc} + */ + @Override + public Field field1() { + return Locks.LOCKS.TABLE_SCHEMA; + } + + /** + * {@inheritDoc} + */ + @Override + public Field field2() { + return Locks.LOCKS.TABLE_NAME; + } + + /** + * {@inheritDoc} + */ + @Override + public Field field3() { + return Locks.LOCKS.SESSION_ID; + } + + /** + * {@inheritDoc} + */ + @Override + public Field field4() { + return Locks.LOCKS.LOCK_TYPE; + } + + /** + * {@inheritDoc} + */ + @Override + public String value1() { + return getTableSchema(); + } + + /** + * {@inheritDoc} + */ + @Override + public String value2() { + return getTableName(); + } + + /** + * {@inheritDoc} + */ + @Override + public Integer value3() { + return getSessionId(); + } + + /** + * {@inheritDoc} + */ + @Override + public String value4() { + return getLockType(); + } + + /** + * {@inheritDoc} + */ + @Override + public LocksRecord value1(String value) { + setTableSchema(value); + return this; + } + + /** + * {@inheritDoc} + */ + @Override + public LocksRecord value2(String value) { + setTableName(value); + return this; + } + + /** + * {@inheritDoc} + */ + @Override + public LocksRecord value3(Integer value) { + setSessionId(value); + return this; + } + + /** + * {@inheritDoc} + */ + @Override + public LocksRecord value4(String value) { + setLockType(value); + return this; + } + + /** + * {@inheritDoc} + */ + @Override + public LocksRecord values(String value1, String value2, Integer value3, String value4) { + value1(value1); + value2(value2); + value3(value3); + value4(value4); + return this; + } + + // ------------------------------------------------------------------------- + // Constructors + // ------------------------------------------------------------------------- + + /** + * Create a detached LocksRecord + */ + public LocksRecord() { + super(Locks.LOCKS); + } + + /** + * Create a detached, initialised LocksRecord + */ + public LocksRecord(String tableSchema, String tableName, Integer sessionId, String lockType) { + super(Locks.LOCKS); + + setValue(0, tableSchema); + setValue(1, tableName); + setValue(2, sessionId); + setValue(3, lockType); + } +} diff --git a/jooq-spring/src/main/java/com/baeldung/jooq/introduction/db/information_schema/tables/records/QueryStatisticsRecord.java b/jooq-spring/src/main/java/com/baeldung/jooq/introduction/db/information_schema/tables/records/QueryStatisticsRecord.java new file mode 100644 index 0000000000..56cd9d15c4 --- /dev/null +++ b/jooq-spring/src/main/java/com/baeldung/jooq/introduction/db/information_schema/tables/records/QueryStatisticsRecord.java @@ -0,0 +1,570 @@ +/** + * This class is generated by jOOQ + */ +package com.baeldung.jooq.introduction.db.information_schema.tables.records; + + +import com.baeldung.jooq.introduction.db.information_schema.tables.QueryStatistics; + +import javax.annotation.Generated; + +import org.jooq.Field; +import org.jooq.Record12; +import org.jooq.Row12; +import org.jooq.impl.TableRecordImpl; + + +/** + * This class is generated by jOOQ. + */ +@Generated( + value = { + "http://www.jooq.org", + "jOOQ version:3.7.3" + }, + comments = "This class is generated by jOOQ" +) +@SuppressWarnings({ "all", "unchecked", "rawtypes" }) +public class QueryStatisticsRecord extends TableRecordImpl implements Record12 { + + private static final long serialVersionUID = -1608090322; + + /** + * Setter for INFORMATION_SCHEMA.QUERY_STATISTICS.SQL_STATEMENT. + */ + public void setSqlStatement(String value) { + setValue(0, value); + } + + /** + * Getter for INFORMATION_SCHEMA.QUERY_STATISTICS.SQL_STATEMENT. + */ + public String getSqlStatement() { + return (String) getValue(0); + } + + /** + * Setter for INFORMATION_SCHEMA.QUERY_STATISTICS.EXECUTION_COUNT. + */ + public void setExecutionCount(Integer value) { + setValue(1, value); + } + + /** + * Getter for INFORMATION_SCHEMA.QUERY_STATISTICS.EXECUTION_COUNT. + */ + public Integer getExecutionCount() { + return (Integer) getValue(1); + } + + /** + * Setter for INFORMATION_SCHEMA.QUERY_STATISTICS.MIN_EXECUTION_TIME. + */ + public void setMinExecutionTime(Long value) { + setValue(2, value); + } + + /** + * Getter for INFORMATION_SCHEMA.QUERY_STATISTICS.MIN_EXECUTION_TIME. + */ + public Long getMinExecutionTime() { + return (Long) getValue(2); + } + + /** + * Setter for INFORMATION_SCHEMA.QUERY_STATISTICS.MAX_EXECUTION_TIME. + */ + public void setMaxExecutionTime(Long value) { + setValue(3, value); + } + + /** + * Getter for INFORMATION_SCHEMA.QUERY_STATISTICS.MAX_EXECUTION_TIME. + */ + public Long getMaxExecutionTime() { + return (Long) getValue(3); + } + + /** + * Setter for INFORMATION_SCHEMA.QUERY_STATISTICS.CUMULATIVE_EXECUTION_TIME. + */ + public void setCumulativeExecutionTime(Long value) { + setValue(4, value); + } + + /** + * Getter for INFORMATION_SCHEMA.QUERY_STATISTICS.CUMULATIVE_EXECUTION_TIME. + */ + public Long getCumulativeExecutionTime() { + return (Long) getValue(4); + } + + /** + * Setter for INFORMATION_SCHEMA.QUERY_STATISTICS.AVERAGE_EXECUTION_TIME. + */ + public void setAverageExecutionTime(Double value) { + setValue(5, value); + } + + /** + * Getter for INFORMATION_SCHEMA.QUERY_STATISTICS.AVERAGE_EXECUTION_TIME. + */ + public Double getAverageExecutionTime() { + return (Double) getValue(5); + } + + /** + * Setter for INFORMATION_SCHEMA.QUERY_STATISTICS.STD_DEV_EXECUTION_TIME. + */ + public void setStdDevExecutionTime(Double value) { + setValue(6, value); + } + + /** + * Getter for INFORMATION_SCHEMA.QUERY_STATISTICS.STD_DEV_EXECUTION_TIME. + */ + public Double getStdDevExecutionTime() { + return (Double) getValue(6); + } + + /** + * Setter for INFORMATION_SCHEMA.QUERY_STATISTICS.MIN_ROW_COUNT. + */ + public void setMinRowCount(Integer value) { + setValue(7, value); + } + + /** + * Getter for INFORMATION_SCHEMA.QUERY_STATISTICS.MIN_ROW_COUNT. + */ + public Integer getMinRowCount() { + return (Integer) getValue(7); + } + + /** + * Setter for INFORMATION_SCHEMA.QUERY_STATISTICS.MAX_ROW_COUNT. + */ + public void setMaxRowCount(Integer value) { + setValue(8, value); + } + + /** + * Getter for INFORMATION_SCHEMA.QUERY_STATISTICS.MAX_ROW_COUNT. + */ + public Integer getMaxRowCount() { + return (Integer) getValue(8); + } + + /** + * Setter for INFORMATION_SCHEMA.QUERY_STATISTICS.CUMULATIVE_ROW_COUNT. + */ + public void setCumulativeRowCount(Long value) { + setValue(9, value); + } + + /** + * Getter for INFORMATION_SCHEMA.QUERY_STATISTICS.CUMULATIVE_ROW_COUNT. + */ + public Long getCumulativeRowCount() { + return (Long) getValue(9); + } + + /** + * Setter for INFORMATION_SCHEMA.QUERY_STATISTICS.AVERAGE_ROW_COUNT. + */ + public void setAverageRowCount(Double value) { + setValue(10, value); + } + + /** + * Getter for INFORMATION_SCHEMA.QUERY_STATISTICS.AVERAGE_ROW_COUNT. + */ + public Double getAverageRowCount() { + return (Double) getValue(10); + } + + /** + * Setter for INFORMATION_SCHEMA.QUERY_STATISTICS.STD_DEV_ROW_COUNT. + */ + public void setStdDevRowCount(Double value) { + setValue(11, value); + } + + /** + * Getter for INFORMATION_SCHEMA.QUERY_STATISTICS.STD_DEV_ROW_COUNT. + */ + public Double getStdDevRowCount() { + return (Double) getValue(11); + } + + // ------------------------------------------------------------------------- + // Record12 type implementation + // ------------------------------------------------------------------------- + + /** + * {@inheritDoc} + */ + @Override + public Row12 fieldsRow() { + return (Row12) super.fieldsRow(); + } + + /** + * {@inheritDoc} + */ + @Override + public Row12 valuesRow() { + return (Row12) super.valuesRow(); + } + + /** + * {@inheritDoc} + */ + @Override + public Field field1() { + return QueryStatistics.QUERY_STATISTICS.SQL_STATEMENT; + } + + /** + * {@inheritDoc} + */ + @Override + public Field field2() { + return QueryStatistics.QUERY_STATISTICS.EXECUTION_COUNT; + } + + /** + * {@inheritDoc} + */ + @Override + public Field field3() { + return QueryStatistics.QUERY_STATISTICS.MIN_EXECUTION_TIME; + } + + /** + * {@inheritDoc} + */ + @Override + public Field field4() { + return QueryStatistics.QUERY_STATISTICS.MAX_EXECUTION_TIME; + } + + /** + * {@inheritDoc} + */ + @Override + public Field field5() { + return QueryStatistics.QUERY_STATISTICS.CUMULATIVE_EXECUTION_TIME; + } + + /** + * {@inheritDoc} + */ + @Override + public Field field6() { + return QueryStatistics.QUERY_STATISTICS.AVERAGE_EXECUTION_TIME; + } + + /** + * {@inheritDoc} + */ + @Override + public Field field7() { + return QueryStatistics.QUERY_STATISTICS.STD_DEV_EXECUTION_TIME; + } + + /** + * {@inheritDoc} + */ + @Override + public Field field8() { + return QueryStatistics.QUERY_STATISTICS.MIN_ROW_COUNT; + } + + /** + * {@inheritDoc} + */ + @Override + public Field field9() { + return QueryStatistics.QUERY_STATISTICS.MAX_ROW_COUNT; + } + + /** + * {@inheritDoc} + */ + @Override + public Field field10() { + return QueryStatistics.QUERY_STATISTICS.CUMULATIVE_ROW_COUNT; + } + + /** + * {@inheritDoc} + */ + @Override + public Field field11() { + return QueryStatistics.QUERY_STATISTICS.AVERAGE_ROW_COUNT; + } + + /** + * {@inheritDoc} + */ + @Override + public Field field12() { + return QueryStatistics.QUERY_STATISTICS.STD_DEV_ROW_COUNT; + } + + /** + * {@inheritDoc} + */ + @Override + public String value1() { + return getSqlStatement(); + } + + /** + * {@inheritDoc} + */ + @Override + public Integer value2() { + return getExecutionCount(); + } + + /** + * {@inheritDoc} + */ + @Override + public Long value3() { + return getMinExecutionTime(); + } + + /** + * {@inheritDoc} + */ + @Override + public Long value4() { + return getMaxExecutionTime(); + } + + /** + * {@inheritDoc} + */ + @Override + public Long value5() { + return getCumulativeExecutionTime(); + } + + /** + * {@inheritDoc} + */ + @Override + public Double value6() { + return getAverageExecutionTime(); + } + + /** + * {@inheritDoc} + */ + @Override + public Double value7() { + return getStdDevExecutionTime(); + } + + /** + * {@inheritDoc} + */ + @Override + public Integer value8() { + return getMinRowCount(); + } + + /** + * {@inheritDoc} + */ + @Override + public Integer value9() { + return getMaxRowCount(); + } + + /** + * {@inheritDoc} + */ + @Override + public Long value10() { + return getCumulativeRowCount(); + } + + /** + * {@inheritDoc} + */ + @Override + public Double value11() { + return getAverageRowCount(); + } + + /** + * {@inheritDoc} + */ + @Override + public Double value12() { + return getStdDevRowCount(); + } + + /** + * {@inheritDoc} + */ + @Override + public QueryStatisticsRecord value1(String value) { + setSqlStatement(value); + return this; + } + + /** + * {@inheritDoc} + */ + @Override + public QueryStatisticsRecord value2(Integer value) { + setExecutionCount(value); + return this; + } + + /** + * {@inheritDoc} + */ + @Override + public QueryStatisticsRecord value3(Long value) { + setMinExecutionTime(value); + return this; + } + + /** + * {@inheritDoc} + */ + @Override + public QueryStatisticsRecord value4(Long value) { + setMaxExecutionTime(value); + return this; + } + + /** + * {@inheritDoc} + */ + @Override + public QueryStatisticsRecord value5(Long value) { + setCumulativeExecutionTime(value); + return this; + } + + /** + * {@inheritDoc} + */ + @Override + public QueryStatisticsRecord value6(Double value) { + setAverageExecutionTime(value); + return this; + } + + /** + * {@inheritDoc} + */ + @Override + public QueryStatisticsRecord value7(Double value) { + setStdDevExecutionTime(value); + return this; + } + + /** + * {@inheritDoc} + */ + @Override + public QueryStatisticsRecord value8(Integer value) { + setMinRowCount(value); + return this; + } + + /** + * {@inheritDoc} + */ + @Override + public QueryStatisticsRecord value9(Integer value) { + setMaxRowCount(value); + return this; + } + + /** + * {@inheritDoc} + */ + @Override + public QueryStatisticsRecord value10(Long value) { + setCumulativeRowCount(value); + return this; + } + + /** + * {@inheritDoc} + */ + @Override + public QueryStatisticsRecord value11(Double value) { + setAverageRowCount(value); + return this; + } + + /** + * {@inheritDoc} + */ + @Override + public QueryStatisticsRecord value12(Double value) { + setStdDevRowCount(value); + return this; + } + + /** + * {@inheritDoc} + */ + @Override + public QueryStatisticsRecord values(String value1, Integer value2, Long value3, Long value4, Long value5, Double value6, Double value7, Integer value8, Integer value9, Long value10, Double value11, Double value12) { + value1(value1); + value2(value2); + value3(value3); + value4(value4); + value5(value5); + value6(value6); + value7(value7); + value8(value8); + value9(value9); + value10(value10); + value11(value11); + value12(value12); + return this; + } + + // ------------------------------------------------------------------------- + // Constructors + // ------------------------------------------------------------------------- + + /** + * Create a detached QueryStatisticsRecord + */ + public QueryStatisticsRecord() { + super(QueryStatistics.QUERY_STATISTICS); + } + + /** + * Create a detached, initialised QueryStatisticsRecord + */ + public QueryStatisticsRecord(String sqlStatement, Integer executionCount, Long minExecutionTime, Long maxExecutionTime, Long cumulativeExecutionTime, Double averageExecutionTime, Double stdDevExecutionTime, Integer minRowCount, Integer maxRowCount, Long cumulativeRowCount, Double averageRowCount, Double stdDevRowCount) { + super(QueryStatistics.QUERY_STATISTICS); + + setValue(0, sqlStatement); + setValue(1, executionCount); + setValue(2, minExecutionTime); + setValue(3, maxExecutionTime); + setValue(4, cumulativeExecutionTime); + setValue(5, averageExecutionTime); + setValue(6, stdDevExecutionTime); + setValue(7, minRowCount); + setValue(8, maxRowCount); + setValue(9, cumulativeRowCount); + setValue(10, averageRowCount); + setValue(11, stdDevRowCount); + } +} diff --git a/jooq-spring/src/main/java/com/baeldung/jooq/introduction/db/information_schema/tables/records/RightsRecord.java b/jooq-spring/src/main/java/com/baeldung/jooq/introduction/db/information_schema/tables/records/RightsRecord.java new file mode 100644 index 0000000000..a9c50817c7 --- /dev/null +++ b/jooq-spring/src/main/java/com/baeldung/jooq/introduction/db/information_schema/tables/records/RightsRecord.java @@ -0,0 +1,365 @@ +/** + * This class is generated by jOOQ + */ +package com.baeldung.jooq.introduction.db.information_schema.tables.records; + + +import com.baeldung.jooq.introduction.db.information_schema.tables.Rights; + +import javax.annotation.Generated; + +import org.jooq.Field; +import org.jooq.Record7; +import org.jooq.Row7; +import org.jooq.impl.TableRecordImpl; + + +/** + * This class is generated by jOOQ. + */ +@Generated( + value = { + "http://www.jooq.org", + "jOOQ version:3.7.3" + }, + comments = "This class is generated by jOOQ" +) +@SuppressWarnings({ "all", "unchecked", "rawtypes" }) +public class RightsRecord extends TableRecordImpl implements Record7 { + + private static final long serialVersionUID = 269610816; + + /** + * Setter for INFORMATION_SCHEMA.RIGHTS.GRANTEE. + */ + public void setGrantee(String value) { + setValue(0, value); + } + + /** + * Getter for INFORMATION_SCHEMA.RIGHTS.GRANTEE. + */ + public String getGrantee() { + return (String) getValue(0); + } + + /** + * Setter for INFORMATION_SCHEMA.RIGHTS.GRANTEETYPE. + */ + public void setGranteetype(String value) { + setValue(1, value); + } + + /** + * Getter for INFORMATION_SCHEMA.RIGHTS.GRANTEETYPE. + */ + public String getGranteetype() { + return (String) getValue(1); + } + + /** + * Setter for INFORMATION_SCHEMA.RIGHTS.GRANTEDROLE. + */ + public void setGrantedrole(String value) { + setValue(2, value); + } + + /** + * Getter for INFORMATION_SCHEMA.RIGHTS.GRANTEDROLE. + */ + public String getGrantedrole() { + return (String) getValue(2); + } + + /** + * Setter for INFORMATION_SCHEMA.RIGHTS.RIGHTS. + */ + public void setRights(String value) { + setValue(3, value); + } + + /** + * Getter for INFORMATION_SCHEMA.RIGHTS.RIGHTS. + */ + public String getRights() { + return (String) getValue(3); + } + + /** + * Setter for INFORMATION_SCHEMA.RIGHTS.TABLE_SCHEMA. + */ + public void setTableSchema(String value) { + setValue(4, value); + } + + /** + * Getter for INFORMATION_SCHEMA.RIGHTS.TABLE_SCHEMA. + */ + public String getTableSchema() { + return (String) getValue(4); + } + + /** + * Setter for INFORMATION_SCHEMA.RIGHTS.TABLE_NAME. + */ + public void setTableName(String value) { + setValue(5, value); + } + + /** + * Getter for INFORMATION_SCHEMA.RIGHTS.TABLE_NAME. + */ + public String getTableName() { + return (String) getValue(5); + } + + /** + * Setter for INFORMATION_SCHEMA.RIGHTS.ID. + */ + public void setId(Integer value) { + setValue(6, value); + } + + /** + * Getter for INFORMATION_SCHEMA.RIGHTS.ID. + */ + public Integer getId() { + return (Integer) getValue(6); + } + + // ------------------------------------------------------------------------- + // Record7 type implementation + // ------------------------------------------------------------------------- + + /** + * {@inheritDoc} + */ + @Override + public Row7 fieldsRow() { + return (Row7) super.fieldsRow(); + } + + /** + * {@inheritDoc} + */ + @Override + public Row7 valuesRow() { + return (Row7) super.valuesRow(); + } + + /** + * {@inheritDoc} + */ + @Override + public Field field1() { + return Rights.RIGHTS.GRANTEE; + } + + /** + * {@inheritDoc} + */ + @Override + public Field field2() { + return Rights.RIGHTS.GRANTEETYPE; + } + + /** + * {@inheritDoc} + */ + @Override + public Field field3() { + return Rights.RIGHTS.GRANTEDROLE; + } + + /** + * {@inheritDoc} + */ + @Override + public Field field4() { + return Rights.RIGHTS.RIGHTS_; + } + + /** + * {@inheritDoc} + */ + @Override + public Field field5() { + return Rights.RIGHTS.TABLE_SCHEMA; + } + + /** + * {@inheritDoc} + */ + @Override + public Field field6() { + return Rights.RIGHTS.TABLE_NAME; + } + + /** + * {@inheritDoc} + */ + @Override + public Field field7() { + return Rights.RIGHTS.ID; + } + + /** + * {@inheritDoc} + */ + @Override + public String value1() { + return getGrantee(); + } + + /** + * {@inheritDoc} + */ + @Override + public String value2() { + return getGranteetype(); + } + + /** + * {@inheritDoc} + */ + @Override + public String value3() { + return getGrantedrole(); + } + + /** + * {@inheritDoc} + */ + @Override + public String value4() { + return getRights(); + } + + /** + * {@inheritDoc} + */ + @Override + public String value5() { + return getTableSchema(); + } + + /** + * {@inheritDoc} + */ + @Override + public String value6() { + return getTableName(); + } + + /** + * {@inheritDoc} + */ + @Override + public Integer value7() { + return getId(); + } + + /** + * {@inheritDoc} + */ + @Override + public RightsRecord value1(String value) { + setGrantee(value); + return this; + } + + /** + * {@inheritDoc} + */ + @Override + public RightsRecord value2(String value) { + setGranteetype(value); + return this; + } + + /** + * {@inheritDoc} + */ + @Override + public RightsRecord value3(String value) { + setGrantedrole(value); + return this; + } + + /** + * {@inheritDoc} + */ + @Override + public RightsRecord value4(String value) { + setRights(value); + return this; + } + + /** + * {@inheritDoc} + */ + @Override + public RightsRecord value5(String value) { + setTableSchema(value); + return this; + } + + /** + * {@inheritDoc} + */ + @Override + public RightsRecord value6(String value) { + setTableName(value); + return this; + } + + /** + * {@inheritDoc} + */ + @Override + public RightsRecord value7(Integer value) { + setId(value); + return this; + } + + /** + * {@inheritDoc} + */ + @Override + public RightsRecord values(String value1, String value2, String value3, String value4, String value5, String value6, Integer value7) { + value1(value1); + value2(value2); + value3(value3); + value4(value4); + value5(value5); + value6(value6); + value7(value7); + return this; + } + + // ------------------------------------------------------------------------- + // Constructors + // ------------------------------------------------------------------------- + + /** + * Create a detached RightsRecord + */ + public RightsRecord() { + super(Rights.RIGHTS); + } + + /** + * Create a detached, initialised RightsRecord + */ + public RightsRecord(String grantee, String granteetype, String grantedrole, String rights, String tableSchema, String tableName, Integer id) { + super(Rights.RIGHTS); + + setValue(0, grantee); + setValue(1, granteetype); + setValue(2, grantedrole); + setValue(3, rights); + setValue(4, tableSchema); + setValue(5, tableName); + setValue(6, id); + } +} diff --git a/jooq-spring/src/main/java/com/baeldung/jooq/introduction/db/information_schema/tables/records/RolesRecord.java b/jooq-spring/src/main/java/com/baeldung/jooq/introduction/db/information_schema/tables/records/RolesRecord.java new file mode 100644 index 0000000000..a648165fc5 --- /dev/null +++ b/jooq-spring/src/main/java/com/baeldung/jooq/introduction/db/information_schema/tables/records/RolesRecord.java @@ -0,0 +1,201 @@ +/** + * This class is generated by jOOQ + */ +package com.baeldung.jooq.introduction.db.information_schema.tables.records; + + +import com.baeldung.jooq.introduction.db.information_schema.tables.Roles; + +import javax.annotation.Generated; + +import org.jooq.Field; +import org.jooq.Record3; +import org.jooq.Row3; +import org.jooq.impl.TableRecordImpl; + + +/** + * This class is generated by jOOQ. + */ +@Generated( + value = { + "http://www.jooq.org", + "jOOQ version:3.7.3" + }, + comments = "This class is generated by jOOQ" +) +@SuppressWarnings({ "all", "unchecked", "rawtypes" }) +public class RolesRecord extends TableRecordImpl implements Record3 { + + private static final long serialVersionUID = -579805711; + + /** + * Setter for INFORMATION_SCHEMA.ROLES.NAME. + */ + public void setName(String value) { + setValue(0, value); + } + + /** + * Getter for INFORMATION_SCHEMA.ROLES.NAME. + */ + public String getName() { + return (String) getValue(0); + } + + /** + * Setter for INFORMATION_SCHEMA.ROLES.REMARKS. + */ + public void setRemarks(String value) { + setValue(1, value); + } + + /** + * Getter for INFORMATION_SCHEMA.ROLES.REMARKS. + */ + public String getRemarks() { + return (String) getValue(1); + } + + /** + * Setter for INFORMATION_SCHEMA.ROLES.ID. + */ + public void setId(Integer value) { + setValue(2, value); + } + + /** + * Getter for INFORMATION_SCHEMA.ROLES.ID. + */ + public Integer getId() { + return (Integer) getValue(2); + } + + // ------------------------------------------------------------------------- + // Record3 type implementation + // ------------------------------------------------------------------------- + + /** + * {@inheritDoc} + */ + @Override + public Row3 fieldsRow() { + return (Row3) super.fieldsRow(); + } + + /** + * {@inheritDoc} + */ + @Override + public Row3 valuesRow() { + return (Row3) super.valuesRow(); + } + + /** + * {@inheritDoc} + */ + @Override + public Field field1() { + return Roles.ROLES.NAME; + } + + /** + * {@inheritDoc} + */ + @Override + public Field field2() { + return Roles.ROLES.REMARKS; + } + + /** + * {@inheritDoc} + */ + @Override + public Field field3() { + return Roles.ROLES.ID; + } + + /** + * {@inheritDoc} + */ + @Override + public String value1() { + return getName(); + } + + /** + * {@inheritDoc} + */ + @Override + public String value2() { + return getRemarks(); + } + + /** + * {@inheritDoc} + */ + @Override + public Integer value3() { + return getId(); + } + + /** + * {@inheritDoc} + */ + @Override + public RolesRecord value1(String value) { + setName(value); + return this; + } + + /** + * {@inheritDoc} + */ + @Override + public RolesRecord value2(String value) { + setRemarks(value); + return this; + } + + /** + * {@inheritDoc} + */ + @Override + public RolesRecord value3(Integer value) { + setId(value); + return this; + } + + /** + * {@inheritDoc} + */ + @Override + public RolesRecord values(String value1, String value2, Integer value3) { + value1(value1); + value2(value2); + value3(value3); + return this; + } + + // ------------------------------------------------------------------------- + // Constructors + // ------------------------------------------------------------------------- + + /** + * Create a detached RolesRecord + */ + public RolesRecord() { + super(Roles.ROLES); + } + + /** + * Create a detached, initialised RolesRecord + */ + public RolesRecord(String name, String remarks, Integer id) { + super(Roles.ROLES); + + setValue(0, name); + setValue(1, remarks); + setValue(2, id); + } +} diff --git a/jooq-spring/src/main/java/com/baeldung/jooq/introduction/db/information_schema/tables/records/SchemataRecord.java b/jooq-spring/src/main/java/com/baeldung/jooq/introduction/db/information_schema/tables/records/SchemataRecord.java new file mode 100644 index 0000000000..21ae1edfb4 --- /dev/null +++ b/jooq-spring/src/main/java/com/baeldung/jooq/introduction/db/information_schema/tables/records/SchemataRecord.java @@ -0,0 +1,406 @@ +/** + * This class is generated by jOOQ + */ +package com.baeldung.jooq.introduction.db.information_schema.tables.records; + + +import com.baeldung.jooq.introduction.db.information_schema.tables.Schemata; + +import javax.annotation.Generated; + +import org.jooq.Field; +import org.jooq.Record8; +import org.jooq.Row8; +import org.jooq.impl.TableRecordImpl; + + +/** + * This class is generated by jOOQ. + */ +@Generated( + value = { + "http://www.jooq.org", + "jOOQ version:3.7.3" + }, + comments = "This class is generated by jOOQ" +) +@SuppressWarnings({ "all", "unchecked", "rawtypes" }) +public class SchemataRecord extends TableRecordImpl implements Record8 { + + private static final long serialVersionUID = -163519189; + + /** + * Setter for INFORMATION_SCHEMA.SCHEMATA.CATALOG_NAME. + */ + public void setCatalogName(String value) { + setValue(0, value); + } + + /** + * Getter for INFORMATION_SCHEMA.SCHEMATA.CATALOG_NAME. + */ + public String getCatalogName() { + return (String) getValue(0); + } + + /** + * Setter for INFORMATION_SCHEMA.SCHEMATA.SCHEMA_NAME. + */ + public void setSchemaName(String value) { + setValue(1, value); + } + + /** + * Getter for INFORMATION_SCHEMA.SCHEMATA.SCHEMA_NAME. + */ + public String getSchemaName() { + return (String) getValue(1); + } + + /** + * Setter for INFORMATION_SCHEMA.SCHEMATA.SCHEMA_OWNER. + */ + public void setSchemaOwner(String value) { + setValue(2, value); + } + + /** + * Getter for INFORMATION_SCHEMA.SCHEMATA.SCHEMA_OWNER. + */ + public String getSchemaOwner() { + return (String) getValue(2); + } + + /** + * Setter for INFORMATION_SCHEMA.SCHEMATA.DEFAULT_CHARACTER_SET_NAME. + */ + public void setDefaultCharacterSetName(String value) { + setValue(3, value); + } + + /** + * Getter for INFORMATION_SCHEMA.SCHEMATA.DEFAULT_CHARACTER_SET_NAME. + */ + public String getDefaultCharacterSetName() { + return (String) getValue(3); + } + + /** + * Setter for INFORMATION_SCHEMA.SCHEMATA.DEFAULT_COLLATION_NAME. + */ + public void setDefaultCollationName(String value) { + setValue(4, value); + } + + /** + * Getter for INFORMATION_SCHEMA.SCHEMATA.DEFAULT_COLLATION_NAME. + */ + public String getDefaultCollationName() { + return (String) getValue(4); + } + + /** + * Setter for INFORMATION_SCHEMA.SCHEMATA.IS_DEFAULT. + */ + public void setIsDefault(Boolean value) { + setValue(5, value); + } + + /** + * Getter for INFORMATION_SCHEMA.SCHEMATA.IS_DEFAULT. + */ + public Boolean getIsDefault() { + return (Boolean) getValue(5); + } + + /** + * Setter for INFORMATION_SCHEMA.SCHEMATA.REMARKS. + */ + public void setRemarks(String value) { + setValue(6, value); + } + + /** + * Getter for INFORMATION_SCHEMA.SCHEMATA.REMARKS. + */ + public String getRemarks() { + return (String) getValue(6); + } + + /** + * Setter for INFORMATION_SCHEMA.SCHEMATA.ID. + */ + public void setId(Integer value) { + setValue(7, value); + } + + /** + * Getter for INFORMATION_SCHEMA.SCHEMATA.ID. + */ + public Integer getId() { + return (Integer) getValue(7); + } + + // ------------------------------------------------------------------------- + // Record8 type implementation + // ------------------------------------------------------------------------- + + /** + * {@inheritDoc} + */ + @Override + public Row8 fieldsRow() { + return (Row8) super.fieldsRow(); + } + + /** + * {@inheritDoc} + */ + @Override + public Row8 valuesRow() { + return (Row8) super.valuesRow(); + } + + /** + * {@inheritDoc} + */ + @Override + public Field field1() { + return Schemata.SCHEMATA.CATALOG_NAME; + } + + /** + * {@inheritDoc} + */ + @Override + public Field field2() { + return Schemata.SCHEMATA.SCHEMA_NAME; + } + + /** + * {@inheritDoc} + */ + @Override + public Field field3() { + return Schemata.SCHEMATA.SCHEMA_OWNER; + } + + /** + * {@inheritDoc} + */ + @Override + public Field field4() { + return Schemata.SCHEMATA.DEFAULT_CHARACTER_SET_NAME; + } + + /** + * {@inheritDoc} + */ + @Override + public Field field5() { + return Schemata.SCHEMATA.DEFAULT_COLLATION_NAME; + } + + /** + * {@inheritDoc} + */ + @Override + public Field field6() { + return Schemata.SCHEMATA.IS_DEFAULT; + } + + /** + * {@inheritDoc} + */ + @Override + public Field field7() { + return Schemata.SCHEMATA.REMARKS; + } + + /** + * {@inheritDoc} + */ + @Override + public Field field8() { + return Schemata.SCHEMATA.ID; + } + + /** + * {@inheritDoc} + */ + @Override + public String value1() { + return getCatalogName(); + } + + /** + * {@inheritDoc} + */ + @Override + public String value2() { + return getSchemaName(); + } + + /** + * {@inheritDoc} + */ + @Override + public String value3() { + return getSchemaOwner(); + } + + /** + * {@inheritDoc} + */ + @Override + public String value4() { + return getDefaultCharacterSetName(); + } + + /** + * {@inheritDoc} + */ + @Override + public String value5() { + return getDefaultCollationName(); + } + + /** + * {@inheritDoc} + */ + @Override + public Boolean value6() { + return getIsDefault(); + } + + /** + * {@inheritDoc} + */ + @Override + public String value7() { + return getRemarks(); + } + + /** + * {@inheritDoc} + */ + @Override + public Integer value8() { + return getId(); + } + + /** + * {@inheritDoc} + */ + @Override + public SchemataRecord value1(String value) { + setCatalogName(value); + return this; + } + + /** + * {@inheritDoc} + */ + @Override + public SchemataRecord value2(String value) { + setSchemaName(value); + return this; + } + + /** + * {@inheritDoc} + */ + @Override + public SchemataRecord value3(String value) { + setSchemaOwner(value); + return this; + } + + /** + * {@inheritDoc} + */ + @Override + public SchemataRecord value4(String value) { + setDefaultCharacterSetName(value); + return this; + } + + /** + * {@inheritDoc} + */ + @Override + public SchemataRecord value5(String value) { + setDefaultCollationName(value); + return this; + } + + /** + * {@inheritDoc} + */ + @Override + public SchemataRecord value6(Boolean value) { + setIsDefault(value); + return this; + } + + /** + * {@inheritDoc} + */ + @Override + public SchemataRecord value7(String value) { + setRemarks(value); + return this; + } + + /** + * {@inheritDoc} + */ + @Override + public SchemataRecord value8(Integer value) { + setId(value); + return this; + } + + /** + * {@inheritDoc} + */ + @Override + public SchemataRecord values(String value1, String value2, String value3, String value4, String value5, Boolean value6, String value7, Integer value8) { + value1(value1); + value2(value2); + value3(value3); + value4(value4); + value5(value5); + value6(value6); + value7(value7); + value8(value8); + return this; + } + + // ------------------------------------------------------------------------- + // Constructors + // ------------------------------------------------------------------------- + + /** + * Create a detached SchemataRecord + */ + public SchemataRecord() { + super(Schemata.SCHEMATA); + } + + /** + * Create a detached, initialised SchemataRecord + */ + public SchemataRecord(String catalogName, String schemaName, String schemaOwner, String defaultCharacterSetName, String defaultCollationName, Boolean isDefault, String remarks, Integer id) { + super(Schemata.SCHEMATA); + + setValue(0, catalogName); + setValue(1, schemaName); + setValue(2, schemaOwner); + setValue(3, defaultCharacterSetName); + setValue(4, defaultCollationName); + setValue(5, isDefault); + setValue(6, remarks); + setValue(7, id); + } +} diff --git a/jooq-spring/src/main/java/com/baeldung/jooq/introduction/db/information_schema/tables/records/SequencesRecord.java b/jooq-spring/src/main/java/com/baeldung/jooq/introduction/db/information_schema/tables/records/SequencesRecord.java new file mode 100644 index 0000000000..cc8285599f --- /dev/null +++ b/jooq-spring/src/main/java/com/baeldung/jooq/introduction/db/information_schema/tables/records/SequencesRecord.java @@ -0,0 +1,570 @@ +/** + * This class is generated by jOOQ + */ +package com.baeldung.jooq.introduction.db.information_schema.tables.records; + + +import com.baeldung.jooq.introduction.db.information_schema.tables.Sequences; + +import javax.annotation.Generated; + +import org.jooq.Field; +import org.jooq.Record12; +import org.jooq.Row12; +import org.jooq.impl.TableRecordImpl; + + +/** + * This class is generated by jOOQ. + */ +@Generated( + value = { + "http://www.jooq.org", + "jOOQ version:3.7.3" + }, + comments = "This class is generated by jOOQ" +) +@SuppressWarnings({ "all", "unchecked", "rawtypes" }) +public class SequencesRecord extends TableRecordImpl implements Record12 { + + private static final long serialVersionUID = -1861251627; + + /** + * Setter for INFORMATION_SCHEMA.SEQUENCES.SEQUENCE_CATALOG. + */ + public void setSequenceCatalog(String value) { + setValue(0, value); + } + + /** + * Getter for INFORMATION_SCHEMA.SEQUENCES.SEQUENCE_CATALOG. + */ + public String getSequenceCatalog() { + return (String) getValue(0); + } + + /** + * Setter for INFORMATION_SCHEMA.SEQUENCES.SEQUENCE_SCHEMA. + */ + public void setSequenceSchema(String value) { + setValue(1, value); + } + + /** + * Getter for INFORMATION_SCHEMA.SEQUENCES.SEQUENCE_SCHEMA. + */ + public String getSequenceSchema() { + return (String) getValue(1); + } + + /** + * Setter for INFORMATION_SCHEMA.SEQUENCES.SEQUENCE_NAME. + */ + public void setSequenceName(String value) { + setValue(2, value); + } + + /** + * Getter for INFORMATION_SCHEMA.SEQUENCES.SEQUENCE_NAME. + */ + public String getSequenceName() { + return (String) getValue(2); + } + + /** + * Setter for INFORMATION_SCHEMA.SEQUENCES.CURRENT_VALUE. + */ + public void setCurrentValue(Long value) { + setValue(3, value); + } + + /** + * Getter for INFORMATION_SCHEMA.SEQUENCES.CURRENT_VALUE. + */ + public Long getCurrentValue() { + return (Long) getValue(3); + } + + /** + * Setter for INFORMATION_SCHEMA.SEQUENCES.INCREMENT. + */ + public void setIncrement(Long value) { + setValue(4, value); + } + + /** + * Getter for INFORMATION_SCHEMA.SEQUENCES.INCREMENT. + */ + public Long getIncrement() { + return (Long) getValue(4); + } + + /** + * Setter for INFORMATION_SCHEMA.SEQUENCES.IS_GENERATED. + */ + public void setIsGenerated(Boolean value) { + setValue(5, value); + } + + /** + * Getter for INFORMATION_SCHEMA.SEQUENCES.IS_GENERATED. + */ + public Boolean getIsGenerated() { + return (Boolean) getValue(5); + } + + /** + * Setter for INFORMATION_SCHEMA.SEQUENCES.REMARKS. + */ + public void setRemarks(String value) { + setValue(6, value); + } + + /** + * Getter for INFORMATION_SCHEMA.SEQUENCES.REMARKS. + */ + public String getRemarks() { + return (String) getValue(6); + } + + /** + * Setter for INFORMATION_SCHEMA.SEQUENCES.CACHE. + */ + public void setCache(Long value) { + setValue(7, value); + } + + /** + * Getter for INFORMATION_SCHEMA.SEQUENCES.CACHE. + */ + public Long getCache() { + return (Long) getValue(7); + } + + /** + * Setter for INFORMATION_SCHEMA.SEQUENCES.MIN_VALUE. + */ + public void setMinValue(Long value) { + setValue(8, value); + } + + /** + * Getter for INFORMATION_SCHEMA.SEQUENCES.MIN_VALUE. + */ + public Long getMinValue() { + return (Long) getValue(8); + } + + /** + * Setter for INFORMATION_SCHEMA.SEQUENCES.MAX_VALUE. + */ + public void setMaxValue(Long value) { + setValue(9, value); + } + + /** + * Getter for INFORMATION_SCHEMA.SEQUENCES.MAX_VALUE. + */ + public Long getMaxValue() { + return (Long) getValue(9); + } + + /** + * Setter for INFORMATION_SCHEMA.SEQUENCES.IS_CYCLE. + */ + public void setIsCycle(Boolean value) { + setValue(10, value); + } + + /** + * Getter for INFORMATION_SCHEMA.SEQUENCES.IS_CYCLE. + */ + public Boolean getIsCycle() { + return (Boolean) getValue(10); + } + + /** + * Setter for INFORMATION_SCHEMA.SEQUENCES.ID. + */ + public void setId(Integer value) { + setValue(11, value); + } + + /** + * Getter for INFORMATION_SCHEMA.SEQUENCES.ID. + */ + public Integer getId() { + return (Integer) getValue(11); + } + + // ------------------------------------------------------------------------- + // Record12 type implementation + // ------------------------------------------------------------------------- + + /** + * {@inheritDoc} + */ + @Override + public Row12 fieldsRow() { + return (Row12) super.fieldsRow(); + } + + /** + * {@inheritDoc} + */ + @Override + public Row12 valuesRow() { + return (Row12) super.valuesRow(); + } + + /** + * {@inheritDoc} + */ + @Override + public Field field1() { + return Sequences.SEQUENCES.SEQUENCE_CATALOG; + } + + /** + * {@inheritDoc} + */ + @Override + public Field field2() { + return Sequences.SEQUENCES.SEQUENCE_SCHEMA; + } + + /** + * {@inheritDoc} + */ + @Override + public Field field3() { + return Sequences.SEQUENCES.SEQUENCE_NAME; + } + + /** + * {@inheritDoc} + */ + @Override + public Field field4() { + return Sequences.SEQUENCES.CURRENT_VALUE; + } + + /** + * {@inheritDoc} + */ + @Override + public Field field5() { + return Sequences.SEQUENCES.INCREMENT; + } + + /** + * {@inheritDoc} + */ + @Override + public Field field6() { + return Sequences.SEQUENCES.IS_GENERATED; + } + + /** + * {@inheritDoc} + */ + @Override + public Field field7() { + return Sequences.SEQUENCES.REMARKS; + } + + /** + * {@inheritDoc} + */ + @Override + public Field field8() { + return Sequences.SEQUENCES.CACHE; + } + + /** + * {@inheritDoc} + */ + @Override + public Field field9() { + return Sequences.SEQUENCES.MIN_VALUE; + } + + /** + * {@inheritDoc} + */ + @Override + public Field field10() { + return Sequences.SEQUENCES.MAX_VALUE; + } + + /** + * {@inheritDoc} + */ + @Override + public Field field11() { + return Sequences.SEQUENCES.IS_CYCLE; + } + + /** + * {@inheritDoc} + */ + @Override + public Field field12() { + return Sequences.SEQUENCES.ID; + } + + /** + * {@inheritDoc} + */ + @Override + public String value1() { + return getSequenceCatalog(); + } + + /** + * {@inheritDoc} + */ + @Override + public String value2() { + return getSequenceSchema(); + } + + /** + * {@inheritDoc} + */ + @Override + public String value3() { + return getSequenceName(); + } + + /** + * {@inheritDoc} + */ + @Override + public Long value4() { + return getCurrentValue(); + } + + /** + * {@inheritDoc} + */ + @Override + public Long value5() { + return getIncrement(); + } + + /** + * {@inheritDoc} + */ + @Override + public Boolean value6() { + return getIsGenerated(); + } + + /** + * {@inheritDoc} + */ + @Override + public String value7() { + return getRemarks(); + } + + /** + * {@inheritDoc} + */ + @Override + public Long value8() { + return getCache(); + } + + /** + * {@inheritDoc} + */ + @Override + public Long value9() { + return getMinValue(); + } + + /** + * {@inheritDoc} + */ + @Override + public Long value10() { + return getMaxValue(); + } + + /** + * {@inheritDoc} + */ + @Override + public Boolean value11() { + return getIsCycle(); + } + + /** + * {@inheritDoc} + */ + @Override + public Integer value12() { + return getId(); + } + + /** + * {@inheritDoc} + */ + @Override + public SequencesRecord value1(String value) { + setSequenceCatalog(value); + return this; + } + + /** + * {@inheritDoc} + */ + @Override + public SequencesRecord value2(String value) { + setSequenceSchema(value); + return this; + } + + /** + * {@inheritDoc} + */ + @Override + public SequencesRecord value3(String value) { + setSequenceName(value); + return this; + } + + /** + * {@inheritDoc} + */ + @Override + public SequencesRecord value4(Long value) { + setCurrentValue(value); + return this; + } + + /** + * {@inheritDoc} + */ + @Override + public SequencesRecord value5(Long value) { + setIncrement(value); + return this; + } + + /** + * {@inheritDoc} + */ + @Override + public SequencesRecord value6(Boolean value) { + setIsGenerated(value); + return this; + } + + /** + * {@inheritDoc} + */ + @Override + public SequencesRecord value7(String value) { + setRemarks(value); + return this; + } + + /** + * {@inheritDoc} + */ + @Override + public SequencesRecord value8(Long value) { + setCache(value); + return this; + } + + /** + * {@inheritDoc} + */ + @Override + public SequencesRecord value9(Long value) { + setMinValue(value); + return this; + } + + /** + * {@inheritDoc} + */ + @Override + public SequencesRecord value10(Long value) { + setMaxValue(value); + return this; + } + + /** + * {@inheritDoc} + */ + @Override + public SequencesRecord value11(Boolean value) { + setIsCycle(value); + return this; + } + + /** + * {@inheritDoc} + */ + @Override + public SequencesRecord value12(Integer value) { + setId(value); + return this; + } + + /** + * {@inheritDoc} + */ + @Override + public SequencesRecord values(String value1, String value2, String value3, Long value4, Long value5, Boolean value6, String value7, Long value8, Long value9, Long value10, Boolean value11, Integer value12) { + value1(value1); + value2(value2); + value3(value3); + value4(value4); + value5(value5); + value6(value6); + value7(value7); + value8(value8); + value9(value9); + value10(value10); + value11(value11); + value12(value12); + return this; + } + + // ------------------------------------------------------------------------- + // Constructors + // ------------------------------------------------------------------------- + + /** + * Create a detached SequencesRecord + */ + public SequencesRecord() { + super(Sequences.SEQUENCES); + } + + /** + * Create a detached, initialised SequencesRecord + */ + public SequencesRecord(String sequenceCatalog, String sequenceSchema, String sequenceName, Long currentValue, Long increment, Boolean isGenerated, String remarks, Long cache, Long minValue, Long maxValue, Boolean isCycle, Integer id) { + super(Sequences.SEQUENCES); + + setValue(0, sequenceCatalog); + setValue(1, sequenceSchema); + setValue(2, sequenceName); + setValue(3, currentValue); + setValue(4, increment); + setValue(5, isGenerated); + setValue(6, remarks); + setValue(7, cache); + setValue(8, minValue); + setValue(9, maxValue); + setValue(10, isCycle); + setValue(11, id); + } +} diff --git a/jooq-spring/src/main/java/com/baeldung/jooq/introduction/db/information_schema/tables/records/SessionStateRecord.java b/jooq-spring/src/main/java/com/baeldung/jooq/introduction/db/information_schema/tables/records/SessionStateRecord.java new file mode 100644 index 0000000000..b25800ae65 --- /dev/null +++ b/jooq-spring/src/main/java/com/baeldung/jooq/introduction/db/information_schema/tables/records/SessionStateRecord.java @@ -0,0 +1,160 @@ +/** + * This class is generated by jOOQ + */ +package com.baeldung.jooq.introduction.db.information_schema.tables.records; + + +import com.baeldung.jooq.introduction.db.information_schema.tables.SessionState; + +import javax.annotation.Generated; + +import org.jooq.Field; +import org.jooq.Record2; +import org.jooq.Row2; +import org.jooq.impl.TableRecordImpl; + + +/** + * This class is generated by jOOQ. + */ +@Generated( + value = { + "http://www.jooq.org", + "jOOQ version:3.7.3" + }, + comments = "This class is generated by jOOQ" +) +@SuppressWarnings({ "all", "unchecked", "rawtypes" }) +public class SessionStateRecord extends TableRecordImpl implements Record2 { + + private static final long serialVersionUID = -1306764107; + + /** + * Setter for INFORMATION_SCHEMA.SESSION_STATE.KEY. + */ + public void setKey(String value) { + setValue(0, value); + } + + /** + * Getter for INFORMATION_SCHEMA.SESSION_STATE.KEY. + */ + public String getKey() { + return (String) getValue(0); + } + + /** + * Setter for INFORMATION_SCHEMA.SESSION_STATE.SQL. + */ + public void setSql(String value) { + setValue(1, value); + } + + /** + * Getter for INFORMATION_SCHEMA.SESSION_STATE.SQL. + */ + public String getSql() { + return (String) getValue(1); + } + + // ------------------------------------------------------------------------- + // Record2 type implementation + // ------------------------------------------------------------------------- + + /** + * {@inheritDoc} + */ + @Override + public Row2 fieldsRow() { + return (Row2) super.fieldsRow(); + } + + /** + * {@inheritDoc} + */ + @Override + public Row2 valuesRow() { + return (Row2) super.valuesRow(); + } + + /** + * {@inheritDoc} + */ + @Override + public Field field1() { + return SessionState.SESSION_STATE.KEY; + } + + /** + * {@inheritDoc} + */ + @Override + public Field field2() { + return SessionState.SESSION_STATE.SQL; + } + + /** + * {@inheritDoc} + */ + @Override + public String value1() { + return getKey(); + } + + /** + * {@inheritDoc} + */ + @Override + public String value2() { + return getSql(); + } + + /** + * {@inheritDoc} + */ + @Override + public SessionStateRecord value1(String value) { + setKey(value); + return this; + } + + /** + * {@inheritDoc} + */ + @Override + public SessionStateRecord value2(String value) { + setSql(value); + return this; + } + + /** + * {@inheritDoc} + */ + @Override + public SessionStateRecord values(String value1, String value2) { + value1(value1); + value2(value2); + return this; + } + + // ------------------------------------------------------------------------- + // Constructors + // ------------------------------------------------------------------------- + + /** + * Create a detached SessionStateRecord + */ + public SessionStateRecord() { + super(SessionState.SESSION_STATE); + } + + /** + * Create a detached, initialised SessionStateRecord + */ + public SessionStateRecord(String key, String sql) { + super(SessionState.SESSION_STATE); + + setValue(0, key); + setValue(1, sql); + } +} diff --git a/jooq-spring/src/main/java/com/baeldung/jooq/introduction/db/information_schema/tables/records/SessionsRecord.java b/jooq-spring/src/main/java/com/baeldung/jooq/introduction/db/information_schema/tables/records/SessionsRecord.java new file mode 100644 index 0000000000..13853116b4 --- /dev/null +++ b/jooq-spring/src/main/java/com/baeldung/jooq/introduction/db/information_schema/tables/records/SessionsRecord.java @@ -0,0 +1,324 @@ +/** + * This class is generated by jOOQ + */ +package com.baeldung.jooq.introduction.db.information_schema.tables.records; + + +import com.baeldung.jooq.introduction.db.information_schema.tables.Sessions; + +import javax.annotation.Generated; + +import org.jooq.Field; +import org.jooq.Record6; +import org.jooq.Row6; +import org.jooq.impl.TableRecordImpl; + + +/** + * This class is generated by jOOQ. + */ +@Generated( + value = { + "http://www.jooq.org", + "jOOQ version:3.7.3" + }, + comments = "This class is generated by jOOQ" +) +@SuppressWarnings({ "all", "unchecked", "rawtypes" }) +public class SessionsRecord extends TableRecordImpl implements Record6 { + + private static final long serialVersionUID = -457271018; + + /** + * Setter for INFORMATION_SCHEMA.SESSIONS.ID. + */ + public void setId(Integer value) { + setValue(0, value); + } + + /** + * Getter for INFORMATION_SCHEMA.SESSIONS.ID. + */ + public Integer getId() { + return (Integer) getValue(0); + } + + /** + * Setter for INFORMATION_SCHEMA.SESSIONS.USER_NAME. + */ + public void setUserName(String value) { + setValue(1, value); + } + + /** + * Getter for INFORMATION_SCHEMA.SESSIONS.USER_NAME. + */ + public String getUserName() { + return (String) getValue(1); + } + + /** + * Setter for INFORMATION_SCHEMA.SESSIONS.SESSION_START. + */ + public void setSessionStart(String value) { + setValue(2, value); + } + + /** + * Getter for INFORMATION_SCHEMA.SESSIONS.SESSION_START. + */ + public String getSessionStart() { + return (String) getValue(2); + } + + /** + * Setter for INFORMATION_SCHEMA.SESSIONS.STATEMENT. + */ + public void setStatement(String value) { + setValue(3, value); + } + + /** + * Getter for INFORMATION_SCHEMA.SESSIONS.STATEMENT. + */ + public String getStatement() { + return (String) getValue(3); + } + + /** + * Setter for INFORMATION_SCHEMA.SESSIONS.STATEMENT_START. + */ + public void setStatementStart(String value) { + setValue(4, value); + } + + /** + * Getter for INFORMATION_SCHEMA.SESSIONS.STATEMENT_START. + */ + public String getStatementStart() { + return (String) getValue(4); + } + + /** + * Setter for INFORMATION_SCHEMA.SESSIONS.CONTAINS_UNCOMMITTED. + */ + public void setContainsUncommitted(String value) { + setValue(5, value); + } + + /** + * Getter for INFORMATION_SCHEMA.SESSIONS.CONTAINS_UNCOMMITTED. + */ + public String getContainsUncommitted() { + return (String) getValue(5); + } + + // ------------------------------------------------------------------------- + // Record6 type implementation + // ------------------------------------------------------------------------- + + /** + * {@inheritDoc} + */ + @Override + public Row6 fieldsRow() { + return (Row6) super.fieldsRow(); + } + + /** + * {@inheritDoc} + */ + @Override + public Row6 valuesRow() { + return (Row6) super.valuesRow(); + } + + /** + * {@inheritDoc} + */ + @Override + public Field field1() { + return Sessions.SESSIONS.ID; + } + + /** + * {@inheritDoc} + */ + @Override + public Field field2() { + return Sessions.SESSIONS.USER_NAME; + } + + /** + * {@inheritDoc} + */ + @Override + public Field field3() { + return Sessions.SESSIONS.SESSION_START; + } + + /** + * {@inheritDoc} + */ + @Override + public Field field4() { + return Sessions.SESSIONS.STATEMENT; + } + + /** + * {@inheritDoc} + */ + @Override + public Field field5() { + return Sessions.SESSIONS.STATEMENT_START; + } + + /** + * {@inheritDoc} + */ + @Override + public Field field6() { + return Sessions.SESSIONS.CONTAINS_UNCOMMITTED; + } + + /** + * {@inheritDoc} + */ + @Override + public Integer value1() { + return getId(); + } + + /** + * {@inheritDoc} + */ + @Override + public String value2() { + return getUserName(); + } + + /** + * {@inheritDoc} + */ + @Override + public String value3() { + return getSessionStart(); + } + + /** + * {@inheritDoc} + */ + @Override + public String value4() { + return getStatement(); + } + + /** + * {@inheritDoc} + */ + @Override + public String value5() { + return getStatementStart(); + } + + /** + * {@inheritDoc} + */ + @Override + public String value6() { + return getContainsUncommitted(); + } + + /** + * {@inheritDoc} + */ + @Override + public SessionsRecord value1(Integer value) { + setId(value); + return this; + } + + /** + * {@inheritDoc} + */ + @Override + public SessionsRecord value2(String value) { + setUserName(value); + return this; + } + + /** + * {@inheritDoc} + */ + @Override + public SessionsRecord value3(String value) { + setSessionStart(value); + return this; + } + + /** + * {@inheritDoc} + */ + @Override + public SessionsRecord value4(String value) { + setStatement(value); + return this; + } + + /** + * {@inheritDoc} + */ + @Override + public SessionsRecord value5(String value) { + setStatementStart(value); + return this; + } + + /** + * {@inheritDoc} + */ + @Override + public SessionsRecord value6(String value) { + setContainsUncommitted(value); + return this; + } + + /** + * {@inheritDoc} + */ + @Override + public SessionsRecord values(Integer value1, String value2, String value3, String value4, String value5, String value6) { + value1(value1); + value2(value2); + value3(value3); + value4(value4); + value5(value5); + value6(value6); + return this; + } + + // ------------------------------------------------------------------------- + // Constructors + // ------------------------------------------------------------------------- + + /** + * Create a detached SessionsRecord + */ + public SessionsRecord() { + super(Sessions.SESSIONS); + } + + /** + * Create a detached, initialised SessionsRecord + */ + public SessionsRecord(Integer id, String userName, String sessionStart, String statement, String statementStart, String containsUncommitted) { + super(Sessions.SESSIONS); + + setValue(0, id); + setValue(1, userName); + setValue(2, sessionStart); + setValue(3, statement); + setValue(4, statementStart); + setValue(5, containsUncommitted); + } +} diff --git a/jooq-spring/src/main/java/com/baeldung/jooq/introduction/db/information_schema/tables/records/SettingsRecord.java b/jooq-spring/src/main/java/com/baeldung/jooq/introduction/db/information_schema/tables/records/SettingsRecord.java new file mode 100644 index 0000000000..e5f096c510 --- /dev/null +++ b/jooq-spring/src/main/java/com/baeldung/jooq/introduction/db/information_schema/tables/records/SettingsRecord.java @@ -0,0 +1,160 @@ +/** + * This class is generated by jOOQ + */ +package com.baeldung.jooq.introduction.db.information_schema.tables.records; + + +import com.baeldung.jooq.introduction.db.information_schema.tables.Settings; + +import javax.annotation.Generated; + +import org.jooq.Field; +import org.jooq.Record2; +import org.jooq.Row2; +import org.jooq.impl.TableRecordImpl; + + +/** + * This class is generated by jOOQ. + */ +@Generated( + value = { + "http://www.jooq.org", + "jOOQ version:3.7.3" + }, + comments = "This class is generated by jOOQ" +) +@SuppressWarnings({ "all", "unchecked", "rawtypes" }) +public class SettingsRecord extends TableRecordImpl implements Record2 { + + private static final long serialVersionUID = -1656452632; + + /** + * Setter for INFORMATION_SCHEMA.SETTINGS.NAME. + */ + public void setName(String value) { + setValue(0, value); + } + + /** + * Getter for INFORMATION_SCHEMA.SETTINGS.NAME. + */ + public String getName() { + return (String) getValue(0); + } + + /** + * Setter for INFORMATION_SCHEMA.SETTINGS.VALUE. + */ + public void setValue(String value) { + setValue(1, value); + } + + /** + * Getter for INFORMATION_SCHEMA.SETTINGS.VALUE. + */ + public String getValue() { + return (String) getValue(1); + } + + // ------------------------------------------------------------------------- + // Record2 type implementation + // ------------------------------------------------------------------------- + + /** + * {@inheritDoc} + */ + @Override + public Row2 fieldsRow() { + return (Row2) super.fieldsRow(); + } + + /** + * {@inheritDoc} + */ + @Override + public Row2 valuesRow() { + return (Row2) super.valuesRow(); + } + + /** + * {@inheritDoc} + */ + @Override + public Field field1() { + return Settings.SETTINGS.NAME; + } + + /** + * {@inheritDoc} + */ + @Override + public Field field2() { + return Settings.SETTINGS.VALUE; + } + + /** + * {@inheritDoc} + */ + @Override + public String value1() { + return getName(); + } + + /** + * {@inheritDoc} + */ + @Override + public String value2() { + return getValue(); + } + + /** + * {@inheritDoc} + */ + @Override + public SettingsRecord value1(String value) { + setName(value); + return this; + } + + /** + * {@inheritDoc} + */ + @Override + public SettingsRecord value2(String value) { + setValue(value); + return this; + } + + /** + * {@inheritDoc} + */ + @Override + public SettingsRecord values(String value1, String value2) { + value1(value1); + value2(value2); + return this; + } + + // ------------------------------------------------------------------------- + // Constructors + // ------------------------------------------------------------------------- + + /** + * Create a detached SettingsRecord + */ + public SettingsRecord() { + super(Settings.SETTINGS); + } + + /** + * Create a detached, initialised SettingsRecord + */ + public SettingsRecord(String name, String value) { + super(Settings.SETTINGS); + + setValue(0, name); + setValue(1, value); + } +} diff --git a/jooq-spring/src/main/java/com/baeldung/jooq/introduction/db/information_schema/tables/records/TablePrivilegesRecord.java b/jooq-spring/src/main/java/com/baeldung/jooq/introduction/db/information_schema/tables/records/TablePrivilegesRecord.java new file mode 100644 index 0000000000..5b2beca1f0 --- /dev/null +++ b/jooq-spring/src/main/java/com/baeldung/jooq/introduction/db/information_schema/tables/records/TablePrivilegesRecord.java @@ -0,0 +1,365 @@ +/** + * This class is generated by jOOQ + */ +package com.baeldung.jooq.introduction.db.information_schema.tables.records; + + +import com.baeldung.jooq.introduction.db.information_schema.tables.TablePrivileges; + +import javax.annotation.Generated; + +import org.jooq.Field; +import org.jooq.Record7; +import org.jooq.Row7; +import org.jooq.impl.TableRecordImpl; + + +/** + * This class is generated by jOOQ. + */ +@Generated( + value = { + "http://www.jooq.org", + "jOOQ version:3.7.3" + }, + comments = "This class is generated by jOOQ" +) +@SuppressWarnings({ "all", "unchecked", "rawtypes" }) +public class TablePrivilegesRecord extends TableRecordImpl implements Record7 { + + private static final long serialVersionUID = 1595034957; + + /** + * Setter for INFORMATION_SCHEMA.TABLE_PRIVILEGES.GRANTOR. + */ + public void setGrantor(String value) { + setValue(0, value); + } + + /** + * Getter for INFORMATION_SCHEMA.TABLE_PRIVILEGES.GRANTOR. + */ + public String getGrantor() { + return (String) getValue(0); + } + + /** + * Setter for INFORMATION_SCHEMA.TABLE_PRIVILEGES.GRANTEE. + */ + public void setGrantee(String value) { + setValue(1, value); + } + + /** + * Getter for INFORMATION_SCHEMA.TABLE_PRIVILEGES.GRANTEE. + */ + public String getGrantee() { + return (String) getValue(1); + } + + /** + * Setter for INFORMATION_SCHEMA.TABLE_PRIVILEGES.TABLE_CATALOG. + */ + public void setTableCatalog(String value) { + setValue(2, value); + } + + /** + * Getter for INFORMATION_SCHEMA.TABLE_PRIVILEGES.TABLE_CATALOG. + */ + public String getTableCatalog() { + return (String) getValue(2); + } + + /** + * Setter for INFORMATION_SCHEMA.TABLE_PRIVILEGES.TABLE_SCHEMA. + */ + public void setTableSchema(String value) { + setValue(3, value); + } + + /** + * Getter for INFORMATION_SCHEMA.TABLE_PRIVILEGES.TABLE_SCHEMA. + */ + public String getTableSchema() { + return (String) getValue(3); + } + + /** + * Setter for INFORMATION_SCHEMA.TABLE_PRIVILEGES.TABLE_NAME. + */ + public void setTableName(String value) { + setValue(4, value); + } + + /** + * Getter for INFORMATION_SCHEMA.TABLE_PRIVILEGES.TABLE_NAME. + */ + public String getTableName() { + return (String) getValue(4); + } + + /** + * Setter for INFORMATION_SCHEMA.TABLE_PRIVILEGES.PRIVILEGE_TYPE. + */ + public void setPrivilegeType(String value) { + setValue(5, value); + } + + /** + * Getter for INFORMATION_SCHEMA.TABLE_PRIVILEGES.PRIVILEGE_TYPE. + */ + public String getPrivilegeType() { + return (String) getValue(5); + } + + /** + * Setter for INFORMATION_SCHEMA.TABLE_PRIVILEGES.IS_GRANTABLE. + */ + public void setIsGrantable(String value) { + setValue(6, value); + } + + /** + * Getter for INFORMATION_SCHEMA.TABLE_PRIVILEGES.IS_GRANTABLE. + */ + public String getIsGrantable() { + return (String) getValue(6); + } + + // ------------------------------------------------------------------------- + // Record7 type implementation + // ------------------------------------------------------------------------- + + /** + * {@inheritDoc} + */ + @Override + public Row7 fieldsRow() { + return (Row7) super.fieldsRow(); + } + + /** + * {@inheritDoc} + */ + @Override + public Row7 valuesRow() { + return (Row7) super.valuesRow(); + } + + /** + * {@inheritDoc} + */ + @Override + public Field field1() { + return TablePrivileges.TABLE_PRIVILEGES.GRANTOR; + } + + /** + * {@inheritDoc} + */ + @Override + public Field field2() { + return TablePrivileges.TABLE_PRIVILEGES.GRANTEE; + } + + /** + * {@inheritDoc} + */ + @Override + public Field field3() { + return TablePrivileges.TABLE_PRIVILEGES.TABLE_CATALOG; + } + + /** + * {@inheritDoc} + */ + @Override + public Field field4() { + return TablePrivileges.TABLE_PRIVILEGES.TABLE_SCHEMA; + } + + /** + * {@inheritDoc} + */ + @Override + public Field field5() { + return TablePrivileges.TABLE_PRIVILEGES.TABLE_NAME; + } + + /** + * {@inheritDoc} + */ + @Override + public Field field6() { + return TablePrivileges.TABLE_PRIVILEGES.PRIVILEGE_TYPE; + } + + /** + * {@inheritDoc} + */ + @Override + public Field field7() { + return TablePrivileges.TABLE_PRIVILEGES.IS_GRANTABLE; + } + + /** + * {@inheritDoc} + */ + @Override + public String value1() { + return getGrantor(); + } + + /** + * {@inheritDoc} + */ + @Override + public String value2() { + return getGrantee(); + } + + /** + * {@inheritDoc} + */ + @Override + public String value3() { + return getTableCatalog(); + } + + /** + * {@inheritDoc} + */ + @Override + public String value4() { + return getTableSchema(); + } + + /** + * {@inheritDoc} + */ + @Override + public String value5() { + return getTableName(); + } + + /** + * {@inheritDoc} + */ + @Override + public String value6() { + return getPrivilegeType(); + } + + /** + * {@inheritDoc} + */ + @Override + public String value7() { + return getIsGrantable(); + } + + /** + * {@inheritDoc} + */ + @Override + public TablePrivilegesRecord value1(String value) { + setGrantor(value); + return this; + } + + /** + * {@inheritDoc} + */ + @Override + public TablePrivilegesRecord value2(String value) { + setGrantee(value); + return this; + } + + /** + * {@inheritDoc} + */ + @Override + public TablePrivilegesRecord value3(String value) { + setTableCatalog(value); + return this; + } + + /** + * {@inheritDoc} + */ + @Override + public TablePrivilegesRecord value4(String value) { + setTableSchema(value); + return this; + } + + /** + * {@inheritDoc} + */ + @Override + public TablePrivilegesRecord value5(String value) { + setTableName(value); + return this; + } + + /** + * {@inheritDoc} + */ + @Override + public TablePrivilegesRecord value6(String value) { + setPrivilegeType(value); + return this; + } + + /** + * {@inheritDoc} + */ + @Override + public TablePrivilegesRecord value7(String value) { + setIsGrantable(value); + return this; + } + + /** + * {@inheritDoc} + */ + @Override + public TablePrivilegesRecord values(String value1, String value2, String value3, String value4, String value5, String value6, String value7) { + value1(value1); + value2(value2); + value3(value3); + value4(value4); + value5(value5); + value6(value6); + value7(value7); + return this; + } + + // ------------------------------------------------------------------------- + // Constructors + // ------------------------------------------------------------------------- + + /** + * Create a detached TablePrivilegesRecord + */ + public TablePrivilegesRecord() { + super(TablePrivileges.TABLE_PRIVILEGES); + } + + /** + * Create a detached, initialised TablePrivilegesRecord + */ + public TablePrivilegesRecord(String grantor, String grantee, String tableCatalog, String tableSchema, String tableName, String privilegeType, String isGrantable) { + super(TablePrivileges.TABLE_PRIVILEGES); + + setValue(0, grantor); + setValue(1, grantee); + setValue(2, tableCatalog); + setValue(3, tableSchema); + setValue(4, tableName); + setValue(5, privilegeType); + setValue(6, isGrantable); + } +} diff --git a/jooq-spring/src/main/java/com/baeldung/jooq/introduction/db/information_schema/tables/records/TableTypesRecord.java b/jooq-spring/src/main/java/com/baeldung/jooq/introduction/db/information_schema/tables/records/TableTypesRecord.java new file mode 100644 index 0000000000..3d7eebdfff --- /dev/null +++ b/jooq-spring/src/main/java/com/baeldung/jooq/introduction/db/information_schema/tables/records/TableTypesRecord.java @@ -0,0 +1,119 @@ +/** + * This class is generated by jOOQ + */ +package com.baeldung.jooq.introduction.db.information_schema.tables.records; + + +import com.baeldung.jooq.introduction.db.information_schema.tables.TableTypes; + +import javax.annotation.Generated; + +import org.jooq.Field; +import org.jooq.Record1; +import org.jooq.Row1; +import org.jooq.impl.TableRecordImpl; + + +/** + * This class is generated by jOOQ. + */ +@Generated( + value = { + "http://www.jooq.org", + "jOOQ version:3.7.3" + }, + comments = "This class is generated by jOOQ" +) +@SuppressWarnings({ "all", "unchecked", "rawtypes" }) +public class TableTypesRecord extends TableRecordImpl implements Record1 { + + private static final long serialVersionUID = -645264739; + + /** + * Setter for INFORMATION_SCHEMA.TABLE_TYPES.TYPE. + */ + public void setType(String value) { + setValue(0, value); + } + + /** + * Getter for INFORMATION_SCHEMA.TABLE_TYPES.TYPE. + */ + public String getType() { + return (String) getValue(0); + } + + // ------------------------------------------------------------------------- + // Record1 type implementation + // ------------------------------------------------------------------------- + + /** + * {@inheritDoc} + */ + @Override + public Row1 fieldsRow() { + return (Row1) super.fieldsRow(); + } + + /** + * {@inheritDoc} + */ + @Override + public Row1 valuesRow() { + return (Row1) super.valuesRow(); + } + + /** + * {@inheritDoc} + */ + @Override + public Field field1() { + return TableTypes.TABLE_TYPES.TYPE; + } + + /** + * {@inheritDoc} + */ + @Override + public String value1() { + return getType(); + } + + /** + * {@inheritDoc} + */ + @Override + public TableTypesRecord value1(String value) { + setType(value); + return this; + } + + /** + * {@inheritDoc} + */ + @Override + public TableTypesRecord values(String value1) { + value1(value1); + return this; + } + + // ------------------------------------------------------------------------- + // Constructors + // ------------------------------------------------------------------------- + + /** + * Create a detached TableTypesRecord + */ + public TableTypesRecord() { + super(TableTypes.TABLE_TYPES); + } + + /** + * Create a detached, initialised TableTypesRecord + */ + public TableTypesRecord(String type) { + super(TableTypes.TABLE_TYPES); + + setValue(0, type); + } +} diff --git a/jooq-spring/src/main/java/com/baeldung/jooq/introduction/db/information_schema/tables/records/TablesRecord.java b/jooq-spring/src/main/java/com/baeldung/jooq/introduction/db/information_schema/tables/records/TablesRecord.java new file mode 100644 index 0000000000..9542830be7 --- /dev/null +++ b/jooq-spring/src/main/java/com/baeldung/jooq/introduction/db/information_schema/tables/records/TablesRecord.java @@ -0,0 +1,570 @@ +/** + * This class is generated by jOOQ + */ +package com.baeldung.jooq.introduction.db.information_schema.tables.records; + + +import com.baeldung.jooq.introduction.db.information_schema.tables.Tables; + +import javax.annotation.Generated; + +import org.jooq.Field; +import org.jooq.Record12; +import org.jooq.Row12; +import org.jooq.impl.TableRecordImpl; + + +/** + * This class is generated by jOOQ. + */ +@Generated( + value = { + "http://www.jooq.org", + "jOOQ version:3.7.3" + }, + comments = "This class is generated by jOOQ" +) +@SuppressWarnings({ "all", "unchecked", "rawtypes" }) +public class TablesRecord extends TableRecordImpl implements Record12 { + + private static final long serialVersionUID = 850052084; + + /** + * Setter for INFORMATION_SCHEMA.TABLES.TABLE_CATALOG. + */ + public void setTableCatalog(String value) { + setValue(0, value); + } + + /** + * Getter for INFORMATION_SCHEMA.TABLES.TABLE_CATALOG. + */ + public String getTableCatalog() { + return (String) getValue(0); + } + + /** + * Setter for INFORMATION_SCHEMA.TABLES.TABLE_SCHEMA. + */ + public void setTableSchema(String value) { + setValue(1, value); + } + + /** + * Getter for INFORMATION_SCHEMA.TABLES.TABLE_SCHEMA. + */ + public String getTableSchema() { + return (String) getValue(1); + } + + /** + * Setter for INFORMATION_SCHEMA.TABLES.TABLE_NAME. + */ + public void setTableName(String value) { + setValue(2, value); + } + + /** + * Getter for INFORMATION_SCHEMA.TABLES.TABLE_NAME. + */ + public String getTableName() { + return (String) getValue(2); + } + + /** + * Setter for INFORMATION_SCHEMA.TABLES.TABLE_TYPE. + */ + public void setTableType(String value) { + setValue(3, value); + } + + /** + * Getter for INFORMATION_SCHEMA.TABLES.TABLE_TYPE. + */ + public String getTableType() { + return (String) getValue(3); + } + + /** + * Setter for INFORMATION_SCHEMA.TABLES.STORAGE_TYPE. + */ + public void setStorageType(String value) { + setValue(4, value); + } + + /** + * Getter for INFORMATION_SCHEMA.TABLES.STORAGE_TYPE. + */ + public String getStorageType() { + return (String) getValue(4); + } + + /** + * Setter for INFORMATION_SCHEMA.TABLES.SQL. + */ + public void setSql(String value) { + setValue(5, value); + } + + /** + * Getter for INFORMATION_SCHEMA.TABLES.SQL. + */ + public String getSql() { + return (String) getValue(5); + } + + /** + * Setter for INFORMATION_SCHEMA.TABLES.REMARKS. + */ + public void setRemarks(String value) { + setValue(6, value); + } + + /** + * Getter for INFORMATION_SCHEMA.TABLES.REMARKS. + */ + public String getRemarks() { + return (String) getValue(6); + } + + /** + * Setter for INFORMATION_SCHEMA.TABLES.LAST_MODIFICATION. + */ + public void setLastModification(Long value) { + setValue(7, value); + } + + /** + * Getter for INFORMATION_SCHEMA.TABLES.LAST_MODIFICATION. + */ + public Long getLastModification() { + return (Long) getValue(7); + } + + /** + * Setter for INFORMATION_SCHEMA.TABLES.ID. + */ + public void setId(Integer value) { + setValue(8, value); + } + + /** + * Getter for INFORMATION_SCHEMA.TABLES.ID. + */ + public Integer getId() { + return (Integer) getValue(8); + } + + /** + * Setter for INFORMATION_SCHEMA.TABLES.TYPE_NAME. + */ + public void setTypeName(String value) { + setValue(9, value); + } + + /** + * Getter for INFORMATION_SCHEMA.TABLES.TYPE_NAME. + */ + public String getTypeName() { + return (String) getValue(9); + } + + /** + * Setter for INFORMATION_SCHEMA.TABLES.TABLE_CLASS. + */ + public void setTableClass(String value) { + setValue(10, value); + } + + /** + * Getter for INFORMATION_SCHEMA.TABLES.TABLE_CLASS. + */ + public String getTableClass() { + return (String) getValue(10); + } + + /** + * Setter for INFORMATION_SCHEMA.TABLES.ROW_COUNT_ESTIMATE. + */ + public void setRowCountEstimate(Long value) { + setValue(11, value); + } + + /** + * Getter for INFORMATION_SCHEMA.TABLES.ROW_COUNT_ESTIMATE. + */ + public Long getRowCountEstimate() { + return (Long) getValue(11); + } + + // ------------------------------------------------------------------------- + // Record12 type implementation + // ------------------------------------------------------------------------- + + /** + * {@inheritDoc} + */ + @Override + public Row12 fieldsRow() { + return (Row12) super.fieldsRow(); + } + + /** + * {@inheritDoc} + */ + @Override + public Row12 valuesRow() { + return (Row12) super.valuesRow(); + } + + /** + * {@inheritDoc} + */ + @Override + public Field field1() { + return Tables.TABLES.TABLE_CATALOG; + } + + /** + * {@inheritDoc} + */ + @Override + public Field field2() { + return Tables.TABLES.TABLE_SCHEMA; + } + + /** + * {@inheritDoc} + */ + @Override + public Field field3() { + return Tables.TABLES.TABLE_NAME; + } + + /** + * {@inheritDoc} + */ + @Override + public Field field4() { + return Tables.TABLES.TABLE_TYPE; + } + + /** + * {@inheritDoc} + */ + @Override + public Field field5() { + return Tables.TABLES.STORAGE_TYPE; + } + + /** + * {@inheritDoc} + */ + @Override + public Field field6() { + return Tables.TABLES.SQL; + } + + /** + * {@inheritDoc} + */ + @Override + public Field field7() { + return Tables.TABLES.REMARKS; + } + + /** + * {@inheritDoc} + */ + @Override + public Field field8() { + return Tables.TABLES.LAST_MODIFICATION; + } + + /** + * {@inheritDoc} + */ + @Override + public Field field9() { + return Tables.TABLES.ID; + } + + /** + * {@inheritDoc} + */ + @Override + public Field field10() { + return Tables.TABLES.TYPE_NAME; + } + + /** + * {@inheritDoc} + */ + @Override + public Field field11() { + return Tables.TABLES.TABLE_CLASS; + } + + /** + * {@inheritDoc} + */ + @Override + public Field field12() { + return Tables.TABLES.ROW_COUNT_ESTIMATE; + } + + /** + * {@inheritDoc} + */ + @Override + public String value1() { + return getTableCatalog(); + } + + /** + * {@inheritDoc} + */ + @Override + public String value2() { + return getTableSchema(); + } + + /** + * {@inheritDoc} + */ + @Override + public String value3() { + return getTableName(); + } + + /** + * {@inheritDoc} + */ + @Override + public String value4() { + return getTableType(); + } + + /** + * {@inheritDoc} + */ + @Override + public String value5() { + return getStorageType(); + } + + /** + * {@inheritDoc} + */ + @Override + public String value6() { + return getSql(); + } + + /** + * {@inheritDoc} + */ + @Override + public String value7() { + return getRemarks(); + } + + /** + * {@inheritDoc} + */ + @Override + public Long value8() { + return getLastModification(); + } + + /** + * {@inheritDoc} + */ + @Override + public Integer value9() { + return getId(); + } + + /** + * {@inheritDoc} + */ + @Override + public String value10() { + return getTypeName(); + } + + /** + * {@inheritDoc} + */ + @Override + public String value11() { + return getTableClass(); + } + + /** + * {@inheritDoc} + */ + @Override + public Long value12() { + return getRowCountEstimate(); + } + + /** + * {@inheritDoc} + */ + @Override + public TablesRecord value1(String value) { + setTableCatalog(value); + return this; + } + + /** + * {@inheritDoc} + */ + @Override + public TablesRecord value2(String value) { + setTableSchema(value); + return this; + } + + /** + * {@inheritDoc} + */ + @Override + public TablesRecord value3(String value) { + setTableName(value); + return this; + } + + /** + * {@inheritDoc} + */ + @Override + public TablesRecord value4(String value) { + setTableType(value); + return this; + } + + /** + * {@inheritDoc} + */ + @Override + public TablesRecord value5(String value) { + setStorageType(value); + return this; + } + + /** + * {@inheritDoc} + */ + @Override + public TablesRecord value6(String value) { + setSql(value); + return this; + } + + /** + * {@inheritDoc} + */ + @Override + public TablesRecord value7(String value) { + setRemarks(value); + return this; + } + + /** + * {@inheritDoc} + */ + @Override + public TablesRecord value8(Long value) { + setLastModification(value); + return this; + } + + /** + * {@inheritDoc} + */ + @Override + public TablesRecord value9(Integer value) { + setId(value); + return this; + } + + /** + * {@inheritDoc} + */ + @Override + public TablesRecord value10(String value) { + setTypeName(value); + return this; + } + + /** + * {@inheritDoc} + */ + @Override + public TablesRecord value11(String value) { + setTableClass(value); + return this; + } + + /** + * {@inheritDoc} + */ + @Override + public TablesRecord value12(Long value) { + setRowCountEstimate(value); + return this; + } + + /** + * {@inheritDoc} + */ + @Override + public TablesRecord values(String value1, String value2, String value3, String value4, String value5, String value6, String value7, Long value8, Integer value9, String value10, String value11, Long value12) { + value1(value1); + value2(value2); + value3(value3); + value4(value4); + value5(value5); + value6(value6); + value7(value7); + value8(value8); + value9(value9); + value10(value10); + value11(value11); + value12(value12); + return this; + } + + // ------------------------------------------------------------------------- + // Constructors + // ------------------------------------------------------------------------- + + /** + * Create a detached TablesRecord + */ + public TablesRecord() { + super(Tables.TABLES); + } + + /** + * Create a detached, initialised TablesRecord + */ + public TablesRecord(String tableCatalog, String tableSchema, String tableName, String tableType, String storageType, String sql, String remarks, Long lastModification, Integer id, String typeName, String tableClass, Long rowCountEstimate) { + super(Tables.TABLES); + + setValue(0, tableCatalog); + setValue(1, tableSchema); + setValue(2, tableName); + setValue(3, tableType); + setValue(4, storageType); + setValue(5, sql); + setValue(6, remarks); + setValue(7, lastModification); + setValue(8, id); + setValue(9, typeName); + setValue(10, tableClass); + setValue(11, rowCountEstimate); + } +} diff --git a/jooq-spring/src/main/java/com/baeldung/jooq/introduction/db/information_schema/tables/records/TriggersRecord.java b/jooq-spring/src/main/java/com/baeldung/jooq/introduction/db/information_schema/tables/records/TriggersRecord.java new file mode 100644 index 0000000000..f0f019e127 --- /dev/null +++ b/jooq-spring/src/main/java/com/baeldung/jooq/introduction/db/information_schema/tables/records/TriggersRecord.java @@ -0,0 +1,652 @@ +/** + * This class is generated by jOOQ + */ +package com.baeldung.jooq.introduction.db.information_schema.tables.records; + + +import com.baeldung.jooq.introduction.db.information_schema.tables.Triggers; + +import javax.annotation.Generated; + +import org.jooq.Field; +import org.jooq.Record14; +import org.jooq.Row14; +import org.jooq.impl.TableRecordImpl; + + +/** + * This class is generated by jOOQ. + */ +@Generated( + value = { + "http://www.jooq.org", + "jOOQ version:3.7.3" + }, + comments = "This class is generated by jOOQ" +) +@SuppressWarnings({ "all", "unchecked", "rawtypes" }) +public class TriggersRecord extends TableRecordImpl implements Record14 { + + private static final long serialVersionUID = 344875511; + + /** + * Setter for INFORMATION_SCHEMA.TRIGGERS.TRIGGER_CATALOG. + */ + public void setTriggerCatalog(String value) { + setValue(0, value); + } + + /** + * Getter for INFORMATION_SCHEMA.TRIGGERS.TRIGGER_CATALOG. + */ + public String getTriggerCatalog() { + return (String) getValue(0); + } + + /** + * Setter for INFORMATION_SCHEMA.TRIGGERS.TRIGGER_SCHEMA. + */ + public void setTriggerSchema(String value) { + setValue(1, value); + } + + /** + * Getter for INFORMATION_SCHEMA.TRIGGERS.TRIGGER_SCHEMA. + */ + public String getTriggerSchema() { + return (String) getValue(1); + } + + /** + * Setter for INFORMATION_SCHEMA.TRIGGERS.TRIGGER_NAME. + */ + public void setTriggerName(String value) { + setValue(2, value); + } + + /** + * Getter for INFORMATION_SCHEMA.TRIGGERS.TRIGGER_NAME. + */ + public String getTriggerName() { + return (String) getValue(2); + } + + /** + * Setter for INFORMATION_SCHEMA.TRIGGERS.TRIGGER_TYPE. + */ + public void setTriggerType(String value) { + setValue(3, value); + } + + /** + * Getter for INFORMATION_SCHEMA.TRIGGERS.TRIGGER_TYPE. + */ + public String getTriggerType() { + return (String) getValue(3); + } + + /** + * Setter for INFORMATION_SCHEMA.TRIGGERS.TABLE_CATALOG. + */ + public void setTableCatalog(String value) { + setValue(4, value); + } + + /** + * Getter for INFORMATION_SCHEMA.TRIGGERS.TABLE_CATALOG. + */ + public String getTableCatalog() { + return (String) getValue(4); + } + + /** + * Setter for INFORMATION_SCHEMA.TRIGGERS.TABLE_SCHEMA. + */ + public void setTableSchema(String value) { + setValue(5, value); + } + + /** + * Getter for INFORMATION_SCHEMA.TRIGGERS.TABLE_SCHEMA. + */ + public String getTableSchema() { + return (String) getValue(5); + } + + /** + * Setter for INFORMATION_SCHEMA.TRIGGERS.TABLE_NAME. + */ + public void setTableName(String value) { + setValue(6, value); + } + + /** + * Getter for INFORMATION_SCHEMA.TRIGGERS.TABLE_NAME. + */ + public String getTableName() { + return (String) getValue(6); + } + + /** + * Setter for INFORMATION_SCHEMA.TRIGGERS.BEFORE. + */ + public void setBefore(Boolean value) { + setValue(7, value); + } + + /** + * Getter for INFORMATION_SCHEMA.TRIGGERS.BEFORE. + */ + public Boolean getBefore() { + return (Boolean) getValue(7); + } + + /** + * Setter for INFORMATION_SCHEMA.TRIGGERS.JAVA_CLASS. + */ + public void setJavaClass(String value) { + setValue(8, value); + } + + /** + * Getter for INFORMATION_SCHEMA.TRIGGERS.JAVA_CLASS. + */ + public String getJavaClass() { + return (String) getValue(8); + } + + /** + * Setter for INFORMATION_SCHEMA.TRIGGERS.QUEUE_SIZE. + */ + public void setQueueSize(Integer value) { + setValue(9, value); + } + + /** + * Getter for INFORMATION_SCHEMA.TRIGGERS.QUEUE_SIZE. + */ + public Integer getQueueSize() { + return (Integer) getValue(9); + } + + /** + * Setter for INFORMATION_SCHEMA.TRIGGERS.NO_WAIT. + */ + public void setNoWait(Boolean value) { + setValue(10, value); + } + + /** + * Getter for INFORMATION_SCHEMA.TRIGGERS.NO_WAIT. + */ + public Boolean getNoWait() { + return (Boolean) getValue(10); + } + + /** + * Setter for INFORMATION_SCHEMA.TRIGGERS.REMARKS. + */ + public void setRemarks(String value) { + setValue(11, value); + } + + /** + * Getter for INFORMATION_SCHEMA.TRIGGERS.REMARKS. + */ + public String getRemarks() { + return (String) getValue(11); + } + + /** + * Setter for INFORMATION_SCHEMA.TRIGGERS.SQL. + */ + public void setSql(String value) { + setValue(12, value); + } + + /** + * Getter for INFORMATION_SCHEMA.TRIGGERS.SQL. + */ + public String getSql() { + return (String) getValue(12); + } + + /** + * Setter for INFORMATION_SCHEMA.TRIGGERS.ID. + */ + public void setId(Integer value) { + setValue(13, value); + } + + /** + * Getter for INFORMATION_SCHEMA.TRIGGERS.ID. + */ + public Integer getId() { + return (Integer) getValue(13); + } + + // ------------------------------------------------------------------------- + // Record14 type implementation + // ------------------------------------------------------------------------- + + /** + * {@inheritDoc} + */ + @Override + public Row14 fieldsRow() { + return (Row14) super.fieldsRow(); + } + + /** + * {@inheritDoc} + */ + @Override + public Row14 valuesRow() { + return (Row14) super.valuesRow(); + } + + /** + * {@inheritDoc} + */ + @Override + public Field field1() { + return Triggers.TRIGGERS.TRIGGER_CATALOG; + } + + /** + * {@inheritDoc} + */ + @Override + public Field field2() { + return Triggers.TRIGGERS.TRIGGER_SCHEMA; + } + + /** + * {@inheritDoc} + */ + @Override + public Field field3() { + return Triggers.TRIGGERS.TRIGGER_NAME; + } + + /** + * {@inheritDoc} + */ + @Override + public Field field4() { + return Triggers.TRIGGERS.TRIGGER_TYPE; + } + + /** + * {@inheritDoc} + */ + @Override + public Field field5() { + return Triggers.TRIGGERS.TABLE_CATALOG; + } + + /** + * {@inheritDoc} + */ + @Override + public Field field6() { + return Triggers.TRIGGERS.TABLE_SCHEMA; + } + + /** + * {@inheritDoc} + */ + @Override + public Field field7() { + return Triggers.TRIGGERS.TABLE_NAME; + } + + /** + * {@inheritDoc} + */ + @Override + public Field field8() { + return Triggers.TRIGGERS.BEFORE; + } + + /** + * {@inheritDoc} + */ + @Override + public Field field9() { + return Triggers.TRIGGERS.JAVA_CLASS; + } + + /** + * {@inheritDoc} + */ + @Override + public Field field10() { + return Triggers.TRIGGERS.QUEUE_SIZE; + } + + /** + * {@inheritDoc} + */ + @Override + public Field field11() { + return Triggers.TRIGGERS.NO_WAIT; + } + + /** + * {@inheritDoc} + */ + @Override + public Field field12() { + return Triggers.TRIGGERS.REMARKS; + } + + /** + * {@inheritDoc} + */ + @Override + public Field field13() { + return Triggers.TRIGGERS.SQL; + } + + /** + * {@inheritDoc} + */ + @Override + public Field field14() { + return Triggers.TRIGGERS.ID; + } + + /** + * {@inheritDoc} + */ + @Override + public String value1() { + return getTriggerCatalog(); + } + + /** + * {@inheritDoc} + */ + @Override + public String value2() { + return getTriggerSchema(); + } + + /** + * {@inheritDoc} + */ + @Override + public String value3() { + return getTriggerName(); + } + + /** + * {@inheritDoc} + */ + @Override + public String value4() { + return getTriggerType(); + } + + /** + * {@inheritDoc} + */ + @Override + public String value5() { + return getTableCatalog(); + } + + /** + * {@inheritDoc} + */ + @Override + public String value6() { + return getTableSchema(); + } + + /** + * {@inheritDoc} + */ + @Override + public String value7() { + return getTableName(); + } + + /** + * {@inheritDoc} + */ + @Override + public Boolean value8() { + return getBefore(); + } + + /** + * {@inheritDoc} + */ + @Override + public String value9() { + return getJavaClass(); + } + + /** + * {@inheritDoc} + */ + @Override + public Integer value10() { + return getQueueSize(); + } + + /** + * {@inheritDoc} + */ + @Override + public Boolean value11() { + return getNoWait(); + } + + /** + * {@inheritDoc} + */ + @Override + public String value12() { + return getRemarks(); + } + + /** + * {@inheritDoc} + */ + @Override + public String value13() { + return getSql(); + } + + /** + * {@inheritDoc} + */ + @Override + public Integer value14() { + return getId(); + } + + /** + * {@inheritDoc} + */ + @Override + public TriggersRecord value1(String value) { + setTriggerCatalog(value); + return this; + } + + /** + * {@inheritDoc} + */ + @Override + public TriggersRecord value2(String value) { + setTriggerSchema(value); + return this; + } + + /** + * {@inheritDoc} + */ + @Override + public TriggersRecord value3(String value) { + setTriggerName(value); + return this; + } + + /** + * {@inheritDoc} + */ + @Override + public TriggersRecord value4(String value) { + setTriggerType(value); + return this; + } + + /** + * {@inheritDoc} + */ + @Override + public TriggersRecord value5(String value) { + setTableCatalog(value); + return this; + } + + /** + * {@inheritDoc} + */ + @Override + public TriggersRecord value6(String value) { + setTableSchema(value); + return this; + } + + /** + * {@inheritDoc} + */ + @Override + public TriggersRecord value7(String value) { + setTableName(value); + return this; + } + + /** + * {@inheritDoc} + */ + @Override + public TriggersRecord value8(Boolean value) { + setBefore(value); + return this; + } + + /** + * {@inheritDoc} + */ + @Override + public TriggersRecord value9(String value) { + setJavaClass(value); + return this; + } + + /** + * {@inheritDoc} + */ + @Override + public TriggersRecord value10(Integer value) { + setQueueSize(value); + return this; + } + + /** + * {@inheritDoc} + */ + @Override + public TriggersRecord value11(Boolean value) { + setNoWait(value); + return this; + } + + /** + * {@inheritDoc} + */ + @Override + public TriggersRecord value12(String value) { + setRemarks(value); + return this; + } + + /** + * {@inheritDoc} + */ + @Override + public TriggersRecord value13(String value) { + setSql(value); + return this; + } + + /** + * {@inheritDoc} + */ + @Override + public TriggersRecord value14(Integer value) { + setId(value); + return this; + } + + /** + * {@inheritDoc} + */ + @Override + public TriggersRecord values(String value1, String value2, String value3, String value4, String value5, String value6, String value7, Boolean value8, String value9, Integer value10, Boolean value11, String value12, String value13, Integer value14) { + value1(value1); + value2(value2); + value3(value3); + value4(value4); + value5(value5); + value6(value6); + value7(value7); + value8(value8); + value9(value9); + value10(value10); + value11(value11); + value12(value12); + value13(value13); + value14(value14); + return this; + } + + // ------------------------------------------------------------------------- + // Constructors + // ------------------------------------------------------------------------- + + /** + * Create a detached TriggersRecord + */ + public TriggersRecord() { + super(Triggers.TRIGGERS); + } + + /** + * Create a detached, initialised TriggersRecord + */ + public TriggersRecord(String triggerCatalog, String triggerSchema, String triggerName, String triggerType, String tableCatalog, String tableSchema, String tableName, Boolean before, String javaClass, Integer queueSize, Boolean noWait, String remarks, String sql, Integer id) { + super(Triggers.TRIGGERS); + + setValue(0, triggerCatalog); + setValue(1, triggerSchema); + setValue(2, triggerName); + setValue(3, triggerType); + setValue(4, tableCatalog); + setValue(5, tableSchema); + setValue(6, tableName); + setValue(7, before); + setValue(8, javaClass); + setValue(9, queueSize); + setValue(10, noWait); + setValue(11, remarks); + setValue(12, sql); + setValue(13, id); + } +} diff --git a/jooq-spring/src/main/java/com/baeldung/jooq/introduction/db/information_schema/tables/records/TypeInfoRecord.java b/jooq-spring/src/main/java/com/baeldung/jooq/introduction/db/information_schema/tables/records/TypeInfoRecord.java new file mode 100644 index 0000000000..af3eaee83f --- /dev/null +++ b/jooq-spring/src/main/java/com/baeldung/jooq/introduction/db/information_schema/tables/records/TypeInfoRecord.java @@ -0,0 +1,652 @@ +/** + * This class is generated by jOOQ + */ +package com.baeldung.jooq.introduction.db.information_schema.tables.records; + + +import com.baeldung.jooq.introduction.db.information_schema.tables.TypeInfo; + +import javax.annotation.Generated; + +import org.jooq.Field; +import org.jooq.Record14; +import org.jooq.Row14; +import org.jooq.impl.TableRecordImpl; + + +/** + * This class is generated by jOOQ. + */ +@Generated( + value = { + "http://www.jooq.org", + "jOOQ version:3.7.3" + }, + comments = "This class is generated by jOOQ" +) +@SuppressWarnings({ "all", "unchecked", "rawtypes" }) +public class TypeInfoRecord extends TableRecordImpl implements Record14 { + + private static final long serialVersionUID = -1463889309; + + /** + * Setter for INFORMATION_SCHEMA.TYPE_INFO.TYPE_NAME. + */ + public void setTypeName(String value) { + setValue(0, value); + } + + /** + * Getter for INFORMATION_SCHEMA.TYPE_INFO.TYPE_NAME. + */ + public String getTypeName() { + return (String) getValue(0); + } + + /** + * Setter for INFORMATION_SCHEMA.TYPE_INFO.DATA_TYPE. + */ + public void setDataType(Integer value) { + setValue(1, value); + } + + /** + * Getter for INFORMATION_SCHEMA.TYPE_INFO.DATA_TYPE. + */ + public Integer getDataType() { + return (Integer) getValue(1); + } + + /** + * Setter for INFORMATION_SCHEMA.TYPE_INFO.PRECISION. + */ + public void setPrecision(Integer value) { + setValue(2, value); + } + + /** + * Getter for INFORMATION_SCHEMA.TYPE_INFO.PRECISION. + */ + public Integer getPrecision() { + return (Integer) getValue(2); + } + + /** + * Setter for INFORMATION_SCHEMA.TYPE_INFO.PREFIX. + */ + public void setPrefix(String value) { + setValue(3, value); + } + + /** + * Getter for INFORMATION_SCHEMA.TYPE_INFO.PREFIX. + */ + public String getPrefix() { + return (String) getValue(3); + } + + /** + * Setter for INFORMATION_SCHEMA.TYPE_INFO.SUFFIX. + */ + public void setSuffix(String value) { + setValue(4, value); + } + + /** + * Getter for INFORMATION_SCHEMA.TYPE_INFO.SUFFIX. + */ + public String getSuffix() { + return (String) getValue(4); + } + + /** + * Setter for INFORMATION_SCHEMA.TYPE_INFO.PARAMS. + */ + public void setParams(String value) { + setValue(5, value); + } + + /** + * Getter for INFORMATION_SCHEMA.TYPE_INFO.PARAMS. + */ + public String getParams() { + return (String) getValue(5); + } + + /** + * Setter for INFORMATION_SCHEMA.TYPE_INFO.AUTO_INCREMENT. + */ + public void setAutoIncrement(Boolean value) { + setValue(6, value); + } + + /** + * Getter for INFORMATION_SCHEMA.TYPE_INFO.AUTO_INCREMENT. + */ + public Boolean getAutoIncrement() { + return (Boolean) getValue(6); + } + + /** + * Setter for INFORMATION_SCHEMA.TYPE_INFO.MINIMUM_SCALE. + */ + public void setMinimumScale(Short value) { + setValue(7, value); + } + + /** + * Getter for INFORMATION_SCHEMA.TYPE_INFO.MINIMUM_SCALE. + */ + public Short getMinimumScale() { + return (Short) getValue(7); + } + + /** + * Setter for INFORMATION_SCHEMA.TYPE_INFO.MAXIMUM_SCALE. + */ + public void setMaximumScale(Short value) { + setValue(8, value); + } + + /** + * Getter for INFORMATION_SCHEMA.TYPE_INFO.MAXIMUM_SCALE. + */ + public Short getMaximumScale() { + return (Short) getValue(8); + } + + /** + * Setter for INFORMATION_SCHEMA.TYPE_INFO.RADIX. + */ + public void setRadix(Integer value) { + setValue(9, value); + } + + /** + * Getter for INFORMATION_SCHEMA.TYPE_INFO.RADIX. + */ + public Integer getRadix() { + return (Integer) getValue(9); + } + + /** + * Setter for INFORMATION_SCHEMA.TYPE_INFO.POS. + */ + public void setPos(Integer value) { + setValue(10, value); + } + + /** + * Getter for INFORMATION_SCHEMA.TYPE_INFO.POS. + */ + public Integer getPos() { + return (Integer) getValue(10); + } + + /** + * Setter for INFORMATION_SCHEMA.TYPE_INFO.CASE_SENSITIVE. + */ + public void setCaseSensitive(Boolean value) { + setValue(11, value); + } + + /** + * Getter for INFORMATION_SCHEMA.TYPE_INFO.CASE_SENSITIVE. + */ + public Boolean getCaseSensitive() { + return (Boolean) getValue(11); + } + + /** + * Setter for INFORMATION_SCHEMA.TYPE_INFO.NULLABLE. + */ + public void setNullable(Short value) { + setValue(12, value); + } + + /** + * Getter for INFORMATION_SCHEMA.TYPE_INFO.NULLABLE. + */ + public Short getNullable() { + return (Short) getValue(12); + } + + /** + * Setter for INFORMATION_SCHEMA.TYPE_INFO.SEARCHABLE. + */ + public void setSearchable(Short value) { + setValue(13, value); + } + + /** + * Getter for INFORMATION_SCHEMA.TYPE_INFO.SEARCHABLE. + */ + public Short getSearchable() { + return (Short) getValue(13); + } + + // ------------------------------------------------------------------------- + // Record14 type implementation + // ------------------------------------------------------------------------- + + /** + * {@inheritDoc} + */ + @Override + public Row14 fieldsRow() { + return (Row14) super.fieldsRow(); + } + + /** + * {@inheritDoc} + */ + @Override + public Row14 valuesRow() { + return (Row14) super.valuesRow(); + } + + /** + * {@inheritDoc} + */ + @Override + public Field field1() { + return TypeInfo.TYPE_INFO.TYPE_NAME; + } + + /** + * {@inheritDoc} + */ + @Override + public Field field2() { + return TypeInfo.TYPE_INFO.DATA_TYPE; + } + + /** + * {@inheritDoc} + */ + @Override + public Field field3() { + return TypeInfo.TYPE_INFO.PRECISION; + } + + /** + * {@inheritDoc} + */ + @Override + public Field field4() { + return TypeInfo.TYPE_INFO.PREFIX; + } + + /** + * {@inheritDoc} + */ + @Override + public Field field5() { + return TypeInfo.TYPE_INFO.SUFFIX; + } + + /** + * {@inheritDoc} + */ + @Override + public Field field6() { + return TypeInfo.TYPE_INFO.PARAMS; + } + + /** + * {@inheritDoc} + */ + @Override + public Field field7() { + return TypeInfo.TYPE_INFO.AUTO_INCREMENT; + } + + /** + * {@inheritDoc} + */ + @Override + public Field field8() { + return TypeInfo.TYPE_INFO.MINIMUM_SCALE; + } + + /** + * {@inheritDoc} + */ + @Override + public Field field9() { + return TypeInfo.TYPE_INFO.MAXIMUM_SCALE; + } + + /** + * {@inheritDoc} + */ + @Override + public Field field10() { + return TypeInfo.TYPE_INFO.RADIX; + } + + /** + * {@inheritDoc} + */ + @Override + public Field field11() { + return TypeInfo.TYPE_INFO.POS; + } + + /** + * {@inheritDoc} + */ + @Override + public Field field12() { + return TypeInfo.TYPE_INFO.CASE_SENSITIVE; + } + + /** + * {@inheritDoc} + */ + @Override + public Field field13() { + return TypeInfo.TYPE_INFO.NULLABLE; + } + + /** + * {@inheritDoc} + */ + @Override + public Field field14() { + return TypeInfo.TYPE_INFO.SEARCHABLE; + } + + /** + * {@inheritDoc} + */ + @Override + public String value1() { + return getTypeName(); + } + + /** + * {@inheritDoc} + */ + @Override + public Integer value2() { + return getDataType(); + } + + /** + * {@inheritDoc} + */ + @Override + public Integer value3() { + return getPrecision(); + } + + /** + * {@inheritDoc} + */ + @Override + public String value4() { + return getPrefix(); + } + + /** + * {@inheritDoc} + */ + @Override + public String value5() { + return getSuffix(); + } + + /** + * {@inheritDoc} + */ + @Override + public String value6() { + return getParams(); + } + + /** + * {@inheritDoc} + */ + @Override + public Boolean value7() { + return getAutoIncrement(); + } + + /** + * {@inheritDoc} + */ + @Override + public Short value8() { + return getMinimumScale(); + } + + /** + * {@inheritDoc} + */ + @Override + public Short value9() { + return getMaximumScale(); + } + + /** + * {@inheritDoc} + */ + @Override + public Integer value10() { + return getRadix(); + } + + /** + * {@inheritDoc} + */ + @Override + public Integer value11() { + return getPos(); + } + + /** + * {@inheritDoc} + */ + @Override + public Boolean value12() { + return getCaseSensitive(); + } + + /** + * {@inheritDoc} + */ + @Override + public Short value13() { + return getNullable(); + } + + /** + * {@inheritDoc} + */ + @Override + public Short value14() { + return getSearchable(); + } + + /** + * {@inheritDoc} + */ + @Override + public TypeInfoRecord value1(String value) { + setTypeName(value); + return this; + } + + /** + * {@inheritDoc} + */ + @Override + public TypeInfoRecord value2(Integer value) { + setDataType(value); + return this; + } + + /** + * {@inheritDoc} + */ + @Override + public TypeInfoRecord value3(Integer value) { + setPrecision(value); + return this; + } + + /** + * {@inheritDoc} + */ + @Override + public TypeInfoRecord value4(String value) { + setPrefix(value); + return this; + } + + /** + * {@inheritDoc} + */ + @Override + public TypeInfoRecord value5(String value) { + setSuffix(value); + return this; + } + + /** + * {@inheritDoc} + */ + @Override + public TypeInfoRecord value6(String value) { + setParams(value); + return this; + } + + /** + * {@inheritDoc} + */ + @Override + public TypeInfoRecord value7(Boolean value) { + setAutoIncrement(value); + return this; + } + + /** + * {@inheritDoc} + */ + @Override + public TypeInfoRecord value8(Short value) { + setMinimumScale(value); + return this; + } + + /** + * {@inheritDoc} + */ + @Override + public TypeInfoRecord value9(Short value) { + setMaximumScale(value); + return this; + } + + /** + * {@inheritDoc} + */ + @Override + public TypeInfoRecord value10(Integer value) { + setRadix(value); + return this; + } + + /** + * {@inheritDoc} + */ + @Override + public TypeInfoRecord value11(Integer value) { + setPos(value); + return this; + } + + /** + * {@inheritDoc} + */ + @Override + public TypeInfoRecord value12(Boolean value) { + setCaseSensitive(value); + return this; + } + + /** + * {@inheritDoc} + */ + @Override + public TypeInfoRecord value13(Short value) { + setNullable(value); + return this; + } + + /** + * {@inheritDoc} + */ + @Override + public TypeInfoRecord value14(Short value) { + setSearchable(value); + return this; + } + + /** + * {@inheritDoc} + */ + @Override + public TypeInfoRecord values(String value1, Integer value2, Integer value3, String value4, String value5, String value6, Boolean value7, Short value8, Short value9, Integer value10, Integer value11, Boolean value12, Short value13, Short value14) { + value1(value1); + value2(value2); + value3(value3); + value4(value4); + value5(value5); + value6(value6); + value7(value7); + value8(value8); + value9(value9); + value10(value10); + value11(value11); + value12(value12); + value13(value13); + value14(value14); + return this; + } + + // ------------------------------------------------------------------------- + // Constructors + // ------------------------------------------------------------------------- + + /** + * Create a detached TypeInfoRecord + */ + public TypeInfoRecord() { + super(TypeInfo.TYPE_INFO); + } + + /** + * Create a detached, initialised TypeInfoRecord + */ + public TypeInfoRecord(String typeName, Integer dataType, Integer precision, String prefix, String suffix, String params, Boolean autoIncrement, Short minimumScale, Short maximumScale, Integer radix, Integer pos, Boolean caseSensitive, Short nullable, Short searchable) { + super(TypeInfo.TYPE_INFO); + + setValue(0, typeName); + setValue(1, dataType); + setValue(2, precision); + setValue(3, prefix); + setValue(4, suffix); + setValue(5, params); + setValue(6, autoIncrement); + setValue(7, minimumScale); + setValue(8, maximumScale); + setValue(9, radix); + setValue(10, pos); + setValue(11, caseSensitive); + setValue(12, nullable); + setValue(13, searchable); + } +} diff --git a/jooq-spring/src/main/java/com/baeldung/jooq/introduction/db/information_schema/tables/records/UsersRecord.java b/jooq-spring/src/main/java/com/baeldung/jooq/introduction/db/information_schema/tables/records/UsersRecord.java new file mode 100644 index 0000000000..934b0484c8 --- /dev/null +++ b/jooq-spring/src/main/java/com/baeldung/jooq/introduction/db/information_schema/tables/records/UsersRecord.java @@ -0,0 +1,242 @@ +/** + * This class is generated by jOOQ + */ +package com.baeldung.jooq.introduction.db.information_schema.tables.records; + + +import com.baeldung.jooq.introduction.db.information_schema.tables.Users; + +import javax.annotation.Generated; + +import org.jooq.Field; +import org.jooq.Record4; +import org.jooq.Row4; +import org.jooq.impl.TableRecordImpl; + + +/** + * This class is generated by jOOQ. + */ +@Generated( + value = { + "http://www.jooq.org", + "jOOQ version:3.7.3" + }, + comments = "This class is generated by jOOQ" +) +@SuppressWarnings({ "all", "unchecked", "rawtypes" }) +public class UsersRecord extends TableRecordImpl implements Record4 { + + private static final long serialVersionUID = -592508392; + + /** + * Setter for INFORMATION_SCHEMA.USERS.NAME. + */ + public void setName(String value) { + setValue(0, value); + } + + /** + * Getter for INFORMATION_SCHEMA.USERS.NAME. + */ + public String getName() { + return (String) getValue(0); + } + + /** + * Setter for INFORMATION_SCHEMA.USERS.ADMIN. + */ + public void setAdmin(String value) { + setValue(1, value); + } + + /** + * Getter for INFORMATION_SCHEMA.USERS.ADMIN. + */ + public String getAdmin() { + return (String) getValue(1); + } + + /** + * Setter for INFORMATION_SCHEMA.USERS.REMARKS. + */ + public void setRemarks(String value) { + setValue(2, value); + } + + /** + * Getter for INFORMATION_SCHEMA.USERS.REMARKS. + */ + public String getRemarks() { + return (String) getValue(2); + } + + /** + * Setter for INFORMATION_SCHEMA.USERS.ID. + */ + public void setId(Integer value) { + setValue(3, value); + } + + /** + * Getter for INFORMATION_SCHEMA.USERS.ID. + */ + public Integer getId() { + return (Integer) getValue(3); + } + + // ------------------------------------------------------------------------- + // Record4 type implementation + // ------------------------------------------------------------------------- + + /** + * {@inheritDoc} + */ + @Override + public Row4 fieldsRow() { + return (Row4) super.fieldsRow(); + } + + /** + * {@inheritDoc} + */ + @Override + public Row4 valuesRow() { + return (Row4) super.valuesRow(); + } + + /** + * {@inheritDoc} + */ + @Override + public Field field1() { + return Users.USERS.NAME; + } + + /** + * {@inheritDoc} + */ + @Override + public Field field2() { + return Users.USERS.ADMIN; + } + + /** + * {@inheritDoc} + */ + @Override + public Field field3() { + return Users.USERS.REMARKS; + } + + /** + * {@inheritDoc} + */ + @Override + public Field field4() { + return Users.USERS.ID; + } + + /** + * {@inheritDoc} + */ + @Override + public String value1() { + return getName(); + } + + /** + * {@inheritDoc} + */ + @Override + public String value2() { + return getAdmin(); + } + + /** + * {@inheritDoc} + */ + @Override + public String value3() { + return getRemarks(); + } + + /** + * {@inheritDoc} + */ + @Override + public Integer value4() { + return getId(); + } + + /** + * {@inheritDoc} + */ + @Override + public UsersRecord value1(String value) { + setName(value); + return this; + } + + /** + * {@inheritDoc} + */ + @Override + public UsersRecord value2(String value) { + setAdmin(value); + return this; + } + + /** + * {@inheritDoc} + */ + @Override + public UsersRecord value3(String value) { + setRemarks(value); + return this; + } + + /** + * {@inheritDoc} + */ + @Override + public UsersRecord value4(Integer value) { + setId(value); + return this; + } + + /** + * {@inheritDoc} + */ + @Override + public UsersRecord values(String value1, String value2, String value3, Integer value4) { + value1(value1); + value2(value2); + value3(value3); + value4(value4); + return this; + } + + // ------------------------------------------------------------------------- + // Constructors + // ------------------------------------------------------------------------- + + /** + * Create a detached UsersRecord + */ + public UsersRecord() { + super(Users.USERS); + } + + /** + * Create a detached, initialised UsersRecord + */ + public UsersRecord(String name, String admin, String remarks, Integer id) { + super(Users.USERS); + + setValue(0, name); + setValue(1, admin); + setValue(2, remarks); + setValue(3, id); + } +} diff --git a/jooq-spring/src/main/java/com/baeldung/jooq/introduction/db/information_schema/tables/records/ViewsRecord.java b/jooq-spring/src/main/java/com/baeldung/jooq/introduction/db/information_schema/tables/records/ViewsRecord.java new file mode 100644 index 0000000000..4b2d66bd73 --- /dev/null +++ b/jooq-spring/src/main/java/com/baeldung/jooq/introduction/db/information_schema/tables/records/ViewsRecord.java @@ -0,0 +1,447 @@ +/** + * This class is generated by jOOQ + */ +package com.baeldung.jooq.introduction.db.information_schema.tables.records; + + +import com.baeldung.jooq.introduction.db.information_schema.tables.Views; + +import javax.annotation.Generated; + +import org.jooq.Field; +import org.jooq.Record9; +import org.jooq.Row9; +import org.jooq.impl.TableRecordImpl; + + +/** + * This class is generated by jOOQ. + */ +@Generated( + value = { + "http://www.jooq.org", + "jOOQ version:3.7.3" + }, + comments = "This class is generated by jOOQ" +) +@SuppressWarnings({ "all", "unchecked", "rawtypes" }) +public class ViewsRecord extends TableRecordImpl implements Record9 { + + private static final long serialVersionUID = -1380031738; + + /** + * Setter for INFORMATION_SCHEMA.VIEWS.TABLE_CATALOG. + */ + public void setTableCatalog(String value) { + setValue(0, value); + } + + /** + * Getter for INFORMATION_SCHEMA.VIEWS.TABLE_CATALOG. + */ + public String getTableCatalog() { + return (String) getValue(0); + } + + /** + * Setter for INFORMATION_SCHEMA.VIEWS.TABLE_SCHEMA. + */ + public void setTableSchema(String value) { + setValue(1, value); + } + + /** + * Getter for INFORMATION_SCHEMA.VIEWS.TABLE_SCHEMA. + */ + public String getTableSchema() { + return (String) getValue(1); + } + + /** + * Setter for INFORMATION_SCHEMA.VIEWS.TABLE_NAME. + */ + public void setTableName(String value) { + setValue(2, value); + } + + /** + * Getter for INFORMATION_SCHEMA.VIEWS.TABLE_NAME. + */ + public String getTableName() { + return (String) getValue(2); + } + + /** + * Setter for INFORMATION_SCHEMA.VIEWS.VIEW_DEFINITION. + */ + public void setViewDefinition(String value) { + setValue(3, value); + } + + /** + * Getter for INFORMATION_SCHEMA.VIEWS.VIEW_DEFINITION. + */ + public String getViewDefinition() { + return (String) getValue(3); + } + + /** + * Setter for INFORMATION_SCHEMA.VIEWS.CHECK_OPTION. + */ + public void setCheckOption(String value) { + setValue(4, value); + } + + /** + * Getter for INFORMATION_SCHEMA.VIEWS.CHECK_OPTION. + */ + public String getCheckOption() { + return (String) getValue(4); + } + + /** + * Setter for INFORMATION_SCHEMA.VIEWS.IS_UPDATABLE. + */ + public void setIsUpdatable(String value) { + setValue(5, value); + } + + /** + * Getter for INFORMATION_SCHEMA.VIEWS.IS_UPDATABLE. + */ + public String getIsUpdatable() { + return (String) getValue(5); + } + + /** + * Setter for INFORMATION_SCHEMA.VIEWS.STATUS. + */ + public void setStatus(String value) { + setValue(6, value); + } + + /** + * Getter for INFORMATION_SCHEMA.VIEWS.STATUS. + */ + public String getStatus() { + return (String) getValue(6); + } + + /** + * Setter for INFORMATION_SCHEMA.VIEWS.REMARKS. + */ + public void setRemarks(String value) { + setValue(7, value); + } + + /** + * Getter for INFORMATION_SCHEMA.VIEWS.REMARKS. + */ + public String getRemarks() { + return (String) getValue(7); + } + + /** + * Setter for INFORMATION_SCHEMA.VIEWS.ID. + */ + public void setId(Integer value) { + setValue(8, value); + } + + /** + * Getter for INFORMATION_SCHEMA.VIEWS.ID. + */ + public Integer getId() { + return (Integer) getValue(8); + } + + // ------------------------------------------------------------------------- + // Record9 type implementation + // ------------------------------------------------------------------------- + + /** + * {@inheritDoc} + */ + @Override + public Row9 fieldsRow() { + return (Row9) super.fieldsRow(); + } + + /** + * {@inheritDoc} + */ + @Override + public Row9 valuesRow() { + return (Row9) super.valuesRow(); + } + + /** + * {@inheritDoc} + */ + @Override + public Field field1() { + return Views.VIEWS.TABLE_CATALOG; + } + + /** + * {@inheritDoc} + */ + @Override + public Field field2() { + return Views.VIEWS.TABLE_SCHEMA; + } + + /** + * {@inheritDoc} + */ + @Override + public Field field3() { + return Views.VIEWS.TABLE_NAME; + } + + /** + * {@inheritDoc} + */ + @Override + public Field field4() { + return Views.VIEWS.VIEW_DEFINITION; + } + + /** + * {@inheritDoc} + */ + @Override + public Field field5() { + return Views.VIEWS.CHECK_OPTION; + } + + /** + * {@inheritDoc} + */ + @Override + public Field field6() { + return Views.VIEWS.IS_UPDATABLE; + } + + /** + * {@inheritDoc} + */ + @Override + public Field field7() { + return Views.VIEWS.STATUS; + } + + /** + * {@inheritDoc} + */ + @Override + public Field field8() { + return Views.VIEWS.REMARKS; + } + + /** + * {@inheritDoc} + */ + @Override + public Field field9() { + return Views.VIEWS.ID; + } + + /** + * {@inheritDoc} + */ + @Override + public String value1() { + return getTableCatalog(); + } + + /** + * {@inheritDoc} + */ + @Override + public String value2() { + return getTableSchema(); + } + + /** + * {@inheritDoc} + */ + @Override + public String value3() { + return getTableName(); + } + + /** + * {@inheritDoc} + */ + @Override + public String value4() { + return getViewDefinition(); + } + + /** + * {@inheritDoc} + */ + @Override + public String value5() { + return getCheckOption(); + } + + /** + * {@inheritDoc} + */ + @Override + public String value6() { + return getIsUpdatable(); + } + + /** + * {@inheritDoc} + */ + @Override + public String value7() { + return getStatus(); + } + + /** + * {@inheritDoc} + */ + @Override + public String value8() { + return getRemarks(); + } + + /** + * {@inheritDoc} + */ + @Override + public Integer value9() { + return getId(); + } + + /** + * {@inheritDoc} + */ + @Override + public ViewsRecord value1(String value) { + setTableCatalog(value); + return this; + } + + /** + * {@inheritDoc} + */ + @Override + public ViewsRecord value2(String value) { + setTableSchema(value); + return this; + } + + /** + * {@inheritDoc} + */ + @Override + public ViewsRecord value3(String value) { + setTableName(value); + return this; + } + + /** + * {@inheritDoc} + */ + @Override + public ViewsRecord value4(String value) { + setViewDefinition(value); + return this; + } + + /** + * {@inheritDoc} + */ + @Override + public ViewsRecord value5(String value) { + setCheckOption(value); + return this; + } + + /** + * {@inheritDoc} + */ + @Override + public ViewsRecord value6(String value) { + setIsUpdatable(value); + return this; + } + + /** + * {@inheritDoc} + */ + @Override + public ViewsRecord value7(String value) { + setStatus(value); + return this; + } + + /** + * {@inheritDoc} + */ + @Override + public ViewsRecord value8(String value) { + setRemarks(value); + return this; + } + + /** + * {@inheritDoc} + */ + @Override + public ViewsRecord value9(Integer value) { + setId(value); + return this; + } + + /** + * {@inheritDoc} + */ + @Override + public ViewsRecord values(String value1, String value2, String value3, String value4, String value5, String value6, String value7, String value8, Integer value9) { + value1(value1); + value2(value2); + value3(value3); + value4(value4); + value5(value5); + value6(value6); + value7(value7); + value8(value8); + value9(value9); + return this; + } + + // ------------------------------------------------------------------------- + // Constructors + // ------------------------------------------------------------------------- + + /** + * Create a detached ViewsRecord + */ + public ViewsRecord() { + super(Views.VIEWS); + } + + /** + * Create a detached, initialised ViewsRecord + */ + public ViewsRecord(String tableCatalog, String tableSchema, String tableName, String viewDefinition, String checkOption, String isUpdatable, String status, String remarks, Integer id) { + super(Views.VIEWS); + + setValue(0, tableCatalog); + setValue(1, tableSchema); + setValue(2, tableName); + setValue(3, viewDefinition); + setValue(4, checkOption); + setValue(5, isUpdatable); + setValue(6, status); + setValue(7, remarks); + setValue(8, id); + } +} diff --git a/jooq-spring/src/main/java/com/baeldung/jooq/introduction/db/public_/Keys.java b/jooq-spring/src/main/java/com/baeldung/jooq/introduction/db/public_/Keys.java new file mode 100644 index 0000000000..66656c9bbc --- /dev/null +++ b/jooq-spring/src/main/java/com/baeldung/jooq/introduction/db/public_/Keys.java @@ -0,0 +1,69 @@ +/** + * This class is generated by jOOQ + */ +package com.baeldung.jooq.introduction.db.public_; + + +import com.baeldung.jooq.introduction.db.public_.tables.Author; +import com.baeldung.jooq.introduction.db.public_.tables.AuthorBook; +import com.baeldung.jooq.introduction.db.public_.tables.Book; +import com.baeldung.jooq.introduction.db.public_.tables.records.AuthorBookRecord; +import com.baeldung.jooq.introduction.db.public_.tables.records.AuthorRecord; +import com.baeldung.jooq.introduction.db.public_.tables.records.BookRecord; + +import javax.annotation.Generated; + +import org.jooq.ForeignKey; +import org.jooq.UniqueKey; +import org.jooq.impl.AbstractKeys; + + +/** + * A class modelling foreign key relationships between tables of the PUBLIC + * schema + */ +@Generated( + value = { + "http://www.jooq.org", + "jOOQ version:3.7.3" + }, + comments = "This class is generated by jOOQ" +) +@SuppressWarnings({ "all", "unchecked", "rawtypes" }) +public class Keys { + + // ------------------------------------------------------------------------- + // IDENTITY definitions + // ------------------------------------------------------------------------- + + + // ------------------------------------------------------------------------- + // UNIQUE and PRIMARY KEY definitions + // ------------------------------------------------------------------------- + + public static final UniqueKey CONSTRAINT_7 = UniqueKeys0.CONSTRAINT_7; + public static final UniqueKey CONSTRAINT_1 = UniqueKeys0.CONSTRAINT_1; + public static final UniqueKey CONSTRAINT_A = UniqueKeys0.CONSTRAINT_A; + + // ------------------------------------------------------------------------- + // FOREIGN KEY definitions + // ------------------------------------------------------------------------- + + public static final ForeignKey FK_AB_AUTHOR = ForeignKeys0.FK_AB_AUTHOR; + public static final ForeignKey FK_AB_BOOK = ForeignKeys0.FK_AB_BOOK; + + // ------------------------------------------------------------------------- + // [#1459] distribute members to avoid static initialisers > 64kb + // ------------------------------------------------------------------------- + + private static class UniqueKeys0 extends AbstractKeys { + public static final UniqueKey CONSTRAINT_7 = createUniqueKey(Author.AUTHOR, Author.AUTHOR.ID); + public static final UniqueKey CONSTRAINT_1 = createUniqueKey(Book.BOOK, Book.BOOK.ID); + public static final UniqueKey CONSTRAINT_A = createUniqueKey(AuthorBook.AUTHOR_BOOK, AuthorBook.AUTHOR_BOOK.AUTHOR_ID, AuthorBook.AUTHOR_BOOK.BOOK_ID); + } + + private static class ForeignKeys0 extends AbstractKeys { + public static final ForeignKey FK_AB_AUTHOR = createForeignKey(com.baeldung.jooq.introduction.db.public_.Keys.CONSTRAINT_7, AuthorBook.AUTHOR_BOOK, AuthorBook.AUTHOR_BOOK.AUTHOR_ID); + public static final ForeignKey FK_AB_BOOK = createForeignKey(com.baeldung.jooq.introduction.db.public_.Keys.CONSTRAINT_1, AuthorBook.AUTHOR_BOOK, AuthorBook.AUTHOR_BOOK.BOOK_ID); + } +} diff --git a/jooq-spring/src/main/java/com/baeldung/jooq/introduction/db/public_/Public.java b/jooq-spring/src/main/java/com/baeldung/jooq/introduction/db/public_/Public.java new file mode 100644 index 0000000000..a681123c94 --- /dev/null +++ b/jooq-spring/src/main/java/com/baeldung/jooq/introduction/db/public_/Public.java @@ -0,0 +1,61 @@ +/** + * This class is generated by jOOQ + */ +package com.baeldung.jooq.introduction.db.public_; + + +import com.baeldung.jooq.introduction.db.public_.tables.Author; +import com.baeldung.jooq.introduction.db.public_.tables.AuthorBook; +import com.baeldung.jooq.introduction.db.public_.tables.Book; + +import java.util.ArrayList; +import java.util.Arrays; +import java.util.List; + +import javax.annotation.Generated; + +import org.jooq.Table; +import org.jooq.impl.SchemaImpl; + + +/** + * This class is generated by jOOQ. + */ +@Generated( + value = { + "http://www.jooq.org", + "jOOQ version:3.7.3" + }, + comments = "This class is generated by jOOQ" +) +@SuppressWarnings({ "all", "unchecked", "rawtypes" }) +public class Public extends SchemaImpl { + + private static final long serialVersionUID = 1806497150; + + /** + * The reference instance of PUBLIC + */ + public static final Public PUBLIC = new Public(); + + /** + * No further instances allowed + */ + private Public() { + super("PUBLIC"); + } + + @Override + public final List> getTables() { + List result = new ArrayList(); + result.addAll(getTables0()); + return result; + } + + private final List> getTables0() { + return Arrays.>asList( + Author.AUTHOR, + Book.BOOK, + AuthorBook.AUTHOR_BOOK); + } +} diff --git a/jooq-spring/src/main/java/com/baeldung/jooq/introduction/db/public_/Tables.java b/jooq-spring/src/main/java/com/baeldung/jooq/introduction/db/public_/Tables.java new file mode 100644 index 0000000000..cbdc08b78f --- /dev/null +++ b/jooq-spring/src/main/java/com/baeldung/jooq/introduction/db/public_/Tables.java @@ -0,0 +1,41 @@ +/** + * This class is generated by jOOQ + */ +package com.baeldung.jooq.introduction.db.public_; + + +import com.baeldung.jooq.introduction.db.public_.tables.Author; +import com.baeldung.jooq.introduction.db.public_.tables.AuthorBook; +import com.baeldung.jooq.introduction.db.public_.tables.Book; + +import javax.annotation.Generated; + + +/** + * Convenience access to all tables in PUBLIC + */ +@Generated( + value = { + "http://www.jooq.org", + "jOOQ version:3.7.3" + }, + comments = "This class is generated by jOOQ" +) +@SuppressWarnings({ "all", "unchecked", "rawtypes" }) +public class Tables { + + /** + * The table PUBLIC.AUTHOR + */ + public static final Author AUTHOR = com.baeldung.jooq.introduction.db.public_.tables.Author.AUTHOR; + + /** + * The table PUBLIC.BOOK + */ + public static final Book BOOK = com.baeldung.jooq.introduction.db.public_.tables.Book.BOOK; + + /** + * The table PUBLIC.AUTHOR_BOOK + */ + public static final AuthorBook AUTHOR_BOOK = com.baeldung.jooq.introduction.db.public_.tables.AuthorBook.AUTHOR_BOOK; +} diff --git a/jooq-spring/src/main/java/com/baeldung/jooq/introduction/db/public_/tables/Author.java b/jooq-spring/src/main/java/com/baeldung/jooq/introduction/db/public_/tables/Author.java new file mode 100644 index 0000000000..43d0b4f778 --- /dev/null +++ b/jooq-spring/src/main/java/com/baeldung/jooq/introduction/db/public_/tables/Author.java @@ -0,0 +1,118 @@ +/** + * This class is generated by jOOQ + */ +package com.baeldung.jooq.introduction.db.public_.tables; + + +import com.baeldung.jooq.introduction.db.public_.Keys; +import com.baeldung.jooq.introduction.db.public_.Public; +import com.baeldung.jooq.introduction.db.public_.tables.records.AuthorRecord; + +import java.util.Arrays; +import java.util.List; + +import javax.annotation.Generated; + +import org.jooq.Field; +import org.jooq.Table; +import org.jooq.TableField; +import org.jooq.UniqueKey; +import org.jooq.impl.TableImpl; + + +/** + * This class is generated by jOOQ. + */ +@Generated( + value = { + "http://www.jooq.org", + "jOOQ version:3.7.3" + }, + comments = "This class is generated by jOOQ" +) +@SuppressWarnings({ "all", "unchecked", "rawtypes" }) +public class Author extends TableImpl { + + private static final long serialVersionUID = 1121046490; + + /** + * The reference instance of PUBLIC.AUTHOR + */ + public static final Author AUTHOR = new Author(); + + /** + * The class holding records for this type + */ + @Override + public Class getRecordType() { + return AuthorRecord.class; + } + + /** + * The column PUBLIC.AUTHOR.ID. + */ + public final TableField ID = createField("ID", org.jooq.impl.SQLDataType.INTEGER.nullable(false), this, ""); + + /** + * The column PUBLIC.AUTHOR.FIRST_NAME. + */ + public final TableField FIRST_NAME = createField("FIRST_NAME", org.jooq.impl.SQLDataType.VARCHAR.length(50), this, ""); + + /** + * The column PUBLIC.AUTHOR.LAST_NAME. + */ + public final TableField LAST_NAME = createField("LAST_NAME", org.jooq.impl.SQLDataType.VARCHAR.length(50).nullable(false), this, ""); + + /** + * Create a PUBLIC.AUTHOR table reference + */ + public Author() { + this("AUTHOR", null); + } + + /** + * Create an aliased PUBLIC.AUTHOR table reference + */ + public Author(String alias) { + this(alias, AUTHOR); + } + + private Author(String alias, Table aliased) { + this(alias, aliased, null); + } + + private Author(String alias, Table aliased, Field[] parameters) { + super(alias, Public.PUBLIC, aliased, parameters, ""); + } + + /** + * {@inheritDoc} + */ + @Override + public UniqueKey getPrimaryKey() { + return Keys.CONSTRAINT_7; + } + + /** + * {@inheritDoc} + */ + @Override + public List> getKeys() { + return Arrays.>asList(Keys.CONSTRAINT_7); + } + + /** + * {@inheritDoc} + */ + @Override + public Author as(String alias) { + return new Author(alias, this); + } + + /** + * Rename this table + */ + public Author rename(String name) { + return new Author(name, null); + } +} diff --git a/jooq-spring/src/main/java/com/baeldung/jooq/introduction/db/public_/tables/AuthorBook.java b/jooq-spring/src/main/java/com/baeldung/jooq/introduction/db/public_/tables/AuthorBook.java new file mode 100644 index 0000000000..38a0fe2593 --- /dev/null +++ b/jooq-spring/src/main/java/com/baeldung/jooq/introduction/db/public_/tables/AuthorBook.java @@ -0,0 +1,122 @@ +/** + * This class is generated by jOOQ + */ +package com.baeldung.jooq.introduction.db.public_.tables; + + +import com.baeldung.jooq.introduction.db.public_.Keys; +import com.baeldung.jooq.introduction.db.public_.Public; +import com.baeldung.jooq.introduction.db.public_.tables.records.AuthorBookRecord; + +import java.util.Arrays; +import java.util.List; + +import javax.annotation.Generated; + +import org.jooq.Field; +import org.jooq.ForeignKey; +import org.jooq.Table; +import org.jooq.TableField; +import org.jooq.UniqueKey; +import org.jooq.impl.TableImpl; + + +/** + * This class is generated by jOOQ. + */ +@Generated( + value = { + "http://www.jooq.org", + "jOOQ version:3.7.3" + }, + comments = "This class is generated by jOOQ" +) +@SuppressWarnings({ "all", "unchecked", "rawtypes" }) +public class AuthorBook extends TableImpl { + + private static final long serialVersionUID = -1609247069; + + /** + * The reference instance of PUBLIC.AUTHOR_BOOK + */ + public static final AuthorBook AUTHOR_BOOK = new AuthorBook(); + + /** + * The class holding records for this type + */ + @Override + public Class getRecordType() { + return AuthorBookRecord.class; + } + + /** + * The column PUBLIC.AUTHOR_BOOK.AUTHOR_ID. + */ + public final TableField AUTHOR_ID = createField("AUTHOR_ID", org.jooq.impl.SQLDataType.INTEGER.nullable(false), this, ""); + + /** + * The column PUBLIC.AUTHOR_BOOK.BOOK_ID. + */ + public final TableField BOOK_ID = createField("BOOK_ID", org.jooq.impl.SQLDataType.INTEGER.nullable(false), this, ""); + + /** + * Create a PUBLIC.AUTHOR_BOOK table reference + */ + public AuthorBook() { + this("AUTHOR_BOOK", null); + } + + /** + * Create an aliased PUBLIC.AUTHOR_BOOK table reference + */ + public AuthorBook(String alias) { + this(alias, AUTHOR_BOOK); + } + + private AuthorBook(String alias, Table aliased) { + this(alias, aliased, null); + } + + private AuthorBook(String alias, Table aliased, Field[] parameters) { + super(alias, Public.PUBLIC, aliased, parameters, ""); + } + + /** + * {@inheritDoc} + */ + @Override + public UniqueKey getPrimaryKey() { + return Keys.CONSTRAINT_A; + } + + /** + * {@inheritDoc} + */ + @Override + public List> getKeys() { + return Arrays.>asList(Keys.CONSTRAINT_A); + } + + /** + * {@inheritDoc} + */ + @Override + public List> getReferences() { + return Arrays.>asList(Keys.FK_AB_AUTHOR, Keys.FK_AB_BOOK); + } + + /** + * {@inheritDoc} + */ + @Override + public AuthorBook as(String alias) { + return new AuthorBook(alias, this); + } + + /** + * Rename this table + */ + public AuthorBook rename(String name) { + return new AuthorBook(name, null); + } +} diff --git a/jooq-spring/src/main/java/com/baeldung/jooq/introduction/db/public_/tables/Book.java b/jooq-spring/src/main/java/com/baeldung/jooq/introduction/db/public_/tables/Book.java new file mode 100644 index 0000000000..33b38e1eb5 --- /dev/null +++ b/jooq-spring/src/main/java/com/baeldung/jooq/introduction/db/public_/tables/Book.java @@ -0,0 +1,113 @@ +/** + * This class is generated by jOOQ + */ +package com.baeldung.jooq.introduction.db.public_.tables; + + +import com.baeldung.jooq.introduction.db.public_.Keys; +import com.baeldung.jooq.introduction.db.public_.Public; +import com.baeldung.jooq.introduction.db.public_.tables.records.BookRecord; + +import java.util.Arrays; +import java.util.List; + +import javax.annotation.Generated; + +import org.jooq.Field; +import org.jooq.Table; +import org.jooq.TableField; +import org.jooq.UniqueKey; +import org.jooq.impl.TableImpl; + + +/** + * This class is generated by jOOQ. + */ +@Generated( + value = { + "http://www.jooq.org", + "jOOQ version:3.7.3" + }, + comments = "This class is generated by jOOQ" +) +@SuppressWarnings({ "all", "unchecked", "rawtypes" }) +public class Book extends TableImpl { + + private static final long serialVersionUID = -1685336167; + + /** + * The reference instance of PUBLIC.BOOK + */ + public static final Book BOOK = new Book(); + + /** + * The class holding records for this type + */ + @Override + public Class getRecordType() { + return BookRecord.class; + } + + /** + * The column PUBLIC.BOOK.ID. + */ + public final TableField ID = createField("ID", org.jooq.impl.SQLDataType.INTEGER.nullable(false), this, ""); + + /** + * The column PUBLIC.BOOK.TITLE. + */ + public final TableField TITLE = createField("TITLE", org.jooq.impl.SQLDataType.VARCHAR.length(100).nullable(false), this, ""); + + /** + * Create a PUBLIC.BOOK table reference + */ + public Book() { + this("BOOK", null); + } + + /** + * Create an aliased PUBLIC.BOOK table reference + */ + public Book(String alias) { + this(alias, BOOK); + } + + private Book(String alias, Table aliased) { + this(alias, aliased, null); + } + + private Book(String alias, Table aliased, Field[] parameters) { + super(alias, Public.PUBLIC, aliased, parameters, ""); + } + + /** + * {@inheritDoc} + */ + @Override + public UniqueKey getPrimaryKey() { + return Keys.CONSTRAINT_1; + } + + /** + * {@inheritDoc} + */ + @Override + public List> getKeys() { + return Arrays.>asList(Keys.CONSTRAINT_1); + } + + /** + * {@inheritDoc} + */ + @Override + public Book as(String alias) { + return new Book(alias, this); + } + + /** + * Rename this table + */ + public Book rename(String name) { + return new Book(name, null); + } +} diff --git a/jooq-spring/src/main/java/com/baeldung/jooq/introduction/db/public_/tables/records/AuthorBookRecord.java b/jooq-spring/src/main/java/com/baeldung/jooq/introduction/db/public_/tables/records/AuthorBookRecord.java new file mode 100644 index 0000000000..2e9a07ba4f --- /dev/null +++ b/jooq-spring/src/main/java/com/baeldung/jooq/introduction/db/public_/tables/records/AuthorBookRecord.java @@ -0,0 +1,172 @@ +/** + * This class is generated by jOOQ + */ +package com.baeldung.jooq.introduction.db.public_.tables.records; + + +import com.baeldung.jooq.introduction.db.public_.tables.AuthorBook; + +import javax.annotation.Generated; + +import org.jooq.Field; +import org.jooq.Record2; +import org.jooq.Row2; +import org.jooq.impl.UpdatableRecordImpl; + + +/** + * This class is generated by jOOQ. + */ +@Generated( + value = { + "http://www.jooq.org", + "jOOQ version:3.7.3" + }, + comments = "This class is generated by jOOQ" +) +@SuppressWarnings({ "all", "unchecked", "rawtypes" }) +public class AuthorBookRecord extends UpdatableRecordImpl implements Record2 { + + private static final long serialVersionUID = -1057354033; + + /** + * Setter for PUBLIC.AUTHOR_BOOK.AUTHOR_ID. + */ + public void setAuthorId(Integer value) { + setValue(0, value); + } + + /** + * Getter for PUBLIC.AUTHOR_BOOK.AUTHOR_ID. + */ + public Integer getAuthorId() { + return (Integer) getValue(0); + } + + /** + * Setter for PUBLIC.AUTHOR_BOOK.BOOK_ID. + */ + public void setBookId(Integer value) { + setValue(1, value); + } + + /** + * Getter for PUBLIC.AUTHOR_BOOK.BOOK_ID. + */ + public Integer getBookId() { + return (Integer) getValue(1); + } + + // ------------------------------------------------------------------------- + // Primary key information + // ------------------------------------------------------------------------- + + /** + * {@inheritDoc} + */ + @Override + public Record2 key() { + return (Record2) super.key(); + } + + // ------------------------------------------------------------------------- + // Record2 type implementation + // ------------------------------------------------------------------------- + + /** + * {@inheritDoc} + */ + @Override + public Row2 fieldsRow() { + return (Row2) super.fieldsRow(); + } + + /** + * {@inheritDoc} + */ + @Override + public Row2 valuesRow() { + return (Row2) super.valuesRow(); + } + + /** + * {@inheritDoc} + */ + @Override + public Field field1() { + return AuthorBook.AUTHOR_BOOK.AUTHOR_ID; + } + + /** + * {@inheritDoc} + */ + @Override + public Field field2() { + return AuthorBook.AUTHOR_BOOK.BOOK_ID; + } + + /** + * {@inheritDoc} + */ + @Override + public Integer value1() { + return getAuthorId(); + } + + /** + * {@inheritDoc} + */ + @Override + public Integer value2() { + return getBookId(); + } + + /** + * {@inheritDoc} + */ + @Override + public AuthorBookRecord value1(Integer value) { + setAuthorId(value); + return this; + } + + /** + * {@inheritDoc} + */ + @Override + public AuthorBookRecord value2(Integer value) { + setBookId(value); + return this; + } + + /** + * {@inheritDoc} + */ + @Override + public AuthorBookRecord values(Integer value1, Integer value2) { + value1(value1); + value2(value2); + return this; + } + + // ------------------------------------------------------------------------- + // Constructors + // ------------------------------------------------------------------------- + + /** + * Create a detached AuthorBookRecord + */ + public AuthorBookRecord() { + super(AuthorBook.AUTHOR_BOOK); + } + + /** + * Create a detached, initialised AuthorBookRecord + */ + public AuthorBookRecord(Integer authorId, Integer bookId) { + super(AuthorBook.AUTHOR_BOOK); + + setValue(0, authorId); + setValue(1, bookId); + } +} diff --git a/jooq-spring/src/main/java/com/baeldung/jooq/introduction/db/public_/tables/records/AuthorRecord.java b/jooq-spring/src/main/java/com/baeldung/jooq/introduction/db/public_/tables/records/AuthorRecord.java new file mode 100644 index 0000000000..5d6d88b0c3 --- /dev/null +++ b/jooq-spring/src/main/java/com/baeldung/jooq/introduction/db/public_/tables/records/AuthorRecord.java @@ -0,0 +1,214 @@ +/** + * This class is generated by jOOQ + */ +package com.baeldung.jooq.introduction.db.public_.tables.records; + + +import com.baeldung.jooq.introduction.db.public_.tables.Author; + +import javax.annotation.Generated; + +import org.jooq.Field; +import org.jooq.Record1; +import org.jooq.Record3; +import org.jooq.Row3; +import org.jooq.impl.UpdatableRecordImpl; + + +/** + * This class is generated by jOOQ. + */ +@Generated( + value = { + "http://www.jooq.org", + "jOOQ version:3.7.3" + }, + comments = "This class is generated by jOOQ" +) +@SuppressWarnings({ "all", "unchecked", "rawtypes" }) +public class AuthorRecord extends UpdatableRecordImpl implements Record3 { + + private static final long serialVersionUID = 253757039; + + /** + * Setter for PUBLIC.AUTHOR.ID. + */ + public void setId(Integer value) { + setValue(0, value); + } + + /** + * Getter for PUBLIC.AUTHOR.ID. + */ + public Integer getId() { + return (Integer) getValue(0); + } + + /** + * Setter for PUBLIC.AUTHOR.FIRST_NAME. + */ + public void setFirstName(String value) { + setValue(1, value); + } + + /** + * Getter for PUBLIC.AUTHOR.FIRST_NAME. + */ + public String getFirstName() { + return (String) getValue(1); + } + + /** + * Setter for PUBLIC.AUTHOR.LAST_NAME. + */ + public void setLastName(String value) { + setValue(2, value); + } + + /** + * Getter for PUBLIC.AUTHOR.LAST_NAME. + */ + public String getLastName() { + return (String) getValue(2); + } + + // ------------------------------------------------------------------------- + // Primary key information + // ------------------------------------------------------------------------- + + /** + * {@inheritDoc} + */ + @Override + public Record1 key() { + return (Record1) super.key(); + } + + // ------------------------------------------------------------------------- + // Record3 type implementation + // ------------------------------------------------------------------------- + + /** + * {@inheritDoc} + */ + @Override + public Row3 fieldsRow() { + return (Row3) super.fieldsRow(); + } + + /** + * {@inheritDoc} + */ + @Override + public Row3 valuesRow() { + return (Row3) super.valuesRow(); + } + + /** + * {@inheritDoc} + */ + @Override + public Field field1() { + return Author.AUTHOR.ID; + } + + /** + * {@inheritDoc} + */ + @Override + public Field field2() { + return Author.AUTHOR.FIRST_NAME; + } + + /** + * {@inheritDoc} + */ + @Override + public Field field3() { + return Author.AUTHOR.LAST_NAME; + } + + /** + * {@inheritDoc} + */ + @Override + public Integer value1() { + return getId(); + } + + /** + * {@inheritDoc} + */ + @Override + public String value2() { + return getFirstName(); + } + + /** + * {@inheritDoc} + */ + @Override + public String value3() { + return getLastName(); + } + + /** + * {@inheritDoc} + */ + @Override + public AuthorRecord value1(Integer value) { + setId(value); + return this; + } + + /** + * {@inheritDoc} + */ + @Override + public AuthorRecord value2(String value) { + setFirstName(value); + return this; + } + + /** + * {@inheritDoc} + */ + @Override + public AuthorRecord value3(String value) { + setLastName(value); + return this; + } + + /** + * {@inheritDoc} + */ + @Override + public AuthorRecord values(Integer value1, String value2, String value3) { + value1(value1); + value2(value2); + value3(value3); + return this; + } + + // ------------------------------------------------------------------------- + // Constructors + // ------------------------------------------------------------------------- + + /** + * Create a detached AuthorRecord + */ + public AuthorRecord() { + super(Author.AUTHOR); + } + + /** + * Create a detached, initialised AuthorRecord + */ + public AuthorRecord(Integer id, String firstName, String lastName) { + super(Author.AUTHOR); + + setValue(0, id); + setValue(1, firstName); + setValue(2, lastName); + } +} diff --git a/jooq-spring/src/main/java/com/baeldung/jooq/introduction/db/public_/tables/records/BookRecord.java b/jooq-spring/src/main/java/com/baeldung/jooq/introduction/db/public_/tables/records/BookRecord.java new file mode 100644 index 0000000000..1725dccff0 --- /dev/null +++ b/jooq-spring/src/main/java/com/baeldung/jooq/introduction/db/public_/tables/records/BookRecord.java @@ -0,0 +1,173 @@ +/** + * This class is generated by jOOQ + */ +package com.baeldung.jooq.introduction.db.public_.tables.records; + + +import com.baeldung.jooq.introduction.db.public_.tables.Book; + +import javax.annotation.Generated; + +import org.jooq.Field; +import org.jooq.Record1; +import org.jooq.Record2; +import org.jooq.Row2; +import org.jooq.impl.UpdatableRecordImpl; + + +/** + * This class is generated by jOOQ. + */ +@Generated( + value = { + "http://www.jooq.org", + "jOOQ version:3.7.3" + }, + comments = "This class is generated by jOOQ" +) +@SuppressWarnings({ "all", "unchecked", "rawtypes" }) +public class BookRecord extends UpdatableRecordImpl implements Record2 { + + private static final long serialVersionUID = -434165872; + + /** + * Setter for PUBLIC.BOOK.ID. + */ + public void setId(Integer value) { + setValue(0, value); + } + + /** + * Getter for PUBLIC.BOOK.ID. + */ + public Integer getId() { + return (Integer) getValue(0); + } + + /** + * Setter for PUBLIC.BOOK.TITLE. + */ + public void setTitle(String value) { + setValue(1, value); + } + + /** + * Getter for PUBLIC.BOOK.TITLE. + */ + public String getTitle() { + return (String) getValue(1); + } + + // ------------------------------------------------------------------------- + // Primary key information + // ------------------------------------------------------------------------- + + /** + * {@inheritDoc} + */ + @Override + public Record1 key() { + return (Record1) super.key(); + } + + // ------------------------------------------------------------------------- + // Record2 type implementation + // ------------------------------------------------------------------------- + + /** + * {@inheritDoc} + */ + @Override + public Row2 fieldsRow() { + return (Row2) super.fieldsRow(); + } + + /** + * {@inheritDoc} + */ + @Override + public Row2 valuesRow() { + return (Row2) super.valuesRow(); + } + + /** + * {@inheritDoc} + */ + @Override + public Field field1() { + return Book.BOOK.ID; + } + + /** + * {@inheritDoc} + */ + @Override + public Field field2() { + return Book.BOOK.TITLE; + } + + /** + * {@inheritDoc} + */ + @Override + public Integer value1() { + return getId(); + } + + /** + * {@inheritDoc} + */ + @Override + public String value2() { + return getTitle(); + } + + /** + * {@inheritDoc} + */ + @Override + public BookRecord value1(Integer value) { + setId(value); + return this; + } + + /** + * {@inheritDoc} + */ + @Override + public BookRecord value2(String value) { + setTitle(value); + return this; + } + + /** + * {@inheritDoc} + */ + @Override + public BookRecord values(Integer value1, String value2) { + value1(value1); + value2(value2); + return this; + } + + // ------------------------------------------------------------------------- + // Constructors + // ------------------------------------------------------------------------- + + /** + * Create a detached BookRecord + */ + public BookRecord() { + super(Book.BOOK); + } + + /** + * Create a detached, initialised BookRecord + */ + public BookRecord(Integer id, String title) { + super(Book.BOOK); + + setValue(0, id); + setValue(1, title); + } +} diff --git a/jooq-spring/src/main/resources/application.properties b/jooq-spring/src/main/resources/application.properties new file mode 100644 index 0000000000..2b32da2356 --- /dev/null +++ b/jooq-spring/src/main/resources/application.properties @@ -0,0 +1,3 @@ +spring.datasource.url=jdbc:h2:~/jooq +spring.datasource.username=sa +spring.datasource.password= \ No newline at end of file diff --git a/jooq-spring/src/test/java/com/baeldung/jooq/springboot/Application.java b/jooq-spring/src/test/java/com/baeldung/jooq/springboot/Application.java new file mode 100644 index 0000000000..a52f0a0ef3 --- /dev/null +++ b/jooq-spring/src/test/java/com/baeldung/jooq/springboot/Application.java @@ -0,0 +1,68 @@ +package com.baeldung.jooq.springboot; + +import javax.sql.DataSource; + +import org.jooq.impl.DataSourceConnectionProvider; +import org.jooq.impl.DefaultConfiguration; +import org.jooq.impl.DefaultDSLContext; +import org.jooq.impl.DefaultExecuteListenerProvider; + +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.boot.autoconfigure.SpringBootApplication; +import org.springframework.context.annotation.Bean; +import org.springframework.core.env.Environment; +import org.springframework.jdbc.datasource.DataSourceTransactionManager; +import org.springframework.jdbc.datasource.DriverManagerDataSource; +import org.springframework.jdbc.datasource.TransactionAwareDataSourceProxy; +import org.springframework.transaction.annotation.EnableTransactionManagement; + +import com.baeldung.jooq.introduction.ExceptionTranslator; + +@SpringBootApplication +@EnableTransactionManagement +public class Application { + @Autowired + private Environment environment; + private DataSource dataSource; + + public DataSource dataSource() { + DriverManagerDataSource dataSource = new DriverManagerDataSource(); + + dataSource.setUrl(environment.getRequiredProperty("spring.datasource.url")); + dataSource.setUsername(environment.getRequiredProperty("spring.datasource.username")); + dataSource.setPassword(environment.getRequiredProperty("spring.datasource.password")); + + return dataSource; + } + + @Bean + public TransactionAwareDataSourceProxy transactionAwareDataSource() { + return new TransactionAwareDataSourceProxy(dataSource()); + } + + public DataSourceTransactionManager transactionManager() { + return new DataSourceTransactionManager(dataSource); + } + + @Bean + public DataSourceConnectionProvider connectionProvider() { + return new DataSourceConnectionProvider(transactionAwareDataSource()); + } + + public ExceptionTranslator exceptionTransformer() { + return new ExceptionTranslator(); + } + + @Bean + public DefaultDSLContext dsl() { + return new DefaultDSLContext(configuration()); + } + + public DefaultConfiguration configuration() { + DefaultConfiguration jooqConfiguration = new DefaultConfiguration(); + jooqConfiguration.set(connectionProvider()); + jooqConfiguration.set(new DefaultExecuteListenerProvider(exceptionTransformer())); + + return jooqConfiguration; + } +} \ No newline at end of file diff --git a/jooq-spring/src/test/java/com/baeldung/jooq/springboot/SpringBootTest.java b/jooq-spring/src/test/java/com/baeldung/jooq/springboot/SpringBootTest.java new file mode 100644 index 0000000000..bf5cc250a8 --- /dev/null +++ b/jooq-spring/src/test/java/com/baeldung/jooq/springboot/SpringBootTest.java @@ -0,0 +1,85 @@ +package com.baeldung.jooq.springboot; + +import static org.junit.Assert.*; + +import org.jooq.DSLContext; +import org.jooq.Record3; +import org.jooq.Result; +import org.jooq.impl.DSL; +import org.junit.Test; +import org.junit.runner.RunWith; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.boot.test.SpringApplicationConfiguration; +import org.springframework.dao.DataAccessException; +import org.springframework.test.context.junit4.SpringJUnit4ClassRunner; +import org.springframework.transaction.annotation.Transactional; + +import com.baeldung.jooq.introduction.db.public_.tables.Author; +import com.baeldung.jooq.introduction.db.public_.tables.AuthorBook; +import com.baeldung.jooq.introduction.db.public_.tables.Book; + +@SpringApplicationConfiguration(Application.class) +@Transactional("transactionManager") +@RunWith(SpringJUnit4ClassRunner.class) +public class SpringBootTest { + @Autowired + private DSLContext dsl; + + Author author = Author.AUTHOR; + Book book = Book.BOOK; + AuthorBook authorBook = AuthorBook.AUTHOR_BOOK; + + @Test + public void givenValidData_whenInserting_thenSucceed() { + dsl.insertInto(author).set(author.ID, 4).set(author.FIRST_NAME, "Herbert").set(author.LAST_NAME, "Schildt").execute(); + dsl.insertInto(book).set(book.ID, 4).set(book.TITLE, "A Beginner's Guide").execute(); + dsl.insertInto(authorBook).set(authorBook.AUTHOR_ID, 4).set(authorBook.BOOK_ID, 4).execute(); + Result> result = dsl.select(author.ID, author.LAST_NAME, DSL.count()).from(author).join(authorBook).on(author.ID.equal(authorBook.AUTHOR_ID)).join(book).on(authorBook.BOOK_ID.equal(book.ID)).groupBy(author.LAST_NAME) + .fetch(); + + assertEquals(3, result.size()); + assertEquals("Sierra", result.getValue(0, author.LAST_NAME)); + assertEquals(Integer.valueOf(2), result.getValue(0, DSL.count())); + assertEquals("Schildt", result.getValue(2, author.LAST_NAME)); + assertEquals(Integer.valueOf(1), result.getValue(2, DSL.count())); + } + + @Test(expected = DataAccessException.class) + public void givenInvalidData_whenInserting_thenFail() { + dsl.insertInto(authorBook).set(authorBook.AUTHOR_ID, 4).set(authorBook.BOOK_ID, 5).execute(); + } + + @Test + public void givenValidData_whenUpdating_thenSucceed() { + dsl.update(author).set(author.LAST_NAME, "Baeldung").where(author.ID.equal(3)).execute(); + dsl.update(book).set(book.TITLE, "Building your REST API with Spring").where(book.ID.equal(3)).execute(); + dsl.insertInto(authorBook).set(authorBook.AUTHOR_ID, 3).set(authorBook.BOOK_ID, 3).execute(); + Result> result = dsl.select(author.ID, author.LAST_NAME, book.TITLE).from(author).join(authorBook).on(author.ID.equal(authorBook.AUTHOR_ID)).join(book).on(authorBook.BOOK_ID.equal(book.ID)).where(author.ID.equal(3)) + .fetch(); + + assertEquals(1, result.size()); + assertEquals(Integer.valueOf(3), result.getValue(0, author.ID)); + assertEquals("Baeldung", result.getValue(0, author.LAST_NAME)); + assertEquals("Building your REST API with Spring", result.getValue(0, book.TITLE)); + } + + @Test(expected = DataAccessException.class) + public void givenInvalidData_whenUpdating_thenFail() { + dsl.update(authorBook).set(authorBook.AUTHOR_ID, 4).set(authorBook.BOOK_ID, 5).execute(); + } + + @Test + public void givenValidData_whenDeleting_thenSucceed() { + dsl.delete(author).where(author.ID.lt(3)).execute(); + Result> result = dsl.select(author.ID, author.FIRST_NAME, author.LAST_NAME).from(author).fetch(); + + assertEquals(1, result.size()); + assertEquals("Bryan", result.getValue(0, author.FIRST_NAME)); + assertEquals("Basham", result.getValue(0, author.LAST_NAME)); + } + + @Test(expected = DataAccessException.class) + public void givenInvalidData_whenDeleting_thenFail() { + dsl.delete(book).where(book.ID.equal(1)).execute(); + } +} \ No newline at end of file From eadbde5c2de168847516f5a3cff2e0ad07842d5c Mon Sep 17 00:00:00 2001 From: Grzegorz Piwowarek Date: Tue, 7 Jun 2016 17:49:15 +0200 Subject: [PATCH 019/108] Remove autogenerated jOOQ files --- .gitignore | 5 + .../information_schema/InformationSchema.java | 113 --- .../db/information_schema/Keys.java | 42 - .../db/information_schema/Tables.java | 196 ---- .../information_schema/tables/Catalogs.java | 87 -- .../information_schema/tables/Collations.java | 92 -- .../tables/ColumnPrivileges.java | 122 --- .../db/information_schema/tables/Columns.java | 197 ---- .../information_schema/tables/Constants.java | 117 --- .../tables/Constraints.java | 147 --- .../tables/CrossReferences.java | 152 --- .../db/information_schema/tables/Domains.java | 152 --- .../tables/FunctionAliases.java | 142 --- .../tables/FunctionColumns.java | 167 ---- .../db/information_schema/tables/Help.java | 107 -- .../db/information_schema/tables/InDoubt.java | 92 -- .../db/information_schema/tables/Indexes.java | 187 ---- .../db/information_schema/tables/Locks.java | 102 -- .../tables/QueryStatistics.java | 142 --- .../db/information_schema/tables/Rights.java | 117 --- .../db/information_schema/tables/Roles.java | 97 -- .../information_schema/tables/Schemata.java | 122 --- .../information_schema/tables/Sequences.java | 142 --- .../tables/SessionState.java | 92 -- .../information_schema/tables/Sessions.java | 112 --- .../information_schema/tables/Settings.java | 92 -- .../tables/TablePrivileges.java | 117 --- .../information_schema/tables/TableTypes.java | 87 -- .../db/information_schema/tables/Tables.java | 142 --- .../information_schema/tables/Triggers.java | 152 --- .../information_schema/tables/TypeInfo.java | 152 --- .../db/information_schema/tables/Users.java | 102 -- .../db/information_schema/tables/Views.java | 127 --- .../tables/records/CatalogsRecord.java | 119 --- .../tables/records/CollationsRecord.java | 160 --- .../records/ColumnPrivilegesRecord.java | 406 -------- .../tables/records/ColumnsRecord.java | 392 -------- .../tables/records/ConstantsRecord.java | 365 ------- .../tables/records/ConstraintsRecord.java | 611 ------------ .../tables/records/CrossReferencesRecord.java | 652 ------------ .../tables/records/DomainsRecord.java | 652 ------------ .../tables/records/FunctionAliasesRecord.java | 570 ----------- .../tables/records/FunctionColumnsRecord.java | 775 --------------- .../tables/records/HelpRecord.java | 283 ------ .../tables/records/InDoubtRecord.java | 160 --- .../tables/records/IndexesRecord.java | 939 ------------------ .../tables/records/LocksRecord.java | 242 ----- .../tables/records/QueryStatisticsRecord.java | 570 ----------- .../tables/records/RightsRecord.java | 365 ------- .../tables/records/RolesRecord.java | 201 ---- .../tables/records/SchemataRecord.java | 406 -------- .../tables/records/SequencesRecord.java | 570 ----------- .../tables/records/SessionStateRecord.java | 160 --- .../tables/records/SessionsRecord.java | 324 ------ .../tables/records/SettingsRecord.java | 160 --- .../tables/records/TablePrivilegesRecord.java | 365 ------- .../tables/records/TableTypesRecord.java | 119 --- .../tables/records/TablesRecord.java | 570 ----------- .../tables/records/TriggersRecord.java | 652 ------------ .../tables/records/TypeInfoRecord.java | 652 ------------ .../tables/records/UsersRecord.java | 242 ----- .../tables/records/ViewsRecord.java | 447 --------- .../jooq/introduction/db/public_/Keys.java | 69 -- .../jooq/introduction/db/public_/Public.java | 61 -- .../jooq/introduction/db/public_/Tables.java | 41 - .../db/public_/tables/Author.java | 118 --- .../db/public_/tables/AuthorBook.java | 122 --- .../introduction/db/public_/tables/Book.java | 113 --- .../tables/records/AuthorBookRecord.java | 172 ---- .../public_/tables/records/AuthorRecord.java | 214 ---- .../db/public_/tables/records/BookRecord.java | 173 ---- 71 files changed, 5 insertions(+), 17221 deletions(-) delete mode 100644 jooq-spring/src/main/java/com/baeldung/jooq/introduction/db/information_schema/InformationSchema.java delete mode 100644 jooq-spring/src/main/java/com/baeldung/jooq/introduction/db/information_schema/Keys.java delete mode 100644 jooq-spring/src/main/java/com/baeldung/jooq/introduction/db/information_schema/Tables.java delete mode 100644 jooq-spring/src/main/java/com/baeldung/jooq/introduction/db/information_schema/tables/Catalogs.java delete mode 100644 jooq-spring/src/main/java/com/baeldung/jooq/introduction/db/information_schema/tables/Collations.java delete mode 100644 jooq-spring/src/main/java/com/baeldung/jooq/introduction/db/information_schema/tables/ColumnPrivileges.java delete mode 100644 jooq-spring/src/main/java/com/baeldung/jooq/introduction/db/information_schema/tables/Columns.java delete mode 100644 jooq-spring/src/main/java/com/baeldung/jooq/introduction/db/information_schema/tables/Constants.java delete mode 100644 jooq-spring/src/main/java/com/baeldung/jooq/introduction/db/information_schema/tables/Constraints.java delete mode 100644 jooq-spring/src/main/java/com/baeldung/jooq/introduction/db/information_schema/tables/CrossReferences.java delete mode 100644 jooq-spring/src/main/java/com/baeldung/jooq/introduction/db/information_schema/tables/Domains.java delete mode 100644 jooq-spring/src/main/java/com/baeldung/jooq/introduction/db/information_schema/tables/FunctionAliases.java delete mode 100644 jooq-spring/src/main/java/com/baeldung/jooq/introduction/db/information_schema/tables/FunctionColumns.java delete mode 100644 jooq-spring/src/main/java/com/baeldung/jooq/introduction/db/information_schema/tables/Help.java delete mode 100644 jooq-spring/src/main/java/com/baeldung/jooq/introduction/db/information_schema/tables/InDoubt.java delete mode 100644 jooq-spring/src/main/java/com/baeldung/jooq/introduction/db/information_schema/tables/Indexes.java delete mode 100644 jooq-spring/src/main/java/com/baeldung/jooq/introduction/db/information_schema/tables/Locks.java delete mode 100644 jooq-spring/src/main/java/com/baeldung/jooq/introduction/db/information_schema/tables/QueryStatistics.java delete mode 100644 jooq-spring/src/main/java/com/baeldung/jooq/introduction/db/information_schema/tables/Rights.java delete mode 100644 jooq-spring/src/main/java/com/baeldung/jooq/introduction/db/information_schema/tables/Roles.java delete mode 100644 jooq-spring/src/main/java/com/baeldung/jooq/introduction/db/information_schema/tables/Schemata.java delete mode 100644 jooq-spring/src/main/java/com/baeldung/jooq/introduction/db/information_schema/tables/Sequences.java delete mode 100644 jooq-spring/src/main/java/com/baeldung/jooq/introduction/db/information_schema/tables/SessionState.java delete mode 100644 jooq-spring/src/main/java/com/baeldung/jooq/introduction/db/information_schema/tables/Sessions.java delete mode 100644 jooq-spring/src/main/java/com/baeldung/jooq/introduction/db/information_schema/tables/Settings.java delete mode 100644 jooq-spring/src/main/java/com/baeldung/jooq/introduction/db/information_schema/tables/TablePrivileges.java delete mode 100644 jooq-spring/src/main/java/com/baeldung/jooq/introduction/db/information_schema/tables/TableTypes.java delete mode 100644 jooq-spring/src/main/java/com/baeldung/jooq/introduction/db/information_schema/tables/Tables.java delete mode 100644 jooq-spring/src/main/java/com/baeldung/jooq/introduction/db/information_schema/tables/Triggers.java delete mode 100644 jooq-spring/src/main/java/com/baeldung/jooq/introduction/db/information_schema/tables/TypeInfo.java delete mode 100644 jooq-spring/src/main/java/com/baeldung/jooq/introduction/db/information_schema/tables/Users.java delete mode 100644 jooq-spring/src/main/java/com/baeldung/jooq/introduction/db/information_schema/tables/Views.java delete mode 100644 jooq-spring/src/main/java/com/baeldung/jooq/introduction/db/information_schema/tables/records/CatalogsRecord.java delete mode 100644 jooq-spring/src/main/java/com/baeldung/jooq/introduction/db/information_schema/tables/records/CollationsRecord.java delete mode 100644 jooq-spring/src/main/java/com/baeldung/jooq/introduction/db/information_schema/tables/records/ColumnPrivilegesRecord.java delete mode 100644 jooq-spring/src/main/java/com/baeldung/jooq/introduction/db/information_schema/tables/records/ColumnsRecord.java delete mode 100644 jooq-spring/src/main/java/com/baeldung/jooq/introduction/db/information_schema/tables/records/ConstantsRecord.java delete mode 100644 jooq-spring/src/main/java/com/baeldung/jooq/introduction/db/information_schema/tables/records/ConstraintsRecord.java delete mode 100644 jooq-spring/src/main/java/com/baeldung/jooq/introduction/db/information_schema/tables/records/CrossReferencesRecord.java delete mode 100644 jooq-spring/src/main/java/com/baeldung/jooq/introduction/db/information_schema/tables/records/DomainsRecord.java delete mode 100644 jooq-spring/src/main/java/com/baeldung/jooq/introduction/db/information_schema/tables/records/FunctionAliasesRecord.java delete mode 100644 jooq-spring/src/main/java/com/baeldung/jooq/introduction/db/information_schema/tables/records/FunctionColumnsRecord.java delete mode 100644 jooq-spring/src/main/java/com/baeldung/jooq/introduction/db/information_schema/tables/records/HelpRecord.java delete mode 100644 jooq-spring/src/main/java/com/baeldung/jooq/introduction/db/information_schema/tables/records/InDoubtRecord.java delete mode 100644 jooq-spring/src/main/java/com/baeldung/jooq/introduction/db/information_schema/tables/records/IndexesRecord.java delete mode 100644 jooq-spring/src/main/java/com/baeldung/jooq/introduction/db/information_schema/tables/records/LocksRecord.java delete mode 100644 jooq-spring/src/main/java/com/baeldung/jooq/introduction/db/information_schema/tables/records/QueryStatisticsRecord.java delete mode 100644 jooq-spring/src/main/java/com/baeldung/jooq/introduction/db/information_schema/tables/records/RightsRecord.java delete mode 100644 jooq-spring/src/main/java/com/baeldung/jooq/introduction/db/information_schema/tables/records/RolesRecord.java delete mode 100644 jooq-spring/src/main/java/com/baeldung/jooq/introduction/db/information_schema/tables/records/SchemataRecord.java delete mode 100644 jooq-spring/src/main/java/com/baeldung/jooq/introduction/db/information_schema/tables/records/SequencesRecord.java delete mode 100644 jooq-spring/src/main/java/com/baeldung/jooq/introduction/db/information_schema/tables/records/SessionStateRecord.java delete mode 100644 jooq-spring/src/main/java/com/baeldung/jooq/introduction/db/information_schema/tables/records/SessionsRecord.java delete mode 100644 jooq-spring/src/main/java/com/baeldung/jooq/introduction/db/information_schema/tables/records/SettingsRecord.java delete mode 100644 jooq-spring/src/main/java/com/baeldung/jooq/introduction/db/information_schema/tables/records/TablePrivilegesRecord.java delete mode 100644 jooq-spring/src/main/java/com/baeldung/jooq/introduction/db/information_schema/tables/records/TableTypesRecord.java delete mode 100644 jooq-spring/src/main/java/com/baeldung/jooq/introduction/db/information_schema/tables/records/TablesRecord.java delete mode 100644 jooq-spring/src/main/java/com/baeldung/jooq/introduction/db/information_schema/tables/records/TriggersRecord.java delete mode 100644 jooq-spring/src/main/java/com/baeldung/jooq/introduction/db/information_schema/tables/records/TypeInfoRecord.java delete mode 100644 jooq-spring/src/main/java/com/baeldung/jooq/introduction/db/information_schema/tables/records/UsersRecord.java delete mode 100644 jooq-spring/src/main/java/com/baeldung/jooq/introduction/db/information_schema/tables/records/ViewsRecord.java delete mode 100644 jooq-spring/src/main/java/com/baeldung/jooq/introduction/db/public_/Keys.java delete mode 100644 jooq-spring/src/main/java/com/baeldung/jooq/introduction/db/public_/Public.java delete mode 100644 jooq-spring/src/main/java/com/baeldung/jooq/introduction/db/public_/Tables.java delete mode 100644 jooq-spring/src/main/java/com/baeldung/jooq/introduction/db/public_/tables/Author.java delete mode 100644 jooq-spring/src/main/java/com/baeldung/jooq/introduction/db/public_/tables/AuthorBook.java delete mode 100644 jooq-spring/src/main/java/com/baeldung/jooq/introduction/db/public_/tables/Book.java delete mode 100644 jooq-spring/src/main/java/com/baeldung/jooq/introduction/db/public_/tables/records/AuthorBookRecord.java delete mode 100644 jooq-spring/src/main/java/com/baeldung/jooq/introduction/db/public_/tables/records/AuthorRecord.java delete mode 100644 jooq-spring/src/main/java/com/baeldung/jooq/introduction/db/public_/tables/records/BookRecord.java diff --git a/.gitignore b/.gitignore index 210807d09e..1a67437a83 100644 --- a/.gitignore +++ b/.gitignore @@ -7,6 +7,8 @@ # Eclipse .settings/ +*.project +*.classpath .prefs *.prefs @@ -23,3 +25,6 @@ log/ target/ spring-openid/src/main/resources/application.properties + +# Autogenerated jOOQ files +jooq-spring/src/main/java/com/baeldung/jooq/introduction/db diff --git a/jooq-spring/src/main/java/com/baeldung/jooq/introduction/db/information_schema/InformationSchema.java b/jooq-spring/src/main/java/com/baeldung/jooq/introduction/db/information_schema/InformationSchema.java deleted file mode 100644 index 94138a9ebe..0000000000 --- a/jooq-spring/src/main/java/com/baeldung/jooq/introduction/db/information_schema/InformationSchema.java +++ /dev/null @@ -1,113 +0,0 @@ -/** - * This class is generated by jOOQ - */ -package com.baeldung.jooq.introduction.db.information_schema; - - -import com.baeldung.jooq.introduction.db.information_schema.tables.Catalogs; -import com.baeldung.jooq.introduction.db.information_schema.tables.Collations; -import com.baeldung.jooq.introduction.db.information_schema.tables.ColumnPrivileges; -import com.baeldung.jooq.introduction.db.information_schema.tables.Columns; -import com.baeldung.jooq.introduction.db.information_schema.tables.Constants; -import com.baeldung.jooq.introduction.db.information_schema.tables.Constraints; -import com.baeldung.jooq.introduction.db.information_schema.tables.CrossReferences; -import com.baeldung.jooq.introduction.db.information_schema.tables.Domains; -import com.baeldung.jooq.introduction.db.information_schema.tables.FunctionAliases; -import com.baeldung.jooq.introduction.db.information_schema.tables.FunctionColumns; -import com.baeldung.jooq.introduction.db.information_schema.tables.Help; -import com.baeldung.jooq.introduction.db.information_schema.tables.InDoubt; -import com.baeldung.jooq.introduction.db.information_schema.tables.Indexes; -import com.baeldung.jooq.introduction.db.information_schema.tables.Locks; -import com.baeldung.jooq.introduction.db.information_schema.tables.QueryStatistics; -import com.baeldung.jooq.introduction.db.information_schema.tables.Rights; -import com.baeldung.jooq.introduction.db.information_schema.tables.Roles; -import com.baeldung.jooq.introduction.db.information_schema.tables.Schemata; -import com.baeldung.jooq.introduction.db.information_schema.tables.Sequences; -import com.baeldung.jooq.introduction.db.information_schema.tables.SessionState; -import com.baeldung.jooq.introduction.db.information_schema.tables.Sessions; -import com.baeldung.jooq.introduction.db.information_schema.tables.Settings; -import com.baeldung.jooq.introduction.db.information_schema.tables.TablePrivileges; -import com.baeldung.jooq.introduction.db.information_schema.tables.TableTypes; -import com.baeldung.jooq.introduction.db.information_schema.tables.Tables; -import com.baeldung.jooq.introduction.db.information_schema.tables.Triggers; -import com.baeldung.jooq.introduction.db.information_schema.tables.TypeInfo; -import com.baeldung.jooq.introduction.db.information_schema.tables.Users; -import com.baeldung.jooq.introduction.db.information_schema.tables.Views; - -import java.util.ArrayList; -import java.util.Arrays; -import java.util.List; - -import javax.annotation.Generated; - -import org.jooq.Table; -import org.jooq.impl.SchemaImpl; - - -/** - * This class is generated by jOOQ. - */ -@Generated( - value = { - "http://www.jooq.org", - "jOOQ version:3.7.3" - }, - comments = "This class is generated by jOOQ" -) -@SuppressWarnings({ "all", "unchecked", "rawtypes" }) -public class InformationSchema extends SchemaImpl { - - private static final long serialVersionUID = 436617961; - - /** - * The reference instance of INFORMATION_SCHEMA - */ - public static final InformationSchema INFORMATION_SCHEMA = new InformationSchema(); - - /** - * No further instances allowed - */ - private InformationSchema() { - super("INFORMATION_SCHEMA"); - } - - @Override - public final List> getTables() { - List result = new ArrayList(); - result.addAll(getTables0()); - return result; - } - - private final List> getTables0() { - return Arrays.>asList( - QueryStatistics.QUERY_STATISTICS, - SessionState.SESSION_STATE, - Locks.LOCKS, - Sessions.SESSIONS, - Triggers.TRIGGERS, - Domains.DOMAINS, - Constants.CONSTANTS, - FunctionColumns.FUNCTION_COLUMNS, - Constraints.CONSTRAINTS, - CrossReferences.CROSS_REFERENCES, - InDoubt.IN_DOUBT, - Views.VIEWS, - Collations.COLLATIONS, - ColumnPrivileges.COLUMN_PRIVILEGES, - TablePrivileges.TABLE_PRIVILEGES, - Schemata.SCHEMATA, - FunctionAliases.FUNCTION_ALIASES, - Rights.RIGHTS, - Roles.ROLES, - Users.USERS, - Sequences.SEQUENCES, - Help.HELP, - Settings.SETTINGS, - Catalogs.CATALOGS, - TypeInfo.TYPE_INFO, - TableTypes.TABLE_TYPES, - Indexes.INDEXES, - Columns.COLUMNS, - Tables.TABLES); - } -} diff --git a/jooq-spring/src/main/java/com/baeldung/jooq/introduction/db/information_schema/Keys.java b/jooq-spring/src/main/java/com/baeldung/jooq/introduction/db/information_schema/Keys.java deleted file mode 100644 index 87a1a03e55..0000000000 --- a/jooq-spring/src/main/java/com/baeldung/jooq/introduction/db/information_schema/Keys.java +++ /dev/null @@ -1,42 +0,0 @@ -/** - * This class is generated by jOOQ - */ -package com.baeldung.jooq.introduction.db.information_schema; - - -import javax.annotation.Generated; - - -/** - * A class modelling foreign key relationships between tables of the INFORMATION_SCHEMA - * schema - */ -@Generated( - value = { - "http://www.jooq.org", - "jOOQ version:3.7.3" - }, - comments = "This class is generated by jOOQ" -) -@SuppressWarnings({ "all", "unchecked", "rawtypes" }) -public class Keys { - - // ------------------------------------------------------------------------- - // IDENTITY definitions - // ------------------------------------------------------------------------- - - - // ------------------------------------------------------------------------- - // UNIQUE and PRIMARY KEY definitions - // ------------------------------------------------------------------------- - - - // ------------------------------------------------------------------------- - // FOREIGN KEY definitions - // ------------------------------------------------------------------------- - - - // ------------------------------------------------------------------------- - // [#1459] distribute members to avoid static initialisers > 64kb - // ------------------------------------------------------------------------- -} diff --git a/jooq-spring/src/main/java/com/baeldung/jooq/introduction/db/information_schema/Tables.java b/jooq-spring/src/main/java/com/baeldung/jooq/introduction/db/information_schema/Tables.java deleted file mode 100644 index 9d66776232..0000000000 --- a/jooq-spring/src/main/java/com/baeldung/jooq/introduction/db/information_schema/Tables.java +++ /dev/null @@ -1,196 +0,0 @@ -/** - * This class is generated by jOOQ - */ -package com.baeldung.jooq.introduction.db.information_schema; - - -import com.baeldung.jooq.introduction.db.information_schema.tables.Catalogs; -import com.baeldung.jooq.introduction.db.information_schema.tables.Collations; -import com.baeldung.jooq.introduction.db.information_schema.tables.ColumnPrivileges; -import com.baeldung.jooq.introduction.db.information_schema.tables.Columns; -import com.baeldung.jooq.introduction.db.information_schema.tables.Constants; -import com.baeldung.jooq.introduction.db.information_schema.tables.Constraints; -import com.baeldung.jooq.introduction.db.information_schema.tables.CrossReferences; -import com.baeldung.jooq.introduction.db.information_schema.tables.Domains; -import com.baeldung.jooq.introduction.db.information_schema.tables.FunctionAliases; -import com.baeldung.jooq.introduction.db.information_schema.tables.FunctionColumns; -import com.baeldung.jooq.introduction.db.information_schema.tables.Help; -import com.baeldung.jooq.introduction.db.information_schema.tables.InDoubt; -import com.baeldung.jooq.introduction.db.information_schema.tables.Indexes; -import com.baeldung.jooq.introduction.db.information_schema.tables.Locks; -import com.baeldung.jooq.introduction.db.information_schema.tables.QueryStatistics; -import com.baeldung.jooq.introduction.db.information_schema.tables.Rights; -import com.baeldung.jooq.introduction.db.information_schema.tables.Roles; -import com.baeldung.jooq.introduction.db.information_schema.tables.Schemata; -import com.baeldung.jooq.introduction.db.information_schema.tables.Sequences; -import com.baeldung.jooq.introduction.db.information_schema.tables.SessionState; -import com.baeldung.jooq.introduction.db.information_schema.tables.Sessions; -import com.baeldung.jooq.introduction.db.information_schema.tables.Settings; -import com.baeldung.jooq.introduction.db.information_schema.tables.TablePrivileges; -import com.baeldung.jooq.introduction.db.information_schema.tables.TableTypes; -import com.baeldung.jooq.introduction.db.information_schema.tables.Triggers; -import com.baeldung.jooq.introduction.db.information_schema.tables.TypeInfo; -import com.baeldung.jooq.introduction.db.information_schema.tables.Users; -import com.baeldung.jooq.introduction.db.information_schema.tables.Views; - -import javax.annotation.Generated; - - -/** - * Convenience access to all tables in INFORMATION_SCHEMA - */ -@Generated( - value = { - "http://www.jooq.org", - "jOOQ version:3.7.3" - }, - comments = "This class is generated by jOOQ" -) -@SuppressWarnings({ "all", "unchecked", "rawtypes" }) -public class Tables { - - /** - * The table INFORMATION_SCHEMA.QUERY_STATISTICS - */ - public static final QueryStatistics QUERY_STATISTICS = com.baeldung.jooq.introduction.db.information_schema.tables.QueryStatistics.QUERY_STATISTICS; - - /** - * The table INFORMATION_SCHEMA.SESSION_STATE - */ - public static final SessionState SESSION_STATE = com.baeldung.jooq.introduction.db.information_schema.tables.SessionState.SESSION_STATE; - - /** - * The table INFORMATION_SCHEMA.LOCKS - */ - public static final Locks LOCKS = com.baeldung.jooq.introduction.db.information_schema.tables.Locks.LOCKS; - - /** - * The table INFORMATION_SCHEMA.SESSIONS - */ - public static final Sessions SESSIONS = com.baeldung.jooq.introduction.db.information_schema.tables.Sessions.SESSIONS; - - /** - * The table INFORMATION_SCHEMA.TRIGGERS - */ - public static final Triggers TRIGGERS = com.baeldung.jooq.introduction.db.information_schema.tables.Triggers.TRIGGERS; - - /** - * The table INFORMATION_SCHEMA.DOMAINS - */ - public static final Domains DOMAINS = com.baeldung.jooq.introduction.db.information_schema.tables.Domains.DOMAINS; - - /** - * The table INFORMATION_SCHEMA.CONSTANTS - */ - public static final Constants CONSTANTS = com.baeldung.jooq.introduction.db.information_schema.tables.Constants.CONSTANTS; - - /** - * The table INFORMATION_SCHEMA.FUNCTION_COLUMNS - */ - public static final FunctionColumns FUNCTION_COLUMNS = com.baeldung.jooq.introduction.db.information_schema.tables.FunctionColumns.FUNCTION_COLUMNS; - - /** - * The table INFORMATION_SCHEMA.CONSTRAINTS - */ - public static final Constraints CONSTRAINTS = com.baeldung.jooq.introduction.db.information_schema.tables.Constraints.CONSTRAINTS; - - /** - * The table INFORMATION_SCHEMA.CROSS_REFERENCES - */ - public static final CrossReferences CROSS_REFERENCES = com.baeldung.jooq.introduction.db.information_schema.tables.CrossReferences.CROSS_REFERENCES; - - /** - * The table INFORMATION_SCHEMA.IN_DOUBT - */ - public static final InDoubt IN_DOUBT = com.baeldung.jooq.introduction.db.information_schema.tables.InDoubt.IN_DOUBT; - - /** - * The table INFORMATION_SCHEMA.VIEWS - */ - public static final Views VIEWS = com.baeldung.jooq.introduction.db.information_schema.tables.Views.VIEWS; - - /** - * The table INFORMATION_SCHEMA.COLLATIONS - */ - public static final Collations COLLATIONS = com.baeldung.jooq.introduction.db.information_schema.tables.Collations.COLLATIONS; - - /** - * The table INFORMATION_SCHEMA.COLUMN_PRIVILEGES - */ - public static final ColumnPrivileges COLUMN_PRIVILEGES = com.baeldung.jooq.introduction.db.information_schema.tables.ColumnPrivileges.COLUMN_PRIVILEGES; - - /** - * The table INFORMATION_SCHEMA.TABLE_PRIVILEGES - */ - public static final TablePrivileges TABLE_PRIVILEGES = com.baeldung.jooq.introduction.db.information_schema.tables.TablePrivileges.TABLE_PRIVILEGES; - - /** - * The table INFORMATION_SCHEMA.SCHEMATA - */ - public static final Schemata SCHEMATA = com.baeldung.jooq.introduction.db.information_schema.tables.Schemata.SCHEMATA; - - /** - * The table INFORMATION_SCHEMA.FUNCTION_ALIASES - */ - public static final FunctionAliases FUNCTION_ALIASES = com.baeldung.jooq.introduction.db.information_schema.tables.FunctionAliases.FUNCTION_ALIASES; - - /** - * The table INFORMATION_SCHEMA.RIGHTS - */ - public static final Rights RIGHTS = com.baeldung.jooq.introduction.db.information_schema.tables.Rights.RIGHTS; - - /** - * The table INFORMATION_SCHEMA.ROLES - */ - public static final Roles ROLES = com.baeldung.jooq.introduction.db.information_schema.tables.Roles.ROLES; - - /** - * The table INFORMATION_SCHEMA.USERS - */ - public static final Users USERS = com.baeldung.jooq.introduction.db.information_schema.tables.Users.USERS; - - /** - * The table INFORMATION_SCHEMA.SEQUENCES - */ - public static final Sequences SEQUENCES = com.baeldung.jooq.introduction.db.information_schema.tables.Sequences.SEQUENCES; - - /** - * The table INFORMATION_SCHEMA.HELP - */ - public static final Help HELP = com.baeldung.jooq.introduction.db.information_schema.tables.Help.HELP; - - /** - * The table INFORMATION_SCHEMA.SETTINGS - */ - public static final Settings SETTINGS = com.baeldung.jooq.introduction.db.information_schema.tables.Settings.SETTINGS; - - /** - * The table INFORMATION_SCHEMA.CATALOGS - */ - public static final Catalogs CATALOGS = com.baeldung.jooq.introduction.db.information_schema.tables.Catalogs.CATALOGS; - - /** - * The table INFORMATION_SCHEMA.TYPE_INFO - */ - public static final TypeInfo TYPE_INFO = com.baeldung.jooq.introduction.db.information_schema.tables.TypeInfo.TYPE_INFO; - - /** - * The table INFORMATION_SCHEMA.TABLE_TYPES - */ - public static final TableTypes TABLE_TYPES = com.baeldung.jooq.introduction.db.information_schema.tables.TableTypes.TABLE_TYPES; - - /** - * The table INFORMATION_SCHEMA.INDEXES - */ - public static final Indexes INDEXES = com.baeldung.jooq.introduction.db.information_schema.tables.Indexes.INDEXES; - - /** - * The table INFORMATION_SCHEMA.COLUMNS - */ - public static final Columns COLUMNS = com.baeldung.jooq.introduction.db.information_schema.tables.Columns.COLUMNS; - - /** - * The table INFORMATION_SCHEMA.TABLES - */ - public static final com.baeldung.jooq.introduction.db.information_schema.tables.Tables TABLES = com.baeldung.jooq.introduction.db.information_schema.tables.Tables.TABLES; -} diff --git a/jooq-spring/src/main/java/com/baeldung/jooq/introduction/db/information_schema/tables/Catalogs.java b/jooq-spring/src/main/java/com/baeldung/jooq/introduction/db/information_schema/tables/Catalogs.java deleted file mode 100644 index f7091cfbe4..0000000000 --- a/jooq-spring/src/main/java/com/baeldung/jooq/introduction/db/information_schema/tables/Catalogs.java +++ /dev/null @@ -1,87 +0,0 @@ -/** - * This class is generated by jOOQ - */ -package com.baeldung.jooq.introduction.db.information_schema.tables; - - -import com.baeldung.jooq.introduction.db.information_schema.InformationSchema; -import com.baeldung.jooq.introduction.db.information_schema.tables.records.CatalogsRecord; - -import javax.annotation.Generated; - -import org.jooq.Field; -import org.jooq.Table; -import org.jooq.TableField; -import org.jooq.impl.TableImpl; - - -/** - * This class is generated by jOOQ. - */ -@Generated( - value = { - "http://www.jooq.org", - "jOOQ version:3.7.3" - }, - comments = "This class is generated by jOOQ" -) -@SuppressWarnings({ "all", "unchecked", "rawtypes" }) -public class Catalogs extends TableImpl { - - private static final long serialVersionUID = 1558896306; - - /** - * The reference instance of INFORMATION_SCHEMA.CATALOGS - */ - public static final Catalogs CATALOGS = new Catalogs(); - - /** - * The class holding records for this type - */ - @Override - public Class getRecordType() { - return CatalogsRecord.class; - } - - /** - * The column INFORMATION_SCHEMA.CATALOGS.CATALOG_NAME. - */ - public final TableField CATALOG_NAME = createField("CATALOG_NAME", org.jooq.impl.SQLDataType.VARCHAR.length(2147483647), this, ""); - - /** - * Create a INFORMATION_SCHEMA.CATALOGS table reference - */ - public Catalogs() { - this("CATALOGS", null); - } - - /** - * Create an aliased INFORMATION_SCHEMA.CATALOGS table reference - */ - public Catalogs(String alias) { - this(alias, CATALOGS); - } - - private Catalogs(String alias, Table aliased) { - this(alias, aliased, null); - } - - private Catalogs(String alias, Table aliased, Field[] parameters) { - super(alias, InformationSchema.INFORMATION_SCHEMA, aliased, parameters, ""); - } - - /** - * {@inheritDoc} - */ - @Override - public Catalogs as(String alias) { - return new Catalogs(alias, this); - } - - /** - * Rename this table - */ - public Catalogs rename(String name) { - return new Catalogs(name, null); - } -} diff --git a/jooq-spring/src/main/java/com/baeldung/jooq/introduction/db/information_schema/tables/Collations.java b/jooq-spring/src/main/java/com/baeldung/jooq/introduction/db/information_schema/tables/Collations.java deleted file mode 100644 index e16ed17605..0000000000 --- a/jooq-spring/src/main/java/com/baeldung/jooq/introduction/db/information_schema/tables/Collations.java +++ /dev/null @@ -1,92 +0,0 @@ -/** - * This class is generated by jOOQ - */ -package com.baeldung.jooq.introduction.db.information_schema.tables; - - -import com.baeldung.jooq.introduction.db.information_schema.InformationSchema; -import com.baeldung.jooq.introduction.db.information_schema.tables.records.CollationsRecord; - -import javax.annotation.Generated; - -import org.jooq.Field; -import org.jooq.Table; -import org.jooq.TableField; -import org.jooq.impl.TableImpl; - - -/** - * This class is generated by jOOQ. - */ -@Generated( - value = { - "http://www.jooq.org", - "jOOQ version:3.7.3" - }, - comments = "This class is generated by jOOQ" -) -@SuppressWarnings({ "all", "unchecked", "rawtypes" }) -public class Collations extends TableImpl { - - private static final long serialVersionUID = 1978393146; - - /** - * The reference instance of INFORMATION_SCHEMA.COLLATIONS - */ - public static final Collations COLLATIONS = new Collations(); - - /** - * The class holding records for this type - */ - @Override - public Class getRecordType() { - return CollationsRecord.class; - } - - /** - * The column INFORMATION_SCHEMA.COLLATIONS.NAME. - */ - public final TableField NAME = createField("NAME", org.jooq.impl.SQLDataType.VARCHAR.length(2147483647), this, ""); - - /** - * The column INFORMATION_SCHEMA.COLLATIONS.KEY. - */ - public final TableField KEY = createField("KEY", org.jooq.impl.SQLDataType.VARCHAR.length(2147483647), this, ""); - - /** - * Create a INFORMATION_SCHEMA.COLLATIONS table reference - */ - public Collations() { - this("COLLATIONS", null); - } - - /** - * Create an aliased INFORMATION_SCHEMA.COLLATIONS table reference - */ - public Collations(String alias) { - this(alias, COLLATIONS); - } - - private Collations(String alias, Table aliased) { - this(alias, aliased, null); - } - - private Collations(String alias, Table aliased, Field[] parameters) { - super(alias, InformationSchema.INFORMATION_SCHEMA, aliased, parameters, ""); - } - - /** - * {@inheritDoc} - */ - @Override - public Collations as(String alias) { - return new Collations(alias, this); - } - - /** - * Rename this table - */ - public Collations rename(String name) { - return new Collations(name, null); - } -} diff --git a/jooq-spring/src/main/java/com/baeldung/jooq/introduction/db/information_schema/tables/ColumnPrivileges.java b/jooq-spring/src/main/java/com/baeldung/jooq/introduction/db/information_schema/tables/ColumnPrivileges.java deleted file mode 100644 index 307682f434..0000000000 --- a/jooq-spring/src/main/java/com/baeldung/jooq/introduction/db/information_schema/tables/ColumnPrivileges.java +++ /dev/null @@ -1,122 +0,0 @@ -/** - * This class is generated by jOOQ - */ -package com.baeldung.jooq.introduction.db.information_schema.tables; - - -import com.baeldung.jooq.introduction.db.information_schema.InformationSchema; -import com.baeldung.jooq.introduction.db.information_schema.tables.records.ColumnPrivilegesRecord; - -import javax.annotation.Generated; - -import org.jooq.Field; -import org.jooq.Table; -import org.jooq.TableField; -import org.jooq.impl.TableImpl; - - -/** - * This class is generated by jOOQ. - */ -@Generated( - value = { - "http://www.jooq.org", - "jOOQ version:3.7.3" - }, - comments = "This class is generated by jOOQ" -) -@SuppressWarnings({ "all", "unchecked", "rawtypes" }) -public class ColumnPrivileges extends TableImpl { - - private static final long serialVersionUID = -282101680; - - /** - * The reference instance of INFORMATION_SCHEMA.COLUMN_PRIVILEGES - */ - public static final ColumnPrivileges COLUMN_PRIVILEGES = new ColumnPrivileges(); - - /** - * The class holding records for this type - */ - @Override - public Class getRecordType() { - return ColumnPrivilegesRecord.class; - } - - /** - * The column INFORMATION_SCHEMA.COLUMN_PRIVILEGES.GRANTOR. - */ - public final TableField GRANTOR = createField("GRANTOR", org.jooq.impl.SQLDataType.VARCHAR.length(2147483647), this, ""); - - /** - * The column INFORMATION_SCHEMA.COLUMN_PRIVILEGES.GRANTEE. - */ - public final TableField GRANTEE = createField("GRANTEE", org.jooq.impl.SQLDataType.VARCHAR.length(2147483647), this, ""); - - /** - * The column INFORMATION_SCHEMA.COLUMN_PRIVILEGES.TABLE_CATALOG. - */ - public final TableField TABLE_CATALOG = createField("TABLE_CATALOG", org.jooq.impl.SQLDataType.VARCHAR.length(2147483647), this, ""); - - /** - * The column INFORMATION_SCHEMA.COLUMN_PRIVILEGES.TABLE_SCHEMA. - */ - public final TableField TABLE_SCHEMA = createField("TABLE_SCHEMA", org.jooq.impl.SQLDataType.VARCHAR.length(2147483647), this, ""); - - /** - * The column INFORMATION_SCHEMA.COLUMN_PRIVILEGES.TABLE_NAME. - */ - public final TableField TABLE_NAME = createField("TABLE_NAME", org.jooq.impl.SQLDataType.VARCHAR.length(2147483647), this, ""); - - /** - * The column INFORMATION_SCHEMA.COLUMN_PRIVILEGES.COLUMN_NAME. - */ - public final TableField COLUMN_NAME = createField("COLUMN_NAME", org.jooq.impl.SQLDataType.VARCHAR.length(2147483647), this, ""); - - /** - * The column INFORMATION_SCHEMA.COLUMN_PRIVILEGES.PRIVILEGE_TYPE. - */ - public final TableField PRIVILEGE_TYPE = createField("PRIVILEGE_TYPE", org.jooq.impl.SQLDataType.VARCHAR.length(2147483647), this, ""); - - /** - * The column INFORMATION_SCHEMA.COLUMN_PRIVILEGES.IS_GRANTABLE. - */ - public final TableField IS_GRANTABLE = createField("IS_GRANTABLE", org.jooq.impl.SQLDataType.VARCHAR.length(2147483647), this, ""); - - /** - * Create a INFORMATION_SCHEMA.COLUMN_PRIVILEGES table reference - */ - public ColumnPrivileges() { - this("COLUMN_PRIVILEGES", null); - } - - /** - * Create an aliased INFORMATION_SCHEMA.COLUMN_PRIVILEGES table reference - */ - public ColumnPrivileges(String alias) { - this(alias, COLUMN_PRIVILEGES); - } - - private ColumnPrivileges(String alias, Table aliased) { - this(alias, aliased, null); - } - - private ColumnPrivileges(String alias, Table aliased, Field[] parameters) { - super(alias, InformationSchema.INFORMATION_SCHEMA, aliased, parameters, ""); - } - - /** - * {@inheritDoc} - */ - @Override - public ColumnPrivileges as(String alias) { - return new ColumnPrivileges(alias, this); - } - - /** - * Rename this table - */ - public ColumnPrivileges rename(String name) { - return new ColumnPrivileges(name, null); - } -} diff --git a/jooq-spring/src/main/java/com/baeldung/jooq/introduction/db/information_schema/tables/Columns.java b/jooq-spring/src/main/java/com/baeldung/jooq/introduction/db/information_schema/tables/Columns.java deleted file mode 100644 index d95a518c1f..0000000000 --- a/jooq-spring/src/main/java/com/baeldung/jooq/introduction/db/information_schema/tables/Columns.java +++ /dev/null @@ -1,197 +0,0 @@ -/** - * This class is generated by jOOQ - */ -package com.baeldung.jooq.introduction.db.information_schema.tables; - - -import com.baeldung.jooq.introduction.db.information_schema.InformationSchema; -import com.baeldung.jooq.introduction.db.information_schema.tables.records.ColumnsRecord; - -import javax.annotation.Generated; - -import org.jooq.Field; -import org.jooq.Table; -import org.jooq.TableField; -import org.jooq.impl.TableImpl; - - -/** - * This class is generated by jOOQ. - */ -@Generated( - value = { - "http://www.jooq.org", - "jOOQ version:3.7.3" - }, - comments = "This class is generated by jOOQ" -) -@SuppressWarnings({ "all", "unchecked", "rawtypes" }) -public class Columns extends TableImpl { - - private static final long serialVersionUID = 1721995161; - - /** - * The reference instance of INFORMATION_SCHEMA.COLUMNS - */ - public static final Columns COLUMNS = new Columns(); - - /** - * The class holding records for this type - */ - @Override - public Class getRecordType() { - return ColumnsRecord.class; - } - - /** - * The column INFORMATION_SCHEMA.COLUMNS.TABLE_CATALOG. - */ - public final TableField TABLE_CATALOG = createField("TABLE_CATALOG", org.jooq.impl.SQLDataType.VARCHAR.length(2147483647), this, ""); - - /** - * The column INFORMATION_SCHEMA.COLUMNS.TABLE_SCHEMA. - */ - public final TableField TABLE_SCHEMA = createField("TABLE_SCHEMA", org.jooq.impl.SQLDataType.VARCHAR.length(2147483647), this, ""); - - /** - * The column INFORMATION_SCHEMA.COLUMNS.TABLE_NAME. - */ - public final TableField TABLE_NAME = createField("TABLE_NAME", org.jooq.impl.SQLDataType.VARCHAR.length(2147483647), this, ""); - - /** - * The column INFORMATION_SCHEMA.COLUMNS.COLUMN_NAME. - */ - public final TableField COLUMN_NAME = createField("COLUMN_NAME", org.jooq.impl.SQLDataType.VARCHAR.length(2147483647), this, ""); - - /** - * The column INFORMATION_SCHEMA.COLUMNS.ORDINAL_POSITION. - */ - public final TableField ORDINAL_POSITION = createField("ORDINAL_POSITION", org.jooq.impl.SQLDataType.INTEGER, this, ""); - - /** - * The column INFORMATION_SCHEMA.COLUMNS.COLUMN_DEFAULT. - */ - public final TableField COLUMN_DEFAULT = createField("COLUMN_DEFAULT", org.jooq.impl.SQLDataType.VARCHAR.length(2147483647), this, ""); - - /** - * The column INFORMATION_SCHEMA.COLUMNS.IS_NULLABLE. - */ - public final TableField IS_NULLABLE = createField("IS_NULLABLE", org.jooq.impl.SQLDataType.VARCHAR.length(2147483647), this, ""); - - /** - * The column INFORMATION_SCHEMA.COLUMNS.DATA_TYPE. - */ - public final TableField DATA_TYPE = createField("DATA_TYPE", org.jooq.impl.SQLDataType.INTEGER, this, ""); - - /** - * The column INFORMATION_SCHEMA.COLUMNS.CHARACTER_MAXIMUM_LENGTH. - */ - public final TableField CHARACTER_MAXIMUM_LENGTH = createField("CHARACTER_MAXIMUM_LENGTH", org.jooq.impl.SQLDataType.INTEGER, this, ""); - - /** - * The column INFORMATION_SCHEMA.COLUMNS.CHARACTER_OCTET_LENGTH. - */ - public final TableField CHARACTER_OCTET_LENGTH = createField("CHARACTER_OCTET_LENGTH", org.jooq.impl.SQLDataType.INTEGER, this, ""); - - /** - * The column INFORMATION_SCHEMA.COLUMNS.NUMERIC_PRECISION. - */ - public final TableField NUMERIC_PRECISION = createField("NUMERIC_PRECISION", org.jooq.impl.SQLDataType.INTEGER, this, ""); - - /** - * The column INFORMATION_SCHEMA.COLUMNS.NUMERIC_PRECISION_RADIX. - */ - public final TableField NUMERIC_PRECISION_RADIX = createField("NUMERIC_PRECISION_RADIX", org.jooq.impl.SQLDataType.INTEGER, this, ""); - - /** - * The column INFORMATION_SCHEMA.COLUMNS.NUMERIC_SCALE. - */ - public final TableField NUMERIC_SCALE = createField("NUMERIC_SCALE", org.jooq.impl.SQLDataType.INTEGER, this, ""); - - /** - * The column INFORMATION_SCHEMA.COLUMNS.CHARACTER_SET_NAME. - */ - public final TableField CHARACTER_SET_NAME = createField("CHARACTER_SET_NAME", org.jooq.impl.SQLDataType.VARCHAR.length(2147483647), this, ""); - - /** - * The column INFORMATION_SCHEMA.COLUMNS.COLLATION_NAME. - */ - public final TableField COLLATION_NAME = createField("COLLATION_NAME", org.jooq.impl.SQLDataType.VARCHAR.length(2147483647), this, ""); - - /** - * The column INFORMATION_SCHEMA.COLUMNS.TYPE_NAME. - */ - public final TableField TYPE_NAME = createField("TYPE_NAME", org.jooq.impl.SQLDataType.VARCHAR.length(2147483647), this, ""); - - /** - * The column INFORMATION_SCHEMA.COLUMNS.NULLABLE. - */ - public final TableField NULLABLE = createField("NULLABLE", org.jooq.impl.SQLDataType.INTEGER, this, ""); - - /** - * The column INFORMATION_SCHEMA.COLUMNS.IS_COMPUTED. - */ - public final TableField IS_COMPUTED = createField("IS_COMPUTED", org.jooq.impl.SQLDataType.BOOLEAN, this, ""); - - /** - * The column INFORMATION_SCHEMA.COLUMNS.SELECTIVITY. - */ - public final TableField SELECTIVITY = createField("SELECTIVITY", org.jooq.impl.SQLDataType.INTEGER, this, ""); - - /** - * The column INFORMATION_SCHEMA.COLUMNS.CHECK_CONSTRAINT. - */ - public final TableField CHECK_CONSTRAINT = createField("CHECK_CONSTRAINT", org.jooq.impl.SQLDataType.VARCHAR.length(2147483647), this, ""); - - /** - * The column INFORMATION_SCHEMA.COLUMNS.SEQUENCE_NAME. - */ - public final TableField SEQUENCE_NAME = createField("SEQUENCE_NAME", org.jooq.impl.SQLDataType.VARCHAR.length(2147483647), this, ""); - - /** - * The column INFORMATION_SCHEMA.COLUMNS.REMARKS. - */ - public final TableField REMARKS = createField("REMARKS", org.jooq.impl.SQLDataType.VARCHAR.length(2147483647), this, ""); - - /** - * The column INFORMATION_SCHEMA.COLUMNS.SOURCE_DATA_TYPE. - */ - public final TableField SOURCE_DATA_TYPE = createField("SOURCE_DATA_TYPE", org.jooq.impl.SQLDataType.SMALLINT, this, ""); - - /** - * Create a INFORMATION_SCHEMA.COLUMNS table reference - */ - public Columns() { - this("COLUMNS", null); - } - - /** - * Create an aliased INFORMATION_SCHEMA.COLUMNS table reference - */ - public Columns(String alias) { - this(alias, COLUMNS); - } - - private Columns(String alias, Table aliased) { - this(alias, aliased, null); - } - - private Columns(String alias, Table aliased, Field[] parameters) { - super(alias, InformationSchema.INFORMATION_SCHEMA, aliased, parameters, ""); - } - - /** - * {@inheritDoc} - */ - @Override - public Columns as(String alias) { - return new Columns(alias, this); - } - - /** - * Rename this table - */ - public Columns rename(String name) { - return new Columns(name, null); - } -} diff --git a/jooq-spring/src/main/java/com/baeldung/jooq/introduction/db/information_schema/tables/Constants.java b/jooq-spring/src/main/java/com/baeldung/jooq/introduction/db/information_schema/tables/Constants.java deleted file mode 100644 index 7d2d97f5f8..0000000000 --- a/jooq-spring/src/main/java/com/baeldung/jooq/introduction/db/information_schema/tables/Constants.java +++ /dev/null @@ -1,117 +0,0 @@ -/** - * This class is generated by jOOQ - */ -package com.baeldung.jooq.introduction.db.information_schema.tables; - - -import com.baeldung.jooq.introduction.db.information_schema.InformationSchema; -import com.baeldung.jooq.introduction.db.information_schema.tables.records.ConstantsRecord; - -import javax.annotation.Generated; - -import org.jooq.Field; -import org.jooq.Table; -import org.jooq.TableField; -import org.jooq.impl.TableImpl; - - -/** - * This class is generated by jOOQ. - */ -@Generated( - value = { - "http://www.jooq.org", - "jOOQ version:3.7.3" - }, - comments = "This class is generated by jOOQ" -) -@SuppressWarnings({ "all", "unchecked", "rawtypes" }) -public class Constants extends TableImpl { - - private static final long serialVersionUID = 107996087; - - /** - * The reference instance of INFORMATION_SCHEMA.CONSTANTS - */ - public static final Constants CONSTANTS = new Constants(); - - /** - * The class holding records for this type - */ - @Override - public Class getRecordType() { - return ConstantsRecord.class; - } - - /** - * The column INFORMATION_SCHEMA.CONSTANTS.CONSTANT_CATALOG. - */ - public final TableField CONSTANT_CATALOG = createField("CONSTANT_CATALOG", org.jooq.impl.SQLDataType.VARCHAR.length(2147483647), this, ""); - - /** - * The column INFORMATION_SCHEMA.CONSTANTS.CONSTANT_SCHEMA. - */ - public final TableField CONSTANT_SCHEMA = createField("CONSTANT_SCHEMA", org.jooq.impl.SQLDataType.VARCHAR.length(2147483647), this, ""); - - /** - * The column INFORMATION_SCHEMA.CONSTANTS.CONSTANT_NAME. - */ - public final TableField CONSTANT_NAME = createField("CONSTANT_NAME", org.jooq.impl.SQLDataType.VARCHAR.length(2147483647), this, ""); - - /** - * The column INFORMATION_SCHEMA.CONSTANTS.DATA_TYPE. - */ - public final TableField DATA_TYPE = createField("DATA_TYPE", org.jooq.impl.SQLDataType.INTEGER, this, ""); - - /** - * The column INFORMATION_SCHEMA.CONSTANTS.REMARKS. - */ - public final TableField REMARKS = createField("REMARKS", org.jooq.impl.SQLDataType.VARCHAR.length(2147483647), this, ""); - - /** - * The column INFORMATION_SCHEMA.CONSTANTS.SQL. - */ - public final TableField SQL = createField("SQL", org.jooq.impl.SQLDataType.VARCHAR.length(2147483647), this, ""); - - /** - * The column INFORMATION_SCHEMA.CONSTANTS.ID. - */ - public final TableField ID = createField("ID", org.jooq.impl.SQLDataType.INTEGER, this, ""); - - /** - * Create a INFORMATION_SCHEMA.CONSTANTS table reference - */ - public Constants() { - this("CONSTANTS", null); - } - - /** - * Create an aliased INFORMATION_SCHEMA.CONSTANTS table reference - */ - public Constants(String alias) { - this(alias, CONSTANTS); - } - - private Constants(String alias, Table aliased) { - this(alias, aliased, null); - } - - private Constants(String alias, Table aliased, Field[] parameters) { - super(alias, InformationSchema.INFORMATION_SCHEMA, aliased, parameters, ""); - } - - /** - * {@inheritDoc} - */ - @Override - public Constants as(String alias) { - return new Constants(alias, this); - } - - /** - * Rename this table - */ - public Constants rename(String name) { - return new Constants(name, null); - } -} diff --git a/jooq-spring/src/main/java/com/baeldung/jooq/introduction/db/information_schema/tables/Constraints.java b/jooq-spring/src/main/java/com/baeldung/jooq/introduction/db/information_schema/tables/Constraints.java deleted file mode 100644 index 1c95f369ec..0000000000 --- a/jooq-spring/src/main/java/com/baeldung/jooq/introduction/db/information_schema/tables/Constraints.java +++ /dev/null @@ -1,147 +0,0 @@ -/** - * This class is generated by jOOQ - */ -package com.baeldung.jooq.introduction.db.information_schema.tables; - - -import com.baeldung.jooq.introduction.db.information_schema.InformationSchema; -import com.baeldung.jooq.introduction.db.information_schema.tables.records.ConstraintsRecord; - -import javax.annotation.Generated; - -import org.jooq.Field; -import org.jooq.Table; -import org.jooq.TableField; -import org.jooq.impl.TableImpl; - - -/** - * This class is generated by jOOQ. - */ -@Generated( - value = { - "http://www.jooq.org", - "jOOQ version:3.7.3" - }, - comments = "This class is generated by jOOQ" -) -@SuppressWarnings({ "all", "unchecked", "rawtypes" }) -public class Constraints extends TableImpl { - - private static final long serialVersionUID = 529190017; - - /** - * The reference instance of INFORMATION_SCHEMA.CONSTRAINTS - */ - public static final Constraints CONSTRAINTS = new Constraints(); - - /** - * The class holding records for this type - */ - @Override - public Class getRecordType() { - return ConstraintsRecord.class; - } - - /** - * The column INFORMATION_SCHEMA.CONSTRAINTS.CONSTRAINT_CATALOG. - */ - public final TableField CONSTRAINT_CATALOG = createField("CONSTRAINT_CATALOG", org.jooq.impl.SQLDataType.VARCHAR.length(2147483647), this, ""); - - /** - * The column INFORMATION_SCHEMA.CONSTRAINTS.CONSTRAINT_SCHEMA. - */ - public final TableField CONSTRAINT_SCHEMA = createField("CONSTRAINT_SCHEMA", org.jooq.impl.SQLDataType.VARCHAR.length(2147483647), this, ""); - - /** - * The column INFORMATION_SCHEMA.CONSTRAINTS.CONSTRAINT_NAME. - */ - public final TableField CONSTRAINT_NAME = createField("CONSTRAINT_NAME", org.jooq.impl.SQLDataType.VARCHAR.length(2147483647), this, ""); - - /** - * The column INFORMATION_SCHEMA.CONSTRAINTS.CONSTRAINT_TYPE. - */ - public final TableField CONSTRAINT_TYPE = createField("CONSTRAINT_TYPE", org.jooq.impl.SQLDataType.VARCHAR.length(2147483647), this, ""); - - /** - * The column INFORMATION_SCHEMA.CONSTRAINTS.TABLE_CATALOG. - */ - public final TableField TABLE_CATALOG = createField("TABLE_CATALOG", org.jooq.impl.SQLDataType.VARCHAR.length(2147483647), this, ""); - - /** - * The column INFORMATION_SCHEMA.CONSTRAINTS.TABLE_SCHEMA. - */ - public final TableField TABLE_SCHEMA = createField("TABLE_SCHEMA", org.jooq.impl.SQLDataType.VARCHAR.length(2147483647), this, ""); - - /** - * The column INFORMATION_SCHEMA.CONSTRAINTS.TABLE_NAME. - */ - public final TableField TABLE_NAME = createField("TABLE_NAME", org.jooq.impl.SQLDataType.VARCHAR.length(2147483647), this, ""); - - /** - * The column INFORMATION_SCHEMA.CONSTRAINTS.UNIQUE_INDEX_NAME. - */ - public final TableField UNIQUE_INDEX_NAME = createField("UNIQUE_INDEX_NAME", org.jooq.impl.SQLDataType.VARCHAR.length(2147483647), this, ""); - - /** - * The column INFORMATION_SCHEMA.CONSTRAINTS.CHECK_EXPRESSION. - */ - public final TableField CHECK_EXPRESSION = createField("CHECK_EXPRESSION", org.jooq.impl.SQLDataType.VARCHAR.length(2147483647), this, ""); - - /** - * The column INFORMATION_SCHEMA.CONSTRAINTS.COLUMN_LIST. - */ - public final TableField COLUMN_LIST = createField("COLUMN_LIST", org.jooq.impl.SQLDataType.VARCHAR.length(2147483647), this, ""); - - /** - * The column INFORMATION_SCHEMA.CONSTRAINTS.REMARKS. - */ - public final TableField REMARKS = createField("REMARKS", org.jooq.impl.SQLDataType.VARCHAR.length(2147483647), this, ""); - - /** - * The column INFORMATION_SCHEMA.CONSTRAINTS.SQL. - */ - public final TableField SQL = createField("SQL", org.jooq.impl.SQLDataType.VARCHAR.length(2147483647), this, ""); - - /** - * The column INFORMATION_SCHEMA.CONSTRAINTS.ID. - */ - public final TableField ID = createField("ID", org.jooq.impl.SQLDataType.INTEGER, this, ""); - - /** - * Create a INFORMATION_SCHEMA.CONSTRAINTS table reference - */ - public Constraints() { - this("CONSTRAINTS", null); - } - - /** - * Create an aliased INFORMATION_SCHEMA.CONSTRAINTS table reference - */ - public Constraints(String alias) { - this(alias, CONSTRAINTS); - } - - private Constraints(String alias, Table aliased) { - this(alias, aliased, null); - } - - private Constraints(String alias, Table aliased, Field[] parameters) { - super(alias, InformationSchema.INFORMATION_SCHEMA, aliased, parameters, ""); - } - - /** - * {@inheritDoc} - */ - @Override - public Constraints as(String alias) { - return new Constraints(alias, this); - } - - /** - * Rename this table - */ - public Constraints rename(String name) { - return new Constraints(name, null); - } -} diff --git a/jooq-spring/src/main/java/com/baeldung/jooq/introduction/db/information_schema/tables/CrossReferences.java b/jooq-spring/src/main/java/com/baeldung/jooq/introduction/db/information_schema/tables/CrossReferences.java deleted file mode 100644 index d3d9cebded..0000000000 --- a/jooq-spring/src/main/java/com/baeldung/jooq/introduction/db/information_schema/tables/CrossReferences.java +++ /dev/null @@ -1,152 +0,0 @@ -/** - * This class is generated by jOOQ - */ -package com.baeldung.jooq.introduction.db.information_schema.tables; - - -import com.baeldung.jooq.introduction.db.information_schema.InformationSchema; -import com.baeldung.jooq.introduction.db.information_schema.tables.records.CrossReferencesRecord; - -import javax.annotation.Generated; - -import org.jooq.Field; -import org.jooq.Table; -import org.jooq.TableField; -import org.jooq.impl.TableImpl; - - -/** - * This class is generated by jOOQ. - */ -@Generated( - value = { - "http://www.jooq.org", - "jOOQ version:3.7.3" - }, - comments = "This class is generated by jOOQ" -) -@SuppressWarnings({ "all", "unchecked", "rawtypes" }) -public class CrossReferences extends TableImpl { - - private static final long serialVersionUID = 846378739; - - /** - * The reference instance of INFORMATION_SCHEMA.CROSS_REFERENCES - */ - public static final CrossReferences CROSS_REFERENCES = new CrossReferences(); - - /** - * The class holding records for this type - */ - @Override - public Class getRecordType() { - return CrossReferencesRecord.class; - } - - /** - * The column INFORMATION_SCHEMA.CROSS_REFERENCES.PKTABLE_CATALOG. - */ - public final TableField PKTABLE_CATALOG = createField("PKTABLE_CATALOG", org.jooq.impl.SQLDataType.VARCHAR.length(2147483647), this, ""); - - /** - * The column INFORMATION_SCHEMA.CROSS_REFERENCES.PKTABLE_SCHEMA. - */ - public final TableField PKTABLE_SCHEMA = createField("PKTABLE_SCHEMA", org.jooq.impl.SQLDataType.VARCHAR.length(2147483647), this, ""); - - /** - * The column INFORMATION_SCHEMA.CROSS_REFERENCES.PKTABLE_NAME. - */ - public final TableField PKTABLE_NAME = createField("PKTABLE_NAME", org.jooq.impl.SQLDataType.VARCHAR.length(2147483647), this, ""); - - /** - * The column INFORMATION_SCHEMA.CROSS_REFERENCES.PKCOLUMN_NAME. - */ - public final TableField PKCOLUMN_NAME = createField("PKCOLUMN_NAME", org.jooq.impl.SQLDataType.VARCHAR.length(2147483647), this, ""); - - /** - * The column INFORMATION_SCHEMA.CROSS_REFERENCES.FKTABLE_CATALOG. - */ - public final TableField FKTABLE_CATALOG = createField("FKTABLE_CATALOG", org.jooq.impl.SQLDataType.VARCHAR.length(2147483647), this, ""); - - /** - * The column INFORMATION_SCHEMA.CROSS_REFERENCES.FKTABLE_SCHEMA. - */ - public final TableField FKTABLE_SCHEMA = createField("FKTABLE_SCHEMA", org.jooq.impl.SQLDataType.VARCHAR.length(2147483647), this, ""); - - /** - * The column INFORMATION_SCHEMA.CROSS_REFERENCES.FKTABLE_NAME. - */ - public final TableField FKTABLE_NAME = createField("FKTABLE_NAME", org.jooq.impl.SQLDataType.VARCHAR.length(2147483647), this, ""); - - /** - * The column INFORMATION_SCHEMA.CROSS_REFERENCES.FKCOLUMN_NAME. - */ - public final TableField FKCOLUMN_NAME = createField("FKCOLUMN_NAME", org.jooq.impl.SQLDataType.VARCHAR.length(2147483647), this, ""); - - /** - * The column INFORMATION_SCHEMA.CROSS_REFERENCES.ORDINAL_POSITION. - */ - public final TableField ORDINAL_POSITION = createField("ORDINAL_POSITION", org.jooq.impl.SQLDataType.SMALLINT, this, ""); - - /** - * The column INFORMATION_SCHEMA.CROSS_REFERENCES.UPDATE_RULE. - */ - public final TableField UPDATE_RULE = createField("UPDATE_RULE", org.jooq.impl.SQLDataType.SMALLINT, this, ""); - - /** - * The column INFORMATION_SCHEMA.CROSS_REFERENCES.DELETE_RULE. - */ - public final TableField DELETE_RULE = createField("DELETE_RULE", org.jooq.impl.SQLDataType.SMALLINT, this, ""); - - /** - * The column INFORMATION_SCHEMA.CROSS_REFERENCES.FK_NAME. - */ - public final TableField FK_NAME = createField("FK_NAME", org.jooq.impl.SQLDataType.VARCHAR.length(2147483647), this, ""); - - /** - * The column INFORMATION_SCHEMA.CROSS_REFERENCES.PK_NAME. - */ - public final TableField PK_NAME = createField("PK_NAME", org.jooq.impl.SQLDataType.VARCHAR.length(2147483647), this, ""); - - /** - * The column INFORMATION_SCHEMA.CROSS_REFERENCES.DEFERRABILITY. - */ - public final TableField DEFERRABILITY = createField("DEFERRABILITY", org.jooq.impl.SQLDataType.SMALLINT, this, ""); - - /** - * Create a INFORMATION_SCHEMA.CROSS_REFERENCES table reference - */ - public CrossReferences() { - this("CROSS_REFERENCES", null); - } - - /** - * Create an aliased INFORMATION_SCHEMA.CROSS_REFERENCES table reference - */ - public CrossReferences(String alias) { - this(alias, CROSS_REFERENCES); - } - - private CrossReferences(String alias, Table aliased) { - this(alias, aliased, null); - } - - private CrossReferences(String alias, Table aliased, Field[] parameters) { - super(alias, InformationSchema.INFORMATION_SCHEMA, aliased, parameters, ""); - } - - /** - * {@inheritDoc} - */ - @Override - public CrossReferences as(String alias) { - return new CrossReferences(alias, this); - } - - /** - * Rename this table - */ - public CrossReferences rename(String name) { - return new CrossReferences(name, null); - } -} diff --git a/jooq-spring/src/main/java/com/baeldung/jooq/introduction/db/information_schema/tables/Domains.java b/jooq-spring/src/main/java/com/baeldung/jooq/introduction/db/information_schema/tables/Domains.java deleted file mode 100644 index 597f3d2e2b..0000000000 --- a/jooq-spring/src/main/java/com/baeldung/jooq/introduction/db/information_schema/tables/Domains.java +++ /dev/null @@ -1,152 +0,0 @@ -/** - * This class is generated by jOOQ - */ -package com.baeldung.jooq.introduction.db.information_schema.tables; - - -import com.baeldung.jooq.introduction.db.information_schema.InformationSchema; -import com.baeldung.jooq.introduction.db.information_schema.tables.records.DomainsRecord; - -import javax.annotation.Generated; - -import org.jooq.Field; -import org.jooq.Table; -import org.jooq.TableField; -import org.jooq.impl.TableImpl; - - -/** - * This class is generated by jOOQ. - */ -@Generated( - value = { - "http://www.jooq.org", - "jOOQ version:3.7.3" - }, - comments = "This class is generated by jOOQ" -) -@SuppressWarnings({ "all", "unchecked", "rawtypes" }) -public class Domains extends TableImpl { - - private static final long serialVersionUID = -742107682; - - /** - * The reference instance of INFORMATION_SCHEMA.DOMAINS - */ - public static final Domains DOMAINS = new Domains(); - - /** - * The class holding records for this type - */ - @Override - public Class getRecordType() { - return DomainsRecord.class; - } - - /** - * The column INFORMATION_SCHEMA.DOMAINS.DOMAIN_CATALOG. - */ - public final TableField DOMAIN_CATALOG = createField("DOMAIN_CATALOG", org.jooq.impl.SQLDataType.VARCHAR.length(2147483647), this, ""); - - /** - * The column INFORMATION_SCHEMA.DOMAINS.DOMAIN_SCHEMA. - */ - public final TableField DOMAIN_SCHEMA = createField("DOMAIN_SCHEMA", org.jooq.impl.SQLDataType.VARCHAR.length(2147483647), this, ""); - - /** - * The column INFORMATION_SCHEMA.DOMAINS.DOMAIN_NAME. - */ - public final TableField DOMAIN_NAME = createField("DOMAIN_NAME", org.jooq.impl.SQLDataType.VARCHAR.length(2147483647), this, ""); - - /** - * The column INFORMATION_SCHEMA.DOMAINS.COLUMN_DEFAULT. - */ - public final TableField COLUMN_DEFAULT = createField("COLUMN_DEFAULT", org.jooq.impl.SQLDataType.VARCHAR.length(2147483647), this, ""); - - /** - * The column INFORMATION_SCHEMA.DOMAINS.IS_NULLABLE. - */ - public final TableField IS_NULLABLE = createField("IS_NULLABLE", org.jooq.impl.SQLDataType.VARCHAR.length(2147483647), this, ""); - - /** - * The column INFORMATION_SCHEMA.DOMAINS.DATA_TYPE. - */ - public final TableField DATA_TYPE = createField("DATA_TYPE", org.jooq.impl.SQLDataType.INTEGER, this, ""); - - /** - * The column INFORMATION_SCHEMA.DOMAINS.PRECISION. - */ - public final TableField PRECISION = createField("PRECISION", org.jooq.impl.SQLDataType.INTEGER, this, ""); - - /** - * The column INFORMATION_SCHEMA.DOMAINS.SCALE. - */ - public final TableField SCALE = createField("SCALE", org.jooq.impl.SQLDataType.INTEGER, this, ""); - - /** - * The column INFORMATION_SCHEMA.DOMAINS.TYPE_NAME. - */ - public final TableField TYPE_NAME = createField("TYPE_NAME", org.jooq.impl.SQLDataType.VARCHAR.length(2147483647), this, ""); - - /** - * The column INFORMATION_SCHEMA.DOMAINS.SELECTIVITY. - */ - public final TableField SELECTIVITY = createField("SELECTIVITY", org.jooq.impl.SQLDataType.INTEGER, this, ""); - - /** - * The column INFORMATION_SCHEMA.DOMAINS.CHECK_CONSTRAINT. - */ - public final TableField CHECK_CONSTRAINT = createField("CHECK_CONSTRAINT", org.jooq.impl.SQLDataType.VARCHAR.length(2147483647), this, ""); - - /** - * The column INFORMATION_SCHEMA.DOMAINS.REMARKS. - */ - public final TableField REMARKS = createField("REMARKS", org.jooq.impl.SQLDataType.VARCHAR.length(2147483647), this, ""); - - /** - * The column INFORMATION_SCHEMA.DOMAINS.SQL. - */ - public final TableField SQL = createField("SQL", org.jooq.impl.SQLDataType.VARCHAR.length(2147483647), this, ""); - - /** - * The column INFORMATION_SCHEMA.DOMAINS.ID. - */ - public final TableField ID = createField("ID", org.jooq.impl.SQLDataType.INTEGER, this, ""); - - /** - * Create a INFORMATION_SCHEMA.DOMAINS table reference - */ - public Domains() { - this("DOMAINS", null); - } - - /** - * Create an aliased INFORMATION_SCHEMA.DOMAINS table reference - */ - public Domains(String alias) { - this(alias, DOMAINS); - } - - private Domains(String alias, Table aliased) { - this(alias, aliased, null); - } - - private Domains(String alias, Table aliased, Field[] parameters) { - super(alias, InformationSchema.INFORMATION_SCHEMA, aliased, parameters, ""); - } - - /** - * {@inheritDoc} - */ - @Override - public Domains as(String alias) { - return new Domains(alias, this); - } - - /** - * Rename this table - */ - public Domains rename(String name) { - return new Domains(name, null); - } -} diff --git a/jooq-spring/src/main/java/com/baeldung/jooq/introduction/db/information_schema/tables/FunctionAliases.java b/jooq-spring/src/main/java/com/baeldung/jooq/introduction/db/information_schema/tables/FunctionAliases.java deleted file mode 100644 index 8b85980d38..0000000000 --- a/jooq-spring/src/main/java/com/baeldung/jooq/introduction/db/information_schema/tables/FunctionAliases.java +++ /dev/null @@ -1,142 +0,0 @@ -/** - * This class is generated by jOOQ - */ -package com.baeldung.jooq.introduction.db.information_schema.tables; - - -import com.baeldung.jooq.introduction.db.information_schema.InformationSchema; -import com.baeldung.jooq.introduction.db.information_schema.tables.records.FunctionAliasesRecord; - -import javax.annotation.Generated; - -import org.jooq.Field; -import org.jooq.Table; -import org.jooq.TableField; -import org.jooq.impl.TableImpl; - - -/** - * This class is generated by jOOQ. - */ -@Generated( - value = { - "http://www.jooq.org", - "jOOQ version:3.7.3" - }, - comments = "This class is generated by jOOQ" -) -@SuppressWarnings({ "all", "unchecked", "rawtypes" }) -public class FunctionAliases extends TableImpl { - - private static final long serialVersionUID = -232882186; - - /** - * The reference instance of INFORMATION_SCHEMA.FUNCTION_ALIASES - */ - public static final FunctionAliases FUNCTION_ALIASES = new FunctionAliases(); - - /** - * The class holding records for this type - */ - @Override - public Class getRecordType() { - return FunctionAliasesRecord.class; - } - - /** - * The column INFORMATION_SCHEMA.FUNCTION_ALIASES.ALIAS_CATALOG. - */ - public final TableField ALIAS_CATALOG = createField("ALIAS_CATALOG", org.jooq.impl.SQLDataType.VARCHAR.length(2147483647), this, ""); - - /** - * The column INFORMATION_SCHEMA.FUNCTION_ALIASES.ALIAS_SCHEMA. - */ - public final TableField ALIAS_SCHEMA = createField("ALIAS_SCHEMA", org.jooq.impl.SQLDataType.VARCHAR.length(2147483647), this, ""); - - /** - * The column INFORMATION_SCHEMA.FUNCTION_ALIASES.ALIAS_NAME. - */ - public final TableField ALIAS_NAME = createField("ALIAS_NAME", org.jooq.impl.SQLDataType.VARCHAR.length(2147483647), this, ""); - - /** - * The column INFORMATION_SCHEMA.FUNCTION_ALIASES.JAVA_CLASS. - */ - public final TableField JAVA_CLASS = createField("JAVA_CLASS", org.jooq.impl.SQLDataType.VARCHAR.length(2147483647), this, ""); - - /** - * The column INFORMATION_SCHEMA.FUNCTION_ALIASES.JAVA_METHOD. - */ - public final TableField JAVA_METHOD = createField("JAVA_METHOD", org.jooq.impl.SQLDataType.VARCHAR.length(2147483647), this, ""); - - /** - * The column INFORMATION_SCHEMA.FUNCTION_ALIASES.DATA_TYPE. - */ - public final TableField DATA_TYPE = createField("DATA_TYPE", org.jooq.impl.SQLDataType.INTEGER, this, ""); - - /** - * The column INFORMATION_SCHEMA.FUNCTION_ALIASES.TYPE_NAME. - */ - public final TableField TYPE_NAME = createField("TYPE_NAME", org.jooq.impl.SQLDataType.VARCHAR.length(2147483647), this, ""); - - /** - * The column INFORMATION_SCHEMA.FUNCTION_ALIASES.COLUMN_COUNT. - */ - public final TableField COLUMN_COUNT = createField("COLUMN_COUNT", org.jooq.impl.SQLDataType.INTEGER, this, ""); - - /** - * The column INFORMATION_SCHEMA.FUNCTION_ALIASES.RETURNS_RESULT. - */ - public final TableField RETURNS_RESULT = createField("RETURNS_RESULT", org.jooq.impl.SQLDataType.SMALLINT, this, ""); - - /** - * The column INFORMATION_SCHEMA.FUNCTION_ALIASES.REMARKS. - */ - public final TableField REMARKS = createField("REMARKS", org.jooq.impl.SQLDataType.VARCHAR.length(2147483647), this, ""); - - /** - * The column INFORMATION_SCHEMA.FUNCTION_ALIASES.ID. - */ - public final TableField ID = createField("ID", org.jooq.impl.SQLDataType.INTEGER, this, ""); - - /** - * The column INFORMATION_SCHEMA.FUNCTION_ALIASES.SOURCE. - */ - public final TableField SOURCE = createField("SOURCE", org.jooq.impl.SQLDataType.VARCHAR.length(2147483647), this, ""); - - /** - * Create a INFORMATION_SCHEMA.FUNCTION_ALIASES table reference - */ - public FunctionAliases() { - this("FUNCTION_ALIASES", null); - } - - /** - * Create an aliased INFORMATION_SCHEMA.FUNCTION_ALIASES table reference - */ - public FunctionAliases(String alias) { - this(alias, FUNCTION_ALIASES); - } - - private FunctionAliases(String alias, Table aliased) { - this(alias, aliased, null); - } - - private FunctionAliases(String alias, Table aliased, Field[] parameters) { - super(alias, InformationSchema.INFORMATION_SCHEMA, aliased, parameters, ""); - } - - /** - * {@inheritDoc} - */ - @Override - public FunctionAliases as(String alias) { - return new FunctionAliases(alias, this); - } - - /** - * Rename this table - */ - public FunctionAliases rename(String name) { - return new FunctionAliases(name, null); - } -} diff --git a/jooq-spring/src/main/java/com/baeldung/jooq/introduction/db/information_schema/tables/FunctionColumns.java b/jooq-spring/src/main/java/com/baeldung/jooq/introduction/db/information_schema/tables/FunctionColumns.java deleted file mode 100644 index b5df94b4f0..0000000000 --- a/jooq-spring/src/main/java/com/baeldung/jooq/introduction/db/information_schema/tables/FunctionColumns.java +++ /dev/null @@ -1,167 +0,0 @@ -/** - * This class is generated by jOOQ - */ -package com.baeldung.jooq.introduction.db.information_schema.tables; - - -import com.baeldung.jooq.introduction.db.information_schema.InformationSchema; -import com.baeldung.jooq.introduction.db.information_schema.tables.records.FunctionColumnsRecord; - -import javax.annotation.Generated; - -import org.jooq.Field; -import org.jooq.Table; -import org.jooq.TableField; -import org.jooq.impl.TableImpl; - - -/** - * This class is generated by jOOQ. - */ -@Generated( - value = { - "http://www.jooq.org", - "jOOQ version:3.7.3" - }, - comments = "This class is generated by jOOQ" -) -@SuppressWarnings({ "all", "unchecked", "rawtypes" }) -public class FunctionColumns extends TableImpl { - - private static final long serialVersionUID = -406719584; - - /** - * The reference instance of INFORMATION_SCHEMA.FUNCTION_COLUMNS - */ - public static final FunctionColumns FUNCTION_COLUMNS = new FunctionColumns(); - - /** - * The class holding records for this type - */ - @Override - public Class getRecordType() { - return FunctionColumnsRecord.class; - } - - /** - * The column INFORMATION_SCHEMA.FUNCTION_COLUMNS.ALIAS_CATALOG. - */ - public final TableField ALIAS_CATALOG = createField("ALIAS_CATALOG", org.jooq.impl.SQLDataType.VARCHAR.length(2147483647), this, ""); - - /** - * The column INFORMATION_SCHEMA.FUNCTION_COLUMNS.ALIAS_SCHEMA. - */ - public final TableField ALIAS_SCHEMA = createField("ALIAS_SCHEMA", org.jooq.impl.SQLDataType.VARCHAR.length(2147483647), this, ""); - - /** - * The column INFORMATION_SCHEMA.FUNCTION_COLUMNS.ALIAS_NAME. - */ - public final TableField ALIAS_NAME = createField("ALIAS_NAME", org.jooq.impl.SQLDataType.VARCHAR.length(2147483647), this, ""); - - /** - * The column INFORMATION_SCHEMA.FUNCTION_COLUMNS.JAVA_CLASS. - */ - public final TableField JAVA_CLASS = createField("JAVA_CLASS", org.jooq.impl.SQLDataType.VARCHAR.length(2147483647), this, ""); - - /** - * The column INFORMATION_SCHEMA.FUNCTION_COLUMNS.JAVA_METHOD. - */ - public final TableField JAVA_METHOD = createField("JAVA_METHOD", org.jooq.impl.SQLDataType.VARCHAR.length(2147483647), this, ""); - - /** - * The column INFORMATION_SCHEMA.FUNCTION_COLUMNS.COLUMN_COUNT. - */ - public final TableField COLUMN_COUNT = createField("COLUMN_COUNT", org.jooq.impl.SQLDataType.INTEGER, this, ""); - - /** - * The column INFORMATION_SCHEMA.FUNCTION_COLUMNS.POS. - */ - public final TableField POS = createField("POS", org.jooq.impl.SQLDataType.INTEGER, this, ""); - - /** - * The column INFORMATION_SCHEMA.FUNCTION_COLUMNS.COLUMN_NAME. - */ - public final TableField COLUMN_NAME = createField("COLUMN_NAME", org.jooq.impl.SQLDataType.VARCHAR.length(2147483647), this, ""); - - /** - * The column INFORMATION_SCHEMA.FUNCTION_COLUMNS.DATA_TYPE. - */ - public final TableField DATA_TYPE = createField("DATA_TYPE", org.jooq.impl.SQLDataType.INTEGER, this, ""); - - /** - * The column INFORMATION_SCHEMA.FUNCTION_COLUMNS.TYPE_NAME. - */ - public final TableField TYPE_NAME = createField("TYPE_NAME", org.jooq.impl.SQLDataType.VARCHAR.length(2147483647), this, ""); - - /** - * The column INFORMATION_SCHEMA.FUNCTION_COLUMNS.PRECISION. - */ - public final TableField PRECISION = createField("PRECISION", org.jooq.impl.SQLDataType.INTEGER, this, ""); - - /** - * The column INFORMATION_SCHEMA.FUNCTION_COLUMNS.SCALE. - */ - public final TableField SCALE = createField("SCALE", org.jooq.impl.SQLDataType.SMALLINT, this, ""); - - /** - * The column INFORMATION_SCHEMA.FUNCTION_COLUMNS.RADIX. - */ - public final TableField RADIX = createField("RADIX", org.jooq.impl.SQLDataType.SMALLINT, this, ""); - - /** - * The column INFORMATION_SCHEMA.FUNCTION_COLUMNS.NULLABLE. - */ - public final TableField NULLABLE = createField("NULLABLE", org.jooq.impl.SQLDataType.SMALLINT, this, ""); - - /** - * The column INFORMATION_SCHEMA.FUNCTION_COLUMNS.COLUMN_TYPE. - */ - public final TableField COLUMN_TYPE = createField("COLUMN_TYPE", org.jooq.impl.SQLDataType.SMALLINT, this, ""); - - /** - * The column INFORMATION_SCHEMA.FUNCTION_COLUMNS.REMARKS. - */ - public final TableField REMARKS = createField("REMARKS", org.jooq.impl.SQLDataType.VARCHAR.length(2147483647), this, ""); - - /** - * The column INFORMATION_SCHEMA.FUNCTION_COLUMNS.COLUMN_DEFAULT. - */ - public final TableField COLUMN_DEFAULT = createField("COLUMN_DEFAULT", org.jooq.impl.SQLDataType.VARCHAR.length(2147483647), this, ""); - - /** - * Create a INFORMATION_SCHEMA.FUNCTION_COLUMNS table reference - */ - public FunctionColumns() { - this("FUNCTION_COLUMNS", null); - } - - /** - * Create an aliased INFORMATION_SCHEMA.FUNCTION_COLUMNS table reference - */ - public FunctionColumns(String alias) { - this(alias, FUNCTION_COLUMNS); - } - - private FunctionColumns(String alias, Table aliased) { - this(alias, aliased, null); - } - - private FunctionColumns(String alias, Table aliased, Field[] parameters) { - super(alias, InformationSchema.INFORMATION_SCHEMA, aliased, parameters, ""); - } - - /** - * {@inheritDoc} - */ - @Override - public FunctionColumns as(String alias) { - return new FunctionColumns(alias, this); - } - - /** - * Rename this table - */ - public FunctionColumns rename(String name) { - return new FunctionColumns(name, null); - } -} diff --git a/jooq-spring/src/main/java/com/baeldung/jooq/introduction/db/information_schema/tables/Help.java b/jooq-spring/src/main/java/com/baeldung/jooq/introduction/db/information_schema/tables/Help.java deleted file mode 100644 index 449eed4f72..0000000000 --- a/jooq-spring/src/main/java/com/baeldung/jooq/introduction/db/information_schema/tables/Help.java +++ /dev/null @@ -1,107 +0,0 @@ -/** - * This class is generated by jOOQ - */ -package com.baeldung.jooq.introduction.db.information_schema.tables; - - -import com.baeldung.jooq.introduction.db.information_schema.InformationSchema; -import com.baeldung.jooq.introduction.db.information_schema.tables.records.HelpRecord; - -import javax.annotation.Generated; - -import org.jooq.Field; -import org.jooq.Table; -import org.jooq.TableField; -import org.jooq.impl.TableImpl; - - -/** - * This class is generated by jOOQ. - */ -@Generated( - value = { - "http://www.jooq.org", - "jOOQ version:3.7.3" - }, - comments = "This class is generated by jOOQ" -) -@SuppressWarnings({ "all", "unchecked", "rawtypes" }) -public class Help extends TableImpl { - - private static final long serialVersionUID = 1402170374; - - /** - * The reference instance of INFORMATION_SCHEMA.HELP - */ - public static final Help HELP = new Help(); - - /** - * The class holding records for this type - */ - @Override - public Class getRecordType() { - return HelpRecord.class; - } - - /** - * The column INFORMATION_SCHEMA.HELP.ID. - */ - public final TableField ID = createField("ID", org.jooq.impl.SQLDataType.INTEGER, this, ""); - - /** - * The column INFORMATION_SCHEMA.HELP.SECTION. - */ - public final TableField SECTION = createField("SECTION", org.jooq.impl.SQLDataType.VARCHAR.length(2147483647), this, ""); - - /** - * The column INFORMATION_SCHEMA.HELP.TOPIC. - */ - public final TableField TOPIC = createField("TOPIC", org.jooq.impl.SQLDataType.VARCHAR.length(2147483647), this, ""); - - /** - * The column INFORMATION_SCHEMA.HELP.SYNTAX. - */ - public final TableField SYNTAX = createField("SYNTAX", org.jooq.impl.SQLDataType.VARCHAR.length(2147483647), this, ""); - - /** - * The column INFORMATION_SCHEMA.HELP.TEXT. - */ - public final TableField TEXT = createField("TEXT", org.jooq.impl.SQLDataType.VARCHAR.length(2147483647), this, ""); - - /** - * Create a INFORMATION_SCHEMA.HELP table reference - */ - public Help() { - this("HELP", null); - } - - /** - * Create an aliased INFORMATION_SCHEMA.HELP table reference - */ - public Help(String alias) { - this(alias, HELP); - } - - private Help(String alias, Table aliased) { - this(alias, aliased, null); - } - - private Help(String alias, Table aliased, Field[] parameters) { - super(alias, InformationSchema.INFORMATION_SCHEMA, aliased, parameters, ""); - } - - /** - * {@inheritDoc} - */ - @Override - public Help as(String alias) { - return new Help(alias, this); - } - - /** - * Rename this table - */ - public Help rename(String name) { - return new Help(name, null); - } -} diff --git a/jooq-spring/src/main/java/com/baeldung/jooq/introduction/db/information_schema/tables/InDoubt.java b/jooq-spring/src/main/java/com/baeldung/jooq/introduction/db/information_schema/tables/InDoubt.java deleted file mode 100644 index c37e06e47e..0000000000 --- a/jooq-spring/src/main/java/com/baeldung/jooq/introduction/db/information_schema/tables/InDoubt.java +++ /dev/null @@ -1,92 +0,0 @@ -/** - * This class is generated by jOOQ - */ -package com.baeldung.jooq.introduction.db.information_schema.tables; - - -import com.baeldung.jooq.introduction.db.information_schema.InformationSchema; -import com.baeldung.jooq.introduction.db.information_schema.tables.records.InDoubtRecord; - -import javax.annotation.Generated; - -import org.jooq.Field; -import org.jooq.Table; -import org.jooq.TableField; -import org.jooq.impl.TableImpl; - - -/** - * This class is generated by jOOQ. - */ -@Generated( - value = { - "http://www.jooq.org", - "jOOQ version:3.7.3" - }, - comments = "This class is generated by jOOQ" -) -@SuppressWarnings({ "all", "unchecked", "rawtypes" }) -public class InDoubt extends TableImpl { - - private static final long serialVersionUID = 284524946; - - /** - * The reference instance of INFORMATION_SCHEMA.IN_DOUBT - */ - public static final InDoubt IN_DOUBT = new InDoubt(); - - /** - * The class holding records for this type - */ - @Override - public Class getRecordType() { - return InDoubtRecord.class; - } - - /** - * The column INFORMATION_SCHEMA.IN_DOUBT.TRANSACTION. - */ - public final TableField TRANSACTION = createField("TRANSACTION", org.jooq.impl.SQLDataType.VARCHAR.length(2147483647), this, ""); - - /** - * The column INFORMATION_SCHEMA.IN_DOUBT.STATE. - */ - public final TableField STATE = createField("STATE", org.jooq.impl.SQLDataType.VARCHAR.length(2147483647), this, ""); - - /** - * Create a INFORMATION_SCHEMA.IN_DOUBT table reference - */ - public InDoubt() { - this("IN_DOUBT", null); - } - - /** - * Create an aliased INFORMATION_SCHEMA.IN_DOUBT table reference - */ - public InDoubt(String alias) { - this(alias, IN_DOUBT); - } - - private InDoubt(String alias, Table aliased) { - this(alias, aliased, null); - } - - private InDoubt(String alias, Table aliased, Field[] parameters) { - super(alias, InformationSchema.INFORMATION_SCHEMA, aliased, parameters, ""); - } - - /** - * {@inheritDoc} - */ - @Override - public InDoubt as(String alias) { - return new InDoubt(alias, this); - } - - /** - * Rename this table - */ - public InDoubt rename(String name) { - return new InDoubt(name, null); - } -} diff --git a/jooq-spring/src/main/java/com/baeldung/jooq/introduction/db/information_schema/tables/Indexes.java b/jooq-spring/src/main/java/com/baeldung/jooq/introduction/db/information_schema/tables/Indexes.java deleted file mode 100644 index 1cc3b176a2..0000000000 --- a/jooq-spring/src/main/java/com/baeldung/jooq/introduction/db/information_schema/tables/Indexes.java +++ /dev/null @@ -1,187 +0,0 @@ -/** - * This class is generated by jOOQ - */ -package com.baeldung.jooq.introduction.db.information_schema.tables; - - -import com.baeldung.jooq.introduction.db.information_schema.InformationSchema; -import com.baeldung.jooq.introduction.db.information_schema.tables.records.IndexesRecord; - -import javax.annotation.Generated; - -import org.jooq.Field; -import org.jooq.Table; -import org.jooq.TableField; -import org.jooq.impl.TableImpl; - - -/** - * This class is generated by jOOQ. - */ -@Generated( - value = { - "http://www.jooq.org", - "jOOQ version:3.7.3" - }, - comments = "This class is generated by jOOQ" -) -@SuppressWarnings({ "all", "unchecked", "rawtypes" }) -public class Indexes extends TableImpl { - - private static final long serialVersionUID = 2077967696; - - /** - * The reference instance of INFORMATION_SCHEMA.INDEXES - */ - public static final Indexes INDEXES = new Indexes(); - - /** - * The class holding records for this type - */ - @Override - public Class getRecordType() { - return IndexesRecord.class; - } - - /** - * The column INFORMATION_SCHEMA.INDEXES.TABLE_CATALOG. - */ - public final TableField TABLE_CATALOG = createField("TABLE_CATALOG", org.jooq.impl.SQLDataType.VARCHAR.length(2147483647), this, ""); - - /** - * The column INFORMATION_SCHEMA.INDEXES.TABLE_SCHEMA. - */ - public final TableField TABLE_SCHEMA = createField("TABLE_SCHEMA", org.jooq.impl.SQLDataType.VARCHAR.length(2147483647), this, ""); - - /** - * The column INFORMATION_SCHEMA.INDEXES.TABLE_NAME. - */ - public final TableField TABLE_NAME = createField("TABLE_NAME", org.jooq.impl.SQLDataType.VARCHAR.length(2147483647), this, ""); - - /** - * The column INFORMATION_SCHEMA.INDEXES.NON_UNIQUE. - */ - public final TableField NON_UNIQUE = createField("NON_UNIQUE", org.jooq.impl.SQLDataType.BOOLEAN, this, ""); - - /** - * The column INFORMATION_SCHEMA.INDEXES.INDEX_NAME. - */ - public final TableField INDEX_NAME = createField("INDEX_NAME", org.jooq.impl.SQLDataType.VARCHAR.length(2147483647), this, ""); - - /** - * The column INFORMATION_SCHEMA.INDEXES.ORDINAL_POSITION. - */ - public final TableField ORDINAL_POSITION = createField("ORDINAL_POSITION", org.jooq.impl.SQLDataType.SMALLINT, this, ""); - - /** - * The column INFORMATION_SCHEMA.INDEXES.COLUMN_NAME. - */ - public final TableField COLUMN_NAME = createField("COLUMN_NAME", org.jooq.impl.SQLDataType.VARCHAR.length(2147483647), this, ""); - - /** - * The column INFORMATION_SCHEMA.INDEXES.CARDINALITY. - */ - public final TableField CARDINALITY = createField("CARDINALITY", org.jooq.impl.SQLDataType.INTEGER, this, ""); - - /** - * The column INFORMATION_SCHEMA.INDEXES.PRIMARY_KEY. - */ - public final TableField PRIMARY_KEY = createField("PRIMARY_KEY", org.jooq.impl.SQLDataType.BOOLEAN, this, ""); - - /** - * The column INFORMATION_SCHEMA.INDEXES.INDEX_TYPE_NAME. - */ - public final TableField INDEX_TYPE_NAME = createField("INDEX_TYPE_NAME", org.jooq.impl.SQLDataType.VARCHAR.length(2147483647), this, ""); - - /** - * The column INFORMATION_SCHEMA.INDEXES.IS_GENERATED. - */ - public final TableField IS_GENERATED = createField("IS_GENERATED", org.jooq.impl.SQLDataType.BOOLEAN, this, ""); - - /** - * The column INFORMATION_SCHEMA.INDEXES.INDEX_TYPE. - */ - public final TableField INDEX_TYPE = createField("INDEX_TYPE", org.jooq.impl.SQLDataType.SMALLINT, this, ""); - - /** - * The column INFORMATION_SCHEMA.INDEXES.ASC_OR_DESC. - */ - public final TableField ASC_OR_DESC = createField("ASC_OR_DESC", org.jooq.impl.SQLDataType.VARCHAR.length(2147483647), this, ""); - - /** - * The column INFORMATION_SCHEMA.INDEXES.PAGES. - */ - public final TableField PAGES = createField("PAGES", org.jooq.impl.SQLDataType.INTEGER, this, ""); - - /** - * The column INFORMATION_SCHEMA.INDEXES.FILTER_CONDITION. - */ - public final TableField FILTER_CONDITION = createField("FILTER_CONDITION", org.jooq.impl.SQLDataType.VARCHAR.length(2147483647), this, ""); - - /** - * The column INFORMATION_SCHEMA.INDEXES.REMARKS. - */ - public final TableField REMARKS = createField("REMARKS", org.jooq.impl.SQLDataType.VARCHAR.length(2147483647), this, ""); - - /** - * The column INFORMATION_SCHEMA.INDEXES.SQL. - */ - public final TableField SQL = createField("SQL", org.jooq.impl.SQLDataType.VARCHAR.length(2147483647), this, ""); - - /** - * The column INFORMATION_SCHEMA.INDEXES.ID. - */ - public final TableField ID = createField("ID", org.jooq.impl.SQLDataType.INTEGER, this, ""); - - /** - * The column INFORMATION_SCHEMA.INDEXES.SORT_TYPE. - */ - public final TableField SORT_TYPE = createField("SORT_TYPE", org.jooq.impl.SQLDataType.INTEGER, this, ""); - - /** - * The column INFORMATION_SCHEMA.INDEXES.CONSTRAINT_NAME. - */ - public final TableField CONSTRAINT_NAME = createField("CONSTRAINT_NAME", org.jooq.impl.SQLDataType.VARCHAR.length(2147483647), this, ""); - - /** - * The column INFORMATION_SCHEMA.INDEXES.INDEX_CLASS. - */ - public final TableField INDEX_CLASS = createField("INDEX_CLASS", org.jooq.impl.SQLDataType.VARCHAR.length(2147483647), this, ""); - - /** - * Create a INFORMATION_SCHEMA.INDEXES table reference - */ - public Indexes() { - this("INDEXES", null); - } - - /** - * Create an aliased INFORMATION_SCHEMA.INDEXES table reference - */ - public Indexes(String alias) { - this(alias, INDEXES); - } - - private Indexes(String alias, Table aliased) { - this(alias, aliased, null); - } - - private Indexes(String alias, Table aliased, Field[] parameters) { - super(alias, InformationSchema.INFORMATION_SCHEMA, aliased, parameters, ""); - } - - /** - * {@inheritDoc} - */ - @Override - public Indexes as(String alias) { - return new Indexes(alias, this); - } - - /** - * Rename this table - */ - public Indexes rename(String name) { - return new Indexes(name, null); - } -} diff --git a/jooq-spring/src/main/java/com/baeldung/jooq/introduction/db/information_schema/tables/Locks.java b/jooq-spring/src/main/java/com/baeldung/jooq/introduction/db/information_schema/tables/Locks.java deleted file mode 100644 index df9f900f5c..0000000000 --- a/jooq-spring/src/main/java/com/baeldung/jooq/introduction/db/information_schema/tables/Locks.java +++ /dev/null @@ -1,102 +0,0 @@ -/** - * This class is generated by jOOQ - */ -package com.baeldung.jooq.introduction.db.information_schema.tables; - - -import com.baeldung.jooq.introduction.db.information_schema.InformationSchema; -import com.baeldung.jooq.introduction.db.information_schema.tables.records.LocksRecord; - -import javax.annotation.Generated; - -import org.jooq.Field; -import org.jooq.Table; -import org.jooq.TableField; -import org.jooq.impl.TableImpl; - - -/** - * This class is generated by jOOQ. - */ -@Generated( - value = { - "http://www.jooq.org", - "jOOQ version:3.7.3" - }, - comments = "This class is generated by jOOQ" -) -@SuppressWarnings({ "all", "unchecked", "rawtypes" }) -public class Locks extends TableImpl { - - private static final long serialVersionUID = 169116031; - - /** - * The reference instance of INFORMATION_SCHEMA.LOCKS - */ - public static final Locks LOCKS = new Locks(); - - /** - * The class holding records for this type - */ - @Override - public Class getRecordType() { - return LocksRecord.class; - } - - /** - * The column INFORMATION_SCHEMA.LOCKS.TABLE_SCHEMA. - */ - public final TableField TABLE_SCHEMA = createField("TABLE_SCHEMA", org.jooq.impl.SQLDataType.VARCHAR.length(2147483647), this, ""); - - /** - * The column INFORMATION_SCHEMA.LOCKS.TABLE_NAME. - */ - public final TableField TABLE_NAME = createField("TABLE_NAME", org.jooq.impl.SQLDataType.VARCHAR.length(2147483647), this, ""); - - /** - * The column INFORMATION_SCHEMA.LOCKS.SESSION_ID. - */ - public final TableField SESSION_ID = createField("SESSION_ID", org.jooq.impl.SQLDataType.INTEGER, this, ""); - - /** - * The column INFORMATION_SCHEMA.LOCKS.LOCK_TYPE. - */ - public final TableField LOCK_TYPE = createField("LOCK_TYPE", org.jooq.impl.SQLDataType.VARCHAR.length(2147483647), this, ""); - - /** - * Create a INFORMATION_SCHEMA.LOCKS table reference - */ - public Locks() { - this("LOCKS", null); - } - - /** - * Create an aliased INFORMATION_SCHEMA.LOCKS table reference - */ - public Locks(String alias) { - this(alias, LOCKS); - } - - private Locks(String alias, Table aliased) { - this(alias, aliased, null); - } - - private Locks(String alias, Table aliased, Field[] parameters) { - super(alias, InformationSchema.INFORMATION_SCHEMA, aliased, parameters, ""); - } - - /** - * {@inheritDoc} - */ - @Override - public Locks as(String alias) { - return new Locks(alias, this); - } - - /** - * Rename this table - */ - public Locks rename(String name) { - return new Locks(name, null); - } -} diff --git a/jooq-spring/src/main/java/com/baeldung/jooq/introduction/db/information_schema/tables/QueryStatistics.java b/jooq-spring/src/main/java/com/baeldung/jooq/introduction/db/information_schema/tables/QueryStatistics.java deleted file mode 100644 index 6c65dd7de8..0000000000 --- a/jooq-spring/src/main/java/com/baeldung/jooq/introduction/db/information_schema/tables/QueryStatistics.java +++ /dev/null @@ -1,142 +0,0 @@ -/** - * This class is generated by jOOQ - */ -package com.baeldung.jooq.introduction.db.information_schema.tables; - - -import com.baeldung.jooq.introduction.db.information_schema.InformationSchema; -import com.baeldung.jooq.introduction.db.information_schema.tables.records.QueryStatisticsRecord; - -import javax.annotation.Generated; - -import org.jooq.Field; -import org.jooq.Table; -import org.jooq.TableField; -import org.jooq.impl.TableImpl; - - -/** - * This class is generated by jOOQ. - */ -@Generated( - value = { - "http://www.jooq.org", - "jOOQ version:3.7.3" - }, - comments = "This class is generated by jOOQ" -) -@SuppressWarnings({ "all", "unchecked", "rawtypes" }) -public class QueryStatistics extends TableImpl { - - private static final long serialVersionUID = -1610174414; - - /** - * The reference instance of INFORMATION_SCHEMA.QUERY_STATISTICS - */ - public static final QueryStatistics QUERY_STATISTICS = new QueryStatistics(); - - /** - * The class holding records for this type - */ - @Override - public Class getRecordType() { - return QueryStatisticsRecord.class; - } - - /** - * The column INFORMATION_SCHEMA.QUERY_STATISTICS.SQL_STATEMENT. - */ - public final TableField SQL_STATEMENT = createField("SQL_STATEMENT", org.jooq.impl.SQLDataType.VARCHAR.length(2147483647), this, ""); - - /** - * The column INFORMATION_SCHEMA.QUERY_STATISTICS.EXECUTION_COUNT. - */ - public final TableField EXECUTION_COUNT = createField("EXECUTION_COUNT", org.jooq.impl.SQLDataType.INTEGER, this, ""); - - /** - * The column INFORMATION_SCHEMA.QUERY_STATISTICS.MIN_EXECUTION_TIME. - */ - public final TableField MIN_EXECUTION_TIME = createField("MIN_EXECUTION_TIME", org.jooq.impl.SQLDataType.BIGINT, this, ""); - - /** - * The column INFORMATION_SCHEMA.QUERY_STATISTICS.MAX_EXECUTION_TIME. - */ - public final TableField MAX_EXECUTION_TIME = createField("MAX_EXECUTION_TIME", org.jooq.impl.SQLDataType.BIGINT, this, ""); - - /** - * The column INFORMATION_SCHEMA.QUERY_STATISTICS.CUMULATIVE_EXECUTION_TIME. - */ - public final TableField CUMULATIVE_EXECUTION_TIME = createField("CUMULATIVE_EXECUTION_TIME", org.jooq.impl.SQLDataType.BIGINT, this, ""); - - /** - * The column INFORMATION_SCHEMA.QUERY_STATISTICS.AVERAGE_EXECUTION_TIME. - */ - public final TableField AVERAGE_EXECUTION_TIME = createField("AVERAGE_EXECUTION_TIME", org.jooq.impl.SQLDataType.DOUBLE, this, ""); - - /** - * The column INFORMATION_SCHEMA.QUERY_STATISTICS.STD_DEV_EXECUTION_TIME. - */ - public final TableField STD_DEV_EXECUTION_TIME = createField("STD_DEV_EXECUTION_TIME", org.jooq.impl.SQLDataType.DOUBLE, this, ""); - - /** - * The column INFORMATION_SCHEMA.QUERY_STATISTICS.MIN_ROW_COUNT. - */ - public final TableField MIN_ROW_COUNT = createField("MIN_ROW_COUNT", org.jooq.impl.SQLDataType.INTEGER, this, ""); - - /** - * The column INFORMATION_SCHEMA.QUERY_STATISTICS.MAX_ROW_COUNT. - */ - public final TableField MAX_ROW_COUNT = createField("MAX_ROW_COUNT", org.jooq.impl.SQLDataType.INTEGER, this, ""); - - /** - * The column INFORMATION_SCHEMA.QUERY_STATISTICS.CUMULATIVE_ROW_COUNT. - */ - public final TableField CUMULATIVE_ROW_COUNT = createField("CUMULATIVE_ROW_COUNT", org.jooq.impl.SQLDataType.BIGINT, this, ""); - - /** - * The column INFORMATION_SCHEMA.QUERY_STATISTICS.AVERAGE_ROW_COUNT. - */ - public final TableField AVERAGE_ROW_COUNT = createField("AVERAGE_ROW_COUNT", org.jooq.impl.SQLDataType.DOUBLE, this, ""); - - /** - * The column INFORMATION_SCHEMA.QUERY_STATISTICS.STD_DEV_ROW_COUNT. - */ - public final TableField STD_DEV_ROW_COUNT = createField("STD_DEV_ROW_COUNT", org.jooq.impl.SQLDataType.DOUBLE, this, ""); - - /** - * Create a INFORMATION_SCHEMA.QUERY_STATISTICS table reference - */ - public QueryStatistics() { - this("QUERY_STATISTICS", null); - } - - /** - * Create an aliased INFORMATION_SCHEMA.QUERY_STATISTICS table reference - */ - public QueryStatistics(String alias) { - this(alias, QUERY_STATISTICS); - } - - private QueryStatistics(String alias, Table aliased) { - this(alias, aliased, null); - } - - private QueryStatistics(String alias, Table aliased, Field[] parameters) { - super(alias, InformationSchema.INFORMATION_SCHEMA, aliased, parameters, ""); - } - - /** - * {@inheritDoc} - */ - @Override - public QueryStatistics as(String alias) { - return new QueryStatistics(alias, this); - } - - /** - * Rename this table - */ - public QueryStatistics rename(String name) { - return new QueryStatistics(name, null); - } -} diff --git a/jooq-spring/src/main/java/com/baeldung/jooq/introduction/db/information_schema/tables/Rights.java b/jooq-spring/src/main/java/com/baeldung/jooq/introduction/db/information_schema/tables/Rights.java deleted file mode 100644 index e00c2d336e..0000000000 --- a/jooq-spring/src/main/java/com/baeldung/jooq/introduction/db/information_schema/tables/Rights.java +++ /dev/null @@ -1,117 +0,0 @@ -/** - * This class is generated by jOOQ - */ -package com.baeldung.jooq.introduction.db.information_schema.tables; - - -import com.baeldung.jooq.introduction.db.information_schema.InformationSchema; -import com.baeldung.jooq.introduction.db.information_schema.tables.records.RightsRecord; - -import javax.annotation.Generated; - -import org.jooq.Field; -import org.jooq.Table; -import org.jooq.TableField; -import org.jooq.impl.TableImpl; - - -/** - * This class is generated by jOOQ. - */ -@Generated( - value = { - "http://www.jooq.org", - "jOOQ version:3.7.3" - }, - comments = "This class is generated by jOOQ" -) -@SuppressWarnings({ "all", "unchecked", "rawtypes" }) -public class Rights extends TableImpl { - - private static final long serialVersionUID = -2076280081; - - /** - * The reference instance of INFORMATION_SCHEMA.RIGHTS - */ - public static final Rights RIGHTS = new Rights(); - - /** - * The class holding records for this type - */ - @Override - public Class getRecordType() { - return RightsRecord.class; - } - - /** - * The column INFORMATION_SCHEMA.RIGHTS.GRANTEE. - */ - public final TableField GRANTEE = createField("GRANTEE", org.jooq.impl.SQLDataType.VARCHAR.length(2147483647), this, ""); - - /** - * The column INFORMATION_SCHEMA.RIGHTS.GRANTEETYPE. - */ - public final TableField GRANTEETYPE = createField("GRANTEETYPE", org.jooq.impl.SQLDataType.VARCHAR.length(2147483647), this, ""); - - /** - * The column INFORMATION_SCHEMA.RIGHTS.GRANTEDROLE. - */ - public final TableField GRANTEDROLE = createField("GRANTEDROLE", org.jooq.impl.SQLDataType.VARCHAR.length(2147483647), this, ""); - - /** - * The column INFORMATION_SCHEMA.RIGHTS.RIGHTS. - */ - public final TableField RIGHTS_ = createField("RIGHTS", org.jooq.impl.SQLDataType.VARCHAR.length(2147483647), this, ""); - - /** - * The column INFORMATION_SCHEMA.RIGHTS.TABLE_SCHEMA. - */ - public final TableField TABLE_SCHEMA = createField("TABLE_SCHEMA", org.jooq.impl.SQLDataType.VARCHAR.length(2147483647), this, ""); - - /** - * The column INFORMATION_SCHEMA.RIGHTS.TABLE_NAME. - */ - public final TableField TABLE_NAME = createField("TABLE_NAME", org.jooq.impl.SQLDataType.VARCHAR.length(2147483647), this, ""); - - /** - * The column INFORMATION_SCHEMA.RIGHTS.ID. - */ - public final TableField ID = createField("ID", org.jooq.impl.SQLDataType.INTEGER, this, ""); - - /** - * Create a INFORMATION_SCHEMA.RIGHTS table reference - */ - public Rights() { - this("RIGHTS", null); - } - - /** - * Create an aliased INFORMATION_SCHEMA.RIGHTS table reference - */ - public Rights(String alias) { - this(alias, RIGHTS); - } - - private Rights(String alias, Table aliased) { - this(alias, aliased, null); - } - - private Rights(String alias, Table aliased, Field[] parameters) { - super(alias, InformationSchema.INFORMATION_SCHEMA, aliased, parameters, ""); - } - - /** - * {@inheritDoc} - */ - @Override - public Rights as(String alias) { - return new Rights(alias, this); - } - - /** - * Rename this table - */ - public Rights rename(String name) { - return new Rights(name, null); - } -} diff --git a/jooq-spring/src/main/java/com/baeldung/jooq/introduction/db/information_schema/tables/Roles.java b/jooq-spring/src/main/java/com/baeldung/jooq/introduction/db/information_schema/tables/Roles.java deleted file mode 100644 index 74a394945a..0000000000 --- a/jooq-spring/src/main/java/com/baeldung/jooq/introduction/db/information_schema/tables/Roles.java +++ /dev/null @@ -1,97 +0,0 @@ -/** - * This class is generated by jOOQ - */ -package com.baeldung.jooq.introduction.db.information_schema.tables; - - -import com.baeldung.jooq.introduction.db.information_schema.InformationSchema; -import com.baeldung.jooq.introduction.db.information_schema.tables.records.RolesRecord; - -import javax.annotation.Generated; - -import org.jooq.Field; -import org.jooq.Table; -import org.jooq.TableField; -import org.jooq.impl.TableImpl; - - -/** - * This class is generated by jOOQ. - */ -@Generated( - value = { - "http://www.jooq.org", - "jOOQ version:3.7.3" - }, - comments = "This class is generated by jOOQ" -) -@SuppressWarnings({ "all", "unchecked", "rawtypes" }) -public class Roles extends TableImpl { - - private static final long serialVersionUID = 1847269376; - - /** - * The reference instance of INFORMATION_SCHEMA.ROLES - */ - public static final Roles ROLES = new Roles(); - - /** - * The class holding records for this type - */ - @Override - public Class getRecordType() { - return RolesRecord.class; - } - - /** - * The column INFORMATION_SCHEMA.ROLES.NAME. - */ - public final TableField NAME = createField("NAME", org.jooq.impl.SQLDataType.VARCHAR.length(2147483647), this, ""); - - /** - * The column INFORMATION_SCHEMA.ROLES.REMARKS. - */ - public final TableField REMARKS = createField("REMARKS", org.jooq.impl.SQLDataType.VARCHAR.length(2147483647), this, ""); - - /** - * The column INFORMATION_SCHEMA.ROLES.ID. - */ - public final TableField ID = createField("ID", org.jooq.impl.SQLDataType.INTEGER, this, ""); - - /** - * Create a INFORMATION_SCHEMA.ROLES table reference - */ - public Roles() { - this("ROLES", null); - } - - /** - * Create an aliased INFORMATION_SCHEMA.ROLES table reference - */ - public Roles(String alias) { - this(alias, ROLES); - } - - private Roles(String alias, Table aliased) { - this(alias, aliased, null); - } - - private Roles(String alias, Table aliased, Field[] parameters) { - super(alias, InformationSchema.INFORMATION_SCHEMA, aliased, parameters, ""); - } - - /** - * {@inheritDoc} - */ - @Override - public Roles as(String alias) { - return new Roles(alias, this); - } - - /** - * Rename this table - */ - public Roles rename(String name) { - return new Roles(name, null); - } -} diff --git a/jooq-spring/src/main/java/com/baeldung/jooq/introduction/db/information_schema/tables/Schemata.java b/jooq-spring/src/main/java/com/baeldung/jooq/introduction/db/information_schema/tables/Schemata.java deleted file mode 100644 index b084c3501c..0000000000 --- a/jooq-spring/src/main/java/com/baeldung/jooq/introduction/db/information_schema/tables/Schemata.java +++ /dev/null @@ -1,122 +0,0 @@ -/** - * This class is generated by jOOQ - */ -package com.baeldung.jooq.introduction.db.information_schema.tables; - - -import com.baeldung.jooq.introduction.db.information_schema.InformationSchema; -import com.baeldung.jooq.introduction.db.information_schema.tables.records.SchemataRecord; - -import javax.annotation.Generated; - -import org.jooq.Field; -import org.jooq.Table; -import org.jooq.TableField; -import org.jooq.impl.TableImpl; - - -/** - * This class is generated by jOOQ. - */ -@Generated( - value = { - "http://www.jooq.org", - "jOOQ version:3.7.3" - }, - comments = "This class is generated by jOOQ" -) -@SuppressWarnings({ "all", "unchecked", "rawtypes" }) -public class Schemata extends TableImpl { - - private static final long serialVersionUID = -1029782582; - - /** - * The reference instance of INFORMATION_SCHEMA.SCHEMATA - */ - public static final Schemata SCHEMATA = new Schemata(); - - /** - * The class holding records for this type - */ - @Override - public Class getRecordType() { - return SchemataRecord.class; - } - - /** - * The column INFORMATION_SCHEMA.SCHEMATA.CATALOG_NAME. - */ - public final TableField CATALOG_NAME = createField("CATALOG_NAME", org.jooq.impl.SQLDataType.VARCHAR.length(2147483647), this, ""); - - /** - * The column INFORMATION_SCHEMA.SCHEMATA.SCHEMA_NAME. - */ - public final TableField SCHEMA_NAME = createField("SCHEMA_NAME", org.jooq.impl.SQLDataType.VARCHAR.length(2147483647), this, ""); - - /** - * The column INFORMATION_SCHEMA.SCHEMATA.SCHEMA_OWNER. - */ - public final TableField SCHEMA_OWNER = createField("SCHEMA_OWNER", org.jooq.impl.SQLDataType.VARCHAR.length(2147483647), this, ""); - - /** - * The column INFORMATION_SCHEMA.SCHEMATA.DEFAULT_CHARACTER_SET_NAME. - */ - public final TableField DEFAULT_CHARACTER_SET_NAME = createField("DEFAULT_CHARACTER_SET_NAME", org.jooq.impl.SQLDataType.VARCHAR.length(2147483647), this, ""); - - /** - * The column INFORMATION_SCHEMA.SCHEMATA.DEFAULT_COLLATION_NAME. - */ - public final TableField DEFAULT_COLLATION_NAME = createField("DEFAULT_COLLATION_NAME", org.jooq.impl.SQLDataType.VARCHAR.length(2147483647), this, ""); - - /** - * The column INFORMATION_SCHEMA.SCHEMATA.IS_DEFAULT. - */ - public final TableField IS_DEFAULT = createField("IS_DEFAULT", org.jooq.impl.SQLDataType.BOOLEAN, this, ""); - - /** - * The column INFORMATION_SCHEMA.SCHEMATA.REMARKS. - */ - public final TableField REMARKS = createField("REMARKS", org.jooq.impl.SQLDataType.VARCHAR.length(2147483647), this, ""); - - /** - * The column INFORMATION_SCHEMA.SCHEMATA.ID. - */ - public final TableField ID = createField("ID", org.jooq.impl.SQLDataType.INTEGER, this, ""); - - /** - * Create a INFORMATION_SCHEMA.SCHEMATA table reference - */ - public Schemata() { - this("SCHEMATA", null); - } - - /** - * Create an aliased INFORMATION_SCHEMA.SCHEMATA table reference - */ - public Schemata(String alias) { - this(alias, SCHEMATA); - } - - private Schemata(String alias, Table aliased) { - this(alias, aliased, null); - } - - private Schemata(String alias, Table aliased, Field[] parameters) { - super(alias, InformationSchema.INFORMATION_SCHEMA, aliased, parameters, ""); - } - - /** - * {@inheritDoc} - */ - @Override - public Schemata as(String alias) { - return new Schemata(alias, this); - } - - /** - * Rename this table - */ - public Schemata rename(String name) { - return new Schemata(name, null); - } -} diff --git a/jooq-spring/src/main/java/com/baeldung/jooq/introduction/db/information_schema/tables/Sequences.java b/jooq-spring/src/main/java/com/baeldung/jooq/introduction/db/information_schema/tables/Sequences.java deleted file mode 100644 index 26c2da9080..0000000000 --- a/jooq-spring/src/main/java/com/baeldung/jooq/introduction/db/information_schema/tables/Sequences.java +++ /dev/null @@ -1,142 +0,0 @@ -/** - * This class is generated by jOOQ - */ -package com.baeldung.jooq.introduction.db.information_schema.tables; - - -import com.baeldung.jooq.introduction.db.information_schema.InformationSchema; -import com.baeldung.jooq.introduction.db.information_schema.tables.records.SequencesRecord; - -import javax.annotation.Generated; - -import org.jooq.Field; -import org.jooq.Table; -import org.jooq.TableField; -import org.jooq.impl.TableImpl; - - -/** - * This class is generated by jOOQ. - */ -@Generated( - value = { - "http://www.jooq.org", - "jOOQ version:3.7.3" - }, - comments = "This class is generated by jOOQ" -) -@SuppressWarnings({ "all", "unchecked", "rawtypes" }) -public class Sequences extends TableImpl { - - private static final long serialVersionUID = -1302373749; - - /** - * The reference instance of INFORMATION_SCHEMA.SEQUENCES - */ - public static final Sequences SEQUENCES = new Sequences(); - - /** - * The class holding records for this type - */ - @Override - public Class getRecordType() { - return SequencesRecord.class; - } - - /** - * The column INFORMATION_SCHEMA.SEQUENCES.SEQUENCE_CATALOG. - */ - public final TableField SEQUENCE_CATALOG = createField("SEQUENCE_CATALOG", org.jooq.impl.SQLDataType.VARCHAR.length(2147483647), this, ""); - - /** - * The column INFORMATION_SCHEMA.SEQUENCES.SEQUENCE_SCHEMA. - */ - public final TableField SEQUENCE_SCHEMA = createField("SEQUENCE_SCHEMA", org.jooq.impl.SQLDataType.VARCHAR.length(2147483647), this, ""); - - /** - * The column INFORMATION_SCHEMA.SEQUENCES.SEQUENCE_NAME. - */ - public final TableField SEQUENCE_NAME = createField("SEQUENCE_NAME", org.jooq.impl.SQLDataType.VARCHAR.length(2147483647), this, ""); - - /** - * The column INFORMATION_SCHEMA.SEQUENCES.CURRENT_VALUE. - */ - public final TableField CURRENT_VALUE = createField("CURRENT_VALUE", org.jooq.impl.SQLDataType.BIGINT, this, ""); - - /** - * The column INFORMATION_SCHEMA.SEQUENCES.INCREMENT. - */ - public final TableField INCREMENT = createField("INCREMENT", org.jooq.impl.SQLDataType.BIGINT, this, ""); - - /** - * The column INFORMATION_SCHEMA.SEQUENCES.IS_GENERATED. - */ - public final TableField IS_GENERATED = createField("IS_GENERATED", org.jooq.impl.SQLDataType.BOOLEAN, this, ""); - - /** - * The column INFORMATION_SCHEMA.SEQUENCES.REMARKS. - */ - public final TableField REMARKS = createField("REMARKS", org.jooq.impl.SQLDataType.VARCHAR.length(2147483647), this, ""); - - /** - * The column INFORMATION_SCHEMA.SEQUENCES.CACHE. - */ - public final TableField CACHE = createField("CACHE", org.jooq.impl.SQLDataType.BIGINT, this, ""); - - /** - * The column INFORMATION_SCHEMA.SEQUENCES.MIN_VALUE. - */ - public final TableField MIN_VALUE = createField("MIN_VALUE", org.jooq.impl.SQLDataType.BIGINT, this, ""); - - /** - * The column INFORMATION_SCHEMA.SEQUENCES.MAX_VALUE. - */ - public final TableField MAX_VALUE = createField("MAX_VALUE", org.jooq.impl.SQLDataType.BIGINT, this, ""); - - /** - * The column INFORMATION_SCHEMA.SEQUENCES.IS_CYCLE. - */ - public final TableField IS_CYCLE = createField("IS_CYCLE", org.jooq.impl.SQLDataType.BOOLEAN, this, ""); - - /** - * The column INFORMATION_SCHEMA.SEQUENCES.ID. - */ - public final TableField ID = createField("ID", org.jooq.impl.SQLDataType.INTEGER, this, ""); - - /** - * Create a INFORMATION_SCHEMA.SEQUENCES table reference - */ - public Sequences() { - this("SEQUENCES", null); - } - - /** - * Create an aliased INFORMATION_SCHEMA.SEQUENCES table reference - */ - public Sequences(String alias) { - this(alias, SEQUENCES); - } - - private Sequences(String alias, Table aliased) { - this(alias, aliased, null); - } - - private Sequences(String alias, Table aliased, Field[] parameters) { - super(alias, InformationSchema.INFORMATION_SCHEMA, aliased, parameters, ""); - } - - /** - * {@inheritDoc} - */ - @Override - public Sequences as(String alias) { - return new Sequences(alias, this); - } - - /** - * Rename this table - */ - public Sequences rename(String name) { - return new Sequences(name, null); - } -} diff --git a/jooq-spring/src/main/java/com/baeldung/jooq/introduction/db/information_schema/tables/SessionState.java b/jooq-spring/src/main/java/com/baeldung/jooq/introduction/db/information_schema/tables/SessionState.java deleted file mode 100644 index 78e0ff743a..0000000000 --- a/jooq-spring/src/main/java/com/baeldung/jooq/introduction/db/information_schema/tables/SessionState.java +++ /dev/null @@ -1,92 +0,0 @@ -/** - * This class is generated by jOOQ - */ -package com.baeldung.jooq.introduction.db.information_schema.tables; - - -import com.baeldung.jooq.introduction.db.information_schema.InformationSchema; -import com.baeldung.jooq.introduction.db.information_schema.tables.records.SessionStateRecord; - -import javax.annotation.Generated; - -import org.jooq.Field; -import org.jooq.Table; -import org.jooq.TableField; -import org.jooq.impl.TableImpl; - - -/** - * This class is generated by jOOQ. - */ -@Generated( - value = { - "http://www.jooq.org", - "jOOQ version:3.7.3" - }, - comments = "This class is generated by jOOQ" -) -@SuppressWarnings({ "all", "unchecked", "rawtypes" }) -public class SessionState extends TableImpl { - - private static final long serialVersionUID = 919891380; - - /** - * The reference instance of INFORMATION_SCHEMA.SESSION_STATE - */ - public static final SessionState SESSION_STATE = new SessionState(); - - /** - * The class holding records for this type - */ - @Override - public Class getRecordType() { - return SessionStateRecord.class; - } - - /** - * The column INFORMATION_SCHEMA.SESSION_STATE.KEY. - */ - public final TableField KEY = createField("KEY", org.jooq.impl.SQLDataType.VARCHAR.length(2147483647), this, ""); - - /** - * The column INFORMATION_SCHEMA.SESSION_STATE.SQL. - */ - public final TableField SQL = createField("SQL", org.jooq.impl.SQLDataType.VARCHAR.length(2147483647), this, ""); - - /** - * Create a INFORMATION_SCHEMA.SESSION_STATE table reference - */ - public SessionState() { - this("SESSION_STATE", null); - } - - /** - * Create an aliased INFORMATION_SCHEMA.SESSION_STATE table reference - */ - public SessionState(String alias) { - this(alias, SESSION_STATE); - } - - private SessionState(String alias, Table aliased) { - this(alias, aliased, null); - } - - private SessionState(String alias, Table aliased, Field[] parameters) { - super(alias, InformationSchema.INFORMATION_SCHEMA, aliased, parameters, ""); - } - - /** - * {@inheritDoc} - */ - @Override - public SessionState as(String alias) { - return new SessionState(alias, this); - } - - /** - * Rename this table - */ - public SessionState rename(String name) { - return new SessionState(name, null); - } -} diff --git a/jooq-spring/src/main/java/com/baeldung/jooq/introduction/db/information_schema/tables/Sessions.java b/jooq-spring/src/main/java/com/baeldung/jooq/introduction/db/information_schema/tables/Sessions.java deleted file mode 100644 index 22166987d9..0000000000 --- a/jooq-spring/src/main/java/com/baeldung/jooq/introduction/db/information_schema/tables/Sessions.java +++ /dev/null @@ -1,112 +0,0 @@ -/** - * This class is generated by jOOQ - */ -package com.baeldung.jooq.introduction.db.information_schema.tables; - - -import com.baeldung.jooq.introduction.db.information_schema.InformationSchema; -import com.baeldung.jooq.introduction.db.information_schema.tables.records.SessionsRecord; - -import javax.annotation.Generated; - -import org.jooq.Field; -import org.jooq.Table; -import org.jooq.TableField; -import org.jooq.impl.TableImpl; - - -/** - * This class is generated by jOOQ. - */ -@Generated( - value = { - "http://www.jooq.org", - "jOOQ version:3.7.3" - }, - comments = "This class is generated by jOOQ" -) -@SuppressWarnings({ "all", "unchecked", "rawtypes" }) -public class Sessions extends TableImpl { - - private static final long serialVersionUID = -975884629; - - /** - * The reference instance of INFORMATION_SCHEMA.SESSIONS - */ - public static final Sessions SESSIONS = new Sessions(); - - /** - * The class holding records for this type - */ - @Override - public Class getRecordType() { - return SessionsRecord.class; - } - - /** - * The column INFORMATION_SCHEMA.SESSIONS.ID. - */ - public final TableField ID = createField("ID", org.jooq.impl.SQLDataType.INTEGER, this, ""); - - /** - * The column INFORMATION_SCHEMA.SESSIONS.USER_NAME. - */ - public final TableField USER_NAME = createField("USER_NAME", org.jooq.impl.SQLDataType.VARCHAR.length(2147483647), this, ""); - - /** - * The column INFORMATION_SCHEMA.SESSIONS.SESSION_START. - */ - public final TableField SESSION_START = createField("SESSION_START", org.jooq.impl.SQLDataType.VARCHAR.length(2147483647), this, ""); - - /** - * The column INFORMATION_SCHEMA.SESSIONS.STATEMENT. - */ - public final TableField STATEMENT = createField("STATEMENT", org.jooq.impl.SQLDataType.VARCHAR.length(2147483647), this, ""); - - /** - * The column INFORMATION_SCHEMA.SESSIONS.STATEMENT_START. - */ - public final TableField STATEMENT_START = createField("STATEMENT_START", org.jooq.impl.SQLDataType.VARCHAR.length(2147483647), this, ""); - - /** - * The column INFORMATION_SCHEMA.SESSIONS.CONTAINS_UNCOMMITTED. - */ - public final TableField CONTAINS_UNCOMMITTED = createField("CONTAINS_UNCOMMITTED", org.jooq.impl.SQLDataType.VARCHAR.length(2147483647), this, ""); - - /** - * Create a INFORMATION_SCHEMA.SESSIONS table reference - */ - public Sessions() { - this("SESSIONS", null); - } - - /** - * Create an aliased INFORMATION_SCHEMA.SESSIONS table reference - */ - public Sessions(String alias) { - this(alias, SESSIONS); - } - - private Sessions(String alias, Table aliased) { - this(alias, aliased, null); - } - - private Sessions(String alias, Table aliased, Field[] parameters) { - super(alias, InformationSchema.INFORMATION_SCHEMA, aliased, parameters, ""); - } - - /** - * {@inheritDoc} - */ - @Override - public Sessions as(String alias) { - return new Sessions(alias, this); - } - - /** - * Rename this table - */ - public Sessions rename(String name) { - return new Sessions(name, null); - } -} diff --git a/jooq-spring/src/main/java/com/baeldung/jooq/introduction/db/information_schema/tables/Settings.java b/jooq-spring/src/main/java/com/baeldung/jooq/introduction/db/information_schema/tables/Settings.java deleted file mode 100644 index caca515c67..0000000000 --- a/jooq-spring/src/main/java/com/baeldung/jooq/introduction/db/information_schema/tables/Settings.java +++ /dev/null @@ -1,92 +0,0 @@ -/** - * This class is generated by jOOQ - */ -package com.baeldung.jooq.introduction.db.information_schema.tables; - - -import com.baeldung.jooq.introduction.db.information_schema.InformationSchema; -import com.baeldung.jooq.introduction.db.information_schema.tables.records.SettingsRecord; - -import javax.annotation.Generated; - -import org.jooq.Field; -import org.jooq.Table; -import org.jooq.TableField; -import org.jooq.impl.TableImpl; - - -/** - * This class is generated by jOOQ. - */ -@Generated( - value = { - "http://www.jooq.org", - "jOOQ version:3.7.3" - }, - comments = "This class is generated by jOOQ" -) -@SuppressWarnings({ "all", "unchecked", "rawtypes" }) -public class Settings extends TableImpl { - - private static final long serialVersionUID = -1983664507; - - /** - * The reference instance of INFORMATION_SCHEMA.SETTINGS - */ - public static final Settings SETTINGS = new Settings(); - - /** - * The class holding records for this type - */ - @Override - public Class getRecordType() { - return SettingsRecord.class; - } - - /** - * The column INFORMATION_SCHEMA.SETTINGS.NAME. - */ - public final TableField NAME = createField("NAME", org.jooq.impl.SQLDataType.VARCHAR.length(2147483647), this, ""); - - /** - * The column INFORMATION_SCHEMA.SETTINGS.VALUE. - */ - public final TableField VALUE = createField("VALUE", org.jooq.impl.SQLDataType.VARCHAR.length(2147483647), this, ""); - - /** - * Create a INFORMATION_SCHEMA.SETTINGS table reference - */ - public Settings() { - this("SETTINGS", null); - } - - /** - * Create an aliased INFORMATION_SCHEMA.SETTINGS table reference - */ - public Settings(String alias) { - this(alias, SETTINGS); - } - - private Settings(String alias, Table aliased) { - this(alias, aliased, null); - } - - private Settings(String alias, Table aliased, Field[] parameters) { - super(alias, InformationSchema.INFORMATION_SCHEMA, aliased, parameters, ""); - } - - /** - * {@inheritDoc} - */ - @Override - public Settings as(String alias) { - return new Settings(alias, this); - } - - /** - * Rename this table - */ - public Settings rename(String name) { - return new Settings(name, null); - } -} diff --git a/jooq-spring/src/main/java/com/baeldung/jooq/introduction/db/information_schema/tables/TablePrivileges.java b/jooq-spring/src/main/java/com/baeldung/jooq/introduction/db/information_schema/tables/TablePrivileges.java deleted file mode 100644 index 16104aa4bb..0000000000 --- a/jooq-spring/src/main/java/com/baeldung/jooq/introduction/db/information_schema/tables/TablePrivileges.java +++ /dev/null @@ -1,117 +0,0 @@ -/** - * This class is generated by jOOQ - */ -package com.baeldung.jooq.introduction.db.information_schema.tables; - - -import com.baeldung.jooq.introduction.db.information_schema.InformationSchema; -import com.baeldung.jooq.introduction.db.information_schema.tables.records.TablePrivilegesRecord; - -import javax.annotation.Generated; - -import org.jooq.Field; -import org.jooq.Table; -import org.jooq.TableField; -import org.jooq.impl.TableImpl; - - -/** - * This class is generated by jOOQ. - */ -@Generated( - value = { - "http://www.jooq.org", - "jOOQ version:3.7.3" - }, - comments = "This class is generated by jOOQ" -) -@SuppressWarnings({ "all", "unchecked", "rawtypes" }) -public class TablePrivileges extends TableImpl { - - private static final long serialVersionUID = -270543696; - - /** - * The reference instance of INFORMATION_SCHEMA.TABLE_PRIVILEGES - */ - public static final TablePrivileges TABLE_PRIVILEGES = new TablePrivileges(); - - /** - * The class holding records for this type - */ - @Override - public Class getRecordType() { - return TablePrivilegesRecord.class; - } - - /** - * The column INFORMATION_SCHEMA.TABLE_PRIVILEGES.GRANTOR. - */ - public final TableField GRANTOR = createField("GRANTOR", org.jooq.impl.SQLDataType.VARCHAR.length(2147483647), this, ""); - - /** - * The column INFORMATION_SCHEMA.TABLE_PRIVILEGES.GRANTEE. - */ - public final TableField GRANTEE = createField("GRANTEE", org.jooq.impl.SQLDataType.VARCHAR.length(2147483647), this, ""); - - /** - * The column INFORMATION_SCHEMA.TABLE_PRIVILEGES.TABLE_CATALOG. - */ - public final TableField TABLE_CATALOG = createField("TABLE_CATALOG", org.jooq.impl.SQLDataType.VARCHAR.length(2147483647), this, ""); - - /** - * The column INFORMATION_SCHEMA.TABLE_PRIVILEGES.TABLE_SCHEMA. - */ - public final TableField TABLE_SCHEMA = createField("TABLE_SCHEMA", org.jooq.impl.SQLDataType.VARCHAR.length(2147483647), this, ""); - - /** - * The column INFORMATION_SCHEMA.TABLE_PRIVILEGES.TABLE_NAME. - */ - public final TableField TABLE_NAME = createField("TABLE_NAME", org.jooq.impl.SQLDataType.VARCHAR.length(2147483647), this, ""); - - /** - * The column INFORMATION_SCHEMA.TABLE_PRIVILEGES.PRIVILEGE_TYPE. - */ - public final TableField PRIVILEGE_TYPE = createField("PRIVILEGE_TYPE", org.jooq.impl.SQLDataType.VARCHAR.length(2147483647), this, ""); - - /** - * The column INFORMATION_SCHEMA.TABLE_PRIVILEGES.IS_GRANTABLE. - */ - public final TableField IS_GRANTABLE = createField("IS_GRANTABLE", org.jooq.impl.SQLDataType.VARCHAR.length(2147483647), this, ""); - - /** - * Create a INFORMATION_SCHEMA.TABLE_PRIVILEGES table reference - */ - public TablePrivileges() { - this("TABLE_PRIVILEGES", null); - } - - /** - * Create an aliased INFORMATION_SCHEMA.TABLE_PRIVILEGES table reference - */ - public TablePrivileges(String alias) { - this(alias, TABLE_PRIVILEGES); - } - - private TablePrivileges(String alias, Table aliased) { - this(alias, aliased, null); - } - - private TablePrivileges(String alias, Table aliased, Field[] parameters) { - super(alias, InformationSchema.INFORMATION_SCHEMA, aliased, parameters, ""); - } - - /** - * {@inheritDoc} - */ - @Override - public TablePrivileges as(String alias) { - return new TablePrivileges(alias, this); - } - - /** - * Rename this table - */ - public TablePrivileges rename(String name) { - return new TablePrivileges(name, null); - } -} diff --git a/jooq-spring/src/main/java/com/baeldung/jooq/introduction/db/information_schema/tables/TableTypes.java b/jooq-spring/src/main/java/com/baeldung/jooq/introduction/db/information_schema/tables/TableTypes.java deleted file mode 100644 index 6901b10786..0000000000 --- a/jooq-spring/src/main/java/com/baeldung/jooq/introduction/db/information_schema/tables/TableTypes.java +++ /dev/null @@ -1,87 +0,0 @@ -/** - * This class is generated by jOOQ - */ -package com.baeldung.jooq.introduction.db.information_schema.tables; - - -import com.baeldung.jooq.introduction.db.information_schema.InformationSchema; -import com.baeldung.jooq.introduction.db.information_schema.tables.records.TableTypesRecord; - -import javax.annotation.Generated; - -import org.jooq.Field; -import org.jooq.Table; -import org.jooq.TableField; -import org.jooq.impl.TableImpl; - - -/** - * This class is generated by jOOQ. - */ -@Generated( - value = { - "http://www.jooq.org", - "jOOQ version:3.7.3" - }, - comments = "This class is generated by jOOQ" -) -@SuppressWarnings({ "all", "unchecked", "rawtypes" }) -public class TableTypes extends TableImpl { - - private static final long serialVersionUID = 676525061; - - /** - * The reference instance of INFORMATION_SCHEMA.TABLE_TYPES - */ - public static final TableTypes TABLE_TYPES = new TableTypes(); - - /** - * The class holding records for this type - */ - @Override - public Class getRecordType() { - return TableTypesRecord.class; - } - - /** - * The column INFORMATION_SCHEMA.TABLE_TYPES.TYPE. - */ - public final TableField TYPE = createField("TYPE", org.jooq.impl.SQLDataType.VARCHAR.length(2147483647), this, ""); - - /** - * Create a INFORMATION_SCHEMA.TABLE_TYPES table reference - */ - public TableTypes() { - this("TABLE_TYPES", null); - } - - /** - * Create an aliased INFORMATION_SCHEMA.TABLE_TYPES table reference - */ - public TableTypes(String alias) { - this(alias, TABLE_TYPES); - } - - private TableTypes(String alias, Table aliased) { - this(alias, aliased, null); - } - - private TableTypes(String alias, Table aliased, Field[] parameters) { - super(alias, InformationSchema.INFORMATION_SCHEMA, aliased, parameters, ""); - } - - /** - * {@inheritDoc} - */ - @Override - public TableTypes as(String alias) { - return new TableTypes(alias, this); - } - - /** - * Rename this table - */ - public TableTypes rename(String name) { - return new TableTypes(name, null); - } -} diff --git a/jooq-spring/src/main/java/com/baeldung/jooq/introduction/db/information_schema/tables/Tables.java b/jooq-spring/src/main/java/com/baeldung/jooq/introduction/db/information_schema/tables/Tables.java deleted file mode 100644 index f0927166a5..0000000000 --- a/jooq-spring/src/main/java/com/baeldung/jooq/introduction/db/information_schema/tables/Tables.java +++ /dev/null @@ -1,142 +0,0 @@ -/** - * This class is generated by jOOQ - */ -package com.baeldung.jooq.introduction.db.information_schema.tables; - - -import com.baeldung.jooq.introduction.db.information_schema.InformationSchema; -import com.baeldung.jooq.introduction.db.information_schema.tables.records.TablesRecord; - -import javax.annotation.Generated; - -import org.jooq.Field; -import org.jooq.Table; -import org.jooq.TableField; -import org.jooq.impl.TableImpl; - - -/** - * This class is generated by jOOQ. - */ -@Generated( - value = { - "http://www.jooq.org", - "jOOQ version:3.7.3" - }, - comments = "This class is generated by jOOQ" -) -@SuppressWarnings({ "all", "unchecked", "rawtypes" }) -public class Tables extends TableImpl { - - private static final long serialVersionUID = 123051350; - - /** - * The reference instance of INFORMATION_SCHEMA.TABLES - */ - public static final Tables TABLES = new Tables(); - - /** - * The class holding records for this type - */ - @Override - public Class getRecordType() { - return TablesRecord.class; - } - - /** - * The column INFORMATION_SCHEMA.TABLES.TABLE_CATALOG. - */ - public final TableField TABLE_CATALOG = createField("TABLE_CATALOG", org.jooq.impl.SQLDataType.VARCHAR.length(2147483647), this, ""); - - /** - * The column INFORMATION_SCHEMA.TABLES.TABLE_SCHEMA. - */ - public final TableField TABLE_SCHEMA = createField("TABLE_SCHEMA", org.jooq.impl.SQLDataType.VARCHAR.length(2147483647), this, ""); - - /** - * The column INFORMATION_SCHEMA.TABLES.TABLE_NAME. - */ - public final TableField TABLE_NAME = createField("TABLE_NAME", org.jooq.impl.SQLDataType.VARCHAR.length(2147483647), this, ""); - - /** - * The column INFORMATION_SCHEMA.TABLES.TABLE_TYPE. - */ - public final TableField TABLE_TYPE = createField("TABLE_TYPE", org.jooq.impl.SQLDataType.VARCHAR.length(2147483647), this, ""); - - /** - * The column INFORMATION_SCHEMA.TABLES.STORAGE_TYPE. - */ - public final TableField STORAGE_TYPE = createField("STORAGE_TYPE", org.jooq.impl.SQLDataType.VARCHAR.length(2147483647), this, ""); - - /** - * The column INFORMATION_SCHEMA.TABLES.SQL. - */ - public final TableField SQL = createField("SQL", org.jooq.impl.SQLDataType.VARCHAR.length(2147483647), this, ""); - - /** - * The column INFORMATION_SCHEMA.TABLES.REMARKS. - */ - public final TableField REMARKS = createField("REMARKS", org.jooq.impl.SQLDataType.VARCHAR.length(2147483647), this, ""); - - /** - * The column INFORMATION_SCHEMA.TABLES.LAST_MODIFICATION. - */ - public final TableField LAST_MODIFICATION = createField("LAST_MODIFICATION", org.jooq.impl.SQLDataType.BIGINT, this, ""); - - /** - * The column INFORMATION_SCHEMA.TABLES.ID. - */ - public final TableField ID = createField("ID", org.jooq.impl.SQLDataType.INTEGER, this, ""); - - /** - * The column INFORMATION_SCHEMA.TABLES.TYPE_NAME. - */ - public final TableField TYPE_NAME = createField("TYPE_NAME", org.jooq.impl.SQLDataType.VARCHAR.length(2147483647), this, ""); - - /** - * The column INFORMATION_SCHEMA.TABLES.TABLE_CLASS. - */ - public final TableField TABLE_CLASS = createField("TABLE_CLASS", org.jooq.impl.SQLDataType.VARCHAR.length(2147483647), this, ""); - - /** - * The column INFORMATION_SCHEMA.TABLES.ROW_COUNT_ESTIMATE. - */ - public final TableField ROW_COUNT_ESTIMATE = createField("ROW_COUNT_ESTIMATE", org.jooq.impl.SQLDataType.BIGINT, this, ""); - - /** - * Create a INFORMATION_SCHEMA.TABLES table reference - */ - public Tables() { - this("TABLES", null); - } - - /** - * Create an aliased INFORMATION_SCHEMA.TABLES table reference - */ - public Tables(String alias) { - this(alias, TABLES); - } - - private Tables(String alias, Table aliased) { - this(alias, aliased, null); - } - - private Tables(String alias, Table aliased, Field[] parameters) { - super(alias, InformationSchema.INFORMATION_SCHEMA, aliased, parameters, ""); - } - - /** - * {@inheritDoc} - */ - @Override - public Tables as(String alias) { - return new Tables(alias, this); - } - - /** - * Rename this table - */ - public Tables rename(String name) { - return new Tables(name, null); - } -} diff --git a/jooq-spring/src/main/java/com/baeldung/jooq/introduction/db/information_schema/tables/Triggers.java b/jooq-spring/src/main/java/com/baeldung/jooq/introduction/db/information_schema/tables/Triggers.java deleted file mode 100644 index 375478af7a..0000000000 --- a/jooq-spring/src/main/java/com/baeldung/jooq/introduction/db/information_schema/tables/Triggers.java +++ /dev/null @@ -1,152 +0,0 @@ -/** - * This class is generated by jOOQ - */ -package com.baeldung.jooq.introduction.db.information_schema.tables; - - -import com.baeldung.jooq.introduction.db.information_schema.InformationSchema; -import com.baeldung.jooq.introduction.db.information_schema.tables.records.TriggersRecord; - -import javax.annotation.Generated; - -import org.jooq.Field; -import org.jooq.Table; -import org.jooq.TableField; -import org.jooq.impl.TableImpl; - - -/** - * This class is generated by jOOQ. - */ -@Generated( - value = { - "http://www.jooq.org", - "jOOQ version:3.7.3" - }, - comments = "This class is generated by jOOQ" -) -@SuppressWarnings({ "all", "unchecked", "rawtypes" }) -public class Triggers extends TableImpl { - - private static final long serialVersionUID = 376103066; - - /** - * The reference instance of INFORMATION_SCHEMA.TRIGGERS - */ - public static final Triggers TRIGGERS = new Triggers(); - - /** - * The class holding records for this type - */ - @Override - public Class getRecordType() { - return TriggersRecord.class; - } - - /** - * The column INFORMATION_SCHEMA.TRIGGERS.TRIGGER_CATALOG. - */ - public final TableField TRIGGER_CATALOG = createField("TRIGGER_CATALOG", org.jooq.impl.SQLDataType.VARCHAR.length(2147483647), this, ""); - - /** - * The column INFORMATION_SCHEMA.TRIGGERS.TRIGGER_SCHEMA. - */ - public final TableField TRIGGER_SCHEMA = createField("TRIGGER_SCHEMA", org.jooq.impl.SQLDataType.VARCHAR.length(2147483647), this, ""); - - /** - * The column INFORMATION_SCHEMA.TRIGGERS.TRIGGER_NAME. - */ - public final TableField TRIGGER_NAME = createField("TRIGGER_NAME", org.jooq.impl.SQLDataType.VARCHAR.length(2147483647), this, ""); - - /** - * The column INFORMATION_SCHEMA.TRIGGERS.TRIGGER_TYPE. - */ - public final TableField TRIGGER_TYPE = createField("TRIGGER_TYPE", org.jooq.impl.SQLDataType.VARCHAR.length(2147483647), this, ""); - - /** - * The column INFORMATION_SCHEMA.TRIGGERS.TABLE_CATALOG. - */ - public final TableField TABLE_CATALOG = createField("TABLE_CATALOG", org.jooq.impl.SQLDataType.VARCHAR.length(2147483647), this, ""); - - /** - * The column INFORMATION_SCHEMA.TRIGGERS.TABLE_SCHEMA. - */ - public final TableField TABLE_SCHEMA = createField("TABLE_SCHEMA", org.jooq.impl.SQLDataType.VARCHAR.length(2147483647), this, ""); - - /** - * The column INFORMATION_SCHEMA.TRIGGERS.TABLE_NAME. - */ - public final TableField TABLE_NAME = createField("TABLE_NAME", org.jooq.impl.SQLDataType.VARCHAR.length(2147483647), this, ""); - - /** - * The column INFORMATION_SCHEMA.TRIGGERS.BEFORE. - */ - public final TableField BEFORE = createField("BEFORE", org.jooq.impl.SQLDataType.BOOLEAN, this, ""); - - /** - * The column INFORMATION_SCHEMA.TRIGGERS.JAVA_CLASS. - */ - public final TableField JAVA_CLASS = createField("JAVA_CLASS", org.jooq.impl.SQLDataType.VARCHAR.length(2147483647), this, ""); - - /** - * The column INFORMATION_SCHEMA.TRIGGERS.QUEUE_SIZE. - */ - public final TableField QUEUE_SIZE = createField("QUEUE_SIZE", org.jooq.impl.SQLDataType.INTEGER, this, ""); - - /** - * The column INFORMATION_SCHEMA.TRIGGERS.NO_WAIT. - */ - public final TableField NO_WAIT = createField("NO_WAIT", org.jooq.impl.SQLDataType.BOOLEAN, this, ""); - - /** - * The column INFORMATION_SCHEMA.TRIGGERS.REMARKS. - */ - public final TableField REMARKS = createField("REMARKS", org.jooq.impl.SQLDataType.VARCHAR.length(2147483647), this, ""); - - /** - * The column INFORMATION_SCHEMA.TRIGGERS.SQL. - */ - public final TableField SQL = createField("SQL", org.jooq.impl.SQLDataType.VARCHAR.length(2147483647), this, ""); - - /** - * The column INFORMATION_SCHEMA.TRIGGERS.ID. - */ - public final TableField ID = createField("ID", org.jooq.impl.SQLDataType.INTEGER, this, ""); - - /** - * Create a INFORMATION_SCHEMA.TRIGGERS table reference - */ - public Triggers() { - this("TRIGGERS", null); - } - - /** - * Create an aliased INFORMATION_SCHEMA.TRIGGERS table reference - */ - public Triggers(String alias) { - this(alias, TRIGGERS); - } - - private Triggers(String alias, Table aliased) { - this(alias, aliased, null); - } - - private Triggers(String alias, Table aliased, Field[] parameters) { - super(alias, InformationSchema.INFORMATION_SCHEMA, aliased, parameters, ""); - } - - /** - * {@inheritDoc} - */ - @Override - public Triggers as(String alias) { - return new Triggers(alias, this); - } - - /** - * Rename this table - */ - public Triggers rename(String name) { - return new Triggers(name, null); - } -} diff --git a/jooq-spring/src/main/java/com/baeldung/jooq/introduction/db/information_schema/tables/TypeInfo.java b/jooq-spring/src/main/java/com/baeldung/jooq/introduction/db/information_schema/tables/TypeInfo.java deleted file mode 100644 index 3db18ebee4..0000000000 --- a/jooq-spring/src/main/java/com/baeldung/jooq/introduction/db/information_schema/tables/TypeInfo.java +++ /dev/null @@ -1,152 +0,0 @@ -/** - * This class is generated by jOOQ - */ -package com.baeldung.jooq.introduction.db.information_schema.tables; - - -import com.baeldung.jooq.introduction.db.information_schema.InformationSchema; -import com.baeldung.jooq.introduction.db.information_schema.tables.records.TypeInfoRecord; - -import javax.annotation.Generated; - -import org.jooq.Field; -import org.jooq.Table; -import org.jooq.TableField; -import org.jooq.impl.TableImpl; - - -/** - * This class is generated by jOOQ. - */ -@Generated( - value = { - "http://www.jooq.org", - "jOOQ version:3.7.3" - }, - comments = "This class is generated by jOOQ" -) -@SuppressWarnings({ "all", "unchecked", "rawtypes" }) -public class TypeInfo extends TableImpl { - - private static final long serialVersionUID = -242556633; - - /** - * The reference instance of INFORMATION_SCHEMA.TYPE_INFO - */ - public static final TypeInfo TYPE_INFO = new TypeInfo(); - - /** - * The class holding records for this type - */ - @Override - public Class getRecordType() { - return TypeInfoRecord.class; - } - - /** - * The column INFORMATION_SCHEMA.TYPE_INFO.TYPE_NAME. - */ - public final TableField TYPE_NAME = createField("TYPE_NAME", org.jooq.impl.SQLDataType.VARCHAR.length(2147483647), this, ""); - - /** - * The column INFORMATION_SCHEMA.TYPE_INFO.DATA_TYPE. - */ - public final TableField DATA_TYPE = createField("DATA_TYPE", org.jooq.impl.SQLDataType.INTEGER, this, ""); - - /** - * The column INFORMATION_SCHEMA.TYPE_INFO.PRECISION. - */ - public final TableField PRECISION = createField("PRECISION", org.jooq.impl.SQLDataType.INTEGER, this, ""); - - /** - * The column INFORMATION_SCHEMA.TYPE_INFO.PREFIX. - */ - public final TableField PREFIX = createField("PREFIX", org.jooq.impl.SQLDataType.VARCHAR.length(2147483647), this, ""); - - /** - * The column INFORMATION_SCHEMA.TYPE_INFO.SUFFIX. - */ - public final TableField SUFFIX = createField("SUFFIX", org.jooq.impl.SQLDataType.VARCHAR.length(2147483647), this, ""); - - /** - * The column INFORMATION_SCHEMA.TYPE_INFO.PARAMS. - */ - public final TableField PARAMS = createField("PARAMS", org.jooq.impl.SQLDataType.VARCHAR.length(2147483647), this, ""); - - /** - * The column INFORMATION_SCHEMA.TYPE_INFO.AUTO_INCREMENT. - */ - public final TableField AUTO_INCREMENT = createField("AUTO_INCREMENT", org.jooq.impl.SQLDataType.BOOLEAN, this, ""); - - /** - * The column INFORMATION_SCHEMA.TYPE_INFO.MINIMUM_SCALE. - */ - public final TableField MINIMUM_SCALE = createField("MINIMUM_SCALE", org.jooq.impl.SQLDataType.SMALLINT, this, ""); - - /** - * The column INFORMATION_SCHEMA.TYPE_INFO.MAXIMUM_SCALE. - */ - public final TableField MAXIMUM_SCALE = createField("MAXIMUM_SCALE", org.jooq.impl.SQLDataType.SMALLINT, this, ""); - - /** - * The column INFORMATION_SCHEMA.TYPE_INFO.RADIX. - */ - public final TableField RADIX = createField("RADIX", org.jooq.impl.SQLDataType.INTEGER, this, ""); - - /** - * The column INFORMATION_SCHEMA.TYPE_INFO.POS. - */ - public final TableField POS = createField("POS", org.jooq.impl.SQLDataType.INTEGER, this, ""); - - /** - * The column INFORMATION_SCHEMA.TYPE_INFO.CASE_SENSITIVE. - */ - public final TableField CASE_SENSITIVE = createField("CASE_SENSITIVE", org.jooq.impl.SQLDataType.BOOLEAN, this, ""); - - /** - * The column INFORMATION_SCHEMA.TYPE_INFO.NULLABLE. - */ - public final TableField NULLABLE = createField("NULLABLE", org.jooq.impl.SQLDataType.SMALLINT, this, ""); - - /** - * The column INFORMATION_SCHEMA.TYPE_INFO.SEARCHABLE. - */ - public final TableField SEARCHABLE = createField("SEARCHABLE", org.jooq.impl.SQLDataType.SMALLINT, this, ""); - - /** - * Create a INFORMATION_SCHEMA.TYPE_INFO table reference - */ - public TypeInfo() { - this("TYPE_INFO", null); - } - - /** - * Create an aliased INFORMATION_SCHEMA.TYPE_INFO table reference - */ - public TypeInfo(String alias) { - this(alias, TYPE_INFO); - } - - private TypeInfo(String alias, Table aliased) { - this(alias, aliased, null); - } - - private TypeInfo(String alias, Table aliased, Field[] parameters) { - super(alias, InformationSchema.INFORMATION_SCHEMA, aliased, parameters, ""); - } - - /** - * {@inheritDoc} - */ - @Override - public TypeInfo as(String alias) { - return new TypeInfo(alias, this); - } - - /** - * Rename this table - */ - public TypeInfo rename(String name) { - return new TypeInfo(name, null); - } -} diff --git a/jooq-spring/src/main/java/com/baeldung/jooq/introduction/db/information_schema/tables/Users.java b/jooq-spring/src/main/java/com/baeldung/jooq/introduction/db/information_schema/tables/Users.java deleted file mode 100644 index 417382aed0..0000000000 --- a/jooq-spring/src/main/java/com/baeldung/jooq/introduction/db/information_schema/tables/Users.java +++ /dev/null @@ -1,102 +0,0 @@ -/** - * This class is generated by jOOQ - */ -package com.baeldung.jooq.introduction.db.information_schema.tables; - - -import com.baeldung.jooq.introduction.db.information_schema.InformationSchema; -import com.baeldung.jooq.introduction.db.information_schema.tables.records.UsersRecord; - -import javax.annotation.Generated; - -import org.jooq.Field; -import org.jooq.Table; -import org.jooq.TableField; -import org.jooq.impl.TableImpl; - - -/** - * This class is generated by jOOQ. - */ -@Generated( - value = { - "http://www.jooq.org", - "jOOQ version:3.7.3" - }, - comments = "This class is generated by jOOQ" -) -@SuppressWarnings({ "all", "unchecked", "rawtypes" }) -public class Users extends TableImpl { - - private static final long serialVersionUID = 1971797833; - - /** - * The reference instance of INFORMATION_SCHEMA.USERS - */ - public static final Users USERS = new Users(); - - /** - * The class holding records for this type - */ - @Override - public Class getRecordType() { - return UsersRecord.class; - } - - /** - * The column INFORMATION_SCHEMA.USERS.NAME. - */ - public final TableField NAME = createField("NAME", org.jooq.impl.SQLDataType.VARCHAR.length(2147483647), this, ""); - - /** - * The column INFORMATION_SCHEMA.USERS.ADMIN. - */ - public final TableField ADMIN = createField("ADMIN", org.jooq.impl.SQLDataType.VARCHAR.length(2147483647), this, ""); - - /** - * The column INFORMATION_SCHEMA.USERS.REMARKS. - */ - public final TableField REMARKS = createField("REMARKS", org.jooq.impl.SQLDataType.VARCHAR.length(2147483647), this, ""); - - /** - * The column INFORMATION_SCHEMA.USERS.ID. - */ - public final TableField ID = createField("ID", org.jooq.impl.SQLDataType.INTEGER, this, ""); - - /** - * Create a INFORMATION_SCHEMA.USERS table reference - */ - public Users() { - this("USERS", null); - } - - /** - * Create an aliased INFORMATION_SCHEMA.USERS table reference - */ - public Users(String alias) { - this(alias, USERS); - } - - private Users(String alias, Table aliased) { - this(alias, aliased, null); - } - - private Users(String alias, Table aliased, Field[] parameters) { - super(alias, InformationSchema.INFORMATION_SCHEMA, aliased, parameters, ""); - } - - /** - * {@inheritDoc} - */ - @Override - public Users as(String alias) { - return new Users(alias, this); - } - - /** - * Rename this table - */ - public Users rename(String name) { - return new Users(name, null); - } -} diff --git a/jooq-spring/src/main/java/com/baeldung/jooq/introduction/db/information_schema/tables/Views.java b/jooq-spring/src/main/java/com/baeldung/jooq/introduction/db/information_schema/tables/Views.java deleted file mode 100644 index 54ffe377d7..0000000000 --- a/jooq-spring/src/main/java/com/baeldung/jooq/introduction/db/information_schema/tables/Views.java +++ /dev/null @@ -1,127 +0,0 @@ -/** - * This class is generated by jOOQ - */ -package com.baeldung.jooq.introduction.db.information_schema.tables; - - -import com.baeldung.jooq.introduction.db.information_schema.InformationSchema; -import com.baeldung.jooq.introduction.db.information_schema.tables.records.ViewsRecord; - -import javax.annotation.Generated; - -import org.jooq.Field; -import org.jooq.Table; -import org.jooq.TableField; -import org.jooq.impl.TableImpl; - - -/** - * This class is generated by jOOQ. - */ -@Generated( - value = { - "http://www.jooq.org", - "jOOQ version:3.7.3" - }, - comments = "This class is generated by jOOQ" -) -@SuppressWarnings({ "all", "unchecked", "rawtypes" }) -public class Views extends TableImpl { - - private static final long serialVersionUID = 1565009994; - - /** - * The reference instance of INFORMATION_SCHEMA.VIEWS - */ - public static final Views VIEWS = new Views(); - - /** - * The class holding records for this type - */ - @Override - public Class getRecordType() { - return ViewsRecord.class; - } - - /** - * The column INFORMATION_SCHEMA.VIEWS.TABLE_CATALOG. - */ - public final TableField TABLE_CATALOG = createField("TABLE_CATALOG", org.jooq.impl.SQLDataType.VARCHAR.length(2147483647), this, ""); - - /** - * The column INFORMATION_SCHEMA.VIEWS.TABLE_SCHEMA. - */ - public final TableField TABLE_SCHEMA = createField("TABLE_SCHEMA", org.jooq.impl.SQLDataType.VARCHAR.length(2147483647), this, ""); - - /** - * The column INFORMATION_SCHEMA.VIEWS.TABLE_NAME. - */ - public final TableField TABLE_NAME = createField("TABLE_NAME", org.jooq.impl.SQLDataType.VARCHAR.length(2147483647), this, ""); - - /** - * The column INFORMATION_SCHEMA.VIEWS.VIEW_DEFINITION. - */ - public final TableField VIEW_DEFINITION = createField("VIEW_DEFINITION", org.jooq.impl.SQLDataType.VARCHAR.length(2147483647), this, ""); - - /** - * The column INFORMATION_SCHEMA.VIEWS.CHECK_OPTION. - */ - public final TableField CHECK_OPTION = createField("CHECK_OPTION", org.jooq.impl.SQLDataType.VARCHAR.length(2147483647), this, ""); - - /** - * The column INFORMATION_SCHEMA.VIEWS.IS_UPDATABLE. - */ - public final TableField IS_UPDATABLE = createField("IS_UPDATABLE", org.jooq.impl.SQLDataType.VARCHAR.length(2147483647), this, ""); - - /** - * The column INFORMATION_SCHEMA.VIEWS.STATUS. - */ - public final TableField STATUS = createField("STATUS", org.jooq.impl.SQLDataType.VARCHAR.length(2147483647), this, ""); - - /** - * The column INFORMATION_SCHEMA.VIEWS.REMARKS. - */ - public final TableField REMARKS = createField("REMARKS", org.jooq.impl.SQLDataType.VARCHAR.length(2147483647), this, ""); - - /** - * The column INFORMATION_SCHEMA.VIEWS.ID. - */ - public final TableField ID = createField("ID", org.jooq.impl.SQLDataType.INTEGER, this, ""); - - /** - * Create a INFORMATION_SCHEMA.VIEWS table reference - */ - public Views() { - this("VIEWS", null); - } - - /** - * Create an aliased INFORMATION_SCHEMA.VIEWS table reference - */ - public Views(String alias) { - this(alias, VIEWS); - } - - private Views(String alias, Table aliased) { - this(alias, aliased, null); - } - - private Views(String alias, Table aliased, Field[] parameters) { - super(alias, InformationSchema.INFORMATION_SCHEMA, aliased, parameters, ""); - } - - /** - * {@inheritDoc} - */ - @Override - public Views as(String alias) { - return new Views(alias, this); - } - - /** - * Rename this table - */ - public Views rename(String name) { - return new Views(name, null); - } -} diff --git a/jooq-spring/src/main/java/com/baeldung/jooq/introduction/db/information_schema/tables/records/CatalogsRecord.java b/jooq-spring/src/main/java/com/baeldung/jooq/introduction/db/information_schema/tables/records/CatalogsRecord.java deleted file mode 100644 index d59728bf01..0000000000 --- a/jooq-spring/src/main/java/com/baeldung/jooq/introduction/db/information_schema/tables/records/CatalogsRecord.java +++ /dev/null @@ -1,119 +0,0 @@ -/** - * This class is generated by jOOQ - */ -package com.baeldung.jooq.introduction.db.information_schema.tables.records; - - -import com.baeldung.jooq.introduction.db.information_schema.tables.Catalogs; - -import javax.annotation.Generated; - -import org.jooq.Field; -import org.jooq.Record1; -import org.jooq.Row1; -import org.jooq.impl.TableRecordImpl; - - -/** - * This class is generated by jOOQ. - */ -@Generated( - value = { - "http://www.jooq.org", - "jOOQ version:3.7.3" - }, - comments = "This class is generated by jOOQ" -) -@SuppressWarnings({ "all", "unchecked", "rawtypes" }) -public class CatalogsRecord extends TableRecordImpl implements Record1 { - - private static final long serialVersionUID = -2119003002; - - /** - * Setter for INFORMATION_SCHEMA.CATALOGS.CATALOG_NAME. - */ - public void setCatalogName(String value) { - setValue(0, value); - } - - /** - * Getter for INFORMATION_SCHEMA.CATALOGS.CATALOG_NAME. - */ - public String getCatalogName() { - return (String) getValue(0); - } - - // ------------------------------------------------------------------------- - // Record1 type implementation - // ------------------------------------------------------------------------- - - /** - * {@inheritDoc} - */ - @Override - public Row1 fieldsRow() { - return (Row1) super.fieldsRow(); - } - - /** - * {@inheritDoc} - */ - @Override - public Row1 valuesRow() { - return (Row1) super.valuesRow(); - } - - /** - * {@inheritDoc} - */ - @Override - public Field field1() { - return Catalogs.CATALOGS.CATALOG_NAME; - } - - /** - * {@inheritDoc} - */ - @Override - public String value1() { - return getCatalogName(); - } - - /** - * {@inheritDoc} - */ - @Override - public CatalogsRecord value1(String value) { - setCatalogName(value); - return this; - } - - /** - * {@inheritDoc} - */ - @Override - public CatalogsRecord values(String value1) { - value1(value1); - return this; - } - - // ------------------------------------------------------------------------- - // Constructors - // ------------------------------------------------------------------------- - - /** - * Create a detached CatalogsRecord - */ - public CatalogsRecord() { - super(Catalogs.CATALOGS); - } - - /** - * Create a detached, initialised CatalogsRecord - */ - public CatalogsRecord(String catalogName) { - super(Catalogs.CATALOGS); - - setValue(0, catalogName); - } -} diff --git a/jooq-spring/src/main/java/com/baeldung/jooq/introduction/db/information_schema/tables/records/CollationsRecord.java b/jooq-spring/src/main/java/com/baeldung/jooq/introduction/db/information_schema/tables/records/CollationsRecord.java deleted file mode 100644 index e0abb49012..0000000000 --- a/jooq-spring/src/main/java/com/baeldung/jooq/introduction/db/information_schema/tables/records/CollationsRecord.java +++ /dev/null @@ -1,160 +0,0 @@ -/** - * This class is generated by jOOQ - */ -package com.baeldung.jooq.introduction.db.information_schema.tables.records; - - -import com.baeldung.jooq.introduction.db.information_schema.tables.Collations; - -import javax.annotation.Generated; - -import org.jooq.Field; -import org.jooq.Record2; -import org.jooq.Row2; -import org.jooq.impl.TableRecordImpl; - - -/** - * This class is generated by jOOQ. - */ -@Generated( - value = { - "http://www.jooq.org", - "jOOQ version:3.7.3" - }, - comments = "This class is generated by jOOQ" -) -@SuppressWarnings({ "all", "unchecked", "rawtypes" }) -public class CollationsRecord extends TableRecordImpl implements Record2 { - - private static final long serialVersionUID = -890210086; - - /** - * Setter for INFORMATION_SCHEMA.COLLATIONS.NAME. - */ - public void setName(String value) { - setValue(0, value); - } - - /** - * Getter for INFORMATION_SCHEMA.COLLATIONS.NAME. - */ - public String getName() { - return (String) getValue(0); - } - - /** - * Setter for INFORMATION_SCHEMA.COLLATIONS.KEY. - */ - public void setKey(String value) { - setValue(1, value); - } - - /** - * Getter for INFORMATION_SCHEMA.COLLATIONS.KEY. - */ - public String getKey() { - return (String) getValue(1); - } - - // ------------------------------------------------------------------------- - // Record2 type implementation - // ------------------------------------------------------------------------- - - /** - * {@inheritDoc} - */ - @Override - public Row2 fieldsRow() { - return (Row2) super.fieldsRow(); - } - - /** - * {@inheritDoc} - */ - @Override - public Row2 valuesRow() { - return (Row2) super.valuesRow(); - } - - /** - * {@inheritDoc} - */ - @Override - public Field field1() { - return Collations.COLLATIONS.NAME; - } - - /** - * {@inheritDoc} - */ - @Override - public Field field2() { - return Collations.COLLATIONS.KEY; - } - - /** - * {@inheritDoc} - */ - @Override - public String value1() { - return getName(); - } - - /** - * {@inheritDoc} - */ - @Override - public String value2() { - return getKey(); - } - - /** - * {@inheritDoc} - */ - @Override - public CollationsRecord value1(String value) { - setName(value); - return this; - } - - /** - * {@inheritDoc} - */ - @Override - public CollationsRecord value2(String value) { - setKey(value); - return this; - } - - /** - * {@inheritDoc} - */ - @Override - public CollationsRecord values(String value1, String value2) { - value1(value1); - value2(value2); - return this; - } - - // ------------------------------------------------------------------------- - // Constructors - // ------------------------------------------------------------------------- - - /** - * Create a detached CollationsRecord - */ - public CollationsRecord() { - super(Collations.COLLATIONS); - } - - /** - * Create a detached, initialised CollationsRecord - */ - public CollationsRecord(String name, String key) { - super(Collations.COLLATIONS); - - setValue(0, name); - setValue(1, key); - } -} diff --git a/jooq-spring/src/main/java/com/baeldung/jooq/introduction/db/information_schema/tables/records/ColumnPrivilegesRecord.java b/jooq-spring/src/main/java/com/baeldung/jooq/introduction/db/information_schema/tables/records/ColumnPrivilegesRecord.java deleted file mode 100644 index 105348a339..0000000000 --- a/jooq-spring/src/main/java/com/baeldung/jooq/introduction/db/information_schema/tables/records/ColumnPrivilegesRecord.java +++ /dev/null @@ -1,406 +0,0 @@ -/** - * This class is generated by jOOQ - */ -package com.baeldung.jooq.introduction.db.information_schema.tables.records; - - -import com.baeldung.jooq.introduction.db.information_schema.tables.ColumnPrivileges; - -import javax.annotation.Generated; - -import org.jooq.Field; -import org.jooq.Record8; -import org.jooq.Row8; -import org.jooq.impl.TableRecordImpl; - - -/** - * This class is generated by jOOQ. - */ -@Generated( - value = { - "http://www.jooq.org", - "jOOQ version:3.7.3" - }, - comments = "This class is generated by jOOQ" -) -@SuppressWarnings({ "all", "unchecked", "rawtypes" }) -public class ColumnPrivilegesRecord extends TableRecordImpl implements Record8 { - - private static final long serialVersionUID = 1884367853; - - /** - * Setter for INFORMATION_SCHEMA.COLUMN_PRIVILEGES.GRANTOR. - */ - public void setGrantor(String value) { - setValue(0, value); - } - - /** - * Getter for INFORMATION_SCHEMA.COLUMN_PRIVILEGES.GRANTOR. - */ - public String getGrantor() { - return (String) getValue(0); - } - - /** - * Setter for INFORMATION_SCHEMA.COLUMN_PRIVILEGES.GRANTEE. - */ - public void setGrantee(String value) { - setValue(1, value); - } - - /** - * Getter for INFORMATION_SCHEMA.COLUMN_PRIVILEGES.GRANTEE. - */ - public String getGrantee() { - return (String) getValue(1); - } - - /** - * Setter for INFORMATION_SCHEMA.COLUMN_PRIVILEGES.TABLE_CATALOG. - */ - public void setTableCatalog(String value) { - setValue(2, value); - } - - /** - * Getter for INFORMATION_SCHEMA.COLUMN_PRIVILEGES.TABLE_CATALOG. - */ - public String getTableCatalog() { - return (String) getValue(2); - } - - /** - * Setter for INFORMATION_SCHEMA.COLUMN_PRIVILEGES.TABLE_SCHEMA. - */ - public void setTableSchema(String value) { - setValue(3, value); - } - - /** - * Getter for INFORMATION_SCHEMA.COLUMN_PRIVILEGES.TABLE_SCHEMA. - */ - public String getTableSchema() { - return (String) getValue(3); - } - - /** - * Setter for INFORMATION_SCHEMA.COLUMN_PRIVILEGES.TABLE_NAME. - */ - public void setTableName(String value) { - setValue(4, value); - } - - /** - * Getter for INFORMATION_SCHEMA.COLUMN_PRIVILEGES.TABLE_NAME. - */ - public String getTableName() { - return (String) getValue(4); - } - - /** - * Setter for INFORMATION_SCHEMA.COLUMN_PRIVILEGES.COLUMN_NAME. - */ - public void setColumnName(String value) { - setValue(5, value); - } - - /** - * Getter for INFORMATION_SCHEMA.COLUMN_PRIVILEGES.COLUMN_NAME. - */ - public String getColumnName() { - return (String) getValue(5); - } - - /** - * Setter for INFORMATION_SCHEMA.COLUMN_PRIVILEGES.PRIVILEGE_TYPE. - */ - public void setPrivilegeType(String value) { - setValue(6, value); - } - - /** - * Getter for INFORMATION_SCHEMA.COLUMN_PRIVILEGES.PRIVILEGE_TYPE. - */ - public String getPrivilegeType() { - return (String) getValue(6); - } - - /** - * Setter for INFORMATION_SCHEMA.COLUMN_PRIVILEGES.IS_GRANTABLE. - */ - public void setIsGrantable(String value) { - setValue(7, value); - } - - /** - * Getter for INFORMATION_SCHEMA.COLUMN_PRIVILEGES.IS_GRANTABLE. - */ - public String getIsGrantable() { - return (String) getValue(7); - } - - // ------------------------------------------------------------------------- - // Record8 type implementation - // ------------------------------------------------------------------------- - - /** - * {@inheritDoc} - */ - @Override - public Row8 fieldsRow() { - return (Row8) super.fieldsRow(); - } - - /** - * {@inheritDoc} - */ - @Override - public Row8 valuesRow() { - return (Row8) super.valuesRow(); - } - - /** - * {@inheritDoc} - */ - @Override - public Field field1() { - return ColumnPrivileges.COLUMN_PRIVILEGES.GRANTOR; - } - - /** - * {@inheritDoc} - */ - @Override - public Field field2() { - return ColumnPrivileges.COLUMN_PRIVILEGES.GRANTEE; - } - - /** - * {@inheritDoc} - */ - @Override - public Field field3() { - return ColumnPrivileges.COLUMN_PRIVILEGES.TABLE_CATALOG; - } - - /** - * {@inheritDoc} - */ - @Override - public Field field4() { - return ColumnPrivileges.COLUMN_PRIVILEGES.TABLE_SCHEMA; - } - - /** - * {@inheritDoc} - */ - @Override - public Field field5() { - return ColumnPrivileges.COLUMN_PRIVILEGES.TABLE_NAME; - } - - /** - * {@inheritDoc} - */ - @Override - public Field field6() { - return ColumnPrivileges.COLUMN_PRIVILEGES.COLUMN_NAME; - } - - /** - * {@inheritDoc} - */ - @Override - public Field field7() { - return ColumnPrivileges.COLUMN_PRIVILEGES.PRIVILEGE_TYPE; - } - - /** - * {@inheritDoc} - */ - @Override - public Field field8() { - return ColumnPrivileges.COLUMN_PRIVILEGES.IS_GRANTABLE; - } - - /** - * {@inheritDoc} - */ - @Override - public String value1() { - return getGrantor(); - } - - /** - * {@inheritDoc} - */ - @Override - public String value2() { - return getGrantee(); - } - - /** - * {@inheritDoc} - */ - @Override - public String value3() { - return getTableCatalog(); - } - - /** - * {@inheritDoc} - */ - @Override - public String value4() { - return getTableSchema(); - } - - /** - * {@inheritDoc} - */ - @Override - public String value5() { - return getTableName(); - } - - /** - * {@inheritDoc} - */ - @Override - public String value6() { - return getColumnName(); - } - - /** - * {@inheritDoc} - */ - @Override - public String value7() { - return getPrivilegeType(); - } - - /** - * {@inheritDoc} - */ - @Override - public String value8() { - return getIsGrantable(); - } - - /** - * {@inheritDoc} - */ - @Override - public ColumnPrivilegesRecord value1(String value) { - setGrantor(value); - return this; - } - - /** - * {@inheritDoc} - */ - @Override - public ColumnPrivilegesRecord value2(String value) { - setGrantee(value); - return this; - } - - /** - * {@inheritDoc} - */ - @Override - public ColumnPrivilegesRecord value3(String value) { - setTableCatalog(value); - return this; - } - - /** - * {@inheritDoc} - */ - @Override - public ColumnPrivilegesRecord value4(String value) { - setTableSchema(value); - return this; - } - - /** - * {@inheritDoc} - */ - @Override - public ColumnPrivilegesRecord value5(String value) { - setTableName(value); - return this; - } - - /** - * {@inheritDoc} - */ - @Override - public ColumnPrivilegesRecord value6(String value) { - setColumnName(value); - return this; - } - - /** - * {@inheritDoc} - */ - @Override - public ColumnPrivilegesRecord value7(String value) { - setPrivilegeType(value); - return this; - } - - /** - * {@inheritDoc} - */ - @Override - public ColumnPrivilegesRecord value8(String value) { - setIsGrantable(value); - return this; - } - - /** - * {@inheritDoc} - */ - @Override - public ColumnPrivilegesRecord values(String value1, String value2, String value3, String value4, String value5, String value6, String value7, String value8) { - value1(value1); - value2(value2); - value3(value3); - value4(value4); - value5(value5); - value6(value6); - value7(value7); - value8(value8); - return this; - } - - // ------------------------------------------------------------------------- - // Constructors - // ------------------------------------------------------------------------- - - /** - * Create a detached ColumnPrivilegesRecord - */ - public ColumnPrivilegesRecord() { - super(ColumnPrivileges.COLUMN_PRIVILEGES); - } - - /** - * Create a detached, initialised ColumnPrivilegesRecord - */ - public ColumnPrivilegesRecord(String grantor, String grantee, String tableCatalog, String tableSchema, String tableName, String columnName, String privilegeType, String isGrantable) { - super(ColumnPrivileges.COLUMN_PRIVILEGES); - - setValue(0, grantor); - setValue(1, grantee); - setValue(2, tableCatalog); - setValue(3, tableSchema); - setValue(4, tableName); - setValue(5, columnName); - setValue(6, privilegeType); - setValue(7, isGrantable); - } -} diff --git a/jooq-spring/src/main/java/com/baeldung/jooq/introduction/db/information_schema/tables/records/ColumnsRecord.java b/jooq-spring/src/main/java/com/baeldung/jooq/introduction/db/information_schema/tables/records/ColumnsRecord.java deleted file mode 100644 index 63a83b0056..0000000000 --- a/jooq-spring/src/main/java/com/baeldung/jooq/introduction/db/information_schema/tables/records/ColumnsRecord.java +++ /dev/null @@ -1,392 +0,0 @@ -/** - * This class is generated by jOOQ - */ -package com.baeldung.jooq.introduction.db.information_schema.tables.records; - - -import com.baeldung.jooq.introduction.db.information_schema.tables.Columns; - -import javax.annotation.Generated; - -import org.jooq.impl.TableRecordImpl; - - -/** - * This class is generated by jOOQ. - */ -@Generated( - value = { - "http://www.jooq.org", - "jOOQ version:3.7.3" - }, - comments = "This class is generated by jOOQ" -) -@SuppressWarnings({ "all", "unchecked", "rawtypes" }) -public class ColumnsRecord extends TableRecordImpl { - - private static final long serialVersionUID = 1850723283; - - /** - * Setter for INFORMATION_SCHEMA.COLUMNS.TABLE_CATALOG. - */ - public void setTableCatalog(String value) { - setValue(0, value); - } - - /** - * Getter for INFORMATION_SCHEMA.COLUMNS.TABLE_CATALOG. - */ - public String getTableCatalog() { - return (String) getValue(0); - } - - /** - * Setter for INFORMATION_SCHEMA.COLUMNS.TABLE_SCHEMA. - */ - public void setTableSchema(String value) { - setValue(1, value); - } - - /** - * Getter for INFORMATION_SCHEMA.COLUMNS.TABLE_SCHEMA. - */ - public String getTableSchema() { - return (String) getValue(1); - } - - /** - * Setter for INFORMATION_SCHEMA.COLUMNS.TABLE_NAME. - */ - public void setTableName(String value) { - setValue(2, value); - } - - /** - * Getter for INFORMATION_SCHEMA.COLUMNS.TABLE_NAME. - */ - public String getTableName() { - return (String) getValue(2); - } - - /** - * Setter for INFORMATION_SCHEMA.COLUMNS.COLUMN_NAME. - */ - public void setColumnName(String value) { - setValue(3, value); - } - - /** - * Getter for INFORMATION_SCHEMA.COLUMNS.COLUMN_NAME. - */ - public String getColumnName() { - return (String) getValue(3); - } - - /** - * Setter for INFORMATION_SCHEMA.COLUMNS.ORDINAL_POSITION. - */ - public void setOrdinalPosition(Integer value) { - setValue(4, value); - } - - /** - * Getter for INFORMATION_SCHEMA.COLUMNS.ORDINAL_POSITION. - */ - public Integer getOrdinalPosition() { - return (Integer) getValue(4); - } - - /** - * Setter for INFORMATION_SCHEMA.COLUMNS.COLUMN_DEFAULT. - */ - public void setColumnDefault(String value) { - setValue(5, value); - } - - /** - * Getter for INFORMATION_SCHEMA.COLUMNS.COLUMN_DEFAULT. - */ - public String getColumnDefault() { - return (String) getValue(5); - } - - /** - * Setter for INFORMATION_SCHEMA.COLUMNS.IS_NULLABLE. - */ - public void setIsNullable(String value) { - setValue(6, value); - } - - /** - * Getter for INFORMATION_SCHEMA.COLUMNS.IS_NULLABLE. - */ - public String getIsNullable() { - return (String) getValue(6); - } - - /** - * Setter for INFORMATION_SCHEMA.COLUMNS.DATA_TYPE. - */ - public void setDataType(Integer value) { - setValue(7, value); - } - - /** - * Getter for INFORMATION_SCHEMA.COLUMNS.DATA_TYPE. - */ - public Integer getDataType() { - return (Integer) getValue(7); - } - - /** - * Setter for INFORMATION_SCHEMA.COLUMNS.CHARACTER_MAXIMUM_LENGTH. - */ - public void setCharacterMaximumLength(Integer value) { - setValue(8, value); - } - - /** - * Getter for INFORMATION_SCHEMA.COLUMNS.CHARACTER_MAXIMUM_LENGTH. - */ - public Integer getCharacterMaximumLength() { - return (Integer) getValue(8); - } - - /** - * Setter for INFORMATION_SCHEMA.COLUMNS.CHARACTER_OCTET_LENGTH. - */ - public void setCharacterOctetLength(Integer value) { - setValue(9, value); - } - - /** - * Getter for INFORMATION_SCHEMA.COLUMNS.CHARACTER_OCTET_LENGTH. - */ - public Integer getCharacterOctetLength() { - return (Integer) getValue(9); - } - - /** - * Setter for INFORMATION_SCHEMA.COLUMNS.NUMERIC_PRECISION. - */ - public void setNumericPrecision(Integer value) { - setValue(10, value); - } - - /** - * Getter for INFORMATION_SCHEMA.COLUMNS.NUMERIC_PRECISION. - */ - public Integer getNumericPrecision() { - return (Integer) getValue(10); - } - - /** - * Setter for INFORMATION_SCHEMA.COLUMNS.NUMERIC_PRECISION_RADIX. - */ - public void setNumericPrecisionRadix(Integer value) { - setValue(11, value); - } - - /** - * Getter for INFORMATION_SCHEMA.COLUMNS.NUMERIC_PRECISION_RADIX. - */ - public Integer getNumericPrecisionRadix() { - return (Integer) getValue(11); - } - - /** - * Setter for INFORMATION_SCHEMA.COLUMNS.NUMERIC_SCALE. - */ - public void setNumericScale(Integer value) { - setValue(12, value); - } - - /** - * Getter for INFORMATION_SCHEMA.COLUMNS.NUMERIC_SCALE. - */ - public Integer getNumericScale() { - return (Integer) getValue(12); - } - - /** - * Setter for INFORMATION_SCHEMA.COLUMNS.CHARACTER_SET_NAME. - */ - public void setCharacterSetName(String value) { - setValue(13, value); - } - - /** - * Getter for INFORMATION_SCHEMA.COLUMNS.CHARACTER_SET_NAME. - */ - public String getCharacterSetName() { - return (String) getValue(13); - } - - /** - * Setter for INFORMATION_SCHEMA.COLUMNS.COLLATION_NAME. - */ - public void setCollationName(String value) { - setValue(14, value); - } - - /** - * Getter for INFORMATION_SCHEMA.COLUMNS.COLLATION_NAME. - */ - public String getCollationName() { - return (String) getValue(14); - } - - /** - * Setter for INFORMATION_SCHEMA.COLUMNS.TYPE_NAME. - */ - public void setTypeName(String value) { - setValue(15, value); - } - - /** - * Getter for INFORMATION_SCHEMA.COLUMNS.TYPE_NAME. - */ - public String getTypeName() { - return (String) getValue(15); - } - - /** - * Setter for INFORMATION_SCHEMA.COLUMNS.NULLABLE. - */ - public void setNullable(Integer value) { - setValue(16, value); - } - - /** - * Getter for INFORMATION_SCHEMA.COLUMNS.NULLABLE. - */ - public Integer getNullable() { - return (Integer) getValue(16); - } - - /** - * Setter for INFORMATION_SCHEMA.COLUMNS.IS_COMPUTED. - */ - public void setIsComputed(Boolean value) { - setValue(17, value); - } - - /** - * Getter for INFORMATION_SCHEMA.COLUMNS.IS_COMPUTED. - */ - public Boolean getIsComputed() { - return (Boolean) getValue(17); - } - - /** - * Setter for INFORMATION_SCHEMA.COLUMNS.SELECTIVITY. - */ - public void setSelectivity(Integer value) { - setValue(18, value); - } - - /** - * Getter for INFORMATION_SCHEMA.COLUMNS.SELECTIVITY. - */ - public Integer getSelectivity() { - return (Integer) getValue(18); - } - - /** - * Setter for INFORMATION_SCHEMA.COLUMNS.CHECK_CONSTRAINT. - */ - public void setCheckConstraint(String value) { - setValue(19, value); - } - - /** - * Getter for INFORMATION_SCHEMA.COLUMNS.CHECK_CONSTRAINT. - */ - public String getCheckConstraint() { - return (String) getValue(19); - } - - /** - * Setter for INFORMATION_SCHEMA.COLUMNS.SEQUENCE_NAME. - */ - public void setSequenceName(String value) { - setValue(20, value); - } - - /** - * Getter for INFORMATION_SCHEMA.COLUMNS.SEQUENCE_NAME. - */ - public String getSequenceName() { - return (String) getValue(20); - } - - /** - * Setter for INFORMATION_SCHEMA.COLUMNS.REMARKS. - */ - public void setRemarks(String value) { - setValue(21, value); - } - - /** - * Getter for INFORMATION_SCHEMA.COLUMNS.REMARKS. - */ - public String getRemarks() { - return (String) getValue(21); - } - - /** - * Setter for INFORMATION_SCHEMA.COLUMNS.SOURCE_DATA_TYPE. - */ - public void setSourceDataType(Short value) { - setValue(22, value); - } - - /** - * Getter for INFORMATION_SCHEMA.COLUMNS.SOURCE_DATA_TYPE. - */ - public Short getSourceDataType() { - return (Short) getValue(22); - } - - // ------------------------------------------------------------------------- - // Constructors - // ------------------------------------------------------------------------- - - /** - * Create a detached ColumnsRecord - */ - public ColumnsRecord() { - super(Columns.COLUMNS); - } - - /** - * Create a detached, initialised ColumnsRecord - */ - public ColumnsRecord(String tableCatalog, String tableSchema, String tableName, String columnName, Integer ordinalPosition, String columnDefault, String isNullable, Integer dataType, Integer characterMaximumLength, Integer characterOctetLength, Integer numericPrecision, Integer numericPrecisionRadix, Integer numericScale, String characterSetName, String collationName, String typeName, Integer nullable, Boolean isComputed, Integer selectivity, String checkConstraint, String sequenceName, String remarks, Short sourceDataType) { - super(Columns.COLUMNS); - - setValue(0, tableCatalog); - setValue(1, tableSchema); - setValue(2, tableName); - setValue(3, columnName); - setValue(4, ordinalPosition); - setValue(5, columnDefault); - setValue(6, isNullable); - setValue(7, dataType); - setValue(8, characterMaximumLength); - setValue(9, characterOctetLength); - setValue(10, numericPrecision); - setValue(11, numericPrecisionRadix); - setValue(12, numericScale); - setValue(13, characterSetName); - setValue(14, collationName); - setValue(15, typeName); - setValue(16, nullable); - setValue(17, isComputed); - setValue(18, selectivity); - setValue(19, checkConstraint); - setValue(20, sequenceName); - setValue(21, remarks); - setValue(22, sourceDataType); - } -} diff --git a/jooq-spring/src/main/java/com/baeldung/jooq/introduction/db/information_schema/tables/records/ConstantsRecord.java b/jooq-spring/src/main/java/com/baeldung/jooq/introduction/db/information_schema/tables/records/ConstantsRecord.java deleted file mode 100644 index b1225bd747..0000000000 --- a/jooq-spring/src/main/java/com/baeldung/jooq/introduction/db/information_schema/tables/records/ConstantsRecord.java +++ /dev/null @@ -1,365 +0,0 @@ -/** - * This class is generated by jOOQ - */ -package com.baeldung.jooq.introduction.db.information_schema.tables.records; - - -import com.baeldung.jooq.introduction.db.information_schema.tables.Constants; - -import javax.annotation.Generated; - -import org.jooq.Field; -import org.jooq.Record7; -import org.jooq.Row7; -import org.jooq.impl.TableRecordImpl; - - -/** - * This class is generated by jOOQ. - */ -@Generated( - value = { - "http://www.jooq.org", - "jOOQ version:3.7.3" - }, - comments = "This class is generated by jOOQ" -) -@SuppressWarnings({ "all", "unchecked", "rawtypes" }) -public class ConstantsRecord extends TableRecordImpl implements Record7 { - - private static final long serialVersionUID = -775500532; - - /** - * Setter for INFORMATION_SCHEMA.CONSTANTS.CONSTANT_CATALOG. - */ - public void setConstantCatalog(String value) { - setValue(0, value); - } - - /** - * Getter for INFORMATION_SCHEMA.CONSTANTS.CONSTANT_CATALOG. - */ - public String getConstantCatalog() { - return (String) getValue(0); - } - - /** - * Setter for INFORMATION_SCHEMA.CONSTANTS.CONSTANT_SCHEMA. - */ - public void setConstantSchema(String value) { - setValue(1, value); - } - - /** - * Getter for INFORMATION_SCHEMA.CONSTANTS.CONSTANT_SCHEMA. - */ - public String getConstantSchema() { - return (String) getValue(1); - } - - /** - * Setter for INFORMATION_SCHEMA.CONSTANTS.CONSTANT_NAME. - */ - public void setConstantName(String value) { - setValue(2, value); - } - - /** - * Getter for INFORMATION_SCHEMA.CONSTANTS.CONSTANT_NAME. - */ - public String getConstantName() { - return (String) getValue(2); - } - - /** - * Setter for INFORMATION_SCHEMA.CONSTANTS.DATA_TYPE. - */ - public void setDataType(Integer value) { - setValue(3, value); - } - - /** - * Getter for INFORMATION_SCHEMA.CONSTANTS.DATA_TYPE. - */ - public Integer getDataType() { - return (Integer) getValue(3); - } - - /** - * Setter for INFORMATION_SCHEMA.CONSTANTS.REMARKS. - */ - public void setRemarks(String value) { - setValue(4, value); - } - - /** - * Getter for INFORMATION_SCHEMA.CONSTANTS.REMARKS. - */ - public String getRemarks() { - return (String) getValue(4); - } - - /** - * Setter for INFORMATION_SCHEMA.CONSTANTS.SQL. - */ - public void setSql(String value) { - setValue(5, value); - } - - /** - * Getter for INFORMATION_SCHEMA.CONSTANTS.SQL. - */ - public String getSql() { - return (String) getValue(5); - } - - /** - * Setter for INFORMATION_SCHEMA.CONSTANTS.ID. - */ - public void setId(Integer value) { - setValue(6, value); - } - - /** - * Getter for INFORMATION_SCHEMA.CONSTANTS.ID. - */ - public Integer getId() { - return (Integer) getValue(6); - } - - // ------------------------------------------------------------------------- - // Record7 type implementation - // ------------------------------------------------------------------------- - - /** - * {@inheritDoc} - */ - @Override - public Row7 fieldsRow() { - return (Row7) super.fieldsRow(); - } - - /** - * {@inheritDoc} - */ - @Override - public Row7 valuesRow() { - return (Row7) super.valuesRow(); - } - - /** - * {@inheritDoc} - */ - @Override - public Field field1() { - return Constants.CONSTANTS.CONSTANT_CATALOG; - } - - /** - * {@inheritDoc} - */ - @Override - public Field field2() { - return Constants.CONSTANTS.CONSTANT_SCHEMA; - } - - /** - * {@inheritDoc} - */ - @Override - public Field field3() { - return Constants.CONSTANTS.CONSTANT_NAME; - } - - /** - * {@inheritDoc} - */ - @Override - public Field field4() { - return Constants.CONSTANTS.DATA_TYPE; - } - - /** - * {@inheritDoc} - */ - @Override - public Field field5() { - return Constants.CONSTANTS.REMARKS; - } - - /** - * {@inheritDoc} - */ - @Override - public Field field6() { - return Constants.CONSTANTS.SQL; - } - - /** - * {@inheritDoc} - */ - @Override - public Field field7() { - return Constants.CONSTANTS.ID; - } - - /** - * {@inheritDoc} - */ - @Override - public String value1() { - return getConstantCatalog(); - } - - /** - * {@inheritDoc} - */ - @Override - public String value2() { - return getConstantSchema(); - } - - /** - * {@inheritDoc} - */ - @Override - public String value3() { - return getConstantName(); - } - - /** - * {@inheritDoc} - */ - @Override - public Integer value4() { - return getDataType(); - } - - /** - * {@inheritDoc} - */ - @Override - public String value5() { - return getRemarks(); - } - - /** - * {@inheritDoc} - */ - @Override - public String value6() { - return getSql(); - } - - /** - * {@inheritDoc} - */ - @Override - public Integer value7() { - return getId(); - } - - /** - * {@inheritDoc} - */ - @Override - public ConstantsRecord value1(String value) { - setConstantCatalog(value); - return this; - } - - /** - * {@inheritDoc} - */ - @Override - public ConstantsRecord value2(String value) { - setConstantSchema(value); - return this; - } - - /** - * {@inheritDoc} - */ - @Override - public ConstantsRecord value3(String value) { - setConstantName(value); - return this; - } - - /** - * {@inheritDoc} - */ - @Override - public ConstantsRecord value4(Integer value) { - setDataType(value); - return this; - } - - /** - * {@inheritDoc} - */ - @Override - public ConstantsRecord value5(String value) { - setRemarks(value); - return this; - } - - /** - * {@inheritDoc} - */ - @Override - public ConstantsRecord value6(String value) { - setSql(value); - return this; - } - - /** - * {@inheritDoc} - */ - @Override - public ConstantsRecord value7(Integer value) { - setId(value); - return this; - } - - /** - * {@inheritDoc} - */ - @Override - public ConstantsRecord values(String value1, String value2, String value3, Integer value4, String value5, String value6, Integer value7) { - value1(value1); - value2(value2); - value3(value3); - value4(value4); - value5(value5); - value6(value6); - value7(value7); - return this; - } - - // ------------------------------------------------------------------------- - // Constructors - // ------------------------------------------------------------------------- - - /** - * Create a detached ConstantsRecord - */ - public ConstantsRecord() { - super(Constants.CONSTANTS); - } - - /** - * Create a detached, initialised ConstantsRecord - */ - public ConstantsRecord(String constantCatalog, String constantSchema, String constantName, Integer dataType, String remarks, String sql, Integer id) { - super(Constants.CONSTANTS); - - setValue(0, constantCatalog); - setValue(1, constantSchema); - setValue(2, constantName); - setValue(3, dataType); - setValue(4, remarks); - setValue(5, sql); - setValue(6, id); - } -} diff --git a/jooq-spring/src/main/java/com/baeldung/jooq/introduction/db/information_schema/tables/records/ConstraintsRecord.java b/jooq-spring/src/main/java/com/baeldung/jooq/introduction/db/information_schema/tables/records/ConstraintsRecord.java deleted file mode 100644 index f1727739a2..0000000000 --- a/jooq-spring/src/main/java/com/baeldung/jooq/introduction/db/information_schema/tables/records/ConstraintsRecord.java +++ /dev/null @@ -1,611 +0,0 @@ -/** - * This class is generated by jOOQ - */ -package com.baeldung.jooq.introduction.db.information_schema.tables.records; - - -import com.baeldung.jooq.introduction.db.information_schema.tables.Constraints; - -import javax.annotation.Generated; - -import org.jooq.Field; -import org.jooq.Record13; -import org.jooq.Row13; -import org.jooq.impl.TableRecordImpl; - - -/** - * This class is generated by jOOQ. - */ -@Generated( - value = { - "http://www.jooq.org", - "jOOQ version:3.7.3" - }, - comments = "This class is generated by jOOQ" -) -@SuppressWarnings({ "all", "unchecked", "rawtypes" }) -public class ConstraintsRecord extends TableRecordImpl implements Record13 { - - private static final long serialVersionUID = 759662490; - - /** - * Setter for INFORMATION_SCHEMA.CONSTRAINTS.CONSTRAINT_CATALOG. - */ - public void setConstraintCatalog(String value) { - setValue(0, value); - } - - /** - * Getter for INFORMATION_SCHEMA.CONSTRAINTS.CONSTRAINT_CATALOG. - */ - public String getConstraintCatalog() { - return (String) getValue(0); - } - - /** - * Setter for INFORMATION_SCHEMA.CONSTRAINTS.CONSTRAINT_SCHEMA. - */ - public void setConstraintSchema(String value) { - setValue(1, value); - } - - /** - * Getter for INFORMATION_SCHEMA.CONSTRAINTS.CONSTRAINT_SCHEMA. - */ - public String getConstraintSchema() { - return (String) getValue(1); - } - - /** - * Setter for INFORMATION_SCHEMA.CONSTRAINTS.CONSTRAINT_NAME. - */ - public void setConstraintName(String value) { - setValue(2, value); - } - - /** - * Getter for INFORMATION_SCHEMA.CONSTRAINTS.CONSTRAINT_NAME. - */ - public String getConstraintName() { - return (String) getValue(2); - } - - /** - * Setter for INFORMATION_SCHEMA.CONSTRAINTS.CONSTRAINT_TYPE. - */ - public void setConstraintType(String value) { - setValue(3, value); - } - - /** - * Getter for INFORMATION_SCHEMA.CONSTRAINTS.CONSTRAINT_TYPE. - */ - public String getConstraintType() { - return (String) getValue(3); - } - - /** - * Setter for INFORMATION_SCHEMA.CONSTRAINTS.TABLE_CATALOG. - */ - public void setTableCatalog(String value) { - setValue(4, value); - } - - /** - * Getter for INFORMATION_SCHEMA.CONSTRAINTS.TABLE_CATALOG. - */ - public String getTableCatalog() { - return (String) getValue(4); - } - - /** - * Setter for INFORMATION_SCHEMA.CONSTRAINTS.TABLE_SCHEMA. - */ - public void setTableSchema(String value) { - setValue(5, value); - } - - /** - * Getter for INFORMATION_SCHEMA.CONSTRAINTS.TABLE_SCHEMA. - */ - public String getTableSchema() { - return (String) getValue(5); - } - - /** - * Setter for INFORMATION_SCHEMA.CONSTRAINTS.TABLE_NAME. - */ - public void setTableName(String value) { - setValue(6, value); - } - - /** - * Getter for INFORMATION_SCHEMA.CONSTRAINTS.TABLE_NAME. - */ - public String getTableName() { - return (String) getValue(6); - } - - /** - * Setter for INFORMATION_SCHEMA.CONSTRAINTS.UNIQUE_INDEX_NAME. - */ - public void setUniqueIndexName(String value) { - setValue(7, value); - } - - /** - * Getter for INFORMATION_SCHEMA.CONSTRAINTS.UNIQUE_INDEX_NAME. - */ - public String getUniqueIndexName() { - return (String) getValue(7); - } - - /** - * Setter for INFORMATION_SCHEMA.CONSTRAINTS.CHECK_EXPRESSION. - */ - public void setCheckExpression(String value) { - setValue(8, value); - } - - /** - * Getter for INFORMATION_SCHEMA.CONSTRAINTS.CHECK_EXPRESSION. - */ - public String getCheckExpression() { - return (String) getValue(8); - } - - /** - * Setter for INFORMATION_SCHEMA.CONSTRAINTS.COLUMN_LIST. - */ - public void setColumnList(String value) { - setValue(9, value); - } - - /** - * Getter for INFORMATION_SCHEMA.CONSTRAINTS.COLUMN_LIST. - */ - public String getColumnList() { - return (String) getValue(9); - } - - /** - * Setter for INFORMATION_SCHEMA.CONSTRAINTS.REMARKS. - */ - public void setRemarks(String value) { - setValue(10, value); - } - - /** - * Getter for INFORMATION_SCHEMA.CONSTRAINTS.REMARKS. - */ - public String getRemarks() { - return (String) getValue(10); - } - - /** - * Setter for INFORMATION_SCHEMA.CONSTRAINTS.SQL. - */ - public void setSql(String value) { - setValue(11, value); - } - - /** - * Getter for INFORMATION_SCHEMA.CONSTRAINTS.SQL. - */ - public String getSql() { - return (String) getValue(11); - } - - /** - * Setter for INFORMATION_SCHEMA.CONSTRAINTS.ID. - */ - public void setId(Integer value) { - setValue(12, value); - } - - /** - * Getter for INFORMATION_SCHEMA.CONSTRAINTS.ID. - */ - public Integer getId() { - return (Integer) getValue(12); - } - - // ------------------------------------------------------------------------- - // Record13 type implementation - // ------------------------------------------------------------------------- - - /** - * {@inheritDoc} - */ - @Override - public Row13 fieldsRow() { - return (Row13) super.fieldsRow(); - } - - /** - * {@inheritDoc} - */ - @Override - public Row13 valuesRow() { - return (Row13) super.valuesRow(); - } - - /** - * {@inheritDoc} - */ - @Override - public Field field1() { - return Constraints.CONSTRAINTS.CONSTRAINT_CATALOG; - } - - /** - * {@inheritDoc} - */ - @Override - public Field field2() { - return Constraints.CONSTRAINTS.CONSTRAINT_SCHEMA; - } - - /** - * {@inheritDoc} - */ - @Override - public Field field3() { - return Constraints.CONSTRAINTS.CONSTRAINT_NAME; - } - - /** - * {@inheritDoc} - */ - @Override - public Field field4() { - return Constraints.CONSTRAINTS.CONSTRAINT_TYPE; - } - - /** - * {@inheritDoc} - */ - @Override - public Field field5() { - return Constraints.CONSTRAINTS.TABLE_CATALOG; - } - - /** - * {@inheritDoc} - */ - @Override - public Field field6() { - return Constraints.CONSTRAINTS.TABLE_SCHEMA; - } - - /** - * {@inheritDoc} - */ - @Override - public Field field7() { - return Constraints.CONSTRAINTS.TABLE_NAME; - } - - /** - * {@inheritDoc} - */ - @Override - public Field field8() { - return Constraints.CONSTRAINTS.UNIQUE_INDEX_NAME; - } - - /** - * {@inheritDoc} - */ - @Override - public Field field9() { - return Constraints.CONSTRAINTS.CHECK_EXPRESSION; - } - - /** - * {@inheritDoc} - */ - @Override - public Field field10() { - return Constraints.CONSTRAINTS.COLUMN_LIST; - } - - /** - * {@inheritDoc} - */ - @Override - public Field field11() { - return Constraints.CONSTRAINTS.REMARKS; - } - - /** - * {@inheritDoc} - */ - @Override - public Field field12() { - return Constraints.CONSTRAINTS.SQL; - } - - /** - * {@inheritDoc} - */ - @Override - public Field field13() { - return Constraints.CONSTRAINTS.ID; - } - - /** - * {@inheritDoc} - */ - @Override - public String value1() { - return getConstraintCatalog(); - } - - /** - * {@inheritDoc} - */ - @Override - public String value2() { - return getConstraintSchema(); - } - - /** - * {@inheritDoc} - */ - @Override - public String value3() { - return getConstraintName(); - } - - /** - * {@inheritDoc} - */ - @Override - public String value4() { - return getConstraintType(); - } - - /** - * {@inheritDoc} - */ - @Override - public String value5() { - return getTableCatalog(); - } - - /** - * {@inheritDoc} - */ - @Override - public String value6() { - return getTableSchema(); - } - - /** - * {@inheritDoc} - */ - @Override - public String value7() { - return getTableName(); - } - - /** - * {@inheritDoc} - */ - @Override - public String value8() { - return getUniqueIndexName(); - } - - /** - * {@inheritDoc} - */ - @Override - public String value9() { - return getCheckExpression(); - } - - /** - * {@inheritDoc} - */ - @Override - public String value10() { - return getColumnList(); - } - - /** - * {@inheritDoc} - */ - @Override - public String value11() { - return getRemarks(); - } - - /** - * {@inheritDoc} - */ - @Override - public String value12() { - return getSql(); - } - - /** - * {@inheritDoc} - */ - @Override - public Integer value13() { - return getId(); - } - - /** - * {@inheritDoc} - */ - @Override - public ConstraintsRecord value1(String value) { - setConstraintCatalog(value); - return this; - } - - /** - * {@inheritDoc} - */ - @Override - public ConstraintsRecord value2(String value) { - setConstraintSchema(value); - return this; - } - - /** - * {@inheritDoc} - */ - @Override - public ConstraintsRecord value3(String value) { - setConstraintName(value); - return this; - } - - /** - * {@inheritDoc} - */ - @Override - public ConstraintsRecord value4(String value) { - setConstraintType(value); - return this; - } - - /** - * {@inheritDoc} - */ - @Override - public ConstraintsRecord value5(String value) { - setTableCatalog(value); - return this; - } - - /** - * {@inheritDoc} - */ - @Override - public ConstraintsRecord value6(String value) { - setTableSchema(value); - return this; - } - - /** - * {@inheritDoc} - */ - @Override - public ConstraintsRecord value7(String value) { - setTableName(value); - return this; - } - - /** - * {@inheritDoc} - */ - @Override - public ConstraintsRecord value8(String value) { - setUniqueIndexName(value); - return this; - } - - /** - * {@inheritDoc} - */ - @Override - public ConstraintsRecord value9(String value) { - setCheckExpression(value); - return this; - } - - /** - * {@inheritDoc} - */ - @Override - public ConstraintsRecord value10(String value) { - setColumnList(value); - return this; - } - - /** - * {@inheritDoc} - */ - @Override - public ConstraintsRecord value11(String value) { - setRemarks(value); - return this; - } - - /** - * {@inheritDoc} - */ - @Override - public ConstraintsRecord value12(String value) { - setSql(value); - return this; - } - - /** - * {@inheritDoc} - */ - @Override - public ConstraintsRecord value13(Integer value) { - setId(value); - return this; - } - - /** - * {@inheritDoc} - */ - @Override - public ConstraintsRecord values(String value1, String value2, String value3, String value4, String value5, String value6, String value7, String value8, String value9, String value10, String value11, String value12, Integer value13) { - value1(value1); - value2(value2); - value3(value3); - value4(value4); - value5(value5); - value6(value6); - value7(value7); - value8(value8); - value9(value9); - value10(value10); - value11(value11); - value12(value12); - value13(value13); - return this; - } - - // ------------------------------------------------------------------------- - // Constructors - // ------------------------------------------------------------------------- - - /** - * Create a detached ConstraintsRecord - */ - public ConstraintsRecord() { - super(Constraints.CONSTRAINTS); - } - - /** - * Create a detached, initialised ConstraintsRecord - */ - public ConstraintsRecord(String constraintCatalog, String constraintSchema, String constraintName, String constraintType, String tableCatalog, String tableSchema, String tableName, String uniqueIndexName, String checkExpression, String columnList, String remarks, String sql, Integer id) { - super(Constraints.CONSTRAINTS); - - setValue(0, constraintCatalog); - setValue(1, constraintSchema); - setValue(2, constraintName); - setValue(3, constraintType); - setValue(4, tableCatalog); - setValue(5, tableSchema); - setValue(6, tableName); - setValue(7, uniqueIndexName); - setValue(8, checkExpression); - setValue(9, columnList); - setValue(10, remarks); - setValue(11, sql); - setValue(12, id); - } -} diff --git a/jooq-spring/src/main/java/com/baeldung/jooq/introduction/db/information_schema/tables/records/CrossReferencesRecord.java b/jooq-spring/src/main/java/com/baeldung/jooq/introduction/db/information_schema/tables/records/CrossReferencesRecord.java deleted file mode 100644 index ab5ae9c2a3..0000000000 --- a/jooq-spring/src/main/java/com/baeldung/jooq/introduction/db/information_schema/tables/records/CrossReferencesRecord.java +++ /dev/null @@ -1,652 +0,0 @@ -/** - * This class is generated by jOOQ - */ -package com.baeldung.jooq.introduction.db.information_schema.tables.records; - - -import com.baeldung.jooq.introduction.db.information_schema.tables.CrossReferences; - -import javax.annotation.Generated; - -import org.jooq.Field; -import org.jooq.Record14; -import org.jooq.Row14; -import org.jooq.impl.TableRecordImpl; - - -/** - * This class is generated by jOOQ. - */ -@Generated( - value = { - "http://www.jooq.org", - "jOOQ version:3.7.3" - }, - comments = "This class is generated by jOOQ" -) -@SuppressWarnings({ "all", "unchecked", "rawtypes" }) -public class CrossReferencesRecord extends TableRecordImpl implements Record14 { - - private static final long serialVersionUID = -328289893; - - /** - * Setter for INFORMATION_SCHEMA.CROSS_REFERENCES.PKTABLE_CATALOG. - */ - public void setPktableCatalog(String value) { - setValue(0, value); - } - - /** - * Getter for INFORMATION_SCHEMA.CROSS_REFERENCES.PKTABLE_CATALOG. - */ - public String getPktableCatalog() { - return (String) getValue(0); - } - - /** - * Setter for INFORMATION_SCHEMA.CROSS_REFERENCES.PKTABLE_SCHEMA. - */ - public void setPktableSchema(String value) { - setValue(1, value); - } - - /** - * Getter for INFORMATION_SCHEMA.CROSS_REFERENCES.PKTABLE_SCHEMA. - */ - public String getPktableSchema() { - return (String) getValue(1); - } - - /** - * Setter for INFORMATION_SCHEMA.CROSS_REFERENCES.PKTABLE_NAME. - */ - public void setPktableName(String value) { - setValue(2, value); - } - - /** - * Getter for INFORMATION_SCHEMA.CROSS_REFERENCES.PKTABLE_NAME. - */ - public String getPktableName() { - return (String) getValue(2); - } - - /** - * Setter for INFORMATION_SCHEMA.CROSS_REFERENCES.PKCOLUMN_NAME. - */ - public void setPkcolumnName(String value) { - setValue(3, value); - } - - /** - * Getter for INFORMATION_SCHEMA.CROSS_REFERENCES.PKCOLUMN_NAME. - */ - public String getPkcolumnName() { - return (String) getValue(3); - } - - /** - * Setter for INFORMATION_SCHEMA.CROSS_REFERENCES.FKTABLE_CATALOG. - */ - public void setFktableCatalog(String value) { - setValue(4, value); - } - - /** - * Getter for INFORMATION_SCHEMA.CROSS_REFERENCES.FKTABLE_CATALOG. - */ - public String getFktableCatalog() { - return (String) getValue(4); - } - - /** - * Setter for INFORMATION_SCHEMA.CROSS_REFERENCES.FKTABLE_SCHEMA. - */ - public void setFktableSchema(String value) { - setValue(5, value); - } - - /** - * Getter for INFORMATION_SCHEMA.CROSS_REFERENCES.FKTABLE_SCHEMA. - */ - public String getFktableSchema() { - return (String) getValue(5); - } - - /** - * Setter for INFORMATION_SCHEMA.CROSS_REFERENCES.FKTABLE_NAME. - */ - public void setFktableName(String value) { - setValue(6, value); - } - - /** - * Getter for INFORMATION_SCHEMA.CROSS_REFERENCES.FKTABLE_NAME. - */ - public String getFktableName() { - return (String) getValue(6); - } - - /** - * Setter for INFORMATION_SCHEMA.CROSS_REFERENCES.FKCOLUMN_NAME. - */ - public void setFkcolumnName(String value) { - setValue(7, value); - } - - /** - * Getter for INFORMATION_SCHEMA.CROSS_REFERENCES.FKCOLUMN_NAME. - */ - public String getFkcolumnName() { - return (String) getValue(7); - } - - /** - * Setter for INFORMATION_SCHEMA.CROSS_REFERENCES.ORDINAL_POSITION. - */ - public void setOrdinalPosition(Short value) { - setValue(8, value); - } - - /** - * Getter for INFORMATION_SCHEMA.CROSS_REFERENCES.ORDINAL_POSITION. - */ - public Short getOrdinalPosition() { - return (Short) getValue(8); - } - - /** - * Setter for INFORMATION_SCHEMA.CROSS_REFERENCES.UPDATE_RULE. - */ - public void setUpdateRule(Short value) { - setValue(9, value); - } - - /** - * Getter for INFORMATION_SCHEMA.CROSS_REFERENCES.UPDATE_RULE. - */ - public Short getUpdateRule() { - return (Short) getValue(9); - } - - /** - * Setter for INFORMATION_SCHEMA.CROSS_REFERENCES.DELETE_RULE. - */ - public void setDeleteRule(Short value) { - setValue(10, value); - } - - /** - * Getter for INFORMATION_SCHEMA.CROSS_REFERENCES.DELETE_RULE. - */ - public Short getDeleteRule() { - return (Short) getValue(10); - } - - /** - * Setter for INFORMATION_SCHEMA.CROSS_REFERENCES.FK_NAME. - */ - public void setFkName(String value) { - setValue(11, value); - } - - /** - * Getter for INFORMATION_SCHEMA.CROSS_REFERENCES.FK_NAME. - */ - public String getFkName() { - return (String) getValue(11); - } - - /** - * Setter for INFORMATION_SCHEMA.CROSS_REFERENCES.PK_NAME. - */ - public void setPkName(String value) { - setValue(12, value); - } - - /** - * Getter for INFORMATION_SCHEMA.CROSS_REFERENCES.PK_NAME. - */ - public String getPkName() { - return (String) getValue(12); - } - - /** - * Setter for INFORMATION_SCHEMA.CROSS_REFERENCES.DEFERRABILITY. - */ - public void setDeferrability(Short value) { - setValue(13, value); - } - - /** - * Getter for INFORMATION_SCHEMA.CROSS_REFERENCES.DEFERRABILITY. - */ - public Short getDeferrability() { - return (Short) getValue(13); - } - - // ------------------------------------------------------------------------- - // Record14 type implementation - // ------------------------------------------------------------------------- - - /** - * {@inheritDoc} - */ - @Override - public Row14 fieldsRow() { - return (Row14) super.fieldsRow(); - } - - /** - * {@inheritDoc} - */ - @Override - public Row14 valuesRow() { - return (Row14) super.valuesRow(); - } - - /** - * {@inheritDoc} - */ - @Override - public Field field1() { - return CrossReferences.CROSS_REFERENCES.PKTABLE_CATALOG; - } - - /** - * {@inheritDoc} - */ - @Override - public Field field2() { - return CrossReferences.CROSS_REFERENCES.PKTABLE_SCHEMA; - } - - /** - * {@inheritDoc} - */ - @Override - public Field field3() { - return CrossReferences.CROSS_REFERENCES.PKTABLE_NAME; - } - - /** - * {@inheritDoc} - */ - @Override - public Field field4() { - return CrossReferences.CROSS_REFERENCES.PKCOLUMN_NAME; - } - - /** - * {@inheritDoc} - */ - @Override - public Field field5() { - return CrossReferences.CROSS_REFERENCES.FKTABLE_CATALOG; - } - - /** - * {@inheritDoc} - */ - @Override - public Field field6() { - return CrossReferences.CROSS_REFERENCES.FKTABLE_SCHEMA; - } - - /** - * {@inheritDoc} - */ - @Override - public Field field7() { - return CrossReferences.CROSS_REFERENCES.FKTABLE_NAME; - } - - /** - * {@inheritDoc} - */ - @Override - public Field field8() { - return CrossReferences.CROSS_REFERENCES.FKCOLUMN_NAME; - } - - /** - * {@inheritDoc} - */ - @Override - public Field field9() { - return CrossReferences.CROSS_REFERENCES.ORDINAL_POSITION; - } - - /** - * {@inheritDoc} - */ - @Override - public Field field10() { - return CrossReferences.CROSS_REFERENCES.UPDATE_RULE; - } - - /** - * {@inheritDoc} - */ - @Override - public Field field11() { - return CrossReferences.CROSS_REFERENCES.DELETE_RULE; - } - - /** - * {@inheritDoc} - */ - @Override - public Field field12() { - return CrossReferences.CROSS_REFERENCES.FK_NAME; - } - - /** - * {@inheritDoc} - */ - @Override - public Field field13() { - return CrossReferences.CROSS_REFERENCES.PK_NAME; - } - - /** - * {@inheritDoc} - */ - @Override - public Field field14() { - return CrossReferences.CROSS_REFERENCES.DEFERRABILITY; - } - - /** - * {@inheritDoc} - */ - @Override - public String value1() { - return getPktableCatalog(); - } - - /** - * {@inheritDoc} - */ - @Override - public String value2() { - return getPktableSchema(); - } - - /** - * {@inheritDoc} - */ - @Override - public String value3() { - return getPktableName(); - } - - /** - * {@inheritDoc} - */ - @Override - public String value4() { - return getPkcolumnName(); - } - - /** - * {@inheritDoc} - */ - @Override - public String value5() { - return getFktableCatalog(); - } - - /** - * {@inheritDoc} - */ - @Override - public String value6() { - return getFktableSchema(); - } - - /** - * {@inheritDoc} - */ - @Override - public String value7() { - return getFktableName(); - } - - /** - * {@inheritDoc} - */ - @Override - public String value8() { - return getFkcolumnName(); - } - - /** - * {@inheritDoc} - */ - @Override - public Short value9() { - return getOrdinalPosition(); - } - - /** - * {@inheritDoc} - */ - @Override - public Short value10() { - return getUpdateRule(); - } - - /** - * {@inheritDoc} - */ - @Override - public Short value11() { - return getDeleteRule(); - } - - /** - * {@inheritDoc} - */ - @Override - public String value12() { - return getFkName(); - } - - /** - * {@inheritDoc} - */ - @Override - public String value13() { - return getPkName(); - } - - /** - * {@inheritDoc} - */ - @Override - public Short value14() { - return getDeferrability(); - } - - /** - * {@inheritDoc} - */ - @Override - public CrossReferencesRecord value1(String value) { - setPktableCatalog(value); - return this; - } - - /** - * {@inheritDoc} - */ - @Override - public CrossReferencesRecord value2(String value) { - setPktableSchema(value); - return this; - } - - /** - * {@inheritDoc} - */ - @Override - public CrossReferencesRecord value3(String value) { - setPktableName(value); - return this; - } - - /** - * {@inheritDoc} - */ - @Override - public CrossReferencesRecord value4(String value) { - setPkcolumnName(value); - return this; - } - - /** - * {@inheritDoc} - */ - @Override - public CrossReferencesRecord value5(String value) { - setFktableCatalog(value); - return this; - } - - /** - * {@inheritDoc} - */ - @Override - public CrossReferencesRecord value6(String value) { - setFktableSchema(value); - return this; - } - - /** - * {@inheritDoc} - */ - @Override - public CrossReferencesRecord value7(String value) { - setFktableName(value); - return this; - } - - /** - * {@inheritDoc} - */ - @Override - public CrossReferencesRecord value8(String value) { - setFkcolumnName(value); - return this; - } - - /** - * {@inheritDoc} - */ - @Override - public CrossReferencesRecord value9(Short value) { - setOrdinalPosition(value); - return this; - } - - /** - * {@inheritDoc} - */ - @Override - public CrossReferencesRecord value10(Short value) { - setUpdateRule(value); - return this; - } - - /** - * {@inheritDoc} - */ - @Override - public CrossReferencesRecord value11(Short value) { - setDeleteRule(value); - return this; - } - - /** - * {@inheritDoc} - */ - @Override - public CrossReferencesRecord value12(String value) { - setFkName(value); - return this; - } - - /** - * {@inheritDoc} - */ - @Override - public CrossReferencesRecord value13(String value) { - setPkName(value); - return this; - } - - /** - * {@inheritDoc} - */ - @Override - public CrossReferencesRecord value14(Short value) { - setDeferrability(value); - return this; - } - - /** - * {@inheritDoc} - */ - @Override - public CrossReferencesRecord values(String value1, String value2, String value3, String value4, String value5, String value6, String value7, String value8, Short value9, Short value10, Short value11, String value12, String value13, Short value14) { - value1(value1); - value2(value2); - value3(value3); - value4(value4); - value5(value5); - value6(value6); - value7(value7); - value8(value8); - value9(value9); - value10(value10); - value11(value11); - value12(value12); - value13(value13); - value14(value14); - return this; - } - - // ------------------------------------------------------------------------- - // Constructors - // ------------------------------------------------------------------------- - - /** - * Create a detached CrossReferencesRecord - */ - public CrossReferencesRecord() { - super(CrossReferences.CROSS_REFERENCES); - } - - /** - * Create a detached, initialised CrossReferencesRecord - */ - public CrossReferencesRecord(String pktableCatalog, String pktableSchema, String pktableName, String pkcolumnName, String fktableCatalog, String fktableSchema, String fktableName, String fkcolumnName, Short ordinalPosition, Short updateRule, Short deleteRule, String fkName, String pkName, Short deferrability) { - super(CrossReferences.CROSS_REFERENCES); - - setValue(0, pktableCatalog); - setValue(1, pktableSchema); - setValue(2, pktableName); - setValue(3, pkcolumnName); - setValue(4, fktableCatalog); - setValue(5, fktableSchema); - setValue(6, fktableName); - setValue(7, fkcolumnName); - setValue(8, ordinalPosition); - setValue(9, updateRule); - setValue(10, deleteRule); - setValue(11, fkName); - setValue(12, pkName); - setValue(13, deferrability); - } -} diff --git a/jooq-spring/src/main/java/com/baeldung/jooq/introduction/db/information_schema/tables/records/DomainsRecord.java b/jooq-spring/src/main/java/com/baeldung/jooq/introduction/db/information_schema/tables/records/DomainsRecord.java deleted file mode 100644 index 7f3b812750..0000000000 --- a/jooq-spring/src/main/java/com/baeldung/jooq/introduction/db/information_schema/tables/records/DomainsRecord.java +++ /dev/null @@ -1,652 +0,0 @@ -/** - * This class is generated by jOOQ - */ -package com.baeldung.jooq.introduction.db.information_schema.tables.records; - - -import com.baeldung.jooq.introduction.db.information_schema.tables.Domains; - -import javax.annotation.Generated; - -import org.jooq.Field; -import org.jooq.Record14; -import org.jooq.Row14; -import org.jooq.impl.TableRecordImpl; - - -/** - * This class is generated by jOOQ. - */ -@Generated( - value = { - "http://www.jooq.org", - "jOOQ version:3.7.3" - }, - comments = "This class is generated by jOOQ" -) -@SuppressWarnings({ "all", "unchecked", "rawtypes" }) -public class DomainsRecord extends TableRecordImpl implements Record14 { - - private static final long serialVersionUID = 1750298997; - - /** - * Setter for INFORMATION_SCHEMA.DOMAINS.DOMAIN_CATALOG. - */ - public void setDomainCatalog(String value) { - setValue(0, value); - } - - /** - * Getter for INFORMATION_SCHEMA.DOMAINS.DOMAIN_CATALOG. - */ - public String getDomainCatalog() { - return (String) getValue(0); - } - - /** - * Setter for INFORMATION_SCHEMA.DOMAINS.DOMAIN_SCHEMA. - */ - public void setDomainSchema(String value) { - setValue(1, value); - } - - /** - * Getter for INFORMATION_SCHEMA.DOMAINS.DOMAIN_SCHEMA. - */ - public String getDomainSchema() { - return (String) getValue(1); - } - - /** - * Setter for INFORMATION_SCHEMA.DOMAINS.DOMAIN_NAME. - */ - public void setDomainName(String value) { - setValue(2, value); - } - - /** - * Getter for INFORMATION_SCHEMA.DOMAINS.DOMAIN_NAME. - */ - public String getDomainName() { - return (String) getValue(2); - } - - /** - * Setter for INFORMATION_SCHEMA.DOMAINS.COLUMN_DEFAULT. - */ - public void setColumnDefault(String value) { - setValue(3, value); - } - - /** - * Getter for INFORMATION_SCHEMA.DOMAINS.COLUMN_DEFAULT. - */ - public String getColumnDefault() { - return (String) getValue(3); - } - - /** - * Setter for INFORMATION_SCHEMA.DOMAINS.IS_NULLABLE. - */ - public void setIsNullable(String value) { - setValue(4, value); - } - - /** - * Getter for INFORMATION_SCHEMA.DOMAINS.IS_NULLABLE. - */ - public String getIsNullable() { - return (String) getValue(4); - } - - /** - * Setter for INFORMATION_SCHEMA.DOMAINS.DATA_TYPE. - */ - public void setDataType(Integer value) { - setValue(5, value); - } - - /** - * Getter for INFORMATION_SCHEMA.DOMAINS.DATA_TYPE. - */ - public Integer getDataType() { - return (Integer) getValue(5); - } - - /** - * Setter for INFORMATION_SCHEMA.DOMAINS.PRECISION. - */ - public void setPrecision(Integer value) { - setValue(6, value); - } - - /** - * Getter for INFORMATION_SCHEMA.DOMAINS.PRECISION. - */ - public Integer getPrecision() { - return (Integer) getValue(6); - } - - /** - * Setter for INFORMATION_SCHEMA.DOMAINS.SCALE. - */ - public void setScale(Integer value) { - setValue(7, value); - } - - /** - * Getter for INFORMATION_SCHEMA.DOMAINS.SCALE. - */ - public Integer getScale() { - return (Integer) getValue(7); - } - - /** - * Setter for INFORMATION_SCHEMA.DOMAINS.TYPE_NAME. - */ - public void setTypeName(String value) { - setValue(8, value); - } - - /** - * Getter for INFORMATION_SCHEMA.DOMAINS.TYPE_NAME. - */ - public String getTypeName() { - return (String) getValue(8); - } - - /** - * Setter for INFORMATION_SCHEMA.DOMAINS.SELECTIVITY. - */ - public void setSelectivity(Integer value) { - setValue(9, value); - } - - /** - * Getter for INFORMATION_SCHEMA.DOMAINS.SELECTIVITY. - */ - public Integer getSelectivity() { - return (Integer) getValue(9); - } - - /** - * Setter for INFORMATION_SCHEMA.DOMAINS.CHECK_CONSTRAINT. - */ - public void setCheckConstraint(String value) { - setValue(10, value); - } - - /** - * Getter for INFORMATION_SCHEMA.DOMAINS.CHECK_CONSTRAINT. - */ - public String getCheckConstraint() { - return (String) getValue(10); - } - - /** - * Setter for INFORMATION_SCHEMA.DOMAINS.REMARKS. - */ - public void setRemarks(String value) { - setValue(11, value); - } - - /** - * Getter for INFORMATION_SCHEMA.DOMAINS.REMARKS. - */ - public String getRemarks() { - return (String) getValue(11); - } - - /** - * Setter for INFORMATION_SCHEMA.DOMAINS.SQL. - */ - public void setSql(String value) { - setValue(12, value); - } - - /** - * Getter for INFORMATION_SCHEMA.DOMAINS.SQL. - */ - public String getSql() { - return (String) getValue(12); - } - - /** - * Setter for INFORMATION_SCHEMA.DOMAINS.ID. - */ - public void setId(Integer value) { - setValue(13, value); - } - - /** - * Getter for INFORMATION_SCHEMA.DOMAINS.ID. - */ - public Integer getId() { - return (Integer) getValue(13); - } - - // ------------------------------------------------------------------------- - // Record14 type implementation - // ------------------------------------------------------------------------- - - /** - * {@inheritDoc} - */ - @Override - public Row14 fieldsRow() { - return (Row14) super.fieldsRow(); - } - - /** - * {@inheritDoc} - */ - @Override - public Row14 valuesRow() { - return (Row14) super.valuesRow(); - } - - /** - * {@inheritDoc} - */ - @Override - public Field field1() { - return Domains.DOMAINS.DOMAIN_CATALOG; - } - - /** - * {@inheritDoc} - */ - @Override - public Field field2() { - return Domains.DOMAINS.DOMAIN_SCHEMA; - } - - /** - * {@inheritDoc} - */ - @Override - public Field field3() { - return Domains.DOMAINS.DOMAIN_NAME; - } - - /** - * {@inheritDoc} - */ - @Override - public Field field4() { - return Domains.DOMAINS.COLUMN_DEFAULT; - } - - /** - * {@inheritDoc} - */ - @Override - public Field field5() { - return Domains.DOMAINS.IS_NULLABLE; - } - - /** - * {@inheritDoc} - */ - @Override - public Field field6() { - return Domains.DOMAINS.DATA_TYPE; - } - - /** - * {@inheritDoc} - */ - @Override - public Field field7() { - return Domains.DOMAINS.PRECISION; - } - - /** - * {@inheritDoc} - */ - @Override - public Field field8() { - return Domains.DOMAINS.SCALE; - } - - /** - * {@inheritDoc} - */ - @Override - public Field field9() { - return Domains.DOMAINS.TYPE_NAME; - } - - /** - * {@inheritDoc} - */ - @Override - public Field field10() { - return Domains.DOMAINS.SELECTIVITY; - } - - /** - * {@inheritDoc} - */ - @Override - public Field field11() { - return Domains.DOMAINS.CHECK_CONSTRAINT; - } - - /** - * {@inheritDoc} - */ - @Override - public Field field12() { - return Domains.DOMAINS.REMARKS; - } - - /** - * {@inheritDoc} - */ - @Override - public Field field13() { - return Domains.DOMAINS.SQL; - } - - /** - * {@inheritDoc} - */ - @Override - public Field field14() { - return Domains.DOMAINS.ID; - } - - /** - * {@inheritDoc} - */ - @Override - public String value1() { - return getDomainCatalog(); - } - - /** - * {@inheritDoc} - */ - @Override - public String value2() { - return getDomainSchema(); - } - - /** - * {@inheritDoc} - */ - @Override - public String value3() { - return getDomainName(); - } - - /** - * {@inheritDoc} - */ - @Override - public String value4() { - return getColumnDefault(); - } - - /** - * {@inheritDoc} - */ - @Override - public String value5() { - return getIsNullable(); - } - - /** - * {@inheritDoc} - */ - @Override - public Integer value6() { - return getDataType(); - } - - /** - * {@inheritDoc} - */ - @Override - public Integer value7() { - return getPrecision(); - } - - /** - * {@inheritDoc} - */ - @Override - public Integer value8() { - return getScale(); - } - - /** - * {@inheritDoc} - */ - @Override - public String value9() { - return getTypeName(); - } - - /** - * {@inheritDoc} - */ - @Override - public Integer value10() { - return getSelectivity(); - } - - /** - * {@inheritDoc} - */ - @Override - public String value11() { - return getCheckConstraint(); - } - - /** - * {@inheritDoc} - */ - @Override - public String value12() { - return getRemarks(); - } - - /** - * {@inheritDoc} - */ - @Override - public String value13() { - return getSql(); - } - - /** - * {@inheritDoc} - */ - @Override - public Integer value14() { - return getId(); - } - - /** - * {@inheritDoc} - */ - @Override - public DomainsRecord value1(String value) { - setDomainCatalog(value); - return this; - } - - /** - * {@inheritDoc} - */ - @Override - public DomainsRecord value2(String value) { - setDomainSchema(value); - return this; - } - - /** - * {@inheritDoc} - */ - @Override - public DomainsRecord value3(String value) { - setDomainName(value); - return this; - } - - /** - * {@inheritDoc} - */ - @Override - public DomainsRecord value4(String value) { - setColumnDefault(value); - return this; - } - - /** - * {@inheritDoc} - */ - @Override - public DomainsRecord value5(String value) { - setIsNullable(value); - return this; - } - - /** - * {@inheritDoc} - */ - @Override - public DomainsRecord value6(Integer value) { - setDataType(value); - return this; - } - - /** - * {@inheritDoc} - */ - @Override - public DomainsRecord value7(Integer value) { - setPrecision(value); - return this; - } - - /** - * {@inheritDoc} - */ - @Override - public DomainsRecord value8(Integer value) { - setScale(value); - return this; - } - - /** - * {@inheritDoc} - */ - @Override - public DomainsRecord value9(String value) { - setTypeName(value); - return this; - } - - /** - * {@inheritDoc} - */ - @Override - public DomainsRecord value10(Integer value) { - setSelectivity(value); - return this; - } - - /** - * {@inheritDoc} - */ - @Override - public DomainsRecord value11(String value) { - setCheckConstraint(value); - return this; - } - - /** - * {@inheritDoc} - */ - @Override - public DomainsRecord value12(String value) { - setRemarks(value); - return this; - } - - /** - * {@inheritDoc} - */ - @Override - public DomainsRecord value13(String value) { - setSql(value); - return this; - } - - /** - * {@inheritDoc} - */ - @Override - public DomainsRecord value14(Integer value) { - setId(value); - return this; - } - - /** - * {@inheritDoc} - */ - @Override - public DomainsRecord values(String value1, String value2, String value3, String value4, String value5, Integer value6, Integer value7, Integer value8, String value9, Integer value10, String value11, String value12, String value13, Integer value14) { - value1(value1); - value2(value2); - value3(value3); - value4(value4); - value5(value5); - value6(value6); - value7(value7); - value8(value8); - value9(value9); - value10(value10); - value11(value11); - value12(value12); - value13(value13); - value14(value14); - return this; - } - - // ------------------------------------------------------------------------- - // Constructors - // ------------------------------------------------------------------------- - - /** - * Create a detached DomainsRecord - */ - public DomainsRecord() { - super(Domains.DOMAINS); - } - - /** - * Create a detached, initialised DomainsRecord - */ - public DomainsRecord(String domainCatalog, String domainSchema, String domainName, String columnDefault, String isNullable, Integer dataType, Integer precision, Integer scale, String typeName, Integer selectivity, String checkConstraint, String remarks, String sql, Integer id) { - super(Domains.DOMAINS); - - setValue(0, domainCatalog); - setValue(1, domainSchema); - setValue(2, domainName); - setValue(3, columnDefault); - setValue(4, isNullable); - setValue(5, dataType); - setValue(6, precision); - setValue(7, scale); - setValue(8, typeName); - setValue(9, selectivity); - setValue(10, checkConstraint); - setValue(11, remarks); - setValue(12, sql); - setValue(13, id); - } -} diff --git a/jooq-spring/src/main/java/com/baeldung/jooq/introduction/db/information_schema/tables/records/FunctionAliasesRecord.java b/jooq-spring/src/main/java/com/baeldung/jooq/introduction/db/information_schema/tables/records/FunctionAliasesRecord.java deleted file mode 100644 index 7c095555bc..0000000000 --- a/jooq-spring/src/main/java/com/baeldung/jooq/introduction/db/information_schema/tables/records/FunctionAliasesRecord.java +++ /dev/null @@ -1,570 +0,0 @@ -/** - * This class is generated by jOOQ - */ -package com.baeldung.jooq.introduction.db.information_schema.tables.records; - - -import com.baeldung.jooq.introduction.db.information_schema.tables.FunctionAliases; - -import javax.annotation.Generated; - -import org.jooq.Field; -import org.jooq.Record12; -import org.jooq.Row12; -import org.jooq.impl.TableRecordImpl; - - -/** - * This class is generated by jOOQ. - */ -@Generated( - value = { - "http://www.jooq.org", - "jOOQ version:3.7.3" - }, - comments = "This class is generated by jOOQ" -) -@SuppressWarnings({ "all", "unchecked", "rawtypes" }) -public class FunctionAliasesRecord extends TableRecordImpl implements Record12 { - - private static final long serialVersionUID = -788602015; - - /** - * Setter for INFORMATION_SCHEMA.FUNCTION_ALIASES.ALIAS_CATALOG. - */ - public void setAliasCatalog(String value) { - setValue(0, value); - } - - /** - * Getter for INFORMATION_SCHEMA.FUNCTION_ALIASES.ALIAS_CATALOG. - */ - public String getAliasCatalog() { - return (String) getValue(0); - } - - /** - * Setter for INFORMATION_SCHEMA.FUNCTION_ALIASES.ALIAS_SCHEMA. - */ - public void setAliasSchema(String value) { - setValue(1, value); - } - - /** - * Getter for INFORMATION_SCHEMA.FUNCTION_ALIASES.ALIAS_SCHEMA. - */ - public String getAliasSchema() { - return (String) getValue(1); - } - - /** - * Setter for INFORMATION_SCHEMA.FUNCTION_ALIASES.ALIAS_NAME. - */ - public void setAliasName(String value) { - setValue(2, value); - } - - /** - * Getter for INFORMATION_SCHEMA.FUNCTION_ALIASES.ALIAS_NAME. - */ - public String getAliasName() { - return (String) getValue(2); - } - - /** - * Setter for INFORMATION_SCHEMA.FUNCTION_ALIASES.JAVA_CLASS. - */ - public void setJavaClass(String value) { - setValue(3, value); - } - - /** - * Getter for INFORMATION_SCHEMA.FUNCTION_ALIASES.JAVA_CLASS. - */ - public String getJavaClass() { - return (String) getValue(3); - } - - /** - * Setter for INFORMATION_SCHEMA.FUNCTION_ALIASES.JAVA_METHOD. - */ - public void setJavaMethod(String value) { - setValue(4, value); - } - - /** - * Getter for INFORMATION_SCHEMA.FUNCTION_ALIASES.JAVA_METHOD. - */ - public String getJavaMethod() { - return (String) getValue(4); - } - - /** - * Setter for INFORMATION_SCHEMA.FUNCTION_ALIASES.DATA_TYPE. - */ - public void setDataType(Integer value) { - setValue(5, value); - } - - /** - * Getter for INFORMATION_SCHEMA.FUNCTION_ALIASES.DATA_TYPE. - */ - public Integer getDataType() { - return (Integer) getValue(5); - } - - /** - * Setter for INFORMATION_SCHEMA.FUNCTION_ALIASES.TYPE_NAME. - */ - public void setTypeName(String value) { - setValue(6, value); - } - - /** - * Getter for INFORMATION_SCHEMA.FUNCTION_ALIASES.TYPE_NAME. - */ - public String getTypeName() { - return (String) getValue(6); - } - - /** - * Setter for INFORMATION_SCHEMA.FUNCTION_ALIASES.COLUMN_COUNT. - */ - public void setColumnCount(Integer value) { - setValue(7, value); - } - - /** - * Getter for INFORMATION_SCHEMA.FUNCTION_ALIASES.COLUMN_COUNT. - */ - public Integer getColumnCount() { - return (Integer) getValue(7); - } - - /** - * Setter for INFORMATION_SCHEMA.FUNCTION_ALIASES.RETURNS_RESULT. - */ - public void setReturnsResult(Short value) { - setValue(8, value); - } - - /** - * Getter for INFORMATION_SCHEMA.FUNCTION_ALIASES.RETURNS_RESULT. - */ - public Short getReturnsResult() { - return (Short) getValue(8); - } - - /** - * Setter for INFORMATION_SCHEMA.FUNCTION_ALIASES.REMARKS. - */ - public void setRemarks(String value) { - setValue(9, value); - } - - /** - * Getter for INFORMATION_SCHEMA.FUNCTION_ALIASES.REMARKS. - */ - public String getRemarks() { - return (String) getValue(9); - } - - /** - * Setter for INFORMATION_SCHEMA.FUNCTION_ALIASES.ID. - */ - public void setId(Integer value) { - setValue(10, value); - } - - /** - * Getter for INFORMATION_SCHEMA.FUNCTION_ALIASES.ID. - */ - public Integer getId() { - return (Integer) getValue(10); - } - - /** - * Setter for INFORMATION_SCHEMA.FUNCTION_ALIASES.SOURCE. - */ - public void setSource(String value) { - setValue(11, value); - } - - /** - * Getter for INFORMATION_SCHEMA.FUNCTION_ALIASES.SOURCE. - */ - public String getSource() { - return (String) getValue(11); - } - - // ------------------------------------------------------------------------- - // Record12 type implementation - // ------------------------------------------------------------------------- - - /** - * {@inheritDoc} - */ - @Override - public Row12 fieldsRow() { - return (Row12) super.fieldsRow(); - } - - /** - * {@inheritDoc} - */ - @Override - public Row12 valuesRow() { - return (Row12) super.valuesRow(); - } - - /** - * {@inheritDoc} - */ - @Override - public Field field1() { - return FunctionAliases.FUNCTION_ALIASES.ALIAS_CATALOG; - } - - /** - * {@inheritDoc} - */ - @Override - public Field field2() { - return FunctionAliases.FUNCTION_ALIASES.ALIAS_SCHEMA; - } - - /** - * {@inheritDoc} - */ - @Override - public Field field3() { - return FunctionAliases.FUNCTION_ALIASES.ALIAS_NAME; - } - - /** - * {@inheritDoc} - */ - @Override - public Field field4() { - return FunctionAliases.FUNCTION_ALIASES.JAVA_CLASS; - } - - /** - * {@inheritDoc} - */ - @Override - public Field field5() { - return FunctionAliases.FUNCTION_ALIASES.JAVA_METHOD; - } - - /** - * {@inheritDoc} - */ - @Override - public Field field6() { - return FunctionAliases.FUNCTION_ALIASES.DATA_TYPE; - } - - /** - * {@inheritDoc} - */ - @Override - public Field field7() { - return FunctionAliases.FUNCTION_ALIASES.TYPE_NAME; - } - - /** - * {@inheritDoc} - */ - @Override - public Field field8() { - return FunctionAliases.FUNCTION_ALIASES.COLUMN_COUNT; - } - - /** - * {@inheritDoc} - */ - @Override - public Field field9() { - return FunctionAliases.FUNCTION_ALIASES.RETURNS_RESULT; - } - - /** - * {@inheritDoc} - */ - @Override - public Field field10() { - return FunctionAliases.FUNCTION_ALIASES.REMARKS; - } - - /** - * {@inheritDoc} - */ - @Override - public Field field11() { - return FunctionAliases.FUNCTION_ALIASES.ID; - } - - /** - * {@inheritDoc} - */ - @Override - public Field field12() { - return FunctionAliases.FUNCTION_ALIASES.SOURCE; - } - - /** - * {@inheritDoc} - */ - @Override - public String value1() { - return getAliasCatalog(); - } - - /** - * {@inheritDoc} - */ - @Override - public String value2() { - return getAliasSchema(); - } - - /** - * {@inheritDoc} - */ - @Override - public String value3() { - return getAliasName(); - } - - /** - * {@inheritDoc} - */ - @Override - public String value4() { - return getJavaClass(); - } - - /** - * {@inheritDoc} - */ - @Override - public String value5() { - return getJavaMethod(); - } - - /** - * {@inheritDoc} - */ - @Override - public Integer value6() { - return getDataType(); - } - - /** - * {@inheritDoc} - */ - @Override - public String value7() { - return getTypeName(); - } - - /** - * {@inheritDoc} - */ - @Override - public Integer value8() { - return getColumnCount(); - } - - /** - * {@inheritDoc} - */ - @Override - public Short value9() { - return getReturnsResult(); - } - - /** - * {@inheritDoc} - */ - @Override - public String value10() { - return getRemarks(); - } - - /** - * {@inheritDoc} - */ - @Override - public Integer value11() { - return getId(); - } - - /** - * {@inheritDoc} - */ - @Override - public String value12() { - return getSource(); - } - - /** - * {@inheritDoc} - */ - @Override - public FunctionAliasesRecord value1(String value) { - setAliasCatalog(value); - return this; - } - - /** - * {@inheritDoc} - */ - @Override - public FunctionAliasesRecord value2(String value) { - setAliasSchema(value); - return this; - } - - /** - * {@inheritDoc} - */ - @Override - public FunctionAliasesRecord value3(String value) { - setAliasName(value); - return this; - } - - /** - * {@inheritDoc} - */ - @Override - public FunctionAliasesRecord value4(String value) { - setJavaClass(value); - return this; - } - - /** - * {@inheritDoc} - */ - @Override - public FunctionAliasesRecord value5(String value) { - setJavaMethod(value); - return this; - } - - /** - * {@inheritDoc} - */ - @Override - public FunctionAliasesRecord value6(Integer value) { - setDataType(value); - return this; - } - - /** - * {@inheritDoc} - */ - @Override - public FunctionAliasesRecord value7(String value) { - setTypeName(value); - return this; - } - - /** - * {@inheritDoc} - */ - @Override - public FunctionAliasesRecord value8(Integer value) { - setColumnCount(value); - return this; - } - - /** - * {@inheritDoc} - */ - @Override - public FunctionAliasesRecord value9(Short value) { - setReturnsResult(value); - return this; - } - - /** - * {@inheritDoc} - */ - @Override - public FunctionAliasesRecord value10(String value) { - setRemarks(value); - return this; - } - - /** - * {@inheritDoc} - */ - @Override - public FunctionAliasesRecord value11(Integer value) { - setId(value); - return this; - } - - /** - * {@inheritDoc} - */ - @Override - public FunctionAliasesRecord value12(String value) { - setSource(value); - return this; - } - - /** - * {@inheritDoc} - */ - @Override - public FunctionAliasesRecord values(String value1, String value2, String value3, String value4, String value5, Integer value6, String value7, Integer value8, Short value9, String value10, Integer value11, String value12) { - value1(value1); - value2(value2); - value3(value3); - value4(value4); - value5(value5); - value6(value6); - value7(value7); - value8(value8); - value9(value9); - value10(value10); - value11(value11); - value12(value12); - return this; - } - - // ------------------------------------------------------------------------- - // Constructors - // ------------------------------------------------------------------------- - - /** - * Create a detached FunctionAliasesRecord - */ - public FunctionAliasesRecord() { - super(FunctionAliases.FUNCTION_ALIASES); - } - - /** - * Create a detached, initialised FunctionAliasesRecord - */ - public FunctionAliasesRecord(String aliasCatalog, String aliasSchema, String aliasName, String javaClass, String javaMethod, Integer dataType, String typeName, Integer columnCount, Short returnsResult, String remarks, Integer id, String source) { - super(FunctionAliases.FUNCTION_ALIASES); - - setValue(0, aliasCatalog); - setValue(1, aliasSchema); - setValue(2, aliasName); - setValue(3, javaClass); - setValue(4, javaMethod); - setValue(5, dataType); - setValue(6, typeName); - setValue(7, columnCount); - setValue(8, returnsResult); - setValue(9, remarks); - setValue(10, id); - setValue(11, source); - } -} diff --git a/jooq-spring/src/main/java/com/baeldung/jooq/introduction/db/information_schema/tables/records/FunctionColumnsRecord.java b/jooq-spring/src/main/java/com/baeldung/jooq/introduction/db/information_schema/tables/records/FunctionColumnsRecord.java deleted file mode 100644 index 3d0c81d2cd..0000000000 --- a/jooq-spring/src/main/java/com/baeldung/jooq/introduction/db/information_schema/tables/records/FunctionColumnsRecord.java +++ /dev/null @@ -1,775 +0,0 @@ -/** - * This class is generated by jOOQ - */ -package com.baeldung.jooq.introduction.db.information_schema.tables.records; - - -import com.baeldung.jooq.introduction.db.information_schema.tables.FunctionColumns; - -import javax.annotation.Generated; - -import org.jooq.Field; -import org.jooq.Record17; -import org.jooq.Row17; -import org.jooq.impl.TableRecordImpl; - - -/** - * This class is generated by jOOQ. - */ -@Generated( - value = { - "http://www.jooq.org", - "jOOQ version:3.7.3" - }, - comments = "This class is generated by jOOQ" -) -@SuppressWarnings({ "all", "unchecked", "rawtypes" }) -public class FunctionColumnsRecord extends TableRecordImpl implements Record17 { - - private static final long serialVersionUID = 1196004173; - - /** - * Setter for INFORMATION_SCHEMA.FUNCTION_COLUMNS.ALIAS_CATALOG. - */ - public void setAliasCatalog(String value) { - setValue(0, value); - } - - /** - * Getter for INFORMATION_SCHEMA.FUNCTION_COLUMNS.ALIAS_CATALOG. - */ - public String getAliasCatalog() { - return (String) getValue(0); - } - - /** - * Setter for INFORMATION_SCHEMA.FUNCTION_COLUMNS.ALIAS_SCHEMA. - */ - public void setAliasSchema(String value) { - setValue(1, value); - } - - /** - * Getter for INFORMATION_SCHEMA.FUNCTION_COLUMNS.ALIAS_SCHEMA. - */ - public String getAliasSchema() { - return (String) getValue(1); - } - - /** - * Setter for INFORMATION_SCHEMA.FUNCTION_COLUMNS.ALIAS_NAME. - */ - public void setAliasName(String value) { - setValue(2, value); - } - - /** - * Getter for INFORMATION_SCHEMA.FUNCTION_COLUMNS.ALIAS_NAME. - */ - public String getAliasName() { - return (String) getValue(2); - } - - /** - * Setter for INFORMATION_SCHEMA.FUNCTION_COLUMNS.JAVA_CLASS. - */ - public void setJavaClass(String value) { - setValue(3, value); - } - - /** - * Getter for INFORMATION_SCHEMA.FUNCTION_COLUMNS.JAVA_CLASS. - */ - public String getJavaClass() { - return (String) getValue(3); - } - - /** - * Setter for INFORMATION_SCHEMA.FUNCTION_COLUMNS.JAVA_METHOD. - */ - public void setJavaMethod(String value) { - setValue(4, value); - } - - /** - * Getter for INFORMATION_SCHEMA.FUNCTION_COLUMNS.JAVA_METHOD. - */ - public String getJavaMethod() { - return (String) getValue(4); - } - - /** - * Setter for INFORMATION_SCHEMA.FUNCTION_COLUMNS.COLUMN_COUNT. - */ - public void setColumnCount(Integer value) { - setValue(5, value); - } - - /** - * Getter for INFORMATION_SCHEMA.FUNCTION_COLUMNS.COLUMN_COUNT. - */ - public Integer getColumnCount() { - return (Integer) getValue(5); - } - - /** - * Setter for INFORMATION_SCHEMA.FUNCTION_COLUMNS.POS. - */ - public void setPos(Integer value) { - setValue(6, value); - } - - /** - * Getter for INFORMATION_SCHEMA.FUNCTION_COLUMNS.POS. - */ - public Integer getPos() { - return (Integer) getValue(6); - } - - /** - * Setter for INFORMATION_SCHEMA.FUNCTION_COLUMNS.COLUMN_NAME. - */ - public void setColumnName(String value) { - setValue(7, value); - } - - /** - * Getter for INFORMATION_SCHEMA.FUNCTION_COLUMNS.COLUMN_NAME. - */ - public String getColumnName() { - return (String) getValue(7); - } - - /** - * Setter for INFORMATION_SCHEMA.FUNCTION_COLUMNS.DATA_TYPE. - */ - public void setDataType(Integer value) { - setValue(8, value); - } - - /** - * Getter for INFORMATION_SCHEMA.FUNCTION_COLUMNS.DATA_TYPE. - */ - public Integer getDataType() { - return (Integer) getValue(8); - } - - /** - * Setter for INFORMATION_SCHEMA.FUNCTION_COLUMNS.TYPE_NAME. - */ - public void setTypeName(String value) { - setValue(9, value); - } - - /** - * Getter for INFORMATION_SCHEMA.FUNCTION_COLUMNS.TYPE_NAME. - */ - public String getTypeName() { - return (String) getValue(9); - } - - /** - * Setter for INFORMATION_SCHEMA.FUNCTION_COLUMNS.PRECISION. - */ - public void setPrecision(Integer value) { - setValue(10, value); - } - - /** - * Getter for INFORMATION_SCHEMA.FUNCTION_COLUMNS.PRECISION. - */ - public Integer getPrecision() { - return (Integer) getValue(10); - } - - /** - * Setter for INFORMATION_SCHEMA.FUNCTION_COLUMNS.SCALE. - */ - public void setScale(Short value) { - setValue(11, value); - } - - /** - * Getter for INFORMATION_SCHEMA.FUNCTION_COLUMNS.SCALE. - */ - public Short getScale() { - return (Short) getValue(11); - } - - /** - * Setter for INFORMATION_SCHEMA.FUNCTION_COLUMNS.RADIX. - */ - public void setRadix(Short value) { - setValue(12, value); - } - - /** - * Getter for INFORMATION_SCHEMA.FUNCTION_COLUMNS.RADIX. - */ - public Short getRadix() { - return (Short) getValue(12); - } - - /** - * Setter for INFORMATION_SCHEMA.FUNCTION_COLUMNS.NULLABLE. - */ - public void setNullable(Short value) { - setValue(13, value); - } - - /** - * Getter for INFORMATION_SCHEMA.FUNCTION_COLUMNS.NULLABLE. - */ - public Short getNullable() { - return (Short) getValue(13); - } - - /** - * Setter for INFORMATION_SCHEMA.FUNCTION_COLUMNS.COLUMN_TYPE. - */ - public void setColumnType(Short value) { - setValue(14, value); - } - - /** - * Getter for INFORMATION_SCHEMA.FUNCTION_COLUMNS.COLUMN_TYPE. - */ - public Short getColumnType() { - return (Short) getValue(14); - } - - /** - * Setter for INFORMATION_SCHEMA.FUNCTION_COLUMNS.REMARKS. - */ - public void setRemarks(String value) { - setValue(15, value); - } - - /** - * Getter for INFORMATION_SCHEMA.FUNCTION_COLUMNS.REMARKS. - */ - public String getRemarks() { - return (String) getValue(15); - } - - /** - * Setter for INFORMATION_SCHEMA.FUNCTION_COLUMNS.COLUMN_DEFAULT. - */ - public void setColumnDefault(String value) { - setValue(16, value); - } - - /** - * Getter for INFORMATION_SCHEMA.FUNCTION_COLUMNS.COLUMN_DEFAULT. - */ - public String getColumnDefault() { - return (String) getValue(16); - } - - // ------------------------------------------------------------------------- - // Record17 type implementation - // ------------------------------------------------------------------------- - - /** - * {@inheritDoc} - */ - @Override - public Row17 fieldsRow() { - return (Row17) super.fieldsRow(); - } - - /** - * {@inheritDoc} - */ - @Override - public Row17 valuesRow() { - return (Row17) super.valuesRow(); - } - - /** - * {@inheritDoc} - */ - @Override - public Field field1() { - return FunctionColumns.FUNCTION_COLUMNS.ALIAS_CATALOG; - } - - /** - * {@inheritDoc} - */ - @Override - public Field field2() { - return FunctionColumns.FUNCTION_COLUMNS.ALIAS_SCHEMA; - } - - /** - * {@inheritDoc} - */ - @Override - public Field field3() { - return FunctionColumns.FUNCTION_COLUMNS.ALIAS_NAME; - } - - /** - * {@inheritDoc} - */ - @Override - public Field field4() { - return FunctionColumns.FUNCTION_COLUMNS.JAVA_CLASS; - } - - /** - * {@inheritDoc} - */ - @Override - public Field field5() { - return FunctionColumns.FUNCTION_COLUMNS.JAVA_METHOD; - } - - /** - * {@inheritDoc} - */ - @Override - public Field field6() { - return FunctionColumns.FUNCTION_COLUMNS.COLUMN_COUNT; - } - - /** - * {@inheritDoc} - */ - @Override - public Field field7() { - return FunctionColumns.FUNCTION_COLUMNS.POS; - } - - /** - * {@inheritDoc} - */ - @Override - public Field field8() { - return FunctionColumns.FUNCTION_COLUMNS.COLUMN_NAME; - } - - /** - * {@inheritDoc} - */ - @Override - public Field field9() { - return FunctionColumns.FUNCTION_COLUMNS.DATA_TYPE; - } - - /** - * {@inheritDoc} - */ - @Override - public Field field10() { - return FunctionColumns.FUNCTION_COLUMNS.TYPE_NAME; - } - - /** - * {@inheritDoc} - */ - @Override - public Field field11() { - return FunctionColumns.FUNCTION_COLUMNS.PRECISION; - } - - /** - * {@inheritDoc} - */ - @Override - public Field field12() { - return FunctionColumns.FUNCTION_COLUMNS.SCALE; - } - - /** - * {@inheritDoc} - */ - @Override - public Field field13() { - return FunctionColumns.FUNCTION_COLUMNS.RADIX; - } - - /** - * {@inheritDoc} - */ - @Override - public Field field14() { - return FunctionColumns.FUNCTION_COLUMNS.NULLABLE; - } - - /** - * {@inheritDoc} - */ - @Override - public Field field15() { - return FunctionColumns.FUNCTION_COLUMNS.COLUMN_TYPE; - } - - /** - * {@inheritDoc} - */ - @Override - public Field field16() { - return FunctionColumns.FUNCTION_COLUMNS.REMARKS; - } - - /** - * {@inheritDoc} - */ - @Override - public Field field17() { - return FunctionColumns.FUNCTION_COLUMNS.COLUMN_DEFAULT; - } - - /** - * {@inheritDoc} - */ - @Override - public String value1() { - return getAliasCatalog(); - } - - /** - * {@inheritDoc} - */ - @Override - public String value2() { - return getAliasSchema(); - } - - /** - * {@inheritDoc} - */ - @Override - public String value3() { - return getAliasName(); - } - - /** - * {@inheritDoc} - */ - @Override - public String value4() { - return getJavaClass(); - } - - /** - * {@inheritDoc} - */ - @Override - public String value5() { - return getJavaMethod(); - } - - /** - * {@inheritDoc} - */ - @Override - public Integer value6() { - return getColumnCount(); - } - - /** - * {@inheritDoc} - */ - @Override - public Integer value7() { - return getPos(); - } - - /** - * {@inheritDoc} - */ - @Override - public String value8() { - return getColumnName(); - } - - /** - * {@inheritDoc} - */ - @Override - public Integer value9() { - return getDataType(); - } - - /** - * {@inheritDoc} - */ - @Override - public String value10() { - return getTypeName(); - } - - /** - * {@inheritDoc} - */ - @Override - public Integer value11() { - return getPrecision(); - } - - /** - * {@inheritDoc} - */ - @Override - public Short value12() { - return getScale(); - } - - /** - * {@inheritDoc} - */ - @Override - public Short value13() { - return getRadix(); - } - - /** - * {@inheritDoc} - */ - @Override - public Short value14() { - return getNullable(); - } - - /** - * {@inheritDoc} - */ - @Override - public Short value15() { - return getColumnType(); - } - - /** - * {@inheritDoc} - */ - @Override - public String value16() { - return getRemarks(); - } - - /** - * {@inheritDoc} - */ - @Override - public String value17() { - return getColumnDefault(); - } - - /** - * {@inheritDoc} - */ - @Override - public FunctionColumnsRecord value1(String value) { - setAliasCatalog(value); - return this; - } - - /** - * {@inheritDoc} - */ - @Override - public FunctionColumnsRecord value2(String value) { - setAliasSchema(value); - return this; - } - - /** - * {@inheritDoc} - */ - @Override - public FunctionColumnsRecord value3(String value) { - setAliasName(value); - return this; - } - - /** - * {@inheritDoc} - */ - @Override - public FunctionColumnsRecord value4(String value) { - setJavaClass(value); - return this; - } - - /** - * {@inheritDoc} - */ - @Override - public FunctionColumnsRecord value5(String value) { - setJavaMethod(value); - return this; - } - - /** - * {@inheritDoc} - */ - @Override - public FunctionColumnsRecord value6(Integer value) { - setColumnCount(value); - return this; - } - - /** - * {@inheritDoc} - */ - @Override - public FunctionColumnsRecord value7(Integer value) { - setPos(value); - return this; - } - - /** - * {@inheritDoc} - */ - @Override - public FunctionColumnsRecord value8(String value) { - setColumnName(value); - return this; - } - - /** - * {@inheritDoc} - */ - @Override - public FunctionColumnsRecord value9(Integer value) { - setDataType(value); - return this; - } - - /** - * {@inheritDoc} - */ - @Override - public FunctionColumnsRecord value10(String value) { - setTypeName(value); - return this; - } - - /** - * {@inheritDoc} - */ - @Override - public FunctionColumnsRecord value11(Integer value) { - setPrecision(value); - return this; - } - - /** - * {@inheritDoc} - */ - @Override - public FunctionColumnsRecord value12(Short value) { - setScale(value); - return this; - } - - /** - * {@inheritDoc} - */ - @Override - public FunctionColumnsRecord value13(Short value) { - setRadix(value); - return this; - } - - /** - * {@inheritDoc} - */ - @Override - public FunctionColumnsRecord value14(Short value) { - setNullable(value); - return this; - } - - /** - * {@inheritDoc} - */ - @Override - public FunctionColumnsRecord value15(Short value) { - setColumnType(value); - return this; - } - - /** - * {@inheritDoc} - */ - @Override - public FunctionColumnsRecord value16(String value) { - setRemarks(value); - return this; - } - - /** - * {@inheritDoc} - */ - @Override - public FunctionColumnsRecord value17(String value) { - setColumnDefault(value); - return this; - } - - /** - * {@inheritDoc} - */ - @Override - public FunctionColumnsRecord values(String value1, String value2, String value3, String value4, String value5, Integer value6, Integer value7, String value8, Integer value9, String value10, Integer value11, Short value12, Short value13, Short value14, Short value15, String value16, String value17) { - value1(value1); - value2(value2); - value3(value3); - value4(value4); - value5(value5); - value6(value6); - value7(value7); - value8(value8); - value9(value9); - value10(value10); - value11(value11); - value12(value12); - value13(value13); - value14(value14); - value15(value15); - value16(value16); - value17(value17); - return this; - } - - // ------------------------------------------------------------------------- - // Constructors - // ------------------------------------------------------------------------- - - /** - * Create a detached FunctionColumnsRecord - */ - public FunctionColumnsRecord() { - super(FunctionColumns.FUNCTION_COLUMNS); - } - - /** - * Create a detached, initialised FunctionColumnsRecord - */ - public FunctionColumnsRecord(String aliasCatalog, String aliasSchema, String aliasName, String javaClass, String javaMethod, Integer columnCount, Integer pos, String columnName, Integer dataType, String typeName, Integer precision, Short scale, Short radix, Short nullable, Short columnType, String remarks, String columnDefault) { - super(FunctionColumns.FUNCTION_COLUMNS); - - setValue(0, aliasCatalog); - setValue(1, aliasSchema); - setValue(2, aliasName); - setValue(3, javaClass); - setValue(4, javaMethod); - setValue(5, columnCount); - setValue(6, pos); - setValue(7, columnName); - setValue(8, dataType); - setValue(9, typeName); - setValue(10, precision); - setValue(11, scale); - setValue(12, radix); - setValue(13, nullable); - setValue(14, columnType); - setValue(15, remarks); - setValue(16, columnDefault); - } -} diff --git a/jooq-spring/src/main/java/com/baeldung/jooq/introduction/db/information_schema/tables/records/HelpRecord.java b/jooq-spring/src/main/java/com/baeldung/jooq/introduction/db/information_schema/tables/records/HelpRecord.java deleted file mode 100644 index 1ed95e2ff7..0000000000 --- a/jooq-spring/src/main/java/com/baeldung/jooq/introduction/db/information_schema/tables/records/HelpRecord.java +++ /dev/null @@ -1,283 +0,0 @@ -/** - * This class is generated by jOOQ - */ -package com.baeldung.jooq.introduction.db.information_schema.tables.records; - - -import com.baeldung.jooq.introduction.db.information_schema.tables.Help; - -import javax.annotation.Generated; - -import org.jooq.Field; -import org.jooq.Record5; -import org.jooq.Row5; -import org.jooq.impl.TableRecordImpl; - - -/** - * This class is generated by jOOQ. - */ -@Generated( - value = { - "http://www.jooq.org", - "jOOQ version:3.7.3" - }, - comments = "This class is generated by jOOQ" -) -@SuppressWarnings({ "all", "unchecked", "rawtypes" }) -public class HelpRecord extends TableRecordImpl implements Record5 { - - private static final long serialVersionUID = -1612064442; - - /** - * Setter for INFORMATION_SCHEMA.HELP.ID. - */ - public void setId(Integer value) { - setValue(0, value); - } - - /** - * Getter for INFORMATION_SCHEMA.HELP.ID. - */ - public Integer getId() { - return (Integer) getValue(0); - } - - /** - * Setter for INFORMATION_SCHEMA.HELP.SECTION. - */ - public void setSection(String value) { - setValue(1, value); - } - - /** - * Getter for INFORMATION_SCHEMA.HELP.SECTION. - */ - public String getSection() { - return (String) getValue(1); - } - - /** - * Setter for INFORMATION_SCHEMA.HELP.TOPIC. - */ - public void setTopic(String value) { - setValue(2, value); - } - - /** - * Getter for INFORMATION_SCHEMA.HELP.TOPIC. - */ - public String getTopic() { - return (String) getValue(2); - } - - /** - * Setter for INFORMATION_SCHEMA.HELP.SYNTAX. - */ - public void setSyntax(String value) { - setValue(3, value); - } - - /** - * Getter for INFORMATION_SCHEMA.HELP.SYNTAX. - */ - public String getSyntax() { - return (String) getValue(3); - } - - /** - * Setter for INFORMATION_SCHEMA.HELP.TEXT. - */ - public void setText(String value) { - setValue(4, value); - } - - /** - * Getter for INFORMATION_SCHEMA.HELP.TEXT. - */ - public String getText() { - return (String) getValue(4); - } - - // ------------------------------------------------------------------------- - // Record5 type implementation - // ------------------------------------------------------------------------- - - /** - * {@inheritDoc} - */ - @Override - public Row5 fieldsRow() { - return (Row5) super.fieldsRow(); - } - - /** - * {@inheritDoc} - */ - @Override - public Row5 valuesRow() { - return (Row5) super.valuesRow(); - } - - /** - * {@inheritDoc} - */ - @Override - public Field field1() { - return Help.HELP.ID; - } - - /** - * {@inheritDoc} - */ - @Override - public Field field2() { - return Help.HELP.SECTION; - } - - /** - * {@inheritDoc} - */ - @Override - public Field field3() { - return Help.HELP.TOPIC; - } - - /** - * {@inheritDoc} - */ - @Override - public Field field4() { - return Help.HELP.SYNTAX; - } - - /** - * {@inheritDoc} - */ - @Override - public Field field5() { - return Help.HELP.TEXT; - } - - /** - * {@inheritDoc} - */ - @Override - public Integer value1() { - return getId(); - } - - /** - * {@inheritDoc} - */ - @Override - public String value2() { - return getSection(); - } - - /** - * {@inheritDoc} - */ - @Override - public String value3() { - return getTopic(); - } - - /** - * {@inheritDoc} - */ - @Override - public String value4() { - return getSyntax(); - } - - /** - * {@inheritDoc} - */ - @Override - public String value5() { - return getText(); - } - - /** - * {@inheritDoc} - */ - @Override - public HelpRecord value1(Integer value) { - setId(value); - return this; - } - - /** - * {@inheritDoc} - */ - @Override - public HelpRecord value2(String value) { - setSection(value); - return this; - } - - /** - * {@inheritDoc} - */ - @Override - public HelpRecord value3(String value) { - setTopic(value); - return this; - } - - /** - * {@inheritDoc} - */ - @Override - public HelpRecord value4(String value) { - setSyntax(value); - return this; - } - - /** - * {@inheritDoc} - */ - @Override - public HelpRecord value5(String value) { - setText(value); - return this; - } - - /** - * {@inheritDoc} - */ - @Override - public HelpRecord values(Integer value1, String value2, String value3, String value4, String value5) { - value1(value1); - value2(value2); - value3(value3); - value4(value4); - value5(value5); - return this; - } - - // ------------------------------------------------------------------------- - // Constructors - // ------------------------------------------------------------------------- - - /** - * Create a detached HelpRecord - */ - public HelpRecord() { - super(Help.HELP); - } - - /** - * Create a detached, initialised HelpRecord - */ - public HelpRecord(Integer id, String section, String topic, String syntax, String text) { - super(Help.HELP); - - setValue(0, id); - setValue(1, section); - setValue(2, topic); - setValue(3, syntax); - setValue(4, text); - } -} diff --git a/jooq-spring/src/main/java/com/baeldung/jooq/introduction/db/information_schema/tables/records/InDoubtRecord.java b/jooq-spring/src/main/java/com/baeldung/jooq/introduction/db/information_schema/tables/records/InDoubtRecord.java deleted file mode 100644 index dd33d014fb..0000000000 --- a/jooq-spring/src/main/java/com/baeldung/jooq/introduction/db/information_schema/tables/records/InDoubtRecord.java +++ /dev/null @@ -1,160 +0,0 @@ -/** - * This class is generated by jOOQ - */ -package com.baeldung.jooq.introduction.db.information_schema.tables.records; - - -import com.baeldung.jooq.introduction.db.information_schema.tables.InDoubt; - -import javax.annotation.Generated; - -import org.jooq.Field; -import org.jooq.Record2; -import org.jooq.Row2; -import org.jooq.impl.TableRecordImpl; - - -/** - * This class is generated by jOOQ. - */ -@Generated( - value = { - "http://www.jooq.org", - "jOOQ version:3.7.3" - }, - comments = "This class is generated by jOOQ" -) -@SuppressWarnings({ "all", "unchecked", "rawtypes" }) -public class InDoubtRecord extends TableRecordImpl implements Record2 { - - private static final long serialVersionUID = 115858325; - - /** - * Setter for INFORMATION_SCHEMA.IN_DOUBT.TRANSACTION. - */ - public void setTransaction(String value) { - setValue(0, value); - } - - /** - * Getter for INFORMATION_SCHEMA.IN_DOUBT.TRANSACTION. - */ - public String getTransaction() { - return (String) getValue(0); - } - - /** - * Setter for INFORMATION_SCHEMA.IN_DOUBT.STATE. - */ - public void setState(String value) { - setValue(1, value); - } - - /** - * Getter for INFORMATION_SCHEMA.IN_DOUBT.STATE. - */ - public String getState() { - return (String) getValue(1); - } - - // ------------------------------------------------------------------------- - // Record2 type implementation - // ------------------------------------------------------------------------- - - /** - * {@inheritDoc} - */ - @Override - public Row2 fieldsRow() { - return (Row2) super.fieldsRow(); - } - - /** - * {@inheritDoc} - */ - @Override - public Row2 valuesRow() { - return (Row2) super.valuesRow(); - } - - /** - * {@inheritDoc} - */ - @Override - public Field field1() { - return InDoubt.IN_DOUBT.TRANSACTION; - } - - /** - * {@inheritDoc} - */ - @Override - public Field field2() { - return InDoubt.IN_DOUBT.STATE; - } - - /** - * {@inheritDoc} - */ - @Override - public String value1() { - return getTransaction(); - } - - /** - * {@inheritDoc} - */ - @Override - public String value2() { - return getState(); - } - - /** - * {@inheritDoc} - */ - @Override - public InDoubtRecord value1(String value) { - setTransaction(value); - return this; - } - - /** - * {@inheritDoc} - */ - @Override - public InDoubtRecord value2(String value) { - setState(value); - return this; - } - - /** - * {@inheritDoc} - */ - @Override - public InDoubtRecord values(String value1, String value2) { - value1(value1); - value2(value2); - return this; - } - - // ------------------------------------------------------------------------- - // Constructors - // ------------------------------------------------------------------------- - - /** - * Create a detached InDoubtRecord - */ - public InDoubtRecord() { - super(InDoubt.IN_DOUBT); - } - - /** - * Create a detached, initialised InDoubtRecord - */ - public InDoubtRecord(String transaction, String state) { - super(InDoubt.IN_DOUBT); - - setValue(0, transaction); - setValue(1, state); - } -} diff --git a/jooq-spring/src/main/java/com/baeldung/jooq/introduction/db/information_schema/tables/records/IndexesRecord.java b/jooq-spring/src/main/java/com/baeldung/jooq/introduction/db/information_schema/tables/records/IndexesRecord.java deleted file mode 100644 index 87a34b2473..0000000000 --- a/jooq-spring/src/main/java/com/baeldung/jooq/introduction/db/information_schema/tables/records/IndexesRecord.java +++ /dev/null @@ -1,939 +0,0 @@ -/** - * This class is generated by jOOQ - */ -package com.baeldung.jooq.introduction.db.information_schema.tables.records; - - -import com.baeldung.jooq.introduction.db.information_schema.tables.Indexes; - -import javax.annotation.Generated; - -import org.jooq.Field; -import org.jooq.Record21; -import org.jooq.Row21; -import org.jooq.impl.TableRecordImpl; - - -/** - * This class is generated by jOOQ. - */ -@Generated( - value = { - "http://www.jooq.org", - "jOOQ version:3.7.3" - }, - comments = "This class is generated by jOOQ" -) -@SuppressWarnings({ "all", "unchecked", "rawtypes" }) -public class IndexesRecord extends TableRecordImpl implements Record21 { - - private static final long serialVersionUID = -1683028432; - - /** - * Setter for INFORMATION_SCHEMA.INDEXES.TABLE_CATALOG. - */ - public void setTableCatalog(String value) { - setValue(0, value); - } - - /** - * Getter for INFORMATION_SCHEMA.INDEXES.TABLE_CATALOG. - */ - public String getTableCatalog() { - return (String) getValue(0); - } - - /** - * Setter for INFORMATION_SCHEMA.INDEXES.TABLE_SCHEMA. - */ - public void setTableSchema(String value) { - setValue(1, value); - } - - /** - * Getter for INFORMATION_SCHEMA.INDEXES.TABLE_SCHEMA. - */ - public String getTableSchema() { - return (String) getValue(1); - } - - /** - * Setter for INFORMATION_SCHEMA.INDEXES.TABLE_NAME. - */ - public void setTableName(String value) { - setValue(2, value); - } - - /** - * Getter for INFORMATION_SCHEMA.INDEXES.TABLE_NAME. - */ - public String getTableName() { - return (String) getValue(2); - } - - /** - * Setter for INFORMATION_SCHEMA.INDEXES.NON_UNIQUE. - */ - public void setNonUnique(Boolean value) { - setValue(3, value); - } - - /** - * Getter for INFORMATION_SCHEMA.INDEXES.NON_UNIQUE. - */ - public Boolean getNonUnique() { - return (Boolean) getValue(3); - } - - /** - * Setter for INFORMATION_SCHEMA.INDEXES.INDEX_NAME. - */ - public void setIndexName(String value) { - setValue(4, value); - } - - /** - * Getter for INFORMATION_SCHEMA.INDEXES.INDEX_NAME. - */ - public String getIndexName() { - return (String) getValue(4); - } - - /** - * Setter for INFORMATION_SCHEMA.INDEXES.ORDINAL_POSITION. - */ - public void setOrdinalPosition(Short value) { - setValue(5, value); - } - - /** - * Getter for INFORMATION_SCHEMA.INDEXES.ORDINAL_POSITION. - */ - public Short getOrdinalPosition() { - return (Short) getValue(5); - } - - /** - * Setter for INFORMATION_SCHEMA.INDEXES.COLUMN_NAME. - */ - public void setColumnName(String value) { - setValue(6, value); - } - - /** - * Getter for INFORMATION_SCHEMA.INDEXES.COLUMN_NAME. - */ - public String getColumnName() { - return (String) getValue(6); - } - - /** - * Setter for INFORMATION_SCHEMA.INDEXES.CARDINALITY. - */ - public void setCardinality(Integer value) { - setValue(7, value); - } - - /** - * Getter for INFORMATION_SCHEMA.INDEXES.CARDINALITY. - */ - public Integer getCardinality() { - return (Integer) getValue(7); - } - - /** - * Setter for INFORMATION_SCHEMA.INDEXES.PRIMARY_KEY. - */ - public void setPrimaryKey_(Boolean value) { - setValue(8, value); - } - - /** - * Getter for INFORMATION_SCHEMA.INDEXES.PRIMARY_KEY. - */ - public Boolean getPrimaryKey_() { - return (Boolean) getValue(8); - } - - /** - * Setter for INFORMATION_SCHEMA.INDEXES.INDEX_TYPE_NAME. - */ - public void setIndexTypeName(String value) { - setValue(9, value); - } - - /** - * Getter for INFORMATION_SCHEMA.INDEXES.INDEX_TYPE_NAME. - */ - public String getIndexTypeName() { - return (String) getValue(9); - } - - /** - * Setter for INFORMATION_SCHEMA.INDEXES.IS_GENERATED. - */ - public void setIsGenerated(Boolean value) { - setValue(10, value); - } - - /** - * Getter for INFORMATION_SCHEMA.INDEXES.IS_GENERATED. - */ - public Boolean getIsGenerated() { - return (Boolean) getValue(10); - } - - /** - * Setter for INFORMATION_SCHEMA.INDEXES.INDEX_TYPE. - */ - public void setIndexType(Short value) { - setValue(11, value); - } - - /** - * Getter for INFORMATION_SCHEMA.INDEXES.INDEX_TYPE. - */ - public Short getIndexType() { - return (Short) getValue(11); - } - - /** - * Setter for INFORMATION_SCHEMA.INDEXES.ASC_OR_DESC. - */ - public void setAscOrDesc(String value) { - setValue(12, value); - } - - /** - * Getter for INFORMATION_SCHEMA.INDEXES.ASC_OR_DESC. - */ - public String getAscOrDesc() { - return (String) getValue(12); - } - - /** - * Setter for INFORMATION_SCHEMA.INDEXES.PAGES. - */ - public void setPages(Integer value) { - setValue(13, value); - } - - /** - * Getter for INFORMATION_SCHEMA.INDEXES.PAGES. - */ - public Integer getPages() { - return (Integer) getValue(13); - } - - /** - * Setter for INFORMATION_SCHEMA.INDEXES.FILTER_CONDITION. - */ - public void setFilterCondition(String value) { - setValue(14, value); - } - - /** - * Getter for INFORMATION_SCHEMA.INDEXES.FILTER_CONDITION. - */ - public String getFilterCondition() { - return (String) getValue(14); - } - - /** - * Setter for INFORMATION_SCHEMA.INDEXES.REMARKS. - */ - public void setRemarks(String value) { - setValue(15, value); - } - - /** - * Getter for INFORMATION_SCHEMA.INDEXES.REMARKS. - */ - public String getRemarks() { - return (String) getValue(15); - } - - /** - * Setter for INFORMATION_SCHEMA.INDEXES.SQL. - */ - public void setSql(String value) { - setValue(16, value); - } - - /** - * Getter for INFORMATION_SCHEMA.INDEXES.SQL. - */ - public String getSql() { - return (String) getValue(16); - } - - /** - * Setter for INFORMATION_SCHEMA.INDEXES.ID. - */ - public void setId(Integer value) { - setValue(17, value); - } - - /** - * Getter for INFORMATION_SCHEMA.INDEXES.ID. - */ - public Integer getId() { - return (Integer) getValue(17); - } - - /** - * Setter for INFORMATION_SCHEMA.INDEXES.SORT_TYPE. - */ - public void setSortType(Integer value) { - setValue(18, value); - } - - /** - * Getter for INFORMATION_SCHEMA.INDEXES.SORT_TYPE. - */ - public Integer getSortType() { - return (Integer) getValue(18); - } - - /** - * Setter for INFORMATION_SCHEMA.INDEXES.CONSTRAINT_NAME. - */ - public void setConstraintName(String value) { - setValue(19, value); - } - - /** - * Getter for INFORMATION_SCHEMA.INDEXES.CONSTRAINT_NAME. - */ - public String getConstraintName() { - return (String) getValue(19); - } - - /** - * Setter for INFORMATION_SCHEMA.INDEXES.INDEX_CLASS. - */ - public void setIndexClass(String value) { - setValue(20, value); - } - - /** - * Getter for INFORMATION_SCHEMA.INDEXES.INDEX_CLASS. - */ - public String getIndexClass() { - return (String) getValue(20); - } - - // ------------------------------------------------------------------------- - // Record21 type implementation - // ------------------------------------------------------------------------- - - /** - * {@inheritDoc} - */ - @Override - public Row21 fieldsRow() { - return (Row21) super.fieldsRow(); - } - - /** - * {@inheritDoc} - */ - @Override - public Row21 valuesRow() { - return (Row21) super.valuesRow(); - } - - /** - * {@inheritDoc} - */ - @Override - public Field field1() { - return Indexes.INDEXES.TABLE_CATALOG; - } - - /** - * {@inheritDoc} - */ - @Override - public Field field2() { - return Indexes.INDEXES.TABLE_SCHEMA; - } - - /** - * {@inheritDoc} - */ - @Override - public Field field3() { - return Indexes.INDEXES.TABLE_NAME; - } - - /** - * {@inheritDoc} - */ - @Override - public Field field4() { - return Indexes.INDEXES.NON_UNIQUE; - } - - /** - * {@inheritDoc} - */ - @Override - public Field field5() { - return Indexes.INDEXES.INDEX_NAME; - } - - /** - * {@inheritDoc} - */ - @Override - public Field field6() { - return Indexes.INDEXES.ORDINAL_POSITION; - } - - /** - * {@inheritDoc} - */ - @Override - public Field field7() { - return Indexes.INDEXES.COLUMN_NAME; - } - - /** - * {@inheritDoc} - */ - @Override - public Field field8() { - return Indexes.INDEXES.CARDINALITY; - } - - /** - * {@inheritDoc} - */ - @Override - public Field field9() { - return Indexes.INDEXES.PRIMARY_KEY; - } - - /** - * {@inheritDoc} - */ - @Override - public Field field10() { - return Indexes.INDEXES.INDEX_TYPE_NAME; - } - - /** - * {@inheritDoc} - */ - @Override - public Field field11() { - return Indexes.INDEXES.IS_GENERATED; - } - - /** - * {@inheritDoc} - */ - @Override - public Field field12() { - return Indexes.INDEXES.INDEX_TYPE; - } - - /** - * {@inheritDoc} - */ - @Override - public Field field13() { - return Indexes.INDEXES.ASC_OR_DESC; - } - - /** - * {@inheritDoc} - */ - @Override - public Field field14() { - return Indexes.INDEXES.PAGES; - } - - /** - * {@inheritDoc} - */ - @Override - public Field field15() { - return Indexes.INDEXES.FILTER_CONDITION; - } - - /** - * {@inheritDoc} - */ - @Override - public Field field16() { - return Indexes.INDEXES.REMARKS; - } - - /** - * {@inheritDoc} - */ - @Override - public Field field17() { - return Indexes.INDEXES.SQL; - } - - /** - * {@inheritDoc} - */ - @Override - public Field field18() { - return Indexes.INDEXES.ID; - } - - /** - * {@inheritDoc} - */ - @Override - public Field field19() { - return Indexes.INDEXES.SORT_TYPE; - } - - /** - * {@inheritDoc} - */ - @Override - public Field field20() { - return Indexes.INDEXES.CONSTRAINT_NAME; - } - - /** - * {@inheritDoc} - */ - @Override - public Field field21() { - return Indexes.INDEXES.INDEX_CLASS; - } - - /** - * {@inheritDoc} - */ - @Override - public String value1() { - return getTableCatalog(); - } - - /** - * {@inheritDoc} - */ - @Override - public String value2() { - return getTableSchema(); - } - - /** - * {@inheritDoc} - */ - @Override - public String value3() { - return getTableName(); - } - - /** - * {@inheritDoc} - */ - @Override - public Boolean value4() { - return getNonUnique(); - } - - /** - * {@inheritDoc} - */ - @Override - public String value5() { - return getIndexName(); - } - - /** - * {@inheritDoc} - */ - @Override - public Short value6() { - return getOrdinalPosition(); - } - - /** - * {@inheritDoc} - */ - @Override - public String value7() { - return getColumnName(); - } - - /** - * {@inheritDoc} - */ - @Override - public Integer value8() { - return getCardinality(); - } - - /** - * {@inheritDoc} - */ - @Override - public Boolean value9() { - return getPrimaryKey_(); - } - - /** - * {@inheritDoc} - */ - @Override - public String value10() { - return getIndexTypeName(); - } - - /** - * {@inheritDoc} - */ - @Override - public Boolean value11() { - return getIsGenerated(); - } - - /** - * {@inheritDoc} - */ - @Override - public Short value12() { - return getIndexType(); - } - - /** - * {@inheritDoc} - */ - @Override - public String value13() { - return getAscOrDesc(); - } - - /** - * {@inheritDoc} - */ - @Override - public Integer value14() { - return getPages(); - } - - /** - * {@inheritDoc} - */ - @Override - public String value15() { - return getFilterCondition(); - } - - /** - * {@inheritDoc} - */ - @Override - public String value16() { - return getRemarks(); - } - - /** - * {@inheritDoc} - */ - @Override - public String value17() { - return getSql(); - } - - /** - * {@inheritDoc} - */ - @Override - public Integer value18() { - return getId(); - } - - /** - * {@inheritDoc} - */ - @Override - public Integer value19() { - return getSortType(); - } - - /** - * {@inheritDoc} - */ - @Override - public String value20() { - return getConstraintName(); - } - - /** - * {@inheritDoc} - */ - @Override - public String value21() { - return getIndexClass(); - } - - /** - * {@inheritDoc} - */ - @Override - public IndexesRecord value1(String value) { - setTableCatalog(value); - return this; - } - - /** - * {@inheritDoc} - */ - @Override - public IndexesRecord value2(String value) { - setTableSchema(value); - return this; - } - - /** - * {@inheritDoc} - */ - @Override - public IndexesRecord value3(String value) { - setTableName(value); - return this; - } - - /** - * {@inheritDoc} - */ - @Override - public IndexesRecord value4(Boolean value) { - setNonUnique(value); - return this; - } - - /** - * {@inheritDoc} - */ - @Override - public IndexesRecord value5(String value) { - setIndexName(value); - return this; - } - - /** - * {@inheritDoc} - */ - @Override - public IndexesRecord value6(Short value) { - setOrdinalPosition(value); - return this; - } - - /** - * {@inheritDoc} - */ - @Override - public IndexesRecord value7(String value) { - setColumnName(value); - return this; - } - - /** - * {@inheritDoc} - */ - @Override - public IndexesRecord value8(Integer value) { - setCardinality(value); - return this; - } - - /** - * {@inheritDoc} - */ - @Override - public IndexesRecord value9(Boolean value) { - setPrimaryKey_(value); - return this; - } - - /** - * {@inheritDoc} - */ - @Override - public IndexesRecord value10(String value) { - setIndexTypeName(value); - return this; - } - - /** - * {@inheritDoc} - */ - @Override - public IndexesRecord value11(Boolean value) { - setIsGenerated(value); - return this; - } - - /** - * {@inheritDoc} - */ - @Override - public IndexesRecord value12(Short value) { - setIndexType(value); - return this; - } - - /** - * {@inheritDoc} - */ - @Override - public IndexesRecord value13(String value) { - setAscOrDesc(value); - return this; - } - - /** - * {@inheritDoc} - */ - @Override - public IndexesRecord value14(Integer value) { - setPages(value); - return this; - } - - /** - * {@inheritDoc} - */ - @Override - public IndexesRecord value15(String value) { - setFilterCondition(value); - return this; - } - - /** - * {@inheritDoc} - */ - @Override - public IndexesRecord value16(String value) { - setRemarks(value); - return this; - } - - /** - * {@inheritDoc} - */ - @Override - public IndexesRecord value17(String value) { - setSql(value); - return this; - } - - /** - * {@inheritDoc} - */ - @Override - public IndexesRecord value18(Integer value) { - setId(value); - return this; - } - - /** - * {@inheritDoc} - */ - @Override - public IndexesRecord value19(Integer value) { - setSortType(value); - return this; - } - - /** - * {@inheritDoc} - */ - @Override - public IndexesRecord value20(String value) { - setConstraintName(value); - return this; - } - - /** - * {@inheritDoc} - */ - @Override - public IndexesRecord value21(String value) { - setIndexClass(value); - return this; - } - - /** - * {@inheritDoc} - */ - @Override - public IndexesRecord values(String value1, String value2, String value3, Boolean value4, String value5, Short value6, String value7, Integer value8, Boolean value9, String value10, Boolean value11, Short value12, String value13, Integer value14, String value15, String value16, String value17, Integer value18, Integer value19, String value20, String value21) { - value1(value1); - value2(value2); - value3(value3); - value4(value4); - value5(value5); - value6(value6); - value7(value7); - value8(value8); - value9(value9); - value10(value10); - value11(value11); - value12(value12); - value13(value13); - value14(value14); - value15(value15); - value16(value16); - value17(value17); - value18(value18); - value19(value19); - value20(value20); - value21(value21); - return this; - } - - // ------------------------------------------------------------------------- - // Constructors - // ------------------------------------------------------------------------- - - /** - * Create a detached IndexesRecord - */ - public IndexesRecord() { - super(Indexes.INDEXES); - } - - /** - * Create a detached, initialised IndexesRecord - */ - public IndexesRecord(String tableCatalog, String tableSchema, String tableName, Boolean nonUnique, String indexName, Short ordinalPosition, String columnName, Integer cardinality, Boolean primaryKey, String indexTypeName, Boolean isGenerated, Short indexType, String ascOrDesc, Integer pages, String filterCondition, String remarks, String sql, Integer id, Integer sortType, String constraintName, String indexClass) { - super(Indexes.INDEXES); - - setValue(0, tableCatalog); - setValue(1, tableSchema); - setValue(2, tableName); - setValue(3, nonUnique); - setValue(4, indexName); - setValue(5, ordinalPosition); - setValue(6, columnName); - setValue(7, cardinality); - setValue(8, primaryKey); - setValue(9, indexTypeName); - setValue(10, isGenerated); - setValue(11, indexType); - setValue(12, ascOrDesc); - setValue(13, pages); - setValue(14, filterCondition); - setValue(15, remarks); - setValue(16, sql); - setValue(17, id); - setValue(18, sortType); - setValue(19, constraintName); - setValue(20, indexClass); - } -} diff --git a/jooq-spring/src/main/java/com/baeldung/jooq/introduction/db/information_schema/tables/records/LocksRecord.java b/jooq-spring/src/main/java/com/baeldung/jooq/introduction/db/information_schema/tables/records/LocksRecord.java deleted file mode 100644 index 23cbf780e6..0000000000 --- a/jooq-spring/src/main/java/com/baeldung/jooq/introduction/db/information_schema/tables/records/LocksRecord.java +++ /dev/null @@ -1,242 +0,0 @@ -/** - * This class is generated by jOOQ - */ -package com.baeldung.jooq.introduction.db.information_schema.tables.records; - - -import com.baeldung.jooq.introduction.db.information_schema.tables.Locks; - -import javax.annotation.Generated; - -import org.jooq.Field; -import org.jooq.Record4; -import org.jooq.Row4; -import org.jooq.impl.TableRecordImpl; - - -/** - * This class is generated by jOOQ. - */ -@Generated( - value = { - "http://www.jooq.org", - "jOOQ version:3.7.3" - }, - comments = "This class is generated by jOOQ" -) -@SuppressWarnings({ "all", "unchecked", "rawtypes" }) -public class LocksRecord extends TableRecordImpl implements Record4 { - - private static final long serialVersionUID = 1548907854; - - /** - * Setter for INFORMATION_SCHEMA.LOCKS.TABLE_SCHEMA. - */ - public void setTableSchema(String value) { - setValue(0, value); - } - - /** - * Getter for INFORMATION_SCHEMA.LOCKS.TABLE_SCHEMA. - */ - public String getTableSchema() { - return (String) getValue(0); - } - - /** - * Setter for INFORMATION_SCHEMA.LOCKS.TABLE_NAME. - */ - public void setTableName(String value) { - setValue(1, value); - } - - /** - * Getter for INFORMATION_SCHEMA.LOCKS.TABLE_NAME. - */ - public String getTableName() { - return (String) getValue(1); - } - - /** - * Setter for INFORMATION_SCHEMA.LOCKS.SESSION_ID. - */ - public void setSessionId(Integer value) { - setValue(2, value); - } - - /** - * Getter for INFORMATION_SCHEMA.LOCKS.SESSION_ID. - */ - public Integer getSessionId() { - return (Integer) getValue(2); - } - - /** - * Setter for INFORMATION_SCHEMA.LOCKS.LOCK_TYPE. - */ - public void setLockType(String value) { - setValue(3, value); - } - - /** - * Getter for INFORMATION_SCHEMA.LOCKS.LOCK_TYPE. - */ - public String getLockType() { - return (String) getValue(3); - } - - // ------------------------------------------------------------------------- - // Record4 type implementation - // ------------------------------------------------------------------------- - - /** - * {@inheritDoc} - */ - @Override - public Row4 fieldsRow() { - return (Row4) super.fieldsRow(); - } - - /** - * {@inheritDoc} - */ - @Override - public Row4 valuesRow() { - return (Row4) super.valuesRow(); - } - - /** - * {@inheritDoc} - */ - @Override - public Field field1() { - return Locks.LOCKS.TABLE_SCHEMA; - } - - /** - * {@inheritDoc} - */ - @Override - public Field field2() { - return Locks.LOCKS.TABLE_NAME; - } - - /** - * {@inheritDoc} - */ - @Override - public Field field3() { - return Locks.LOCKS.SESSION_ID; - } - - /** - * {@inheritDoc} - */ - @Override - public Field field4() { - return Locks.LOCKS.LOCK_TYPE; - } - - /** - * {@inheritDoc} - */ - @Override - public String value1() { - return getTableSchema(); - } - - /** - * {@inheritDoc} - */ - @Override - public String value2() { - return getTableName(); - } - - /** - * {@inheritDoc} - */ - @Override - public Integer value3() { - return getSessionId(); - } - - /** - * {@inheritDoc} - */ - @Override - public String value4() { - return getLockType(); - } - - /** - * {@inheritDoc} - */ - @Override - public LocksRecord value1(String value) { - setTableSchema(value); - return this; - } - - /** - * {@inheritDoc} - */ - @Override - public LocksRecord value2(String value) { - setTableName(value); - return this; - } - - /** - * {@inheritDoc} - */ - @Override - public LocksRecord value3(Integer value) { - setSessionId(value); - return this; - } - - /** - * {@inheritDoc} - */ - @Override - public LocksRecord value4(String value) { - setLockType(value); - return this; - } - - /** - * {@inheritDoc} - */ - @Override - public LocksRecord values(String value1, String value2, Integer value3, String value4) { - value1(value1); - value2(value2); - value3(value3); - value4(value4); - return this; - } - - // ------------------------------------------------------------------------- - // Constructors - // ------------------------------------------------------------------------- - - /** - * Create a detached LocksRecord - */ - public LocksRecord() { - super(Locks.LOCKS); - } - - /** - * Create a detached, initialised LocksRecord - */ - public LocksRecord(String tableSchema, String tableName, Integer sessionId, String lockType) { - super(Locks.LOCKS); - - setValue(0, tableSchema); - setValue(1, tableName); - setValue(2, sessionId); - setValue(3, lockType); - } -} diff --git a/jooq-spring/src/main/java/com/baeldung/jooq/introduction/db/information_schema/tables/records/QueryStatisticsRecord.java b/jooq-spring/src/main/java/com/baeldung/jooq/introduction/db/information_schema/tables/records/QueryStatisticsRecord.java deleted file mode 100644 index 56cd9d15c4..0000000000 --- a/jooq-spring/src/main/java/com/baeldung/jooq/introduction/db/information_schema/tables/records/QueryStatisticsRecord.java +++ /dev/null @@ -1,570 +0,0 @@ -/** - * This class is generated by jOOQ - */ -package com.baeldung.jooq.introduction.db.information_schema.tables.records; - - -import com.baeldung.jooq.introduction.db.information_schema.tables.QueryStatistics; - -import javax.annotation.Generated; - -import org.jooq.Field; -import org.jooq.Record12; -import org.jooq.Row12; -import org.jooq.impl.TableRecordImpl; - - -/** - * This class is generated by jOOQ. - */ -@Generated( - value = { - "http://www.jooq.org", - "jOOQ version:3.7.3" - }, - comments = "This class is generated by jOOQ" -) -@SuppressWarnings({ "all", "unchecked", "rawtypes" }) -public class QueryStatisticsRecord extends TableRecordImpl implements Record12 { - - private static final long serialVersionUID = -1608090322; - - /** - * Setter for INFORMATION_SCHEMA.QUERY_STATISTICS.SQL_STATEMENT. - */ - public void setSqlStatement(String value) { - setValue(0, value); - } - - /** - * Getter for INFORMATION_SCHEMA.QUERY_STATISTICS.SQL_STATEMENT. - */ - public String getSqlStatement() { - return (String) getValue(0); - } - - /** - * Setter for INFORMATION_SCHEMA.QUERY_STATISTICS.EXECUTION_COUNT. - */ - public void setExecutionCount(Integer value) { - setValue(1, value); - } - - /** - * Getter for INFORMATION_SCHEMA.QUERY_STATISTICS.EXECUTION_COUNT. - */ - public Integer getExecutionCount() { - return (Integer) getValue(1); - } - - /** - * Setter for INFORMATION_SCHEMA.QUERY_STATISTICS.MIN_EXECUTION_TIME. - */ - public void setMinExecutionTime(Long value) { - setValue(2, value); - } - - /** - * Getter for INFORMATION_SCHEMA.QUERY_STATISTICS.MIN_EXECUTION_TIME. - */ - public Long getMinExecutionTime() { - return (Long) getValue(2); - } - - /** - * Setter for INFORMATION_SCHEMA.QUERY_STATISTICS.MAX_EXECUTION_TIME. - */ - public void setMaxExecutionTime(Long value) { - setValue(3, value); - } - - /** - * Getter for INFORMATION_SCHEMA.QUERY_STATISTICS.MAX_EXECUTION_TIME. - */ - public Long getMaxExecutionTime() { - return (Long) getValue(3); - } - - /** - * Setter for INFORMATION_SCHEMA.QUERY_STATISTICS.CUMULATIVE_EXECUTION_TIME. - */ - public void setCumulativeExecutionTime(Long value) { - setValue(4, value); - } - - /** - * Getter for INFORMATION_SCHEMA.QUERY_STATISTICS.CUMULATIVE_EXECUTION_TIME. - */ - public Long getCumulativeExecutionTime() { - return (Long) getValue(4); - } - - /** - * Setter for INFORMATION_SCHEMA.QUERY_STATISTICS.AVERAGE_EXECUTION_TIME. - */ - public void setAverageExecutionTime(Double value) { - setValue(5, value); - } - - /** - * Getter for INFORMATION_SCHEMA.QUERY_STATISTICS.AVERAGE_EXECUTION_TIME. - */ - public Double getAverageExecutionTime() { - return (Double) getValue(5); - } - - /** - * Setter for INFORMATION_SCHEMA.QUERY_STATISTICS.STD_DEV_EXECUTION_TIME. - */ - public void setStdDevExecutionTime(Double value) { - setValue(6, value); - } - - /** - * Getter for INFORMATION_SCHEMA.QUERY_STATISTICS.STD_DEV_EXECUTION_TIME. - */ - public Double getStdDevExecutionTime() { - return (Double) getValue(6); - } - - /** - * Setter for INFORMATION_SCHEMA.QUERY_STATISTICS.MIN_ROW_COUNT. - */ - public void setMinRowCount(Integer value) { - setValue(7, value); - } - - /** - * Getter for INFORMATION_SCHEMA.QUERY_STATISTICS.MIN_ROW_COUNT. - */ - public Integer getMinRowCount() { - return (Integer) getValue(7); - } - - /** - * Setter for INFORMATION_SCHEMA.QUERY_STATISTICS.MAX_ROW_COUNT. - */ - public void setMaxRowCount(Integer value) { - setValue(8, value); - } - - /** - * Getter for INFORMATION_SCHEMA.QUERY_STATISTICS.MAX_ROW_COUNT. - */ - public Integer getMaxRowCount() { - return (Integer) getValue(8); - } - - /** - * Setter for INFORMATION_SCHEMA.QUERY_STATISTICS.CUMULATIVE_ROW_COUNT. - */ - public void setCumulativeRowCount(Long value) { - setValue(9, value); - } - - /** - * Getter for INFORMATION_SCHEMA.QUERY_STATISTICS.CUMULATIVE_ROW_COUNT. - */ - public Long getCumulativeRowCount() { - return (Long) getValue(9); - } - - /** - * Setter for INFORMATION_SCHEMA.QUERY_STATISTICS.AVERAGE_ROW_COUNT. - */ - public void setAverageRowCount(Double value) { - setValue(10, value); - } - - /** - * Getter for INFORMATION_SCHEMA.QUERY_STATISTICS.AVERAGE_ROW_COUNT. - */ - public Double getAverageRowCount() { - return (Double) getValue(10); - } - - /** - * Setter for INFORMATION_SCHEMA.QUERY_STATISTICS.STD_DEV_ROW_COUNT. - */ - public void setStdDevRowCount(Double value) { - setValue(11, value); - } - - /** - * Getter for INFORMATION_SCHEMA.QUERY_STATISTICS.STD_DEV_ROW_COUNT. - */ - public Double getStdDevRowCount() { - return (Double) getValue(11); - } - - // ------------------------------------------------------------------------- - // Record12 type implementation - // ------------------------------------------------------------------------- - - /** - * {@inheritDoc} - */ - @Override - public Row12 fieldsRow() { - return (Row12) super.fieldsRow(); - } - - /** - * {@inheritDoc} - */ - @Override - public Row12 valuesRow() { - return (Row12) super.valuesRow(); - } - - /** - * {@inheritDoc} - */ - @Override - public Field field1() { - return QueryStatistics.QUERY_STATISTICS.SQL_STATEMENT; - } - - /** - * {@inheritDoc} - */ - @Override - public Field field2() { - return QueryStatistics.QUERY_STATISTICS.EXECUTION_COUNT; - } - - /** - * {@inheritDoc} - */ - @Override - public Field field3() { - return QueryStatistics.QUERY_STATISTICS.MIN_EXECUTION_TIME; - } - - /** - * {@inheritDoc} - */ - @Override - public Field field4() { - return QueryStatistics.QUERY_STATISTICS.MAX_EXECUTION_TIME; - } - - /** - * {@inheritDoc} - */ - @Override - public Field field5() { - return QueryStatistics.QUERY_STATISTICS.CUMULATIVE_EXECUTION_TIME; - } - - /** - * {@inheritDoc} - */ - @Override - public Field field6() { - return QueryStatistics.QUERY_STATISTICS.AVERAGE_EXECUTION_TIME; - } - - /** - * {@inheritDoc} - */ - @Override - public Field field7() { - return QueryStatistics.QUERY_STATISTICS.STD_DEV_EXECUTION_TIME; - } - - /** - * {@inheritDoc} - */ - @Override - public Field field8() { - return QueryStatistics.QUERY_STATISTICS.MIN_ROW_COUNT; - } - - /** - * {@inheritDoc} - */ - @Override - public Field field9() { - return QueryStatistics.QUERY_STATISTICS.MAX_ROW_COUNT; - } - - /** - * {@inheritDoc} - */ - @Override - public Field field10() { - return QueryStatistics.QUERY_STATISTICS.CUMULATIVE_ROW_COUNT; - } - - /** - * {@inheritDoc} - */ - @Override - public Field field11() { - return QueryStatistics.QUERY_STATISTICS.AVERAGE_ROW_COUNT; - } - - /** - * {@inheritDoc} - */ - @Override - public Field field12() { - return QueryStatistics.QUERY_STATISTICS.STD_DEV_ROW_COUNT; - } - - /** - * {@inheritDoc} - */ - @Override - public String value1() { - return getSqlStatement(); - } - - /** - * {@inheritDoc} - */ - @Override - public Integer value2() { - return getExecutionCount(); - } - - /** - * {@inheritDoc} - */ - @Override - public Long value3() { - return getMinExecutionTime(); - } - - /** - * {@inheritDoc} - */ - @Override - public Long value4() { - return getMaxExecutionTime(); - } - - /** - * {@inheritDoc} - */ - @Override - public Long value5() { - return getCumulativeExecutionTime(); - } - - /** - * {@inheritDoc} - */ - @Override - public Double value6() { - return getAverageExecutionTime(); - } - - /** - * {@inheritDoc} - */ - @Override - public Double value7() { - return getStdDevExecutionTime(); - } - - /** - * {@inheritDoc} - */ - @Override - public Integer value8() { - return getMinRowCount(); - } - - /** - * {@inheritDoc} - */ - @Override - public Integer value9() { - return getMaxRowCount(); - } - - /** - * {@inheritDoc} - */ - @Override - public Long value10() { - return getCumulativeRowCount(); - } - - /** - * {@inheritDoc} - */ - @Override - public Double value11() { - return getAverageRowCount(); - } - - /** - * {@inheritDoc} - */ - @Override - public Double value12() { - return getStdDevRowCount(); - } - - /** - * {@inheritDoc} - */ - @Override - public QueryStatisticsRecord value1(String value) { - setSqlStatement(value); - return this; - } - - /** - * {@inheritDoc} - */ - @Override - public QueryStatisticsRecord value2(Integer value) { - setExecutionCount(value); - return this; - } - - /** - * {@inheritDoc} - */ - @Override - public QueryStatisticsRecord value3(Long value) { - setMinExecutionTime(value); - return this; - } - - /** - * {@inheritDoc} - */ - @Override - public QueryStatisticsRecord value4(Long value) { - setMaxExecutionTime(value); - return this; - } - - /** - * {@inheritDoc} - */ - @Override - public QueryStatisticsRecord value5(Long value) { - setCumulativeExecutionTime(value); - return this; - } - - /** - * {@inheritDoc} - */ - @Override - public QueryStatisticsRecord value6(Double value) { - setAverageExecutionTime(value); - return this; - } - - /** - * {@inheritDoc} - */ - @Override - public QueryStatisticsRecord value7(Double value) { - setStdDevExecutionTime(value); - return this; - } - - /** - * {@inheritDoc} - */ - @Override - public QueryStatisticsRecord value8(Integer value) { - setMinRowCount(value); - return this; - } - - /** - * {@inheritDoc} - */ - @Override - public QueryStatisticsRecord value9(Integer value) { - setMaxRowCount(value); - return this; - } - - /** - * {@inheritDoc} - */ - @Override - public QueryStatisticsRecord value10(Long value) { - setCumulativeRowCount(value); - return this; - } - - /** - * {@inheritDoc} - */ - @Override - public QueryStatisticsRecord value11(Double value) { - setAverageRowCount(value); - return this; - } - - /** - * {@inheritDoc} - */ - @Override - public QueryStatisticsRecord value12(Double value) { - setStdDevRowCount(value); - return this; - } - - /** - * {@inheritDoc} - */ - @Override - public QueryStatisticsRecord values(String value1, Integer value2, Long value3, Long value4, Long value5, Double value6, Double value7, Integer value8, Integer value9, Long value10, Double value11, Double value12) { - value1(value1); - value2(value2); - value3(value3); - value4(value4); - value5(value5); - value6(value6); - value7(value7); - value8(value8); - value9(value9); - value10(value10); - value11(value11); - value12(value12); - return this; - } - - // ------------------------------------------------------------------------- - // Constructors - // ------------------------------------------------------------------------- - - /** - * Create a detached QueryStatisticsRecord - */ - public QueryStatisticsRecord() { - super(QueryStatistics.QUERY_STATISTICS); - } - - /** - * Create a detached, initialised QueryStatisticsRecord - */ - public QueryStatisticsRecord(String sqlStatement, Integer executionCount, Long minExecutionTime, Long maxExecutionTime, Long cumulativeExecutionTime, Double averageExecutionTime, Double stdDevExecutionTime, Integer minRowCount, Integer maxRowCount, Long cumulativeRowCount, Double averageRowCount, Double stdDevRowCount) { - super(QueryStatistics.QUERY_STATISTICS); - - setValue(0, sqlStatement); - setValue(1, executionCount); - setValue(2, minExecutionTime); - setValue(3, maxExecutionTime); - setValue(4, cumulativeExecutionTime); - setValue(5, averageExecutionTime); - setValue(6, stdDevExecutionTime); - setValue(7, minRowCount); - setValue(8, maxRowCount); - setValue(9, cumulativeRowCount); - setValue(10, averageRowCount); - setValue(11, stdDevRowCount); - } -} diff --git a/jooq-spring/src/main/java/com/baeldung/jooq/introduction/db/information_schema/tables/records/RightsRecord.java b/jooq-spring/src/main/java/com/baeldung/jooq/introduction/db/information_schema/tables/records/RightsRecord.java deleted file mode 100644 index a9c50817c7..0000000000 --- a/jooq-spring/src/main/java/com/baeldung/jooq/introduction/db/information_schema/tables/records/RightsRecord.java +++ /dev/null @@ -1,365 +0,0 @@ -/** - * This class is generated by jOOQ - */ -package com.baeldung.jooq.introduction.db.information_schema.tables.records; - - -import com.baeldung.jooq.introduction.db.information_schema.tables.Rights; - -import javax.annotation.Generated; - -import org.jooq.Field; -import org.jooq.Record7; -import org.jooq.Row7; -import org.jooq.impl.TableRecordImpl; - - -/** - * This class is generated by jOOQ. - */ -@Generated( - value = { - "http://www.jooq.org", - "jOOQ version:3.7.3" - }, - comments = "This class is generated by jOOQ" -) -@SuppressWarnings({ "all", "unchecked", "rawtypes" }) -public class RightsRecord extends TableRecordImpl implements Record7 { - - private static final long serialVersionUID = 269610816; - - /** - * Setter for INFORMATION_SCHEMA.RIGHTS.GRANTEE. - */ - public void setGrantee(String value) { - setValue(0, value); - } - - /** - * Getter for INFORMATION_SCHEMA.RIGHTS.GRANTEE. - */ - public String getGrantee() { - return (String) getValue(0); - } - - /** - * Setter for INFORMATION_SCHEMA.RIGHTS.GRANTEETYPE. - */ - public void setGranteetype(String value) { - setValue(1, value); - } - - /** - * Getter for INFORMATION_SCHEMA.RIGHTS.GRANTEETYPE. - */ - public String getGranteetype() { - return (String) getValue(1); - } - - /** - * Setter for INFORMATION_SCHEMA.RIGHTS.GRANTEDROLE. - */ - public void setGrantedrole(String value) { - setValue(2, value); - } - - /** - * Getter for INFORMATION_SCHEMA.RIGHTS.GRANTEDROLE. - */ - public String getGrantedrole() { - return (String) getValue(2); - } - - /** - * Setter for INFORMATION_SCHEMA.RIGHTS.RIGHTS. - */ - public void setRights(String value) { - setValue(3, value); - } - - /** - * Getter for INFORMATION_SCHEMA.RIGHTS.RIGHTS. - */ - public String getRights() { - return (String) getValue(3); - } - - /** - * Setter for INFORMATION_SCHEMA.RIGHTS.TABLE_SCHEMA. - */ - public void setTableSchema(String value) { - setValue(4, value); - } - - /** - * Getter for INFORMATION_SCHEMA.RIGHTS.TABLE_SCHEMA. - */ - public String getTableSchema() { - return (String) getValue(4); - } - - /** - * Setter for INFORMATION_SCHEMA.RIGHTS.TABLE_NAME. - */ - public void setTableName(String value) { - setValue(5, value); - } - - /** - * Getter for INFORMATION_SCHEMA.RIGHTS.TABLE_NAME. - */ - public String getTableName() { - return (String) getValue(5); - } - - /** - * Setter for INFORMATION_SCHEMA.RIGHTS.ID. - */ - public void setId(Integer value) { - setValue(6, value); - } - - /** - * Getter for INFORMATION_SCHEMA.RIGHTS.ID. - */ - public Integer getId() { - return (Integer) getValue(6); - } - - // ------------------------------------------------------------------------- - // Record7 type implementation - // ------------------------------------------------------------------------- - - /** - * {@inheritDoc} - */ - @Override - public Row7 fieldsRow() { - return (Row7) super.fieldsRow(); - } - - /** - * {@inheritDoc} - */ - @Override - public Row7 valuesRow() { - return (Row7) super.valuesRow(); - } - - /** - * {@inheritDoc} - */ - @Override - public Field field1() { - return Rights.RIGHTS.GRANTEE; - } - - /** - * {@inheritDoc} - */ - @Override - public Field field2() { - return Rights.RIGHTS.GRANTEETYPE; - } - - /** - * {@inheritDoc} - */ - @Override - public Field field3() { - return Rights.RIGHTS.GRANTEDROLE; - } - - /** - * {@inheritDoc} - */ - @Override - public Field field4() { - return Rights.RIGHTS.RIGHTS_; - } - - /** - * {@inheritDoc} - */ - @Override - public Field field5() { - return Rights.RIGHTS.TABLE_SCHEMA; - } - - /** - * {@inheritDoc} - */ - @Override - public Field field6() { - return Rights.RIGHTS.TABLE_NAME; - } - - /** - * {@inheritDoc} - */ - @Override - public Field field7() { - return Rights.RIGHTS.ID; - } - - /** - * {@inheritDoc} - */ - @Override - public String value1() { - return getGrantee(); - } - - /** - * {@inheritDoc} - */ - @Override - public String value2() { - return getGranteetype(); - } - - /** - * {@inheritDoc} - */ - @Override - public String value3() { - return getGrantedrole(); - } - - /** - * {@inheritDoc} - */ - @Override - public String value4() { - return getRights(); - } - - /** - * {@inheritDoc} - */ - @Override - public String value5() { - return getTableSchema(); - } - - /** - * {@inheritDoc} - */ - @Override - public String value6() { - return getTableName(); - } - - /** - * {@inheritDoc} - */ - @Override - public Integer value7() { - return getId(); - } - - /** - * {@inheritDoc} - */ - @Override - public RightsRecord value1(String value) { - setGrantee(value); - return this; - } - - /** - * {@inheritDoc} - */ - @Override - public RightsRecord value2(String value) { - setGranteetype(value); - return this; - } - - /** - * {@inheritDoc} - */ - @Override - public RightsRecord value3(String value) { - setGrantedrole(value); - return this; - } - - /** - * {@inheritDoc} - */ - @Override - public RightsRecord value4(String value) { - setRights(value); - return this; - } - - /** - * {@inheritDoc} - */ - @Override - public RightsRecord value5(String value) { - setTableSchema(value); - return this; - } - - /** - * {@inheritDoc} - */ - @Override - public RightsRecord value6(String value) { - setTableName(value); - return this; - } - - /** - * {@inheritDoc} - */ - @Override - public RightsRecord value7(Integer value) { - setId(value); - return this; - } - - /** - * {@inheritDoc} - */ - @Override - public RightsRecord values(String value1, String value2, String value3, String value4, String value5, String value6, Integer value7) { - value1(value1); - value2(value2); - value3(value3); - value4(value4); - value5(value5); - value6(value6); - value7(value7); - return this; - } - - // ------------------------------------------------------------------------- - // Constructors - // ------------------------------------------------------------------------- - - /** - * Create a detached RightsRecord - */ - public RightsRecord() { - super(Rights.RIGHTS); - } - - /** - * Create a detached, initialised RightsRecord - */ - public RightsRecord(String grantee, String granteetype, String grantedrole, String rights, String tableSchema, String tableName, Integer id) { - super(Rights.RIGHTS); - - setValue(0, grantee); - setValue(1, granteetype); - setValue(2, grantedrole); - setValue(3, rights); - setValue(4, tableSchema); - setValue(5, tableName); - setValue(6, id); - } -} diff --git a/jooq-spring/src/main/java/com/baeldung/jooq/introduction/db/information_schema/tables/records/RolesRecord.java b/jooq-spring/src/main/java/com/baeldung/jooq/introduction/db/information_schema/tables/records/RolesRecord.java deleted file mode 100644 index a648165fc5..0000000000 --- a/jooq-spring/src/main/java/com/baeldung/jooq/introduction/db/information_schema/tables/records/RolesRecord.java +++ /dev/null @@ -1,201 +0,0 @@ -/** - * This class is generated by jOOQ - */ -package com.baeldung.jooq.introduction.db.information_schema.tables.records; - - -import com.baeldung.jooq.introduction.db.information_schema.tables.Roles; - -import javax.annotation.Generated; - -import org.jooq.Field; -import org.jooq.Record3; -import org.jooq.Row3; -import org.jooq.impl.TableRecordImpl; - - -/** - * This class is generated by jOOQ. - */ -@Generated( - value = { - "http://www.jooq.org", - "jOOQ version:3.7.3" - }, - comments = "This class is generated by jOOQ" -) -@SuppressWarnings({ "all", "unchecked", "rawtypes" }) -public class RolesRecord extends TableRecordImpl implements Record3 { - - private static final long serialVersionUID = -579805711; - - /** - * Setter for INFORMATION_SCHEMA.ROLES.NAME. - */ - public void setName(String value) { - setValue(0, value); - } - - /** - * Getter for INFORMATION_SCHEMA.ROLES.NAME. - */ - public String getName() { - return (String) getValue(0); - } - - /** - * Setter for INFORMATION_SCHEMA.ROLES.REMARKS. - */ - public void setRemarks(String value) { - setValue(1, value); - } - - /** - * Getter for INFORMATION_SCHEMA.ROLES.REMARKS. - */ - public String getRemarks() { - return (String) getValue(1); - } - - /** - * Setter for INFORMATION_SCHEMA.ROLES.ID. - */ - public void setId(Integer value) { - setValue(2, value); - } - - /** - * Getter for INFORMATION_SCHEMA.ROLES.ID. - */ - public Integer getId() { - return (Integer) getValue(2); - } - - // ------------------------------------------------------------------------- - // Record3 type implementation - // ------------------------------------------------------------------------- - - /** - * {@inheritDoc} - */ - @Override - public Row3 fieldsRow() { - return (Row3) super.fieldsRow(); - } - - /** - * {@inheritDoc} - */ - @Override - public Row3 valuesRow() { - return (Row3) super.valuesRow(); - } - - /** - * {@inheritDoc} - */ - @Override - public Field field1() { - return Roles.ROLES.NAME; - } - - /** - * {@inheritDoc} - */ - @Override - public Field field2() { - return Roles.ROLES.REMARKS; - } - - /** - * {@inheritDoc} - */ - @Override - public Field field3() { - return Roles.ROLES.ID; - } - - /** - * {@inheritDoc} - */ - @Override - public String value1() { - return getName(); - } - - /** - * {@inheritDoc} - */ - @Override - public String value2() { - return getRemarks(); - } - - /** - * {@inheritDoc} - */ - @Override - public Integer value3() { - return getId(); - } - - /** - * {@inheritDoc} - */ - @Override - public RolesRecord value1(String value) { - setName(value); - return this; - } - - /** - * {@inheritDoc} - */ - @Override - public RolesRecord value2(String value) { - setRemarks(value); - return this; - } - - /** - * {@inheritDoc} - */ - @Override - public RolesRecord value3(Integer value) { - setId(value); - return this; - } - - /** - * {@inheritDoc} - */ - @Override - public RolesRecord values(String value1, String value2, Integer value3) { - value1(value1); - value2(value2); - value3(value3); - return this; - } - - // ------------------------------------------------------------------------- - // Constructors - // ------------------------------------------------------------------------- - - /** - * Create a detached RolesRecord - */ - public RolesRecord() { - super(Roles.ROLES); - } - - /** - * Create a detached, initialised RolesRecord - */ - public RolesRecord(String name, String remarks, Integer id) { - super(Roles.ROLES); - - setValue(0, name); - setValue(1, remarks); - setValue(2, id); - } -} diff --git a/jooq-spring/src/main/java/com/baeldung/jooq/introduction/db/information_schema/tables/records/SchemataRecord.java b/jooq-spring/src/main/java/com/baeldung/jooq/introduction/db/information_schema/tables/records/SchemataRecord.java deleted file mode 100644 index 21ae1edfb4..0000000000 --- a/jooq-spring/src/main/java/com/baeldung/jooq/introduction/db/information_schema/tables/records/SchemataRecord.java +++ /dev/null @@ -1,406 +0,0 @@ -/** - * This class is generated by jOOQ - */ -package com.baeldung.jooq.introduction.db.information_schema.tables.records; - - -import com.baeldung.jooq.introduction.db.information_schema.tables.Schemata; - -import javax.annotation.Generated; - -import org.jooq.Field; -import org.jooq.Record8; -import org.jooq.Row8; -import org.jooq.impl.TableRecordImpl; - - -/** - * This class is generated by jOOQ. - */ -@Generated( - value = { - "http://www.jooq.org", - "jOOQ version:3.7.3" - }, - comments = "This class is generated by jOOQ" -) -@SuppressWarnings({ "all", "unchecked", "rawtypes" }) -public class SchemataRecord extends TableRecordImpl implements Record8 { - - private static final long serialVersionUID = -163519189; - - /** - * Setter for INFORMATION_SCHEMA.SCHEMATA.CATALOG_NAME. - */ - public void setCatalogName(String value) { - setValue(0, value); - } - - /** - * Getter for INFORMATION_SCHEMA.SCHEMATA.CATALOG_NAME. - */ - public String getCatalogName() { - return (String) getValue(0); - } - - /** - * Setter for INFORMATION_SCHEMA.SCHEMATA.SCHEMA_NAME. - */ - public void setSchemaName(String value) { - setValue(1, value); - } - - /** - * Getter for INFORMATION_SCHEMA.SCHEMATA.SCHEMA_NAME. - */ - public String getSchemaName() { - return (String) getValue(1); - } - - /** - * Setter for INFORMATION_SCHEMA.SCHEMATA.SCHEMA_OWNER. - */ - public void setSchemaOwner(String value) { - setValue(2, value); - } - - /** - * Getter for INFORMATION_SCHEMA.SCHEMATA.SCHEMA_OWNER. - */ - public String getSchemaOwner() { - return (String) getValue(2); - } - - /** - * Setter for INFORMATION_SCHEMA.SCHEMATA.DEFAULT_CHARACTER_SET_NAME. - */ - public void setDefaultCharacterSetName(String value) { - setValue(3, value); - } - - /** - * Getter for INFORMATION_SCHEMA.SCHEMATA.DEFAULT_CHARACTER_SET_NAME. - */ - public String getDefaultCharacterSetName() { - return (String) getValue(3); - } - - /** - * Setter for INFORMATION_SCHEMA.SCHEMATA.DEFAULT_COLLATION_NAME. - */ - public void setDefaultCollationName(String value) { - setValue(4, value); - } - - /** - * Getter for INFORMATION_SCHEMA.SCHEMATA.DEFAULT_COLLATION_NAME. - */ - public String getDefaultCollationName() { - return (String) getValue(4); - } - - /** - * Setter for INFORMATION_SCHEMA.SCHEMATA.IS_DEFAULT. - */ - public void setIsDefault(Boolean value) { - setValue(5, value); - } - - /** - * Getter for INFORMATION_SCHEMA.SCHEMATA.IS_DEFAULT. - */ - public Boolean getIsDefault() { - return (Boolean) getValue(5); - } - - /** - * Setter for INFORMATION_SCHEMA.SCHEMATA.REMARKS. - */ - public void setRemarks(String value) { - setValue(6, value); - } - - /** - * Getter for INFORMATION_SCHEMA.SCHEMATA.REMARKS. - */ - public String getRemarks() { - return (String) getValue(6); - } - - /** - * Setter for INFORMATION_SCHEMA.SCHEMATA.ID. - */ - public void setId(Integer value) { - setValue(7, value); - } - - /** - * Getter for INFORMATION_SCHEMA.SCHEMATA.ID. - */ - public Integer getId() { - return (Integer) getValue(7); - } - - // ------------------------------------------------------------------------- - // Record8 type implementation - // ------------------------------------------------------------------------- - - /** - * {@inheritDoc} - */ - @Override - public Row8 fieldsRow() { - return (Row8) super.fieldsRow(); - } - - /** - * {@inheritDoc} - */ - @Override - public Row8 valuesRow() { - return (Row8) super.valuesRow(); - } - - /** - * {@inheritDoc} - */ - @Override - public Field field1() { - return Schemata.SCHEMATA.CATALOG_NAME; - } - - /** - * {@inheritDoc} - */ - @Override - public Field field2() { - return Schemata.SCHEMATA.SCHEMA_NAME; - } - - /** - * {@inheritDoc} - */ - @Override - public Field field3() { - return Schemata.SCHEMATA.SCHEMA_OWNER; - } - - /** - * {@inheritDoc} - */ - @Override - public Field field4() { - return Schemata.SCHEMATA.DEFAULT_CHARACTER_SET_NAME; - } - - /** - * {@inheritDoc} - */ - @Override - public Field field5() { - return Schemata.SCHEMATA.DEFAULT_COLLATION_NAME; - } - - /** - * {@inheritDoc} - */ - @Override - public Field field6() { - return Schemata.SCHEMATA.IS_DEFAULT; - } - - /** - * {@inheritDoc} - */ - @Override - public Field field7() { - return Schemata.SCHEMATA.REMARKS; - } - - /** - * {@inheritDoc} - */ - @Override - public Field field8() { - return Schemata.SCHEMATA.ID; - } - - /** - * {@inheritDoc} - */ - @Override - public String value1() { - return getCatalogName(); - } - - /** - * {@inheritDoc} - */ - @Override - public String value2() { - return getSchemaName(); - } - - /** - * {@inheritDoc} - */ - @Override - public String value3() { - return getSchemaOwner(); - } - - /** - * {@inheritDoc} - */ - @Override - public String value4() { - return getDefaultCharacterSetName(); - } - - /** - * {@inheritDoc} - */ - @Override - public String value5() { - return getDefaultCollationName(); - } - - /** - * {@inheritDoc} - */ - @Override - public Boolean value6() { - return getIsDefault(); - } - - /** - * {@inheritDoc} - */ - @Override - public String value7() { - return getRemarks(); - } - - /** - * {@inheritDoc} - */ - @Override - public Integer value8() { - return getId(); - } - - /** - * {@inheritDoc} - */ - @Override - public SchemataRecord value1(String value) { - setCatalogName(value); - return this; - } - - /** - * {@inheritDoc} - */ - @Override - public SchemataRecord value2(String value) { - setSchemaName(value); - return this; - } - - /** - * {@inheritDoc} - */ - @Override - public SchemataRecord value3(String value) { - setSchemaOwner(value); - return this; - } - - /** - * {@inheritDoc} - */ - @Override - public SchemataRecord value4(String value) { - setDefaultCharacterSetName(value); - return this; - } - - /** - * {@inheritDoc} - */ - @Override - public SchemataRecord value5(String value) { - setDefaultCollationName(value); - return this; - } - - /** - * {@inheritDoc} - */ - @Override - public SchemataRecord value6(Boolean value) { - setIsDefault(value); - return this; - } - - /** - * {@inheritDoc} - */ - @Override - public SchemataRecord value7(String value) { - setRemarks(value); - return this; - } - - /** - * {@inheritDoc} - */ - @Override - public SchemataRecord value8(Integer value) { - setId(value); - return this; - } - - /** - * {@inheritDoc} - */ - @Override - public SchemataRecord values(String value1, String value2, String value3, String value4, String value5, Boolean value6, String value7, Integer value8) { - value1(value1); - value2(value2); - value3(value3); - value4(value4); - value5(value5); - value6(value6); - value7(value7); - value8(value8); - return this; - } - - // ------------------------------------------------------------------------- - // Constructors - // ------------------------------------------------------------------------- - - /** - * Create a detached SchemataRecord - */ - public SchemataRecord() { - super(Schemata.SCHEMATA); - } - - /** - * Create a detached, initialised SchemataRecord - */ - public SchemataRecord(String catalogName, String schemaName, String schemaOwner, String defaultCharacterSetName, String defaultCollationName, Boolean isDefault, String remarks, Integer id) { - super(Schemata.SCHEMATA); - - setValue(0, catalogName); - setValue(1, schemaName); - setValue(2, schemaOwner); - setValue(3, defaultCharacterSetName); - setValue(4, defaultCollationName); - setValue(5, isDefault); - setValue(6, remarks); - setValue(7, id); - } -} diff --git a/jooq-spring/src/main/java/com/baeldung/jooq/introduction/db/information_schema/tables/records/SequencesRecord.java b/jooq-spring/src/main/java/com/baeldung/jooq/introduction/db/information_schema/tables/records/SequencesRecord.java deleted file mode 100644 index cc8285599f..0000000000 --- a/jooq-spring/src/main/java/com/baeldung/jooq/introduction/db/information_schema/tables/records/SequencesRecord.java +++ /dev/null @@ -1,570 +0,0 @@ -/** - * This class is generated by jOOQ - */ -package com.baeldung.jooq.introduction.db.information_schema.tables.records; - - -import com.baeldung.jooq.introduction.db.information_schema.tables.Sequences; - -import javax.annotation.Generated; - -import org.jooq.Field; -import org.jooq.Record12; -import org.jooq.Row12; -import org.jooq.impl.TableRecordImpl; - - -/** - * This class is generated by jOOQ. - */ -@Generated( - value = { - "http://www.jooq.org", - "jOOQ version:3.7.3" - }, - comments = "This class is generated by jOOQ" -) -@SuppressWarnings({ "all", "unchecked", "rawtypes" }) -public class SequencesRecord extends TableRecordImpl implements Record12 { - - private static final long serialVersionUID = -1861251627; - - /** - * Setter for INFORMATION_SCHEMA.SEQUENCES.SEQUENCE_CATALOG. - */ - public void setSequenceCatalog(String value) { - setValue(0, value); - } - - /** - * Getter for INFORMATION_SCHEMA.SEQUENCES.SEQUENCE_CATALOG. - */ - public String getSequenceCatalog() { - return (String) getValue(0); - } - - /** - * Setter for INFORMATION_SCHEMA.SEQUENCES.SEQUENCE_SCHEMA. - */ - public void setSequenceSchema(String value) { - setValue(1, value); - } - - /** - * Getter for INFORMATION_SCHEMA.SEQUENCES.SEQUENCE_SCHEMA. - */ - public String getSequenceSchema() { - return (String) getValue(1); - } - - /** - * Setter for INFORMATION_SCHEMA.SEQUENCES.SEQUENCE_NAME. - */ - public void setSequenceName(String value) { - setValue(2, value); - } - - /** - * Getter for INFORMATION_SCHEMA.SEQUENCES.SEQUENCE_NAME. - */ - public String getSequenceName() { - return (String) getValue(2); - } - - /** - * Setter for INFORMATION_SCHEMA.SEQUENCES.CURRENT_VALUE. - */ - public void setCurrentValue(Long value) { - setValue(3, value); - } - - /** - * Getter for INFORMATION_SCHEMA.SEQUENCES.CURRENT_VALUE. - */ - public Long getCurrentValue() { - return (Long) getValue(3); - } - - /** - * Setter for INFORMATION_SCHEMA.SEQUENCES.INCREMENT. - */ - public void setIncrement(Long value) { - setValue(4, value); - } - - /** - * Getter for INFORMATION_SCHEMA.SEQUENCES.INCREMENT. - */ - public Long getIncrement() { - return (Long) getValue(4); - } - - /** - * Setter for INFORMATION_SCHEMA.SEQUENCES.IS_GENERATED. - */ - public void setIsGenerated(Boolean value) { - setValue(5, value); - } - - /** - * Getter for INFORMATION_SCHEMA.SEQUENCES.IS_GENERATED. - */ - public Boolean getIsGenerated() { - return (Boolean) getValue(5); - } - - /** - * Setter for INFORMATION_SCHEMA.SEQUENCES.REMARKS. - */ - public void setRemarks(String value) { - setValue(6, value); - } - - /** - * Getter for INFORMATION_SCHEMA.SEQUENCES.REMARKS. - */ - public String getRemarks() { - return (String) getValue(6); - } - - /** - * Setter for INFORMATION_SCHEMA.SEQUENCES.CACHE. - */ - public void setCache(Long value) { - setValue(7, value); - } - - /** - * Getter for INFORMATION_SCHEMA.SEQUENCES.CACHE. - */ - public Long getCache() { - return (Long) getValue(7); - } - - /** - * Setter for INFORMATION_SCHEMA.SEQUENCES.MIN_VALUE. - */ - public void setMinValue(Long value) { - setValue(8, value); - } - - /** - * Getter for INFORMATION_SCHEMA.SEQUENCES.MIN_VALUE. - */ - public Long getMinValue() { - return (Long) getValue(8); - } - - /** - * Setter for INFORMATION_SCHEMA.SEQUENCES.MAX_VALUE. - */ - public void setMaxValue(Long value) { - setValue(9, value); - } - - /** - * Getter for INFORMATION_SCHEMA.SEQUENCES.MAX_VALUE. - */ - public Long getMaxValue() { - return (Long) getValue(9); - } - - /** - * Setter for INFORMATION_SCHEMA.SEQUENCES.IS_CYCLE. - */ - public void setIsCycle(Boolean value) { - setValue(10, value); - } - - /** - * Getter for INFORMATION_SCHEMA.SEQUENCES.IS_CYCLE. - */ - public Boolean getIsCycle() { - return (Boolean) getValue(10); - } - - /** - * Setter for INFORMATION_SCHEMA.SEQUENCES.ID. - */ - public void setId(Integer value) { - setValue(11, value); - } - - /** - * Getter for INFORMATION_SCHEMA.SEQUENCES.ID. - */ - public Integer getId() { - return (Integer) getValue(11); - } - - // ------------------------------------------------------------------------- - // Record12 type implementation - // ------------------------------------------------------------------------- - - /** - * {@inheritDoc} - */ - @Override - public Row12 fieldsRow() { - return (Row12) super.fieldsRow(); - } - - /** - * {@inheritDoc} - */ - @Override - public Row12 valuesRow() { - return (Row12) super.valuesRow(); - } - - /** - * {@inheritDoc} - */ - @Override - public Field field1() { - return Sequences.SEQUENCES.SEQUENCE_CATALOG; - } - - /** - * {@inheritDoc} - */ - @Override - public Field field2() { - return Sequences.SEQUENCES.SEQUENCE_SCHEMA; - } - - /** - * {@inheritDoc} - */ - @Override - public Field field3() { - return Sequences.SEQUENCES.SEQUENCE_NAME; - } - - /** - * {@inheritDoc} - */ - @Override - public Field field4() { - return Sequences.SEQUENCES.CURRENT_VALUE; - } - - /** - * {@inheritDoc} - */ - @Override - public Field field5() { - return Sequences.SEQUENCES.INCREMENT; - } - - /** - * {@inheritDoc} - */ - @Override - public Field field6() { - return Sequences.SEQUENCES.IS_GENERATED; - } - - /** - * {@inheritDoc} - */ - @Override - public Field field7() { - return Sequences.SEQUENCES.REMARKS; - } - - /** - * {@inheritDoc} - */ - @Override - public Field field8() { - return Sequences.SEQUENCES.CACHE; - } - - /** - * {@inheritDoc} - */ - @Override - public Field field9() { - return Sequences.SEQUENCES.MIN_VALUE; - } - - /** - * {@inheritDoc} - */ - @Override - public Field field10() { - return Sequences.SEQUENCES.MAX_VALUE; - } - - /** - * {@inheritDoc} - */ - @Override - public Field field11() { - return Sequences.SEQUENCES.IS_CYCLE; - } - - /** - * {@inheritDoc} - */ - @Override - public Field field12() { - return Sequences.SEQUENCES.ID; - } - - /** - * {@inheritDoc} - */ - @Override - public String value1() { - return getSequenceCatalog(); - } - - /** - * {@inheritDoc} - */ - @Override - public String value2() { - return getSequenceSchema(); - } - - /** - * {@inheritDoc} - */ - @Override - public String value3() { - return getSequenceName(); - } - - /** - * {@inheritDoc} - */ - @Override - public Long value4() { - return getCurrentValue(); - } - - /** - * {@inheritDoc} - */ - @Override - public Long value5() { - return getIncrement(); - } - - /** - * {@inheritDoc} - */ - @Override - public Boolean value6() { - return getIsGenerated(); - } - - /** - * {@inheritDoc} - */ - @Override - public String value7() { - return getRemarks(); - } - - /** - * {@inheritDoc} - */ - @Override - public Long value8() { - return getCache(); - } - - /** - * {@inheritDoc} - */ - @Override - public Long value9() { - return getMinValue(); - } - - /** - * {@inheritDoc} - */ - @Override - public Long value10() { - return getMaxValue(); - } - - /** - * {@inheritDoc} - */ - @Override - public Boolean value11() { - return getIsCycle(); - } - - /** - * {@inheritDoc} - */ - @Override - public Integer value12() { - return getId(); - } - - /** - * {@inheritDoc} - */ - @Override - public SequencesRecord value1(String value) { - setSequenceCatalog(value); - return this; - } - - /** - * {@inheritDoc} - */ - @Override - public SequencesRecord value2(String value) { - setSequenceSchema(value); - return this; - } - - /** - * {@inheritDoc} - */ - @Override - public SequencesRecord value3(String value) { - setSequenceName(value); - return this; - } - - /** - * {@inheritDoc} - */ - @Override - public SequencesRecord value4(Long value) { - setCurrentValue(value); - return this; - } - - /** - * {@inheritDoc} - */ - @Override - public SequencesRecord value5(Long value) { - setIncrement(value); - return this; - } - - /** - * {@inheritDoc} - */ - @Override - public SequencesRecord value6(Boolean value) { - setIsGenerated(value); - return this; - } - - /** - * {@inheritDoc} - */ - @Override - public SequencesRecord value7(String value) { - setRemarks(value); - return this; - } - - /** - * {@inheritDoc} - */ - @Override - public SequencesRecord value8(Long value) { - setCache(value); - return this; - } - - /** - * {@inheritDoc} - */ - @Override - public SequencesRecord value9(Long value) { - setMinValue(value); - return this; - } - - /** - * {@inheritDoc} - */ - @Override - public SequencesRecord value10(Long value) { - setMaxValue(value); - return this; - } - - /** - * {@inheritDoc} - */ - @Override - public SequencesRecord value11(Boolean value) { - setIsCycle(value); - return this; - } - - /** - * {@inheritDoc} - */ - @Override - public SequencesRecord value12(Integer value) { - setId(value); - return this; - } - - /** - * {@inheritDoc} - */ - @Override - public SequencesRecord values(String value1, String value2, String value3, Long value4, Long value5, Boolean value6, String value7, Long value8, Long value9, Long value10, Boolean value11, Integer value12) { - value1(value1); - value2(value2); - value3(value3); - value4(value4); - value5(value5); - value6(value6); - value7(value7); - value8(value8); - value9(value9); - value10(value10); - value11(value11); - value12(value12); - return this; - } - - // ------------------------------------------------------------------------- - // Constructors - // ------------------------------------------------------------------------- - - /** - * Create a detached SequencesRecord - */ - public SequencesRecord() { - super(Sequences.SEQUENCES); - } - - /** - * Create a detached, initialised SequencesRecord - */ - public SequencesRecord(String sequenceCatalog, String sequenceSchema, String sequenceName, Long currentValue, Long increment, Boolean isGenerated, String remarks, Long cache, Long minValue, Long maxValue, Boolean isCycle, Integer id) { - super(Sequences.SEQUENCES); - - setValue(0, sequenceCatalog); - setValue(1, sequenceSchema); - setValue(2, sequenceName); - setValue(3, currentValue); - setValue(4, increment); - setValue(5, isGenerated); - setValue(6, remarks); - setValue(7, cache); - setValue(8, minValue); - setValue(9, maxValue); - setValue(10, isCycle); - setValue(11, id); - } -} diff --git a/jooq-spring/src/main/java/com/baeldung/jooq/introduction/db/information_schema/tables/records/SessionStateRecord.java b/jooq-spring/src/main/java/com/baeldung/jooq/introduction/db/information_schema/tables/records/SessionStateRecord.java deleted file mode 100644 index b25800ae65..0000000000 --- a/jooq-spring/src/main/java/com/baeldung/jooq/introduction/db/information_schema/tables/records/SessionStateRecord.java +++ /dev/null @@ -1,160 +0,0 @@ -/** - * This class is generated by jOOQ - */ -package com.baeldung.jooq.introduction.db.information_schema.tables.records; - - -import com.baeldung.jooq.introduction.db.information_schema.tables.SessionState; - -import javax.annotation.Generated; - -import org.jooq.Field; -import org.jooq.Record2; -import org.jooq.Row2; -import org.jooq.impl.TableRecordImpl; - - -/** - * This class is generated by jOOQ. - */ -@Generated( - value = { - "http://www.jooq.org", - "jOOQ version:3.7.3" - }, - comments = "This class is generated by jOOQ" -) -@SuppressWarnings({ "all", "unchecked", "rawtypes" }) -public class SessionStateRecord extends TableRecordImpl implements Record2 { - - private static final long serialVersionUID = -1306764107; - - /** - * Setter for INFORMATION_SCHEMA.SESSION_STATE.KEY. - */ - public void setKey(String value) { - setValue(0, value); - } - - /** - * Getter for INFORMATION_SCHEMA.SESSION_STATE.KEY. - */ - public String getKey() { - return (String) getValue(0); - } - - /** - * Setter for INFORMATION_SCHEMA.SESSION_STATE.SQL. - */ - public void setSql(String value) { - setValue(1, value); - } - - /** - * Getter for INFORMATION_SCHEMA.SESSION_STATE.SQL. - */ - public String getSql() { - return (String) getValue(1); - } - - // ------------------------------------------------------------------------- - // Record2 type implementation - // ------------------------------------------------------------------------- - - /** - * {@inheritDoc} - */ - @Override - public Row2 fieldsRow() { - return (Row2) super.fieldsRow(); - } - - /** - * {@inheritDoc} - */ - @Override - public Row2 valuesRow() { - return (Row2) super.valuesRow(); - } - - /** - * {@inheritDoc} - */ - @Override - public Field field1() { - return SessionState.SESSION_STATE.KEY; - } - - /** - * {@inheritDoc} - */ - @Override - public Field field2() { - return SessionState.SESSION_STATE.SQL; - } - - /** - * {@inheritDoc} - */ - @Override - public String value1() { - return getKey(); - } - - /** - * {@inheritDoc} - */ - @Override - public String value2() { - return getSql(); - } - - /** - * {@inheritDoc} - */ - @Override - public SessionStateRecord value1(String value) { - setKey(value); - return this; - } - - /** - * {@inheritDoc} - */ - @Override - public SessionStateRecord value2(String value) { - setSql(value); - return this; - } - - /** - * {@inheritDoc} - */ - @Override - public SessionStateRecord values(String value1, String value2) { - value1(value1); - value2(value2); - return this; - } - - // ------------------------------------------------------------------------- - // Constructors - // ------------------------------------------------------------------------- - - /** - * Create a detached SessionStateRecord - */ - public SessionStateRecord() { - super(SessionState.SESSION_STATE); - } - - /** - * Create a detached, initialised SessionStateRecord - */ - public SessionStateRecord(String key, String sql) { - super(SessionState.SESSION_STATE); - - setValue(0, key); - setValue(1, sql); - } -} diff --git a/jooq-spring/src/main/java/com/baeldung/jooq/introduction/db/information_schema/tables/records/SessionsRecord.java b/jooq-spring/src/main/java/com/baeldung/jooq/introduction/db/information_schema/tables/records/SessionsRecord.java deleted file mode 100644 index 13853116b4..0000000000 --- a/jooq-spring/src/main/java/com/baeldung/jooq/introduction/db/information_schema/tables/records/SessionsRecord.java +++ /dev/null @@ -1,324 +0,0 @@ -/** - * This class is generated by jOOQ - */ -package com.baeldung.jooq.introduction.db.information_schema.tables.records; - - -import com.baeldung.jooq.introduction.db.information_schema.tables.Sessions; - -import javax.annotation.Generated; - -import org.jooq.Field; -import org.jooq.Record6; -import org.jooq.Row6; -import org.jooq.impl.TableRecordImpl; - - -/** - * This class is generated by jOOQ. - */ -@Generated( - value = { - "http://www.jooq.org", - "jOOQ version:3.7.3" - }, - comments = "This class is generated by jOOQ" -) -@SuppressWarnings({ "all", "unchecked", "rawtypes" }) -public class SessionsRecord extends TableRecordImpl implements Record6 { - - private static final long serialVersionUID = -457271018; - - /** - * Setter for INFORMATION_SCHEMA.SESSIONS.ID. - */ - public void setId(Integer value) { - setValue(0, value); - } - - /** - * Getter for INFORMATION_SCHEMA.SESSIONS.ID. - */ - public Integer getId() { - return (Integer) getValue(0); - } - - /** - * Setter for INFORMATION_SCHEMA.SESSIONS.USER_NAME. - */ - public void setUserName(String value) { - setValue(1, value); - } - - /** - * Getter for INFORMATION_SCHEMA.SESSIONS.USER_NAME. - */ - public String getUserName() { - return (String) getValue(1); - } - - /** - * Setter for INFORMATION_SCHEMA.SESSIONS.SESSION_START. - */ - public void setSessionStart(String value) { - setValue(2, value); - } - - /** - * Getter for INFORMATION_SCHEMA.SESSIONS.SESSION_START. - */ - public String getSessionStart() { - return (String) getValue(2); - } - - /** - * Setter for INFORMATION_SCHEMA.SESSIONS.STATEMENT. - */ - public void setStatement(String value) { - setValue(3, value); - } - - /** - * Getter for INFORMATION_SCHEMA.SESSIONS.STATEMENT. - */ - public String getStatement() { - return (String) getValue(3); - } - - /** - * Setter for INFORMATION_SCHEMA.SESSIONS.STATEMENT_START. - */ - public void setStatementStart(String value) { - setValue(4, value); - } - - /** - * Getter for INFORMATION_SCHEMA.SESSIONS.STATEMENT_START. - */ - public String getStatementStart() { - return (String) getValue(4); - } - - /** - * Setter for INFORMATION_SCHEMA.SESSIONS.CONTAINS_UNCOMMITTED. - */ - public void setContainsUncommitted(String value) { - setValue(5, value); - } - - /** - * Getter for INFORMATION_SCHEMA.SESSIONS.CONTAINS_UNCOMMITTED. - */ - public String getContainsUncommitted() { - return (String) getValue(5); - } - - // ------------------------------------------------------------------------- - // Record6 type implementation - // ------------------------------------------------------------------------- - - /** - * {@inheritDoc} - */ - @Override - public Row6 fieldsRow() { - return (Row6) super.fieldsRow(); - } - - /** - * {@inheritDoc} - */ - @Override - public Row6 valuesRow() { - return (Row6) super.valuesRow(); - } - - /** - * {@inheritDoc} - */ - @Override - public Field field1() { - return Sessions.SESSIONS.ID; - } - - /** - * {@inheritDoc} - */ - @Override - public Field field2() { - return Sessions.SESSIONS.USER_NAME; - } - - /** - * {@inheritDoc} - */ - @Override - public Field field3() { - return Sessions.SESSIONS.SESSION_START; - } - - /** - * {@inheritDoc} - */ - @Override - public Field field4() { - return Sessions.SESSIONS.STATEMENT; - } - - /** - * {@inheritDoc} - */ - @Override - public Field field5() { - return Sessions.SESSIONS.STATEMENT_START; - } - - /** - * {@inheritDoc} - */ - @Override - public Field field6() { - return Sessions.SESSIONS.CONTAINS_UNCOMMITTED; - } - - /** - * {@inheritDoc} - */ - @Override - public Integer value1() { - return getId(); - } - - /** - * {@inheritDoc} - */ - @Override - public String value2() { - return getUserName(); - } - - /** - * {@inheritDoc} - */ - @Override - public String value3() { - return getSessionStart(); - } - - /** - * {@inheritDoc} - */ - @Override - public String value4() { - return getStatement(); - } - - /** - * {@inheritDoc} - */ - @Override - public String value5() { - return getStatementStart(); - } - - /** - * {@inheritDoc} - */ - @Override - public String value6() { - return getContainsUncommitted(); - } - - /** - * {@inheritDoc} - */ - @Override - public SessionsRecord value1(Integer value) { - setId(value); - return this; - } - - /** - * {@inheritDoc} - */ - @Override - public SessionsRecord value2(String value) { - setUserName(value); - return this; - } - - /** - * {@inheritDoc} - */ - @Override - public SessionsRecord value3(String value) { - setSessionStart(value); - return this; - } - - /** - * {@inheritDoc} - */ - @Override - public SessionsRecord value4(String value) { - setStatement(value); - return this; - } - - /** - * {@inheritDoc} - */ - @Override - public SessionsRecord value5(String value) { - setStatementStart(value); - return this; - } - - /** - * {@inheritDoc} - */ - @Override - public SessionsRecord value6(String value) { - setContainsUncommitted(value); - return this; - } - - /** - * {@inheritDoc} - */ - @Override - public SessionsRecord values(Integer value1, String value2, String value3, String value4, String value5, String value6) { - value1(value1); - value2(value2); - value3(value3); - value4(value4); - value5(value5); - value6(value6); - return this; - } - - // ------------------------------------------------------------------------- - // Constructors - // ------------------------------------------------------------------------- - - /** - * Create a detached SessionsRecord - */ - public SessionsRecord() { - super(Sessions.SESSIONS); - } - - /** - * Create a detached, initialised SessionsRecord - */ - public SessionsRecord(Integer id, String userName, String sessionStart, String statement, String statementStart, String containsUncommitted) { - super(Sessions.SESSIONS); - - setValue(0, id); - setValue(1, userName); - setValue(2, sessionStart); - setValue(3, statement); - setValue(4, statementStart); - setValue(5, containsUncommitted); - } -} diff --git a/jooq-spring/src/main/java/com/baeldung/jooq/introduction/db/information_schema/tables/records/SettingsRecord.java b/jooq-spring/src/main/java/com/baeldung/jooq/introduction/db/information_schema/tables/records/SettingsRecord.java deleted file mode 100644 index e5f096c510..0000000000 --- a/jooq-spring/src/main/java/com/baeldung/jooq/introduction/db/information_schema/tables/records/SettingsRecord.java +++ /dev/null @@ -1,160 +0,0 @@ -/** - * This class is generated by jOOQ - */ -package com.baeldung.jooq.introduction.db.information_schema.tables.records; - - -import com.baeldung.jooq.introduction.db.information_schema.tables.Settings; - -import javax.annotation.Generated; - -import org.jooq.Field; -import org.jooq.Record2; -import org.jooq.Row2; -import org.jooq.impl.TableRecordImpl; - - -/** - * This class is generated by jOOQ. - */ -@Generated( - value = { - "http://www.jooq.org", - "jOOQ version:3.7.3" - }, - comments = "This class is generated by jOOQ" -) -@SuppressWarnings({ "all", "unchecked", "rawtypes" }) -public class SettingsRecord extends TableRecordImpl implements Record2 { - - private static final long serialVersionUID = -1656452632; - - /** - * Setter for INFORMATION_SCHEMA.SETTINGS.NAME. - */ - public void setName(String value) { - setValue(0, value); - } - - /** - * Getter for INFORMATION_SCHEMA.SETTINGS.NAME. - */ - public String getName() { - return (String) getValue(0); - } - - /** - * Setter for INFORMATION_SCHEMA.SETTINGS.VALUE. - */ - public void setValue(String value) { - setValue(1, value); - } - - /** - * Getter for INFORMATION_SCHEMA.SETTINGS.VALUE. - */ - public String getValue() { - return (String) getValue(1); - } - - // ------------------------------------------------------------------------- - // Record2 type implementation - // ------------------------------------------------------------------------- - - /** - * {@inheritDoc} - */ - @Override - public Row2 fieldsRow() { - return (Row2) super.fieldsRow(); - } - - /** - * {@inheritDoc} - */ - @Override - public Row2 valuesRow() { - return (Row2) super.valuesRow(); - } - - /** - * {@inheritDoc} - */ - @Override - public Field field1() { - return Settings.SETTINGS.NAME; - } - - /** - * {@inheritDoc} - */ - @Override - public Field field2() { - return Settings.SETTINGS.VALUE; - } - - /** - * {@inheritDoc} - */ - @Override - public String value1() { - return getName(); - } - - /** - * {@inheritDoc} - */ - @Override - public String value2() { - return getValue(); - } - - /** - * {@inheritDoc} - */ - @Override - public SettingsRecord value1(String value) { - setName(value); - return this; - } - - /** - * {@inheritDoc} - */ - @Override - public SettingsRecord value2(String value) { - setValue(value); - return this; - } - - /** - * {@inheritDoc} - */ - @Override - public SettingsRecord values(String value1, String value2) { - value1(value1); - value2(value2); - return this; - } - - // ------------------------------------------------------------------------- - // Constructors - // ------------------------------------------------------------------------- - - /** - * Create a detached SettingsRecord - */ - public SettingsRecord() { - super(Settings.SETTINGS); - } - - /** - * Create a detached, initialised SettingsRecord - */ - public SettingsRecord(String name, String value) { - super(Settings.SETTINGS); - - setValue(0, name); - setValue(1, value); - } -} diff --git a/jooq-spring/src/main/java/com/baeldung/jooq/introduction/db/information_schema/tables/records/TablePrivilegesRecord.java b/jooq-spring/src/main/java/com/baeldung/jooq/introduction/db/information_schema/tables/records/TablePrivilegesRecord.java deleted file mode 100644 index 5b2beca1f0..0000000000 --- a/jooq-spring/src/main/java/com/baeldung/jooq/introduction/db/information_schema/tables/records/TablePrivilegesRecord.java +++ /dev/null @@ -1,365 +0,0 @@ -/** - * This class is generated by jOOQ - */ -package com.baeldung.jooq.introduction.db.information_schema.tables.records; - - -import com.baeldung.jooq.introduction.db.information_schema.tables.TablePrivileges; - -import javax.annotation.Generated; - -import org.jooq.Field; -import org.jooq.Record7; -import org.jooq.Row7; -import org.jooq.impl.TableRecordImpl; - - -/** - * This class is generated by jOOQ. - */ -@Generated( - value = { - "http://www.jooq.org", - "jOOQ version:3.7.3" - }, - comments = "This class is generated by jOOQ" -) -@SuppressWarnings({ "all", "unchecked", "rawtypes" }) -public class TablePrivilegesRecord extends TableRecordImpl implements Record7 { - - private static final long serialVersionUID = 1595034957; - - /** - * Setter for INFORMATION_SCHEMA.TABLE_PRIVILEGES.GRANTOR. - */ - public void setGrantor(String value) { - setValue(0, value); - } - - /** - * Getter for INFORMATION_SCHEMA.TABLE_PRIVILEGES.GRANTOR. - */ - public String getGrantor() { - return (String) getValue(0); - } - - /** - * Setter for INFORMATION_SCHEMA.TABLE_PRIVILEGES.GRANTEE. - */ - public void setGrantee(String value) { - setValue(1, value); - } - - /** - * Getter for INFORMATION_SCHEMA.TABLE_PRIVILEGES.GRANTEE. - */ - public String getGrantee() { - return (String) getValue(1); - } - - /** - * Setter for INFORMATION_SCHEMA.TABLE_PRIVILEGES.TABLE_CATALOG. - */ - public void setTableCatalog(String value) { - setValue(2, value); - } - - /** - * Getter for INFORMATION_SCHEMA.TABLE_PRIVILEGES.TABLE_CATALOG. - */ - public String getTableCatalog() { - return (String) getValue(2); - } - - /** - * Setter for INFORMATION_SCHEMA.TABLE_PRIVILEGES.TABLE_SCHEMA. - */ - public void setTableSchema(String value) { - setValue(3, value); - } - - /** - * Getter for INFORMATION_SCHEMA.TABLE_PRIVILEGES.TABLE_SCHEMA. - */ - public String getTableSchema() { - return (String) getValue(3); - } - - /** - * Setter for INFORMATION_SCHEMA.TABLE_PRIVILEGES.TABLE_NAME. - */ - public void setTableName(String value) { - setValue(4, value); - } - - /** - * Getter for INFORMATION_SCHEMA.TABLE_PRIVILEGES.TABLE_NAME. - */ - public String getTableName() { - return (String) getValue(4); - } - - /** - * Setter for INFORMATION_SCHEMA.TABLE_PRIVILEGES.PRIVILEGE_TYPE. - */ - public void setPrivilegeType(String value) { - setValue(5, value); - } - - /** - * Getter for INFORMATION_SCHEMA.TABLE_PRIVILEGES.PRIVILEGE_TYPE. - */ - public String getPrivilegeType() { - return (String) getValue(5); - } - - /** - * Setter for INFORMATION_SCHEMA.TABLE_PRIVILEGES.IS_GRANTABLE. - */ - public void setIsGrantable(String value) { - setValue(6, value); - } - - /** - * Getter for INFORMATION_SCHEMA.TABLE_PRIVILEGES.IS_GRANTABLE. - */ - public String getIsGrantable() { - return (String) getValue(6); - } - - // ------------------------------------------------------------------------- - // Record7 type implementation - // ------------------------------------------------------------------------- - - /** - * {@inheritDoc} - */ - @Override - public Row7 fieldsRow() { - return (Row7) super.fieldsRow(); - } - - /** - * {@inheritDoc} - */ - @Override - public Row7 valuesRow() { - return (Row7) super.valuesRow(); - } - - /** - * {@inheritDoc} - */ - @Override - public Field field1() { - return TablePrivileges.TABLE_PRIVILEGES.GRANTOR; - } - - /** - * {@inheritDoc} - */ - @Override - public Field field2() { - return TablePrivileges.TABLE_PRIVILEGES.GRANTEE; - } - - /** - * {@inheritDoc} - */ - @Override - public Field field3() { - return TablePrivileges.TABLE_PRIVILEGES.TABLE_CATALOG; - } - - /** - * {@inheritDoc} - */ - @Override - public Field field4() { - return TablePrivileges.TABLE_PRIVILEGES.TABLE_SCHEMA; - } - - /** - * {@inheritDoc} - */ - @Override - public Field field5() { - return TablePrivileges.TABLE_PRIVILEGES.TABLE_NAME; - } - - /** - * {@inheritDoc} - */ - @Override - public Field field6() { - return TablePrivileges.TABLE_PRIVILEGES.PRIVILEGE_TYPE; - } - - /** - * {@inheritDoc} - */ - @Override - public Field field7() { - return TablePrivileges.TABLE_PRIVILEGES.IS_GRANTABLE; - } - - /** - * {@inheritDoc} - */ - @Override - public String value1() { - return getGrantor(); - } - - /** - * {@inheritDoc} - */ - @Override - public String value2() { - return getGrantee(); - } - - /** - * {@inheritDoc} - */ - @Override - public String value3() { - return getTableCatalog(); - } - - /** - * {@inheritDoc} - */ - @Override - public String value4() { - return getTableSchema(); - } - - /** - * {@inheritDoc} - */ - @Override - public String value5() { - return getTableName(); - } - - /** - * {@inheritDoc} - */ - @Override - public String value6() { - return getPrivilegeType(); - } - - /** - * {@inheritDoc} - */ - @Override - public String value7() { - return getIsGrantable(); - } - - /** - * {@inheritDoc} - */ - @Override - public TablePrivilegesRecord value1(String value) { - setGrantor(value); - return this; - } - - /** - * {@inheritDoc} - */ - @Override - public TablePrivilegesRecord value2(String value) { - setGrantee(value); - return this; - } - - /** - * {@inheritDoc} - */ - @Override - public TablePrivilegesRecord value3(String value) { - setTableCatalog(value); - return this; - } - - /** - * {@inheritDoc} - */ - @Override - public TablePrivilegesRecord value4(String value) { - setTableSchema(value); - return this; - } - - /** - * {@inheritDoc} - */ - @Override - public TablePrivilegesRecord value5(String value) { - setTableName(value); - return this; - } - - /** - * {@inheritDoc} - */ - @Override - public TablePrivilegesRecord value6(String value) { - setPrivilegeType(value); - return this; - } - - /** - * {@inheritDoc} - */ - @Override - public TablePrivilegesRecord value7(String value) { - setIsGrantable(value); - return this; - } - - /** - * {@inheritDoc} - */ - @Override - public TablePrivilegesRecord values(String value1, String value2, String value3, String value4, String value5, String value6, String value7) { - value1(value1); - value2(value2); - value3(value3); - value4(value4); - value5(value5); - value6(value6); - value7(value7); - return this; - } - - // ------------------------------------------------------------------------- - // Constructors - // ------------------------------------------------------------------------- - - /** - * Create a detached TablePrivilegesRecord - */ - public TablePrivilegesRecord() { - super(TablePrivileges.TABLE_PRIVILEGES); - } - - /** - * Create a detached, initialised TablePrivilegesRecord - */ - public TablePrivilegesRecord(String grantor, String grantee, String tableCatalog, String tableSchema, String tableName, String privilegeType, String isGrantable) { - super(TablePrivileges.TABLE_PRIVILEGES); - - setValue(0, grantor); - setValue(1, grantee); - setValue(2, tableCatalog); - setValue(3, tableSchema); - setValue(4, tableName); - setValue(5, privilegeType); - setValue(6, isGrantable); - } -} diff --git a/jooq-spring/src/main/java/com/baeldung/jooq/introduction/db/information_schema/tables/records/TableTypesRecord.java b/jooq-spring/src/main/java/com/baeldung/jooq/introduction/db/information_schema/tables/records/TableTypesRecord.java deleted file mode 100644 index 3d7eebdfff..0000000000 --- a/jooq-spring/src/main/java/com/baeldung/jooq/introduction/db/information_schema/tables/records/TableTypesRecord.java +++ /dev/null @@ -1,119 +0,0 @@ -/** - * This class is generated by jOOQ - */ -package com.baeldung.jooq.introduction.db.information_schema.tables.records; - - -import com.baeldung.jooq.introduction.db.information_schema.tables.TableTypes; - -import javax.annotation.Generated; - -import org.jooq.Field; -import org.jooq.Record1; -import org.jooq.Row1; -import org.jooq.impl.TableRecordImpl; - - -/** - * This class is generated by jOOQ. - */ -@Generated( - value = { - "http://www.jooq.org", - "jOOQ version:3.7.3" - }, - comments = "This class is generated by jOOQ" -) -@SuppressWarnings({ "all", "unchecked", "rawtypes" }) -public class TableTypesRecord extends TableRecordImpl implements Record1 { - - private static final long serialVersionUID = -645264739; - - /** - * Setter for INFORMATION_SCHEMA.TABLE_TYPES.TYPE. - */ - public void setType(String value) { - setValue(0, value); - } - - /** - * Getter for INFORMATION_SCHEMA.TABLE_TYPES.TYPE. - */ - public String getType() { - return (String) getValue(0); - } - - // ------------------------------------------------------------------------- - // Record1 type implementation - // ------------------------------------------------------------------------- - - /** - * {@inheritDoc} - */ - @Override - public Row1 fieldsRow() { - return (Row1) super.fieldsRow(); - } - - /** - * {@inheritDoc} - */ - @Override - public Row1 valuesRow() { - return (Row1) super.valuesRow(); - } - - /** - * {@inheritDoc} - */ - @Override - public Field field1() { - return TableTypes.TABLE_TYPES.TYPE; - } - - /** - * {@inheritDoc} - */ - @Override - public String value1() { - return getType(); - } - - /** - * {@inheritDoc} - */ - @Override - public TableTypesRecord value1(String value) { - setType(value); - return this; - } - - /** - * {@inheritDoc} - */ - @Override - public TableTypesRecord values(String value1) { - value1(value1); - return this; - } - - // ------------------------------------------------------------------------- - // Constructors - // ------------------------------------------------------------------------- - - /** - * Create a detached TableTypesRecord - */ - public TableTypesRecord() { - super(TableTypes.TABLE_TYPES); - } - - /** - * Create a detached, initialised TableTypesRecord - */ - public TableTypesRecord(String type) { - super(TableTypes.TABLE_TYPES); - - setValue(0, type); - } -} diff --git a/jooq-spring/src/main/java/com/baeldung/jooq/introduction/db/information_schema/tables/records/TablesRecord.java b/jooq-spring/src/main/java/com/baeldung/jooq/introduction/db/information_schema/tables/records/TablesRecord.java deleted file mode 100644 index 9542830be7..0000000000 --- a/jooq-spring/src/main/java/com/baeldung/jooq/introduction/db/information_schema/tables/records/TablesRecord.java +++ /dev/null @@ -1,570 +0,0 @@ -/** - * This class is generated by jOOQ - */ -package com.baeldung.jooq.introduction.db.information_schema.tables.records; - - -import com.baeldung.jooq.introduction.db.information_schema.tables.Tables; - -import javax.annotation.Generated; - -import org.jooq.Field; -import org.jooq.Record12; -import org.jooq.Row12; -import org.jooq.impl.TableRecordImpl; - - -/** - * This class is generated by jOOQ. - */ -@Generated( - value = { - "http://www.jooq.org", - "jOOQ version:3.7.3" - }, - comments = "This class is generated by jOOQ" -) -@SuppressWarnings({ "all", "unchecked", "rawtypes" }) -public class TablesRecord extends TableRecordImpl implements Record12 { - - private static final long serialVersionUID = 850052084; - - /** - * Setter for INFORMATION_SCHEMA.TABLES.TABLE_CATALOG. - */ - public void setTableCatalog(String value) { - setValue(0, value); - } - - /** - * Getter for INFORMATION_SCHEMA.TABLES.TABLE_CATALOG. - */ - public String getTableCatalog() { - return (String) getValue(0); - } - - /** - * Setter for INFORMATION_SCHEMA.TABLES.TABLE_SCHEMA. - */ - public void setTableSchema(String value) { - setValue(1, value); - } - - /** - * Getter for INFORMATION_SCHEMA.TABLES.TABLE_SCHEMA. - */ - public String getTableSchema() { - return (String) getValue(1); - } - - /** - * Setter for INFORMATION_SCHEMA.TABLES.TABLE_NAME. - */ - public void setTableName(String value) { - setValue(2, value); - } - - /** - * Getter for INFORMATION_SCHEMA.TABLES.TABLE_NAME. - */ - public String getTableName() { - return (String) getValue(2); - } - - /** - * Setter for INFORMATION_SCHEMA.TABLES.TABLE_TYPE. - */ - public void setTableType(String value) { - setValue(3, value); - } - - /** - * Getter for INFORMATION_SCHEMA.TABLES.TABLE_TYPE. - */ - public String getTableType() { - return (String) getValue(3); - } - - /** - * Setter for INFORMATION_SCHEMA.TABLES.STORAGE_TYPE. - */ - public void setStorageType(String value) { - setValue(4, value); - } - - /** - * Getter for INFORMATION_SCHEMA.TABLES.STORAGE_TYPE. - */ - public String getStorageType() { - return (String) getValue(4); - } - - /** - * Setter for INFORMATION_SCHEMA.TABLES.SQL. - */ - public void setSql(String value) { - setValue(5, value); - } - - /** - * Getter for INFORMATION_SCHEMA.TABLES.SQL. - */ - public String getSql() { - return (String) getValue(5); - } - - /** - * Setter for INFORMATION_SCHEMA.TABLES.REMARKS. - */ - public void setRemarks(String value) { - setValue(6, value); - } - - /** - * Getter for INFORMATION_SCHEMA.TABLES.REMARKS. - */ - public String getRemarks() { - return (String) getValue(6); - } - - /** - * Setter for INFORMATION_SCHEMA.TABLES.LAST_MODIFICATION. - */ - public void setLastModification(Long value) { - setValue(7, value); - } - - /** - * Getter for INFORMATION_SCHEMA.TABLES.LAST_MODIFICATION. - */ - public Long getLastModification() { - return (Long) getValue(7); - } - - /** - * Setter for INFORMATION_SCHEMA.TABLES.ID. - */ - public void setId(Integer value) { - setValue(8, value); - } - - /** - * Getter for INFORMATION_SCHEMA.TABLES.ID. - */ - public Integer getId() { - return (Integer) getValue(8); - } - - /** - * Setter for INFORMATION_SCHEMA.TABLES.TYPE_NAME. - */ - public void setTypeName(String value) { - setValue(9, value); - } - - /** - * Getter for INFORMATION_SCHEMA.TABLES.TYPE_NAME. - */ - public String getTypeName() { - return (String) getValue(9); - } - - /** - * Setter for INFORMATION_SCHEMA.TABLES.TABLE_CLASS. - */ - public void setTableClass(String value) { - setValue(10, value); - } - - /** - * Getter for INFORMATION_SCHEMA.TABLES.TABLE_CLASS. - */ - public String getTableClass() { - return (String) getValue(10); - } - - /** - * Setter for INFORMATION_SCHEMA.TABLES.ROW_COUNT_ESTIMATE. - */ - public void setRowCountEstimate(Long value) { - setValue(11, value); - } - - /** - * Getter for INFORMATION_SCHEMA.TABLES.ROW_COUNT_ESTIMATE. - */ - public Long getRowCountEstimate() { - return (Long) getValue(11); - } - - // ------------------------------------------------------------------------- - // Record12 type implementation - // ------------------------------------------------------------------------- - - /** - * {@inheritDoc} - */ - @Override - public Row12 fieldsRow() { - return (Row12) super.fieldsRow(); - } - - /** - * {@inheritDoc} - */ - @Override - public Row12 valuesRow() { - return (Row12) super.valuesRow(); - } - - /** - * {@inheritDoc} - */ - @Override - public Field field1() { - return Tables.TABLES.TABLE_CATALOG; - } - - /** - * {@inheritDoc} - */ - @Override - public Field field2() { - return Tables.TABLES.TABLE_SCHEMA; - } - - /** - * {@inheritDoc} - */ - @Override - public Field field3() { - return Tables.TABLES.TABLE_NAME; - } - - /** - * {@inheritDoc} - */ - @Override - public Field field4() { - return Tables.TABLES.TABLE_TYPE; - } - - /** - * {@inheritDoc} - */ - @Override - public Field field5() { - return Tables.TABLES.STORAGE_TYPE; - } - - /** - * {@inheritDoc} - */ - @Override - public Field field6() { - return Tables.TABLES.SQL; - } - - /** - * {@inheritDoc} - */ - @Override - public Field field7() { - return Tables.TABLES.REMARKS; - } - - /** - * {@inheritDoc} - */ - @Override - public Field field8() { - return Tables.TABLES.LAST_MODIFICATION; - } - - /** - * {@inheritDoc} - */ - @Override - public Field field9() { - return Tables.TABLES.ID; - } - - /** - * {@inheritDoc} - */ - @Override - public Field field10() { - return Tables.TABLES.TYPE_NAME; - } - - /** - * {@inheritDoc} - */ - @Override - public Field field11() { - return Tables.TABLES.TABLE_CLASS; - } - - /** - * {@inheritDoc} - */ - @Override - public Field field12() { - return Tables.TABLES.ROW_COUNT_ESTIMATE; - } - - /** - * {@inheritDoc} - */ - @Override - public String value1() { - return getTableCatalog(); - } - - /** - * {@inheritDoc} - */ - @Override - public String value2() { - return getTableSchema(); - } - - /** - * {@inheritDoc} - */ - @Override - public String value3() { - return getTableName(); - } - - /** - * {@inheritDoc} - */ - @Override - public String value4() { - return getTableType(); - } - - /** - * {@inheritDoc} - */ - @Override - public String value5() { - return getStorageType(); - } - - /** - * {@inheritDoc} - */ - @Override - public String value6() { - return getSql(); - } - - /** - * {@inheritDoc} - */ - @Override - public String value7() { - return getRemarks(); - } - - /** - * {@inheritDoc} - */ - @Override - public Long value8() { - return getLastModification(); - } - - /** - * {@inheritDoc} - */ - @Override - public Integer value9() { - return getId(); - } - - /** - * {@inheritDoc} - */ - @Override - public String value10() { - return getTypeName(); - } - - /** - * {@inheritDoc} - */ - @Override - public String value11() { - return getTableClass(); - } - - /** - * {@inheritDoc} - */ - @Override - public Long value12() { - return getRowCountEstimate(); - } - - /** - * {@inheritDoc} - */ - @Override - public TablesRecord value1(String value) { - setTableCatalog(value); - return this; - } - - /** - * {@inheritDoc} - */ - @Override - public TablesRecord value2(String value) { - setTableSchema(value); - return this; - } - - /** - * {@inheritDoc} - */ - @Override - public TablesRecord value3(String value) { - setTableName(value); - return this; - } - - /** - * {@inheritDoc} - */ - @Override - public TablesRecord value4(String value) { - setTableType(value); - return this; - } - - /** - * {@inheritDoc} - */ - @Override - public TablesRecord value5(String value) { - setStorageType(value); - return this; - } - - /** - * {@inheritDoc} - */ - @Override - public TablesRecord value6(String value) { - setSql(value); - return this; - } - - /** - * {@inheritDoc} - */ - @Override - public TablesRecord value7(String value) { - setRemarks(value); - return this; - } - - /** - * {@inheritDoc} - */ - @Override - public TablesRecord value8(Long value) { - setLastModification(value); - return this; - } - - /** - * {@inheritDoc} - */ - @Override - public TablesRecord value9(Integer value) { - setId(value); - return this; - } - - /** - * {@inheritDoc} - */ - @Override - public TablesRecord value10(String value) { - setTypeName(value); - return this; - } - - /** - * {@inheritDoc} - */ - @Override - public TablesRecord value11(String value) { - setTableClass(value); - return this; - } - - /** - * {@inheritDoc} - */ - @Override - public TablesRecord value12(Long value) { - setRowCountEstimate(value); - return this; - } - - /** - * {@inheritDoc} - */ - @Override - public TablesRecord values(String value1, String value2, String value3, String value4, String value5, String value6, String value7, Long value8, Integer value9, String value10, String value11, Long value12) { - value1(value1); - value2(value2); - value3(value3); - value4(value4); - value5(value5); - value6(value6); - value7(value7); - value8(value8); - value9(value9); - value10(value10); - value11(value11); - value12(value12); - return this; - } - - // ------------------------------------------------------------------------- - // Constructors - // ------------------------------------------------------------------------- - - /** - * Create a detached TablesRecord - */ - public TablesRecord() { - super(Tables.TABLES); - } - - /** - * Create a detached, initialised TablesRecord - */ - public TablesRecord(String tableCatalog, String tableSchema, String tableName, String tableType, String storageType, String sql, String remarks, Long lastModification, Integer id, String typeName, String tableClass, Long rowCountEstimate) { - super(Tables.TABLES); - - setValue(0, tableCatalog); - setValue(1, tableSchema); - setValue(2, tableName); - setValue(3, tableType); - setValue(4, storageType); - setValue(5, sql); - setValue(6, remarks); - setValue(7, lastModification); - setValue(8, id); - setValue(9, typeName); - setValue(10, tableClass); - setValue(11, rowCountEstimate); - } -} diff --git a/jooq-spring/src/main/java/com/baeldung/jooq/introduction/db/information_schema/tables/records/TriggersRecord.java b/jooq-spring/src/main/java/com/baeldung/jooq/introduction/db/information_schema/tables/records/TriggersRecord.java deleted file mode 100644 index f0f019e127..0000000000 --- a/jooq-spring/src/main/java/com/baeldung/jooq/introduction/db/information_schema/tables/records/TriggersRecord.java +++ /dev/null @@ -1,652 +0,0 @@ -/** - * This class is generated by jOOQ - */ -package com.baeldung.jooq.introduction.db.information_schema.tables.records; - - -import com.baeldung.jooq.introduction.db.information_schema.tables.Triggers; - -import javax.annotation.Generated; - -import org.jooq.Field; -import org.jooq.Record14; -import org.jooq.Row14; -import org.jooq.impl.TableRecordImpl; - - -/** - * This class is generated by jOOQ. - */ -@Generated( - value = { - "http://www.jooq.org", - "jOOQ version:3.7.3" - }, - comments = "This class is generated by jOOQ" -) -@SuppressWarnings({ "all", "unchecked", "rawtypes" }) -public class TriggersRecord extends TableRecordImpl implements Record14 { - - private static final long serialVersionUID = 344875511; - - /** - * Setter for INFORMATION_SCHEMA.TRIGGERS.TRIGGER_CATALOG. - */ - public void setTriggerCatalog(String value) { - setValue(0, value); - } - - /** - * Getter for INFORMATION_SCHEMA.TRIGGERS.TRIGGER_CATALOG. - */ - public String getTriggerCatalog() { - return (String) getValue(0); - } - - /** - * Setter for INFORMATION_SCHEMA.TRIGGERS.TRIGGER_SCHEMA. - */ - public void setTriggerSchema(String value) { - setValue(1, value); - } - - /** - * Getter for INFORMATION_SCHEMA.TRIGGERS.TRIGGER_SCHEMA. - */ - public String getTriggerSchema() { - return (String) getValue(1); - } - - /** - * Setter for INFORMATION_SCHEMA.TRIGGERS.TRIGGER_NAME. - */ - public void setTriggerName(String value) { - setValue(2, value); - } - - /** - * Getter for INFORMATION_SCHEMA.TRIGGERS.TRIGGER_NAME. - */ - public String getTriggerName() { - return (String) getValue(2); - } - - /** - * Setter for INFORMATION_SCHEMA.TRIGGERS.TRIGGER_TYPE. - */ - public void setTriggerType(String value) { - setValue(3, value); - } - - /** - * Getter for INFORMATION_SCHEMA.TRIGGERS.TRIGGER_TYPE. - */ - public String getTriggerType() { - return (String) getValue(3); - } - - /** - * Setter for INFORMATION_SCHEMA.TRIGGERS.TABLE_CATALOG. - */ - public void setTableCatalog(String value) { - setValue(4, value); - } - - /** - * Getter for INFORMATION_SCHEMA.TRIGGERS.TABLE_CATALOG. - */ - public String getTableCatalog() { - return (String) getValue(4); - } - - /** - * Setter for INFORMATION_SCHEMA.TRIGGERS.TABLE_SCHEMA. - */ - public void setTableSchema(String value) { - setValue(5, value); - } - - /** - * Getter for INFORMATION_SCHEMA.TRIGGERS.TABLE_SCHEMA. - */ - public String getTableSchema() { - return (String) getValue(5); - } - - /** - * Setter for INFORMATION_SCHEMA.TRIGGERS.TABLE_NAME. - */ - public void setTableName(String value) { - setValue(6, value); - } - - /** - * Getter for INFORMATION_SCHEMA.TRIGGERS.TABLE_NAME. - */ - public String getTableName() { - return (String) getValue(6); - } - - /** - * Setter for INFORMATION_SCHEMA.TRIGGERS.BEFORE. - */ - public void setBefore(Boolean value) { - setValue(7, value); - } - - /** - * Getter for INFORMATION_SCHEMA.TRIGGERS.BEFORE. - */ - public Boolean getBefore() { - return (Boolean) getValue(7); - } - - /** - * Setter for INFORMATION_SCHEMA.TRIGGERS.JAVA_CLASS. - */ - public void setJavaClass(String value) { - setValue(8, value); - } - - /** - * Getter for INFORMATION_SCHEMA.TRIGGERS.JAVA_CLASS. - */ - public String getJavaClass() { - return (String) getValue(8); - } - - /** - * Setter for INFORMATION_SCHEMA.TRIGGERS.QUEUE_SIZE. - */ - public void setQueueSize(Integer value) { - setValue(9, value); - } - - /** - * Getter for INFORMATION_SCHEMA.TRIGGERS.QUEUE_SIZE. - */ - public Integer getQueueSize() { - return (Integer) getValue(9); - } - - /** - * Setter for INFORMATION_SCHEMA.TRIGGERS.NO_WAIT. - */ - public void setNoWait(Boolean value) { - setValue(10, value); - } - - /** - * Getter for INFORMATION_SCHEMA.TRIGGERS.NO_WAIT. - */ - public Boolean getNoWait() { - return (Boolean) getValue(10); - } - - /** - * Setter for INFORMATION_SCHEMA.TRIGGERS.REMARKS. - */ - public void setRemarks(String value) { - setValue(11, value); - } - - /** - * Getter for INFORMATION_SCHEMA.TRIGGERS.REMARKS. - */ - public String getRemarks() { - return (String) getValue(11); - } - - /** - * Setter for INFORMATION_SCHEMA.TRIGGERS.SQL. - */ - public void setSql(String value) { - setValue(12, value); - } - - /** - * Getter for INFORMATION_SCHEMA.TRIGGERS.SQL. - */ - public String getSql() { - return (String) getValue(12); - } - - /** - * Setter for INFORMATION_SCHEMA.TRIGGERS.ID. - */ - public void setId(Integer value) { - setValue(13, value); - } - - /** - * Getter for INFORMATION_SCHEMA.TRIGGERS.ID. - */ - public Integer getId() { - return (Integer) getValue(13); - } - - // ------------------------------------------------------------------------- - // Record14 type implementation - // ------------------------------------------------------------------------- - - /** - * {@inheritDoc} - */ - @Override - public Row14 fieldsRow() { - return (Row14) super.fieldsRow(); - } - - /** - * {@inheritDoc} - */ - @Override - public Row14 valuesRow() { - return (Row14) super.valuesRow(); - } - - /** - * {@inheritDoc} - */ - @Override - public Field field1() { - return Triggers.TRIGGERS.TRIGGER_CATALOG; - } - - /** - * {@inheritDoc} - */ - @Override - public Field field2() { - return Triggers.TRIGGERS.TRIGGER_SCHEMA; - } - - /** - * {@inheritDoc} - */ - @Override - public Field field3() { - return Triggers.TRIGGERS.TRIGGER_NAME; - } - - /** - * {@inheritDoc} - */ - @Override - public Field field4() { - return Triggers.TRIGGERS.TRIGGER_TYPE; - } - - /** - * {@inheritDoc} - */ - @Override - public Field field5() { - return Triggers.TRIGGERS.TABLE_CATALOG; - } - - /** - * {@inheritDoc} - */ - @Override - public Field field6() { - return Triggers.TRIGGERS.TABLE_SCHEMA; - } - - /** - * {@inheritDoc} - */ - @Override - public Field field7() { - return Triggers.TRIGGERS.TABLE_NAME; - } - - /** - * {@inheritDoc} - */ - @Override - public Field field8() { - return Triggers.TRIGGERS.BEFORE; - } - - /** - * {@inheritDoc} - */ - @Override - public Field field9() { - return Triggers.TRIGGERS.JAVA_CLASS; - } - - /** - * {@inheritDoc} - */ - @Override - public Field field10() { - return Triggers.TRIGGERS.QUEUE_SIZE; - } - - /** - * {@inheritDoc} - */ - @Override - public Field field11() { - return Triggers.TRIGGERS.NO_WAIT; - } - - /** - * {@inheritDoc} - */ - @Override - public Field field12() { - return Triggers.TRIGGERS.REMARKS; - } - - /** - * {@inheritDoc} - */ - @Override - public Field field13() { - return Triggers.TRIGGERS.SQL; - } - - /** - * {@inheritDoc} - */ - @Override - public Field field14() { - return Triggers.TRIGGERS.ID; - } - - /** - * {@inheritDoc} - */ - @Override - public String value1() { - return getTriggerCatalog(); - } - - /** - * {@inheritDoc} - */ - @Override - public String value2() { - return getTriggerSchema(); - } - - /** - * {@inheritDoc} - */ - @Override - public String value3() { - return getTriggerName(); - } - - /** - * {@inheritDoc} - */ - @Override - public String value4() { - return getTriggerType(); - } - - /** - * {@inheritDoc} - */ - @Override - public String value5() { - return getTableCatalog(); - } - - /** - * {@inheritDoc} - */ - @Override - public String value6() { - return getTableSchema(); - } - - /** - * {@inheritDoc} - */ - @Override - public String value7() { - return getTableName(); - } - - /** - * {@inheritDoc} - */ - @Override - public Boolean value8() { - return getBefore(); - } - - /** - * {@inheritDoc} - */ - @Override - public String value9() { - return getJavaClass(); - } - - /** - * {@inheritDoc} - */ - @Override - public Integer value10() { - return getQueueSize(); - } - - /** - * {@inheritDoc} - */ - @Override - public Boolean value11() { - return getNoWait(); - } - - /** - * {@inheritDoc} - */ - @Override - public String value12() { - return getRemarks(); - } - - /** - * {@inheritDoc} - */ - @Override - public String value13() { - return getSql(); - } - - /** - * {@inheritDoc} - */ - @Override - public Integer value14() { - return getId(); - } - - /** - * {@inheritDoc} - */ - @Override - public TriggersRecord value1(String value) { - setTriggerCatalog(value); - return this; - } - - /** - * {@inheritDoc} - */ - @Override - public TriggersRecord value2(String value) { - setTriggerSchema(value); - return this; - } - - /** - * {@inheritDoc} - */ - @Override - public TriggersRecord value3(String value) { - setTriggerName(value); - return this; - } - - /** - * {@inheritDoc} - */ - @Override - public TriggersRecord value4(String value) { - setTriggerType(value); - return this; - } - - /** - * {@inheritDoc} - */ - @Override - public TriggersRecord value5(String value) { - setTableCatalog(value); - return this; - } - - /** - * {@inheritDoc} - */ - @Override - public TriggersRecord value6(String value) { - setTableSchema(value); - return this; - } - - /** - * {@inheritDoc} - */ - @Override - public TriggersRecord value7(String value) { - setTableName(value); - return this; - } - - /** - * {@inheritDoc} - */ - @Override - public TriggersRecord value8(Boolean value) { - setBefore(value); - return this; - } - - /** - * {@inheritDoc} - */ - @Override - public TriggersRecord value9(String value) { - setJavaClass(value); - return this; - } - - /** - * {@inheritDoc} - */ - @Override - public TriggersRecord value10(Integer value) { - setQueueSize(value); - return this; - } - - /** - * {@inheritDoc} - */ - @Override - public TriggersRecord value11(Boolean value) { - setNoWait(value); - return this; - } - - /** - * {@inheritDoc} - */ - @Override - public TriggersRecord value12(String value) { - setRemarks(value); - return this; - } - - /** - * {@inheritDoc} - */ - @Override - public TriggersRecord value13(String value) { - setSql(value); - return this; - } - - /** - * {@inheritDoc} - */ - @Override - public TriggersRecord value14(Integer value) { - setId(value); - return this; - } - - /** - * {@inheritDoc} - */ - @Override - public TriggersRecord values(String value1, String value2, String value3, String value4, String value5, String value6, String value7, Boolean value8, String value9, Integer value10, Boolean value11, String value12, String value13, Integer value14) { - value1(value1); - value2(value2); - value3(value3); - value4(value4); - value5(value5); - value6(value6); - value7(value7); - value8(value8); - value9(value9); - value10(value10); - value11(value11); - value12(value12); - value13(value13); - value14(value14); - return this; - } - - // ------------------------------------------------------------------------- - // Constructors - // ------------------------------------------------------------------------- - - /** - * Create a detached TriggersRecord - */ - public TriggersRecord() { - super(Triggers.TRIGGERS); - } - - /** - * Create a detached, initialised TriggersRecord - */ - public TriggersRecord(String triggerCatalog, String triggerSchema, String triggerName, String triggerType, String tableCatalog, String tableSchema, String tableName, Boolean before, String javaClass, Integer queueSize, Boolean noWait, String remarks, String sql, Integer id) { - super(Triggers.TRIGGERS); - - setValue(0, triggerCatalog); - setValue(1, triggerSchema); - setValue(2, triggerName); - setValue(3, triggerType); - setValue(4, tableCatalog); - setValue(5, tableSchema); - setValue(6, tableName); - setValue(7, before); - setValue(8, javaClass); - setValue(9, queueSize); - setValue(10, noWait); - setValue(11, remarks); - setValue(12, sql); - setValue(13, id); - } -} diff --git a/jooq-spring/src/main/java/com/baeldung/jooq/introduction/db/information_schema/tables/records/TypeInfoRecord.java b/jooq-spring/src/main/java/com/baeldung/jooq/introduction/db/information_schema/tables/records/TypeInfoRecord.java deleted file mode 100644 index af3eaee83f..0000000000 --- a/jooq-spring/src/main/java/com/baeldung/jooq/introduction/db/information_schema/tables/records/TypeInfoRecord.java +++ /dev/null @@ -1,652 +0,0 @@ -/** - * This class is generated by jOOQ - */ -package com.baeldung.jooq.introduction.db.information_schema.tables.records; - - -import com.baeldung.jooq.introduction.db.information_schema.tables.TypeInfo; - -import javax.annotation.Generated; - -import org.jooq.Field; -import org.jooq.Record14; -import org.jooq.Row14; -import org.jooq.impl.TableRecordImpl; - - -/** - * This class is generated by jOOQ. - */ -@Generated( - value = { - "http://www.jooq.org", - "jOOQ version:3.7.3" - }, - comments = "This class is generated by jOOQ" -) -@SuppressWarnings({ "all", "unchecked", "rawtypes" }) -public class TypeInfoRecord extends TableRecordImpl implements Record14 { - - private static final long serialVersionUID = -1463889309; - - /** - * Setter for INFORMATION_SCHEMA.TYPE_INFO.TYPE_NAME. - */ - public void setTypeName(String value) { - setValue(0, value); - } - - /** - * Getter for INFORMATION_SCHEMA.TYPE_INFO.TYPE_NAME. - */ - public String getTypeName() { - return (String) getValue(0); - } - - /** - * Setter for INFORMATION_SCHEMA.TYPE_INFO.DATA_TYPE. - */ - public void setDataType(Integer value) { - setValue(1, value); - } - - /** - * Getter for INFORMATION_SCHEMA.TYPE_INFO.DATA_TYPE. - */ - public Integer getDataType() { - return (Integer) getValue(1); - } - - /** - * Setter for INFORMATION_SCHEMA.TYPE_INFO.PRECISION. - */ - public void setPrecision(Integer value) { - setValue(2, value); - } - - /** - * Getter for INFORMATION_SCHEMA.TYPE_INFO.PRECISION. - */ - public Integer getPrecision() { - return (Integer) getValue(2); - } - - /** - * Setter for INFORMATION_SCHEMA.TYPE_INFO.PREFIX. - */ - public void setPrefix(String value) { - setValue(3, value); - } - - /** - * Getter for INFORMATION_SCHEMA.TYPE_INFO.PREFIX. - */ - public String getPrefix() { - return (String) getValue(3); - } - - /** - * Setter for INFORMATION_SCHEMA.TYPE_INFO.SUFFIX. - */ - public void setSuffix(String value) { - setValue(4, value); - } - - /** - * Getter for INFORMATION_SCHEMA.TYPE_INFO.SUFFIX. - */ - public String getSuffix() { - return (String) getValue(4); - } - - /** - * Setter for INFORMATION_SCHEMA.TYPE_INFO.PARAMS. - */ - public void setParams(String value) { - setValue(5, value); - } - - /** - * Getter for INFORMATION_SCHEMA.TYPE_INFO.PARAMS. - */ - public String getParams() { - return (String) getValue(5); - } - - /** - * Setter for INFORMATION_SCHEMA.TYPE_INFO.AUTO_INCREMENT. - */ - public void setAutoIncrement(Boolean value) { - setValue(6, value); - } - - /** - * Getter for INFORMATION_SCHEMA.TYPE_INFO.AUTO_INCREMENT. - */ - public Boolean getAutoIncrement() { - return (Boolean) getValue(6); - } - - /** - * Setter for INFORMATION_SCHEMA.TYPE_INFO.MINIMUM_SCALE. - */ - public void setMinimumScale(Short value) { - setValue(7, value); - } - - /** - * Getter for INFORMATION_SCHEMA.TYPE_INFO.MINIMUM_SCALE. - */ - public Short getMinimumScale() { - return (Short) getValue(7); - } - - /** - * Setter for INFORMATION_SCHEMA.TYPE_INFO.MAXIMUM_SCALE. - */ - public void setMaximumScale(Short value) { - setValue(8, value); - } - - /** - * Getter for INFORMATION_SCHEMA.TYPE_INFO.MAXIMUM_SCALE. - */ - public Short getMaximumScale() { - return (Short) getValue(8); - } - - /** - * Setter for INFORMATION_SCHEMA.TYPE_INFO.RADIX. - */ - public void setRadix(Integer value) { - setValue(9, value); - } - - /** - * Getter for INFORMATION_SCHEMA.TYPE_INFO.RADIX. - */ - public Integer getRadix() { - return (Integer) getValue(9); - } - - /** - * Setter for INFORMATION_SCHEMA.TYPE_INFO.POS. - */ - public void setPos(Integer value) { - setValue(10, value); - } - - /** - * Getter for INFORMATION_SCHEMA.TYPE_INFO.POS. - */ - public Integer getPos() { - return (Integer) getValue(10); - } - - /** - * Setter for INFORMATION_SCHEMA.TYPE_INFO.CASE_SENSITIVE. - */ - public void setCaseSensitive(Boolean value) { - setValue(11, value); - } - - /** - * Getter for INFORMATION_SCHEMA.TYPE_INFO.CASE_SENSITIVE. - */ - public Boolean getCaseSensitive() { - return (Boolean) getValue(11); - } - - /** - * Setter for INFORMATION_SCHEMA.TYPE_INFO.NULLABLE. - */ - public void setNullable(Short value) { - setValue(12, value); - } - - /** - * Getter for INFORMATION_SCHEMA.TYPE_INFO.NULLABLE. - */ - public Short getNullable() { - return (Short) getValue(12); - } - - /** - * Setter for INFORMATION_SCHEMA.TYPE_INFO.SEARCHABLE. - */ - public void setSearchable(Short value) { - setValue(13, value); - } - - /** - * Getter for INFORMATION_SCHEMA.TYPE_INFO.SEARCHABLE. - */ - public Short getSearchable() { - return (Short) getValue(13); - } - - // ------------------------------------------------------------------------- - // Record14 type implementation - // ------------------------------------------------------------------------- - - /** - * {@inheritDoc} - */ - @Override - public Row14 fieldsRow() { - return (Row14) super.fieldsRow(); - } - - /** - * {@inheritDoc} - */ - @Override - public Row14 valuesRow() { - return (Row14) super.valuesRow(); - } - - /** - * {@inheritDoc} - */ - @Override - public Field field1() { - return TypeInfo.TYPE_INFO.TYPE_NAME; - } - - /** - * {@inheritDoc} - */ - @Override - public Field field2() { - return TypeInfo.TYPE_INFO.DATA_TYPE; - } - - /** - * {@inheritDoc} - */ - @Override - public Field field3() { - return TypeInfo.TYPE_INFO.PRECISION; - } - - /** - * {@inheritDoc} - */ - @Override - public Field field4() { - return TypeInfo.TYPE_INFO.PREFIX; - } - - /** - * {@inheritDoc} - */ - @Override - public Field field5() { - return TypeInfo.TYPE_INFO.SUFFIX; - } - - /** - * {@inheritDoc} - */ - @Override - public Field field6() { - return TypeInfo.TYPE_INFO.PARAMS; - } - - /** - * {@inheritDoc} - */ - @Override - public Field field7() { - return TypeInfo.TYPE_INFO.AUTO_INCREMENT; - } - - /** - * {@inheritDoc} - */ - @Override - public Field field8() { - return TypeInfo.TYPE_INFO.MINIMUM_SCALE; - } - - /** - * {@inheritDoc} - */ - @Override - public Field field9() { - return TypeInfo.TYPE_INFO.MAXIMUM_SCALE; - } - - /** - * {@inheritDoc} - */ - @Override - public Field field10() { - return TypeInfo.TYPE_INFO.RADIX; - } - - /** - * {@inheritDoc} - */ - @Override - public Field field11() { - return TypeInfo.TYPE_INFO.POS; - } - - /** - * {@inheritDoc} - */ - @Override - public Field field12() { - return TypeInfo.TYPE_INFO.CASE_SENSITIVE; - } - - /** - * {@inheritDoc} - */ - @Override - public Field field13() { - return TypeInfo.TYPE_INFO.NULLABLE; - } - - /** - * {@inheritDoc} - */ - @Override - public Field field14() { - return TypeInfo.TYPE_INFO.SEARCHABLE; - } - - /** - * {@inheritDoc} - */ - @Override - public String value1() { - return getTypeName(); - } - - /** - * {@inheritDoc} - */ - @Override - public Integer value2() { - return getDataType(); - } - - /** - * {@inheritDoc} - */ - @Override - public Integer value3() { - return getPrecision(); - } - - /** - * {@inheritDoc} - */ - @Override - public String value4() { - return getPrefix(); - } - - /** - * {@inheritDoc} - */ - @Override - public String value5() { - return getSuffix(); - } - - /** - * {@inheritDoc} - */ - @Override - public String value6() { - return getParams(); - } - - /** - * {@inheritDoc} - */ - @Override - public Boolean value7() { - return getAutoIncrement(); - } - - /** - * {@inheritDoc} - */ - @Override - public Short value8() { - return getMinimumScale(); - } - - /** - * {@inheritDoc} - */ - @Override - public Short value9() { - return getMaximumScale(); - } - - /** - * {@inheritDoc} - */ - @Override - public Integer value10() { - return getRadix(); - } - - /** - * {@inheritDoc} - */ - @Override - public Integer value11() { - return getPos(); - } - - /** - * {@inheritDoc} - */ - @Override - public Boolean value12() { - return getCaseSensitive(); - } - - /** - * {@inheritDoc} - */ - @Override - public Short value13() { - return getNullable(); - } - - /** - * {@inheritDoc} - */ - @Override - public Short value14() { - return getSearchable(); - } - - /** - * {@inheritDoc} - */ - @Override - public TypeInfoRecord value1(String value) { - setTypeName(value); - return this; - } - - /** - * {@inheritDoc} - */ - @Override - public TypeInfoRecord value2(Integer value) { - setDataType(value); - return this; - } - - /** - * {@inheritDoc} - */ - @Override - public TypeInfoRecord value3(Integer value) { - setPrecision(value); - return this; - } - - /** - * {@inheritDoc} - */ - @Override - public TypeInfoRecord value4(String value) { - setPrefix(value); - return this; - } - - /** - * {@inheritDoc} - */ - @Override - public TypeInfoRecord value5(String value) { - setSuffix(value); - return this; - } - - /** - * {@inheritDoc} - */ - @Override - public TypeInfoRecord value6(String value) { - setParams(value); - return this; - } - - /** - * {@inheritDoc} - */ - @Override - public TypeInfoRecord value7(Boolean value) { - setAutoIncrement(value); - return this; - } - - /** - * {@inheritDoc} - */ - @Override - public TypeInfoRecord value8(Short value) { - setMinimumScale(value); - return this; - } - - /** - * {@inheritDoc} - */ - @Override - public TypeInfoRecord value9(Short value) { - setMaximumScale(value); - return this; - } - - /** - * {@inheritDoc} - */ - @Override - public TypeInfoRecord value10(Integer value) { - setRadix(value); - return this; - } - - /** - * {@inheritDoc} - */ - @Override - public TypeInfoRecord value11(Integer value) { - setPos(value); - return this; - } - - /** - * {@inheritDoc} - */ - @Override - public TypeInfoRecord value12(Boolean value) { - setCaseSensitive(value); - return this; - } - - /** - * {@inheritDoc} - */ - @Override - public TypeInfoRecord value13(Short value) { - setNullable(value); - return this; - } - - /** - * {@inheritDoc} - */ - @Override - public TypeInfoRecord value14(Short value) { - setSearchable(value); - return this; - } - - /** - * {@inheritDoc} - */ - @Override - public TypeInfoRecord values(String value1, Integer value2, Integer value3, String value4, String value5, String value6, Boolean value7, Short value8, Short value9, Integer value10, Integer value11, Boolean value12, Short value13, Short value14) { - value1(value1); - value2(value2); - value3(value3); - value4(value4); - value5(value5); - value6(value6); - value7(value7); - value8(value8); - value9(value9); - value10(value10); - value11(value11); - value12(value12); - value13(value13); - value14(value14); - return this; - } - - // ------------------------------------------------------------------------- - // Constructors - // ------------------------------------------------------------------------- - - /** - * Create a detached TypeInfoRecord - */ - public TypeInfoRecord() { - super(TypeInfo.TYPE_INFO); - } - - /** - * Create a detached, initialised TypeInfoRecord - */ - public TypeInfoRecord(String typeName, Integer dataType, Integer precision, String prefix, String suffix, String params, Boolean autoIncrement, Short minimumScale, Short maximumScale, Integer radix, Integer pos, Boolean caseSensitive, Short nullable, Short searchable) { - super(TypeInfo.TYPE_INFO); - - setValue(0, typeName); - setValue(1, dataType); - setValue(2, precision); - setValue(3, prefix); - setValue(4, suffix); - setValue(5, params); - setValue(6, autoIncrement); - setValue(7, minimumScale); - setValue(8, maximumScale); - setValue(9, radix); - setValue(10, pos); - setValue(11, caseSensitive); - setValue(12, nullable); - setValue(13, searchable); - } -} diff --git a/jooq-spring/src/main/java/com/baeldung/jooq/introduction/db/information_schema/tables/records/UsersRecord.java b/jooq-spring/src/main/java/com/baeldung/jooq/introduction/db/information_schema/tables/records/UsersRecord.java deleted file mode 100644 index 934b0484c8..0000000000 --- a/jooq-spring/src/main/java/com/baeldung/jooq/introduction/db/information_schema/tables/records/UsersRecord.java +++ /dev/null @@ -1,242 +0,0 @@ -/** - * This class is generated by jOOQ - */ -package com.baeldung.jooq.introduction.db.information_schema.tables.records; - - -import com.baeldung.jooq.introduction.db.information_schema.tables.Users; - -import javax.annotation.Generated; - -import org.jooq.Field; -import org.jooq.Record4; -import org.jooq.Row4; -import org.jooq.impl.TableRecordImpl; - - -/** - * This class is generated by jOOQ. - */ -@Generated( - value = { - "http://www.jooq.org", - "jOOQ version:3.7.3" - }, - comments = "This class is generated by jOOQ" -) -@SuppressWarnings({ "all", "unchecked", "rawtypes" }) -public class UsersRecord extends TableRecordImpl implements Record4 { - - private static final long serialVersionUID = -592508392; - - /** - * Setter for INFORMATION_SCHEMA.USERS.NAME. - */ - public void setName(String value) { - setValue(0, value); - } - - /** - * Getter for INFORMATION_SCHEMA.USERS.NAME. - */ - public String getName() { - return (String) getValue(0); - } - - /** - * Setter for INFORMATION_SCHEMA.USERS.ADMIN. - */ - public void setAdmin(String value) { - setValue(1, value); - } - - /** - * Getter for INFORMATION_SCHEMA.USERS.ADMIN. - */ - public String getAdmin() { - return (String) getValue(1); - } - - /** - * Setter for INFORMATION_SCHEMA.USERS.REMARKS. - */ - public void setRemarks(String value) { - setValue(2, value); - } - - /** - * Getter for INFORMATION_SCHEMA.USERS.REMARKS. - */ - public String getRemarks() { - return (String) getValue(2); - } - - /** - * Setter for INFORMATION_SCHEMA.USERS.ID. - */ - public void setId(Integer value) { - setValue(3, value); - } - - /** - * Getter for INFORMATION_SCHEMA.USERS.ID. - */ - public Integer getId() { - return (Integer) getValue(3); - } - - // ------------------------------------------------------------------------- - // Record4 type implementation - // ------------------------------------------------------------------------- - - /** - * {@inheritDoc} - */ - @Override - public Row4 fieldsRow() { - return (Row4) super.fieldsRow(); - } - - /** - * {@inheritDoc} - */ - @Override - public Row4 valuesRow() { - return (Row4) super.valuesRow(); - } - - /** - * {@inheritDoc} - */ - @Override - public Field field1() { - return Users.USERS.NAME; - } - - /** - * {@inheritDoc} - */ - @Override - public Field field2() { - return Users.USERS.ADMIN; - } - - /** - * {@inheritDoc} - */ - @Override - public Field field3() { - return Users.USERS.REMARKS; - } - - /** - * {@inheritDoc} - */ - @Override - public Field field4() { - return Users.USERS.ID; - } - - /** - * {@inheritDoc} - */ - @Override - public String value1() { - return getName(); - } - - /** - * {@inheritDoc} - */ - @Override - public String value2() { - return getAdmin(); - } - - /** - * {@inheritDoc} - */ - @Override - public String value3() { - return getRemarks(); - } - - /** - * {@inheritDoc} - */ - @Override - public Integer value4() { - return getId(); - } - - /** - * {@inheritDoc} - */ - @Override - public UsersRecord value1(String value) { - setName(value); - return this; - } - - /** - * {@inheritDoc} - */ - @Override - public UsersRecord value2(String value) { - setAdmin(value); - return this; - } - - /** - * {@inheritDoc} - */ - @Override - public UsersRecord value3(String value) { - setRemarks(value); - return this; - } - - /** - * {@inheritDoc} - */ - @Override - public UsersRecord value4(Integer value) { - setId(value); - return this; - } - - /** - * {@inheritDoc} - */ - @Override - public UsersRecord values(String value1, String value2, String value3, Integer value4) { - value1(value1); - value2(value2); - value3(value3); - value4(value4); - return this; - } - - // ------------------------------------------------------------------------- - // Constructors - // ------------------------------------------------------------------------- - - /** - * Create a detached UsersRecord - */ - public UsersRecord() { - super(Users.USERS); - } - - /** - * Create a detached, initialised UsersRecord - */ - public UsersRecord(String name, String admin, String remarks, Integer id) { - super(Users.USERS); - - setValue(0, name); - setValue(1, admin); - setValue(2, remarks); - setValue(3, id); - } -} diff --git a/jooq-spring/src/main/java/com/baeldung/jooq/introduction/db/information_schema/tables/records/ViewsRecord.java b/jooq-spring/src/main/java/com/baeldung/jooq/introduction/db/information_schema/tables/records/ViewsRecord.java deleted file mode 100644 index 4b2d66bd73..0000000000 --- a/jooq-spring/src/main/java/com/baeldung/jooq/introduction/db/information_schema/tables/records/ViewsRecord.java +++ /dev/null @@ -1,447 +0,0 @@ -/** - * This class is generated by jOOQ - */ -package com.baeldung.jooq.introduction.db.information_schema.tables.records; - - -import com.baeldung.jooq.introduction.db.information_schema.tables.Views; - -import javax.annotation.Generated; - -import org.jooq.Field; -import org.jooq.Record9; -import org.jooq.Row9; -import org.jooq.impl.TableRecordImpl; - - -/** - * This class is generated by jOOQ. - */ -@Generated( - value = { - "http://www.jooq.org", - "jOOQ version:3.7.3" - }, - comments = "This class is generated by jOOQ" -) -@SuppressWarnings({ "all", "unchecked", "rawtypes" }) -public class ViewsRecord extends TableRecordImpl implements Record9 { - - private static final long serialVersionUID = -1380031738; - - /** - * Setter for INFORMATION_SCHEMA.VIEWS.TABLE_CATALOG. - */ - public void setTableCatalog(String value) { - setValue(0, value); - } - - /** - * Getter for INFORMATION_SCHEMA.VIEWS.TABLE_CATALOG. - */ - public String getTableCatalog() { - return (String) getValue(0); - } - - /** - * Setter for INFORMATION_SCHEMA.VIEWS.TABLE_SCHEMA. - */ - public void setTableSchema(String value) { - setValue(1, value); - } - - /** - * Getter for INFORMATION_SCHEMA.VIEWS.TABLE_SCHEMA. - */ - public String getTableSchema() { - return (String) getValue(1); - } - - /** - * Setter for INFORMATION_SCHEMA.VIEWS.TABLE_NAME. - */ - public void setTableName(String value) { - setValue(2, value); - } - - /** - * Getter for INFORMATION_SCHEMA.VIEWS.TABLE_NAME. - */ - public String getTableName() { - return (String) getValue(2); - } - - /** - * Setter for INFORMATION_SCHEMA.VIEWS.VIEW_DEFINITION. - */ - public void setViewDefinition(String value) { - setValue(3, value); - } - - /** - * Getter for INFORMATION_SCHEMA.VIEWS.VIEW_DEFINITION. - */ - public String getViewDefinition() { - return (String) getValue(3); - } - - /** - * Setter for INFORMATION_SCHEMA.VIEWS.CHECK_OPTION. - */ - public void setCheckOption(String value) { - setValue(4, value); - } - - /** - * Getter for INFORMATION_SCHEMA.VIEWS.CHECK_OPTION. - */ - public String getCheckOption() { - return (String) getValue(4); - } - - /** - * Setter for INFORMATION_SCHEMA.VIEWS.IS_UPDATABLE. - */ - public void setIsUpdatable(String value) { - setValue(5, value); - } - - /** - * Getter for INFORMATION_SCHEMA.VIEWS.IS_UPDATABLE. - */ - public String getIsUpdatable() { - return (String) getValue(5); - } - - /** - * Setter for INFORMATION_SCHEMA.VIEWS.STATUS. - */ - public void setStatus(String value) { - setValue(6, value); - } - - /** - * Getter for INFORMATION_SCHEMA.VIEWS.STATUS. - */ - public String getStatus() { - return (String) getValue(6); - } - - /** - * Setter for INFORMATION_SCHEMA.VIEWS.REMARKS. - */ - public void setRemarks(String value) { - setValue(7, value); - } - - /** - * Getter for INFORMATION_SCHEMA.VIEWS.REMARKS. - */ - public String getRemarks() { - return (String) getValue(7); - } - - /** - * Setter for INFORMATION_SCHEMA.VIEWS.ID. - */ - public void setId(Integer value) { - setValue(8, value); - } - - /** - * Getter for INFORMATION_SCHEMA.VIEWS.ID. - */ - public Integer getId() { - return (Integer) getValue(8); - } - - // ------------------------------------------------------------------------- - // Record9 type implementation - // ------------------------------------------------------------------------- - - /** - * {@inheritDoc} - */ - @Override - public Row9 fieldsRow() { - return (Row9) super.fieldsRow(); - } - - /** - * {@inheritDoc} - */ - @Override - public Row9 valuesRow() { - return (Row9) super.valuesRow(); - } - - /** - * {@inheritDoc} - */ - @Override - public Field field1() { - return Views.VIEWS.TABLE_CATALOG; - } - - /** - * {@inheritDoc} - */ - @Override - public Field field2() { - return Views.VIEWS.TABLE_SCHEMA; - } - - /** - * {@inheritDoc} - */ - @Override - public Field field3() { - return Views.VIEWS.TABLE_NAME; - } - - /** - * {@inheritDoc} - */ - @Override - public Field field4() { - return Views.VIEWS.VIEW_DEFINITION; - } - - /** - * {@inheritDoc} - */ - @Override - public Field field5() { - return Views.VIEWS.CHECK_OPTION; - } - - /** - * {@inheritDoc} - */ - @Override - public Field field6() { - return Views.VIEWS.IS_UPDATABLE; - } - - /** - * {@inheritDoc} - */ - @Override - public Field field7() { - return Views.VIEWS.STATUS; - } - - /** - * {@inheritDoc} - */ - @Override - public Field field8() { - return Views.VIEWS.REMARKS; - } - - /** - * {@inheritDoc} - */ - @Override - public Field field9() { - return Views.VIEWS.ID; - } - - /** - * {@inheritDoc} - */ - @Override - public String value1() { - return getTableCatalog(); - } - - /** - * {@inheritDoc} - */ - @Override - public String value2() { - return getTableSchema(); - } - - /** - * {@inheritDoc} - */ - @Override - public String value3() { - return getTableName(); - } - - /** - * {@inheritDoc} - */ - @Override - public String value4() { - return getViewDefinition(); - } - - /** - * {@inheritDoc} - */ - @Override - public String value5() { - return getCheckOption(); - } - - /** - * {@inheritDoc} - */ - @Override - public String value6() { - return getIsUpdatable(); - } - - /** - * {@inheritDoc} - */ - @Override - public String value7() { - return getStatus(); - } - - /** - * {@inheritDoc} - */ - @Override - public String value8() { - return getRemarks(); - } - - /** - * {@inheritDoc} - */ - @Override - public Integer value9() { - return getId(); - } - - /** - * {@inheritDoc} - */ - @Override - public ViewsRecord value1(String value) { - setTableCatalog(value); - return this; - } - - /** - * {@inheritDoc} - */ - @Override - public ViewsRecord value2(String value) { - setTableSchema(value); - return this; - } - - /** - * {@inheritDoc} - */ - @Override - public ViewsRecord value3(String value) { - setTableName(value); - return this; - } - - /** - * {@inheritDoc} - */ - @Override - public ViewsRecord value4(String value) { - setViewDefinition(value); - return this; - } - - /** - * {@inheritDoc} - */ - @Override - public ViewsRecord value5(String value) { - setCheckOption(value); - return this; - } - - /** - * {@inheritDoc} - */ - @Override - public ViewsRecord value6(String value) { - setIsUpdatable(value); - return this; - } - - /** - * {@inheritDoc} - */ - @Override - public ViewsRecord value7(String value) { - setStatus(value); - return this; - } - - /** - * {@inheritDoc} - */ - @Override - public ViewsRecord value8(String value) { - setRemarks(value); - return this; - } - - /** - * {@inheritDoc} - */ - @Override - public ViewsRecord value9(Integer value) { - setId(value); - return this; - } - - /** - * {@inheritDoc} - */ - @Override - public ViewsRecord values(String value1, String value2, String value3, String value4, String value5, String value6, String value7, String value8, Integer value9) { - value1(value1); - value2(value2); - value3(value3); - value4(value4); - value5(value5); - value6(value6); - value7(value7); - value8(value8); - value9(value9); - return this; - } - - // ------------------------------------------------------------------------- - // Constructors - // ------------------------------------------------------------------------- - - /** - * Create a detached ViewsRecord - */ - public ViewsRecord() { - super(Views.VIEWS); - } - - /** - * Create a detached, initialised ViewsRecord - */ - public ViewsRecord(String tableCatalog, String tableSchema, String tableName, String viewDefinition, String checkOption, String isUpdatable, String status, String remarks, Integer id) { - super(Views.VIEWS); - - setValue(0, tableCatalog); - setValue(1, tableSchema); - setValue(2, tableName); - setValue(3, viewDefinition); - setValue(4, checkOption); - setValue(5, isUpdatable); - setValue(6, status); - setValue(7, remarks); - setValue(8, id); - } -} diff --git a/jooq-spring/src/main/java/com/baeldung/jooq/introduction/db/public_/Keys.java b/jooq-spring/src/main/java/com/baeldung/jooq/introduction/db/public_/Keys.java deleted file mode 100644 index 66656c9bbc..0000000000 --- a/jooq-spring/src/main/java/com/baeldung/jooq/introduction/db/public_/Keys.java +++ /dev/null @@ -1,69 +0,0 @@ -/** - * This class is generated by jOOQ - */ -package com.baeldung.jooq.introduction.db.public_; - - -import com.baeldung.jooq.introduction.db.public_.tables.Author; -import com.baeldung.jooq.introduction.db.public_.tables.AuthorBook; -import com.baeldung.jooq.introduction.db.public_.tables.Book; -import com.baeldung.jooq.introduction.db.public_.tables.records.AuthorBookRecord; -import com.baeldung.jooq.introduction.db.public_.tables.records.AuthorRecord; -import com.baeldung.jooq.introduction.db.public_.tables.records.BookRecord; - -import javax.annotation.Generated; - -import org.jooq.ForeignKey; -import org.jooq.UniqueKey; -import org.jooq.impl.AbstractKeys; - - -/** - * A class modelling foreign key relationships between tables of the PUBLIC - * schema - */ -@Generated( - value = { - "http://www.jooq.org", - "jOOQ version:3.7.3" - }, - comments = "This class is generated by jOOQ" -) -@SuppressWarnings({ "all", "unchecked", "rawtypes" }) -public class Keys { - - // ------------------------------------------------------------------------- - // IDENTITY definitions - // ------------------------------------------------------------------------- - - - // ------------------------------------------------------------------------- - // UNIQUE and PRIMARY KEY definitions - // ------------------------------------------------------------------------- - - public static final UniqueKey CONSTRAINT_7 = UniqueKeys0.CONSTRAINT_7; - public static final UniqueKey CONSTRAINT_1 = UniqueKeys0.CONSTRAINT_1; - public static final UniqueKey CONSTRAINT_A = UniqueKeys0.CONSTRAINT_A; - - // ------------------------------------------------------------------------- - // FOREIGN KEY definitions - // ------------------------------------------------------------------------- - - public static final ForeignKey FK_AB_AUTHOR = ForeignKeys0.FK_AB_AUTHOR; - public static final ForeignKey FK_AB_BOOK = ForeignKeys0.FK_AB_BOOK; - - // ------------------------------------------------------------------------- - // [#1459] distribute members to avoid static initialisers > 64kb - // ------------------------------------------------------------------------- - - private static class UniqueKeys0 extends AbstractKeys { - public static final UniqueKey CONSTRAINT_7 = createUniqueKey(Author.AUTHOR, Author.AUTHOR.ID); - public static final UniqueKey CONSTRAINT_1 = createUniqueKey(Book.BOOK, Book.BOOK.ID); - public static final UniqueKey CONSTRAINT_A = createUniqueKey(AuthorBook.AUTHOR_BOOK, AuthorBook.AUTHOR_BOOK.AUTHOR_ID, AuthorBook.AUTHOR_BOOK.BOOK_ID); - } - - private static class ForeignKeys0 extends AbstractKeys { - public static final ForeignKey FK_AB_AUTHOR = createForeignKey(com.baeldung.jooq.introduction.db.public_.Keys.CONSTRAINT_7, AuthorBook.AUTHOR_BOOK, AuthorBook.AUTHOR_BOOK.AUTHOR_ID); - public static final ForeignKey FK_AB_BOOK = createForeignKey(com.baeldung.jooq.introduction.db.public_.Keys.CONSTRAINT_1, AuthorBook.AUTHOR_BOOK, AuthorBook.AUTHOR_BOOK.BOOK_ID); - } -} diff --git a/jooq-spring/src/main/java/com/baeldung/jooq/introduction/db/public_/Public.java b/jooq-spring/src/main/java/com/baeldung/jooq/introduction/db/public_/Public.java deleted file mode 100644 index a681123c94..0000000000 --- a/jooq-spring/src/main/java/com/baeldung/jooq/introduction/db/public_/Public.java +++ /dev/null @@ -1,61 +0,0 @@ -/** - * This class is generated by jOOQ - */ -package com.baeldung.jooq.introduction.db.public_; - - -import com.baeldung.jooq.introduction.db.public_.tables.Author; -import com.baeldung.jooq.introduction.db.public_.tables.AuthorBook; -import com.baeldung.jooq.introduction.db.public_.tables.Book; - -import java.util.ArrayList; -import java.util.Arrays; -import java.util.List; - -import javax.annotation.Generated; - -import org.jooq.Table; -import org.jooq.impl.SchemaImpl; - - -/** - * This class is generated by jOOQ. - */ -@Generated( - value = { - "http://www.jooq.org", - "jOOQ version:3.7.3" - }, - comments = "This class is generated by jOOQ" -) -@SuppressWarnings({ "all", "unchecked", "rawtypes" }) -public class Public extends SchemaImpl { - - private static final long serialVersionUID = 1806497150; - - /** - * The reference instance of PUBLIC - */ - public static final Public PUBLIC = new Public(); - - /** - * No further instances allowed - */ - private Public() { - super("PUBLIC"); - } - - @Override - public final List> getTables() { - List result = new ArrayList(); - result.addAll(getTables0()); - return result; - } - - private final List> getTables0() { - return Arrays.>asList( - Author.AUTHOR, - Book.BOOK, - AuthorBook.AUTHOR_BOOK); - } -} diff --git a/jooq-spring/src/main/java/com/baeldung/jooq/introduction/db/public_/Tables.java b/jooq-spring/src/main/java/com/baeldung/jooq/introduction/db/public_/Tables.java deleted file mode 100644 index cbdc08b78f..0000000000 --- a/jooq-spring/src/main/java/com/baeldung/jooq/introduction/db/public_/Tables.java +++ /dev/null @@ -1,41 +0,0 @@ -/** - * This class is generated by jOOQ - */ -package com.baeldung.jooq.introduction.db.public_; - - -import com.baeldung.jooq.introduction.db.public_.tables.Author; -import com.baeldung.jooq.introduction.db.public_.tables.AuthorBook; -import com.baeldung.jooq.introduction.db.public_.tables.Book; - -import javax.annotation.Generated; - - -/** - * Convenience access to all tables in PUBLIC - */ -@Generated( - value = { - "http://www.jooq.org", - "jOOQ version:3.7.3" - }, - comments = "This class is generated by jOOQ" -) -@SuppressWarnings({ "all", "unchecked", "rawtypes" }) -public class Tables { - - /** - * The table PUBLIC.AUTHOR - */ - public static final Author AUTHOR = com.baeldung.jooq.introduction.db.public_.tables.Author.AUTHOR; - - /** - * The table PUBLIC.BOOK - */ - public static final Book BOOK = com.baeldung.jooq.introduction.db.public_.tables.Book.BOOK; - - /** - * The table PUBLIC.AUTHOR_BOOK - */ - public static final AuthorBook AUTHOR_BOOK = com.baeldung.jooq.introduction.db.public_.tables.AuthorBook.AUTHOR_BOOK; -} diff --git a/jooq-spring/src/main/java/com/baeldung/jooq/introduction/db/public_/tables/Author.java b/jooq-spring/src/main/java/com/baeldung/jooq/introduction/db/public_/tables/Author.java deleted file mode 100644 index 43d0b4f778..0000000000 --- a/jooq-spring/src/main/java/com/baeldung/jooq/introduction/db/public_/tables/Author.java +++ /dev/null @@ -1,118 +0,0 @@ -/** - * This class is generated by jOOQ - */ -package com.baeldung.jooq.introduction.db.public_.tables; - - -import com.baeldung.jooq.introduction.db.public_.Keys; -import com.baeldung.jooq.introduction.db.public_.Public; -import com.baeldung.jooq.introduction.db.public_.tables.records.AuthorRecord; - -import java.util.Arrays; -import java.util.List; - -import javax.annotation.Generated; - -import org.jooq.Field; -import org.jooq.Table; -import org.jooq.TableField; -import org.jooq.UniqueKey; -import org.jooq.impl.TableImpl; - - -/** - * This class is generated by jOOQ. - */ -@Generated( - value = { - "http://www.jooq.org", - "jOOQ version:3.7.3" - }, - comments = "This class is generated by jOOQ" -) -@SuppressWarnings({ "all", "unchecked", "rawtypes" }) -public class Author extends TableImpl { - - private static final long serialVersionUID = 1121046490; - - /** - * The reference instance of PUBLIC.AUTHOR - */ - public static final Author AUTHOR = new Author(); - - /** - * The class holding records for this type - */ - @Override - public Class getRecordType() { - return AuthorRecord.class; - } - - /** - * The column PUBLIC.AUTHOR.ID. - */ - public final TableField ID = createField("ID", org.jooq.impl.SQLDataType.INTEGER.nullable(false), this, ""); - - /** - * The column PUBLIC.AUTHOR.FIRST_NAME. - */ - public final TableField FIRST_NAME = createField("FIRST_NAME", org.jooq.impl.SQLDataType.VARCHAR.length(50), this, ""); - - /** - * The column PUBLIC.AUTHOR.LAST_NAME. - */ - public final TableField LAST_NAME = createField("LAST_NAME", org.jooq.impl.SQLDataType.VARCHAR.length(50).nullable(false), this, ""); - - /** - * Create a PUBLIC.AUTHOR table reference - */ - public Author() { - this("AUTHOR", null); - } - - /** - * Create an aliased PUBLIC.AUTHOR table reference - */ - public Author(String alias) { - this(alias, AUTHOR); - } - - private Author(String alias, Table aliased) { - this(alias, aliased, null); - } - - private Author(String alias, Table aliased, Field[] parameters) { - super(alias, Public.PUBLIC, aliased, parameters, ""); - } - - /** - * {@inheritDoc} - */ - @Override - public UniqueKey getPrimaryKey() { - return Keys.CONSTRAINT_7; - } - - /** - * {@inheritDoc} - */ - @Override - public List> getKeys() { - return Arrays.>asList(Keys.CONSTRAINT_7); - } - - /** - * {@inheritDoc} - */ - @Override - public Author as(String alias) { - return new Author(alias, this); - } - - /** - * Rename this table - */ - public Author rename(String name) { - return new Author(name, null); - } -} diff --git a/jooq-spring/src/main/java/com/baeldung/jooq/introduction/db/public_/tables/AuthorBook.java b/jooq-spring/src/main/java/com/baeldung/jooq/introduction/db/public_/tables/AuthorBook.java deleted file mode 100644 index 38a0fe2593..0000000000 --- a/jooq-spring/src/main/java/com/baeldung/jooq/introduction/db/public_/tables/AuthorBook.java +++ /dev/null @@ -1,122 +0,0 @@ -/** - * This class is generated by jOOQ - */ -package com.baeldung.jooq.introduction.db.public_.tables; - - -import com.baeldung.jooq.introduction.db.public_.Keys; -import com.baeldung.jooq.introduction.db.public_.Public; -import com.baeldung.jooq.introduction.db.public_.tables.records.AuthorBookRecord; - -import java.util.Arrays; -import java.util.List; - -import javax.annotation.Generated; - -import org.jooq.Field; -import org.jooq.ForeignKey; -import org.jooq.Table; -import org.jooq.TableField; -import org.jooq.UniqueKey; -import org.jooq.impl.TableImpl; - - -/** - * This class is generated by jOOQ. - */ -@Generated( - value = { - "http://www.jooq.org", - "jOOQ version:3.7.3" - }, - comments = "This class is generated by jOOQ" -) -@SuppressWarnings({ "all", "unchecked", "rawtypes" }) -public class AuthorBook extends TableImpl { - - private static final long serialVersionUID = -1609247069; - - /** - * The reference instance of PUBLIC.AUTHOR_BOOK - */ - public static final AuthorBook AUTHOR_BOOK = new AuthorBook(); - - /** - * The class holding records for this type - */ - @Override - public Class getRecordType() { - return AuthorBookRecord.class; - } - - /** - * The column PUBLIC.AUTHOR_BOOK.AUTHOR_ID. - */ - public final TableField AUTHOR_ID = createField("AUTHOR_ID", org.jooq.impl.SQLDataType.INTEGER.nullable(false), this, ""); - - /** - * The column PUBLIC.AUTHOR_BOOK.BOOK_ID. - */ - public final TableField BOOK_ID = createField("BOOK_ID", org.jooq.impl.SQLDataType.INTEGER.nullable(false), this, ""); - - /** - * Create a PUBLIC.AUTHOR_BOOK table reference - */ - public AuthorBook() { - this("AUTHOR_BOOK", null); - } - - /** - * Create an aliased PUBLIC.AUTHOR_BOOK table reference - */ - public AuthorBook(String alias) { - this(alias, AUTHOR_BOOK); - } - - private AuthorBook(String alias, Table aliased) { - this(alias, aliased, null); - } - - private AuthorBook(String alias, Table aliased, Field[] parameters) { - super(alias, Public.PUBLIC, aliased, parameters, ""); - } - - /** - * {@inheritDoc} - */ - @Override - public UniqueKey getPrimaryKey() { - return Keys.CONSTRAINT_A; - } - - /** - * {@inheritDoc} - */ - @Override - public List> getKeys() { - return Arrays.>asList(Keys.CONSTRAINT_A); - } - - /** - * {@inheritDoc} - */ - @Override - public List> getReferences() { - return Arrays.>asList(Keys.FK_AB_AUTHOR, Keys.FK_AB_BOOK); - } - - /** - * {@inheritDoc} - */ - @Override - public AuthorBook as(String alias) { - return new AuthorBook(alias, this); - } - - /** - * Rename this table - */ - public AuthorBook rename(String name) { - return new AuthorBook(name, null); - } -} diff --git a/jooq-spring/src/main/java/com/baeldung/jooq/introduction/db/public_/tables/Book.java b/jooq-spring/src/main/java/com/baeldung/jooq/introduction/db/public_/tables/Book.java deleted file mode 100644 index 33b38e1eb5..0000000000 --- a/jooq-spring/src/main/java/com/baeldung/jooq/introduction/db/public_/tables/Book.java +++ /dev/null @@ -1,113 +0,0 @@ -/** - * This class is generated by jOOQ - */ -package com.baeldung.jooq.introduction.db.public_.tables; - - -import com.baeldung.jooq.introduction.db.public_.Keys; -import com.baeldung.jooq.introduction.db.public_.Public; -import com.baeldung.jooq.introduction.db.public_.tables.records.BookRecord; - -import java.util.Arrays; -import java.util.List; - -import javax.annotation.Generated; - -import org.jooq.Field; -import org.jooq.Table; -import org.jooq.TableField; -import org.jooq.UniqueKey; -import org.jooq.impl.TableImpl; - - -/** - * This class is generated by jOOQ. - */ -@Generated( - value = { - "http://www.jooq.org", - "jOOQ version:3.7.3" - }, - comments = "This class is generated by jOOQ" -) -@SuppressWarnings({ "all", "unchecked", "rawtypes" }) -public class Book extends TableImpl { - - private static final long serialVersionUID = -1685336167; - - /** - * The reference instance of PUBLIC.BOOK - */ - public static final Book BOOK = new Book(); - - /** - * The class holding records for this type - */ - @Override - public Class getRecordType() { - return BookRecord.class; - } - - /** - * The column PUBLIC.BOOK.ID. - */ - public final TableField ID = createField("ID", org.jooq.impl.SQLDataType.INTEGER.nullable(false), this, ""); - - /** - * The column PUBLIC.BOOK.TITLE. - */ - public final TableField TITLE = createField("TITLE", org.jooq.impl.SQLDataType.VARCHAR.length(100).nullable(false), this, ""); - - /** - * Create a PUBLIC.BOOK table reference - */ - public Book() { - this("BOOK", null); - } - - /** - * Create an aliased PUBLIC.BOOK table reference - */ - public Book(String alias) { - this(alias, BOOK); - } - - private Book(String alias, Table aliased) { - this(alias, aliased, null); - } - - private Book(String alias, Table aliased, Field[] parameters) { - super(alias, Public.PUBLIC, aliased, parameters, ""); - } - - /** - * {@inheritDoc} - */ - @Override - public UniqueKey getPrimaryKey() { - return Keys.CONSTRAINT_1; - } - - /** - * {@inheritDoc} - */ - @Override - public List> getKeys() { - return Arrays.>asList(Keys.CONSTRAINT_1); - } - - /** - * {@inheritDoc} - */ - @Override - public Book as(String alias) { - return new Book(alias, this); - } - - /** - * Rename this table - */ - public Book rename(String name) { - return new Book(name, null); - } -} diff --git a/jooq-spring/src/main/java/com/baeldung/jooq/introduction/db/public_/tables/records/AuthorBookRecord.java b/jooq-spring/src/main/java/com/baeldung/jooq/introduction/db/public_/tables/records/AuthorBookRecord.java deleted file mode 100644 index 2e9a07ba4f..0000000000 --- a/jooq-spring/src/main/java/com/baeldung/jooq/introduction/db/public_/tables/records/AuthorBookRecord.java +++ /dev/null @@ -1,172 +0,0 @@ -/** - * This class is generated by jOOQ - */ -package com.baeldung.jooq.introduction.db.public_.tables.records; - - -import com.baeldung.jooq.introduction.db.public_.tables.AuthorBook; - -import javax.annotation.Generated; - -import org.jooq.Field; -import org.jooq.Record2; -import org.jooq.Row2; -import org.jooq.impl.UpdatableRecordImpl; - - -/** - * This class is generated by jOOQ. - */ -@Generated( - value = { - "http://www.jooq.org", - "jOOQ version:3.7.3" - }, - comments = "This class is generated by jOOQ" -) -@SuppressWarnings({ "all", "unchecked", "rawtypes" }) -public class AuthorBookRecord extends UpdatableRecordImpl implements Record2 { - - private static final long serialVersionUID = -1057354033; - - /** - * Setter for PUBLIC.AUTHOR_BOOK.AUTHOR_ID. - */ - public void setAuthorId(Integer value) { - setValue(0, value); - } - - /** - * Getter for PUBLIC.AUTHOR_BOOK.AUTHOR_ID. - */ - public Integer getAuthorId() { - return (Integer) getValue(0); - } - - /** - * Setter for PUBLIC.AUTHOR_BOOK.BOOK_ID. - */ - public void setBookId(Integer value) { - setValue(1, value); - } - - /** - * Getter for PUBLIC.AUTHOR_BOOK.BOOK_ID. - */ - public Integer getBookId() { - return (Integer) getValue(1); - } - - // ------------------------------------------------------------------------- - // Primary key information - // ------------------------------------------------------------------------- - - /** - * {@inheritDoc} - */ - @Override - public Record2 key() { - return (Record2) super.key(); - } - - // ------------------------------------------------------------------------- - // Record2 type implementation - // ------------------------------------------------------------------------- - - /** - * {@inheritDoc} - */ - @Override - public Row2 fieldsRow() { - return (Row2) super.fieldsRow(); - } - - /** - * {@inheritDoc} - */ - @Override - public Row2 valuesRow() { - return (Row2) super.valuesRow(); - } - - /** - * {@inheritDoc} - */ - @Override - public Field field1() { - return AuthorBook.AUTHOR_BOOK.AUTHOR_ID; - } - - /** - * {@inheritDoc} - */ - @Override - public Field field2() { - return AuthorBook.AUTHOR_BOOK.BOOK_ID; - } - - /** - * {@inheritDoc} - */ - @Override - public Integer value1() { - return getAuthorId(); - } - - /** - * {@inheritDoc} - */ - @Override - public Integer value2() { - return getBookId(); - } - - /** - * {@inheritDoc} - */ - @Override - public AuthorBookRecord value1(Integer value) { - setAuthorId(value); - return this; - } - - /** - * {@inheritDoc} - */ - @Override - public AuthorBookRecord value2(Integer value) { - setBookId(value); - return this; - } - - /** - * {@inheritDoc} - */ - @Override - public AuthorBookRecord values(Integer value1, Integer value2) { - value1(value1); - value2(value2); - return this; - } - - // ------------------------------------------------------------------------- - // Constructors - // ------------------------------------------------------------------------- - - /** - * Create a detached AuthorBookRecord - */ - public AuthorBookRecord() { - super(AuthorBook.AUTHOR_BOOK); - } - - /** - * Create a detached, initialised AuthorBookRecord - */ - public AuthorBookRecord(Integer authorId, Integer bookId) { - super(AuthorBook.AUTHOR_BOOK); - - setValue(0, authorId); - setValue(1, bookId); - } -} diff --git a/jooq-spring/src/main/java/com/baeldung/jooq/introduction/db/public_/tables/records/AuthorRecord.java b/jooq-spring/src/main/java/com/baeldung/jooq/introduction/db/public_/tables/records/AuthorRecord.java deleted file mode 100644 index 5d6d88b0c3..0000000000 --- a/jooq-spring/src/main/java/com/baeldung/jooq/introduction/db/public_/tables/records/AuthorRecord.java +++ /dev/null @@ -1,214 +0,0 @@ -/** - * This class is generated by jOOQ - */ -package com.baeldung.jooq.introduction.db.public_.tables.records; - - -import com.baeldung.jooq.introduction.db.public_.tables.Author; - -import javax.annotation.Generated; - -import org.jooq.Field; -import org.jooq.Record1; -import org.jooq.Record3; -import org.jooq.Row3; -import org.jooq.impl.UpdatableRecordImpl; - - -/** - * This class is generated by jOOQ. - */ -@Generated( - value = { - "http://www.jooq.org", - "jOOQ version:3.7.3" - }, - comments = "This class is generated by jOOQ" -) -@SuppressWarnings({ "all", "unchecked", "rawtypes" }) -public class AuthorRecord extends UpdatableRecordImpl implements Record3 { - - private static final long serialVersionUID = 253757039; - - /** - * Setter for PUBLIC.AUTHOR.ID. - */ - public void setId(Integer value) { - setValue(0, value); - } - - /** - * Getter for PUBLIC.AUTHOR.ID. - */ - public Integer getId() { - return (Integer) getValue(0); - } - - /** - * Setter for PUBLIC.AUTHOR.FIRST_NAME. - */ - public void setFirstName(String value) { - setValue(1, value); - } - - /** - * Getter for PUBLIC.AUTHOR.FIRST_NAME. - */ - public String getFirstName() { - return (String) getValue(1); - } - - /** - * Setter for PUBLIC.AUTHOR.LAST_NAME. - */ - public void setLastName(String value) { - setValue(2, value); - } - - /** - * Getter for PUBLIC.AUTHOR.LAST_NAME. - */ - public String getLastName() { - return (String) getValue(2); - } - - // ------------------------------------------------------------------------- - // Primary key information - // ------------------------------------------------------------------------- - - /** - * {@inheritDoc} - */ - @Override - public Record1 key() { - return (Record1) super.key(); - } - - // ------------------------------------------------------------------------- - // Record3 type implementation - // ------------------------------------------------------------------------- - - /** - * {@inheritDoc} - */ - @Override - public Row3 fieldsRow() { - return (Row3) super.fieldsRow(); - } - - /** - * {@inheritDoc} - */ - @Override - public Row3 valuesRow() { - return (Row3) super.valuesRow(); - } - - /** - * {@inheritDoc} - */ - @Override - public Field field1() { - return Author.AUTHOR.ID; - } - - /** - * {@inheritDoc} - */ - @Override - public Field field2() { - return Author.AUTHOR.FIRST_NAME; - } - - /** - * {@inheritDoc} - */ - @Override - public Field field3() { - return Author.AUTHOR.LAST_NAME; - } - - /** - * {@inheritDoc} - */ - @Override - public Integer value1() { - return getId(); - } - - /** - * {@inheritDoc} - */ - @Override - public String value2() { - return getFirstName(); - } - - /** - * {@inheritDoc} - */ - @Override - public String value3() { - return getLastName(); - } - - /** - * {@inheritDoc} - */ - @Override - public AuthorRecord value1(Integer value) { - setId(value); - return this; - } - - /** - * {@inheritDoc} - */ - @Override - public AuthorRecord value2(String value) { - setFirstName(value); - return this; - } - - /** - * {@inheritDoc} - */ - @Override - public AuthorRecord value3(String value) { - setLastName(value); - return this; - } - - /** - * {@inheritDoc} - */ - @Override - public AuthorRecord values(Integer value1, String value2, String value3) { - value1(value1); - value2(value2); - value3(value3); - return this; - } - - // ------------------------------------------------------------------------- - // Constructors - // ------------------------------------------------------------------------- - - /** - * Create a detached AuthorRecord - */ - public AuthorRecord() { - super(Author.AUTHOR); - } - - /** - * Create a detached, initialised AuthorRecord - */ - public AuthorRecord(Integer id, String firstName, String lastName) { - super(Author.AUTHOR); - - setValue(0, id); - setValue(1, firstName); - setValue(2, lastName); - } -} diff --git a/jooq-spring/src/main/java/com/baeldung/jooq/introduction/db/public_/tables/records/BookRecord.java b/jooq-spring/src/main/java/com/baeldung/jooq/introduction/db/public_/tables/records/BookRecord.java deleted file mode 100644 index 1725dccff0..0000000000 --- a/jooq-spring/src/main/java/com/baeldung/jooq/introduction/db/public_/tables/records/BookRecord.java +++ /dev/null @@ -1,173 +0,0 @@ -/** - * This class is generated by jOOQ - */ -package com.baeldung.jooq.introduction.db.public_.tables.records; - - -import com.baeldung.jooq.introduction.db.public_.tables.Book; - -import javax.annotation.Generated; - -import org.jooq.Field; -import org.jooq.Record1; -import org.jooq.Record2; -import org.jooq.Row2; -import org.jooq.impl.UpdatableRecordImpl; - - -/** - * This class is generated by jOOQ. - */ -@Generated( - value = { - "http://www.jooq.org", - "jOOQ version:3.7.3" - }, - comments = "This class is generated by jOOQ" -) -@SuppressWarnings({ "all", "unchecked", "rawtypes" }) -public class BookRecord extends UpdatableRecordImpl implements Record2 { - - private static final long serialVersionUID = -434165872; - - /** - * Setter for PUBLIC.BOOK.ID. - */ - public void setId(Integer value) { - setValue(0, value); - } - - /** - * Getter for PUBLIC.BOOK.ID. - */ - public Integer getId() { - return (Integer) getValue(0); - } - - /** - * Setter for PUBLIC.BOOK.TITLE. - */ - public void setTitle(String value) { - setValue(1, value); - } - - /** - * Getter for PUBLIC.BOOK.TITLE. - */ - public String getTitle() { - return (String) getValue(1); - } - - // ------------------------------------------------------------------------- - // Primary key information - // ------------------------------------------------------------------------- - - /** - * {@inheritDoc} - */ - @Override - public Record1 key() { - return (Record1) super.key(); - } - - // ------------------------------------------------------------------------- - // Record2 type implementation - // ------------------------------------------------------------------------- - - /** - * {@inheritDoc} - */ - @Override - public Row2 fieldsRow() { - return (Row2) super.fieldsRow(); - } - - /** - * {@inheritDoc} - */ - @Override - public Row2 valuesRow() { - return (Row2) super.valuesRow(); - } - - /** - * {@inheritDoc} - */ - @Override - public Field field1() { - return Book.BOOK.ID; - } - - /** - * {@inheritDoc} - */ - @Override - public Field field2() { - return Book.BOOK.TITLE; - } - - /** - * {@inheritDoc} - */ - @Override - public Integer value1() { - return getId(); - } - - /** - * {@inheritDoc} - */ - @Override - public String value2() { - return getTitle(); - } - - /** - * {@inheritDoc} - */ - @Override - public BookRecord value1(Integer value) { - setId(value); - return this; - } - - /** - * {@inheritDoc} - */ - @Override - public BookRecord value2(String value) { - setTitle(value); - return this; - } - - /** - * {@inheritDoc} - */ - @Override - public BookRecord values(Integer value1, String value2) { - value1(value1); - value2(value2); - return this; - } - - // ------------------------------------------------------------------------- - // Constructors - // ------------------------------------------------------------------------- - - /** - * Create a detached BookRecord - */ - public BookRecord() { - super(Book.BOOK); - } - - /** - * Create a detached, initialised BookRecord - */ - public BookRecord(Integer id, String title) { - super(Book.BOOK); - - setValue(0, id); - setValue(1, title); - } -} From 34abb0eab7e419cbe5babdee7667643f38e61c63 Mon Sep 17 00:00:00 2001 From: Grzegorz Piwowarek Date: Tue, 7 Jun 2016 18:05:50 +0200 Subject: [PATCH 020/108] Refactor jOOQ-Spring --- jooq-spring/.classpath | 31 ------ jooq-spring/.project | 29 ------ .../introduction/ExceptionTranslator.java | 2 +- .../jooq/introduction/PersistenceContext.java | 4 +- .../baeldung/jooq/introduction/QueryTest.java | 93 +++++++++++------ .../baeldung/jooq/springboot/Application.java | 11 +-- .../jooq/springboot/SpringBootTest.java | 99 +++++++++++++------ pom.xml | 1 + 8 files changed, 144 insertions(+), 126 deletions(-) delete mode 100644 jooq-spring/.classpath delete mode 100644 jooq-spring/.project diff --git a/jooq-spring/.classpath b/jooq-spring/.classpath deleted file mode 100644 index 9ae7bca0fc..0000000000 --- a/jooq-spring/.classpath +++ /dev/null @@ -1,31 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/jooq-spring/.project b/jooq-spring/.project deleted file mode 100644 index a291146b79..0000000000 --- a/jooq-spring/.project +++ /dev/null @@ -1,29 +0,0 @@ - - - jooq-spring - - - - - - org.eclipse.jdt.core.javabuilder - - - - - org.springframework.ide.eclipse.core.springbuilder - - - - - org.eclipse.m2e.core.maven2Builder - - - - - - org.springframework.ide.eclipse.core.springnature - org.eclipse.jdt.core.javanature - org.eclipse.m2e.core.maven2Nature - - diff --git a/jooq-spring/src/test/java/com/baeldung/jooq/introduction/ExceptionTranslator.java b/jooq-spring/src/test/java/com/baeldung/jooq/introduction/ExceptionTranslator.java index 7bee21f077..8312f20c05 100644 --- a/jooq-spring/src/test/java/com/baeldung/jooq/introduction/ExceptionTranslator.java +++ b/jooq-spring/src/test/java/com/baeldung/jooq/introduction/ExceptionTranslator.java @@ -8,12 +8,12 @@ import org.springframework.jdbc.support.SQLErrorCodeSQLExceptionTranslator; import org.springframework.jdbc.support.SQLExceptionTranslator; public class ExceptionTranslator extends DefaultExecuteListener { - private static final long serialVersionUID = 649359748808106775L; @Override public void exception(ExecuteContext context) { SQLDialect dialect = context.configuration().dialect(); SQLExceptionTranslator translator = new SQLErrorCodeSQLExceptionTranslator(dialect.name()); + context.exception(translator.translate("Access database using jOOQ", context.sql(), context.sqlException())); } } \ No newline at end of file diff --git a/jooq-spring/src/test/java/com/baeldung/jooq/introduction/PersistenceContext.java b/jooq-spring/src/test/java/com/baeldung/jooq/introduction/PersistenceContext.java index ee34c00679..df628f9f78 100644 --- a/jooq-spring/src/test/java/com/baeldung/jooq/introduction/PersistenceContext.java +++ b/jooq-spring/src/test/java/com/baeldung/jooq/introduction/PersistenceContext.java @@ -1,6 +1,5 @@ package com.baeldung.jooq.introduction; -import javax.sql.DataSource; import org.h2.jdbcx.JdbcDataSource; import org.jooq.SQLDialect; import org.jooq.impl.DataSourceConnectionProvider; @@ -17,11 +16,14 @@ import org.springframework.jdbc.datasource.DataSourceTransactionManager; import org.springframework.jdbc.datasource.TransactionAwareDataSourceProxy; import org.springframework.transaction.annotation.EnableTransactionManagement; +import javax.sql.DataSource; + @Configuration @ComponentScan({ "com.baeldung.jooq.introduction.db.public_.tables" }) @EnableTransactionManagement @PropertySource("classpath:intro_config.properties") public class PersistenceContext { + @Autowired private Environment environment; diff --git a/jooq-spring/src/test/java/com/baeldung/jooq/introduction/QueryTest.java b/jooq-spring/src/test/java/com/baeldung/jooq/introduction/QueryTest.java index bc12dff5a0..68f975dd6d 100644 --- a/jooq-spring/src/test/java/com/baeldung/jooq/introduction/QueryTest.java +++ b/jooq-spring/src/test/java/com/baeldung/jooq/introduction/QueryTest.java @@ -1,8 +1,5 @@ package com.baeldung.jooq.introduction; -import com.baeldung.jooq.introduction.db.public_.tables.Author; -import com.baeldung.jooq.introduction.db.public_.tables.AuthorBook; -import com.baeldung.jooq.introduction.db.public_.tables.Book; import org.jooq.DSLContext; import org.jooq.Record3; import org.jooq.Result; @@ -15,6 +12,9 @@ import org.springframework.test.context.ContextConfiguration; import org.springframework.test.context.junit4.SpringJUnit4ClassRunner; import org.springframework.transaction.annotation.Transactional; +import static com.baeldung.jooq.introduction.db.public_.tables.Author.AUTHOR; +import static com.baeldung.jooq.introduction.db.public_.tables.AuthorBook.AUTHOR_BOOK; +import static com.baeldung.jooq.introduction.db.public_.tables.Book.BOOK; import static org.junit.Assert.assertEquals; @ContextConfiguration(classes = PersistenceContext.class) @@ -25,61 +25,98 @@ public class QueryTest { @Autowired private DSLContext dsl; - Author author = Author.AUTHOR; - Book book = Book.BOOK; - AuthorBook authorBook = AuthorBook.AUTHOR_BOOK; - @Test public void givenValidData_whenInserting_thenSucceed() { - dsl.insertInto(author).set(author.ID, 4).set(author.FIRST_NAME, "Herbert").set(author.LAST_NAME, "Schildt").execute(); - dsl.insertInto(book).set(book.ID, 4).set(book.TITLE, "A Beginner's Guide").execute(); - dsl.insertInto(authorBook).set(authorBook.AUTHOR_ID, 4).set(authorBook.BOOK_ID, 4).execute(); - Result> result = dsl.select(author.ID, author.LAST_NAME, DSL.count()).from(author).join(authorBook).on(author.ID.equal(authorBook.AUTHOR_ID)).join(book).on(authorBook.BOOK_ID.equal(book.ID)) - .groupBy(author.LAST_NAME).fetch(); + dsl.insertInto(AUTHOR) + .set(AUTHOR.ID, 4) + .set(AUTHOR.FIRST_NAME, "Herbert") + .set(AUTHOR.LAST_NAME, "Schildt") + .execute(); + + dsl.insertInto(BOOK) + .set(BOOK.ID, 4) + .set(BOOK.TITLE, "A Beginner's Guide") + .execute(); + + dsl.insertInto(AUTHOR_BOOK) + .set(AUTHOR_BOOK.AUTHOR_ID, 4) + .set(AUTHOR_BOOK.BOOK_ID, 4) + .execute(); + + final Result> result = dsl.select(AUTHOR.ID, AUTHOR.LAST_NAME, DSL.count()) + .from(AUTHOR) + .join(AUTHOR_BOOK).on(AUTHOR.ID.equal(AUTHOR_BOOK.AUTHOR_ID)) + .join(BOOK).on(AUTHOR_BOOK.BOOK_ID.equal(BOOK.ID)) + .groupBy(AUTHOR.LAST_NAME).fetch(); assertEquals(3, result.size()); - assertEquals("Sierra", result.getValue(0, author.LAST_NAME)); + assertEquals("Sierra", result.getValue(0, AUTHOR.LAST_NAME)); assertEquals(Integer.valueOf(2), result.getValue(0, DSL.count())); - assertEquals("Schildt", result.getValue(2, author.LAST_NAME)); + assertEquals("Schildt", result.getValue(2, AUTHOR.LAST_NAME)); assertEquals(Integer.valueOf(1), result.getValue(2, DSL.count())); } @Test(expected = DataAccessException.class) public void givenInvalidData_whenInserting_thenFail() { - dsl.insertInto(authorBook).set(authorBook.AUTHOR_ID, 4).set(authorBook.BOOK_ID, 5).execute(); + dsl.insertInto(AUTHOR_BOOK).set(AUTHOR_BOOK.AUTHOR_ID, 4).set(AUTHOR_BOOK.BOOK_ID, 5).execute(); } @Test public void givenValidData_whenUpdating_thenSucceed() { - dsl.update(author).set(author.LAST_NAME, "Baeldung").where(author.ID.equal(3)).execute(); - dsl.update(book).set(book.TITLE, "Building your REST API with Spring").where(book.ID.equal(3)).execute(); - dsl.insertInto(authorBook).set(authorBook.AUTHOR_ID, 3).set(authorBook.BOOK_ID, 3).execute(); - Result> result = dsl.select(author.ID, author.LAST_NAME, book.TITLE).from(author).join(authorBook).on(author.ID.equal(authorBook.AUTHOR_ID)).join(book).on(authorBook.BOOK_ID.equal(book.ID)).where(author.ID.equal(3)) + dsl.update(AUTHOR) + .set(AUTHOR.LAST_NAME, "Baeldung") + .where(AUTHOR.ID.equal(3)) + .execute(); + + dsl.update(BOOK) + .set(BOOK.TITLE, "Building your REST API with Spring") + .where(BOOK.ID.equal(3)).execute(); + + dsl.insertInto(AUTHOR_BOOK) + .set(AUTHOR_BOOK.AUTHOR_ID, 3) + .set(AUTHOR_BOOK.BOOK_ID, 3) + .execute(); + + final Result> result = dsl.select(AUTHOR.ID, AUTHOR.LAST_NAME, BOOK.TITLE) + .from(AUTHOR) + .join(AUTHOR_BOOK).on(AUTHOR.ID.equal(AUTHOR_BOOK.AUTHOR_ID)) + .join(BOOK).on(AUTHOR_BOOK.BOOK_ID.equal(BOOK.ID)) + .where(AUTHOR.ID.equal(3)) .fetch(); assertEquals(1, result.size()); - assertEquals(Integer.valueOf(3), result.getValue(0, author.ID)); - assertEquals("Baeldung", result.getValue(0, author.LAST_NAME)); - assertEquals("Building your REST API with Spring", result.getValue(0, book.TITLE)); + assertEquals(Integer.valueOf(3), result.getValue(0, AUTHOR.ID)); + assertEquals("Baeldung", result.getValue(0, AUTHOR.LAST_NAME)); + assertEquals("Building your REST API with Spring", result.getValue(0, BOOK.TITLE)); } @Test(expected = DataAccessException.class) public void givenInvalidData_whenUpdating_thenFail() { - dsl.update(authorBook).set(authorBook.AUTHOR_ID, 4).set(authorBook.BOOK_ID, 5).execute(); + dsl.update(AUTHOR_BOOK) + .set(AUTHOR_BOOK.AUTHOR_ID, 4) + .set(AUTHOR_BOOK.BOOK_ID, 5) + .execute(); } @Test public void givenValidData_whenDeleting_thenSucceed() { - dsl.delete(author).where(author.ID.lt(3)).execute(); - Result> result = dsl.select(author.ID, author.FIRST_NAME, author.LAST_NAME).from(author).fetch(); + dsl.delete(AUTHOR) + .where(AUTHOR.ID.lt(3)) + .execute(); + + final Result> result = dsl.select(AUTHOR.ID, AUTHOR.FIRST_NAME, AUTHOR.LAST_NAME) + .from(AUTHOR) + .fetch(); assertEquals(1, result.size()); - assertEquals("Bryan", result.getValue(0, author.FIRST_NAME)); - assertEquals("Basham", result.getValue(0, author.LAST_NAME)); + assertEquals("Bryan", result.getValue(0, AUTHOR.FIRST_NAME)); + assertEquals("Basham", result.getValue(0, AUTHOR.LAST_NAME)); } @Test(expected = DataAccessException.class) public void givenInvalidData_whenDeleting_thenFail() { - dsl.delete(book).where(book.ID.equal(1)).execute(); + dsl.delete(BOOK) + .where(BOOK.ID.equal(1)) + .execute(); } } \ No newline at end of file diff --git a/jooq-spring/src/test/java/com/baeldung/jooq/springboot/Application.java b/jooq-spring/src/test/java/com/baeldung/jooq/springboot/Application.java index a52f0a0ef3..844a2989a5 100644 --- a/jooq-spring/src/test/java/com/baeldung/jooq/springboot/Application.java +++ b/jooq-spring/src/test/java/com/baeldung/jooq/springboot/Application.java @@ -1,12 +1,10 @@ package com.baeldung.jooq.springboot; -import javax.sql.DataSource; - +import com.baeldung.jooq.introduction.ExceptionTranslator; import org.jooq.impl.DataSourceConnectionProvider; import org.jooq.impl.DefaultConfiguration; import org.jooq.impl.DefaultDSLContext; import org.jooq.impl.DefaultExecuteListenerProvider; - import org.springframework.beans.factory.annotation.Autowired; import org.springframework.boot.autoconfigure.SpringBootApplication; import org.springframework.context.annotation.Bean; @@ -16,14 +14,14 @@ import org.springframework.jdbc.datasource.DriverManagerDataSource; import org.springframework.jdbc.datasource.TransactionAwareDataSourceProxy; import org.springframework.transaction.annotation.EnableTransactionManagement; -import com.baeldung.jooq.introduction.ExceptionTranslator; +import javax.sql.DataSource; @SpringBootApplication @EnableTransactionManagement public class Application { + @Autowired private Environment environment; - private DataSource dataSource; public DataSource dataSource() { DriverManagerDataSource dataSource = new DriverManagerDataSource(); @@ -41,7 +39,7 @@ public class Application { } public DataSourceTransactionManager transactionManager() { - return new DataSourceTransactionManager(dataSource); + return new DataSourceTransactionManager(dataSource()); } @Bean @@ -60,6 +58,7 @@ public class Application { public DefaultConfiguration configuration() { DefaultConfiguration jooqConfiguration = new DefaultConfiguration(); + jooqConfiguration.set(connectionProvider()); jooqConfiguration.set(new DefaultExecuteListenerProvider(exceptionTransformer())); diff --git a/jooq-spring/src/test/java/com/baeldung/jooq/springboot/SpringBootTest.java b/jooq-spring/src/test/java/com/baeldung/jooq/springboot/SpringBootTest.java index bf5cc250a8..f9427f30fb 100644 --- a/jooq-spring/src/test/java/com/baeldung/jooq/springboot/SpringBootTest.java +++ b/jooq-spring/src/test/java/com/baeldung/jooq/springboot/SpringBootTest.java @@ -1,7 +1,5 @@ package com.baeldung.jooq.springboot; -import static org.junit.Assert.*; - import org.jooq.DSLContext; import org.jooq.Record3; import org.jooq.Result; @@ -14,72 +12,113 @@ import org.springframework.dao.DataAccessException; import org.springframework.test.context.junit4.SpringJUnit4ClassRunner; import org.springframework.transaction.annotation.Transactional; -import com.baeldung.jooq.introduction.db.public_.tables.Author; -import com.baeldung.jooq.introduction.db.public_.tables.AuthorBook; -import com.baeldung.jooq.introduction.db.public_.tables.Book; +import static com.baeldung.jooq.introduction.db.public_.tables.Author.AUTHOR; +import static com.baeldung.jooq.introduction.db.public_.tables.AuthorBook.AUTHOR_BOOK; +import static com.baeldung.jooq.introduction.db.public_.tables.Book.BOOK; +import static org.junit.Assert.assertEquals; @SpringApplicationConfiguration(Application.class) @Transactional("transactionManager") @RunWith(SpringJUnit4ClassRunner.class) public class SpringBootTest { - @Autowired - private DSLContext dsl; - Author author = Author.AUTHOR; - Book book = Book.BOOK; - AuthorBook authorBook = AuthorBook.AUTHOR_BOOK; + @Autowired + private DSLContext dsl; @Test public void givenValidData_whenInserting_thenSucceed() { - dsl.insertInto(author).set(author.ID, 4).set(author.FIRST_NAME, "Herbert").set(author.LAST_NAME, "Schildt").execute(); - dsl.insertInto(book).set(book.ID, 4).set(book.TITLE, "A Beginner's Guide").execute(); - dsl.insertInto(authorBook).set(authorBook.AUTHOR_ID, 4).set(authorBook.BOOK_ID, 4).execute(); - Result> result = dsl.select(author.ID, author.LAST_NAME, DSL.count()).from(author).join(authorBook).on(author.ID.equal(authorBook.AUTHOR_ID)).join(book).on(authorBook.BOOK_ID.equal(book.ID)).groupBy(author.LAST_NAME) + dsl.insertInto(AUTHOR) + .set(AUTHOR.ID, 4) + .set(AUTHOR.FIRST_NAME, "Herbert") + .set(AUTHOR.LAST_NAME, "Schildt") + .execute(); + + dsl.insertInto(BOOK) + .set(BOOK.ID, 4) + .set(BOOK.TITLE, "A Beginner's Guide") + .execute(); + + dsl.insertInto(AUTHOR_BOOK) + .set(AUTHOR_BOOK.AUTHOR_ID, 4) + .set(AUTHOR_BOOK.BOOK_ID, 4) + .execute(); + + final Result> result = dsl.select(AUTHOR.ID, AUTHOR.LAST_NAME, DSL.count()) + .from(AUTHOR).join(AUTHOR_BOOK).on(AUTHOR.ID.equal(AUTHOR_BOOK.AUTHOR_ID)) + .join(BOOK).on(AUTHOR_BOOK.BOOK_ID.equal(BOOK.ID)) + .groupBy(AUTHOR.LAST_NAME) .fetch(); assertEquals(3, result.size()); - assertEquals("Sierra", result.getValue(0, author.LAST_NAME)); + assertEquals("Sierra", result.getValue(0, AUTHOR.LAST_NAME)); assertEquals(Integer.valueOf(2), result.getValue(0, DSL.count())); - assertEquals("Schildt", result.getValue(2, author.LAST_NAME)); + assertEquals("Schildt", result.getValue(2, AUTHOR.LAST_NAME)); assertEquals(Integer.valueOf(1), result.getValue(2, DSL.count())); } @Test(expected = DataAccessException.class) public void givenInvalidData_whenInserting_thenFail() { - dsl.insertInto(authorBook).set(authorBook.AUTHOR_ID, 4).set(authorBook.BOOK_ID, 5).execute(); + dsl.insertInto(AUTHOR_BOOK) + .set(AUTHOR_BOOK.AUTHOR_ID, 4) + .set(AUTHOR_BOOK.BOOK_ID, 5) + .execute(); } @Test public void givenValidData_whenUpdating_thenSucceed() { - dsl.update(author).set(author.LAST_NAME, "Baeldung").where(author.ID.equal(3)).execute(); - dsl.update(book).set(book.TITLE, "Building your REST API with Spring").where(book.ID.equal(3)).execute(); - dsl.insertInto(authorBook).set(authorBook.AUTHOR_ID, 3).set(authorBook.BOOK_ID, 3).execute(); - Result> result = dsl.select(author.ID, author.LAST_NAME, book.TITLE).from(author).join(authorBook).on(author.ID.equal(authorBook.AUTHOR_ID)).join(book).on(authorBook.BOOK_ID.equal(book.ID)).where(author.ID.equal(3)) + dsl.update(AUTHOR) + .set(AUTHOR.LAST_NAME, "Baeldung") + .where(AUTHOR.ID.equal(3)) + .execute(); + + dsl.update(BOOK) + .set(BOOK.TITLE, "Building your REST API with Spring") + .where(BOOK.ID.equal(3)) + .execute(); + + dsl.insertInto(AUTHOR_BOOK) + .set(AUTHOR_BOOK.AUTHOR_ID, 3) + .set(AUTHOR_BOOK.BOOK_ID, 3) + .execute(); + + final Result> result = dsl.select(AUTHOR.ID, AUTHOR.LAST_NAME, BOOK.TITLE) + .from(AUTHOR).join(AUTHOR_BOOK).on(AUTHOR.ID.equal(AUTHOR_BOOK.AUTHOR_ID)) + .join(BOOK).on(AUTHOR_BOOK.BOOK_ID.equal(BOOK.ID)) + .where(AUTHOR.ID.equal(3)) .fetch(); assertEquals(1, result.size()); - assertEquals(Integer.valueOf(3), result.getValue(0, author.ID)); - assertEquals("Baeldung", result.getValue(0, author.LAST_NAME)); - assertEquals("Building your REST API with Spring", result.getValue(0, book.TITLE)); + assertEquals(Integer.valueOf(3), result.getValue(0, AUTHOR.ID)); + assertEquals("Baeldung", result.getValue(0, AUTHOR.LAST_NAME)); + assertEquals("Building your REST API with Spring", result.getValue(0, BOOK.TITLE)); } @Test(expected = DataAccessException.class) public void givenInvalidData_whenUpdating_thenFail() { - dsl.update(authorBook).set(authorBook.AUTHOR_ID, 4).set(authorBook.BOOK_ID, 5).execute(); + dsl.update(AUTHOR_BOOK) + .set(AUTHOR_BOOK.AUTHOR_ID, 4) + .set(AUTHOR_BOOK.BOOK_ID, 5) + .execute(); } @Test public void givenValidData_whenDeleting_thenSucceed() { - dsl.delete(author).where(author.ID.lt(3)).execute(); - Result> result = dsl.select(author.ID, author.FIRST_NAME, author.LAST_NAME).from(author).fetch(); + dsl.delete(AUTHOR) + .where(AUTHOR.ID.lt(3)) + .execute(); + + final Result> result = dsl.select(AUTHOR.ID, AUTHOR.FIRST_NAME, AUTHOR.LAST_NAME) + .from(AUTHOR).fetch(); assertEquals(1, result.size()); - assertEquals("Bryan", result.getValue(0, author.FIRST_NAME)); - assertEquals("Basham", result.getValue(0, author.LAST_NAME)); + assertEquals("Bryan", result.getValue(0, AUTHOR.FIRST_NAME)); + assertEquals("Basham", result.getValue(0, AUTHOR.LAST_NAME)); } @Test(expected = DataAccessException.class) public void givenInvalidData_whenDeleting_thenFail() { - dsl.delete(book).where(book.ID.equal(1)).execute(); + dsl.delete(BOOK) + .where(BOOK.ID.equal(1)) + .execute(); } } \ No newline at end of file diff --git a/pom.xml b/pom.xml index d6a1d7c034..7a51347af6 100644 --- a/pom.xml +++ b/pom.xml @@ -20,6 +20,7 @@ httpclient jackson javaxval + jooq-spring json-path mockito From b7812b951e16aa2427a0a7db4c4c1cf8cb28e21b Mon Sep 17 00:00:00 2001 From: Grzegorz Piwowarek Date: Tue, 7 Jun 2016 18:09:51 +0200 Subject: [PATCH 021/108] Refactor .gitignore --- .gitignore | 3 --- jooq-spring/.gitignore | 1 + 2 files changed, 1 insertion(+), 3 deletions(-) create mode 100644 jooq-spring/.gitignore diff --git a/.gitignore b/.gitignore index 1a67437a83..48ac4000a2 100644 --- a/.gitignore +++ b/.gitignore @@ -25,6 +25,3 @@ log/ target/ spring-openid/src/main/resources/application.properties - -# Autogenerated jOOQ files -jooq-spring/src/main/java/com/baeldung/jooq/introduction/db diff --git a/jooq-spring/.gitignore b/jooq-spring/.gitignore new file mode 100644 index 0000000000..aba850c8e6 --- /dev/null +++ b/jooq-spring/.gitignore @@ -0,0 +1 @@ +/src/main/java/com/baeldung/jooq/introduction/db \ No newline at end of file From 27250c67b1144a5cf8f372d7c1c189d66674e1ba Mon Sep 17 00:00:00 2001 From: Grzegorz Piwowarek Date: Tue, 7 Jun 2016 18:20:50 +0200 Subject: [PATCH 022/108] Refactor wiremock/cucumber examples --- rest-testing/.classpath | 36 ------- ...e.wst.jsdt.core.javascriptValidator.launch | 7 -- rest-testing/.gitignore | 6 +- rest-testing/.project | 36 ------- rest-testing/.settings/.jsdtscope | 5 - .../.settings/org.eclipse.jdt.core.prefs | 95 ------------------- .../.settings/org.eclipse.jdt.ui.prefs | 55 ----------- .../.settings/org.eclipse.m2e.core.prefs | 4 - .../.settings/org.eclipse.m2e.wtp.prefs | 2 - .../org.eclipse.wst.common.component | 8 -- ....eclipse.wst.common.project.facet.core.xml | 4 - ...rg.eclipse.wst.jsdt.ui.superType.container | 1 - .../org.eclipse.wst.jsdt.ui.superType.name | 1 - .../org.eclipse.wst.validation.prefs | 14 --- .../org.eclipse.wst.ws.service.policy.prefs | 2 - rest-testing/.springBeans | 14 --- .../rest/cucumber/StepDefinition.java | 60 ++++++++---- .../wiremock/introduction/JUnitManaged.java | 87 ++++++++++------- .../introduction/ProgrammaticallyManaged.java | 36 +++---- rest-testing/src/test/resources/.gitignore | 13 --- 20 files changed, 115 insertions(+), 371 deletions(-) delete mode 100644 rest-testing/.classpath delete mode 100644 rest-testing/.externalToolBuilders/org.eclipse.wst.jsdt.core.javascriptValidator.launch delete mode 100644 rest-testing/.project delete mode 100644 rest-testing/.settings/.jsdtscope delete mode 100644 rest-testing/.settings/org.eclipse.jdt.core.prefs delete mode 100644 rest-testing/.settings/org.eclipse.jdt.ui.prefs delete mode 100644 rest-testing/.settings/org.eclipse.m2e.core.prefs delete mode 100644 rest-testing/.settings/org.eclipse.m2e.wtp.prefs delete mode 100644 rest-testing/.settings/org.eclipse.wst.common.component delete mode 100644 rest-testing/.settings/org.eclipse.wst.common.project.facet.core.xml delete mode 100644 rest-testing/.settings/org.eclipse.wst.jsdt.ui.superType.container delete mode 100644 rest-testing/.settings/org.eclipse.wst.jsdt.ui.superType.name delete mode 100644 rest-testing/.settings/org.eclipse.wst.validation.prefs delete mode 100644 rest-testing/.settings/org.eclipse.wst.ws.service.policy.prefs delete mode 100644 rest-testing/.springBeans delete mode 100644 rest-testing/src/test/resources/.gitignore diff --git a/rest-testing/.classpath b/rest-testing/.classpath deleted file mode 100644 index 8ebf6d9c31..0000000000 --- a/rest-testing/.classpath +++ /dev/null @@ -1,36 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/rest-testing/.externalToolBuilders/org.eclipse.wst.jsdt.core.javascriptValidator.launch b/rest-testing/.externalToolBuilders/org.eclipse.wst.jsdt.core.javascriptValidator.launch deleted file mode 100644 index 627021fb96..0000000000 --- a/rest-testing/.externalToolBuilders/org.eclipse.wst.jsdt.core.javascriptValidator.launch +++ /dev/null @@ -1,7 +0,0 @@ - - - - - - - diff --git a/rest-testing/.gitignore b/rest-testing/.gitignore index 83c05e60c8..601d2281e5 100644 --- a/rest-testing/.gitignore +++ b/rest-testing/.gitignore @@ -10,4 +10,8 @@ # Packaged files # *.jar *.war -*.ear \ No newline at end of file +*.ear + +.externalToolBuilders +.settings +.springBeans \ No newline at end of file diff --git a/rest-testing/.project b/rest-testing/.project deleted file mode 100644 index 1dc9ce93fe..0000000000 --- a/rest-testing/.project +++ /dev/null @@ -1,36 +0,0 @@ - - - rest-testing - - - - - - org.eclipse.jdt.core.javabuilder - - - - - org.eclipse.wst.common.project.facet.core.builder - - - - - org.eclipse.wst.validation.validationbuilder - - - - - org.eclipse.m2e.core.maven2Builder - - - - - - org.eclipse.jem.workbench.JavaEMFNature - org.eclipse.wst.common.modulecore.ModuleCoreNature - org.eclipse.jdt.core.javanature - org.eclipse.m2e.core.maven2Nature - org.eclipse.wst.common.project.facet.core.nature - - diff --git a/rest-testing/.settings/.jsdtscope b/rest-testing/.settings/.jsdtscope deleted file mode 100644 index 7b3f0c8b9f..0000000000 --- a/rest-testing/.settings/.jsdtscope +++ /dev/null @@ -1,5 +0,0 @@ - - - - - diff --git a/rest-testing/.settings/org.eclipse.jdt.core.prefs b/rest-testing/.settings/org.eclipse.jdt.core.prefs deleted file mode 100644 index b126d6476b..0000000000 --- a/rest-testing/.settings/org.eclipse.jdt.core.prefs +++ /dev/null @@ -1,95 +0,0 @@ -eclipse.preferences.version=1 -org.eclipse.jdt.core.compiler.annotation.missingNonNullByDefaultAnnotation=ignore -org.eclipse.jdt.core.compiler.annotation.nonnull=org.eclipse.jdt.annotation.NonNull -org.eclipse.jdt.core.compiler.annotation.nonnullbydefault=org.eclipse.jdt.annotation.NonNullByDefault -org.eclipse.jdt.core.compiler.annotation.nullable=org.eclipse.jdt.annotation.Nullable -org.eclipse.jdt.core.compiler.annotation.nullanalysis=disabled -org.eclipse.jdt.core.compiler.codegen.inlineJsrBytecode=enabled -org.eclipse.jdt.core.compiler.codegen.targetPlatform=1.8 -org.eclipse.jdt.core.compiler.codegen.unusedLocal=preserve -org.eclipse.jdt.core.compiler.compliance=1.8 -org.eclipse.jdt.core.compiler.debug.lineNumber=generate -org.eclipse.jdt.core.compiler.debug.localVariable=generate -org.eclipse.jdt.core.compiler.debug.sourceFile=generate -org.eclipse.jdt.core.compiler.problem.annotationSuperInterface=warning -org.eclipse.jdt.core.compiler.problem.assertIdentifier=error -org.eclipse.jdt.core.compiler.problem.autoboxing=ignore -org.eclipse.jdt.core.compiler.problem.comparingIdentical=warning -org.eclipse.jdt.core.compiler.problem.deadCode=warning -org.eclipse.jdt.core.compiler.problem.deprecation=warning -org.eclipse.jdt.core.compiler.problem.deprecationInDeprecatedCode=disabled -org.eclipse.jdt.core.compiler.problem.deprecationWhenOverridingDeprecatedMethod=disabled -org.eclipse.jdt.core.compiler.problem.discouragedReference=warning -org.eclipse.jdt.core.compiler.problem.emptyStatement=ignore -org.eclipse.jdt.core.compiler.problem.enumIdentifier=error -org.eclipse.jdt.core.compiler.problem.explicitlyClosedAutoCloseable=ignore -org.eclipse.jdt.core.compiler.problem.fallthroughCase=ignore -org.eclipse.jdt.core.compiler.problem.fatalOptionalError=disabled -org.eclipse.jdt.core.compiler.problem.fieldHiding=error -org.eclipse.jdt.core.compiler.problem.finalParameterBound=warning -org.eclipse.jdt.core.compiler.problem.finallyBlockNotCompletingNormally=warning -org.eclipse.jdt.core.compiler.problem.forbiddenReference=warning -org.eclipse.jdt.core.compiler.problem.hiddenCatchBlock=warning -org.eclipse.jdt.core.compiler.problem.includeNullInfoFromAsserts=disabled -org.eclipse.jdt.core.compiler.problem.incompatibleNonInheritedInterfaceMethod=warning -org.eclipse.jdt.core.compiler.problem.incompleteEnumSwitch=ignore -org.eclipse.jdt.core.compiler.problem.indirectStaticAccess=ignore -org.eclipse.jdt.core.compiler.problem.localVariableHiding=error -org.eclipse.jdt.core.compiler.problem.methodWithConstructorName=warning -org.eclipse.jdt.core.compiler.problem.missingDefaultCase=ignore -org.eclipse.jdt.core.compiler.problem.missingDeprecatedAnnotation=ignore -org.eclipse.jdt.core.compiler.problem.missingEnumCaseDespiteDefault=disabled -org.eclipse.jdt.core.compiler.problem.missingHashCodeMethod=ignore -org.eclipse.jdt.core.compiler.problem.missingOverrideAnnotation=ignore -org.eclipse.jdt.core.compiler.problem.missingOverrideAnnotationForInterfaceMethodImplementation=enabled -org.eclipse.jdt.core.compiler.problem.missingSerialVersion=warning -org.eclipse.jdt.core.compiler.problem.missingSynchronizedOnInheritedMethod=ignore -org.eclipse.jdt.core.compiler.problem.noEffectAssignment=warning -org.eclipse.jdt.core.compiler.problem.noImplicitStringConversion=warning -org.eclipse.jdt.core.compiler.problem.nonExternalizedStringLiteral=ignore -org.eclipse.jdt.core.compiler.problem.nullAnnotationInferenceConflict=error -org.eclipse.jdt.core.compiler.problem.nullReference=warning -org.eclipse.jdt.core.compiler.problem.nullSpecViolation=error -org.eclipse.jdt.core.compiler.problem.nullUncheckedConversion=warning -org.eclipse.jdt.core.compiler.problem.overridingPackageDefaultMethod=warning -org.eclipse.jdt.core.compiler.problem.parameterAssignment=ignore -org.eclipse.jdt.core.compiler.problem.possibleAccidentalBooleanAssignment=ignore -org.eclipse.jdt.core.compiler.problem.potentialNullReference=ignore -org.eclipse.jdt.core.compiler.problem.potentiallyUnclosedCloseable=ignore -org.eclipse.jdt.core.compiler.problem.rawTypeReference=warning -org.eclipse.jdt.core.compiler.problem.redundantNullAnnotation=warning -org.eclipse.jdt.core.compiler.problem.redundantNullCheck=ignore -org.eclipse.jdt.core.compiler.problem.redundantSpecificationOfTypeArguments=ignore -org.eclipse.jdt.core.compiler.problem.redundantSuperinterface=ignore -org.eclipse.jdt.core.compiler.problem.reportMethodCanBePotentiallyStatic=ignore -org.eclipse.jdt.core.compiler.problem.reportMethodCanBeStatic=ignore -org.eclipse.jdt.core.compiler.problem.specialParameterHidingField=disabled -org.eclipse.jdt.core.compiler.problem.staticAccessReceiver=warning -org.eclipse.jdt.core.compiler.problem.suppressOptionalErrors=disabled -org.eclipse.jdt.core.compiler.problem.suppressWarnings=enabled -org.eclipse.jdt.core.compiler.problem.syntheticAccessEmulation=ignore -org.eclipse.jdt.core.compiler.problem.typeParameterHiding=error -org.eclipse.jdt.core.compiler.problem.unavoidableGenericTypeProblems=enabled -org.eclipse.jdt.core.compiler.problem.uncheckedTypeOperation=warning -org.eclipse.jdt.core.compiler.problem.unclosedCloseable=warning -org.eclipse.jdt.core.compiler.problem.undocumentedEmptyBlock=ignore -org.eclipse.jdt.core.compiler.problem.unhandledWarningToken=warning -org.eclipse.jdt.core.compiler.problem.unnecessaryElse=ignore -org.eclipse.jdt.core.compiler.problem.unnecessaryTypeCheck=ignore -org.eclipse.jdt.core.compiler.problem.unqualifiedFieldAccess=ignore -org.eclipse.jdt.core.compiler.problem.unusedDeclaredThrownException=ignore -org.eclipse.jdt.core.compiler.problem.unusedDeclaredThrownExceptionExemptExceptionAndThrowable=enabled -org.eclipse.jdt.core.compiler.problem.unusedDeclaredThrownExceptionIncludeDocCommentReference=enabled -org.eclipse.jdt.core.compiler.problem.unusedDeclaredThrownExceptionWhenOverriding=disabled -org.eclipse.jdt.core.compiler.problem.unusedImport=warning -org.eclipse.jdt.core.compiler.problem.unusedLabel=warning -org.eclipse.jdt.core.compiler.problem.unusedLocal=warning -org.eclipse.jdt.core.compiler.problem.unusedObjectAllocation=ignore -org.eclipse.jdt.core.compiler.problem.unusedParameter=ignore -org.eclipse.jdt.core.compiler.problem.unusedParameterIncludeDocCommentReference=enabled -org.eclipse.jdt.core.compiler.problem.unusedParameterWhenImplementingAbstract=disabled -org.eclipse.jdt.core.compiler.problem.unusedParameterWhenOverridingConcrete=disabled -org.eclipse.jdt.core.compiler.problem.unusedPrivateMember=warning -org.eclipse.jdt.core.compiler.problem.unusedWarningToken=warning -org.eclipse.jdt.core.compiler.problem.varargsArgumentNeedCast=warning -org.eclipse.jdt.core.compiler.source=1.8 diff --git a/rest-testing/.settings/org.eclipse.jdt.ui.prefs b/rest-testing/.settings/org.eclipse.jdt.ui.prefs deleted file mode 100644 index 471e9b0d81..0000000000 --- a/rest-testing/.settings/org.eclipse.jdt.ui.prefs +++ /dev/null @@ -1,55 +0,0 @@ -#Sat Jan 21 23:04:06 EET 2012 -eclipse.preferences.version=1 -editor_save_participant_org.eclipse.jdt.ui.postsavelistener.cleanup=true -sp_cleanup.add_default_serial_version_id=true -sp_cleanup.add_generated_serial_version_id=false -sp_cleanup.add_missing_annotations=true -sp_cleanup.add_missing_deprecated_annotations=true -sp_cleanup.add_missing_methods=false -sp_cleanup.add_missing_nls_tags=false -sp_cleanup.add_missing_override_annotations=true -sp_cleanup.add_missing_override_annotations_interface_methods=true -sp_cleanup.add_serial_version_id=false -sp_cleanup.always_use_blocks=true -sp_cleanup.always_use_parentheses_in_expressions=true -sp_cleanup.always_use_this_for_non_static_field_access=false -sp_cleanup.always_use_this_for_non_static_method_access=false -sp_cleanup.convert_to_enhanced_for_loop=true -sp_cleanup.correct_indentation=true -sp_cleanup.format_source_code=true -sp_cleanup.format_source_code_changes_only=true -sp_cleanup.make_local_variable_final=true -sp_cleanup.make_parameters_final=true -sp_cleanup.make_private_fields_final=false -sp_cleanup.make_type_abstract_if_missing_method=false -sp_cleanup.make_variable_declarations_final=true -sp_cleanup.never_use_blocks=false -sp_cleanup.never_use_parentheses_in_expressions=false -sp_cleanup.on_save_use_additional_actions=true -sp_cleanup.organize_imports=true -sp_cleanup.qualify_static_field_accesses_with_declaring_class=false -sp_cleanup.qualify_static_member_accesses_through_instances_with_declaring_class=true -sp_cleanup.qualify_static_member_accesses_through_subtypes_with_declaring_class=true -sp_cleanup.qualify_static_member_accesses_with_declaring_class=true -sp_cleanup.qualify_static_method_accesses_with_declaring_class=false -sp_cleanup.remove_private_constructors=true -sp_cleanup.remove_trailing_whitespaces=true -sp_cleanup.remove_trailing_whitespaces_all=true -sp_cleanup.remove_trailing_whitespaces_ignore_empty=false -sp_cleanup.remove_unnecessary_casts=true -sp_cleanup.remove_unnecessary_nls_tags=false -sp_cleanup.remove_unused_imports=true -sp_cleanup.remove_unused_local_variables=false -sp_cleanup.remove_unused_private_fields=true -sp_cleanup.remove_unused_private_members=false -sp_cleanup.remove_unused_private_methods=true -sp_cleanup.remove_unused_private_types=true -sp_cleanup.sort_members=false -sp_cleanup.sort_members_all=false -sp_cleanup.use_blocks=false -sp_cleanup.use_blocks_only_for_return_and_throw=false -sp_cleanup.use_parentheses_in_expressions=false -sp_cleanup.use_this_for_non_static_field_access=true -sp_cleanup.use_this_for_non_static_field_access_only_if_necessary=true -sp_cleanup.use_this_for_non_static_method_access=true -sp_cleanup.use_this_for_non_static_method_access_only_if_necessary=true diff --git a/rest-testing/.settings/org.eclipse.m2e.core.prefs b/rest-testing/.settings/org.eclipse.m2e.core.prefs deleted file mode 100644 index f897a7f1cb..0000000000 --- a/rest-testing/.settings/org.eclipse.m2e.core.prefs +++ /dev/null @@ -1,4 +0,0 @@ -activeProfiles= -eclipse.preferences.version=1 -resolveWorkspaceProjects=true -version=1 diff --git a/rest-testing/.settings/org.eclipse.m2e.wtp.prefs b/rest-testing/.settings/org.eclipse.m2e.wtp.prefs deleted file mode 100644 index ef86089622..0000000000 --- a/rest-testing/.settings/org.eclipse.m2e.wtp.prefs +++ /dev/null @@ -1,2 +0,0 @@ -eclipse.preferences.version=1 -org.eclipse.m2e.wtp.enabledProjectSpecificPrefs=false diff --git a/rest-testing/.settings/org.eclipse.wst.common.component b/rest-testing/.settings/org.eclipse.wst.common.component deleted file mode 100644 index e98377cb0f..0000000000 --- a/rest-testing/.settings/org.eclipse.wst.common.component +++ /dev/null @@ -1,8 +0,0 @@ - - - - - - - - diff --git a/rest-testing/.settings/org.eclipse.wst.common.project.facet.core.xml b/rest-testing/.settings/org.eclipse.wst.common.project.facet.core.xml deleted file mode 100644 index f4ef8aa0a5..0000000000 --- a/rest-testing/.settings/org.eclipse.wst.common.project.facet.core.xml +++ /dev/null @@ -1,4 +0,0 @@ - - - - diff --git a/rest-testing/.settings/org.eclipse.wst.jsdt.ui.superType.container b/rest-testing/.settings/org.eclipse.wst.jsdt.ui.superType.container deleted file mode 100644 index 3bd5d0a480..0000000000 --- a/rest-testing/.settings/org.eclipse.wst.jsdt.ui.superType.container +++ /dev/null @@ -1 +0,0 @@ -org.eclipse.wst.jsdt.launching.baseBrowserLibrary \ No newline at end of file diff --git a/rest-testing/.settings/org.eclipse.wst.jsdt.ui.superType.name b/rest-testing/.settings/org.eclipse.wst.jsdt.ui.superType.name deleted file mode 100644 index 05bd71b6ec..0000000000 --- a/rest-testing/.settings/org.eclipse.wst.jsdt.ui.superType.name +++ /dev/null @@ -1 +0,0 @@ -Window \ No newline at end of file diff --git a/rest-testing/.settings/org.eclipse.wst.validation.prefs b/rest-testing/.settings/org.eclipse.wst.validation.prefs deleted file mode 100644 index cacf5451ae..0000000000 --- a/rest-testing/.settings/org.eclipse.wst.validation.prefs +++ /dev/null @@ -1,14 +0,0 @@ -DELEGATES_PREFERENCE=delegateValidatorList -USER_BUILD_PREFERENCE=enabledBuildValidatorListorg.eclipse.jst.j2ee.internal.classpathdep.ClasspathDependencyValidator; -USER_MANUAL_PREFERENCE=enabledManualValidatorListorg.eclipse.jst.j2ee.internal.classpathdep.ClasspathDependencyValidator; -USER_PREFERENCE=overrideGlobalPreferencestruedisableAllValidationfalseversion1.2.303.v201202090300 -eclipse.preferences.version=1 -override=true -suspend=false -vals/org.eclipse.jst.jsf.ui.JSFAppConfigValidator/global=FF01 -vals/org.eclipse.jst.jsp.core.JSPBatchValidator/global=FF01 -vals/org.eclipse.jst.jsp.core.JSPContentValidator/global=FF01 -vals/org.eclipse.jst.jsp.core.TLDValidator/global=FF01 -vals/org.eclipse.wst.dtd.core.dtdDTDValidator/global=FF01 -vals/org.eclipse.wst.jsdt.web.core.JsBatchValidator/global=TF02 -vf.version=3 diff --git a/rest-testing/.settings/org.eclipse.wst.ws.service.policy.prefs b/rest-testing/.settings/org.eclipse.wst.ws.service.policy.prefs deleted file mode 100644 index 9cfcabe16f..0000000000 --- a/rest-testing/.settings/org.eclipse.wst.ws.service.policy.prefs +++ /dev/null @@ -1,2 +0,0 @@ -eclipse.preferences.version=1 -org.eclipse.wst.ws.service.policy.projectEnabled=false diff --git a/rest-testing/.springBeans b/rest-testing/.springBeans deleted file mode 100644 index a79097f40d..0000000000 --- a/rest-testing/.springBeans +++ /dev/null @@ -1,14 +0,0 @@ - - - 1 - - - - - - - src/main/webapp/WEB-INF/api-servlet.xml - - - - diff --git a/rest-testing/src/test/java/com/baeldung/rest/cucumber/StepDefinition.java b/rest-testing/src/test/java/com/baeldung/rest/cucumber/StepDefinition.java index 0d72c60950..b461da8403 100644 --- a/rest-testing/src/test/java/com/baeldung/rest/cucumber/StepDefinition.java +++ b/rest-testing/src/test/java/com/baeldung/rest/cucumber/StepDefinition.java @@ -1,13 +1,8 @@ package com.baeldung.rest.cucumber; -import static org.junit.Assert.*; -import static org.hamcrest.CoreMatchers.containsString; -import static com.github.tomakehurst.wiremock.client.WireMock.*; - -import java.io.IOException; -import java.io.InputStream; -import java.util.Scanner; - +import com.github.tomakehurst.wiremock.WireMockServer; +import cucumber.api.java.en.Then; +import cucumber.api.java.en.When; import org.apache.http.HttpResponse; import org.apache.http.client.methods.HttpGet; import org.apache.http.client.methods.HttpPost; @@ -15,33 +10,55 @@ import org.apache.http.entity.StringEntity; import org.apache.http.impl.client.CloseableHttpClient; import org.apache.http.impl.client.HttpClients; -import com.github.tomakehurst.wiremock.WireMockServer; +import java.io.IOException; +import java.io.InputStream; +import java.util.Scanner; -import cucumber.api.java.en.Then; -import cucumber.api.java.en.When; +import static com.github.tomakehurst.wiremock.client.WireMock.aResponse; +import static com.github.tomakehurst.wiremock.client.WireMock.configureFor; +import static com.github.tomakehurst.wiremock.client.WireMock.containing; +import static com.github.tomakehurst.wiremock.client.WireMock.equalTo; +import static com.github.tomakehurst.wiremock.client.WireMock.get; +import static com.github.tomakehurst.wiremock.client.WireMock.getRequestedFor; +import static com.github.tomakehurst.wiremock.client.WireMock.post; +import static com.github.tomakehurst.wiremock.client.WireMock.postRequestedFor; +import static com.github.tomakehurst.wiremock.client.WireMock.stubFor; +import static com.github.tomakehurst.wiremock.client.WireMock.urlEqualTo; +import static com.github.tomakehurst.wiremock.client.WireMock.verify; +import static org.hamcrest.CoreMatchers.containsString; +import static org.junit.Assert.assertEquals; +import static org.junit.Assert.assertThat; public class StepDefinition { - InputStream jsonInputStream = this.getClass().getClassLoader().getResourceAsStream("cucumber.json"); - String jsonString = new Scanner(jsonInputStream, "UTF-8").useDelimiter("\\Z").next(); - WireMockServer wireMockServer = new WireMockServer(); - CloseableHttpClient httpClient = HttpClients.createDefault(); + private static final String CREATE_PATH = "/create"; + private static final String APPLICATION_JSON = "application/json"; + + private final InputStream jsonInputStream = this.getClass().getClassLoader().getResourceAsStream("cucumber.json"); + private final String jsonString = new Scanner(jsonInputStream, "UTF-8").useDelimiter("\\Z").next(); + + private final WireMockServer wireMockServer = new WireMockServer(); + private final CloseableHttpClient httpClient = HttpClients.createDefault(); @When("^users upload data on a project$") public void usersUploadDataOnAProject() throws IOException { wireMockServer.start(); configureFor("localhost", 8080); - stubFor(post(urlEqualTo("/create")).withHeader("content-type", equalTo("application/json")).withRequestBody(containing("testing-framework")).willReturn(aResponse().withStatus(200))); + stubFor(post(urlEqualTo(CREATE_PATH)) + .withHeader("content-type", equalTo(APPLICATION_JSON)) + .withRequestBody(containing("testing-framework")) + .willReturn(aResponse().withStatus(200))); HttpPost request = new HttpPost("http://localhost:8080/create"); StringEntity entity = new StringEntity(jsonString); - request.addHeader("content-type", "application/json"); + request.addHeader("content-type", APPLICATION_JSON); request.setEntity(entity); HttpResponse response = httpClient.execute(request); assertEquals(200, response.getStatusLine().getStatusCode()); - verify(postRequestedFor(urlEqualTo("/create")).withHeader("content-type", equalTo("application/json"))); + verify(postRequestedFor(urlEqualTo(CREATE_PATH)) + .withHeader("content-type", equalTo(APPLICATION_JSON))); wireMockServer.stop(); } @@ -51,16 +68,17 @@ public class StepDefinition { wireMockServer.start(); configureFor("localhost", 8080); - stubFor(get(urlEqualTo("/projects/cucumber")).withHeader("accept", equalTo("application/json")).willReturn(aResponse().withBody(jsonString))); + stubFor(get(urlEqualTo("/projects/cucumber")).withHeader("accept", equalTo(APPLICATION_JSON)) + .willReturn(aResponse().withBody(jsonString))); HttpGet request = new HttpGet("http://localhost:8080/projects/" + projectName.toLowerCase()); - request.addHeader("accept", "application/json"); + request.addHeader("accept", APPLICATION_JSON); HttpResponse httpResponse = httpClient.execute(request); String responseString = convertResponseToString(httpResponse); assertThat(responseString, containsString("\"testing-framework\": \"cucumber\"")); assertThat(responseString, containsString("\"website\": \"cucumber.io\"")); - verify(getRequestedFor(urlEqualTo("/projects/cucumber")).withHeader("accept", equalTo("application/json"))); + verify(getRequestedFor(urlEqualTo("/projects/cucumber")).withHeader("accept", equalTo(APPLICATION_JSON))); wireMockServer.stop(); } diff --git a/rest-testing/src/test/java/com/baeldung/rest/wiremock/introduction/JUnitManaged.java b/rest-testing/src/test/java/com/baeldung/rest/wiremock/introduction/JUnitManaged.java index f6a46256ac..664c3fac78 100644 --- a/rest-testing/src/test/java/com/baeldung/rest/wiremock/introduction/JUnitManaged.java +++ b/rest-testing/src/test/java/com/baeldung/rest/wiremock/introduction/JUnitManaged.java @@ -1,24 +1,6 @@ package com.baeldung.rest.wiremock.introduction; -import static com.github.tomakehurst.wiremock.client.WireMock.aResponse; -import static com.github.tomakehurst.wiremock.client.WireMock.equalTo; -import static com.github.tomakehurst.wiremock.client.WireMock.get; -import static com.github.tomakehurst.wiremock.client.WireMock.getRequestedFor; -import static com.github.tomakehurst.wiremock.client.WireMock.post; -import static com.github.tomakehurst.wiremock.client.WireMock.postRequestedFor; -import static com.github.tomakehurst.wiremock.client.WireMock.stubFor; -import static com.github.tomakehurst.wiremock.client.WireMock.urlEqualTo; -import static com.github.tomakehurst.wiremock.client.WireMock.urlPathEqualTo; -import static com.github.tomakehurst.wiremock.client.WireMock.urlPathMatching; -import static com.github.tomakehurst.wiremock.client.WireMock.matching; -import static com.github.tomakehurst.wiremock.client.WireMock.containing; -import static com.github.tomakehurst.wiremock.client.WireMock.verify; -import static org.junit.Assert.assertEquals; - -import java.io.IOException; -import java.io.InputStream; -import java.util.Scanner; - +import com.github.tomakehurst.wiremock.junit.WireMockRule; import org.apache.http.HttpResponse; import org.apache.http.client.methods.HttpGet; import org.apache.http.client.methods.HttpPost; @@ -28,30 +10,60 @@ import org.apache.http.impl.client.HttpClients; import org.junit.Rule; import org.junit.Test; -import com.github.tomakehurst.wiremock.junit.WireMockRule; +import java.io.IOException; +import java.io.InputStream; +import java.util.Scanner; + +import static com.github.tomakehurst.wiremock.client.WireMock.aResponse; +import static com.github.tomakehurst.wiremock.client.WireMock.containing; +import static com.github.tomakehurst.wiremock.client.WireMock.equalTo; +import static com.github.tomakehurst.wiremock.client.WireMock.get; +import static com.github.tomakehurst.wiremock.client.WireMock.getRequestedFor; +import static com.github.tomakehurst.wiremock.client.WireMock.matching; +import static com.github.tomakehurst.wiremock.client.WireMock.post; +import static com.github.tomakehurst.wiremock.client.WireMock.postRequestedFor; +import static com.github.tomakehurst.wiremock.client.WireMock.stubFor; +import static com.github.tomakehurst.wiremock.client.WireMock.urlEqualTo; +import static com.github.tomakehurst.wiremock.client.WireMock.urlPathEqualTo; +import static com.github.tomakehurst.wiremock.client.WireMock.urlPathMatching; +import static com.github.tomakehurst.wiremock.client.WireMock.verify; +import static org.junit.Assert.assertEquals; public class JUnitManaged { + + private static final String BAELDUNG_WIREMOCK_PATH = "/baeldung/wiremock"; + private static final String APPLICATION_JSON = "application/json"; + @Rule public WireMockRule wireMockRule = new WireMockRule(); @Test public void givenJUnitManagedServer_whenMatchingURL_thenCorrect() throws IOException { - stubFor(get(urlPathMatching("/baeldung/.*")).willReturn(aResponse().withStatus(200).withHeader("Content-Type", "application/json").withBody("\"testing-library\": \"WireMock\""))); + stubFor(get(urlPathMatching("/baeldung/.*")) + .willReturn(aResponse() + .withStatus(200) + .withHeader("Content-Type", APPLICATION_JSON) + .withBody("\"testing-library\": \"WireMock\""))); CloseableHttpClient httpClient = HttpClients.createDefault(); HttpGet request = new HttpGet("http://localhost:8080/baeldung/wiremock"); HttpResponse httpResponse = httpClient.execute(request); String stringResponse = convertHttpResponseToString(httpResponse); - verify(getRequestedFor(urlEqualTo("/baeldung/wiremock"))); + verify(getRequestedFor(urlEqualTo(BAELDUNG_WIREMOCK_PATH))); assertEquals(200, httpResponse.getStatusLine().getStatusCode()); - assertEquals("application/json", httpResponse.getFirstHeader("Content-Type").getValue()); + assertEquals(APPLICATION_JSON, httpResponse.getFirstHeader("Content-Type").getValue()); assertEquals("\"testing-library\": \"WireMock\"", stringResponse); } @Test public void givenJUnitManagedServer_whenMatchingHeaders_thenCorrect() throws IOException { - stubFor(get(urlPathEqualTo("/baeldung/wiremock")).withHeader("Accept", matching("text/.*")).willReturn(aResponse().withStatus(503).withHeader("Content-Type", "text/html").withBody("!!! Service Unavailable !!!"))); + stubFor(get(urlPathEqualTo(BAELDUNG_WIREMOCK_PATH)) + .withHeader("Accept", matching("text/.*")) + .willReturn(aResponse() + .withStatus(503) + .withHeader("Content-Type", "text/html") + .withBody("!!! Service Unavailable !!!"))); CloseableHttpClient httpClient = HttpClients.createDefault(); HttpGet request = new HttpGet("http://localhost:8080/baeldung/wiremock"); @@ -59,7 +71,7 @@ public class JUnitManaged { HttpResponse httpResponse = httpClient.execute(request); String stringResponse = convertHttpResponseToString(httpResponse); - verify(getRequestedFor(urlEqualTo("/baeldung/wiremock"))); + verify(getRequestedFor(urlEqualTo(BAELDUNG_WIREMOCK_PATH))); assertEquals(503, httpResponse.getStatusLine().getStatusCode()); assertEquals("text/html", httpResponse.getFirstHeader("Content-Type").getValue()); assertEquals("!!! Service Unavailable !!!", stringResponse); @@ -67,8 +79,12 @@ public class JUnitManaged { @Test public void givenJUnitManagedServer_whenMatchingBody_thenCorrect() throws IOException { - stubFor(post(urlEqualTo("/baeldung/wiremock")).withHeader("Content-Type", equalTo("application/json")).withRequestBody(containing("\"testing-library\": \"WireMock\"")).withRequestBody(containing("\"creator\": \"Tom Akehurst\"")) - .withRequestBody(containing("\"website\": \"wiremock.org\"")).willReturn(aResponse().withStatus(200))); + stubFor(post(urlEqualTo(BAELDUNG_WIREMOCK_PATH)) + .withHeader("Content-Type", equalTo(APPLICATION_JSON)) + .withRequestBody(containing("\"testing-library\": \"WireMock\"")) + .withRequestBody(containing("\"creator\": \"Tom Akehurst\"")) + .withRequestBody(containing("\"website\": \"wiremock.org\"")) + .willReturn(aResponse().withStatus(200))); InputStream jsonInputStream = this.getClass().getClassLoader().getResourceAsStream("wiremock_intro.json"); String jsonString = convertInputStreamToString(jsonInputStream); @@ -76,42 +92,43 @@ public class JUnitManaged { CloseableHttpClient httpClient = HttpClients.createDefault(); HttpPost request = new HttpPost("http://localhost:8080/baeldung/wiremock"); - request.addHeader("Content-Type", "application/json"); + request.addHeader("Content-Type", APPLICATION_JSON); request.setEntity(entity); HttpResponse response = httpClient.execute(request); - verify(postRequestedFor(urlEqualTo("/baeldung/wiremock")).withHeader("Content-Type", equalTo("application/json"))); + verify(postRequestedFor(urlEqualTo(BAELDUNG_WIREMOCK_PATH)) + .withHeader("Content-Type", equalTo(APPLICATION_JSON))); assertEquals(200, response.getStatusLine().getStatusCode()); } @Test public void givenJUnitManagedServer_whenNotUsingPriority_thenCorrect() throws IOException { stubFor(get(urlPathMatching("/baeldung/.*")).willReturn(aResponse().withStatus(200))); - stubFor(get(urlPathEqualTo("/baeldung/wiremock")).withHeader("Accept", matching("text/.*")).willReturn(aResponse().withStatus(503))); + stubFor(get(urlPathEqualTo(BAELDUNG_WIREMOCK_PATH)).withHeader("Accept", matching("text/.*")).willReturn(aResponse().withStatus(503))); HttpResponse httpResponse = generateClientAndReceiveResponseForPriorityTests(); - verify(getRequestedFor(urlEqualTo("/baeldung/wiremock"))); + verify(getRequestedFor(urlEqualTo(BAELDUNG_WIREMOCK_PATH))); assertEquals(503, httpResponse.getStatusLine().getStatusCode()); } @Test public void givenJUnitManagedServer_whenUsingPriority_thenCorrect() throws IOException { stubFor(get(urlPathMatching("/baeldung/.*")).atPriority(1).willReturn(aResponse().withStatus(200))); - stubFor(get(urlPathEqualTo("/baeldung/wiremock")).atPriority(2).withHeader("Accept", matching("text/.*")).willReturn(aResponse().withStatus(503))); + stubFor(get(urlPathEqualTo(BAELDUNG_WIREMOCK_PATH)).atPriority(2).withHeader("Accept", matching("text/.*")).willReturn(aResponse().withStatus(503))); HttpResponse httpResponse = generateClientAndReceiveResponseForPriorityTests(); - verify(getRequestedFor(urlEqualTo("/baeldung/wiremock"))); + verify(getRequestedFor(urlEqualTo(BAELDUNG_WIREMOCK_PATH))); assertEquals(200, httpResponse.getStatusLine().getStatusCode()); } - private String convertHttpResponseToString(HttpResponse httpResponse) throws IOException { + private static String convertHttpResponseToString(HttpResponse httpResponse) throws IOException { InputStream inputStream = httpResponse.getEntity().getContent(); return convertInputStreamToString(inputStream); } - private String convertInputStreamToString(InputStream inputStream) { + private static String convertInputStreamToString(InputStream inputStream) { Scanner scanner = new Scanner(inputStream, "UTF-8"); String string = scanner.useDelimiter("\\Z").next(); scanner.close(); diff --git a/rest-testing/src/test/java/com/baeldung/rest/wiremock/introduction/ProgrammaticallyManaged.java b/rest-testing/src/test/java/com/baeldung/rest/wiremock/introduction/ProgrammaticallyManaged.java index 34b445ac0f..ad7caa52b5 100644 --- a/rest-testing/src/test/java/com/baeldung/rest/wiremock/introduction/ProgrammaticallyManaged.java +++ b/rest-testing/src/test/java/com/baeldung/rest/wiremock/introduction/ProgrammaticallyManaged.java @@ -1,5 +1,16 @@ package com.baeldung.rest.wiremock.introduction; +import com.github.tomakehurst.wiremock.WireMockServer; +import org.apache.http.HttpResponse; +import org.apache.http.client.methods.HttpGet; +import org.apache.http.impl.client.CloseableHttpClient; +import org.apache.http.impl.client.HttpClients; +import org.junit.Test; + +import java.io.IOException; +import java.io.InputStream; +import java.util.Scanner; + import static com.github.tomakehurst.wiremock.client.WireMock.aResponse; import static com.github.tomakehurst.wiremock.client.WireMock.configureFor; import static com.github.tomakehurst.wiremock.client.WireMock.get; @@ -9,40 +20,31 @@ import static com.github.tomakehurst.wiremock.client.WireMock.urlEqualTo; import static com.github.tomakehurst.wiremock.client.WireMock.verify; import static org.junit.Assert.assertEquals; -import java.io.IOException; -import java.io.InputStream; -import java.util.Scanner; - -import org.apache.http.HttpResponse; -import org.apache.http.client.methods.HttpGet; -import org.apache.http.impl.client.CloseableHttpClient; -import org.apache.http.impl.client.HttpClients; -import org.junit.Test; - -import com.github.tomakehurst.wiremock.WireMockServer; - public class ProgrammaticallyManaged { - WireMockServer wireMockServer = new WireMockServer(); - CloseableHttpClient httpClient = HttpClients.createDefault(); + + private static final String BAELDUNG_PATH = "/baeldung"; + + private WireMockServer wireMockServer = new WireMockServer(); + private CloseableHttpClient httpClient = HttpClients.createDefault(); @Test public void givenProgrammaticallyManagedServer_whenUsingSimpleStubbing_thenCorrect() throws IOException { wireMockServer.start(); configureFor("localhost", 8080); - stubFor(get(urlEqualTo("/baeldung")).willReturn(aResponse().withBody("Welcome to Baeldung!"))); + stubFor(get(urlEqualTo(BAELDUNG_PATH)).willReturn(aResponse().withBody("Welcome to Baeldung!"))); HttpGet request = new HttpGet("http://localhost:8080/baeldung"); HttpResponse httpResponse = httpClient.execute(request); String stringResponse = convertResponseToString(httpResponse); - verify(getRequestedFor(urlEqualTo("/baeldung"))); + verify(getRequestedFor(urlEqualTo(BAELDUNG_PATH))); assertEquals("Welcome to Baeldung!", stringResponse); wireMockServer.stop(); } - private String convertResponseToString(HttpResponse response) throws IOException { + private static String convertResponseToString(HttpResponse response) throws IOException { InputStream responseStream = response.getEntity().getContent(); Scanner scanner = new Scanner(responseStream, "UTF-8"); String stringResponse = scanner.useDelimiter("\\Z").next(); diff --git a/rest-testing/src/test/resources/.gitignore b/rest-testing/src/test/resources/.gitignore deleted file mode 100644 index 83c05e60c8..0000000000 --- a/rest-testing/src/test/resources/.gitignore +++ /dev/null @@ -1,13 +0,0 @@ -*.class - -#folders# -/target -/neoDb* -/data -/src/main/webapp/WEB-INF/classes -*/META-INF/* - -# Packaged files # -*.jar -*.war -*.ear \ No newline at end of file From 665afc028e0f9d78285d4cc63c77123e492a8a04 Mon Sep 17 00:00:00 2001 From: Grzegorz Piwowarek Date: Tue, 7 Jun 2016 18:56:18 +0200 Subject: [PATCH 023/108] Revert jOOQ Application.java --- .../test/java/com/baeldung/jooq/springboot/Application.java | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/jooq-spring/src/test/java/com/baeldung/jooq/springboot/Application.java b/jooq-spring/src/test/java/com/baeldung/jooq/springboot/Application.java index 844a2989a5..95e00fd5fb 100644 --- a/jooq-spring/src/test/java/com/baeldung/jooq/springboot/Application.java +++ b/jooq-spring/src/test/java/com/baeldung/jooq/springboot/Application.java @@ -23,6 +23,8 @@ public class Application { @Autowired private Environment environment; + private DataSource dataSource; + public DataSource dataSource() { DriverManagerDataSource dataSource = new DriverManagerDataSource(); @@ -39,7 +41,7 @@ public class Application { } public DataSourceTransactionManager transactionManager() { - return new DataSourceTransactionManager(dataSource()); + return new DataSourceTransactionManager(dataSource); } @Bean From d8cd30d0fdec365f71554f75ad34066274937b85 Mon Sep 17 00:00:00 2001 From: Grzegorz Piwowarek Date: Tue, 7 Jun 2016 20:35:29 +0200 Subject: [PATCH 024/108] Fix Application.java --- .../java/com/baeldung/jooq/springboot/Application.java | 7 ------- 1 file changed, 7 deletions(-) diff --git a/jooq-spring/src/test/java/com/baeldung/jooq/springboot/Application.java b/jooq-spring/src/test/java/com/baeldung/jooq/springboot/Application.java index 95e00fd5fb..4865b575e1 100644 --- a/jooq-spring/src/test/java/com/baeldung/jooq/springboot/Application.java +++ b/jooq-spring/src/test/java/com/baeldung/jooq/springboot/Application.java @@ -9,7 +9,6 @@ import org.springframework.beans.factory.annotation.Autowired; import org.springframework.boot.autoconfigure.SpringBootApplication; import org.springframework.context.annotation.Bean; import org.springframework.core.env.Environment; -import org.springframework.jdbc.datasource.DataSourceTransactionManager; import org.springframework.jdbc.datasource.DriverManagerDataSource; import org.springframework.jdbc.datasource.TransactionAwareDataSourceProxy; import org.springframework.transaction.annotation.EnableTransactionManagement; @@ -23,8 +22,6 @@ public class Application { @Autowired private Environment environment; - private DataSource dataSource; - public DataSource dataSource() { DriverManagerDataSource dataSource = new DriverManagerDataSource(); @@ -40,10 +37,6 @@ public class Application { return new TransactionAwareDataSourceProxy(dataSource()); } - public DataSourceTransactionManager transactionManager() { - return new DataSourceTransactionManager(dataSource); - } - @Bean public DataSourceConnectionProvider connectionProvider() { return new DataSourceConnectionProvider(transactionAwareDataSource()); From 632a1f613f5dc0ff97d49ad2ee95441e26165583 Mon Sep 17 00:00:00 2001 From: Grzegorz Piwowarek Date: Wed, 8 Jun 2016 08:33:36 +0200 Subject: [PATCH 025/108] Leverage Spring Boot's autoconfiguration (#441) * Leverage Spring Boot's autoconfiguration * Remove unnecessary @PropertySource --- .../baeldung/jooq/springboot/Application.java | 53 ------------------- .../jooq/springboot/InitialConfiguration.java | 39 ++++++++++++++ 2 files changed, 39 insertions(+), 53 deletions(-) create mode 100644 jooq-spring/src/test/java/com/baeldung/jooq/springboot/InitialConfiguration.java diff --git a/jooq-spring/src/test/java/com/baeldung/jooq/springboot/Application.java b/jooq-spring/src/test/java/com/baeldung/jooq/springboot/Application.java index 4865b575e1..ff74851d2a 100644 --- a/jooq-spring/src/test/java/com/baeldung/jooq/springboot/Application.java +++ b/jooq-spring/src/test/java/com/baeldung/jooq/springboot/Application.java @@ -1,62 +1,9 @@ package com.baeldung.jooq.springboot; -import com.baeldung.jooq.introduction.ExceptionTranslator; -import org.jooq.impl.DataSourceConnectionProvider; -import org.jooq.impl.DefaultConfiguration; -import org.jooq.impl.DefaultDSLContext; -import org.jooq.impl.DefaultExecuteListenerProvider; -import org.springframework.beans.factory.annotation.Autowired; import org.springframework.boot.autoconfigure.SpringBootApplication; -import org.springframework.context.annotation.Bean; -import org.springframework.core.env.Environment; -import org.springframework.jdbc.datasource.DriverManagerDataSource; -import org.springframework.jdbc.datasource.TransactionAwareDataSourceProxy; import org.springframework.transaction.annotation.EnableTransactionManagement; -import javax.sql.DataSource; - @SpringBootApplication @EnableTransactionManagement public class Application { - - @Autowired - private Environment environment; - - public DataSource dataSource() { - DriverManagerDataSource dataSource = new DriverManagerDataSource(); - - dataSource.setUrl(environment.getRequiredProperty("spring.datasource.url")); - dataSource.setUsername(environment.getRequiredProperty("spring.datasource.username")); - dataSource.setPassword(environment.getRequiredProperty("spring.datasource.password")); - - return dataSource; - } - - @Bean - public TransactionAwareDataSourceProxy transactionAwareDataSource() { - return new TransactionAwareDataSourceProxy(dataSource()); - } - - @Bean - public DataSourceConnectionProvider connectionProvider() { - return new DataSourceConnectionProvider(transactionAwareDataSource()); - } - - public ExceptionTranslator exceptionTransformer() { - return new ExceptionTranslator(); - } - - @Bean - public DefaultDSLContext dsl() { - return new DefaultDSLContext(configuration()); - } - - public DefaultConfiguration configuration() { - DefaultConfiguration jooqConfiguration = new DefaultConfiguration(); - - jooqConfiguration.set(connectionProvider()); - jooqConfiguration.set(new DefaultExecuteListenerProvider(exceptionTransformer())); - - return jooqConfiguration; - } } \ No newline at end of file diff --git a/jooq-spring/src/test/java/com/baeldung/jooq/springboot/InitialConfiguration.java b/jooq-spring/src/test/java/com/baeldung/jooq/springboot/InitialConfiguration.java new file mode 100644 index 0000000000..c0d9dac797 --- /dev/null +++ b/jooq-spring/src/test/java/com/baeldung/jooq/springboot/InitialConfiguration.java @@ -0,0 +1,39 @@ +package com.baeldung.jooq.springboot; + +import com.baeldung.jooq.introduction.ExceptionTranslator; +import org.jooq.impl.DataSourceConnectionProvider; +import org.jooq.impl.DefaultConfiguration; +import org.jooq.impl.DefaultDSLContext; +import org.jooq.impl.DefaultExecuteListenerProvider; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.context.annotation.Bean; +import org.springframework.context.annotation.Configuration; +import org.springframework.jdbc.datasource.TransactionAwareDataSourceProxy; + +import javax.sql.DataSource; + +@Configuration +public class InitialConfiguration { + + @Autowired + private DataSource dataSource; + + @Bean + public DataSourceConnectionProvider connectionProvider() { + return new DataSourceConnectionProvider(new TransactionAwareDataSourceProxy(dataSource)); + } + + @Bean + public DefaultDSLContext dsl() { + return new DefaultDSLContext(configuration()); + } + + public DefaultConfiguration configuration() { + DefaultConfiguration jooqConfiguration = new DefaultConfiguration(); + + jooqConfiguration.set(connectionProvider()); + jooqConfiguration.set(new DefaultExecuteListenerProvider(new ExceptionTranslator())); + + return jooqConfiguration; + } +} From 5c8961e7e8d0448f500c9acf576786b71e76fb7c Mon Sep 17 00:00:00 2001 From: Ivan Paolillo Date: Wed, 8 Jun 2016 16:47:36 +0200 Subject: [PATCH 026/108] Remove gatling load test demo --- gatling-loadtest-demo/.cache-tests | 166 ------------------ gatling-loadtest-demo/.classpath | 32 ---- gatling-loadtest-demo/.project | 24 --- gatling-loadtest-demo/pom.xml | 113 ------------ .../src/test/resources/gatling.conf | 127 -------------- .../src/test/resources/logback.xml | 22 --- .../src/test/resources/recorder.conf | 57 ------ .../src/test/scala/Engine.scala | 13 -- .../src/test/scala/IDEPathHelper.scala | 22 --- .../src/test/scala/Recorder.scala | 12 -- .../org/baeldung/RecordedSimulation.scala | 46 ----- 11 files changed, 634 deletions(-) delete mode 100644 gatling-loadtest-demo/.cache-tests delete mode 100644 gatling-loadtest-demo/.classpath delete mode 100644 gatling-loadtest-demo/.project delete mode 100644 gatling-loadtest-demo/pom.xml delete mode 100644 gatling-loadtest-demo/src/test/resources/gatling.conf delete mode 100644 gatling-loadtest-demo/src/test/resources/logback.xml delete mode 100644 gatling-loadtest-demo/src/test/resources/recorder.conf delete mode 100644 gatling-loadtest-demo/src/test/scala/Engine.scala delete mode 100644 gatling-loadtest-demo/src/test/scala/IDEPathHelper.scala delete mode 100644 gatling-loadtest-demo/src/test/scala/Recorder.scala delete mode 100644 gatling-loadtest-demo/src/test/scala/org/baeldung/RecordedSimulation.scala diff --git a/gatling-loadtest-demo/.cache-tests b/gatling-loadtest-demo/.cache-tests deleted file mode 100644 index 31b0015eef..0000000000 --- a/gatling-loadtest-demo/.cache-tests +++ /dev/null @@ -1,166 +0,0 @@ -format version: 5 -output mode: -1 items -0 -> multiple -output directories: -2 items -C:\develop\git\tutorials\gatling-loadtest-demo\src\test\resources -> C:\develop\git\tutorials\gatling-loadtest-demo\target\test-classes -C:\develop\git\tutorials\gatling-loadtest-demo\src\test\scala -> C:\develop\git\tutorials\gatling-loadtest-demo\target\test-classes -compile options: -8 items -0 -> -javabootclasspath -1 -> C:\develop\Java\jdk1.8.0_77\jre\lib\resources.jar;C:\develop\Java\jdk1.8.0_77\jre\lib\rt.jar;C:\develop\Java\jdk1.8.0_77\jre\lib\jsse.jar;C:\develop\Java\jdk1.8.0_77\jre\lib\jce.jar;C:\develop\Java\jdk1.8.0_77\jre\lib\charsets.jar;C:\develop\Java\jdk1.8.0_77\jre\lib\jfr.jar;C:\develop\Java\jdk1.8.0_77\jre\lib\ext\access-bridge-64.jar;C:\develop\Java\jdk1.8.0_77\jre\lib\ext\cldrdata.jar;C:\develop\Java\jdk1.8.0_77\jre\lib\ext\dnsns.jar;C:\develop\Java\jdk1.8.0_77\jre\lib\ext\jaccess.jar;C:\develop\Java\jdk1.8.0_77\jre\lib\ext\jfxrt.jar;C:\develop\Java\jdk1.8.0_77\jre\lib\ext\localedata.jar;C:\develop\Java\jdk1.8.0_77\jre\lib\ext\nashorn.jar;C:\develop\Java\jdk1.8.0_77\jre\lib\ext\sunec.jar;C:\develop\Java\jdk1.8.0_77\jre\lib\ext\sunjce_provider.jar;C:\develop\Java\jdk1.8.0_77\jre\lib\ext\sunmscapi.jar;C:\develop\Java\jdk1.8.0_77\jre\lib\ext\sunpkcs11.jar;C:\develop\Java\jdk1.8.0_77\jre\lib\ext\zipfs.jar -2 -> -javaextdirs -3 -> -4 -> -bootclasspath -5 -> C:\develop\IDE\sts-bundle\sts-3.7.3.RELEASE\plugins\org.scala-lang.scala-library_2.11.8.v20160304-115712-1706a37eb8.jar -6 -> -encoding -7 -> UTF-8 -javac options: -0 items -compiler version: -1 items -0 -> 2.11.8 -compile order: -1 items -0 -> Mixed -name hashing: -1 items -0 -> false -products: -9 items -C:\develop\git\tutorials\gatling-loadtest-demo\src\test\scala\Engine.scala -> C:\develop\git\tutorials\gatling-loadtest-demo\target\test-classes\Engine$.class -C:\develop\git\tutorials\gatling-loadtest-demo\src\test\scala\Engine.scala -> C:\develop\git\tutorials\gatling-loadtest-demo\target\test-classes\Engine$delayedInit$body.class -C:\develop\git\tutorials\gatling-loadtest-demo\src\test\scala\Engine.scala -> C:\develop\git\tutorials\gatling-loadtest-demo\target\test-classes\Engine.class -C:\develop\git\tutorials\gatling-loadtest-demo\src\test\scala\IDEPathHelper.scala -> C:\develop\git\tutorials\gatling-loadtest-demo\target\test-classes\IDEPathHelper$.class -C:\develop\git\tutorials\gatling-loadtest-demo\src\test\scala\IDEPathHelper.scala -> C:\develop\git\tutorials\gatling-loadtest-demo\target\test-classes\IDEPathHelper.class -C:\develop\git\tutorials\gatling-loadtest-demo\src\test\scala\org\baeldung\RecordedSimulation.scala -> C:\develop\git\tutorials\gatling-loadtest-demo\target\test-classes\org\baeldung\RecordedSimulation.class -C:\develop\git\tutorials\gatling-loadtest-demo\src\test\scala\Recorder.scala -> C:\develop\git\tutorials\gatling-loadtest-demo\target\test-classes\Recorder$.class -C:\develop\git\tutorials\gatling-loadtest-demo\src\test\scala\Recorder.scala -> C:\develop\git\tutorials\gatling-loadtest-demo\target\test-classes\Recorder$delayedInit$body.class -C:\develop\git\tutorials\gatling-loadtest-demo\src\test\scala\Recorder.scala -> C:\develop\git\tutorials\gatling-loadtest-demo\target\test-classes\Recorder.class -binary dependencies: -15 items -C:\develop\git\tutorials\gatling-loadtest-demo\src\test\scala\Engine.scala -> C:\Users\Ivan Paolillo\.m2\repository\io\gatling\gatling-app\2.2.0\gatling-app-2.2.0.jar -C:\develop\git\tutorials\gatling-loadtest-demo\src\test\scala\Engine.scala -> C:\Users\Ivan Paolillo\.m2\repository\io\gatling\gatling-core\2.2.0\gatling-core-2.2.0.jar -C:\develop\git\tutorials\gatling-loadtest-demo\src\test\scala\Engine.scala -> C:\develop\IDE\sts-bundle\sts-3.7.3.RELEASE\plugins\org.scala-lang.scala-library_2.11.8.v20160304-115712-1706a37eb8.jar -C:\develop\git\tutorials\gatling-loadtest-demo\src\test\scala\Engine.scala -> C:\develop\Java\jdk1.8.0_77\jre\lib\rt.jar -C:\develop\git\tutorials\gatling-loadtest-demo\src\test\scala\IDEPathHelper.scala -> C:\Users\Ivan Paolillo\.m2\repository\io\gatling\gatling-commons\2.2.0\gatling-commons-2.2.0.jar -C:\develop\git\tutorials\gatling-loadtest-demo\src\test\scala\IDEPathHelper.scala -> C:\develop\Java\jdk1.8.0_77\jre\lib\rt.jar -C:\develop\git\tutorials\gatling-loadtest-demo\src\test\scala\org\baeldung\RecordedSimulation.scala -> C:\Users\Ivan Paolillo\.m2\repository\io\gatling\gatling-commons\2.2.0\gatling-commons-2.2.0.jar -C:\develop\git\tutorials\gatling-loadtest-demo\src\test\scala\org\baeldung\RecordedSimulation.scala -> C:\Users\Ivan Paolillo\.m2\repository\io\gatling\gatling-core\2.2.0\gatling-core-2.2.0.jar -C:\develop\git\tutorials\gatling-loadtest-demo\src\test\scala\org\baeldung\RecordedSimulation.scala -> C:\Users\Ivan Paolillo\.m2\repository\io\gatling\gatling-http\2.2.0\gatling-http-2.2.0.jar -C:\develop\git\tutorials\gatling-loadtest-demo\src\test\scala\org\baeldung\RecordedSimulation.scala -> C:\Users\Ivan Paolillo\.m2\repository\io\gatling\gatling-jdbc\2.2.0\gatling-jdbc-2.2.0.jar -C:\develop\git\tutorials\gatling-loadtest-demo\src\test\scala\org\baeldung\RecordedSimulation.scala -> C:\develop\IDE\sts-bundle\sts-3.7.3.RELEASE\plugins\org.scala-lang.scala-library_2.11.8.v20160304-115712-1706a37eb8.jar -C:\develop\git\tutorials\gatling-loadtest-demo\src\test\scala\org\baeldung\RecordedSimulation.scala -> C:\develop\Java\jdk1.8.0_77\jre\lib\rt.jar -C:\develop\git\tutorials\gatling-loadtest-demo\src\test\scala\Recorder.scala -> C:\Users\Ivan Paolillo\.m2\repository\io\gatling\gatling-recorder\2.2.0\gatling-recorder-2.2.0.jar -C:\develop\git\tutorials\gatling-loadtest-demo\src\test\scala\Recorder.scala -> C:\develop\IDE\sts-bundle\sts-3.7.3.RELEASE\plugins\org.scala-lang.scala-library_2.11.8.v20160304-115712-1706a37eb8.jar -C:\develop\git\tutorials\gatling-loadtest-demo\src\test\scala\Recorder.scala -> C:\develop\Java\jdk1.8.0_77\jre\lib\rt.jar -direct source dependencies: -2 items -C:\develop\git\tutorials\gatling-loadtest-demo\src\test\scala\Engine.scala -> C:\develop\git\tutorials\gatling-loadtest-demo\src\test\scala\IDEPathHelper.scala -C:\develop\git\tutorials\gatling-loadtest-demo\src\test\scala\Recorder.scala -> C:\develop\git\tutorials\gatling-loadtest-demo\src\test\scala\IDEPathHelper.scala -direct external dependencies: -0 items -public inherited source dependencies: -0 items -public inherited external dependencies: -0 items -member reference internal dependencies: -0 items -member reference external dependencies: -0 items -inheritance internal dependencies: -0 items -inheritance external dependencies: -0 items -class names: -9 items -C:\develop\git\tutorials\gatling-loadtest-demo\src\test\scala\Engine.scala -> Engine -C:\develop\git\tutorials\gatling-loadtest-demo\src\test\scala\Engine.scala -> Engine$ -C:\develop\git\tutorials\gatling-loadtest-demo\src\test\scala\Engine.scala -> Engine$delayedInit$body -C:\develop\git\tutorials\gatling-loadtest-demo\src\test\scala\IDEPathHelper.scala -> IDEPathHelper -C:\develop\git\tutorials\gatling-loadtest-demo\src\test\scala\IDEPathHelper.scala -> IDEPathHelper$ -C:\develop\git\tutorials\gatling-loadtest-demo\src\test\scala\org\baeldung\RecordedSimulation.scala -> org.baeldung.RecordedSimulation -C:\develop\git\tutorials\gatling-loadtest-demo\src\test\scala\Recorder.scala -> Recorder -C:\develop\git\tutorials\gatling-loadtest-demo\src\test\scala\Recorder.scala -> Recorder$ -C:\develop\git\tutorials\gatling-loadtest-demo\src\test\scala\Recorder.scala -> Recorder$delayedInit$body -used names: -0 items -product stamps: -9 items -C:\develop\git\tutorials\gatling-loadtest-demo\target\test-classes\Engine$.class -> lastModified(1464356690978) -C:\develop\git\tutorials\gatling-loadtest-demo\target\test-classes\Engine$delayedInit$body.class -> lastModified(1464356690989) -C:\develop\git\tutorials\gatling-loadtest-demo\target\test-classes\Engine.class -> lastModified(1464356690863) -C:\develop\git\tutorials\gatling-loadtest-demo\target\test-classes\IDEPathHelper$.class -> lastModified(1464356691030) -C:\develop\git\tutorials\gatling-loadtest-demo\target\test-classes\IDEPathHelper.class -> lastModified(1464356691005) -C:\develop\git\tutorials\gatling-loadtest-demo\target\test-classes\org\baeldung\RecordedSimulation.class -> lastModified(1464356691072) -C:\develop\git\tutorials\gatling-loadtest-demo\target\test-classes\Recorder$.class -> lastModified(1464356691045) -C:\develop\git\tutorials\gatling-loadtest-demo\target\test-classes\Recorder$delayedInit$body.class -> lastModified(1464356691049) -C:\develop\git\tutorials\gatling-loadtest-demo\target\test-classes\Recorder.class -> lastModified(1464356691034) -source stamps: -4 items -C:\develop\git\tutorials\gatling-loadtest-demo\src\test\scala\Engine.scala -> hash(e98bacf89a84be65d2a131fa7e072d4f6ebef89d) -C:\develop\git\tutorials\gatling-loadtest-demo\src\test\scala\IDEPathHelper.scala -> hash(20255b66020a40c67db52f8248fab7e3250fc940) -C:\develop\git\tutorials\gatling-loadtest-demo\src\test\scala\org\baeldung\RecordedSimulation.scala -> hash(1d4aab935ed26aa3fee62aff5bc9d1d2dbc3f776) -C:\develop\git\tutorials\gatling-loadtest-demo\src\test\scala\Recorder.scala -> hash(667da8a9d712f988ed7b14bdfa7b293c76ac3b61) -binary stamps: -8 items -C:\develop\IDE\sts-bundle\sts-3.7.3.RELEASE\plugins\org.scala-lang.scala-library_2.11.8.v20160304-115712-1706a37eb8.jar -> lastModified(1463581376873) -C:\develop\Java\jdk1.8.0_77\jre\lib\rt.jar -> lastModified(1460466041763) -C:\Users\Ivan Paolillo\.m2\repository\io\gatling\gatling-app\2.2.0\gatling-app-2.2.0.jar -> lastModified(1463577683111) -C:\Users\Ivan Paolillo\.m2\repository\io\gatling\gatling-commons\2.2.0\gatling-commons-2.2.0.jar -> lastModified(1463577434095) -C:\Users\Ivan Paolillo\.m2\repository\io\gatling\gatling-core\2.2.0\gatling-core-2.2.0.jar -> lastModified(1463577425041) -C:\Users\Ivan Paolillo\.m2\repository\io\gatling\gatling-http\2.2.0\gatling-http-2.2.0.jar -> lastModified(1463577691216) -C:\Users\Ivan Paolillo\.m2\repository\io\gatling\gatling-jdbc\2.2.0\gatling-jdbc-2.2.0.jar -> lastModified(1463577767127) -C:\Users\Ivan Paolillo\.m2\repository\io\gatling\gatling-recorder\2.2.0\gatling-recorder-2.2.0.jar -> lastModified(1463577812366) -class names: -8 items -C:\develop\IDE\sts-bundle\sts-3.7.3.RELEASE\plugins\org.scala-lang.scala-library_2.11.8.v20160304-115712-1706a37eb8.jar -> scala.reflect.ClassTag$ -C:\develop\Java\jdk1.8.0_77\jre\lib\rt.jar -> java.lang.Object -C:\Users\Ivan Paolillo\.m2\repository\io\gatling\gatling-app\2.2.0\gatling-app-2.2.0.jar -> io.gatling.app.Gatling$ -C:\Users\Ivan Paolillo\.m2\repository\io\gatling\gatling-commons\2.2.0\gatling-commons-2.2.0.jar -> io.gatling.commons.util.TypeCaster$ -C:\Users\Ivan Paolillo\.m2\repository\io\gatling\gatling-core\2.2.0\gatling-core-2.2.0.jar -> io.gatling.core.scenario.Simulation -C:\Users\Ivan Paolillo\.m2\repository\io\gatling\gatling-http\2.2.0\gatling-http-2.2.0.jar -> io.gatling.http.protocol.HttpProtocolBuilder -C:\Users\Ivan Paolillo\.m2\repository\io\gatling\gatling-jdbc\2.2.0\gatling-jdbc-2.2.0.jar -> io.gatling.jdbc.Predef$ -C:\Users\Ivan Paolillo\.m2\repository\io\gatling\gatling-recorder\2.2.0\gatling-recorder-2.2.0.jar -> io.gatling.recorder.GatlingRecorder$ -internal apis: -4 items -C:\develop\git\tutorials\gatling-loadtest-demo\src\test\scala\Engine.scala -> -rO0ABXNyABB4c2J0aS5hcGkuU291cmNlFlpwRASfbtoCAAZJAAdhcGlIYXNoWgAIaGFzTWFjcm9MABhfaW50ZXJuYWxPbmx5X25hbWVIYXNoZXN0ACRMeHNidGkvYXBpL19pbnRlcm5hbE9ubHlfTmFtZUhhc2hlcztMAANhcGl0ABVMeHNidGkvYXBpL1NvdXJjZUFQSTtMAAtjb21waWxhdGlvbnQAF0x4c2J0aS9hcGkvQ29tcGlsYXRpb247WwAEaGFzaHQAAltCeHA7lBuUAHNyACJ4c2J0aS5hcGkuX2ludGVybmFsT25seV9OYW1lSGFzaGVzVNq+mfrU7EwCAAJbAA9pbXBsaWNpdE1lbWJlcnN0ACNbTHhzYnRpL2FwaS9faW50ZXJuYWxPbmx5X05hbWVIYXNoO1sADnJlZ3VsYXJNZW1iZXJzcQB+AAd4cHVyACNbTHhzYnRpLmFwaS5faW50ZXJuYWxPbmx5X05hbWVIYXNoO0lagLbdlov0AgAAeHAAAAAAdXEAfgAJAAAAAHNyABN4c2J0aS5hcGkuU291cmNlQVBJuV6n+SkjOKQCAAJbAAtkZWZpbml0aW9uc3QAF1tMeHNidGkvYXBpL0RlZmluaXRpb247WwAIcGFja2FnZXN0ABRbTHhzYnRpL2FwaS9QYWNrYWdlO3hwdXIAF1tMeHNidGkuYXBpLkRlZmluaXRpb247iMlc57TjXg4CAAB4cAAAAAFzcgATeHNidGkuYXBpLkNsYXNzTGlrZYM0HKHfsJdsAgAETAAOZGVmaW5pdGlvblR5cGV0ABpMeHNidGkvYXBpL0RlZmluaXRpb25UeXBlO1sAEHNhdmVkQW5ub3RhdGlvbnN0ABNbTGphdmEvbGFuZy9TdHJpbmc7TAAIc2VsZlR5cGV0ABBMeHNidGkvYXBpL0xhenk7TAAJc3RydWN0dXJlcQB+ABV4cgAheHNidGkuYXBpLlBhcmFtZXRlcml6ZWREZWZpbml0aW9u+RFusdVQPOICAAFbAA50eXBlUGFyYW1ldGVyc3QAGltMeHNidGkvYXBpL1R5cGVQYXJhbWV0ZXI7eHIAFHhzYnRpLmFwaS5EZWZpbml0aW9uhyob6HFC40YCAARMAAZhY2Nlc3N0ABJMeHNidGkvYXBpL0FjY2VzcztbAAthbm5vdGF0aW9uc3QAF1tMeHNidGkvYXBpL0Fubm90YXRpb247TAAJbW9kaWZpZXJzdAAVTHhzYnRpL2FwaS9Nb2RpZmllcnM7TAAEbmFtZXQAEkxqYXZhL2xhbmcvU3RyaW5nO3hwc3IAEHhzYnRpLmFwaS5QdWJsaWO6WD2ubC1gQgIAAHhyABB4c2J0aS5hcGkuQWNjZXNz3WKa+B1jMUgCAAB4cHVyABdbTHhzYnRpLmFwaS5Bbm5vdGF0aW9uO+uX6xkQ9o1IAgAAeHAAAAAAc3IAE3hzYnRpLmFwaS5Nb2RpZmllcnPHERMhaZzcJAIAAUIABWZsYWdzeHAAdAAGRW5naW5ldXIAGltMeHNidGkuYXBpLlR5cGVQYXJhbWV0ZXI72W0mDyid8rYCAAB4cAAAAAB+cgAYeHNidGkuYXBpLkRlZmluaXRpb25UeXBlAAAAAAAAAAASAAB4cgAOamF2YS5sYW5nLkVudW0AAAAAAAAAABIAAHhwdAAGTW9kdWxldXIAE1tMamF2YS5sYW5nLlN0cmluZzut0lbn6R17RwIAAHhwAAAAAnQAEHNjYWxhLmRlcHJlY2F0ZWR0ABpzY2FsYS5kZXByZWNhdGVkT3ZlcnJpZGluZ3NyABN4c2J0aS5TYWZlTGF6eSRJbXBsO5FPEfRFTMkCAANaAAhiaXRtYXAkMEwAAl90dAASTGphdmEvbGFuZy9PYmplY3Q7TAAEZXZhbHQAEUxzY2FsYS9GdW5jdGlvbjA7eHIAFnhzYnRpLmFwaS5BYnN0cmFjdExhennTd7UBX7vnoAIAAHhwAXNyABN4c2J0aS5hcGkuRW1wdHlUeXBlvP2eRkk7iSQCAAB4cgAUeHNidGkuYXBpLlNpbXBsZVR5cGVyeGKIISO/QAIAAHhyAA54c2J0aS5hcGkuVHlwZT9q2SEWSarKAgAAeHBwc3EAfgAwAXNyABN4c2J0aS5hcGkuU3RydWN0dXJlqar5gJNv2AACAANMAAhkZWNsYXJlZHEAfgAVTAAJaW5oZXJpdGVkcQB+ABVMAAdwYXJlbnRzcQB+ABV4cQB+ADdzcQB+ADABdXEAfgAQAAAAAHBzcQB+ADABdXEAfgAQAAAAAXNyAA14c2J0aS5hcGkuRGVmUr6f4ny0NmkCAAJMAApyZXR1cm5UeXBldAAQTHhzYnRpL2FwaS9UeXBlO1sAD3ZhbHVlUGFyYW1ldGVyc3QAGltMeHNidGkvYXBpL1BhcmFtZXRlckxpc3Q7eHEAfgAWcQB+ACB1cQB+ACEAAAABc3IAFHhzYnRpLmFwaS5Bbm5vdGF0aW9u3g6BovZcCrICAAJbAAlhcmd1bWVudHN0AB9bTHhzYnRpL2FwaS9Bbm5vdGF0aW9uQXJndW1lbnQ7TAAEYmFzZXEAfgBBeHB1cgAfW0x4c2J0aS5hcGkuQW5ub3RhdGlvbkFyZ3VtZW50O1Gdpo84JQ94AgAAeHAAAAABc3IAHHhzYnRpLmFwaS5Bbm5vdGF0aW9uQXJndW1lbnTWRbHYAxsXfAIAAkwABG5hbWVxAH4AHEwABXZhbHVlcQB+ABx4cHQAAHQAKigibWFpbiBzaG91bGQgbm90IGJlIG92ZXJyaWRkZW4iLCIyLjExLjAiKXNyABR4c2J0aS5hcGkuUHJvamVjdGlvbvPSjVTpRaQtAgACTAACaWRxAH4AHEwABnByZWZpeHQAFkx4c2J0aS9hcGkvU2ltcGxlVHlwZTt4cQB+ADZ0ABRkZXByZWNhdGVkT3ZlcnJpZGluZ3NyABN4c2J0aS5hcGkuU2luZ2xldG9u/Kdf+M9W5EYCAAFMAARwYXRodAAQTHhzYnRpL2FwaS9QYXRoO3hxAH4ANnNyAA54c2J0aS5hcGkuUGF0aJs9XAjOpSeEAgABWwAKY29tcG9uZW50c3QAGltMeHNidGkvYXBpL1BhdGhDb21wb25lbnQ7eHB1cgAaW0x4c2J0aS5hcGkuUGF0aENvbXBvbmVudDtD2gl0LWcWdAIAAHhwAAAAAnNyAAx4c2J0aS5hcGkuSWSYMmyLN1PEQAIAAUwAAmlkcQB+ABx4cgAXeHNidGkuYXBpLlBhdGhDb21wb25lbnRfmiJbLoafvAIAAHhwdAAFc2NhbGFzcgAOeHNidGkuYXBpLlRoaXPbCe2mzFpAXAIAAHhxAH4AW3NxAH4AIwB0AARtYWludXEAfgAmAAAAAHNxAH4ATnQABFVuaXRxAH4AVHVyABpbTHhzYnRpLmFwaS5QYXJhbWV0ZXJMaXN0O/XTOh3ys3DuAgAAeHAAAAABc3IAF3hzYnRpLmFwaS5QYXJhbWV0ZXJMaXN01sW8HGRJdOMCAAJaAAppc0ltcGxpY2l0WwAKcGFyYW1ldGVyc3QAHFtMeHNidGkvYXBpL01ldGhvZFBhcmFtZXRlcjt4cAB1cgAcW0x4c2J0aS5hcGkuTWV0aG9kUGFyYW1ldGVyO8+4xV2l3bVtAgAAeHAAAAABc3IAGXhzYnRpLmFwaS5NZXRob2RQYXJhbWV0ZXIfRa4X00mw6gIABFoACmhhc0RlZmF1bHRMAAhtb2RpZmllcnQAHUx4c2J0aS9hcGkvUGFyYW1ldGVyTW9kaWZpZXI7TAAEbmFtZXEAfgAcTAADdHBlcQB+AEF4cAB+cgAbeHNidGkuYXBpLlBhcmFtZXRlck1vZGlmaWVyAAAAAAAAAAASAAB4cQB+ACl0AAVQbGFpbnQABGFyZ3NzcgAXeHNidGkuYXBpLlBhcmFtZXRlcml6ZWQWbO5pA8m7fwIAAkwACGJhc2VUeXBlcQB+AE9bAA10eXBlQXJndW1lbnRzdAARW0x4c2J0aS9hcGkvVHlwZTt4cQB+ADZzcQB+AE50AAVBcnJheXEAfgBUdXIAEVtMeHNidGkuYXBpLlR5cGU7dP+lWnv56UECAAB4cAAAAAFzcQB+AE50AAZTdHJpbmdzcQB+AFJzcQB+AFV1cQB+AFgAAAADc3EAfgBadAAEamF2YXNxAH4AWnQABGxhbmdxAH4AX3BzcQB+ADABdXEAfgB4AAAABHNxAH4ATnQAA0FwcHEAfgBUc3EAfgBOdAALRGVsYXllZEluaXRxAH4AVHNxAH4ATnQABk9iamVjdHEAfgB8c3EAfgBOdAADQW55cQB+AFRwcHVyABRbTHhzYnRpLmFwaS5QYWNrYWdlO1sTGTdwpyehAgAAeHAAAAAAc3IAFXhzYnRpLmFwaS5Db21waWxhdGlvbu364MNq6KBCAgACSgAJc3RhcnRUaW1lWwAHb3V0cHV0c3QAGltMeHNidGkvYXBpL091dHB1dFNldHRpbmc7eHAAAAFU8nXEpnVyABpbTHhzYnRpLmFwaS5PdXRwdXRTZXR0aW5nO39qwvOnh6VCAgAAeHAAAAACc3IAF3hzYnRpLmFwaS5PdXRwdXRTZXR0aW5netmaR3T7HXsCAAJMAA9vdXRwdXREaXJlY3RvcnlxAH4AHEwAD3NvdXJjZURpcmVjdG9yeXEAfgAceHB0AEJDOlxkZXZlbG9wXGdpdFx0dXRvcmlhbHNcZ2F0bGluZy1sb2FkdGVzdC1kZW1vXHRhcmdldFx0ZXN0LWNsYXNzZXN0AD1DOlxkZXZlbG9wXGdpdFx0dXRvcmlhbHNcZ2F0bGluZy1sb2FkdGVzdC1kZW1vXHNyY1x0ZXN0XHNjYWxhc3EAfgCUdABCQzpcZGV2ZWxvcFxnaXRcdHV0b3JpYWxzXGdhdGxpbmctbG9hZHRlc3QtZGVtb1x0YXJnZXRcdGVzdC1jbGFzc2VzdABBQzpcZGV2ZWxvcFxnaXRcdHV0b3JpYWxzXGdhdGxpbmctbG9hZHRlc3QtZGVtb1xzcmNcdGVzdFxyZXNvdXJjZXN1cgACW0Ks8xf4BghU4AIAAHhwAAAAFOmLrPiahL5l0qEx+n4HLU9uvvid -C:\develop\git\tutorials\gatling-loadtest-demo\src\test\scala\IDEPathHelper.scala -> -rO0ABXNyABB4c2J0aS5hcGkuU291cmNlFlpwRASfbtoCAAZJAAdhcGlIYXNoWgAIaGFzTWFjcm9MABhfaW50ZXJuYWxPbmx5X25hbWVIYXNoZXN0ACRMeHNidGkvYXBpL19pbnRlcm5hbE9ubHlfTmFtZUhhc2hlcztMAANhcGl0ABVMeHNidGkvYXBpL1NvdXJjZUFQSTtMAAtjb21waWxhdGlvbnQAF0x4c2J0aS9hcGkvQ29tcGlsYXRpb247WwAEaGFzaHQAAltCeHCXMg60AHNyACJ4c2J0aS5hcGkuX2ludGVybmFsT25seV9OYW1lSGFzaGVzVNq+mfrU7EwCAAJbAA9pbXBsaWNpdE1lbWJlcnN0ACNbTHhzYnRpL2FwaS9faW50ZXJuYWxPbmx5X05hbWVIYXNoO1sADnJlZ3VsYXJNZW1iZXJzcQB+AAd4cHVyACNbTHhzYnRpLmFwaS5faW50ZXJuYWxPbmx5X05hbWVIYXNoO0lagLbdlov0AgAAeHAAAAAAdXEAfgAJAAAAAHNyABN4c2J0aS5hcGkuU291cmNlQVBJuV6n+SkjOKQCAAJbAAtkZWZpbml0aW9uc3QAF1tMeHNidGkvYXBpL0RlZmluaXRpb247WwAIcGFja2FnZXN0ABRbTHhzYnRpL2FwaS9QYWNrYWdlO3hwdXIAF1tMeHNidGkuYXBpLkRlZmluaXRpb247iMlc57TjXg4CAAB4cAAAAAFzcgATeHNidGkuYXBpLkNsYXNzTGlrZYM0HKHfsJdsAgAETAAOZGVmaW5pdGlvblR5cGV0ABpMeHNidGkvYXBpL0RlZmluaXRpb25UeXBlO1sAEHNhdmVkQW5ub3RhdGlvbnN0ABNbTGphdmEvbGFuZy9TdHJpbmc7TAAIc2VsZlR5cGV0ABBMeHNidGkvYXBpL0xhenk7TAAJc3RydWN0dXJlcQB+ABV4cgAheHNidGkuYXBpLlBhcmFtZXRlcml6ZWREZWZpbml0aW9u+RFusdVQPOICAAFbAA50eXBlUGFyYW1ldGVyc3QAGltMeHNidGkvYXBpL1R5cGVQYXJhbWV0ZXI7eHIAFHhzYnRpLmFwaS5EZWZpbml0aW9uhyob6HFC40YCAARMAAZhY2Nlc3N0ABJMeHNidGkvYXBpL0FjY2VzcztbAAthbm5vdGF0aW9uc3QAF1tMeHNidGkvYXBpL0Fubm90YXRpb247TAAJbW9kaWZpZXJzdAAVTHhzYnRpL2FwaS9Nb2RpZmllcnM7TAAEbmFtZXQAEkxqYXZhL2xhbmcvU3RyaW5nO3hwc3IAEHhzYnRpLmFwaS5QdWJsaWO6WD2ubC1gQgIAAHhyABB4c2J0aS5hcGkuQWNjZXNz3WKa+B1jMUgCAAB4cHVyABdbTHhzYnRpLmFwaS5Bbm5vdGF0aW9uO+uX6xkQ9o1IAgAAeHAAAAAAc3IAE3hzYnRpLmFwaS5Nb2RpZmllcnPHERMhaZzcJAIAAUIABWZsYWdzeHAAdAANSURFUGF0aEhlbHBlcnVyABpbTHhzYnRpLmFwaS5UeXBlUGFyYW1ldGVyO9ltJg8onfK2AgAAeHAAAAAAfnIAGHhzYnRpLmFwaS5EZWZpbml0aW9uVHlwZQAAAAAAAAAAEgAAeHIADmphdmEubGFuZy5FbnVtAAAAAAAAAAASAAB4cHQABk1vZHVsZXVyABNbTGphdmEubGFuZy5TdHJpbmc7rdJW5+kde0cCAAB4cAAAAABzcgATeHNidGkuU2FmZUxhenkkSW1wbDuRTxH0RUzJAgADWgAIYml0bWFwJDBMAAJfdHQAEkxqYXZhL2xhbmcvT2JqZWN0O0wABGV2YWx0ABFMc2NhbGEvRnVuY3Rpb24wO3hyABZ4c2J0aS5hcGkuQWJzdHJhY3RMYXp503e1AV+756ACAAB4cAFzcgATeHNidGkuYXBpLkVtcHR5VHlwZbz9nkZJO4kkAgAAeHIAFHhzYnRpLmFwaS5TaW1wbGVUeXBlcnhiiCEjv0ACAAB4cgAOeHNidGkuYXBpLlR5cGU/atkhFkmqygIAAHhwcHNxAH4ALgFzcgATeHNidGkuYXBpLlN0cnVjdHVyZamq+YCTb9gAAgADTAAIZGVjbGFyZWRxAH4AFUwACWluaGVyaXRlZHEAfgAVTAAHcGFyZW50c3EAfgAVeHEAfgA1c3EAfgAuAXVxAH4AEAAAAABwc3EAfgAuAXVxAH4AEAAAAABwc3EAfgAuAXVyABFbTHhzYnRpLmFwaS5UeXBlO3T/pVp7+elBAgAAeHAAAAACc3IAFHhzYnRpLmFwaS5Qcm9qZWN0aW9u89KNVOlFpC0CAAJMAAJpZHEAfgAcTAAGcHJlZml4dAAWTHhzYnRpL2FwaS9TaW1wbGVUeXBlO3hxAH4ANHQABk9iamVjdHNyABN4c2J0aS5hcGkuU2luZ2xldG9u/Kdf+M9W5EYCAAFMAARwYXRodAAQTHhzYnRpL2FwaS9QYXRoO3hxAH4ANHNyAA54c2J0aS5hcGkuUGF0aJs9XAjOpSeEAgABWwAKY29tcG9uZW50c3QAGltMeHNidGkvYXBpL1BhdGhDb21wb25lbnQ7eHB1cgAaW0x4c2J0aS5hcGkuUGF0aENvbXBvbmVudDtD2gl0LWcWdAIAAHhwAAAAA3NyAAx4c2J0aS5hcGkuSWSYMmyLN1PEQAIAAUwAAmlkcQB+ABx4cgAXeHNidGkuYXBpLlBhdGhDb21wb25lbnRfmiJbLoafvAIAAHhwdAAEamF2YXNxAH4ATXQABGxhbmdzcgAOeHNidGkuYXBpLlRoaXPbCe2mzFpAXAIAAHhxAH4ATnNxAH4AQXQAA0FueXNxAH4ARXNxAH4ASHVxAH4ASwAAAAJzcQB+AE10AAVzY2FsYXEAfgBUcHB1cgAUW0x4c2J0aS5hcGkuUGFja2FnZTtbExk3cKcnoQIAAHhwAAAAAHNyABV4c2J0aS5hcGkuQ29tcGlsYXRpb27t+uDDauigQgIAAkoACXN0YXJ0VGltZVsAB291dHB1dHN0ABpbTHhzYnRpL2FwaS9PdXRwdXRTZXR0aW5nO3hwAAABVPJ1xKZ1cgAaW0x4c2J0aS5hcGkuT3V0cHV0U2V0dGluZzt/asLzp4elQgIAAHhwAAAAAnNyABd4c2J0aS5hcGkuT3V0cHV0U2V0dGluZ3rZmkd0+x17AgACTAAPb3V0cHV0RGlyZWN0b3J5cQB+ABxMAA9zb3VyY2VEaXJlY3RvcnlxAH4AHHhwdABCQzpcZGV2ZWxvcFxnaXRcdHV0b3JpYWxzXGdhdGxpbmctbG9hZHRlc3QtZGVtb1x0YXJnZXRcdGVzdC1jbGFzc2VzdAA9QzpcZGV2ZWxvcFxnaXRcdHV0b3JpYWxzXGdhdGxpbmctbG9hZHRlc3QtZGVtb1xzcmNcdGVzdFxzY2FsYXNxAH4AY3QAQkM6XGRldmVsb3BcZ2l0XHR1dG9yaWFsc1xnYXRsaW5nLWxvYWR0ZXN0LWRlbW9cdGFyZ2V0XHRlc3QtY2xhc3Nlc3QAQUM6XGRldmVsb3BcZ2l0XHR1dG9yaWFsc1xnYXRsaW5nLWxvYWR0ZXN0LWRlbW9cc3JjXHRlc3RccmVzb3VyY2VzdXIAAltCrPMX+AYIVOACAAB4cAAAABQgJVtmAgpAxn21L4JI+rfjJQ/JQA== -C:\develop\git\tutorials\gatling-loadtest-demo\src\test\scala\org\baeldung\RecordedSimulation.scala -> -rO0ABXNyABB4c2J0aS5hcGkuU291cmNlFlpwRASfbtoCAAZJAAdhcGlIYXNoWgAIaGFzTWFjcm9MABhfaW50ZXJuYWxPbmx5X25hbWVIYXNoZXN0ACRMeHNidGkvYXBpL19pbnRlcm5hbE9ubHlfTmFtZUhhc2hlcztMAANhcGl0ABVMeHNidGkvYXBpL1NvdXJjZUFQSTtMAAtjb21waWxhdGlvbnQAF0x4c2J0aS9hcGkvQ29tcGlsYXRpb247WwAEaGFzaHQAAltCeHARTQnpAHNyACJ4c2J0aS5hcGkuX2ludGVybmFsT25seV9OYW1lSGFzaGVzVNq+mfrU7EwCAAJbAA9pbXBsaWNpdE1lbWJlcnN0ACNbTHhzYnRpL2FwaS9faW50ZXJuYWxPbmx5X05hbWVIYXNoO1sADnJlZ3VsYXJNZW1iZXJzcQB+AAd4cHVyACNbTHhzYnRpLmFwaS5faW50ZXJuYWxPbmx5X05hbWVIYXNoO0lagLbdlov0AgAAeHAAAAAAdXEAfgAJAAAAAHNyABN4c2J0aS5hcGkuU291cmNlQVBJuV6n+SkjOKQCAAJbAAtkZWZpbml0aW9uc3QAF1tMeHNidGkvYXBpL0RlZmluaXRpb247WwAIcGFja2FnZXN0ABRbTHhzYnRpL2FwaS9QYWNrYWdlO3hwdXIAF1tMeHNidGkuYXBpLkRlZmluaXRpb247iMlc57TjXg4CAAB4cAAAAAFzcgATeHNidGkuYXBpLkNsYXNzTGlrZYM0HKHfsJdsAgAETAAOZGVmaW5pdGlvblR5cGV0ABpMeHNidGkvYXBpL0RlZmluaXRpb25UeXBlO1sAEHNhdmVkQW5ub3RhdGlvbnN0ABNbTGphdmEvbGFuZy9TdHJpbmc7TAAIc2VsZlR5cGV0ABBMeHNidGkvYXBpL0xhenk7TAAJc3RydWN0dXJlcQB+ABV4cgAheHNidGkuYXBpLlBhcmFtZXRlcml6ZWREZWZpbml0aW9u+RFusdVQPOICAAFbAA50eXBlUGFyYW1ldGVyc3QAGltMeHNidGkvYXBpL1R5cGVQYXJhbWV0ZXI7eHIAFHhzYnRpLmFwaS5EZWZpbml0aW9uhyob6HFC40YCAARMAAZhY2Nlc3N0ABJMeHNidGkvYXBpL0FjY2VzcztbAAthbm5vdGF0aW9uc3QAF1tMeHNidGkvYXBpL0Fubm90YXRpb247TAAJbW9kaWZpZXJzdAAVTHhzYnRpL2FwaS9Nb2RpZmllcnM7TAAEbmFtZXQAEkxqYXZhL2xhbmcvU3RyaW5nO3hwc3IAEHhzYnRpLmFwaS5QdWJsaWO6WD2ubC1gQgIAAHhyABB4c2J0aS5hcGkuQWNjZXNz3WKa+B1jMUgCAAB4cHVyABdbTHhzYnRpLmFwaS5Bbm5vdGF0aW9uO+uX6xkQ9o1IAgAAeHAAAAAAc3IAE3hzYnRpLmFwaS5Nb2RpZmllcnPHERMhaZzcJAIAAUIABWZsYWdzeHAAdAAfb3JnLmJhZWxkdW5nLlJlY29yZGVkU2ltdWxhdGlvbnVyABpbTHhzYnRpLmFwaS5UeXBlUGFyYW1ldGVyO9ltJg8onfK2AgAAeHAAAAAAfnIAGHhzYnRpLmFwaS5EZWZpbml0aW9uVHlwZQAAAAAAAAAAEgAAeHIADmphdmEubGFuZy5FbnVtAAAAAAAAAAASAAB4cHQACENsYXNzRGVmdXIAE1tMamF2YS5sYW5nLlN0cmluZzut0lbn6R17RwIAAHhwAAAAAHNyABN4c2J0aS5TYWZlTGF6eSRJbXBsO5FPEfRFTMkCAANaAAhiaXRtYXAkMEwAAl90dAASTGphdmEvbGFuZy9PYmplY3Q7TAAEZXZhbHQAEUxzY2FsYS9GdW5jdGlvbjA7eHIAFnhzYnRpLmFwaS5BYnN0cmFjdExhennTd7UBX7vnoAIAAHhwAXNyABN4c2J0aS5hcGkuRW1wdHlUeXBlvP2eRkk7iSQCAAB4cgAUeHNidGkuYXBpLlNpbXBsZVR5cGVyeGKIISO/QAIAAHhyAA54c2J0aS5hcGkuVHlwZT9q2SEWSarKAgAAeHBwc3EAfgAuAXNyABN4c2J0aS5hcGkuU3RydWN0dXJlqar5gJNv2AACAANMAAhkZWNsYXJlZHEAfgAVTAAJaW5oZXJpdGVkcQB+ABVMAAdwYXJlbnRzcQB+ABV4cQB+ADVzcQB+AC4BdXEAfgAQAAAAAHBzcQB+AC4BdXEAfgAQAAAAAHBzcQB+AC4BdXIAEVtMeHNidGkuYXBpLlR5cGU7dP+lWnv56UECAAB4cAAAAANzcgAUeHNidGkuYXBpLlByb2plY3Rpb27z0o1U6UWkLQIAAkwAAmlkcQB+ABxMAAZwcmVmaXh0ABZMeHNidGkvYXBpL1NpbXBsZVR5cGU7eHEAfgA0dAAKU2ltdWxhdGlvbnNyABN4c2J0aS5hcGkuU2luZ2xldG9u/Kdf+M9W5EYCAAFMAARwYXRodAAQTHhzYnRpL2FwaS9QYXRoO3hxAH4ANHNyAA54c2J0aS5hcGkuUGF0aJs9XAjOpSeEAgABWwAKY29tcG9uZW50c3QAGltMeHNidGkvYXBpL1BhdGhDb21wb25lbnQ7eHB1cgAaW0x4c2J0aS5hcGkuUGF0aENvbXBvbmVudDtD2gl0LWcWdAIAAHhwAAAABXNyAAx4c2J0aS5hcGkuSWSYMmyLN1PEQAIAAUwAAmlkcQB+ABx4cgAXeHNidGkuYXBpLlBhdGhDb21wb25lbnRfmiJbLoafvAIAAHhwdAACaW9zcQB+AE10AAdnYXRsaW5nc3EAfgBNdAAEY29yZXNxAH4ATXQACHNjZW5hcmlvc3IADnhzYnRpLmFwaS5UaGlz2wntpsxaQFwCAAB4cQB+AE5zcQB+AEF0AAZPYmplY3RzcQB+AEVzcQB+AEh1cQB+AEsAAAADc3EAfgBNdAAEamF2YXNxAH4ATXQABGxhbmdxAH4AWHNxAH4AQXQAA0FueXNxAH4ARXNxAH4ASHVxAH4ASwAAAAJzcQB+AE10AAVzY2FsYXEAfgBYcHB1cgAUW0x4c2J0aS5hcGkuUGFja2FnZTtbExk3cKcnoQIAAHhwAAAAAnNyABF4c2J0aS5hcGkuUGFja2FnZX5Zj/auzjlYAgABTAAEbmFtZXEAfgAceHB0AAxvcmcuYmFlbGR1bmdzcQB+AGt0AANvcmdzcgAVeHNidGkuYXBpLkNvbXBpbGF0aW9u7frgw2rooEICAAJKAAlzdGFydFRpbWVbAAdvdXRwdXRzdAAaW0x4c2J0aS9hcGkvT3V0cHV0U2V0dGluZzt4cAAAAVTydcSmdXIAGltMeHNidGkuYXBpLk91dHB1dFNldHRpbmc7f2rC86eHpUICAAB4cAAAAAJzcgAXeHNidGkuYXBpLk91dHB1dFNldHRpbmd62ZpHdPsdewIAAkwAD291dHB1dERpcmVjdG9yeXEAfgAcTAAPc291cmNlRGlyZWN0b3J5cQB+ABx4cHQAQkM6XGRldmVsb3BcZ2l0XHR1dG9yaWFsc1xnYXRsaW5nLWxvYWR0ZXN0LWRlbW9cdGFyZ2V0XHRlc3QtY2xhc3Nlc3QAPUM6XGRldmVsb3BcZ2l0XHR1dG9yaWFsc1xnYXRsaW5nLWxvYWR0ZXN0LWRlbW9cc3JjXHRlc3Rcc2NhbGFzcQB+AHV0AEJDOlxkZXZlbG9wXGdpdFx0dXRvcmlhbHNcZ2F0bGluZy1sb2FkdGVzdC1kZW1vXHRhcmdldFx0ZXN0LWNsYXNzZXN0AEFDOlxkZXZlbG9wXGdpdFx0dXRvcmlhbHNcZ2F0bGluZy1sb2FkdGVzdC1kZW1vXHNyY1x0ZXN0XHJlc291cmNlc3VyAAJbQqzzF/gGCFTgAgAAeHAAAAAUHUqrk17SaqP+5ir/W8nR0tvD93Y= -C:\develop\git\tutorials\gatling-loadtest-demo\src\test\scala\Recorder.scala -> -rO0ABXNyABB4c2J0aS5hcGkuU291cmNlFlpwRASfbtoCAAZJAAdhcGlIYXNoWgAIaGFzTWFjcm9MABhfaW50ZXJuYWxPbmx5X25hbWVIYXNoZXN0ACRMeHNidGkvYXBpL19pbnRlcm5hbE9ubHlfTmFtZUhhc2hlcztMAANhcGl0ABVMeHNidGkvYXBpL1NvdXJjZUFQSTtMAAtjb21waWxhdGlvbnQAF0x4c2J0aS9hcGkvQ29tcGlsYXRpb247WwAEaGFzaHQAAltCeHD3nMHWAHNyACJ4c2J0aS5hcGkuX2ludGVybmFsT25seV9OYW1lSGFzaGVzVNq+mfrU7EwCAAJbAA9pbXBsaWNpdE1lbWJlcnN0ACNbTHhzYnRpL2FwaS9faW50ZXJuYWxPbmx5X05hbWVIYXNoO1sADnJlZ3VsYXJNZW1iZXJzcQB+AAd4cHVyACNbTHhzYnRpLmFwaS5faW50ZXJuYWxPbmx5X05hbWVIYXNoO0lagLbdlov0AgAAeHAAAAAAdXEAfgAJAAAAAHNyABN4c2J0aS5hcGkuU291cmNlQVBJuV6n+SkjOKQCAAJbAAtkZWZpbml0aW9uc3QAF1tMeHNidGkvYXBpL0RlZmluaXRpb247WwAIcGFja2FnZXN0ABRbTHhzYnRpL2FwaS9QYWNrYWdlO3hwdXIAF1tMeHNidGkuYXBpLkRlZmluaXRpb247iMlc57TjXg4CAAB4cAAAAAFzcgATeHNidGkuYXBpLkNsYXNzTGlrZYM0HKHfsJdsAgAETAAOZGVmaW5pdGlvblR5cGV0ABpMeHNidGkvYXBpL0RlZmluaXRpb25UeXBlO1sAEHNhdmVkQW5ub3RhdGlvbnN0ABNbTGphdmEvbGFuZy9TdHJpbmc7TAAIc2VsZlR5cGV0ABBMeHNidGkvYXBpL0xhenk7TAAJc3RydWN0dXJlcQB+ABV4cgAheHNidGkuYXBpLlBhcmFtZXRlcml6ZWREZWZpbml0aW9u+RFusdVQPOICAAFbAA50eXBlUGFyYW1ldGVyc3QAGltMeHNidGkvYXBpL1R5cGVQYXJhbWV0ZXI7eHIAFHhzYnRpLmFwaS5EZWZpbml0aW9uhyob6HFC40YCAARMAAZhY2Nlc3N0ABJMeHNidGkvYXBpL0FjY2VzcztbAAthbm5vdGF0aW9uc3QAF1tMeHNidGkvYXBpL0Fubm90YXRpb247TAAJbW9kaWZpZXJzdAAVTHhzYnRpL2FwaS9Nb2RpZmllcnM7TAAEbmFtZXQAEkxqYXZhL2xhbmcvU3RyaW5nO3hwc3IAEHhzYnRpLmFwaS5QdWJsaWO6WD2ubC1gQgIAAHhyABB4c2J0aS5hcGkuQWNjZXNz3WKa+B1jMUgCAAB4cHVyABdbTHhzYnRpLmFwaS5Bbm5vdGF0aW9uO+uX6xkQ9o1IAgAAeHAAAAAAc3IAE3hzYnRpLmFwaS5Nb2RpZmllcnPHERMhaZzcJAIAAUIABWZsYWdzeHAAdAAIUmVjb3JkZXJ1cgAaW0x4c2J0aS5hcGkuVHlwZVBhcmFtZXRlcjvZbSYPKJ3ytgIAAHhwAAAAAH5yABh4c2J0aS5hcGkuRGVmaW5pdGlvblR5cGUAAAAAAAAAABIAAHhyAA5qYXZhLmxhbmcuRW51bQAAAAAAAAAAEgAAeHB0AAZNb2R1bGV1cgATW0xqYXZhLmxhbmcuU3RyaW5nO63SVufpHXtHAgAAeHAAAAACdAAQc2NhbGEuZGVwcmVjYXRlZHQAGnNjYWxhLmRlcHJlY2F0ZWRPdmVycmlkaW5nc3IAE3hzYnRpLlNhZmVMYXp5JEltcGw7kU8R9EVMyQIAA1oACGJpdG1hcCQwTAACX3R0ABJMamF2YS9sYW5nL09iamVjdDtMAARldmFsdAARTHNjYWxhL0Z1bmN0aW9uMDt4cgAWeHNidGkuYXBpLkFic3RyYWN0TGF6edN3tQFfu+egAgAAeHABc3IAE3hzYnRpLmFwaS5FbXB0eVR5cGW8/Z5GSTuJJAIAAHhyABR4c2J0aS5hcGkuU2ltcGxlVHlwZXJ4YoghI79AAgAAeHIADnhzYnRpLmFwaS5UeXBlP2rZIRZJqsoCAAB4cHBzcQB+ADABc3IAE3hzYnRpLmFwaS5TdHJ1Y3R1cmWpqvmAk2/YAAIAA0wACGRlY2xhcmVkcQB+ABVMAAlpbmhlcml0ZWRxAH4AFUwAB3BhcmVudHNxAH4AFXhxAH4AN3NxAH4AMAF1cQB+ABAAAAAAcHNxAH4AMAF1cQB+ABAAAAABc3IADXhzYnRpLmFwaS5EZWZSvp/ifLQ2aQIAAkwACnJldHVyblR5cGV0ABBMeHNidGkvYXBpL1R5cGU7WwAPdmFsdWVQYXJhbWV0ZXJzdAAaW0x4c2J0aS9hcGkvUGFyYW1ldGVyTGlzdDt4cQB+ABZxAH4AIHVxAH4AIQAAAAFzcgAUeHNidGkuYXBpLkFubm90YXRpb27eDoGi9lwKsgIAAlsACWFyZ3VtZW50c3QAH1tMeHNidGkvYXBpL0Fubm90YXRpb25Bcmd1bWVudDtMAARiYXNlcQB+AEF4cHVyAB9bTHhzYnRpLmFwaS5Bbm5vdGF0aW9uQXJndW1lbnQ7UZ2mjzglD3gCAAB4cAAAAAFzcgAceHNidGkuYXBpLkFubm90YXRpb25Bcmd1bWVudNZFsdgDGxd8AgACTAAEbmFtZXEAfgAcTAAFdmFsdWVxAH4AHHhwdAAAdAAqKCJtYWluIHNob3VsZCBub3QgYmUgb3ZlcnJpZGRlbiIsIjIuMTEuMCIpc3IAFHhzYnRpLmFwaS5Qcm9qZWN0aW9u89KNVOlFpC0CAAJMAAJpZHEAfgAcTAAGcHJlZml4dAAWTHhzYnRpL2FwaS9TaW1wbGVUeXBlO3hxAH4ANnQAFGRlcHJlY2F0ZWRPdmVycmlkaW5nc3IAE3hzYnRpLmFwaS5TaW5nbGV0b278p1/4z1bkRgIAAUwABHBhdGh0ABBMeHNidGkvYXBpL1BhdGg7eHEAfgA2c3IADnhzYnRpLmFwaS5QYXRomz1cCM6lJ4QCAAFbAApjb21wb25lbnRzdAAaW0x4c2J0aS9hcGkvUGF0aENvbXBvbmVudDt4cHVyABpbTHhzYnRpLmFwaS5QYXRoQ29tcG9uZW50O0PaCXQtZxZ0AgAAeHAAAAACc3IADHhzYnRpLmFwaS5JZJgybIs3U8RAAgABTAACaWRxAH4AHHhyABd4c2J0aS5hcGkuUGF0aENvbXBvbmVudF+aIlsuhp+8AgAAeHB0AAVzY2FsYXNyAA54c2J0aS5hcGkuVGhpc9sJ7abMWkBcAgAAeHEAfgBbc3EAfgAjAHQABG1haW51cQB+ACYAAAAAc3EAfgBOdAAEVW5pdHEAfgBUdXIAGltMeHNidGkuYXBpLlBhcmFtZXRlckxpc3Q79dM6HfKzcO4CAAB4cAAAAAFzcgAXeHNidGkuYXBpLlBhcmFtZXRlckxpc3TWxbwcZEl04wIAAloACmlzSW1wbGljaXRbAApwYXJhbWV0ZXJzdAAcW0x4c2J0aS9hcGkvTWV0aG9kUGFyYW1ldGVyO3hwAHVyABxbTHhzYnRpLmFwaS5NZXRob2RQYXJhbWV0ZXI7z7jFXaXdtW0CAAB4cAAAAAFzcgAZeHNidGkuYXBpLk1ldGhvZFBhcmFtZXRlch9FrhfTSbDqAgAEWgAKaGFzRGVmYXVsdEwACG1vZGlmaWVydAAdTHhzYnRpL2FwaS9QYXJhbWV0ZXJNb2RpZmllcjtMAARuYW1lcQB+ABxMAAN0cGVxAH4AQXhwAH5yABt4c2J0aS5hcGkuUGFyYW1ldGVyTW9kaWZpZXIAAAAAAAAAABIAAHhxAH4AKXQABVBsYWludAAEYXJnc3NyABd4c2J0aS5hcGkuUGFyYW1ldGVyaXplZBZs7mkDybt/AgACTAAIYmFzZVR5cGVxAH4AT1sADXR5cGVBcmd1bWVudHN0ABFbTHhzYnRpL2FwaS9UeXBlO3hxAH4ANnNxAH4ATnQABUFycmF5cQB+AFR1cgARW0x4c2J0aS5hcGkuVHlwZTt0/6Vae/npQQIAAHhwAAAAAXNxAH4ATnQABlN0cmluZ3NxAH4AUnNxAH4AVXVxAH4AWAAAAANzcQB+AFp0AARqYXZhc3EAfgBadAAEbGFuZ3EAfgBfcHNxAH4AMAF1cQB+AHgAAAAEc3EAfgBOdAADQXBwcQB+AFRzcQB+AE50AAtEZWxheWVkSW5pdHEAfgBUc3EAfgBOdAAGT2JqZWN0cQB+AHxzcQB+AE50AANBbnlxAH4AVHBwdXIAFFtMeHNidGkuYXBpLlBhY2thZ2U7WxMZN3CnJ6ECAAB4cAAAAABzcgAVeHNidGkuYXBpLkNvbXBpbGF0aW9u7frgw2rooEICAAJKAAlzdGFydFRpbWVbAAdvdXRwdXRzdAAaW0x4c2J0aS9hcGkvT3V0cHV0U2V0dGluZzt4cAAAAVTydcSmdXIAGltMeHNidGkuYXBpLk91dHB1dFNldHRpbmc7f2rC86eHpUICAAB4cAAAAAJzcgAXeHNidGkuYXBpLk91dHB1dFNldHRpbmd62ZpHdPsdewIAAkwAD291dHB1dERpcmVjdG9yeXEAfgAcTAAPc291cmNlRGlyZWN0b3J5cQB+ABx4cHQAQkM6XGRldmVsb3BcZ2l0XHR1dG9yaWFsc1xnYXRsaW5nLWxvYWR0ZXN0LWRlbW9cdGFyZ2V0XHRlc3QtY2xhc3Nlc3QAPUM6XGRldmVsb3BcZ2l0XHR1dG9yaWFsc1xnYXRsaW5nLWxvYWR0ZXN0LWRlbW9cc3JjXHRlc3Rcc2NhbGFzcQB+AJR0AEJDOlxkZXZlbG9wXGdpdFx0dXRvcmlhbHNcZ2F0bGluZy1sb2FkdGVzdC1kZW1vXHRhcmdldFx0ZXN0LWNsYXNzZXN0AEFDOlxkZXZlbG9wXGdpdFx0dXRvcmlhbHNcZ2F0bGluZy1sb2FkdGVzdC1kZW1vXHNyY1x0ZXN0XHJlc291cmNlc3VyAAJbQqzzF/gGCFTgAgAAeHAAAAAUZn2oqdcS+YjtexS9+nspPHasO2E= -external apis: -0 items -source infos: -4 items -C:\develop\git\tutorials\gatling-loadtest-demo\src\test\scala\Engine.scala -> -AAAAAAAAAAA= -C:\develop\git\tutorials\gatling-loadtest-demo\src\test\scala\IDEPathHelper.scala -> -AAAAAAAAAAA= -C:\develop\git\tutorials\gatling-loadtest-demo\src\test\scala\org\baeldung\RecordedSimulation.scala -> -AAAAAAAAAAA= -C:\develop\git\tutorials\gatling-loadtest-demo\src\test\scala\Recorder.scala -> -AAAAAAAAAAA= -compilations: -17 items -00 -> rO0ABXNyABV4c2J0aS5hcGkuQ29tcGlsYXRpb27t+uDDauigQgIAAkoACXN0YXJ0VGltZVsAB291dHB1dHN0ABpbTHhzYnRpL2FwaS9PdXRwdXRTZXR0aW5nO3hwAAABVOxQus91cgAaW0x4c2J0aS5hcGkuT3V0cHV0U2V0dGluZzt/asLzp4elQgIAAHhwAAAAAnNyABd4c2J0aS5hcGkuT3V0cHV0U2V0dGluZ3rZmkd0+x17AgACTAAPb3V0cHV0RGlyZWN0b3J5dAASTGphdmEvbGFuZy9TdHJpbmc7TAAPc291cmNlRGlyZWN0b3J5cQB+AAZ4cHQAUUM6XGRldmVsb3Bcd29ya3NwYWNlc1x2anBvcnRhbFdvcmtzcGFjZVxnYXRsaW5nLWxvYWR0ZXN0LWRlbW9cdGFyZ2V0XHRlc3QtY2xhc3Nlc3QATEM6XGRldmVsb3Bcd29ya3NwYWNlc1x2anBvcnRhbFdvcmtzcGFjZVxnYXRsaW5nLWxvYWR0ZXN0LWRlbW9cc3JjXHRlc3Rcc2NhbGFzcQB+AAV0AFFDOlxkZXZlbG9wXHdvcmtzcGFjZXNcdmpwb3J0YWxXb3Jrc3BhY2VcZ2F0bGluZy1sb2FkdGVzdC1kZW1vXHRhcmdldFx0ZXN0LWNsYXNzZXN0AFBDOlxkZXZlbG9wXHdvcmtzcGFjZXNcdmpwb3J0YWxXb3Jrc3BhY2VcZ2F0bGluZy1sb2FkdGVzdC1kZW1vXHNyY1x0ZXN0XHJlc291cmNlcw== -01 -> rO0ABXNyABV4c2J0aS5hcGkuQ29tcGlsYXRpb27t+uDDauigQgIAAkoACXN0YXJ0VGltZVsAB291dHB1dHN0ABpbTHhzYnRpL2FwaS9PdXRwdXRTZXR0aW5nO3hwAAABVO1Iw051cgAaW0x4c2J0aS5hcGkuT3V0cHV0U2V0dGluZzt/asLzp4elQgIAAHhwAAAAAnNyABd4c2J0aS5hcGkuT3V0cHV0U2V0dGluZ3rZmkd0+x17AgACTAAPb3V0cHV0RGlyZWN0b3J5dAASTGphdmEvbGFuZy9TdHJpbmc7TAAPc291cmNlRGlyZWN0b3J5cQB+AAZ4cHQAUUM6XGRldmVsb3Bcd29ya3NwYWNlc1x2anBvcnRhbFdvcmtzcGFjZVxnYXRsaW5nLWxvYWR0ZXN0LWRlbW9cdGFyZ2V0XHRlc3QtY2xhc3Nlc3QATEM6XGRldmVsb3Bcd29ya3NwYWNlc1x2anBvcnRhbFdvcmtzcGFjZVxnYXRsaW5nLWxvYWR0ZXN0LWRlbW9cc3JjXHRlc3Rcc2NhbGFzcQB+AAV0AFFDOlxkZXZlbG9wXHdvcmtzcGFjZXNcdmpwb3J0YWxXb3Jrc3BhY2VcZ2F0bGluZy1sb2FkdGVzdC1kZW1vXHRhcmdldFx0ZXN0LWNsYXNzZXN0AFBDOlxkZXZlbG9wXHdvcmtzcGFjZXNcdmpwb3J0YWxXb3Jrc3BhY2VcZ2F0bGluZy1sb2FkdGVzdC1kZW1vXHNyY1x0ZXN0XHJlc291cmNlcw== -02 -> rO0ABXNyABV4c2J0aS5hcGkuQ29tcGlsYXRpb27t+uDDauigQgIAAkoACXN0YXJ0VGltZVsAB291dHB1dHN0ABpbTHhzYnRpL2FwaS9PdXRwdXRTZXR0aW5nO3hwAAABVO1LJxV1cgAaW0x4c2J0aS5hcGkuT3V0cHV0U2V0dGluZzt/asLzp4elQgIAAHhwAAAAAnNyABd4c2J0aS5hcGkuT3V0cHV0U2V0dGluZ3rZmkd0+x17AgACTAAPb3V0cHV0RGlyZWN0b3J5dAASTGphdmEvbGFuZy9TdHJpbmc7TAAPc291cmNlRGlyZWN0b3J5cQB+AAZ4cHQAUUM6XGRldmVsb3Bcd29ya3NwYWNlc1x2anBvcnRhbFdvcmtzcGFjZVxnYXRsaW5nLWxvYWR0ZXN0LWRlbW9cdGFyZ2V0XHRlc3QtY2xhc3Nlc3QATEM6XGRldmVsb3Bcd29ya3NwYWNlc1x2anBvcnRhbFdvcmtzcGFjZVxnYXRsaW5nLWxvYWR0ZXN0LWRlbW9cc3JjXHRlc3Rcc2NhbGFzcQB+AAV0AFFDOlxkZXZlbG9wXHdvcmtzcGFjZXNcdmpwb3J0YWxXb3Jrc3BhY2VcZ2F0bGluZy1sb2FkdGVzdC1kZW1vXHRhcmdldFx0ZXN0LWNsYXNzZXN0AFBDOlxkZXZlbG9wXHdvcmtzcGFjZXNcdmpwb3J0YWxXb3Jrc3BhY2VcZ2F0bGluZy1sb2FkdGVzdC1kZW1vXHNyY1x0ZXN0XHJlc291cmNlcw== -03 -> rO0ABXNyABV4c2J0aS5hcGkuQ29tcGlsYXRpb27t+uDDauigQgIAAkoACXN0YXJ0VGltZVsAB291dHB1dHN0ABpbTHhzYnRpL2FwaS9PdXRwdXRTZXR0aW5nO3hwAAABVO1LOZV1cgAaW0x4c2J0aS5hcGkuT3V0cHV0U2V0dGluZzt/asLzp4elQgIAAHhwAAAAAnNyABd4c2J0aS5hcGkuT3V0cHV0U2V0dGluZ3rZmkd0+x17AgACTAAPb3V0cHV0RGlyZWN0b3J5dAASTGphdmEvbGFuZy9TdHJpbmc7TAAPc291cmNlRGlyZWN0b3J5cQB+AAZ4cHQAUUM6XGRldmVsb3Bcd29ya3NwYWNlc1x2anBvcnRhbFdvcmtzcGFjZVxnYXRsaW5nLWxvYWR0ZXN0LWRlbW9cdGFyZ2V0XHRlc3QtY2xhc3Nlc3QATEM6XGRldmVsb3Bcd29ya3NwYWNlc1x2anBvcnRhbFdvcmtzcGFjZVxnYXRsaW5nLWxvYWR0ZXN0LWRlbW9cc3JjXHRlc3Rcc2NhbGFzcQB+AAV0AFFDOlxkZXZlbG9wXHdvcmtzcGFjZXNcdmpwb3J0YWxXb3Jrc3BhY2VcZ2F0bGluZy1sb2FkdGVzdC1kZW1vXHRhcmdldFx0ZXN0LWNsYXNzZXN0AFBDOlxkZXZlbG9wXHdvcmtzcGFjZXNcdmpwb3J0YWxXb3Jrc3BhY2VcZ2F0bGluZy1sb2FkdGVzdC1kZW1vXHNyY1x0ZXN0XHJlc291cmNlcw== -04 -> rO0ABXNyABV4c2J0aS5hcGkuQ29tcGlsYXRpb27t+uDDauigQgIAAkoACXN0YXJ0VGltZVsAB291dHB1dHN0ABpbTHhzYnRpL2FwaS9PdXRwdXRTZXR0aW5nO3hwAAABVO1QxNd1cgAaW0x4c2J0aS5hcGkuT3V0cHV0U2V0dGluZzt/asLzp4elQgIAAHhwAAAAAnNyABd4c2J0aS5hcGkuT3V0cHV0U2V0dGluZ3rZmkd0+x17AgACTAAPb3V0cHV0RGlyZWN0b3J5dAASTGphdmEvbGFuZy9TdHJpbmc7TAAPc291cmNlRGlyZWN0b3J5cQB+AAZ4cHQAUUM6XGRldmVsb3Bcd29ya3NwYWNlc1x2anBvcnRhbFdvcmtzcGFjZVxnYXRsaW5nLWxvYWR0ZXN0LWRlbW9cdGFyZ2V0XHRlc3QtY2xhc3Nlc3QATEM6XGRldmVsb3Bcd29ya3NwYWNlc1x2anBvcnRhbFdvcmtzcGFjZVxnYXRsaW5nLWxvYWR0ZXN0LWRlbW9cc3JjXHRlc3Rcc2NhbGFzcQB+AAV0AFFDOlxkZXZlbG9wXHdvcmtzcGFjZXNcdmpwb3J0YWxXb3Jrc3BhY2VcZ2F0bGluZy1sb2FkdGVzdC1kZW1vXHRhcmdldFx0ZXN0LWNsYXNzZXN0AFBDOlxkZXZlbG9wXHdvcmtzcGFjZXNcdmpwb3J0YWxXb3Jrc3BhY2VcZ2F0bGluZy1sb2FkdGVzdC1kZW1vXHNyY1x0ZXN0XHJlc291cmNlcw== -05 -> rO0ABXNyABV4c2J0aS5hcGkuQ29tcGlsYXRpb27t+uDDauigQgIAAkoACXN0YXJ0VGltZVsAB291dHB1dHN0ABpbTHhzYnRpL2FwaS9PdXRwdXRTZXR0aW5nO3hwAAABVO1U4651cgAaW0x4c2J0aS5hcGkuT3V0cHV0U2V0dGluZzt/asLzp4elQgIAAHhwAAAAAnNyABd4c2J0aS5hcGkuT3V0cHV0U2V0dGluZ3rZmkd0+x17AgACTAAPb3V0cHV0RGlyZWN0b3J5dAASTGphdmEvbGFuZy9TdHJpbmc7TAAPc291cmNlRGlyZWN0b3J5cQB+AAZ4cHQAUUM6XGRldmVsb3Bcd29ya3NwYWNlc1x2anBvcnRhbFdvcmtzcGFjZVxnYXRsaW5nLWxvYWR0ZXN0LWRlbW9cdGFyZ2V0XHRlc3QtY2xhc3Nlc3QATEM6XGRldmVsb3Bcd29ya3NwYWNlc1x2anBvcnRhbFdvcmtzcGFjZVxnYXRsaW5nLWxvYWR0ZXN0LWRlbW9cc3JjXHRlc3Rcc2NhbGFzcQB+AAV0AFFDOlxkZXZlbG9wXHdvcmtzcGFjZXNcdmpwb3J0YWxXb3Jrc3BhY2VcZ2F0bGluZy1sb2FkdGVzdC1kZW1vXHRhcmdldFx0ZXN0LWNsYXNzZXN0AFBDOlxkZXZlbG9wXHdvcmtzcGFjZXNcdmpwb3J0YWxXb3Jrc3BhY2VcZ2F0bGluZy1sb2FkdGVzdC1kZW1vXHNyY1x0ZXN0XHJlc291cmNlcw== -06 -> rO0ABXNyABV4c2J0aS5hcGkuQ29tcGlsYXRpb27t+uDDauigQgIAAkoACXN0YXJ0VGltZVsAB291dHB1dHN0ABpbTHhzYnRpL2FwaS9PdXRwdXRTZXR0aW5nO3hwAAABVO1kjrl1cgAaW0x4c2J0aS5hcGkuT3V0cHV0U2V0dGluZzt/asLzp4elQgIAAHhwAAAAAnNyABd4c2J0aS5hcGkuT3V0cHV0U2V0dGluZ3rZmkd0+x17AgACTAAPb3V0cHV0RGlyZWN0b3J5dAASTGphdmEvbGFuZy9TdHJpbmc7TAAPc291cmNlRGlyZWN0b3J5cQB+AAZ4cHQAUUM6XGRldmVsb3Bcd29ya3NwYWNlc1x2anBvcnRhbFdvcmtzcGFjZVxnYXRsaW5nLWxvYWR0ZXN0LWRlbW9cdGFyZ2V0XHRlc3QtY2xhc3Nlc3QATEM6XGRldmVsb3Bcd29ya3NwYWNlc1x2anBvcnRhbFdvcmtzcGFjZVxnYXRsaW5nLWxvYWR0ZXN0LWRlbW9cc3JjXHRlc3Rcc2NhbGFzcQB+AAV0AFFDOlxkZXZlbG9wXHdvcmtzcGFjZXNcdmpwb3J0YWxXb3Jrc3BhY2VcZ2F0bGluZy1sb2FkdGVzdC1kZW1vXHRhcmdldFx0ZXN0LWNsYXNzZXN0AFBDOlxkZXZlbG9wXHdvcmtzcGFjZXNcdmpwb3J0YWxXb3Jrc3BhY2VcZ2F0bGluZy1sb2FkdGVzdC1kZW1vXHNyY1x0ZXN0XHJlc291cmNlcw== -07 -> rO0ABXNyABV4c2J0aS5hcGkuQ29tcGlsYXRpb27t+uDDauigQgIAAkoACXN0YXJ0VGltZVsAB291dHB1dHN0ABpbTHhzYnRpL2FwaS9PdXRwdXRTZXR0aW5nO3hwAAABVO1koUh1cgAaW0x4c2J0aS5hcGkuT3V0cHV0U2V0dGluZzt/asLzp4elQgIAAHhwAAAAAnNyABd4c2J0aS5hcGkuT3V0cHV0U2V0dGluZ3rZmkd0+x17AgACTAAPb3V0cHV0RGlyZWN0b3J5dAASTGphdmEvbGFuZy9TdHJpbmc7TAAPc291cmNlRGlyZWN0b3J5cQB+AAZ4cHQAUUM6XGRldmVsb3Bcd29ya3NwYWNlc1x2anBvcnRhbFdvcmtzcGFjZVxnYXRsaW5nLWxvYWR0ZXN0LWRlbW9cdGFyZ2V0XHRlc3QtY2xhc3Nlc3QATEM6XGRldmVsb3Bcd29ya3NwYWNlc1x2anBvcnRhbFdvcmtzcGFjZVxnYXRsaW5nLWxvYWR0ZXN0LWRlbW9cc3JjXHRlc3Rcc2NhbGFzcQB+AAV0AFFDOlxkZXZlbG9wXHdvcmtzcGFjZXNcdmpwb3J0YWxXb3Jrc3BhY2VcZ2F0bGluZy1sb2FkdGVzdC1kZW1vXHRhcmdldFx0ZXN0LWNsYXNzZXN0AFBDOlxkZXZlbG9wXHdvcmtzcGFjZXNcdmpwb3J0YWxXb3Jrc3BhY2VcZ2F0bGluZy1sb2FkdGVzdC1kZW1vXHNyY1x0ZXN0XHJlc291cmNlcw== -08 -> rO0ABXNyABV4c2J0aS5hcGkuQ29tcGlsYXRpb27t+uDDauigQgIAAkoACXN0YXJ0VGltZVsAB291dHB1dHN0ABpbTHhzYnRpL2FwaS9PdXRwdXRTZXR0aW5nO3hwAAABVO1kwGd1cgAaW0x4c2J0aS5hcGkuT3V0cHV0U2V0dGluZzt/asLzp4elQgIAAHhwAAAAAnNyABd4c2J0aS5hcGkuT3V0cHV0U2V0dGluZ3rZmkd0+x17AgACTAAPb3V0cHV0RGlyZWN0b3J5dAASTGphdmEvbGFuZy9TdHJpbmc7TAAPc291cmNlRGlyZWN0b3J5cQB+AAZ4cHQAUUM6XGRldmVsb3Bcd29ya3NwYWNlc1x2anBvcnRhbFdvcmtzcGFjZVxnYXRsaW5nLWxvYWR0ZXN0LWRlbW9cdGFyZ2V0XHRlc3QtY2xhc3Nlc3QATEM6XGRldmVsb3Bcd29ya3NwYWNlc1x2anBvcnRhbFdvcmtzcGFjZVxnYXRsaW5nLWxvYWR0ZXN0LWRlbW9cc3JjXHRlc3Rcc2NhbGFzcQB+AAV0AFFDOlxkZXZlbG9wXHdvcmtzcGFjZXNcdmpwb3J0YWxXb3Jrc3BhY2VcZ2F0bGluZy1sb2FkdGVzdC1kZW1vXHRhcmdldFx0ZXN0LWNsYXNzZXN0AFBDOlxkZXZlbG9wXHdvcmtzcGFjZXNcdmpwb3J0YWxXb3Jrc3BhY2VcZ2F0bGluZy1sb2FkdGVzdC1kZW1vXHNyY1x0ZXN0XHJlc291cmNlcw== -09 -> rO0ABXNyABV4c2J0aS5hcGkuQ29tcGlsYXRpb27t+uDDauigQgIAAkoACXN0YXJ0VGltZVsAB291dHB1dHN0ABpbTHhzYnRpL2FwaS9PdXRwdXRTZXR0aW5nO3hwAAABVO1lpUV1cgAaW0x4c2J0aS5hcGkuT3V0cHV0U2V0dGluZzt/asLzp4elQgIAAHhwAAAAAnNyABd4c2J0aS5hcGkuT3V0cHV0U2V0dGluZ3rZmkd0+x17AgACTAAPb3V0cHV0RGlyZWN0b3J5dAASTGphdmEvbGFuZy9TdHJpbmc7TAAPc291cmNlRGlyZWN0b3J5cQB+AAZ4cHQAUUM6XGRldmVsb3Bcd29ya3NwYWNlc1x2anBvcnRhbFdvcmtzcGFjZVxnYXRsaW5nLWxvYWR0ZXN0LWRlbW9cdGFyZ2V0XHRlc3QtY2xhc3Nlc3QATEM6XGRldmVsb3Bcd29ya3NwYWNlc1x2anBvcnRhbFdvcmtzcGFjZVxnYXRsaW5nLWxvYWR0ZXN0LWRlbW9cc3JjXHRlc3Rcc2NhbGFzcQB+AAV0AFFDOlxkZXZlbG9wXHdvcmtzcGFjZXNcdmpwb3J0YWxXb3Jrc3BhY2VcZ2F0bGluZy1sb2FkdGVzdC1kZW1vXHRhcmdldFx0ZXN0LWNsYXNzZXN0AFBDOlxkZXZlbG9wXHdvcmtzcGFjZXNcdmpwb3J0YWxXb3Jrc3BhY2VcZ2F0bGluZy1sb2FkdGVzdC1kZW1vXHNyY1x0ZXN0XHJlc291cmNlcw== -10 -> rO0ABXNyABV4c2J0aS5hcGkuQ29tcGlsYXRpb27t+uDDauigQgIAAkoACXN0YXJ0VGltZVsAB291dHB1dHN0ABpbTHhzYnRpL2FwaS9PdXRwdXRTZXR0aW5nO3hwAAABVO1oYjh1cgAaW0x4c2J0aS5hcGkuT3V0cHV0U2V0dGluZzt/asLzp4elQgIAAHhwAAAAAnNyABd4c2J0aS5hcGkuT3V0cHV0U2V0dGluZ3rZmkd0+x17AgACTAAPb3V0cHV0RGlyZWN0b3J5dAASTGphdmEvbGFuZy9TdHJpbmc7TAAPc291cmNlRGlyZWN0b3J5cQB+AAZ4cHQAUUM6XGRldmVsb3Bcd29ya3NwYWNlc1x2anBvcnRhbFdvcmtzcGFjZVxnYXRsaW5nLWxvYWR0ZXN0LWRlbW9cdGFyZ2V0XHRlc3QtY2xhc3Nlc3QATEM6XGRldmVsb3Bcd29ya3NwYWNlc1x2anBvcnRhbFdvcmtzcGFjZVxnYXRsaW5nLWxvYWR0ZXN0LWRlbW9cc3JjXHRlc3Rcc2NhbGFzcQB+AAV0AFFDOlxkZXZlbG9wXHdvcmtzcGFjZXNcdmpwb3J0YWxXb3Jrc3BhY2VcZ2F0bGluZy1sb2FkdGVzdC1kZW1vXHRhcmdldFx0ZXN0LWNsYXNzZXN0AFBDOlxkZXZlbG9wXHdvcmtzcGFjZXNcdmpwb3J0YWxXb3Jrc3BhY2VcZ2F0bGluZy1sb2FkdGVzdC1kZW1vXHNyY1x0ZXN0XHJlc291cmNlcw== -11 -> rO0ABXNyABV4c2J0aS5hcGkuQ29tcGlsYXRpb27t+uDDauigQgIAAkoACXN0YXJ0VGltZVsAB291dHB1dHN0ABpbTHhzYnRpL2FwaS9PdXRwdXRTZXR0aW5nO3hwAAABVO1ofWt1cgAaW0x4c2J0aS5hcGkuT3V0cHV0U2V0dGluZzt/asLzp4elQgIAAHhwAAAAAnNyABd4c2J0aS5hcGkuT3V0cHV0U2V0dGluZ3rZmkd0+x17AgACTAAPb3V0cHV0RGlyZWN0b3J5dAASTGphdmEvbGFuZy9TdHJpbmc7TAAPc291cmNlRGlyZWN0b3J5cQB+AAZ4cHQAUUM6XGRldmVsb3Bcd29ya3NwYWNlc1x2anBvcnRhbFdvcmtzcGFjZVxnYXRsaW5nLWxvYWR0ZXN0LWRlbW9cdGFyZ2V0XHRlc3QtY2xhc3Nlc3QATEM6XGRldmVsb3Bcd29ya3NwYWNlc1x2anBvcnRhbFdvcmtzcGFjZVxnYXRsaW5nLWxvYWR0ZXN0LWRlbW9cc3JjXHRlc3Rcc2NhbGFzcQB+AAV0AFFDOlxkZXZlbG9wXHdvcmtzcGFjZXNcdmpwb3J0YWxXb3Jrc3BhY2VcZ2F0bGluZy1sb2FkdGVzdC1kZW1vXHRhcmdldFx0ZXN0LWNsYXNzZXN0AFBDOlxkZXZlbG9wXHdvcmtzcGFjZXNcdmpwb3J0YWxXb3Jrc3BhY2VcZ2F0bGluZy1sb2FkdGVzdC1kZW1vXHNyY1x0ZXN0XHJlc291cmNlcw== -12 -> rO0ABXNyABV4c2J0aS5hcGkuQ29tcGlsYXRpb27t+uDDauigQgIAAkoACXN0YXJ0VGltZVsAB291dHB1dHN0ABpbTHhzYnRpL2FwaS9PdXRwdXRTZXR0aW5nO3hwAAABVO1px4J1cgAaW0x4c2J0aS5hcGkuT3V0cHV0U2V0dGluZzt/asLzp4elQgIAAHhwAAAAAnNyABd4c2J0aS5hcGkuT3V0cHV0U2V0dGluZ3rZmkd0+x17AgACTAAPb3V0cHV0RGlyZWN0b3J5dAASTGphdmEvbGFuZy9TdHJpbmc7TAAPc291cmNlRGlyZWN0b3J5cQB+AAZ4cHQAUUM6XGRldmVsb3Bcd29ya3NwYWNlc1x2anBvcnRhbFdvcmtzcGFjZVxnYXRsaW5nLWxvYWR0ZXN0LWRlbW9cdGFyZ2V0XHRlc3QtY2xhc3Nlc3QATEM6XGRldmVsb3Bcd29ya3NwYWNlc1x2anBvcnRhbFdvcmtzcGFjZVxnYXRsaW5nLWxvYWR0ZXN0LWRlbW9cc3JjXHRlc3Rcc2NhbGFzcQB+AAV0AFFDOlxkZXZlbG9wXHdvcmtzcGFjZXNcdmpwb3J0YWxXb3Jrc3BhY2VcZ2F0bGluZy1sb2FkdGVzdC1kZW1vXHRhcmdldFx0ZXN0LWNsYXNzZXN0AFBDOlxkZXZlbG9wXHdvcmtzcGFjZXNcdmpwb3J0YWxXb3Jrc3BhY2VcZ2F0bGluZy1sb2FkdGVzdC1kZW1vXHNyY1x0ZXN0XHJlc291cmNlcw== -13 -> rO0ABXNyABV4c2J0aS5hcGkuQ29tcGlsYXRpb27t+uDDauigQgIAAkoACXN0YXJ0VGltZVsAB291dHB1dHN0ABpbTHhzYnRpL2FwaS9PdXRwdXRTZXR0aW5nO3hwAAABVO1q7U91cgAaW0x4c2J0aS5hcGkuT3V0cHV0U2V0dGluZzt/asLzp4elQgIAAHhwAAAAAnNyABd4c2J0aS5hcGkuT3V0cHV0U2V0dGluZ3rZmkd0+x17AgACTAAPb3V0cHV0RGlyZWN0b3J5dAASTGphdmEvbGFuZy9TdHJpbmc7TAAPc291cmNlRGlyZWN0b3J5cQB+AAZ4cHQAUUM6XGRldmVsb3Bcd29ya3NwYWNlc1x2anBvcnRhbFdvcmtzcGFjZVxnYXRsaW5nLWxvYWR0ZXN0LWRlbW9cdGFyZ2V0XHRlc3QtY2xhc3Nlc3QATEM6XGRldmVsb3Bcd29ya3NwYWNlc1x2anBvcnRhbFdvcmtzcGFjZVxnYXRsaW5nLWxvYWR0ZXN0LWRlbW9cc3JjXHRlc3Rcc2NhbGFzcQB+AAV0AFFDOlxkZXZlbG9wXHdvcmtzcGFjZXNcdmpwb3J0YWxXb3Jrc3BhY2VcZ2F0bGluZy1sb2FkdGVzdC1kZW1vXHRhcmdldFx0ZXN0LWNsYXNzZXN0AFBDOlxkZXZlbG9wXHdvcmtzcGFjZXNcdmpwb3J0YWxXb3Jrc3BhY2VcZ2F0bGluZy1sb2FkdGVzdC1kZW1vXHNyY1x0ZXN0XHJlc291cmNlcw== -14 -> rO0ABXNyABV4c2J0aS5hcGkuQ29tcGlsYXRpb27t+uDDauigQgIAAkoACXN0YXJ0VGltZVsAB291dHB1dHN0ABpbTHhzYnRpL2FwaS9PdXRwdXRTZXR0aW5nO3hwAAABVPJoEOF1cgAaW0x4c2J0aS5hcGkuT3V0cHV0U2V0dGluZzt/asLzp4elQgIAAHhwAAAAAnNyABd4c2J0aS5hcGkuT3V0cHV0U2V0dGluZ3rZmkd0+x17AgACTAAPb3V0cHV0RGlyZWN0b3J5dAASTGphdmEvbGFuZy9TdHJpbmc7TAAPc291cmNlRGlyZWN0b3J5cQB+AAZ4cHQAUUM6XGRldmVsb3Bcd29ya3NwYWNlc1x2anBvcnRhbFdvcmtzcGFjZVxnYXRsaW5nLWxvYWR0ZXN0LWRlbW9cdGFyZ2V0XHRlc3QtY2xhc3Nlc3QATEM6XGRldmVsb3Bcd29ya3NwYWNlc1x2anBvcnRhbFdvcmtzcGFjZVxnYXRsaW5nLWxvYWR0ZXN0LWRlbW9cc3JjXHRlc3Rcc2NhbGFzcQB+AAV0AFFDOlxkZXZlbG9wXHdvcmtzcGFjZXNcdmpwb3J0YWxXb3Jrc3BhY2VcZ2F0bGluZy1sb2FkdGVzdC1kZW1vXHRhcmdldFx0ZXN0LWNsYXNzZXN0AFBDOlxkZXZlbG9wXHdvcmtzcGFjZXNcdmpwb3J0YWxXb3Jrc3BhY2VcZ2F0bGluZy1sb2FkdGVzdC1kZW1vXHNyY1x0ZXN0XHJlc291cmNlcw== -15 -> rO0ABXNyABV4c2J0aS5hcGkuQ29tcGlsYXRpb27t+uDDauigQgIAAkoACXN0YXJ0VGltZVsAB291dHB1dHN0ABpbTHhzYnRpL2FwaS9PdXRwdXRTZXR0aW5nO3hwAAABVPJ0QXt1cgAaW0x4c2J0aS5hcGkuT3V0cHV0U2V0dGluZzt/asLzp4elQgIAAHhwAAAAAnNyABd4c2J0aS5hcGkuT3V0cHV0U2V0dGluZ3rZmkd0+x17AgACTAAPb3V0cHV0RGlyZWN0b3J5dAASTGphdmEvbGFuZy9TdHJpbmc7TAAPc291cmNlRGlyZWN0b3J5cQB+AAZ4cHQAQkM6XGRldmVsb3BcZ2l0XHR1dG9yaWFsc1xnYXRsaW5nLWxvYWR0ZXN0LWRlbW9cdGFyZ2V0XHRlc3QtY2xhc3Nlc3QAPUM6XGRldmVsb3BcZ2l0XHR1dG9yaWFsc1xnYXRsaW5nLWxvYWR0ZXN0LWRlbW9cc3JjXHRlc3Rcc2NhbGFzcQB+AAV0AEJDOlxkZXZlbG9wXGdpdFx0dXRvcmlhbHNcZ2F0bGluZy1sb2FkdGVzdC1kZW1vXHRhcmdldFx0ZXN0LWNsYXNzZXN0AEFDOlxkZXZlbG9wXGdpdFx0dXRvcmlhbHNcZ2F0bGluZy1sb2FkdGVzdC1kZW1vXHNyY1x0ZXN0XHJlc291cmNlcw== -16 -> rO0ABXNyABV4c2J0aS5hcGkuQ29tcGlsYXRpb27t+uDDauigQgIAAkoACXN0YXJ0VGltZVsAB291dHB1dHN0ABpbTHhzYnRpL2FwaS9PdXRwdXRTZXR0aW5nO3hwAAABVPJ1xKZ1cgAaW0x4c2J0aS5hcGkuT3V0cHV0U2V0dGluZzt/asLzp4elQgIAAHhwAAAAAnNyABd4c2J0aS5hcGkuT3V0cHV0U2V0dGluZ3rZmkd0+x17AgACTAAPb3V0cHV0RGlyZWN0b3J5dAASTGphdmEvbGFuZy9TdHJpbmc7TAAPc291cmNlRGlyZWN0b3J5cQB+AAZ4cHQAQkM6XGRldmVsb3BcZ2l0XHR1dG9yaWFsc1xnYXRsaW5nLWxvYWR0ZXN0LWRlbW9cdGFyZ2V0XHRlc3QtY2xhc3Nlc3QAPUM6XGRldmVsb3BcZ2l0XHR1dG9yaWFsc1xnYXRsaW5nLWxvYWR0ZXN0LWRlbW9cc3JjXHRlc3Rcc2NhbGFzcQB+AAV0AEJDOlxkZXZlbG9wXGdpdFx0dXRvcmlhbHNcZ2F0bGluZy1sb2FkdGVzdC1kZW1vXHRhcmdldFx0ZXN0LWNsYXNzZXN0AEFDOlxkZXZlbG9wXGdpdFx0dXRvcmlhbHNcZ2F0bGluZy1sb2FkdGVzdC1kZW1vXHNyY1x0ZXN0XHJlc291cmNlcw== diff --git a/gatling-loadtest-demo/.classpath b/gatling-loadtest-demo/.classpath deleted file mode 100644 index 6026072109..0000000000 --- a/gatling-loadtest-demo/.classpath +++ /dev/null @@ -1,32 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/gatling-loadtest-demo/.project b/gatling-loadtest-demo/.project deleted file mode 100644 index a5e3b774e0..0000000000 --- a/gatling-loadtest-demo/.project +++ /dev/null @@ -1,24 +0,0 @@ - - - gatling-loadtest-demo - - - - - - org.scala-ide.sdt.core.scalabuilder - - - - - org.eclipse.m2e.core.maven2Builder - - - - - - org.scala-ide.sdt.core.scalanature - org.eclipse.jdt.core.javanature - org.eclipse.m2e.core.maven2Nature - - diff --git a/gatling-loadtest-demo/pom.xml b/gatling-loadtest-demo/pom.xml deleted file mode 100644 index f5ed1d7de7..0000000000 --- a/gatling-loadtest-demo/pom.xml +++ /dev/null @@ -1,113 +0,0 @@ - - - 4.0.0 - org.baeldung - gatling-loadtest-demo - 1.0-SNAPSHOT - - - 1.8 - 1.8 - 2.11.7 - UTF-8 - - 2.2.0 - - 3.2.2 - - - - - - io.gatling - gatling-app - ${gatling.version} - - - io.gatling - gatling-recorder - ${gatling.version} - - - io.gatling.highcharts - gatling-charts-highcharts - ${gatling.version} - - - org.scala-lang - scala-library - ${scala.version} - - - - - - - io.gatling.highcharts - gatling-charts-highcharts - - - io.gatling - gatling-app - - - io.gatling - gatling-recorder - - - org.scala-lang - scala-library - - - - - src/test/scala - - - - net.alchim31.maven - scala-maven-plugin - ${scala-maven-plugin.version} - - - - - - net.alchim31.maven - scala-maven-plugin - - - - testCompile - - - - -Ybackend:GenBCode - -Ydelambdafy:method - -target:jvm-1.8 - -deprecation - -feature - -unchecked - -language:implicitConversions - -language:postfixOps - - - - - - - - io.gatling - gatling-maven-plugin - ${gatling.version} - - - test - execute - - - - - - diff --git a/gatling-loadtest-demo/src/test/resources/gatling.conf b/gatling-loadtest-demo/src/test/resources/gatling.conf deleted file mode 100644 index 8bfa0ed366..0000000000 --- a/gatling-loadtest-demo/src/test/resources/gatling.conf +++ /dev/null @@ -1,127 +0,0 @@ -######################### -# Gatling Configuration # -######################### - -# This file contains all the settings configurable for Gatling with their default values - -gatling { - core { - #outputDirectoryBaseName = "" # The prefix for each simulation result folder (then suffixed by the report generation timestamp) - #runDescription = "" # The description for this simulation run, displayed in each report - #encoding = "utf-8" # Encoding to use throughout Gatling for file and string manipulation - #simulationClass = "" # The FQCN of the simulation to run (when used in conjunction with noReports, the simulation for which assertions will be validated) - #mute = false # When set to true, don't ask for simulation name nor run description (currently only used by Gatling SBT plugin) - #elFileBodiesCacheMaxCapacity = 200 # Cache size for request body EL templates, set to 0 to disable - #rawFileBodiesCacheMaxCapacity = 200 # Cache size for request body Raw templates, set to 0 to disable - #rawFileBodiesInMemoryMaxSize = 1000 # Below this limit, raw file bodies will be cached in memory - - extract { - regex { - #cacheMaxCapacity = 200 # Cache size for the compiled regexes, set to 0 to disable caching - } - xpath { - #cacheMaxCapacity = 200 # Cache size for the compiled XPath queries, set to 0 to disable caching - } - jsonPath { - #cacheMaxCapacity = 200 # Cache size for the compiled jsonPath queries, set to 0 to disable caching - #preferJackson = false # When set to true, prefer Jackson over Boon for JSON-related operations - } - css { - #cacheMaxCapacity = 200 # Cache size for the compiled CSS selectors queries, set to 0 to disable caching - } - } - - directory { - #data = user-files/data # Folder where user's data (e.g. files used by Feeders) is located - #bodies = user-files/bodies # Folder where bodies are located - #simulations = user-files/simulations # Folder where the bundle's simulations are located - #reportsOnly = "" # If set, name of report folder to look for in order to generate its report - #binaries = "" # If set, name of the folder where compiles classes are located: Defaults to GATLING_HOME/target. - #results = results # Name of the folder where all reports folder are located - } - } - charting { - #noReports = false # When set to true, don't generate HTML reports - #maxPlotPerSeries = 1000 # Number of points per graph in Gatling reports - #useGroupDurationMetric = false # Switch group timings from cumulated response time to group duration. - indicators { - #lowerBound = 800 # Lower bound for the requests' response time to track in the reports and the console summary - #higherBound = 1200 # Higher bound for the requests' response time to track in the reports and the console summary - #percentile1 = 50 # Value for the 1st percentile to track in the reports, the console summary and Graphite - #percentile2 = 75 # Value for the 2nd percentile to track in the reports, the console summary and Graphite - #percentile3 = 95 # Value for the 3rd percentile to track in the reports, the console summary and Graphite - #percentile4 = 99 # Value for the 4th percentile to track in the reports, the console summary and Graphite - } - } - http { - #fetchedCssCacheMaxCapacity = 200 # Cache size for CSS parsed content, set to 0 to disable - #fetchedHtmlCacheMaxCapacity = 200 # Cache size for HTML parsed content, set to 0 to disable - #perUserCacheMaxCapacity = 200 # Per virtual user cache size, set to 0 to disable - #warmUpUrl = "http://gatling.io" # The URL to use to warm-up the HTTP stack (blank means disabled) - #enableGA = true # Very light Google Analytics, please support - ssl { - keyStore { - #type = "" # Type of SSLContext's KeyManagers store - #file = "" # Location of SSLContext's KeyManagers store - #password = "" # Password for SSLContext's KeyManagers store - #algorithm = "" # Algorithm used SSLContext's KeyManagers store - } - trustStore { - #type = "" # Type of SSLContext's TrustManagers store - #file = "" # Location of SSLContext's TrustManagers store - #password = "" # Password for SSLContext's TrustManagers store - #algorithm = "" # Algorithm used by SSLContext's TrustManagers store - } - } - ahc { - #keepAlive = true # Allow pooling HTTP connections (keep-alive header automatically added) - #connectTimeout = 60000 # Timeout when establishing a connection - #pooledConnectionIdleTimeout = 60000 # Timeout when a connection stays unused in the pool - #readTimeout = 60000 # Timeout when a used connection stays idle - #maxRetry = 2 # Number of times that a request should be tried again - #requestTimeout = 60000 # Timeout of the requests - #acceptAnyCertificate = true # When set to true, doesn't validate SSL certificates - #httpClientCodecMaxInitialLineLength = 4096 # Maximum length of the initial line of the response (e.g. "HTTP/1.0 200 OK") - #httpClientCodecMaxHeaderSize = 8192 # Maximum size, in bytes, of each request's headers - #httpClientCodecMaxChunkSize = 8192 # Maximum length of the content or each chunk - #webSocketMaxFrameSize = 10240000 # Maximum frame payload size - #sslEnabledProtocols = [TLSv1.2, TLSv1.1, TLSv1] # Array of enabled protocols for HTTPS, if empty use the JDK defaults - #sslEnabledCipherSuites = [] # Array of enabled cipher suites for HTTPS, if empty use the JDK defaults - #sslSessionCacheSize = 0 # SSLSession cache size, set to 0 to use JDK's default - #sslSessionTimeout = 0 # SSLSession timeout in seconds, set to 0 to use JDK's default (24h) - #useOpenSsl = false # if OpenSSL should be used instead of JSSE (requires tcnative jar) - #useNativeTransport = false # if native transport should be used instead of Java NIO (requires netty-transport-native-epoll, currently Linux only) - #usePooledMemory = true # if Gatling should use pooled memory - #tcpNoDelay = true - #soReuseAddress = false - #soLinger = -1 - #soSndBuf = -1 - #soRcvBuf = -1 - } - dns { - #queryTimeout = 5000 # Timeout of each DNS query in millis - #maxQueriesPerResolve = 3 # Maximum allowed number of DNS queries for a given name resolution - } - } - data { - #writers = [console, file] # The list of DataWriters to which Gatling write simulation data (currently supported : console, file, graphite, jdbc) - console { - #light = false # When set to true, displays a light version without detailed request stats - } - file { - #bufferSize = 8192 # FileDataWriter's internal data buffer size, in bytes - } - leak { - #noActivityTimeout = 30 # Period, in seconds, for which Gatling may have no activity before considering a leak may be happening - } - graphite { - #light = false # only send the all* stats - #host = "localhost" # The host where the Carbon server is located - #port = 2003 # The port to which the Carbon server listens to (2003 is default for plaintext, 2004 is default for pickle) - #protocol = "tcp" # The protocol used to send data to Carbon (currently supported : "tcp", "udp") - #rootPathPrefix = "gatling" # The common prefix of all metrics sent to Graphite - #bufferSize = 8192 # GraphiteDataWriter's internal data buffer size, in bytes - #writeInterval = 1 # GraphiteDataWriter's write interval, in seconds - } - } -} diff --git a/gatling-loadtest-demo/src/test/resources/logback.xml b/gatling-loadtest-demo/src/test/resources/logback.xml deleted file mode 100644 index a8fe714e7d..0000000000 --- a/gatling-loadtest-demo/src/test/resources/logback.xml +++ /dev/null @@ -1,22 +0,0 @@ - - - - - - %d{HH:mm:ss.SSS} [%-5level] %logger{15} - %msg%n%rEx - false - - - - - - - - - - - - - - - diff --git a/gatling-loadtest-demo/src/test/resources/recorder.conf b/gatling-loadtest-demo/src/test/resources/recorder.conf deleted file mode 100644 index f4ba60310b..0000000000 --- a/gatling-loadtest-demo/src/test/resources/recorder.conf +++ /dev/null @@ -1,57 +0,0 @@ -recorder { - core { - className=RecordedSimulation - encoding=utf-8 - harFilePath="" - headless=false - mode=Proxy - outputFolder="C:\\develop\\workspaces\\vjportalWorkspace\\gatling-loadtest-demo\\src\\test\\scala" - package="org.baeldung" - saveConfig=true - thresholdForPauseCreation=100 - } - filters { - blacklist=[ - ".*\\.css", - ".*\\.js", - ".*\\.ico" - ] - filterStrategy=BlacklistFirst - whitelist=[] - } - http { - automaticReferer=true - checkResponseBodies=false - followRedirect=true - inferHtmlResources=true - removeCacheHeaders=true - } - netty { - maxChunkSize=8192 - maxContentLength=100000000 - maxHeaderSize=20000 - maxInitialLineLength=10000 - } - proxy { - https { - certificateAuthority { - certificatePath="" - privateKeyPath="" - } - keyStore { - password="" - path="" - type=JKS - } - mode=SelfSignedCertificate - } - outgoing { - host="" - password="" - port=0 - sslPort=0 - username="" - } - port=8000 - } -} diff --git a/gatling-loadtest-demo/src/test/scala/Engine.scala b/gatling-loadtest-demo/src/test/scala/Engine.scala deleted file mode 100644 index 0ac3abe948..0000000000 --- a/gatling-loadtest-demo/src/test/scala/Engine.scala +++ /dev/null @@ -1,13 +0,0 @@ -import io.gatling.app.Gatling -import io.gatling.core.config.GatlingPropertiesBuilder - -object Engine extends App { - - val props = new GatlingPropertiesBuilder - props.dataDirectory(IDEPathHelper.dataDirectory.toString) - props.resultsDirectory(IDEPathHelper.resultsDirectory.toString) - props.bodiesDirectory(IDEPathHelper.bodiesDirectory.toString) - props.binariesDirectory(IDEPathHelper.mavenBinariesDirectory.toString) - - Gatling.fromMap(props.build) -} diff --git a/gatling-loadtest-demo/src/test/scala/IDEPathHelper.scala b/gatling-loadtest-demo/src/test/scala/IDEPathHelper.scala deleted file mode 100644 index 32c986a072..0000000000 --- a/gatling-loadtest-demo/src/test/scala/IDEPathHelper.scala +++ /dev/null @@ -1,22 +0,0 @@ -import java.nio.file.Path - -import io.gatling.commons.util.PathHelper._ - -object IDEPathHelper { - - val gatlingConfUrl: Path = getClass.getClassLoader.getResource("gatling.conf").toURI - val projectRootDir = gatlingConfUrl.ancestor(3) - - val mavenSourcesDirectory = projectRootDir / "src" / "test" / "scala" - val mavenResourcesDirectory = projectRootDir / "src" / "test" / "resources" - val mavenTargetDirectory = projectRootDir / "target" - val mavenBinariesDirectory = mavenTargetDirectory / "test-classes" - - val dataDirectory = mavenResourcesDirectory / "data" - val bodiesDirectory = mavenResourcesDirectory / "bodies" - - val recorderOutputDirectory = mavenSourcesDirectory - val resultsDirectory = mavenTargetDirectory / "gatling" - - val recorderConfigFile = mavenResourcesDirectory / "recorder.conf" -} diff --git a/gatling-loadtest-demo/src/test/scala/Recorder.scala b/gatling-loadtest-demo/src/test/scala/Recorder.scala deleted file mode 100644 index 1372da6d41..0000000000 --- a/gatling-loadtest-demo/src/test/scala/Recorder.scala +++ /dev/null @@ -1,12 +0,0 @@ -import io.gatling.recorder.GatlingRecorder -import io.gatling.recorder.config.RecorderPropertiesBuilder - -object Recorder extends App { - - val props = new RecorderPropertiesBuilder - props.simulationOutputFolder(IDEPathHelper.recorderOutputDirectory.toString) - props.simulationPackage("org.baeldung") - props.bodiesFolder(IDEPathHelper.bodiesDirectory.toString) - - GatlingRecorder.fromMap(props.build, Some(IDEPathHelper.recorderConfigFile)) -} diff --git a/gatling-loadtest-demo/src/test/scala/org/baeldung/RecordedSimulation.scala b/gatling-loadtest-demo/src/test/scala/org/baeldung/RecordedSimulation.scala deleted file mode 100644 index 553e17e56f..0000000000 --- a/gatling-loadtest-demo/src/test/scala/org/baeldung/RecordedSimulation.scala +++ /dev/null @@ -1,46 +0,0 @@ -package org.baeldung - -import scala.concurrent.duration._ - -import io.gatling.core.Predef._ -import io.gatling.http.Predef._ -import io.gatling.jdbc.Predef._ - -class RecordedSimulation extends Simulation { - - val httpProtocol = http - .baseURL("http://computer-database.gatling.io") - .inferHtmlResources(BlackList(""".*\.css""", """.*\.js""", """.*\.ico"""), WhiteList()) - .acceptHeader("text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8") - .acceptEncodingHeader("gzip, deflate") - .acceptLanguageHeader("it-IT,it;q=0.8,en-US;q=0.5,en;q=0.3") - .userAgentHeader("Mozilla/5.0 (Windows NT 10.0; WOW64; rv:46.0) Gecko/20100101 Firefox/46.0") - - - - - - val scn = scenario("RecordedSimulation") - .exec(http("request_0") - .get("/")) - .pause(5) - .exec(http("request_1") - .get("/computers?f=amstrad")) - .pause(4) - .exec(http("request_2") - .get("/computers/412")) - .pause(2) - .exec(http("request_3") - .get("/")) - .pause(2) - .exec(http("request_4") - .get("/computers?p=1")) - .pause(1) - .exec(http("request_5") - .get("/computers?p=2")) - .pause(2) - .exec(http("request_6") - .get("/computers?p=3")) - - setUp(scn.inject(atOnceUsers(1))).protocols(httpProtocol) -} \ No newline at end of file From 737848c9bed07ff8b1183574e13be5601ac8bf58 Mon Sep 17 00:00:00 2001 From: Ivan Paolillo Date: Wed, 8 Jun 2016 16:49:16 +0200 Subject: [PATCH 027/108] Gatling load test demo --- gatling/pom.xml | 110 +++++++++++++++ gatling/src/test/resources/gatling.conf | 127 ++++++++++++++++++ gatling/src/test/resources/logback.xml | 22 +++ gatling/src/test/resources/recorder.conf | 53 ++++++++ gatling/src/test/scala/Engine.scala | 13 ++ gatling/src/test/scala/IDEPathHelper.scala | 22 +++ gatling/src/test/scala/Recorder.scala | 12 ++ .../org/baeldung/RecordedSimulation.scala | 46 +++++++ 8 files changed, 405 insertions(+) create mode 100644 gatling/pom.xml create mode 100644 gatling/src/test/resources/gatling.conf create mode 100644 gatling/src/test/resources/logback.xml create mode 100644 gatling/src/test/resources/recorder.conf create mode 100644 gatling/src/test/scala/Engine.scala create mode 100644 gatling/src/test/scala/IDEPathHelper.scala create mode 100644 gatling/src/test/scala/Recorder.scala create mode 100644 gatling/src/test/scala/org/baeldung/RecordedSimulation.scala diff --git a/gatling/pom.xml b/gatling/pom.xml new file mode 100644 index 0000000000..273797d76c --- /dev/null +++ b/gatling/pom.xml @@ -0,0 +1,110 @@ + + + 4.0.0 + org.baeldung + gatling + 1.0-SNAPSHOT + + + 1.8 + 1.8 + 2.11.7 + UTF-8 + 2.2.0 + 3.2.2 + + + + + + io.gatling + gatling-app + ${gatling.version} + + + io.gatling + gatling-recorder + ${gatling.version} + + + io.gatling.highcharts + gatling-charts-highcharts + ${gatling.version} + + + org.scala-lang + scala-library + ${scala.version} + + + + + + + io.gatling.highcharts + gatling-charts-highcharts + + + io.gatling + gatling-app + + + io.gatling + gatling-recorder + + + org.scala-lang + scala-library + + + + + src/test/scala + + + + net.alchim31.maven + scala-maven-plugin + ${scala-maven-plugin.version} + + + + + + net.alchim31.maven + scala-maven-plugin + + + + testCompile + + + + -Ybackend:GenBCode + -Ydelambdafy:method + -target:jvm-1.8 + -deprecation + -feature + -unchecked + -language:implicitConversions + -language:postfixOps + + + + + + + io.gatling + gatling-maven-plugin + ${gatling.version} + + + test + execute + + + + + + diff --git a/gatling/src/test/resources/gatling.conf b/gatling/src/test/resources/gatling.conf new file mode 100644 index 0000000000..8bfa0ed366 --- /dev/null +++ b/gatling/src/test/resources/gatling.conf @@ -0,0 +1,127 @@ +######################### +# Gatling Configuration # +######################### + +# This file contains all the settings configurable for Gatling with their default values + +gatling { + core { + #outputDirectoryBaseName = "" # The prefix for each simulation result folder (then suffixed by the report generation timestamp) + #runDescription = "" # The description for this simulation run, displayed in each report + #encoding = "utf-8" # Encoding to use throughout Gatling for file and string manipulation + #simulationClass = "" # The FQCN of the simulation to run (when used in conjunction with noReports, the simulation for which assertions will be validated) + #mute = false # When set to true, don't ask for simulation name nor run description (currently only used by Gatling SBT plugin) + #elFileBodiesCacheMaxCapacity = 200 # Cache size for request body EL templates, set to 0 to disable + #rawFileBodiesCacheMaxCapacity = 200 # Cache size for request body Raw templates, set to 0 to disable + #rawFileBodiesInMemoryMaxSize = 1000 # Below this limit, raw file bodies will be cached in memory + + extract { + regex { + #cacheMaxCapacity = 200 # Cache size for the compiled regexes, set to 0 to disable caching + } + xpath { + #cacheMaxCapacity = 200 # Cache size for the compiled XPath queries, set to 0 to disable caching + } + jsonPath { + #cacheMaxCapacity = 200 # Cache size for the compiled jsonPath queries, set to 0 to disable caching + #preferJackson = false # When set to true, prefer Jackson over Boon for JSON-related operations + } + css { + #cacheMaxCapacity = 200 # Cache size for the compiled CSS selectors queries, set to 0 to disable caching + } + } + + directory { + #data = user-files/data # Folder where user's data (e.g. files used by Feeders) is located + #bodies = user-files/bodies # Folder where bodies are located + #simulations = user-files/simulations # Folder where the bundle's simulations are located + #reportsOnly = "" # If set, name of report folder to look for in order to generate its report + #binaries = "" # If set, name of the folder where compiles classes are located: Defaults to GATLING_HOME/target. + #results = results # Name of the folder where all reports folder are located + } + } + charting { + #noReports = false # When set to true, don't generate HTML reports + #maxPlotPerSeries = 1000 # Number of points per graph in Gatling reports + #useGroupDurationMetric = false # Switch group timings from cumulated response time to group duration. + indicators { + #lowerBound = 800 # Lower bound for the requests' response time to track in the reports and the console summary + #higherBound = 1200 # Higher bound for the requests' response time to track in the reports and the console summary + #percentile1 = 50 # Value for the 1st percentile to track in the reports, the console summary and Graphite + #percentile2 = 75 # Value for the 2nd percentile to track in the reports, the console summary and Graphite + #percentile3 = 95 # Value for the 3rd percentile to track in the reports, the console summary and Graphite + #percentile4 = 99 # Value for the 4th percentile to track in the reports, the console summary and Graphite + } + } + http { + #fetchedCssCacheMaxCapacity = 200 # Cache size for CSS parsed content, set to 0 to disable + #fetchedHtmlCacheMaxCapacity = 200 # Cache size for HTML parsed content, set to 0 to disable + #perUserCacheMaxCapacity = 200 # Per virtual user cache size, set to 0 to disable + #warmUpUrl = "http://gatling.io" # The URL to use to warm-up the HTTP stack (blank means disabled) + #enableGA = true # Very light Google Analytics, please support + ssl { + keyStore { + #type = "" # Type of SSLContext's KeyManagers store + #file = "" # Location of SSLContext's KeyManagers store + #password = "" # Password for SSLContext's KeyManagers store + #algorithm = "" # Algorithm used SSLContext's KeyManagers store + } + trustStore { + #type = "" # Type of SSLContext's TrustManagers store + #file = "" # Location of SSLContext's TrustManagers store + #password = "" # Password for SSLContext's TrustManagers store + #algorithm = "" # Algorithm used by SSLContext's TrustManagers store + } + } + ahc { + #keepAlive = true # Allow pooling HTTP connections (keep-alive header automatically added) + #connectTimeout = 60000 # Timeout when establishing a connection + #pooledConnectionIdleTimeout = 60000 # Timeout when a connection stays unused in the pool + #readTimeout = 60000 # Timeout when a used connection stays idle + #maxRetry = 2 # Number of times that a request should be tried again + #requestTimeout = 60000 # Timeout of the requests + #acceptAnyCertificate = true # When set to true, doesn't validate SSL certificates + #httpClientCodecMaxInitialLineLength = 4096 # Maximum length of the initial line of the response (e.g. "HTTP/1.0 200 OK") + #httpClientCodecMaxHeaderSize = 8192 # Maximum size, in bytes, of each request's headers + #httpClientCodecMaxChunkSize = 8192 # Maximum length of the content or each chunk + #webSocketMaxFrameSize = 10240000 # Maximum frame payload size + #sslEnabledProtocols = [TLSv1.2, TLSv1.1, TLSv1] # Array of enabled protocols for HTTPS, if empty use the JDK defaults + #sslEnabledCipherSuites = [] # Array of enabled cipher suites for HTTPS, if empty use the JDK defaults + #sslSessionCacheSize = 0 # SSLSession cache size, set to 0 to use JDK's default + #sslSessionTimeout = 0 # SSLSession timeout in seconds, set to 0 to use JDK's default (24h) + #useOpenSsl = false # if OpenSSL should be used instead of JSSE (requires tcnative jar) + #useNativeTransport = false # if native transport should be used instead of Java NIO (requires netty-transport-native-epoll, currently Linux only) + #usePooledMemory = true # if Gatling should use pooled memory + #tcpNoDelay = true + #soReuseAddress = false + #soLinger = -1 + #soSndBuf = -1 + #soRcvBuf = -1 + } + dns { + #queryTimeout = 5000 # Timeout of each DNS query in millis + #maxQueriesPerResolve = 3 # Maximum allowed number of DNS queries for a given name resolution + } + } + data { + #writers = [console, file] # The list of DataWriters to which Gatling write simulation data (currently supported : console, file, graphite, jdbc) + console { + #light = false # When set to true, displays a light version without detailed request stats + } + file { + #bufferSize = 8192 # FileDataWriter's internal data buffer size, in bytes + } + leak { + #noActivityTimeout = 30 # Period, in seconds, for which Gatling may have no activity before considering a leak may be happening + } + graphite { + #light = false # only send the all* stats + #host = "localhost" # The host where the Carbon server is located + #port = 2003 # The port to which the Carbon server listens to (2003 is default for plaintext, 2004 is default for pickle) + #protocol = "tcp" # The protocol used to send data to Carbon (currently supported : "tcp", "udp") + #rootPathPrefix = "gatling" # The common prefix of all metrics sent to Graphite + #bufferSize = 8192 # GraphiteDataWriter's internal data buffer size, in bytes + #writeInterval = 1 # GraphiteDataWriter's write interval, in seconds + } + } +} diff --git a/gatling/src/test/resources/logback.xml b/gatling/src/test/resources/logback.xml new file mode 100644 index 0000000000..b9ba6255a0 --- /dev/null +++ b/gatling/src/test/resources/logback.xml @@ -0,0 +1,22 @@ + + + + + + %d{HH:mm:ss.SSS} [%-5level] %logger{15} - %msg%n%rEx + false + + + + + + + + + + + + + + + diff --git a/gatling/src/test/resources/recorder.conf b/gatling/src/test/resources/recorder.conf new file mode 100644 index 0000000000..969b9e8668 --- /dev/null +++ b/gatling/src/test/resources/recorder.conf @@ -0,0 +1,53 @@ +recorder { + core { + #mode = "Proxy" + #encoding = "utf-8" # The encoding used for reading/writing request bodies and the generated simulation + #outputFolder = "" # The folder where generated simulation will we written + #package = "" # The package's name of the generated simulation + #className = "RecordedSimulation" # The name of the generated Simulation class + #thresholdForPauseCreation = 100 # The minimum time, in milliseconds, that must pass between requests to trigger a pause creation + #saveConfig = false # When set to true, the configuration from the Recorder GUI overwrites this configuration + #headless = false # When set to true, run the Recorder in headless mode instead of the GUI + #harFilePath = "" # The path of the HAR file to convert + } + filters { + #filterStrategy = "Disabled" # The selected filter resources filter strategy (currently supported : "Disabled", "BlackList", "WhiteList") + #whitelist = [] # The list of ressources patterns that are part of the Recorder's whitelist + #blacklist = [] # The list of ressources patterns that are part of the Recorder's blacklist + } + http { + #automaticReferer = true # When set to false, write the referer + enable 'disableAutoReferer' in the generated simulation + #followRedirect = true # When set to false, write redirect requests + enable 'disableFollowRedirect' in the generated simulation + #removeCacheHeaders = true # When set to true, removes from the generated requests headers leading to request caching + #inferHtmlResources = true # When set to true, add inferred resources + set 'inferHtmlResources' with the configured blacklist/whitelist in the generated simulation + #checkResponseBodies = false # When set to true, save response bodies as files and add raw checks in the generated simulation + } + proxy { + #port = 8000 # Local port used by Gatling's Proxy for HTTP/HTTPS + https { + #mode = "SelfSignedCertificate" # The selected "HTTPS mode" (currently supported : "SelfSignedCertificate", "ProvidedKeyStore", "GatlingCertificateAuthority", "CustomCertificateAuthority") + keyStore { + #path = "" # The path of the custom key store + #password = "" # The password for this key store + #type = "JKS" # The type of the key store (currently supported: "JKS") + } + certificateAuthority { + #certificatePath = "" # The path of the custom certificate + #privateKeyPath = "" # The certificate's private key path + } + } + outgoing { + #host = "" # The outgoing proxy's hostname + #username = "" # The username to use to connect to the outgoing proxy + #password = "" # The password corresponding to the user to use to connect to the outgoing proxy + #port = 0 # The HTTP port to use to connect to the outgoing proxy + #sslPort = 0 # If set, The HTTPS port to use to connect to the outgoing proxy + } + } + netty { + #maxInitialLineLength = 10000 # Maximum length of the initial line of the response (e.g. "HTTP/1.0 200 OK") + #maxHeaderSize = 20000 # Maximum size, in bytes, of each request's headers + #maxChunkSize = 8192 # Maximum length of the content or each chunk + #maxContentLength = 100000000 # Maximum length of the aggregated content of each response + } +} diff --git a/gatling/src/test/scala/Engine.scala b/gatling/src/test/scala/Engine.scala new file mode 100644 index 0000000000..32c85fbe45 --- /dev/null +++ b/gatling/src/test/scala/Engine.scala @@ -0,0 +1,13 @@ +import io.gatling.app.Gatling +import io.gatling.core.config.GatlingPropertiesBuilder + +object Engine extends App { + + val props = new GatlingPropertiesBuilder + props.dataDirectory(IDEPathHelper.dataDirectory.toString) + props.resultsDirectory(IDEPathHelper.resultsDirectory.toString) + props.bodiesDirectory(IDEPathHelper.bodiesDirectory.toString) + props.binariesDirectory(IDEPathHelper.mavenBinariesDirectory.toString) + + Gatling.fromMap(props.build) +} diff --git a/gatling/src/test/scala/IDEPathHelper.scala b/gatling/src/test/scala/IDEPathHelper.scala new file mode 100644 index 0000000000..0abf6a42ef --- /dev/null +++ b/gatling/src/test/scala/IDEPathHelper.scala @@ -0,0 +1,22 @@ +import java.nio.file.Path + +import io.gatling.commons.util.PathHelper._ + +object IDEPathHelper { + + val gatlingConfUrl: Path = getClass.getClassLoader.getResource("gatling.conf").toURI + val projectRootDir = gatlingConfUrl.ancestor(3) + + val mavenSourcesDirectory = projectRootDir / "src" / "test" / "scala" + val mavenResourcesDirectory = projectRootDir / "src" / "test" / "resources" + val mavenTargetDirectory = projectRootDir / "target" + val mavenBinariesDirectory = mavenTargetDirectory / "test-classes" + + val dataDirectory = mavenResourcesDirectory / "data" + val bodiesDirectory = mavenResourcesDirectory / "bodies" + + val recorderOutputDirectory = mavenSourcesDirectory + val resultsDirectory = mavenTargetDirectory / "gatling" + + val recorderConfigFile = mavenResourcesDirectory / "recorder.conf" +} diff --git a/gatling/src/test/scala/Recorder.scala b/gatling/src/test/scala/Recorder.scala new file mode 100644 index 0000000000..6ad320618b --- /dev/null +++ b/gatling/src/test/scala/Recorder.scala @@ -0,0 +1,12 @@ +import io.gatling.recorder.GatlingRecorder +import io.gatling.recorder.config.RecorderPropertiesBuilder + +object Recorder extends App { + + val props = new RecorderPropertiesBuilder + props.simulationOutputFolder(IDEPathHelper.recorderOutputDirectory.toString) + props.simulationPackage("org.baeldung") + props.bodiesFolder(IDEPathHelper.bodiesDirectory.toString) + + GatlingRecorder.fromMap(props.build, Some(IDEPathHelper.recorderConfigFile)) +} diff --git a/gatling/src/test/scala/org/baeldung/RecordedSimulation.scala b/gatling/src/test/scala/org/baeldung/RecordedSimulation.scala new file mode 100644 index 0000000000..cdbef1bf3c --- /dev/null +++ b/gatling/src/test/scala/org/baeldung/RecordedSimulation.scala @@ -0,0 +1,46 @@ +package org.baeldung + +import scala.concurrent.duration._ + +import io.gatling.core.Predef._ +import io.gatling.http.Predef._ +import io.gatling.jdbc.Predef._ + +class RecordedSimulation extends Simulation { + + val httpProtocol = http + .baseURL("http://computer-database.gatling.io") + .inferHtmlResources(BlackList(""".*\.css""", """.*\.js""", """.*\.ico"""), WhiteList()) + .acceptHeader("text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8") + .acceptEncodingHeader("gzip, deflate") + .acceptLanguageHeader("it-IT,it;q=0.8,en-US;q=0.5,en;q=0.3") + .userAgentHeader("Mozilla/5.0 (Windows NT 10.0; WOW64; rv:46.0) Gecko/20100101 Firefox/46.0") + + + + + + val scn = scenario("RecordedSimulation") + .exec(http("request_0") + .get("/")) + .pause(5) + .exec(http("request_1") + .get("/computers?f=amstrad")) + .pause(4) + .exec(http("request_2") + .get("/computers/412")) + .pause(2) + .exec(http("request_3") + .get("/")) + .pause(2) + .exec(http("request_4") + .get("/computers?p=1")) + .pause(1) + .exec(http("request_5") + .get("/computers?p=2")) + .pause(2) + .exec(http("request_6") + .get("/computers?p=3")) + + setUp(scn.inject(atOnceUsers(1))).protocols(httpProtocol) +} From 2452e58c2e95efe4efb1e01f8ad3ef4cbe857e26 Mon Sep 17 00:00:00 2001 From: ccristian Date: Wed, 8 Jun 2016 22:05:48 +0200 Subject: [PATCH 028/108] jee7schedule --- jee7schedule/pom.xml | 311 ++++++++++++++++++ .../baeldung/timer/AutomaticTimerBean.java | 27 ++ .../baeldung/timer/FixedDelayTimerBean.java | 20 ++ .../ProgrammaticAtFixedRateTimerBean.java | 31 ++ .../baeldung/timer/ProgrammaticTimerBean.java | 39 +++ ...ammaticWithInitialFixedDelayTimerBean.java | 31 ++ .../com/baeldung/timer/ScheduleTimerBean.java | 27 ++ .../java/com/baeldung/timer/TimerEvent.java | 27 ++ .../baeldung/timer/TimerEventListener.java | 26 ++ .../java/com/baeldung/timer/WorkerBean.java | 33 ++ .../src/main/webapp/WEB-INF/beans.xml | 0 .../timer/AutomaticTimerBeanTest.java | 66 ++++ .../ProgrammaticAtFixedRateTimerBeanTest.java | 56 ++++ .../timer/ProgrammaticTimerBeanTest.java | 53 +++ ...ogrammaticWithFixedDelayTimerBeanTest.java | 61 ++++ .../baeldung/timer/ScheduleTimerBeanTest.java | 59 ++++ .../baeldung/timer/WithinWindowMatcher.java | 30 ++ pom.xml | 1 + 18 files changed, 898 insertions(+) create mode 100644 jee7schedule/pom.xml create mode 100644 jee7schedule/src/main/java/com/baeldung/timer/AutomaticTimerBean.java create mode 100644 jee7schedule/src/main/java/com/baeldung/timer/FixedDelayTimerBean.java create mode 100644 jee7schedule/src/main/java/com/baeldung/timer/ProgrammaticAtFixedRateTimerBean.java create mode 100644 jee7schedule/src/main/java/com/baeldung/timer/ProgrammaticTimerBean.java create mode 100644 jee7schedule/src/main/java/com/baeldung/timer/ProgrammaticWithInitialFixedDelayTimerBean.java create mode 100644 jee7schedule/src/main/java/com/baeldung/timer/ScheduleTimerBean.java create mode 100644 jee7schedule/src/main/java/com/baeldung/timer/TimerEvent.java create mode 100644 jee7schedule/src/main/java/com/baeldung/timer/TimerEventListener.java create mode 100644 jee7schedule/src/main/java/com/baeldung/timer/WorkerBean.java create mode 100644 jee7schedule/src/main/webapp/WEB-INF/beans.xml create mode 100644 jee7schedule/src/test/java/com/baeldung/timer/AutomaticTimerBeanTest.java create mode 100644 jee7schedule/src/test/java/com/baeldung/timer/ProgrammaticAtFixedRateTimerBeanTest.java create mode 100644 jee7schedule/src/test/java/com/baeldung/timer/ProgrammaticTimerBeanTest.java create mode 100644 jee7schedule/src/test/java/com/baeldung/timer/ProgrammaticWithFixedDelayTimerBeanTest.java create mode 100644 jee7schedule/src/test/java/com/baeldung/timer/ScheduleTimerBeanTest.java create mode 100644 jee7schedule/src/test/java/com/baeldung/timer/WithinWindowMatcher.java diff --git a/jee7schedule/pom.xml b/jee7schedule/pom.xml new file mode 100644 index 0000000000..627b8723e3 --- /dev/null +++ b/jee7schedule/pom.xml @@ -0,0 +1,311 @@ + + + 4.0.0 + + com.baeldung + jee7schedule + 1.0-SNAPSHOT + JavaEE 7 Arquillian Archetype Sample + war + + + 1.7 + 3.0.0 + + 4.11 + 7.0 + + 1.1.4.Final + + 8.0.0.Final + + + + ${maven.min.version} + + + + + + org.jboss.arquillian + arquillian-bom + ${version.arquillian_core} + import + pom + + + + + + + javax + javaee-api + ${version.javaee_api} + provided + + + + junit + junit + ${version.junit} + test + + + org.jboss.arquillian.junit + arquillian-junit-container + test + + + com.jayway.awaitility + awaitility + 1.6.0 + test + + + + org.jboss.shrinkwrap.resolver + shrinkwrap-resolver-impl-maven + test + jar + + + + org.jboss.shrinkwrap.resolver + shrinkwrap-resolver-impl-maven-archive + test + + + + + + + + org.apache.maven.plugins + maven-compiler-plugin + 3.1 + + ${java.min.version} + ${java.min.version} + + + + org.apache.maven.plugins + maven-war-plugin + 2.1.1 + + false + + + + + + + + + wildfly-managed-arquillian + + true + + + standalone-full.xml + ${project.build.directory}/wildfly-${version.wildfly} + + + + io.undertow + undertow-websockets-jsr + 1.0.0.Beta25 + test + + + org.jboss.resteasy + resteasy-client + 3.0.5.Final + test + + + org.jboss.resteasy + resteasy-jaxb-provider + 3.0.5.Final + test + + + org.jboss.resteasy + resteasy-json-p-provider + 3.0.5.Final + test + + + org.wildfly + wildfly-arquillian-container-managed + ${version.wildfly} + test + + + + + + maven-dependency-plugin + 2.8 + + ${maven.test.skip} + + + + unpack + process-test-classes + + unpack + + + + + org.wildfly + wildfly-dist + ${version.wildfly} + zip + false + ${project.build.directory} + + + + + + + + maven-surefire-plugin + 2.17 + + + ${project.build.directory}/wildfly-${version.wildfly} + + + + + + + + wildfly-remote-arquillian + + + io.undertow + undertow-websockets-jsr + 1.0.0.Beta25 + test + + + org.jboss.resteasy + resteasy-client + 3.0.5.Final + test + + + org.jboss.resteasy + resteasy-jaxb-provider + 3.0.5.Final + test + + + org.jboss.resteasy + resteasy-json-p-provider + 3.0.5.Final + test + + + org.wildfly + wildfly-arquillian-container-remote + ${version.wildfly} + test + + + + + glassfish-embedded-arquillian + + + org.glassfish.main.extras + glassfish-embedded-all + 4.0 + test + + + org.glassfish + javax.json + 1.0.4 + test + + + org.glassfish.tyrus + tyrus-client + 1.3 + test + + + org.glassfish.tyrus + tyrus-container-grizzly-client + 1.3 + test + + + org.glassfish.jersey.core + jersey-client + 2.4 + test + + + org.jboss.arquillian.container + arquillian-glassfish-embedded-3.1 + 1.0.0.CR4 + test + + + + + glassfish-remote-arquillian + + + org.glassfish + javax.json + 1.0.4 + test + + + org.glassfish.tyrus + tyrus-client + 1.3 + test + + + org.glassfish.tyrus + tyrus-container-grizzly-client + 1.3 + test + + + org.glassfish.jersey.core + jersey-client + 2.4 + test + + + org.glassfish.jersey.media + jersey-media-json-jackson + 2.4 + test + + + org.glassfish.jersey.media + jersey-media-json-processing + 2.4 + test + + + org.jboss.arquillian.container + arquillian-glassfish-remote-3.1 + 1.0.0.CR4 + test + + + + + diff --git a/jee7schedule/src/main/java/com/baeldung/timer/AutomaticTimerBean.java b/jee7schedule/src/main/java/com/baeldung/timer/AutomaticTimerBean.java new file mode 100644 index 0000000000..373d962f02 --- /dev/null +++ b/jee7schedule/src/main/java/com/baeldung/timer/AutomaticTimerBean.java @@ -0,0 +1,27 @@ +package com.baeldung.timer; + +import javax.ejb.Schedule; +import javax.ejb.Singleton; +import javax.ejb.Startup; +import javax.enterprise.event.Event; +import javax.inject.Inject; +import java.util.Date; + + +@Startup +@Singleton +public class AutomaticTimerBean { + + + @Inject + Event event; + + /** + * This method will be called every 10 second and will fire an @TimerEvent + */ + @Schedule(hour = "*", minute = "*", second = "*/10", info = "Every 10 second timer") + public void printDate() { + event.fire(new TimerEvent("TimerEvent sent at :" + new Date())); + } + +} diff --git a/jee7schedule/src/main/java/com/baeldung/timer/FixedDelayTimerBean.java b/jee7schedule/src/main/java/com/baeldung/timer/FixedDelayTimerBean.java new file mode 100644 index 0000000000..a466682dea --- /dev/null +++ b/jee7schedule/src/main/java/com/baeldung/timer/FixedDelayTimerBean.java @@ -0,0 +1,20 @@ +package com.baeldung.timer; + +import javax.ejb.*; + +/** + * Created by ccristianchiovari on 5/2/16. + */ +@Singleton +public class FixedDelayTimerBean { + + @EJB + private WorkerBean workerBean; + + @Lock(LockType.READ) + @Schedule(second = "*/5", minute = "*", hour = "*", persistent = false) + public void atSchedule() throws InterruptedException { + workerBean.doTimerWork(); + } + +} \ No newline at end of file diff --git a/jee7schedule/src/main/java/com/baeldung/timer/ProgrammaticAtFixedRateTimerBean.java b/jee7schedule/src/main/java/com/baeldung/timer/ProgrammaticAtFixedRateTimerBean.java new file mode 100644 index 0000000000..c1c210c8ac --- /dev/null +++ b/jee7schedule/src/main/java/com/baeldung/timer/ProgrammaticAtFixedRateTimerBean.java @@ -0,0 +1,31 @@ +package com.baeldung.timer; + +import javax.annotation.PostConstruct; +import javax.annotation.Resource; +import javax.ejb.*; +import javax.enterprise.event.Event; +import javax.inject.Inject; + +/** + * author: Cristian Chiovari + */ +@Startup +@Singleton +public class ProgrammaticAtFixedRateTimerBean { + + @Inject + Event event; + + @Resource + TimerService timerService; + + @PostConstruct + public void initialize() { + timerService.createTimer(0,1000, "Every second timer"); + } + + @Timeout + public void programmaticTimout(Timer timer) { + event.fire(new TimerEvent(timer.getInfo().toString())); + } +} diff --git a/jee7schedule/src/main/java/com/baeldung/timer/ProgrammaticTimerBean.java b/jee7schedule/src/main/java/com/baeldung/timer/ProgrammaticTimerBean.java new file mode 100644 index 0000000000..d2dba1239f --- /dev/null +++ b/jee7schedule/src/main/java/com/baeldung/timer/ProgrammaticTimerBean.java @@ -0,0 +1,39 @@ +package com.baeldung.timer; + +import javax.annotation.PostConstruct; +import javax.annotation.Resource; +import javax.ejb.*; +import javax.enterprise.event.Event; +import javax.inject.Inject; + +/** + * author: Jacek Jackowiak + */ +@Startup +@Singleton +public class ProgrammaticTimerBean { + + @Inject + Event event; + + @Resource + TimerService timerService; + + @PostConstruct + public void initialize() { + ScheduleExpression scheduleExpression = new ScheduleExpression() + .hour("*") + .minute("*") + .second("*/5"); + + TimerConfig timerConfig = new TimerConfig(); + timerConfig.setInfo("Every 5 second timer"); + + timerService.createCalendarTimer(scheduleExpression, timerConfig); + } + + @Timeout + public void programmaticTimout(Timer timer) { + event.fire(new TimerEvent(timer.getInfo().toString())); + } +} diff --git a/jee7schedule/src/main/java/com/baeldung/timer/ProgrammaticWithInitialFixedDelayTimerBean.java b/jee7schedule/src/main/java/com/baeldung/timer/ProgrammaticWithInitialFixedDelayTimerBean.java new file mode 100644 index 0000000000..9a1ebcdc57 --- /dev/null +++ b/jee7schedule/src/main/java/com/baeldung/timer/ProgrammaticWithInitialFixedDelayTimerBean.java @@ -0,0 +1,31 @@ +package com.baeldung.timer; + +import javax.annotation.PostConstruct; +import javax.annotation.Resource; +import javax.ejb.*; +import javax.enterprise.event.Event; +import javax.inject.Inject; + +/** + * author: Cristian Chiovari + */ +@Startup +@Singleton +public class ProgrammaticWithInitialFixedDelayTimerBean { + + @Inject + Event event; + + @Resource + TimerService timerService; + + @PostConstruct + public void initialize() { + timerService.createTimer(10000l,5000l, "Delay 10 seconds then every 5 second timer"); + } + + @Timeout + public void programmaticTimout(Timer timer) { + event.fire(new TimerEvent(timer.getInfo().toString())); + } +} diff --git a/jee7schedule/src/main/java/com/baeldung/timer/ScheduleTimerBean.java b/jee7schedule/src/main/java/com/baeldung/timer/ScheduleTimerBean.java new file mode 100644 index 0000000000..09fb95c889 --- /dev/null +++ b/jee7schedule/src/main/java/com/baeldung/timer/ScheduleTimerBean.java @@ -0,0 +1,27 @@ +package com.baeldung.timer; + +import javax.ejb.Schedule; +import javax.ejb.Singleton; +import javax.ejb.Startup; +import javax.ejb.Timer; +import javax.enterprise.event.Event; +import javax.inject.Inject; + + +@Startup +@Singleton +public class ScheduleTimerBean { + + @Inject + Event event; + + @Schedule(hour = "*", minute = "*", second = "*/5", info = "Every 5 second timer") + public void automaticallyScheduled(Timer timer) { + fireEvent(timer); + } + + + private void fireEvent(Timer timer) { + event.fire(new TimerEvent(timer.getInfo().toString())); + } +} diff --git a/jee7schedule/src/main/java/com/baeldung/timer/TimerEvent.java b/jee7schedule/src/main/java/com/baeldung/timer/TimerEvent.java new file mode 100644 index 0000000000..e430cfc1b1 --- /dev/null +++ b/jee7schedule/src/main/java/com/baeldung/timer/TimerEvent.java @@ -0,0 +1,27 @@ +package com.baeldung.timer; + +public class TimerEvent { + + private String eventInfo; + private long time = System.currentTimeMillis(); + + public TimerEvent(String s) { + this.eventInfo = s; + } + + public long getTime() { + return time; + } + + public String getEventInfo() { + return eventInfo; + } + + @Override + public String toString() { + return "TimerEvent {" + + "eventInfo='" + eventInfo + '\'' + + ", time=" + time + + '}'; + } +} diff --git a/jee7schedule/src/main/java/com/baeldung/timer/TimerEventListener.java b/jee7schedule/src/main/java/com/baeldung/timer/TimerEventListener.java new file mode 100644 index 0000000000..c89677213a --- /dev/null +++ b/jee7schedule/src/main/java/com/baeldung/timer/TimerEventListener.java @@ -0,0 +1,26 @@ +package com.baeldung.timer; + +import javax.ejb.Singleton; +import javax.ejb.Startup; +import javax.enterprise.event.Observes; +import java.util.List; +import java.util.concurrent.CopyOnWriteArrayList; + +/** + * This class will listen to all TimerEvent and will collect them + */ +@Startup +@Singleton +public class TimerEventListener { + + final List events = new CopyOnWriteArrayList<>(); + + public void listen(@Observes TimerEvent event) { + System.out.println("event = " + event); + events.add(event); + } + + public List getEvents() { + return events; + } +} diff --git a/jee7schedule/src/main/java/com/baeldung/timer/WorkerBean.java b/jee7schedule/src/main/java/com/baeldung/timer/WorkerBean.java new file mode 100644 index 0000000000..c1f781e95e --- /dev/null +++ b/jee7schedule/src/main/java/com/baeldung/timer/WorkerBean.java @@ -0,0 +1,33 @@ +package com.baeldung.timer; + +import javax.ejb.Lock; +import javax.ejb.LockType; +import javax.ejb.Singleton; +import java.util.concurrent.atomic.AtomicBoolean; + +/** + * Created by cristianchiovari on 5/2/16. + */ +@Singleton +public class WorkerBean { + + private AtomicBoolean busy = new AtomicBoolean(false); + + @Lock(LockType.READ) + public void doTimerWork() throws InterruptedException { + + System.out.println("Timer method called but not started yet !"); + + if (!busy.compareAndSet(false, true)) { + return; + } + + try { + System.out.println("Timer work started"); + Thread.sleep(12000); + System.out.println("Timer work done"); + } finally { + busy.set(false); + } + } +} \ No newline at end of file diff --git a/jee7schedule/src/main/webapp/WEB-INF/beans.xml b/jee7schedule/src/main/webapp/WEB-INF/beans.xml new file mode 100644 index 0000000000..e69de29bb2 diff --git a/jee7schedule/src/test/java/com/baeldung/timer/AutomaticTimerBeanTest.java b/jee7schedule/src/test/java/com/baeldung/timer/AutomaticTimerBeanTest.java new file mode 100644 index 0000000000..df922b28df --- /dev/null +++ b/jee7schedule/src/test/java/com/baeldung/timer/AutomaticTimerBeanTest.java @@ -0,0 +1,66 @@ +package com.baeldung.timer; + +import com.jayway.awaitility.Awaitility; +import org.hamcrest.Matchers; +import org.jboss.arquillian.container.test.api.Deployment; +import org.jboss.arquillian.junit.Arquillian; +import org.jboss.shrinkwrap.api.ShrinkWrap; +import org.jboss.shrinkwrap.api.spec.WebArchive; +import org.jboss.shrinkwrap.resolver.api.maven.Maven; +import org.junit.Test; +import org.junit.runner.RunWith; + +import javax.inject.Inject; +import java.io.File; +import java.util.concurrent.TimeUnit; + +import static com.jayway.awaitility.Awaitility.await; +import static com.jayway.awaitility.Awaitility.to; +import static org.hamcrest.MatcherAssert.assertThat; +import static org.hamcrest.Matchers.equalTo; + + +@RunWith(Arquillian.class) +public class AutomaticTimerBeanTest { + + //the @AutomaticTimerBean has a method called every 10 seconds + //testing the difference ==> 100000 + final static long TIMEOUT = 10000l; + + //the tolerance accepted , so if between two consecutive calls there has to be at least 9 or max 11 seconds. + //because the timer service is not intended for real-time applications so it will not be exactly 10 seconds + final static long TOLERANCE = 1000l; + + @Inject + TimerEventListener timerEventListener; + + @Deployment + public static WebArchive deploy() { + File[] jars = Maven.resolver().loadPomFromFile("pom.xml") + .resolve("com.jayway.awaitility:awaitility") + .withTransitivity().asFile(); + + //only @AutomaticTimerBean is deployed not the other timers + return ShrinkWrap.create(WebArchive.class) + .addAsLibraries(jars) + .addClasses(WithinWindowMatcher.class, TimerEvent.class, TimerEventListener.class, AutomaticTimerBean.class); + } + + + + @Test + public void should_receive_two_pings() { + Awaitility.setDefaultTimeout(30, TimeUnit.SECONDS); + //the test will wait here until two events are triggered + await().untilCall(to(timerEventListener.getEvents()).size(), equalTo(2)); + + TimerEvent firstEvent = timerEventListener.getEvents().get(0); + TimerEvent secondEvent = timerEventListener.getEvents().get(1); + + long delay = secondEvent.getTime() - firstEvent.getTime(); + System.out.println("Actual timeout = " + delay); + + //ensure that the delay between the events is more or less 10 seconds (no real time precision) + assertThat(delay, Matchers.is(WithinWindowMatcher.withinWindow(TIMEOUT, TOLERANCE))); + } +} diff --git a/jee7schedule/src/test/java/com/baeldung/timer/ProgrammaticAtFixedRateTimerBeanTest.java b/jee7schedule/src/test/java/com/baeldung/timer/ProgrammaticAtFixedRateTimerBeanTest.java new file mode 100644 index 0000000000..76c0e3e5b8 --- /dev/null +++ b/jee7schedule/src/test/java/com/baeldung/timer/ProgrammaticAtFixedRateTimerBeanTest.java @@ -0,0 +1,56 @@ +package com.baeldung.timer; + +import com.jayway.awaitility.Awaitility; +import org.jboss.arquillian.container.test.api.Deployment; +import org.jboss.arquillian.junit.Arquillian; +import org.jboss.shrinkwrap.api.ShrinkWrap; +import org.jboss.shrinkwrap.api.spec.WebArchive; +import org.jboss.shrinkwrap.resolver.api.maven.Maven; +import org.junit.Test; +import org.junit.runner.RunWith; + +import javax.inject.Inject; +import java.io.File; +import java.util.concurrent.TimeUnit; + +import static com.jayway.awaitility.Awaitility.await; +import static com.jayway.awaitility.Awaitility.to; +import static org.hamcrest.MatcherAssert.assertThat; +import static org.hamcrest.Matchers.equalTo; +import static org.hamcrest.Matchers.is; + + +@RunWith(Arquillian.class) +public class ProgrammaticAtFixedRateTimerBeanTest { + + final static long TIMEOUT = 1000; + final static long TOLERANCE = 500l; + + @Inject + TimerEventListener timerEventListener; + + @Deployment + public static WebArchive deploy() { + File[] jars = Maven.resolver().loadPomFromFile("pom.xml") + .resolve("com.jayway.awaitility:awaitility") + .withTransitivity().asFile(); + + return ShrinkWrap.create(WebArchive.class) + .addAsLibraries(jars) + .addClasses(WithinWindowMatcher.class, TimerEvent.class, TimerEventListener.class, ProgrammaticAtFixedRateTimerBean.class); + } + + @Test + public void should_receive_ten_pings() { + + Awaitility.setDefaultTimeout(30, TimeUnit.SECONDS); + + await().untilCall(to(timerEventListener.getEvents()).size(), equalTo(10)); + TimerEvent firstEvent = timerEventListener.getEvents().get(0); + TimerEvent secondEvent = timerEventListener.getEvents().get(1); + + long delay = secondEvent.getTime() - firstEvent.getTime(); + System.out.println("Actual timeout = " + delay); + assertThat(delay, is(WithinWindowMatcher.withinWindow(TIMEOUT, TOLERANCE))); + } +} \ No newline at end of file diff --git a/jee7schedule/src/test/java/com/baeldung/timer/ProgrammaticTimerBeanTest.java b/jee7schedule/src/test/java/com/baeldung/timer/ProgrammaticTimerBeanTest.java new file mode 100644 index 0000000000..f93ba61fe3 --- /dev/null +++ b/jee7schedule/src/test/java/com/baeldung/timer/ProgrammaticTimerBeanTest.java @@ -0,0 +1,53 @@ +package com.baeldung.timer; + +import org.jboss.arquillian.container.test.api.Deployment; +import org.jboss.arquillian.junit.Arquillian; +import org.jboss.shrinkwrap.api.ShrinkWrap; +import org.jboss.shrinkwrap.api.spec.WebArchive; +import org.jboss.shrinkwrap.resolver.api.maven.Maven; +import org.junit.Test; +import org.junit.runner.RunWith; + +import javax.inject.Inject; +import java.io.File; + +import static com.jayway.awaitility.Awaitility.await; +import static com.jayway.awaitility.Awaitility.to; +import static org.hamcrest.MatcherAssert.assertThat; +import static org.hamcrest.Matchers.equalTo; +import static org.hamcrest.Matchers.is; + + +@RunWith(Arquillian.class) +public class ProgrammaticTimerBeanTest { + + final static long TIMEOUT = 5000l; + final static long TOLERANCE = 1000l; + + @Inject + TimerEventListener timerEventListener; + + @Deployment + public static WebArchive deploy() { + File[] jars = Maven.resolver().loadPomFromFile("pom.xml") + .resolve("com.jayway.awaitility:awaitility") + .withTransitivity().asFile(); + + return ShrinkWrap.create(WebArchive.class) + .addAsLibraries(jars) + .addClasses(WithinWindowMatcher.class, TimerEvent.class, TimerEventListener.class, ProgrammaticTimerBean.class); + } + + @Test + public void should_receive_two_pings() { + + await().untilCall(to(timerEventListener.getEvents()).size(), equalTo(2)); + + TimerEvent firstEvent = timerEventListener.getEvents().get(0); + TimerEvent secondEvent = timerEventListener.getEvents().get(1); + + long delay = secondEvent.getTime() - firstEvent.getTime(); + System.out.println("Actual timeout = " + delay); + assertThat(delay, is(WithinWindowMatcher.withinWindow(TIMEOUT, TOLERANCE))); + } +} \ No newline at end of file diff --git a/jee7schedule/src/test/java/com/baeldung/timer/ProgrammaticWithFixedDelayTimerBeanTest.java b/jee7schedule/src/test/java/com/baeldung/timer/ProgrammaticWithFixedDelayTimerBeanTest.java new file mode 100644 index 0000000000..6764aa386d --- /dev/null +++ b/jee7schedule/src/test/java/com/baeldung/timer/ProgrammaticWithFixedDelayTimerBeanTest.java @@ -0,0 +1,61 @@ +package com.baeldung.timer; + +import com.jayway.awaitility.Awaitility; +import org.jboss.arquillian.container.test.api.Deployment; +import org.jboss.arquillian.junit.Arquillian; +import org.jboss.shrinkwrap.api.ShrinkWrap; +import org.jboss.shrinkwrap.api.spec.WebArchive; +import org.jboss.shrinkwrap.resolver.api.maven.Maven; +import org.junit.Test; +import org.junit.runner.RunWith; + +import javax.inject.Inject; +import java.io.File; +import java.util.concurrent.TimeUnit; + +import static com.jayway.awaitility.Awaitility.await; +import static com.jayway.awaitility.Awaitility.to; +import static org.hamcrest.MatcherAssert.assertThat; +import static org.hamcrest.Matchers.equalTo; +import static org.hamcrest.Matchers.is; + + +@RunWith(Arquillian.class) +public class ProgrammaticWithFixedDelayTimerBeanTest { + + final static long TIMEOUT = 15000l; + final static long TOLERANCE = 1000l; + + @Inject + TimerEventListener timerEventListener; + + @Deployment + public static WebArchive deploy() { + File[] jars = Maven.resolver().loadPomFromFile("pom.xml") + .resolve("com.jayway.awaitility:awaitility") + .withTransitivity().asFile(); + + return ShrinkWrap.create(WebArchive.class) + .addAsLibraries(jars) + .addClasses(WithinWindowMatcher.class, TimerEvent.class, TimerEventListener.class, ProgrammaticWithInitialFixedDelayTimerBean.class); + } + + @Test + public void should_receive_two_pings() { + + Awaitility.setDefaultTimeout(30, TimeUnit.SECONDS); + + // 10 seconds pause so we get the startTime and it will trigger first event + long startTime = System.currentTimeMillis(); + + await().untilCall(to(timerEventListener.getEvents()).size(), equalTo(2)); + TimerEvent firstEvent = timerEventListener.getEvents().get(0); + TimerEvent secondEvent = timerEventListener.getEvents().get(1); + + long delay = secondEvent.getTime() - startTime; + System.out.println("Actual timeout = " + delay); + + //apx 15 seconds = 10 delay + 2 timers (first after a pause of 10 seconds and the next others every 5 seconds) + assertThat(delay, is(WithinWindowMatcher.withinWindow(TIMEOUT, TOLERANCE))); + } +} \ No newline at end of file diff --git a/jee7schedule/src/test/java/com/baeldung/timer/ScheduleTimerBeanTest.java b/jee7schedule/src/test/java/com/baeldung/timer/ScheduleTimerBeanTest.java new file mode 100644 index 0000000000..7a5b043101 --- /dev/null +++ b/jee7schedule/src/test/java/com/baeldung/timer/ScheduleTimerBeanTest.java @@ -0,0 +1,59 @@ +package com.baeldung.timer; + +import com.jayway.awaitility.Awaitility; +import org.hamcrest.Matchers; +import org.jboss.arquillian.container.test.api.Deployment; +import org.jboss.arquillian.junit.Arquillian; +import org.jboss.shrinkwrap.api.ShrinkWrap; +import org.jboss.shrinkwrap.api.spec.WebArchive; +import org.jboss.shrinkwrap.resolver.api.maven.Maven; +import org.junit.Test; +import org.junit.runner.RunWith; + +import javax.inject.Inject; +import java.io.File; +import java.util.concurrent.TimeUnit; + +import static com.jayway.awaitility.Awaitility.await; +import static com.jayway.awaitility.Awaitility.to; +import static org.hamcrest.MatcherAssert.assertThat; +import static org.hamcrest.Matchers.equalTo; + + +@RunWith(Arquillian.class) +public class ScheduleTimerBeanTest { + + final static long TIMEOUT = 5000l; + final static long TOLERANCE = 1000l; + + @Inject + TimerEventListener timerEventListener; + + @Deployment + public static WebArchive deploy() { + File[] jars = Maven.resolver().loadPomFromFile("pom.xml") + .resolve("com.jayway.awaitility:awaitility") + .withTransitivity().asFile(); + + return ShrinkWrap.create(WebArchive.class) + .addAsLibraries(jars) + .addClasses(WithinWindowMatcher.class, TimerEvent.class, TimerEventListener.class, ScheduleTimerBean.class); + } + + @Test + public void should_receive_three_pings() { + + Awaitility.setDefaultTimeout(30, TimeUnit.SECONDS); + await().untilCall(to(timerEventListener.getEvents()).size(), equalTo(3)); + + TimerEvent firstEvent = timerEventListener.getEvents().get(0); + TimerEvent secondEvent = timerEventListener.getEvents().get(1); + TimerEvent thirdEvent = timerEventListener.getEvents().get(2); + + long delay = secondEvent.getTime() - firstEvent.getTime(); + assertThat(delay, Matchers.is(WithinWindowMatcher.withinWindow(TIMEOUT, TOLERANCE))); + delay = thirdEvent.getTime() - secondEvent.getTime(); + assertThat(delay, Matchers.is(WithinWindowMatcher.withinWindow(TIMEOUT, TOLERANCE))); + + } +} diff --git a/jee7schedule/src/test/java/com/baeldung/timer/WithinWindowMatcher.java b/jee7schedule/src/test/java/com/baeldung/timer/WithinWindowMatcher.java new file mode 100644 index 0000000000..91adca6042 --- /dev/null +++ b/jee7schedule/src/test/java/com/baeldung/timer/WithinWindowMatcher.java @@ -0,0 +1,30 @@ +package com.baeldung.timer; + +import org.hamcrest.BaseMatcher; +import org.hamcrest.Description; +import org.hamcrest.Matcher; + +class WithinWindowMatcher extends BaseMatcher { + private final long timeout; + private final long tolerance; + + public WithinWindowMatcher(long timeout, long tolerance) { + this.timeout = timeout; + this.tolerance = tolerance; + } + + @Override + public boolean matches(Object item) { + final Long actual = (Long) item; + return Math.abs(actual - timeout) < tolerance; + } + + @Override + public void describeTo(Description description) { + //To change body of implemented methods use File | Settings | File Templates. + } + + public static Matcher withinWindow(final long timeout, final long tolerance) { + return new WithinWindowMatcher(timeout, tolerance); + } +} diff --git a/pom.xml b/pom.xml index 7a51347af6..91a2023cee 100644 --- a/pom.xml +++ b/pom.xml @@ -23,6 +23,7 @@ jooq-spring json-path mockito + jee7schedule querydsl From a156fa85908f8aaa44f8ba7a4af2d2699cd47afa Mon Sep 17 00:00:00 2001 From: Raquel Garrido Crespo Date: Wed, 8 Jun 2016 23:13:45 +0200 Subject: [PATCH 029/108] Introduction to XPath --- pom.xml | 2 +- xml/pom.xml | 139 +++++++++++++ .../java/com/baeldung/xml/DefaultParser.java | 193 ++++++++++++++++++ .../com/baeldung/xml/DefaultParserTest.java | 83 ++++++++ xml/src/test/resources/example.xml | 32 +++ xml/src/test/resources/example_namespace.xml | 32 +++ 6 files changed, 480 insertions(+), 1 deletion(-) create mode 100644 xml/pom.xml create mode 100644 xml/src/main/java/com/baeldung/xml/DefaultParser.java create mode 100644 xml/src/test/java/com/baeldung/xml/DefaultParserTest.java create mode 100644 xml/src/test/resources/example.xml create mode 100644 xml/src/test/resources/example_namespace.xml diff --git a/pom.xml b/pom.xml index 7a51347af6..ce7dfca62f 100644 --- a/pom.xml +++ b/pom.xml @@ -66,7 +66,7 @@ spring-thymeleaf spring-zuul jsf - + xml diff --git a/xml/pom.xml b/xml/pom.xml new file mode 100644 index 0000000000..fc158901e6 --- /dev/null +++ b/xml/pom.xml @@ -0,0 +1,139 @@ + + 4.0.0 + com.baeldung + xml + 0.1-SNAPSHOT + + xml + + + + + + com.google.guava + guava + ${guava.version} + + + + commons-io + commons-io + 2.4 + + + + org.apache.commons + commons-collections4 + 4.0 + + + + org.apache.commons + commons-lang3 + ${commons-lang3.version} + + + + + + + junit + junit + ${junit.version} + test + + + + org.hamcrest + hamcrest-core + ${org.hamcrest.version} + test + + + org.hamcrest + hamcrest-library + ${org.hamcrest.version} + test + + + + org.mockito + mockito-core + ${mockito.version} + test + + + + + + xml + + + src/main/resources + true + + + + + + + org.apache.maven.plugins + maven-compiler-plugin + ${maven-compiler-plugin.version} + + 1.8 + 1.8 + + + + + org.apache.maven.plugins + maven-surefire-plugin + ${maven-surefire-plugin.version} + + + + + + + + + 4.3.11.Final + 5.1.38 + + + 2.7.2 + + + 1.7.13 + 1.1.3 + + + 5.1.3.Final + + + 19.0 + 3.4 + + + 1.3 + 4.12 + 1.10.19 + + 4.4.1 + 4.5 + + 2.9.0 + + + 3.5.1 + 2.6 + 2.19.1 + 2.7 + 1.4.18 + + + + + diff --git a/xml/src/main/java/com/baeldung/xml/DefaultParser.java b/xml/src/main/java/com/baeldung/xml/DefaultParser.java new file mode 100644 index 0000000000..89326f45c9 --- /dev/null +++ b/xml/src/main/java/com/baeldung/xml/DefaultParser.java @@ -0,0 +1,193 @@ +package com.baeldung.xml; + +import java.io.File; +import java.io.FileInputStream; +import java.io.IOException; +import java.util.Iterator; + +import javax.xml.namespace.NamespaceContext; +import javax.xml.parsers.DocumentBuilder; +import javax.xml.parsers.DocumentBuilderFactory; +import javax.xml.parsers.ParserConfigurationException; +import javax.xml.xpath.XPath; +import javax.xml.xpath.XPathConstants; +import javax.xml.xpath.XPathExpressionException; +import javax.xml.xpath.XPathFactory; + +import org.w3c.dom.Document; +import org.w3c.dom.Node; +import org.w3c.dom.NodeList; +import org.xml.sax.SAXException; + +public class DefaultParser { + + private File file; + + public DefaultParser(File file) { + this.file = file; + } + + public NodeList getFirstLevelNodeList() { + NodeList nodeList = null; + try { + FileInputStream fileIS = new FileInputStream(this.getFile()); + DocumentBuilderFactory builderFactory = DocumentBuilderFactory.newInstance(); + + DocumentBuilder builder = builderFactory.newDocumentBuilder(); + + Document xmlDocument = builder.parse(fileIS); + + XPath xPath = XPathFactory.newInstance().newXPath(); + + String expression = "/Tutorials/Tutorial"; + + nodeList = (NodeList) xPath.compile(expression).evaluate(xmlDocument, XPathConstants.NODESET); + + } catch (SAXException | IOException | ParserConfigurationException | XPathExpressionException e) { + e.printStackTrace(); + } + return nodeList; + } + + public Node getNodeById(String id) { + Node node = null; + try { + DocumentBuilderFactory builderFactory = DocumentBuilderFactory.newInstance(); + + DocumentBuilder builder = builderFactory.newDocumentBuilder(); + + Document xmlDocument = builder.parse(this.getFile()); + + XPath xPath = XPathFactory.newInstance().newXPath(); + + String expression = "/Tutorials/Tutorial[@tutId=" + "'" + id + "'" + "]"; + + node = (Node) xPath.compile(expression).evaluate(xmlDocument, XPathConstants.NODE); + + } catch (SAXException | IOException | ParserConfigurationException | XPathExpressionException e) { + e.printStackTrace(); + } + return node; + } + + public NodeList getNodeListByTitle(String name) { + NodeList nodeList = null; + try { + DocumentBuilderFactory builderFactory = DocumentBuilderFactory.newInstance(); + + DocumentBuilder builder = builderFactory.newDocumentBuilder(); + + Document xmlDocument = builder.parse(this.getFile()); + + this.clean(xmlDocument); + + XPath xPath = XPathFactory.newInstance().newXPath(); + + String expression = "//Tutorial[descendant::title[text()=" + "'" + name + "'" + "]]"; + + nodeList = (NodeList) xPath.compile(expression).evaluate(xmlDocument, XPathConstants.NODESET); + + } catch (SAXException | IOException | ParserConfigurationException | XPathExpressionException e) { + e.printStackTrace(); + } + return nodeList; + } + + public NodeList getElementsByDate(String date) { + NodeList nodeList = null; + + try { + DocumentBuilderFactory builderFactory = DocumentBuilderFactory.newInstance(); + + DocumentBuilder builder = builderFactory.newDocumentBuilder(); + + Document xmlDocument = builder.parse(this.getFile()); + + this.clean(xmlDocument); + + XPath xPath = XPathFactory.newInstance().newXPath(); + + String expression = "//Tutorial[number(translate(date, '/', '')) > " + date + "]"; + + nodeList = (NodeList) xPath.compile(expression).evaluate(xmlDocument, XPathConstants.NODESET); + + } catch (SAXException | IOException | ParserConfigurationException | XPathExpressionException e) { + e.printStackTrace(); + } + return nodeList; + } + + public NodeList getAllTutorials() { + NodeList nodeList = null; + try { + DocumentBuilderFactory builderFactory = DocumentBuilderFactory.newInstance(); + builderFactory.setNamespaceAware(true); + DocumentBuilder builder = builderFactory.newDocumentBuilder(); + + Document xmlDocument = builder.parse(this.getFile()); + + this.clean(xmlDocument); + + XPath xPath = XPathFactory.newInstance().newXPath(); + + xPath.setNamespaceContext(new NamespaceContext() { + + @Override + public Iterator getPrefixes(String arg0) { + return null; + } + + @Override + public String getPrefix(String arg0) { + return null; + } + + @Override + public String getNamespaceURI(String arg0) { + if ("bdn".equals(arg0)) { + return "http://www.baeldung.com/full_archive"; + } + return null; + } + }); + + String expression = "/bdn:Tutorials/bdn:Tutorial"; + + nodeList = (NodeList) xPath.compile(expression).evaluate(xmlDocument, XPathConstants.NODESET); + + } catch (SAXException | IOException | ParserConfigurationException | XPathExpressionException e) { + e.printStackTrace(); + } + return nodeList; + } + + private void clean(Node node) { + + NodeList childs = node.getChildNodes(); + + for (int n = childs.getLength() - 1; n >= 0; n--) { + Node child = childs.item(n); + short nodeType = child.getNodeType(); + + if (nodeType == Node.ELEMENT_NODE) + clean(child); + else if (nodeType == Node.TEXT_NODE) { + String trimmedNodeVal = child.getNodeValue().trim(); + if (trimmedNodeVal.length() == 0) + node.removeChild(child); + else + child.setNodeValue(trimmedNodeVal); + } else if (nodeType == Node.COMMENT_NODE) + node.removeChild(child); + } + } + + public File getFile() { + return file; + } + + public void setFile(File file) { + this.file = file; + } + +} diff --git a/xml/src/test/java/com/baeldung/xml/DefaultParserTest.java b/xml/src/test/java/com/baeldung/xml/DefaultParserTest.java new file mode 100644 index 0000000000..451917a5da --- /dev/null +++ b/xml/src/test/java/com/baeldung/xml/DefaultParserTest.java @@ -0,0 +1,83 @@ +package com.baeldung.xml; + +import static org.junit.Assert.*; + +import java.io.File; + +import org.junit.Test; +import org.w3c.dom.Node; +import org.w3c.dom.NodeList; + +/** + * Unit test for simple App. + */ +public class DefaultParserTest { + + final String fileName = "src/test/resources/example.xml"; + + final String fileNameSpace = "src/test/resources/example_namespace.xml"; + + DefaultParser parser; + + @Test + public void getFirstLevelNodeListTest() { + parser = new DefaultParser(new File(fileName)); + NodeList list = parser.getFirstLevelNodeList(); + + assertNotNull(list); + assertTrue(list.getLength() == 4); + } + + @Test + public void getNodeListByTitle() { + parser = new DefaultParser(new File(fileName)); + NodeList list = parser.getNodeListByTitle("XML"); + + for (int i = 0; null != list && i < list.getLength(); i++) { + Node nod = list.item(i); + assertEquals("java", nod.getAttributes().getNamedItem("type").getTextContent()); + assertEquals("02", nod.getAttributes().getNamedItem("tutId").getTextContent()); + assertEquals("XML", nod.getFirstChild().getTextContent()); + assertEquals("title", nod.getFirstChild().getNodeName()); + assertEquals("description", nod.getChildNodes().item(1).getNodeName()); + assertEquals("Introduction to XPath", nod.getChildNodes().item(1).getTextContent()); + assertEquals("author", nod.getLastChild().getNodeName()); + assertEquals("XMLAuthor", nod.getLastChild().getTextContent()); + } + } + + @Test + public void getNodeById() { + parser = new DefaultParser(new File(fileName)); + Node node = parser.getNodeById("03"); + + String type = node.getAttributes().getNamedItem("type").getNodeValue(); + assertEquals("android", type); + } + + @Test + public void getNodeListByDate(){ + parser = new DefaultParser(new File(fileName)); + NodeList list = parser.getNodeListByTitle("04022016"); + for (int i = 0; null != list && i < list.getLength(); i++) { + Node nod = list.item(i); + assertEquals("java", nod.getAttributes().getNamedItem("type").getTextContent()); + assertEquals("04", nod.getAttributes().getNamedItem("tutId").getTextContent()); + assertEquals("Spring", nod.getFirstChild().getTextContent()); + assertEquals("title", nod.getFirstChild().getNodeName()); + assertEquals("description", nod.getChildNodes().item(1).getNodeName()); + assertEquals("Introduction to Spring", nod.getChildNodes().item(1).getTextContent()); + assertEquals("author", nod.getLastChild().getNodeName()); + assertEquals("SpringAuthor", nod.getLastChild().getTextContent()); + } + } + + @Test + public void getNodeListWithNamespace(){ + parser = new DefaultParser(new File(fileNameSpace)); + NodeList list = parser.getAllTutorials(); + assertNotNull(list); + assertTrue(list.getLength() == 4); + } + +} diff --git a/xml/src/test/resources/example.xml b/xml/src/test/resources/example.xml new file mode 100644 index 0000000000..d546dd137b --- /dev/null +++ b/xml/src/test/resources/example.xml @@ -0,0 +1,32 @@ + + + + Guava + Introduction to Guava + 04/04/2016 + GuavaAuthor + + + XML + Introduction to XPath + 04/05/2016 + XMLAuthor + + + Android + Introduction to Android + 04/03/2016 + AndroidAuthor + + + Spring + Introduction to Spring + 04/02/2016 + SpringAuthor + +
Spring Core
+
Spring MVC
+
Spring Batch
+
+
+
\ No newline at end of file diff --git a/xml/src/test/resources/example_namespace.xml b/xml/src/test/resources/example_namespace.xml new file mode 100644 index 0000000000..26131302ea --- /dev/null +++ b/xml/src/test/resources/example_namespace.xml @@ -0,0 +1,32 @@ + + + + Guava + Introduction to Guava + 04/04/2016 + GuavaAuthor + + + XML + Introduction to XPath + 04/05/2016 + XMLAuthor + + + Android + Introduction to Android + 04/03/2016 + AndroidAuthor + + + Spring + Introduction to Spring + 04/02/2016 + SpringAuthor + +
Spring Core
+
Spring MVC
+
Spring Batch
+
+
+
\ No newline at end of file From 815933447beea629ad92f7a7e8584cc8b8c406b9 Mon Sep 17 00:00:00 2001 From: toubou91 Date: Thu, 9 Jun 2016 00:22:06 +0200 Subject: [PATCH 030/108] Updates for @ModelAttribute example --- .../baeldung/web/controller/EmployeeController.java | 11 ++++++++++- .../src/main/webapp/WEB-INF/view/employeeView.jsp | 1 + 2 files changed, 11 insertions(+), 1 deletion(-) diff --git a/spring-mvc-java/src/main/java/com/baeldung/web/controller/EmployeeController.java b/spring-mvc-java/src/main/java/com/baeldung/web/controller/EmployeeController.java index 38272b23cb..2166c00873 100644 --- a/spring-mvc-java/src/main/java/com/baeldung/web/controller/EmployeeController.java +++ b/spring-mvc-java/src/main/java/com/baeldung/web/controller/EmployeeController.java @@ -3,10 +3,11 @@ package com.baeldung.web.controller; import java.util.HashMap; import java.util.Map; -import com.baeldung.model.Employee; import org.springframework.stereotype.Controller; +import org.springframework.ui.Model; import org.springframework.ui.ModelMap; import org.springframework.validation.BindingResult; +import org.springframework.web.bind.annotation.ControllerAdvice; import org.springframework.web.bind.annotation.ModelAttribute; import org.springframework.web.bind.annotation.PathVariable; import org.springframework.web.bind.annotation.RequestMapping; @@ -14,7 +15,10 @@ import org.springframework.web.bind.annotation.RequestMethod; import org.springframework.web.bind.annotation.ResponseBody; import org.springframework.web.servlet.ModelAndView; +import com.baeldung.model.Employee; + @Controller +@ControllerAdvice public class EmployeeController { Map employeeMap = new HashMap<>(); @@ -43,4 +47,9 @@ public class EmployeeController { return "employeeView"; } + @ModelAttribute + public void addAttributes(final Model model) { + model.addAttribute("msg", "Welcome to the Netherlands!"); + } + } diff --git a/spring-mvc-java/src/main/webapp/WEB-INF/view/employeeView.jsp b/spring-mvc-java/src/main/webapp/WEB-INF/view/employeeView.jsp index 1457bc5fc8..9a9b879a35 100644 --- a/spring-mvc-java/src/main/webapp/WEB-INF/view/employeeView.jsp +++ b/spring-mvc-java/src/main/webapp/WEB-INF/view/employeeView.jsp @@ -6,6 +6,7 @@

Submitted Employee Information

+

${msg}

From 7eabc6cd2578b0b5b46fe6885db27e14cbc46932 Mon Sep 17 00:00:00 2001 From: reymalahay Date: Wed, 1 Jun 2016 06:47:26 -0600 Subject: [PATCH 031/108] Code and related files for the dependency injection demos. --- .gitignore | 2 + dependency-injection/.gitignore | 12 +++ dependency-injection/build.gradle | 43 ++++++++++ .../docs/autowired-name-demo-classdiagram.png | Bin 0 -> 48700 bytes .../docs/autowired-type-demo-classdiagram.png | Bin 0 -> 23197 bytes .../docs/autowired-type-demo-classdiagram.xml | 1 + .../docs/inject-demo-classdiagram.png | Bin 0 -> 38729 bytes .../docs/inject-field-demo-classdiagram.png | Bin 0 -> 19402 bytes .../docs/inject-field-demo-classdiagram.xml | 1 + .../docs/inject-name-demo-classdiagram.png | Bin 0 -> 23358 bytes .../docs/inject-name-demo-classdiagram.xml | 1 + .../inject-qualifier-demo-classdiagram.png | Bin 0 -> 37170 bytes .../inject-qualifier-demo-classdiagram.xml | 1 + .../docs/resource-demo-classdiagram.png | Bin 0 -> 46095 bytes .../docs/resource-field-demo-classdiagram.png | Bin 0 -> 17692 bytes .../docs/resource-field-demo-classdiagram.xml | 1 + ...source-method-byname-demo-classdiagram.png | Bin 0 -> 29579 bytes .../resource-method-demo-classdiagram.png | Bin 0 -> 19905 bytes .../resource-method-demo-classdiagram.xml | 1 + dependency-injection/pom.xml | 81 ++++++++++++++++++ .../autowired/FieldAutowiredDemo.java | 27 ++++++ .../autowired/FieldAutowiredNameDemo.java | 27 ++++++ .../FieldQualifierAutowiredDemo.java | 39 +++++++++ .../AnotherArbitraryDependency.java | 10 +++ .../dependency/ArbitraryDependency.java | 10 +++ .../YetAnotherArbitraryDependency.java | 10 +++ .../inject/FieldByNameInjectDemo.java | 30 +++++++ .../com/baeldung/inject/FieldInjectDemo.java | 27 ++++++ .../inject/FieldQualifierInjectDemo.java | 40 +++++++++ .../resource/FieldResourceInjectionDemo.java | 25 ++++++ .../MethodByQualifierResourceDemo.java | 43 ++++++++++ .../resource/MethodByTypeResourceDemo.java | 30 +++++++ .../resource/MethodResourceInjectionDemo.java | 29 +++++++ .../baeldung/resource/NamedResourceTest.java | 27 ++++++ .../QualifierResourceInjectionDemo.java | 35 ++++++++ .../resource/SetterResourceInjectionDemo.java | 29 +++++++ ...applicationContextTest-@Autowired-Name.xml | 12 +++ ...cationContextTest-@Autowired-Qualifier.xml | 12 +++ ...applicationContextTest-@Autowired-Type.xml | 10 +++ .../applicationContextTest-@Inject-Name.xml | 11 +++ ...plicationContextTest-@Inject-Qualifier.xml | 12 +++ .../applicationContextTest-@Inject-Type.xml | 10 +++ ...licationContextTest-@Resource-NameType.xml | 12 +++ ...icationContextTest-@Resource-Qualifier.xml | 16 ++++ 44 files changed, 677 insertions(+) create mode 100644 dependency-injection/.gitignore create mode 100644 dependency-injection/build.gradle create mode 100644 dependency-injection/docs/autowired-name-demo-classdiagram.png create mode 100644 dependency-injection/docs/autowired-type-demo-classdiagram.png create mode 100644 dependency-injection/docs/autowired-type-demo-classdiagram.xml create mode 100644 dependency-injection/docs/inject-demo-classdiagram.png create mode 100644 dependency-injection/docs/inject-field-demo-classdiagram.png create mode 100644 dependency-injection/docs/inject-field-demo-classdiagram.xml create mode 100644 dependency-injection/docs/inject-name-demo-classdiagram.png create mode 100644 dependency-injection/docs/inject-name-demo-classdiagram.xml create mode 100644 dependency-injection/docs/inject-qualifier-demo-classdiagram.png create mode 100644 dependency-injection/docs/inject-qualifier-demo-classdiagram.xml create mode 100644 dependency-injection/docs/resource-demo-classdiagram.png create mode 100644 dependency-injection/docs/resource-field-demo-classdiagram.png create mode 100644 dependency-injection/docs/resource-field-demo-classdiagram.xml create mode 100644 dependency-injection/docs/resource-method-byname-demo-classdiagram.png create mode 100644 dependency-injection/docs/resource-method-demo-classdiagram.png create mode 100644 dependency-injection/docs/resource-method-demo-classdiagram.xml create mode 100644 dependency-injection/pom.xml create mode 100644 dependency-injection/src/test/java/com/baeldung/autowired/FieldAutowiredDemo.java create mode 100644 dependency-injection/src/test/java/com/baeldung/autowired/FieldAutowiredNameDemo.java create mode 100644 dependency-injection/src/test/java/com/baeldung/autowired/FieldQualifierAutowiredDemo.java create mode 100644 dependency-injection/src/test/java/com/baeldung/dependency/AnotherArbitraryDependency.java create mode 100644 dependency-injection/src/test/java/com/baeldung/dependency/ArbitraryDependency.java create mode 100644 dependency-injection/src/test/java/com/baeldung/dependency/YetAnotherArbitraryDependency.java create mode 100644 dependency-injection/src/test/java/com/baeldung/inject/FieldByNameInjectDemo.java create mode 100644 dependency-injection/src/test/java/com/baeldung/inject/FieldInjectDemo.java create mode 100644 dependency-injection/src/test/java/com/baeldung/inject/FieldQualifierInjectDemo.java create mode 100644 dependency-injection/src/test/java/com/baeldung/resource/FieldResourceInjectionDemo.java create mode 100644 dependency-injection/src/test/java/com/baeldung/resource/MethodByQualifierResourceDemo.java create mode 100644 dependency-injection/src/test/java/com/baeldung/resource/MethodByTypeResourceDemo.java create mode 100644 dependency-injection/src/test/java/com/baeldung/resource/MethodResourceInjectionDemo.java create mode 100644 dependency-injection/src/test/java/com/baeldung/resource/NamedResourceTest.java create mode 100644 dependency-injection/src/test/java/com/baeldung/resource/QualifierResourceInjectionDemo.java create mode 100644 dependency-injection/src/test/java/com/baeldung/resource/SetterResourceInjectionDemo.java create mode 100644 dependency-injection/src/test/resources/applicationContextTest-@Autowired-Name.xml create mode 100644 dependency-injection/src/test/resources/applicationContextTest-@Autowired-Qualifier.xml create mode 100644 dependency-injection/src/test/resources/applicationContextTest-@Autowired-Type.xml create mode 100644 dependency-injection/src/test/resources/applicationContextTest-@Inject-Name.xml create mode 100644 dependency-injection/src/test/resources/applicationContextTest-@Inject-Qualifier.xml create mode 100644 dependency-injection/src/test/resources/applicationContextTest-@Inject-Type.xml create mode 100644 dependency-injection/src/test/resources/applicationContextTest-@Resource-NameType.xml create mode 100644 dependency-injection/src/test/resources/applicationContextTest-@Resource-Qualifier.xml diff --git a/.gitignore b/.gitignore index 210807d09e..7ebd658281 100644 --- a/.gitignore +++ b/.gitignore @@ -9,6 +9,7 @@ .settings/ .prefs *.prefs +.metadata/ # Intellij .idea/ @@ -23,3 +24,4 @@ log/ target/ spring-openid/src/main/resources/application.properties +.recommenders/ diff --git a/dependency-injection/.gitignore b/dependency-injection/.gitignore new file mode 100644 index 0000000000..6531dfc93f --- /dev/null +++ b/dependency-injection/.gitignore @@ -0,0 +1,12 @@ +RemoteSystemsTempFiles/ +.classpath +.project +.settings/ +bin/ +.metadata/ +docs/*.autosave +docs/*.autosave +.recommenders/ +build/ +.gradle/ +.DS_Store diff --git a/dependency-injection/build.gradle b/dependency-injection/build.gradle new file mode 100644 index 0000000000..968636154d --- /dev/null +++ b/dependency-injection/build.gradle @@ -0,0 +1,43 @@ +apply plugin: 'java' +apply plugin: 'eclipse' + +allprojects { + apply plugin: 'java' + sourceCompatibility = 1.6 + targetCompatibility = 1.6 +} + +repositories { + mavenCentral() +} + +sourceSets { + main { + resources.srcDirs = ["src/main/java","src/main/resources"] + } + test { + resources.srcDirs = ["src/main/java", "src/main/resources", "src/test/resources"] + } +} + +configurations { + compile +} + +test { + testLogging { + events 'started', 'passed' + } +} + +dependencies { + testCompile('junit:junit:4.11') + testCompile('org.mockito:mockito-all:1.10.19') + testCompile group: 'org.springframework', name: 'spring-test', version: '4.2.6.RELEASE' + testCompile group: 'org.springframework', name: 'spring-core', version: '4.2.6.RELEASE' + testCompile group: 'org.springframework', name: 'spring-beans', version: '4.2.6.RELEASE' + testCompile group: 'org.springframework', name: 'spring-context', version: '4.2.6.RELEASE' + testCompile group: 'javax.inject', name: 'javax.inject', version: '1' + + testRuntime('junit:junit:4.11') +} diff --git a/dependency-injection/docs/autowired-name-demo-classdiagram.png b/dependency-injection/docs/autowired-name-demo-classdiagram.png new file mode 100644 index 0000000000000000000000000000000000000000..f367fdbf415f93423568c1df91bc5e1e693b0f8d GIT binary patch literal 48700 zcmb@u1yoht_cn?Nf&z+^w1}c~Hz-O-ib$t)dFZZJ1wlHbOF==pq*Liux{>bgzH=Y{ z-yPo=-?-zBamVH7?-kEEd+)W^UTe;0KF>4H#}{%EH?Z$uV_;z1crN+uB?iW&8VrmJ zJ6IRt6_RV8Q6O$-cbjOWjuymA^|8FO~J-SqbSd@1oyfEUV++U_krwZSzCtmouY1%a}8 zH>wFn@)Inkc=HP@TKJoclH9}Qk7u0qj0udlEmma7334eM!UKOcHj)>Ayg`(9ISk{% z#ml0^SeN;KXY-YNdiIukCXjZRcwNSFsySOq&q-fequKOHE|>aauLT3sow+S`Q}i+> z<~BX*N^B}0Ij;B4bqoyF*qs0kzgAlK1cqc6{HK*mX_96 zV+@S{6r7J1)10wN-p$R;l}vcVm0Z1mfsqs9X1+1g5-#Yc@kC8+C|q8+Wsn0-^SwQq z?L8d7u)0cE$%UNp@?Cm*U*wt?m%kPkD(1~yg^$tSxPE;DA9clM?&=~bjPeyD5f0vD z|KXSC$Y4_LrqxXmJ@0CFh0kJK6mvoT`Zr8f{c+?nN|QEaAA)q0Gp&^=F$X^-wa#Hv zp0?h&siYKv$=gU#O#K1V|aJ#GlG88D|f= zWU-Vca%xIV7~qkuY;I*`Wnf@nV`KCB_3Kx!KBbywWQ^l?b#!%T>tO32z{OQazTOr) zNW2*u9Zm0*H)KIMySuw9>YJ{ZcBiQ>Og2HlkvRl=YYwX(9}L*-GL zm$&gjva4=)uAX{8ON@oe7iyOXG*~s zs>W{drKqT=g@uK>y87RQRz<&LryZ_VqDrz&TNafRob{SLCm!CJ1S#~ASe75KFB!=; zjg_&qsV>OHNLwy%o9*V5{UCTQO^b(%tE{3TAtp9tQ9PgIIWBmzQlscoN8^Qsjm=K9 zyiuKjp%G#~)2Gfzb=DFLr->nur`LBz4j*xi|i}KBZtE^-wyB zxzB!V(#p=>o{O7XyV5B?BO@a#%c8-L@PdO`K=YCOyvpx)Im>gmME2S5Yc=bySCAB_ zk=CD%vLFljZ$^lKoac7j1o_qq4ojtOkPAE?{qA>cFCLvaY`@VOsFINBfCa!MyS%#k z#>{NE%yzy%TZ2WrvedNaKCKYm$YMx4VNTW+8n0AS_Aj`uEc)HvZL@dk`i}k$olPiL zyUL}x&~~n!EyyQ+-CWLR?lIpCYlfo>yk3;EEF>gkZ*NcJ|1Be9>Ev)*z+q)!c{z^t zwJ3E0Zj0t*t2(}?fbPnw7e6598WMf)Ue2R*~q4D$c3kV~4AjiqY1uG36UQ76c z`MJ5H!=tyCFkw~P7W??|V~mh%aqd?#O3K8Tn4z&T_od!+F7y6)VfXScUuZZuI6~wG za&=g|RP*)3U>F)2aXHJ^u3hu?_NJ`5KJu$-f82Fv;ZJ|Ra#R~35m97JOiV}!YqBe; zJ8?%xhjC|oncHDOs;RZLwX?G`4Gm2kkLB9>x=yLpYf;g6q0Jf^8q(6zPen!7%H}DN zy;|$E*)7d-jb_|^Uu*NQesrwDaecTbv#5wmP|$5{w2Z^J^ZK=Gn`g;6%kSU6*C;_{ zfB*jCHXV%f?%iMV65Mf2930z|uxXB0OIUQOHMO*udbaZts<&DhM19-a+wp`CKBuON z5A5>U&KVdRV`5^GaqwI;ecc()N9Dfr=gU){t5>hyx^;`vdFCeVFg&f4bxiY;((e_Dj8)xz({@VWLQEBaz^?7}Os@UaY5zUTRwY#g_eiV6-5zktAc*?i)=ckgZ% zy--ltg!^6_s~DKIf#4<+!)~}a)nFr3`g$EU&G(Gq{{CX)u0$BgKz~0r&7C`U3JMF2 z+oKgAE2ya*Zq(tiXcV_EGzC$3Ts>1dTY8Md`@sNpWbzuQtl$SgR9*E_5 zrL&dQ?~2r%Wh#$@FE`(1W@d_<9q6x{F-J+~q%bypd>|A3;>8QLm#UjETjatwzke#7#(7#9(nl& z1rdpoi+GHVesUA`_^^#mB?D@fmg^Pk)gyz0CZBe8b}R<-CcD2$k4IFLmydg%pYH8B zq&&kNb%6lO9oKQvnh>u)*4xXOEY}eTkHBKIG(R)b{27zQNU`ji>0Jt5tG^qQbr;6l z7Ahb^u2*gcZ4zTF!b2exWz;PF?c4UDyquq=zS4Qy?Ns$&4)N zs;R9_Nkl|MOl({@G>UR`bv=eJ{ z0+DeWu#g`5>CJS$7Kl(8?C!orMket3*JYnN>$8(Xn4Q$r)aK^qS`8BmivVBWkd(4F zZ{9>PYh~o*cr1MJxmXtU$MH{hcY)*jcyV#@_wV2H@>rFWTwPoYSa67$uVZ7Ip-|lG zHG{u@>lUfccO}Uq>#`KLKSyg>VXKbn?03ox+;~-0m2@PdTA7WZjEszqj*hA6;?eFh z0|NswllqL-(5wwajpMZn78;r_U%pHRd!Fc1tAxeJGkS$6Qj7O4wni|d$;8;efJ??* z+9s{Yh23}s1YDmnefsoiW@g4Dw%B^Qak?p(O2C1!76}S{eSKRjtgx_4#vC*tW6H{Q zl-n(?dL=ofk$%a}W?k4rjv4%gg=zu*($m{$m1QdG+cx6_tqf zRQ=SHp2*_RLMN&Or$_r<9Sl0JwAAV6yDRzm`3edOhlhuOfq{+Y4i}1HpS^hb@~%&& zzrR0^#o+JZ;X8jJ0sGTR1bxrohX8y9hiGPY_8JW%QCldjgu&M!fB)r$1rro15kfrv z)Kr5%1X76T9^-fJA<#+F7)~9VN+IB2aeB0S^X5%>8=jhSrhRkC)wtMLPFaSB4?hM6 z6N}b2HZrT`{ar1Ype!clD^lrvi(A>_jYHhn*oaLtH8n-VtXcZH?gM~K2v09xhDAo+ z5BB%-v(s8%S-HNUEj}UU?p~E@>QBTJ%l#&n@wuEFcQHc}n|>oa6?1d*C`Ps9<)au5 zV=sKgRGG~}A)0>^8ZL0SI#igJks+m|ROaJbH_19jA6HaTVjgQW{?)44@QV<=-`xj% zBpRxigXv|P$;o$Rdjja#FIv2YxYhUqB`*G9WR<%=j%*Kx(9qyd?2V5@#28}9k4*y` z)Y>{{gRuX6WfrCkepMZ zM={$LMJN`!9LSp>C)=~)P%)bEqUT3e79&mlM}h}4x9G%OBIN_nL&z37UMYkjtgrLP zzsLP*!H^w^YB2}GN#etP3KGMYKFn)fs6{E0zd(O&4_@B6xb zwyRQ?Xc*d@9;CfK_~^2g6%YY%pgc!Dp4a+Wf{UZUb7Pl4rOtopj~wrIOA z%jFiMOi&~E!50kK%w?hNr_IFDwV=CZ7wL_>Lm*rdU{Eegx<;s0yv)& z!;FgBhD9c)r0DDEsRORi(3qZ@V%DxCxpj-(dCLHOsRP1Wx2Ej)liapiAX=79+r4-Z zGKQkEkrJ1b^lh76T3pN@S!IrD6TCSjQ%(Cl!wlXh|INh0qH?=|L={qSVq)Uozq%>3 zVhRB>cXV-x{KbMUlQGC+dLXE-XA$r^glembvDnlYhQZZ6NKcWGkv(bh%jF)2TeE=Z zqoYaCBiVf&kR6+nDDm9M=>Q(SWyLCY*;1Y-ln#)NVPXL=*<3R&>x{+Zi}_jlq0qPs z5cqPrFa)HV_GW96ou^nhIAn{4WZP_l_l>S2IOXo$yHi`UZCqSjFx`#(c3X6k&heq4 z`Q`&T;Sc18R~^!NVm^H`7=Jbv*P3JsWngC0Y(s^dj7&f>{Wwi&YHDMJjh)?(jEuQA zShGRy9)KF%;h_L#AQWv+6mor*5KAUv_4mJwjIA4$wHh1S!xMS?>_^P7)4lLr_f}w6 zMAE^HyOymMk9grfkc$tg_(9Sp8jh4uIq#`i#_b_ozfy8PKi$W?dez|L$m)2N>pq!f z<)jvbb2X(ttqO-0r4c|ikkeM@FY@#A15^hvJ#WPe&(%=%dS#E0>t1t1#K_19d?Y)= z%*JNRSAApql|j7D z58Dt5x}H>7K#@Waq+zEOqsETbD%NwfD*7w7+G9Ahm{lN2i-|#?a#ursVjPS5`}-lk z0zP&*KRXq0TsxTwm%l9rDB3|(^p`LHSc#<$d=L(R!we0-wav0`&H6ICO2UpY?Uf<<_vk9Q^wEiY5?4|L*$NjYXC=UF zA3Q3DiZMXd00@bhH8*kujXTL{p6TmPHwKacx`4`7K1ujZ4t4NAjuyj!kuW?H$dz_l zc-O9}Dxc?>o4$Su{#_A~b8KeUW-=-y6nR@r!Xl#bJh7IR z_8&tb$>{9#cveko;DLN1IVq|0+9=;)*Tu$4EA%?%jfjhb+F^Wbtm@53@$cU+VqAPi zO(iJI#I`8clP(&(uv{PFrEfNyK>W>)N2IyA?WeBi)zKkOf2Ujgo|(AzWLx%yi_X6%#>!Hpz#8vfA_B5)=Ud5uJ5_IP?yTd%I?;9 zaQ~~+Snm$!87sbgiH(EP*4hdMPP=^oY2#dLdU`r6Fo_`YP}-lOSYsJ#RW zYVOxJ>8RFAB_pdgWd_IPIcce>cR2o4ztaOk`=g4lUfqjQA^4x9tlO8NG|t6D)CK@; zR_dmxuUetenEU=%b*$2Dx`z+bzkgrIsaR7lwum_xnSFS1aR*jC_r86X(0;Uz+x3$I zpWDq<0R=cT^?rm5b6rUyhOM^`*=T9?XImp0w-s(TsQMTTUg5dS!2`5LPMGud+!ZI~ zo*%G^BR_rOP3WAPGopD0Ob9@g*RLl-WIG^y3>6pxm;k;8b{qpUGq*}e6a3@JlP3`K zHa9m5jXEANGG52S<5~Y8WRdm~^6>T2)6>%{SFQlIvZ+{MD1|?OdB2#d!$x~|1;@q3 z1&SC=W)%mAVudHdft8hl{tZ(O6;KNX#xS8-4fCbL`6RrJtN`iGhr*NYPt z6HJ(@q$g4eUh9Et@p5VSdd;f}9|SW^V^d8FxWp9N{hzw3!2XU+ZTX0qkvs+sfo^Jf|jUY8vcMa7=O?RhR)92^{u;;_y4Xh4u~NJ>UouobbZSESxCK~da8 z^M27+o#Yfr!yf8`K!8Y4x%W;?uy{$z$_54n{foI&v8f+x63kZSvy$m;9K87UNGH21 z9;OsH@A+m?Gr0P^T4>NFOB=OXND*YObKIS_wsCh>VP~EBf62_<9g-*Q@puPom@E zmd}%L{;?;aqlL7*yu2ZWHh%A%9dgMzBX0h#C}^7vBUMli=WsW?vMug1ms*MGa_VSy zPoZSw%{}$t3oAFZigU^KZIPsX;AU3z=bbe%q`3&fyWB^XKF0OeM>~sfY$L4vhK3gXZSFab?Pds}2l)$r)zU8sE^2>tEXY>Xv7pzh^AvNpFQBx%{yUk*M!uZ31+;5I|Ql z(($yEuz9uqAJYr?3aI6aQEh0Fmn1vxxQd?yAgyi#KU|v{A7TP}fYj7mgino7@LGVB zvGD`EN#z$hI_M&mBwOVCuuITO<0qtTZ+t)CadBWRGf0!mpJ2%!=-0b_Uwr2n3`G$Y4T7WIu>PV6Ai-7d_7J z-P?JlQp`d(4`#5%NYzBiOpgaXH0Y7;trPNSx@Z?$kZz;FT}}jqQOz=&lM<0)j)>eP zCY`Pt_J1U`_mf9?`SXDDuxW@GRjnc#6D5YLS!ff61Xq+gl0?ppj>={SIneogDb=_I zRRT%fC8{l#jAfpbtE$btkIMAeV+TkbJ3C%-TrmaFr%wUkLm_Q3Ia+3m1Y)wNKr*!n z&4uOGDh5}bv@C8^4~IFjt~7Zdn3n9^7Ry)97B}nV?3lIr*rhYZu~adJ;;R`-8O1A; z%I`43`Dz0!1cWTRvlD0khOoG}#FS;ZW^k8rO{%`%Jr&Oem;cT`zBRc0|p@Lnh>^`*+j zjRPrZzufN*;tQ0AjR?)ES>-c5Z`4HAh@M7fzAt*s*C;bG?nwV4o%vnhScdUDN+hJXllSOHcq}HWh3?&(0gh2lT6%eHjhTVr7-%F`k28lSun~2!%5w@S zZ=)z6$3{d%0F47A3Gfu+&M;CmWdjsXJimR$%_zVVo-2cFK6PwwhJQePf3>>-XiKQV ziJ8fZjl{$n6y=4KUcLI7vGnzM_|fq(ASoKJ!BT60s=U0alvp&%+3Iw74r`+^p`pND z3c-u2sw6j33@;lsFqliEMH zi>$k(QB;Yh8Ad4~Cnsl?T48EgnKKZl06H4!w*b+20QZkYL+QH0Mk|CvlaZNuzTqRH zS?zXscD#7d|kel+iug47rtC*_Q6h zMFZOAmX_x&@*a143bP`^!lrJ%({Y}SINv`%n~3Ey?@ScZc=3W&zcJwZcY0@#DONns z<~=!OkKrokOPRTd9EEjIBcr^0gY(iYl5fEB0MpOI&8^NDX*=I38^bOZNyTqx0_BBY zvP=U1?iU}*u-whEv9;6V{ivuYU_cRQ-KKM9V`8$9r**RLd0v86v+fid!8$NA%h&|O z|B*pC3qNVSQBRmPOQ)v#`*-AoKtB=^60+~Mnn6u89#M19z_K<`Qv-}tTH1WegQQQ3 zLyLCsARXbePFBDlO&^`794O*okXWL8l`{XMDH}sM<2UPEwAW%`VM!8nwt+{d zqB8LFJ!asJ8?fx897gnhHZTI9Y2mU8CGlEM!6Od#^&KoQY=fdwC0CnC z9wel*v5C`!WO~c$LnEl~WV+y3sN>{CPJfJ{&U=#1egH%NxZC#c)bup4*s<~Pf~MW~ zY!C4~51!K0rvwW>!V`>#GB&@7vT$S-&XOwOzTR3?RHSn;4*&`bB-= zKGxROa@}Sbi2P?09LGuLMc81FtZToTqAiXvG>HL1zg1CI;^OB&lGZuu2Da+>=m-%{ zrayHUxz2=2+!jNqeLPCRgL(paEE-%Y;rNh{jf3f6s7OFWP*GC4(k<=e|11p<~g5q@Cbv-82`TX>!UOv5FfmvTh zX=y1C9iSy^M8bn-6&5~&I8m&g4W+eV6~Gbk&jkfrKsUo(G^*EQm$E~?h!=D&5Og}6 zjSAcvK~*rZv%kEru77d!Pl^QO5>kLkUZqg=dY&%pV0JeEAy4tQVH6@LQ1qR19dS_L z0h<5{7nB(vK87iqqfjW|81eOB?^32!G5}O+;lY750rRNSvIR=-=;$c$o;1&tmHRQN z+#W;BqJ9A-^5HbqImzwY^%d_+2}fgZV>J`Ba&p6lQkPX@GbjO^K9 zfB%DmM^yjI3*gV9S&A=7taE-eaH%pHbXg^3<+YKLTu`fMY3qy%Z^R`g$j!s*naO8c zt>>N9a&8Hu+v26AO-W0WpoA%QTh^EeYXbO2GJk&b3`P{d0>l`<(*||d1)lF8K3sLy ztvsLCk(88#LcQG|*QbuYtF0}Zh1$s2xTL74>`(`>Ozk{_Wc=6bFa|ASuZ@m1V7)m6c|y?%`3LvmBdhXkZYX>0EOHuV`y0rUEXZ zyLXSoQWb11~v{1)H!x z1o-&@#kMax!|rW-0<^r~+RBP%p;2H!2Gliz%0dRmw1)Yr*x1;xw}IIw$CZHX3ltEQ z)87lE#)M+l6=UP8P4)FoD^@cP&cvTRYo-XzQqBx*0A;6rU!c=d4?u~o+ckqzb=^_* z3Wqm;7uBlyRMgc$+DfJO!0|&E5&z8!0{kf77p9}*B3NkxnFvuVsMv6*6LJ!bllUeuhMzg+tht|)P zl(sv^pB8&wfzo0I_df9Kn7HJF#c$&N#9rT_tZNs=lI=0L64f?qeLPOA|0()BL-*AN zDjxE8E$d8;6o?BfTIHY8-deAXOq>-$N`di(e5fHrYqy#%GjAneSQ6?brXf>K^>JKdyeBV zdjW%=o|mpZwx6S+m_j9OQHN0vX9qxr=M)GI5Py6oV2?trO$Uo~_SD{pN~}3QT|a)_ zg|MV`Uw-`9SxigP25lG|4?T;VY4aer!veyhftrOnDu+N+CZ2cGT<2IFnAB8L<;*_% z{k}8$bIQ2z@ScHz`Orik3!Oyv$nP9W2k91aT|lG|vuFcr^71xat@ksej5-PQ^15t< z`YR67$olf920c?tOCFW)>FF)4t&lMz@so>+`l4TEWtf3gM6-PjqKwU31Da=gddVF| z9NZTz;Ny79E+s52v&o>5_*5N$wzjilN7_m##wKBm$nvnS^yLcKHdaEXXCDUBB?&zu z+b5%<(t#6(h28bSvcid8_Vr%4fHD1tSEm5G^deB}va+&sVZdMLfBc9ia`GE1l{@au z`goQ29v4wfoUr>5(3XL@mVs=_zg#- zIXO9bR(iTAXeE}Gxj8wV?d_jtfhq#QHuPp$aZPV;{Jut*M`ZMl@T`KK8z|&iIXTrq6d@tG+1c4Q6V+Nkl_=G0MdV`9Y;A8lt`7GN4h}*_92qgMWKCN>s;#X} zI@@`mqy)>@ppqgwJiHLtBBZ_pDGlU4V0d7N?QN3B#w8>BYhys$lMxW~^z}h*Dlz$U zciKW+yb-W703&mhXLHoaxZAd@vlQh)hJ_pOHph_2&QIn=Ft1!8Z5u?YQ<4ixN~gIe zR|4cc&PEY=YF^~LY*b3|YAaMgZotcpjg0~A1F5RQ`Mx-SHP6!lPqpm+(o$YpAxIiP zIl9BA5)u-C&H+TaGjS#fnt5(zWo32sxLMJM4I3=wpSp6^Xf>+a`{@#DU!eE z-oIwK56DJP@C3Bdlm@+r%*>QF&rOkPs_yH2zB)ffY2?XCSw~kF9yT_=%g%SUIeyQx z6J$aF0zjz|dVfx<8Yr9dt*9Dc@ndwPNo-6jV`K09&&0{d$}-W@hg|BL zIB4WSQx%B9RyG|Z0GK7vPQbiBOU$2$?*4tbL_t3AQvg&6pA8n;Q`OcU52KR?B@uim z9n(Xwq7W*a-LMs5Ee?NI4@V_JY{kg6LJFt34q(;b`2z2TjHu*lVL<^@mO+r#Y+bl> zhGc?NfyCtI=8kQH4Mzp#6p)QGjcjn%vyw+>a$)oqh#HBY)&vFN(vCIO*SkS7UtL%=7BoG^Q6i1)onT^rViS_9;@a$%gf9DzP{0r0nhio$!6)Gkoh)(5uhgZcVEhi0i_Lb<44s)i|Kuf@~vnvj99MY;)02-WQ3`5uL2Tpfu_Q3P@UyU##g0n6vJqUn>KW-Dc5tjWNphdDOZtl zyJRJw!7sOUE*O>|z$-cMjM>}og5}}g+NkC(ikxj!+m;BZ;Gy!4GWDT2q8;o8irlvIL*ZT$5E9;(;0QtpqehWmWkma>NOz_Rn{(ILvx2h4| z)f(t!7E%R#hKup#0t*&u1&B14^=fsh_umx&Fuj z?*ROaj>@2Ut_b5qXCrvOZjvN3`xp>Ms_7gT8!*Wk8Gx#l559o-b6PQR8uX9U0=v?T zQ?+1P51+DmEnp%TO5DYAO=d9#ROn8nao0b$m5FRD=SMJiMne_!7lC;g)K=)Hr|Yy5 z3GN?Oa6?_am=25UQWBNLxT`$Y7ka<^9}T|4H$}5FO4dRpC`rQwsvutgl!KrU7zRv_ zTpaf*QB1{MPm_Nn(&YoW#F16pJn##lN;ImIA9#iMtCM`>+W^WLcF$%L71ik*vsh(C z#qB>5R7~2HgY=`N*3%FTZV?bPt?mu$OP*aua}sP=N_E&^xvG@iE+;+;N))f1NDHH&dy~`_X3}X z-;aojns{0B&**0)*L8l(tIi0x6;$std?)~8U3pGh!o?08m*(Zr?3kL7?ry!3k?^pvc3D8YKo!Hu zKNvA2R-@F0N$EODI<QZxgZvCyOF+@|SQK<(Jr6oeMii77xqzPz-AO3(>M>kRq5qoeWh@fOUWpNsmY zNCdaOulcB_oVmYs2kH(Hw*xCk>;O`d>4B^Q1PsQejh-OJO;wG$irBJID3xyBkR6!* zqyF^iQ{XN4Re(l^2yU4$5%urnl;8^7HUMfLN|yyFMP+4VMu7|C zDz!PcWPp4E6;xk^8~7LjqoEhG=Ge|kTUwIGBQK|&KN2Tb=hm=%mPH_AXJ zVmt<|Zq|#NSF5Zv1pIwRxRiZp5R#>98{&L2TRn_@-muX{B3^<=Lb~I?yZrn z%*VZwNkQ|>(a{lfd;^28eP&<-@r0+_v0KHUqO2?~CRV1I1Jw?Nu$yWsxN7IX@dxe> zntCw*3GO{!TwT3^hqqt7xv{Y^KCX>^b~#@Aa$^&RosM4kp6C0XEO^&}t^z!&bG8*_ zuQieP`YBW#GF_lVo&c_W0I?akxW~hxU{2ls{S;3vTUp;=`1`unA>ao*!HxeK^bX;3 z0J?V(KV|)BfBznkJl``w`Ci(L0J<2&btfLK*T1}~tA)`cXuK~Za(=SS-q3pKDX@6p z{gCNOa^F)!h^%}l9gyEWJUkQ>LY*fpbyiPwG78lZUo6-QA)(Z#R682_)NKNx)YRDM zU~k`&PK)NKU^_oZboymhgw!q54036<&2-6cxZ|8VdC-rc&ULkDpfY&&I<|gJUenh} za0JeS$e$>vh83ES;12#bwQ7*p5xQuoU=}JkK(Vm*BK5ngVK0FtZ^B{Z4X_-yMcdiDYXVzgpG5id5EBvIkzPS0PXPf9)GoVze5>^FT^U3XYLdnJy1duo1C+x-V13HGV4x zR=S>Zd`yh<;g+GZ8*C~T_eJR~#En;T)R!w*y^x*q_2+)c*mGTSVp~leRP>19|8@o3A7Fyn}Wh8umk~n>j|!;>funx zvv6rn*~D88yZYw=WNQrKg-5DHZ%l|?$4&NIm?axOjr48_<$Kq8J)Dc&PRpz znqwrL&FY*rNOm>m-&3(xzD-9@-|Sl~>I=28n1aDY7%4#Q#&oDVn;IIlfH#Mj2%+R0 zY%`H8I%}B}?}2^!mTKs(1GX>1fE~tMiDE{Msv)my1R(Q)??2mRUvjA? zv)a$-AVzbSl{_Zt_J>2$E`lglxE1{?Cg~LwBd(8+?x$`UQvm;a{qW9aM0)R}6^VWo z*c0H`F|hnINqnlR;d0)Z8L_Mx6AT@$ps+3D^A<>uQ)}Yg_`c#k%P!xxyva*OK`}Ny zz80DRMYg5oK4r*1rS?_jwu!20bbiw=1mxKd@5aHRf(VJ2I%>?$D+FujF6|tTq1FM* zlY#KwxSN2maP_xu4HXHHz@g~>7x{HJY=NoZ|ZS2_H$tq5)FFaq`!d6m>B%Z)d%H zM*(*F<8sz@MM}EHCh$4y`#)K)x(e_E*w)GsOA8Aia_%BqQ1|jX;dyI|XkP2&{J77Y zAaA_K#KQ%L(Dm!&f=<5&Z_R@Gl$o6!Vfz4Pz+nX{`NXv}3Yz*5j)*|TGX^q3NdNXA z4?vj){^*?rg<#8Xsj02IX+pgN15ibd1JpxnegWUW?|NMge0tR&wRLvNDJcP){Lrfz zxB`Tme_eN#<{7vepo}$;jcNnJ)&cS+%mrXHD3ERA##gbZqy;R83d9n_Fsq?1wY9Z% zgvJ9fvLal~k}nOEnEJ#di?GPR67mmUe1xRv(Y*ER*DnZR@W}2w0d=bE{J7@)7Qb&zfXR50Mod{6~LXTUX@HORC2 zbB(||2T=;StPJLZNB~NDu4?|TK{wZC2e+Xj^Qfk`oF>$V#`s)QczKuhgO8{Ui3W%2x=XwvZ7$JARmH!DZUg4CTCz_lHv`H*T#X-oMPz%z^6B+lF|tpVc>U>o}xr&9vHz7a5~;`S7D zJJ@)TOYMHuoAiD;gj5;-MwS*Vy}6$ z;6;D0{g^7Sq39gHPHf)@FzmBxnf zt1)wZ$m;b&p2s?#OlWqXrNtSLsl8TLS639y_**D$A3wf!3F|juB?r%p%E^!E7u*bEA$9?oDjs*DWnIMbo&86R{s4v_lmZxP@Lu@YhW zC~%tq&MPVHmU3->GH;o+NzYhvsIc^=8lJU5+g-%ly3|Q|;=z?@oaC-NunQ)~b??lo z^_|G0G&1L7*d4V8vzw@JO*h?k*P-G!BY-8GhfDRw3qvdyTw_29*xV$F3A;&MrcPDy z4FjW*rD-0@c3{i<_wH!0R3F?8zEhhA%l`^I;Quz;r>VSiy9c+yhvC$V@u9E3UmOvJ z%*VqS?X{@3F;=VS>Z5;iu0CpT51_KqtAh)oVg+m}#%zKKf#)ewKfGk&aIo>(zX6FB zqmrDmWZNI3CqSppZTtoVz^^7*`A#Pf0Az3&yMv{|?O7uiG8>s6MMdDXL+*Gw3dUxs z>=qFjfp`^i8ygA(cCvMKbsuAGLPfkmk3y7z+Jjw$_ky_-^##8eAVi=@p&7GSMyGm5F24>p7vDG&AWJ5_4tvLg(CN2NfU!^nBH zHJT3z2vpH=--WFy>I>)FN- z{m#@?K87+9xrD^39B=5jYB3?Zbt~Ca9jaSUj)6Z7sC=5LZCe(Ku-6^-0l}2Bw$lUKwc-G*HDk*6VklnfCus)s; z8@rT$C3f?VtND-o*~|%=)!`y@u!lm4=q8Nk<(P*Ow&|`siLmYgDdis@H9Z{cu|rGa z1x+O&I>v$SJ5Y1B3(V?vk#TF^p!BTY$OLr4KvsdD+@Ic)E{AhGH4o1mP}o6RQO%@Eac^bQ%ynm0u&BK z0t8ne%t7Y2(JIW$SLMpd1;q=DOB)4jN?3(W%?f5$6E7eL zZNN8~9@yS$Cr4Nc;J46Vj0_100W1WG5OF%wfQaD=^#)jOv<5OWG7yQZ#vJA&0O@mU zru!zOS!(qqIr*1fzDzXhm&(c$2AxB{BoD(3N)i%ZKfjks_EuJTm6e)3KXP(%E@9%X z3>PuLW8&gc>YS+Uc(xXK5gEp`0u*x4?}R@Ej{{8R;N^IsWDkWj*mBq#DEaLc;QoN- z`JS^3=IT4eKS3mv!`cKH+^M+`5;9VhXJi1?98On#L?{Z4a?n#*2s;t{64}|SwQn!k zgo&G*FGGzF1~mO(p~&dy=3uArvO94)?-0p~q||Ei7Z^dni0h4yiAM>oFD^^zX#j6w zE|7H#^&<|=BL)WOOF^Wgh4M4J^9{VZ;zQsX2IO7(Iags{_y+`Vb{FP)c;i<%tRDRd z_OOG2WoD>DpJUv_i8yXJ6iBeo)fgk=HMbE{s5{0elhltyn8J2hV)L7GP#}4vyKo)_{bzix~Vi*%%pR4hA{sczK-~14yA{ z6UEXW!_zs%rjd*1y-7sG4fO?0J;Zke5xVZvJ-<`%zq|mbxQ;n1aHvT@^9G<5*ohEx znxrT&P>fk+AWIE+Z2Ie*Ac)Ws97TX6KzT;Gi9~&22SB0Oh7F~lrKxFX6TmM}jUt<1 z?2h~iTdHf#OpE2HPtufBfxiI3H0!6Z=$y71L1j5(lLypq_3>KxNLWiD1qB7jf(Tmz zodAcjZ^`Z;d&4?ABjeG%d(W``jEyCL?WM^*E-o%5CB=}tNR<&Wy+#1%0?N{iH5C0f zwL2Eo6mF+ze$bjui5Xc<6!EMUglWqcggA+R7mN|r)gHida~QRQCjmi!p^1jU5F^TS zfIAx?X}OBnDs%(D*f)VHVespQpWfbk13f0@<|AO>N~VuZg(L%uvZXbOMF)CMKBITXOXh)yn% zFvBX8&=7MBW-dT=6TRt*XhoI#UHT>^(Dy*eS(wRnK~|z)xv63Jg{9yj-@2%gA#z8s zX8@Y@15k!b^z{|FA3LOkzI}T^OaW>KAPV&K^bTav!9)e9RvQnGGuTHpJKtDf*0Qy$ z%5!tO&@Gt=8PKGc|2-oEDa_~cU&n-LF-Jic7pBRy`xEEC`A5-N4++XFI#g;zeStj$ zlI-u_ztEHkp{Tq2rI-TvD&oaKJuGlL+=4ejUiOee&ts9*e1c;&gh;ee9+<$Ni*|q- zNL3BJLH$}=LzSgSIXaeXijn$r$to)KRr1BN3BRHI4%Gu}mT}my-(Zmt^QIU9wM}x ze6kG!>urDoz+B*CW}f*&g+^Ng_QxTA!HtFC=+73t`>-w%0|Fyyn(*n4qI1Zn zPp`DKnS=LNhV)-yUAxBTe)K~Sr1IV9FKjao)=!C!mQ=7d!4^ig{iW{LuYf*5z-=m7 zs`=o7dZ?JX@&4Z$arrOO;89?3u!#NAD{$g~Rz&-N0W5-Trnf|W!Q%ExS=kJLIDnIg zKaxP8g8j`KAEZ(k$OVU0p@v_`V?z`i@a=4se)~qp&8;j~48BW^DwkadKR%;>@M~}Q z#E=1AL~`Fv<<1mIdHD$-LIF8JM?JLcBb_?{aY3PI;V&yIgRP@eY%z4#%LM!o!$^zP z-rAS|Bs`ciU-9@SGC>L`AW- zhpj+4b^{_Av1b9ofNK8EEMVc}LtVtR;M&#FLRz3h`Wwj2B1pB6GND+8l}QOQ4`5Ku zA~Pj0cw{|AT}53y=^_CcHRSzo@N5E5fSU$+9jtxOwf+W$LJXl<;b1I@j4ZYUYvS=9 z#4FMXCT3=bGEKw^1e4!EW@rh`{2+tOT{?H$g;-Ev@EqbI*kWN;TwPtE8~RgZq{D!g zBa>P|eY9vtEr%6>E@&#O9>@zP3OzrN4jW)8!3F}QI6yow9Rs5XGhZMI_Bxm>=!Jl- z+7J!+4kk3yR9#A{6`oe0(d=E4mX;O}M$RfCk&A=LJ%P(ySwcbrf-Lxu!2tnu1?Zb# zuexl@jkdWD)RxqozS))#Q-BbQd|3h7*9OMfKA^#=s4No$6rd~kk~z{F12x-eGi@+X zrz~K*;^OKv*-JWGO!C49Wj;GQ`>cZdV961bX@EYuKvVRYC9oSx85qof+0T*@Yc*dQ z=RdM2J;vNi-~-vHT6bTcjnX-rg<$*(hb3T7#0L93<`Qe;!Gn7kwSi5m4wx@dD>t2r zj(6*TBrFT1`8VFB8g1eG_^zLVon5NmeQZp1_2*CFRq&$PBVz+{fjK;hizAxaarD+NX6ockmw%A?Ng#19`mFq*f*01L% zKXzgOwf&#Dar2I;OgG6M0}!f|1*5!s;iyZd6Xy?;Ijj`**oiRyrtTKyx(E7TAkp>l z<3#59x|8O9>%j17PPp% z{|@;-4n*=1#@{(zd;SE$D;Ok6uap2831Y%`cq{@(w|yH!cN9p>+5@RB;C>V{dP+Vm`rh@7}$)UKnavH2RDd7DP|4-z%PeBN%PC!W(WcN8Z)WN17B) z{(ytec#3Az<5t}D;wS&z;N{lMdvev_jmeYG?i1=2>gFs;yQkJ2$7UIs8JXVrs|#mm zztcTVm&T9RvX{zTc8Q+h@UD?Q!M}|BVRaS%_e)5b_{8tukFj2pTy=j-jWs2V^$x1^ z-QB>CAD>uKW4$X?*gF9Vl0Z~YNaznS);sF8OI_O#qriRwvInEfr6>6Hfd%tmO^L!! z9$5bOk@wVCruI#&6{FrxOv zoABT4%a<>ICV+vB`dK_EijJj5XTy-@f7*@COtDV z$ftf|CfX^3j;FSA6Q6;wIP1}Oy$eFTht-FwWkbLn1pZ@|(L?LqV zX9Qs4S-1?p@yx`@zSP~}cn33aKf1%n?&3RY-(#aL-XFN=qmvBbLnTm#2@3v3CIhvz zoHdYw9x;!r(f^vlzg_HbnCrX3tH@0uf6$jfeu*)+(j23BYAO{XmzFZ|D_>mUQG_7_ zoC)h9jn`|EeK(1fFajf{n5&}63wx$X4YN-!d0B3wPg6L5#Sic&)Be_0^8bCL6**=c z#`3Pqetgmlav*6C>4(joop`EMW-ZDP<~mPa#x}jZ0GJr+Xd#vty#svKri8cC;F@`i zI24(vxR9~xZ@Tqi5kE$UyiLf9^vD0#XH9y2E|+rZ)|wg)VVCggzMtlm{JH+ge@=>B zi0JZ@l@I|gqo-N|UE7ZRtjLY2Ej%PI$B3bTHvM%A|5nR}x!VpE6ylli{Hd{QBxnVQo5*5->K2Fu2<nt*DJ-xw{M@kp+E&8Q;%iTwbl&6jZ(D`c=a?thGl>5S%mg7@H9Td zdM+j9a&|bcRpe=B_X+-k_A8;ohh-!pm=`dCLj>x})bnB&+)wNXBzd=cnD{_dh?sGASHFoc&-K zt}r!xg1_KvW@Gz;i;K`}Vb_Iz(m4?hbV#JeVjWjWR?njFdb(`FWj}9X-3+i>TDlFs z7Uh*FM*mBusm&=}%C>@DZq`ec7wGt*CCxaCEmg3~(ZK=oT}TK%d`AsHuIE=Rzc`knfRpoq6A{V5g=NZxW3ZT|Qwse8O0(jxrjzrIE9?e8Z+ zR}y^L1$UgRrkYkK<8{SgYMA(Uj8=K;hd~$oA3%g{_NZ_>wAqyS@cI>zXGm6EEo;En z^?vIwA2v6w3x}XL{W%s}TnC5<7cN}b(P+tW4e|yZ2lgq6%{Z&{7g);_+B9T zfO3`c$7$Je-cWYd*~3Ag&^G~NaMj_t-h3~gI{8J-DwjSb#n*!$yGw!u;(p%>WCO~I zrE43&VpUZYcx@58?VC5C&y#i}YL#;vy&24+_5BwYXl<`vmvje)#h?cHCMkWnmFVBT zV(A8QK_juCcy9|*k&#JbLC-gQ=?l~lwmiho<3E48oGAd$W5F84u;yk-AeO><$jc(U zUP{X(xhy?=f`9-1eNdiGPELTRfktxRzV}$pw^%sM9f#e}VUgAK%oQVyl0;w=oHFBr7Xf3CRi>Mdbg!bl<<{`TZZS`_)%&@%dcWd7bBRyw^c@ zp-W8Wn?J+Ra!N@Fm35^tB{lV~f;oV#taZp=sm}672@9C##S0!CCCCp33hj=kw3}O4 zsKm(Uw|w{j_ZI>J>{tu1Zc>`!V=H~V=GXqbg*}C=Idle+Ou&}Uf<&uhRZfq0~ z6uiIv*5-Ls)J4U`U=^7Hwo+5yzk4^k#~QC6hYYzd*O4RP+q#)9Oca61K-deEE3uOH z$#67eW**wN@6^2*U8ZDq1>yo#PVKQ%`n!-Kw?mO=avnt+pw&#m@(1iCD=SOL4FJNu zf64;D!9U^%x^T#uxay=rw(R5ORfr_#;Qeg!*1V?*QZ$Nh38nMR$7ZKF{?1b9&7%WE zGX@HAaF8JIfsZ8^l_J!^A{TBNqu@JtIQmKV;eHhM?T{96zic;mqqlLVm&nCHG?Y~A1Z3}yYVwau9R#| zw-9;aIqS>uB00Hgz_~?k-5nO0H8B~P{_gIAlbn3;i9{aI)~`)g^5 zh*knyEGP(I+?-IK^xHf$P%}AL-rU>_vD8jQ&-Fip*TRQio2YZ&`M`oO3QoTY5`U@( z1bX2Yvc8hJUe&k>^$gjcxc*&C7Mp~rk?*j8n`>C?^ngy}$dQ`)RfImwlQ+pi4WgdVab#+Z$-SIJVpyAH@dPYWGBX<>o-ZZe7j$}Kk+7vK>1 zfRM!L)~!a14;erxF6ih``o8u?yc(DgMaI*V2;|toWoBzj7y29cmg4DKx5T9dpG!j~ zqwJ}y+%VprVsJB+;K1VE0>%FE4-NK$d(zsJz8wK zYrlS)loS@WMY>9H|8~)$FX6~%>9DC`0hBpSKfRowYh)xREuGdrE(Z9QiOEXj zN!jX8Rpqh)XqhM#;rAW!0j2`X3$AJbbN6oBSYwE7Zyw#7n$h;TRa?)vz8!26{gs% z)>l~bWR$eDXVuhTxOwZkcopussdY&fF>9S%3!26pr{YpbegTlad82JT0A&IoNN4BY zi<8~(-wi$6%=Zee8qYPU{$2e^QS@z-e`;z@1enO@FiPeMtI7D(ODEyLoKINb&cZagbg$ECAE z_NpZyXZUTwMo>^tKuusAXNp{`ew)Bm>Kx1ZZ$rZs6}S6sQc_dy9<8#2K?t7YHGpRR zetx%KsmBg?aOGuQLqZJ7d1!82hWvN4a@WqU;=4Q$QBrDnBVP|bT=-Hh>FL#cTmJLM z>sRsM8Fh78_us+`wy5?M8X#uLFe+D9(l6X~;ikR0lod*x4$uFb8joBoOoaN=bGGi- zD9Nc}p$M#xycakCu>QM45rmddI6;E>$>dT>d*zA4Tfup?k2^r43AYOny#^Qzporm* zvjF*yB7aW+EMz`wsqm#h0hqh8;`(_|u(&_q(+ki5mu_;39TgR|uMVI=K%z3*j{5pS z=efN{k3tM)a)ZVz@sz~U{Csbb<26rD+367b3D%VD z&(}2}AAr;;3n^Q6O2?gJaD3k8MW$LoX>=?IrG%T!dOSx%b8Kpvo3j)Hx-QE3p{?oEJ#f_5V2~AdnG91+a z%mEi-lf$V5Gd?g(Hi3dSZ$zkbou)sdUQ#>_TpooKZ^K@*7Cbw%JBngV9{67(%NrXV zJvWW7U~2$6sIgh>=WV57Tv=@F*uW8Pf?^EVcf5W{PoN*3dkYJTph5Fvj@TkKhJ^3e zn29ueCX{tZvqBszqw0kVVd^QU`WPb?;vG>%*^mK{kP}!2a}?LF1Y^= z3~YY&k?%kIqbOc62h3WE*BoJdtu(e}l?yM$hyX(uAK$1=N2WZn zFQde1TJO7zxo+f-?+VzV(G6`sq<;GJ7yMUI<9%;lG=Epz$c#ZWX91UE-dB^E|0mD?gx? zyX^t0A2nV)?d<~tf4@cF5X#d=u`uBv)o07TfuZct)V53nZV_OD1Uud}uPkH#%jSyp zXkLxIXi5za=?;9ln*UU7Ux10)zMXE~fq8!W#TM+PuBGgZ z?wkG~&1%R5F=sd{sNK#8yxl7Mu!+Y4(>bw~2Q7PBZ~9ftx>?7wz>vCHa}go>_tHi8#-U6Z$$JYY3R;_&dZA(}lYK^R0oL9&10k zNb@}b-iLESdnQp;K^$o;423^gna_s?(`*MPr;k&*2|H@e%ZqT;R97F5(eZs1&$jg2 zSeNmQTl{`l2HzAETuSdkbpi1^9zOhu^9GqhV$on0PWT`DIz4@cvTbs)Lwci4*`${Z z!DF|fTY6EEUMTNQMIoaywO=PRRnD8JJp1HncegM{^)N$wPmeO?^XiL7-rIEwM^Nsq zFM0m+0xrK#&wSO%zV1{q9w%`B#=4P0$GIqdrueArgs6&bRrxDEczJap^B zR)GVQKI$o9JZCl2)Khkj8LAj`eEo?76O|KM99UN>D&!N}V3P0X@5hsQJzq~tDu8Rw zKiHOk<7o7&vSU?Ko|>4r$*OQpOAFiPPIOhQtki!j9wQG-Y^SD%YK7ca`p2d!9;z49 zAoTRlFER*4`3rF2TiET}w^0-y%G0)Ig$a~x@F-rb@zQ-O5({4>1VVMO^W7d`WVE!j zb6vMX-vgy@Y@~|x4&y0sCNSBIJ&No&2{pNIqSNPb zstUgnEO%USiQu51iK!_-1zdhFr{*bs@>ZYTDDP|7b@Hsvfv3UFi9_3beX_o##R#dm z^76M)yk1^X3*^2)#iptsbih5Sef%YNRWDsm%VM;Z(`z*>sxBCmE+!k{3swtVe)!uP$)x%qS zue8je3^{pnOSLfgC!vP_z8f{Q4^VZy5$-M9RKTZ1pr198!OBs?q@+uak?C+M@tnS_ zl+=WTGdCwEQUS6+jsu0t;rMhZm_(r6+|m+G;g8DRKu+)owjQL}6V-2n$X7qXrmOi? zj1HmtJBz$)S?)1Cc!wuHdkO!XFQv!n#0j!$VbpW@K(WJGcT!0Si>Klvg4K5L4-2rC z-y}}bM@PW4YQa;K`SN9m`%zh08(}8&tj0-lbFz2%za7Xwd0DNtjE$L@ALQSaD?7-% zg;@S)pIY~dYg@(*vDuPw(ko@%!>%G*T~jk$J>}2pd`qoAaUuQvgCn^2?$wDbbr`1? zTr$ho%hZ3XSf1ZIot4)Eqv0GPBA{yWLKqp*TTe}Z$S2Po1x%t7>7RF(?&IL#dgnzW zg2MENhXWpkd4k3unadJ*m&~QHipZD}B5U3S+MFw3b57xcM!}g|k8lqI_cu|97 zWT?joK5hC2#eRSZ(M@Ca) zR$EI;6j0E+5a}d0cz+1hI$XWF?Sri2#IC$MKOBZbSr1y>=X^LhNysA@)cBq+bZH4*x_{7BCfd0m@0TqW-EaCA@OgwHX>@E!%985$nhW$d) z($b(-hg!n}?jKw+6h*)kHPp}goyme6u)eA1#_VpDn&G%w=7_%04#|n_k4}Gckp+H+ zAD)zSGT|`#I%KCnb+vQnP8=Uty%)vLmY%q*b~aA>0A&@@2$7M5E%3~~FvCova!(mH z|EZ7p&y!B5l091X8*}MVSfWa?-<-L5<9I4l@Yq2*S3sza)l-HgegF+w2F0^Q;kMoO zoQR9*dZ=y?C5~R}*)woMA+@H@FTX;$q#GGwK*7InUoxb8rKK{wyyi$FK{Hm2h;9^^ z6unO+n5lb~kk{@GjsH`b>UZ7%lwdW&v5jXrtCJ&~6ep=*BP@2I(Ns&7gUQMJBF$^B z+1xqG|F-d!eFxj#N7O8jaGT%c<()o)#0X~49OTv8d*=h~29N{69E}0N#c6-> zS{fwr@%6=bLPNb@XkmUHp<1?Stc;9K&@xuXx#zisvR99k*`_r{Z3n{~v#r(@3T^17A_bo_z@0fiKYzu`9tR(? zczA=*HnNEt(9%AHgVKl37z+z<{;tfpT0foq+5Z+qcQahK}z-F(3f0WY;tA| z_4T%bK)#O}>~C&ww+H7p&v@bcApo~TP{R6oJC+GmDDlm#j{8$ctUiK>P z_ay~7w5kZ4sH>~P%HE;?p@a_JCv-*v0{qBdICSVN9oeBnnUEqOz$#7~y*rRhh*rGU z3TpYGU)jse&6NoZSQjxez*Eoz;77Q+u0RCBqX(4)jOew;trg(a8bFf-{2Q;^)^--3 zS2E3gx;r&x9XyP0iw`l0Lg+J~sD>|k*{67K{oB2HseF(`m5-wehqRpwQYPRXKm-e3 zE>L8uZQK4Lvm!Mr#W3M;GG@(?`&JGP${`#U{U&56&@xH4w10Z*dfn=Mb$}1$46p&RB#;oJip1;u?aL+j~0y0ChDPIXRI+i^3e1SZt02;N|U2 zZ$KCq0iV@|?Z!%hZ7()F{KW_v!>w1xu({`iF1oG}oxXCrPNYG(C$N9m6YmBE5gD^Z zbSb=grbyRr$Vn?GxCL4O_=<{3P-@eyPT>dt;g=f4W0eaz*H=m1jP8X=FWx|Bh2*yD zVk}%W#=-zSz%BD>v9q!wY~6zCU3H(7V1r&BW5fEF6iR%4Fv9VbA3 z4i1R08eep!BkBL3NmXaJFKp|Sx7pJmW;V9in3xfXU~_;>MsR;|TWelE1Hzn|t~%_zW0^mfuM;B;^!tIzYODCUJrJUCD->>!(j60yxH z+`zvgiP*&2v58f{a06{%+4WwrC|QE1Aqv`)bY#K9M>5=2nygzdT^ir|F}df-wy<@c zj}B6?Q*K^Nw6+3?Br#H!jN5n6J}7j2*5|5LTd^+MVUQasdU3~z4borN>PuSXjp}j< z>f!T0Z%y8NF`yDR^0NPxOhJPBJ$rq}J83fZ(Z`CIFYt<59JI9g#}QFcu>M*-xO_;- zenn)z@<3WH@5T9Mmn5fGO7vi*RNn@bs8w%X`?pZL;un@^*LR zQdiBZ3E!7_yYL)ywA?WQOeCIuy!mhai?1(h@eV4|lOFf09S;xX!|C&OSNbO92*Lc#`ZYz8=oW(cK-z_4j@DiH}16S)wYT=F#tR1Px4EUST~7)rLs2ds}FH^11ecmuqXsC@h#U4 zGv-=8HhmqedNc3EqP>J1J@GpKHdi#rZ(PHT%Sc>I{112k-zT8)Hz;*{(SndN{O4-_ zKi~F${@gROQt5@R~G4m-OCogJX z>nt5X969rcG>Q%H)sj$5ERL0M{rIMHOO$2U$K6fR>#y|2^~Y7i4oLRz4ORp>!u#mT%hN3$fYy;t@%}09JC4eSs)ZM3q>oSAi3Ui~lGwP*5_pm!%X20ds-(JaeDlK1|zOj`HTNS5v zv0;FTgA`k1&Mh9*#HB(Orrp2pQ;9sQX!*(ZmW1Hh7|NCn7|Dj5PLE;3>ydN`s&_io zOfX#y4a!-qbC<5-=gr2qt|SkpJ)EQ2J8t@I_I+jH zmzH)C3MCujZlHvcq4KGiFX5!5u5R7k2fvN8R|uZ!I9}YJ(LRn#LgpPrvK;JBU+TbJfLa zWIc}!GW4yaqoWG}1rQdND8#`mFcS}{aFtm-UTYUq*vOdtASg`iL67J=bJ^jIP34Z0%}hN_fQe1m z$XgM$zK251jRp*qDNNMli%TjCu7G)!ln5uL+~2u}AYVKw*1iO6uKHgWeSU3;(U7nG zp}nlI-rkVc7tZA&j_A_kL&a53FO&*4PAs~j!3Ft%ngcQw9wX(ncPr}CPXr|Svz-|3 z-*fwSb%fpGe0e@42`craNQ|*r(|c>i1|<+Spsvwl!P0i0EAV*(f;dT>w0+Tuh=Kws|g**bVeIKP3a8z@T2-(Wp zWRx`KAbRI}eLdJMq=a*F-ljw8x^vH-1AB^l(73X((WC$wzn8CJ0CET*C!+pf1*)r~ z7&)u1zJ2?4R2CqgfMiAJMzR6ZVrSpyr!ibv1>8(ROj{Z2C25^EX5uIY`Q$DWdf98& zsAy>~hSEOpzw6L(gMSI+5~zV+#Pl^W4vuF?b#-*J;HtC81?CUUYos~A2KeSU!vRnU z3q3K30xO1ZdOBOF@eNc)%5Ikbxs&zR8{+U{iMX?0zkZ=&l>=!J^0)*tYr;Kc#kMjB zua!5wD-l~$p#Z`UJ}pWv!q9{P5nH)n_W2C9r_JhxeHEJ1?QBvDpxas15o)>f+Vdi~ zu89F+zyV-g0*k8Xf=C}QO{l{#%S?VukX{kNd4x({fetBOS5h8mwWabHZFMX~KMfTE z8f!oU@DXc=t}pf8nCW{vj|d)fCJRJYfhW@_7(=kf00=m!;YEdov)~7Srlbpbto`g4 zN8$1-fkA6}dK%)LvoedCSFiGO5d*4__i-9yk@VT&YZ*Yumhlnhp>RU3SorDHeY+=t z|Jg-Ee8>q7he1Fa<`BY-2Re5ff}(32zbirAg^vJ}k{cwWtaXH?tQSlW(E0VX!F4u9 z3V6e>A={R$5{e3IF$Fqc@AE%@zGS`2_<9m5XI02x(4!I@OyeN-;`{gSV@)B|E+va^ z^DGD2LsZ}@r%&Hz-M-DlHIkd(HDaV%)xK^;eGvwilGUG$>kDVsU+k6Jx9=O?gDP5; zJgYYF^iv&ia45j$1BgjPLgKeK1v~Pk&J|#T0dre!QXK&MF&;HGIZxJY#Kn#6{rq)+xAA>y{v-0$@W;{G(cBw=% zBywOZ2|l(c%$9BqzvbwN8Md9r9VoyT@E`#sGl% zbVg6v6AneNijKrNh2M#nFtG$LG-6b?`Ft54??FJyrAw(c4^wZVDNQHPGlwt5N zFtGSOGm-o^Z>j*sXQZa?d>CtW{d&@%)Y`4>!y-5Ah<%st#4!ZC~S z)THOnOZQn5eKVuKk4f-0Ll=v% zJ5n)(v_*Y{h$LjRVslbj+6Sv6KL$!K(fQ%g1x$*-B)((EqMbgsO-UjzMNml_BVN3| z-rY|^LIOJo6)y}Zc%_K+6k~n>q#t@EOeo~^L&h}dS%C4;!xDFuCze#-M~nzOPv|xl zZXE`C4^qc**{RqA9!Xp=V4E1;8E`+fLp-`k4)#r7A0LTefrAIN3hJ~ZaaZtzi7!K3 zhhSGiAf>R3wi|ciOJRP#BeoLZX#0%+^*(b%=RnprHu{cIirpB%h)<5=k{`aOv=R_S zC@HbMfu|4-BgPcsbH5N=F+j@-bWfwB_XI$oIWaR6C}mr8f~qqg^eTv=dxX?%i$By2 zXpmF2)A#y;^P5A+aMCC`YR(HE1(p#-rpzO^I$N!R=NWHy_wDR2K;6;5^Z!KSgBX(V zxVY^f^TRpFs>VG>ZM3h24R(1ZdDxhb#P~cTL#QQt{5m%s#`9a=2Fc23VO;rb>1Tbp9 z5WvN#StzSe@Ra@jN~J&tHn3##t&Y7yCGc{7iOM($@`i9(R?qp;%6{tYrK$sHsd)nd zzdFqV+h2ay3eEHj8d&EbjU{jw3yV`H%fRcWz&{J*?q%=gf?mKoLkKD+jil7f#$CgO zf&&d+)7cqq1%=JwhxGDZ=H|AWW><8yAfDAu_1Dbcp*;O13M0AplKqhZIj^=mmUvK;VBi9s+^@gDeC|wW$OA<}D6W zM-2{Oz>cW2G;1)fxN$504jPP6tspTAN1&=+gPu~U%FhUmHq}`2L~E0a(!5xMv2jA| z-xJP1+egflK|e~IEpWE?d#$fIgwQsv!mfq04NVMSDL5#J~VnWso=fbBQipeP{LzkR;WyQo8Sy-rg&g$#4 zQu8O}l4lwelhb02ct#yPJz5_c5>hcQopyQ?F90SOja~t*br~=guBc+8FU6}f<;r>T zZ_6CeXcJgUhjRDKnUkLG?$V3B-@m`S;D*6k&T*L4fHv(&zh(|@1FY-7-?;n`K38gZ z_Eyo{{Jbdh18k?L9uTGqe9JVj@QB`~|JfNwB6G$D;kXL!nTLJ>>I$rvd%*d@CGW}F zoH`QZU(q2DU{dqYw%(JPoRm7fYjQD!`s9fd6++kW%Vs;F^;wX)mtreP5>cyMf#(WC zPPb{_O_5VSd-mR9kUug{%WcEcUR+czJ0F>x@VIL?nTdr3xwgc)M=d#m{f;q9YpK17 z?c?zwOK13dM5!c=vv|s=tD*Y@ii~CugYpm;{6Xqu^?&y@&`k#%A_NWtV~2|5ij~#v z0n-NV7zqb~kM4@0KjbeS)?_5}9&=H=Q(g{3XMT@$mJ8ei1$ybY@+VBTCF(Gz9U`aT z-02j2dz-_US?d;8g#)8Ngfq??3Po$ecEiBZV&S4^M z9DznPS65%gOya@33z>o4gTZ(G1&NL4UMZJNW{_cY6S>E{Ur1ZqxzqPG@p4;v&iAv| zb(5$p74ioL^g@rKHhvL69V&Qu#WC3@)Ie}l`+x1Bhe{VhFArgwkNt+q2b#;kKnjC1 z)HioT>5fV~zW1#wuco{E*3FyrD-rwm?;mIPLrDyRbpy2p(yw#m_MMfXa4E_wp_?gA zCC(vNS8~Cu`l_jEDVk$nUGD2w?xUO%YMA{o=MJ8Ow%s9b<33-I&fc$yj-QlLZ> zoxcXXA|7G2eeJMiG9EG%+;g2;_57Xgy_zJ$BG3L?x#)Gfu`@G6(31G%h{xq0#40K* zMYP^F=Y4q}= z1ZO%28f^S6xvzq){7L^%_X(PY%G zKjI3JKH)GPky*B)(l-KfF(*f)?xa7Ww47(ZC>-qmzgm$#%a*TN6W`-4i5;A5Y7_EX z-ZwV#T5cgDYwcr3=tM#%{yxMjQZ0;g5oHfBZG1rBhrjBryknh203wHs>#m~jsCkI& zGQP9Q%FkVK1$mwXk}*6WF2C`w6G1_S#)zCmN%8#o=77A{^(iU9T8{_5boJ1s;O{}n z1ltI1458bs2S|)JUaRnHem*rL19MKpV*Yepx>35=b&2_q=r5%n3JXL zzfp6+SnU5Jkr7$p1_ohTC`G#DqO#1WmVtZ z{doIye41YV1dJN9SO0(-^dm452ye>~tM5k_JZ!bJlY>J}QgUmwgqphgM;dNoddeMI z`8!0q0TOsuP?Q{Gyr-U`s;1_LYG?|%3?=xttaWXV;`#Z;wL)nztQLdB#l*!$sYz2_ zeqV!qpLB9@VsQo0T2&#s49nPi;4-n)jU00+Iuu(Z6U;}f16)GfG*3d*UKMZl;tb5S zgj(5IrcdgBc5OjcGkWu$-J{?|;47E1{{~xHQX#2?xOn%~d-*AsP#`7D7TckgRHKcT0qF0v~M;{X$^ z)`8p%y`!Qc$@e4`Esc+r=Xv-l20@(@}36FGMOk4!A)yBt_ySKsLt_$+bx;_Vj)*_MEHmklY z6VkMU2o)nQl2%kxqh4hw_a)~k+I0483uq&QA_uUf;40e}?H-)EjD7q1^@A<*sBmA5 zz29~YXuvaz{rDYO8Ce%f5o-zj6~7car)F@_DmooF{2|jscQe6}v=Zvnwz2Kh84E)i z8FTDbGqTnF{IFrSO0m|}0)nBS`1AYs>5?M6ng{>Cy$5YCNbeU7X4@z!Pphe|R?>RP z=MKSMW`_D3WED2ZyqIrYP|SY#@+IE6($DS3TZ*oH|4!;nAO&FouN1iiR5P(yaus>s zd;M@0M5*n&t4wbYj_w}mR5!8hVjxLLi9AG{X(J&|o+!6y(I+HaRF>u9IdWtH9Y{G! z?HW9j*F>HyxOyPSHTG(<5Mjr_5B3#oy5gZ+T*F}wh%N@Af;x7$4`w3ED=R{}IewA7 z)?#vU<*4H8xa7Z<4t7=+e)!kZk+n68@64^y^`~!jq&UW8&#ENOHzcuLEGi`2SLc&^ z^c}{|1QzB=2dOz<1VC56UAW!XcRtwWdW4@ zQNtJR#~w$->Ou+vhlBUP2HCJ6q{$$YUJGSXkT~C8xwp$rY!45x)@2K-hEe}M-Qr(! z(mm+ClzC1M1Es^NO2T7pjrSwOHg+*bCDHKrFJBWT-sKSTyX%)XmmlbS9DZ8eAZ?4s9;q2(QOIcM@eP$QhPpLg>OOwkNPw~ytS{W5N7yynUnew=OPrv57Dm<#(v zE9uv)(Hxz^!lx4Jkx?pxS@#ytA2atSI-?oq1Z%fiSMzmCjZisJQSM3c|1Q?PAlAFe zaHpUEATn}7FXo&1F+EJYSKA>ckyN8hvv$MBT%FHfOX4~Es%04gk<3eV4`xN|tOwah=7%ATg0-Tap z+A8H56l(ai4->~4ep~AX7k|WruZGNrTNBYb}+v23Q9Ln{UW(XJw%#Ux_#o&yX=6}}? zui?jxiyzOu=6NR7p52#SR^vIRqzmXWu3KMbP1FC*a+niw9{}SXHo0jln^>7^93eq{JAeR}A56vs zoy+>dLiOpxGc!mvpO+=L67kKyra;o#DM8P5N5G95Ld1Vem7qR)6-q9NPvl_V`hO>1 zOiW9o_84kL@}>^;pGzjMhd=u>?Y>X-l^-RJA6;(G{S79pZfZHbU_jBRP}He-t@kGh z(j7&qbLGjend*o1BHw|6%goq#(?79@doEvE5~cRfZoFl- zTw;V@QEmi48~bCK=Mv?oUB@fz7FX;C=x*5y`V=n5@xQF8(Vzf4e|U(tv{n)}aYUcInzgsaBt2)|Z^mj^EY4@!w^;CgG=kV?kw_l3Uy zzgM5L8Gf-GhjZUQr_0zL&T_ zW+pe?{={7u>y4==!p;a*O!V!UVBPN?_#5)i7*bf`j!i&C$Xa*h1LauEv9jaGoNs$# z%*Pk6I)T8*3K7FEGPbdVmI3mDsqme=laQsxMs zo632*6M8<5#kEzO`mSuou>FVwY6^tESJ3P)yJ(l8}-rq@5~lHGy)+L8_l^ zydrU_?*OPN=p62n)+;~+$ePK@2VLcu%hO#|=S_1m-*g_5X1=9N*^x=X%Lz5rqJx2` z?jQ4(q)y}fz#D&Gb&l&qqDyxzHFP%taZ}I>N7M;shObwPE$rA7m(;utLv6{O`u5d& zvsDQPTl5l?@x&A|u(^4*s9^{K0|fBc`u3wt)Ib@*MM7s4l1_(dZr$C14-XSh%&E+9 znhy;-?J~qnwr<}Z*K2{Y_*yo|-7&O86oVn{9N zg2nFLvFiIJ&((S+m7Mt~gw;2h+!n*M4R-GBy^X^6i_=5DecJZmSK{S%^k}>WTYWfp z?cP0u+^4_2qcbydA|eUrhnoLR5|`Nc(b-31S8HnZ=O8C7emekD*kA4YelpCAQ(BZB z8F^z`TOtm}7t~LOrS+3e@XogirF3&GtQD^_9G(1=jb;m~CH>IHk1y)#x+v*on>RAL zpTG`O$n}$391AVgJQTDIcBXGRJ=^D#Y|hQp)R1x23=SF@q=gQ=eQM|uy=q(hTy!Xp znx*heaM1-WjgPVymkN2tngfh&ybkB}J){S61?buVA%Ykoqo;$^%L-E3yn=$3^{?+S z+sYHcvRbEX3L7?-Olyc2sX(+8mH3XCO9BnK<4WJ>R)`*F+cqANT91pIN>1^VyL?!C zc0~?juqnm9yLH#ze?HLFC`|1^=Lt(ZU@!Ux!s8lbsJpCjVQKkw0_+C>lA%03Xi(Jg z>e=&b)AB2?Xh&}c$>fG`XPj+xiQC<6w{qhXE*(1v*sw6tCFJfv3_t*QxSRyXcIcH0 z#B-w5?fv~8!|!NvdtefS4F+M-e}UO5#KOVOOpNo?G&s~@rrT9lw;yA5V8b4D)hNG* z-U*E`;8YMJOF=Dv05l&jQHeA-dwl#a&L4#z zwo7RXn{FRif-f0>VOWJl?p+S{1@8N6h(D?Tt#+^>ZhVR_Dv2xt4POO zJY*|l_@gRbbWdIht+Zp6c6;f5*D&hg7JsB7BJkhg1HUG!vHjb)4K)ewx3;Ec*REZ6 zav61(^RjcML(^$51Y7;%mE*<~c2WCnF{&JqWL5!jF1v$B{sTB3BC}Hw>D8FdFjKz% zm(W<|oYgyzd{~U)KnvxuvDxyLX{VDmL?wGmO1Zw< z`9;4}aA-f-)hNarR^CEnL!pL1{;&{0mJ+i+b>;dhOfbqILI*jB1P@fN4hx+_kYVFbOt< zYJ1pNUYt?dI)ivX$p6_IA&*?au#6_JV&jT;DC)}`<+5;|dJWe9lHq^_50Q(-XRZ{z zc<5qNr-6$7TppN+OOG@2vSN#11fQ9nh6DdBrnx~W5n`_U;P1Jsk1u#hF}yt2te^f~ zkrIA>WM|+h!dt%z8Z#5pYZpj5L9Zb(H+UGAx*QHp=1L#|*BJv)s5K=s?4`$--{iJjxi z3mQ0<{Fl=z`^xX%R_ihZpZJYtd1{#$-{ra_J;`AgH&)wX(NK3uNx3X20hq#E*Qh}H zYEs7I;X;skAl5F|1;3`VGY>QIbvnp7;`L> zoEi)RRn9O0q48XGMlKy>*CQY>KYvEb@3ZD1k93~8&bM}Y+F$LdwK3!dz}w{}q|c|U zcQ;MXFmN8T=}rG;5BZw$((3v$rqQxeVO}W?A&1`(2IHj(Tb};;NZo+GCESPF7`8xH zSB%`i9E^t)uq({W92)oa9>1U&tV7i~Iy@{YDcLYzf(M(r!Cbcsf#+w=%t>RF;e#fk z*0t7tGx#8^Q&yJL4R)a}>O$$hFxahj!K@!pq4M*2w($1Ql{2+*fP2wSWBcByJ=u<> znxVI~Wfcbu#jUiqy2?4n#=!vz#+Dnx)R)Dg@fA&18pvpYHQ-$WZNZ<2JNx}xBK%kv zkKZl^2FxIG##RNu6?r&tUV}$Y*r6GeoMx!kZY_qOl)sRj+bff7*(ZWWioiM+m?QIz zYMYCSq!jC+wnmQuA^%@u_8by3kyqZ@u2xt7w8`T1%ohhG$*-Z1c>um95S1hYmG0-~ zFXKMLOu&v&nt>di63|DW;duG-^mv)}+q0H->+cP3sFaJUJdRmeydv_XE7NG^69?RR~JuHQO1)q!0s;p_W|< zaK*%}`bXSEdQ=QM*zzt#$LruuA=p7%f&m)NDk|H;#g871mGy81(*P|7)F1JSnTDmV zuoWoKAsPRGCv(HfNkVPK+p&mD2ke_TiSVpeyfo5XZvBME<1n>7XqOD#+*AE=a9?=N zAfNzKxdQ?NVQnGu?mn~ZCm;-JT3QV1O@L+!#v9020xk|HJ!FT7S|C>X7EUB!Ip;?Y zx8zvkHp55@G!r<(PI~(Iu$IF@8aJ^&p|2qftr1URVoGfKrBd3$J5?V(I5iB#Ho`Lg z*70sNMVN9Kh6X{LC0|Q#cXzmekOI`#>tL1!ml_ggPI;z$qdKM_+kP-L!Wb9qTL@Ib3@!|gZB4lWX6DaKIm%$u zY@M33gTy=>X=ijRbB(%5YhhXh^i%a}0Mq4te0)%25w}D6FQ%h0?%A`9N2juC_tz=i zSDsEzOGDLxkn&^5vIlPbM+Q=(3N@XePpodGT{!3$g8WwO zx*G*x4pgytRFGd;1)6QsWce}tx!=0VRq-ZREaaJl`M zo|b_LzA4Upjl2ozZJoc}2u$h2{`Il7LwF=m?buW)mU( zHZ+u;FD5FA@8ChUJ$sOy1Xc-!hK8(!#OXzCO-&6hmEi*s#646znYlr=O1HqVB;yMI5B)S{ZGv^9RGrGlBU7-Ebcgpc)4SpjoJ}C(aNcJ9U>S}qfw^JVJH=h-`uJapg?6xnB zp5ZlqUEF*Cgyn2Y#AWeWaJ~8ZJa}`c#g23>$YQI_OM+$Wzgz7}TxaeBC~Y8oQlLX! ziKY>btfcenclXC}`jvo+vX#fVkLghTc~`TI!GkCJtAx6YT*#+G2QEU^aiLUr zm&oD6JKjmWuFp(O?Zt0VPq}7gRp_}UC1{&^zC0)ACM<;7sf*YPL9i3QT64-y3&Bv0 z2$6@u1FsijnythT?A{MwZ5>twkbHGh5z04FCW#pD4bo#L|m zz_)Q+^r|C(vtIAjKIWd22one-hEhL6fs8D4VFqP?)NMPy{VsRj$#)28zCV9{2E_%w z4Nn#dI7%)^fB+)zd^Ui%l%BW0^?Pi}i7{!IgcjfO23H;=2Jv?ax!($i9+_@OCKf0d zq`dYZrK_Z|%c`7gL;9A)HtiRJX$X%V?QmQM9gXQ{{kfJ8D~;p()%h3y{Q2|D`RiSd z_1|@9YA)K@Wf#e0ynlrP*v4i6>t1esUQP}`CqOohIGFc7eWKLGsdeepsetyWgIrw5 zE4X25T4g2z$;8Wxn2foC{2$)Nz&$p5CA;o)Ud0?nk~H(fR8q%|LHcMse7ufL`N(I< z!-qG|xWv~$UJAGUG-VH_*_8jCEdMwbG;;WOE^EW)>0_AV+T7H{ z><yzY&pblmk~?R5-S@YGD-rnh?Sf8^XBC!#p$+&_MP=CV`DU?~o<7?N+Z`>=+2N z<|{|D0`5!U&<9C->-^t4Hfly_@x}!lb?i6A`K$cI1B=bcq;MYJR(WG$5q%#fBR2}G zVHR@#`4bHg3TbL-!6J=b3f4ui;|3+pk1VzV2K7yb01-O9jw{b>PM@Z1na9pY7_oWP zBXOi_YiY$ICms0_kQihCm6q1;qkZkcb@I-!I=kfc?ty#?aYy|%H%DGw&+jHCjkL>L z4UtBletU1;dHOaFZz~=B$Kb7JI7FXck(xc5ESi_JeoJKGaM-xnz5{A0CZF@3lyPp| zsYdyL!n%Ttl4&RVJKC&~KrT6J(D@PIFO47^Bx%~ zgxY0iBX9}{E$2qO73;?4C1cgk?TS@T8JtP!c(DNGkmAA}!uQ``bp)nvN~Sw?!I6P!YVtFs z$=|QMUQrDd|0s1l+w{QCyH#BgsV@v^l}Q=oZ<*~o;o-4{q1N#R?&nXt`wl^S?$7O; z6Nm0sSXl7>;_ByXnXjHbWR)bL{qEcqK*ORTz1OplPR!WV4U%lR)gjt8btfngK9OU) z+N*rt&8-+)+V$%YWaH%6YI%YVnO()xfzFmG4(B2f0v7Ky z==tY*(>Z~FG@HjKo{^~(7jl6N-Od%wvl7a~<<$v==Ag?Mo2wU(GCElAepjS-;Q(0p z`+^9HvqUKiXXQrn9QU<&Jhjjm|KNosP3^ntHwhs;wc_HxFoP8A@m97@5R_(6z!slx zqusQL?Sb+M1lZaGu@?S_w9k) z><=-=?OBU>f#!E(nd*DeExwD?WtPGy^{D(68&23v^%k^P9SKU1kd)Nb*DryEm#5CZ zk!vem@9o|n_4HbkM^B!;&}kG}lC-VJJ@i}fm`hW|90#TwE5EsCc^|UXb~=vO`ZXQF07D}L#bGD{i>sGuHWS$?d)Bd=Z(DC!p7%PR)IK;^ zj#;$})9jsg60Df=yK5V!nnEH`nBu!VR{f%(q37!FIh?nCzZ&uZ03dDu(?`bEN~#% zqhaMy;{3UaxmA!`&{9)ZyfA{G0p~#YYR#^Amxr~cwp+zcvh$t77UPBdCo%<{Y|||( zQfDXR{I}DSE*NL)AWwZaH90J>X1d$SeH(OIYzkPCaazG4USpA~Fu4`W*hFOQL?-yo z|Fy4>7|3#+Cu!Mwhv$T7q4e?}m5Qr@3!DhQH?32iGNMsR`-kHputjC385{HkKd$7f{4K{ zwRi7smAH2HmOz!Ik$X99U^T?1Qq~i{18`7c9v}HMf5H<6?%F?@~ywEk3>iJFsC!^_F3%UJl6^&1o(-l^v!N74N_Tn+KTOeKcT zKvrZNzH4yO-KM5pusbjkLI%D2-4pV=o~O<^_gNjeI`Q94<5Ab1P}z^8h+*<@b=C8@ z^<`lp@AC`wt?*l=v}3M8V-61YqNYbR;vZMSZ2xoJZ%poyT*q*vbX&3k=(&-TSY|uq zvvOLtXi59J$NQZ78Ofw~5-4xUR=*=3R8H5v#zVj3%$oLLY-p~u> zkv1axEa5G9^`dChWXd8$v75@Hc)??8V;?-rJ>9 zX}2H(47!`^n9_SYSftePT?86-I-r- z_z-*ton7hyTAtIPM-V>=Gz6L?Vq^_1Ew}xH4zDu+Q*mp3?t%`h2!gTUxkmliy!TAc z%&+RjMThf*YifwdH6&a)7??{88xb8U+;#J`BJedp3!KqB4h*~WFJvBYm7-Yd3@1*= zM`l6pK*s_UpCgu_R=~FW*JE8vEJV6LNP*cxem$_hF zhl!`Ep_-Ty7nIOuMZ^q#c96WO&-t0lOqcvA_R}r9t3)LRfH;nf@UX@dx&6v8%nW2B zIcZYmn{c^43U;Y1k8M7)m=)`D5V<66ZO2a*Z(UZr`uGIL7`b^#(7q6Z#V?hl^-1#2 zGrzHv$_i7^bALH;<#cGJs!iqEn1oYAp!osy)Z^i$+Y?R=WGesywN z!gKiu(D9-oBAle}U_sGo0YZiA!MWd|bQ8o^dD!1!Hc7J#dYL*JLUyl~o|>GCk}PKO z>CGfM$NaeD*X2Ae-07k`9xodA`@QF@x@e|bhG5<*j)PktJ$r^2LBU3mxKGhF;?gUu z>uHZCq~2BFBP*n9z8ur4;IIK{|D?$xtRc^FQkzdnEF<|AP1i4H>0qZ!Y=x(JNMzrf z=J9bl6x}2SV9u<8UN;h@{3H8&HoWm`q!E_p=5SodAq6bBZWz0XdDZ(5A5Ki~vu6=~ zWkBz-MZDGdz_d>%iA5!hXwD^k3yE!fg=w~B=O(zRHVv99uRS4+MUMkXf6!hV=AY6t z$U5SXjWMgDajqSAfK??mD~qnpJM-hLq+(__l~4R%_3KBNyVEZ{7OuS^f>7U6b}a`? ztgY`47ZO@;AI=I2Z=k@qylU%q@(H6*Tv7TJ-kOQ)w*gCazit>@6u`#_b7BG!(g@MXo~@!RktJyo+6G03qU^hjr5M}qdUby1JAc(jGkM>4p69vm>%JC$KfeX> zZ1|@vF*LL@t8-z-z1R2M+Ichn})uiEc zX20ZoEn#~~Cz-)BJR_$pTj`DpdJ1aR(myIi;<`C|U0MrQZg)D>Qj(D%@>R;cxSW;` zMGpK`+@-fc9ndP3Lxu(2_}CbRiie`0Fp{f@==K^5j<_f(c#Z({4lej$;@r0O14n|rsH;9;K(SluxdYd*~nz&jQRXdf;pP`pghY|u^0D#?v z(efAH89~Z}2SUm*)$sY<$thKVV{d1-nlAQoqqs2d3`XS1wLx`Opd;3vHX;dyRxpR< z9w^~}08hS1kac7eQoG=*$>f^3?}IDryZ-S7dc;z|nx0TP4HB4}Pyg>ZWRyp1d?FHi z7BQXg?k|9=*R~eMmG=s!TBP#+@r(FHiIO#*PrCBm+qdAvy8OEbhm@Sin*TyOqdiIa z+jhDL+QWvtIQe~AF$p4vqI6`~&!6*XC!D2vv(i?c+h^Xe0&pS!Rj(@=Q9KEZuI=x? z|154kb&!KxlK_!1crBr5VhjxoSj(nZ*+2V6-;VS#9yY9KjGfuAWCZ+-rHU7fB_9+D z?i%%uD?ehMrlF#$3aorN3_ipzNP$z_KWu5rU$JN{<`v>gLN7lNV=WtWB!$}1KH33kkNywN2?`HXJ{>1hYlS$ zM*1TF;3I2FezsfyN44r%Z+|~amE>EIkfgL@FuHDCfOI839bz)h?^4`vc7*!_ zOT^$Pxg#@C&2Yy;$mdJZ#TsDInkcbg8$ zZ|?GHq2*&wCvu%Ux$AM$f#jkuvw!NbXjWQQb`CsX>c7>qf?I6=5~^(P2pX9Og?uvf zsUIibg?@pesLXe6_IQVX_at!2cy{;bB&<*^ip8I~+X>`Qxo?O~d{calS`?$B)qFtB zG5aSVEvStEkm0-39E)?`9S98w<~Y&8kl`GRYhLrZ{LRYiyIXnBeO75QC?1H%5szecRC2UagDH4k%cEgGHOOHMbC^vCuL-I+2H*iu8+IF>E4K~4c8{X^N5u_i9z^yA zx5zF!T@#-|G@0PxMs;lZq@M4eF{&&|y2!@TnkxI};IFNKW^9H|gZMSc@*xOBl8Ik(l`W6IUa>g;go zcY|kP)E}m)&Xi_;<1j!cLURIG5_3Snsh7#rY*oZR&suhvp1v#JtLUJM9fe?*W?ZO8 zCkHc>Gg`9?Rps$*nZ8&?e#1Df73{WY*KmIFVqMi=5A@NIhAl5p`>tFE26p8QSs2HO zQUkp9Kb>MN~Y0f=hX-QNH z3Mh@EAYYvXIdE7&&Oje%1aVFxymVs@**Mwa<2|gXGN_O7Mp4SLpm~WnTnyUlez7+cRc!5@lUfc}%-y}+`q}ueh z#R$*#g3(!OaTs5P@ic&#wMbt?kty1yjp1Zh=;y&9XiEnM-oAbSz7T?(L7}cGe|SN8BOkoP7fjvGifZ|A8&+koN$7m+dlcw3zxEvN848& zpS+hT0URE+{w)HkLCHP?=(%TbaC~aUPtHhTxe0f7UB9(H)3B%{S+(t(LPSBSr>3#pzW~_9ck=H3Zs^5%KB?FAyNra)w_;{y2$3#> zzkt`NQ(2z}VSX&@I7rOU# zL~4EN_u*7X008e*(5FeHR@3r}?6aUxa4e+rZmiT#gjxGX_?phbd;o%h)Uo)FY!gxr zfQ$knAPi?W+jn-FI0s+PQn@7R7Vdy9-BKb@1FmBa;xc4@? zJ~>Fn(cR-_xJoM0}XMK<`Hoo;y z|80E9son|@W@AmlbhP9V=25P{xi~E+#EdRV5pbx1s{s-XwEenkDGmq3}4ZZP2_uTkla;W1WXh`MT%!NDi4hhUlrYKOb~ zW*NSx@J=p#LkHN|;~=)2DC?vvF_;794HZs%1Aj&{P=qVxXndI9H%zB11Ya~XWD#ax zaospD?>y2Aac}jd{cslXEOGn}%7)EDJ1m?xSOV|%^5%7)YQ3jpVx<cABOqf*-&SWmY& z9@5SlF|e}$3)L{u{OD2nFWLL+TtY(b5iR5gduJ7HdX(9h=V0+;(_tmMB=xTZVlFu8CbeOE}N33KjA@0zzJDYWNoZ z*N7FXI3^UxDva1IUSY1nSDhPP?1}atDp|6Vw&!=0rNipyzs;UL_6k%#-qq7i4kfF@ z4w8R^Z1P+r)}y?c8Az=;lr9YK==ROAKfdndLgGCkDl0$GqZh>`rc_ z-)=8Nh>~`2q?1oY;jrG;sVxFKl2op;S{d4~zCj;tu9B$|0;Z=f{TokFn&FnOn{F!- z55A++5`tC%E+CJ`ojCJA>Cs+%o1;0Js?~xy{ zZ!*NSA=dlKqMA>Y1z&)FU}3SmNX*Z3MV!)HqEW5c$0S6KO3Df^ zSCH}+`W&E^W0g-4A8*}8x;K~7aCxpL#MD|=bJ5rWwxlW3Z0n!&Eai<^JMMjoW3{QlQmwk{@+ zQ!7n*@4C@Xk}gWE-#h#kh4=7W?RlH8ep8V{yO)(FTA$1A_#6;R;)cA;3L0SbnPqya zj8iO1Fm&$lVg!|0c2#C^LprpN>RCP1i`R)~k>5TYJv{D~;y-f8(lV)PVJQN#1M7CQ z3B8xz@l{TPBo<8eIN?m-xed9$!P@PJRa`eHTjW(&vI9lURH@7)>66ysalx#iI|1BB zib>xnCf|k6DBLtb3qP=8;(fUfr_SySBRI(d^lrfgT)%5gEBWMQZX`d^3?|l3<9wCLHi#J+Z~lIX@b5Pg@L1OF&VGDwi3mKO;uVS* zJ}=E~ljVRy*M7u-Vk%`Cab6JCqgEoS-iAqnQvCG}2i_=CDlF?TxS7XbGdr!0maX5f zp)zZoEf$-cFwJj6;;-#kW4`;G(1`}yo?qYlX|LFtFq7;+F`Uh6#$p!a^ zyLs1Elq?jVtflWb^0xKU)a6FwK0S)(*2&<3^%YyFC~E3eyN3%jJHuaW%NK5UxYwU= zhl~7bJsxJA6~*4z{wnp(Cz>o@+DNj?$Wj$qEsu_;-Ep5W_!W@#PRPoxIXsVTP`WSJ zxZ3_ztrY1pE3u2aB&4Mx*!%~7U76;Z19|rwZI~j;Vl&5I-FbvlETTH)M~FqA)wJ{c zvK5m>mj|vz(Bbs6;Cyu`FOU4|wNSt$ji#EvS2eB1LSRUFg>}TVcAJsO3gfiD#VWG4g(=)yd-aKP;wq?eU15V0tfnJ-m_fp*o0ne&g{z$nJBsSrRG? z+05LA(|H(5L!`7za@nnfDP8(o7G1`scyaw)z>7~8N@$ZWdCTP)9YQJX_M$rvjP4bj z|A=Fc;~F(et2nRKvZo8))|&Zpt&mujl$Us1pL`{-e#l_lm)CjNMcXmodp%FEB1cbx zHW6Ff_iGObJKi2QUp#cJfI$cx1uk~QIJbZ~_G&2s3RNtO(z!*PQk(re-Yq5myM?*G z{{1tav(f>?Pu$yl+X;6msg0|)V1HIH9XK|WsjxJ+EmPvT_LAL;UzEC1{R! Y=MFcICm*DEk>$xlrR+D#GC1P*e`SQA6#xJL literal 0 HcmV?d00001 diff --git a/dependency-injection/docs/autowired-type-demo-classdiagram.png b/dependency-injection/docs/autowired-type-demo-classdiagram.png new file mode 100644 index 0000000000000000000000000000000000000000..5f3f3415566893568d451f5ba4f7028e9b256a14 GIT binary patch literal 23197 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 \ No newline at end of file diff --git a/dependency-injection/docs/inject-demo-classdiagram.png b/dependency-injection/docs/inject-demo-classdiagram.png new file mode 100644 index 0000000000000000000000000000000000000000..9996fdc733f23d2ced4d5587a2d0cbe4b7d552bc GIT binary patch literal 38729 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 \ No newline at end of file diff --git a/dependency-injection/docs/inject-name-demo-classdiagram.png b/dependency-injection/docs/inject-name-demo-classdiagram.png new file mode 100644 index 0000000000000000000000000000000000000000..96a6a3425e0e6fe8ec6982cbf0470a692163abfa GIT binary patch literal 23358 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
    eZ{>Oqf&*F697h`wmT+%?vO9Ye&oHg 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 OmzYtk$ajt1BL4^N?liCf literal 0 HcmV?d00001 diff --git a/dependency-injection/docs/inject-name-demo-classdiagram.xml b/dependency-injection/docs/inject-name-demo-classdiagram.xml new file mode 100644 index 0000000000..5a8bb9f8c4 --- /dev/null +++ b/dependency-injection/docs/inject-name-demo-classdiagram.xml @@ -0,0 +1 @@ +7VhZbxs3EP41AtqHFDqydvOoy20KJwgiF2meDHp3pGXC5ahcyrLy6zPkDrWnYQVe5yGQIAjit8Njvm8OiYPJPHv4y4ht+g4TUIPxMHkYTBaD8fjP8YQ+HXAogCh6UwAbI5MCGpXASn4DBoeM7mQCec3QIiort3UwRq0htjVMGIP7utkaVX3XrdiEHUtgFQvVRj/JxKbBrYsS/xvkJg07jy7YvzsRf90Y3GnebzCerP2reJyJsBY7mqciwX0FmiyJVoNIK7tv2cMclKM20FbMu3rk6fHcBjSf7YkJ4Rz2EHyHhKjgIRqb4ga1UMsSnXn/wK0wpFFqM0VfR/SVNjWH/xj3g89u8Efkh8nUKeNW3YK+SaUu0CtJJyqmfAFrDxwNYmeRoPIE14hb3qc4szvoo24zlOPOxGxFYx9IwmyArS6PlFMkA2ZARyYTA0pYeV9fXXBMbY52Ja/0hantppm3vhdqx4teSVDJ7PBeZPBWf6EYXkCGLS3yvcyU0I70Cs1r1DYo5MZCyQ2RuYjJezAE3IOxkqJ5yg+sY24Wp1Il1+KAO+d9bilUw2iWopHfaFkR9qDHxrIUFPZVi5WbyYoZyMnmQyDezSyga5E7wNnEqJTY5vLueOCMJJB6htZixkbBUxcNc1RIbhABIXmC5M4x4CLzmOhtOUNVKiZwSQqRvy/ze3LJOqWV3H7Dds+Rn6thRf5XNNSkfbIASoYEdEzHmhI4NXfSGmEOlQfNqCAKvGZlROTW4FcIvGn0EbOuUMlQiBQFa7dCd5zkWxFLvbn2NovXJfKRWXHQPpUWVoS7M+2pCbhcpfXWyqd4KhM6u68VVlhRSO903qLU1lMZzehN5M5dfYjIrzmNScEwprczN3aOmvwTNI+mAcXVHlxsnRYSXtF2SHAQhIL+VBAEu+cEwetWELSEVbKZ6oWwoQf55P9hVTPSwtdtlvHG19FXfvma1JO21A5qSqjEHagPmEsr0a1vCtuGtD9BvYgZfEo9TvzniBd1iEcuNHP49t2/q5vb2fL27ft/lvOb5eJ2jsZQdVec3itriN1zRr9YTFycWNb7yGheohIUn8FONdoUzCl1/Nzde+zuUWjUob+P2rX9+LO71uC5Oz8nEvzvyFaD94XynPc95b2X80c6eafafeQ995NzJ+9NvY5O3qleD52c/6i3OrnFIkd/+/2csT9F845O/WIZO+LTVVT/CP/vJHWzExT2Pe9RHh1V7rLC9cVGyz5Fas5hp2sPXXDU7IIRp0yF5UB8jeQe/uWO2rcc4RbmF2E3umywe9FRt16K3fYlwi/G7njYYHfY0dP7YZeG5R2rf1a5x54svwM= \ No newline at end of file diff --git a/dependency-injection/docs/inject-qualifier-demo-classdiagram.png b/dependency-injection/docs/inject-qualifier-demo-classdiagram.png new file mode 100644 index 0000000000000000000000000000000000000000..1ffe6453cbec44b8961f222bd034c65e5c06ba35 GIT binary patch literal 37170 zcmYIvWmuG5*ES&CE!_%(h4|qcQ;6P2}lYIlF~y+mr}wobhmW8*WBOn z9N!OqFf&)|SZl9!MzofO5*{`cHWCsNo{F-(4ieHcG$bVCdQ5cS6Tu=XK_nz}Tpv9{ zH%Bie7YneR`e!R^2P7nQeWmX|LBvn5G#5L>k)5WKDYA3>tmPeCu<^#q>96jU7A4G0 zx?*@MhwqV`S}M!<0{J)Qhts^%)*qi;)8o#Rx9{FvV33@ep*B2~lzR&v&FDWNkxvh| zWJvhQQPh^)d>g=?mN+(>a#pu#rWUe8>!o7_KtQV4w7OjUqr?$Zx= z=XdpI=XZ@=M79QQoe@-Vz|`?OETp7^vN*CYew00988TlH^yx$04}NLnaC+3bbvL-E z`Yaiz)Ktszu4jG(5{}+(1N%`X=l@g1gv})PggDjF)Z5`_?I>|LQDe8yV2y-VkSsSn85Iqs@v+Dx@A8jNT?)!-shW*?)4 zoJGr<1e2<08JG>w%F4?b=8gT#8qvhpIJp>ms6QESjxP} zT&QekfQ#{jh3~`s_Utl9nkBa8RB}4zO@~;ie=b*cC0hFrEkoL|uh>`9{dD_ZqGyHo z$oyf|+8?fO)IRxum5;4Zq97i7nUD#zwm&tHvNU}!rW%%OIjOUmU%$M~dsF08Z0~J0 zeFy&jG)Vmd|duhAK-Nd3yb)l;(t&k3Qsvpdw$>J&ej)OI^}TnSvsyu6gJ+ zPdfAFfihk`e@RMHlODZ#dQj81?>|a928_3RzmU9fFFRLges7R4rc=k88;5se{!+gP zCtAByxU^+XqU)3wZd3!>GR_xeww1G&%N8LB`rgIvZKaDIOquQ0c~igK zBG@v`22Ht03(|jx`vt)_xR0|^Tu8IZ`A|RG?%2HS#VA_#gJPiG!iv1wz#)fM^p1az zgeRIoe_F3A?RI%Smu}WXI0e=CW*I$6+#;ucIl@S1!b}&I8 zU`+i*jzNkij`)EoAN0$`Ad)T0zK-9!O(gffms4l{F^%;G?VtimM*W$AH@20pXT?75 zAEak3#%A=gNOs5@TS6Vr;Kg+ZRuZ3IWz#0ci+72#r3rDLU4Ah9^v{8lXly}4A7clv zfcgEFWM3$oyV$>2$>7%B3G!0R@*&!19~sDE4pf#2Qo&(l9egEr`bV;uO&Lua;6r`}z-UmUqrt%s?3i zhvjb*vVKGwCcZXUUlDX1UYWC%FPQh&PPYoKYGagE*zx}4nMU|5_%Bz``4x3bOWarb zk==QCmvZ?Yn)3*gGe0E(aB_JN6p$t+R+{h_0Ha~;Xdh>MyMJY60i&IO9Va7d9AU-q|VNTd)%Kh7Dfi)5c5 zqN{a#&N#z~kzh=ZzG|;3&+k}4+w9xTs#9wKk?^NiVY1GncRm@oSeH}I?B43mmPgAllAzU;|?ieHU*qNJ9_Xg#)C=xCY(ECmJ-@> zB^+7wnx$gphSpG$sioZ*mc==Eui%tOXK14E+Qo;G)ab!KQ>hM0qu#FTE|uyI_h9li zvfnCidDrp40Wnq#HDudq3ZO4zkEE)L7ghn%E>@|WpW~<7k%!~8<*cmfTt?;sR5o@r z8K0$n(qcVSBFUqBOD@GZeE7~nMSxmb|DR&XaX1%uvinPzFF`jO$&=^YL($U%4pJ}d zfH5r_35fwoMP5eF%k-cFYu;V=VXy;O_46b~O2JgZaJ@2ih*kuLVDh61OY*3kjck^} z)~IZh@{r*$sRF4&l=!d~^xU-IU*~?nm20l+k^iOtrHF08gVEfk&)=(#D=NvZALBRv zbGJ1=$}(TsPk%N45`@aafQ+RqjY6Chg!=J~IktSy_31jhdM?O0W>KdOj`)~M!~AcH zbBd|YF00fax06y8A8{=7$*05FGS}m%*E=z%3}mkfjC($0unJ_ngfNDlQ!V z(|kyr)ICY4MT#5G=@l*Q?()r=e?e` zIShC(3qL9I|F)pmoMF_074eL?_#ln``Rkh|)LWJA(o%2m{3H?X89FTRdY~qxEfL-25ZS&s4E~8(D@=bfEav#nbK*^ zjeYP8G1iDE;EsfpGi9?0LF>&PZ1msIxv|lQY5KIY=1hHGsO5qL)I>H@EiM;qk5x)m zeD-U+2GOk_j{~1#pR!rBlz^wYH?}#_kpoY)sJD8(RK)SEY+149U*O|;LET@M5e1AJ zcqBcYcfe8WHvZLLS4~65AHRD;aCj+dTh?Mujy${C?E^Ry3H*2D;Db_+&R%ovE3X$^ z18-*vdV6vBXpTCrR!-^@{dv;ehdIl`z6U<+Gf%u|KWKo*365jF;i-pyb9eeDZ7IRq zb$?cOIzSz1_H;XEk!78ZwVmf_I`1;_qHkOBsuet|trV_6Zp4xc?!|(CGP`@HWc|3o zE`>$yP}igEt5`MRcRn_kZr0vw;SO9Fv0Gjs+3?2EZ#5W$&GM?0&!5xpX2i_Nz9fNa zr|$*_VFPM`i)qnMBwiprUfYgW7+7t`8=tJ0Qs(^cO)sq!u?6D5R3 zMfa;MnwLF%BOwLDs@@EA;7n?T9<#@@jJj?VoH)?--C?sC=z2ADeXrXhl9v2hOe*E^ zdQeKywnO=2^&oJLkZXt?Hr7o@-h~kaoP=7Grs-oRN?aO(&PN5GF>Q1|Bf#CShG<-m z+Dgu7J7)lU*Xl#b?-9_&-EmhSg|L%}alj#V;Q5&Fvk&_Z$AN(@o9V{AflqfZjx|EG zCCBFXR{poU<%2w{syS-JLvqsPOa!b2$=&9_cEK-uzo)~k(3A8|bWA+(x{p2qa=#Gv z%m+%O6n45kIJn?OGl|3Zlb9U`!Y$e$X(&D?o#x^txRKeA@qf(31!omNS*`}gu(8&gatlNvu2nO3oTfsob>Yr2;A=|NnyhtFPlr4f8HIn zM+&caF(0&U=Ub#3*Gb=-M}ZUZ+OyB-kkB(ll2FZ;FUJonx++;u`i z*zY_ChAZ`SGhsiHuU7dp`p6 zpXlfX4}acE|9BEP)MzBK;oOak0rf1)acXPvL3TZmTloI-Ox2`Ah9lV!9(-q=@t(Z3 zzA^;-3J(K0F9u#$QuB=+dGNEup(IC*J}GVtYnw?T3pQBI8P~Z*C5!+L4!mEdr^lj~ zeMJ}`M}d>@kY->?>9J^E4&F#sN&r=gpF;{B9H8|Z3y4`3(3D5!CM01~^HQ3}@6xnR zR%$ZY%Y4YnI{hB-uWBmG8ZG2E5)_r2y5N3;T?wipEZA z!?RDi|FCxS^k5N9g`KFw6kTd3r?f+13wGQSzdRXUWgNE;UU28@3SM}^{5^AJY|$SJL-AvZSErQd z+i#Uoxpn?UJKrj`jy`sat_tX|Mgmr7vMYVsoykuOz0bq3-ICN#?FMZ2kOg% z%jkh%Yncf4VF1tD25}URfw~VUS3iUH{kl(z&id#d`LR)K=4VX9fn70dMAi*A^*ilf zZx6fLfP0R;o`b%{l8n0nv%bP~29F91hVl8qaq3s>tr@}zULV1fi;pZv*uTSdnG?C-pu;T^@TR8e5cEY~_t_-*y zE;4xzL$E3#hvj|4p7@-JYyYL7zz`}C_wtwy_T0mek|c4LuI`SrPda#xw6lFu7Dt^N zed*dkIGA0#drt_qe~nq4n^N0;)V5P~A$IDoKJNwr?+47i_%qCR}Tt;2tLLa2N7`TV|($j_L}P~jL9Rfv2aruk|`H6jNJ=oCx{~6K$~>6nq*pT zcsz(jJLxfBGKoq-Ml3*u)M`Z8-2#pEcMgFmRJTFJqcmvpTZ)D#C$^C64@C$G3YUQL zW*Oe>JQiGGp0r6$tCTOuAxfvet?joXgI0ttqZLq72qSi)UpfCmIx)PiIw<8!issG> zSUh`yp9^lRb#c-$JrhQ{S-=gbUjExLt><4Nb`0mBoAJ?zp4#RWAB*oDm)Sf#p8GY; zPE_Qho;-s4)g~lUC##_Z1HTkIKP|)#T?xaCl<5847zjG&sJkGiWcr2{;nJ;s6B59= z@uDvrOM&f65Si}^v*u#t@igyf%UcS8PO`Wtz16$aUs9drH%^+xh3{LAU(KkI7@SN< zJ>Adq>fZz5`)EhPwzH~k+L)+ie_ui>G-kz2;-lulv~t~S9HOQ@nd7{2uG7GN`IX|I zUi1O%i|(5PF~MJgqx^DuZElJ-0|q9}{UDO=NNmWG!V75i}J8d4S^+|i5R zK}kHxs2f81F%4kX?BzQeyqkh=Fhk9W(H!!(LLGsWdFXBSqx*=MqpxDe32#gth1gD^ zaA`eb68_fU{cG`mv%2tEUCsC+p=yuw4rQa=JI3GaHL8$?F;5B@mS5t!7bH7hfA%I| z?T&{U{f#o$qpYeQ2HZ^;2gl|IqZp&gWA#^(HoxC*4f@Z(aYnluMc?CL3!KF8f~R|1 zx1pN^ninRS#~W_L^i`K?*jreFPPoiA4JjS5*HR1Ory|#M1Lc%2{ywKilfp_@nP0Ue ziox?`!zU7G%t^9jd%KXRVkcb1j43kA__ftoMSJqamuKmk?d$R>%u#ac+X@Si(=_A| z-Nf^WE?k=2xeFTVWbJBd$42eHJh9Vkr6n>mNM$9=NKxUoL0_CY{{7k6C?`q2t}`cO zHl&c}Fh{2yzxr)pMq5yRUY>@sqW*6vg5Xr_Of7IE21V!(lb%;b+bLZY8!i)6QCJ=b znlPhNi}Tz4?}G~gHnvf_8_yD(h}ZgXC32dHFn2E)dwruG%JaXH9w*k>S+h&Z6OxW< zSyA$nd?7;{)c}h-ESjq+levEo3JWl=lnizfBm2$%0f$A47G;^PYj@{_6nn&zfO}l6 zTR6(huW zKA5c{)(OFSyA>v%Yd&ndbw2?Vu)rrN1$|-E6A-FtUK3FG8B>xSGrkDqAZ)tH_q!2= zGq#M)kI-nTv#&=BI}sih3n$_1#V^{Gk{eE*A9X!FUcY~+`RvcFG4L{3HH!4u8Kf#I z9li~sDE;43OxP7Oh_#PbA~8yVMpg2of&M(pK4TcbiGfr)|z zIy#f19)d`OD7b9IkPSZ&t9AT&>@6FSU{s$PkJY*^uwR zmkQw$uva0k68za+f^c0*0ZueYLx`X2PhS=8j=K~-T@ z3rR-3A&cQ?<-c7P^WOhnZRh!o+{N7fuHcA4l_a;iaE7-xluB2~1oVT_Ed1E|49c!7 zDSf$YV==HGN;noo|3$WJVHEFqZ*hfhew~9~{s8~S-dw|Y6^ux${jd|676JQVDEA#E zXO*+ywV_XYu{qC0#KC)X^3b@2P>)l4zK#nW@${6~=Im0p5&=f}12gl>pnK3jDilU3 zJ+?A`pswvL#8Np>({Rf-5Ab9nb zYZTfOt9DYaXNqNkKDN#d7tE1{;tM+uNTg}ufj})zfMgui+GPk55~}hV6+=TJC0<^n z5$8FZPq0dz!#oc+3s7zv)$*@bbC?q+`lnXZEMUg{v{(SnwWjh8Dtp%L;#l4oM&-@;J_0pr zuUjR(%$AqA)CfOdTeP_%)snQX_e^~Ct_4i~YA`uPiv4Ai4*`6ZD=sssEa!8l_Xa8Z z3T*m{`3!PkezMg_7Ndv7fX>MlE1s z(%jX)QLz-CFsdsfGvX;4>wR4p3WT}^+P zKxja!_rufhGvZCvF=rPl>g1FQ_fYr50~SKN?Unh>rI4S8xidS1FxinCFc`w&Zp<*# zZJC`jpc{MM7rzCR?>aFCq^Tjl)mQ;2<04WzFE8eiuvrhwEfIhoe0jzyTv1Y@Lx7f2 zGaKZ*Mw(~4PK|&lSokqf2jZ!PcS|!&&s_Zo<1A=dCK&-7C9>P^XBDam=MI;KU<&ZN zNizVAc-VwhUL0sAF4%&6PJkL4+azN45URpTbJ}vX;_E54|88rr^_u(pPnS4NK5mhK z5vEU_-k2QNXIf|fK_z62092A0p_)O>hy-d%D!~AHil+f)W|5*W{yW^UX@O1r6iNaI3h&tRINLo?^{XnH)+hT1;1j|({q14B6`^B&f7f!DJPZ9+>1~G zNf1rIHQWNI^>GJjT-B=Sx1p|=clcrlg!@D4O^AKEWPF5?;&t`0{{>{1CAUE#*y8Up zBuB(ugCV>?LjVBFR06Wx@F#^4L%<~lfG&(*R8N8Lr&W7Y*z-tRex;?M1bFTgMMl`> zd$Z+_jE8HP(74}hW<=g>7fAU5=uct>sdEWWmzhO4*_yRB=(3t;wUCJgRC&_e_25WK zK+}~O(0S5}W4U4y(ReZaCNh#f0JP%J4v(OY0NU+W;IE8>uUwXRP~bq1gqJAw==HNE z59hmKk72;grlnEX*sKVvc4VPTY2mnpMa$BWY7cm6?vIKz%4_CA4hpr<=0#m;$K#*p z<0sLYeoTIw+-6v=qXJ5QEv456^qe#lSgL{Ie#(9@dC+LvuK!bQE88dlN@$DU1CUfK zH=4<8YQR=;38IP^|~2yu6pP=`Se>9Aixj+ zYohB5rQ&nQ_P<U5uR6LR?x(ay=VE!m7zffhj9?k~{3TJ)ejkNXhrk8MKp4~PxP81mlaN z_o^%aNQvG}eCX(QGQ4djoF_{G1N9*?CFLrwC5&-=_W3} z(toh9xd6vWY))~$-`Owzfcxu&cd0KTt+j1LIF2Qby)}W3Ut$g8lTbbBa5Vn1p_pe9#}RdVzSn&p^l?SOHkl5VJr;S{9c) z9rbU?+o{BK?cd3U^A20Nxz20R>;rtz05+S8d0gd!qeiJK$V$3|34r~E+D|wPX?m3G zNnHIUkrKZC3q55wiR7mvzQe_&&UXJ}wC;%>!jLncd5?fZ{q~Jv*odxat>9W5nzijs zV<<#bE`hdiyt(wbOTx)SBU(4Yu)>_6x3a31N|-feE8q8sL+84AobwP1ezz1q;C_VF zw|rR}i=v^o+Vc7X?Ghf%8r=>5dT9Ajq`Jo+G=c8O)e*ifnhe>6%zm5d#=p@sw^#n)rnH2$VppwJ$*u`EsiQeb5GB zGlznQ1KVe^CAj09AuD&$S29XktfJ+aCE$4cinR7pxGrHB&!&RcvH-Yt@ zWZN8v29;b9TS`*fd`Q;KGH`5CZ)Ja~O}3l@E352gHct2-xt^+7r<-Q6+O(z^kv)!A zV+sBqP525`Md^BzU5rQop#Dr#Ah+YcP7T8ZGTx_EbmcR4x^zmn6-OJ}7TwG92`T!c&buSStK)#H z_G3Fu(R2dmZb6pu-(`9H@-#{BoJ-Y52kO^);ub5)^QkfxRcgjD2AePqZpnqin2J4M z{#O)TBRup?rN>}5dO>IV(n95c1;|hZ{lABG`X`Fk!)91O{RDr?AgH7(j#`)(rhHYg zNH|$R5ukhC`VdUu$51PN-eF5chw_%bD@wOBEBgt^^8G$&zY1~U7)eo$XU(-UyK(Zi7kl}sgOf-q2 zEb3R+j2V0Ezw<-USfIjB)%A+k05*4vubq_cJz7E41t-7tc;Nxh%-!uF zvB$mymVm?-X;QdbUxxViuE$$12U?WX={J1wgMUsv(=!)dDZMAeft%>32DzYkAX{!{^`>{wQV zz}OqJ=-c|Pip2krzg@1N_;j~_BAJtP)43-2!})a){vrLA5IJR+cVE*DeqZ38)eHz` z4KUcMxd)ayb#K@HY}Yieh-&1QLZM_NUmBy24cX?h!~d*hz^TtVZ1(tqO^T5$%S+{D zg|7KnX~>*Z)VA5nvutx^dpR4%aq^Ol-swM61`Uk{t?3D_s}3^LpcZwj@!`{HyhdSk z{~#|T>M0V9(i;i>2A;P|kbKDd4$L=2CNv(a{9>Jd-hEOilH>6QR*{H;XOmd8 zPlvlmdz7j#g7W=}Z5@kt->B~}fl~UlI`Q}gPz(}x-f!{=k0tVRpc4Gda%8WU?PXYh z6VgEniounnnVmv+&bBD`bNUWl*vS33H@1R1EIkh&`jSbs-L-N52+$QV9uv-@Lr$2NKFf~#JMMAm~=YH}iB$K_P9M`=_Xe9TN0Gf$6TET(@?W~a%Svo|81ep z5i2^90zcc+Oz=n zJV;r?qb)At9>f^Z5Ow$YFZ2Q6|Kw$4cZfC_HxhvJw5cQFHnnk<7`-@F`vLksH2h^|g&frS4*PgALu@Qjivj8eQQrZ}=`j-$ZmQ&_pVyn$zGc&b zR(x~ut!YQClwZAGPfScv^c!4{T;=gJCjI*6n5wV-X52={B^Zr73bv&7^E5An1jZ#U zdY3n1^%er&aBxE*G32a=B`OoL#oyptyAUQzXM(Yx55O2^GbM`Dyx_h>r!pdH4lgZ+ zI>~&^G&`l}fJp8&bGP)dc9wh?!LJ3rP zL9i00EcF4(0Rhc%W({7!Ssp<;4eG#Dp7UX6y^0<97DCFgl);WulLkx zF_ns#bu_Ac;JG#&C|2ZA$b7wYwqE@O2tuQ-$K1do>C|2-@g{V9t28 z1T9S{zwQc;luZkkw&?vy-}po7GyL`i!q58NG70@9L_TbcKL&z;6Tm-7w227 zXp2DE5)SjUAmrE?bybvdZBhq-37ztYFJ`Ebe+6+Z;V6`(Vte!Le_DXC#T3cH24C!H z$K0@ggp~ty5&9-KU<+2(_ef!NQ1Yl{AYx|zC<>&uOlDjsz41@+=YU?ZF;3YB&;#_4 zl5A@o8aMZR#2F!SH6f8AhLYsP!i+f(CCCcF{<0{c>PYO_$M&6aH={L48NP0EJ_697mT zvTvfaeI6N0x%8s>@5_j@)kc2ESnD9@V;CCTts$g4&f}8HW0p?iRgpZX(~a#+p0vEEzMD#MKz55+YhWufiGck!M z42>&wd}YtXR@O0FIxyVSoCV2GM2 z38=OM zJ6k8piSFkRD58>AgZfJrZdPY;Bp1ktZ-L5OGfbznQx+y0XYP6HSboFUW_T#`wL1yS zco4tJW?_sf7--8n#u97;)XII!d~9l&{JZJKPP;H7pT79!&o!2%na4<--*civJS_ei zX?J^?RPn#3ab)5mL}u}0?&MR#NgOAUlxLA%V##E}W-m=YbwLq2ZMKuPi5~Ni^t- zI6tL!_ zTDI_8|6ei0MlM#X7*xnHtG_L3yYvO`3Vy{x$dwvNGptKCIO=CT*)^Q0vZJ!j6Pb@AZvx181~gngr{>riG@u`z=2>U%AEV*f;vj_Evt zC>i}pLV>tvDZt|V+kY0*xwn)Hw$aA|PoElJ_;y9rm_Bii3VtdcfxudP~lu zP|nnIR_y8FKm5w!Bx}M}27h%^Ww1BLVnQ4^yqezAY-*T}^}2UF|K@91%v~I`$KR)! zNu(qwRCXbJNz^F%B7Blbl#Dvu`P;l(FRu8+d9xdaO#6&J_`pl}^GAI?QFgd=7(0Ab zD1Ykjp2_yqFbm(>Wp*Cp80?#{-x*u3=Qa4}C)N7|8I^hbDl}`>mip<*j|?C99#=-m z4-ftt!s?sKleq=49cH&eqe_*bA1rx30Q0d_zd;MN5xgV&mH3-L5*MB$L7%%o>yVT1 z{>4b=ma!v>X#DRcnB9-L&JrT3gDwclXmmgn65BQAoAEOJOULH}dG7gHsbka$dH4zz z|FYg5>%*r?qEXH))>5N2*dRI|z9gog2Hq{f2I`6$*G%O}Pdehwl6&26BsDR7Ik4O2 zw%ggT+YCw{xAcCO)XxjbfCwOSVf}g!4OuT2Q#!m`RZp*@-pg|-r8H=kJO3!@Vjh^r z0K`MUzud0aneiDpve9lUJKI9zLaJQ<~<%mYX@nt`;fx z%J84fnLsoO+w@{MGlcyjj6@^qYWr)b4M-#B-pG0T=~qEioI?vZKMjTL)53GrS+qO0 z`9K+~D7f76VNXm5dcGTfZr#9)e_L$FUF)fgoSH-^@B6*q4>~>>mXwDUo5+gLEd!NT z0%EWrJzIR`iSBHUIT_xSyw7wJ63>o8xuieQ zXg{%&N3KG~MD6`S-IrXC894Z)44=GDAhf(ZBx3Br#wvmx2(zSusCjcG-ZlvMafC;o z-#N?+-;o(cZ;R#OO_m)2$}G3YlGgtORG26VxiP`tTGECTr0=$R^%f%AEMQZ;ZpPu? z$ng@#d)XW^@OrDIt@?7j%Vr3V9Xb!#t-4r=i1?XUqSsXxf^shz_5bWV({onnL89!d z{O_LJ!A>AD%bL*R3?=Ei^g$0omp`3jHPY97<(e*3o3c1BNHq(s!Wn&i))?l$@3~V@ zX(zpxT>t5L#5rVY-oN$S;}%l==NQT<2_>~T*50wr13kuBOKP;KC}jy%X|8j=S+H&J z6)>c-DhtBV8CH&Gm)AyD%Bx4NfEDTfwUs#tgy0Mfn_J`)+pz$s=3jr=yN@t9+hm*j zHAC*?)y0hFpk@0^o{IaXwqkpvBB>Rh`Z@~V+9V+MDwwywrWTuP9ZR=-xllbl0ZmSy z707#nO|)rU0w^Rkh&UArAV6)uc}iz|TSy88*ra^bMQk4h?L?Zp;!=5K*4M-}N|akFfr^QF8Y!m$qP8`@r`3>f zw@tx6v~cAS_bM0@HxcjW^$Qq0@;xF^K5l?VkXXlTWsEc0poQUy0d%>hTW>2vg1SWG zGq$=l!?!KYxbH0E=nq42o`*a4U~c1-w_|3WO6`74S=+P%Z#kjPiU<|I$gLPE5i}#v z&}`_-ETTb?ek^%R!s7vJYfuMh;^zpF`9|N1W|Oc1%3d1k7?K7108FCZL_6*$XIBO( z*DwmDw@fj1u9q$^kI3xY$H8q2nMkF9HI|ni=mn8t!}3(RMPfn z=t|zNYEL4ugt||a)WEY;8OaY9DJi6cV%5dn>D$+09|#mNpM_0q<$R{A1;BQ% z0`!a>=S#P?h5DI$5T8#do={Xqp#VsPGunkPts30J5icT-cllC9T3f3?5&(alj6cEP zO~-}Jycrx6hdzh;b2=otD|>B@HgV3CSwF1*Nab0Klo82lgXf)pX8y897h9&v(We8; z0;0BM5YCvh-YA%v7yNTZ75S-v3=P!!OT;OSPlM;sq7+3bX~EKIu%EGn4q77^sy>gM zz_-20MB&A^M3<0cl}?@9_YqBlImb#lcP2KI@=d_*fZd)_>!`Ww0Dmub1GRJ5!PX}t2{U0`Gp=ObL2PZJ>xRd7#HDl z2*ZkDYw@v#AaAzJD_5sR6%+tkzd+6#fH(aBHu4?5&%R4^$W-l|llu$z_WdU3dFQg3 zL$@dto4Abk9t%5uY}>Sv!r>5>OwhNmiB*bnygd8MRIf|@Vg}!5rd573BA26Dbkpq`HC9lhXFcsHQvG z;pdC`dO0Q}OxUloS2OV>x$iCP{@UeQ=Q{?rMWF^ydbu(df#$PdwnR$Rq73}Nmg;Qs_~~@JU9mVPq+?i~@@uTv+tReLdyucJmbS*!!U`hv+qS<=67DF6H9pgAnqULM5H+fpZbHrMs| zgVo?N%c`HlL&l28L$L*z46-1!;wa>hWvu6)NYPBNCOWa@xqB1C&g4dk zio>+tSjglyb_c|g8JGyf(4q2`+tpJA2MMVZW^p79pAcvATl9WKP-8K0M~e>QvYo2t zhr8ulMB~QljB5<^6myOcog^jF6B>M$=2fE5aV%K}J66B2N!na~nzuCCG!Kna6oUy_ zE<)V8N;Xbdlx+YSUJ}}m8vyYm!UJ?1pAw=9O=v6^LsEv-c<)faomd32Lkv3KlmxYd zbd^j%3G6olu5l;k9yIKYb^)OHYL7{}N2%zrK728r2-pFD(lQJF8hyDgzvczO5@Chn zY4}`H=s@vD2`%oIIIuA*dh6MaXa!`w?KNfeNeRpPIK^`ZQaZ+I1`EiZ+rYdD62u4h zkONEjtTnAa{>gW{B}@=5vP~V4B)NSii##H;`U#RF3hT`Niwq83rU6(SYMHXxo|a@ zsO3~l9LE&3&e+^Aw^PF`b92uD+I=;O#3gJ-QMH`y^;YbR+5^PEeZ8@P3%UB>^-|dJ zYF)BtTbbAojKSCM*T*^|-E{DZG!I^wyK-rOlkXAy&OE-&PZj71WLlQ#Yd9ed6t`M= zA?^9vjIJ!Vwsr%3<2V`kI8ayO~qalt7j0 z>N@9a=r4sRt*~Bz4WDxks8%Jc4D(`SR0Zuu!^%n0=c{A_U#S#QBIjY>g`-x!={_}n zzl0|@Hpqjm7|OrszEsjt01ytG(Mc%|YgV+qIfPgWI+mTB8g%8^Z6s_dG-IiOTq&^i z>P?m1Tksz2S|j=X8#QDhilX<8&WF;lu|?}~mS!%ok>JbTT1xs_1YbQ@@?tlry4%Wt zzu_jXRAQ`Ut(wF~F^YJup2X#M3sDZNuW{<=@L*J|vB*d)W@GRpMNTV3Y3NKWljslh zV=$0@QSJZ(K`g*8wj3D!_>;g3@mABiF%tMDp>!ssvNy_~I4r{1Q&zOUlFPk0zk_vk z+v~HpaW-lj!YKhrUVd{T8(@pFZk;1E1?ZUoCyzuuSgB%8ijrW~t}F#mPPZzs281-h zEvwrw7hA)69USb&FPl+i;{jY!+%3u94K%jT9B8W85PlF{6a{(Y47hVO@1Pi@Rmzvd zuYB|FCn}3pu5|LL@y}PV)b0)7_m`Lm!GxTAVU%wD`M6l(Uz+b66vgA_x?DGVnUh79%J0{n5e9qKJyFHWERi5D4bgLyLk^bXLuMj+0dIC`m0$0Cz=EkL%7+^=nS z+Gqv%c|m|37Yg=i9NDghjALs`J-E#Sw8r`C>R-B_yB<6Y?Mu^o?aTAX6Qmxm>u$Dk z1`CwlJk(y<{i`~Ik)ge9%6HE|XiB6DsWrm20C4@0aA)8esKea*9`BCn(}9YjDSmZY z)@F|Yv>L?!a4{1pcKlPYx@qwv9H88At7_Xm+GR{2EFLF-4HkS*YBKmcjQ zV9qE)dY|l|A$haG4-jRF+u}JB2;whrunR%2&%4jP??dpse@uN3PyT%ml&G#Bpwf;K z2OwT}40kQ&{`anc(Q|-3#zI&bG6AneFG5Q~2dL1&lQI|z0%ysIek^|+f3ar7O&kI4 z4{eJ7Bq0BorSxBrn|i^MZ|kor3jUSR_T`#zQrPS-3IQSHfvV`r^$`P#{-#hCRgt>u zd*|)P>&Zw-QaZ2I;4-)j=m-#ME8yZR0!!J8@W22*o{4bagccbEr2TM&hrw<73TRgA zw)1@>m=i!uqOfY*RlfG zZzN~J5FU(^wOGCZaV&y&4)y)Lz?nzij~(a>7?yhXs=iAu40j{kDFJ6G1z|u0^W6i& zgZP_#VA_vC*M$ZD=w7f?$-b|#e+%rI=E8r7U6aJfpRLQt1H=g!D^4gti3F|DVMbjT z4_GrLLqGu33s8>z9H@py4E36;f(18fxl;u|&E1P&fWW|uMgT-D_u~Ue!L_{G=ys-M zLb4x1LJ;wWuj7^I-4!e_@Nb;j&;+6pH=qTtAe3yNktd*tRGjL??ndyqEtTCL<+*ZB zSmcr6veohoLM#7jJ>&0bWzLsik3v81mXDq6Sy1J=_G&mN{?=QLA+m;YVQ{ydMtC={ z?|N7#Ki;o}t@8_)AqaiZ(_i&l$7a{P&wHCY|J9tp2?DQa8ATBWBtTD2R&1$}3Fm=~ z5<}!2>TVJCmq9QS%}pwSFG*%Uq9az!y#@}-dkpR1zTA%E4PZdg-u{4{D#6-nr1Ns| zQy*}@zF&aI?)WhG7~vfAuWBwf2M;E^M(Da25Xe1{L*)w7I98#wHd|)Chd(GhLUrRq zMFIVFWH|XdyM{}4fH!{xNLF3s?OY?jX@nW14xj8st{#jbI2$QklY?xa~#sv`44?N&4q=iU5>}m?kVmVKLEDf^7RM|7=AVZTA zoOSrm&j)8;RqZ)hnkUES3!WO_gNwxSb$VR`K|^~?W|xjh-`lE4L*sYSb2>DI5In#U zQW8VkJon<1Kmf2+?BRd9KaV8Q05KxS@Q91L&q1CGxVdAICye?80l=gTyp0y;Mk8U@ zz@>I-v1kEivk#EjJaQ-^$`}sp`OxkO0*Q;sA$vIl*$lefDOrES&=;7$Q2RCm`07B@ zYVwLw`@p)c)Z30A))kjFcq%uh=u;iumu^BL3dj4hoI&StW07yWs7whItYK09XuG^9 zm$)ZSQ9-W+Cmusm|Fa5R!y^Y%;u~)65!wanAR`rNQo@-DMaxUlR}lpDgR8)^qPp1S zIl>9Fg^HvQCYRL&6aen0MPMa7bd0^&$lN%bxVr$0=QlW2`A~gjH(09Q!QD31vPa(d zh&UKtA`(CtEAWcE!A|jJLhHouQi+wKU*3(QuMI$9hQXQMTUmX$fNfx*fcktljK&xB z@qSxs5X`=)piB((7RZzqJ>k~5T45Bc9v?1+?*VHSy$G^>W5ey+xuLZt3P+>>faf)xplMww|%BVpK5?oCIr~ku^<=T($glE;1in&oKa3T8m3J7pgrl zqGO4R2x6rwPZ+o12Q*SN*522j5T|(u8^4-{!uJKEeAHWY^Z5b3Dl~-CtZznBiuOvd zj-DY06D`}RZMPR;Mf3{$=;2;c&_q$Q@=$G@1voEwGNIPHVt~k%Fv=OfD zh_r70p3H7`%UAGbR2k2Ax`M(3XQ|VI4R9se?BfS40g|T{c}oN^A-qv9n9p3h*dJ9d z-?vGA5K!PeK*`SRv6*HNAvg|VHXZHx@kfc)eby>)`|}czaIG>tE}nTeG~;guHz_=w9e_D?bT&eEX4!Z9aA2n{X}9M0L=t-#j|ZvVKxn&)r%1Q=-U~^59H5{ ztdcY72aB9>ELBtc>@njrI;`#(x9MH+T`X1SAT!@ZG~%y^+=`z~1RVRqVhuVWG;KS@ zu|hR$&&R+Uix^VZJ?S?o!v7}9UeB2b=6bC~r_hf5iIEd)|5u{9#hJpqXRdf}-!53` zx#GS3pRaV_tBq!h-CJ~alj_E4Re0l!Mr_Vv%kPwe_Pib63(CC}FDB*hQuJ2eEK>@yli(gh$3ipeHTpcqEKSU#hPYN>Kqh^8_+;2;l@jU#pTz1iw^bhO$@K1S` zmOYkUbPg*Lj(^{@g`(i?8Vvt|z>1N|qak4gA{$9|p{di3Q3&~wI2W#VQb%6Wc7rgH z3;s)u=W|Kt_~T?uA?w4Sh&Wr3w4gv|LlI31qL2=e#1`#U>qGU<=D#j)G7-YCbHHY$ zUd@+L$-h1hYb~ZN&+kg%2n0sy=#6Szb;~Ri2sk34;wtgYFNO9ae{q(>I<7j7JF_m*K*Het9ZAP6iG77fy!5~8q37f5$WN~bh}DBTj$jii7yN(%}|qckW= zOGqdn-F4<&e(rs)bI$&A{_TDF{qXYo#&^xUGxN?ob>DZ>9@a{N7IA_efH~eVZ~kyH z_U0Mnst-QxI4`<;{tyCCE;!uzkgtL`uh_Af-g@E`Uf`1*wh7hYZLQ|V*3+mdP}EgV zfqJwSzw3$hOXlP!H>-*^%oPdq_XJ`Zz+K+e4$Po0ngN>h7Q_tCY36#dB>2`3svc!# z`S#E}ksg6+_f)=qHTIWS)yA_Vf2&FKQKoe}<60s?vUDz!Ml1Pus5;7K>P4vHR%nbx z$i0s;GmF$8=3yki6d%;QoZuo=adaXx@4&wNiM+2EW;M5ZzPQ#Lt(Q} z*y(@(r4mn`$*uNmy;Jr-b!S_~sj zwGJ>GBhFpPbW?rMHb?Wcs*%;%uQr;}?6tsUuWk!b`l~6J>q29B!NmQQ2n8an^;Nah zpt&!v-~B4BxzC{36FuPjv8CfSFbJp~w*j8IuZX`#KgT z#y~yths7>YW*v(o?l~K2bc;ve>F4KHs=69%1y%K`n0X!IbOykSrn2Mdp)c-64dMLC z$!aitb*;O+*vvnBahDmFaD4l?ZH3w*Vmlfs0ZJr0K=|oKsAJhsn6dJWRc-g3lKD#S z=39Sj0cwaSxB;@fty*rz?sGi*+!4FAV#dw*EBHOByz1pJM)s&oL9?NYu3zn6DS%#8b*71^OD)S2DGKb*D<09QjPtOr4{O zzrHlQiskj}m2y!Z0#;<6V{=-?QsWhT1pPBQbvbJLmMyUOD`6|?G|Np!PFFkiJAXPR z)8X^s(&J(JpIX)Adg}Q~(d^FTI^CwWXQELN_TzTkga!n6_mq=9(u9qq92{E@UsB z(kFUqwa1O9&yvDERg1UZ zmXhOlEXLlYwRw|%+{xb^VRwHhi7tjpl@Pb*0sx{TYN7^qEb7x;h%?ElX^HT!;R|G% zDrC?C(+#c1+MBo9C`fEBqWAKDa+bVS6Sna1pL8eH$PvotQ_G z&l@#J;1VH6&Vs5GH6a>Sx(_Mj%4=CPzVthlKj1U|nHVyc^{AI4kd#p3uI-f#%grl4 z|_rq)b)69GhVC_1rN9^j@QrYFVS1U5p*2!sV;(+Vr zAQTzYeVE>8^O+MLUh}A&wVmcMHap|rR5RsivtjlpN#@EbuJuATLO zi=wdRt>?4*Al91r%p$9O&@|yd6C${{h?X2?hrJM9D!~u2oyTL6s=*zRY`|+r;AZQ9 z*f02$U=(VI!VMi5PME!oP`6UO$s)KmpqlfM636whhf#OdayYba_R&WOo!pU1?c9VH z?%ku_v;I)z-$B3tej8^*^2hF5>%4&bk=BdMq9t(>`I8%Fz4gJ#B2q;-;`z?i2G0g4 z%O+Yfbe#2QOj({EPWr}hz;>c6bK;S{P&Kr(cT4cLaQIhxhekz?RQ6WNrE64S!MuC+ zZ<+-~v>b4htCmVeK$MmN;gi0Dr4)7BBnna1|872Qo_<@1TEE?5^e6qqQwM2ufscq7 z4#I5dakRb@1QkO03?Ec<#axL=9OP!^y80=igYX38y=a6OAmIGXwJ~Lq+A=nQB7{!= z-r@s+#gFB@ajrxeOLFC+KI8WB?Lni~O6ED~%~qdzGg$QRNIFEb!t`F5?W4OQkFE-2 z)uzW4Lat6VV`lKt3W>d1Hew|NN$+Ip1$Z@L%9{#qxhAFkRI6#2fn)v1+OeX4mA)wE zO;XK08G&)a%Y|M3lzz}u!Q{tEEs=DNDa$h(s!*kR>UHJ2{UTv!SuVE^5-rt+98uBUM;wJ}o27+?Exq`VL zn%M1HIJm7ZnP_jYy*6qFbzca+ieI0u+L#x*T2Jsnq5Pf+FY|odBHLuTn&J>T^}Ezu zokRjLwb*RIV%1b(pcW_7z7uW1G{^TK!W&VI&)MTdLt3vd<(3^{}bYt<@;V8#av8|uN@q5#1fUJH<@c9=Nx$O}ld zz3cnz(q(y^4td$eQ~skh^U~!6E>Rxkazb!^lSP{EaW{IWWGDYJB_=slU`-i&Nq@Ii z_GosH&ha9(mV|G56X9Yxd|S-?-3+c&`PI4_Du%}nDK>bcL-4tWQS&}RYhmT};6{7t z+|;2_Ma{Y8e|hNdDic9)PjDUzF1l(t!_11GDs(NZ>p z@@}RQ^%n@6A#%wvUrRidVJ+iIU5sNgET*)e4e#w#FkR#@sppt?=ezdtBDnTv0`E#~ zLhJVuHl-7U-NZ0sJEcoQ8mY4`FZKPMx#wb{-byqEW5hO8{2l#_99?t7S~Hw?bqHOw z33-{NJ70#;-q0ma)9*rO`Fcanv$j*#o?0=jDACqMThA)+-hmTFCr!;ej9v|A#QG-%C128& zZ2d>7gL%&FOj$1XXy7b+Q$K2j?C-q`4)iFXT-l?}i#w~qm3)3LtC`%a_RO`CYLg@P zlJNn&D*u&-heZ@q3N90qnTe`;p5K=JR{}!o0ly(T>hlafBoUWZI8!IBz{<6~vH3UXI30s4y|0 zGnZyNw|hk+UbS7Sl|Je-EtT}0OMbJ26RP94CqApm>=YHTM~Ab7f3tp#{x;T!uS-&x z11E_=v8s5c&q~$10qF;0I@kEjc{KQR>=z%vc{(}oy*E@kZtrsCdUTJwh*AST=6>Xw zthPFjstk<$Q|WfozMX^rd#@cK9l>I`*${!wUfc{vt%WC<0Uhgi%CKs$*pzJ7+fo~w zmrc#!j+E2(OKDw=Nc-9CW7aWym6}E{t6ub;#8NC;`?h1$DVx zfpCc|){|?OBWyL(yUU4Ax4Q>tS|Z-wr`g$}8E_h><{x$dS5erPS7V!INV{6D2R}_* zKE(vE=HZ);Pe^7!N?;I)WQ@N_k!>|tcOIx65`>-2Wv_KS@YDvO|tnb*9rOKuLe zBDJTdwuzz^pQfIOvgL}4*ep{K6?3AutiiE-o@^V1v73&T+Lf^7<(jA?s*@@syQ5#8 zm#WP^!u`y^9Y}iB+T!?88|A~gk)&ZVsiKoC9Ip8f-5~;9++18lGDLX+c&qx~w2 zVMX}yHBrH>(su@YU-AN2{0EuU$SIP?7~W;^p0c`F<7hps3(KFf0ua|yS<_lqDGC}c zh5p&f?`%VMx?>cUYh}bDdS5@&23rx>GX+-TSnA?xQrLSEE(&{!jUn>VH(<6C{W;nb#aEs4WaX+woh1SH6(fT<_50p|@Dq`(B-F#ZX9pDA-g;EHdqK#tp60w< z^5)K4P`EBhIro=|EX(3g&x6VQm5(>oF?`w7_g&wxuX>YLqj<}@RiS@j!N#X2Y#ZBF z9aa~Q8GZubHHVQwEl(J@P#K(c z=wICSzz9wb{@-*UcNt+Ps-rL{T@}}whNJxA_Cw{((?^Fm+B3qdw76~wNMC4Hx3zlo@v~9XXa2EU{Sg6jwXp&!QyE z3@R$2I-n;me&@#b(V-#(^J+4x(Nx_#WglXc5><^vf^VDTsU9d39%m*{5Ahl9183s1EF=JssbH z(KKO#2>NA67nvdV1NRY`*Ccyw{a`RB0sV|D>YjhLLGKeuDrg(bWdU3Me1jBfR~i~+ zQCIoXZg(JRe-nzD-UL8ve^GfbFBhXV?zq~Cf9B=I`Je$bFCcU2LI+Jut8K*#%&RGX zCdTxA3MuqesAmRnVRcPBUK}VD#hx)Wr6nq+LcN#dj2CbM0Rx{Tng+xY7Yag<9nsys zl~17sps$g~)z1FY(T>sZ)junoO9=I2D^?MUS&Gd4wP>uN9%^h&17&RGb2Xu5)rQq4 zC$|Q`i%%MKN$}+5s&7Cu&detUHR8pxI7DE2$)TPce&1rQfNE4Hh8D`soHc_Z@HG+Y zN%uO@v~<*lkf#p;1D{j}#C@56hU1oT`s`0r?#)2Z_CojntL?u;D=R=E1C%_peV}1z z4+buSw4MlL5@x15|M&l&y?{2|OTn1vM5F?=Bd^nOmRO`!pnCa|3N@Y>45ldMBL2*r z>(puCePjR0gv|Bde7+(DngzkLUef`4DdzY_(RQ~&d%{`Xb<`znCp^?$-waTwGZ z0`d(rfYnxOFR$DkX*ACu-9sEjs9n~)`A1_=|K*FV02)b$lX zZ^2`SRDIMoXUX)@Zp~&q3Mp6k{B_uL34_JDjMpy zOlzQO82Z2yLeQ8q;OOcH8qdnTjtlZ~Q)_Q3p$sECNn}wGnRR_U7A`^p7Q}UYM@I5f zz<@ET@s}KE^b>sBbqpGJYJM#xMg{@aWKdcItg2!x@Gk#e^xum9+q(b0(SL{0|AD7& z%TI~4zqJ7Wu9|;$>ObS*pOy5_9QNLAmIiV8U@PT6*`#0@`e*`~Hq(i&NmSIh6%HT9rQv3>LuG#`xq-ij zN&}&sEe6J1kmc(Bg359U=%IcGq`RQ-AiyC(si&wCRC3F@5~5^8<<+1*At{(uQ%Wsw zycF^B0aHQ{+6RA$M#Y-(2+^~K+in%2GDR6}i~!7x%3VRDfuv_%{@;cQfIp}V7%Jv1 zjp;6h-Iq3LQMqpBcoo8mL4QFxn*c+!8iJp~U)N(g(J_ff2GB>)U;cYRLg)o8Jo;!8 zSyf;rC!?wDfD@1O0OZbHKI4*x3Agj%KO7d|`&+9(epP)G+PB~$rDQz;a}?I_iFp0gFTc8;8?$)W(m%96g ziR=&v2qkmFp2yR))qZpY06pXY{ZLV5eq;9(yrA1rpUDLZ!@>^hR{o5KS^=;hkhzAc ztMFWka8~y|TEtIK^m!}~5LiD8D|fI){J)W6$an2_VH|HX=iQ9dU_G z=i>qZE5ZwQm>aCIq2$Jh*Cdr*LE(%uUeU8eWC)ADj< z0gkIFl$^=o$HW7M_9O4ILwr!}t;d_)HVe@ZI`p}JRw1X{0QyGrpj_}dmpoK*-44N3 z7-0qzxG4~iY#J!i?*N3lbW@Lkcupupty_=cEBpbZ7d9dI7fG(m%H_k)P)@NDV6$Yl zKYp+vw0up1*V&Vl41I$1fo9BLL%LH;?B%P>RQ7-`h(^cg@!0D6Vli=bH5jD~Tk@Hf z-t~=+i4Q*#l+3kUDO_D#zbb@>K*eQ|Xzj{rT|FaAz6-=TI1u8*JrkEhN^A~qvC|1u zDnqQR&sBdwNcgTENYy9nAj@NtLnJxm972!r^HMKyy>4Lqdegbtlc2`~q&=gS7Hc6f zqpH^&fH~jy3og23mOKvaWOuKmA`V@qQzu~)nVxB2LoZ4T=t9Z6X5R>WLKcRmNKZsJ z;sDXP={e+`x2v3u*ewwH?j!I__#EUrqxNN$LETPp3?KbDsMCzX(_AG~z3s?E16Y4G zOnvt9>1g)FcVunbFfyF0y2$wZugxb6xFxCxMtI1CM_U(_`zBU4Zq!e;g8&<&cPA<1 zvv;5nYGNMn@LG=h9?o>c%h6Km%E2Ec)c_Wbn1^~Cu zFWhbqVM!Q+CVYQ|>b1U<8`r>Y*y0v^cxYTLd;n?8u=OR5QDRbhYCdte%%?kN|Jt0K zRjDs<%GkiZR*+d)cq6m6K?E)f37Gkfj|3YwJLw^R=N_HX5|X3eBL`VnVyNRkPPhc#U0zSP{< z3gz`-fKj$TgmweFsa_WY0}L)0!e(_`BPC_4^ZroNyE+ezUmEbo8uk*iW{q=j!EC)J z%i?u%M`1+f^WavtC-LQAi5K|#^8azI^69W?SI)5T>3H)^sUYw%0@9z1g35kci+8R+ zB0N8Uv)nKeL&_8fOMxm1*O8$qT&3Kh--`7NfIDN%m@>;dmNhdU2@YxEn+YN^5T|1P zK*6l@=~Go?JK?g)!jJTG)lCK-Fdu-2i^(sm8Q!l7=CqioJHd!Uo&otKCo#R+^>TvJ zQ&rdeS%z2*7uLi{`##|Aj@e*%<%@@t_#=*q1Y+)`h;)ZEmR5?%d-51*;WUVo@LC9B z6^SP;KdBW!dW;Pf4SuCfzCi=r7E&TP~`1zXJ(ArXsbfo{$erNRcXHF0AzldXrg;$6?~6N%7+~ z{vlp*qsGbWtcO+jQZj9NxF;=tDj@*DPJ{%Xj>d3>?4uBNfoX^3rKdv#Khppn!Nq%`Q`U3 zU#u27BjTBQvJ(<==P>E4XN4<@DKEPZcakDhO57~`e$M21mO*5mfsCTO^xk7Gp3P1Mn$`$AUrInwgCu2WnY;>2rxEu~!`<%ioCurN&pSxH|#^x3$v1A&PzNbzO-V z=y*xR_R1eONgY>v2A4+rwanW6PTCOen~<9Tu(vos7Q(VG4^sLIgCrQ%>!+L=%MJl) zedv81eHO_0G6PiL4#%`_g`FXL7rLc9mm#Ycz&lm&j-PI|VRt}YNp~#WWsKM$FfX@V%HYj24JFmVfn*|Ii0pANIl1`(6TBTAn;Kr2<9Ff$NoxWQ^qY{lof%+&x(@L* zKyE?@u$)h0sxNm^KZJZU@fYU?u+GM{rQm%q^TkCoj&*voIu8sdTnLU2 zL4fm!F9GRt=>JPKqbXgO3#P}>T4i(K59AtYOFRrpj@k(P;JT!mBESXg0Jbj`EnrLA z8gTX#=m!WW4Q4Um`)ofs15^`-&mh0C>1?OZY@_ZQK7WFih%0l%^sV)>+me1nYW|SspShyb#WmCot5DmS+Zv`lANu>3SKPYyri_bH_qj zNStCEs8qH?PGZLkIOdN_h`U(=Qq=5^y&nk)vn_i9F*TX0YA_#i@%)o8SvG24k1c?0 zx%yr9E2yvo9~P&gDX_j1Av$#qPJ{E8B?k?zi|v3B9v)dwhCJ_npmaSD-`w0eZWa~)e%N@1 zum9F*24ZZgnVz0j3?-mJxU`0T-23_27q2dcMs%{ta~Bju_kCj>l78>8F>S$M;eURz z&l5!Qm3jV_*Pbmo){eRR@9Bw^H`^KyPRblv+$Jc_c za&_kYTdI{?lZU@&)|`Kg1r6sSNs?^XVx_*lHsWG|eQ~z7E`0KG-*LRM?OqzQs^v$5 z8@E61?Cd=7vEBGwsNxnY2_S2|;TSB6O4{rU!X8F28%+}?xfpJNC(@FfV%uXva?+Cf zRRwH+Mu&ze#hiO|5k~9vQ6^yFoK%i(Y9Z8(M(pYE_sp`fGTk@IjYE2i`U>y8I(UQM zd+sjlsH>ZT08hY8la}e_{`5u9tCGn%Dj9;F6oWxn*UHs$BrcYXUrAdPb1{gpvGqhg zf6hgM^-J!h`1>cD2XWcCKd)Z`S!c(M$vRp=ZBmWg{g1(f{YK`?Ju$y%Giv)=Zsh>N2B%_dm3HJY z_B*-mdd1kQDvdab`1n#$Kd#3i)e|`&uW%1JJ<4 z1%4!!mnKOHE8NAf?+1$ouirM|O1Wv+q?oW=9>=_-$Bquf;K;6Hga_HK3zUUGJ)q-AXCog2 zs<4paodU4mcHBq}YHiIro?Uk%=$LB@{_NUV&Vi3EjUIdT??T4Y2e5~K7}z1>*01i2 zjEof1mGZ=^wIxK7NZWtVzX=Uno>*N^E)1WhsldWPE2x-AFxgUnMrDb|$`&ixsPw)6 zNtqbBwB(Zh_P{FinDdZ6Kk99X;@H(6y}}IOY-N`)tQzMOI0n+nsX7iNs>o83{Dxid zGCDSI_ma`T(-^}IEVnS>Sn(5fWH8hYll1%q7zcVL>m3bYKt)!f3OFvaN-CUzZcDw% zf<8wsZ*B>A?pSKQN}a5;pBl^(bzC2>@;PHAI9wz=r z38$HNp6s9JJHm|Ixs98~n{i9E-rPz#p}pw}_F(6PtIY{9lBD30wnhqdhJ_Pi-RdVT zWKs*X8(gzApj;P8KY#?uw&+7II_p_gUK|;o0V<^-wb%E<)#o0k3A-)dl@5$LLcemg zK|Y)m3wB*|JZ^^)Lqpxq?RFT$y=UWT{1)o~hP>UkbBkSBVK<-!@7o4-lk?TZn(;P=EaLj{VmLjW=7lfMn@&Gi+Nr@T7lWpbi|64Q+3{mn7qGj=(i^ z^X}d6Yu(=}48IX4Q3*Lku@^5Sf2?7-FXI6m*g|7t2Q zFi8XpQqt4)mw%t19-dBIRTR|m3wi{@2z>eWlIY6*+P61*;V>mm9-ad@BMULM3WK!w z!TNUW4$-Rrcx@?RfZ5oQ>yr~=b>Sc2GSzS}(cyV_8TP1hQ2jeNs z?t+%TV+&`F11DCT=^kn+V8rS~J0Q&S!#HSXHiX1j$3TrnBkt=|-$JQ8nufYez%)K; z(tsUc2R`kBZVCQA7aV$6`}|<>pVJy0hdCXr?x$8to>!nj)9!s5H~9EbPel-c^;e8J z%|n6%KGeuM`tKu8vDkizT?uvp5FR<3x#8XBaXQ~U4|8O9!HOG3jT9iBkAj) zpSJ&y=J*IakkFSg^7j#(2+%q67G4Gs_|iG5RFsK;&4Ri`Nt8Cx5(cg0$i$m(rwV;w=e>9=q!8a{CzZq0Yk=jiG#La?3+wXi+7^| zO~d79>ElOr-~iXAQWOdLZ+y9|#Krg;TOjMA4~&=%-~tH$(gait~CLJ2|-`OWxBlHKy!T^n8RYfdb^`2ExfcY0a=OxF!nY8Ur-%Lee_G5 zZQWa&ZGKNvkppzSM?hYLz<#3Is(o*HD90IOCkmS{PSy%9M4tS10N+e4aBHe$heYSG z+$@s8 zcKPear$ooS)saF!o`yLL?~CJ=4In*qb7L6o5OS^u>9qc? zkKpMQH~Y_p(f&`s-Nu7=6`y)_SId9LAQRBnyxKhle02A+-hP$577O-@*g+KD-z`mq ztIZ5kR8-^^68a|SFuwI>Uh>xT8$er2aP7t|%kYW^jibP(vhPc|Sp#$;4Ra)Xr{(E{ zoHA#CTX_I3+jrYHhXSHDfp0RVYuJ+WN-1>`kOM6)NOhlr`@o?mhK2`+naA&ZU)O)_ z5~x*q`2$U>tc{79o>T3o!%$=z_%Bt@NsXqOz26!E^+7AKE5M^p8ORVC+S%RR0C(f; zW`DXsh41Nsl?Q#lr!GlCa;F?i!aW8UW8((*jX!%GE{*{x;ut-EGdKx+Ye~~UVI(}vY9XDn zz<^SGqcmJ@^!}^ex7RdJc3CLeUkK&VPk#poYQq^N&EGGQnJ}CUW*O3F%Jbdp@b`wS zkE!0;Nv>otH!tsyL7m-xEIf`!w8vVpCaP%j&tdj zSXXae)IR*I7=5Itk-J3~0i*1PZN}@G4rU4;fEa@}OcWl5NSk~0kQg$KDD3yAzZrW6?AY9z%AF|+-f-#>isaI)0yLssa%$*!{< z$?IRourPK$5`FyZM|b1wLK!I;NNMOAKfFfHbK6LlB38;Ps8Hw(M4JxZ?!)dTG{|d{ ze7u%B9gr&(A0iKY9;3K&y{h(IDsyqH3_-^ob+(Aar`Z_3atsP)15_Gu1tyqaj&lF! z9J%0XlSmY7WkPJOI&X|OR$ym_T1RnF_7TCLJp1XVk*??DhFKzy%Wa0ToqnigB1W+8 z?Jf^E{`ykl0n(V>^07Nt-QOexTAXSe#Wi8~rSd*`BW)#y)z#JY^@G1Z7dv|;I2>lW zK7Oq*G$LWgmdpX-U~8jx_pXs~S1Kg3dR_!KQ7C%p6lML!|CSORr+_0cQaZ5RO~ie5uG>@W%AI0l0Z~4TLDN{$g)H#V)jj8kfVqLDoohiJ zfY)~loGkOn(dMTUExzyB(E1YTHFDGZSZ;6?<@y}OJ;Jjdc(HU>H(VVqQBXyCvJ2Mj z#UQ)-K0`%5u&E@PLc+x`cepXl+CDRywYJlB@y-5I(Z)mFV8y9A=}K2j?nd z(=qpd9|fER<0mr=!?`ViMX9{F_~R~R5&?XQ1eOHsC{Q?%n5rJV?-bIwx$}tHan@|` zX0HVkEU)Rb{O{uo7(ZEIjJ1!s@8E*_Pa&Wm{`ZOvQ3H4G1ub9j3ng%oyB$7DmxOM7 zaEYi#gMT`PllXcx2Aqc*^+{NNTeh4*ix@dP96a0l8U61u$qa5F#;O7CTav(#!fbP; z`a1z7GT@pvIPG#s1bxIkn2oyn_YryULkxj7<4M46l8hukSxm7iOG~t1rR2Y~xZ3KkAGT&AS}^yT$)=l8KJ!D&U8=t2tG( Q(7=BRGOE(ArA&kVFOC`r#{d8T literal 0 HcmV?d00001 diff --git a/dependency-injection/docs/inject-qualifier-demo-classdiagram.xml b/dependency-injection/docs/inject-qualifier-demo-classdiagram.xml new file mode 100644 index 0000000000..ec122afe71 --- /dev/null +++ b/dependency-injection/docs/inject-qualifier-demo-classdiagram.xml @@ -0,0 +1 @@ +7Vptb+I4EP41le4+bEUIUPZjeenenrqn3tLT3X6qTGIS7zox5zil7K/fcTLTvHbhFOAkBEKAx87EM88zL7G4cqfRywfN1uEn5XN51e/5L1fu7KrfH/dd+LSCbS4Y9VAQaOHnIqcQLMR3jsIeSlPh86Sy0CgljVhXhZ6KY+6ZioxprTbVZSslq3dds4DuWAgWHpNN6d/CNyGZNSrkv3ERhHRnZ/Q+n1ky71ugVRrj/a767ip75dMRI11oaBIyX21KIncObtVKgWb7K3qZcmldS27Lr7t7Y/Z135rHuLcdF9A+zJZs5z64AodKm1AFKmZyXkgnmX3caujBKDSRhJ8O/ISb6u0/KM8GX+zgepgN/VuLjNW65vFjKOJceidgR/klX7kxW2QDS40CUbGDe6XWeJ+mlWh4olLtoR0wznjDdMBx1U0ushaWLkPPfOAq4rBlWKC5ZEY8V8nAkFPB67rCr/ADXdvuZtzLM5MpKr0TXPp/pkyKleD6Y/wVaDzjkWrAkWxEJFls/V7y9ErFhkCyY9ATgD9nHniEaxA8c20EEPoWJ4x13sQLhfTv2Val1iOJAbbSaBIqLb6DWkb3gGltEA1gfnnFwl6JoGmewJoHAsNemYvuWWIFdo2npGTrRCxfNxwBLCKeKGNUhIvIUkuIqZIKzAAHUPz8BHVrK8fU8waiNIt0x7REw00R4+4NysJKfKOwCwcwA5Y48M5mSL5iqQToISZ8Hnuws1sQ3+qlMJrpbWmiP5IWJ188w8/A/gQFIxZZYONlkn2xiPs1XdUVP1EMBpR0N4gILs5oUpAwMVp94wRVrDKSrkrooYjIKfnKaminZrJmnoiD+2zNbFBIPiMOVrQJheELkNs9baD02AwB+lYySyyh8MGiLEMZZljONkuttRKxybAbTuANaE5tVhqCXVMYA2loDG+7XJupisE+BtfBZRyovOGWzi0spODezUKkHZWRXbQbDLqzDlWUWNcAVop6dsmBpcqX5Zv/jGoEWGTVAmF8zLL3u0x9BWq3CbUV1SGUbMnlg0qEEcrq1/naGrQnQI+Q2oXeuDt4DhLlDKvzsFmdHYTi9OUZN1MJEjCjB6VZltLp06e/Fo9Pk/nTxz9+n08f57OnRep5PElWqZTbX37NU/ezArWX5Lln+HUt4WPs6XZFo4vltwtNMBpLNGmtppcG7ngN3IgenKiDQ1hL8DujFvjfH6CBQ6bVGrisLuWRvzAaQu4S+/vGPsVTl8apFW1a1wVtLN+Xxulg6A3Rg7vQO0DjhKcxjYJuVB6jVKsvEXtkzAnfU0Ssg23cobvl6xuoMqWO2bnuuWMSPHAtYKe2ZGNf/dpIL6WyNfaYXbRDh6OlNhq5f/oumjZT7o9iZUKuL23Siduk4bjaJrmDZhz2e20nXSTsRITmceelU+r2lLQ/A95ulVoBP0jibR5tXnqljvi1NEut+B3ilKntjPDSLf0fUdvSLh0vapvPs5/5v6mAorYHxFnpe9OR1le2ubHlsVa598Eaw9gCe4BiOKgXw2Zotbakh6iEzafIM/XxsObj8Qmd3Hzao1b5TLzr0vEVpYnmoSc58tDOJR3n69xhzbkt6eFozm0+MZ0bc2u516FgPYV3m48h50ZdSqlE3eHRvAvD4l9J2Vzpn1/u/Ac= \ No newline at end of file diff --git a/dependency-injection/docs/resource-demo-classdiagram.png b/dependency-injection/docs/resource-demo-classdiagram.png new file mode 100644 index 0000000000000000000000000000000000000000..1f0a41a19e921af046deb26274c06872d89339a6 GIT binary patch literal 46095 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 literal 0 HcmV?d00001 diff --git a/dependency-injection/docs/resource-field-demo-classdiagram.png b/dependency-injection/docs/resource-field-demo-classdiagram.png new file mode 100644 index 0000000000000000000000000000000000000000..0d6207d09a6e6623281e605d26431d1a869f6e28 GIT binary patch literal 17692 zcmeIabySpH_%@1&I)F5YbPS;=Ac%A`q#!voBHba~NDmDHQc?p742^Uu(xG$;C?Sn> z$Jyi0_gm|H=ll1p^Urb3V$HnI^XzBGz3=%eUvsXDC6Ph_S7dbKejqigSHg^boPjd?NT61fZ z{2zpiP=}w2)$+*FY|jr6;Dr~v)!Ftaj0Wq{G7z19-X*~BpS&j4ydPR~w@*>_BvNw! zPTD!^ozX$O<>|TDg@A@vL{H5B>*9~FNil2_cDi`qrI~K^}VYZCH>l_tWec}k! z;q0H+Q#ZXa!u;9I0vyFIDaTz!NYxu?RjzH?vvMw;ku3*0RZ<;F8TKfVJ}AjQkj4_V zbUc!hNUEQ{yOY?|R?TKi)!vL<$<=0+zVmc`x+L^1UYzqoW$7m~5sp=6J@4GB!<6UY zh1IiEYffx*Ld}2JTJCR-it=JcyM8Utnvi8kNEw~Sa9+| zR;;yEJrG(!=ARZ@;B2sLru$A}PuG+;WkHUA`-??OgZF^#8T-<$6{0)8QXXaa2pN4H z`p9zw8KiCQ+xui}JO@`aG=6(M>hN|}|JB&@8+fqCY|o>UylI_|=2}F!#AUWKeJ{^& z5@M|i4?4QK6|;bYU9UIPFG0#71He3hV9sji&Itqy!XYa66W{# zS0~2_xW~@);ho~-mn0pwZdOmIYbGLT&B(e#KVpXdK)Hs!7_FaLlC9OR5$b+`NrH8P zs=>d}@HAc!%fr?!{~=tj;7hT=L>>IwCEj+D_nnF*?PsNL<)W~TNBvW@<1=WFoL5sF zt7)6on|w_^%csWi?br%p#2PQ0BVLEjwmX>F{hWMk;sV2_WQJI%hgefohVwOuz)lc}WNT~7&a?Ba_$U7$T|C?f9@ zYE&>?)ugWIx;pbP9APdvW11edT|)l3+3WELUc0yIm|S9~db*X~cOR2D`H1q_J$&Sf zkwC=P0+dqVyLNomg_}kF)1CW4toNy$*Hu_u?f&>Ey}h<^cOG`;(&ka^*2@k1#Wuxolp~_LlZh-gY;Yk+1aW$5Wtxee8t>xwsc+dd%k@ z4ez>qLE(~;B%b;yCRS)g;%+wG-Q8-(-uWpEL;bHha5$FXCCB{XqX}G}z$V0TpGk#U^PlclCL{mMQIX+eRDx!#RU^ zb%~k`F3t`zxJcE0ZRz+!1fvYYVk+c1eXw<}^_t`CjDVAi{SgKRJ%&6?Lc`
    qwa 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 literal 0 HcmV?d00001 diff --git a/dependency-injection/docs/resource-field-demo-classdiagram.xml b/dependency-injection/docs/resource-field-demo-classdiagram.xml new file mode 100644 index 0000000000..44c742f2bc --- /dev/null +++ b/dependency-injection/docs/resource-field-demo-classdiagram.xml @@ -0,0 +1 @@ +7Vhtb+I4EP41SHcftgICtP1YoN1bqXtalZ7u7lPlJiZx1/HkHANlf/3OOGOSEPpyonfaOxUhFD8ejz3zzItDL5rljx+tKLLPkEjdG/aTx1407w2HZ8MIfwnYVsB4fF4BqVVJBQ1qYKG+SQb7jK5UIsuWoAPQThVtMAZjZOxamLAWNm2xJej2roVIw441sIiF7qK/q8RlwaxJjf8iVZqFnQcTtu9exF9TCyvD+/WG0dJ/qulcBF1saJmJBDYNKLpEt1oA1ExP+eNManJtcFu17uqJ2d25rTR8tucX4BQtWAu9YtN7w4nGpdMCH1J6uFJSJzeyhJWN5SfzgP5WYOYyhyCK6nfSbJbbBleWG5VrYXA0zVyuERzg4xKMW7AQjYVWqcHnGM8tLQJraZ1CQi54wkGBaJwpnVyLLazIutKht8NomoFV31CtCHvgtHUcW6PzlsSCViLcR9TKEmW+BJfRygq6FiUBJBOD1qIo1f3uwLmwqTJTcA5yFgqWXimtZ6ABzUAHBP6Da5rcMF1kq+TU8RBz9VFCLp3dokiY5bDhtBpxmm3qGI1GLJI14/OUBQXnRbrTXMcGPnB4HA4VVtEIlQ+U4XIpVtqhzQheIPAg1uJEwYlH9oMBzfRU1YFQOgtfZXCXAR8oy4YHGQoBouWSNBwOj7IQsTLptZeZj2rkhn1B0CZTTi4QpzNtsHwhBqhvqX0iZipJJKqcWnDCiYpxorcAZZz333iKX3TzrH8y7o3RrhmOkbgwxi+JWzcDg/YJXIfLJIbTRlJIHYiEkIcvR0KgngvOS9RHXLKOYX50oEjsEavVfoZXxIbq6XP+b7OaIxe0Q6Dxllief/DqW1RHXaoJ2qdQi3upv0CpqIIhZivZPWr/BfbOxq9j7+x48ninFnloQr/QaFko6xfGkKvQK3eff1vc3l19+nV+N69T+6efq+ReA6p9T+p/KizOX1nPx4wdExennbh4tnL/GG0cL2A/SBvvkHqgsz/Zxk/77T4+CNfBBvGDyaF6wCF1DPHcON6reTNtX6DTJ8uTaRteC15ib8SN9KhbGJ+uwZZM8N2Fh2hoBikYoS9rFD2HLySSNJDfGrSigXb7B+N+8CcNsOLRMLmgVynSWkhzmykqoIhSYvCSB+nclnNTrBxQ1d2d4Bo8wbRPdWY66PMZg3b5ftS6cWL+p/J5IqzU2L3Wbe1Hubn7YnQj/1opLCmv6H++8DzZZSgiyVlUnPbq5msaIacNdb03KEXjvVeKwaQbzIdiOVSso5zcfaXoRvd/2rtR6NTh3te9tQdHvrlzu7f2/5lzJ6fszRC6I1bx9t7FYf2fjJ9r/O8VXX4H \ No newline at end of file diff --git a/dependency-injection/docs/resource-method-byname-demo-classdiagram.png b/dependency-injection/docs/resource-method-byname-demo-classdiagram.png new file mode 100644 index 0000000000000000000000000000000000000000..c5cd0c0fcb8a0d1d3275da9875be05663b4db51a GIT binary patch literal 29579 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�{vW65F0TH+<3m9n|HDlsaDg-wA85FD=#cIrU65>iWRL@;ivPjmI{Z-} z!iiJ(dkISN5~BShT>V~3;Nab1fUx(y4B(r6B2I(@`8zYAb%VTk9=!`O4PS_9NRpzKys0b29sme_3hbi=ppXtn{aiBuT{q-#y`|??6$=S32pG!WoijXn|A>l7P1Csf=#VrUy)3kBg25BA_ z1u@SxhktooS^{@p7Uac*j9E=i$Oyj2xI@>3u?TY|F^nkD@J0?_L$i6_u6DeM4DTL-2x{nh)Pj$8Az@k&?3 zc#bSS{xWcBZG$f2mjh2~&QN~a;gHi?s=WZ>!jR8~gyi3!WVoXD^2=Wpx~qpu`qCmE z6bOdYM9zPKRw;AHhzO$HfZ)Y%YA$0T`%U<=yC>u*1#rC^EZ%C%e7%h!ieYf2cjTyWAmsh$B!_|8IL43J!(0 zhPlYbAsB7dgC|596Qw#kUiZ+gRZpvV?AA2a2U1d^Q|-q!6=0y+TMpWHUIN$TjN`m} zN-?uW`BycOI2OIsqZ2<=>}?>lSMSa>@u7+fCvli9)$%L_P;Ubrv(6)y|RYj>cNG-6QYOa_e zaNeeYZ*T*-!tMO<6!hXWZaCx)`&t4}>ZsOpd$lg~SJX|s(Ez<;eV~-Wk?MJKt{~$J z^g6zg{bI=z7!hg|0VL3G0reX6pZ8qHGcu0cv}fP}q+sfnT&?yEJk)rP)k)Q$D(rBq zmmc<}_z;F4XKDbw+93F;1MXMGJt>&UpZr%0?4|%7kcD{HFDHtTxT^m>nmPNy^5U!I{B-eFN%ye1S%d|7(ANhe(u$UXBntWeA)SOaqMqHl5rT;xX|YaNqlJ&^9vQ z6vi%Khw_f?g^+bImYx|*>GM=f7$a_(+y^$fKFhA;(*Vu2zw}kGXzly(^BZt7Vpn@# zg#yRLlwY$m3#EW#if#JQ+ty6>VllZR?=c9=kd)VwfYl_Yy?H*hn<_q;$kzekSB*IKF;F5T5xGfg8p|L;I4y;%-4T_vkhnC=UL4HPhC4S8~`m_2aXw< z0Vg2Cbwjzufib`1)5P41z#2~XvDA8yvLzE3_;t_Dv%MYasJwcqCXaLMQD8xPb!FfT zUnp$%wybS)RVQ%6>MCR4Y&mG=n`IMd&Azv={G>#0C+A5Vt>6s+z*txb9KZ23 zE&M7DTCe{Tya)m)8VTC=u(Xr^ZpKn8=%4gogmmd)DnD;Tmn6ynH+e@TJQv?5HMF9Y7Vdy0^F}L>&FD1Xd$UdE*d;wmjJV^DKK1Db*|p80IDq6 zp`s^(fKjaDTjSBD%gO7hB+>>mdlu09SC3qs4_y}k36wAMfK^$Pk2=^IPgH>2ine(9W39~xLQc6%S3|%<_ue)GhWSHef&RgqwK33 zSU~B362+w>?I|}VU6`Qaln9DUP<*Ze=73<|n7^z*y3`IPI!(xd>59t&1I`@a%zWAH nbN^QX8+A}gkS;FHKlWbYbAsL~JG=rO&BoyA>gTe~DWM4f06-Nq literal 0 HcmV?d00001 diff --git a/dependency-injection/docs/resource-method-demo-classdiagram.xml b/dependency-injection/docs/resource-method-demo-classdiagram.xml new file mode 100644 index 0000000000..94b39279fc --- /dev/null +++ b/dependency-injection/docs/resource-method-demo-classdiagram.xml @@ -0,0 +1 @@ +3Vhbb+I6EP41SN0HECGQbh8boNuutkerltXZ84QMcRL3OHFqHAr99R0749y4qCpdqV0eQvx5PJ755mJDxx0nm2+SZPGtCCjvDPrBpuNOOoPB14ELTw1sC2A0uiiASLKggJwKuGfPFME+ojkL6KohqITgimVNcCnSlC5VAyNSiqemWCh4c9eMRHbHCrhfEr6L/ssCFVu3vAq/piyK7c6Oh/4tyPL/SIo8xf06Azc0n2I6IVYXOrqKSSCeapA7BVqlEKBZvyWbMeWaWktbse7qwGxpt6Qp2nZ8ATq0UlvrOg2ACRwKqWIRiZTwaYX6xj2qFfRhFKuEw6sDr7Cn3P5G3Az+04PeyAyDSx0YrTWj6SxmaYFeMTCoWPJAldpiMpBcCYAqC34IkeE+hc3a0INeI7QSuVyiFKakIjKiKDUqGYdEpiKhYDKISMqJYuumdoIpFZVyFa3wgsweCAtGe014jlrv6GPOJOR4m39FN2BdnVaQYs9kYQQ0TZlgqTLWjPzOaAII4SwCOidL8J9KANZUKgbpfIkTCQsCEztOFpT7ZZKOBRcgD/vaNLXsag0Uy7lZbGhJlcN13k0+7TKKivo9DAK2he6wGL6acNT8UzNQqe2CeE2r01IgwnAFEW/HqzTvVSFEw2sR7Aw8riOVNeLnPea6dv0E0kyn+CXM9rMNPA210AE03lU6mfXcsDanQ9/FWOo5DGepE94i/DY7LyxwS6FKgjtapPtN+gBhYiKd0ERYWfCvFC/Xa90NBKTAnSYWg1QfMrDpH3B8yKw3EcJpCFIlI23dXX2Y0JDkXEHDAM1a8oGsSY+JnkHe2QMLaIwkECw/Xaz0l5VZZSTd6yhnKe3GeDpoM52ezpXWVjVn5re/7mdzfzq/+ef7dDybTuZjISWEkEPOl14V+zXtPNGGsy/F5FpAlh/faR+tO8CJ5hwh+6j/BQYlPqk4PavnxlvdbHXmdlM1NVz23iKBfQFSITfnXGhONj8UqcJDzYEOZsZXJGEQXXdyTfmaaq3Nln+wB++ccQd7rWPbM3ZFF4dP1X3G7SNmQ2PWnSN4yoFnDtaP2i0PtI2d9vhhm+En7N+vNflTl5xna8xeRIa7Ned4e2ru4h1K7nyn5Owd+MS7JVzEMXv0ghb3+wMErXXJ0mhmbuxwyXsXdodavsbuBTaZGrm25dW5tdgp3OKPu7+XW8/emW3men+MXBhWP2+Li3j1F4I7fQE= \ No newline at end of file diff --git a/dependency-injection/pom.xml b/dependency-injection/pom.xml new file mode 100644 index 0000000000..46f57e512e --- /dev/null +++ b/dependency-injection/pom.xml @@ -0,0 +1,81 @@ + + + 4.0.0 + + com.baeldung + dependency-injection + 0.0.1-SNAPSHOT + war + + @Resource vs @Inject vs @Autowired + Accompanying the demonstration of the use of the annotations related to injection mechanisms, namely @Resource, @Inject, and @Autowired + + + + junit + junit + 4.11 + test + + + org.mockito + mockito-all + 1.10.19 + + + org.springframework + spring-test + 4.2.6.RELEASE + + + org.springframework + spring-core + 4.2.6.RELEASE + + + org.springframework + spring-beans + 4.2.6.RELEASE + + + org.springframework + spring-context + 4.2.6.RELEASE + + + javax.inject + javax.inject + 1 + + + + + + + maven-compiler-plugin + + 1.6 + 1.6 + + + + org.apache.maven.plugins + maven-surefire-plugin + + + **/*Demo.java + + + + + + + + + java.net + https://maven.java.net/content/repositories/releases/ + + + diff --git a/dependency-injection/src/test/java/com/baeldung/autowired/FieldAutowiredDemo.java b/dependency-injection/src/test/java/com/baeldung/autowired/FieldAutowiredDemo.java new file mode 100644 index 0000000000..c71365097f --- /dev/null +++ b/dependency-injection/src/test/java/com/baeldung/autowired/FieldAutowiredDemo.java @@ -0,0 +1,27 @@ +package com.baeldung.autowired; + +import static org.junit.Assert.assertEquals; +import static org.junit.Assert.assertNotNull; + +import org.junit.Test; +import org.junit.runner.RunWith; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.test.context.ContextConfiguration; +import org.springframework.test.context.junit4.SpringJUnit4ClassRunner; + +import com.baeldung.dependency.ArbitraryDependency; + +@RunWith(SpringJUnit4ClassRunner.class) +@ContextConfiguration(locations={ + "/applicationContextTest-@Autowired-Type.xml"}) +public class FieldAutowiredDemo { + + @Autowired + private ArbitraryDependency fieldDependency; + + @Test + public void fieldDependency_MUST_BE_AUTOWIRED_Correctly() { + assertNotNull(fieldDependency); + assertEquals("Arbitrary Dependency", fieldDependency.toString()); + } +} diff --git a/dependency-injection/src/test/java/com/baeldung/autowired/FieldAutowiredNameDemo.java b/dependency-injection/src/test/java/com/baeldung/autowired/FieldAutowiredNameDemo.java new file mode 100644 index 0000000000..c11ed5286a --- /dev/null +++ b/dependency-injection/src/test/java/com/baeldung/autowired/FieldAutowiredNameDemo.java @@ -0,0 +1,27 @@ +package com.baeldung.autowired; + +import static org.junit.Assert.assertEquals; +import static org.junit.Assert.assertNotNull; + +import org.junit.Test; +import org.junit.runner.RunWith; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.test.context.ContextConfiguration; +import org.springframework.test.context.junit4.SpringJUnit4ClassRunner; + +import com.baeldung.dependency.ArbitraryDependency; + +@RunWith(SpringJUnit4ClassRunner.class) +@ContextConfiguration(locations={ + "/applicationContextTest-@Autowired-Name.xml"}) +public class FieldAutowiredNameDemo { + + @Autowired + private ArbitraryDependency autowiredFieldDependency; + + @Test + public void autowiredFieldDependency_MUST_BE_AUTOWIRED_Correctly() { + assertNotNull(autowiredFieldDependency); + assertEquals("Arbitrary Dependency", autowiredFieldDependency.toString()); + } +} diff --git a/dependency-injection/src/test/java/com/baeldung/autowired/FieldQualifierAutowiredDemo.java b/dependency-injection/src/test/java/com/baeldung/autowired/FieldQualifierAutowiredDemo.java new file mode 100644 index 0000000000..5afce6ab6a --- /dev/null +++ b/dependency-injection/src/test/java/com/baeldung/autowired/FieldQualifierAutowiredDemo.java @@ -0,0 +1,39 @@ +package com.baeldung.autowired; + +import static org.junit.Assert.assertEquals; +import static org.junit.Assert.assertNotNull; + +import org.junit.Test; +import org.junit.runner.RunWith; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.beans.factory.annotation.Qualifier; +import org.springframework.test.context.ContextConfiguration; +import org.springframework.test.context.junit4.SpringJUnit4ClassRunner; + +import com.baeldung.dependency.ArbitraryDependency; + +@RunWith(SpringJUnit4ClassRunner.class) +@ContextConfiguration(locations={ + "/applicationContextTest-@Autowired-Qualifier.xml"}) +public class FieldQualifierAutowiredDemo { + + @Autowired + @Qualifier("autowiredFieldDependency") + private ArbitraryDependency fieldDependency1; + + @Autowired + @Qualifier("anotherAutowiredFieldDependency") + private ArbitraryDependency fieldDependency2; + + @Test + public void fieldDependency1_MUST_BE_AUTOWIRED_Correctly() { + assertNotNull(fieldDependency1); + assertEquals("Arbitrary Dependency", fieldDependency1.toString()); + } + + @Test + public void fieldDependency2_MUST_BE_AUTOWIRED_Correctly() { + assertNotNull(fieldDependency2); + assertEquals("Another Arbitrary Dependency", fieldDependency2.toString()); + } +} diff --git a/dependency-injection/src/test/java/com/baeldung/dependency/AnotherArbitraryDependency.java b/dependency-injection/src/test/java/com/baeldung/dependency/AnotherArbitraryDependency.java new file mode 100644 index 0000000000..27ba03f6e8 --- /dev/null +++ b/dependency-injection/src/test/java/com/baeldung/dependency/AnotherArbitraryDependency.java @@ -0,0 +1,10 @@ +package com.baeldung.dependency; + +public class AnotherArbitraryDependency extends ArbitraryDependency { + + private final String label = "Another Arbitrary Dependency"; + + public String toString() { + return label; + } +} diff --git a/dependency-injection/src/test/java/com/baeldung/dependency/ArbitraryDependency.java b/dependency-injection/src/test/java/com/baeldung/dependency/ArbitraryDependency.java new file mode 100644 index 0000000000..bab289777c --- /dev/null +++ b/dependency-injection/src/test/java/com/baeldung/dependency/ArbitraryDependency.java @@ -0,0 +1,10 @@ +package com.baeldung.dependency; + +public class ArbitraryDependency { + + private final String label = "Arbitrary Dependency"; + + public String toString() { + return label; + } +} diff --git a/dependency-injection/src/test/java/com/baeldung/dependency/YetAnotherArbitraryDependency.java b/dependency-injection/src/test/java/com/baeldung/dependency/YetAnotherArbitraryDependency.java new file mode 100644 index 0000000000..1f59500ec5 --- /dev/null +++ b/dependency-injection/src/test/java/com/baeldung/dependency/YetAnotherArbitraryDependency.java @@ -0,0 +1,10 @@ +package com.baeldung.dependency; + +public class YetAnotherArbitraryDependency extends ArbitraryDependency { + + private final String label = "Yet Another Arbitrary Dependency"; + + public String toString() { + return label; + } +} diff --git a/dependency-injection/src/test/java/com/baeldung/inject/FieldByNameInjectDemo.java b/dependency-injection/src/test/java/com/baeldung/inject/FieldByNameInjectDemo.java new file mode 100644 index 0000000000..a670ee8313 --- /dev/null +++ b/dependency-injection/src/test/java/com/baeldung/inject/FieldByNameInjectDemo.java @@ -0,0 +1,30 @@ +package com.baeldung.inject; + +import static org.junit.Assert.assertEquals; +import static org.junit.Assert.assertNotNull; + +import javax.inject.Inject; +import javax.inject.Named; + +import org.junit.Test; +import org.junit.runner.RunWith; +import org.springframework.test.context.ContextConfiguration; +import org.springframework.test.context.junit4.SpringJUnit4ClassRunner; + +import com.baeldung.dependency.ArbitraryDependency; + +@RunWith(SpringJUnit4ClassRunner.class) +@ContextConfiguration(locations={ + "/applicationContextTest-@Inject-Name.xml"}) +public class FieldByNameInjectDemo { + + @Inject + @Named("yetAnotherFieldInjectDependency") + private ArbitraryDependency yetAnotherFieldInjectDependency; + + @Test + public void yetAnotherFieldInjectDependency_MUST_BE_INJECTED_Correctly() { + assertNotNull(yetAnotherFieldInjectDependency); + assertEquals("Yet Another Arbitrary Dependency", yetAnotherFieldInjectDependency.toString()); + } +} diff --git a/dependency-injection/src/test/java/com/baeldung/inject/FieldInjectDemo.java b/dependency-injection/src/test/java/com/baeldung/inject/FieldInjectDemo.java new file mode 100644 index 0000000000..df40e516ba --- /dev/null +++ b/dependency-injection/src/test/java/com/baeldung/inject/FieldInjectDemo.java @@ -0,0 +1,27 @@ +package com.baeldung.inject; +import static org.junit.Assert.assertEquals; +import static org.junit.Assert.assertNotNull; + +import javax.inject.Inject; + +import org.junit.Test; +import org.junit.runner.RunWith; +import org.springframework.test.context.ContextConfiguration; +import org.springframework.test.context.junit4.SpringJUnit4ClassRunner; + +import com.baeldung.dependency.ArbitraryDependency; + +@RunWith(SpringJUnit4ClassRunner.class) +@ContextConfiguration(locations={ + "/applicationContextTest-@Inject-Type.xml"}) +public class FieldInjectDemo { + + @Inject + private ArbitraryDependency inject1Dependency; + + @Test + public void fieldDependency_MUST_BE_INJECTED_Successfully() { + assertNotNull(inject1Dependency); + assertEquals("Arbitrary Dependency", inject1Dependency.toString()); + } +} diff --git a/dependency-injection/src/test/java/com/baeldung/inject/FieldQualifierInjectDemo.java b/dependency-injection/src/test/java/com/baeldung/inject/FieldQualifierInjectDemo.java new file mode 100644 index 0000000000..3cc9b643c7 --- /dev/null +++ b/dependency-injection/src/test/java/com/baeldung/inject/FieldQualifierInjectDemo.java @@ -0,0 +1,40 @@ +package com.baeldung.inject; + +import static org.junit.Assert.assertEquals; +import static org.junit.Assert.assertNotNull; + +import javax.inject.Inject; + +import org.junit.Test; +import org.junit.runner.RunWith; +import org.springframework.beans.factory.annotation.Qualifier; +import org.springframework.test.context.ContextConfiguration; +import org.springframework.test.context.junit4.SpringJUnit4ClassRunner; + +import com.baeldung.dependency.ArbitraryDependency; + +@RunWith(SpringJUnit4ClassRunner.class) +@ContextConfiguration(locations={ + "/applicationContextTest-@Inject-Qualifier.xml"}) +public class FieldQualifierInjectDemo { + + @Inject + @Qualifier("defaultFile") + private ArbitraryDependency defaultDependency; + + @Inject + @Qualifier("namedFile") + private ArbitraryDependency namedDependency; + + @Test + public void defaultDependency_MUST_BE_INJECTED_Successfully() { + assertNotNull(defaultDependency); + assertEquals("Arbitrary Dependency", defaultDependency.toString()); + } + + @Test + public void namedDependency_MUST_BE_INJECTED_Correctly() { + assertNotNull(defaultDependency); + assertEquals("Another Arbitrary Dependency", namedDependency.toString()); + } +} diff --git a/dependency-injection/src/test/java/com/baeldung/resource/FieldResourceInjectionDemo.java b/dependency-injection/src/test/java/com/baeldung/resource/FieldResourceInjectionDemo.java new file mode 100644 index 0000000000..fbb378d672 --- /dev/null +++ b/dependency-injection/src/test/java/com/baeldung/resource/FieldResourceInjectionDemo.java @@ -0,0 +1,25 @@ +package com.baeldung.resource; +import static org.junit.Assert.assertNotNull; + +import java.io.File; + +import javax.annotation.Resource; + +import org.junit.Test; +import org.junit.runner.RunWith; +import org.springframework.test.context.ContextConfiguration; +import org.springframework.test.context.junit4.SpringJUnit4ClassRunner; + +@RunWith(SpringJUnit4ClassRunner.class) +@ContextConfiguration(locations={ + "/applicationContextTest-@Resource-NameType.xml"}) +public class FieldResourceInjectionDemo { + + @Resource(name="namedFile") + private File defaultFile; + + @Test + public void plainResourceAnnotation_MUST_FIND_DefaultFile() { + assertNotNull(defaultFile); + } +} diff --git a/dependency-injection/src/test/java/com/baeldung/resource/MethodByQualifierResourceDemo.java b/dependency-injection/src/test/java/com/baeldung/resource/MethodByQualifierResourceDemo.java new file mode 100644 index 0000000000..fcca34dc2f --- /dev/null +++ b/dependency-injection/src/test/java/com/baeldung/resource/MethodByQualifierResourceDemo.java @@ -0,0 +1,43 @@ +package com.baeldung.resource; + +import static org.junit.Assert.assertEquals; +import static org.junit.Assert.assertNotNull; + +import java.io.File; + +import javax.annotation.Resource; + +import org.junit.Test; +import org.junit.runner.RunWith; +import org.springframework.beans.factory.annotation.Qualifier; +import org.springframework.test.context.ContextConfiguration; +import org.springframework.test.context.junit4.SpringJUnit4ClassRunner; + +@RunWith(SpringJUnit4ClassRunner.class) +@ContextConfiguration(locations={ + "/applicationContextTest-@Resource-Qualifier.xml"}) +public class MethodByQualifierResourceDemo { + + private File arbDependency; + private File anotherArbDependency; + + @Test + public void dependencies_MUST_BE_INJECTED_Correctly() { + assertNotNull(arbDependency); + assertEquals("namedFile.txt", arbDependency.getName()); + assertNotNull(anotherArbDependency); + assertEquals("defaultFile.txt", anotherArbDependency.getName()); + } + + @Resource + @Qualifier("namedFile") + public void setArbDependency(File arbDependency) { + this.arbDependency = arbDependency; + } + + @Resource + @Qualifier("defaultFile") + public void setAnotherArbDependency(File anotherArbDependency) { + this.anotherArbDependency = anotherArbDependency; + } +} diff --git a/dependency-injection/src/test/java/com/baeldung/resource/MethodByTypeResourceDemo.java b/dependency-injection/src/test/java/com/baeldung/resource/MethodByTypeResourceDemo.java new file mode 100644 index 0000000000..af6a805bd9 --- /dev/null +++ b/dependency-injection/src/test/java/com/baeldung/resource/MethodByTypeResourceDemo.java @@ -0,0 +1,30 @@ +package com.baeldung.resource; + +import static org.junit.Assert.assertNotNull; + +import java.io.File; + +import javax.annotation.Resource; + +import org.junit.Test; +import org.junit.runner.RunWith; +import org.springframework.test.context.ContextConfiguration; +import org.springframework.test.context.junit4.SpringJUnit4ClassRunner; + +@RunWith(SpringJUnit4ClassRunner.class) +@ContextConfiguration(locations={ + "/applicationContextTest-@Resource-NameType.xml"}) +public class MethodByTypeResourceDemo { + + private File defaultFile; + + @Resource + protected void setDefaultFile(File defaultFile) { + this.defaultFile = defaultFile; + } + + @Test + public void defaultFile_MUST_BE_INJECTED_Correctly() { + assertNotNull(defaultFile); + } +} diff --git a/dependency-injection/src/test/java/com/baeldung/resource/MethodResourceInjectionDemo.java b/dependency-injection/src/test/java/com/baeldung/resource/MethodResourceInjectionDemo.java new file mode 100644 index 0000000000..d746fd4d85 --- /dev/null +++ b/dependency-injection/src/test/java/com/baeldung/resource/MethodResourceInjectionDemo.java @@ -0,0 +1,29 @@ +package com.baeldung.resource; +import static org.junit.Assert.assertNotNull; + +import java.io.File; + +import javax.annotation.Resource; + +import org.junit.Test; +import org.junit.runner.RunWith; +import org.springframework.test.context.ContextConfiguration; +import org.springframework.test.context.junit4.SpringJUnit4ClassRunner; + +@RunWith(SpringJUnit4ClassRunner.class) +@ContextConfiguration(locations={ + "/applicationContextTest-@Resource-NameType.xml"}) +public class MethodResourceInjectionDemo { + + private File defaultFile; + + @Resource(name="namedFile") + protected void setDefaultFile(File defaultFile) { + this.defaultFile = defaultFile; + } + + @Test + public void defaultFile_MUST_BE_INJECTED_Correctly() { + assertNotNull(defaultFile); + } +} diff --git a/dependency-injection/src/test/java/com/baeldung/resource/NamedResourceTest.java b/dependency-injection/src/test/java/com/baeldung/resource/NamedResourceTest.java new file mode 100644 index 0000000000..8b218dfe98 --- /dev/null +++ b/dependency-injection/src/test/java/com/baeldung/resource/NamedResourceTest.java @@ -0,0 +1,27 @@ +package com.baeldung.resource; +import static org.junit.Assert.assertNotNull; +import static org.junit.Assert.assertTrue; + +import java.io.File; + +import javax.annotation.Resource; + +import org.junit.Test; +import org.junit.runner.RunWith; +import org.springframework.test.context.ContextConfiguration; +import org.springframework.test.context.junit4.SpringJUnit4ClassRunner; + +@RunWith(SpringJUnit4ClassRunner.class) +@ContextConfiguration(locations={ + "/applicationContextTest-@Resource-NameType.xml"}) +public class NamedResourceTest { + + @Resource(name="namedFile") + private File testFile; + + @Test + public void namedResource_MUST_FIND_SPECIFIED_File() { + assertNotNull(testFile); + assertTrue(testFile.getName().equals("namedFile.txt")); + } +} diff --git a/dependency-injection/src/test/java/com/baeldung/resource/QualifierResourceInjectionDemo.java b/dependency-injection/src/test/java/com/baeldung/resource/QualifierResourceInjectionDemo.java new file mode 100644 index 0000000000..0aaa2085d5 --- /dev/null +++ b/dependency-injection/src/test/java/com/baeldung/resource/QualifierResourceInjectionDemo.java @@ -0,0 +1,35 @@ +package com.baeldung.resource; +import static org.junit.Assert.assertNotNull; + +import java.io.File; + +import javax.annotation.Resource; + +import org.junit.Test; +import org.junit.runner.RunWith; +import org.springframework.beans.factory.annotation.Qualifier; +import org.springframework.test.context.ContextConfiguration; +import org.springframework.test.context.junit4.SpringJUnit4ClassRunner; + +@RunWith(SpringJUnit4ClassRunner.class) +@ContextConfiguration(locations={ + "/applicationContextTest-@Resource-Qualifier.xml"}) +public class QualifierResourceInjectionDemo { + + @Resource + private File defaultFile; + + @Resource + @Qualifier("namedFile") + private File namedFile; + + @Test + public void defaultFile_MUST_BE_Valid() { + assertNotNull(defaultFile); + } + + @Test + public void namedFile_MUST_BE_Valid() { + assertNotNull(namedFile); + } +} diff --git a/dependency-injection/src/test/java/com/baeldung/resource/SetterResourceInjectionDemo.java b/dependency-injection/src/test/java/com/baeldung/resource/SetterResourceInjectionDemo.java new file mode 100644 index 0000000000..25dd5bb9ff --- /dev/null +++ b/dependency-injection/src/test/java/com/baeldung/resource/SetterResourceInjectionDemo.java @@ -0,0 +1,29 @@ +package com.baeldung.resource; +import static org.junit.Assert.assertNotNull; + +import java.io.File; + +import javax.annotation.Resource; + +import org.junit.Test; +import org.junit.runner.RunWith; +import org.springframework.test.context.ContextConfiguration; +import org.springframework.test.context.junit4.SpringJUnit4ClassRunner; + +@RunWith(SpringJUnit4ClassRunner.class) +@ContextConfiguration(locations={ + "/applicationContextTest-@Resource-NameType.xml"}) +public class SetterResourceInjectionDemo { + + private File defaultFile; + + @Resource + protected void setDefaultFile(File defaultFile) { + this.defaultFile = defaultFile; + } + + @Test + public void setter_MUST_INJECT_Resource() { + assertNotNull(defaultFile); + } +} diff --git a/dependency-injection/src/test/resources/applicationContextTest-@Autowired-Name.xml b/dependency-injection/src/test/resources/applicationContextTest-@Autowired-Name.xml new file mode 100644 index 0000000000..d7fe3abcb3 --- /dev/null +++ b/dependency-injection/src/test/resources/applicationContextTest-@Autowired-Name.xml @@ -0,0 +1,12 @@ + + + + + + diff --git a/dependency-injection/src/test/resources/applicationContextTest-@Autowired-Qualifier.xml b/dependency-injection/src/test/resources/applicationContextTest-@Autowired-Qualifier.xml new file mode 100644 index 0000000000..d7fe3abcb3 --- /dev/null +++ b/dependency-injection/src/test/resources/applicationContextTest-@Autowired-Qualifier.xml @@ -0,0 +1,12 @@ + + + + + + diff --git a/dependency-injection/src/test/resources/applicationContextTest-@Autowired-Type.xml b/dependency-injection/src/test/resources/applicationContextTest-@Autowired-Type.xml new file mode 100644 index 0000000000..c65b85ccf4 --- /dev/null +++ b/dependency-injection/src/test/resources/applicationContextTest-@Autowired-Type.xml @@ -0,0 +1,10 @@ + + + + diff --git a/dependency-injection/src/test/resources/applicationContextTest-@Inject-Name.xml b/dependency-injection/src/test/resources/applicationContextTest-@Inject-Name.xml new file mode 100644 index 0000000000..610e8687a7 --- /dev/null +++ b/dependency-injection/src/test/resources/applicationContextTest-@Inject-Name.xml @@ -0,0 +1,11 @@ + + + + + diff --git a/dependency-injection/src/test/resources/applicationContextTest-@Inject-Qualifier.xml b/dependency-injection/src/test/resources/applicationContextTest-@Inject-Qualifier.xml new file mode 100644 index 0000000000..627ec37914 --- /dev/null +++ b/dependency-injection/src/test/resources/applicationContextTest-@Inject-Qualifier.xml @@ -0,0 +1,12 @@ + + + + + + diff --git a/dependency-injection/src/test/resources/applicationContextTest-@Inject-Type.xml b/dependency-injection/src/test/resources/applicationContextTest-@Inject-Type.xml new file mode 100644 index 0000000000..405164e603 --- /dev/null +++ b/dependency-injection/src/test/resources/applicationContextTest-@Inject-Type.xml @@ -0,0 +1,10 @@ + + + + diff --git a/dependency-injection/src/test/resources/applicationContextTest-@Resource-NameType.xml b/dependency-injection/src/test/resources/applicationContextTest-@Resource-NameType.xml new file mode 100644 index 0000000000..82cbe97157 --- /dev/null +++ b/dependency-injection/src/test/resources/applicationContextTest-@Resource-NameType.xml @@ -0,0 +1,12 @@ + + + + + + diff --git a/dependency-injection/src/test/resources/applicationContextTest-@Resource-Qualifier.xml b/dependency-injection/src/test/resources/applicationContextTest-@Resource-Qualifier.xml new file mode 100644 index 0000000000..1680a6f66a --- /dev/null +++ b/dependency-injection/src/test/resources/applicationContextTest-@Resource-Qualifier.xml @@ -0,0 +1,16 @@ + + + + + + + + + + From 8d6526c62ed8e9386c1354929100b7466430f231 Mon Sep 17 00:00:00 2001 From: Alex Theedom Date: Thu, 9 Jun 2016 22:25:41 +0100 Subject: [PATCH 032/108] Some minor changes to code logic and style --- core-java/pom.xml | 4 +- .../main/java/com/baeldung/enums/Pizza.java | 71 +++++++++---------- .../PizzaDeliverySystemConfiguration.java | 7 +- .../org/baeldung/java/enums/PizzaTest.java | 36 +++++----- 4 files changed, 56 insertions(+), 62 deletions(-) diff --git a/core-java/pom.xml b/core-java/pom.xml index 39cb79a86a..cb194a6d9f 100644 --- a/core-java/pom.xml +++ b/core-java/pom.xml @@ -126,8 +126,8 @@ maven-compiler-plugin ${maven-compiler-plugin.version} - 1.7 - 1.7 + 1.8 + 1.8 diff --git a/core-java/src/main/java/com/baeldung/enums/Pizza.java b/core-java/src/main/java/com/baeldung/enums/Pizza.java index b1c90b42cf..7742781081 100644 --- a/core-java/src/main/java/com/baeldung/enums/Pizza.java +++ b/core-java/src/main/java/com/baeldung/enums/Pizza.java @@ -3,37 +3,36 @@ package com.baeldung.enums; import com.fasterxml.jackson.annotation.JsonFormat; import com.fasterxml.jackson.annotation.JsonProperty; import com.fasterxml.jackson.databind.ObjectMapper; -import org.apache.commons.collections15.CollectionUtils; import org.apache.commons.collections15.Predicate; import java.io.IOException; -import java.util.ArrayList; import java.util.EnumMap; import java.util.EnumSet; import java.util.List; +import java.util.stream.Collectors; public class Pizza { - private static EnumSet undeliveredPizzaStatuses = - EnumSet.of(PizzaStatusEnum.ORDERED, PizzaStatusEnum.READY); + private static EnumSet undeliveredPizzaStatuses = + EnumSet.of(PizzaStatus.ORDERED, PizzaStatus.READY); - private PizzaStatusEnum status; + private PizzaStatus status; @JsonFormat(shape = JsonFormat.Shape.OBJECT) - public enum PizzaStatusEnum { - ORDERED (5){ + public enum PizzaStatus { + ORDERED(5) { @Override public boolean isOrdered() { return true; } }, - READY (2){ + READY(2) { @Override public boolean isReady() { return true; } }, - DELIVERED (0){ + DELIVERED(0) { @Override public boolean isDelivered() { return true; @@ -42,26 +41,33 @@ public class Pizza { private int timeToDelivery; - public boolean isOrdered() {return false;} + public boolean isOrdered() { + return false; + } - public boolean isReady() {return false;} + public boolean isReady() { + return false; + } + + public boolean isDelivered() { + return false; + } - public boolean isDelivered(){return false;} @JsonProperty("timeToDelivery") public int getTimeToDelivery() { return timeToDelivery; } - private PizzaStatusEnum (int timeToDelivery) { + PizzaStatus(int timeToDelivery) { this.timeToDelivery = timeToDelivery; } } - public PizzaStatusEnum getStatus() { + public PizzaStatus getStatus() { return status; } - public void setStatus(PizzaStatusEnum status) { + public void setStatus(PizzaStatus status) { this.status = status; } @@ -73,32 +79,23 @@ public class Pizza { System.out.println("Time to delivery is " + this.getStatus().getTimeToDelivery() + " days"); } - public static List getAllUndeliveredPizza(List input) { - List undelivered = input; - CollectionUtils.filter(undelivered, thatAreNotDelivered()); - return undelivered; + public static List getAllUndeliveredPizzas(List input) { + return input.stream().filter( + (s) -> undeliveredPizzaStatuses.contains(s.getStatus())) + .collect(Collectors.toList()); } - public static EnumMap> groupPizzaByStatus(List pizzaList) { - EnumMap> pzByStatus = new EnumMap>(PizzaStatusEnum.class); - for (Pizza pz : pizzaList) { - PizzaStatusEnum status = pz.getStatus(); - - if (pzByStatus.containsKey(status)) { - pzByStatus.get(status).add(pz); - } else { - List newPzList = new ArrayList(); - newPzList.add(pz); - pzByStatus.put(status, newPzList); - } - } - return pzByStatus; + public static EnumMap> + groupPizzaByStatus(List pzList) { + return pzList.stream().collect( + Collectors.groupingBy(Pizza::getStatus, + () -> new EnumMap<>(PizzaStatus.class), Collectors.toList())); } public void deliver() { if (isDeliverable()) { PizzaDeliverySystemConfiguration.getInstance().getDeliveryStrategy().deliver(this); - this.setStatus(PizzaStatusEnum.DELIVERED); + this.setStatus(PizzaStatus.DELIVERED); } } @@ -108,10 +105,6 @@ public class Pizza { } private static Predicate thatAreNotDelivered() { - return new Predicate() { - public boolean evaluate(Pizza entry) { - return undeliveredPizzaStatuses.contains(entry.getStatus()); - } - }; + return entry -> undeliveredPizzaStatuses.contains(entry.getStatus()); } } \ No newline at end of file diff --git a/core-java/src/main/java/com/baeldung/enums/PizzaDeliverySystemConfiguration.java b/core-java/src/main/java/com/baeldung/enums/PizzaDeliverySystemConfiguration.java index 9210945783..a276b3c000 100644 --- a/core-java/src/main/java/com/baeldung/enums/PizzaDeliverySystemConfiguration.java +++ b/core-java/src/main/java/com/baeldung/enums/PizzaDeliverySystemConfiguration.java @@ -1,9 +1,10 @@ package com.baeldung.enums; public enum PizzaDeliverySystemConfiguration { - INSTANCE ; - private PizzaDeliverySystemConfiguration() { - //Do the configuration initialization which + INSTANCE; + + PizzaDeliverySystemConfiguration() { + // Do the configuration initialization which // involves overriding defaults like delivery strategy } diff --git a/core-java/src/test/java/org/baeldung/java/enums/PizzaTest.java b/core-java/src/test/java/org/baeldung/java/enums/PizzaTest.java index 9f6a8feae5..a6814ee600 100644 --- a/core-java/src/test/java/org/baeldung/java/enums/PizzaTest.java +++ b/core-java/src/test/java/org/baeldung/java/enums/PizzaTest.java @@ -15,66 +15,66 @@ public class PizzaTest { @Test public void givenPizaOrder_whenReady_thenDeliverable() { Pizza testPz = new Pizza(); - testPz.setStatus(Pizza.PizzaStatusEnum.READY); + testPz.setStatus(Pizza.PizzaStatus.READY); assertTrue(testPz.isDeliverable()); } @Test public void givenPizaOrders_whenRetrievingUnDeliveredPzs_thenCorrectlyRetrieved() { - List pzList = new ArrayList(); + List pzList = new ArrayList<>(); Pizza pz1 = new Pizza(); - pz1.setStatus(Pizza.PizzaStatusEnum.DELIVERED); + pz1.setStatus(Pizza.PizzaStatus.DELIVERED); Pizza pz2 = new Pizza(); - pz2.setStatus(Pizza.PizzaStatusEnum.ORDERED); + pz2.setStatus(Pizza.PizzaStatus.ORDERED); Pizza pz3 = new Pizza(); - pz3.setStatus(Pizza.PizzaStatusEnum.ORDERED); + pz3.setStatus(Pizza.PizzaStatus.ORDERED); Pizza pz4 = new Pizza(); - pz4.setStatus(Pizza.PizzaStatusEnum.READY); + pz4.setStatus(Pizza.PizzaStatus.READY); pzList.add(pz1); pzList.add(pz2); pzList.add(pz3); pzList.add(pz4); - List undeliveredPzs = Pizza.getAllUndeliveredPizza(pzList); + List undeliveredPzs = Pizza.getAllUndeliveredPizzas(pzList); assertTrue(undeliveredPzs.size() == 3); } @Test public void givenPizaOrders_whenGroupByStatusCalled_thenCorrectlyGrouped() { - List pzList = new ArrayList(); + List pzList = new ArrayList<>(); Pizza pz1 = new Pizza(); - pz1.setStatus(Pizza.PizzaStatusEnum.DELIVERED); + pz1.setStatus(Pizza.PizzaStatus.DELIVERED); Pizza pz2 = new Pizza(); - pz2.setStatus(Pizza.PizzaStatusEnum.ORDERED); + pz2.setStatus(Pizza.PizzaStatus.ORDERED); Pizza pz3 = new Pizza(); - pz3.setStatus(Pizza.PizzaStatusEnum.ORDERED); + pz3.setStatus(Pizza.PizzaStatus.ORDERED); Pizza pz4 = new Pizza(); - pz4.setStatus(Pizza.PizzaStatusEnum.READY); + pz4.setStatus(Pizza.PizzaStatus.READY); pzList.add(pz1); pzList.add(pz2); pzList.add(pz3); pzList.add(pz4); - EnumMap> map = Pizza.groupPizzaByStatus(pzList); - assertTrue(map.get(Pizza.PizzaStatusEnum.DELIVERED).size() == 1); - assertTrue(map.get(Pizza.PizzaStatusEnum.ORDERED).size() == 2); - assertTrue(map.get(Pizza.PizzaStatusEnum.READY).size() == 1); + EnumMap> map = Pizza.groupPizzaByStatus(pzList); + assertTrue(map.get(Pizza.PizzaStatus.DELIVERED).size() == 1); + assertTrue(map.get(Pizza.PizzaStatus.ORDERED).size() == 2); + assertTrue(map.get(Pizza.PizzaStatus.READY).size() == 1); } @Test public void givenPizaOrder_whenDelivered_thenPizzaGetsDeliveredAndStatusChanges() { Pizza pz = new Pizza(); - pz.setStatus(Pizza.PizzaStatusEnum.READY); + pz.setStatus(Pizza.PizzaStatus.READY); pz.deliver(); - assertTrue(pz.getStatus() == Pizza.PizzaStatusEnum.DELIVERED); + assertTrue(pz.getStatus() == Pizza.PizzaStatus.DELIVERED); } } From 9835081ad303155befefbd441eb86a34132ad521 Mon Sep 17 00:00:00 2001 From: alexVengrovsk Date: Thu, 9 Jun 2016 23:31:30 +0300 Subject: [PATCH 033/108] Code for the article "Java 8 Stream API Tutorial" alextrentton@gmail.com Signed-off-by: --- .../java/com/baeldung/streamApi/Product.java | 51 ++++ .../baeldung/java8/Java8StreamApiTest.java | 269 ++++++++++++++++++ 2 files changed, 320 insertions(+) create mode 100644 core-java-8/src/main/java/com/baeldung/streamApi/Product.java create mode 100644 core-java-8/src/test/java/com/baeldung/java8/Java8StreamApiTest.java diff --git a/core-java-8/src/main/java/com/baeldung/streamApi/Product.java b/core-java-8/src/main/java/com/baeldung/streamApi/Product.java new file mode 100644 index 0000000000..18f3a61904 --- /dev/null +++ b/core-java-8/src/main/java/com/baeldung/streamApi/Product.java @@ -0,0 +1,51 @@ +package com.baeldung.streamApi; + +import java.util.List; +import java.util.Optional; +import java.util.stream.IntStream; +import java.util.stream.Stream; + +/** + * Created by Alex Vengr + */ +public class Product { + + private int price; + + private String name; + + private boolean utilize; + + public Product(int price, String name) { + this(price); + this.name = name; + } + + public Product(int price) { + this.price = price; + } + + public Product() { + } + + public int getPrice() { + return price; + } + + public void setPrice(int price) { + this.price = price; + } + + public String getName() { + return name; + } + + public void setName(String name) { + this.name = name; + } + + + public static Stream streamOf(List list) { + return (list == null || list.isEmpty()) ? Stream.empty() : list.stream(); + } +} diff --git a/core-java-8/src/test/java/com/baeldung/java8/Java8StreamApiTest.java b/core-java-8/src/test/java/com/baeldung/java8/Java8StreamApiTest.java new file mode 100644 index 0000000000..a436b3e93f --- /dev/null +++ b/core-java-8/src/test/java/com/baeldung/java8/Java8StreamApiTest.java @@ -0,0 +1,269 @@ +package com.baeldung.java8; + +import com.baeldung.streamApi.Product; +import org.junit.Before; +import org.junit.BeforeClass; +import org.junit.Test; +import org.mockito.Mock; +import org.mockito.Mockito; + +import java.io.BufferedWriter; +import java.io.File; +import java.io.IOException; +import java.nio.charset.Charset; +import java.nio.file.Files; +import java.nio.file.Path; +import java.nio.file.Paths; +import java.util.*; +import java.util.logging.Logger; +import java.util.regex.Pattern; +import java.util.stream.*; + +import static org.junit.Assert.*; +import static org.mockito.Matchers.anyString; +import static org.mockito.Mockito.mock; + +/** + * Created by Alex Vengr + */ +public class Java8StreamApiTest { + + private long counter; + + private static Logger log = Logger.getAnonymousLogger(); + + private List productList; + + + @Before + public void init() { + productList = Arrays.asList(new Product(23, "potatoes"), + new Product(14, "orange"), new Product(13, "lemon"), + new Product(23, "bread"), new Product(13, "sugar")); + } + + @Test + public void checkPipeline_whenStreamOneElementShorter_thenCorrect() { + + List list = Arrays.asList("abc1", "abc2", "abc3"); + long size = list.stream().skip(1) + .map(element -> element.substring(0, 3)).count(); + assertEquals(list.size() - 1, size); + } + + @Test + public void checkOrder_whenChangeQuantityOfMethodCalls_thenCorrect() { + + List list = Arrays.asList("abc1", "abc2", "abc3"); + + counter = 0; + long sizeFirst = list.stream() + .skip(2).map(element -> { + wasCalled(); + return element.substring(0, 3); + }).count(); + assertEquals( 1, counter); + + counter = 0; + long sizeSecond = list.stream().map(element -> { + wasCalled(); + return element.substring(0, 3); + }).skip(2).count(); + assertEquals( 3, counter); + } + + @Test + public void createEmptyStream_whenEmpty_thenCorrect() { + + Stream streamEmpty = Stream.empty(); + assertEquals(0, streamEmpty.count()); + + List names = Collections.emptyList(); + Stream streamOf = Product.streamOf(names); + assertTrue(streamOf.count() == 0); + } + + @Test + public void createStream_whenCreated_thenCorrect() { + + Collection collection = Arrays.asList("a", "b", "c"); + Stream streamOfCollection = collection.stream(); + assertEquals(3, streamOfCollection.count()); + + Stream streamOfArray = Stream.of("a", "b", "c"); + assertEquals(3, streamOfArray.count()); + + String[] arr = new String[]{"a", "b", "c"}; + Stream streamOfArrayPart = Arrays.stream(arr, 1, 3); + assertEquals(2, streamOfArrayPart.count()); + + IntStream intStream = IntStream.range(1, 3); + LongStream longStream = LongStream.rangeClosed(1, 3); + Random random = new Random(); + DoubleStream doubleStream = random.doubles(3); + assertEquals(2, intStream.count()); + assertEquals(3, longStream.count()); + assertEquals(3, doubleStream.count()); + + IntStream streamOfChars = "abc".chars(); + IntStream str = "".chars(); + assertEquals(3, streamOfChars.count()); + + Stream streamOfString = Pattern.compile(", ").splitAsStream("a, b, c"); + assertEquals("a", streamOfString.findFirst().get()); + + Path path = getPath(); + Stream streamOfStrings = null; + try { + streamOfStrings = Files.lines(path, Charset.forName("UTF-8")); + } catch (IOException e) { + e.printStackTrace(); + } + assertEquals("a", streamOfStrings.findFirst().get()); + + Stream streamBuilder = Stream.builder().add("a").add("b").add("c").build(); + assertEquals(3, streamBuilder.count()); + + Stream streamGenerated = Stream.generate(() -> "element").limit(10); + assertEquals(10, streamGenerated.count()); + + Stream streamIterated = Stream.iterate(40, n -> n + 2).limit(20); + assertTrue(40 <= streamIterated.findAny().get()); + } + + @Test + public void runStreamPipeline_whenOrderIsRight_thenCorrect() { + + List list = Arrays.asList("abc1", "abc2", "abc3"); + Optional stream = list.stream() + .filter(element -> { + log.info("filter() was called"); + return element.contains("2"); + }).map(element -> { + log.info("map() was called"); + return element.toUpperCase(); + }).findFirst(); + } + + @Test + public void reduce_whenExpected_thenCorrect() { + + OptionalInt reduced = IntStream.range(1, 4).reduce((a, b) -> a + b); + assertEquals(6, reduced.getAsInt()); + + int reducedTwoParams = IntStream.range(1, 4).reduce(10, (a, b) -> a + b); + assertEquals(16, reducedTwoParams); + + int reducedThreeParams = Stream.of(1, 2, 3) + .reduce(10, (a, b) -> a + b, (a, b) -> { + log.info("combiner was called"); + return a + b; + }); + assertEquals(16, reducedThreeParams); + + int reducedThreeParamsParallel = Arrays.asList(1, 2, 3).parallelStream() + .reduce(10, (a, b) -> a + b, (a, b) -> { + log.info("combiner was called"); + return a + b; + }); + assertEquals(36, reducedThreeParamsParallel); + } + + @Test + public void collecting_whenAsExpected_thenCorrect() { + + List collectorCollection = productList.stream() + .map(Product::getName).collect(Collectors.toList()); + + assertTrue(collectorCollection instanceof List); + assertEquals(5, collectorCollection.size()); + + String listToString = productList.stream().map(Product::getName) + .collect(Collectors.joining(", ", "[", "]")); + + assertTrue(listToString.contains(",") && listToString.contains("[") && listToString.contains("]")); + + double averagePrice = productList.stream().collect(Collectors.averagingInt(Product::getPrice)); + assertTrue(17.2 == averagePrice); + + int summingPrice = productList.stream().collect(Collectors.summingInt(Product::getPrice)); + assertEquals(86, summingPrice); + + IntSummaryStatistics statistics = productList.stream() + .collect(Collectors.summarizingInt(Product::getPrice)); + assertEquals(23, statistics.getMax()); + + Map> collectorMapOfLists = productList.stream() + .collect(Collectors.groupingBy(Product::getPrice)); + assertEquals(3, collectorMapOfLists.keySet().size()); + + Map> mapPartioned = productList.stream() + .collect(Collectors.partitioningBy(element -> element.getPrice() > 15)); + assertEquals(2, mapPartioned.keySet().size()); + + } + + @Test(expected = UnsupportedOperationException.class) + public void collect_whenThrows_thenCorrect() { + Set unmodifiableSet = productList.stream() + .collect(Collectors.collectingAndThen(Collectors.toSet(), + Collections::unmodifiableSet)); + unmodifiableSet.add(new Product(4, "tea")); + } + + @Test + public void customCollector_whenResultContainsAllElementsFrSource_thenCorrect() { + Collector> toLinkedList = + Collector.of(LinkedList::new, LinkedList::add, + (first, second) -> { first.addAll(second); return first; }); + + LinkedList linkedListOfPersons = productList.stream().collect(toLinkedList); + assertTrue(linkedListOfPersons.containsAll(productList)); + } + + @Test + public void parallelStream_whenWorks_thenCorrect() { + Stream streamOfCollection = productList.parallelStream(); + boolean isParallel = streamOfCollection.isParallel(); + boolean haveBigPrice = streamOfCollection.map(product -> product.getPrice() * 12) + .anyMatch(price -> price > 200); + assertTrue(isParallel && haveBigPrice); + } + + @Test + public void parallel_whenIsParallel_thenCorrect() { + IntStream intStreamParallel = + IntStream.range(1, 150).parallel().map(element -> element * 34); + boolean isParallel = intStreamParallel.isParallel(); + assertTrue(isParallel); + } + + @Test + public void parallel_whenIsSequential_thenCorrect() { + IntStream intStreamParallel = + IntStream.range(1, 150).parallel().map(element -> element * 34); + IntStream intStreamSequential = intStreamParallel.sequential(); + boolean isParallel = intStreamParallel.isParallel(); + assertFalse(isParallel); + } + + private Path getPath() { + Path path = null; + try { + path = Files.createTempFile(null, ".txt"); + } catch (IOException e) { + e.printStackTrace(); + } + + try (BufferedWriter writer = Files.newBufferedWriter(path)) { + writer.write("a\nb\nc"); + } catch (IOException e) { + e.printStackTrace(); + } + return path; + } + + private void wasCalled() { + counter++; + } +} From 7ecd7ce02d412a495bc2bd79fece62aa315f7d2f Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Miguel=20Garci=CC=81a=20Lpez?= Date: Sun, 12 Jun 2016 21:28:49 +0200 Subject: [PATCH 034/108] Code and tests for the lombok introduction. --- lombok-intro/pom.xml | 151 ++++++++++++++++++ .../lombok/intro/ApiClientConfiguration.java | 22 +++ .../intro/ContactInformationSupport.java | 17 ++ .../lombok/intro/HasContactInformation.java | 16 ++ .../baeldung/lombok/intro/LoginResult.java | 25 +++ .../java/com/baeldung/lombok/intro/User.java | 43 +++++ .../com/baeldung/lombok/intro/UserEvent.java | 29 ++++ .../intro/ApiClientConfigurationTest.java | 43 +++++ .../lombok/intro/LoginResultTest.java | 59 +++++++ .../com/baeldung/lombok/intro/UserTest.java | 73 +++++++++ pom.xml | 2 + 11 files changed, 480 insertions(+) create mode 100644 lombok-intro/pom.xml create mode 100644 lombok-intro/src/main/java/com/baeldung/lombok/intro/ApiClientConfiguration.java create mode 100644 lombok-intro/src/main/java/com/baeldung/lombok/intro/ContactInformationSupport.java create mode 100644 lombok-intro/src/main/java/com/baeldung/lombok/intro/HasContactInformation.java create mode 100644 lombok-intro/src/main/java/com/baeldung/lombok/intro/LoginResult.java create mode 100644 lombok-intro/src/main/java/com/baeldung/lombok/intro/User.java create mode 100644 lombok-intro/src/main/java/com/baeldung/lombok/intro/UserEvent.java create mode 100644 lombok-intro/src/test/java/com/baeldung/lombok/intro/ApiClientConfigurationTest.java create mode 100644 lombok-intro/src/test/java/com/baeldung/lombok/intro/LoginResultTest.java create mode 100644 lombok-intro/src/test/java/com/baeldung/lombok/intro/UserTest.java diff --git a/lombok-intro/pom.xml b/lombok-intro/pom.xml new file mode 100644 index 0000000000..8204a0ee70 --- /dev/null +++ b/lombok-intro/pom.xml @@ -0,0 +1,151 @@ + + + + 4.0.0 + + lombok-intro + + com.baeldung + lombok-intro + 0.1-SNAPSHOT + + + + + org.projectlombok + lombok + + ${lombok.version} + provided + + + + org.hibernate.javax.persistence + hibernate-jpa-2.1-api + ${hibernate-jpa-2.1-api.version} + + + + + org.slf4j + slf4j-api + ${org.slf4j.version} + + + + ch.qos.logback + logback-core + ${logback.version} + runtime + + + + + + junit + junit + ${junit.version} + test + + + + + + + lombok-intro + + + src/main/resources + true + + + + + + + org.apache.maven.plugins + maven-compiler-plugin + ${maven-compiler-plugin.version} + + ${maven.compiler.source} + ${maven.compiler.target} + + + + + org.apache.maven.plugins + maven-surefire-plugin + ${maven-surefire-plugin.version} + + + + org.projectlombok + lombok-maven-plugin + ${delombok-maven-plugin.version} + + + delombok + generate-sources + + delombok + + + ${project.basedir}/src/main/java + false + + skip + + false + + + + + + + + + + + + UTF-8 + + 1.8 + 1.8 + + + 1.16.8 + + + 1.0.0.Final + + + 1.7.13 + 1.1.3 + + + 4.12 + + + 3.5.1 + 2.19.1 + + + ${lombok.version}.0 + + + diff --git a/lombok-intro/src/main/java/com/baeldung/lombok/intro/ApiClientConfiguration.java b/lombok-intro/src/main/java/com/baeldung/lombok/intro/ApiClientConfiguration.java new file mode 100644 index 0000000000..74cc929d32 --- /dev/null +++ b/lombok-intro/src/main/java/com/baeldung/lombok/intro/ApiClientConfiguration.java @@ -0,0 +1,22 @@ +package com.baeldung.lombok.intro; + +import lombok.Builder; +import lombok.Getter; +import lombok.extern.slf4j.Slf4j; + +@Builder +@Slf4j +@Getter +public class ApiClientConfiguration { + + private String host; + private int port; + private boolean useHttps; + + private long connectTimeout; + private long readTimeout; + + private String username; + private String password; + +} diff --git a/lombok-intro/src/main/java/com/baeldung/lombok/intro/ContactInformationSupport.java b/lombok-intro/src/main/java/com/baeldung/lombok/intro/ContactInformationSupport.java new file mode 100644 index 0000000000..ea9c3d23f5 --- /dev/null +++ b/lombok-intro/src/main/java/com/baeldung/lombok/intro/ContactInformationSupport.java @@ -0,0 +1,17 @@ +package com.baeldung.lombok.intro; + +import lombok.Data; + +@Data +public class ContactInformationSupport implements HasContactInformation { + + private String firstName; + private String lastName; + private String phoneNr; + + @Override + public String getFullName() { + return getFirstName() + " " + getLastName(); + } + +} diff --git a/lombok-intro/src/main/java/com/baeldung/lombok/intro/HasContactInformation.java b/lombok-intro/src/main/java/com/baeldung/lombok/intro/HasContactInformation.java new file mode 100644 index 0000000000..9128df5fb0 --- /dev/null +++ b/lombok-intro/src/main/java/com/baeldung/lombok/intro/HasContactInformation.java @@ -0,0 +1,16 @@ +package com.baeldung.lombok.intro; + +public interface HasContactInformation { + + String getFirstName(); + void setFirstName(String firstName); + + String getFullName(); + + String getLastName(); + void setLastName(String lastName); + + String getPhoneNr(); + void setPhoneNr(String phoneNr); + +} diff --git a/lombok-intro/src/main/java/com/baeldung/lombok/intro/LoginResult.java b/lombok-intro/src/main/java/com/baeldung/lombok/intro/LoginResult.java new file mode 100644 index 0000000000..6e75696612 --- /dev/null +++ b/lombok-intro/src/main/java/com/baeldung/lombok/intro/LoginResult.java @@ -0,0 +1,25 @@ +package com.baeldung.lombok.intro; + +import java.net.URL; +import java.time.Duration; +import java.time.Instant; + +import lombok.EqualsAndHashCode; +import lombok.Getter; +import lombok.NonNull; +import lombok.RequiredArgsConstructor; +import lombok.experimental.Accessors; + +@RequiredArgsConstructor +@Accessors(fluent = true) @Getter +@EqualsAndHashCode(of = {"authToken"}) +public class LoginResult { + + private final @NonNull Instant loginTs; + + private final @NonNull String authToken; + private final @NonNull Duration tokenValidity; + + private final @NonNull URL tokenRefreshUrl; + +} diff --git a/lombok-intro/src/main/java/com/baeldung/lombok/intro/User.java b/lombok-intro/src/main/java/com/baeldung/lombok/intro/User.java new file mode 100644 index 0000000000..d032d1f9e7 --- /dev/null +++ b/lombok-intro/src/main/java/com/baeldung/lombok/intro/User.java @@ -0,0 +1,43 @@ +package com.baeldung.lombok.intro; + +import java.io.Serializable; +import java.util.List; + +import javax.persistence.Entity; +import javax.persistence.Id; +import javax.persistence.OneToMany; + +import lombok.AccessLevel; +import lombok.Getter; +import lombok.NoArgsConstructor; +import lombok.Setter; +import lombok.ToString; +import lombok.experimental.Delegate; + +@Entity +@Getter @Setter @NoArgsConstructor // <--- THIS is it +@ToString(exclude = {"events"}) +public class User implements Serializable, HasContactInformation { + + private @Id @Setter(AccessLevel.PROTECTED) Long id; // will be set when persisting + + private String nickname; + + // Whichever other User-specific attributes + + @Delegate(types = {HasContactInformation.class}) + private final ContactInformationSupport contactInformation = new ContactInformationSupport(); + + // User itelf will implement all contact information by delegation + + @OneToMany(mappedBy = "user") + private List events; + + public User(String nickname, String firstName, String lastName, String phoneNr) { + this.nickname = nickname; + contactInformation.setFirstName(firstName); + contactInformation.setLastName(lastName); + contactInformation.setPhoneNr(phoneNr); + } + +} diff --git a/lombok-intro/src/main/java/com/baeldung/lombok/intro/UserEvent.java b/lombok-intro/src/main/java/com/baeldung/lombok/intro/UserEvent.java new file mode 100644 index 0000000000..6a13608664 --- /dev/null +++ b/lombok-intro/src/main/java/com/baeldung/lombok/intro/UserEvent.java @@ -0,0 +1,29 @@ +package com.baeldung.lombok.intro; + +import java.io.Serializable; + +import javax.persistence.Entity; +import javax.persistence.Id; +import javax.persistence.ManyToOne; + +import lombok.AccessLevel; +import lombok.Getter; +import lombok.NoArgsConstructor; +import lombok.Setter; + +@Entity +@NoArgsConstructor @Getter @Setter +public class UserEvent implements Serializable { + + // This class is just for sample purposes. + + private @Id @Setter(AccessLevel.PROTECTED) Long id; + + @ManyToOne + private User user; + + public UserEvent(User user) { + this.user = user; + } + +} diff --git a/lombok-intro/src/test/java/com/baeldung/lombok/intro/ApiClientConfigurationTest.java b/lombok-intro/src/test/java/com/baeldung/lombok/intro/ApiClientConfigurationTest.java new file mode 100644 index 0000000000..8283fc655e --- /dev/null +++ b/lombok-intro/src/test/java/com/baeldung/lombok/intro/ApiClientConfigurationTest.java @@ -0,0 +1,43 @@ +package com.baeldung.lombok.intro; + +import java.lang.reflect.Field; +import java.lang.reflect.Modifier; + +import com.baeldung.lombok.intro.ApiClientConfiguration.ApiClientConfigurationBuilder; +import org.junit.Assert; +import org.junit.Test; + +public class ApiClientConfigurationTest { + + @Test + public void givenAnnotatedConfiguration_thenCanBeBuiltViaBuilder() { + ApiClientConfiguration config = + new ApiClientConfigurationBuilder() + .host("api.server.com") + .port(443) + .useHttps(true) + .connectTimeout(15_000L) + .readTimeout(5_000L) + .username("myusername") + .password("secret") + .build(); + + Assert.assertEquals(config.getHost(), "api.server.com"); + Assert.assertEquals(config.getPort(), 443); + Assert.assertEquals(config.isUseHttps(), true); + Assert.assertEquals(config.getConnectTimeout(), 15_000L); + Assert.assertEquals(config.getReadTimeout(), 5_000L); + Assert.assertEquals(config.getUsername(), "myusername"); + Assert.assertEquals(config.getPassword(), "secret"); + } + + @Test + public void givenAnnotatedConfiguration_thenHasLoggerInstance() throws NoSuchFieldException { + Field loggerInstance = ApiClientConfiguration.class.getDeclaredField("log"); + int modifiers = loggerInstance.getModifiers(); + Assert.assertTrue(Modifier.isPrivate(modifiers)); + Assert.assertTrue(Modifier.isStatic(modifiers)); + Assert.assertTrue(Modifier.isFinal(modifiers)); + } + +} diff --git a/lombok-intro/src/test/java/com/baeldung/lombok/intro/LoginResultTest.java b/lombok-intro/src/test/java/com/baeldung/lombok/intro/LoginResultTest.java new file mode 100644 index 0000000000..56878e4a03 --- /dev/null +++ b/lombok-intro/src/test/java/com/baeldung/lombok/intro/LoginResultTest.java @@ -0,0 +1,59 @@ +package com.baeldung.lombok.intro; + +import java.net.MalformedURLException; +import java.net.URL; +import java.time.Duration; +import java.time.Instant; + +import org.junit.Assert; +import org.junit.Test; + +public class LoginResultTest { + + @Test + public void givenAnnotatedLoginResult_thenHasConstructorForAllFinalFields() + throws MalformedURLException { + /* LoginResult loginResult = */ new LoginResult( + Instant.now(), + "apitoken", + Duration.ofHours(1), + new URL("https://api.product.com/token-refresh")); + } + + @Test + public void givenAnnotatedLoginResult_thenHasFluentGetters() + throws MalformedURLException { + Instant loginTs = Instant.now(); + LoginResult loginResult = new LoginResult( + loginTs, + "apitoken", + Duration.ofHours(1), + new URL("https://api.product.com/token-refresh")); + + Assert.assertEquals(loginResult.loginTs(), loginTs); + Assert.assertEquals(loginResult.authToken(), "apitoken"); + Assert.assertEquals(loginResult.tokenValidity(), Duration.ofHours(1)); + Assert.assertEquals(loginResult.tokenRefreshUrl(), new URL("https://api.product.com/token-refresh")); + } + + @Test + public void givenAnnotatedLoginResult_whenSameApiToken_thenEqualInstances() + throws MalformedURLException { + String theSameApiToken = "testapitoken"; + + LoginResult loginResult1 = new LoginResult( + Instant.now(), + theSameApiToken, + Duration.ofHours(1), + new URL("https://api.product.com/token-refresh")); + + LoginResult loginResult2 = new LoginResult( + Instant.now(), + theSameApiToken, + Duration.ofHours(2), + new URL("https://api.product.com/token-refresh-alt")); + + Assert.assertEquals(loginResult1, loginResult2); + } + +} diff --git a/lombok-intro/src/test/java/com/baeldung/lombok/intro/UserTest.java b/lombok-intro/src/test/java/com/baeldung/lombok/intro/UserTest.java new file mode 100644 index 0000000000..b3bf21478f --- /dev/null +++ b/lombok-intro/src/test/java/com/baeldung/lombok/intro/UserTest.java @@ -0,0 +1,73 @@ +package com.baeldung.lombok.intro; + +import java.lang.reflect.Method; +import java.lang.reflect.Modifier; +import java.util.Arrays; +import java.util.List; + +import org.junit.Assert; +import org.junit.Test; + +public class UserTest { + + @Test + public void givenAnnotatedUser_thenHasEmptyConstructor() { + /* User user = */ new User(); + } + + @Test + public void givenAnnotatedUser_thenHasGettersAndSetters() { + User user = new User("testnickname", "Test", "JUnit", "123456"); + + Assert.assertEquals("testnickname", user.getNickname()); + Assert.assertEquals("Test", user.getFirstName()); + Assert.assertEquals("JUnit", user.getLastName()); + Assert.assertEquals("123456", user.getPhoneNr()); + + user.setNickname("testnickname2"); + user.setFirstName("Test2"); + user.setLastName("JUnit2"); + user.setPhoneNr("654321"); + + Assert.assertEquals("testnickname2", user.getNickname()); + Assert.assertEquals("Test2", user.getFirstName()); + Assert.assertEquals("JUnit2", user.getLastName()); + Assert.assertEquals("654321", user.getPhoneNr()); + } + + @Test + public void givenAnnotatedUser_thenHasProtectedSetId() throws NoSuchMethodException { + Method setIdMethod = User.class.getDeclaredMethod("setId", Long.class); + int modifiers = setIdMethod.getModifiers(); + Assert.assertTrue(Modifier.isProtected(modifiers)); + } + + @Test + public void givenAnnotatedUser_thenImplementsHasContactInformation() { + User user = new User("testnickname3", "Test3", "JUnit3", "987654"); + Assert.assertTrue(user instanceof HasContactInformation); + + Assert.assertEquals("Test3", user.getFirstName()); + Assert.assertEquals("JUnit3", user.getLastName()); + Assert.assertEquals("987654", user.getPhoneNr()); + Assert.assertEquals("Test3 JUnit3", user.getFullName()); + + user.setFirstName("Test4"); + user.setLastName("JUnit4"); + user.setPhoneNr("456789"); + + Assert.assertEquals("Test4", user.getFirstName()); + Assert.assertEquals("JUnit4", user.getLastName()); + Assert.assertEquals("456789", user.getPhoneNr()); + Assert.assertEquals("Test4 JUnit4", user.getFullName()); + } + + @Test + public void givenAnnotatedUser_whenHasEvents_thenToStringDumpsNoEvents() { + User user = new User("testnickname", "Test", "JUnit", "123456"); + List events = Arrays.asList(new UserEvent(user), new UserEvent(user)); + user.setEvents(events); + Assert.assertFalse(user.toString().contains("events")); + } + +} diff --git a/pom.xml b/pom.xml index ce7dfca62f..9abd2d9376 100644 --- a/pom.xml +++ b/pom.xml @@ -67,6 +67,8 @@ spring-zuul jsf xml + + lombok-intro From 3c0a53ea044d0341342c177cdd011640b8666e89 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Miguel=20Garci=CC=81a=20Lpez?= Date: Sun, 12 Jun 2016 22:33:45 +0200 Subject: [PATCH 035/108] Rename lombok-intro to just lombok. --- {lombok-intro => lombok}/pom.xml | 6 +++--- .../com/baeldung/lombok/intro/ApiClientConfiguration.java | 0 .../baeldung/lombok/intro/ContactInformationSupport.java | 0 .../com/baeldung/lombok/intro/HasContactInformation.java | 0 .../main/java/com/baeldung/lombok/intro/LoginResult.java | 0 .../src/main/java/com/baeldung/lombok/intro/User.java | 0 .../src/main/java/com/baeldung/lombok/intro/UserEvent.java | 0 .../baeldung/lombok/intro/ApiClientConfigurationTest.java | 0 .../java/com/baeldung/lombok/intro/LoginResultTest.java | 0 .../src/test/java/com/baeldung/lombok/intro/UserTest.java | 0 pom.xml | 2 +- 11 files changed, 4 insertions(+), 4 deletions(-) rename {lombok-intro => lombok}/pom.xml (97%) rename {lombok-intro => lombok}/src/main/java/com/baeldung/lombok/intro/ApiClientConfiguration.java (100%) rename {lombok-intro => lombok}/src/main/java/com/baeldung/lombok/intro/ContactInformationSupport.java (100%) rename {lombok-intro => lombok}/src/main/java/com/baeldung/lombok/intro/HasContactInformation.java (100%) rename {lombok-intro => lombok}/src/main/java/com/baeldung/lombok/intro/LoginResult.java (100%) rename {lombok-intro => lombok}/src/main/java/com/baeldung/lombok/intro/User.java (100%) rename {lombok-intro => lombok}/src/main/java/com/baeldung/lombok/intro/UserEvent.java (100%) rename {lombok-intro => lombok}/src/test/java/com/baeldung/lombok/intro/ApiClientConfigurationTest.java (100%) rename {lombok-intro => lombok}/src/test/java/com/baeldung/lombok/intro/LoginResultTest.java (100%) rename {lombok-intro => lombok}/src/test/java/com/baeldung/lombok/intro/UserTest.java (100%) diff --git a/lombok-intro/pom.xml b/lombok/pom.xml similarity index 97% rename from lombok-intro/pom.xml rename to lombok/pom.xml index 8204a0ee70..b816642165 100644 --- a/lombok-intro/pom.xml +++ b/lombok/pom.xml @@ -6,10 +6,10 @@ 4.0.0 - lombok-intro + lombok com.baeldung - lombok-intro + lombok 0.1-SNAPSHOT @@ -56,7 +56,7 @@ - lombok-intro + lombok src/main/resources diff --git a/lombok-intro/src/main/java/com/baeldung/lombok/intro/ApiClientConfiguration.java b/lombok/src/main/java/com/baeldung/lombok/intro/ApiClientConfiguration.java similarity index 100% rename from lombok-intro/src/main/java/com/baeldung/lombok/intro/ApiClientConfiguration.java rename to lombok/src/main/java/com/baeldung/lombok/intro/ApiClientConfiguration.java diff --git a/lombok-intro/src/main/java/com/baeldung/lombok/intro/ContactInformationSupport.java b/lombok/src/main/java/com/baeldung/lombok/intro/ContactInformationSupport.java similarity index 100% rename from lombok-intro/src/main/java/com/baeldung/lombok/intro/ContactInformationSupport.java rename to lombok/src/main/java/com/baeldung/lombok/intro/ContactInformationSupport.java diff --git a/lombok-intro/src/main/java/com/baeldung/lombok/intro/HasContactInformation.java b/lombok/src/main/java/com/baeldung/lombok/intro/HasContactInformation.java similarity index 100% rename from lombok-intro/src/main/java/com/baeldung/lombok/intro/HasContactInformation.java rename to lombok/src/main/java/com/baeldung/lombok/intro/HasContactInformation.java diff --git a/lombok-intro/src/main/java/com/baeldung/lombok/intro/LoginResult.java b/lombok/src/main/java/com/baeldung/lombok/intro/LoginResult.java similarity index 100% rename from lombok-intro/src/main/java/com/baeldung/lombok/intro/LoginResult.java rename to lombok/src/main/java/com/baeldung/lombok/intro/LoginResult.java diff --git a/lombok-intro/src/main/java/com/baeldung/lombok/intro/User.java b/lombok/src/main/java/com/baeldung/lombok/intro/User.java similarity index 100% rename from lombok-intro/src/main/java/com/baeldung/lombok/intro/User.java rename to lombok/src/main/java/com/baeldung/lombok/intro/User.java diff --git a/lombok-intro/src/main/java/com/baeldung/lombok/intro/UserEvent.java b/lombok/src/main/java/com/baeldung/lombok/intro/UserEvent.java similarity index 100% rename from lombok-intro/src/main/java/com/baeldung/lombok/intro/UserEvent.java rename to lombok/src/main/java/com/baeldung/lombok/intro/UserEvent.java diff --git a/lombok-intro/src/test/java/com/baeldung/lombok/intro/ApiClientConfigurationTest.java b/lombok/src/test/java/com/baeldung/lombok/intro/ApiClientConfigurationTest.java similarity index 100% rename from lombok-intro/src/test/java/com/baeldung/lombok/intro/ApiClientConfigurationTest.java rename to lombok/src/test/java/com/baeldung/lombok/intro/ApiClientConfigurationTest.java diff --git a/lombok-intro/src/test/java/com/baeldung/lombok/intro/LoginResultTest.java b/lombok/src/test/java/com/baeldung/lombok/intro/LoginResultTest.java similarity index 100% rename from lombok-intro/src/test/java/com/baeldung/lombok/intro/LoginResultTest.java rename to lombok/src/test/java/com/baeldung/lombok/intro/LoginResultTest.java diff --git a/lombok-intro/src/test/java/com/baeldung/lombok/intro/UserTest.java b/lombok/src/test/java/com/baeldung/lombok/intro/UserTest.java similarity index 100% rename from lombok-intro/src/test/java/com/baeldung/lombok/intro/UserTest.java rename to lombok/src/test/java/com/baeldung/lombok/intro/UserTest.java diff --git a/pom.xml b/pom.xml index 9abd2d9376..4116c0aca7 100644 --- a/pom.xml +++ b/pom.xml @@ -68,7 +68,7 @@ jsf xml - lombok-intro + lombok From 31eaa0e16d68e7ed24920b4c012a9e1e86256cc8 Mon Sep 17 00:00:00 2001 From: eugenp Date: Sun, 12 Jun 2016 23:45:42 +0300 Subject: [PATCH 036/108] interesting httpclient digest auth example --- httpclient/.settings/org.eclipse.jdt.ui.prefs | 55 ------------------- 1 file changed, 55 deletions(-) delete mode 100644 httpclient/.settings/org.eclipse.jdt.ui.prefs diff --git a/httpclient/.settings/org.eclipse.jdt.ui.prefs b/httpclient/.settings/org.eclipse.jdt.ui.prefs deleted file mode 100644 index 471e9b0d81..0000000000 --- a/httpclient/.settings/org.eclipse.jdt.ui.prefs +++ /dev/null @@ -1,55 +0,0 @@ -#Sat Jan 21 23:04:06 EET 2012 -eclipse.preferences.version=1 -editor_save_participant_org.eclipse.jdt.ui.postsavelistener.cleanup=true -sp_cleanup.add_default_serial_version_id=true -sp_cleanup.add_generated_serial_version_id=false -sp_cleanup.add_missing_annotations=true -sp_cleanup.add_missing_deprecated_annotations=true -sp_cleanup.add_missing_methods=false -sp_cleanup.add_missing_nls_tags=false -sp_cleanup.add_missing_override_annotations=true -sp_cleanup.add_missing_override_annotations_interface_methods=true -sp_cleanup.add_serial_version_id=false -sp_cleanup.always_use_blocks=true -sp_cleanup.always_use_parentheses_in_expressions=true -sp_cleanup.always_use_this_for_non_static_field_access=false -sp_cleanup.always_use_this_for_non_static_method_access=false -sp_cleanup.convert_to_enhanced_for_loop=true -sp_cleanup.correct_indentation=true -sp_cleanup.format_source_code=true -sp_cleanup.format_source_code_changes_only=true -sp_cleanup.make_local_variable_final=true -sp_cleanup.make_parameters_final=true -sp_cleanup.make_private_fields_final=false -sp_cleanup.make_type_abstract_if_missing_method=false -sp_cleanup.make_variable_declarations_final=true -sp_cleanup.never_use_blocks=false -sp_cleanup.never_use_parentheses_in_expressions=false -sp_cleanup.on_save_use_additional_actions=true -sp_cleanup.organize_imports=true -sp_cleanup.qualify_static_field_accesses_with_declaring_class=false -sp_cleanup.qualify_static_member_accesses_through_instances_with_declaring_class=true -sp_cleanup.qualify_static_member_accesses_through_subtypes_with_declaring_class=true -sp_cleanup.qualify_static_member_accesses_with_declaring_class=true -sp_cleanup.qualify_static_method_accesses_with_declaring_class=false -sp_cleanup.remove_private_constructors=true -sp_cleanup.remove_trailing_whitespaces=true -sp_cleanup.remove_trailing_whitespaces_all=true -sp_cleanup.remove_trailing_whitespaces_ignore_empty=false -sp_cleanup.remove_unnecessary_casts=true -sp_cleanup.remove_unnecessary_nls_tags=false -sp_cleanup.remove_unused_imports=true -sp_cleanup.remove_unused_local_variables=false -sp_cleanup.remove_unused_private_fields=true -sp_cleanup.remove_unused_private_members=false -sp_cleanup.remove_unused_private_methods=true -sp_cleanup.remove_unused_private_types=true -sp_cleanup.sort_members=false -sp_cleanup.sort_members_all=false -sp_cleanup.use_blocks=false -sp_cleanup.use_blocks_only_for_return_and_throw=false -sp_cleanup.use_parentheses_in_expressions=false -sp_cleanup.use_this_for_non_static_field_access=true -sp_cleanup.use_this_for_non_static_field_access_only_if_necessary=true -sp_cleanup.use_this_for_non_static_method_access=true -sp_cleanup.use_this_for_non_static_method_access_only_if_necessary=true From 14cd93227bf82bbc0b7402e3a48dd103b926dbc2 Mon Sep 17 00:00:00 2001 From: eugenp Date: Sun, 12 Jun 2016 23:45:58 +0300 Subject: [PATCH 037/108] interesting httpclient digest auth example --- .../org/baeldung/httpclient/SandboxTest.java | 86 +++++++++++++++++++ 1 file changed, 86 insertions(+) create mode 100644 httpclient/src/test/java/org/baeldung/httpclient/SandboxTest.java diff --git a/httpclient/src/test/java/org/baeldung/httpclient/SandboxTest.java b/httpclient/src/test/java/org/baeldung/httpclient/SandboxTest.java new file mode 100644 index 0000000000..23f3c6ac76 --- /dev/null +++ b/httpclient/src/test/java/org/baeldung/httpclient/SandboxTest.java @@ -0,0 +1,86 @@ +package org.baeldung.httpclient; + +import java.io.IOException; + +import org.apache.http.Header; +import org.apache.http.HttpHost; +import org.apache.http.HttpResponse; +import org.apache.http.auth.AuthScope; +import org.apache.http.auth.AuthenticationException; +import org.apache.http.auth.MalformedChallengeException; +import org.apache.http.auth.UsernamePasswordCredentials; +import org.apache.http.client.AuthCache; +import org.apache.http.client.ClientProtocolException; +import org.apache.http.client.CredentialsProvider; +import org.apache.http.client.methods.CloseableHttpResponse; +import org.apache.http.client.methods.HttpGet; +import org.apache.http.client.protocol.HttpClientContext; +import org.apache.http.impl.auth.DigestScheme; +import org.apache.http.impl.client.BasicAuthCache; +import org.apache.http.impl.client.BasicCredentialsProvider; +import org.apache.http.impl.client.CloseableHttpClient; +import org.apache.http.impl.client.HttpClients; +import org.apache.http.util.EntityUtils; +import org.junit.Test; + +public class SandboxTest { + + @Test + public final void whenInterestingDigestAuthScenario_then200OK() throws AuthenticationException, ClientProtocolException, IOException, MalformedChallengeException { + final HttpHost targetHost = new HttpHost("httpbin.org", 80, "http"); + + // set up the credentials to run agains the server + final CredentialsProvider credsProvider = new BasicCredentialsProvider(); + credsProvider.setCredentials(new AuthScope(targetHost.getHostName(), targetHost.getPort()), new UsernamePasswordCredentials("user", "passwd")); + + // We need a first run to get a 401 to seed the digest auth + + // Make a client using those creds + final CloseableHttpClient client = HttpClients.custom().setDefaultCredentialsProvider(credsProvider).build(); + + // And make a call to the URL we are after + final HttpGet httpget = new HttpGet("http://httpbin.org/digest-auth/auth/user/passwd"); + + // Create a context to use + final HttpClientContext context = HttpClientContext.create(); + + // Get a response from the sever (expect a 401!) + final HttpResponse authResponse = client.execute(targetHost, httpget, context); + + // Pull out the auth header that came back from the server + final Header challenge = authResponse.getHeaders("WWW-Authenticate")[0]; + + // Lets use a digest scheme to solve it + final DigestScheme digest = new DigestScheme(); + digest.processChallenge(challenge); + + // Make a header with the solution based upon user/password and what the digest got out of the initial 401 reponse + final Header solution = digest.authenticate(new UsernamePasswordCredentials("user", "passwd"), httpget, context); + + // Need an auth cache to use the new digest we made + final AuthCache authCache = new BasicAuthCache(); + authCache.put(targetHost, digest); + + // Add the authCache and thus solved digest to the context + context.setAuthCache(authCache); + + // Pimp up our http get with the solved header made by the digest + httpget.addHeader(solution); + + // use it! + System.out.println("Executing request " + httpget.getRequestLine() + " to target " + targetHost); + + for (int i = 0; i < 3; i++) { + final CloseableHttpResponse responseGood = client.execute(targetHost, httpget, context); + + try { + System.out.println("----------------------------------------"); + System.out.println(responseGood.getStatusLine()); + System.out.println(EntityUtils.toString(responseGood.getEntity())); + } finally { + responseGood.close(); + } + } + + } +} From 73471f6ec97c91e4d8f61e3853024c9395916345 Mon Sep 17 00:00:00 2001 From: Eugen Date: Mon, 13 Jun 2016 00:34:53 +0300 Subject: [PATCH 038/108] Update README.md --- spring-security-rest-full/README.md | 2 ++ 1 file changed, 2 insertions(+) diff --git a/spring-security-rest-full/README.md b/spring-security-rest-full/README.md index f648c49244..72e8636df1 100644 --- a/spring-security-rest-full/README.md +++ b/spring-security-rest-full/README.md @@ -2,6 +2,8 @@ ## REST Example Project with Spring Security +### The Course + The "REST With Spring" Classes: http://bit.ly/restwithspring ### Relevant Articles: - [Spring Security Expressions - hasRole Example](http://www.baeldung.com/spring-security-expressions-basic) From a5bde90d402d13723f1a744f1635c790b7dc7b9e Mon Sep 17 00:00:00 2001 From: slavisa-baeldung Date: Wed, 15 Jun 2016 06:57:43 +0200 Subject: [PATCH 039/108] java-streams-8-api - adding slf4j fixing indentation --- core-java-8/pom.xml | 6 ++ .../baeldung/java8/Java8StreamApiTest.java | 100 ++++++++---------- 2 files changed, 53 insertions(+), 53 deletions(-) diff --git a/core-java-8/pom.xml b/core-java-8/pom.xml index 0e589ebf47..f99d85f564 100644 --- a/core-java-8/pom.xml +++ b/core-java-8/pom.xml @@ -41,6 +41,12 @@ 3.3.2 + + org.slf4j + slf4j-api + ${org.slf4j.version} + + diff --git a/core-java-8/src/test/java/com/baeldung/java8/Java8StreamApiTest.java b/core-java-8/src/test/java/com/baeldung/java8/Java8StreamApiTest.java index a436b3e93f..37326c6d26 100644 --- a/core-java-8/src/test/java/com/baeldung/java8/Java8StreamApiTest.java +++ b/core-java-8/src/test/java/com/baeldung/java8/Java8StreamApiTest.java @@ -2,44 +2,35 @@ package com.baeldung.java8; import com.baeldung.streamApi.Product; import org.junit.Before; -import org.junit.BeforeClass; import org.junit.Test; -import org.mockito.Mock; -import org.mockito.Mockito; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; import java.io.BufferedWriter; -import java.io.File; import java.io.IOException; import java.nio.charset.Charset; import java.nio.file.Files; import java.nio.file.Path; -import java.nio.file.Paths; import java.util.*; -import java.util.logging.Logger; import java.util.regex.Pattern; import java.util.stream.*; import static org.junit.Assert.*; -import static org.mockito.Matchers.anyString; -import static org.mockito.Mockito.mock; -/** - * Created by Alex Vengr - */ public class Java8StreamApiTest { private long counter; - private static Logger log = Logger.getAnonymousLogger(); + private static Logger log = LoggerFactory.getLogger(Java8StreamApiTest.class); private List productList; - @Before public void init() { - productList = Arrays.asList(new Product(23, "potatoes"), - new Product(14, "orange"), new Product(13, "lemon"), - new Product(23, "bread"), new Product(13, "sugar")); + productList = Arrays.asList( + new Product(23, "potatoes"), new Product(14, "orange"), + new Product(13, "lemon"), new Product(23, "bread"), + new Product(13, "sugar")); } @Test @@ -47,7 +38,7 @@ public class Java8StreamApiTest { List list = Arrays.asList("abc1", "abc2", "abc3"); long size = list.stream().skip(1) - .map(element -> element.substring(0, 3)).count(); + .map(element -> element.substring(0, 3)).count(); assertEquals(list.size() - 1, size); } @@ -58,18 +49,18 @@ public class Java8StreamApiTest { counter = 0; long sizeFirst = list.stream() - .skip(2).map(element -> { - wasCalled(); - return element.substring(0, 3); - }).count(); - assertEquals( 1, counter); + .skip(2).map(element -> { + wasCalled(); + return element.substring(0, 3); + }).count(); + assertEquals(1, counter); counter = 0; long sizeSecond = list.stream().map(element -> { wasCalled(); return element.substring(0, 3); }).skip(2).count(); - assertEquals( 3, counter); + assertEquals(3, counter); } @Test @@ -117,7 +108,7 @@ public class Java8StreamApiTest { try { streamOfStrings = Files.lines(path, Charset.forName("UTF-8")); } catch (IOException e) { - e.printStackTrace(); + log.error("Error creating streams from paths {}", path, e.getMessage(), e); } assertEquals("a", streamOfStrings.findFirst().get()); @@ -136,13 +127,13 @@ public class Java8StreamApiTest { List list = Arrays.asList("abc1", "abc2", "abc3"); Optional stream = list.stream() - .filter(element -> { - log.info("filter() was called"); - return element.contains("2"); - }).map(element -> { - log.info("map() was called"); - return element.toUpperCase(); - }).findFirst(); + .filter(element -> { + log.info("filter() was called"); + return element.contains("2"); + }).map(element -> { + log.info("map() was called"); + return element.toUpperCase(); + }).findFirst(); } @Test @@ -155,17 +146,17 @@ public class Java8StreamApiTest { assertEquals(16, reducedTwoParams); int reducedThreeParams = Stream.of(1, 2, 3) - .reduce(10, (a, b) -> a + b, (a, b) -> { - log.info("combiner was called"); - return a + b; - }); + .reduce(10, (a, b) -> a + b, (a, b) -> { + log.info("combiner was called"); + return a + b; + }); assertEquals(16, reducedThreeParams); int reducedThreeParamsParallel = Arrays.asList(1, 2, 3).parallelStream() - .reduce(10, (a, b) -> a + b, (a, b) -> { - log.info("combiner was called"); - return a + b; - }); + .reduce(10, (a, b) -> a + b, (a, b) -> { + log.info("combiner was called"); + return a + b; + }); assertEquals(36, reducedThreeParamsParallel); } @@ -173,13 +164,13 @@ public class Java8StreamApiTest { public void collecting_whenAsExpected_thenCorrect() { List collectorCollection = productList.stream() - .map(Product::getName).collect(Collectors.toList()); + .map(Product::getName).collect(Collectors.toList()); assertTrue(collectorCollection instanceof List); assertEquals(5, collectorCollection.size()); String listToString = productList.stream().map(Product::getName) - .collect(Collectors.joining(", ", "[", "]")); + .collect(Collectors.joining(", ", "[", "]")); assertTrue(listToString.contains(",") && listToString.contains("[") && listToString.contains("]")); @@ -190,15 +181,15 @@ public class Java8StreamApiTest { assertEquals(86, summingPrice); IntSummaryStatistics statistics = productList.stream() - .collect(Collectors.summarizingInt(Product::getPrice)); + .collect(Collectors.summarizingInt(Product::getPrice)); assertEquals(23, statistics.getMax()); Map> collectorMapOfLists = productList.stream() - .collect(Collectors.groupingBy(Product::getPrice)); + .collect(Collectors.groupingBy(Product::getPrice)); assertEquals(3, collectorMapOfLists.keySet().size()); Map> mapPartioned = productList.stream() - .collect(Collectors.partitioningBy(element -> element.getPrice() > 15)); + .collect(Collectors.partitioningBy(element -> element.getPrice() > 15)); assertEquals(2, mapPartioned.keySet().size()); } @@ -206,16 +197,19 @@ public class Java8StreamApiTest { @Test(expected = UnsupportedOperationException.class) public void collect_whenThrows_thenCorrect() { Set unmodifiableSet = productList.stream() - .collect(Collectors.collectingAndThen(Collectors.toSet(), - Collections::unmodifiableSet)); + .collect(Collectors.collectingAndThen(Collectors.toSet(), + Collections::unmodifiableSet)); unmodifiableSet.add(new Product(4, "tea")); } @Test public void customCollector_whenResultContainsAllElementsFrSource_thenCorrect() { Collector> toLinkedList = - Collector.of(LinkedList::new, LinkedList::add, - (first, second) -> { first.addAll(second); return first; }); + Collector.of(LinkedList::new, LinkedList::add, + (first, second) -> { + first.addAll(second); + return first; + }); LinkedList linkedListOfPersons = productList.stream().collect(toLinkedList); assertTrue(linkedListOfPersons.containsAll(productList)); @@ -226,14 +220,14 @@ public class Java8StreamApiTest { Stream streamOfCollection = productList.parallelStream(); boolean isParallel = streamOfCollection.isParallel(); boolean haveBigPrice = streamOfCollection.map(product -> product.getPrice() * 12) - .anyMatch(price -> price > 200); + .anyMatch(price -> price > 200); assertTrue(isParallel && haveBigPrice); } @Test public void parallel_whenIsParallel_thenCorrect() { IntStream intStreamParallel = - IntStream.range(1, 150).parallel().map(element -> element * 34); + IntStream.range(1, 150).parallel().map(element -> element * 34); boolean isParallel = intStreamParallel.isParallel(); assertTrue(isParallel); } @@ -241,7 +235,7 @@ public class Java8StreamApiTest { @Test public void parallel_whenIsSequential_thenCorrect() { IntStream intStreamParallel = - IntStream.range(1, 150).parallel().map(element -> element * 34); + IntStream.range(1, 150).parallel().map(element -> element * 34); IntStream intStreamSequential = intStreamParallel.sequential(); boolean isParallel = intStreamParallel.isParallel(); assertFalse(isParallel); @@ -252,13 +246,13 @@ public class Java8StreamApiTest { try { path = Files.createTempFile(null, ".txt"); } catch (IOException e) { - e.printStackTrace(); + log.error(e.getMessage()); } try (BufferedWriter writer = Files.newBufferedWriter(path)) { writer.write("a\nb\nc"); } catch (IOException e) { - e.printStackTrace(); + log.error(e.getMessage()); } return path; } From 70322e1a44c755cd7b06be2fffea8c880b8dc77b Mon Sep 17 00:00:00 2001 From: slavisa-baeldung Date: Wed, 15 Jun 2016 20:25:41 +0200 Subject: [PATCH 040/108] spring-mvc-matrix-variables - manually merging --- spring-mvc-java/pom.xml | 1 - .../main/java/com/baeldung/model/Company.java | 38 +++++++++ .../java/com/baeldung/model/Employee.java | 14 +++- .../baeldung/spring/web/config/WebConfig.java | 10 +++ .../web/controller/CompanyController.java | 56 +++++++++++++ .../web/controller/EmployeeController.java | 79 ++++++++++++++++--- .../main/webapp/WEB-INF/view/companyHome.jsp | 31 ++++++++ .../main/webapp/WEB-INF/view/companyView.jsp | 20 +++++ .../main/webapp/WEB-INF/view/employeeHome.jsp | 4 + .../main/webapp/WEB-INF/view/employeeView.jsp | 4 + 10 files changed, 242 insertions(+), 15 deletions(-) create mode 100644 spring-mvc-java/src/main/java/com/baeldung/model/Company.java create mode 100644 spring-mvc-java/src/main/java/com/baeldung/web/controller/CompanyController.java create mode 100644 spring-mvc-java/src/main/webapp/WEB-INF/view/companyHome.jsp create mode 100644 spring-mvc-java/src/main/webapp/WEB-INF/view/companyView.jsp diff --git a/spring-mvc-java/pom.xml b/spring-mvc-java/pom.xml index e796099190..33d6306c5a 100644 --- a/spring-mvc-java/pom.xml +++ b/spring-mvc-java/pom.xml @@ -194,7 +194,6 @@ cargo-maven2-plugin ${cargo-maven2-plugin.version} - true jetty8x embedded diff --git a/spring-mvc-java/src/main/java/com/baeldung/model/Company.java b/spring-mvc-java/src/main/java/com/baeldung/model/Company.java new file mode 100644 index 0000000000..558507268a --- /dev/null +++ b/spring-mvc-java/src/main/java/com/baeldung/model/Company.java @@ -0,0 +1,38 @@ +package com.baeldung.model; + +public class Company { + + private long id; + private String name; + + public Company() { + super(); + } + + public Company(final long id, final String name) { + this.id = id; + this.name = name; + } + + public String getName() { + return name; + } + + public void setName(final String name) { + this.name = name; + } + + public long getId() { + return id; + } + + public void setId(final long id) { + this.id = id; + } + + @Override + public String toString() { + return "Company [id=" + id + ", name=" + name + "]"; + } + +} diff --git a/spring-mvc-java/src/main/java/com/baeldung/model/Employee.java b/spring-mvc-java/src/main/java/com/baeldung/model/Employee.java index d0f6b724eb..fb0a452219 100644 --- a/spring-mvc-java/src/main/java/com/baeldung/model/Employee.java +++ b/spring-mvc-java/src/main/java/com/baeldung/model/Employee.java @@ -8,15 +8,17 @@ public class Employee { private long id; private String name; private String contactNumber; + private String workingArea; public Employee() { super(); } - public Employee(final long id, final String name, final String contactNumber) { + public Employee(final long id, final String name, final String contactNumber, final String workingArea) { this.id = id; this.name = name; this.contactNumber = contactNumber; + this.workingArea = workingArea; } public String getName() { @@ -43,9 +45,17 @@ public class Employee { this.contactNumber = contactNumber; } + public String getWorkingArea() { + return workingArea; + } + + public void setWorkingArea(final String workingArea) { + this.workingArea = workingArea; + } + @Override public String toString() { - return "Employee [id=" + id + ", name=" + name + ", contactNumber=" + contactNumber + "]"; + return "Employee [id=" + id + ", name=" + name + ", contactNumber=" + contactNumber + ", workingArea=" + workingArea + "]"; } } diff --git a/spring-mvc-java/src/main/java/com/baeldung/spring/web/config/WebConfig.java b/spring-mvc-java/src/main/java/com/baeldung/spring/web/config/WebConfig.java index ba7f35fd65..663b9cc4d2 100644 --- a/spring-mvc-java/src/main/java/com/baeldung/spring/web/config/WebConfig.java +++ b/spring-mvc-java/src/main/java/com/baeldung/spring/web/config/WebConfig.java @@ -13,12 +13,14 @@ import org.springframework.http.converter.HttpMessageConverter; import org.springframework.web.multipart.commons.CommonsMultipartResolver; import org.springframework.web.servlet.ViewResolver; import org.springframework.web.servlet.config.annotation.EnableWebMvc; +import org.springframework.web.servlet.config.annotation.PathMatchConfigurer; import org.springframework.web.servlet.config.annotation.ViewControllerRegistry; import org.springframework.web.servlet.config.annotation.WebMvcConfigurerAdapter; import org.springframework.web.servlet.view.InternalResourceViewResolver; import org.springframework.web.servlet.view.JstlView; import org.springframework.web.servlet.view.ResourceBundleViewResolver; import org.springframework.web.servlet.view.XmlViewResolver; +import org.springframework.web.util.UrlPathHelper; @Configuration @EnableWebMvc @@ -96,4 +98,12 @@ public class WebConfig extends WebMvcConfigurerAdapter { return list; } + + @Override + public void configurePathMatch(final PathMatchConfigurer configurer) { + final UrlPathHelper urlPathHelper = new UrlPathHelper(); + urlPathHelper.setRemoveSemicolonContent(false); + + configurer.setUrlPathHelper(urlPathHelper); + } } diff --git a/spring-mvc-java/src/main/java/com/baeldung/web/controller/CompanyController.java b/spring-mvc-java/src/main/java/com/baeldung/web/controller/CompanyController.java new file mode 100644 index 0000000000..8228eafd5c --- /dev/null +++ b/spring-mvc-java/src/main/java/com/baeldung/web/controller/CompanyController.java @@ -0,0 +1,56 @@ +package com.baeldung.web.controller; + +import com.baeldung.model.Company; +import org.springframework.http.HttpStatus; +import org.springframework.http.ResponseEntity; +import org.springframework.stereotype.Controller; +import org.springframework.ui.ModelMap; +import org.springframework.validation.BindingResult; +import org.springframework.web.bind.annotation.*; +import org.springframework.web.servlet.ModelAndView; + +import java.util.HashMap; +import java.util.Map; + +@Controller +public class CompanyController { + + Map companyMap = new HashMap<>(); + + @RequestMapping(value = "/company", method = RequestMethod.GET) + public ModelAndView showForm() { + return new ModelAndView("companyHome", "company", new Company()); + } + + @RequestMapping(value = "/company/{Id}", produces = { "application/json", "application/xml" }, method = RequestMethod.GET) + public @ResponseBody Company getCompanyById(@PathVariable final long Id) { + return companyMap.get(Id); + } + + @RequestMapping(value = "/addCompany", method = RequestMethod.POST) + public String submit(@ModelAttribute("company") final Company company, final BindingResult result, final ModelMap model) { + if (result.hasErrors()) { + return "error"; + } + model.addAttribute("name", company.getName()); + model.addAttribute("id", company.getId()); + + companyMap.put(company.getId(), company); + + return "companyView"; + } + + @RequestMapping(value = "/companyEmployee/{company}/employeeData/{employee}", method = RequestMethod.GET) + @ResponseBody + public ResponseEntity> getEmployeeDataFromCompany(@MatrixVariable(pathVar = "employee") final Map matrixVars) { + return new ResponseEntity<>(matrixVars, HttpStatus.OK); + } + + @RequestMapping(value = "/companyData/{company}/employeeData/{employee}", method = RequestMethod.GET) + @ResponseBody + public ResponseEntity> getCompanyName(@MatrixVariable(value = "name", pathVar = "company") final String name) { + final Map result = new HashMap(); + result.put("name", name); + return new ResponseEntity<>(result, HttpStatus.OK); + } +} diff --git a/spring-mvc-java/src/main/java/com/baeldung/web/controller/EmployeeController.java b/spring-mvc-java/src/main/java/com/baeldung/web/controller/EmployeeController.java index 2166c00873..fd5fa6bc27 100644 --- a/spring-mvc-java/src/main/java/com/baeldung/web/controller/EmployeeController.java +++ b/spring-mvc-java/src/main/java/com/baeldung/web/controller/EmployeeController.java @@ -1,35 +1,40 @@ package com.baeldung.web.controller; -import java.util.HashMap; -import java.util.Map; - +import com.baeldung.model.Employee; +import org.springframework.http.HttpStatus; +import org.springframework.http.ResponseEntity; import org.springframework.stereotype.Controller; import org.springframework.ui.Model; import org.springframework.ui.ModelMap; import org.springframework.validation.BindingResult; -import org.springframework.web.bind.annotation.ControllerAdvice; -import org.springframework.web.bind.annotation.ModelAttribute; -import org.springframework.web.bind.annotation.PathVariable; -import org.springframework.web.bind.annotation.RequestMapping; -import org.springframework.web.bind.annotation.RequestMethod; -import org.springframework.web.bind.annotation.ResponseBody; +import org.springframework.web.bind.annotation.*; import org.springframework.web.servlet.ModelAndView; -import com.baeldung.model.Employee; +import java.util.*; +@SessionAttributes("employees") @Controller @ControllerAdvice public class EmployeeController { Map employeeMap = new HashMap<>(); + @ModelAttribute("employees") + public void initEmployees() { + employeeMap.put(1L, new Employee(1L, "John", "223334411", "rh")); + employeeMap.put(2L, new Employee(2L, "Peter", "22001543", "informatics")); + employeeMap.put(3L, new Employee(3L, "Mike", "223334411", "admin")); + } + @RequestMapping(value = "/employee", method = RequestMethod.GET) public ModelAndView showForm() { return new ModelAndView("employeeHome", "employee", new Employee()); } - @RequestMapping(value = "/employee/{Id}", produces = { "application/json", "application/xml" }, method = RequestMethod.GET) - public @ResponseBody Employee getEmployeeById(@PathVariable final long Id) { + @RequestMapping(value = "/employee/{Id}", produces = {"application/json", "application/xml"}, method = RequestMethod.GET) + public + @ResponseBody + Employee getEmployeeById(@PathVariable final long Id) { return employeeMap.get(Id); } @@ -40,6 +45,7 @@ public class EmployeeController { } model.addAttribute("name", employee.getName()); model.addAttribute("contactNumber", employee.getContactNumber()); + model.addAttribute("workingArea", employee.getWorkingArea()); model.addAttribute("id", employee.getId()); employeeMap.put(employee.getId(), employee); @@ -52,4 +58,53 @@ public class EmployeeController { model.addAttribute("msg", "Welcome to the Netherlands!"); } + @RequestMapping(value = "/employees/{name}", method = RequestMethod.GET) + @ResponseBody + public ResponseEntity> getEmployeeByNameAndBeginContactNumber(@PathVariable final String name, @MatrixVariable final String beginContactNumber) { + final List employeesList = new ArrayList(); + for (final Map.Entry employeeEntry : employeeMap.entrySet()) { + final Employee employee = employeeEntry.getValue(); + if (employee.getName().equalsIgnoreCase(name) && employee.getContactNumber().startsWith(beginContactNumber)) { + employeesList.add(employee); + } + } + return new ResponseEntity<>(employeesList, HttpStatus.OK); + } + + @RequestMapping(value = "/employeesContacts/{contactNumber}", method = RequestMethod.GET) + @ResponseBody + public ResponseEntity> getEmployeeBycontactNumber(@MatrixVariable(required = true) final String contactNumber) { + final List employeesList = new ArrayList(); + for (final Map.Entry employeeEntry : employeeMap.entrySet()) { + final Employee employee = employeeEntry.getValue(); + if (employee.getContactNumber().equalsIgnoreCase(contactNumber)) { + employeesList.add(employee); + } + } + return new ResponseEntity<>(employeesList, HttpStatus.OK); + } + + @RequestMapping(value = "employeeData/{employee}", method = RequestMethod.GET) + @ResponseBody + public ResponseEntity> getEmployeeData(@MatrixVariable final Map matrixVars) { + return new ResponseEntity<>(matrixVars, HttpStatus.OK); + } + + @RequestMapping(value = "employeeArea/{workingArea}", method = RequestMethod.GET) + @ResponseBody + public ResponseEntity> getEmployeeByWorkingArea(@MatrixVariable final Map> matrixVars) { + final List employeesList = new ArrayList(); + final LinkedList workingArea = matrixVars.get("workingArea"); + for (final Map.Entry employeeEntry : employeeMap.entrySet()) { + final Employee employee = employeeEntry.getValue(); + for (final String area : workingArea) { + if (employee.getWorkingArea().equalsIgnoreCase(area)) { + employeesList.add(employee); + break; + } + } + } + return new ResponseEntity<>(employeesList, HttpStatus.OK); + } + } diff --git a/spring-mvc-java/src/main/webapp/WEB-INF/view/companyHome.jsp b/spring-mvc-java/src/main/webapp/WEB-INF/view/companyHome.jsp new file mode 100644 index 0000000000..38ef8d12ee --- /dev/null +++ b/spring-mvc-java/src/main/webapp/WEB-INF/view/companyHome.jsp @@ -0,0 +1,31 @@ +<%@ page language="java" contentType="text/html; charset=ISO-8859-1" + pageEncoding="ISO-8859-1" %> +<%@ taglib prefix="form" uri="http://www.springframework.org/tags/form" %> + + + + Form Example - Register a Company + + +

    Welcome, Enter The Company Details

    + + +
Name :
+ + + + + + + + + + + +
Name
Id
+ + + + + \ No newline at end of file diff --git a/spring-mvc-java/src/main/webapp/WEB-INF/view/companyView.jsp b/spring-mvc-java/src/main/webapp/WEB-INF/view/companyView.jsp new file mode 100644 index 0000000000..8f34059b0a --- /dev/null +++ b/spring-mvc-java/src/main/webapp/WEB-INF/view/companyView.jsp @@ -0,0 +1,20 @@ +<%@taglib uri="http://www.springframework.org/tags/form" prefix="form"%> + + + Spring MVC Form Handling + + + +

Submitted Company Information

+ + + + + + + + + +
Name :${name}
ID :${id}
+ + \ No newline at end of file diff --git a/spring-mvc-java/src/main/webapp/WEB-INF/view/employeeHome.jsp b/spring-mvc-java/src/main/webapp/WEB-INF/view/employeeHome.jsp index c000bea39f..8a32fd12b6 100644 --- a/spring-mvc-java/src/main/webapp/WEB-INF/view/employeeHome.jsp +++ b/spring-mvc-java/src/main/webapp/WEB-INF/view/employeeHome.jsp @@ -22,6 +22,10 @@ Contact Number + + Working Area + + diff --git a/spring-mvc-java/src/main/webapp/WEB-INF/view/employeeView.jsp b/spring-mvc-java/src/main/webapp/WEB-INF/view/employeeView.jsp index 9a9b879a35..627a9d9ddb 100644 --- a/spring-mvc-java/src/main/webapp/WEB-INF/view/employeeView.jsp +++ b/spring-mvc-java/src/main/webapp/WEB-INF/view/employeeView.jsp @@ -20,6 +20,10 @@ Contact Number : ${contactNumber} + + Working Area : + ${workingArea} + \ No newline at end of file From 22cebf3b39eca1eb5b0d8fdad29824ad5aea8c4f Mon Sep 17 00:00:00 2001 From: DOHA Date: Fri, 17 Jun 2016 13:52:14 +0200 Subject: [PATCH 041/108] cleanup --- spring-security-rest-digest-auth/pom.xml | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/spring-security-rest-digest-auth/pom.xml b/spring-security-rest-digest-auth/pom.xml index 406c52e7e1..bfb4a7223a 100644 --- a/spring-security-rest-digest-auth/pom.xml +++ b/spring-security-rest-digest-auth/pom.xml @@ -83,6 +83,12 @@ ${org.springframework.version} + + org.springframework + spring-web + ${org.springframework.version} + + From b72f3199831a0bc09c275f1eec0839822df0c2b5 Mon Sep 17 00:00:00 2001 From: DOHA Date: Fri, 17 Jun 2016 13:52:46 +0200 Subject: [PATCH 042/108] httpclient digest examples --- .../org/baeldung/httpclient/SandboxTest.java | 64 ++++++++++++++++++- 1 file changed, 62 insertions(+), 2 deletions(-) diff --git a/httpclient/src/test/java/org/baeldung/httpclient/SandboxTest.java b/httpclient/src/test/java/org/baeldung/httpclient/SandboxTest.java index 23f3c6ac76..eb3084f941 100644 --- a/httpclient/src/test/java/org/baeldung/httpclient/SandboxTest.java +++ b/httpclient/src/test/java/org/baeldung/httpclient/SandboxTest.java @@ -11,15 +11,18 @@ import org.apache.http.auth.MalformedChallengeException; import org.apache.http.auth.UsernamePasswordCredentials; import org.apache.http.client.AuthCache; import org.apache.http.client.ClientProtocolException; +import org.apache.http.client.CookieStore; import org.apache.http.client.CredentialsProvider; import org.apache.http.client.methods.CloseableHttpResponse; import org.apache.http.client.methods.HttpGet; import org.apache.http.client.protocol.HttpClientContext; import org.apache.http.impl.auth.DigestScheme; import org.apache.http.impl.client.BasicAuthCache; +import org.apache.http.impl.client.BasicCookieStore; import org.apache.http.impl.client.BasicCredentialsProvider; import org.apache.http.impl.client.CloseableHttpClient; import org.apache.http.impl.client.HttpClients; +import org.apache.http.impl.cookie.BasicClientCookie; import org.apache.http.util.EntityUtils; import org.junit.Test; @@ -33,10 +36,17 @@ public class SandboxTest { final CredentialsProvider credsProvider = new BasicCredentialsProvider(); credsProvider.setCredentials(new AuthScope(targetHost.getHostName(), targetHost.getPort()), new UsernamePasswordCredentials("user", "passwd")); + // This endpoint need fake cookie to work properly + final CookieStore cookieStore = new BasicCookieStore(); + final BasicClientCookie cookie = new BasicClientCookie("fake", "fake_value"); + cookie.setDomain("httpbin.org"); + cookie.setPath("/"); + cookieStore.addCookie(cookie); + // We need a first run to get a 401 to seed the digest auth // Make a client using those creds - final CloseableHttpClient client = HttpClients.custom().setDefaultCredentialsProvider(credsProvider).build(); + final CloseableHttpClient client = HttpClients.custom().setDefaultCookieStore(cookieStore).setDefaultCredentialsProvider(credsProvider).build(); // And make a call to the URL we are after final HttpGet httpget = new HttpGet("http://httpbin.org/digest-auth/auth/user/passwd"); @@ -60,7 +70,7 @@ public class SandboxTest { // Need an auth cache to use the new digest we made final AuthCache authCache = new BasicAuthCache(); authCache.put(targetHost, digest); - + // Add the authCache and thus solved digest to the context context.setAuthCache(authCache); @@ -81,6 +91,56 @@ public class SandboxTest { responseGood.close(); } } + client.close(); + } + // This test needs module spring-security-rest-digest-auth to be running + @Test + public final void whenWeKnowDigestParameters_thenNo401Status() throws AuthenticationException, ClientProtocolException, IOException, MalformedChallengeException { + final HttpHost targetHost = new HttpHost("localhost", 8080, "http"); + + final CredentialsProvider credsProvider = new BasicCredentialsProvider(); + credsProvider.setCredentials(AuthScope.ANY, new UsernamePasswordCredentials("user1", "user1Pass")); + + final CloseableHttpClient client = HttpClients.custom().setDefaultCredentialsProvider(credsProvider).build(); + + final HttpGet httpget = new HttpGet("http://localhost:8080/spring-security-rest-digest-auth/api/foos/1"); + + final HttpClientContext context = HttpClientContext.create(); + // == make it preemptive + final AuthCache authCache = new BasicAuthCache(); + final DigestScheme digestAuth = new DigestScheme(); + digestAuth.overrideParamter("realm", "Custom Realm Name"); + digestAuth.overrideParamter("nonce", "nonce value goes here"); + authCache.put(targetHost, digestAuth); + context.setAuthCache(authCache); + // == end + System.out.println("Executing The Request knowing the digest parameters ==== "); + final HttpResponse authResponse = client.execute(targetHost, httpget, context); + System.out.println(authResponse.toString()); + client.close(); + } + + // This test needs module spring-security-rest-digest-auth to be running + @Test + public final void whenDoNotKnowParameters_thenOnlyOne401() throws AuthenticationException, ClientProtocolException, IOException, MalformedChallengeException { + final HttpClientContext context = HttpClientContext.create(); + final HttpHost targetHost = new HttpHost("localhost", 8080, "http"); + final CredentialsProvider credsProvider = new BasicCredentialsProvider(); + credsProvider.setCredentials(AuthScope.ANY, new UsernamePasswordCredentials("user1", "user1Pass")); + final CloseableHttpClient client = HttpClients.custom().setDefaultCredentialsProvider(credsProvider).build(); + + final HttpGet httpget = new HttpGet("http://localhost:8080/spring-security-rest-digest-auth/api/foos/1"); + System.out.println("Executing The Request NOT knowing the digest parameters ==== "); + final HttpResponse tempResponse = client.execute(targetHost, httpget, context); + System.out.println(tempResponse.toString()); + + for (int i = 0; i < 3; i++) { + System.out.println("No more Challenges or 401"); + final CloseableHttpResponse authResponse = client.execute(targetHost, httpget, context); + System.out.println(authResponse.toString()); + authResponse.close(); + } + client.close(); } } From 604e79d4264b2170716205145693bbfe94be1ed6 Mon Sep 17 00:00:00 2001 From: DOHA Date: Sat, 18 Jun 2016 00:52:28 +0200 Subject: [PATCH 043/108] modify httpclient digest test --- .../org/baeldung/httpclient/SandboxTest.java | 65 +++++++++++++++---- 1 file changed, 53 insertions(+), 12 deletions(-) diff --git a/httpclient/src/test/java/org/baeldung/httpclient/SandboxTest.java b/httpclient/src/test/java/org/baeldung/httpclient/SandboxTest.java index eb3084f941..514611d1f9 100644 --- a/httpclient/src/test/java/org/baeldung/httpclient/SandboxTest.java +++ b/httpclient/src/test/java/org/baeldung/httpclient/SandboxTest.java @@ -1,5 +1,7 @@ package org.baeldung.httpclient; +import static org.junit.Assert.assertEquals; + import java.io.IOException; import org.apache.http.Header; @@ -24,29 +26,25 @@ import org.apache.http.impl.client.CloseableHttpClient; import org.apache.http.impl.client.HttpClients; import org.apache.http.impl.cookie.BasicClientCookie; import org.apache.http.util.EntityUtils; +import org.junit.Ignore; import org.junit.Test; public class SandboxTest { + // original example + @Ignore @Test - public final void whenInterestingDigestAuthScenario_then200OK() throws AuthenticationException, ClientProtocolException, IOException, MalformedChallengeException { + public final void whenInterestingDigestAuthScenario_then401UnAuthorized() throws AuthenticationException, ClientProtocolException, IOException, MalformedChallengeException { final HttpHost targetHost = new HttpHost("httpbin.org", 80, "http"); // set up the credentials to run agains the server final CredentialsProvider credsProvider = new BasicCredentialsProvider(); credsProvider.setCredentials(new AuthScope(targetHost.getHostName(), targetHost.getPort()), new UsernamePasswordCredentials("user", "passwd")); - // This endpoint need fake cookie to work properly - final CookieStore cookieStore = new BasicCookieStore(); - final BasicClientCookie cookie = new BasicClientCookie("fake", "fake_value"); - cookie.setDomain("httpbin.org"); - cookie.setPath("/"); - cookieStore.addCookie(cookie); - // We need a first run to get a 401 to seed the digest auth // Make a client using those creds - final CloseableHttpClient client = HttpClients.custom().setDefaultCookieStore(cookieStore).setDefaultCredentialsProvider(credsProvider).build(); + final CloseableHttpClient client = HttpClients.custom().setDefaultCredentialsProvider(credsProvider).build(); // And make a call to the URL we are after final HttpGet httpget = new HttpGet("http://httpbin.org/digest-auth/auth/user/passwd"); @@ -91,6 +89,49 @@ public class SandboxTest { responseGood.close(); } } + } + + @Test + public final void whenInterestingDigestAuthScenario_then200OK() throws AuthenticationException, ClientProtocolException, IOException, MalformedChallengeException { + final HttpHost targetHost = new HttpHost("httpbin.org", 80, "http"); + + // set up the credentials to run agains the server + final CredentialsProvider credsProvider = new BasicCredentialsProvider(); + credsProvider.setCredentials(new AuthScope(targetHost.getHostName(), targetHost.getPort()), new UsernamePasswordCredentials("user", "passwd")); + + // This endpoint need fake cookie to work properly + final CookieStore cookieStore = new BasicCookieStore(); + final BasicClientCookie cookie = new BasicClientCookie("fake", "fake_value"); + cookie.setDomain("httpbin.org"); + cookie.setPath("/"); + cookieStore.addCookie(cookie); + + // Make a client using those creds + final CloseableHttpClient client = HttpClients.custom().setDefaultCookieStore(cookieStore).setDefaultCredentialsProvider(credsProvider).build(); + + // And make a call to the URL we are after + final HttpGet httpget = new HttpGet("http://httpbin.org/digest-auth/auth/user/passwd"); + + // Create a context to use + final HttpClientContext context = HttpClientContext.create(); + + // Get a response from the sever (401 implicitly) + final HttpResponse authResponse = client.execute(targetHost, httpget, context); + assertEquals(200, authResponse.getStatusLine().getStatusCode()); + + // HttpClient will use cached digest parameters for future requests + System.out.println("Executing request " + httpget.getRequestLine() + " to target " + targetHost); + + for (int i = 0; i < 3; i++) { + final CloseableHttpResponse responseGood = client.execute(targetHost, httpget, context); + + try { + System.out.println("----------------------------------------"); + assertEquals(200, responseGood.getStatusLine().getStatusCode()); + } finally { + responseGood.close(); + } + } client.close(); } @@ -117,7 +158,7 @@ public class SandboxTest { // == end System.out.println("Executing The Request knowing the digest parameters ==== "); final HttpResponse authResponse = client.execute(targetHost, httpget, context); - System.out.println(authResponse.toString()); + assertEquals(200, authResponse.getStatusLine().getStatusCode()); client.close(); } @@ -133,12 +174,12 @@ public class SandboxTest { final HttpGet httpget = new HttpGet("http://localhost:8080/spring-security-rest-digest-auth/api/foos/1"); System.out.println("Executing The Request NOT knowing the digest parameters ==== "); final HttpResponse tempResponse = client.execute(targetHost, httpget, context); - System.out.println(tempResponse.toString()); + assertEquals(200, tempResponse.getStatusLine().getStatusCode()); for (int i = 0; i < 3; i++) { System.out.println("No more Challenges or 401"); final CloseableHttpResponse authResponse = client.execute(targetHost, httpget, context); - System.out.println(authResponse.toString()); + assertEquals(200, authResponse.getStatusLine().getStatusCode()); authResponse.close(); } client.close(); From 9a915901af244200f119a1f4b36bb4b743c4be06 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=C3=81lvaro=20Fern=C3=A1ndez=20Gonz=C3=A1lez?= Date: Sat, 18 Jun 2016 19:22:30 +0200 Subject: [PATCH 044/108] Add mock-comparisons module (#453) * Add new module for mocks comparison. * Add sources for testing. * Changes on testCase. * Enter some tests for mockito. * More tests for Mockito. * Even more tests. * Add the rest of the mocking libraries. * Javadoc on test. * Test bare bones for EasyMock. * Fist kind of test and setup. * Add tests using EasyMock with a change on LoginService. * Create LoginControllerTest.java * Test setup * [JMockit] No method called test. * [JMockit] Two methods called test. * [JMockit] One method called test. * [JMockit] Exception mock test * [JMockit] Mocked object to pass around test. * [JMockit] Custom matcher test. * [JMockit] Partial mocking test. * [JMockit] Fix with IDE. * Not stubs. Mocks. MOCKS!!! * Remove unnecesary import. --- mock-comparisons/README.md | 7 + mock-comparisons/pom.xml | 105 +++++++++++++ .../mocks/testCase/LoginController.java | 29 ++++ .../org/baeldung/mocks/testCase/LoginDao.java | 9 ++ .../baeldung/mocks/testCase/LoginService.java | 33 ++++ .../org/baeldung/mocks/testCase/UserForm.java | 15 ++ .../mocks/easymock/LoginControllerTest.java | 147 +++++++++++++++++ .../mocks/jmockit/LoginControllerTest.java | 148 ++++++++++++++++++ .../mocks/mockito/LoginControllerTest.java | 129 +++++++++++++++ pom.xml | 1 + 10 files changed, 623 insertions(+) create mode 100644 mock-comparisons/README.md create mode 100644 mock-comparisons/pom.xml create mode 100644 mock-comparisons/src/main/java/org/baeldung/mocks/testCase/LoginController.java create mode 100644 mock-comparisons/src/main/java/org/baeldung/mocks/testCase/LoginDao.java create mode 100644 mock-comparisons/src/main/java/org/baeldung/mocks/testCase/LoginService.java create mode 100644 mock-comparisons/src/main/java/org/baeldung/mocks/testCase/UserForm.java create mode 100644 mock-comparisons/src/test/java/org/baeldung/mocks/easymock/LoginControllerTest.java create mode 100644 mock-comparisons/src/test/java/org/baeldung/mocks/jmockit/LoginControllerTest.java create mode 100644 mock-comparisons/src/test/java/org/baeldung/mocks/mockito/LoginControllerTest.java diff --git a/mock-comparisons/README.md b/mock-comparisons/README.md new file mode 100644 index 0000000000..7795487b77 --- /dev/null +++ b/mock-comparisons/README.md @@ -0,0 +1,7 @@ +========= + +## Mock comparison realated tutorials + + +### Relevant Articles: +- [Mockito vs EasyMock vs JMockit](http://www.baeldung.com/mockito-vs-easymock-vs-jmockit) diff --git a/mock-comparisons/pom.xml b/mock-comparisons/pom.xml new file mode 100644 index 0000000000..c7a6dcb09d --- /dev/null +++ b/mock-comparisons/pom.xml @@ -0,0 +1,105 @@ + + 4.0.0 + org.baeldung + mock-comparisons + 0.1-SNAPSHOT + + mockito + + + + + + + + + + + junit + junit + ${junit.version} + test + + + + org.mockito + mockito-core + ${mockito.version} + test + + + + org.easymock + easymock + ${easymock.version} + test + + + + org.jmockit + jmockit + ${jmockit.version} + test + + + + + + mock-comparisons + + + src/main/resources + true + + + + + + + org.apache.maven.plugins + maven-compiler-plugin + ${maven-compiler-plugin.version} + + 1.7 + 1.7 + + + + + org.apache.maven.plugins + maven-surefire-plugin + ${maven-surefire-plugin.version} + + + + + + + + + + + + + + + + + + + 4.12 + 1.10.19 + 3.4 + 1.24 + + + 3.3 + 2.6 + 2.18.1 + 2.7 + 1.4.14 + + + + \ No newline at end of file diff --git a/mock-comparisons/src/main/java/org/baeldung/mocks/testCase/LoginController.java b/mock-comparisons/src/main/java/org/baeldung/mocks/testCase/LoginController.java new file mode 100644 index 0000000000..2e25332db8 --- /dev/null +++ b/mock-comparisons/src/main/java/org/baeldung/mocks/testCase/LoginController.java @@ -0,0 +1,29 @@ +package org.baeldung.mocks.testCase; + +public class LoginController { + + public LoginService loginService; + + public String login(UserForm userForm){ + if(null == userForm){ + return "ERROR"; + }else{ + boolean logged; + + try { + logged = loginService.login(userForm); + } catch (Exception e) { + return "ERROR"; + } + + if(logged){ + loginService.setCurrentUser(userForm.getUsername()); + return "OK"; + }else{ + return "KO"; + } + } + } + + // standard setters and getters +} diff --git a/mock-comparisons/src/main/java/org/baeldung/mocks/testCase/LoginDao.java b/mock-comparisons/src/main/java/org/baeldung/mocks/testCase/LoginDao.java new file mode 100644 index 0000000000..4641fc1889 --- /dev/null +++ b/mock-comparisons/src/main/java/org/baeldung/mocks/testCase/LoginDao.java @@ -0,0 +1,9 @@ +package org.baeldung.mocks.testCase; + +public class LoginDao { + + public int login(UserForm userForm){ + //actual call to a third party library + return 0; + } +} diff --git a/mock-comparisons/src/main/java/org/baeldung/mocks/testCase/LoginService.java b/mock-comparisons/src/main/java/org/baeldung/mocks/testCase/LoginService.java new file mode 100644 index 0000000000..2a20159393 --- /dev/null +++ b/mock-comparisons/src/main/java/org/baeldung/mocks/testCase/LoginService.java @@ -0,0 +1,33 @@ +package org.baeldung.mocks.testCase; + +public class LoginService { + + private LoginDao loginDao; + + private String currentUser; + + public boolean login(UserForm userForm) { + assert null != userForm; + + int loginResults = loginDao.login(userForm); + + switch (loginResults){ + case 1: + return true; + default: + return false; + } + } + + public void setCurrentUser(String username) { + if(null != username){ + this.currentUser = username; + } + } + + public void setLoginDao(LoginDao loginDao) { + this.loginDao = loginDao; + } + + // standard setters and getters +} diff --git a/mock-comparisons/src/main/java/org/baeldung/mocks/testCase/UserForm.java b/mock-comparisons/src/main/java/org/baeldung/mocks/testCase/UserForm.java new file mode 100644 index 0000000000..d6ee444909 --- /dev/null +++ b/mock-comparisons/src/main/java/org/baeldung/mocks/testCase/UserForm.java @@ -0,0 +1,15 @@ +package org.baeldung.mocks.testCase; + +public class UserForm { + + // public access modifiers as only for testing + + public String password; + + public String username; + + public String getUsername(){ + return username; + } + +} diff --git a/mock-comparisons/src/test/java/org/baeldung/mocks/easymock/LoginControllerTest.java b/mock-comparisons/src/test/java/org/baeldung/mocks/easymock/LoginControllerTest.java new file mode 100644 index 0000000000..b80c28804a --- /dev/null +++ b/mock-comparisons/src/test/java/org/baeldung/mocks/easymock/LoginControllerTest.java @@ -0,0 +1,147 @@ +package org.baeldung.mocks.easymock; + +import org.baeldung.mocks.testCase.LoginController; +import org.baeldung.mocks.testCase.LoginDao; +import org.baeldung.mocks.testCase.LoginService; +import org.baeldung.mocks.testCase.UserForm; +import org.easymock.*; +import org.junit.Assert; +import org.junit.Test; +import org.junit.runner.RunWith; + +/** + *

Test for LoginController using EasyMock.

+ * Created by Alvaro on 12/06/2016. + */ +@RunWith(EasyMockRunner.class) +public class LoginControllerTest { + + @Mock + private LoginDao loginDao; + + @Mock + private LoginService loginService; + + @TestSubject + private LoginController loginController = new LoginController(); + + @Test + public void assertThatNoMethodHasBeenCalled() { + EasyMock.replay(loginService); + loginController.login(null); + + // no method called + EasyMock.verify(loginService); + } + + @Test + public void assertTwoMethodsHaveBeenCalled() { + UserForm userForm = new UserForm(); + userForm.username = "foo"; + EasyMock.expect(loginService.login(userForm)).andReturn(true); + loginService.setCurrentUser("foo"); + EasyMock.replay(loginService); + + String login = loginController.login(userForm); + + Assert.assertEquals("OK", login); + EasyMock.verify(loginService); + } + + @Test + public void assertOnlyOneMethodHasBeenCalled() { + UserForm userForm = new UserForm(); + userForm.username = "foo"; + EasyMock.expect(loginService.login(userForm)).andReturn(false); + EasyMock.replay(loginService); + + String login = loginController.login(userForm); + + Assert.assertEquals("KO", login); + EasyMock.verify(loginService); + } + + @Test + public void mockExceptionThrowing() { + UserForm userForm = new UserForm(); + EasyMock.expect(loginService.login(userForm)).andThrow(new IllegalArgumentException()); + EasyMock.replay(loginService); + + String login = loginController.login(userForm); + + Assert.assertEquals("ERROR", login); + EasyMock.verify(loginService); + } + + @Test + public void mockAnObjectToPassAround() { + UserForm userForm = EasyMock.mock(UserForm.class); + EasyMock.expect(userForm.getUsername()).andReturn("foo"); + EasyMock.expect(loginService.login(userForm)).andReturn(true); + loginService.setCurrentUser("foo"); + EasyMock.replay(userForm); + EasyMock.replay(loginService); + + String login = loginController.login(userForm); + + Assert.assertEquals("OK", login); + EasyMock.verify(userForm); + EasyMock.verify(loginService); + } + + @Test + public void argumentMatching() { + UserForm userForm = new UserForm(); + userForm.username = "foo"; + // default matcher + EasyMock.expect(loginService.login(EasyMock.isA(UserForm.class))).andReturn(true); + // complex matcher + loginService.setCurrentUser(specificArgumentMatching("foo")); + EasyMock.replay(loginService); + + String login = loginController.login(userForm); + + Assert.assertEquals("OK", login); + EasyMock.verify(loginService); + } + + private static String specificArgumentMatching(final String expected) { + EasyMock.reportMatcher(new IArgumentMatcher() { + @Override + public boolean matches(Object argument) { + return argument instanceof String && ((String) argument).startsWith(expected); + } + + @Override + public void appendTo(StringBuffer buffer) { + //NOOP + } + }); + return null; + } + + @Test + public void partialMocking() { + UserForm userForm = new UserForm(); + userForm.username = "foo"; + // use partial mock + LoginService loginServicePartial = EasyMock.partialMockBuilder(LoginService.class). + addMockedMethod("setCurrentUser").createMock(); + loginServicePartial.setCurrentUser("foo"); + // let service's login use implementation so let's mock DAO call + EasyMock.expect(loginDao.login(userForm)).andReturn(1); + + loginServicePartial.setLoginDao(loginDao); + loginController.loginService = loginServicePartial; + + EasyMock.replay(loginDao); + EasyMock.replay(loginServicePartial); + + String login = loginController.login(userForm); + + Assert.assertEquals("OK", login); + // verify mocked call + EasyMock.verify(loginServicePartial); + EasyMock.verify(loginDao); + } +} diff --git a/mock-comparisons/src/test/java/org/baeldung/mocks/jmockit/LoginControllerTest.java b/mock-comparisons/src/test/java/org/baeldung/mocks/jmockit/LoginControllerTest.java new file mode 100644 index 0000000000..d1c502ce55 --- /dev/null +++ b/mock-comparisons/src/test/java/org/baeldung/mocks/jmockit/LoginControllerTest.java @@ -0,0 +1,148 @@ +package org.baeldung.mocks.jmockit; + +import mockit.*; +import mockit.integration.junit4.JMockit; +import org.baeldung.mocks.testCase.LoginController; +import org.baeldung.mocks.testCase.LoginDao; +import org.baeldung.mocks.testCase.LoginService; +import org.baeldung.mocks.testCase.UserForm; +import org.hamcrest.BaseMatcher; +import org.hamcrest.Description; +import org.junit.Assert; +import org.junit.Test; +import org.junit.runner.RunWith; + +/** + *

Test for LoginController using JMockit.

+ * Created by Alvaro on 12/06/2016. + */ +@RunWith(JMockit.class) +public class LoginControllerTest { + + @Injectable + private LoginDao loginDao; + + @Injectable + private LoginService loginService; + + @Tested + private LoginController loginController; + + @Test + public void assertThatNoMethodHasBeenCalled() { + loginController.login(null); + // no method called + new FullVerifications(loginService) {}; + } + + @Test + public void assertTwoMethodsHaveBeenCalled() { + final UserForm userForm = new UserForm(); + userForm.username = "foo"; + new Expectations() {{ + loginService.login(userForm); result = true; + loginService.setCurrentUser("foo"); + }}; + + String login = loginController.login(userForm); + + Assert.assertEquals("OK", login); + new FullVerifications(loginService) {}; + } + + @Test + public void assertOnlyOneMethodHasBeenCalled() { + final UserForm userForm = new UserForm(); + userForm.username = "foo"; + new Expectations() {{ + loginService.login(userForm); result = false; + // no expectation for setCurrentUser + }}; + + String login = loginController.login(userForm); + + Assert.assertEquals("KO", login); + new FullVerifications(loginService) {}; + } + + @Test + public void mockExceptionThrowing() { + final UserForm userForm = new UserForm(); + new Expectations() {{ + loginService.login(userForm); result = new IllegalArgumentException(); + // no expectation for setCurrentUser + }}; + + String login = loginController.login(userForm); + + Assert.assertEquals("ERROR", login); + new FullVerifications(loginService) {}; + } + + @Test + public void mockAnObjectToPassAround(@Mocked final UserForm userForm) { + new Expectations() {{ + userForm.getUsername(); result = "foo"; + loginService.login(userForm); result = true; + loginService.setCurrentUser("foo"); + }}; + + String login = loginController.login(userForm); + + Assert.assertEquals("OK", login); + new FullVerifications(loginService) {}; + new FullVerifications(userForm) {}; + } + + @Test + public void argumentMatching() { + final UserForm userForm = new UserForm(); + userForm.username = "foo"; + // default matcher + new Expectations() {{ + loginService.login((UserForm) any); + result = true; + // complex matcher + loginService.setCurrentUser(withArgThat(new BaseMatcher() { + @Override + public boolean matches(Object item) { + return item instanceof String && ((String) item).startsWith("foo"); + } + + @Override + public void describeTo(Description description) { + //NOOP + } + })); + }}; + + String login = loginController.login(userForm); + + Assert.assertEquals("OK", login); + new FullVerifications(loginService) {}; + } + + @Test + public void partialMocking() { + // use partial mock + final LoginService partialLoginService = new LoginService(); + partialLoginService.setLoginDao(loginDao); + loginController.loginService = partialLoginService; + + final UserForm userForm = new UserForm(); + userForm.username = "foo"; + // let service's login use implementation so let's mock DAO call + new Expectations() {{ + loginDao.login(userForm); result = 1; + // no expectation for loginService.login + partialLoginService.setCurrentUser("foo"); + }}; + + String login = loginController.login(userForm); + + Assert.assertEquals("OK", login); + // verify mocked call + new FullVerifications(partialLoginService) {}; + new FullVerifications(loginDao) {}; + } +} diff --git a/mock-comparisons/src/test/java/org/baeldung/mocks/mockito/LoginControllerTest.java b/mock-comparisons/src/test/java/org/baeldung/mocks/mockito/LoginControllerTest.java new file mode 100644 index 0000000000..841dd493e6 --- /dev/null +++ b/mock-comparisons/src/test/java/org/baeldung/mocks/mockito/LoginControllerTest.java @@ -0,0 +1,129 @@ +package org.baeldung.mocks.mockito; + +import org.baeldung.mocks.testCase.LoginController; +import org.baeldung.mocks.testCase.LoginDao; +import org.baeldung.mocks.testCase.LoginService; +import org.baeldung.mocks.testCase.UserForm; +import org.junit.Assert; +import org.junit.Before; +import org.junit.Test; +import org.mockito.*; + +/** + *

Test for LoginController using Mockito.

+ * Created by Alvaro on 12/06/2016. + */ +public class LoginControllerTest { + + @Mock + private LoginDao loginDao; + + @Spy + @InjectMocks + private LoginService spiedLoginService; + + @Mock + private LoginService loginService; + + @InjectMocks + private LoginController loginController; + + @Before + public void setUp() { + loginController = new LoginController(); + MockitoAnnotations.initMocks(this); + } + + @Test + public void assertThatNoMethodHasBeenCalled() { + loginController.login(null); + // no method called + Mockito.verifyZeroInteractions(loginService); + } + + @Test + public void assertTwoMethodsHaveBeenCalled() { + UserForm userForm = new UserForm(); + userForm.username = "foo"; + Mockito.when(loginService.login(userForm)).thenReturn(true); + + String login = loginController.login(userForm); + + Assert.assertEquals("OK", login); + Mockito.verify(loginService).login(userForm); + Mockito.verify(loginService).setCurrentUser("foo"); + } + + @Test + public void assertOnlyOneMethodHasBeenCalled() { + UserForm userForm = new UserForm(); + userForm.username = "foo"; + Mockito.when(loginService.login(userForm)).thenReturn(false); + + String login = loginController.login(userForm); + + Assert.assertEquals("KO", login); + Mockito.verify(loginService).login(userForm); + Mockito.verifyNoMoreInteractions(loginService); + } + + @Test + public void mockExceptionThrowing() { + UserForm userForm = new UserForm(); + Mockito.when(loginService.login(userForm)).thenThrow(IllegalArgumentException.class); + + String login = loginController.login(userForm); + + Assert.assertEquals("ERROR", login); + Mockito.verify(loginService).login(userForm); + Mockito.verifyZeroInteractions(loginService); + } + + @Test + public void mockAnObjectToPassAround() { + UserForm userForm = Mockito.when(Mockito.mock(UserForm.class).getUsername()).thenReturn("foo").getMock(); + Mockito.when(loginService.login(userForm)).thenReturn(true); + + String login = loginController.login(userForm); + + Assert.assertEquals("OK", login); + Mockito.verify(loginService).login(userForm); + Mockito.verify(loginService).setCurrentUser("foo"); + } + + @Test + public void argumentMatching() { + UserForm userForm = new UserForm(); + userForm.username = "foo"; + // default matcher + Mockito.when(loginService.login(Mockito.any(UserForm.class))).thenReturn(true); + + String login = loginController.login(userForm); + + Assert.assertEquals("OK", login); + Mockito.verify(loginService).login(userForm); + // complex matcher + Mockito.verify(loginService).setCurrentUser(Mockito.argThat(new ArgumentMatcher() { + @Override + public boolean matches(Object argument) { + return argument instanceof String && ((String) argument).startsWith("foo"); + } + })); + } + + @Test + public void partialMocking() { + // use partial mock + loginController.loginService = spiedLoginService; + UserForm userForm = new UserForm(); + userForm.username = "foo"; + // let service's login use implementation so let's mock DAO call + Mockito.when(loginDao.login(userForm)).thenReturn(1); + + String login = loginController.login(userForm); + + Assert.assertEquals("OK", login); + // verify mocked call + Mockito.verify(spiedLoginService).setCurrentUser("foo"); + } +} diff --git a/pom.xml b/pom.xml index 85861685ba..f16861cc68 100644 --- a/pom.xml +++ b/pom.xml @@ -23,6 +23,7 @@ jooq-spring json-path mockito + mock-comparisons jee7schedule querydsl From d9223b24fbb1709a9eb20545e2a67cf43ccd5563 Mon Sep 17 00:00:00 2001 From: Grzegorz Piwowarek Date: Sat, 18 Jun 2016 20:21:17 +0200 Subject: [PATCH 045/108] Refactor mock-comparisons --- mock-comparisons/pom.xml | 47 +++++------------ .../mocks/testCase/LoginController.java | 10 ++-- .../org/baeldung/mocks/testCase/LoginDao.java | 2 +- .../baeldung/mocks/testCase/LoginService.java | 4 +- .../org/baeldung/mocks/testCase/UserForm.java | 2 +- .../mocks/easymock/LoginControllerTest.java | 6 +-- .../mocks/jmockit/LoginControllerTest.java | 51 +++++++++++-------- .../mocks/mockito/LoginControllerTest.java | 4 -- 8 files changed, 54 insertions(+), 72 deletions(-) diff --git a/mock-comparisons/pom.xml b/mock-comparisons/pom.xml index c7a6dcb09d..97e24c61cd 100644 --- a/mock-comparisons/pom.xml +++ b/mock-comparisons/pom.xml @@ -7,14 +7,18 @@ mockito + + 4.12 + 1.10.19 + 3.4 + 1.24 + + + 3.3 + 2.18.1 + + - - - - - - - junit junit @@ -61,8 +65,8 @@ maven-compiler-plugin ${maven-compiler-plugin.version} - 1.7 - 1.7 + 1.8 + 1.8 @@ -76,30 +80,5 @@
- - - - - - - - - - - - - 4.12 - 1.10.19 - 3.4 - 1.24 - - - 3.3 - 2.6 - 2.18.1 - 2.7 - 1.4.14 - - \ No newline at end of file diff --git a/mock-comparisons/src/main/java/org/baeldung/mocks/testCase/LoginController.java b/mock-comparisons/src/main/java/org/baeldung/mocks/testCase/LoginController.java index 2e25332db8..914b0034d2 100644 --- a/mock-comparisons/src/main/java/org/baeldung/mocks/testCase/LoginController.java +++ b/mock-comparisons/src/main/java/org/baeldung/mocks/testCase/LoginController.java @@ -4,10 +4,10 @@ public class LoginController { public LoginService loginService; - public String login(UserForm userForm){ - if(null == userForm){ + public String login(UserForm userForm) { + if (null == userForm) { return "ERROR"; - }else{ + } else { boolean logged; try { @@ -16,10 +16,10 @@ public class LoginController { return "ERROR"; } - if(logged){ + if (logged) { loginService.setCurrentUser(userForm.getUsername()); return "OK"; - }else{ + } else { return "KO"; } } diff --git a/mock-comparisons/src/main/java/org/baeldung/mocks/testCase/LoginDao.java b/mock-comparisons/src/main/java/org/baeldung/mocks/testCase/LoginDao.java index 4641fc1889..2cbff6c9d4 100644 --- a/mock-comparisons/src/main/java/org/baeldung/mocks/testCase/LoginDao.java +++ b/mock-comparisons/src/main/java/org/baeldung/mocks/testCase/LoginDao.java @@ -2,7 +2,7 @@ package org.baeldung.mocks.testCase; public class LoginDao { - public int login(UserForm userForm){ + public int login(UserForm userForm) { //actual call to a third party library return 0; } diff --git a/mock-comparisons/src/main/java/org/baeldung/mocks/testCase/LoginService.java b/mock-comparisons/src/main/java/org/baeldung/mocks/testCase/LoginService.java index 2a20159393..d6a31a8047 100644 --- a/mock-comparisons/src/main/java/org/baeldung/mocks/testCase/LoginService.java +++ b/mock-comparisons/src/main/java/org/baeldung/mocks/testCase/LoginService.java @@ -11,7 +11,7 @@ public class LoginService { int loginResults = loginDao.login(userForm); - switch (loginResults){ + switch (loginResults) { case 1: return true; default: @@ -20,7 +20,7 @@ public class LoginService { } public void setCurrentUser(String username) { - if(null != username){ + if (null != username) { this.currentUser = username; } } diff --git a/mock-comparisons/src/main/java/org/baeldung/mocks/testCase/UserForm.java b/mock-comparisons/src/main/java/org/baeldung/mocks/testCase/UserForm.java index d6ee444909..14136d0f31 100644 --- a/mock-comparisons/src/main/java/org/baeldung/mocks/testCase/UserForm.java +++ b/mock-comparisons/src/main/java/org/baeldung/mocks/testCase/UserForm.java @@ -8,7 +8,7 @@ public class UserForm { public String username; - public String getUsername(){ + public String getUsername() { return username; } diff --git a/mock-comparisons/src/test/java/org/baeldung/mocks/easymock/LoginControllerTest.java b/mock-comparisons/src/test/java/org/baeldung/mocks/easymock/LoginControllerTest.java index b80c28804a..25d2b91ede 100644 --- a/mock-comparisons/src/test/java/org/baeldung/mocks/easymock/LoginControllerTest.java +++ b/mock-comparisons/src/test/java/org/baeldung/mocks/easymock/LoginControllerTest.java @@ -9,10 +9,6 @@ import org.junit.Assert; import org.junit.Test; import org.junit.runner.RunWith; -/** - *

Test for LoginController using EasyMock.

- * Created by Alvaro on 12/06/2016. - */ @RunWith(EasyMockRunner.class) public class LoginControllerTest { @@ -133,7 +129,7 @@ public class LoginControllerTest { loginServicePartial.setLoginDao(loginDao); loginController.loginService = loginServicePartial; - + EasyMock.replay(loginDao); EasyMock.replay(loginServicePartial); diff --git a/mock-comparisons/src/test/java/org/baeldung/mocks/jmockit/LoginControllerTest.java b/mock-comparisons/src/test/java/org/baeldung/mocks/jmockit/LoginControllerTest.java index d1c502ce55..621342fed2 100644 --- a/mock-comparisons/src/test/java/org/baeldung/mocks/jmockit/LoginControllerTest.java +++ b/mock-comparisons/src/test/java/org/baeldung/mocks/jmockit/LoginControllerTest.java @@ -12,10 +12,6 @@ import org.junit.Assert; import org.junit.Test; import org.junit.runner.RunWith; -/** - *

Test for LoginController using JMockit.

- * Created by Alvaro on 12/06/2016. - */ @RunWith(JMockit.class) public class LoginControllerTest { @@ -32,7 +28,8 @@ public class LoginControllerTest { public void assertThatNoMethodHasBeenCalled() { loginController.login(null); // no method called - new FullVerifications(loginService) {}; + new FullVerifications(loginService) { + }; } @Test @@ -40,14 +37,16 @@ public class LoginControllerTest { final UserForm userForm = new UserForm(); userForm.username = "foo"; new Expectations() {{ - loginService.login(userForm); result = true; + loginService.login(userForm); + result = true; loginService.setCurrentUser("foo"); }}; String login = loginController.login(userForm); Assert.assertEquals("OK", login); - new FullVerifications(loginService) {}; + new FullVerifications(loginService) { + }; } @Test @@ -55,43 +54,51 @@ public class LoginControllerTest { final UserForm userForm = new UserForm(); userForm.username = "foo"; new Expectations() {{ - loginService.login(userForm); result = false; + loginService.login(userForm); + result = false; // no expectation for setCurrentUser }}; String login = loginController.login(userForm); Assert.assertEquals("KO", login); - new FullVerifications(loginService) {}; + new FullVerifications(loginService) { + }; } @Test public void mockExceptionThrowing() { final UserForm userForm = new UserForm(); new Expectations() {{ - loginService.login(userForm); result = new IllegalArgumentException(); + loginService.login(userForm); + result = new IllegalArgumentException(); // no expectation for setCurrentUser }}; String login = loginController.login(userForm); Assert.assertEquals("ERROR", login); - new FullVerifications(loginService) {}; + new FullVerifications(loginService) { + }; } @Test public void mockAnObjectToPassAround(@Mocked final UserForm userForm) { new Expectations() {{ - userForm.getUsername(); result = "foo"; - loginService.login(userForm); result = true; + userForm.getUsername(); + result = "foo"; + loginService.login(userForm); + result = true; loginService.setCurrentUser("foo"); }}; - + String login = loginController.login(userForm); Assert.assertEquals("OK", login); - new FullVerifications(loginService) {}; - new FullVerifications(userForm) {}; + new FullVerifications(loginService) { + }; + new FullVerifications(userForm) { + }; } @Test @@ -119,7 +126,8 @@ public class LoginControllerTest { String login = loginController.login(userForm); Assert.assertEquals("OK", login); - new FullVerifications(loginService) {}; + new FullVerifications(loginService) { + }; } @Test @@ -133,7 +141,8 @@ public class LoginControllerTest { userForm.username = "foo"; // let service's login use implementation so let's mock DAO call new Expectations() {{ - loginDao.login(userForm); result = 1; + loginDao.login(userForm); + result = 1; // no expectation for loginService.login partialLoginService.setCurrentUser("foo"); }}; @@ -142,7 +151,9 @@ public class LoginControllerTest { Assert.assertEquals("OK", login); // verify mocked call - new FullVerifications(partialLoginService) {}; - new FullVerifications(loginDao) {}; + new FullVerifications(partialLoginService) { + }; + new FullVerifications(loginDao) { + }; } } diff --git a/mock-comparisons/src/test/java/org/baeldung/mocks/mockito/LoginControllerTest.java b/mock-comparisons/src/test/java/org/baeldung/mocks/mockito/LoginControllerTest.java index 841dd493e6..59b28a2cb4 100644 --- a/mock-comparisons/src/test/java/org/baeldung/mocks/mockito/LoginControllerTest.java +++ b/mock-comparisons/src/test/java/org/baeldung/mocks/mockito/LoginControllerTest.java @@ -9,10 +9,6 @@ import org.junit.Before; import org.junit.Test; import org.mockito.*; -/** - *

Test for LoginController using Mockito.

- * Created by Alvaro on 12/06/2016. - */ public class LoginControllerTest { @Mock From 85ad446ccfb81b6289be24f4795aedd22e813554 Mon Sep 17 00:00:00 2001 From: nguyennamthai Date: Sun, 19 Jun 2016 02:57:35 +0700 Subject: [PATCH 046/108] First commit of protocol buffers. (#452) --- spring-protobuf/pom.xml | 43 + .../com/baeldung/protobuf/Application.java | 68 + .../baeldung/protobuf/BaeldungTraining.java | 2719 +++++++++++++++++ .../baeldung/protobuf/CourseController.java | 19 + .../baeldung/protobuf/CourseRepository.java | 17 + .../src/main/resources/baeldung.proto | 30 + .../baeldung/protobuf/ApplicationTest.java | 76 + 7 files changed, 2972 insertions(+) create mode 100644 spring-protobuf/pom.xml create mode 100644 spring-protobuf/src/main/java/com/baeldung/protobuf/Application.java create mode 100644 spring-protobuf/src/main/java/com/baeldung/protobuf/BaeldungTraining.java create mode 100644 spring-protobuf/src/main/java/com/baeldung/protobuf/CourseController.java create mode 100644 spring-protobuf/src/main/java/com/baeldung/protobuf/CourseRepository.java create mode 100644 spring-protobuf/src/main/resources/baeldung.proto create mode 100644 spring-protobuf/src/test/java/com/baeldung/protobuf/ApplicationTest.java diff --git a/spring-protobuf/pom.xml b/spring-protobuf/pom.xml new file mode 100644 index 0000000000..28338f26c3 --- /dev/null +++ b/spring-protobuf/pom.xml @@ -0,0 +1,43 @@ + + 4.0.0 + com.baeldung + spring-protobuf + 0.1-SNAPSHOT + spring-protobuf + + + org.springframework.boot + spring-boot-starter-parent + 1.2.4.RELEASE + + + + + com.google.protobuf + protobuf-java + 3.0.0-beta-3 + + + com.googlecode.protobuf-java-format + protobuf-java-format + 1.4 + + + + org.springframework.boot + spring-boot-starter-web + + + org.springframework.boot + spring-boot-starter-test + test + + + + org.apache.httpcomponents + httpclient + 4.5.2 + + + diff --git a/spring-protobuf/src/main/java/com/baeldung/protobuf/Application.java b/spring-protobuf/src/main/java/com/baeldung/protobuf/Application.java new file mode 100644 index 0000000000..38a49367a3 --- /dev/null +++ b/spring-protobuf/src/main/java/com/baeldung/protobuf/Application.java @@ -0,0 +1,68 @@ +package com.baeldung.protobuf; + +import java.util.ArrayList; +import java.util.Arrays; +import java.util.HashMap; +import java.util.List; +import java.util.Map; + +import org.springframework.boot.autoconfigure.SpringBootApplication; +import org.springframework.context.annotation.Bean; +import org.springframework.http.converter.protobuf.ProtobufHttpMessageConverter; +import org.springframework.web.client.RestTemplate; + +import com.baeldung.protobuf.BaeldungTraining.Course; +import com.baeldung.protobuf.BaeldungTraining.Student; +import com.baeldung.protobuf.BaeldungTraining.Student.PhoneNumber; +import com.baeldung.protobuf.BaeldungTraining.Student.PhoneType; + +@SpringBootApplication +public class Application { + @Bean + RestTemplate restTemplate(ProtobufHttpMessageConverter hmc) { + return new RestTemplate(Arrays.asList(hmc)); + } + + @Bean + ProtobufHttpMessageConverter protobufHttpMessageConverter() { + return new ProtobufHttpMessageConverter(); + } + + @Bean + public CourseRepository createDummyCourses() { + Map dummy = new HashMap<>(); + + Course course1 = Course.newBuilder().setId(1).setCourseName("REST with Spring").addAllStudent(createDummyStudents()).build(); + Course course2 = Course.newBuilder().setId(2).setCourseName("Learn Spring Security").addAllStudent(new ArrayList()).build(); + + dummy.put(course1.getId(), course1); + dummy.put(course2.getId(), course2); + + return new CourseRepository(dummy); + } + + private List createDummyStudents() { + List studentList = new ArrayList<>(); + + PhoneNumber phone1 = createPhone("123456", PhoneType.MOBILE); + Student student1 = createStudent(1, "John", "Doe", "john.doe@baeldung.com", Arrays.asList(phone1)); + + PhoneNumber phone2 = createPhone("234567", PhoneType.LANDLINE); + Student student2 = createStudent(2, "Richard", "Roe", "richard.roe@baeldung.com", Arrays.asList(phone2)); + + PhoneNumber phone3_1 = createPhone("345678", PhoneType.MOBILE); + PhoneNumber phone3_2 = createPhone("456789", PhoneType.LANDLINE); + Student student3 = createStudent(3, "Jane", "Doe", "jane.doe@baeldung.com", Arrays.asList(phone3_1, phone3_2)); + + studentList.addAll(Arrays.asList(student1, student2, student3)); + return studentList; + } + + private Student createStudent(int id, String firstName, String lastName, String email, List phones) { + return Student.newBuilder().setId(id).setFirstName(firstName).setLastName(lastName).setEmail(email).addAllPhone(phones).build(); + } + + private PhoneNumber createPhone(String number, PhoneType type) { + return PhoneNumber.newBuilder().setNumber(number).setType(type).build(); + } +} \ No newline at end of file diff --git a/spring-protobuf/src/main/java/com/baeldung/protobuf/BaeldungTraining.java b/spring-protobuf/src/main/java/com/baeldung/protobuf/BaeldungTraining.java new file mode 100644 index 0000000000..3869ebfaeb --- /dev/null +++ b/spring-protobuf/src/main/java/com/baeldung/protobuf/BaeldungTraining.java @@ -0,0 +1,2719 @@ +// Generated by the protocol buffer compiler. DO NOT EDIT! +// source: resources/baeldung.proto + +package com.baeldung.protobuf; + +public final class BaeldungTraining { + private BaeldungTraining() {} + public static void registerAllExtensions( + com.google.protobuf.ExtensionRegistry registry) { + } + public interface CourseOrBuilder extends + // @@protoc_insertion_point(interface_extends:baeldung.Course) + com.google.protobuf.MessageOrBuilder { + + /** + * optional int32 id = 1; + */ + int getId(); + + /** + * optional string course_name = 2; + */ + java.lang.String getCourseName(); + /** + * optional string course_name = 2; + */ + com.google.protobuf.ByteString + getCourseNameBytes(); + + /** + * repeated .baeldung.Student student = 3; + */ + java.util.List + getStudentList(); + /** + * repeated .baeldung.Student student = 3; + */ + com.baeldung.protobuf.BaeldungTraining.Student getStudent(int index); + /** + * repeated .baeldung.Student student = 3; + */ + int getStudentCount(); + /** + * repeated .baeldung.Student student = 3; + */ + java.util.List + getStudentOrBuilderList(); + /** + * repeated .baeldung.Student student = 3; + */ + com.baeldung.protobuf.BaeldungTraining.StudentOrBuilder getStudentOrBuilder( + int index); + } + /** + * Protobuf type {@code baeldung.Course} + */ + public static final class Course extends + com.google.protobuf.GeneratedMessage implements + // @@protoc_insertion_point(message_implements:baeldung.Course) + CourseOrBuilder { + // Use Course.newBuilder() to construct. + private Course(com.google.protobuf.GeneratedMessage.Builder builder) { + super(builder); + } + private Course() { + id_ = 0; + courseName_ = ""; + student_ = java.util.Collections.emptyList(); + } + + @java.lang.Override + public final com.google.protobuf.UnknownFieldSet + getUnknownFields() { + return com.google.protobuf.UnknownFieldSet.getDefaultInstance(); + } + private Course( + com.google.protobuf.CodedInputStream input, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws com.google.protobuf.InvalidProtocolBufferException { + this(); + int mutable_bitField0_ = 0; + try { + boolean done = false; + while (!done) { + int tag = input.readTag(); + switch (tag) { + case 0: + done = true; + break; + default: { + if (!input.skipField(tag)) { + done = true; + } + break; + } + case 8: { + + id_ = input.readInt32(); + break; + } + case 18: { + java.lang.String s = input.readStringRequireUtf8(); + + courseName_ = s; + break; + } + case 26: { + if (!((mutable_bitField0_ & 0x00000004) == 0x00000004)) { + student_ = new java.util.ArrayList(); + mutable_bitField0_ |= 0x00000004; + } + student_.add(input.readMessage(com.baeldung.protobuf.BaeldungTraining.Student.parser(), extensionRegistry)); + break; + } + } + } + } catch (com.google.protobuf.InvalidProtocolBufferException e) { + throw e.setUnfinishedMessage(this); + } catch (java.io.IOException e) { + throw new com.google.protobuf.InvalidProtocolBufferException( + e).setUnfinishedMessage(this); + } finally { + if (((mutable_bitField0_ & 0x00000004) == 0x00000004)) { + student_ = java.util.Collections.unmodifiableList(student_); + } + makeExtensionsImmutable(); + } + } + public static final com.google.protobuf.Descriptors.Descriptor + getDescriptor() { + return com.baeldung.protobuf.BaeldungTraining.internal_static_baeldung_Course_descriptor; + } + + protected com.google.protobuf.GeneratedMessage.FieldAccessorTable + internalGetFieldAccessorTable() { + return com.baeldung.protobuf.BaeldungTraining.internal_static_baeldung_Course_fieldAccessorTable + .ensureFieldAccessorsInitialized( + com.baeldung.protobuf.BaeldungTraining.Course.class, com.baeldung.protobuf.BaeldungTraining.Course.Builder.class); + } + + private int bitField0_; + public static final int ID_FIELD_NUMBER = 1; + private int id_; + /** + * optional int32 id = 1; + */ + public int getId() { + return id_; + } + + public static final int COURSE_NAME_FIELD_NUMBER = 2; + private volatile java.lang.Object courseName_; + /** + * optional string course_name = 2; + */ + public java.lang.String getCourseName() { + java.lang.Object ref = courseName_; + if (ref instanceof java.lang.String) { + return (java.lang.String) ref; + } else { + com.google.protobuf.ByteString bs = + (com.google.protobuf.ByteString) ref; + java.lang.String s = bs.toStringUtf8(); + courseName_ = s; + return s; + } + } + /** + * optional string course_name = 2; + */ + public com.google.protobuf.ByteString + getCourseNameBytes() { + java.lang.Object ref = courseName_; + if (ref instanceof java.lang.String) { + com.google.protobuf.ByteString b = + com.google.protobuf.ByteString.copyFromUtf8( + (java.lang.String) ref); + courseName_ = b; + return b; + } else { + return (com.google.protobuf.ByteString) ref; + } + } + + public static final int STUDENT_FIELD_NUMBER = 3; + private java.util.List student_; + /** + * repeated .baeldung.Student student = 3; + */ + public java.util.List getStudentList() { + return student_; + } + /** + * repeated .baeldung.Student student = 3; + */ + public java.util.List + getStudentOrBuilderList() { + return student_; + } + /** + * repeated .baeldung.Student student = 3; + */ + public int getStudentCount() { + return student_.size(); + } + /** + * repeated .baeldung.Student student = 3; + */ + public com.baeldung.protobuf.BaeldungTraining.Student getStudent(int index) { + return student_.get(index); + } + /** + * repeated .baeldung.Student student = 3; + */ + public com.baeldung.protobuf.BaeldungTraining.StudentOrBuilder getStudentOrBuilder( + int index) { + return student_.get(index); + } + + private byte memoizedIsInitialized = -1; + public final boolean isInitialized() { + byte isInitialized = memoizedIsInitialized; + if (isInitialized == 1) return true; + if (isInitialized == 0) return false; + + memoizedIsInitialized = 1; + return true; + } + + public void writeTo(com.google.protobuf.CodedOutputStream output) + throws java.io.IOException { + if (id_ != 0) { + output.writeInt32(1, id_); + } + if (!getCourseNameBytes().isEmpty()) { + com.google.protobuf.GeneratedMessage.writeString(output, 2, courseName_); + } + for (int i = 0; i < student_.size(); i++) { + output.writeMessage(3, student_.get(i)); + } + } + + public int getSerializedSize() { + int size = memoizedSize; + if (size != -1) return size; + + size = 0; + if (id_ != 0) { + size += com.google.protobuf.CodedOutputStream + .computeInt32Size(1, id_); + } + if (!getCourseNameBytes().isEmpty()) { + size += com.google.protobuf.GeneratedMessage.computeStringSize(2, courseName_); + } + for (int i = 0; i < student_.size(); i++) { + size += com.google.protobuf.CodedOutputStream + .computeMessageSize(3, student_.get(i)); + } + memoizedSize = size; + return size; + } + + private static final long serialVersionUID = 0L; + public static com.baeldung.protobuf.BaeldungTraining.Course parseFrom( + com.google.protobuf.ByteString data) + throws com.google.protobuf.InvalidProtocolBufferException { + return PARSER.parseFrom(data); + } + public static com.baeldung.protobuf.BaeldungTraining.Course parseFrom( + com.google.protobuf.ByteString data, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws com.google.protobuf.InvalidProtocolBufferException { + return PARSER.parseFrom(data, extensionRegistry); + } + public static com.baeldung.protobuf.BaeldungTraining.Course parseFrom(byte[] data) + throws com.google.protobuf.InvalidProtocolBufferException { + return PARSER.parseFrom(data); + } + public static com.baeldung.protobuf.BaeldungTraining.Course parseFrom( + byte[] data, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws com.google.protobuf.InvalidProtocolBufferException { + return PARSER.parseFrom(data, extensionRegistry); + } + public static com.baeldung.protobuf.BaeldungTraining.Course parseFrom(java.io.InputStream input) + throws java.io.IOException { + return com.google.protobuf.GeneratedMessage + .parseWithIOException(PARSER, input); + } + public static com.baeldung.protobuf.BaeldungTraining.Course parseFrom( + java.io.InputStream input, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws java.io.IOException { + return com.google.protobuf.GeneratedMessage + .parseWithIOException(PARSER, input, extensionRegistry); + } + public static com.baeldung.protobuf.BaeldungTraining.Course parseDelimitedFrom(java.io.InputStream input) + throws java.io.IOException { + return com.google.protobuf.GeneratedMessage + .parseDelimitedWithIOException(PARSER, input); + } + public static com.baeldung.protobuf.BaeldungTraining.Course parseDelimitedFrom( + java.io.InputStream input, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws java.io.IOException { + return com.google.protobuf.GeneratedMessage + .parseDelimitedWithIOException(PARSER, input, extensionRegistry); + } + public static com.baeldung.protobuf.BaeldungTraining.Course parseFrom( + com.google.protobuf.CodedInputStream input) + throws java.io.IOException { + return com.google.protobuf.GeneratedMessage + .parseWithIOException(PARSER, input); + } + public static com.baeldung.protobuf.BaeldungTraining.Course parseFrom( + com.google.protobuf.CodedInputStream input, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws java.io.IOException { + return com.google.protobuf.GeneratedMessage + .parseWithIOException(PARSER, input, extensionRegistry); + } + + public Builder newBuilderForType() { return newBuilder(); } + public static Builder newBuilder() { + return DEFAULT_INSTANCE.toBuilder(); + } + public static Builder newBuilder(com.baeldung.protobuf.BaeldungTraining.Course prototype) { + return DEFAULT_INSTANCE.toBuilder().mergeFrom(prototype); + } + public Builder toBuilder() { + return this == DEFAULT_INSTANCE + ? new Builder() : new Builder().mergeFrom(this); + } + + @java.lang.Override + protected Builder newBuilderForType( + com.google.protobuf.GeneratedMessage.BuilderParent parent) { + Builder builder = new Builder(parent); + return builder; + } + /** + * Protobuf type {@code baeldung.Course} + */ + public static final class Builder extends + com.google.protobuf.GeneratedMessage.Builder implements + // @@protoc_insertion_point(builder_implements:baeldung.Course) + com.baeldung.protobuf.BaeldungTraining.CourseOrBuilder { + public static final com.google.protobuf.Descriptors.Descriptor + getDescriptor() { + return com.baeldung.protobuf.BaeldungTraining.internal_static_baeldung_Course_descriptor; + } + + protected com.google.protobuf.GeneratedMessage.FieldAccessorTable + internalGetFieldAccessorTable() { + return com.baeldung.protobuf.BaeldungTraining.internal_static_baeldung_Course_fieldAccessorTable + .ensureFieldAccessorsInitialized( + com.baeldung.protobuf.BaeldungTraining.Course.class, com.baeldung.protobuf.BaeldungTraining.Course.Builder.class); + } + + // Construct using com.baeldung.protobuf.BaeldungTraining.Course.newBuilder() + private Builder() { + maybeForceBuilderInitialization(); + } + + private Builder( + com.google.protobuf.GeneratedMessage.BuilderParent parent) { + super(parent); + maybeForceBuilderInitialization(); + } + private void maybeForceBuilderInitialization() { + if (com.google.protobuf.GeneratedMessage.alwaysUseFieldBuilders) { + getStudentFieldBuilder(); + } + } + public Builder clear() { + super.clear(); + id_ = 0; + + courseName_ = ""; + + if (studentBuilder_ == null) { + student_ = java.util.Collections.emptyList(); + bitField0_ = (bitField0_ & ~0x00000004); + } else { + studentBuilder_.clear(); + } + return this; + } + + public com.google.protobuf.Descriptors.Descriptor + getDescriptorForType() { + return com.baeldung.protobuf.BaeldungTraining.internal_static_baeldung_Course_descriptor; + } + + public com.baeldung.protobuf.BaeldungTraining.Course getDefaultInstanceForType() { + return com.baeldung.protobuf.BaeldungTraining.Course.getDefaultInstance(); + } + + public com.baeldung.protobuf.BaeldungTraining.Course build() { + com.baeldung.protobuf.BaeldungTraining.Course result = buildPartial(); + if (!result.isInitialized()) { + throw newUninitializedMessageException(result); + } + return result; + } + + public com.baeldung.protobuf.BaeldungTraining.Course buildPartial() { + com.baeldung.protobuf.BaeldungTraining.Course result = new com.baeldung.protobuf.BaeldungTraining.Course(this); + int from_bitField0_ = bitField0_; + int to_bitField0_ = 0; + result.id_ = id_; + result.courseName_ = courseName_; + if (studentBuilder_ == null) { + if (((bitField0_ & 0x00000004) == 0x00000004)) { + student_ = java.util.Collections.unmodifiableList(student_); + bitField0_ = (bitField0_ & ~0x00000004); + } + result.student_ = student_; + } else { + result.student_ = studentBuilder_.build(); + } + result.bitField0_ = to_bitField0_; + onBuilt(); + return result; + } + + public Builder mergeFrom(com.google.protobuf.Message other) { + if (other instanceof com.baeldung.protobuf.BaeldungTraining.Course) { + return mergeFrom((com.baeldung.protobuf.BaeldungTraining.Course)other); + } else { + super.mergeFrom(other); + return this; + } + } + + public Builder mergeFrom(com.baeldung.protobuf.BaeldungTraining.Course other) { + if (other == com.baeldung.protobuf.BaeldungTraining.Course.getDefaultInstance()) return this; + if (other.getId() != 0) { + setId(other.getId()); + } + if (!other.getCourseName().isEmpty()) { + courseName_ = other.courseName_; + onChanged(); + } + if (studentBuilder_ == null) { + if (!other.student_.isEmpty()) { + if (student_.isEmpty()) { + student_ = other.student_; + bitField0_ = (bitField0_ & ~0x00000004); + } else { + ensureStudentIsMutable(); + student_.addAll(other.student_); + } + onChanged(); + } + } else { + if (!other.student_.isEmpty()) { + if (studentBuilder_.isEmpty()) { + studentBuilder_.dispose(); + studentBuilder_ = null; + student_ = other.student_; + bitField0_ = (bitField0_ & ~0x00000004); + studentBuilder_ = + com.google.protobuf.GeneratedMessage.alwaysUseFieldBuilders ? + getStudentFieldBuilder() : null; + } else { + studentBuilder_.addAllMessages(other.student_); + } + } + } + onChanged(); + return this; + } + + public final boolean isInitialized() { + return true; + } + + public Builder mergeFrom( + com.google.protobuf.CodedInputStream input, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws java.io.IOException { + com.baeldung.protobuf.BaeldungTraining.Course parsedMessage = null; + try { + parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry); + } catch (com.google.protobuf.InvalidProtocolBufferException e) { + parsedMessage = (com.baeldung.protobuf.BaeldungTraining.Course) e.getUnfinishedMessage(); + throw e.unwrapIOException(); + } finally { + if (parsedMessage != null) { + mergeFrom(parsedMessage); + } + } + return this; + } + private int bitField0_; + + private int id_ ; + /** + * optional int32 id = 1; + */ + public int getId() { + return id_; + } + /** + * optional int32 id = 1; + */ + public Builder setId(int value) { + + id_ = value; + onChanged(); + return this; + } + /** + * optional int32 id = 1; + */ + public Builder clearId() { + + id_ = 0; + onChanged(); + return this; + } + + private java.lang.Object courseName_ = ""; + /** + * optional string course_name = 2; + */ + public java.lang.String getCourseName() { + java.lang.Object ref = courseName_; + if (!(ref instanceof java.lang.String)) { + com.google.protobuf.ByteString bs = + (com.google.protobuf.ByteString) ref; + java.lang.String s = bs.toStringUtf8(); + courseName_ = s; + return s; + } else { + return (java.lang.String) ref; + } + } + /** + * optional string course_name = 2; + */ + public com.google.protobuf.ByteString + getCourseNameBytes() { + java.lang.Object ref = courseName_; + if (ref instanceof String) { + com.google.protobuf.ByteString b = + com.google.protobuf.ByteString.copyFromUtf8( + (java.lang.String) ref); + courseName_ = b; + return b; + } else { + return (com.google.protobuf.ByteString) ref; + } + } + /** + * optional string course_name = 2; + */ + public Builder setCourseName( + java.lang.String value) { + if (value == null) { + throw new NullPointerException(); + } + + courseName_ = value; + onChanged(); + return this; + } + /** + * optional string course_name = 2; + */ + public Builder clearCourseName() { + + courseName_ = getDefaultInstance().getCourseName(); + onChanged(); + return this; + } + /** + * optional string course_name = 2; + */ + public Builder setCourseNameBytes( + com.google.protobuf.ByteString value) { + if (value == null) { + throw new NullPointerException(); + } + checkByteStringIsUtf8(value); + + courseName_ = value; + onChanged(); + return this; + } + + private java.util.List student_ = + java.util.Collections.emptyList(); + private void ensureStudentIsMutable() { + if (!((bitField0_ & 0x00000004) == 0x00000004)) { + student_ = new java.util.ArrayList(student_); + bitField0_ |= 0x00000004; + } + } + + private com.google.protobuf.RepeatedFieldBuilder< + com.baeldung.protobuf.BaeldungTraining.Student, com.baeldung.protobuf.BaeldungTraining.Student.Builder, com.baeldung.protobuf.BaeldungTraining.StudentOrBuilder> studentBuilder_; + + /** + * repeated .baeldung.Student student = 3; + */ + public java.util.List getStudentList() { + if (studentBuilder_ == null) { + return java.util.Collections.unmodifiableList(student_); + } else { + return studentBuilder_.getMessageList(); + } + } + /** + * repeated .baeldung.Student student = 3; + */ + public int getStudentCount() { + if (studentBuilder_ == null) { + return student_.size(); + } else { + return studentBuilder_.getCount(); + } + } + /** + * repeated .baeldung.Student student = 3; + */ + public com.baeldung.protobuf.BaeldungTraining.Student getStudent(int index) { + if (studentBuilder_ == null) { + return student_.get(index); + } else { + return studentBuilder_.getMessage(index); + } + } + /** + * repeated .baeldung.Student student = 3; + */ + public Builder setStudent( + int index, com.baeldung.protobuf.BaeldungTraining.Student value) { + if (studentBuilder_ == null) { + if (value == null) { + throw new NullPointerException(); + } + ensureStudentIsMutable(); + student_.set(index, value); + onChanged(); + } else { + studentBuilder_.setMessage(index, value); + } + return this; + } + /** + * repeated .baeldung.Student student = 3; + */ + public Builder setStudent( + int index, com.baeldung.protobuf.BaeldungTraining.Student.Builder builderForValue) { + if (studentBuilder_ == null) { + ensureStudentIsMutable(); + student_.set(index, builderForValue.build()); + onChanged(); + } else { + studentBuilder_.setMessage(index, builderForValue.build()); + } + return this; + } + /** + * repeated .baeldung.Student student = 3; + */ + public Builder addStudent(com.baeldung.protobuf.BaeldungTraining.Student value) { + if (studentBuilder_ == null) { + if (value == null) { + throw new NullPointerException(); + } + ensureStudentIsMutable(); + student_.add(value); + onChanged(); + } else { + studentBuilder_.addMessage(value); + } + return this; + } + /** + * repeated .baeldung.Student student = 3; + */ + public Builder addStudent( + int index, com.baeldung.protobuf.BaeldungTraining.Student value) { + if (studentBuilder_ == null) { + if (value == null) { + throw new NullPointerException(); + } + ensureStudentIsMutable(); + student_.add(index, value); + onChanged(); + } else { + studentBuilder_.addMessage(index, value); + } + return this; + } + /** + * repeated .baeldung.Student student = 3; + */ + public Builder addStudent( + com.baeldung.protobuf.BaeldungTraining.Student.Builder builderForValue) { + if (studentBuilder_ == null) { + ensureStudentIsMutable(); + student_.add(builderForValue.build()); + onChanged(); + } else { + studentBuilder_.addMessage(builderForValue.build()); + } + return this; + } + /** + * repeated .baeldung.Student student = 3; + */ + public Builder addStudent( + int index, com.baeldung.protobuf.BaeldungTraining.Student.Builder builderForValue) { + if (studentBuilder_ == null) { + ensureStudentIsMutable(); + student_.add(index, builderForValue.build()); + onChanged(); + } else { + studentBuilder_.addMessage(index, builderForValue.build()); + } + return this; + } + /** + * repeated .baeldung.Student student = 3; + */ + public Builder addAllStudent( + java.lang.Iterable values) { + if (studentBuilder_ == null) { + ensureStudentIsMutable(); + com.google.protobuf.AbstractMessageLite.Builder.addAll( + values, student_); + onChanged(); + } else { + studentBuilder_.addAllMessages(values); + } + return this; + } + /** + * repeated .baeldung.Student student = 3; + */ + public Builder clearStudent() { + if (studentBuilder_ == null) { + student_ = java.util.Collections.emptyList(); + bitField0_ = (bitField0_ & ~0x00000004); + onChanged(); + } else { + studentBuilder_.clear(); + } + return this; + } + /** + * repeated .baeldung.Student student = 3; + */ + public Builder removeStudent(int index) { + if (studentBuilder_ == null) { + ensureStudentIsMutable(); + student_.remove(index); + onChanged(); + } else { + studentBuilder_.remove(index); + } + return this; + } + /** + * repeated .baeldung.Student student = 3; + */ + public com.baeldung.protobuf.BaeldungTraining.Student.Builder getStudentBuilder( + int index) { + return getStudentFieldBuilder().getBuilder(index); + } + /** + * repeated .baeldung.Student student = 3; + */ + public com.baeldung.protobuf.BaeldungTraining.StudentOrBuilder getStudentOrBuilder( + int index) { + if (studentBuilder_ == null) { + return student_.get(index); } else { + return studentBuilder_.getMessageOrBuilder(index); + } + } + /** + * repeated .baeldung.Student student = 3; + */ + public java.util.List + getStudentOrBuilderList() { + if (studentBuilder_ != null) { + return studentBuilder_.getMessageOrBuilderList(); + } else { + return java.util.Collections.unmodifiableList(student_); + } + } + /** + * repeated .baeldung.Student student = 3; + */ + public com.baeldung.protobuf.BaeldungTraining.Student.Builder addStudentBuilder() { + return getStudentFieldBuilder().addBuilder( + com.baeldung.protobuf.BaeldungTraining.Student.getDefaultInstance()); + } + /** + * repeated .baeldung.Student student = 3; + */ + public com.baeldung.protobuf.BaeldungTraining.Student.Builder addStudentBuilder( + int index) { + return getStudentFieldBuilder().addBuilder( + index, com.baeldung.protobuf.BaeldungTraining.Student.getDefaultInstance()); + } + /** + * repeated .baeldung.Student student = 3; + */ + public java.util.List + getStudentBuilderList() { + return getStudentFieldBuilder().getBuilderList(); + } + private com.google.protobuf.RepeatedFieldBuilder< + com.baeldung.protobuf.BaeldungTraining.Student, com.baeldung.protobuf.BaeldungTraining.Student.Builder, com.baeldung.protobuf.BaeldungTraining.StudentOrBuilder> + getStudentFieldBuilder() { + if (studentBuilder_ == null) { + studentBuilder_ = new com.google.protobuf.RepeatedFieldBuilder< + com.baeldung.protobuf.BaeldungTraining.Student, com.baeldung.protobuf.BaeldungTraining.Student.Builder, com.baeldung.protobuf.BaeldungTraining.StudentOrBuilder>( + student_, + ((bitField0_ & 0x00000004) == 0x00000004), + getParentForChildren(), + isClean()); + student_ = null; + } + return studentBuilder_; + } + public final Builder setUnknownFields( + final com.google.protobuf.UnknownFieldSet unknownFields) { + return this; + } + + public final Builder mergeUnknownFields( + final com.google.protobuf.UnknownFieldSet unknownFields) { + return this; + } + + + // @@protoc_insertion_point(builder_scope:baeldung.Course) + } + + // @@protoc_insertion_point(class_scope:baeldung.Course) + private static final com.baeldung.protobuf.BaeldungTraining.Course DEFAULT_INSTANCE; + static { + DEFAULT_INSTANCE = new com.baeldung.protobuf.BaeldungTraining.Course(); + } + + public static com.baeldung.protobuf.BaeldungTraining.Course getDefaultInstance() { + return DEFAULT_INSTANCE; + } + + private static final com.google.protobuf.Parser + PARSER = new com.google.protobuf.AbstractParser() { + public Course parsePartialFrom( + com.google.protobuf.CodedInputStream input, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws com.google.protobuf.InvalidProtocolBufferException { + return new Course(input, extensionRegistry); + } + }; + + public static com.google.protobuf.Parser parser() { + return PARSER; + } + + @java.lang.Override + public com.google.protobuf.Parser getParserForType() { + return PARSER; + } + + public com.baeldung.protobuf.BaeldungTraining.Course getDefaultInstanceForType() { + return DEFAULT_INSTANCE; + } + + } + + public interface StudentOrBuilder extends + // @@protoc_insertion_point(interface_extends:baeldung.Student) + com.google.protobuf.MessageOrBuilder { + + /** + * optional int32 id = 1; + */ + int getId(); + + /** + * optional string first_name = 2; + */ + java.lang.String getFirstName(); + /** + * optional string first_name = 2; + */ + com.google.protobuf.ByteString + getFirstNameBytes(); + + /** + * optional string last_name = 3; + */ + java.lang.String getLastName(); + /** + * optional string last_name = 3; + */ + com.google.protobuf.ByteString + getLastNameBytes(); + + /** + * optional string email = 4; + */ + java.lang.String getEmail(); + /** + * optional string email = 4; + */ + com.google.protobuf.ByteString + getEmailBytes(); + + /** + * repeated .baeldung.Student.PhoneNumber phone = 5; + */ + java.util.List + getPhoneList(); + /** + * repeated .baeldung.Student.PhoneNumber phone = 5; + */ + com.baeldung.protobuf.BaeldungTraining.Student.PhoneNumber getPhone(int index); + /** + * repeated .baeldung.Student.PhoneNumber phone = 5; + */ + int getPhoneCount(); + /** + * repeated .baeldung.Student.PhoneNumber phone = 5; + */ + java.util.List + getPhoneOrBuilderList(); + /** + * repeated .baeldung.Student.PhoneNumber phone = 5; + */ + com.baeldung.protobuf.BaeldungTraining.Student.PhoneNumberOrBuilder getPhoneOrBuilder( + int index); + } + /** + * Protobuf type {@code baeldung.Student} + */ + public static final class Student extends + com.google.protobuf.GeneratedMessage implements + // @@protoc_insertion_point(message_implements:baeldung.Student) + StudentOrBuilder { + // Use Student.newBuilder() to construct. + private Student(com.google.protobuf.GeneratedMessage.Builder builder) { + super(builder); + } + private Student() { + id_ = 0; + firstName_ = ""; + lastName_ = ""; + email_ = ""; + phone_ = java.util.Collections.emptyList(); + } + + @java.lang.Override + public final com.google.protobuf.UnknownFieldSet + getUnknownFields() { + return com.google.protobuf.UnknownFieldSet.getDefaultInstance(); + } + private Student( + com.google.protobuf.CodedInputStream input, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws com.google.protobuf.InvalidProtocolBufferException { + this(); + int mutable_bitField0_ = 0; + try { + boolean done = false; + while (!done) { + int tag = input.readTag(); + switch (tag) { + case 0: + done = true; + break; + default: { + if (!input.skipField(tag)) { + done = true; + } + break; + } + case 8: { + + id_ = input.readInt32(); + break; + } + case 18: { + java.lang.String s = input.readStringRequireUtf8(); + + firstName_ = s; + break; + } + case 26: { + java.lang.String s = input.readStringRequireUtf8(); + + lastName_ = s; + break; + } + case 34: { + java.lang.String s = input.readStringRequireUtf8(); + + email_ = s; + break; + } + case 42: { + if (!((mutable_bitField0_ & 0x00000010) == 0x00000010)) { + phone_ = new java.util.ArrayList(); + mutable_bitField0_ |= 0x00000010; + } + phone_.add(input.readMessage(com.baeldung.protobuf.BaeldungTraining.Student.PhoneNumber.parser(), extensionRegistry)); + break; + } + } + } + } catch (com.google.protobuf.InvalidProtocolBufferException e) { + throw e.setUnfinishedMessage(this); + } catch (java.io.IOException e) { + throw new com.google.protobuf.InvalidProtocolBufferException( + e).setUnfinishedMessage(this); + } finally { + if (((mutable_bitField0_ & 0x00000010) == 0x00000010)) { + phone_ = java.util.Collections.unmodifiableList(phone_); + } + makeExtensionsImmutable(); + } + } + public static final com.google.protobuf.Descriptors.Descriptor + getDescriptor() { + return com.baeldung.protobuf.BaeldungTraining.internal_static_baeldung_Student_descriptor; + } + + protected com.google.protobuf.GeneratedMessage.FieldAccessorTable + internalGetFieldAccessorTable() { + return com.baeldung.protobuf.BaeldungTraining.internal_static_baeldung_Student_fieldAccessorTable + .ensureFieldAccessorsInitialized( + com.baeldung.protobuf.BaeldungTraining.Student.class, com.baeldung.protobuf.BaeldungTraining.Student.Builder.class); + } + + /** + * Protobuf enum {@code baeldung.Student.PhoneType} + */ + public enum PhoneType + implements com.google.protobuf.ProtocolMessageEnum { + /** + * MOBILE = 0; + */ + MOBILE(0), + /** + * LANDLINE = 1; + */ + LANDLINE(1), + UNRECOGNIZED(-1), + ; + + /** + * MOBILE = 0; + */ + public static final int MOBILE_VALUE = 0; + /** + * LANDLINE = 1; + */ + public static final int LANDLINE_VALUE = 1; + + + public final int getNumber() { + if (this == UNRECOGNIZED) { + throw new java.lang.IllegalArgumentException( + "Can't get the number of an unknown enum value."); + } + return value; + } + + /** + * @deprecated Use {@link #forNumber(int)} instead. + */ + @java.lang.Deprecated + public static PhoneType valueOf(int value) { + return forNumber(value); + } + + public static PhoneType forNumber(int value) { + switch (value) { + case 0: return MOBILE; + case 1: return LANDLINE; + default: return null; + } + } + + public static com.google.protobuf.Internal.EnumLiteMap + internalGetValueMap() { + return internalValueMap; + } + private static final com.google.protobuf.Internal.EnumLiteMap< + PhoneType> internalValueMap = + new com.google.protobuf.Internal.EnumLiteMap() { + public PhoneType findValueByNumber(int number) { + return PhoneType.forNumber(number); + } + }; + + public final com.google.protobuf.Descriptors.EnumValueDescriptor + getValueDescriptor() { + return getDescriptor().getValues().get(ordinal()); + } + public final com.google.protobuf.Descriptors.EnumDescriptor + getDescriptorForType() { + return getDescriptor(); + } + public static final com.google.protobuf.Descriptors.EnumDescriptor + getDescriptor() { + return com.baeldung.protobuf.BaeldungTraining.Student.getDescriptor().getEnumTypes().get(0); + } + + private static final PhoneType[] VALUES = values(); + + public static PhoneType valueOf( + com.google.protobuf.Descriptors.EnumValueDescriptor desc) { + if (desc.getType() != getDescriptor()) { + throw new java.lang.IllegalArgumentException( + "EnumValueDescriptor is not for this type."); + } + if (desc.getIndex() == -1) { + return UNRECOGNIZED; + } + return VALUES[desc.getIndex()]; + } + + private final int value; + + private PhoneType(int value) { + this.value = value; + } + + // @@protoc_insertion_point(enum_scope:baeldung.Student.PhoneType) + } + + public interface PhoneNumberOrBuilder extends + // @@protoc_insertion_point(interface_extends:baeldung.Student.PhoneNumber) + com.google.protobuf.MessageOrBuilder { + + /** + * optional string number = 1; + */ + java.lang.String getNumber(); + /** + * optional string number = 1; + */ + com.google.protobuf.ByteString + getNumberBytes(); + + /** + * optional .baeldung.Student.PhoneType type = 2; + */ + int getTypeValue(); + /** + * optional .baeldung.Student.PhoneType type = 2; + */ + com.baeldung.protobuf.BaeldungTraining.Student.PhoneType getType(); + } + /** + * Protobuf type {@code baeldung.Student.PhoneNumber} + */ + public static final class PhoneNumber extends + com.google.protobuf.GeneratedMessage implements + // @@protoc_insertion_point(message_implements:baeldung.Student.PhoneNumber) + PhoneNumberOrBuilder { + // Use PhoneNumber.newBuilder() to construct. + private PhoneNumber(com.google.protobuf.GeneratedMessage.Builder builder) { + super(builder); + } + private PhoneNumber() { + number_ = ""; + type_ = 0; + } + + @java.lang.Override + public final com.google.protobuf.UnknownFieldSet + getUnknownFields() { + return com.google.protobuf.UnknownFieldSet.getDefaultInstance(); + } + private PhoneNumber( + com.google.protobuf.CodedInputStream input, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws com.google.protobuf.InvalidProtocolBufferException { + this(); + int mutable_bitField0_ = 0; + try { + boolean done = false; + while (!done) { + int tag = input.readTag(); + switch (tag) { + case 0: + done = true; + break; + default: { + if (!input.skipField(tag)) { + done = true; + } + break; + } + case 10: { + java.lang.String s = input.readStringRequireUtf8(); + + number_ = s; + break; + } + case 16: { + int rawValue = input.readEnum(); + + type_ = rawValue; + break; + } + } + } + } catch (com.google.protobuf.InvalidProtocolBufferException e) { + throw e.setUnfinishedMessage(this); + } catch (java.io.IOException e) { + throw new com.google.protobuf.InvalidProtocolBufferException( + e).setUnfinishedMessage(this); + } finally { + makeExtensionsImmutable(); + } + } + public static final com.google.protobuf.Descriptors.Descriptor + getDescriptor() { + return com.baeldung.protobuf.BaeldungTraining.internal_static_baeldung_Student_PhoneNumber_descriptor; + } + + protected com.google.protobuf.GeneratedMessage.FieldAccessorTable + internalGetFieldAccessorTable() { + return com.baeldung.protobuf.BaeldungTraining.internal_static_baeldung_Student_PhoneNumber_fieldAccessorTable + .ensureFieldAccessorsInitialized( + com.baeldung.protobuf.BaeldungTraining.Student.PhoneNumber.class, com.baeldung.protobuf.BaeldungTraining.Student.PhoneNumber.Builder.class); + } + + public static final int NUMBER_FIELD_NUMBER = 1; + private volatile java.lang.Object number_; + /** + * optional string number = 1; + */ + public java.lang.String getNumber() { + java.lang.Object ref = number_; + if (ref instanceof java.lang.String) { + return (java.lang.String) ref; + } else { + com.google.protobuf.ByteString bs = + (com.google.protobuf.ByteString) ref; + java.lang.String s = bs.toStringUtf8(); + number_ = s; + return s; + } + } + /** + * optional string number = 1; + */ + public com.google.protobuf.ByteString + getNumberBytes() { + java.lang.Object ref = number_; + if (ref instanceof java.lang.String) { + com.google.protobuf.ByteString b = + com.google.protobuf.ByteString.copyFromUtf8( + (java.lang.String) ref); + number_ = b; + return b; + } else { + return (com.google.protobuf.ByteString) ref; + } + } + + public static final int TYPE_FIELD_NUMBER = 2; + private int type_; + /** + * optional .baeldung.Student.PhoneType type = 2; + */ + public int getTypeValue() { + return type_; + } + /** + * optional .baeldung.Student.PhoneType type = 2; + */ + public com.baeldung.protobuf.BaeldungTraining.Student.PhoneType getType() { + com.baeldung.protobuf.BaeldungTraining.Student.PhoneType result = com.baeldung.protobuf.BaeldungTraining.Student.PhoneType.forNumber(type_); + return result == null ? com.baeldung.protobuf.BaeldungTraining.Student.PhoneType.UNRECOGNIZED : result; + } + + private byte memoizedIsInitialized = -1; + public final boolean isInitialized() { + byte isInitialized = memoizedIsInitialized; + if (isInitialized == 1) return true; + if (isInitialized == 0) return false; + + memoizedIsInitialized = 1; + return true; + } + + public void writeTo(com.google.protobuf.CodedOutputStream output) + throws java.io.IOException { + if (!getNumberBytes().isEmpty()) { + com.google.protobuf.GeneratedMessage.writeString(output, 1, number_); + } + if (type_ != com.baeldung.protobuf.BaeldungTraining.Student.PhoneType.MOBILE.getNumber()) { + output.writeEnum(2, type_); + } + } + + public int getSerializedSize() { + int size = memoizedSize; + if (size != -1) return size; + + size = 0; + if (!getNumberBytes().isEmpty()) { + size += com.google.protobuf.GeneratedMessage.computeStringSize(1, number_); + } + if (type_ != com.baeldung.protobuf.BaeldungTraining.Student.PhoneType.MOBILE.getNumber()) { + size += com.google.protobuf.CodedOutputStream + .computeEnumSize(2, type_); + } + memoizedSize = size; + return size; + } + + private static final long serialVersionUID = 0L; + public static com.baeldung.protobuf.BaeldungTraining.Student.PhoneNumber parseFrom( + com.google.protobuf.ByteString data) + throws com.google.protobuf.InvalidProtocolBufferException { + return PARSER.parseFrom(data); + } + public static com.baeldung.protobuf.BaeldungTraining.Student.PhoneNumber parseFrom( + com.google.protobuf.ByteString data, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws com.google.protobuf.InvalidProtocolBufferException { + return PARSER.parseFrom(data, extensionRegistry); + } + public static com.baeldung.protobuf.BaeldungTraining.Student.PhoneNumber parseFrom(byte[] data) + throws com.google.protobuf.InvalidProtocolBufferException { + return PARSER.parseFrom(data); + } + public static com.baeldung.protobuf.BaeldungTraining.Student.PhoneNumber parseFrom( + byte[] data, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws com.google.protobuf.InvalidProtocolBufferException { + return PARSER.parseFrom(data, extensionRegistry); + } + public static com.baeldung.protobuf.BaeldungTraining.Student.PhoneNumber parseFrom(java.io.InputStream input) + throws java.io.IOException { + return com.google.protobuf.GeneratedMessage + .parseWithIOException(PARSER, input); + } + public static com.baeldung.protobuf.BaeldungTraining.Student.PhoneNumber parseFrom( + java.io.InputStream input, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws java.io.IOException { + return com.google.protobuf.GeneratedMessage + .parseWithIOException(PARSER, input, extensionRegistry); + } + public static com.baeldung.protobuf.BaeldungTraining.Student.PhoneNumber parseDelimitedFrom(java.io.InputStream input) + throws java.io.IOException { + return com.google.protobuf.GeneratedMessage + .parseDelimitedWithIOException(PARSER, input); + } + public static com.baeldung.protobuf.BaeldungTraining.Student.PhoneNumber parseDelimitedFrom( + java.io.InputStream input, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws java.io.IOException { + return com.google.protobuf.GeneratedMessage + .parseDelimitedWithIOException(PARSER, input, extensionRegistry); + } + public static com.baeldung.protobuf.BaeldungTraining.Student.PhoneNumber parseFrom( + com.google.protobuf.CodedInputStream input) + throws java.io.IOException { + return com.google.protobuf.GeneratedMessage + .parseWithIOException(PARSER, input); + } + public static com.baeldung.protobuf.BaeldungTraining.Student.PhoneNumber parseFrom( + com.google.protobuf.CodedInputStream input, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws java.io.IOException { + return com.google.protobuf.GeneratedMessage + .parseWithIOException(PARSER, input, extensionRegistry); + } + + public Builder newBuilderForType() { return newBuilder(); } + public static Builder newBuilder() { + return DEFAULT_INSTANCE.toBuilder(); + } + public static Builder newBuilder(com.baeldung.protobuf.BaeldungTraining.Student.PhoneNumber prototype) { + return DEFAULT_INSTANCE.toBuilder().mergeFrom(prototype); + } + public Builder toBuilder() { + return this == DEFAULT_INSTANCE + ? new Builder() : new Builder().mergeFrom(this); + } + + @java.lang.Override + protected Builder newBuilderForType( + com.google.protobuf.GeneratedMessage.BuilderParent parent) { + Builder builder = new Builder(parent); + return builder; + } + /** + * Protobuf type {@code baeldung.Student.PhoneNumber} + */ + public static final class Builder extends + com.google.protobuf.GeneratedMessage.Builder implements + // @@protoc_insertion_point(builder_implements:baeldung.Student.PhoneNumber) + com.baeldung.protobuf.BaeldungTraining.Student.PhoneNumberOrBuilder { + public static final com.google.protobuf.Descriptors.Descriptor + getDescriptor() { + return com.baeldung.protobuf.BaeldungTraining.internal_static_baeldung_Student_PhoneNumber_descriptor; + } + + protected com.google.protobuf.GeneratedMessage.FieldAccessorTable + internalGetFieldAccessorTable() { + return com.baeldung.protobuf.BaeldungTraining.internal_static_baeldung_Student_PhoneNumber_fieldAccessorTable + .ensureFieldAccessorsInitialized( + com.baeldung.protobuf.BaeldungTraining.Student.PhoneNumber.class, com.baeldung.protobuf.BaeldungTraining.Student.PhoneNumber.Builder.class); + } + + // Construct using com.baeldung.protobuf.BaeldungTraining.Student.PhoneNumber.newBuilder() + private Builder() { + maybeForceBuilderInitialization(); + } + + private Builder( + com.google.protobuf.GeneratedMessage.BuilderParent parent) { + super(parent); + maybeForceBuilderInitialization(); + } + private void maybeForceBuilderInitialization() { + if (com.google.protobuf.GeneratedMessage.alwaysUseFieldBuilders) { + } + } + public Builder clear() { + super.clear(); + number_ = ""; + + type_ = 0; + + return this; + } + + public com.google.protobuf.Descriptors.Descriptor + getDescriptorForType() { + return com.baeldung.protobuf.BaeldungTraining.internal_static_baeldung_Student_PhoneNumber_descriptor; + } + + public com.baeldung.protobuf.BaeldungTraining.Student.PhoneNumber getDefaultInstanceForType() { + return com.baeldung.protobuf.BaeldungTraining.Student.PhoneNumber.getDefaultInstance(); + } + + public com.baeldung.protobuf.BaeldungTraining.Student.PhoneNumber build() { + com.baeldung.protobuf.BaeldungTraining.Student.PhoneNumber result = buildPartial(); + if (!result.isInitialized()) { + throw newUninitializedMessageException(result); + } + return result; + } + + public com.baeldung.protobuf.BaeldungTraining.Student.PhoneNumber buildPartial() { + com.baeldung.protobuf.BaeldungTraining.Student.PhoneNumber result = new com.baeldung.protobuf.BaeldungTraining.Student.PhoneNumber(this); + result.number_ = number_; + result.type_ = type_; + onBuilt(); + return result; + } + + public Builder mergeFrom(com.google.protobuf.Message other) { + if (other instanceof com.baeldung.protobuf.BaeldungTraining.Student.PhoneNumber) { + return mergeFrom((com.baeldung.protobuf.BaeldungTraining.Student.PhoneNumber)other); + } else { + super.mergeFrom(other); + return this; + } + } + + public Builder mergeFrom(com.baeldung.protobuf.BaeldungTraining.Student.PhoneNumber other) { + if (other == com.baeldung.protobuf.BaeldungTraining.Student.PhoneNumber.getDefaultInstance()) return this; + if (!other.getNumber().isEmpty()) { + number_ = other.number_; + onChanged(); + } + if (other.type_ != 0) { + setTypeValue(other.getTypeValue()); + } + onChanged(); + return this; + } + + public final boolean isInitialized() { + return true; + } + + public Builder mergeFrom( + com.google.protobuf.CodedInputStream input, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws java.io.IOException { + com.baeldung.protobuf.BaeldungTraining.Student.PhoneNumber parsedMessage = null; + try { + parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry); + } catch (com.google.protobuf.InvalidProtocolBufferException e) { + parsedMessage = (com.baeldung.protobuf.BaeldungTraining.Student.PhoneNumber) e.getUnfinishedMessage(); + throw e.unwrapIOException(); + } finally { + if (parsedMessage != null) { + mergeFrom(parsedMessage); + } + } + return this; + } + + private java.lang.Object number_ = ""; + /** + * optional string number = 1; + */ + public java.lang.String getNumber() { + java.lang.Object ref = number_; + if (!(ref instanceof java.lang.String)) { + com.google.protobuf.ByteString bs = + (com.google.protobuf.ByteString) ref; + java.lang.String s = bs.toStringUtf8(); + number_ = s; + return s; + } else { + return (java.lang.String) ref; + } + } + /** + * optional string number = 1; + */ + public com.google.protobuf.ByteString + getNumberBytes() { + java.lang.Object ref = number_; + if (ref instanceof String) { + com.google.protobuf.ByteString b = + com.google.protobuf.ByteString.copyFromUtf8( + (java.lang.String) ref); + number_ = b; + return b; + } else { + return (com.google.protobuf.ByteString) ref; + } + } + /** + * optional string number = 1; + */ + public Builder setNumber( + java.lang.String value) { + if (value == null) { + throw new NullPointerException(); + } + + number_ = value; + onChanged(); + return this; + } + /** + * optional string number = 1; + */ + public Builder clearNumber() { + + number_ = getDefaultInstance().getNumber(); + onChanged(); + return this; + } + /** + * optional string number = 1; + */ + public Builder setNumberBytes( + com.google.protobuf.ByteString value) { + if (value == null) { + throw new NullPointerException(); + } + checkByteStringIsUtf8(value); + + number_ = value; + onChanged(); + return this; + } + + private int type_ = 0; + /** + * optional .baeldung.Student.PhoneType type = 2; + */ + public int getTypeValue() { + return type_; + } + /** + * optional .baeldung.Student.PhoneType type = 2; + */ + public Builder setTypeValue(int value) { + type_ = value; + onChanged(); + return this; + } + /** + * optional .baeldung.Student.PhoneType type = 2; + */ + public com.baeldung.protobuf.BaeldungTraining.Student.PhoneType getType() { + com.baeldung.protobuf.BaeldungTraining.Student.PhoneType result = com.baeldung.protobuf.BaeldungTraining.Student.PhoneType.forNumber(type_); + return result == null ? com.baeldung.protobuf.BaeldungTraining.Student.PhoneType.UNRECOGNIZED : result; + } + /** + * optional .baeldung.Student.PhoneType type = 2; + */ + public Builder setType(com.baeldung.protobuf.BaeldungTraining.Student.PhoneType value) { + if (value == null) { + throw new NullPointerException(); + } + + type_ = value.getNumber(); + onChanged(); + return this; + } + /** + * optional .baeldung.Student.PhoneType type = 2; + */ + public Builder clearType() { + + type_ = 0; + onChanged(); + return this; + } + public final Builder setUnknownFields( + final com.google.protobuf.UnknownFieldSet unknownFields) { + return this; + } + + public final Builder mergeUnknownFields( + final com.google.protobuf.UnknownFieldSet unknownFields) { + return this; + } + + + // @@protoc_insertion_point(builder_scope:baeldung.Student.PhoneNumber) + } + + // @@protoc_insertion_point(class_scope:baeldung.Student.PhoneNumber) + private static final com.baeldung.protobuf.BaeldungTraining.Student.PhoneNumber DEFAULT_INSTANCE; + static { + DEFAULT_INSTANCE = new com.baeldung.protobuf.BaeldungTraining.Student.PhoneNumber(); + } + + public static com.baeldung.protobuf.BaeldungTraining.Student.PhoneNumber getDefaultInstance() { + return DEFAULT_INSTANCE; + } + + private static final com.google.protobuf.Parser + PARSER = new com.google.protobuf.AbstractParser() { + public PhoneNumber parsePartialFrom( + com.google.protobuf.CodedInputStream input, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws com.google.protobuf.InvalidProtocolBufferException { + return new PhoneNumber(input, extensionRegistry); + } + }; + + public static com.google.protobuf.Parser parser() { + return PARSER; + } + + @java.lang.Override + public com.google.protobuf.Parser getParserForType() { + return PARSER; + } + + public com.baeldung.protobuf.BaeldungTraining.Student.PhoneNumber getDefaultInstanceForType() { + return DEFAULT_INSTANCE; + } + + } + + private int bitField0_; + public static final int ID_FIELD_NUMBER = 1; + private int id_; + /** + * optional int32 id = 1; + */ + public int getId() { + return id_; + } + + public static final int FIRST_NAME_FIELD_NUMBER = 2; + private volatile java.lang.Object firstName_; + /** + * optional string first_name = 2; + */ + public java.lang.String getFirstName() { + java.lang.Object ref = firstName_; + if (ref instanceof java.lang.String) { + return (java.lang.String) ref; + } else { + com.google.protobuf.ByteString bs = + (com.google.protobuf.ByteString) ref; + java.lang.String s = bs.toStringUtf8(); + firstName_ = s; + return s; + } + } + /** + * optional string first_name = 2; + */ + public com.google.protobuf.ByteString + getFirstNameBytes() { + java.lang.Object ref = firstName_; + if (ref instanceof java.lang.String) { + com.google.protobuf.ByteString b = + com.google.protobuf.ByteString.copyFromUtf8( + (java.lang.String) ref); + firstName_ = b; + return b; + } else { + return (com.google.protobuf.ByteString) ref; + } + } + + public static final int LAST_NAME_FIELD_NUMBER = 3; + private volatile java.lang.Object lastName_; + /** + * optional string last_name = 3; + */ + public java.lang.String getLastName() { + java.lang.Object ref = lastName_; + if (ref instanceof java.lang.String) { + return (java.lang.String) ref; + } else { + com.google.protobuf.ByteString bs = + (com.google.protobuf.ByteString) ref; + java.lang.String s = bs.toStringUtf8(); + lastName_ = s; + return s; + } + } + /** + * optional string last_name = 3; + */ + public com.google.protobuf.ByteString + getLastNameBytes() { + java.lang.Object ref = lastName_; + if (ref instanceof java.lang.String) { + com.google.protobuf.ByteString b = + com.google.protobuf.ByteString.copyFromUtf8( + (java.lang.String) ref); + lastName_ = b; + return b; + } else { + return (com.google.protobuf.ByteString) ref; + } + } + + public static final int EMAIL_FIELD_NUMBER = 4; + private volatile java.lang.Object email_; + /** + * optional string email = 4; + */ + public java.lang.String getEmail() { + java.lang.Object ref = email_; + if (ref instanceof java.lang.String) { + return (java.lang.String) ref; + } else { + com.google.protobuf.ByteString bs = + (com.google.protobuf.ByteString) ref; + java.lang.String s = bs.toStringUtf8(); + email_ = s; + return s; + } + } + /** + * optional string email = 4; + */ + public com.google.protobuf.ByteString + getEmailBytes() { + java.lang.Object ref = email_; + if (ref instanceof java.lang.String) { + com.google.protobuf.ByteString b = + com.google.protobuf.ByteString.copyFromUtf8( + (java.lang.String) ref); + email_ = b; + return b; + } else { + return (com.google.protobuf.ByteString) ref; + } + } + + public static final int PHONE_FIELD_NUMBER = 5; + private java.util.List phone_; + /** + * repeated .baeldung.Student.PhoneNumber phone = 5; + */ + public java.util.List getPhoneList() { + return phone_; + } + /** + * repeated .baeldung.Student.PhoneNumber phone = 5; + */ + public java.util.List + getPhoneOrBuilderList() { + return phone_; + } + /** + * repeated .baeldung.Student.PhoneNumber phone = 5; + */ + public int getPhoneCount() { + return phone_.size(); + } + /** + * repeated .baeldung.Student.PhoneNumber phone = 5; + */ + public com.baeldung.protobuf.BaeldungTraining.Student.PhoneNumber getPhone(int index) { + return phone_.get(index); + } + /** + * repeated .baeldung.Student.PhoneNumber phone = 5; + */ + public com.baeldung.protobuf.BaeldungTraining.Student.PhoneNumberOrBuilder getPhoneOrBuilder( + int index) { + return phone_.get(index); + } + + private byte memoizedIsInitialized = -1; + public final boolean isInitialized() { + byte isInitialized = memoizedIsInitialized; + if (isInitialized == 1) return true; + if (isInitialized == 0) return false; + + memoizedIsInitialized = 1; + return true; + } + + public void writeTo(com.google.protobuf.CodedOutputStream output) + throws java.io.IOException { + if (id_ != 0) { + output.writeInt32(1, id_); + } + if (!getFirstNameBytes().isEmpty()) { + com.google.protobuf.GeneratedMessage.writeString(output, 2, firstName_); + } + if (!getLastNameBytes().isEmpty()) { + com.google.protobuf.GeneratedMessage.writeString(output, 3, lastName_); + } + if (!getEmailBytes().isEmpty()) { + com.google.protobuf.GeneratedMessage.writeString(output, 4, email_); + } + for (int i = 0; i < phone_.size(); i++) { + output.writeMessage(5, phone_.get(i)); + } + } + + public int getSerializedSize() { + int size = memoizedSize; + if (size != -1) return size; + + size = 0; + if (id_ != 0) { + size += com.google.protobuf.CodedOutputStream + .computeInt32Size(1, id_); + } + if (!getFirstNameBytes().isEmpty()) { + size += com.google.protobuf.GeneratedMessage.computeStringSize(2, firstName_); + } + if (!getLastNameBytes().isEmpty()) { + size += com.google.protobuf.GeneratedMessage.computeStringSize(3, lastName_); + } + if (!getEmailBytes().isEmpty()) { + size += com.google.protobuf.GeneratedMessage.computeStringSize(4, email_); + } + for (int i = 0; i < phone_.size(); i++) { + size += com.google.protobuf.CodedOutputStream + .computeMessageSize(5, phone_.get(i)); + } + memoizedSize = size; + return size; + } + + private static final long serialVersionUID = 0L; + public static com.baeldung.protobuf.BaeldungTraining.Student parseFrom( + com.google.protobuf.ByteString data) + throws com.google.protobuf.InvalidProtocolBufferException { + return PARSER.parseFrom(data); + } + public static com.baeldung.protobuf.BaeldungTraining.Student parseFrom( + com.google.protobuf.ByteString data, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws com.google.protobuf.InvalidProtocolBufferException { + return PARSER.parseFrom(data, extensionRegistry); + } + public static com.baeldung.protobuf.BaeldungTraining.Student parseFrom(byte[] data) + throws com.google.protobuf.InvalidProtocolBufferException { + return PARSER.parseFrom(data); + } + public static com.baeldung.protobuf.BaeldungTraining.Student parseFrom( + byte[] data, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws com.google.protobuf.InvalidProtocolBufferException { + return PARSER.parseFrom(data, extensionRegistry); + } + public static com.baeldung.protobuf.BaeldungTraining.Student parseFrom(java.io.InputStream input) + throws java.io.IOException { + return com.google.protobuf.GeneratedMessage + .parseWithIOException(PARSER, input); + } + public static com.baeldung.protobuf.BaeldungTraining.Student parseFrom( + java.io.InputStream input, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws java.io.IOException { + return com.google.protobuf.GeneratedMessage + .parseWithIOException(PARSER, input, extensionRegistry); + } + public static com.baeldung.protobuf.BaeldungTraining.Student parseDelimitedFrom(java.io.InputStream input) + throws java.io.IOException { + return com.google.protobuf.GeneratedMessage + .parseDelimitedWithIOException(PARSER, input); + } + public static com.baeldung.protobuf.BaeldungTraining.Student parseDelimitedFrom( + java.io.InputStream input, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws java.io.IOException { + return com.google.protobuf.GeneratedMessage + .parseDelimitedWithIOException(PARSER, input, extensionRegistry); + } + public static com.baeldung.protobuf.BaeldungTraining.Student parseFrom( + com.google.protobuf.CodedInputStream input) + throws java.io.IOException { + return com.google.protobuf.GeneratedMessage + .parseWithIOException(PARSER, input); + } + public static com.baeldung.protobuf.BaeldungTraining.Student parseFrom( + com.google.protobuf.CodedInputStream input, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws java.io.IOException { + return com.google.protobuf.GeneratedMessage + .parseWithIOException(PARSER, input, extensionRegistry); + } + + public Builder newBuilderForType() { return newBuilder(); } + public static Builder newBuilder() { + return DEFAULT_INSTANCE.toBuilder(); + } + public static Builder newBuilder(com.baeldung.protobuf.BaeldungTraining.Student prototype) { + return DEFAULT_INSTANCE.toBuilder().mergeFrom(prototype); + } + public Builder toBuilder() { + return this == DEFAULT_INSTANCE + ? new Builder() : new Builder().mergeFrom(this); + } + + @java.lang.Override + protected Builder newBuilderForType( + com.google.protobuf.GeneratedMessage.BuilderParent parent) { + Builder builder = new Builder(parent); + return builder; + } + /** + * Protobuf type {@code baeldung.Student} + */ + public static final class Builder extends + com.google.protobuf.GeneratedMessage.Builder implements + // @@protoc_insertion_point(builder_implements:baeldung.Student) + com.baeldung.protobuf.BaeldungTraining.StudentOrBuilder { + public static final com.google.protobuf.Descriptors.Descriptor + getDescriptor() { + return com.baeldung.protobuf.BaeldungTraining.internal_static_baeldung_Student_descriptor; + } + + protected com.google.protobuf.GeneratedMessage.FieldAccessorTable + internalGetFieldAccessorTable() { + return com.baeldung.protobuf.BaeldungTraining.internal_static_baeldung_Student_fieldAccessorTable + .ensureFieldAccessorsInitialized( + com.baeldung.protobuf.BaeldungTraining.Student.class, com.baeldung.protobuf.BaeldungTraining.Student.Builder.class); + } + + // Construct using com.baeldung.protobuf.BaeldungTraining.Student.newBuilder() + private Builder() { + maybeForceBuilderInitialization(); + } + + private Builder( + com.google.protobuf.GeneratedMessage.BuilderParent parent) { + super(parent); + maybeForceBuilderInitialization(); + } + private void maybeForceBuilderInitialization() { + if (com.google.protobuf.GeneratedMessage.alwaysUseFieldBuilders) { + getPhoneFieldBuilder(); + } + } + public Builder clear() { + super.clear(); + id_ = 0; + + firstName_ = ""; + + lastName_ = ""; + + email_ = ""; + + if (phoneBuilder_ == null) { + phone_ = java.util.Collections.emptyList(); + bitField0_ = (bitField0_ & ~0x00000010); + } else { + phoneBuilder_.clear(); + } + return this; + } + + public com.google.protobuf.Descriptors.Descriptor + getDescriptorForType() { + return com.baeldung.protobuf.BaeldungTraining.internal_static_baeldung_Student_descriptor; + } + + public com.baeldung.protobuf.BaeldungTraining.Student getDefaultInstanceForType() { + return com.baeldung.protobuf.BaeldungTraining.Student.getDefaultInstance(); + } + + public com.baeldung.protobuf.BaeldungTraining.Student build() { + com.baeldung.protobuf.BaeldungTraining.Student result = buildPartial(); + if (!result.isInitialized()) { + throw newUninitializedMessageException(result); + } + return result; + } + + public com.baeldung.protobuf.BaeldungTraining.Student buildPartial() { + com.baeldung.protobuf.BaeldungTraining.Student result = new com.baeldung.protobuf.BaeldungTraining.Student(this); + int from_bitField0_ = bitField0_; + int to_bitField0_ = 0; + result.id_ = id_; + result.firstName_ = firstName_; + result.lastName_ = lastName_; + result.email_ = email_; + if (phoneBuilder_ == null) { + if (((bitField0_ & 0x00000010) == 0x00000010)) { + phone_ = java.util.Collections.unmodifiableList(phone_); + bitField0_ = (bitField0_ & ~0x00000010); + } + result.phone_ = phone_; + } else { + result.phone_ = phoneBuilder_.build(); + } + result.bitField0_ = to_bitField0_; + onBuilt(); + return result; + } + + public Builder mergeFrom(com.google.protobuf.Message other) { + if (other instanceof com.baeldung.protobuf.BaeldungTraining.Student) { + return mergeFrom((com.baeldung.protobuf.BaeldungTraining.Student)other); + } else { + super.mergeFrom(other); + return this; + } + } + + public Builder mergeFrom(com.baeldung.protobuf.BaeldungTraining.Student other) { + if (other == com.baeldung.protobuf.BaeldungTraining.Student.getDefaultInstance()) return this; + if (other.getId() != 0) { + setId(other.getId()); + } + if (!other.getFirstName().isEmpty()) { + firstName_ = other.firstName_; + onChanged(); + } + if (!other.getLastName().isEmpty()) { + lastName_ = other.lastName_; + onChanged(); + } + if (!other.getEmail().isEmpty()) { + email_ = other.email_; + onChanged(); + } + if (phoneBuilder_ == null) { + if (!other.phone_.isEmpty()) { + if (phone_.isEmpty()) { + phone_ = other.phone_; + bitField0_ = (bitField0_ & ~0x00000010); + } else { + ensurePhoneIsMutable(); + phone_.addAll(other.phone_); + } + onChanged(); + } + } else { + if (!other.phone_.isEmpty()) { + if (phoneBuilder_.isEmpty()) { + phoneBuilder_.dispose(); + phoneBuilder_ = null; + phone_ = other.phone_; + bitField0_ = (bitField0_ & ~0x00000010); + phoneBuilder_ = + com.google.protobuf.GeneratedMessage.alwaysUseFieldBuilders ? + getPhoneFieldBuilder() : null; + } else { + phoneBuilder_.addAllMessages(other.phone_); + } + } + } + onChanged(); + return this; + } + + public final boolean isInitialized() { + return true; + } + + public Builder mergeFrom( + com.google.protobuf.CodedInputStream input, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws java.io.IOException { + com.baeldung.protobuf.BaeldungTraining.Student parsedMessage = null; + try { + parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry); + } catch (com.google.protobuf.InvalidProtocolBufferException e) { + parsedMessage = (com.baeldung.protobuf.BaeldungTraining.Student) e.getUnfinishedMessage(); + throw e.unwrapIOException(); + } finally { + if (parsedMessage != null) { + mergeFrom(parsedMessage); + } + } + return this; + } + private int bitField0_; + + private int id_ ; + /** + * optional int32 id = 1; + */ + public int getId() { + return id_; + } + /** + * optional int32 id = 1; + */ + public Builder setId(int value) { + + id_ = value; + onChanged(); + return this; + } + /** + * optional int32 id = 1; + */ + public Builder clearId() { + + id_ = 0; + onChanged(); + return this; + } + + private java.lang.Object firstName_ = ""; + /** + * optional string first_name = 2; + */ + public java.lang.String getFirstName() { + java.lang.Object ref = firstName_; + if (!(ref instanceof java.lang.String)) { + com.google.protobuf.ByteString bs = + (com.google.protobuf.ByteString) ref; + java.lang.String s = bs.toStringUtf8(); + firstName_ = s; + return s; + } else { + return (java.lang.String) ref; + } + } + /** + * optional string first_name = 2; + */ + public com.google.protobuf.ByteString + getFirstNameBytes() { + java.lang.Object ref = firstName_; + if (ref instanceof String) { + com.google.protobuf.ByteString b = + com.google.protobuf.ByteString.copyFromUtf8( + (java.lang.String) ref); + firstName_ = b; + return b; + } else { + return (com.google.protobuf.ByteString) ref; + } + } + /** + * optional string first_name = 2; + */ + public Builder setFirstName( + java.lang.String value) { + if (value == null) { + throw new NullPointerException(); + } + + firstName_ = value; + onChanged(); + return this; + } + /** + * optional string first_name = 2; + */ + public Builder clearFirstName() { + + firstName_ = getDefaultInstance().getFirstName(); + onChanged(); + return this; + } + /** + * optional string first_name = 2; + */ + public Builder setFirstNameBytes( + com.google.protobuf.ByteString value) { + if (value == null) { + throw new NullPointerException(); + } + checkByteStringIsUtf8(value); + + firstName_ = value; + onChanged(); + return this; + } + + private java.lang.Object lastName_ = ""; + /** + * optional string last_name = 3; + */ + public java.lang.String getLastName() { + java.lang.Object ref = lastName_; + if (!(ref instanceof java.lang.String)) { + com.google.protobuf.ByteString bs = + (com.google.protobuf.ByteString) ref; + java.lang.String s = bs.toStringUtf8(); + lastName_ = s; + return s; + } else { + return (java.lang.String) ref; + } + } + /** + * optional string last_name = 3; + */ + public com.google.protobuf.ByteString + getLastNameBytes() { + java.lang.Object ref = lastName_; + if (ref instanceof String) { + com.google.protobuf.ByteString b = + com.google.protobuf.ByteString.copyFromUtf8( + (java.lang.String) ref); + lastName_ = b; + return b; + } else { + return (com.google.protobuf.ByteString) ref; + } + } + /** + * optional string last_name = 3; + */ + public Builder setLastName( + java.lang.String value) { + if (value == null) { + throw new NullPointerException(); + } + + lastName_ = value; + onChanged(); + return this; + } + /** + * optional string last_name = 3; + */ + public Builder clearLastName() { + + lastName_ = getDefaultInstance().getLastName(); + onChanged(); + return this; + } + /** + * optional string last_name = 3; + */ + public Builder setLastNameBytes( + com.google.protobuf.ByteString value) { + if (value == null) { + throw new NullPointerException(); + } + checkByteStringIsUtf8(value); + + lastName_ = value; + onChanged(); + return this; + } + + private java.lang.Object email_ = ""; + /** + * optional string email = 4; + */ + public java.lang.String getEmail() { + java.lang.Object ref = email_; + if (!(ref instanceof java.lang.String)) { + com.google.protobuf.ByteString bs = + (com.google.protobuf.ByteString) ref; + java.lang.String s = bs.toStringUtf8(); + email_ = s; + return s; + } else { + return (java.lang.String) ref; + } + } + /** + * optional string email = 4; + */ + public com.google.protobuf.ByteString + getEmailBytes() { + java.lang.Object ref = email_; + if (ref instanceof String) { + com.google.protobuf.ByteString b = + com.google.protobuf.ByteString.copyFromUtf8( + (java.lang.String) ref); + email_ = b; + return b; + } else { + return (com.google.protobuf.ByteString) ref; + } + } + /** + * optional string email = 4; + */ + public Builder setEmail( + java.lang.String value) { + if (value == null) { + throw new NullPointerException(); + } + + email_ = value; + onChanged(); + return this; + } + /** + * optional string email = 4; + */ + public Builder clearEmail() { + + email_ = getDefaultInstance().getEmail(); + onChanged(); + return this; + } + /** + * optional string email = 4; + */ + public Builder setEmailBytes( + com.google.protobuf.ByteString value) { + if (value == null) { + throw new NullPointerException(); + } + checkByteStringIsUtf8(value); + + email_ = value; + onChanged(); + return this; + } + + private java.util.List phone_ = + java.util.Collections.emptyList(); + private void ensurePhoneIsMutable() { + if (!((bitField0_ & 0x00000010) == 0x00000010)) { + phone_ = new java.util.ArrayList(phone_); + bitField0_ |= 0x00000010; + } + } + + private com.google.protobuf.RepeatedFieldBuilder< + com.baeldung.protobuf.BaeldungTraining.Student.PhoneNumber, com.baeldung.protobuf.BaeldungTraining.Student.PhoneNumber.Builder, com.baeldung.protobuf.BaeldungTraining.Student.PhoneNumberOrBuilder> phoneBuilder_; + + /** + * repeated .baeldung.Student.PhoneNumber phone = 5; + */ + public java.util.List getPhoneList() { + if (phoneBuilder_ == null) { + return java.util.Collections.unmodifiableList(phone_); + } else { + return phoneBuilder_.getMessageList(); + } + } + /** + * repeated .baeldung.Student.PhoneNumber phone = 5; + */ + public int getPhoneCount() { + if (phoneBuilder_ == null) { + return phone_.size(); + } else { + return phoneBuilder_.getCount(); + } + } + /** + * repeated .baeldung.Student.PhoneNumber phone = 5; + */ + public com.baeldung.protobuf.BaeldungTraining.Student.PhoneNumber getPhone(int index) { + if (phoneBuilder_ == null) { + return phone_.get(index); + } else { + return phoneBuilder_.getMessage(index); + } + } + /** + * repeated .baeldung.Student.PhoneNumber phone = 5; + */ + public Builder setPhone( + int index, com.baeldung.protobuf.BaeldungTraining.Student.PhoneNumber value) { + if (phoneBuilder_ == null) { + if (value == null) { + throw new NullPointerException(); + } + ensurePhoneIsMutable(); + phone_.set(index, value); + onChanged(); + } else { + phoneBuilder_.setMessage(index, value); + } + return this; + } + /** + * repeated .baeldung.Student.PhoneNumber phone = 5; + */ + public Builder setPhone( + int index, com.baeldung.protobuf.BaeldungTraining.Student.PhoneNumber.Builder builderForValue) { + if (phoneBuilder_ == null) { + ensurePhoneIsMutable(); + phone_.set(index, builderForValue.build()); + onChanged(); + } else { + phoneBuilder_.setMessage(index, builderForValue.build()); + } + return this; + } + /** + * repeated .baeldung.Student.PhoneNumber phone = 5; + */ + public Builder addPhone(com.baeldung.protobuf.BaeldungTraining.Student.PhoneNumber value) { + if (phoneBuilder_ == null) { + if (value == null) { + throw new NullPointerException(); + } + ensurePhoneIsMutable(); + phone_.add(value); + onChanged(); + } else { + phoneBuilder_.addMessage(value); + } + return this; + } + /** + * repeated .baeldung.Student.PhoneNumber phone = 5; + */ + public Builder addPhone( + int index, com.baeldung.protobuf.BaeldungTraining.Student.PhoneNumber value) { + if (phoneBuilder_ == null) { + if (value == null) { + throw new NullPointerException(); + } + ensurePhoneIsMutable(); + phone_.add(index, value); + onChanged(); + } else { + phoneBuilder_.addMessage(index, value); + } + return this; + } + /** + * repeated .baeldung.Student.PhoneNumber phone = 5; + */ + public Builder addPhone( + com.baeldung.protobuf.BaeldungTraining.Student.PhoneNumber.Builder builderForValue) { + if (phoneBuilder_ == null) { + ensurePhoneIsMutable(); + phone_.add(builderForValue.build()); + onChanged(); + } else { + phoneBuilder_.addMessage(builderForValue.build()); + } + return this; + } + /** + * repeated .baeldung.Student.PhoneNumber phone = 5; + */ + public Builder addPhone( + int index, com.baeldung.protobuf.BaeldungTraining.Student.PhoneNumber.Builder builderForValue) { + if (phoneBuilder_ == null) { + ensurePhoneIsMutable(); + phone_.add(index, builderForValue.build()); + onChanged(); + } else { + phoneBuilder_.addMessage(index, builderForValue.build()); + } + return this; + } + /** + * repeated .baeldung.Student.PhoneNumber phone = 5; + */ + public Builder addAllPhone( + java.lang.Iterable values) { + if (phoneBuilder_ == null) { + ensurePhoneIsMutable(); + com.google.protobuf.AbstractMessageLite.Builder.addAll( + values, phone_); + onChanged(); + } else { + phoneBuilder_.addAllMessages(values); + } + return this; + } + /** + * repeated .baeldung.Student.PhoneNumber phone = 5; + */ + public Builder clearPhone() { + if (phoneBuilder_ == null) { + phone_ = java.util.Collections.emptyList(); + bitField0_ = (bitField0_ & ~0x00000010); + onChanged(); + } else { + phoneBuilder_.clear(); + } + return this; + } + /** + * repeated .baeldung.Student.PhoneNumber phone = 5; + */ + public Builder removePhone(int index) { + if (phoneBuilder_ == null) { + ensurePhoneIsMutable(); + phone_.remove(index); + onChanged(); + } else { + phoneBuilder_.remove(index); + } + return this; + } + /** + * repeated .baeldung.Student.PhoneNumber phone = 5; + */ + public com.baeldung.protobuf.BaeldungTraining.Student.PhoneNumber.Builder getPhoneBuilder( + int index) { + return getPhoneFieldBuilder().getBuilder(index); + } + /** + * repeated .baeldung.Student.PhoneNumber phone = 5; + */ + public com.baeldung.protobuf.BaeldungTraining.Student.PhoneNumberOrBuilder getPhoneOrBuilder( + int index) { + if (phoneBuilder_ == null) { + return phone_.get(index); } else { + return phoneBuilder_.getMessageOrBuilder(index); + } + } + /** + * repeated .baeldung.Student.PhoneNumber phone = 5; + */ + public java.util.List + getPhoneOrBuilderList() { + if (phoneBuilder_ != null) { + return phoneBuilder_.getMessageOrBuilderList(); + } else { + return java.util.Collections.unmodifiableList(phone_); + } + } + /** + * repeated .baeldung.Student.PhoneNumber phone = 5; + */ + public com.baeldung.protobuf.BaeldungTraining.Student.PhoneNumber.Builder addPhoneBuilder() { + return getPhoneFieldBuilder().addBuilder( + com.baeldung.protobuf.BaeldungTraining.Student.PhoneNumber.getDefaultInstance()); + } + /** + * repeated .baeldung.Student.PhoneNumber phone = 5; + */ + public com.baeldung.protobuf.BaeldungTraining.Student.PhoneNumber.Builder addPhoneBuilder( + int index) { + return getPhoneFieldBuilder().addBuilder( + index, com.baeldung.protobuf.BaeldungTraining.Student.PhoneNumber.getDefaultInstance()); + } + /** + * repeated .baeldung.Student.PhoneNumber phone = 5; + */ + public java.util.List + getPhoneBuilderList() { + return getPhoneFieldBuilder().getBuilderList(); + } + private com.google.protobuf.RepeatedFieldBuilder< + com.baeldung.protobuf.BaeldungTraining.Student.PhoneNumber, com.baeldung.protobuf.BaeldungTraining.Student.PhoneNumber.Builder, com.baeldung.protobuf.BaeldungTraining.Student.PhoneNumberOrBuilder> + getPhoneFieldBuilder() { + if (phoneBuilder_ == null) { + phoneBuilder_ = new com.google.protobuf.RepeatedFieldBuilder< + com.baeldung.protobuf.BaeldungTraining.Student.PhoneNumber, com.baeldung.protobuf.BaeldungTraining.Student.PhoneNumber.Builder, com.baeldung.protobuf.BaeldungTraining.Student.PhoneNumberOrBuilder>( + phone_, + ((bitField0_ & 0x00000010) == 0x00000010), + getParentForChildren(), + isClean()); + phone_ = null; + } + return phoneBuilder_; + } + public final Builder setUnknownFields( + final com.google.protobuf.UnknownFieldSet unknownFields) { + return this; + } + + public final Builder mergeUnknownFields( + final com.google.protobuf.UnknownFieldSet unknownFields) { + return this; + } + + + // @@protoc_insertion_point(builder_scope:baeldung.Student) + } + + // @@protoc_insertion_point(class_scope:baeldung.Student) + private static final com.baeldung.protobuf.BaeldungTraining.Student DEFAULT_INSTANCE; + static { + DEFAULT_INSTANCE = new com.baeldung.protobuf.BaeldungTraining.Student(); + } + + public static com.baeldung.protobuf.BaeldungTraining.Student getDefaultInstance() { + return DEFAULT_INSTANCE; + } + + private static final com.google.protobuf.Parser + PARSER = new com.google.protobuf.AbstractParser() { + public Student parsePartialFrom( + com.google.protobuf.CodedInputStream input, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws com.google.protobuf.InvalidProtocolBufferException { + return new Student(input, extensionRegistry); + } + }; + + public static com.google.protobuf.Parser parser() { + return PARSER; + } + + @java.lang.Override + public com.google.protobuf.Parser getParserForType() { + return PARSER; + } + + public com.baeldung.protobuf.BaeldungTraining.Student getDefaultInstanceForType() { + return DEFAULT_INSTANCE; + } + + } + + private static final com.google.protobuf.Descriptors.Descriptor + internal_static_baeldung_Course_descriptor; + private static final + com.google.protobuf.GeneratedMessage.FieldAccessorTable + internal_static_baeldung_Course_fieldAccessorTable; + private static final com.google.protobuf.Descriptors.Descriptor + internal_static_baeldung_Student_descriptor; + private static final + com.google.protobuf.GeneratedMessage.FieldAccessorTable + internal_static_baeldung_Student_fieldAccessorTable; + private static final com.google.protobuf.Descriptors.Descriptor + internal_static_baeldung_Student_PhoneNumber_descriptor; + private static final + com.google.protobuf.GeneratedMessage.FieldAccessorTable + internal_static_baeldung_Student_PhoneNumber_fieldAccessorTable; + + public static com.google.protobuf.Descriptors.FileDescriptor + getDescriptor() { + return descriptor; + } + private static com.google.protobuf.Descriptors.FileDescriptor + descriptor; + static { + java.lang.String[] descriptorData = { + "\n\030resources/baeldung.proto\022\010baeldung\"M\n\006" + + "Course\022\n\n\002id\030\001 \001(\005\022\023\n\013course_name\030\002 \001(\t\022" + + "\"\n\007student\030\003 \003(\0132\021.baeldung.Student\"\352\001\n\007" + + "Student\022\n\n\002id\030\001 \001(\005\022\022\n\nfirst_name\030\002 \001(\t\022" + + "\021\n\tlast_name\030\003 \001(\t\022\r\n\005email\030\004 \001(\t\022,\n\005pho" + + "ne\030\005 \003(\0132\035.baeldung.Student.PhoneNumber\032" + + "H\n\013PhoneNumber\022\016\n\006number\030\001 \001(\t\022)\n\004type\030\002" + + " \001(\0162\033.baeldung.Student.PhoneType\"%\n\tPho" + + "neType\022\n\n\006MOBILE\020\000\022\014\n\010LANDLINE\020\001B)\n\025com." + + "baeldung.protobufB\020BaeldungTrainingb\006pro", + "to3" + }; + com.google.protobuf.Descriptors.FileDescriptor.InternalDescriptorAssigner assigner = + new com.google.protobuf.Descriptors.FileDescriptor. InternalDescriptorAssigner() { + public com.google.protobuf.ExtensionRegistry assignDescriptors( + com.google.protobuf.Descriptors.FileDescriptor root) { + descriptor = root; + return null; + } + }; + com.google.protobuf.Descriptors.FileDescriptor + .internalBuildGeneratedFileFrom(descriptorData, + new com.google.protobuf.Descriptors.FileDescriptor[] { + }, assigner); + internal_static_baeldung_Course_descriptor = + getDescriptor().getMessageTypes().get(0); + internal_static_baeldung_Course_fieldAccessorTable = new + com.google.protobuf.GeneratedMessage.FieldAccessorTable( + internal_static_baeldung_Course_descriptor, + new java.lang.String[] { "Id", "CourseName", "Student", }); + internal_static_baeldung_Student_descriptor = + getDescriptor().getMessageTypes().get(1); + internal_static_baeldung_Student_fieldAccessorTable = new + com.google.protobuf.GeneratedMessage.FieldAccessorTable( + internal_static_baeldung_Student_descriptor, + new java.lang.String[] { "Id", "FirstName", "LastName", "Email", "Phone", }); + internal_static_baeldung_Student_PhoneNumber_descriptor = + internal_static_baeldung_Student_descriptor.getNestedTypes().get(0); + internal_static_baeldung_Student_PhoneNumber_fieldAccessorTable = new + com.google.protobuf.GeneratedMessage.FieldAccessorTable( + internal_static_baeldung_Student_PhoneNumber_descriptor, + new java.lang.String[] { "Number", "Type", }); + } + + // @@protoc_insertion_point(outer_class_scope) +} diff --git a/spring-protobuf/src/main/java/com/baeldung/protobuf/CourseController.java b/spring-protobuf/src/main/java/com/baeldung/protobuf/CourseController.java new file mode 100644 index 0000000000..027f296fa2 --- /dev/null +++ b/spring-protobuf/src/main/java/com/baeldung/protobuf/CourseController.java @@ -0,0 +1,19 @@ +package com.baeldung.protobuf; + +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.web.bind.annotation.PathVariable; +import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.RestController; + +import com.baeldung.protobuf.BaeldungTraining.Course; + +@RestController +public class CourseController { + @Autowired + CourseRepository courseRepo; + + @RequestMapping("/courses/{id}") + Course customer(@PathVariable Integer id) { + return courseRepo.getCourse(id); + } +} diff --git a/spring-protobuf/src/main/java/com/baeldung/protobuf/CourseRepository.java b/spring-protobuf/src/main/java/com/baeldung/protobuf/CourseRepository.java new file mode 100644 index 0000000000..aa00b2a850 --- /dev/null +++ b/spring-protobuf/src/main/java/com/baeldung/protobuf/CourseRepository.java @@ -0,0 +1,17 @@ +package com.baeldung.protobuf; + +import java.util.Map; + +import com.baeldung.protobuf.BaeldungTraining.Course; + +public class CourseRepository { + Map courses; + + public CourseRepository (Map courses) { + this.courses = courses; + } + + public Course getCourse(int id) { + return courses.get(id); + } +} diff --git a/spring-protobuf/src/main/resources/baeldung.proto b/spring-protobuf/src/main/resources/baeldung.proto new file mode 100644 index 0000000000..20124c34c4 --- /dev/null +++ b/spring-protobuf/src/main/resources/baeldung.proto @@ -0,0 +1,30 @@ +syntax = "proto3"; + +package baeldung; + +option java_package = "com.baeldung.protobuf"; +option java_outer_classname = "BaeldungTraining"; + +message Course { + int32 id = 1; + string course_name = 2; + repeated Student student = 3; +} + +message Student { + int32 id = 1; + string first_name = 2; + string last_name = 3; + string email = 4; + repeated PhoneNumber phone = 5; + + message PhoneNumber { + string number = 1; + PhoneType type = 2; + } + + enum PhoneType { + MOBILE = 0; + LANDLINE = 1; + } +} \ No newline at end of file diff --git a/spring-protobuf/src/test/java/com/baeldung/protobuf/ApplicationTest.java b/spring-protobuf/src/test/java/com/baeldung/protobuf/ApplicationTest.java new file mode 100644 index 0000000000..026fa04fa2 --- /dev/null +++ b/spring-protobuf/src/test/java/com/baeldung/protobuf/ApplicationTest.java @@ -0,0 +1,76 @@ +package com.baeldung.protobuf; + +import java.io.IOException; +import java.io.InputStream; + +import org.apache.http.HttpResponse; +import org.apache.http.client.methods.HttpGet; +import org.apache.http.impl.client.CloseableHttpClient; +import org.apache.http.impl.client.HttpClients; + +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.boot.test.SpringApplicationConfiguration; +import org.springframework.boot.test.WebIntegrationTest; +import org.springframework.http.ResponseEntity; +import org.springframework.test.context.junit4.SpringJUnit4ClassRunner; +import org.springframework.web.client.RestTemplate; + +import org.junit.Test; +import org.junit.runner.RunWith; + +import com.baeldung.protobuf.BaeldungTraining.Course; +import com.googlecode.protobuf.format.JsonFormat; + +import static org.junit.Assert.assertThat; +import static org.hamcrest.CoreMatchers.containsString; + +@RunWith(SpringJUnit4ClassRunner.class) +@SpringApplicationConfiguration(classes = Application.class) +@WebIntegrationTest +public class ApplicationTest { + private static final String COURSE1_URL = "http://localhost:8080/courses/1"; + @Autowired + private RestTemplate restTemplate; + + @Test + public void whenUsingRestTemplate_thenSucceed() { + ResponseEntity course = restTemplate.getForEntity(COURSE1_URL, Course.class); + assertResponse(course.toString()); + } + + @Test + public void whenUsingHttpClient_thenSucceed() throws IOException { + InputStream responseStream = executeHttpRequest(COURSE1_URL); + String jsonOutput = convertProtobufMessageStreamToJsonString(responseStream); + assertResponse(jsonOutput); + } + + private InputStream executeHttpRequest(String url) throws IOException { + CloseableHttpClient httpClient = HttpClients.createDefault(); + HttpGet request = new HttpGet(url); + HttpResponse httpResponse = httpClient.execute(request); + return httpResponse.getEntity().getContent(); + } + + private String convertProtobufMessageStreamToJsonString(InputStream protobufStream) throws IOException { + JsonFormat jsonFormat = new JsonFormat(); + Course course = Course.parseFrom(protobufStream); + return jsonFormat.printToString(course); + } + + private void assertResponse(String response) { + assertThat(response, containsString("id")); + assertThat(response, containsString("course_name")); + assertThat(response, containsString("REST with Spring")); + assertThat(response, containsString("student")); + assertThat(response, containsString("first_name")); + assertThat(response, containsString("last_name")); + assertThat(response, containsString("email")); + assertThat(response, containsString("john.doe@baeldung.com")); + assertThat(response, containsString("richard.roe@baeldung.com")); + assertThat(response, containsString("jane.doe@baeldung.com")); + assertThat(response, containsString("phone")); + assertThat(response, containsString("number")); + assertThat(response, containsString("type")); + } +} \ No newline at end of file From c77a992a523e6f62892ca235c013a5297c73fc4b Mon Sep 17 00:00:00 2001 From: Grzegorz Piwowarek Date: Sat, 18 Jun 2016 22:08:24 +0200 Subject: [PATCH 047/108] Refactor spring-protobuf --- pom.xml | 1 + spring-protobuf/pom.xml | 15 +++++ .../com/baeldung/protobuf/Application.java | 56 ++++++++++--------- .../baeldung/protobuf/CourseController.java | 1 + .../baeldung/protobuf/CourseRepository.java | 7 ++- .../baeldung/protobuf/ApplicationTest.java | 19 +++---- 6 files changed, 61 insertions(+), 38 deletions(-) diff --git a/pom.xml b/pom.xml index f16861cc68..19c602091d 100644 --- a/pom.xml +++ b/pom.xml @@ -50,6 +50,7 @@ spring-mvc-no-xml spring-mvc-xml spring-openid + spring-protobuf spring-quartz spring-rest diff --git a/spring-protobuf/pom.xml b/spring-protobuf/pom.xml index 28338f26c3..1275d72edf 100644 --- a/spring-protobuf/pom.xml +++ b/spring-protobuf/pom.xml @@ -40,4 +40,19 @@ 4.5.2 + + + + + + org.apache.maven.plugins + maven-compiler-plugin + 3.3 + + 1.8 + 1.8 + + + + diff --git a/spring-protobuf/src/main/java/com/baeldung/protobuf/Application.java b/spring-protobuf/src/main/java/com/baeldung/protobuf/Application.java index 38a49367a3..ce5453af61 100644 --- a/spring-protobuf/src/main/java/com/baeldung/protobuf/Application.java +++ b/spring-protobuf/src/main/java/com/baeldung/protobuf/Application.java @@ -1,23 +1,23 @@ package com.baeldung.protobuf; +import com.baeldung.protobuf.BaeldungTraining.Course; +import com.baeldung.protobuf.BaeldungTraining.Student; +import com.baeldung.protobuf.BaeldungTraining.Student.PhoneNumber; +import com.baeldung.protobuf.BaeldungTraining.Student.PhoneType; +import org.springframework.boot.autoconfigure.SpringBootApplication; +import org.springframework.context.annotation.Bean; +import org.springframework.http.converter.protobuf.ProtobufHttpMessageConverter; +import org.springframework.web.client.RestTemplate; + import java.util.ArrayList; import java.util.Arrays; import java.util.HashMap; import java.util.List; import java.util.Map; -import org.springframework.boot.autoconfigure.SpringBootApplication; -import org.springframework.context.annotation.Bean; -import org.springframework.http.converter.protobuf.ProtobufHttpMessageConverter; -import org.springframework.web.client.RestTemplate; - -import com.baeldung.protobuf.BaeldungTraining.Course; -import com.baeldung.protobuf.BaeldungTraining.Student; -import com.baeldung.protobuf.BaeldungTraining.Student.PhoneNumber; -import com.baeldung.protobuf.BaeldungTraining.Student.PhoneType; - @SpringBootApplication public class Application { + @Bean RestTemplate restTemplate(ProtobufHttpMessageConverter hmc) { return new RestTemplate(Arrays.asList(hmc)); @@ -29,21 +29,28 @@ public class Application { } @Bean - public CourseRepository createDummyCourses() { - Map dummy = new HashMap<>(); - - Course course1 = Course.newBuilder().setId(1).setCourseName("REST with Spring").addAllStudent(createDummyStudents()).build(); - Course course2 = Course.newBuilder().setId(2).setCourseName("Learn Spring Security").addAllStudent(new ArrayList()).build(); - - dummy.put(course1.getId(), course1); - dummy.put(course2.getId(), course2); - - return new CourseRepository(dummy); + public CourseRepository createStubCourses() { + Map courses = new HashMap<>(); + + Course course1 = Course.newBuilder() + .setId(1) + .setCourseName("REST with Spring") + .addAllStudent(createStubStudents()) + .build(); + + Course course2 = Course.newBuilder() + .setId(2) + .setCourseName("Learn Spring Security") + .addAllStudent(new ArrayList<>()) + .build(); + + courses.put(course1.getId(), course1); + courses.put(course2.getId(), course2); + + return new CourseRepository(courses); } - private List createDummyStudents() { - List studentList = new ArrayList<>(); - + private List createStubStudents() { PhoneNumber phone1 = createPhone("123456", PhoneType.MOBILE); Student student1 = createStudent(1, "John", "Doe", "john.doe@baeldung.com", Arrays.asList(phone1)); @@ -54,8 +61,7 @@ public class Application { PhoneNumber phone3_2 = createPhone("456789", PhoneType.LANDLINE); Student student3 = createStudent(3, "Jane", "Doe", "jane.doe@baeldung.com", Arrays.asList(phone3_1, phone3_2)); - studentList.addAll(Arrays.asList(student1, student2, student3)); - return studentList; + return Arrays.asList(student1, student2, student3); } private Student createStudent(int id, String firstName, String lastName, String email, List phones) { diff --git a/spring-protobuf/src/main/java/com/baeldung/protobuf/CourseController.java b/spring-protobuf/src/main/java/com/baeldung/protobuf/CourseController.java index 027f296fa2..807b9a9ea4 100644 --- a/spring-protobuf/src/main/java/com/baeldung/protobuf/CourseController.java +++ b/spring-protobuf/src/main/java/com/baeldung/protobuf/CourseController.java @@ -9,6 +9,7 @@ import com.baeldung.protobuf.BaeldungTraining.Course; @RestController public class CourseController { + @Autowired CourseRepository courseRepo; diff --git a/spring-protobuf/src/main/java/com/baeldung/protobuf/CourseRepository.java b/spring-protobuf/src/main/java/com/baeldung/protobuf/CourseRepository.java index aa00b2a850..60f24abf93 100644 --- a/spring-protobuf/src/main/java/com/baeldung/protobuf/CourseRepository.java +++ b/spring-protobuf/src/main/java/com/baeldung/protobuf/CourseRepository.java @@ -1,11 +1,12 @@ package com.baeldung.protobuf; -import java.util.Map; - import com.baeldung.protobuf.BaeldungTraining.Course; +import java.util.Map; + public class CourseRepository { - Map courses; + + private final Map courses; public CourseRepository (Map courses) { this.courses = courses; diff --git a/spring-protobuf/src/test/java/com/baeldung/protobuf/ApplicationTest.java b/spring-protobuf/src/test/java/com/baeldung/protobuf/ApplicationTest.java index 026fa04fa2..a17082cea7 100644 --- a/spring-protobuf/src/test/java/com/baeldung/protobuf/ApplicationTest.java +++ b/spring-protobuf/src/test/java/com/baeldung/protobuf/ApplicationTest.java @@ -1,13 +1,13 @@ package com.baeldung.protobuf; -import java.io.IOException; -import java.io.InputStream; - +import com.baeldung.protobuf.BaeldungTraining.Course; +import com.googlecode.protobuf.format.JsonFormat; import org.apache.http.HttpResponse; import org.apache.http.client.methods.HttpGet; import org.apache.http.impl.client.CloseableHttpClient; import org.apache.http.impl.client.HttpClients; - +import org.junit.Test; +import org.junit.runner.RunWith; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.boot.test.SpringApplicationConfiguration; import org.springframework.boot.test.WebIntegrationTest; @@ -15,20 +15,19 @@ import org.springframework.http.ResponseEntity; import org.springframework.test.context.junit4.SpringJUnit4ClassRunner; import org.springframework.web.client.RestTemplate; -import org.junit.Test; -import org.junit.runner.RunWith; +import java.io.IOException; +import java.io.InputStream; -import com.baeldung.protobuf.BaeldungTraining.Course; -import com.googlecode.protobuf.format.JsonFormat; - -import static org.junit.Assert.assertThat; import static org.hamcrest.CoreMatchers.containsString; +import static org.junit.Assert.assertThat; @RunWith(SpringJUnit4ClassRunner.class) @SpringApplicationConfiguration(classes = Application.class) @WebIntegrationTest public class ApplicationTest { + private static final String COURSE1_URL = "http://localhost:8080/courses/1"; + @Autowired private RestTemplate restTemplate; From b1bdeb92d68848c26aab5cbaedce50327886854e Mon Sep 17 00:00:00 2001 From: eugenp Date: Sat, 18 Jun 2016 23:52:26 +0300 Subject: [PATCH 048/108] minor formatting work --- .../org/baeldung/httpclient/SandboxTest.java | 3 +- .../com/baeldung/protobuf/Application.java | 12 +- .../baeldung/protobuf/BaeldungTraining.java | 5074 ++++++++--------- .../baeldung/protobuf/CourseRepository.java | 6 +- 4 files changed, 2479 insertions(+), 2616 deletions(-) diff --git a/httpclient/src/test/java/org/baeldung/httpclient/SandboxTest.java b/httpclient/src/test/java/org/baeldung/httpclient/SandboxTest.java index 514611d1f9..dc1a206f0d 100644 --- a/httpclient/src/test/java/org/baeldung/httpclient/SandboxTest.java +++ b/httpclient/src/test/java/org/baeldung/httpclient/SandboxTest.java @@ -108,7 +108,7 @@ public class SandboxTest { // Make a client using those creds final CloseableHttpClient client = HttpClients.custom().setDefaultCookieStore(cookieStore).setDefaultCredentialsProvider(credsProvider).build(); - + // And make a call to the URL we are after final HttpGet httpget = new HttpGet("http://httpbin.org/digest-auth/auth/user/passwd"); @@ -127,6 +127,7 @@ public class SandboxTest { try { System.out.println("----------------------------------------"); + System.out.println(responseGood.getStatusLine()); assertEquals(200, responseGood.getStatusLine().getStatusCode()); } finally { responseGood.close(); diff --git a/spring-protobuf/src/main/java/com/baeldung/protobuf/Application.java b/spring-protobuf/src/main/java/com/baeldung/protobuf/Application.java index ce5453af61..234c3e3382 100644 --- a/spring-protobuf/src/main/java/com/baeldung/protobuf/Application.java +++ b/spring-protobuf/src/main/java/com/baeldung/protobuf/Application.java @@ -32,17 +32,9 @@ public class Application { public CourseRepository createStubCourses() { Map courses = new HashMap<>(); - Course course1 = Course.newBuilder() - .setId(1) - .setCourseName("REST with Spring") - .addAllStudent(createStubStudents()) - .build(); + Course course1 = Course.newBuilder().setId(1).setCourseName("REST with Spring").addAllStudent(createStubStudents()).build(); - Course course2 = Course.newBuilder() - .setId(2) - .setCourseName("Learn Spring Security") - .addAllStudent(new ArrayList<>()) - .build(); + Course course2 = Course.newBuilder().setId(2).setCourseName("Learn Spring Security").addAllStudent(new ArrayList<>()).build(); courses.put(course1.getId(), course1); courses.put(course2.getId(), course2); diff --git a/spring-protobuf/src/main/java/com/baeldung/protobuf/BaeldungTraining.java b/spring-protobuf/src/main/java/com/baeldung/protobuf/BaeldungTraining.java index 3869ebfaeb..5cab2ae908 100644 --- a/spring-protobuf/src/main/java/com/baeldung/protobuf/BaeldungTraining.java +++ b/spring-protobuf/src/main/java/com/baeldung/protobuf/BaeldungTraining.java @@ -4,2716 +4,2586 @@ package com.baeldung.protobuf; public final class BaeldungTraining { - private BaeldungTraining() {} - public static void registerAllExtensions( - com.google.protobuf.ExtensionRegistry registry) { - } - public interface CourseOrBuilder extends - // @@protoc_insertion_point(interface_extends:baeldung.Course) - com.google.protobuf.MessageOrBuilder { - - /** - * optional int32 id = 1; - */ - int getId(); - - /** - * optional string course_name = 2; - */ - java.lang.String getCourseName(); - /** - * optional string course_name = 2; - */ - com.google.protobuf.ByteString - getCourseNameBytes(); - - /** - * repeated .baeldung.Student student = 3; - */ - java.util.List - getStudentList(); - /** - * repeated .baeldung.Student student = 3; - */ - com.baeldung.protobuf.BaeldungTraining.Student getStudent(int index); - /** - * repeated .baeldung.Student student = 3; - */ - int getStudentCount(); - /** - * repeated .baeldung.Student student = 3; - */ - java.util.List - getStudentOrBuilderList(); - /** - * repeated .baeldung.Student student = 3; - */ - com.baeldung.protobuf.BaeldungTraining.StudentOrBuilder getStudentOrBuilder( - int index); - } - /** - * Protobuf type {@code baeldung.Course} - */ - public static final class Course extends - com.google.protobuf.GeneratedMessage implements - // @@protoc_insertion_point(message_implements:baeldung.Course) - CourseOrBuilder { - // Use Course.newBuilder() to construct. - private Course(com.google.protobuf.GeneratedMessage.Builder builder) { - super(builder); - } - private Course() { - id_ = 0; - courseName_ = ""; - student_ = java.util.Collections.emptyList(); + private BaeldungTraining() { } - @java.lang.Override - public final com.google.protobuf.UnknownFieldSet - getUnknownFields() { - return com.google.protobuf.UnknownFieldSet.getDefaultInstance(); - } - private Course( - com.google.protobuf.CodedInputStream input, - com.google.protobuf.ExtensionRegistryLite extensionRegistry) - throws com.google.protobuf.InvalidProtocolBufferException { - this(); - int mutable_bitField0_ = 0; - try { - boolean done = false; - while (!done) { - int tag = input.readTag(); - switch (tag) { - case 0: - done = true; - break; - default: { - if (!input.skipField(tag)) { - done = true; - } - break; - } - case 8: { - - id_ = input.readInt32(); - break; - } - case 18: { - java.lang.String s = input.readStringRequireUtf8(); - - courseName_ = s; - break; - } - case 26: { - if (!((mutable_bitField0_ & 0x00000004) == 0x00000004)) { - student_ = new java.util.ArrayList(); - mutable_bitField0_ |= 0x00000004; - } - student_.add(input.readMessage(com.baeldung.protobuf.BaeldungTraining.Student.parser(), extensionRegistry)); - break; - } - } - } - } catch (com.google.protobuf.InvalidProtocolBufferException e) { - throw e.setUnfinishedMessage(this); - } catch (java.io.IOException e) { - throw new com.google.protobuf.InvalidProtocolBufferException( - e).setUnfinishedMessage(this); - } finally { - if (((mutable_bitField0_ & 0x00000004) == 0x00000004)) { - student_ = java.util.Collections.unmodifiableList(student_); - } - makeExtensionsImmutable(); - } - } - public static final com.google.protobuf.Descriptors.Descriptor - getDescriptor() { - return com.baeldung.protobuf.BaeldungTraining.internal_static_baeldung_Course_descriptor; + public static void registerAllExtensions(com.google.protobuf.ExtensionRegistry registry) { } - protected com.google.protobuf.GeneratedMessage.FieldAccessorTable - internalGetFieldAccessorTable() { - return com.baeldung.protobuf.BaeldungTraining.internal_static_baeldung_Course_fieldAccessorTable - .ensureFieldAccessorsInitialized( - com.baeldung.protobuf.BaeldungTraining.Course.class, com.baeldung.protobuf.BaeldungTraining.Course.Builder.class); + public interface CourseOrBuilder extends + // @@protoc_insertion_point(interface_extends:baeldung.Course) + com.google.protobuf.MessageOrBuilder { + + /** + * optional int32 id = 1; + */ + int getId(); + + /** + * optional string course_name = 2; + */ + java.lang.String getCourseName(); + + /** + * optional string course_name = 2; + */ + com.google.protobuf.ByteString getCourseNameBytes(); + + /** + * repeated .baeldung.Student student = 3; + */ + java.util.List getStudentList(); + + /** + * repeated .baeldung.Student student = 3; + */ + com.baeldung.protobuf.BaeldungTraining.Student getStudent(int index); + + /** + * repeated .baeldung.Student student = 3; + */ + int getStudentCount(); + + /** + * repeated .baeldung.Student student = 3; + */ + java.util.List getStudentOrBuilderList(); + + /** + * repeated .baeldung.Student student = 3; + */ + com.baeldung.protobuf.BaeldungTraining.StudentOrBuilder getStudentOrBuilder(int index); } - private int bitField0_; - public static final int ID_FIELD_NUMBER = 1; - private int id_; - /** - * optional int32 id = 1; - */ - public int getId() { - return id_; - } - - public static final int COURSE_NAME_FIELD_NUMBER = 2; - private volatile java.lang.Object courseName_; - /** - * optional string course_name = 2; - */ - public java.lang.String getCourseName() { - java.lang.Object ref = courseName_; - if (ref instanceof java.lang.String) { - return (java.lang.String) ref; - } else { - com.google.protobuf.ByteString bs = - (com.google.protobuf.ByteString) ref; - java.lang.String s = bs.toStringUtf8(); - courseName_ = s; - return s; - } - } - /** - * optional string course_name = 2; - */ - public com.google.protobuf.ByteString - getCourseNameBytes() { - java.lang.Object ref = courseName_; - if (ref instanceof java.lang.String) { - com.google.protobuf.ByteString b = - com.google.protobuf.ByteString.copyFromUtf8( - (java.lang.String) ref); - courseName_ = b; - return b; - } else { - return (com.google.protobuf.ByteString) ref; - } - } - - public static final int STUDENT_FIELD_NUMBER = 3; - private java.util.List student_; - /** - * repeated .baeldung.Student student = 3; - */ - public java.util.List getStudentList() { - return student_; - } - /** - * repeated .baeldung.Student student = 3; - */ - public java.util.List - getStudentOrBuilderList() { - return student_; - } - /** - * repeated .baeldung.Student student = 3; - */ - public int getStudentCount() { - return student_.size(); - } - /** - * repeated .baeldung.Student student = 3; - */ - public com.baeldung.protobuf.BaeldungTraining.Student getStudent(int index) { - return student_.get(index); - } - /** - * repeated .baeldung.Student student = 3; - */ - public com.baeldung.protobuf.BaeldungTraining.StudentOrBuilder getStudentOrBuilder( - int index) { - return student_.get(index); - } - - private byte memoizedIsInitialized = -1; - public final boolean isInitialized() { - byte isInitialized = memoizedIsInitialized; - if (isInitialized == 1) return true; - if (isInitialized == 0) return false; - - memoizedIsInitialized = 1; - return true; - } - - public void writeTo(com.google.protobuf.CodedOutputStream output) - throws java.io.IOException { - if (id_ != 0) { - output.writeInt32(1, id_); - } - if (!getCourseNameBytes().isEmpty()) { - com.google.protobuf.GeneratedMessage.writeString(output, 2, courseName_); - } - for (int i = 0; i < student_.size(); i++) { - output.writeMessage(3, student_.get(i)); - } - } - - public int getSerializedSize() { - int size = memoizedSize; - if (size != -1) return size; - - size = 0; - if (id_ != 0) { - size += com.google.protobuf.CodedOutputStream - .computeInt32Size(1, id_); - } - if (!getCourseNameBytes().isEmpty()) { - size += com.google.protobuf.GeneratedMessage.computeStringSize(2, courseName_); - } - for (int i = 0; i < student_.size(); i++) { - size += com.google.protobuf.CodedOutputStream - .computeMessageSize(3, student_.get(i)); - } - memoizedSize = size; - return size; - } - - private static final long serialVersionUID = 0L; - public static com.baeldung.protobuf.BaeldungTraining.Course parseFrom( - com.google.protobuf.ByteString data) - throws com.google.protobuf.InvalidProtocolBufferException { - return PARSER.parseFrom(data); - } - public static com.baeldung.protobuf.BaeldungTraining.Course parseFrom( - com.google.protobuf.ByteString data, - com.google.protobuf.ExtensionRegistryLite extensionRegistry) - throws com.google.protobuf.InvalidProtocolBufferException { - return PARSER.parseFrom(data, extensionRegistry); - } - public static com.baeldung.protobuf.BaeldungTraining.Course parseFrom(byte[] data) - throws com.google.protobuf.InvalidProtocolBufferException { - return PARSER.parseFrom(data); - } - public static com.baeldung.protobuf.BaeldungTraining.Course parseFrom( - byte[] data, - com.google.protobuf.ExtensionRegistryLite extensionRegistry) - throws com.google.protobuf.InvalidProtocolBufferException { - return PARSER.parseFrom(data, extensionRegistry); - } - public static com.baeldung.protobuf.BaeldungTraining.Course parseFrom(java.io.InputStream input) - throws java.io.IOException { - return com.google.protobuf.GeneratedMessage - .parseWithIOException(PARSER, input); - } - public static com.baeldung.protobuf.BaeldungTraining.Course parseFrom( - java.io.InputStream input, - com.google.protobuf.ExtensionRegistryLite extensionRegistry) - throws java.io.IOException { - return com.google.protobuf.GeneratedMessage - .parseWithIOException(PARSER, input, extensionRegistry); - } - public static com.baeldung.protobuf.BaeldungTraining.Course parseDelimitedFrom(java.io.InputStream input) - throws java.io.IOException { - return com.google.protobuf.GeneratedMessage - .parseDelimitedWithIOException(PARSER, input); - } - public static com.baeldung.protobuf.BaeldungTraining.Course parseDelimitedFrom( - java.io.InputStream input, - com.google.protobuf.ExtensionRegistryLite extensionRegistry) - throws java.io.IOException { - return com.google.protobuf.GeneratedMessage - .parseDelimitedWithIOException(PARSER, input, extensionRegistry); - } - public static com.baeldung.protobuf.BaeldungTraining.Course parseFrom( - com.google.protobuf.CodedInputStream input) - throws java.io.IOException { - return com.google.protobuf.GeneratedMessage - .parseWithIOException(PARSER, input); - } - public static com.baeldung.protobuf.BaeldungTraining.Course parseFrom( - com.google.protobuf.CodedInputStream input, - com.google.protobuf.ExtensionRegistryLite extensionRegistry) - throws java.io.IOException { - return com.google.protobuf.GeneratedMessage - .parseWithIOException(PARSER, input, extensionRegistry); - } - - public Builder newBuilderForType() { return newBuilder(); } - public static Builder newBuilder() { - return DEFAULT_INSTANCE.toBuilder(); - } - public static Builder newBuilder(com.baeldung.protobuf.BaeldungTraining.Course prototype) { - return DEFAULT_INSTANCE.toBuilder().mergeFrom(prototype); - } - public Builder toBuilder() { - return this == DEFAULT_INSTANCE - ? new Builder() : new Builder().mergeFrom(this); - } - - @java.lang.Override - protected Builder newBuilderForType( - com.google.protobuf.GeneratedMessage.BuilderParent parent) { - Builder builder = new Builder(parent); - return builder; - } /** * Protobuf type {@code baeldung.Course} */ - public static final class Builder extends - com.google.protobuf.GeneratedMessage.Builder implements - // @@protoc_insertion_point(builder_implements:baeldung.Course) - com.baeldung.protobuf.BaeldungTraining.CourseOrBuilder { - public static final com.google.protobuf.Descriptors.Descriptor - getDescriptor() { - return com.baeldung.protobuf.BaeldungTraining.internal_static_baeldung_Course_descriptor; - } - - protected com.google.protobuf.GeneratedMessage.FieldAccessorTable - internalGetFieldAccessorTable() { - return com.baeldung.protobuf.BaeldungTraining.internal_static_baeldung_Course_fieldAccessorTable - .ensureFieldAccessorsInitialized( - com.baeldung.protobuf.BaeldungTraining.Course.class, com.baeldung.protobuf.BaeldungTraining.Course.Builder.class); - } - - // Construct using com.baeldung.protobuf.BaeldungTraining.Course.newBuilder() - private Builder() { - maybeForceBuilderInitialization(); - } - - private Builder( - com.google.protobuf.GeneratedMessage.BuilderParent parent) { - super(parent); - maybeForceBuilderInitialization(); - } - private void maybeForceBuilderInitialization() { - if (com.google.protobuf.GeneratedMessage.alwaysUseFieldBuilders) { - getStudentFieldBuilder(); + public static final class Course extends com.google.protobuf.GeneratedMessage implements + // @@protoc_insertion_point(message_implements:baeldung.Course) + CourseOrBuilder { + // Use Course.newBuilder() to construct. + private Course(com.google.protobuf.GeneratedMessage.Builder builder) { + super(builder); } - } - public Builder clear() { - super.clear(); - id_ = 0; - courseName_ = ""; - - if (studentBuilder_ == null) { - student_ = java.util.Collections.emptyList(); - bitField0_ = (bitField0_ & ~0x00000004); - } else { - studentBuilder_.clear(); + private Course() { + id_ = 0; + courseName_ = ""; + student_ = java.util.Collections.emptyList(); } - return this; - } - public com.google.protobuf.Descriptors.Descriptor - getDescriptorForType() { - return com.baeldung.protobuf.BaeldungTraining.internal_static_baeldung_Course_descriptor; - } - - public com.baeldung.protobuf.BaeldungTraining.Course getDefaultInstanceForType() { - return com.baeldung.protobuf.BaeldungTraining.Course.getDefaultInstance(); - } - - public com.baeldung.protobuf.BaeldungTraining.Course build() { - com.baeldung.protobuf.BaeldungTraining.Course result = buildPartial(); - if (!result.isInitialized()) { - throw newUninitializedMessageException(result); + @java.lang.Override + public final com.google.protobuf.UnknownFieldSet getUnknownFields() { + return com.google.protobuf.UnknownFieldSet.getDefaultInstance(); } - return result; - } - public com.baeldung.protobuf.BaeldungTraining.Course buildPartial() { - com.baeldung.protobuf.BaeldungTraining.Course result = new com.baeldung.protobuf.BaeldungTraining.Course(this); - int from_bitField0_ = bitField0_; - int to_bitField0_ = 0; - result.id_ = id_; - result.courseName_ = courseName_; - if (studentBuilder_ == null) { - if (((bitField0_ & 0x00000004) == 0x00000004)) { - student_ = java.util.Collections.unmodifiableList(student_); - bitField0_ = (bitField0_ & ~0x00000004); - } - result.student_ = student_; - } else { - result.student_ = studentBuilder_.build(); - } - result.bitField0_ = to_bitField0_; - onBuilt(); - return result; - } + private Course(com.google.protobuf.CodedInputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws com.google.protobuf.InvalidProtocolBufferException { + this(); + int mutable_bitField0_ = 0; + try { + boolean done = false; + while (!done) { + int tag = input.readTag(); + switch (tag) { + case 0: + done = true; + break; + default: { + if (!input.skipField(tag)) { + done = true; + } + break; + } + case 8: { - public Builder mergeFrom(com.google.protobuf.Message other) { - if (other instanceof com.baeldung.protobuf.BaeldungTraining.Course) { - return mergeFrom((com.baeldung.protobuf.BaeldungTraining.Course)other); - } else { - super.mergeFrom(other); - return this; - } - } + id_ = input.readInt32(); + break; + } + case 18: { + java.lang.String s = input.readStringRequireUtf8(); - public Builder mergeFrom(com.baeldung.protobuf.BaeldungTraining.Course other) { - if (other == com.baeldung.protobuf.BaeldungTraining.Course.getDefaultInstance()) return this; - if (other.getId() != 0) { - setId(other.getId()); - } - if (!other.getCourseName().isEmpty()) { - courseName_ = other.courseName_; - onChanged(); - } - if (studentBuilder_ == null) { - if (!other.student_.isEmpty()) { - if (student_.isEmpty()) { - student_ = other.student_; - bitField0_ = (bitField0_ & ~0x00000004); - } else { - ensureStudentIsMutable(); - student_.addAll(other.student_); - } - onChanged(); - } - } else { - if (!other.student_.isEmpty()) { - if (studentBuilder_.isEmpty()) { - studentBuilder_.dispose(); - studentBuilder_ = null; - student_ = other.student_; - bitField0_ = (bitField0_ & ~0x00000004); - studentBuilder_ = - com.google.protobuf.GeneratedMessage.alwaysUseFieldBuilders ? - getStudentFieldBuilder() : null; - } else { - studentBuilder_.addAllMessages(other.student_); - } - } - } - onChanged(); - return this; - } - - public final boolean isInitialized() { - return true; - } - - public Builder mergeFrom( - com.google.protobuf.CodedInputStream input, - com.google.protobuf.ExtensionRegistryLite extensionRegistry) - throws java.io.IOException { - com.baeldung.protobuf.BaeldungTraining.Course parsedMessage = null; - try { - parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry); - } catch (com.google.protobuf.InvalidProtocolBufferException e) { - parsedMessage = (com.baeldung.protobuf.BaeldungTraining.Course) e.getUnfinishedMessage(); - throw e.unwrapIOException(); - } finally { - if (parsedMessage != null) { - mergeFrom(parsedMessage); - } - } - return this; - } - private int bitField0_; - - private int id_ ; - /** - * optional int32 id = 1; - */ - public int getId() { - return id_; - } - /** - * optional int32 id = 1; - */ - public Builder setId(int value) { - - id_ = value; - onChanged(); - return this; - } - /** - * optional int32 id = 1; - */ - public Builder clearId() { - - id_ = 0; - onChanged(); - return this; - } - - private java.lang.Object courseName_ = ""; - /** - * optional string course_name = 2; - */ - public java.lang.String getCourseName() { - java.lang.Object ref = courseName_; - if (!(ref instanceof java.lang.String)) { - com.google.protobuf.ByteString bs = - (com.google.protobuf.ByteString) ref; - java.lang.String s = bs.toStringUtf8(); - courseName_ = s; - return s; - } else { - return (java.lang.String) ref; - } - } - /** - * optional string course_name = 2; - */ - public com.google.protobuf.ByteString - getCourseNameBytes() { - java.lang.Object ref = courseName_; - if (ref instanceof String) { - com.google.protobuf.ByteString b = - com.google.protobuf.ByteString.copyFromUtf8( - (java.lang.String) ref); - courseName_ = b; - return b; - } else { - return (com.google.protobuf.ByteString) ref; - } - } - /** - * optional string course_name = 2; - */ - public Builder setCourseName( - java.lang.String value) { - if (value == null) { - throw new NullPointerException(); - } - - courseName_ = value; - onChanged(); - return this; - } - /** - * optional string course_name = 2; - */ - public Builder clearCourseName() { - - courseName_ = getDefaultInstance().getCourseName(); - onChanged(); - return this; - } - /** - * optional string course_name = 2; - */ - public Builder setCourseNameBytes( - com.google.protobuf.ByteString value) { - if (value == null) { - throw new NullPointerException(); - } - checkByteStringIsUtf8(value); - - courseName_ = value; - onChanged(); - return this; - } - - private java.util.List student_ = - java.util.Collections.emptyList(); - private void ensureStudentIsMutable() { - if (!((bitField0_ & 0x00000004) == 0x00000004)) { - student_ = new java.util.ArrayList(student_); - bitField0_ |= 0x00000004; - } - } - - private com.google.protobuf.RepeatedFieldBuilder< - com.baeldung.protobuf.BaeldungTraining.Student, com.baeldung.protobuf.BaeldungTraining.Student.Builder, com.baeldung.protobuf.BaeldungTraining.StudentOrBuilder> studentBuilder_; - - /** - * repeated .baeldung.Student student = 3; - */ - public java.util.List getStudentList() { - if (studentBuilder_ == null) { - return java.util.Collections.unmodifiableList(student_); - } else { - return studentBuilder_.getMessageList(); - } - } - /** - * repeated .baeldung.Student student = 3; - */ - public int getStudentCount() { - if (studentBuilder_ == null) { - return student_.size(); - } else { - return studentBuilder_.getCount(); - } - } - /** - * repeated .baeldung.Student student = 3; - */ - public com.baeldung.protobuf.BaeldungTraining.Student getStudent(int index) { - if (studentBuilder_ == null) { - return student_.get(index); - } else { - return studentBuilder_.getMessage(index); - } - } - /** - * repeated .baeldung.Student student = 3; - */ - public Builder setStudent( - int index, com.baeldung.protobuf.BaeldungTraining.Student value) { - if (studentBuilder_ == null) { - if (value == null) { - throw new NullPointerException(); - } - ensureStudentIsMutable(); - student_.set(index, value); - onChanged(); - } else { - studentBuilder_.setMessage(index, value); - } - return this; - } - /** - * repeated .baeldung.Student student = 3; - */ - public Builder setStudent( - int index, com.baeldung.protobuf.BaeldungTraining.Student.Builder builderForValue) { - if (studentBuilder_ == null) { - ensureStudentIsMutable(); - student_.set(index, builderForValue.build()); - onChanged(); - } else { - studentBuilder_.setMessage(index, builderForValue.build()); - } - return this; - } - /** - * repeated .baeldung.Student student = 3; - */ - public Builder addStudent(com.baeldung.protobuf.BaeldungTraining.Student value) { - if (studentBuilder_ == null) { - if (value == null) { - throw new NullPointerException(); - } - ensureStudentIsMutable(); - student_.add(value); - onChanged(); - } else { - studentBuilder_.addMessage(value); - } - return this; - } - /** - * repeated .baeldung.Student student = 3; - */ - public Builder addStudent( - int index, com.baeldung.protobuf.BaeldungTraining.Student value) { - if (studentBuilder_ == null) { - if (value == null) { - throw new NullPointerException(); - } - ensureStudentIsMutable(); - student_.add(index, value); - onChanged(); - } else { - studentBuilder_.addMessage(index, value); - } - return this; - } - /** - * repeated .baeldung.Student student = 3; - */ - public Builder addStudent( - com.baeldung.protobuf.BaeldungTraining.Student.Builder builderForValue) { - if (studentBuilder_ == null) { - ensureStudentIsMutable(); - student_.add(builderForValue.build()); - onChanged(); - } else { - studentBuilder_.addMessage(builderForValue.build()); - } - return this; - } - /** - * repeated .baeldung.Student student = 3; - */ - public Builder addStudent( - int index, com.baeldung.protobuf.BaeldungTraining.Student.Builder builderForValue) { - if (studentBuilder_ == null) { - ensureStudentIsMutable(); - student_.add(index, builderForValue.build()); - onChanged(); - } else { - studentBuilder_.addMessage(index, builderForValue.build()); - } - return this; - } - /** - * repeated .baeldung.Student student = 3; - */ - public Builder addAllStudent( - java.lang.Iterable values) { - if (studentBuilder_ == null) { - ensureStudentIsMutable(); - com.google.protobuf.AbstractMessageLite.Builder.addAll( - values, student_); - onChanged(); - } else { - studentBuilder_.addAllMessages(values); - } - return this; - } - /** - * repeated .baeldung.Student student = 3; - */ - public Builder clearStudent() { - if (studentBuilder_ == null) { - student_ = java.util.Collections.emptyList(); - bitField0_ = (bitField0_ & ~0x00000004); - onChanged(); - } else { - studentBuilder_.clear(); - } - return this; - } - /** - * repeated .baeldung.Student student = 3; - */ - public Builder removeStudent(int index) { - if (studentBuilder_ == null) { - ensureStudentIsMutable(); - student_.remove(index); - onChanged(); - } else { - studentBuilder_.remove(index); - } - return this; - } - /** - * repeated .baeldung.Student student = 3; - */ - public com.baeldung.protobuf.BaeldungTraining.Student.Builder getStudentBuilder( - int index) { - return getStudentFieldBuilder().getBuilder(index); - } - /** - * repeated .baeldung.Student student = 3; - */ - public com.baeldung.protobuf.BaeldungTraining.StudentOrBuilder getStudentOrBuilder( - int index) { - if (studentBuilder_ == null) { - return student_.get(index); } else { - return studentBuilder_.getMessageOrBuilder(index); - } - } - /** - * repeated .baeldung.Student student = 3; - */ - public java.util.List - getStudentOrBuilderList() { - if (studentBuilder_ != null) { - return studentBuilder_.getMessageOrBuilderList(); - } else { - return java.util.Collections.unmodifiableList(student_); - } - } - /** - * repeated .baeldung.Student student = 3; - */ - public com.baeldung.protobuf.BaeldungTraining.Student.Builder addStudentBuilder() { - return getStudentFieldBuilder().addBuilder( - com.baeldung.protobuf.BaeldungTraining.Student.getDefaultInstance()); - } - /** - * repeated .baeldung.Student student = 3; - */ - public com.baeldung.protobuf.BaeldungTraining.Student.Builder addStudentBuilder( - int index) { - return getStudentFieldBuilder().addBuilder( - index, com.baeldung.protobuf.BaeldungTraining.Student.getDefaultInstance()); - } - /** - * repeated .baeldung.Student student = 3; - */ - public java.util.List - getStudentBuilderList() { - return getStudentFieldBuilder().getBuilderList(); - } - private com.google.protobuf.RepeatedFieldBuilder< - com.baeldung.protobuf.BaeldungTraining.Student, com.baeldung.protobuf.BaeldungTraining.Student.Builder, com.baeldung.protobuf.BaeldungTraining.StudentOrBuilder> - getStudentFieldBuilder() { - if (studentBuilder_ == null) { - studentBuilder_ = new com.google.protobuf.RepeatedFieldBuilder< - com.baeldung.protobuf.BaeldungTraining.Student, com.baeldung.protobuf.BaeldungTraining.Student.Builder, com.baeldung.protobuf.BaeldungTraining.StudentOrBuilder>( - student_, - ((bitField0_ & 0x00000004) == 0x00000004), - getParentForChildren(), - isClean()); - student_ = null; - } - return studentBuilder_; - } - public final Builder setUnknownFields( - final com.google.protobuf.UnknownFieldSet unknownFields) { - return this; - } - - public final Builder mergeUnknownFields( - final com.google.protobuf.UnknownFieldSet unknownFields) { - return this; - } - - - // @@protoc_insertion_point(builder_scope:baeldung.Course) - } - - // @@protoc_insertion_point(class_scope:baeldung.Course) - private static final com.baeldung.protobuf.BaeldungTraining.Course DEFAULT_INSTANCE; - static { - DEFAULT_INSTANCE = new com.baeldung.protobuf.BaeldungTraining.Course(); - } - - public static com.baeldung.protobuf.BaeldungTraining.Course getDefaultInstance() { - return DEFAULT_INSTANCE; - } - - private static final com.google.protobuf.Parser - PARSER = new com.google.protobuf.AbstractParser() { - public Course parsePartialFrom( - com.google.protobuf.CodedInputStream input, - com.google.protobuf.ExtensionRegistryLite extensionRegistry) - throws com.google.protobuf.InvalidProtocolBufferException { - return new Course(input, extensionRegistry); - } - }; - - public static com.google.protobuf.Parser parser() { - return PARSER; - } - - @java.lang.Override - public com.google.protobuf.Parser getParserForType() { - return PARSER; - } - - public com.baeldung.protobuf.BaeldungTraining.Course getDefaultInstanceForType() { - return DEFAULT_INSTANCE; - } - - } - - public interface StudentOrBuilder extends - // @@protoc_insertion_point(interface_extends:baeldung.Student) - com.google.protobuf.MessageOrBuilder { - - /** - * optional int32 id = 1; - */ - int getId(); - - /** - * optional string first_name = 2; - */ - java.lang.String getFirstName(); - /** - * optional string first_name = 2; - */ - com.google.protobuf.ByteString - getFirstNameBytes(); - - /** - * optional string last_name = 3; - */ - java.lang.String getLastName(); - /** - * optional string last_name = 3; - */ - com.google.protobuf.ByteString - getLastNameBytes(); - - /** - * optional string email = 4; - */ - java.lang.String getEmail(); - /** - * optional string email = 4; - */ - com.google.protobuf.ByteString - getEmailBytes(); - - /** - * repeated .baeldung.Student.PhoneNumber phone = 5; - */ - java.util.List - getPhoneList(); - /** - * repeated .baeldung.Student.PhoneNumber phone = 5; - */ - com.baeldung.protobuf.BaeldungTraining.Student.PhoneNumber getPhone(int index); - /** - * repeated .baeldung.Student.PhoneNumber phone = 5; - */ - int getPhoneCount(); - /** - * repeated .baeldung.Student.PhoneNumber phone = 5; - */ - java.util.List - getPhoneOrBuilderList(); - /** - * repeated .baeldung.Student.PhoneNumber phone = 5; - */ - com.baeldung.protobuf.BaeldungTraining.Student.PhoneNumberOrBuilder getPhoneOrBuilder( - int index); - } - /** - * Protobuf type {@code baeldung.Student} - */ - public static final class Student extends - com.google.protobuf.GeneratedMessage implements - // @@protoc_insertion_point(message_implements:baeldung.Student) - StudentOrBuilder { - // Use Student.newBuilder() to construct. - private Student(com.google.protobuf.GeneratedMessage.Builder builder) { - super(builder); - } - private Student() { - id_ = 0; - firstName_ = ""; - lastName_ = ""; - email_ = ""; - phone_ = java.util.Collections.emptyList(); - } - - @java.lang.Override - public final com.google.protobuf.UnknownFieldSet - getUnknownFields() { - return com.google.protobuf.UnknownFieldSet.getDefaultInstance(); - } - private Student( - com.google.protobuf.CodedInputStream input, - com.google.protobuf.ExtensionRegistryLite extensionRegistry) - throws com.google.protobuf.InvalidProtocolBufferException { - this(); - int mutable_bitField0_ = 0; - try { - boolean done = false; - while (!done) { - int tag = input.readTag(); - switch (tag) { - case 0: - done = true; - break; - default: { - if (!input.skipField(tag)) { - done = true; - } - break; - } - case 8: { - - id_ = input.readInt32(); - break; - } - case 18: { - java.lang.String s = input.readStringRequireUtf8(); - - firstName_ = s; - break; - } - case 26: { - java.lang.String s = input.readStringRequireUtf8(); - - lastName_ = s; - break; - } - case 34: { - java.lang.String s = input.readStringRequireUtf8(); - - email_ = s; - break; - } - case 42: { - if (!((mutable_bitField0_ & 0x00000010) == 0x00000010)) { - phone_ = new java.util.ArrayList(); - mutable_bitField0_ |= 0x00000010; - } - phone_.add(input.readMessage(com.baeldung.protobuf.BaeldungTraining.Student.PhoneNumber.parser(), extensionRegistry)); - break; - } - } - } - } catch (com.google.protobuf.InvalidProtocolBufferException e) { - throw e.setUnfinishedMessage(this); - } catch (java.io.IOException e) { - throw new com.google.protobuf.InvalidProtocolBufferException( - e).setUnfinishedMessage(this); - } finally { - if (((mutable_bitField0_ & 0x00000010) == 0x00000010)) { - phone_ = java.util.Collections.unmodifiableList(phone_); - } - makeExtensionsImmutable(); - } - } - public static final com.google.protobuf.Descriptors.Descriptor - getDescriptor() { - return com.baeldung.protobuf.BaeldungTraining.internal_static_baeldung_Student_descriptor; - } - - protected com.google.protobuf.GeneratedMessage.FieldAccessorTable - internalGetFieldAccessorTable() { - return com.baeldung.protobuf.BaeldungTraining.internal_static_baeldung_Student_fieldAccessorTable - .ensureFieldAccessorsInitialized( - com.baeldung.protobuf.BaeldungTraining.Student.class, com.baeldung.protobuf.BaeldungTraining.Student.Builder.class); - } - - /** - * Protobuf enum {@code baeldung.Student.PhoneType} - */ - public enum PhoneType - implements com.google.protobuf.ProtocolMessageEnum { - /** - * MOBILE = 0; - */ - MOBILE(0), - /** - * LANDLINE = 1; - */ - LANDLINE(1), - UNRECOGNIZED(-1), - ; - - /** - * MOBILE = 0; - */ - public static final int MOBILE_VALUE = 0; - /** - * LANDLINE = 1; - */ - public static final int LANDLINE_VALUE = 1; - - - public final int getNumber() { - if (this == UNRECOGNIZED) { - throw new java.lang.IllegalArgumentException( - "Can't get the number of an unknown enum value."); - } - return value; - } - - /** - * @deprecated Use {@link #forNumber(int)} instead. - */ - @java.lang.Deprecated - public static PhoneType valueOf(int value) { - return forNumber(value); - } - - public static PhoneType forNumber(int value) { - switch (value) { - case 0: return MOBILE; - case 1: return LANDLINE; - default: return null; - } - } - - public static com.google.protobuf.Internal.EnumLiteMap - internalGetValueMap() { - return internalValueMap; - } - private static final com.google.protobuf.Internal.EnumLiteMap< - PhoneType> internalValueMap = - new com.google.protobuf.Internal.EnumLiteMap() { - public PhoneType findValueByNumber(int number) { - return PhoneType.forNumber(number); - } - }; - - public final com.google.protobuf.Descriptors.EnumValueDescriptor - getValueDescriptor() { - return getDescriptor().getValues().get(ordinal()); - } - public final com.google.protobuf.Descriptors.EnumDescriptor - getDescriptorForType() { - return getDescriptor(); - } - public static final com.google.protobuf.Descriptors.EnumDescriptor - getDescriptor() { - return com.baeldung.protobuf.BaeldungTraining.Student.getDescriptor().getEnumTypes().get(0); - } - - private static final PhoneType[] VALUES = values(); - - public static PhoneType valueOf( - com.google.protobuf.Descriptors.EnumValueDescriptor desc) { - if (desc.getType() != getDescriptor()) { - throw new java.lang.IllegalArgumentException( - "EnumValueDescriptor is not for this type."); - } - if (desc.getIndex() == -1) { - return UNRECOGNIZED; - } - return VALUES[desc.getIndex()]; - } - - private final int value; - - private PhoneType(int value) { - this.value = value; - } - - // @@protoc_insertion_point(enum_scope:baeldung.Student.PhoneType) - } - - public interface PhoneNumberOrBuilder extends - // @@protoc_insertion_point(interface_extends:baeldung.Student.PhoneNumber) - com.google.protobuf.MessageOrBuilder { - - /** - * optional string number = 1; - */ - java.lang.String getNumber(); - /** - * optional string number = 1; - */ - com.google.protobuf.ByteString - getNumberBytes(); - - /** - * optional .baeldung.Student.PhoneType type = 2; - */ - int getTypeValue(); - /** - * optional .baeldung.Student.PhoneType type = 2; - */ - com.baeldung.protobuf.BaeldungTraining.Student.PhoneType getType(); - } - /** - * Protobuf type {@code baeldung.Student.PhoneNumber} - */ - public static final class PhoneNumber extends - com.google.protobuf.GeneratedMessage implements - // @@protoc_insertion_point(message_implements:baeldung.Student.PhoneNumber) - PhoneNumberOrBuilder { - // Use PhoneNumber.newBuilder() to construct. - private PhoneNumber(com.google.protobuf.GeneratedMessage.Builder builder) { - super(builder); - } - private PhoneNumber() { - number_ = ""; - type_ = 0; - } - - @java.lang.Override - public final com.google.protobuf.UnknownFieldSet - getUnknownFields() { - return com.google.protobuf.UnknownFieldSet.getDefaultInstance(); - } - private PhoneNumber( - com.google.protobuf.CodedInputStream input, - com.google.protobuf.ExtensionRegistryLite extensionRegistry) - throws com.google.protobuf.InvalidProtocolBufferException { - this(); - int mutable_bitField0_ = 0; - try { - boolean done = false; - while (!done) { - int tag = input.readTag(); - switch (tag) { - case 0: - done = true; - break; - default: { - if (!input.skipField(tag)) { - done = true; + courseName_ = s; + break; + } + case 26: { + if (!((mutable_bitField0_ & 0x00000004) == 0x00000004)) { + student_ = new java.util.ArrayList(); + mutable_bitField0_ |= 0x00000004; + } + student_.add(input.readMessage(com.baeldung.protobuf.BaeldungTraining.Student.parser(), extensionRegistry)); + break; + } + } } - break; - } - case 10: { - java.lang.String s = input.readStringRequireUtf8(); - - number_ = s; - break; - } - case 16: { - int rawValue = input.readEnum(); - - type_ = rawValue; - break; - } + } catch (com.google.protobuf.InvalidProtocolBufferException e) { + throw e.setUnfinishedMessage(this); + } catch (java.io.IOException e) { + throw new com.google.protobuf.InvalidProtocolBufferException(e).setUnfinishedMessage(this); + } finally { + if (((mutable_bitField0_ & 0x00000004) == 0x00000004)) { + student_ = java.util.Collections.unmodifiableList(student_); + } + makeExtensionsImmutable(); } - } - } catch (com.google.protobuf.InvalidProtocolBufferException e) { - throw e.setUnfinishedMessage(this); - } catch (java.io.IOException e) { - throw new com.google.protobuf.InvalidProtocolBufferException( - e).setUnfinishedMessage(this); - } finally { - makeExtensionsImmutable(); - } - } - public static final com.google.protobuf.Descriptors.Descriptor - getDescriptor() { - return com.baeldung.protobuf.BaeldungTraining.internal_static_baeldung_Student_PhoneNumber_descriptor; - } - - protected com.google.protobuf.GeneratedMessage.FieldAccessorTable - internalGetFieldAccessorTable() { - return com.baeldung.protobuf.BaeldungTraining.internal_static_baeldung_Student_PhoneNumber_fieldAccessorTable - .ensureFieldAccessorsInitialized( - com.baeldung.protobuf.BaeldungTraining.Student.PhoneNumber.class, com.baeldung.protobuf.BaeldungTraining.Student.PhoneNumber.Builder.class); - } - - public static final int NUMBER_FIELD_NUMBER = 1; - private volatile java.lang.Object number_; - /** - * optional string number = 1; - */ - public java.lang.String getNumber() { - java.lang.Object ref = number_; - if (ref instanceof java.lang.String) { - return (java.lang.String) ref; - } else { - com.google.protobuf.ByteString bs = - (com.google.protobuf.ByteString) ref; - java.lang.String s = bs.toStringUtf8(); - number_ = s; - return s; - } - } - /** - * optional string number = 1; - */ - public com.google.protobuf.ByteString - getNumberBytes() { - java.lang.Object ref = number_; - if (ref instanceof java.lang.String) { - com.google.protobuf.ByteString b = - com.google.protobuf.ByteString.copyFromUtf8( - (java.lang.String) ref); - number_ = b; - return b; - } else { - return (com.google.protobuf.ByteString) ref; - } - } - - public static final int TYPE_FIELD_NUMBER = 2; - private int type_; - /** - * optional .baeldung.Student.PhoneType type = 2; - */ - public int getTypeValue() { - return type_; - } - /** - * optional .baeldung.Student.PhoneType type = 2; - */ - public com.baeldung.protobuf.BaeldungTraining.Student.PhoneType getType() { - com.baeldung.protobuf.BaeldungTraining.Student.PhoneType result = com.baeldung.protobuf.BaeldungTraining.Student.PhoneType.forNumber(type_); - return result == null ? com.baeldung.protobuf.BaeldungTraining.Student.PhoneType.UNRECOGNIZED : result; - } - - private byte memoizedIsInitialized = -1; - public final boolean isInitialized() { - byte isInitialized = memoizedIsInitialized; - if (isInitialized == 1) return true; - if (isInitialized == 0) return false; - - memoizedIsInitialized = 1; - return true; - } - - public void writeTo(com.google.protobuf.CodedOutputStream output) - throws java.io.IOException { - if (!getNumberBytes().isEmpty()) { - com.google.protobuf.GeneratedMessage.writeString(output, 1, number_); - } - if (type_ != com.baeldung.protobuf.BaeldungTraining.Student.PhoneType.MOBILE.getNumber()) { - output.writeEnum(2, type_); - } - } - - public int getSerializedSize() { - int size = memoizedSize; - if (size != -1) return size; - - size = 0; - if (!getNumberBytes().isEmpty()) { - size += com.google.protobuf.GeneratedMessage.computeStringSize(1, number_); - } - if (type_ != com.baeldung.protobuf.BaeldungTraining.Student.PhoneType.MOBILE.getNumber()) { - size += com.google.protobuf.CodedOutputStream - .computeEnumSize(2, type_); - } - memoizedSize = size; - return size; - } - - private static final long serialVersionUID = 0L; - public static com.baeldung.protobuf.BaeldungTraining.Student.PhoneNumber parseFrom( - com.google.protobuf.ByteString data) - throws com.google.protobuf.InvalidProtocolBufferException { - return PARSER.parseFrom(data); - } - public static com.baeldung.protobuf.BaeldungTraining.Student.PhoneNumber parseFrom( - com.google.protobuf.ByteString data, - com.google.protobuf.ExtensionRegistryLite extensionRegistry) - throws com.google.protobuf.InvalidProtocolBufferException { - return PARSER.parseFrom(data, extensionRegistry); - } - public static com.baeldung.protobuf.BaeldungTraining.Student.PhoneNumber parseFrom(byte[] data) - throws com.google.protobuf.InvalidProtocolBufferException { - return PARSER.parseFrom(data); - } - public static com.baeldung.protobuf.BaeldungTraining.Student.PhoneNumber parseFrom( - byte[] data, - com.google.protobuf.ExtensionRegistryLite extensionRegistry) - throws com.google.protobuf.InvalidProtocolBufferException { - return PARSER.parseFrom(data, extensionRegistry); - } - public static com.baeldung.protobuf.BaeldungTraining.Student.PhoneNumber parseFrom(java.io.InputStream input) - throws java.io.IOException { - return com.google.protobuf.GeneratedMessage - .parseWithIOException(PARSER, input); - } - public static com.baeldung.protobuf.BaeldungTraining.Student.PhoneNumber parseFrom( - java.io.InputStream input, - com.google.protobuf.ExtensionRegistryLite extensionRegistry) - throws java.io.IOException { - return com.google.protobuf.GeneratedMessage - .parseWithIOException(PARSER, input, extensionRegistry); - } - public static com.baeldung.protobuf.BaeldungTraining.Student.PhoneNumber parseDelimitedFrom(java.io.InputStream input) - throws java.io.IOException { - return com.google.protobuf.GeneratedMessage - .parseDelimitedWithIOException(PARSER, input); - } - public static com.baeldung.protobuf.BaeldungTraining.Student.PhoneNumber parseDelimitedFrom( - java.io.InputStream input, - com.google.protobuf.ExtensionRegistryLite extensionRegistry) - throws java.io.IOException { - return com.google.protobuf.GeneratedMessage - .parseDelimitedWithIOException(PARSER, input, extensionRegistry); - } - public static com.baeldung.protobuf.BaeldungTraining.Student.PhoneNumber parseFrom( - com.google.protobuf.CodedInputStream input) - throws java.io.IOException { - return com.google.protobuf.GeneratedMessage - .parseWithIOException(PARSER, input); - } - public static com.baeldung.protobuf.BaeldungTraining.Student.PhoneNumber parseFrom( - com.google.protobuf.CodedInputStream input, - com.google.protobuf.ExtensionRegistryLite extensionRegistry) - throws java.io.IOException { - return com.google.protobuf.GeneratedMessage - .parseWithIOException(PARSER, input, extensionRegistry); - } - - public Builder newBuilderForType() { return newBuilder(); } - public static Builder newBuilder() { - return DEFAULT_INSTANCE.toBuilder(); - } - public static Builder newBuilder(com.baeldung.protobuf.BaeldungTraining.Student.PhoneNumber prototype) { - return DEFAULT_INSTANCE.toBuilder().mergeFrom(prototype); - } - public Builder toBuilder() { - return this == DEFAULT_INSTANCE - ? new Builder() : new Builder().mergeFrom(this); - } - - @java.lang.Override - protected Builder newBuilderForType( - com.google.protobuf.GeneratedMessage.BuilderParent parent) { - Builder builder = new Builder(parent); - return builder; - } - /** - * Protobuf type {@code baeldung.Student.PhoneNumber} - */ - public static final class Builder extends - com.google.protobuf.GeneratedMessage.Builder implements - // @@protoc_insertion_point(builder_implements:baeldung.Student.PhoneNumber) - com.baeldung.protobuf.BaeldungTraining.Student.PhoneNumberOrBuilder { - public static final com.google.protobuf.Descriptors.Descriptor - getDescriptor() { - return com.baeldung.protobuf.BaeldungTraining.internal_static_baeldung_Student_PhoneNumber_descriptor; } - protected com.google.protobuf.GeneratedMessage.FieldAccessorTable - internalGetFieldAccessorTable() { - return com.baeldung.protobuf.BaeldungTraining.internal_static_baeldung_Student_PhoneNumber_fieldAccessorTable - .ensureFieldAccessorsInitialized( - com.baeldung.protobuf.BaeldungTraining.Student.PhoneNumber.class, com.baeldung.protobuf.BaeldungTraining.Student.PhoneNumber.Builder.class); + public static final com.google.protobuf.Descriptors.Descriptor getDescriptor() { + return com.baeldung.protobuf.BaeldungTraining.internal_static_baeldung_Course_descriptor; } - // Construct using com.baeldung.protobuf.BaeldungTraining.Student.PhoneNumber.newBuilder() - private Builder() { - maybeForceBuilderInitialization(); + protected com.google.protobuf.GeneratedMessage.FieldAccessorTable internalGetFieldAccessorTable() { + return com.baeldung.protobuf.BaeldungTraining.internal_static_baeldung_Course_fieldAccessorTable.ensureFieldAccessorsInitialized(com.baeldung.protobuf.BaeldungTraining.Course.class, com.baeldung.protobuf.BaeldungTraining.Course.Builder.class); } - private Builder( - com.google.protobuf.GeneratedMessage.BuilderParent parent) { - super(parent); - maybeForceBuilderInitialization(); - } - private void maybeForceBuilderInitialization() { - if (com.google.protobuf.GeneratedMessage.alwaysUseFieldBuilders) { - } - } - public Builder clear() { - super.clear(); - number_ = ""; + private int bitField0_; + public static final int ID_FIELD_NUMBER = 1; + private int id_; - type_ = 0; - - return this; + /** + * optional int32 id = 1; + */ + public int getId() { + return id_; } - public com.google.protobuf.Descriptors.Descriptor - getDescriptorForType() { - return com.baeldung.protobuf.BaeldungTraining.internal_static_baeldung_Student_PhoneNumber_descriptor; + public static final int COURSE_NAME_FIELD_NUMBER = 2; + private volatile java.lang.Object courseName_; + + /** + * optional string course_name = 2; + */ + public java.lang.String getCourseName() { + java.lang.Object ref = courseName_; + if (ref instanceof java.lang.String) { + return (java.lang.String) ref; + } else { + com.google.protobuf.ByteString bs = (com.google.protobuf.ByteString) ref; + java.lang.String s = bs.toStringUtf8(); + courseName_ = s; + return s; + } } - public com.baeldung.protobuf.BaeldungTraining.Student.PhoneNumber getDefaultInstanceForType() { - return com.baeldung.protobuf.BaeldungTraining.Student.PhoneNumber.getDefaultInstance(); + /** + * optional string course_name = 2; + */ + public com.google.protobuf.ByteString getCourseNameBytes() { + java.lang.Object ref = courseName_; + if (ref instanceof java.lang.String) { + com.google.protobuf.ByteString b = com.google.protobuf.ByteString.copyFromUtf8((java.lang.String) ref); + courseName_ = b; + return b; + } else { + return (com.google.protobuf.ByteString) ref; + } } - public com.baeldung.protobuf.BaeldungTraining.Student.PhoneNumber build() { - com.baeldung.protobuf.BaeldungTraining.Student.PhoneNumber result = buildPartial(); - if (!result.isInitialized()) { - throw newUninitializedMessageException(result); - } - return result; + public static final int STUDENT_FIELD_NUMBER = 3; + private java.util.List student_; + + /** + * repeated .baeldung.Student student = 3; + */ + public java.util.List getStudentList() { + return student_; } - public com.baeldung.protobuf.BaeldungTraining.Student.PhoneNumber buildPartial() { - com.baeldung.protobuf.BaeldungTraining.Student.PhoneNumber result = new com.baeldung.protobuf.BaeldungTraining.Student.PhoneNumber(this); - result.number_ = number_; - result.type_ = type_; - onBuilt(); - return result; + /** + * repeated .baeldung.Student student = 3; + */ + public java.util.List getStudentOrBuilderList() { + return student_; } - public Builder mergeFrom(com.google.protobuf.Message other) { - if (other instanceof com.baeldung.protobuf.BaeldungTraining.Student.PhoneNumber) { - return mergeFrom((com.baeldung.protobuf.BaeldungTraining.Student.PhoneNumber)other); - } else { - super.mergeFrom(other); - return this; - } + /** + * repeated .baeldung.Student student = 3; + */ + public int getStudentCount() { + return student_.size(); } - public Builder mergeFrom(com.baeldung.protobuf.BaeldungTraining.Student.PhoneNumber other) { - if (other == com.baeldung.protobuf.BaeldungTraining.Student.PhoneNumber.getDefaultInstance()) return this; - if (!other.getNumber().isEmpty()) { - number_ = other.number_; - onChanged(); - } - if (other.type_ != 0) { - setTypeValue(other.getTypeValue()); - } - onChanged(); - return this; + /** + * repeated .baeldung.Student student = 3; + */ + public com.baeldung.protobuf.BaeldungTraining.Student getStudent(int index) { + return student_.get(index); } + /** + * repeated .baeldung.Student student = 3; + */ + public com.baeldung.protobuf.BaeldungTraining.StudentOrBuilder getStudentOrBuilder(int index) { + return student_.get(index); + } + + private byte memoizedIsInitialized = -1; + public final boolean isInitialized() { - return true; + byte isInitialized = memoizedIsInitialized; + if (isInitialized == 1) + return true; + if (isInitialized == 0) + return false; + + memoizedIsInitialized = 1; + return true; } - public Builder mergeFrom( - com.google.protobuf.CodedInputStream input, - com.google.protobuf.ExtensionRegistryLite extensionRegistry) - throws java.io.IOException { - com.baeldung.protobuf.BaeldungTraining.Student.PhoneNumber parsedMessage = null; - try { - parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry); - } catch (com.google.protobuf.InvalidProtocolBufferException e) { - parsedMessage = (com.baeldung.protobuf.BaeldungTraining.Student.PhoneNumber) e.getUnfinishedMessage(); - throw e.unwrapIOException(); - } finally { - if (parsedMessage != null) { - mergeFrom(parsedMessage); + public void writeTo(com.google.protobuf.CodedOutputStream output) throws java.io.IOException { + if (id_ != 0) { + output.writeInt32(1, id_); + } + if (!getCourseNameBytes().isEmpty()) { + com.google.protobuf.GeneratedMessage.writeString(output, 2, courseName_); + } + for (int i = 0; i < student_.size(); i++) { + output.writeMessage(3, student_.get(i)); } - } - return this; } - private java.lang.Object number_ = ""; + public int getSerializedSize() { + int size = memoizedSize; + if (size != -1) + return size; + + size = 0; + if (id_ != 0) { + size += com.google.protobuf.CodedOutputStream.computeInt32Size(1, id_); + } + if (!getCourseNameBytes().isEmpty()) { + size += com.google.protobuf.GeneratedMessage.computeStringSize(2, courseName_); + } + for (int i = 0; i < student_.size(); i++) { + size += com.google.protobuf.CodedOutputStream.computeMessageSize(3, student_.get(i)); + } + memoizedSize = size; + return size; + } + + private static final long serialVersionUID = 0L; + + public static com.baeldung.protobuf.BaeldungTraining.Course parseFrom(com.google.protobuf.ByteString data) throws com.google.protobuf.InvalidProtocolBufferException { + return PARSER.parseFrom(data); + } + + public static com.baeldung.protobuf.BaeldungTraining.Course parseFrom(com.google.protobuf.ByteString data, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws com.google.protobuf.InvalidProtocolBufferException { + return PARSER.parseFrom(data, extensionRegistry); + } + + public static com.baeldung.protobuf.BaeldungTraining.Course parseFrom(byte[] data) throws com.google.protobuf.InvalidProtocolBufferException { + return PARSER.parseFrom(data); + } + + public static com.baeldung.protobuf.BaeldungTraining.Course parseFrom(byte[] data, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws com.google.protobuf.InvalidProtocolBufferException { + return PARSER.parseFrom(data, extensionRegistry); + } + + public static com.baeldung.protobuf.BaeldungTraining.Course parseFrom(java.io.InputStream input) throws java.io.IOException { + return com.google.protobuf.GeneratedMessage.parseWithIOException(PARSER, input); + } + + public static com.baeldung.protobuf.BaeldungTraining.Course parseFrom(java.io.InputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws java.io.IOException { + return com.google.protobuf.GeneratedMessage.parseWithIOException(PARSER, input, extensionRegistry); + } + + public static com.baeldung.protobuf.BaeldungTraining.Course parseDelimitedFrom(java.io.InputStream input) throws java.io.IOException { + return com.google.protobuf.GeneratedMessage.parseDelimitedWithIOException(PARSER, input); + } + + public static com.baeldung.protobuf.BaeldungTraining.Course parseDelimitedFrom(java.io.InputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws java.io.IOException { + return com.google.protobuf.GeneratedMessage.parseDelimitedWithIOException(PARSER, input, extensionRegistry); + } + + public static com.baeldung.protobuf.BaeldungTraining.Course parseFrom(com.google.protobuf.CodedInputStream input) throws java.io.IOException { + return com.google.protobuf.GeneratedMessage.parseWithIOException(PARSER, input); + } + + public static com.baeldung.protobuf.BaeldungTraining.Course parseFrom(com.google.protobuf.CodedInputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws java.io.IOException { + return com.google.protobuf.GeneratedMessage.parseWithIOException(PARSER, input, extensionRegistry); + } + + public Builder newBuilderForType() { + return newBuilder(); + } + + public static Builder newBuilder() { + return DEFAULT_INSTANCE.toBuilder(); + } + + public static Builder newBuilder(com.baeldung.protobuf.BaeldungTraining.Course prototype) { + return DEFAULT_INSTANCE.toBuilder().mergeFrom(prototype); + } + + public Builder toBuilder() { + return this == DEFAULT_INSTANCE ? new Builder() : new Builder().mergeFrom(this); + } + + @java.lang.Override + protected Builder newBuilderForType(com.google.protobuf.GeneratedMessage.BuilderParent parent) { + Builder builder = new Builder(parent); + return builder; + } + /** - * optional string number = 1; + * Protobuf type {@code baeldung.Course} */ - public java.lang.String getNumber() { - java.lang.Object ref = number_; - if (!(ref instanceof java.lang.String)) { - com.google.protobuf.ByteString bs = - (com.google.protobuf.ByteString) ref; - java.lang.String s = bs.toStringUtf8(); - number_ = s; - return s; - } else { - return (java.lang.String) ref; - } + public static final class Builder extends com.google.protobuf.GeneratedMessage.Builder implements + // @@protoc_insertion_point(builder_implements:baeldung.Course) + com.baeldung.protobuf.BaeldungTraining.CourseOrBuilder { + public static final com.google.protobuf.Descriptors.Descriptor getDescriptor() { + return com.baeldung.protobuf.BaeldungTraining.internal_static_baeldung_Course_descriptor; + } + + protected com.google.protobuf.GeneratedMessage.FieldAccessorTable internalGetFieldAccessorTable() { + return com.baeldung.protobuf.BaeldungTraining.internal_static_baeldung_Course_fieldAccessorTable.ensureFieldAccessorsInitialized(com.baeldung.protobuf.BaeldungTraining.Course.class, com.baeldung.protobuf.BaeldungTraining.Course.Builder.class); + } + + // Construct using com.baeldung.protobuf.BaeldungTraining.Course.newBuilder() + private Builder() { + maybeForceBuilderInitialization(); + } + + private Builder(com.google.protobuf.GeneratedMessage.BuilderParent parent) { + super(parent); + maybeForceBuilderInitialization(); + } + + private void maybeForceBuilderInitialization() { + if (com.google.protobuf.GeneratedMessage.alwaysUseFieldBuilders) { + getStudentFieldBuilder(); + } + } + + public Builder clear() { + super.clear(); + id_ = 0; + + courseName_ = ""; + + if (studentBuilder_ == null) { + student_ = java.util.Collections.emptyList(); + bitField0_ = (bitField0_ & ~0x00000004); + } else { + studentBuilder_.clear(); + } + return this; + } + + public com.google.protobuf.Descriptors.Descriptor getDescriptorForType() { + return com.baeldung.protobuf.BaeldungTraining.internal_static_baeldung_Course_descriptor; + } + + public com.baeldung.protobuf.BaeldungTraining.Course getDefaultInstanceForType() { + return com.baeldung.protobuf.BaeldungTraining.Course.getDefaultInstance(); + } + + public com.baeldung.protobuf.BaeldungTraining.Course build() { + com.baeldung.protobuf.BaeldungTraining.Course result = buildPartial(); + if (!result.isInitialized()) { + throw newUninitializedMessageException(result); + } + return result; + } + + public com.baeldung.protobuf.BaeldungTraining.Course buildPartial() { + com.baeldung.protobuf.BaeldungTraining.Course result = new com.baeldung.protobuf.BaeldungTraining.Course(this); + int from_bitField0_ = bitField0_; + int to_bitField0_ = 0; + result.id_ = id_; + result.courseName_ = courseName_; + if (studentBuilder_ == null) { + if (((bitField0_ & 0x00000004) == 0x00000004)) { + student_ = java.util.Collections.unmodifiableList(student_); + bitField0_ = (bitField0_ & ~0x00000004); + } + result.student_ = student_; + } else { + result.student_ = studentBuilder_.build(); + } + result.bitField0_ = to_bitField0_; + onBuilt(); + return result; + } + + public Builder mergeFrom(com.google.protobuf.Message other) { + if (other instanceof com.baeldung.protobuf.BaeldungTraining.Course) { + return mergeFrom((com.baeldung.protobuf.BaeldungTraining.Course) other); + } else { + super.mergeFrom(other); + return this; + } + } + + public Builder mergeFrom(com.baeldung.protobuf.BaeldungTraining.Course other) { + if (other == com.baeldung.protobuf.BaeldungTraining.Course.getDefaultInstance()) + return this; + if (other.getId() != 0) { + setId(other.getId()); + } + if (!other.getCourseName().isEmpty()) { + courseName_ = other.courseName_; + onChanged(); + } + if (studentBuilder_ == null) { + if (!other.student_.isEmpty()) { + if (student_.isEmpty()) { + student_ = other.student_; + bitField0_ = (bitField0_ & ~0x00000004); + } else { + ensureStudentIsMutable(); + student_.addAll(other.student_); + } + onChanged(); + } + } else { + if (!other.student_.isEmpty()) { + if (studentBuilder_.isEmpty()) { + studentBuilder_.dispose(); + studentBuilder_ = null; + student_ = other.student_; + bitField0_ = (bitField0_ & ~0x00000004); + studentBuilder_ = com.google.protobuf.GeneratedMessage.alwaysUseFieldBuilders ? getStudentFieldBuilder() : null; + } else { + studentBuilder_.addAllMessages(other.student_); + } + } + } + onChanged(); + return this; + } + + public final boolean isInitialized() { + return true; + } + + public Builder mergeFrom(com.google.protobuf.CodedInputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws java.io.IOException { + com.baeldung.protobuf.BaeldungTraining.Course parsedMessage = null; + try { + parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry); + } catch (com.google.protobuf.InvalidProtocolBufferException e) { + parsedMessage = (com.baeldung.protobuf.BaeldungTraining.Course) e.getUnfinishedMessage(); + throw e.unwrapIOException(); + } finally { + if (parsedMessage != null) { + mergeFrom(parsedMessage); + } + } + return this; + } + + private int bitField0_; + + private int id_; + + /** + * optional int32 id = 1; + */ + public int getId() { + return id_; + } + + /** + * optional int32 id = 1; + */ + public Builder setId(int value) { + + id_ = value; + onChanged(); + return this; + } + + /** + * optional int32 id = 1; + */ + public Builder clearId() { + + id_ = 0; + onChanged(); + return this; + } + + private java.lang.Object courseName_ = ""; + + /** + * optional string course_name = 2; + */ + public java.lang.String getCourseName() { + java.lang.Object ref = courseName_; + if (!(ref instanceof java.lang.String)) { + com.google.protobuf.ByteString bs = (com.google.protobuf.ByteString) ref; + java.lang.String s = bs.toStringUtf8(); + courseName_ = s; + return s; + } else { + return (java.lang.String) ref; + } + } + + /** + * optional string course_name = 2; + */ + public com.google.protobuf.ByteString getCourseNameBytes() { + java.lang.Object ref = courseName_; + if (ref instanceof String) { + com.google.protobuf.ByteString b = com.google.protobuf.ByteString.copyFromUtf8((java.lang.String) ref); + courseName_ = b; + return b; + } else { + return (com.google.protobuf.ByteString) ref; + } + } + + /** + * optional string course_name = 2; + */ + public Builder setCourseName(java.lang.String value) { + if (value == null) { + throw new NullPointerException(); + } + + courseName_ = value; + onChanged(); + return this; + } + + /** + * optional string course_name = 2; + */ + public Builder clearCourseName() { + + courseName_ = getDefaultInstance().getCourseName(); + onChanged(); + return this; + } + + /** + * optional string course_name = 2; + */ + public Builder setCourseNameBytes(com.google.protobuf.ByteString value) { + if (value == null) { + throw new NullPointerException(); + } + checkByteStringIsUtf8(value); + + courseName_ = value; + onChanged(); + return this; + } + + private java.util.List student_ = java.util.Collections.emptyList(); + + private void ensureStudentIsMutable() { + if (!((bitField0_ & 0x00000004) == 0x00000004)) { + student_ = new java.util.ArrayList(student_); + bitField0_ |= 0x00000004; + } + } + + private com.google.protobuf.RepeatedFieldBuilder studentBuilder_; + + /** + * repeated .baeldung.Student student = 3; + */ + public java.util.List getStudentList() { + if (studentBuilder_ == null) { + return java.util.Collections.unmodifiableList(student_); + } else { + return studentBuilder_.getMessageList(); + } + } + + /** + * repeated .baeldung.Student student = 3; + */ + public int getStudentCount() { + if (studentBuilder_ == null) { + return student_.size(); + } else { + return studentBuilder_.getCount(); + } + } + + /** + * repeated .baeldung.Student student = 3; + */ + public com.baeldung.protobuf.BaeldungTraining.Student getStudent(int index) { + if (studentBuilder_ == null) { + return student_.get(index); + } else { + return studentBuilder_.getMessage(index); + } + } + + /** + * repeated .baeldung.Student student = 3; + */ + public Builder setStudent(int index, com.baeldung.protobuf.BaeldungTraining.Student value) { + if (studentBuilder_ == null) { + if (value == null) { + throw new NullPointerException(); + } + ensureStudentIsMutable(); + student_.set(index, value); + onChanged(); + } else { + studentBuilder_.setMessage(index, value); + } + return this; + } + + /** + * repeated .baeldung.Student student = 3; + */ + public Builder setStudent(int index, com.baeldung.protobuf.BaeldungTraining.Student.Builder builderForValue) { + if (studentBuilder_ == null) { + ensureStudentIsMutable(); + student_.set(index, builderForValue.build()); + onChanged(); + } else { + studentBuilder_.setMessage(index, builderForValue.build()); + } + return this; + } + + /** + * repeated .baeldung.Student student = 3; + */ + public Builder addStudent(com.baeldung.protobuf.BaeldungTraining.Student value) { + if (studentBuilder_ == null) { + if (value == null) { + throw new NullPointerException(); + } + ensureStudentIsMutable(); + student_.add(value); + onChanged(); + } else { + studentBuilder_.addMessage(value); + } + return this; + } + + /** + * repeated .baeldung.Student student = 3; + */ + public Builder addStudent(int index, com.baeldung.protobuf.BaeldungTraining.Student value) { + if (studentBuilder_ == null) { + if (value == null) { + throw new NullPointerException(); + } + ensureStudentIsMutable(); + student_.add(index, value); + onChanged(); + } else { + studentBuilder_.addMessage(index, value); + } + return this; + } + + /** + * repeated .baeldung.Student student = 3; + */ + public Builder addStudent(com.baeldung.protobuf.BaeldungTraining.Student.Builder builderForValue) { + if (studentBuilder_ == null) { + ensureStudentIsMutable(); + student_.add(builderForValue.build()); + onChanged(); + } else { + studentBuilder_.addMessage(builderForValue.build()); + } + return this; + } + + /** + * repeated .baeldung.Student student = 3; + */ + public Builder addStudent(int index, com.baeldung.protobuf.BaeldungTraining.Student.Builder builderForValue) { + if (studentBuilder_ == null) { + ensureStudentIsMutable(); + student_.add(index, builderForValue.build()); + onChanged(); + } else { + studentBuilder_.addMessage(index, builderForValue.build()); + } + return this; + } + + /** + * repeated .baeldung.Student student = 3; + */ + public Builder addAllStudent(java.lang.Iterable values) { + if (studentBuilder_ == null) { + ensureStudentIsMutable(); + com.google.protobuf.AbstractMessageLite.Builder.addAll(values, student_); + onChanged(); + } else { + studentBuilder_.addAllMessages(values); + } + return this; + } + + /** + * repeated .baeldung.Student student = 3; + */ + public Builder clearStudent() { + if (studentBuilder_ == null) { + student_ = java.util.Collections.emptyList(); + bitField0_ = (bitField0_ & ~0x00000004); + onChanged(); + } else { + studentBuilder_.clear(); + } + return this; + } + + /** + * repeated .baeldung.Student student = 3; + */ + public Builder removeStudent(int index) { + if (studentBuilder_ == null) { + ensureStudentIsMutable(); + student_.remove(index); + onChanged(); + } else { + studentBuilder_.remove(index); + } + return this; + } + + /** + * repeated .baeldung.Student student = 3; + */ + public com.baeldung.protobuf.BaeldungTraining.Student.Builder getStudentBuilder(int index) { + return getStudentFieldBuilder().getBuilder(index); + } + + /** + * repeated .baeldung.Student student = 3; + */ + public com.baeldung.protobuf.BaeldungTraining.StudentOrBuilder getStudentOrBuilder(int index) { + if (studentBuilder_ == null) { + return student_.get(index); + } else { + return studentBuilder_.getMessageOrBuilder(index); + } + } + + /** + * repeated .baeldung.Student student = 3; + */ + public java.util.List getStudentOrBuilderList() { + if (studentBuilder_ != null) { + return studentBuilder_.getMessageOrBuilderList(); + } else { + return java.util.Collections.unmodifiableList(student_); + } + } + + /** + * repeated .baeldung.Student student = 3; + */ + public com.baeldung.protobuf.BaeldungTraining.Student.Builder addStudentBuilder() { + return getStudentFieldBuilder().addBuilder(com.baeldung.protobuf.BaeldungTraining.Student.getDefaultInstance()); + } + + /** + * repeated .baeldung.Student student = 3; + */ + public com.baeldung.protobuf.BaeldungTraining.Student.Builder addStudentBuilder(int index) { + return getStudentFieldBuilder().addBuilder(index, com.baeldung.protobuf.BaeldungTraining.Student.getDefaultInstance()); + } + + /** + * repeated .baeldung.Student student = 3; + */ + public java.util.List getStudentBuilderList() { + return getStudentFieldBuilder().getBuilderList(); + } + + private com.google.protobuf.RepeatedFieldBuilder getStudentFieldBuilder() { + if (studentBuilder_ == null) { + studentBuilder_ = new com.google.protobuf.RepeatedFieldBuilder(student_, + ((bitField0_ & 0x00000004) == 0x00000004), getParentForChildren(), isClean()); + student_ = null; + } + return studentBuilder_; + } + + public final Builder setUnknownFields(final com.google.protobuf.UnknownFieldSet unknownFields) { + return this; + } + + public final Builder mergeUnknownFields(final com.google.protobuf.UnknownFieldSet unknownFields) { + return this; + } + + // @@protoc_insertion_point(builder_scope:baeldung.Course) } + + // @@protoc_insertion_point(class_scope:baeldung.Course) + private static final com.baeldung.protobuf.BaeldungTraining.Course DEFAULT_INSTANCE; + static { + DEFAULT_INSTANCE = new com.baeldung.protobuf.BaeldungTraining.Course(); + } + + public static com.baeldung.protobuf.BaeldungTraining.Course getDefaultInstance() { + return DEFAULT_INSTANCE; + } + + private static final com.google.protobuf.Parser PARSER = new com.google.protobuf.AbstractParser() { + public Course parsePartialFrom(com.google.protobuf.CodedInputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws com.google.protobuf.InvalidProtocolBufferException { + return new Course(input, extensionRegistry); + } + }; + + public static com.google.protobuf.Parser parser() { + return PARSER; + } + + @java.lang.Override + public com.google.protobuf.Parser getParserForType() { + return PARSER; + } + + public com.baeldung.protobuf.BaeldungTraining.Course getDefaultInstanceForType() { + return DEFAULT_INSTANCE; + } + + } + + public interface StudentOrBuilder extends + // @@protoc_insertion_point(interface_extends:baeldung.Student) + com.google.protobuf.MessageOrBuilder { + /** - * optional string number = 1; + * optional int32 id = 1; */ - public com.google.protobuf.ByteString - getNumberBytes() { - java.lang.Object ref = number_; - if (ref instanceof String) { - com.google.protobuf.ByteString b = - com.google.protobuf.ByteString.copyFromUtf8( - (java.lang.String) ref); - number_ = b; - return b; - } else { - return (com.google.protobuf.ByteString) ref; - } - } + int getId(); + /** - * optional string number = 1; + * optional string first_name = 2; */ - public Builder setNumber( - java.lang.String value) { - if (value == null) { - throw new NullPointerException(); - } - - number_ = value; - onChanged(); - return this; - } + java.lang.String getFirstName(); + /** - * optional string number = 1; + * optional string first_name = 2; */ - public Builder clearNumber() { - - number_ = getDefaultInstance().getNumber(); - onChanged(); - return this; - } + com.google.protobuf.ByteString getFirstNameBytes(); + /** - * optional string number = 1; + * optional string last_name = 3; */ - public Builder setNumberBytes( - com.google.protobuf.ByteString value) { - if (value == null) { - throw new NullPointerException(); - } - checkByteStringIsUtf8(value); - - number_ = value; - onChanged(); - return this; - } + java.lang.String getLastName(); - private int type_ = 0; /** - * optional .baeldung.Student.PhoneType type = 2; + * optional string last_name = 3; */ - public int getTypeValue() { - return type_; - } + com.google.protobuf.ByteString getLastNameBytes(); + /** - * optional .baeldung.Student.PhoneType type = 2; + * optional string email = 4; */ - public Builder setTypeValue(int value) { - type_ = value; - onChanged(); - return this; - } + java.lang.String getEmail(); + /** - * optional .baeldung.Student.PhoneType type = 2; + * optional string email = 4; */ - public com.baeldung.protobuf.BaeldungTraining.Student.PhoneType getType() { - com.baeldung.protobuf.BaeldungTraining.Student.PhoneType result = com.baeldung.protobuf.BaeldungTraining.Student.PhoneType.forNumber(type_); - return result == null ? com.baeldung.protobuf.BaeldungTraining.Student.PhoneType.UNRECOGNIZED : result; - } + com.google.protobuf.ByteString getEmailBytes(); + /** - * optional .baeldung.Student.PhoneType type = 2; + * repeated .baeldung.Student.PhoneNumber phone = 5; */ - public Builder setType(com.baeldung.protobuf.BaeldungTraining.Student.PhoneType value) { - if (value == null) { - throw new NullPointerException(); - } - - type_ = value.getNumber(); - onChanged(); - return this; - } + java.util.List getPhoneList(); + /** - * optional .baeldung.Student.PhoneType type = 2; + * repeated .baeldung.Student.PhoneNumber phone = 5; */ - public Builder clearType() { - - type_ = 0; - onChanged(); - return this; - } - public final Builder setUnknownFields( - final com.google.protobuf.UnknownFieldSet unknownFields) { - return this; - } + com.baeldung.protobuf.BaeldungTraining.Student.PhoneNumber getPhone(int index); - public final Builder mergeUnknownFields( - final com.google.protobuf.UnknownFieldSet unknownFields) { - return this; - } + /** + * repeated .baeldung.Student.PhoneNumber phone = 5; + */ + int getPhoneCount(); + /** + * repeated .baeldung.Student.PhoneNumber phone = 5; + */ + java.util.List getPhoneOrBuilderList(); - // @@protoc_insertion_point(builder_scope:baeldung.Student.PhoneNumber) - } - - // @@protoc_insertion_point(class_scope:baeldung.Student.PhoneNumber) - private static final com.baeldung.protobuf.BaeldungTraining.Student.PhoneNumber DEFAULT_INSTANCE; - static { - DEFAULT_INSTANCE = new com.baeldung.protobuf.BaeldungTraining.Student.PhoneNumber(); - } - - public static com.baeldung.protobuf.BaeldungTraining.Student.PhoneNumber getDefaultInstance() { - return DEFAULT_INSTANCE; - } - - private static final com.google.protobuf.Parser - PARSER = new com.google.protobuf.AbstractParser() { - public PhoneNumber parsePartialFrom( - com.google.protobuf.CodedInputStream input, - com.google.protobuf.ExtensionRegistryLite extensionRegistry) - throws com.google.protobuf.InvalidProtocolBufferException { - return new PhoneNumber(input, extensionRegistry); - } - }; - - public static com.google.protobuf.Parser parser() { - return PARSER; - } - - @java.lang.Override - public com.google.protobuf.Parser getParserForType() { - return PARSER; - } - - public com.baeldung.protobuf.BaeldungTraining.Student.PhoneNumber getDefaultInstanceForType() { - return DEFAULT_INSTANCE; - } - + /** + * repeated .baeldung.Student.PhoneNumber phone = 5; + */ + com.baeldung.protobuf.BaeldungTraining.Student.PhoneNumberOrBuilder getPhoneOrBuilder(int index); } - private int bitField0_; - public static final int ID_FIELD_NUMBER = 1; - private int id_; - /** - * optional int32 id = 1; - */ - public int getId() { - return id_; - } - - public static final int FIRST_NAME_FIELD_NUMBER = 2; - private volatile java.lang.Object firstName_; - /** - * optional string first_name = 2; - */ - public java.lang.String getFirstName() { - java.lang.Object ref = firstName_; - if (ref instanceof java.lang.String) { - return (java.lang.String) ref; - } else { - com.google.protobuf.ByteString bs = - (com.google.protobuf.ByteString) ref; - java.lang.String s = bs.toStringUtf8(); - firstName_ = s; - return s; - } - } - /** - * optional string first_name = 2; - */ - public com.google.protobuf.ByteString - getFirstNameBytes() { - java.lang.Object ref = firstName_; - if (ref instanceof java.lang.String) { - com.google.protobuf.ByteString b = - com.google.protobuf.ByteString.copyFromUtf8( - (java.lang.String) ref); - firstName_ = b; - return b; - } else { - return (com.google.protobuf.ByteString) ref; - } - } - - public static final int LAST_NAME_FIELD_NUMBER = 3; - private volatile java.lang.Object lastName_; - /** - * optional string last_name = 3; - */ - public java.lang.String getLastName() { - java.lang.Object ref = lastName_; - if (ref instanceof java.lang.String) { - return (java.lang.String) ref; - } else { - com.google.protobuf.ByteString bs = - (com.google.protobuf.ByteString) ref; - java.lang.String s = bs.toStringUtf8(); - lastName_ = s; - return s; - } - } - /** - * optional string last_name = 3; - */ - public com.google.protobuf.ByteString - getLastNameBytes() { - java.lang.Object ref = lastName_; - if (ref instanceof java.lang.String) { - com.google.protobuf.ByteString b = - com.google.protobuf.ByteString.copyFromUtf8( - (java.lang.String) ref); - lastName_ = b; - return b; - } else { - return (com.google.protobuf.ByteString) ref; - } - } - - public static final int EMAIL_FIELD_NUMBER = 4; - private volatile java.lang.Object email_; - /** - * optional string email = 4; - */ - public java.lang.String getEmail() { - java.lang.Object ref = email_; - if (ref instanceof java.lang.String) { - return (java.lang.String) ref; - } else { - com.google.protobuf.ByteString bs = - (com.google.protobuf.ByteString) ref; - java.lang.String s = bs.toStringUtf8(); - email_ = s; - return s; - } - } - /** - * optional string email = 4; - */ - public com.google.protobuf.ByteString - getEmailBytes() { - java.lang.Object ref = email_; - if (ref instanceof java.lang.String) { - com.google.protobuf.ByteString b = - com.google.protobuf.ByteString.copyFromUtf8( - (java.lang.String) ref); - email_ = b; - return b; - } else { - return (com.google.protobuf.ByteString) ref; - } - } - - public static final int PHONE_FIELD_NUMBER = 5; - private java.util.List phone_; - /** - * repeated .baeldung.Student.PhoneNumber phone = 5; - */ - public java.util.List getPhoneList() { - return phone_; - } - /** - * repeated .baeldung.Student.PhoneNumber phone = 5; - */ - public java.util.List - getPhoneOrBuilderList() { - return phone_; - } - /** - * repeated .baeldung.Student.PhoneNumber phone = 5; - */ - public int getPhoneCount() { - return phone_.size(); - } - /** - * repeated .baeldung.Student.PhoneNumber phone = 5; - */ - public com.baeldung.protobuf.BaeldungTraining.Student.PhoneNumber getPhone(int index) { - return phone_.get(index); - } - /** - * repeated .baeldung.Student.PhoneNumber phone = 5; - */ - public com.baeldung.protobuf.BaeldungTraining.Student.PhoneNumberOrBuilder getPhoneOrBuilder( - int index) { - return phone_.get(index); - } - - private byte memoizedIsInitialized = -1; - public final boolean isInitialized() { - byte isInitialized = memoizedIsInitialized; - if (isInitialized == 1) return true; - if (isInitialized == 0) return false; - - memoizedIsInitialized = 1; - return true; - } - - public void writeTo(com.google.protobuf.CodedOutputStream output) - throws java.io.IOException { - if (id_ != 0) { - output.writeInt32(1, id_); - } - if (!getFirstNameBytes().isEmpty()) { - com.google.protobuf.GeneratedMessage.writeString(output, 2, firstName_); - } - if (!getLastNameBytes().isEmpty()) { - com.google.protobuf.GeneratedMessage.writeString(output, 3, lastName_); - } - if (!getEmailBytes().isEmpty()) { - com.google.protobuf.GeneratedMessage.writeString(output, 4, email_); - } - for (int i = 0; i < phone_.size(); i++) { - output.writeMessage(5, phone_.get(i)); - } - } - - public int getSerializedSize() { - int size = memoizedSize; - if (size != -1) return size; - - size = 0; - if (id_ != 0) { - size += com.google.protobuf.CodedOutputStream - .computeInt32Size(1, id_); - } - if (!getFirstNameBytes().isEmpty()) { - size += com.google.protobuf.GeneratedMessage.computeStringSize(2, firstName_); - } - if (!getLastNameBytes().isEmpty()) { - size += com.google.protobuf.GeneratedMessage.computeStringSize(3, lastName_); - } - if (!getEmailBytes().isEmpty()) { - size += com.google.protobuf.GeneratedMessage.computeStringSize(4, email_); - } - for (int i = 0; i < phone_.size(); i++) { - size += com.google.protobuf.CodedOutputStream - .computeMessageSize(5, phone_.get(i)); - } - memoizedSize = size; - return size; - } - - private static final long serialVersionUID = 0L; - public static com.baeldung.protobuf.BaeldungTraining.Student parseFrom( - com.google.protobuf.ByteString data) - throws com.google.protobuf.InvalidProtocolBufferException { - return PARSER.parseFrom(data); - } - public static com.baeldung.protobuf.BaeldungTraining.Student parseFrom( - com.google.protobuf.ByteString data, - com.google.protobuf.ExtensionRegistryLite extensionRegistry) - throws com.google.protobuf.InvalidProtocolBufferException { - return PARSER.parseFrom(data, extensionRegistry); - } - public static com.baeldung.protobuf.BaeldungTraining.Student parseFrom(byte[] data) - throws com.google.protobuf.InvalidProtocolBufferException { - return PARSER.parseFrom(data); - } - public static com.baeldung.protobuf.BaeldungTraining.Student parseFrom( - byte[] data, - com.google.protobuf.ExtensionRegistryLite extensionRegistry) - throws com.google.protobuf.InvalidProtocolBufferException { - return PARSER.parseFrom(data, extensionRegistry); - } - public static com.baeldung.protobuf.BaeldungTraining.Student parseFrom(java.io.InputStream input) - throws java.io.IOException { - return com.google.protobuf.GeneratedMessage - .parseWithIOException(PARSER, input); - } - public static com.baeldung.protobuf.BaeldungTraining.Student parseFrom( - java.io.InputStream input, - com.google.protobuf.ExtensionRegistryLite extensionRegistry) - throws java.io.IOException { - return com.google.protobuf.GeneratedMessage - .parseWithIOException(PARSER, input, extensionRegistry); - } - public static com.baeldung.protobuf.BaeldungTraining.Student parseDelimitedFrom(java.io.InputStream input) - throws java.io.IOException { - return com.google.protobuf.GeneratedMessage - .parseDelimitedWithIOException(PARSER, input); - } - public static com.baeldung.protobuf.BaeldungTraining.Student parseDelimitedFrom( - java.io.InputStream input, - com.google.protobuf.ExtensionRegistryLite extensionRegistry) - throws java.io.IOException { - return com.google.protobuf.GeneratedMessage - .parseDelimitedWithIOException(PARSER, input, extensionRegistry); - } - public static com.baeldung.protobuf.BaeldungTraining.Student parseFrom( - com.google.protobuf.CodedInputStream input) - throws java.io.IOException { - return com.google.protobuf.GeneratedMessage - .parseWithIOException(PARSER, input); - } - public static com.baeldung.protobuf.BaeldungTraining.Student parseFrom( - com.google.protobuf.CodedInputStream input, - com.google.protobuf.ExtensionRegistryLite extensionRegistry) - throws java.io.IOException { - return com.google.protobuf.GeneratedMessage - .parseWithIOException(PARSER, input, extensionRegistry); - } - - public Builder newBuilderForType() { return newBuilder(); } - public static Builder newBuilder() { - return DEFAULT_INSTANCE.toBuilder(); - } - public static Builder newBuilder(com.baeldung.protobuf.BaeldungTraining.Student prototype) { - return DEFAULT_INSTANCE.toBuilder().mergeFrom(prototype); - } - public Builder toBuilder() { - return this == DEFAULT_INSTANCE - ? new Builder() : new Builder().mergeFrom(this); - } - - @java.lang.Override - protected Builder newBuilderForType( - com.google.protobuf.GeneratedMessage.BuilderParent parent) { - Builder builder = new Builder(parent); - return builder; - } /** * Protobuf type {@code baeldung.Student} */ - public static final class Builder extends - com.google.protobuf.GeneratedMessage.Builder implements - // @@protoc_insertion_point(builder_implements:baeldung.Student) - com.baeldung.protobuf.BaeldungTraining.StudentOrBuilder { - public static final com.google.protobuf.Descriptors.Descriptor - getDescriptor() { - return com.baeldung.protobuf.BaeldungTraining.internal_static_baeldung_Student_descriptor; - } - - protected com.google.protobuf.GeneratedMessage.FieldAccessorTable - internalGetFieldAccessorTable() { - return com.baeldung.protobuf.BaeldungTraining.internal_static_baeldung_Student_fieldAccessorTable - .ensureFieldAccessorsInitialized( - com.baeldung.protobuf.BaeldungTraining.Student.class, com.baeldung.protobuf.BaeldungTraining.Student.Builder.class); - } - - // Construct using com.baeldung.protobuf.BaeldungTraining.Student.newBuilder() - private Builder() { - maybeForceBuilderInitialization(); - } - - private Builder( - com.google.protobuf.GeneratedMessage.BuilderParent parent) { - super(parent); - maybeForceBuilderInitialization(); - } - private void maybeForceBuilderInitialization() { - if (com.google.protobuf.GeneratedMessage.alwaysUseFieldBuilders) { - getPhoneFieldBuilder(); + public static final class Student extends com.google.protobuf.GeneratedMessage implements + // @@protoc_insertion_point(message_implements:baeldung.Student) + StudentOrBuilder { + // Use Student.newBuilder() to construct. + private Student(com.google.protobuf.GeneratedMessage.Builder builder) { + super(builder); } - } - public Builder clear() { - super.clear(); - id_ = 0; - firstName_ = ""; - - lastName_ = ""; - - email_ = ""; - - if (phoneBuilder_ == null) { - phone_ = java.util.Collections.emptyList(); - bitField0_ = (bitField0_ & ~0x00000010); - } else { - phoneBuilder_.clear(); + private Student() { + id_ = 0; + firstName_ = ""; + lastName_ = ""; + email_ = ""; + phone_ = java.util.Collections.emptyList(); } - return this; - } - public com.google.protobuf.Descriptors.Descriptor - getDescriptorForType() { - return com.baeldung.protobuf.BaeldungTraining.internal_static_baeldung_Student_descriptor; - } + @java.lang.Override + public final com.google.protobuf.UnknownFieldSet getUnknownFields() { + return com.google.protobuf.UnknownFieldSet.getDefaultInstance(); + } - public com.baeldung.protobuf.BaeldungTraining.Student getDefaultInstanceForType() { - return com.baeldung.protobuf.BaeldungTraining.Student.getDefaultInstance(); - } + private Student(com.google.protobuf.CodedInputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws com.google.protobuf.InvalidProtocolBufferException { + this(); + int mutable_bitField0_ = 0; + try { + boolean done = false; + while (!done) { + int tag = input.readTag(); + switch (tag) { + case 0: + done = true; + break; + default: { + if (!input.skipField(tag)) { + done = true; + } + break; + } + case 8: { - public com.baeldung.protobuf.BaeldungTraining.Student build() { - com.baeldung.protobuf.BaeldungTraining.Student result = buildPartial(); - if (!result.isInitialized()) { - throw newUninitializedMessageException(result); - } - return result; - } + id_ = input.readInt32(); + break; + } + case 18: { + java.lang.String s = input.readStringRequireUtf8(); - public com.baeldung.protobuf.BaeldungTraining.Student buildPartial() { - com.baeldung.protobuf.BaeldungTraining.Student result = new com.baeldung.protobuf.BaeldungTraining.Student(this); - int from_bitField0_ = bitField0_; - int to_bitField0_ = 0; - result.id_ = id_; - result.firstName_ = firstName_; - result.lastName_ = lastName_; - result.email_ = email_; - if (phoneBuilder_ == null) { - if (((bitField0_ & 0x00000010) == 0x00000010)) { - phone_ = java.util.Collections.unmodifiableList(phone_); - bitField0_ = (bitField0_ & ~0x00000010); - } - result.phone_ = phone_; - } else { - result.phone_ = phoneBuilder_.build(); - } - result.bitField0_ = to_bitField0_; - onBuilt(); - return result; - } + firstName_ = s; + break; + } + case 26: { + java.lang.String s = input.readStringRequireUtf8(); - public Builder mergeFrom(com.google.protobuf.Message other) { - if (other instanceof com.baeldung.protobuf.BaeldungTraining.Student) { - return mergeFrom((com.baeldung.protobuf.BaeldungTraining.Student)other); - } else { - super.mergeFrom(other); - return this; - } - } + lastName_ = s; + break; + } + case 34: { + java.lang.String s = input.readStringRequireUtf8(); - public Builder mergeFrom(com.baeldung.protobuf.BaeldungTraining.Student other) { - if (other == com.baeldung.protobuf.BaeldungTraining.Student.getDefaultInstance()) return this; - if (other.getId() != 0) { - setId(other.getId()); - } - if (!other.getFirstName().isEmpty()) { - firstName_ = other.firstName_; - onChanged(); - } - if (!other.getLastName().isEmpty()) { - lastName_ = other.lastName_; - onChanged(); - } - if (!other.getEmail().isEmpty()) { - email_ = other.email_; - onChanged(); - } - if (phoneBuilder_ == null) { - if (!other.phone_.isEmpty()) { - if (phone_.isEmpty()) { - phone_ = other.phone_; - bitField0_ = (bitField0_ & ~0x00000010); - } else { - ensurePhoneIsMutable(); - phone_.addAll(other.phone_); + email_ = s; + break; + } + case 42: { + if (!((mutable_bitField0_ & 0x00000010) == 0x00000010)) { + phone_ = new java.util.ArrayList(); + mutable_bitField0_ |= 0x00000010; + } + phone_.add(input.readMessage(com.baeldung.protobuf.BaeldungTraining.Student.PhoneNumber.parser(), extensionRegistry)); + break; + } + } + } + } catch (com.google.protobuf.InvalidProtocolBufferException e) { + throw e.setUnfinishedMessage(this); + } catch (java.io.IOException e) { + throw new com.google.protobuf.InvalidProtocolBufferException(e).setUnfinishedMessage(this); + } finally { + if (((mutable_bitField0_ & 0x00000010) == 0x00000010)) { + phone_ = java.util.Collections.unmodifiableList(phone_); + } + makeExtensionsImmutable(); } - onChanged(); - } - } else { - if (!other.phone_.isEmpty()) { - if (phoneBuilder_.isEmpty()) { - phoneBuilder_.dispose(); - phoneBuilder_ = null; - phone_ = other.phone_; - bitField0_ = (bitField0_ & ~0x00000010); - phoneBuilder_ = - com.google.protobuf.GeneratedMessage.alwaysUseFieldBuilders ? - getPhoneFieldBuilder() : null; - } else { - phoneBuilder_.addAllMessages(other.phone_); + } + + public static final com.google.protobuf.Descriptors.Descriptor getDescriptor() { + return com.baeldung.protobuf.BaeldungTraining.internal_static_baeldung_Student_descriptor; + } + + protected com.google.protobuf.GeneratedMessage.FieldAccessorTable internalGetFieldAccessorTable() { + return com.baeldung.protobuf.BaeldungTraining.internal_static_baeldung_Student_fieldAccessorTable.ensureFieldAccessorsInitialized(com.baeldung.protobuf.BaeldungTraining.Student.class, com.baeldung.protobuf.BaeldungTraining.Student.Builder.class); + } + + /** + * Protobuf enum {@code baeldung.Student.PhoneType} + */ + public enum PhoneType implements com.google.protobuf.ProtocolMessageEnum { + /** + * MOBILE = 0; + */ + MOBILE(0), + /** + * LANDLINE = 1; + */ + LANDLINE(1), UNRECOGNIZED(-1),; + + /** + * MOBILE = 0; + */ + public static final int MOBILE_VALUE = 0; + /** + * LANDLINE = 1; + */ + public static final int LANDLINE_VALUE = 1; + + public final int getNumber() { + if (this == UNRECOGNIZED) { + throw new java.lang.IllegalArgumentException("Can't get the number of an unknown enum value."); + } + return value; } - } - } - onChanged(); - return this; - } - public final boolean isInitialized() { - return true; - } + /** + * @deprecated Use {@link #forNumber(int)} instead. + */ + @java.lang.Deprecated + public static PhoneType valueOf(int value) { + return forNumber(value); + } - public Builder mergeFrom( - com.google.protobuf.CodedInputStream input, - com.google.protobuf.ExtensionRegistryLite extensionRegistry) - throws java.io.IOException { - com.baeldung.protobuf.BaeldungTraining.Student parsedMessage = null; - try { - parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry); - } catch (com.google.protobuf.InvalidProtocolBufferException e) { - parsedMessage = (com.baeldung.protobuf.BaeldungTraining.Student) e.getUnfinishedMessage(); - throw e.unwrapIOException(); - } finally { - if (parsedMessage != null) { - mergeFrom(parsedMessage); - } - } - return this; - } - private int bitField0_; + public static PhoneType forNumber(int value) { + switch (value) { + case 0: + return MOBILE; + case 1: + return LANDLINE; + default: + return null; + } + } - private int id_ ; - /** - * optional int32 id = 1; - */ - public int getId() { - return id_; - } - /** - * optional int32 id = 1; - */ - public Builder setId(int value) { - - id_ = value; - onChanged(); - return this; - } - /** - * optional int32 id = 1; - */ - public Builder clearId() { - - id_ = 0; - onChanged(); - return this; - } + public static com.google.protobuf.Internal.EnumLiteMap internalGetValueMap() { + return internalValueMap; + } - private java.lang.Object firstName_ = ""; - /** - * optional string first_name = 2; - */ - public java.lang.String getFirstName() { - java.lang.Object ref = firstName_; - if (!(ref instanceof java.lang.String)) { - com.google.protobuf.ByteString bs = - (com.google.protobuf.ByteString) ref; - java.lang.String s = bs.toStringUtf8(); - firstName_ = s; - return s; - } else { - return (java.lang.String) ref; - } - } - /** - * optional string first_name = 2; - */ - public com.google.protobuf.ByteString - getFirstNameBytes() { - java.lang.Object ref = firstName_; - if (ref instanceof String) { - com.google.protobuf.ByteString b = - com.google.protobuf.ByteString.copyFromUtf8( - (java.lang.String) ref); - firstName_ = b; - return b; - } else { - return (com.google.protobuf.ByteString) ref; - } - } - /** - * optional string first_name = 2; - */ - public Builder setFirstName( - java.lang.String value) { - if (value == null) { - throw new NullPointerException(); - } - - firstName_ = value; - onChanged(); - return this; - } - /** - * optional string first_name = 2; - */ - public Builder clearFirstName() { - - firstName_ = getDefaultInstance().getFirstName(); - onChanged(); - return this; - } - /** - * optional string first_name = 2; - */ - public Builder setFirstNameBytes( - com.google.protobuf.ByteString value) { - if (value == null) { - throw new NullPointerException(); - } - checkByteStringIsUtf8(value); - - firstName_ = value; - onChanged(); - return this; - } + private static final com.google.protobuf.Internal.EnumLiteMap internalValueMap = new com.google.protobuf.Internal.EnumLiteMap() { + public PhoneType findValueByNumber(int number) { + return PhoneType.forNumber(number); + } + }; - private java.lang.Object lastName_ = ""; - /** - * optional string last_name = 3; - */ - public java.lang.String getLastName() { - java.lang.Object ref = lastName_; - if (!(ref instanceof java.lang.String)) { - com.google.protobuf.ByteString bs = - (com.google.protobuf.ByteString) ref; - java.lang.String s = bs.toStringUtf8(); - lastName_ = s; - return s; - } else { - return (java.lang.String) ref; - } - } - /** - * optional string last_name = 3; - */ - public com.google.protobuf.ByteString - getLastNameBytes() { - java.lang.Object ref = lastName_; - if (ref instanceof String) { - com.google.protobuf.ByteString b = - com.google.protobuf.ByteString.copyFromUtf8( - (java.lang.String) ref); - lastName_ = b; - return b; - } else { - return (com.google.protobuf.ByteString) ref; - } - } - /** - * optional string last_name = 3; - */ - public Builder setLastName( - java.lang.String value) { - if (value == null) { - throw new NullPointerException(); - } - - lastName_ = value; - onChanged(); - return this; - } - /** - * optional string last_name = 3; - */ - public Builder clearLastName() { - - lastName_ = getDefaultInstance().getLastName(); - onChanged(); - return this; - } - /** - * optional string last_name = 3; - */ - public Builder setLastNameBytes( - com.google.protobuf.ByteString value) { - if (value == null) { - throw new NullPointerException(); - } - checkByteStringIsUtf8(value); - - lastName_ = value; - onChanged(); - return this; - } + public final com.google.protobuf.Descriptors.EnumValueDescriptor getValueDescriptor() { + return getDescriptor().getValues().get(ordinal()); + } - private java.lang.Object email_ = ""; - /** - * optional string email = 4; - */ - public java.lang.String getEmail() { - java.lang.Object ref = email_; - if (!(ref instanceof java.lang.String)) { - com.google.protobuf.ByteString bs = - (com.google.protobuf.ByteString) ref; - java.lang.String s = bs.toStringUtf8(); - email_ = s; - return s; - } else { - return (java.lang.String) ref; - } - } - /** - * optional string email = 4; - */ - public com.google.protobuf.ByteString - getEmailBytes() { - java.lang.Object ref = email_; - if (ref instanceof String) { - com.google.protobuf.ByteString b = - com.google.protobuf.ByteString.copyFromUtf8( - (java.lang.String) ref); - email_ = b; - return b; - } else { - return (com.google.protobuf.ByteString) ref; - } - } - /** - * optional string email = 4; - */ - public Builder setEmail( - java.lang.String value) { - if (value == null) { - throw new NullPointerException(); - } - - email_ = value; - onChanged(); - return this; - } - /** - * optional string email = 4; - */ - public Builder clearEmail() { - - email_ = getDefaultInstance().getEmail(); - onChanged(); - return this; - } - /** - * optional string email = 4; - */ - public Builder setEmailBytes( - com.google.protobuf.ByteString value) { - if (value == null) { - throw new NullPointerException(); - } - checkByteStringIsUtf8(value); - - email_ = value; - onChanged(); - return this; - } + public final com.google.protobuf.Descriptors.EnumDescriptor getDescriptorForType() { + return getDescriptor(); + } - private java.util.List phone_ = - java.util.Collections.emptyList(); - private void ensurePhoneIsMutable() { - if (!((bitField0_ & 0x00000010) == 0x00000010)) { - phone_ = new java.util.ArrayList(phone_); - bitField0_ |= 0x00000010; - } - } + public static final com.google.protobuf.Descriptors.EnumDescriptor getDescriptor() { + return com.baeldung.protobuf.BaeldungTraining.Student.getDescriptor().getEnumTypes().get(0); + } - private com.google.protobuf.RepeatedFieldBuilder< - com.baeldung.protobuf.BaeldungTraining.Student.PhoneNumber, com.baeldung.protobuf.BaeldungTraining.Student.PhoneNumber.Builder, com.baeldung.protobuf.BaeldungTraining.Student.PhoneNumberOrBuilder> phoneBuilder_; + private static final PhoneType[] VALUES = values(); - /** - * repeated .baeldung.Student.PhoneNumber phone = 5; - */ - public java.util.List getPhoneList() { - if (phoneBuilder_ == null) { - return java.util.Collections.unmodifiableList(phone_); - } else { - return phoneBuilder_.getMessageList(); - } - } - /** - * repeated .baeldung.Student.PhoneNumber phone = 5; - */ - public int getPhoneCount() { - if (phoneBuilder_ == null) { - return phone_.size(); - } else { - return phoneBuilder_.getCount(); - } - } - /** - * repeated .baeldung.Student.PhoneNumber phone = 5; - */ - public com.baeldung.protobuf.BaeldungTraining.Student.PhoneNumber getPhone(int index) { - if (phoneBuilder_ == null) { - return phone_.get(index); - } else { - return phoneBuilder_.getMessage(index); - } - } - /** - * repeated .baeldung.Student.PhoneNumber phone = 5; - */ - public Builder setPhone( - int index, com.baeldung.protobuf.BaeldungTraining.Student.PhoneNumber value) { - if (phoneBuilder_ == null) { - if (value == null) { - throw new NullPointerException(); - } - ensurePhoneIsMutable(); - phone_.set(index, value); - onChanged(); - } else { - phoneBuilder_.setMessage(index, value); - } - return this; - } - /** - * repeated .baeldung.Student.PhoneNumber phone = 5; - */ - public Builder setPhone( - int index, com.baeldung.protobuf.BaeldungTraining.Student.PhoneNumber.Builder builderForValue) { - if (phoneBuilder_ == null) { - ensurePhoneIsMutable(); - phone_.set(index, builderForValue.build()); - onChanged(); - } else { - phoneBuilder_.setMessage(index, builderForValue.build()); - } - return this; - } - /** - * repeated .baeldung.Student.PhoneNumber phone = 5; - */ - public Builder addPhone(com.baeldung.protobuf.BaeldungTraining.Student.PhoneNumber value) { - if (phoneBuilder_ == null) { - if (value == null) { - throw new NullPointerException(); - } - ensurePhoneIsMutable(); - phone_.add(value); - onChanged(); - } else { - phoneBuilder_.addMessage(value); - } - return this; - } - /** - * repeated .baeldung.Student.PhoneNumber phone = 5; - */ - public Builder addPhone( - int index, com.baeldung.protobuf.BaeldungTraining.Student.PhoneNumber value) { - if (phoneBuilder_ == null) { - if (value == null) { - throw new NullPointerException(); - } - ensurePhoneIsMutable(); - phone_.add(index, value); - onChanged(); - } else { - phoneBuilder_.addMessage(index, value); - } - return this; - } - /** - * repeated .baeldung.Student.PhoneNumber phone = 5; - */ - public Builder addPhone( - com.baeldung.protobuf.BaeldungTraining.Student.PhoneNumber.Builder builderForValue) { - if (phoneBuilder_ == null) { - ensurePhoneIsMutable(); - phone_.add(builderForValue.build()); - onChanged(); - } else { - phoneBuilder_.addMessage(builderForValue.build()); - } - return this; - } - /** - * repeated .baeldung.Student.PhoneNumber phone = 5; - */ - public Builder addPhone( - int index, com.baeldung.protobuf.BaeldungTraining.Student.PhoneNumber.Builder builderForValue) { - if (phoneBuilder_ == null) { - ensurePhoneIsMutable(); - phone_.add(index, builderForValue.build()); - onChanged(); - } else { - phoneBuilder_.addMessage(index, builderForValue.build()); - } - return this; - } - /** - * repeated .baeldung.Student.PhoneNumber phone = 5; - */ - public Builder addAllPhone( - java.lang.Iterable values) { - if (phoneBuilder_ == null) { - ensurePhoneIsMutable(); - com.google.protobuf.AbstractMessageLite.Builder.addAll( - values, phone_); - onChanged(); - } else { - phoneBuilder_.addAllMessages(values); - } - return this; - } - /** - * repeated .baeldung.Student.PhoneNumber phone = 5; - */ - public Builder clearPhone() { - if (phoneBuilder_ == null) { - phone_ = java.util.Collections.emptyList(); - bitField0_ = (bitField0_ & ~0x00000010); - onChanged(); - } else { - phoneBuilder_.clear(); - } - return this; - } - /** - * repeated .baeldung.Student.PhoneNumber phone = 5; - */ - public Builder removePhone(int index) { - if (phoneBuilder_ == null) { - ensurePhoneIsMutable(); - phone_.remove(index); - onChanged(); - } else { - phoneBuilder_.remove(index); - } - return this; - } - /** - * repeated .baeldung.Student.PhoneNumber phone = 5; - */ - public com.baeldung.protobuf.BaeldungTraining.Student.PhoneNumber.Builder getPhoneBuilder( - int index) { - return getPhoneFieldBuilder().getBuilder(index); - } - /** - * repeated .baeldung.Student.PhoneNumber phone = 5; - */ - public com.baeldung.protobuf.BaeldungTraining.Student.PhoneNumberOrBuilder getPhoneOrBuilder( - int index) { - if (phoneBuilder_ == null) { - return phone_.get(index); } else { - return phoneBuilder_.getMessageOrBuilder(index); - } - } - /** - * repeated .baeldung.Student.PhoneNumber phone = 5; - */ - public java.util.List - getPhoneOrBuilderList() { - if (phoneBuilder_ != null) { - return phoneBuilder_.getMessageOrBuilderList(); - } else { - return java.util.Collections.unmodifiableList(phone_); - } - } - /** - * repeated .baeldung.Student.PhoneNumber phone = 5; - */ - public com.baeldung.protobuf.BaeldungTraining.Student.PhoneNumber.Builder addPhoneBuilder() { - return getPhoneFieldBuilder().addBuilder( - com.baeldung.protobuf.BaeldungTraining.Student.PhoneNumber.getDefaultInstance()); - } - /** - * repeated .baeldung.Student.PhoneNumber phone = 5; - */ - public com.baeldung.protobuf.BaeldungTraining.Student.PhoneNumber.Builder addPhoneBuilder( - int index) { - return getPhoneFieldBuilder().addBuilder( - index, com.baeldung.protobuf.BaeldungTraining.Student.PhoneNumber.getDefaultInstance()); - } - /** - * repeated .baeldung.Student.PhoneNumber phone = 5; - */ - public java.util.List - getPhoneBuilderList() { - return getPhoneFieldBuilder().getBuilderList(); - } - private com.google.protobuf.RepeatedFieldBuilder< - com.baeldung.protobuf.BaeldungTraining.Student.PhoneNumber, com.baeldung.protobuf.BaeldungTraining.Student.PhoneNumber.Builder, com.baeldung.protobuf.BaeldungTraining.Student.PhoneNumberOrBuilder> - getPhoneFieldBuilder() { - if (phoneBuilder_ == null) { - phoneBuilder_ = new com.google.protobuf.RepeatedFieldBuilder< - com.baeldung.protobuf.BaeldungTraining.Student.PhoneNumber, com.baeldung.protobuf.BaeldungTraining.Student.PhoneNumber.Builder, com.baeldung.protobuf.BaeldungTraining.Student.PhoneNumberOrBuilder>( - phone_, - ((bitField0_ & 0x00000010) == 0x00000010), - getParentForChildren(), - isClean()); - phone_ = null; - } - return phoneBuilder_; - } - public final Builder setUnknownFields( - final com.google.protobuf.UnknownFieldSet unknownFields) { - return this; - } + public static PhoneType valueOf(com.google.protobuf.Descriptors.EnumValueDescriptor desc) { + if (desc.getType() != getDescriptor()) { + throw new java.lang.IllegalArgumentException("EnumValueDescriptor is not for this type."); + } + if (desc.getIndex() == -1) { + return UNRECOGNIZED; + } + return VALUES[desc.getIndex()]; + } - public final Builder mergeUnknownFields( - final com.google.protobuf.UnknownFieldSet unknownFields) { - return this; - } + private final int value; + private PhoneType(int value) { + this.value = value; + } - // @@protoc_insertion_point(builder_scope:baeldung.Student) - } + // @@protoc_insertion_point(enum_scope:baeldung.Student.PhoneType) + } - // @@protoc_insertion_point(class_scope:baeldung.Student) - private static final com.baeldung.protobuf.BaeldungTraining.Student DEFAULT_INSTANCE; - static { - DEFAULT_INSTANCE = new com.baeldung.protobuf.BaeldungTraining.Student(); - } + public interface PhoneNumberOrBuilder extends + // @@protoc_insertion_point(interface_extends:baeldung.Student.PhoneNumber) + com.google.protobuf.MessageOrBuilder { - public static com.baeldung.protobuf.BaeldungTraining.Student getDefaultInstance() { - return DEFAULT_INSTANCE; - } + /** + * optional string number = 1; + */ + java.lang.String getNumber(); - private static final com.google.protobuf.Parser - PARSER = new com.google.protobuf.AbstractParser() { - public Student parsePartialFrom( - com.google.protobuf.CodedInputStream input, - com.google.protobuf.ExtensionRegistryLite extensionRegistry) - throws com.google.protobuf.InvalidProtocolBufferException { - return new Student(input, extensionRegistry); - } - }; + /** + * optional string number = 1; + */ + com.google.protobuf.ByteString getNumberBytes(); - public static com.google.protobuf.Parser parser() { - return PARSER; - } + /** + * optional .baeldung.Student.PhoneType type = 2; + */ + int getTypeValue(); - @java.lang.Override - public com.google.protobuf.Parser getParserForType() { - return PARSER; - } + /** + * optional .baeldung.Student.PhoneType type = 2; + */ + com.baeldung.protobuf.BaeldungTraining.Student.PhoneType getType(); + } - public com.baeldung.protobuf.BaeldungTraining.Student getDefaultInstanceForType() { - return DEFAULT_INSTANCE; - } + /** + * Protobuf type {@code baeldung.Student.PhoneNumber} + */ + public static final class PhoneNumber extends com.google.protobuf.GeneratedMessage implements + // @@protoc_insertion_point(message_implements:baeldung.Student.PhoneNumber) + PhoneNumberOrBuilder { + // Use PhoneNumber.newBuilder() to construct. + private PhoneNumber(com.google.protobuf.GeneratedMessage.Builder builder) { + super(builder); + } - } + private PhoneNumber() { + number_ = ""; + type_ = 0; + } - private static final com.google.protobuf.Descriptors.Descriptor - internal_static_baeldung_Course_descriptor; - private static final - com.google.protobuf.GeneratedMessage.FieldAccessorTable - internal_static_baeldung_Course_fieldAccessorTable; - private static final com.google.protobuf.Descriptors.Descriptor - internal_static_baeldung_Student_descriptor; - private static final - com.google.protobuf.GeneratedMessage.FieldAccessorTable - internal_static_baeldung_Student_fieldAccessorTable; - private static final com.google.protobuf.Descriptors.Descriptor - internal_static_baeldung_Student_PhoneNumber_descriptor; - private static final - com.google.protobuf.GeneratedMessage.FieldAccessorTable - internal_static_baeldung_Student_PhoneNumber_fieldAccessorTable; + @java.lang.Override + public final com.google.protobuf.UnknownFieldSet getUnknownFields() { + return com.google.protobuf.UnknownFieldSet.getDefaultInstance(); + } - public static com.google.protobuf.Descriptors.FileDescriptor - getDescriptor() { - return descriptor; - } - private static com.google.protobuf.Descriptors.FileDescriptor - descriptor; - static { - java.lang.String[] descriptorData = { - "\n\030resources/baeldung.proto\022\010baeldung\"M\n\006" + - "Course\022\n\n\002id\030\001 \001(\005\022\023\n\013course_name\030\002 \001(\t\022" + - "\"\n\007student\030\003 \003(\0132\021.baeldung.Student\"\352\001\n\007" + - "Student\022\n\n\002id\030\001 \001(\005\022\022\n\nfirst_name\030\002 \001(\t\022" + - "\021\n\tlast_name\030\003 \001(\t\022\r\n\005email\030\004 \001(\t\022,\n\005pho" + - "ne\030\005 \003(\0132\035.baeldung.Student.PhoneNumber\032" + - "H\n\013PhoneNumber\022\016\n\006number\030\001 \001(\t\022)\n\004type\030\002" + - " \001(\0162\033.baeldung.Student.PhoneType\"%\n\tPho" + - "neType\022\n\n\006MOBILE\020\000\022\014\n\010LANDLINE\020\001B)\n\025com." + - "baeldung.protobufB\020BaeldungTrainingb\006pro", - "to3" - }; - com.google.protobuf.Descriptors.FileDescriptor.InternalDescriptorAssigner assigner = - new com.google.protobuf.Descriptors.FileDescriptor. InternalDescriptorAssigner() { - public com.google.protobuf.ExtensionRegistry assignDescriptors( - com.google.protobuf.Descriptors.FileDescriptor root) { - descriptor = root; - return null; - } + private PhoneNumber(com.google.protobuf.CodedInputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws com.google.protobuf.InvalidProtocolBufferException { + this(); + int mutable_bitField0_ = 0; + try { + boolean done = false; + while (!done) { + int tag = input.readTag(); + switch (tag) { + case 0: + done = true; + break; + default: { + if (!input.skipField(tag)) { + done = true; + } + break; + } + case 10: { + java.lang.String s = input.readStringRequireUtf8(); + + number_ = s; + break; + } + case 16: { + int rawValue = input.readEnum(); + + type_ = rawValue; + break; + } + } + } + } catch (com.google.protobuf.InvalidProtocolBufferException e) { + throw e.setUnfinishedMessage(this); + } catch (java.io.IOException e) { + throw new com.google.protobuf.InvalidProtocolBufferException(e).setUnfinishedMessage(this); + } finally { + makeExtensionsImmutable(); + } + } + + public static final com.google.protobuf.Descriptors.Descriptor getDescriptor() { + return com.baeldung.protobuf.BaeldungTraining.internal_static_baeldung_Student_PhoneNumber_descriptor; + } + + protected com.google.protobuf.GeneratedMessage.FieldAccessorTable internalGetFieldAccessorTable() { + return com.baeldung.protobuf.BaeldungTraining.internal_static_baeldung_Student_PhoneNumber_fieldAccessorTable.ensureFieldAccessorsInitialized(com.baeldung.protobuf.BaeldungTraining.Student.PhoneNumber.class, + com.baeldung.protobuf.BaeldungTraining.Student.PhoneNumber.Builder.class); + } + + public static final int NUMBER_FIELD_NUMBER = 1; + private volatile java.lang.Object number_; + + /** + * optional string number = 1; + */ + public java.lang.String getNumber() { + java.lang.Object ref = number_; + if (ref instanceof java.lang.String) { + return (java.lang.String) ref; + } else { + com.google.protobuf.ByteString bs = (com.google.protobuf.ByteString) ref; + java.lang.String s = bs.toStringUtf8(); + number_ = s; + return s; + } + } + + /** + * optional string number = 1; + */ + public com.google.protobuf.ByteString getNumberBytes() { + java.lang.Object ref = number_; + if (ref instanceof java.lang.String) { + com.google.protobuf.ByteString b = com.google.protobuf.ByteString.copyFromUtf8((java.lang.String) ref); + number_ = b; + return b; + } else { + return (com.google.protobuf.ByteString) ref; + } + } + + public static final int TYPE_FIELD_NUMBER = 2; + private int type_; + + /** + * optional .baeldung.Student.PhoneType type = 2; + */ + public int getTypeValue() { + return type_; + } + + /** + * optional .baeldung.Student.PhoneType type = 2; + */ + public com.baeldung.protobuf.BaeldungTraining.Student.PhoneType getType() { + com.baeldung.protobuf.BaeldungTraining.Student.PhoneType result = com.baeldung.protobuf.BaeldungTraining.Student.PhoneType.forNumber(type_); + return result == null ? com.baeldung.protobuf.BaeldungTraining.Student.PhoneType.UNRECOGNIZED : result; + } + + private byte memoizedIsInitialized = -1; + + public final boolean isInitialized() { + byte isInitialized = memoizedIsInitialized; + if (isInitialized == 1) + return true; + if (isInitialized == 0) + return false; + + memoizedIsInitialized = 1; + return true; + } + + public void writeTo(com.google.protobuf.CodedOutputStream output) throws java.io.IOException { + if (!getNumberBytes().isEmpty()) { + com.google.protobuf.GeneratedMessage.writeString(output, 1, number_); + } + if (type_ != com.baeldung.protobuf.BaeldungTraining.Student.PhoneType.MOBILE.getNumber()) { + output.writeEnum(2, type_); + } + } + + public int getSerializedSize() { + int size = memoizedSize; + if (size != -1) + return size; + + size = 0; + if (!getNumberBytes().isEmpty()) { + size += com.google.protobuf.GeneratedMessage.computeStringSize(1, number_); + } + if (type_ != com.baeldung.protobuf.BaeldungTraining.Student.PhoneType.MOBILE.getNumber()) { + size += com.google.protobuf.CodedOutputStream.computeEnumSize(2, type_); + } + memoizedSize = size; + return size; + } + + private static final long serialVersionUID = 0L; + + public static com.baeldung.protobuf.BaeldungTraining.Student.PhoneNumber parseFrom(com.google.protobuf.ByteString data) throws com.google.protobuf.InvalidProtocolBufferException { + return PARSER.parseFrom(data); + } + + public static com.baeldung.protobuf.BaeldungTraining.Student.PhoneNumber parseFrom(com.google.protobuf.ByteString data, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws com.google.protobuf.InvalidProtocolBufferException { + return PARSER.parseFrom(data, extensionRegistry); + } + + public static com.baeldung.protobuf.BaeldungTraining.Student.PhoneNumber parseFrom(byte[] data) throws com.google.protobuf.InvalidProtocolBufferException { + return PARSER.parseFrom(data); + } + + public static com.baeldung.protobuf.BaeldungTraining.Student.PhoneNumber parseFrom(byte[] data, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws com.google.protobuf.InvalidProtocolBufferException { + return PARSER.parseFrom(data, extensionRegistry); + } + + public static com.baeldung.protobuf.BaeldungTraining.Student.PhoneNumber parseFrom(java.io.InputStream input) throws java.io.IOException { + return com.google.protobuf.GeneratedMessage.parseWithIOException(PARSER, input); + } + + public static com.baeldung.protobuf.BaeldungTraining.Student.PhoneNumber parseFrom(java.io.InputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws java.io.IOException { + return com.google.protobuf.GeneratedMessage.parseWithIOException(PARSER, input, extensionRegistry); + } + + public static com.baeldung.protobuf.BaeldungTraining.Student.PhoneNumber parseDelimitedFrom(java.io.InputStream input) throws java.io.IOException { + return com.google.protobuf.GeneratedMessage.parseDelimitedWithIOException(PARSER, input); + } + + public static com.baeldung.protobuf.BaeldungTraining.Student.PhoneNumber parseDelimitedFrom(java.io.InputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws java.io.IOException { + return com.google.protobuf.GeneratedMessage.parseDelimitedWithIOException(PARSER, input, extensionRegistry); + } + + public static com.baeldung.protobuf.BaeldungTraining.Student.PhoneNumber parseFrom(com.google.protobuf.CodedInputStream input) throws java.io.IOException { + return com.google.protobuf.GeneratedMessage.parseWithIOException(PARSER, input); + } + + public static com.baeldung.protobuf.BaeldungTraining.Student.PhoneNumber parseFrom(com.google.protobuf.CodedInputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws java.io.IOException { + return com.google.protobuf.GeneratedMessage.parseWithIOException(PARSER, input, extensionRegistry); + } + + public Builder newBuilderForType() { + return newBuilder(); + } + + public static Builder newBuilder() { + return DEFAULT_INSTANCE.toBuilder(); + } + + public static Builder newBuilder(com.baeldung.protobuf.BaeldungTraining.Student.PhoneNumber prototype) { + return DEFAULT_INSTANCE.toBuilder().mergeFrom(prototype); + } + + public Builder toBuilder() { + return this == DEFAULT_INSTANCE ? new Builder() : new Builder().mergeFrom(this); + } + + @java.lang.Override + protected Builder newBuilderForType(com.google.protobuf.GeneratedMessage.BuilderParent parent) { + Builder builder = new Builder(parent); + return builder; + } + + /** + * Protobuf type {@code baeldung.Student.PhoneNumber} + */ + public static final class Builder extends com.google.protobuf.GeneratedMessage.Builder implements + // @@protoc_insertion_point(builder_implements:baeldung.Student.PhoneNumber) + com.baeldung.protobuf.BaeldungTraining.Student.PhoneNumberOrBuilder { + public static final com.google.protobuf.Descriptors.Descriptor getDescriptor() { + return com.baeldung.protobuf.BaeldungTraining.internal_static_baeldung_Student_PhoneNumber_descriptor; + } + + protected com.google.protobuf.GeneratedMessage.FieldAccessorTable internalGetFieldAccessorTable() { + return com.baeldung.protobuf.BaeldungTraining.internal_static_baeldung_Student_PhoneNumber_fieldAccessorTable.ensureFieldAccessorsInitialized(com.baeldung.protobuf.BaeldungTraining.Student.PhoneNumber.class, + com.baeldung.protobuf.BaeldungTraining.Student.PhoneNumber.Builder.class); + } + + // Construct using com.baeldung.protobuf.BaeldungTraining.Student.PhoneNumber.newBuilder() + private Builder() { + maybeForceBuilderInitialization(); + } + + private Builder(com.google.protobuf.GeneratedMessage.BuilderParent parent) { + super(parent); + maybeForceBuilderInitialization(); + } + + private void maybeForceBuilderInitialization() { + if (com.google.protobuf.GeneratedMessage.alwaysUseFieldBuilders) { + } + } + + public Builder clear() { + super.clear(); + number_ = ""; + + type_ = 0; + + return this; + } + + public com.google.protobuf.Descriptors.Descriptor getDescriptorForType() { + return com.baeldung.protobuf.BaeldungTraining.internal_static_baeldung_Student_PhoneNumber_descriptor; + } + + public com.baeldung.protobuf.BaeldungTraining.Student.PhoneNumber getDefaultInstanceForType() { + return com.baeldung.protobuf.BaeldungTraining.Student.PhoneNumber.getDefaultInstance(); + } + + public com.baeldung.protobuf.BaeldungTraining.Student.PhoneNumber build() { + com.baeldung.protobuf.BaeldungTraining.Student.PhoneNumber result = buildPartial(); + if (!result.isInitialized()) { + throw newUninitializedMessageException(result); + } + return result; + } + + public com.baeldung.protobuf.BaeldungTraining.Student.PhoneNumber buildPartial() { + com.baeldung.protobuf.BaeldungTraining.Student.PhoneNumber result = new com.baeldung.protobuf.BaeldungTraining.Student.PhoneNumber(this); + result.number_ = number_; + result.type_ = type_; + onBuilt(); + return result; + } + + public Builder mergeFrom(com.google.protobuf.Message other) { + if (other instanceof com.baeldung.protobuf.BaeldungTraining.Student.PhoneNumber) { + return mergeFrom((com.baeldung.protobuf.BaeldungTraining.Student.PhoneNumber) other); + } else { + super.mergeFrom(other); + return this; + } + } + + public Builder mergeFrom(com.baeldung.protobuf.BaeldungTraining.Student.PhoneNumber other) { + if (other == com.baeldung.protobuf.BaeldungTraining.Student.PhoneNumber.getDefaultInstance()) + return this; + if (!other.getNumber().isEmpty()) { + number_ = other.number_; + onChanged(); + } + if (other.type_ != 0) { + setTypeValue(other.getTypeValue()); + } + onChanged(); + return this; + } + + public final boolean isInitialized() { + return true; + } + + public Builder mergeFrom(com.google.protobuf.CodedInputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws java.io.IOException { + com.baeldung.protobuf.BaeldungTraining.Student.PhoneNumber parsedMessage = null; + try { + parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry); + } catch (com.google.protobuf.InvalidProtocolBufferException e) { + parsedMessage = (com.baeldung.protobuf.BaeldungTraining.Student.PhoneNumber) e.getUnfinishedMessage(); + throw e.unwrapIOException(); + } finally { + if (parsedMessage != null) { + mergeFrom(parsedMessage); + } + } + return this; + } + + private java.lang.Object number_ = ""; + + /** + * optional string number = 1; + */ + public java.lang.String getNumber() { + java.lang.Object ref = number_; + if (!(ref instanceof java.lang.String)) { + com.google.protobuf.ByteString bs = (com.google.protobuf.ByteString) ref; + java.lang.String s = bs.toStringUtf8(); + number_ = s; + return s; + } else { + return (java.lang.String) ref; + } + } + + /** + * optional string number = 1; + */ + public com.google.protobuf.ByteString getNumberBytes() { + java.lang.Object ref = number_; + if (ref instanceof String) { + com.google.protobuf.ByteString b = com.google.protobuf.ByteString.copyFromUtf8((java.lang.String) ref); + number_ = b; + return b; + } else { + return (com.google.protobuf.ByteString) ref; + } + } + + /** + * optional string number = 1; + */ + public Builder setNumber(java.lang.String value) { + if (value == null) { + throw new NullPointerException(); + } + + number_ = value; + onChanged(); + return this; + } + + /** + * optional string number = 1; + */ + public Builder clearNumber() { + + number_ = getDefaultInstance().getNumber(); + onChanged(); + return this; + } + + /** + * optional string number = 1; + */ + public Builder setNumberBytes(com.google.protobuf.ByteString value) { + if (value == null) { + throw new NullPointerException(); + } + checkByteStringIsUtf8(value); + + number_ = value; + onChanged(); + return this; + } + + private int type_ = 0; + + /** + * optional .baeldung.Student.PhoneType type = 2; + */ + public int getTypeValue() { + return type_; + } + + /** + * optional .baeldung.Student.PhoneType type = 2; + */ + public Builder setTypeValue(int value) { + type_ = value; + onChanged(); + return this; + } + + /** + * optional .baeldung.Student.PhoneType type = 2; + */ + public com.baeldung.protobuf.BaeldungTraining.Student.PhoneType getType() { + com.baeldung.protobuf.BaeldungTraining.Student.PhoneType result = com.baeldung.protobuf.BaeldungTraining.Student.PhoneType.forNumber(type_); + return result == null ? com.baeldung.protobuf.BaeldungTraining.Student.PhoneType.UNRECOGNIZED : result; + } + + /** + * optional .baeldung.Student.PhoneType type = 2; + */ + public Builder setType(com.baeldung.protobuf.BaeldungTraining.Student.PhoneType value) { + if (value == null) { + throw new NullPointerException(); + } + + type_ = value.getNumber(); + onChanged(); + return this; + } + + /** + * optional .baeldung.Student.PhoneType type = 2; + */ + public Builder clearType() { + + type_ = 0; + onChanged(); + return this; + } + + public final Builder setUnknownFields(final com.google.protobuf.UnknownFieldSet unknownFields) { + return this; + } + + public final Builder mergeUnknownFields(final com.google.protobuf.UnknownFieldSet unknownFields) { + return this; + } + + // @@protoc_insertion_point(builder_scope:baeldung.Student.PhoneNumber) + } + + // @@protoc_insertion_point(class_scope:baeldung.Student.PhoneNumber) + private static final com.baeldung.protobuf.BaeldungTraining.Student.PhoneNumber DEFAULT_INSTANCE; + static { + DEFAULT_INSTANCE = new com.baeldung.protobuf.BaeldungTraining.Student.PhoneNumber(); + } + + public static com.baeldung.protobuf.BaeldungTraining.Student.PhoneNumber getDefaultInstance() { + return DEFAULT_INSTANCE; + } + + private static final com.google.protobuf.Parser PARSER = new com.google.protobuf.AbstractParser() { + public PhoneNumber parsePartialFrom(com.google.protobuf.CodedInputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws com.google.protobuf.InvalidProtocolBufferException { + return new PhoneNumber(input, extensionRegistry); + } + }; + + public static com.google.protobuf.Parser parser() { + return PARSER; + } + + @java.lang.Override + public com.google.protobuf.Parser getParserForType() { + return PARSER; + } + + public com.baeldung.protobuf.BaeldungTraining.Student.PhoneNumber getDefaultInstanceForType() { + return DEFAULT_INSTANCE; + } + + } + + private int bitField0_; + public static final int ID_FIELD_NUMBER = 1; + private int id_; + + /** + * optional int32 id = 1; + */ + public int getId() { + return id_; + } + + public static final int FIRST_NAME_FIELD_NUMBER = 2; + private volatile java.lang.Object firstName_; + + /** + * optional string first_name = 2; + */ + public java.lang.String getFirstName() { + java.lang.Object ref = firstName_; + if (ref instanceof java.lang.String) { + return (java.lang.String) ref; + } else { + com.google.protobuf.ByteString bs = (com.google.protobuf.ByteString) ref; + java.lang.String s = bs.toStringUtf8(); + firstName_ = s; + return s; + } + } + + /** + * optional string first_name = 2; + */ + public com.google.protobuf.ByteString getFirstNameBytes() { + java.lang.Object ref = firstName_; + if (ref instanceof java.lang.String) { + com.google.protobuf.ByteString b = com.google.protobuf.ByteString.copyFromUtf8((java.lang.String) ref); + firstName_ = b; + return b; + } else { + return (com.google.protobuf.ByteString) ref; + } + } + + public static final int LAST_NAME_FIELD_NUMBER = 3; + private volatile java.lang.Object lastName_; + + /** + * optional string last_name = 3; + */ + public java.lang.String getLastName() { + java.lang.Object ref = lastName_; + if (ref instanceof java.lang.String) { + return (java.lang.String) ref; + } else { + com.google.protobuf.ByteString bs = (com.google.protobuf.ByteString) ref; + java.lang.String s = bs.toStringUtf8(); + lastName_ = s; + return s; + } + } + + /** + * optional string last_name = 3; + */ + public com.google.protobuf.ByteString getLastNameBytes() { + java.lang.Object ref = lastName_; + if (ref instanceof java.lang.String) { + com.google.protobuf.ByteString b = com.google.protobuf.ByteString.copyFromUtf8((java.lang.String) ref); + lastName_ = b; + return b; + } else { + return (com.google.protobuf.ByteString) ref; + } + } + + public static final int EMAIL_FIELD_NUMBER = 4; + private volatile java.lang.Object email_; + + /** + * optional string email = 4; + */ + public java.lang.String getEmail() { + java.lang.Object ref = email_; + if (ref instanceof java.lang.String) { + return (java.lang.String) ref; + } else { + com.google.protobuf.ByteString bs = (com.google.protobuf.ByteString) ref; + java.lang.String s = bs.toStringUtf8(); + email_ = s; + return s; + } + } + + /** + * optional string email = 4; + */ + public com.google.protobuf.ByteString getEmailBytes() { + java.lang.Object ref = email_; + if (ref instanceof java.lang.String) { + com.google.protobuf.ByteString b = com.google.protobuf.ByteString.copyFromUtf8((java.lang.String) ref); + email_ = b; + return b; + } else { + return (com.google.protobuf.ByteString) ref; + } + } + + public static final int PHONE_FIELD_NUMBER = 5; + private java.util.List phone_; + + /** + * repeated .baeldung.Student.PhoneNumber phone = 5; + */ + public java.util.List getPhoneList() { + return phone_; + } + + /** + * repeated .baeldung.Student.PhoneNumber phone = 5; + */ + public java.util.List getPhoneOrBuilderList() { + return phone_; + } + + /** + * repeated .baeldung.Student.PhoneNumber phone = 5; + */ + public int getPhoneCount() { + return phone_.size(); + } + + /** + * repeated .baeldung.Student.PhoneNumber phone = 5; + */ + public com.baeldung.protobuf.BaeldungTraining.Student.PhoneNumber getPhone(int index) { + return phone_.get(index); + } + + /** + * repeated .baeldung.Student.PhoneNumber phone = 5; + */ + public com.baeldung.protobuf.BaeldungTraining.Student.PhoneNumberOrBuilder getPhoneOrBuilder(int index) { + return phone_.get(index); + } + + private byte memoizedIsInitialized = -1; + + public final boolean isInitialized() { + byte isInitialized = memoizedIsInitialized; + if (isInitialized == 1) + return true; + if (isInitialized == 0) + return false; + + memoizedIsInitialized = 1; + return true; + } + + public void writeTo(com.google.protobuf.CodedOutputStream output) throws java.io.IOException { + if (id_ != 0) { + output.writeInt32(1, id_); + } + if (!getFirstNameBytes().isEmpty()) { + com.google.protobuf.GeneratedMessage.writeString(output, 2, firstName_); + } + if (!getLastNameBytes().isEmpty()) { + com.google.protobuf.GeneratedMessage.writeString(output, 3, lastName_); + } + if (!getEmailBytes().isEmpty()) { + com.google.protobuf.GeneratedMessage.writeString(output, 4, email_); + } + for (int i = 0; i < phone_.size(); i++) { + output.writeMessage(5, phone_.get(i)); + } + } + + public int getSerializedSize() { + int size = memoizedSize; + if (size != -1) + return size; + + size = 0; + if (id_ != 0) { + size += com.google.protobuf.CodedOutputStream.computeInt32Size(1, id_); + } + if (!getFirstNameBytes().isEmpty()) { + size += com.google.protobuf.GeneratedMessage.computeStringSize(2, firstName_); + } + if (!getLastNameBytes().isEmpty()) { + size += com.google.protobuf.GeneratedMessage.computeStringSize(3, lastName_); + } + if (!getEmailBytes().isEmpty()) { + size += com.google.protobuf.GeneratedMessage.computeStringSize(4, email_); + } + for (int i = 0; i < phone_.size(); i++) { + size += com.google.protobuf.CodedOutputStream.computeMessageSize(5, phone_.get(i)); + } + memoizedSize = size; + return size; + } + + private static final long serialVersionUID = 0L; + + public static com.baeldung.protobuf.BaeldungTraining.Student parseFrom(com.google.protobuf.ByteString data) throws com.google.protobuf.InvalidProtocolBufferException { + return PARSER.parseFrom(data); + } + + public static com.baeldung.protobuf.BaeldungTraining.Student parseFrom(com.google.protobuf.ByteString data, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws com.google.protobuf.InvalidProtocolBufferException { + return PARSER.parseFrom(data, extensionRegistry); + } + + public static com.baeldung.protobuf.BaeldungTraining.Student parseFrom(byte[] data) throws com.google.protobuf.InvalidProtocolBufferException { + return PARSER.parseFrom(data); + } + + public static com.baeldung.protobuf.BaeldungTraining.Student parseFrom(byte[] data, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws com.google.protobuf.InvalidProtocolBufferException { + return PARSER.parseFrom(data, extensionRegistry); + } + + public static com.baeldung.protobuf.BaeldungTraining.Student parseFrom(java.io.InputStream input) throws java.io.IOException { + return com.google.protobuf.GeneratedMessage.parseWithIOException(PARSER, input); + } + + public static com.baeldung.protobuf.BaeldungTraining.Student parseFrom(java.io.InputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws java.io.IOException { + return com.google.protobuf.GeneratedMessage.parseWithIOException(PARSER, input, extensionRegistry); + } + + public static com.baeldung.protobuf.BaeldungTraining.Student parseDelimitedFrom(java.io.InputStream input) throws java.io.IOException { + return com.google.protobuf.GeneratedMessage.parseDelimitedWithIOException(PARSER, input); + } + + public static com.baeldung.protobuf.BaeldungTraining.Student parseDelimitedFrom(java.io.InputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws java.io.IOException { + return com.google.protobuf.GeneratedMessage.parseDelimitedWithIOException(PARSER, input, extensionRegistry); + } + + public static com.baeldung.protobuf.BaeldungTraining.Student parseFrom(com.google.protobuf.CodedInputStream input) throws java.io.IOException { + return com.google.protobuf.GeneratedMessage.parseWithIOException(PARSER, input); + } + + public static com.baeldung.protobuf.BaeldungTraining.Student parseFrom(com.google.protobuf.CodedInputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws java.io.IOException { + return com.google.protobuf.GeneratedMessage.parseWithIOException(PARSER, input, extensionRegistry); + } + + public Builder newBuilderForType() { + return newBuilder(); + } + + public static Builder newBuilder() { + return DEFAULT_INSTANCE.toBuilder(); + } + + public static Builder newBuilder(com.baeldung.protobuf.BaeldungTraining.Student prototype) { + return DEFAULT_INSTANCE.toBuilder().mergeFrom(prototype); + } + + public Builder toBuilder() { + return this == DEFAULT_INSTANCE ? new Builder() : new Builder().mergeFrom(this); + } + + @java.lang.Override + protected Builder newBuilderForType(com.google.protobuf.GeneratedMessage.BuilderParent parent) { + Builder builder = new Builder(parent); + return builder; + } + + /** + * Protobuf type {@code baeldung.Student} + */ + public static final class Builder extends com.google.protobuf.GeneratedMessage.Builder implements + // @@protoc_insertion_point(builder_implements:baeldung.Student) + com.baeldung.protobuf.BaeldungTraining.StudentOrBuilder { + public static final com.google.protobuf.Descriptors.Descriptor getDescriptor() { + return com.baeldung.protobuf.BaeldungTraining.internal_static_baeldung_Student_descriptor; + } + + protected com.google.protobuf.GeneratedMessage.FieldAccessorTable internalGetFieldAccessorTable() { + return com.baeldung.protobuf.BaeldungTraining.internal_static_baeldung_Student_fieldAccessorTable.ensureFieldAccessorsInitialized(com.baeldung.protobuf.BaeldungTraining.Student.class, + com.baeldung.protobuf.BaeldungTraining.Student.Builder.class); + } + + // Construct using com.baeldung.protobuf.BaeldungTraining.Student.newBuilder() + private Builder() { + maybeForceBuilderInitialization(); + } + + private Builder(com.google.protobuf.GeneratedMessage.BuilderParent parent) { + super(parent); + maybeForceBuilderInitialization(); + } + + private void maybeForceBuilderInitialization() { + if (com.google.protobuf.GeneratedMessage.alwaysUseFieldBuilders) { + getPhoneFieldBuilder(); + } + } + + public Builder clear() { + super.clear(); + id_ = 0; + + firstName_ = ""; + + lastName_ = ""; + + email_ = ""; + + if (phoneBuilder_ == null) { + phone_ = java.util.Collections.emptyList(); + bitField0_ = (bitField0_ & ~0x00000010); + } else { + phoneBuilder_.clear(); + } + return this; + } + + public com.google.protobuf.Descriptors.Descriptor getDescriptorForType() { + return com.baeldung.protobuf.BaeldungTraining.internal_static_baeldung_Student_descriptor; + } + + public com.baeldung.protobuf.BaeldungTraining.Student getDefaultInstanceForType() { + return com.baeldung.protobuf.BaeldungTraining.Student.getDefaultInstance(); + } + + public com.baeldung.protobuf.BaeldungTraining.Student build() { + com.baeldung.protobuf.BaeldungTraining.Student result = buildPartial(); + if (!result.isInitialized()) { + throw newUninitializedMessageException(result); + } + return result; + } + + public com.baeldung.protobuf.BaeldungTraining.Student buildPartial() { + com.baeldung.protobuf.BaeldungTraining.Student result = new com.baeldung.protobuf.BaeldungTraining.Student(this); + int from_bitField0_ = bitField0_; + int to_bitField0_ = 0; + result.id_ = id_; + result.firstName_ = firstName_; + result.lastName_ = lastName_; + result.email_ = email_; + if (phoneBuilder_ == null) { + if (((bitField0_ & 0x00000010) == 0x00000010)) { + phone_ = java.util.Collections.unmodifiableList(phone_); + bitField0_ = (bitField0_ & ~0x00000010); + } + result.phone_ = phone_; + } else { + result.phone_ = phoneBuilder_.build(); + } + result.bitField0_ = to_bitField0_; + onBuilt(); + return result; + } + + public Builder mergeFrom(com.google.protobuf.Message other) { + if (other instanceof com.baeldung.protobuf.BaeldungTraining.Student) { + return mergeFrom((com.baeldung.protobuf.BaeldungTraining.Student) other); + } else { + super.mergeFrom(other); + return this; + } + } + + public Builder mergeFrom(com.baeldung.protobuf.BaeldungTraining.Student other) { + if (other == com.baeldung.protobuf.BaeldungTraining.Student.getDefaultInstance()) + return this; + if (other.getId() != 0) { + setId(other.getId()); + } + if (!other.getFirstName().isEmpty()) { + firstName_ = other.firstName_; + onChanged(); + } + if (!other.getLastName().isEmpty()) { + lastName_ = other.lastName_; + onChanged(); + } + if (!other.getEmail().isEmpty()) { + email_ = other.email_; + onChanged(); + } + if (phoneBuilder_ == null) { + if (!other.phone_.isEmpty()) { + if (phone_.isEmpty()) { + phone_ = other.phone_; + bitField0_ = (bitField0_ & ~0x00000010); + } else { + ensurePhoneIsMutable(); + phone_.addAll(other.phone_); + } + onChanged(); + } + } else { + if (!other.phone_.isEmpty()) { + if (phoneBuilder_.isEmpty()) { + phoneBuilder_.dispose(); + phoneBuilder_ = null; + phone_ = other.phone_; + bitField0_ = (bitField0_ & ~0x00000010); + phoneBuilder_ = com.google.protobuf.GeneratedMessage.alwaysUseFieldBuilders ? getPhoneFieldBuilder() : null; + } else { + phoneBuilder_.addAllMessages(other.phone_); + } + } + } + onChanged(); + return this; + } + + public final boolean isInitialized() { + return true; + } + + public Builder mergeFrom(com.google.protobuf.CodedInputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws java.io.IOException { + com.baeldung.protobuf.BaeldungTraining.Student parsedMessage = null; + try { + parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry); + } catch (com.google.protobuf.InvalidProtocolBufferException e) { + parsedMessage = (com.baeldung.protobuf.BaeldungTraining.Student) e.getUnfinishedMessage(); + throw e.unwrapIOException(); + } finally { + if (parsedMessage != null) { + mergeFrom(parsedMessage); + } + } + return this; + } + + private int bitField0_; + + private int id_; + + /** + * optional int32 id = 1; + */ + public int getId() { + return id_; + } + + /** + * optional int32 id = 1; + */ + public Builder setId(int value) { + + id_ = value; + onChanged(); + return this; + } + + /** + * optional int32 id = 1; + */ + public Builder clearId() { + + id_ = 0; + onChanged(); + return this; + } + + private java.lang.Object firstName_ = ""; + + /** + * optional string first_name = 2; + */ + public java.lang.String getFirstName() { + java.lang.Object ref = firstName_; + if (!(ref instanceof java.lang.String)) { + com.google.protobuf.ByteString bs = (com.google.protobuf.ByteString) ref; + java.lang.String s = bs.toStringUtf8(); + firstName_ = s; + return s; + } else { + return (java.lang.String) ref; + } + } + + /** + * optional string first_name = 2; + */ + public com.google.protobuf.ByteString getFirstNameBytes() { + java.lang.Object ref = firstName_; + if (ref instanceof String) { + com.google.protobuf.ByteString b = com.google.protobuf.ByteString.copyFromUtf8((java.lang.String) ref); + firstName_ = b; + return b; + } else { + return (com.google.protobuf.ByteString) ref; + } + } + + /** + * optional string first_name = 2; + */ + public Builder setFirstName(java.lang.String value) { + if (value == null) { + throw new NullPointerException(); + } + + firstName_ = value; + onChanged(); + return this; + } + + /** + * optional string first_name = 2; + */ + public Builder clearFirstName() { + + firstName_ = getDefaultInstance().getFirstName(); + onChanged(); + return this; + } + + /** + * optional string first_name = 2; + */ + public Builder setFirstNameBytes(com.google.protobuf.ByteString value) { + if (value == null) { + throw new NullPointerException(); + } + checkByteStringIsUtf8(value); + + firstName_ = value; + onChanged(); + return this; + } + + private java.lang.Object lastName_ = ""; + + /** + * optional string last_name = 3; + */ + public java.lang.String getLastName() { + java.lang.Object ref = lastName_; + if (!(ref instanceof java.lang.String)) { + com.google.protobuf.ByteString bs = (com.google.protobuf.ByteString) ref; + java.lang.String s = bs.toStringUtf8(); + lastName_ = s; + return s; + } else { + return (java.lang.String) ref; + } + } + + /** + * optional string last_name = 3; + */ + public com.google.protobuf.ByteString getLastNameBytes() { + java.lang.Object ref = lastName_; + if (ref instanceof String) { + com.google.protobuf.ByteString b = com.google.protobuf.ByteString.copyFromUtf8((java.lang.String) ref); + lastName_ = b; + return b; + } else { + return (com.google.protobuf.ByteString) ref; + } + } + + /** + * optional string last_name = 3; + */ + public Builder setLastName(java.lang.String value) { + if (value == null) { + throw new NullPointerException(); + } + + lastName_ = value; + onChanged(); + return this; + } + + /** + * optional string last_name = 3; + */ + public Builder clearLastName() { + + lastName_ = getDefaultInstance().getLastName(); + onChanged(); + return this; + } + + /** + * optional string last_name = 3; + */ + public Builder setLastNameBytes(com.google.protobuf.ByteString value) { + if (value == null) { + throw new NullPointerException(); + } + checkByteStringIsUtf8(value); + + lastName_ = value; + onChanged(); + return this; + } + + private java.lang.Object email_ = ""; + + /** + * optional string email = 4; + */ + public java.lang.String getEmail() { + java.lang.Object ref = email_; + if (!(ref instanceof java.lang.String)) { + com.google.protobuf.ByteString bs = (com.google.protobuf.ByteString) ref; + java.lang.String s = bs.toStringUtf8(); + email_ = s; + return s; + } else { + return (java.lang.String) ref; + } + } + + /** + * optional string email = 4; + */ + public com.google.protobuf.ByteString getEmailBytes() { + java.lang.Object ref = email_; + if (ref instanceof String) { + com.google.protobuf.ByteString b = com.google.protobuf.ByteString.copyFromUtf8((java.lang.String) ref); + email_ = b; + return b; + } else { + return (com.google.protobuf.ByteString) ref; + } + } + + /** + * optional string email = 4; + */ + public Builder setEmail(java.lang.String value) { + if (value == null) { + throw new NullPointerException(); + } + + email_ = value; + onChanged(); + return this; + } + + /** + * optional string email = 4; + */ + public Builder clearEmail() { + + email_ = getDefaultInstance().getEmail(); + onChanged(); + return this; + } + + /** + * optional string email = 4; + */ + public Builder setEmailBytes(com.google.protobuf.ByteString value) { + if (value == null) { + throw new NullPointerException(); + } + checkByteStringIsUtf8(value); + + email_ = value; + onChanged(); + return this; + } + + private java.util.List phone_ = java.util.Collections.emptyList(); + + private void ensurePhoneIsMutable() { + if (!((bitField0_ & 0x00000010) == 0x00000010)) { + phone_ = new java.util.ArrayList(phone_); + bitField0_ |= 0x00000010; + } + } + + private com.google.protobuf.RepeatedFieldBuilder phoneBuilder_; + + /** + * repeated .baeldung.Student.PhoneNumber phone = 5; + */ + public java.util.List getPhoneList() { + if (phoneBuilder_ == null) { + return java.util.Collections.unmodifiableList(phone_); + } else { + return phoneBuilder_.getMessageList(); + } + } + + /** + * repeated .baeldung.Student.PhoneNumber phone = 5; + */ + public int getPhoneCount() { + if (phoneBuilder_ == null) { + return phone_.size(); + } else { + return phoneBuilder_.getCount(); + } + } + + /** + * repeated .baeldung.Student.PhoneNumber phone = 5; + */ + public com.baeldung.protobuf.BaeldungTraining.Student.PhoneNumber getPhone(int index) { + if (phoneBuilder_ == null) { + return phone_.get(index); + } else { + return phoneBuilder_.getMessage(index); + } + } + + /** + * repeated .baeldung.Student.PhoneNumber phone = 5; + */ + public Builder setPhone(int index, com.baeldung.protobuf.BaeldungTraining.Student.PhoneNumber value) { + if (phoneBuilder_ == null) { + if (value == null) { + throw new NullPointerException(); + } + ensurePhoneIsMutable(); + phone_.set(index, value); + onChanged(); + } else { + phoneBuilder_.setMessage(index, value); + } + return this; + } + + /** + * repeated .baeldung.Student.PhoneNumber phone = 5; + */ + public Builder setPhone(int index, com.baeldung.protobuf.BaeldungTraining.Student.PhoneNumber.Builder builderForValue) { + if (phoneBuilder_ == null) { + ensurePhoneIsMutable(); + phone_.set(index, builderForValue.build()); + onChanged(); + } else { + phoneBuilder_.setMessage(index, builderForValue.build()); + } + return this; + } + + /** + * repeated .baeldung.Student.PhoneNumber phone = 5; + */ + public Builder addPhone(com.baeldung.protobuf.BaeldungTraining.Student.PhoneNumber value) { + if (phoneBuilder_ == null) { + if (value == null) { + throw new NullPointerException(); + } + ensurePhoneIsMutable(); + phone_.add(value); + onChanged(); + } else { + phoneBuilder_.addMessage(value); + } + return this; + } + + /** + * repeated .baeldung.Student.PhoneNumber phone = 5; + */ + public Builder addPhone(int index, com.baeldung.protobuf.BaeldungTraining.Student.PhoneNumber value) { + if (phoneBuilder_ == null) { + if (value == null) { + throw new NullPointerException(); + } + ensurePhoneIsMutable(); + phone_.add(index, value); + onChanged(); + } else { + phoneBuilder_.addMessage(index, value); + } + return this; + } + + /** + * repeated .baeldung.Student.PhoneNumber phone = 5; + */ + public Builder addPhone(com.baeldung.protobuf.BaeldungTraining.Student.PhoneNumber.Builder builderForValue) { + if (phoneBuilder_ == null) { + ensurePhoneIsMutable(); + phone_.add(builderForValue.build()); + onChanged(); + } else { + phoneBuilder_.addMessage(builderForValue.build()); + } + return this; + } + + /** + * repeated .baeldung.Student.PhoneNumber phone = 5; + */ + public Builder addPhone(int index, com.baeldung.protobuf.BaeldungTraining.Student.PhoneNumber.Builder builderForValue) { + if (phoneBuilder_ == null) { + ensurePhoneIsMutable(); + phone_.add(index, builderForValue.build()); + onChanged(); + } else { + phoneBuilder_.addMessage(index, builderForValue.build()); + } + return this; + } + + /** + * repeated .baeldung.Student.PhoneNumber phone = 5; + */ + public Builder addAllPhone(java.lang.Iterable values) { + if (phoneBuilder_ == null) { + ensurePhoneIsMutable(); + com.google.protobuf.AbstractMessageLite.Builder.addAll(values, phone_); + onChanged(); + } else { + phoneBuilder_.addAllMessages(values); + } + return this; + } + + /** + * repeated .baeldung.Student.PhoneNumber phone = 5; + */ + public Builder clearPhone() { + if (phoneBuilder_ == null) { + phone_ = java.util.Collections.emptyList(); + bitField0_ = (bitField0_ & ~0x00000010); + onChanged(); + } else { + phoneBuilder_.clear(); + } + return this; + } + + /** + * repeated .baeldung.Student.PhoneNumber phone = 5; + */ + public Builder removePhone(int index) { + if (phoneBuilder_ == null) { + ensurePhoneIsMutable(); + phone_.remove(index); + onChanged(); + } else { + phoneBuilder_.remove(index); + } + return this; + } + + /** + * repeated .baeldung.Student.PhoneNumber phone = 5; + */ + public com.baeldung.protobuf.BaeldungTraining.Student.PhoneNumber.Builder getPhoneBuilder(int index) { + return getPhoneFieldBuilder().getBuilder(index); + } + + /** + * repeated .baeldung.Student.PhoneNumber phone = 5; + */ + public com.baeldung.protobuf.BaeldungTraining.Student.PhoneNumberOrBuilder getPhoneOrBuilder(int index) { + if (phoneBuilder_ == null) { + return phone_.get(index); + } else { + return phoneBuilder_.getMessageOrBuilder(index); + } + } + + /** + * repeated .baeldung.Student.PhoneNumber phone = 5; + */ + public java.util.List getPhoneOrBuilderList() { + if (phoneBuilder_ != null) { + return phoneBuilder_.getMessageOrBuilderList(); + } else { + return java.util.Collections.unmodifiableList(phone_); + } + } + + /** + * repeated .baeldung.Student.PhoneNumber phone = 5; + */ + public com.baeldung.protobuf.BaeldungTraining.Student.PhoneNumber.Builder addPhoneBuilder() { + return getPhoneFieldBuilder().addBuilder(com.baeldung.protobuf.BaeldungTraining.Student.PhoneNumber.getDefaultInstance()); + } + + /** + * repeated .baeldung.Student.PhoneNumber phone = 5; + */ + public com.baeldung.protobuf.BaeldungTraining.Student.PhoneNumber.Builder addPhoneBuilder(int index) { + return getPhoneFieldBuilder().addBuilder(index, com.baeldung.protobuf.BaeldungTraining.Student.PhoneNumber.getDefaultInstance()); + } + + /** + * repeated .baeldung.Student.PhoneNumber phone = 5; + */ + public java.util.List getPhoneBuilderList() { + return getPhoneFieldBuilder().getBuilderList(); + } + + private com.google.protobuf.RepeatedFieldBuilder getPhoneFieldBuilder() { + if (phoneBuilder_ == null) { + phoneBuilder_ = new com.google.protobuf.RepeatedFieldBuilder( + phone_, ((bitField0_ & 0x00000010) == 0x00000010), getParentForChildren(), isClean()); + phone_ = null; + } + return phoneBuilder_; + } + + public final Builder setUnknownFields(final com.google.protobuf.UnknownFieldSet unknownFields) { + return this; + } + + public final Builder mergeUnknownFields(final com.google.protobuf.UnknownFieldSet unknownFields) { + return this; + } + + // @@protoc_insertion_point(builder_scope:baeldung.Student) + } + + // @@protoc_insertion_point(class_scope:baeldung.Student) + private static final com.baeldung.protobuf.BaeldungTraining.Student DEFAULT_INSTANCE; + static { + DEFAULT_INSTANCE = new com.baeldung.protobuf.BaeldungTraining.Student(); + } + + public static com.baeldung.protobuf.BaeldungTraining.Student getDefaultInstance() { + return DEFAULT_INSTANCE; + } + + private static final com.google.protobuf.Parser PARSER = new com.google.protobuf.AbstractParser() { + public Student parsePartialFrom(com.google.protobuf.CodedInputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws com.google.protobuf.InvalidProtocolBufferException { + return new Student(input, extensionRegistry); + } }; - com.google.protobuf.Descriptors.FileDescriptor - .internalBuildGeneratedFileFrom(descriptorData, - new com.google.protobuf.Descriptors.FileDescriptor[] { - }, assigner); - internal_static_baeldung_Course_descriptor = - getDescriptor().getMessageTypes().get(0); - internal_static_baeldung_Course_fieldAccessorTable = new - com.google.protobuf.GeneratedMessage.FieldAccessorTable( - internal_static_baeldung_Course_descriptor, - new java.lang.String[] { "Id", "CourseName", "Student", }); - internal_static_baeldung_Student_descriptor = - getDescriptor().getMessageTypes().get(1); - internal_static_baeldung_Student_fieldAccessorTable = new - com.google.protobuf.GeneratedMessage.FieldAccessorTable( - internal_static_baeldung_Student_descriptor, - new java.lang.String[] { "Id", "FirstName", "LastName", "Email", "Phone", }); - internal_static_baeldung_Student_PhoneNumber_descriptor = - internal_static_baeldung_Student_descriptor.getNestedTypes().get(0); - internal_static_baeldung_Student_PhoneNumber_fieldAccessorTable = new - com.google.protobuf.GeneratedMessage.FieldAccessorTable( - internal_static_baeldung_Student_PhoneNumber_descriptor, - new java.lang.String[] { "Number", "Type", }); - } - // @@protoc_insertion_point(outer_class_scope) + public static com.google.protobuf.Parser parser() { + return PARSER; + } + + @java.lang.Override + public com.google.protobuf.Parser getParserForType() { + return PARSER; + } + + public com.baeldung.protobuf.BaeldungTraining.Student getDefaultInstanceForType() { + return DEFAULT_INSTANCE; + } + + } + + private static final com.google.protobuf.Descriptors.Descriptor internal_static_baeldung_Course_descriptor; + private static final com.google.protobuf.GeneratedMessage.FieldAccessorTable internal_static_baeldung_Course_fieldAccessorTable; + private static final com.google.protobuf.Descriptors.Descriptor internal_static_baeldung_Student_descriptor; + private static final com.google.protobuf.GeneratedMessage.FieldAccessorTable internal_static_baeldung_Student_fieldAccessorTable; + private static final com.google.protobuf.Descriptors.Descriptor internal_static_baeldung_Student_PhoneNumber_descriptor; + private static final com.google.protobuf.GeneratedMessage.FieldAccessorTable internal_static_baeldung_Student_PhoneNumber_fieldAccessorTable; + + public static com.google.protobuf.Descriptors.FileDescriptor getDescriptor() { + return descriptor; + } + + private static com.google.protobuf.Descriptors.FileDescriptor descriptor; + static { + java.lang.String[] descriptorData = { "\n\030resources/baeldung.proto\022\010baeldung\"M\n\006" + "Course\022\n\n\002id\030\001 \001(\005\022\023\n\013course_name\030\002 \001(\t\022" + + "\"\n\007student\030\003 \003(\0132\021.baeldung.Student\"\352\001\n\007" + "Student\022\n\n\002id\030\001 \001(\005\022\022\n\nfirst_name\030\002 \001(\t\022" + + "\021\n\tlast_name\030\003 \001(\t\022\r\n\005email\030\004 \001(\t\022,\n\005pho" + "ne\030\005 \003(\0132\035.baeldung.Student.PhoneNumber\032" + "H\n\013PhoneNumber\022\016\n\006number\030\001 \001(\t\022)\n\004type\030\002" + + " \001(\0162\033.baeldung.Student.PhoneType\"%\n\tPho" + "neType\022\n\n\006MOBILE\020\000\022\014\n\010LANDLINE\020\001B)\n\025com." + "baeldung.protobufB\020BaeldungTrainingb\006pro", "to3" }; + com.google.protobuf.Descriptors.FileDescriptor.InternalDescriptorAssigner assigner = new com.google.protobuf.Descriptors.FileDescriptor.InternalDescriptorAssigner() { + public com.google.protobuf.ExtensionRegistry assignDescriptors(com.google.protobuf.Descriptors.FileDescriptor root) { + descriptor = root; + return null; + } + }; + com.google.protobuf.Descriptors.FileDescriptor.internalBuildGeneratedFileFrom(descriptorData, new com.google.protobuf.Descriptors.FileDescriptor[] {}, assigner); + internal_static_baeldung_Course_descriptor = getDescriptor().getMessageTypes().get(0); + internal_static_baeldung_Course_fieldAccessorTable = new com.google.protobuf.GeneratedMessage.FieldAccessorTable(internal_static_baeldung_Course_descriptor, new java.lang.String[] { "Id", "CourseName", "Student", }); + internal_static_baeldung_Student_descriptor = getDescriptor().getMessageTypes().get(1); + internal_static_baeldung_Student_fieldAccessorTable = new com.google.protobuf.GeneratedMessage.FieldAccessorTable(internal_static_baeldung_Student_descriptor, new java.lang.String[] { "Id", "FirstName", "LastName", "Email", "Phone", }); + internal_static_baeldung_Student_PhoneNumber_descriptor = internal_static_baeldung_Student_descriptor.getNestedTypes().get(0); + internal_static_baeldung_Student_PhoneNumber_fieldAccessorTable = new com.google.protobuf.GeneratedMessage.FieldAccessorTable(internal_static_baeldung_Student_PhoneNumber_descriptor, new java.lang.String[] { "Number", "Type", }); + } + + // @@protoc_insertion_point(outer_class_scope) } diff --git a/spring-protobuf/src/main/java/com/baeldung/protobuf/CourseRepository.java b/spring-protobuf/src/main/java/com/baeldung/protobuf/CourseRepository.java index 60f24abf93..cbafd7d224 100644 --- a/spring-protobuf/src/main/java/com/baeldung/protobuf/CourseRepository.java +++ b/spring-protobuf/src/main/java/com/baeldung/protobuf/CourseRepository.java @@ -7,11 +7,11 @@ import java.util.Map; public class CourseRepository { private final Map courses; - - public CourseRepository (Map courses) { + + public CourseRepository(Map courses) { this.courses = courses; } - + public Course getCourse(int id) { return courses.get(id); } From 2b2022c80abd3f7b7ed6bf8ec70bdc323d5a0a7a Mon Sep 17 00:00:00 2001 From: Grzegorz Piwowarek Date: Sat, 18 Jun 2016 23:28:32 +0200 Subject: [PATCH 049/108] Refactor spring-protobuf --- .../src/main/java/com/baeldung/protobuf/Application.java | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/spring-protobuf/src/main/java/com/baeldung/protobuf/Application.java b/spring-protobuf/src/main/java/com/baeldung/protobuf/Application.java index 234c3e3382..76f0e45244 100644 --- a/spring-protobuf/src/main/java/com/baeldung/protobuf/Application.java +++ b/spring-protobuf/src/main/java/com/baeldung/protobuf/Application.java @@ -29,10 +29,10 @@ public class Application { } @Bean - public CourseRepository createStubCourses() { + public CourseRepository createTestCourses() { Map courses = new HashMap<>(); - Course course1 = Course.newBuilder().setId(1).setCourseName("REST with Spring").addAllStudent(createStubStudents()).build(); + Course course1 = Course.newBuilder().setId(1).setCourseName("REST with Spring").addAllStudent(createTestStudents()).build(); Course course2 = Course.newBuilder().setId(2).setCourseName("Learn Spring Security").addAllStudent(new ArrayList<>()).build(); @@ -42,7 +42,7 @@ public class Application { return new CourseRepository(courses); } - private List createStubStudents() { + private List createTestStudents() { PhoneNumber phone1 = createPhone("123456", PhoneType.MOBILE); Student student1 = createStudent(1, "John", "Doe", "john.doe@baeldung.com", Arrays.asList(phone1)); From 27d58fc2007fe0d8e9b0239b7a03d4bf1e80a5c8 Mon Sep 17 00:00:00 2001 From: bdragan Date: Sun, 19 Jun 2016 23:36:22 +0200 Subject: [PATCH 050/108] Code examples for the 'Binary Data Formats in a Spring REST API' article. --- spring-rest/pom.xml | 11 +- .../java/org/baeldung/config/WebConfig.java | 5 +- .../converter/KryoHttpMessageConverter.java | 73 +++ .../web/controller/FooController.java | 6 + .../java/org/baeldung/web/dto/FooProtos.java | 620 ++++++++++++++++++ ...MessageConvertersIntegrationTestsCase.java | 35 + 6 files changed, 748 insertions(+), 2 deletions(-) create mode 100644 spring-rest/src/main/java/org/baeldung/config/converter/KryoHttpMessageConverter.java create mode 100644 spring-rest/src/main/java/org/baeldung/web/dto/FooProtos.java diff --git a/spring-rest/pom.xml b/spring-rest/pom.xml index 767f90a6a6..b05a795c6d 100644 --- a/spring-rest/pom.xml +++ b/spring-rest/pom.xml @@ -155,7 +155,16 @@ spring-test ${spring.version} - + + com.google.protobuf + protobuf-java + 2.6.1 + + + com.esotericsoftware.kryo + kryo + 2.24.0 + diff --git a/spring-rest/src/main/java/org/baeldung/config/WebConfig.java b/spring-rest/src/main/java/org/baeldung/config/WebConfig.java index 999f890ebb..120f1b272a 100644 --- a/spring-rest/src/main/java/org/baeldung/config/WebConfig.java +++ b/spring-rest/src/main/java/org/baeldung/config/WebConfig.java @@ -3,11 +3,13 @@ package org.baeldung.config; import java.text.SimpleDateFormat; import java.util.List; +import org.baeldung.config.converter.KryoHttpMessageConverter; import org.springframework.context.annotation.ComponentScan; import org.springframework.context.annotation.Configuration; import org.springframework.http.converter.HttpMessageConverter; import org.springframework.http.converter.json.Jackson2ObjectMapperBuilder; import org.springframework.http.converter.json.MappingJackson2HttpMessageConverter; +import org.springframework.http.converter.protobuf.ProtobufHttpMessageConverter; import org.springframework.http.converter.xml.MarshallingHttpMessageConverter; import org.springframework.oxm.xstream.XStreamMarshaller; import org.springframework.web.servlet.config.annotation.EnableWebMvc; @@ -33,7 +35,8 @@ public class WebConfig extends WebMvcConfigurerAdapter { builder.indentOutput(true).dateFormat(new SimpleDateFormat("dd-MM-yyyy hh:mm")); messageConverters.add(new MappingJackson2HttpMessageConverter(builder.build())); // messageConverters.add(new MappingJackson2XmlHttpMessageConverter(builder.createXmlMapper(true).build())); - + messageConverters.add(new ProtobufHttpMessageConverter()); + messageConverters.add(new KryoHttpMessageConverter()); super.configureMessageConverters(messageConverters); } diff --git a/spring-rest/src/main/java/org/baeldung/config/converter/KryoHttpMessageConverter.java b/spring-rest/src/main/java/org/baeldung/config/converter/KryoHttpMessageConverter.java new file mode 100644 index 0000000000..371ad333c8 --- /dev/null +++ b/spring-rest/src/main/java/org/baeldung/config/converter/KryoHttpMessageConverter.java @@ -0,0 +1,73 @@ +/* + * Copyright 2002-2014 the original author or authors. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package org.baeldung.config.converter; + +import java.io.IOException; + +import org.baeldung.web.dto.Foo; +import org.springframework.http.HttpInputMessage; +import org.springframework.http.HttpOutputMessage; +import org.springframework.http.MediaType; +import org.springframework.http.converter.AbstractHttpMessageConverter; + +import com.esotericsoftware.kryo.Kryo; +import com.esotericsoftware.kryo.io.Input; +import com.esotericsoftware.kryo.io.Output; + +/** + * An {@code HttpMessageConverter} that can read and write Kryo messages. + */ +public class KryoHttpMessageConverter extends AbstractHttpMessageConverter { + + public static final MediaType KRYO = new MediaType("application", "x-kryo"); + + private static final ThreadLocal kryoThreadLocal = new ThreadLocal() { + @Override + protected Kryo initialValue() { + final Kryo kryo = new Kryo(); + kryo.register(Foo.class, 1); + return kryo; + } + }; + + public KryoHttpMessageConverter() { + super(KRYO); + } + + @Override + protected boolean supports(final Class clazz) { + return Object.class.isAssignableFrom(clazz); + } + + @Override + protected Object readInternal(final Class clazz, final HttpInputMessage inputMessage) throws IOException { + final Input input = new Input(inputMessage.getBody()); + return kryoThreadLocal.get().readClassAndObject(input); + } + + @Override + protected void writeInternal(final Object object, final HttpOutputMessage outputMessage) throws IOException { + final Output output = new Output(outputMessage.getBody()); + kryoThreadLocal.get().writeClassAndObject(output, object); + output.flush(); + } + + @Override + protected MediaType getDefaultContentType(final Object object) { + return KRYO; + } +} diff --git a/spring-rest/src/main/java/org/baeldung/web/controller/FooController.java b/spring-rest/src/main/java/org/baeldung/web/controller/FooController.java index ed6b150403..386c64bb09 100644 --- a/spring-rest/src/main/java/org/baeldung/web/controller/FooController.java +++ b/spring-rest/src/main/java/org/baeldung/web/controller/FooController.java @@ -4,6 +4,7 @@ import static org.apache.commons.lang3.RandomStringUtils.randomAlphabetic; import static org.apache.commons.lang3.RandomStringUtils.randomNumeric; import org.baeldung.web.dto.Foo; +import org.baeldung.web.dto.FooProtos; import org.springframework.http.HttpStatus; import org.springframework.stereotype.Controller; import org.springframework.web.bind.annotation.PathVariable; @@ -38,4 +39,9 @@ public class FooController { return foo; } + @RequestMapping(method = RequestMethod.GET, value = "/foos/{id}", produces = { "application/x-protobuf" }) + @ResponseBody + public FooProtos.Foo findProtoById(@PathVariable final long id) { + return FooProtos.Foo.newBuilder().setId(1).setName("Foo Name").build(); + } } diff --git a/spring-rest/src/main/java/org/baeldung/web/dto/FooProtos.java b/spring-rest/src/main/java/org/baeldung/web/dto/FooProtos.java new file mode 100644 index 0000000000..61251ea33a --- /dev/null +++ b/spring-rest/src/main/java/org/baeldung/web/dto/FooProtos.java @@ -0,0 +1,620 @@ +// Generated by the protocol buffer compiler. DO NOT EDIT! +// source: FooProtos.proto + +package org.baeldung.web.dto; + +public final class FooProtos { + private FooProtos() {} + public static void registerAllExtensions( + com.google.protobuf.ExtensionRegistry registry) { + } + public interface FooOrBuilder extends + // @@protoc_insertion_point(interface_extends:baeldung.Foo) + com.google.protobuf.MessageOrBuilder { + + /** + * required int64 id = 1; + */ + boolean hasId(); + /** + * required int64 id = 1; + */ + long getId(); + + /** + * required string name = 2; + */ + boolean hasName(); + /** + * required string name = 2; + */ + java.lang.String getName(); + /** + * required string name = 2; + */ + com.google.protobuf.ByteString + getNameBytes(); + } + /** + * Protobuf type {@code baeldung.Foo} + */ + public static final class Foo extends + com.google.protobuf.GeneratedMessage implements + // @@protoc_insertion_point(message_implements:baeldung.Foo) + FooOrBuilder { + // Use Foo.newBuilder() to construct. + private Foo(com.google.protobuf.GeneratedMessage.Builder builder) { + super(builder); + this.unknownFields = builder.getUnknownFields(); + } + private Foo(boolean noInit) { this.unknownFields = com.google.protobuf.UnknownFieldSet.getDefaultInstance(); } + + private static final Foo defaultInstance; + public static Foo getDefaultInstance() { + return defaultInstance; + } + + public Foo getDefaultInstanceForType() { + return defaultInstance; + } + + private final com.google.protobuf.UnknownFieldSet unknownFields; + @java.lang.Override + public final com.google.protobuf.UnknownFieldSet + getUnknownFields() { + return this.unknownFields; + } + private Foo( + com.google.protobuf.CodedInputStream input, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws com.google.protobuf.InvalidProtocolBufferException { + initFields(); + int mutable_bitField0_ = 0; + com.google.protobuf.UnknownFieldSet.Builder unknownFields = + com.google.protobuf.UnknownFieldSet.newBuilder(); + try { + boolean done = false; + while (!done) { + int tag = input.readTag(); + switch (tag) { + case 0: + done = true; + break; + default: { + if (!parseUnknownField(input, unknownFields, + extensionRegistry, tag)) { + done = true; + } + break; + } + case 8: { + bitField0_ |= 0x00000001; + id_ = input.readInt64(); + break; + } + case 18: { + com.google.protobuf.ByteString bs = input.readBytes(); + bitField0_ |= 0x00000002; + name_ = bs; + break; + } + } + } + } catch (com.google.protobuf.InvalidProtocolBufferException e) { + throw e.setUnfinishedMessage(this); + } catch (java.io.IOException e) { + throw new com.google.protobuf.InvalidProtocolBufferException( + e.getMessage()).setUnfinishedMessage(this); + } finally { + this.unknownFields = unknownFields.build(); + makeExtensionsImmutable(); + } + } + public static final com.google.protobuf.Descriptors.Descriptor + getDescriptor() { + return org.baeldung.web.dto.FooProtos.internal_static_baeldung_Foo_descriptor; + } + + protected com.google.protobuf.GeneratedMessage.FieldAccessorTable + internalGetFieldAccessorTable() { + return org.baeldung.web.dto.FooProtos.internal_static_baeldung_Foo_fieldAccessorTable + .ensureFieldAccessorsInitialized( + org.baeldung.web.dto.FooProtos.Foo.class, org.baeldung.web.dto.FooProtos.Foo.Builder.class); + } + + public static com.google.protobuf.Parser PARSER = + new com.google.protobuf.AbstractParser() { + public Foo parsePartialFrom( + com.google.protobuf.CodedInputStream input, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws com.google.protobuf.InvalidProtocolBufferException { + return new Foo(input, extensionRegistry); + } + }; + + @java.lang.Override + public com.google.protobuf.Parser getParserForType() { + return PARSER; + } + + private int bitField0_; + public static final int ID_FIELD_NUMBER = 1; + private long id_; + /** + * required int64 id = 1; + */ + public boolean hasId() { + return ((bitField0_ & 0x00000001) == 0x00000001); + } + /** + * required int64 id = 1; + */ + public long getId() { + return id_; + } + + public static final int NAME_FIELD_NUMBER = 2; + private java.lang.Object name_; + /** + * required string name = 2; + */ + public boolean hasName() { + return ((bitField0_ & 0x00000002) == 0x00000002); + } + /** + * required string name = 2; + */ + public java.lang.String getName() { + java.lang.Object ref = name_; + if (ref instanceof java.lang.String) { + return (java.lang.String) ref; + } else { + com.google.protobuf.ByteString bs = + (com.google.protobuf.ByteString) ref; + java.lang.String s = bs.toStringUtf8(); + if (bs.isValidUtf8()) { + name_ = s; + } + return s; + } + } + /** + * required string name = 2; + */ + public com.google.protobuf.ByteString + getNameBytes() { + java.lang.Object ref = name_; + if (ref instanceof java.lang.String) { + com.google.protobuf.ByteString b = + com.google.protobuf.ByteString.copyFromUtf8( + (java.lang.String) ref); + name_ = b; + return b; + } else { + return (com.google.protobuf.ByteString) ref; + } + } + + private void initFields() { + id_ = 0L; + name_ = ""; + } + private byte memoizedIsInitialized = -1; + public final boolean isInitialized() { + byte isInitialized = memoizedIsInitialized; + if (isInitialized == 1) return true; + if (isInitialized == 0) return false; + + if (!hasId()) { + memoizedIsInitialized = 0; + return false; + } + if (!hasName()) { + memoizedIsInitialized = 0; + return false; + } + memoizedIsInitialized = 1; + return true; + } + + public void writeTo(com.google.protobuf.CodedOutputStream output) + throws java.io.IOException { + getSerializedSize(); + if (((bitField0_ & 0x00000001) == 0x00000001)) { + output.writeInt64(1, id_); + } + if (((bitField0_ & 0x00000002) == 0x00000002)) { + output.writeBytes(2, getNameBytes()); + } + getUnknownFields().writeTo(output); + } + + private int memoizedSerializedSize = -1; + public int getSerializedSize() { + int size = memoizedSerializedSize; + if (size != -1) return size; + + size = 0; + if (((bitField0_ & 0x00000001) == 0x00000001)) { + size += com.google.protobuf.CodedOutputStream + .computeInt64Size(1, id_); + } + if (((bitField0_ & 0x00000002) == 0x00000002)) { + size += com.google.protobuf.CodedOutputStream + .computeBytesSize(2, getNameBytes()); + } + size += getUnknownFields().getSerializedSize(); + memoizedSerializedSize = size; + return size; + } + + private static final long serialVersionUID = 0L; + @java.lang.Override + protected java.lang.Object writeReplace() + throws java.io.ObjectStreamException { + return super.writeReplace(); + } + + public static org.baeldung.web.dto.FooProtos.Foo parseFrom( + com.google.protobuf.ByteString data) + throws com.google.protobuf.InvalidProtocolBufferException { + return PARSER.parseFrom(data); + } + public static org.baeldung.web.dto.FooProtos.Foo parseFrom( + com.google.protobuf.ByteString data, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws com.google.protobuf.InvalidProtocolBufferException { + return PARSER.parseFrom(data, extensionRegistry); + } + public static org.baeldung.web.dto.FooProtos.Foo parseFrom(byte[] data) + throws com.google.protobuf.InvalidProtocolBufferException { + return PARSER.parseFrom(data); + } + public static org.baeldung.web.dto.FooProtos.Foo parseFrom( + byte[] data, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws com.google.protobuf.InvalidProtocolBufferException { + return PARSER.parseFrom(data, extensionRegistry); + } + public static org.baeldung.web.dto.FooProtos.Foo parseFrom(java.io.InputStream input) + throws java.io.IOException { + return PARSER.parseFrom(input); + } + public static org.baeldung.web.dto.FooProtos.Foo parseFrom( + java.io.InputStream input, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws java.io.IOException { + return PARSER.parseFrom(input, extensionRegistry); + } + public static org.baeldung.web.dto.FooProtos.Foo parseDelimitedFrom(java.io.InputStream input) + throws java.io.IOException { + return PARSER.parseDelimitedFrom(input); + } + public static org.baeldung.web.dto.FooProtos.Foo parseDelimitedFrom( + java.io.InputStream input, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws java.io.IOException { + return PARSER.parseDelimitedFrom(input, extensionRegistry); + } + public static org.baeldung.web.dto.FooProtos.Foo parseFrom( + com.google.protobuf.CodedInputStream input) + throws java.io.IOException { + return PARSER.parseFrom(input); + } + public static org.baeldung.web.dto.FooProtos.Foo parseFrom( + com.google.protobuf.CodedInputStream input, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws java.io.IOException { + return PARSER.parseFrom(input, extensionRegistry); + } + + public static Builder newBuilder() { return Builder.create(); } + public Builder newBuilderForType() { return newBuilder(); } + public static Builder newBuilder(org.baeldung.web.dto.FooProtos.Foo prototype) { + return newBuilder().mergeFrom(prototype); + } + public Builder toBuilder() { return newBuilder(this); } + + @java.lang.Override + protected Builder newBuilderForType( + com.google.protobuf.GeneratedMessage.BuilderParent parent) { + Builder builder = new Builder(parent); + return builder; + } + /** + * Protobuf type {@code baeldung.Foo} + */ + public static final class Builder extends + com.google.protobuf.GeneratedMessage.Builder implements + // @@protoc_insertion_point(builder_implements:baeldung.Foo) + org.baeldung.web.dto.FooProtos.FooOrBuilder { + public static final com.google.protobuf.Descriptors.Descriptor + getDescriptor() { + return org.baeldung.web.dto.FooProtos.internal_static_baeldung_Foo_descriptor; + } + + protected com.google.protobuf.GeneratedMessage.FieldAccessorTable + internalGetFieldAccessorTable() { + return org.baeldung.web.dto.FooProtos.internal_static_baeldung_Foo_fieldAccessorTable + .ensureFieldAccessorsInitialized( + org.baeldung.web.dto.FooProtos.Foo.class, org.baeldung.web.dto.FooProtos.Foo.Builder.class); + } + + // Construct using org.baeldung.web.dto.FooProtos.Foo.newBuilder() + private Builder() { + maybeForceBuilderInitialization(); + } + + private Builder( + com.google.protobuf.GeneratedMessage.BuilderParent parent) { + super(parent); + maybeForceBuilderInitialization(); + } + private void maybeForceBuilderInitialization() { + if (com.google.protobuf.GeneratedMessage.alwaysUseFieldBuilders) { + } + } + private static Builder create() { + return new Builder(); + } + + public Builder clear() { + super.clear(); + id_ = 0L; + bitField0_ = (bitField0_ & ~0x00000001); + name_ = ""; + bitField0_ = (bitField0_ & ~0x00000002); + return this; + } + + public Builder clone() { + return create().mergeFrom(buildPartial()); + } + + public com.google.protobuf.Descriptors.Descriptor + getDescriptorForType() { + return org.baeldung.web.dto.FooProtos.internal_static_baeldung_Foo_descriptor; + } + + public org.baeldung.web.dto.FooProtos.Foo getDefaultInstanceForType() { + return org.baeldung.web.dto.FooProtos.Foo.getDefaultInstance(); + } + + public org.baeldung.web.dto.FooProtos.Foo build() { + org.baeldung.web.dto.FooProtos.Foo result = buildPartial(); + if (!result.isInitialized()) { + throw newUninitializedMessageException(result); + } + return result; + } + + public org.baeldung.web.dto.FooProtos.Foo buildPartial() { + org.baeldung.web.dto.FooProtos.Foo result = new org.baeldung.web.dto.FooProtos.Foo(this); + int from_bitField0_ = bitField0_; + int to_bitField0_ = 0; + if (((from_bitField0_ & 0x00000001) == 0x00000001)) { + to_bitField0_ |= 0x00000001; + } + result.id_ = id_; + if (((from_bitField0_ & 0x00000002) == 0x00000002)) { + to_bitField0_ |= 0x00000002; + } + result.name_ = name_; + result.bitField0_ = to_bitField0_; + onBuilt(); + return result; + } + + public Builder mergeFrom(com.google.protobuf.Message other) { + if (other instanceof org.baeldung.web.dto.FooProtos.Foo) { + return mergeFrom((org.baeldung.web.dto.FooProtos.Foo)other); + } else { + super.mergeFrom(other); + return this; + } + } + + public Builder mergeFrom(org.baeldung.web.dto.FooProtos.Foo other) { + if (other == org.baeldung.web.dto.FooProtos.Foo.getDefaultInstance()) return this; + if (other.hasId()) { + setId(other.getId()); + } + if (other.hasName()) { + bitField0_ |= 0x00000002; + name_ = other.name_; + onChanged(); + } + this.mergeUnknownFields(other.getUnknownFields()); + return this; + } + + public final boolean isInitialized() { + if (!hasId()) { + + return false; + } + if (!hasName()) { + + return false; + } + return true; + } + + public Builder mergeFrom( + com.google.protobuf.CodedInputStream input, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws java.io.IOException { + org.baeldung.web.dto.FooProtos.Foo parsedMessage = null; + try { + parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry); + } catch (com.google.protobuf.InvalidProtocolBufferException e) { + parsedMessage = (org.baeldung.web.dto.FooProtos.Foo) e.getUnfinishedMessage(); + throw e; + } finally { + if (parsedMessage != null) { + mergeFrom(parsedMessage); + } + } + return this; + } + private int bitField0_; + + private long id_ ; + /** + * required int64 id = 1; + */ + public boolean hasId() { + return ((bitField0_ & 0x00000001) == 0x00000001); + } + /** + * required int64 id = 1; + */ + public long getId() { + return id_; + } + /** + * required int64 id = 1; + */ + public Builder setId(long value) { + bitField0_ |= 0x00000001; + id_ = value; + onChanged(); + return this; + } + /** + * required int64 id = 1; + */ + public Builder clearId() { + bitField0_ = (bitField0_ & ~0x00000001); + id_ = 0L; + onChanged(); + return this; + } + + private java.lang.Object name_ = ""; + /** + * required string name = 2; + */ + public boolean hasName() { + return ((bitField0_ & 0x00000002) == 0x00000002); + } + /** + * required string name = 2; + */ + public java.lang.String getName() { + java.lang.Object ref = name_; + if (!(ref instanceof java.lang.String)) { + com.google.protobuf.ByteString bs = + (com.google.protobuf.ByteString) ref; + java.lang.String s = bs.toStringUtf8(); + if (bs.isValidUtf8()) { + name_ = s; + } + return s; + } else { + return (java.lang.String) ref; + } + } + /** + * required string name = 2; + */ + public com.google.protobuf.ByteString + getNameBytes() { + java.lang.Object ref = name_; + if (ref instanceof String) { + com.google.protobuf.ByteString b = + com.google.protobuf.ByteString.copyFromUtf8( + (java.lang.String) ref); + name_ = b; + return b; + } else { + return (com.google.protobuf.ByteString) ref; + } + } + /** + * required string name = 2; + */ + public Builder setName( + java.lang.String value) { + if (value == null) { + throw new NullPointerException(); + } + bitField0_ |= 0x00000002; + name_ = value; + onChanged(); + return this; + } + /** + * required string name = 2; + */ + public Builder clearName() { + bitField0_ = (bitField0_ & ~0x00000002); + name_ = getDefaultInstance().getName(); + onChanged(); + return this; + } + /** + * required string name = 2; + */ + public Builder setNameBytes( + com.google.protobuf.ByteString value) { + if (value == null) { + throw new NullPointerException(); + } + bitField0_ |= 0x00000002; + name_ = value; + onChanged(); + return this; + } + + // @@protoc_insertion_point(builder_scope:baeldung.Foo) + } + + static { + defaultInstance = new Foo(true); + defaultInstance.initFields(); + } + + // @@protoc_insertion_point(class_scope:baeldung.Foo) + } + + private static final com.google.protobuf.Descriptors.Descriptor + internal_static_baeldung_Foo_descriptor; + private static + com.google.protobuf.GeneratedMessage.FieldAccessorTable + internal_static_baeldung_Foo_fieldAccessorTable; + + public static com.google.protobuf.Descriptors.FileDescriptor + getDescriptor() { + return descriptor; + } + private static com.google.protobuf.Descriptors.FileDescriptor + descriptor; + static { + java.lang.String[] descriptorData = { + "\n\017FooProtos.proto\022\010baeldung\"\037\n\003Foo\022\n\n\002id" + + "\030\001 \002(\003\022\014\n\004name\030\002 \002(\tB!\n\024org.baeldung.web" + + ".dtoB\tFooProtos" + }; + com.google.protobuf.Descriptors.FileDescriptor.InternalDescriptorAssigner assigner = + new com.google.protobuf.Descriptors.FileDescriptor. InternalDescriptorAssigner() { + public com.google.protobuf.ExtensionRegistry assignDescriptors( + com.google.protobuf.Descriptors.FileDescriptor root) { + descriptor = root; + return null; + } + }; + com.google.protobuf.Descriptors.FileDescriptor + .internalBuildGeneratedFileFrom(descriptorData, + new com.google.protobuf.Descriptors.FileDescriptor[] { + }, assigner); + internal_static_baeldung_Foo_descriptor = + getDescriptor().getMessageTypes().get(0); + internal_static_baeldung_Foo_fieldAccessorTable = new + com.google.protobuf.GeneratedMessage.FieldAccessorTable( + internal_static_baeldung_Foo_descriptor, + new java.lang.String[] { "Id", "Name", }); + } + + // @@protoc_insertion_point(outer_class_scope) +} diff --git a/spring-rest/src/test/java/org/baeldung/web/test/SpringHttpMessageConvertersIntegrationTestsCase.java b/spring-rest/src/test/java/org/baeldung/web/test/SpringHttpMessageConvertersIntegrationTestsCase.java index c21641ca22..1536f14bc8 100644 --- a/spring-rest/src/test/java/org/baeldung/web/test/SpringHttpMessageConvertersIntegrationTestsCase.java +++ b/spring-rest/src/test/java/org/baeldung/web/test/SpringHttpMessageConvertersIntegrationTestsCase.java @@ -7,7 +7,9 @@ import java.util.ArrayList; import java.util.Arrays; import java.util.List; +import org.baeldung.config.converter.KryoHttpMessageConverter; import org.baeldung.web.dto.Foo; +import org.baeldung.web.dto.FooProtos; import org.junit.Assert; import org.junit.Test; import org.springframework.http.HttpEntity; @@ -17,6 +19,7 @@ import org.springframework.http.MediaType; import org.springframework.http.ResponseEntity; import org.springframework.http.converter.HttpMessageConverter; import org.springframework.http.converter.json.MappingJackson2HttpMessageConverter; +import org.springframework.http.converter.protobuf.ProtobufHttpMessageConverter; import org.springframework.http.converter.xml.MarshallingHttpMessageConverter; import org.springframework.oxm.xstream.XStreamMarshaller; import org.springframework.web.client.RestTemplate; @@ -94,6 +97,38 @@ public class SpringHttpMessageConvertersIntegrationTestsCase { Assert.assertEquals(resource.getId(), fooResponse.getId()); } + @Test + public void givenConsumingProtobuf_whenReadingTheFoo_thenCorrect() { + final String URI = BASE_URI + "foos/{id}"; + + final RestTemplate restTemplate = new RestTemplate(); + restTemplate.setMessageConverters(Arrays.asList(new ProtobufHttpMessageConverter())); + final HttpHeaders headers = new HttpHeaders(); + headers.setAccept(Arrays.asList(ProtobufHttpMessageConverter.PROTOBUF)); + final HttpEntity entity = new HttpEntity(headers); + + final ResponseEntity response = restTemplate.exchange(URI, HttpMethod.GET, entity, FooProtos.Foo.class, "1"); + final FooProtos.Foo resource = response.getBody(); + + assertThat(resource, notNullValue()); + } + + @Test + public void givenConsumingKryo_whenReadingTheFoo_thenCorrect() { + final String URI = BASE_URI + "foos/{id}"; + + final RestTemplate restTemplate = new RestTemplate(); + restTemplate.setMessageConverters(Arrays.asList(new KryoHttpMessageConverter())); + final HttpHeaders headers = new HttpHeaders(); + headers.setAccept(Arrays.asList(KryoHttpMessageConverter.KRYO)); + final HttpEntity entity = new HttpEntity(headers); + + final ResponseEntity response = restTemplate.exchange(URI, HttpMethod.GET, entity, Foo.class, "1"); + final Foo resource = response.getBody(); + + assertThat(resource, notNullValue()); + } + // UTIL private List> getMessageConverters() { From 57411aa1c297b90aa20b51d36411a7310529d93a Mon Sep 17 00:00:00 2001 From: bdragan Date: Sun, 19 Jun 2016 23:43:13 +0200 Subject: [PATCH 051/108] Removed copy-pasted comments. --- .../converter/KryoHttpMessageConverter.java | 16 ---------------- 1 file changed, 16 deletions(-) diff --git a/spring-rest/src/main/java/org/baeldung/config/converter/KryoHttpMessageConverter.java b/spring-rest/src/main/java/org/baeldung/config/converter/KryoHttpMessageConverter.java index 371ad333c8..7e63a3ba9e 100644 --- a/spring-rest/src/main/java/org/baeldung/config/converter/KryoHttpMessageConverter.java +++ b/spring-rest/src/main/java/org/baeldung/config/converter/KryoHttpMessageConverter.java @@ -1,19 +1,3 @@ -/* - * Copyright 2002-2014 the original author or authors. - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - package org.baeldung.config.converter; import java.io.IOException; From 83df968617730c42f6871324916e21304cd74433 Mon Sep 17 00:00:00 2001 From: Grzegorz Piwowarek Date: Mon, 20 Jun 2016 07:49:39 +0200 Subject: [PATCH 052/108] Initial commit --- assertj-introduction/pom.xml | 38 +++++++++++++++++++ .../com/baeldung/assertj/AssertJDemoTest.java | 10 +++++ pom.xml | 2 + 3 files changed, 50 insertions(+) create mode 100644 assertj-introduction/pom.xml create mode 100644 assertj-introduction/src/test/java/com/baeldung/assertj/AssertJDemoTest.java diff --git a/assertj-introduction/pom.xml b/assertj-introduction/pom.xml new file mode 100644 index 0000000000..21cd0c0121 --- /dev/null +++ b/assertj-introduction/pom.xml @@ -0,0 +1,38 @@ + + + 4.0.0 + + com.baeldung + assertj-introduction + 1.0.0-SNAPSHOT + + + + junit + junit + 4.12 + + + org.assertj + assertj-core + 3.4.1 + test + + + + + + + org.apache.maven.plugins + maven-compiler-plugin + 3.3 + + 1.8 + 1.8 + + + + + \ No newline at end of file diff --git a/assertj-introduction/src/test/java/com/baeldung/assertj/AssertJDemoTest.java b/assertj-introduction/src/test/java/com/baeldung/assertj/AssertJDemoTest.java new file mode 100644 index 0000000000..3f4cb390bb --- /dev/null +++ b/assertj-introduction/src/test/java/com/baeldung/assertj/AssertJDemoTest.java @@ -0,0 +1,10 @@ +package com.baeldung.assertj; + +import org.junit.Test; + +public class AssertJDemoTest { + + @Test + public void shouldTest() throws Exception { + } +} diff --git a/pom.xml b/pom.xml index 19c602091d..505b72e1ab 100644 --- a/pom.xml +++ b/pom.xml @@ -9,6 +9,8 @@ apache-fop + assertj-introduction + core-java core-java-8 gson From a871f2558fa32e7c40c08b9eeb90f2b3acdb6ecc Mon Sep 17 00:00:00 2001 From: Grzegorz Piwowarek Date: Tue, 21 Jun 2016 19:53:15 +0200 Subject: [PATCH 053/108] Add first set of assertions --- .../java/com/baeldung/assertj/domain/Dog.java | 19 +++++++ .../com/baeldung/assertj/AssertJDemoTest.java | 57 ++++++++++++++++++- 2 files changed, 75 insertions(+), 1 deletion(-) create mode 100644 assertj-introduction/src/main/java/com/baeldung/assertj/domain/Dog.java diff --git a/assertj-introduction/src/main/java/com/baeldung/assertj/domain/Dog.java b/assertj-introduction/src/main/java/com/baeldung/assertj/domain/Dog.java new file mode 100644 index 0000000000..adfcf05225 --- /dev/null +++ b/assertj-introduction/src/main/java/com/baeldung/assertj/domain/Dog.java @@ -0,0 +1,19 @@ +package com.baeldung.assertj.domain; + +public class Dog { + private String name; + private Float weight; + + public Dog(String name, Float weight) { + this.name = name; + this.weight = weight; + } + + public String getName() { + return name; + } + + public Float getWeight() { + return weight; + } +} diff --git a/assertj-introduction/src/test/java/com/baeldung/assertj/AssertJDemoTest.java b/assertj-introduction/src/test/java/com/baeldung/assertj/AssertJDemoTest.java index 3f4cb390bb..249cb865d9 100644 --- a/assertj-introduction/src/test/java/com/baeldung/assertj/AssertJDemoTest.java +++ b/assertj-introduction/src/test/java/com/baeldung/assertj/AssertJDemoTest.java @@ -1,10 +1,65 @@ package com.baeldung.assertj; +import com.baeldung.assertj.domain.Dog; import org.junit.Test; +import java.util.Arrays; +import java.util.List; +import java.util.NoSuchElementException; + +import static org.assertj.core.api.Assertions.assertThat; +import static org.assertj.core.api.Assertions.withPrecision; + public class AssertJDemoTest { @Test - public void shouldTest() throws Exception { + public void whenComparingReferences_thenNotEqual() throws Exception { + Dog fido = new Dog("Fido", 5.15f); + Dog fidosClone = new Dog("Fido", 5.15f); + + assertThat(fido).isNotEqualTo(fidosClone); + } + + @Test + public void whenComparingFields_thenEqual() throws Exception { + Dog fido = new Dog("Fido", 5.15f); + Dog fidosClone = new Dog("Fido", 5.15f); + + assertThat(fido).isEqualToComparingFieldByFieldRecursively(fidosClone); + } + + @Test + public void whenCheckingForElement_thenContains() throws Exception { + List list = Arrays.asList("1", "2", "3"); + + assertThat(list) + .contains("1"); + } + + @Test + public void whenCheckingForElement_thenMultipleAssertions() throws Exception { + List list = Arrays.asList("1", "2", "3"); + + assertThat(list) + .isNotEmpty() + .contains("1") + .startsWith("1") + .doesNotContainNull() + .containsSequence("2", "3"); + } + + @Test + public void whenCheckingRunnable_thenIsInterface() throws Exception { + assertThat(Runnable.class).isInterface(); + } + + @Test + public void whenAssigningNSEExToException_thenIsAssignable() throws Exception { + assertThat(Exception.class).isAssignableFrom(NoSuchElementException.class); + } + + @Test + public void whenComparingWithOffset_thenEquals() throws Exception { + assertThat(5.1).isEqualTo(5, withPrecision(1d)); } } From 4aa5f7f30c98c49fecf7608a7f667a0622400ea9 Mon Sep 17 00:00:00 2001 From: Grzegorz Piwowarek Date: Tue, 21 Jun 2016 20:14:22 +0200 Subject: [PATCH 054/108] Add second set of assertions --- .../com/baeldung/assertj/domain/Person.java | 19 +++++++++++++++++++ .../com/baeldung/assertj/AssertJDemoTest.java | 12 ++++++++++++ 2 files changed, 31 insertions(+) create mode 100644 assertj-introduction/src/main/java/com/baeldung/assertj/domain/Person.java diff --git a/assertj-introduction/src/main/java/com/baeldung/assertj/domain/Person.java b/assertj-introduction/src/main/java/com/baeldung/assertj/domain/Person.java new file mode 100644 index 0000000000..4f6bb7f55b --- /dev/null +++ b/assertj-introduction/src/main/java/com/baeldung/assertj/domain/Person.java @@ -0,0 +1,19 @@ +package com.baeldung.assertj.domain; + +public class Person { + private String name; + private Integer age; + + public Person(String name, Integer age) { + this.name = name; + this.age = age; + } + + public String getName() { + return name; + } + + public Integer getAge() { + return age; + } +} diff --git a/assertj-introduction/src/test/java/com/baeldung/assertj/AssertJDemoTest.java b/assertj-introduction/src/test/java/com/baeldung/assertj/AssertJDemoTest.java index 249cb865d9..71ce2c53b5 100644 --- a/assertj-introduction/src/test/java/com/baeldung/assertj/AssertJDemoTest.java +++ b/assertj-introduction/src/test/java/com/baeldung/assertj/AssertJDemoTest.java @@ -1,6 +1,8 @@ package com.baeldung.assertj; import com.baeldung.assertj.domain.Dog; +import com.baeldung.assertj.domain.Person; +import org.junit.Ignore; import org.junit.Test; import java.util.Arrays; @@ -62,4 +64,14 @@ public class AssertJDemoTest { public void whenComparingWithOffset_thenEquals() throws Exception { assertThat(5.1).isEqualTo(5, withPrecision(1d)); } + + @Ignore // IN ORDER TO TEST, REMOVE THIS LINE + @Test + public void whenRunningAssertion_thenDescribed() throws Exception { + Person person = new Person("Alex", 34); + + assertThat(person.getAge()) + .as("%s's age should be equal to 100") + .isEqualTo(100); + } } From 28029711e43df1d6317aacb571487c540cb29288 Mon Sep 17 00:00:00 2001 From: eugenp Date: Wed, 22 Jun 2016 17:49:39 +0300 Subject: [PATCH 055/108] minor cleanup --- spring-rest/.project | 6 ------ spring-rest/.settings/.jsdtscope | 7 ------- .../org.eclipse.wst.common.project.facet.core.xml | 5 +---- spring-rest/pom.xml | 15 ++------------- 4 files changed, 3 insertions(+), 30 deletions(-) diff --git a/spring-rest/.project b/spring-rest/.project index 894841d690..525c5e7795 100644 --- a/spring-rest/.project +++ b/spring-rest/.project @@ -15,11 +15,6 @@ - - org.eclipse.wst.validation.validationbuilder - - - org.springframework.ide.eclipse.core.springbuilder @@ -38,6 +33,5 @@ org.eclipse.jdt.core.javanature org.eclipse.m2e.core.maven2Nature org.eclipse.wst.common.project.facet.core.nature - org.eclipse.wst.jsdt.core.jsNature diff --git a/spring-rest/.settings/.jsdtscope b/spring-rest/.settings/.jsdtscope index b46b9207a8..7b3f0c8b9f 100644 --- a/spring-rest/.settings/.jsdtscope +++ b/spring-rest/.settings/.jsdtscope @@ -1,12 +1,5 @@ - - - - - - - diff --git a/spring-rest/.settings/org.eclipse.wst.common.project.facet.core.xml b/spring-rest/.settings/org.eclipse.wst.common.project.facet.core.xml index b9386231e6..8a1c189419 100644 --- a/spring-rest/.settings/org.eclipse.wst.common.project.facet.core.xml +++ b/spring-rest/.settings/org.eclipse.wst.common.project.facet.core.xml @@ -1,8 +1,5 @@ - - - - + diff --git a/spring-rest/pom.xml b/spring-rest/pom.xml index 767f90a6a6..7941279936 100644 --- a/spring-rest/pom.xml +++ b/spring-rest/pom.xml @@ -9,7 +9,7 @@ org.springframework.boot spring-boot-starter-parent - 1.2.4.RELEASE + 1.3.5.RELEASE @@ -59,7 +59,6 @@ javax.servlet javax.servlet-api - 3.0.1 provided @@ -101,24 +100,20 @@ org.slf4j slf4j-api - ${org.slf4j.version} ch.qos.logback logback-classic - ${logback.version} org.slf4j jcl-over-slf4j - ${org.slf4j.version} org.slf4j log4j-over-slf4j - ${org.slf4j.version} @@ -126,34 +121,29 @@ junit junit - ${junit.version} test org.hamcrest hamcrest-core - ${org.hamcrest.version} test org.hamcrest hamcrest-library - ${org.hamcrest.version} test org.mockito mockito-core - ${mockito.version} test org.springframework spring-test - ${spring.version} @@ -226,11 +216,10 @@ - 4.0.4.RELEASE 4.3.11.Final - 5.1.38 + 5.1.39 From d429cb401e5bbaf2d22e338ce06a7e8df9c30665 Mon Sep 17 00:00:00 2001 From: Alex Theedom Date: Wed, 22 Jun 2016 22:42:49 +0100 Subject: [PATCH 056/108] Code and tests for AssertJ --- {assertj-introduction => assertj}/pom.xml | 0 .../java/com/baeldung/assertj/introduction}/domain/Dog.java | 2 +- .../com/baeldung/assertj/introduction}/domain/Person.java | 2 +- .../com/baeldung/assertj/introduction}/AssertJDemoTest.java | 6 +++--- 4 files changed, 5 insertions(+), 5 deletions(-) rename {assertj-introduction => assertj}/pom.xml (100%) rename {assertj-introduction/src/main/java/com/baeldung/assertj => assertj/src/main/java/com/baeldung/assertj/introduction}/domain/Dog.java (85%) rename {assertj-introduction/src/main/java/com/baeldung/assertj => assertj/src/main/java/com/baeldung/assertj/introduction}/domain/Person.java (85%) rename {assertj-introduction/src/test/java/com/baeldung/assertj => assertj/src/test/java/com/baeldung/assertj/introduction}/AssertJDemoTest.java (93%) diff --git a/assertj-introduction/pom.xml b/assertj/pom.xml similarity index 100% rename from assertj-introduction/pom.xml rename to assertj/pom.xml diff --git a/assertj-introduction/src/main/java/com/baeldung/assertj/domain/Dog.java b/assertj/src/main/java/com/baeldung/assertj/introduction/domain/Dog.java similarity index 85% rename from assertj-introduction/src/main/java/com/baeldung/assertj/domain/Dog.java rename to assertj/src/main/java/com/baeldung/assertj/introduction/domain/Dog.java index adfcf05225..623f71214c 100644 --- a/assertj-introduction/src/main/java/com/baeldung/assertj/domain/Dog.java +++ b/assertj/src/main/java/com/baeldung/assertj/introduction/domain/Dog.java @@ -1,4 +1,4 @@ -package com.baeldung.assertj.domain; +package com.baeldung.assertj.introduction.domain; public class Dog { private String name; diff --git a/assertj-introduction/src/main/java/com/baeldung/assertj/domain/Person.java b/assertj/src/main/java/com/baeldung/assertj/introduction/domain/Person.java similarity index 85% rename from assertj-introduction/src/main/java/com/baeldung/assertj/domain/Person.java rename to assertj/src/main/java/com/baeldung/assertj/introduction/domain/Person.java index 4f6bb7f55b..90ef787ebe 100644 --- a/assertj-introduction/src/main/java/com/baeldung/assertj/domain/Person.java +++ b/assertj/src/main/java/com/baeldung/assertj/introduction/domain/Person.java @@ -1,4 +1,4 @@ -package com.baeldung.assertj.domain; +package com.baeldung.assertj.introduction.domain; public class Person { private String name; diff --git a/assertj-introduction/src/test/java/com/baeldung/assertj/AssertJDemoTest.java b/assertj/src/test/java/com/baeldung/assertj/introduction/AssertJDemoTest.java similarity index 93% rename from assertj-introduction/src/test/java/com/baeldung/assertj/AssertJDemoTest.java rename to assertj/src/test/java/com/baeldung/assertj/introduction/AssertJDemoTest.java index 71ce2c53b5..729c252c3c 100644 --- a/assertj-introduction/src/test/java/com/baeldung/assertj/AssertJDemoTest.java +++ b/assertj/src/test/java/com/baeldung/assertj/introduction/AssertJDemoTest.java @@ -1,7 +1,7 @@ -package com.baeldung.assertj; +package com.baeldung.assertj.introduction; -import com.baeldung.assertj.domain.Dog; -import com.baeldung.assertj.domain.Person; +import com.baeldung.assertj.introduction.domain.Dog; +import com.baeldung.assertj.introduction.domain.Person; import org.junit.Ignore; import org.junit.Test; From 3c17c9ef4a923e4e30ad9193acb99f8c0fe6a8a3 Mon Sep 17 00:00:00 2001 From: eugenp Date: Thu, 23 Jun 2016 01:04:21 +0300 Subject: [PATCH 057/108] minor cleanup --- core-java/.classpath | 2 +- core-java/.settings/org.eclipse.jdt.core.prefs | 11 ++++++++--- .../org.eclipse.wst.common.project.facet.core.xml | 2 +- .../collections/JavaCollectionConversionUnitTest.java | 2 +- 4 files changed, 11 insertions(+), 6 deletions(-) diff --git a/core-java/.classpath b/core-java/.classpath index f9b079e8c9..ca829f1262 100644 --- a/core-java/.classpath +++ b/core-java/.classpath @@ -27,7 +27,7 @@ - + diff --git a/core-java/.settings/org.eclipse.jdt.core.prefs b/core-java/.settings/org.eclipse.jdt.core.prefs index 046168cf24..1882edb712 100644 --- a/core-java/.settings/org.eclipse.jdt.core.prefs +++ b/core-java/.settings/org.eclipse.jdt.core.prefs @@ -6,8 +6,13 @@ org.eclipse.jdt.core.compiler.annotation.nonnullbydefault=org.eclipse.jdt.annota org.eclipse.jdt.core.compiler.annotation.nullable=org.eclipse.jdt.annotation.Nullable org.eclipse.jdt.core.compiler.annotation.nullanalysis=disabled org.eclipse.jdt.core.compiler.codegen.inlineJsrBytecode=enabled -org.eclipse.jdt.core.compiler.codegen.targetPlatform=1.7 -org.eclipse.jdt.core.compiler.compliance=1.7 +org.eclipse.jdt.core.compiler.codegen.methodParameters=do not generate +org.eclipse.jdt.core.compiler.codegen.targetPlatform=1.8 +org.eclipse.jdt.core.compiler.codegen.unusedLocal=preserve +org.eclipse.jdt.core.compiler.compliance=1.8 +org.eclipse.jdt.core.compiler.debug.lineNumber=generate +org.eclipse.jdt.core.compiler.debug.localVariable=generate +org.eclipse.jdt.core.compiler.debug.sourceFile=generate org.eclipse.jdt.core.compiler.problem.annotationSuperInterface=warning org.eclipse.jdt.core.compiler.problem.assertIdentifier=error org.eclipse.jdt.core.compiler.problem.autoboxing=ignore @@ -92,4 +97,4 @@ org.eclipse.jdt.core.compiler.problem.unusedPrivateMember=warning org.eclipse.jdt.core.compiler.problem.unusedTypeParameter=ignore org.eclipse.jdt.core.compiler.problem.unusedWarningToken=warning org.eclipse.jdt.core.compiler.problem.varargsArgumentNeedCast=warning -org.eclipse.jdt.core.compiler.source=1.7 +org.eclipse.jdt.core.compiler.source=1.8 diff --git a/core-java/.settings/org.eclipse.wst.common.project.facet.core.xml b/core-java/.settings/org.eclipse.wst.common.project.facet.core.xml index bc0009a455..f4ef8aa0a5 100644 --- a/core-java/.settings/org.eclipse.wst.common.project.facet.core.xml +++ b/core-java/.settings/org.eclipse.wst.common.project.facet.core.xml @@ -1,4 +1,4 @@ - + diff --git a/core-java/src/test/java/org/baeldung/java/collections/JavaCollectionConversionUnitTest.java b/core-java/src/test/java/org/baeldung/java/collections/JavaCollectionConversionUnitTest.java index 95b79810cd..a5f684a141 100644 --- a/core-java/src/test/java/org/baeldung/java/collections/JavaCollectionConversionUnitTest.java +++ b/core-java/src/test/java/org/baeldung/java/collections/JavaCollectionConversionUnitTest.java @@ -31,7 +31,7 @@ public class JavaCollectionConversionUnitTest { @Test public final void givenUsingCoreJava_whenListConvertedToArray_thenCorrect() { - final List sourceList = Lists. newArrayList(0, 1, 2, 3, 4, 5); + final List sourceList = Arrays.asList(0, 1, 2, 3, 4, 5); final Integer[] targetArray = sourceList.toArray(new Integer[sourceList.size()]); } From 0d1d3cbd8b9053548a7d480a4a80b8173c618c7d Mon Sep 17 00:00:00 2001 From: eugenp Date: Thu, 23 Jun 2016 10:11:56 +0300 Subject: [PATCH 058/108] minor cleanup --- jooq-spring/pom.xml | 43 +++++++++++++++++++++++++------------------ 1 file changed, 25 insertions(+), 18 deletions(-) diff --git a/jooq-spring/pom.xml b/jooq-spring/pom.xml index 7a3ec0ac24..e77ff0cbfd 100644 --- a/jooq-spring/pom.xml +++ b/jooq-spring/pom.xml @@ -5,22 +5,13 @@ jooq-spring 0.0.1-SNAPSHOT - - 3.7.3 - 1.4.191 - 4.2.5.RELEASE - 1.7.18 - 1.1.3 - 4.12 - - org.springframework.boot spring-boot-dependencies - 1.3.3.RELEASE + 1.3.5.RELEASE pom import @@ -46,30 +37,25 @@ org.springframework spring-context - ${org.springframework.version} org.springframework spring-jdbc - ${org.springframework.version} org.springframework.boot spring-boot-starter-jooq - 1.3.3.RELEASE org.slf4j slf4j-api - ${org.slf4j.version} runtime ch.qos.logback logback-classic - ${ch.qos.logback.version} runtime @@ -77,15 +63,13 @@ junit junit - ${junit.version} test org.springframework spring-test - ${org.springframework.version} test - + @@ -166,6 +150,29 @@ + + + org.apache.maven.plugins + maven-compiler-plugin + ${maven-compiler-plugin.version} + + 1.8 + 1.8 + + + + + + 3.7.3 + 1.4.191 + 4.2.5.RELEASE + 1.7.18 + 1.1.3 + 4.12 + + 3.5.1 + + \ No newline at end of file From 920991ece1c696baf941937bcb091ea0b2eb8e80 Mon Sep 17 00:00:00 2001 From: Grzegorz Piwowarek Date: Thu, 23 Jun 2016 11:33:25 +0200 Subject: [PATCH 059/108] Pom fix --- assertj/pom.xml | 2 +- pom.xml | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/assertj/pom.xml b/assertj/pom.xml index 21cd0c0121..ce97278a97 100644 --- a/assertj/pom.xml +++ b/assertj/pom.xml @@ -5,7 +5,7 @@ 4.0.0 com.baeldung - assertj-introduction + assertj 1.0.0-SNAPSHOT diff --git a/pom.xml b/pom.xml index 505b72e1ab..75281ce80d 100644 --- a/pom.xml +++ b/pom.xml @@ -9,7 +9,7 @@ apache-fop - assertj-introduction + assertj core-java core-java-8 From b3e9b08887fbf46d05acb301d710e7bd6877396c Mon Sep 17 00:00:00 2001 From: Eugen Date: Thu, 23 Jun 2016 17:15:46 +0300 Subject: [PATCH 060/108] Update README.md --- README.md | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/README.md b/README.md index da46989455..f0d3d29da7 100644 --- a/README.md +++ b/README.md @@ -1,7 +1,7 @@ The "REST with Spring" Classes ============================== -After 5 months of work, here's the Master Class:
+After 5 months of work, here's the Master Class of REST With Spring:
**[>> THE REST WITH SPRING MASTER CLASS](http://www.baeldung.com/rest-with-spring-course?utm_source=github&utm_medium=social&utm_content=tutorials&utm_campaign=rws#master-class)** @@ -19,3 +19,8 @@ Any IDE can be used to work with the projects, but if you're using Eclipse, cons - import the included **formatter** in Eclipse: `https://github.com/eugenp/tutorials/tree/master/eclipse` + + +CI - Jenkins +================================ +This tutorials project is being built **[>> HERE](https://rest-security.ci.cloudbees.com/job/tutorials/)** From 024b4f8f614debf5c20da774bd438534d03cdd4f Mon Sep 17 00:00:00 2001 From: Grzegorz Piwowarek Date: Thu, 23 Jun 2016 17:33:59 +0200 Subject: [PATCH 061/108] Add additional AssertJ examples --- .gitignore | 1 + ...ertJDemoTest.java => AssertJCoreTest.java} | 68 ++++++++++++++++++- 2 files changed, 68 insertions(+), 1 deletion(-) rename assertj/src/test/java/com/baeldung/assertj/introduction/{AssertJDemoTest.java => AssertJCoreTest.java} (54%) diff --git a/.gitignore b/.gitignore index e841cc4bf5..319eb5ca2d 100644 --- a/.gitignore +++ b/.gitignore @@ -27,3 +27,4 @@ target/ spring-openid/src/main/resources/application.properties .recommenders/ + diff --git a/assertj/src/test/java/com/baeldung/assertj/introduction/AssertJDemoTest.java b/assertj/src/test/java/com/baeldung/assertj/introduction/AssertJCoreTest.java similarity index 54% rename from assertj/src/test/java/com/baeldung/assertj/introduction/AssertJDemoTest.java rename to assertj/src/test/java/com/baeldung/assertj/introduction/AssertJCoreTest.java index 729c252c3c..21bc40ae9f 100644 --- a/assertj/src/test/java/com/baeldung/assertj/introduction/AssertJDemoTest.java +++ b/assertj/src/test/java/com/baeldung/assertj/introduction/AssertJCoreTest.java @@ -2,17 +2,23 @@ package com.baeldung.assertj.introduction; import com.baeldung.assertj.introduction.domain.Dog; import com.baeldung.assertj.introduction.domain.Person; +import org.assertj.core.util.Maps; import org.junit.Ignore; import org.junit.Test; +import java.io.ByteArrayInputStream; +import java.io.File; +import java.io.InputStream; import java.util.Arrays; import java.util.List; +import java.util.Map; import java.util.NoSuchElementException; import static org.assertj.core.api.Assertions.assertThat; +import static org.assertj.core.api.Assertions.entry; import static org.assertj.core.api.Assertions.withPrecision; -public class AssertJDemoTest { +public class AssertJCoreTest { @Test public void whenComparingReferences_thenNotEqual() throws Exception { @@ -42,6 +48,10 @@ public class AssertJDemoTest { public void whenCheckingForElement_thenMultipleAssertions() throws Exception { List list = Arrays.asList("1", "2", "3"); + assertThat(list).isNotEmpty(); + assertThat(list).startsWith("1"); + assertThat(list).doesNotContainNull(); + assertThat(list) .isNotEmpty() .contains("1") @@ -55,6 +65,17 @@ public class AssertJDemoTest { assertThat(Runnable.class).isInterface(); } + @Test + public void whenCheckingCharacter_thenIsUnicode() throws Exception { + char someCharacter = 'c'; + + assertThat(someCharacter) + .isNotEqualTo('a') + .inUnicode() + .isGreaterThanOrEqualTo('b') + .isLowerCase(); + } + @Test public void whenAssigningNSEExToException_thenIsAssignable() throws Exception { assertThat(Exception.class).isAssignableFrom(NoSuchElementException.class); @@ -65,6 +86,51 @@ public class AssertJDemoTest { assertThat(5.1).isEqualTo(5, withPrecision(1d)); } + @Test + public void whenCheckingString_then() throws Exception { + assertThat("".isEmpty()).isTrue(); + } + + @Test + public void whenCheckingFile_then() throws Exception { + final File someFile = File.createTempFile("aaa", "bbb"); + someFile.deleteOnExit(); + + assertThat(someFile) + .exists() + .isFile() + .canRead() + .canWrite(); + } + + @Test + public void whenCheckingIS_then() throws Exception { + InputStream given = new ByteArrayInputStream("foo".getBytes()); + InputStream expected = new ByteArrayInputStream("foo".getBytes()); + + assertThat(given).hasSameContentAs(expected); + } + + @Test + public void whenGivenMap_then() throws Exception { + Map map = Maps.newHashMap(2, "a"); + + assertThat(map) + .isNotEmpty() + .containsKey(2) + .doesNotContainKeys(10) + .contains(entry(2, "a")); + } + + @Test + public void whenGivenException_then() throws Exception { + Exception ex = new Exception("abc"); + + assertThat(ex) + .hasNoCause() + .hasMessageEndingWith("c"); + } + @Ignore // IN ORDER TO TEST, REMOVE THIS LINE @Test public void whenRunningAssertion_thenDescribed() throws Exception { From 57ed00a134839fb50b2bce7f0224121e6a0c3351 Mon Sep 17 00:00:00 2001 From: Dmytro Kulaiev Date: Fri, 24 Jun 2016 16:41:41 +0300 Subject: [PATCH 062/108] Code examples for Java 8 date migration (#460) --- .../baeldung/date_migration/Conversion.java | 19 ++++++ .../com/baeldung/date_migration/NewApi.java | 54 +++++++++++++++ .../com/baeldung/date_migration/OldApi.java | 68 +++++++++++++++++++ 3 files changed, 141 insertions(+) create mode 100644 core-java-8/src/main/java/com/baeldung/date_migration/Conversion.java create mode 100644 core-java-8/src/main/java/com/baeldung/date_migration/NewApi.java create mode 100644 core-java-8/src/main/java/com/baeldung/date_migration/OldApi.java diff --git a/core-java-8/src/main/java/com/baeldung/date_migration/Conversion.java b/core-java-8/src/main/java/com/baeldung/date_migration/Conversion.java new file mode 100644 index 0000000000..c672b7ee44 --- /dev/null +++ b/core-java-8/src/main/java/com/baeldung/date_migration/Conversion.java @@ -0,0 +1,19 @@ +package com.baeldung.date_migration; + +import java.time.Instant; +import java.time.ZoneId; +import java.time.ZonedDateTime; +import java.util.Date; +import java.util.GregorianCalendar; +import java.util.TimeZone; + +public class Conversion { + public static void main(String[] args) { + Instant instantFromCalendar = GregorianCalendar.getInstance().toInstant(); + ZonedDateTime zonedDateTimeFromCalendar = new GregorianCalendar().toZonedDateTime(); + Date dateFromInstant = Date.from(Instant.now()); + GregorianCalendar calendarFromZonedDateTime = GregorianCalendar.from(ZonedDateTime.now()); + Instant instantFromDate = new Date().toInstant(); + ZoneId zoneIdFromTimeZone = TimeZone.getTimeZone("PST").toZoneId(); + } +} diff --git a/core-java-8/src/main/java/com/baeldung/date_migration/NewApi.java b/core-java-8/src/main/java/com/baeldung/date_migration/NewApi.java new file mode 100644 index 0000000000..0abf7f7864 --- /dev/null +++ b/core-java-8/src/main/java/com/baeldung/date_migration/NewApi.java @@ -0,0 +1,54 @@ +package com.baeldung.date_migration; + +import java.text.ParseException; +import java.time.*; +import java.time.format.DateTimeFormatter; +import java.time.temporal.ChronoUnit; + +public class NewApi { + public void currentTime() { + ZonedDateTime now = ZonedDateTime.now(); + } + + public void specificTime() { + LocalDate birthDay = LocalDate.of(1990, Month.DECEMBER, 15); + } + + public void extractMonth() { + Month month = LocalDateTime.now().getMonth(); + } + + public void subtractTime() { + LocalDateTime fiveHoursBefore = LocalDateTime.now().minusHours(5); + } + + public void alterField() { + LocalDateTime inJune = LocalDateTime.now().withMonth(Month.JUNE.getValue()); + } + + public void truncate() { + LocalTime truncated = LocalTime.now().truncatedTo(ChronoUnit.HOURS); + } + + public void convertTimeZone() { + ZonedDateTime centralEastern = LocalDateTime.now().atZone(ZoneId.of("CET")); + } + + public void getTimeSpan() { + LocalDateTime now = LocalDateTime.now(); + LocalDateTime hourLater = LocalDateTime.now().plusHours(1); + Duration span = Duration.between(now, hourLater); + } + + public void formatAndParse() throws ParseException { + LocalDate now = LocalDate.now(); + DateTimeFormatter formatter = DateTimeFormatter.ofPattern("yyyy-MM-dd"); + String formattedDate = now.format(formatter); + LocalDate parsedDate = LocalDate.parse(formattedDate, formatter); + } + + public void daysInMonth() { + int daysInMonth = YearMonth.of(1990, 2).lengthOfMonth(); + } + +} diff --git a/core-java-8/src/main/java/com/baeldung/date_migration/OldApi.java b/core-java-8/src/main/java/com/baeldung/date_migration/OldApi.java new file mode 100644 index 0000000000..de4edf99e9 --- /dev/null +++ b/core-java-8/src/main/java/com/baeldung/date_migration/OldApi.java @@ -0,0 +1,68 @@ +package com.baeldung.date_migration; + +import java.text.ParseException; +import java.text.SimpleDateFormat; +import java.util.Calendar; +import java.util.Date; +import java.util.GregorianCalendar; +import java.util.TimeZone; + +public class OldApi { + public void currentTime() { + Date now = new Date(); + } + + public void specificTime () { + Date birthDay = new GregorianCalendar(1990, Calendar.DECEMBER, 15).getTime(); + } + + public void extractMonth() { + int month = new GregorianCalendar().get(Calendar.MONTH); + } + + public void subtractTime() { + GregorianCalendar calendar = new GregorianCalendar(); + calendar.add(Calendar.HOUR_OF_DAY, -5); + Date fiveHoursBefore = calendar.getTime(); + } + + public void alterField() { + GregorianCalendar calendar = new GregorianCalendar(); + calendar.set(Calendar.MONTH, Calendar.JUNE); + Date inJune = calendar.getTime(); + } + + public void truncate() { + Calendar now = Calendar.getInstance(); + now.set(Calendar.MINUTE, 0); + now.set(Calendar.SECOND, 0); + now.set(Calendar.MILLISECOND, 0); + Date truncated = now.getTime(); + } + + public void convertTimeZone() { + GregorianCalendar calendar = new GregorianCalendar(); + calendar.setTimeZone(TimeZone.getTimeZone("CET")); + Date centralEastern = calendar.getTime(); + } + + public void getTimeSpan() { + GregorianCalendar calendar = new GregorianCalendar(); + Date now = new Date(); + calendar.add(Calendar.HOUR, 1); + Date hourLater = calendar.getTime(); + long elapsed = hourLater.getTime() - now.getTime(); + } + + public void formatAndParse() throws ParseException { + SimpleDateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd"); + Date now = new Date(); + String formattedDate = dateFormat.format(now); + Date parsedDate = dateFormat.parse(formattedDate); + } + + public void daysInMonth() { + Calendar calendar = new GregorianCalendar(1990, Calendar.FEBRUARY, 20); + int daysInMonth = calendar.getActualMaximum(Calendar.DAY_OF_MONTH); + } +} From 96182a2bf2a716f3c521a3381c7caa4129029ec2 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=C3=81lvaro=20Fern=C3=A1ndez=20Gonz=C3=A1lez?= Date: Sat, 25 Jun 2016 17:11:51 +0200 Subject: [PATCH 063/108] Just setting encoding for module on mock comparison. (#461) * Add new module for mocks comparison. * Add sources for testing. * Changes on testCase. * Enter some tests for mockito. * More tests for Mockito. * Even more tests. * Add the rest of the mocking libraries. * Javadoc on test. * Test bare bones for EasyMock. * Fist kind of test and setup. * Add tests using EasyMock with a change on LoginService. * Create LoginControllerTest.java * Test setup * [JMockit] No method called test. * [JMockit] Two methods called test. * [JMockit] One method called test. * [JMockit] Exception mock test * [JMockit] Mocked object to pass around test. * [JMockit] Custom matcher test. * [JMockit] Partial mocking test. * [JMockit] Fix with IDE. * Not stubs. Mocks. MOCKS!!! * Remove unnecesary import. --- mock-comparisons/pom.xml | 2 ++ 1 file changed, 2 insertions(+) diff --git a/mock-comparisons/pom.xml b/mock-comparisons/pom.xml index 97e24c61cd..c5424d262d 100644 --- a/mock-comparisons/pom.xml +++ b/mock-comparisons/pom.xml @@ -12,6 +12,8 @@ 1.10.19 3.4 1.24 + + UTF-8 3.3 From a661e0e3c921d46c55406520be04d9c9bb0aa574 Mon Sep 17 00:00:00 2001 From: Grzegorz Piwowarek Date: Sat, 25 Jun 2016 17:23:52 +0200 Subject: [PATCH 064/108] Add additional AssertJ examples --- core-java-8/pom.xml | 6 ++ .../com/baeldung/date_migration/NewApi.java | 54 ----------- .../com/baeldung/date_migration/OldApi.java | 68 -------------- .../baeldung/dateapi/ConversionExample.java} | 4 +- .../baeldung/dateapi/JavaUtilTimeTest.java | 89 +++++++++++++++++++ 5 files changed, 97 insertions(+), 124 deletions(-) delete mode 100644 core-java-8/src/main/java/com/baeldung/date_migration/NewApi.java delete mode 100644 core-java-8/src/main/java/com/baeldung/date_migration/OldApi.java rename core-java-8/src/{main/java/com/baeldung/date_migration/Conversion.java => test/java/com/baeldung/dateapi/ConversionExample.java} (91%) create mode 100644 core-java-8/src/test/java/com/baeldung/dateapi/JavaUtilTimeTest.java diff --git a/core-java-8/pom.xml b/core-java-8/pom.xml index f99d85f564..8c9bb36f7d 100644 --- a/core-java-8/pom.xml +++ b/core-java-8/pom.xml @@ -63,6 +63,12 @@ test + + org.assertj + assertj-core + 3.4.1 + + org.mockito mockito-core diff --git a/core-java-8/src/main/java/com/baeldung/date_migration/NewApi.java b/core-java-8/src/main/java/com/baeldung/date_migration/NewApi.java deleted file mode 100644 index 0abf7f7864..0000000000 --- a/core-java-8/src/main/java/com/baeldung/date_migration/NewApi.java +++ /dev/null @@ -1,54 +0,0 @@ -package com.baeldung.date_migration; - -import java.text.ParseException; -import java.time.*; -import java.time.format.DateTimeFormatter; -import java.time.temporal.ChronoUnit; - -public class NewApi { - public void currentTime() { - ZonedDateTime now = ZonedDateTime.now(); - } - - public void specificTime() { - LocalDate birthDay = LocalDate.of(1990, Month.DECEMBER, 15); - } - - public void extractMonth() { - Month month = LocalDateTime.now().getMonth(); - } - - public void subtractTime() { - LocalDateTime fiveHoursBefore = LocalDateTime.now().minusHours(5); - } - - public void alterField() { - LocalDateTime inJune = LocalDateTime.now().withMonth(Month.JUNE.getValue()); - } - - public void truncate() { - LocalTime truncated = LocalTime.now().truncatedTo(ChronoUnit.HOURS); - } - - public void convertTimeZone() { - ZonedDateTime centralEastern = LocalDateTime.now().atZone(ZoneId.of("CET")); - } - - public void getTimeSpan() { - LocalDateTime now = LocalDateTime.now(); - LocalDateTime hourLater = LocalDateTime.now().plusHours(1); - Duration span = Duration.between(now, hourLater); - } - - public void formatAndParse() throws ParseException { - LocalDate now = LocalDate.now(); - DateTimeFormatter formatter = DateTimeFormatter.ofPattern("yyyy-MM-dd"); - String formattedDate = now.format(formatter); - LocalDate parsedDate = LocalDate.parse(formattedDate, formatter); - } - - public void daysInMonth() { - int daysInMonth = YearMonth.of(1990, 2).lengthOfMonth(); - } - -} diff --git a/core-java-8/src/main/java/com/baeldung/date_migration/OldApi.java b/core-java-8/src/main/java/com/baeldung/date_migration/OldApi.java deleted file mode 100644 index de4edf99e9..0000000000 --- a/core-java-8/src/main/java/com/baeldung/date_migration/OldApi.java +++ /dev/null @@ -1,68 +0,0 @@ -package com.baeldung.date_migration; - -import java.text.ParseException; -import java.text.SimpleDateFormat; -import java.util.Calendar; -import java.util.Date; -import java.util.GregorianCalendar; -import java.util.TimeZone; - -public class OldApi { - public void currentTime() { - Date now = new Date(); - } - - public void specificTime () { - Date birthDay = new GregorianCalendar(1990, Calendar.DECEMBER, 15).getTime(); - } - - public void extractMonth() { - int month = new GregorianCalendar().get(Calendar.MONTH); - } - - public void subtractTime() { - GregorianCalendar calendar = new GregorianCalendar(); - calendar.add(Calendar.HOUR_OF_DAY, -5); - Date fiveHoursBefore = calendar.getTime(); - } - - public void alterField() { - GregorianCalendar calendar = new GregorianCalendar(); - calendar.set(Calendar.MONTH, Calendar.JUNE); - Date inJune = calendar.getTime(); - } - - public void truncate() { - Calendar now = Calendar.getInstance(); - now.set(Calendar.MINUTE, 0); - now.set(Calendar.SECOND, 0); - now.set(Calendar.MILLISECOND, 0); - Date truncated = now.getTime(); - } - - public void convertTimeZone() { - GregorianCalendar calendar = new GregorianCalendar(); - calendar.setTimeZone(TimeZone.getTimeZone("CET")); - Date centralEastern = calendar.getTime(); - } - - public void getTimeSpan() { - GregorianCalendar calendar = new GregorianCalendar(); - Date now = new Date(); - calendar.add(Calendar.HOUR, 1); - Date hourLater = calendar.getTime(); - long elapsed = hourLater.getTime() - now.getTime(); - } - - public void formatAndParse() throws ParseException { - SimpleDateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd"); - Date now = new Date(); - String formattedDate = dateFormat.format(now); - Date parsedDate = dateFormat.parse(formattedDate); - } - - public void daysInMonth() { - Calendar calendar = new GregorianCalendar(1990, Calendar.FEBRUARY, 20); - int daysInMonth = calendar.getActualMaximum(Calendar.DAY_OF_MONTH); - } -} diff --git a/core-java-8/src/main/java/com/baeldung/date_migration/Conversion.java b/core-java-8/src/test/java/com/baeldung/dateapi/ConversionExample.java similarity index 91% rename from core-java-8/src/main/java/com/baeldung/date_migration/Conversion.java rename to core-java-8/src/test/java/com/baeldung/dateapi/ConversionExample.java index c672b7ee44..a543c80eaf 100644 --- a/core-java-8/src/main/java/com/baeldung/date_migration/Conversion.java +++ b/core-java-8/src/test/java/com/baeldung/dateapi/ConversionExample.java @@ -1,4 +1,4 @@ -package com.baeldung.date_migration; +package com.baeldung.dateapi; import java.time.Instant; import java.time.ZoneId; @@ -7,7 +7,7 @@ import java.util.Date; import java.util.GregorianCalendar; import java.util.TimeZone; -public class Conversion { +public class ConversionExample { public static void main(String[] args) { Instant instantFromCalendar = GregorianCalendar.getInstance().toInstant(); ZonedDateTime zonedDateTimeFromCalendar = new GregorianCalendar().toZonedDateTime(); diff --git a/core-java-8/src/test/java/com/baeldung/dateapi/JavaUtilTimeTest.java b/core-java-8/src/test/java/com/baeldung/dateapi/JavaUtilTimeTest.java new file mode 100644 index 0000000000..4bce40c2d9 --- /dev/null +++ b/core-java-8/src/test/java/com/baeldung/dateapi/JavaUtilTimeTest.java @@ -0,0 +1,89 @@ +package com.baeldung.dateapi; + +import org.junit.Test; + +import java.text.ParseException; +import java.time.Duration; +import java.time.LocalDate; +import java.time.LocalDateTime; +import java.time.LocalTime; +import java.time.Month; +import java.time.YearMonth; +import java.time.format.DateTimeFormatter; +import java.time.temporal.ChronoUnit; + +import static org.assertj.core.api.Assertions.assertThat; + +public class JavaUtilTimeTest { + + @Test + public void currentTime() { + final LocalDate now = LocalDate.now(); + + System.out.println(now); + // there is not much to test here + } + + @Test + public void specificTime() { + LocalDate birthDay = LocalDate.of(1990, Month.DECEMBER, 15); + + System.out.println(birthDay); + // there is not much to test here + } + + @Test + public void extractMonth() { + Month month = LocalDate.of(1990, Month.DECEMBER, 15).getMonth(); + + assertThat(month).isEqualTo(Month.DECEMBER); + } + + @Test + public void subtractTime() { + LocalDateTime fiveHoursBefore = LocalDateTime.of(1990, Month.DECEMBER, 15, 15, 0).minusHours(5); + + assertThat(fiveHoursBefore.getHour()).isEqualTo(10); + } + + @Test + public void alterField() { + LocalDateTime inJune = LocalDateTime.of(1990, Month.DECEMBER, 15, 15, 0).with(Month.JUNE); + + assertThat(inJune.getMonth()).isEqualTo(Month.JUNE); + } + + @Test + public void truncate() { + LocalTime truncated = LocalTime.of(15, 12, 34).truncatedTo(ChronoUnit.HOURS); + + assertThat(truncated).isEqualTo(LocalTime.of(15, 0, 0)); + } + + @Test + public void getTimeSpan() { + LocalDateTime now = LocalDateTime.now(); + LocalDateTime hourLater = now.plusHours(1); + Duration span = Duration.between(now, hourLater); + + assertThat(span).isEqualTo(Duration.ofHours(1)); + } + + @Test + public void formatAndParse() throws ParseException { + LocalDate someDate = LocalDate.of(2016, 12, 7); + DateTimeFormatter formatter = DateTimeFormatter.ofPattern("yyyy-MM-dd"); + String formattedDate = someDate.format(formatter); + LocalDate parsedDate = LocalDate.parse(formattedDate, formatter); + + assertThat(formattedDate).isEqualTo("2016-12-07"); + assertThat(parsedDate).isEqualTo(someDate); + } + + @Test + public void daysInMonth() { + int daysInMonth = YearMonth.of(1990, 2).lengthOfMonth(); + + assertThat(daysInMonth).isEqualTo(28); + } +} From 330c8680c938e54abf6606b9a9af9db4943c8911 Mon Sep 17 00:00:00 2001 From: Raquel Garrido Date: Sun, 26 Jun 2016 11:55:42 +0200 Subject: [PATCH 065/108] XML libraries support (#463) * dom4j * added more parsers * StaxParser * Jaxb binding * Jaxb binding * Finish article --- xml/pom.xml | 200 ++++++++---------- .../java/com/baeldung/xml/DefaultParser.java | 10 +- .../java/com/baeldung/xml/Dom4JParser.java | 131 ++++++++++++ .../java/com/baeldung/xml/JDomParser.java | 62 ++++++ .../java/com/baeldung/xml/JaxbParser.java | 69 ++++++ .../main/java/com/baeldung/xml/JaxenDemo.java | 57 +++++ .../java/com/baeldung/xml/StaxParser.java | 120 +++++++++++ .../com/baeldung/xml/binding/Tutorial.java | 61 ++++++ .../com/baeldung/xml/binding/Tutorials.java | 23 ++ .../java/com/baeldung/xml/model/Tutorial.java | 49 +++++ .../com/baeldung/xml/DefaultParserTest.java | 11 +- .../com/baeldung/xml/Dom4JParserTest.java | 88 ++++++++ .../java/com/baeldung/xml/JDomParserTest.java | 38 ++++ .../java/com/baeldung/xml/JaxbParserTest.java | 46 ++++ .../java/com/baeldung/xml/JaxenDemoTest.java | 25 +++ .../java/com/baeldung/xml/StaxParserTest.java | 28 +++ xml/src/test/resources/example.xml | 20 +- xml/src/test/resources/example_namespace.xml | 20 +- xml/src/test/resources/example_new.xml | 10 + xml/src/test/resources/example_updated.xml | 32 +++ 20 files changed, 957 insertions(+), 143 deletions(-) create mode 100644 xml/src/main/java/com/baeldung/xml/Dom4JParser.java create mode 100644 xml/src/main/java/com/baeldung/xml/JDomParser.java create mode 100644 xml/src/main/java/com/baeldung/xml/JaxbParser.java create mode 100644 xml/src/main/java/com/baeldung/xml/JaxenDemo.java create mode 100644 xml/src/main/java/com/baeldung/xml/StaxParser.java create mode 100644 xml/src/main/java/com/baeldung/xml/binding/Tutorial.java create mode 100644 xml/src/main/java/com/baeldung/xml/binding/Tutorials.java create mode 100644 xml/src/main/java/com/baeldung/xml/model/Tutorial.java create mode 100644 xml/src/test/java/com/baeldung/xml/Dom4JParserTest.java create mode 100644 xml/src/test/java/com/baeldung/xml/JDomParserTest.java create mode 100644 xml/src/test/java/com/baeldung/xml/JaxbParserTest.java create mode 100644 xml/src/test/java/com/baeldung/xml/JaxenDemoTest.java create mode 100644 xml/src/test/java/com/baeldung/xml/StaxParserTest.java create mode 100644 xml/src/test/resources/example_new.xml create mode 100644 xml/src/test/resources/example_updated.xml diff --git a/xml/pom.xml b/xml/pom.xml index fc158901e6..9d88bd75eb 100644 --- a/xml/pom.xml +++ b/xml/pom.xml @@ -1,139 +1,117 @@ - 4.0.0 - com.baeldung - xml - 0.1-SNAPSHOT + 4.0.0 + com.baeldung + xml + 0.1-SNAPSHOT - xml + xml - - + + + + dom4j + dom4j + 1.6.1 + + + jaxen + jaxen + 1.1.6 + - - com.google.guava - guava - ${guava.version} - - - commons-io - commons-io - 2.4 - + + org.jdom + jdom2 + 2.0.6 + - - org.apache.commons - commons-collections4 - 4.0 - + + xerces + xercesImpl + 2.9.1 + - - org.apache.commons - commons-lang3 - ${commons-lang3.version} - - - - + + + commons-io + commons-io + 2.4 + - - junit - junit - ${junit.version} - test - + + org.apache.commons + commons-collections4 + 4.0 + - - org.hamcrest - hamcrest-core - ${org.hamcrest.version} - test - - - org.hamcrest - hamcrest-library - ${org.hamcrest.version} - test - + + org.apache.commons + commons-lang3 + ${commons-lang3.version} + - - org.mockito - mockito-core - ${mockito.version} - test - - + - - xml - - - src/main/resources - true - - + + junit + junit + ${junit.version} + test + - + - - org.apache.maven.plugins - maven-compiler-plugin - ${maven-compiler-plugin.version} - - 1.8 - 1.8 - - + + xml + + + src/main/resources + true + + - - org.apache.maven.plugins - maven-surefire-plugin - ${maven-surefire-plugin.version} - + - + + org.apache.maven.plugins + maven-compiler-plugin + ${maven-compiler-plugin.version} + + 1.8 + 1.8 + + - + + org.apache.maven.plugins + maven-surefire-plugin + ${maven-surefire-plugin.version} + - - - 4.3.11.Final - 5.1.38 + - - 2.7.2 + - - 1.7.13 - 1.1.3 + - - 5.1.3.Final + + 19.0 + 3.4 - - 19.0 - 3.4 + + 4.12 - - 1.3 - 4.12 - 1.10.19 + + 3.5.1 + 2.6 + 2.19.1 + 2.7 + 1.4.18 - 4.4.1 - 4.5 - - 2.9.0 - - - 3.5.1 - 2.6 - 2.19.1 - 2.7 - 1.4.18 - - + diff --git a/xml/src/main/java/com/baeldung/xml/DefaultParser.java b/xml/src/main/java/com/baeldung/xml/DefaultParser.java index 89326f45c9..1f2a7418fb 100644 --- a/xml/src/main/java/com/baeldung/xml/DefaultParser.java +++ b/xml/src/main/java/com/baeldung/xml/DefaultParser.java @@ -39,7 +39,7 @@ public class DefaultParser { XPath xPath = XPathFactory.newInstance().newXPath(); - String expression = "/Tutorials/Tutorial"; + String expression = "/tutorials/tutorial"; nodeList = (NodeList) xPath.compile(expression).evaluate(xmlDocument, XPathConstants.NODESET); @@ -60,7 +60,7 @@ public class DefaultParser { XPath xPath = XPathFactory.newInstance().newXPath(); - String expression = "/Tutorials/Tutorial[@tutId=" + "'" + id + "'" + "]"; + String expression = "/tutorials/tutorial[@tutId=" + "'" + id + "'" + "]"; node = (Node) xPath.compile(expression).evaluate(xmlDocument, XPathConstants.NODE); @@ -83,7 +83,7 @@ public class DefaultParser { XPath xPath = XPathFactory.newInstance().newXPath(); - String expression = "//Tutorial[descendant::title[text()=" + "'" + name + "'" + "]]"; + String expression = "//tutorial[descendant::title[text()=" + "'" + name + "'" + "]]"; nodeList = (NodeList) xPath.compile(expression).evaluate(xmlDocument, XPathConstants.NODESET); @@ -107,7 +107,7 @@ public class DefaultParser { XPath xPath = XPathFactory.newInstance().newXPath(); - String expression = "//Tutorial[number(translate(date, '/', '')) > " + date + "]"; + String expression = "//tutorial[number(translate(date, '/', '')) > " + date + "]"; nodeList = (NodeList) xPath.compile(expression).evaluate(xmlDocument, XPathConstants.NODESET); @@ -151,7 +151,7 @@ public class DefaultParser { } }); - String expression = "/bdn:Tutorials/bdn:Tutorial"; + String expression = "/bdn:tutorials/bdn:tutorial"; nodeList = (NodeList) xPath.compile(expression).evaluate(xmlDocument, XPathConstants.NODESET); diff --git a/xml/src/main/java/com/baeldung/xml/Dom4JParser.java b/xml/src/main/java/com/baeldung/xml/Dom4JParser.java new file mode 100644 index 0000000000..d9058ba236 --- /dev/null +++ b/xml/src/main/java/com/baeldung/xml/Dom4JParser.java @@ -0,0 +1,131 @@ +package com.baeldung.xml; + +import java.io.File; +import java.io.FileWriter; +import java.io.IOException; +import java.util.Iterator; +import java.util.List; + +import org.dom4j.Document; +import org.dom4j.DocumentException; +import org.dom4j.DocumentHelper; +import org.dom4j.Element; +import org.dom4j.Node; +import org.dom4j.io.OutputFormat; +import org.dom4j.io.SAXReader; +import org.dom4j.io.XMLWriter; + +public class Dom4JParser { + + private File file; + + public Dom4JParser(File file) { + this.file = file; + } + + public Element getRootElement() { + try { + SAXReader reader = new SAXReader(); + Document document = reader.read(file); + return document.getRootElement(); + } catch (DocumentException e) { + e.printStackTrace(); + return null; + } + } + + public List getFirstElementList() { + try { + SAXReader reader = new SAXReader(); + Document document = reader.read(file); + return document.getRootElement().elements(); + } catch (DocumentException e) { + e.printStackTrace(); + return null; + } + } + + public Node getNodeById(String id) { + try { + SAXReader reader = new SAXReader(); + Document document = reader.read(file); + List elements = document.selectNodes("//*[@tutId='" + id + "']"); + return elements.get(0); + } catch (DocumentException e) { + e.printStackTrace(); + return null; + } + } + + public Node getElementsListByTitle(String name) { + try { + SAXReader reader = new SAXReader(); + Document document = reader.read(file); + List elements = document + .selectNodes("//tutorial[descendant::title[text()=" + "'" + name + "'" + "]]"); + return elements.get(0); + } catch (DocumentException e) { + e.printStackTrace(); + return null; + } + } + + public void generateModifiedDocument() { + try { + SAXReader reader = new SAXReader(); + Document document = reader.read(file); + List nodes = document.selectNodes("/tutorials/tutorial"); + for (Node node : nodes) { + Element element = (Element) node; + Iterator iterator = element.elementIterator("title"); + while (iterator.hasNext()) { + Element title = (Element) iterator.next(); + title.setText(title.getText() + " updated"); + } + } + XMLWriter writer = new XMLWriter(new FileWriter(new File("src/test/resources/example_updated.xml"))); + writer.write(document); + writer.close(); + } catch (DocumentException e) { + e.printStackTrace(); + + } catch (IOException e) { + // TODO Auto-generated catch block + e.printStackTrace(); + } + } + + public void generateNewDocument() { + try { + Document document = DocumentHelper.createDocument(); + Element root = document.addElement("XMLTutorials"); + Element tutorialElement = root.addElement("tutorial").addAttribute("tutId", "01"); + tutorialElement.addAttribute("type", "xml"); + + tutorialElement.addElement("title").addText("XML with Dom4J"); + + tutorialElement.addElement("description").addText("XML handling with Dom4J"); + + tutorialElement.addElement("date").addText("14/06/2016"); + + tutorialElement.addElement("author").addText("Dom4J tech writer"); + + OutputFormat format = OutputFormat.createPrettyPrint(); + XMLWriter writer = new XMLWriter(new FileWriter(new File("src/test/resources/example_new.xml")), format); + writer.write(document); + writer.close(); + } catch (IOException e) { + // TODO Auto-generated catch block + e.printStackTrace(); + } + } + + public File getFile() { + return file; + } + + public void setFile(File file) { + this.file = file; + } + +} diff --git a/xml/src/main/java/com/baeldung/xml/JDomParser.java b/xml/src/main/java/com/baeldung/xml/JDomParser.java new file mode 100644 index 0000000000..08676b44f8 --- /dev/null +++ b/xml/src/main/java/com/baeldung/xml/JDomParser.java @@ -0,0 +1,62 @@ +package com.baeldung.xml; + +import java.io.File; +import java.io.IOException; +import java.util.List; + +import org.jdom2.Document; +import org.jdom2.Element; +import org.jdom2.JDOMException; +import org.jdom2.filter.Filters; +import org.jdom2.input.SAXBuilder; +import org.jdom2.xpath.XPathExpression; +import org.jdom2.xpath.XPathFactory; + + +public class JDomParser { + + private File file; + + public JDomParser(File file) { + this.file = file; + } + + public List getAllTitles() { + try { + SAXBuilder builder = new SAXBuilder(); + Document doc = builder.build(this.getFile()); + Element tutorials = doc.getRootElement(); + List titles = tutorials.getChildren("tutorial"); + return titles; + } catch (JDOMException | IOException e) { + // TODO Auto-generated catch block + e.printStackTrace(); + return null; + } + } + + public Element getNodeById(String id) { + try { + SAXBuilder builder = new SAXBuilder(); + Document document = (Document) builder.build(file); + String filter = "//*[@tutId='" + id + "']"; + XPathFactory xFactory = XPathFactory.instance(); + XPathExpression expr = xFactory.compile(filter, Filters.element()); + List node = expr.evaluate(document); + + return node.get(0); + } catch (JDOMException | IOException e ) { + e.printStackTrace(); + return null; + } + } + + public File getFile() { + return file; + } + + public void setFile(File file) { + this.file = file; + } + +} diff --git a/xml/src/main/java/com/baeldung/xml/JaxbParser.java b/xml/src/main/java/com/baeldung/xml/JaxbParser.java new file mode 100644 index 0000000000..9c06ec5fba --- /dev/null +++ b/xml/src/main/java/com/baeldung/xml/JaxbParser.java @@ -0,0 +1,69 @@ +package com.baeldung.xml; + +import java.io.File; +import java.util.ArrayList; +import java.util.Date; + +import javax.xml.bind.JAXBContext; +import javax.xml.bind.JAXBException; +import javax.xml.bind.Marshaller; +import javax.xml.bind.Unmarshaller; + +import com.baeldung.xml.binding.Tutorial; +import com.baeldung.xml.binding.Tutorials; + +public class JaxbParser { + + private File file; + + public JaxbParser(File file) { + this.file = file; + } + + public Tutorials getFullDocument() { + try { + JAXBContext jaxbContext = JAXBContext.newInstance(Tutorials.class); + Unmarshaller jaxbUnmarshaller = jaxbContext.createUnmarshaller(); + Tutorials tutorials = (Tutorials) jaxbUnmarshaller.unmarshal(this.getFile()); + return tutorials; + } catch (JAXBException e) { + e.printStackTrace(); + return null; + } + } + + public void createNewDocument() { + Tutorials tutorials = new Tutorials(); + tutorials.setTutorial(new ArrayList()); + Tutorial tut = new Tutorial(); + tut.setTutId("01"); + tut.setType("XML"); + tut.setTitle("XML with Jaxb"); + tut.setDescription("XML Binding with Jaxb"); + tut.setDate(new Date()); + tut.setAuthor("Jaxb author"); + tutorials.getTutorial().add(tut); + + try { + JAXBContext jaxbContext = JAXBContext.newInstance(Tutorials.class); + Marshaller jaxbMarshaller = jaxbContext.createMarshaller(); + + jaxbMarshaller.setProperty(Marshaller.JAXB_FORMATTED_OUTPUT, true); + + jaxbMarshaller.marshal(tutorials, file); + + } catch (JAXBException e) { + e.printStackTrace(); + } + + } + + public File getFile() { + return file; + } + + public void setFile(File file) { + this.file = file; + } + +} diff --git a/xml/src/main/java/com/baeldung/xml/JaxenDemo.java b/xml/src/main/java/com/baeldung/xml/JaxenDemo.java new file mode 100644 index 0000000000..0c2dca0573 --- /dev/null +++ b/xml/src/main/java/com/baeldung/xml/JaxenDemo.java @@ -0,0 +1,57 @@ +package com.baeldung.xml; + +import java.io.File; +import java.io.FileInputStream; +import java.io.IOException; +import java.util.List; + +import javax.xml.parsers.DocumentBuilder; +import javax.xml.parsers.DocumentBuilderFactory; +import javax.xml.parsers.ParserConfigurationException; + +import org.jaxen.JaxenException; +import org.jaxen.XPath; +import org.jaxen.dom.DOMXPath; +import org.w3c.dom.Document; +import org.xml.sax.SAXException; + +public class JaxenDemo { + + private File file; + + public JaxenDemo(File file) { + this.file = file; + } + + public List getAllTutorial(){ + try { + FileInputStream fileIS = new FileInputStream(this.getFile()); + DocumentBuilderFactory builderFactory = DocumentBuilderFactory.newInstance(); + + DocumentBuilder builder = builderFactory.newDocumentBuilder(); + + Document xmlDocument = builder.parse(fileIS); + + String expression = "/tutorials/tutorial"; + + XPath path = new DOMXPath(expression); + List result = path.selectNodes(xmlDocument); + return result; + + } catch (SAXException | IOException | ParserConfigurationException | JaxenException e) { + e.printStackTrace(); + return null; + } + + } + + public File getFile() { + return file; + } + + public void setFile(File file) { + this.file = file; + } + + +} diff --git a/xml/src/main/java/com/baeldung/xml/StaxParser.java b/xml/src/main/java/com/baeldung/xml/StaxParser.java new file mode 100644 index 0000000000..6f83e022f8 --- /dev/null +++ b/xml/src/main/java/com/baeldung/xml/StaxParser.java @@ -0,0 +1,120 @@ +package com.baeldung.xml; + +import java.io.File; +import java.io.FileNotFoundException; +import java.io.FileReader; +import java.util.ArrayList; +import java.util.Iterator; +import java.util.List; + +import javax.xml.stream.XMLEventReader; +import javax.xml.stream.XMLInputFactory; +import javax.xml.stream.XMLStreamConstants; +import javax.xml.stream.XMLStreamException; +import javax.xml.stream.events.Attribute; +import javax.xml.stream.events.Characters; +import javax.xml.stream.events.EndElement; +import javax.xml.stream.events.StartElement; +import javax.xml.stream.events.XMLEvent; + +import com.baeldung.xml.model.Tutorial; + +public class StaxParser { + + private File file; + + public StaxParser(File file) { + this.file = file; + } + + public List getAllTutorial() { + boolean bTitle = false; + boolean bDescription = false; + boolean bDate = false; + boolean bAuthor = false; + List tutorials = new ArrayList(); + try { + XMLInputFactory factory = XMLInputFactory.newInstance(); + XMLEventReader eventReader = factory.createXMLEventReader(new FileReader(this.getFile())); + Tutorial current = null; + while (eventReader.hasNext()) { + XMLEvent event = eventReader.nextEvent(); + switch (event.getEventType()) { + case XMLStreamConstants.START_ELEMENT: + StartElement startElement = event.asStartElement(); + String qName = startElement.getName().getLocalPart(); + if (qName.equalsIgnoreCase("tutorial")) { + current = new Tutorial(); + Iterator attributes = startElement.getAttributes(); + while (attributes.hasNext()) { + Attribute currentAt = attributes.next(); + if (currentAt.getName().toString().equalsIgnoreCase("tutId")) { + current.setTutId(currentAt.getValue()); + } else if (currentAt.getName().toString().equalsIgnoreCase("type")) { + current.setType(currentAt.getValue()); + } + } + } else if (qName.equalsIgnoreCase("title")) { + bTitle = true; + } else if (qName.equalsIgnoreCase("description")) { + bDescription = true; + } else if (qName.equalsIgnoreCase("date")) { + bDate = true; + } else if (qName.equalsIgnoreCase("author")) { + bAuthor = true; + } + break; + case XMLStreamConstants.CHARACTERS: + Characters characters = event.asCharacters(); + if (bTitle) { + if (current != null) { + current.setTitle(characters.getData()); + } + bTitle = false; + } + if (bDescription) { + if (current != null) { + current.setDescription(characters.getData()); + } + bDescription = false; + } + if (bDate) { + if (current != null) { + current.setDate(characters.getData()); + } + bDate = false; + } + if (bAuthor) { + if (current != null) { + current.setAuthor(characters.getData()); + } + bAuthor = false; + } + break; + case XMLStreamConstants.END_ELEMENT: + EndElement endElement = event.asEndElement(); + if (endElement.getName().getLocalPart().equalsIgnoreCase("tutorial")) { + if(current != null){ + tutorials.add(current); + } + } + break; + } + } + + } catch (FileNotFoundException | XMLStreamException e) { + e.printStackTrace(); + } + + return tutorials; + } + + public File getFile() { + return file; + } + + public void setFile(File file) { + this.file = file; + } + +} diff --git a/xml/src/main/java/com/baeldung/xml/binding/Tutorial.java b/xml/src/main/java/com/baeldung/xml/binding/Tutorial.java new file mode 100644 index 0000000000..c4668a9f77 --- /dev/null +++ b/xml/src/main/java/com/baeldung/xml/binding/Tutorial.java @@ -0,0 +1,61 @@ +package com.baeldung.xml.binding; + +import java.util.Date; + +import javax.xml.bind.annotation.XmlAttribute; +import javax.xml.bind.annotation.XmlElement; + +public class Tutorial { + + private String tutId; + private String type; + private String title; + private String description; + private Date date; + private String author; + + + public String getTutId() { + return tutId; + } + + @XmlAttribute + public void setTutId(String tutId) { + this.tutId = tutId; + } + public String getType() { + return type; + } + @XmlAttribute + public void setType(String type) { + this.type = type; + } + public String getTitle() { + return title; + } + @XmlElement + public void setTitle(String title) { + this.title = title; + } + public String getDescription() { + return description; + } + @XmlElement + public void setDescription(String description) { + this.description = description; + } + public Date getDate() { + return date; + } + @XmlElement + public void setDate(Date date) { + this.date = date; + } + public String getAuthor() { + return author; + } + @XmlElement + public void setAuthor(String author) { + this.author = author; + } +} diff --git a/xml/src/main/java/com/baeldung/xml/binding/Tutorials.java b/xml/src/main/java/com/baeldung/xml/binding/Tutorials.java new file mode 100644 index 0000000000..ab6669c0ad --- /dev/null +++ b/xml/src/main/java/com/baeldung/xml/binding/Tutorials.java @@ -0,0 +1,23 @@ +package com.baeldung.xml.binding; + +import java.util.List; + +import javax.xml.bind.annotation.XmlElement; +import javax.xml.bind.annotation.XmlRootElement; + +@XmlRootElement +public class Tutorials { + + private List tutorial; + + public List getTutorial() { + return tutorial; + } + + @XmlElement + public void setTutorial(List tutorial) { + this.tutorial = tutorial; + } + + +} diff --git a/xml/src/main/java/com/baeldung/xml/model/Tutorial.java b/xml/src/main/java/com/baeldung/xml/model/Tutorial.java new file mode 100644 index 0000000000..40a3f858cf --- /dev/null +++ b/xml/src/main/java/com/baeldung/xml/model/Tutorial.java @@ -0,0 +1,49 @@ +package com.baeldung.xml.model; + +public class Tutorial { + + private String tutId; + private String type; + private String title; + private String description; + private String date; + private String author; + + + public String getTutId() { + return tutId; + } + public void setTutId(String tutId) { + this.tutId = tutId; + } + public String getType() { + return type; + } + public void setType(String type) { + this.type = type; + } + public String getTitle() { + return title; + } + public void setTitle(String title) { + this.title = title; + } + public String getDescription() { + return description; + } + public void setDescription(String description) { + this.description = description; + } + public String getDate() { + return date; + } + public void setDate(String date) { + this.date = date; + } + public String getAuthor() { + return author; + } + public void setAuthor(String author) { + this.author = author; + } +} diff --git a/xml/src/test/java/com/baeldung/xml/DefaultParserTest.java b/xml/src/test/java/com/baeldung/xml/DefaultParserTest.java index 451917a5da..734e7a93cb 100644 --- a/xml/src/test/java/com/baeldung/xml/DefaultParserTest.java +++ b/xml/src/test/java/com/baeldung/xml/DefaultParserTest.java @@ -8,9 +8,6 @@ import org.junit.Test; import org.w3c.dom.Node; import org.w3c.dom.NodeList; -/** - * Unit test for simple App. - */ public class DefaultParserTest { final String fileName = "src/test/resources/example.xml"; @@ -29,7 +26,7 @@ public class DefaultParserTest { } @Test - public void getNodeListByTitle() { + public void getNodeListByTitleTest() { parser = new DefaultParser(new File(fileName)); NodeList list = parser.getNodeListByTitle("XML"); @@ -47,7 +44,7 @@ public class DefaultParserTest { } @Test - public void getNodeById() { + public void getNodeByIdTest() { parser = new DefaultParser(new File(fileName)); Node node = parser.getNodeById("03"); @@ -56,7 +53,7 @@ public class DefaultParserTest { } @Test - public void getNodeListByDate(){ + public void getNodeListByDateTest(){ parser = new DefaultParser(new File(fileName)); NodeList list = parser.getNodeListByTitle("04022016"); for (int i = 0; null != list && i < list.getLength(); i++) { @@ -73,7 +70,7 @@ public class DefaultParserTest { } @Test - public void getNodeListWithNamespace(){ + public void getNodeListWithNamespaceTest(){ parser = new DefaultParser(new File(fileNameSpace)); NodeList list = parser.getAllTutorials(); assertNotNull(list); diff --git a/xml/src/test/java/com/baeldung/xml/Dom4JParserTest.java b/xml/src/test/java/com/baeldung/xml/Dom4JParserTest.java new file mode 100644 index 0000000000..277eca8355 --- /dev/null +++ b/xml/src/test/java/com/baeldung/xml/Dom4JParserTest.java @@ -0,0 +1,88 @@ +package com.baeldung.xml; + +import static org.junit.Assert.assertEquals; +import static org.junit.Assert.assertNotNull; +import static org.junit.Assert.assertTrue; + +import java.io.File; +import java.util.List; + +import org.dom4j.Element; +import org.dom4j.Node; +import org.junit.Test; + +public class Dom4JParserTest { + + final String fileName = "src/test/resources/example.xml"; + + Dom4JParser parser; + + @Test + public void getRootElementTest() { + parser = new Dom4JParser(new File(fileName)); + Element root = parser.getRootElement(); + + assertNotNull(root); + assertTrue(root.elements().size() == 4); + } + + @Test + public void getFirstElementListTest() { + parser = new Dom4JParser(new File(fileName)); + List firstList = parser.getFirstElementList(); + + assertNotNull(firstList); + assertTrue(firstList.size() == 4); + assertTrue(firstList.get(0).attributeValue("type").equals("java")); + } + + @Test + public void getElementByIdTest() { + parser = new Dom4JParser(new File(fileName)); + Node element = parser.getNodeById("03"); + + String type = element.valueOf("@type"); + assertEquals("android", type); + } + + @Test + public void getElementsListByTitleTest() { + parser = new Dom4JParser(new File(fileName)); + Node element = parser.getElementsListByTitle("XML"); + + assertEquals("java", element.valueOf("@type")); + assertEquals("02", element.valueOf("@tutId")); + assertEquals("XML", element.selectSingleNode("title").getText()); + assertEquals("title", element.selectSingleNode("title").getName()); + } + + @Test + public void generateModifiedDocumentTest() { + parser = new Dom4JParser(new File(fileName)); + parser.generateModifiedDocument(); + + File generatedFile = new File("src/test/resources/example_updated.xml"); + assertTrue(generatedFile.exists()); + + parser.setFile(generatedFile); + Node element = parser.getNodeById("02"); + + assertEquals("XML updated", element.selectSingleNode("title").getText()); + + } + + @Test + public void generateNewDocumentTest() { + parser = new Dom4JParser(new File(fileName)); + parser.generateNewDocument(); + + File newFile = new File("src/test/resources/example_new.xml"); + assertTrue(newFile.exists()); + + parser.setFile(newFile); + Node element = parser.getNodeById("01"); + + assertEquals("XML with Dom4J", element.selectSingleNode("title").getText()); + + } +} diff --git a/xml/src/test/java/com/baeldung/xml/JDomParserTest.java b/xml/src/test/java/com/baeldung/xml/JDomParserTest.java new file mode 100644 index 0000000000..981458469f --- /dev/null +++ b/xml/src/test/java/com/baeldung/xml/JDomParserTest.java @@ -0,0 +1,38 @@ +package com.baeldung.xml; + +import static org.junit.Assert.assertEquals; +import static org.junit.Assert.assertNotNull; +import static org.junit.Assert.assertTrue; + +import java.io.File; +import java.util.List; + +import org.jdom2.Element; +import org.junit.Test; + +public class JDomParserTest { + + final String fileName = "src/test/resources/example.xml"; + + JDomParser parser; + + @Test + public void getFirstElementListTest() { + parser = new JDomParser(new File(fileName)); + List firstList = parser.getAllTitles(); + + assertNotNull(firstList); + assertTrue(firstList.size() == 4); + assertTrue(firstList.get(0).getAttributeValue("type").equals("java")); + } + + @Test + public void getElementByIdTest() { + parser = new JDomParser(new File(fileName)); + Element el = parser.getNodeById("03"); + + String type = el.getAttributeValue("type"); + assertEquals("android", type); + } + +} diff --git a/xml/src/test/java/com/baeldung/xml/JaxbParserTest.java b/xml/src/test/java/com/baeldung/xml/JaxbParserTest.java new file mode 100644 index 0000000000..4d6ddf5f65 --- /dev/null +++ b/xml/src/test/java/com/baeldung/xml/JaxbParserTest.java @@ -0,0 +1,46 @@ +package com.baeldung.xml; + +import static org.junit.Assert.assertEquals; +import static org.junit.Assert.assertNotNull; +import static org.junit.Assert.assertTrue; + +import java.io.File; + +import org.dom4j.Node; +import org.junit.Test; + +import com.baeldung.xml.binding.Tutorials; + +public class JaxbParserTest { + + + final String fileName = "src/test/resources/example.xml"; + + JaxbParser parser; + + @Test + public void getFullDocumentTest(){ + parser = new JaxbParser(new File(fileName)); + Tutorials tutorials = parser.getFullDocument(); + + assertNotNull(tutorials); + assertTrue(tutorials.getTutorial().size() == 4); + assertTrue(tutorials.getTutorial().get(0).getType().equalsIgnoreCase("java")); + } + + @Test + public void createNewDocumentTest(){ + File newFile = new File("src/test/resources/example_new.xml"); + parser = new JaxbParser(newFile); + parser.createNewDocument(); + + + assertTrue(newFile.exists()); + + Tutorials tutorials = parser.getFullDocument(); + + assertNotNull(tutorials); + assertTrue(tutorials.getTutorial().size() == 1); + assertTrue(tutorials.getTutorial().get(0).getTitle().equalsIgnoreCase("XML with Jaxb")); + } +} diff --git a/xml/src/test/java/com/baeldung/xml/JaxenDemoTest.java b/xml/src/test/java/com/baeldung/xml/JaxenDemoTest.java new file mode 100644 index 0000000000..2521fcaf8a --- /dev/null +++ b/xml/src/test/java/com/baeldung/xml/JaxenDemoTest.java @@ -0,0 +1,25 @@ +package com.baeldung.xml; + +import static org.junit.Assert.assertNotNull; +import static org.junit.Assert.assertTrue; + +import java.io.File; +import java.util.List; + +import org.junit.Test; + +public class JaxenDemoTest { + + final String fileName = "src/test/resources/example.xml"; + + JaxenDemo jaxenDemo; + + @Test + public void getFirstLevelNodeListTest() { + jaxenDemo = new JaxenDemo(new File(fileName)); + List list = jaxenDemo.getAllTutorial(); + + assertNotNull(list); + assertTrue(list.size() == 4); + } +} diff --git a/xml/src/test/java/com/baeldung/xml/StaxParserTest.java b/xml/src/test/java/com/baeldung/xml/StaxParserTest.java new file mode 100644 index 0000000000..3188777a79 --- /dev/null +++ b/xml/src/test/java/com/baeldung/xml/StaxParserTest.java @@ -0,0 +1,28 @@ +package com.baeldung.xml; + +import static org.junit.Assert.assertNotNull; +import static org.junit.Assert.assertTrue; + +import java.io.File; +import java.util.List; + +import org.junit.Test; + +import com.baeldung.xml.model.Tutorial; + +public class StaxParserTest { + + final String fileName = "src/test/resources/example.xml"; + + StaxParser parser; + + @Test + public void getAllTutorialsTest(){ + parser = new StaxParser(new File(fileName)); + List tutorials = parser.getAllTutorial(); + + assertNotNull(tutorials); + assertTrue(tutorials.size() == 4); + assertTrue(tutorials.get(0).getType().equalsIgnoreCase("java")); + } +} diff --git a/xml/src/test/resources/example.xml b/xml/src/test/resources/example.xml index d546dd137b..0993b6240a 100644 --- a/xml/src/test/resources/example.xml +++ b/xml/src/test/resources/example.xml @@ -1,24 +1,24 @@ - - + + Guava Introduction to Guava 04/04/2016 GuavaAuthor - - + + XML Introduction to XPath 04/05/2016 XMLAuthor - - + + Android Introduction to Android 04/03/2016 AndroidAuthor - - + + Spring Introduction to Spring 04/02/2016 @@ -28,5 +28,5 @@
Spring MVC
Spring Batch
-
-
\ No newline at end of file +
+
\ No newline at end of file diff --git a/xml/src/test/resources/example_namespace.xml b/xml/src/test/resources/example_namespace.xml index 26131302ea..f1a880951a 100644 --- a/xml/src/test/resources/example_namespace.xml +++ b/xml/src/test/resources/example_namespace.xml @@ -1,24 +1,24 @@ - - + + Guava Introduction to Guava 04/04/2016 GuavaAuthor - - + + XML Introduction to XPath 04/05/2016 XMLAuthor - - + + Android Introduction to Android 04/03/2016 AndroidAuthor - - + + Spring Introduction to Spring 04/02/2016 @@ -28,5 +28,5 @@
Spring MVC
Spring Batch
-
-
\ No newline at end of file +
+
\ No newline at end of file diff --git a/xml/src/test/resources/example_new.xml b/xml/src/test/resources/example_new.xml new file mode 100644 index 0000000000..020760fdd3 --- /dev/null +++ b/xml/src/test/resources/example_new.xml @@ -0,0 +1,10 @@ + + + + + XML with Dom4J + XML handling with Dom4J + 14/06/2016 + Dom4J tech writer + + diff --git a/xml/src/test/resources/example_updated.xml b/xml/src/test/resources/example_updated.xml new file mode 100644 index 0000000000..962ca0c889 --- /dev/null +++ b/xml/src/test/resources/example_updated.xml @@ -0,0 +1,32 @@ + + + + Guava updated + Introduction to Guava + 04/04/2016 + GuavaAuthor + + + XML updated + Introduction to XPath + 04/05/2016 + XMLAuthor + + + Android updated + Introduction to Android + 04/03/2016 + AndroidAuthor + + + Spring updated + Introduction to Spring + 04/02/2016 + SpringAuthor + +
Spring Core
+
Spring MVC
+
Spring Batch
+
+
+
\ No newline at end of file From 40ed303abc75817d344c7cd736c828a846c88f74 Mon Sep 17 00:00:00 2001 From: Grzegorz Piwowarek Date: Sun, 26 Jun 2016 11:59:31 +0200 Subject: [PATCH 066/108] Refactor xml examples --- .../com/baeldung/xml/DefaultParserTest.java | 20 +++++++------ .../com/baeldung/xml/Dom4JParserTest.java | 30 +++++++++---------- .../java/com/baeldung/xml/JDomParserTest.java | 16 +++++----- .../java/com/baeldung/xml/JaxbParserTest.java | 15 ++++------ .../java/com/baeldung/xml/JaxenDemoTest.java | 10 +++---- .../java/com/baeldung/xml/StaxParserTest.java | 13 ++++---- 6 files changed, 51 insertions(+), 53 deletions(-) diff --git a/xml/src/test/java/com/baeldung/xml/DefaultParserTest.java b/xml/src/test/java/com/baeldung/xml/DefaultParserTest.java index 734e7a93cb..7408e41b92 100644 --- a/xml/src/test/java/com/baeldung/xml/DefaultParserTest.java +++ b/xml/src/test/java/com/baeldung/xml/DefaultParserTest.java @@ -1,20 +1,22 @@ package com.baeldung.xml; -import static org.junit.Assert.*; - -import java.io.File; - import org.junit.Test; import org.w3c.dom.Node; import org.w3c.dom.NodeList; +import java.io.File; + +import static org.junit.Assert.assertEquals; +import static org.junit.Assert.assertNotNull; +import static org.junit.Assert.assertTrue; + public class DefaultParserTest { - final String fileName = "src/test/resources/example.xml"; + private final String fileName = "src/test/resources/example.xml"; - final String fileNameSpace = "src/test/resources/example_namespace.xml"; + private final String fileNameSpace = "src/test/resources/example_namespace.xml"; - DefaultParser parser; + private DefaultParser parser; @Test public void getFirstLevelNodeListTest() { @@ -30,7 +32,7 @@ public class DefaultParserTest { parser = new DefaultParser(new File(fileName)); NodeList list = parser.getNodeListByTitle("XML"); - for (int i = 0; null != list && i < list.getLength(); i++) { + for (int i = 0; i < list.getLength(); i++) { Node nod = list.item(i); assertEquals("java", nod.getAttributes().getNamedItem("type").getTextContent()); assertEquals("02", nod.getAttributes().getNamedItem("tutId").getTextContent()); @@ -56,7 +58,7 @@ public class DefaultParserTest { public void getNodeListByDateTest(){ parser = new DefaultParser(new File(fileName)); NodeList list = parser.getNodeListByTitle("04022016"); - for (int i = 0; null != list && i < list.getLength(); i++) { + for (int i = 0; i < list.getLength(); i++) { Node nod = list.item(i); assertEquals("java", nod.getAttributes().getNamedItem("type").getTextContent()); assertEquals("04", nod.getAttributes().getNamedItem("tutId").getTextContent()); diff --git a/xml/src/test/java/com/baeldung/xml/Dom4JParserTest.java b/xml/src/test/java/com/baeldung/xml/Dom4JParserTest.java index 277eca8355..77e5fcdcda 100644 --- a/xml/src/test/java/com/baeldung/xml/Dom4JParserTest.java +++ b/xml/src/test/java/com/baeldung/xml/Dom4JParserTest.java @@ -1,25 +1,25 @@ package com.baeldung.xml; -import static org.junit.Assert.assertEquals; -import static org.junit.Assert.assertNotNull; -import static org.junit.Assert.assertTrue; - -import java.io.File; -import java.util.List; - import org.dom4j.Element; import org.dom4j.Node; import org.junit.Test; +import java.io.File; +import java.util.List; + +import static org.junit.Assert.assertEquals; +import static org.junit.Assert.assertNotNull; +import static org.junit.Assert.assertTrue; + public class Dom4JParserTest { - final String fileName = "src/test/resources/example.xml"; + private static final String FILE_NAME = "src/test/resources/example.xml"; - Dom4JParser parser; + private Dom4JParser parser; @Test public void getRootElementTest() { - parser = new Dom4JParser(new File(fileName)); + parser = new Dom4JParser(new File(FILE_NAME)); Element root = parser.getRootElement(); assertNotNull(root); @@ -28,7 +28,7 @@ public class Dom4JParserTest { @Test public void getFirstElementListTest() { - parser = new Dom4JParser(new File(fileName)); + parser = new Dom4JParser(new File(FILE_NAME)); List firstList = parser.getFirstElementList(); assertNotNull(firstList); @@ -38,7 +38,7 @@ public class Dom4JParserTest { @Test public void getElementByIdTest() { - parser = new Dom4JParser(new File(fileName)); + parser = new Dom4JParser(new File(FILE_NAME)); Node element = parser.getNodeById("03"); String type = element.valueOf("@type"); @@ -47,7 +47,7 @@ public class Dom4JParserTest { @Test public void getElementsListByTitleTest() { - parser = new Dom4JParser(new File(fileName)); + parser = new Dom4JParser(new File(FILE_NAME)); Node element = parser.getElementsListByTitle("XML"); assertEquals("java", element.valueOf("@type")); @@ -58,7 +58,7 @@ public class Dom4JParserTest { @Test public void generateModifiedDocumentTest() { - parser = new Dom4JParser(new File(fileName)); + parser = new Dom4JParser(new File(FILE_NAME)); parser.generateModifiedDocument(); File generatedFile = new File("src/test/resources/example_updated.xml"); @@ -73,7 +73,7 @@ public class Dom4JParserTest { @Test public void generateNewDocumentTest() { - parser = new Dom4JParser(new File(fileName)); + parser = new Dom4JParser(new File(FILE_NAME)); parser.generateNewDocument(); File newFile = new File("src/test/resources/example_new.xml"); diff --git a/xml/src/test/java/com/baeldung/xml/JDomParserTest.java b/xml/src/test/java/com/baeldung/xml/JDomParserTest.java index 981458469f..e4034c48f0 100644 --- a/xml/src/test/java/com/baeldung/xml/JDomParserTest.java +++ b/xml/src/test/java/com/baeldung/xml/JDomParserTest.java @@ -1,20 +1,20 @@ package com.baeldung.xml; +import org.jdom2.Element; +import org.junit.Test; + +import java.io.File; +import java.util.List; + import static org.junit.Assert.assertEquals; import static org.junit.Assert.assertNotNull; import static org.junit.Assert.assertTrue; -import java.io.File; -import java.util.List; - -import org.jdom2.Element; -import org.junit.Test; - public class JDomParserTest { - final String fileName = "src/test/resources/example.xml"; + private final String fileName = "src/test/resources/example.xml"; - JDomParser parser; + private JDomParser parser; @Test public void getFirstElementListTest() { diff --git a/xml/src/test/java/com/baeldung/xml/JaxbParserTest.java b/xml/src/test/java/com/baeldung/xml/JaxbParserTest.java index 4d6ddf5f65..6e1a201b59 100644 --- a/xml/src/test/java/com/baeldung/xml/JaxbParserTest.java +++ b/xml/src/test/java/com/baeldung/xml/JaxbParserTest.java @@ -1,22 +1,19 @@ package com.baeldung.xml; -import static org.junit.Assert.assertEquals; -import static org.junit.Assert.assertNotNull; -import static org.junit.Assert.assertTrue; +import com.baeldung.xml.binding.Tutorials; +import org.junit.Test; import java.io.File; -import org.dom4j.Node; -import org.junit.Test; - -import com.baeldung.xml.binding.Tutorials; +import static org.junit.Assert.assertNotNull; +import static org.junit.Assert.assertTrue; public class JaxbParserTest { - final String fileName = "src/test/resources/example.xml"; + private final String fileName = "src/test/resources/example.xml"; - JaxbParser parser; + private JaxbParser parser; @Test public void getFullDocumentTest(){ diff --git a/xml/src/test/java/com/baeldung/xml/JaxenDemoTest.java b/xml/src/test/java/com/baeldung/xml/JaxenDemoTest.java index 2521fcaf8a..8a88484f11 100644 --- a/xml/src/test/java/com/baeldung/xml/JaxenDemoTest.java +++ b/xml/src/test/java/com/baeldung/xml/JaxenDemoTest.java @@ -1,18 +1,18 @@ package com.baeldung.xml; -import static org.junit.Assert.assertNotNull; -import static org.junit.Assert.assertTrue; +import org.junit.Test; import java.io.File; import java.util.List; -import org.junit.Test; +import static org.junit.Assert.assertNotNull; +import static org.junit.Assert.assertTrue; public class JaxenDemoTest { - final String fileName = "src/test/resources/example.xml"; + private final String fileName = "src/test/resources/example.xml"; - JaxenDemo jaxenDemo; + private JaxenDemo jaxenDemo; @Test public void getFirstLevelNodeListTest() { diff --git a/xml/src/test/java/com/baeldung/xml/StaxParserTest.java b/xml/src/test/java/com/baeldung/xml/StaxParserTest.java index 3188777a79..d1080c88ac 100644 --- a/xml/src/test/java/com/baeldung/xml/StaxParserTest.java +++ b/xml/src/test/java/com/baeldung/xml/StaxParserTest.java @@ -1,20 +1,19 @@ package com.baeldung.xml; -import static org.junit.Assert.assertNotNull; -import static org.junit.Assert.assertTrue; +import com.baeldung.xml.model.Tutorial; +import org.junit.Test; import java.io.File; import java.util.List; -import org.junit.Test; - -import com.baeldung.xml.model.Tutorial; +import static org.junit.Assert.assertNotNull; +import static org.junit.Assert.assertTrue; public class StaxParserTest { - final String fileName = "src/test/resources/example.xml"; + private final String fileName = "src/test/resources/example.xml"; - StaxParser parser; + private StaxParser parser; @Test public void getAllTutorialsTest(){ From 718c04ceebe6525e1b569879ea8e943edb23a919 Mon Sep 17 00:00:00 2001 From: Sameera Date: Tue, 28 Jun 2016 14:09:00 +0530 Subject: [PATCH 067/108] updating test cases --- spring-data-neo4j/pom.xml | 109 ++++++++++++--- .../config/LibraryNeo4jConfiguration.java | 32 ----- .../MovieDatabaseNeo4jConfiguration.java | 38 +++++ .../MovieDatabaseNeo4jTestConfiguration.java | 34 +++++ .../spring/data/neo4j/domain/Movie.java | 63 +++++++++ .../spring/data/neo4j/domain/Person.java | 50 +++++++ .../spring/data/neo4j/domain/Role.java | 50 +++++++ .../spring/data/neo4j/model/Book.java | 54 -------- .../spring/data/neo4j/model/Person.java | 52 ------- .../data/neo4j/repostory/BookRepository.java | 16 --- .../data/neo4j/repostory/MovieRepository.java | 25 ++++ .../neo4j/repostory/PersonRepository.java | 11 ++ .../data/neo4j/service/BookService.java | 18 --- .../data/neo4j/service/BookServiceImpl.java | 38 ----- .../data/neo4j/services/MovieService.java | 50 +++++++ .../spring/data/neo4j/BookServiceTest.java | 79 ----------- .../data/neo4j/MovieRepositoryTest.java | 131 ++++++++++++++++++ 17 files changed, 543 insertions(+), 307 deletions(-) delete mode 100644 spring-data-neo4j/src/main/java/com/baeldung/spring/data/neo4j/config/LibraryNeo4jConfiguration.java create mode 100644 spring-data-neo4j/src/main/java/com/baeldung/spring/data/neo4j/config/MovieDatabaseNeo4jConfiguration.java create mode 100644 spring-data-neo4j/src/main/java/com/baeldung/spring/data/neo4j/config/MovieDatabaseNeo4jTestConfiguration.java create mode 100644 spring-data-neo4j/src/main/java/com/baeldung/spring/data/neo4j/domain/Movie.java create mode 100644 spring-data-neo4j/src/main/java/com/baeldung/spring/data/neo4j/domain/Person.java create mode 100644 spring-data-neo4j/src/main/java/com/baeldung/spring/data/neo4j/domain/Role.java delete mode 100644 spring-data-neo4j/src/main/java/com/baeldung/spring/data/neo4j/model/Book.java delete mode 100644 spring-data-neo4j/src/main/java/com/baeldung/spring/data/neo4j/model/Person.java delete mode 100644 spring-data-neo4j/src/main/java/com/baeldung/spring/data/neo4j/repostory/BookRepository.java create mode 100644 spring-data-neo4j/src/main/java/com/baeldung/spring/data/neo4j/repostory/MovieRepository.java create mode 100644 spring-data-neo4j/src/main/java/com/baeldung/spring/data/neo4j/repostory/PersonRepository.java delete mode 100644 spring-data-neo4j/src/main/java/com/baeldung/spring/data/neo4j/service/BookService.java delete mode 100644 spring-data-neo4j/src/main/java/com/baeldung/spring/data/neo4j/service/BookServiceImpl.java create mode 100644 spring-data-neo4j/src/main/java/com/baeldung/spring/data/neo4j/services/MovieService.java delete mode 100644 spring-data-neo4j/src/test/java/com/baeldung/spring/data/neo4j/BookServiceTest.java create mode 100644 spring-data-neo4j/src/test/java/com/baeldung/spring/data/neo4j/MovieRepositoryTest.java diff --git a/spring-data-neo4j/pom.xml b/spring-data-neo4j/pom.xml index 72e17250db..320b6ce019 100644 --- a/spring-data-neo4j/pom.xml +++ b/spring-data-neo4j/pom.xml @@ -8,12 +8,20 @@ jar + 1.8 UTF-8 - 4.2.5.RELEASE - 4.0.0.RELEASE - 0.8.0 + UTF-8 + 3.0.1 + 4.1.1.RELEASE + Hopper-SR1 + + org.springframework.boot + spring-boot-starter-parent + 1.3.0.RELEASE + + org.springframework.data @@ -22,15 +30,8 @@ - org.springframework - spring-core - ${spring.version} - - - - org.springframework - spring-context - ${spring.version} + org.springframework.boot + spring-boot-starter-data-rest @@ -40,23 +41,95 @@ compile + + + - log4j - log4j - 1.2.16 + org.springframework.boot + spring-boot-starter-test + test + + org.springframework.data + spring-data-neo4j + ${spring-data-neo4j.version} + test-jar + + + + org.neo4j + neo4j-kernel + ${neo4j.version} + test-jar + + + + org.neo4j.app + neo4j-server + ${neo4j.version} + test-jar + + + + org.neo4j + neo4j-ogm-test + 2.0.2 + test + + + + org.neo4j.test + neo4j-harness + ${neo4j.version} + test + + + junit + junit + 4.12 + junit junit 4.12 - org.springframework spring-test - ${spring.version} + 4.2.3.RELEASE + - + + + + + maven-compiler-plugin + + + org.springframework.boot + spring-boot-maven-plugin + + + + + + + spring-milestones + http://repo.spring.io/libs-snapshot + + true + + + + + + spring-milestones + http://repo.spring.io/libs-snapshot + + true + + + diff --git a/spring-data-neo4j/src/main/java/com/baeldung/spring/data/neo4j/config/LibraryNeo4jConfiguration.java b/spring-data-neo4j/src/main/java/com/baeldung/spring/data/neo4j/config/LibraryNeo4jConfiguration.java deleted file mode 100644 index c497c944d1..0000000000 --- a/spring-data-neo4j/src/main/java/com/baeldung/spring/data/neo4j/config/LibraryNeo4jConfiguration.java +++ /dev/null @@ -1,32 +0,0 @@ -package com.baeldung.spring.data.neo4j.config; - - -import org.neo4j.ogm.session.SessionFactory; -import org.springframework.context.annotation.ComponentScan; -import org.springframework.context.annotation.Configuration; -import org.springframework.context.annotation.Import; -import org.springframework.data.neo4j.config.Neo4jConfiguration; -import org.springframework.data.neo4j.repository.config.EnableNeo4jRepositories; -import org.springframework.data.neo4j.server.Neo4jServer; -import org.springframework.data.neo4j.server.RemoteServer; -import org.springframework.scheduling.annotation.EnableScheduling; -import org.springframework.transaction.annotation.EnableTransactionManagement; - - -@Configuration -@ComponentScan("com.baeldung.spring.data.neo4j") -@EnableNeo4jRepositories(basePackages = "com.baeldung.spring.data.neo4j.repostory") -public class LibraryNeo4jConfiguration extends Neo4jConfiguration { - - public static final String URL = System.getenv("NEO4J_URL") != null ? System.getenv("NEO4J_URL") : "http://localhost:7474"; - - @Override - public Neo4jServer neo4jServer() { - return new RemoteServer(URL,"neo4j","password"); - } - - @Override - public SessionFactory getSessionFactory() { - return new SessionFactory("com.baeldung.spring.data.neo4j.model"); - } -} \ No newline at end of file diff --git a/spring-data-neo4j/src/main/java/com/baeldung/spring/data/neo4j/config/MovieDatabaseNeo4jConfiguration.java b/spring-data-neo4j/src/main/java/com/baeldung/spring/data/neo4j/config/MovieDatabaseNeo4jConfiguration.java new file mode 100644 index 0000000000..6e57eb1f36 --- /dev/null +++ b/spring-data-neo4j/src/main/java/com/baeldung/spring/data/neo4j/config/MovieDatabaseNeo4jConfiguration.java @@ -0,0 +1,38 @@ +package com.baeldung.spring.data.neo4j.config; + +import org.neo4j.ogm.session.SessionFactory; +import org.springframework.boot.autoconfigure.EnableAutoConfiguration; +import org.springframework.context.annotation.Bean; +import org.springframework.context.annotation.ComponentScan; +import org.springframework.context.annotation.Configuration; +import org.springframework.data.neo4j.config.Neo4jConfiguration; +import org.springframework.data.neo4j.repository.config.EnableNeo4jRepositories; +import org.springframework.scheduling.annotation.EnableScheduling; +import org.springframework.transaction.annotation.EnableTransactionManagement; + + +@EnableTransactionManagement +@EnableScheduling +@EnableAutoConfiguration +@ComponentScan(basePackages = {"com.baeldung.spring.data.neo4j.services"}) +@Configuration +@EnableNeo4jRepositories(basePackages = "com.baeldung.spring.data.neo4j.repostory") +public class MovieDatabaseNeo4jConfiguration extends Neo4jConfiguration { + + public static final String URL = System.getenv("NEO4J_URL") != null ? System.getenv("NEO4J_URL") : "http://neo4j:movies@localhost:7474"; + + @Bean + public org.neo4j.ogm.config.Configuration getConfiguration() { + org.neo4j.ogm.config.Configuration config = new org.neo4j.ogm.config.Configuration(); + config + .driverConfiguration() + .setDriverClassName("org.neo4j.ogm.drivers.http.driver.HttpDriver") + .setURI(URL); + return config; + } + + @Override + public SessionFactory getSessionFactory() { + return new SessionFactory(getConfiguration(), "com.baeldung.spring.data.neo4j.domain"); + } +} diff --git a/spring-data-neo4j/src/main/java/com/baeldung/spring/data/neo4j/config/MovieDatabaseNeo4jTestConfiguration.java b/spring-data-neo4j/src/main/java/com/baeldung/spring/data/neo4j/config/MovieDatabaseNeo4jTestConfiguration.java new file mode 100644 index 0000000000..2b6394184d --- /dev/null +++ b/spring-data-neo4j/src/main/java/com/baeldung/spring/data/neo4j/config/MovieDatabaseNeo4jTestConfiguration.java @@ -0,0 +1,34 @@ +package com.baeldung.spring.data.neo4j.config; + +import org.neo4j.ogm.session.SessionFactory; +import org.springframework.context.annotation.Bean; +import org.springframework.context.annotation.ComponentScan; +import org.springframework.context.annotation.Configuration; +import org.springframework.context.annotation.Profile; +import org.springframework.data.neo4j.config.Neo4jConfiguration; +import org.springframework.data.neo4j.repository.config.EnableNeo4jRepositories; +import org.springframework.data.neo4j.server.Neo4jServer; +import org.springframework.transaction.annotation.EnableTransactionManagement; + + +@EnableTransactionManagement +@ComponentScan(basePackages = {"com.baeldung.spring.data.neo4j.services"}) +@Configuration +@EnableNeo4jRepositories(basePackages = "com.baeldung.spring.data.neo4j.repostory") +@Profile({"embedded", "test"}) +public class MovieDatabaseNeo4jTestConfiguration extends Neo4jConfiguration { + + @Bean + public org.neo4j.ogm.config.Configuration getConfiguration() { + org.neo4j.ogm.config.Configuration config = new org.neo4j.ogm.config.Configuration(); + config + .driverConfiguration() + .setDriverClassName("org.neo4j.ogm.drivers.embedded.driver.EmbeddedDriver"); + return config; + } + + @Override + public SessionFactory getSessionFactory() { + return new SessionFactory(getConfiguration(), "com.baeldung.spring.data.neo4j.domain"); + } +} diff --git a/spring-data-neo4j/src/main/java/com/baeldung/spring/data/neo4j/domain/Movie.java b/spring-data-neo4j/src/main/java/com/baeldung/spring/data/neo4j/domain/Movie.java new file mode 100644 index 0000000000..8d68b69c05 --- /dev/null +++ b/spring-data-neo4j/src/main/java/com/baeldung/spring/data/neo4j/domain/Movie.java @@ -0,0 +1,63 @@ +package com.baeldung.spring.data.neo4j.domain; + +import com.fasterxml.jackson.annotation.JsonIdentityInfo; +import com.voodoodyne.jackson.jsog.JSOGGenerator; +import org.neo4j.ogm.annotation.GraphId; +import org.neo4j.ogm.annotation.NodeEntity; +import org.neo4j.ogm.annotation.Relationship; + +import java.util.Collection; +import java.util.List; + +@JsonIdentityInfo(generator=JSOGGenerator.class) + +@NodeEntity +public class Movie { + @GraphId + Long id; + + private String title; + + private int released; + private String tagline; + + @Relationship(type="ACTED_IN", direction = Relationship.INCOMING) private List roles; + +// end::movie[] + + public Movie() { } + + public String getTitle() { + return title; + } + + public int getReleased() { + return released; + } + + public String getTagline() { + return tagline; + } + + public Collection getRoles() { + return roles; + } + + public void setTitle(String title) { + this.title = title; + } + + public void setReleased(int released) { + this.released = released; + } + + public void setTagline(String tagline) { + this.tagline = tagline; + } + + public void setRoles(List roles) { + this.roles = roles; + } + + +} diff --git a/spring-data-neo4j/src/main/java/com/baeldung/spring/data/neo4j/domain/Person.java b/spring-data-neo4j/src/main/java/com/baeldung/spring/data/neo4j/domain/Person.java new file mode 100644 index 0000000000..d96dc07530 --- /dev/null +++ b/spring-data-neo4j/src/main/java/com/baeldung/spring/data/neo4j/domain/Person.java @@ -0,0 +1,50 @@ +package com.baeldung.spring.data.neo4j.domain; + + +import com.fasterxml.jackson.annotation.JsonIdentityInfo; +import com.voodoodyne.jackson.jsog.JSOGGenerator; +import org.neo4j.ogm.annotation.GraphId; +import org.neo4j.ogm.annotation.NodeEntity; +import org.neo4j.ogm.annotation.Relationship; + +import java.util.List; + +@JsonIdentityInfo(generator=JSOGGenerator.class) +@NodeEntity +public class Person { + @GraphId + Long id; + + private String name; + private int born; + + @Relationship(type = "ACTED_IN") + private List movies; + + public Person() { } + + public String getName() { + return name; + } + + public int getBorn() { + return born; + } + + public List getMovies() { + return movies; + } + + public void setName(String name) { + this.name = name; + } + + public void setBorn(int born) { + this.born = born; + } + + public void setMovies(List movies) { + this.movies = movies; + } + +} diff --git a/spring-data-neo4j/src/main/java/com/baeldung/spring/data/neo4j/domain/Role.java b/spring-data-neo4j/src/main/java/com/baeldung/spring/data/neo4j/domain/Role.java new file mode 100644 index 0000000000..20512a10ad --- /dev/null +++ b/spring-data-neo4j/src/main/java/com/baeldung/spring/data/neo4j/domain/Role.java @@ -0,0 +1,50 @@ +package com.baeldung.spring.data.neo4j.domain; + + +import com.fasterxml.jackson.annotation.JsonIdentityInfo; +import com.voodoodyne.jackson.jsog.JSOGGenerator; +import org.neo4j.ogm.annotation.EndNode; +import org.neo4j.ogm.annotation.GraphId; +import org.neo4j.ogm.annotation.RelationshipEntity; +import org.neo4j.ogm.annotation.StartNode; + +import java.util.Collection; + +@JsonIdentityInfo(generator=JSOGGenerator.class) +@RelationshipEntity(type = "ACTED_IN") +public class Role { + @GraphId + Long id; + private Collection roles; + @StartNode + private Person person; + @EndNode + private Movie movie; + + public Role() { + } + + public Collection getRoles() { + return roles; + } + + public Person getPerson() { + return person; + } + + public Movie getMovie() { + return movie; + } + + public void setRoles(Collection roles) { + this.roles = roles; + } + + public void setPerson(Person person) { + this.person = person; + } + + public void setMovie(Movie movie) { + this.movie = movie; + } +} diff --git a/spring-data-neo4j/src/main/java/com/baeldung/spring/data/neo4j/model/Book.java b/spring-data-neo4j/src/main/java/com/baeldung/spring/data/neo4j/model/Book.java deleted file mode 100644 index 2c643a4b7c..0000000000 --- a/spring-data-neo4j/src/main/java/com/baeldung/spring/data/neo4j/model/Book.java +++ /dev/null @@ -1,54 +0,0 @@ -package com.baeldung.spring.data.neo4j.model; - -import org.neo4j.graphdb.Direction; -import org.neo4j.ogm.annotation.*; - -import java.util.Collection; -import java.util.List; -import java.util.concurrent.atomic.AtomicLong; - -@NodeEntity -public class Book { - - private static final AtomicLong TS = new AtomicLong(); - - @GraphId - private Long id; - private String title; - private int released; - - @Relationship(type="AUTHORED_BY", direction = Relationship.INCOMING) - private Person person; - - public Book() { - this.id = TS.getAndIncrement(); - } - - public Long getId() { - return id; - } - - public String getTitle() { - return title; - } - - public void setTitle(String title) { - this.title = title; - } - - public int getReleased() { - return released; - } - - public void setReleased(int released) { - this.released = released; - } - - public Person getPerson() { - return person; - } - - public void setPerson(Person person) { - this.person = person; - } -} \ No newline at end of file diff --git a/spring-data-neo4j/src/main/java/com/baeldung/spring/data/neo4j/model/Person.java b/spring-data-neo4j/src/main/java/com/baeldung/spring/data/neo4j/model/Person.java deleted file mode 100644 index 53444c8f6c..0000000000 --- a/spring-data-neo4j/src/main/java/com/baeldung/spring/data/neo4j/model/Person.java +++ /dev/null @@ -1,52 +0,0 @@ -package com.baeldung.spring.data.neo4j.model; - -import org.neo4j.ogm.annotation.*; - -import java.util.List; -import java.util.concurrent.atomic.AtomicLong; - -@NodeEntity -public class Person { - - private static final AtomicLong TS = new AtomicLong(); - - @GraphId - private Long id; - private String name; - private int born; - - @Relationship(type = "AUTHORED_BY") - private List books; - - public Person() { - this.id = TS.incrementAndGet(); - } - - public Long getId() { - return id; - } - - public String getName() { - return name; - } - - public void setName(String name) { - this.name = name; - } - - public int getBorn() { - return born; - } - - public void setBorn(int born) { - this.born = born; - } - - public List getBooks() { - return books; - } - - public void setBooks(List books) { - this.books = books; - } -} diff --git a/spring-data-neo4j/src/main/java/com/baeldung/spring/data/neo4j/repostory/BookRepository.java b/spring-data-neo4j/src/main/java/com/baeldung/spring/data/neo4j/repostory/BookRepository.java deleted file mode 100644 index c76d2862fc..0000000000 --- a/spring-data-neo4j/src/main/java/com/baeldung/spring/data/neo4j/repostory/BookRepository.java +++ /dev/null @@ -1,16 +0,0 @@ -package com.baeldung.spring.data.neo4j.repostory; - -import com.baeldung.spring.data.neo4j.model.Book; -import org.springframework.data.neo4j.annotation.Query; -import org.springframework.data.neo4j.repository.GraphRepository; -import org.springframework.data.repository.query.Param; -import org.springframework.stereotype.Repository; - -import java.util.Collection; -import java.util.List; -import java.util.Map; - -@Repository -public interface BookRepository extends GraphRepository { - -} \ No newline at end of file diff --git a/spring-data-neo4j/src/main/java/com/baeldung/spring/data/neo4j/repostory/MovieRepository.java b/spring-data-neo4j/src/main/java/com/baeldung/spring/data/neo4j/repostory/MovieRepository.java new file mode 100644 index 0000000000..3c5953eff3 --- /dev/null +++ b/spring-data-neo4j/src/main/java/com/baeldung/spring/data/neo4j/repostory/MovieRepository.java @@ -0,0 +1,25 @@ +package com.baeldung.spring.data.neo4j.repostory; + +import com.baeldung.spring.data.neo4j.domain.Movie; +import org.springframework.data.neo4j.annotation.Query; +import org.springframework.data.neo4j.repository.GraphRepository; +import org.springframework.data.repository.query.Param; +import org.springframework.data.rest.core.annotation.RepositoryRestResource; + +import java.util.Collection; +import java.util.List; +import java.util.Map; + + +@RepositoryRestResource(collectionResourceRel = "movies", path = "movies") +public interface MovieRepository extends GraphRepository { + Movie findByTitle(@Param("title") String title); + + @Query("MATCH (m:Movie) WHERE m.title =~ ('(?i).*'+{title}+'.*') RETURN m") + Collection findByTitleContaining(@Param("title") String title); + + @Query("MATCH (m:Movie)<-[:ACTED_IN]-(a:Person) RETURN m.title as movie, collect(a.name) as cast LIMIT {limit}") + List> graph(@Param("limit") int limit); +} + + diff --git a/spring-data-neo4j/src/main/java/com/baeldung/spring/data/neo4j/repostory/PersonRepository.java b/spring-data-neo4j/src/main/java/com/baeldung/spring/data/neo4j/repostory/PersonRepository.java new file mode 100644 index 0000000000..4c287f99a4 --- /dev/null +++ b/spring-data-neo4j/src/main/java/com/baeldung/spring/data/neo4j/repostory/PersonRepository.java @@ -0,0 +1,11 @@ +package com.baeldung.spring.data.neo4j.repostory; + +import com.baeldung.spring.data.neo4j.domain.Person; +import org.springframework.data.neo4j.repository.GraphRepository; +import org.springframework.stereotype.Repository; + + +@Repository +public interface PersonRepository extends GraphRepository { + +} diff --git a/spring-data-neo4j/src/main/java/com/baeldung/spring/data/neo4j/service/BookService.java b/spring-data-neo4j/src/main/java/com/baeldung/spring/data/neo4j/service/BookService.java deleted file mode 100644 index daa988c92d..0000000000 --- a/spring-data-neo4j/src/main/java/com/baeldung/spring/data/neo4j/service/BookService.java +++ /dev/null @@ -1,18 +0,0 @@ -package com.baeldung.spring.data.neo4j.service; - -import com.baeldung.spring.data.neo4j.model.Book; - -import java.util.Map; - -public interface BookService { - - Book save(Book book); - - void delete(long bookId); - - long bookCount(); - - Book findBookById(Long id); - - void deleteAllInGraph(); -} diff --git a/spring-data-neo4j/src/main/java/com/baeldung/spring/data/neo4j/service/BookServiceImpl.java b/spring-data-neo4j/src/main/java/com/baeldung/spring/data/neo4j/service/BookServiceImpl.java deleted file mode 100644 index 0c07e4acd9..0000000000 --- a/spring-data-neo4j/src/main/java/com/baeldung/spring/data/neo4j/service/BookServiceImpl.java +++ /dev/null @@ -1,38 +0,0 @@ -package com.baeldung.spring.data.neo4j.service; - - -import com.baeldung.spring.data.neo4j.model.Book; -import com.baeldung.spring.data.neo4j.repostory.BookRepository; -import org.springframework.beans.factory.annotation.Autowired; -import org.springframework.stereotype.Service; - -import java.util.*; - -@Service -public class BookServiceImpl implements BookService { - - @Autowired - private BookRepository bookRepository; - - public Book save(final Book book){ - return bookRepository.save(book); - } - - public long bookCount(){ - return bookRepository.count(); - } - - public Book findBookById(final Long id){ - return bookRepository.findOne(id); - } - - public void delete(final long bookId){ - bookRepository.delete(bookId); - } - - public void deleteAllInGraph(){ - bookRepository.deleteAll(); - } - - -} \ No newline at end of file diff --git a/spring-data-neo4j/src/main/java/com/baeldung/spring/data/neo4j/services/MovieService.java b/spring-data-neo4j/src/main/java/com/baeldung/spring/data/neo4j/services/MovieService.java new file mode 100644 index 0000000000..532cc79091 --- /dev/null +++ b/spring-data-neo4j/src/main/java/com/baeldung/spring/data/neo4j/services/MovieService.java @@ -0,0 +1,50 @@ +package com.baeldung.spring.data.neo4j.services; + +import com.baeldung.spring.data.neo4j.repostory.MovieRepository; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Service; +import org.springframework.transaction.annotation.Transactional; + +import java.util.*; + +@Service +@Transactional +public class MovieService { + + @Autowired + MovieRepository movieRepository; + + private Map toD3Format(Iterator> result) { + List> nodes = new ArrayList>(); + List> rels= new ArrayList>(); + int i=0; + while (result.hasNext()) { + Map row = result.next(); + nodes.add(map("title",row.get("movie"),"label","movie")); + int target=i; + i++; + for (Object name : (Collection) row.get("cast")) { + Map actor = map("title", name,"label","actor"); + int source = nodes.indexOf(actor); + if (source == -1) { + nodes.add(actor); + source = i++; + } + rels.add(map("source",source,"target",target)); + } + } + return map("nodes", nodes, "links", rels); + } + + private Map map(String key1, Object value1, String key2, Object value2) { + Map result = new HashMap(2); + result.put(key1,value1); + result.put(key2,value2); + return result; + } + + public Map graph(int limit) { + Iterator> result = movieRepository.graph(limit).iterator(); + return toD3Format(result); + } +} diff --git a/spring-data-neo4j/src/test/java/com/baeldung/spring/data/neo4j/BookServiceTest.java b/spring-data-neo4j/src/test/java/com/baeldung/spring/data/neo4j/BookServiceTest.java deleted file mode 100644 index 17c75a1921..0000000000 --- a/spring-data-neo4j/src/test/java/com/baeldung/spring/data/neo4j/BookServiceTest.java +++ /dev/null @@ -1,79 +0,0 @@ -package com.baeldung.spring.data.neo4j; - -import com.baeldung.spring.data.neo4j.config.LibraryNeo4jConfiguration; -import com.baeldung.spring.data.neo4j.model.Book; -import com.baeldung.spring.data.neo4j.model.Person; -import com.baeldung.spring.data.neo4j.service.BookService; -import org.junit.Test; -import org.junit.runner.RunWith; -import org.springframework.beans.factory.annotation.Autowired; -import org.springframework.test.context.ContextConfiguration; -import org.springframework.test.context.junit4.SpringJUnit4ClassRunner; - -import static org.junit.Assert.assertEquals; -import static org.junit.Assert.assertNull; - -@RunWith(SpringJUnit4ClassRunner.class) -@ContextConfiguration(classes = LibraryNeo4jConfiguration.class) -public class BookServiceTest { - - @Autowired - private BookService bookServiceImpl; - - @Test - public void testSavingBook() { - final Person author1 = new Person(); - author1.setName("Mark Twain"); - author1.setBorn(1835); - final Book book = new Book(); - book.setTitle("The Adventures of Tom Sawyer"); - book.setReleased(1876); - book.setPerson(author1); - - final Book savedBook = bookServiceImpl.save(book); - assertEquals(book.getTitle(), savedBook.getTitle()); - } - - @Test - public void testFindingTheSavedBook() { - final Person author1 = new Person(); - author1.setName("Edgar Allan Poe"); - author1.setBorn(1809); - final Book book = new Book(); - book.setTitle("The Cask of Amontillado"); - book.setReleased(1846); - book.setPerson(author1); - - bookServiceImpl.save(book); - final Book retrievedBook = bookServiceImpl.findBookById(book.getId()); - assertEquals(book.getTitle(), retrievedBook.getTitle()); - } - - @Test - public void testCountTheSavedBooks() { - long bookCount = bookServiceImpl.bookCount(); - assertEquals(bookCount, 2); - } - @Test - public void testDeletingASavedBook() { - final Person author1 = new Person(); - author1.setName("Rider Haggard"); - author1.setBorn(1856); - final Book book = new Book(); - book.setTitle("King Solomon's Mines"); - book.setReleased(1885); - book.setPerson(author1); - - final Book savedBook = bookServiceImpl.save(book); - bookServiceImpl.delete(savedBook.getId()); - final Book retrievedBook = bookServiceImpl.findBookById(book.getId()); - assertNull(retrievedBook); - } - - @Test - public void testDeleteAllSavedBook() { - bookServiceImpl.deleteAllInGraph(); - final long bookCount = bookServiceImpl.bookCount(); - assertEquals(bookCount, 0); - } -} diff --git a/spring-data-neo4j/src/test/java/com/baeldung/spring/data/neo4j/MovieRepositoryTest.java b/spring-data-neo4j/src/test/java/com/baeldung/spring/data/neo4j/MovieRepositoryTest.java new file mode 100644 index 0000000000..4f09284b6a --- /dev/null +++ b/spring-data-neo4j/src/test/java/com/baeldung/spring/data/neo4j/MovieRepositoryTest.java @@ -0,0 +1,131 @@ +package com.baeldung.spring.data.neo4j; + +import com.baeldung.spring.data.neo4j.config.MovieDatabaseNeo4jTestConfiguration; +import com.baeldung.spring.data.neo4j.domain.Movie; +import com.baeldung.spring.data.neo4j.domain.Person; +import com.baeldung.spring.data.neo4j.domain.Role; +import com.baeldung.spring.data.neo4j.repostory.MovieRepository; +import com.baeldung.spring.data.neo4j.repostory.PersonRepository; +import org.junit.Before; +import org.junit.Test; +import org.junit.runner.RunWith; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.test.annotation.DirtiesContext; +import org.springframework.test.context.ActiveProfiles; +import org.springframework.test.context.ContextConfiguration; +import org.springframework.test.context.junit4.SpringJUnit4ClassRunner; + +import java.util.*; + +import static junit.framework.TestCase.assertNull; +import static org.junit.Assert.assertEquals; +import static org.junit.Assert.assertNotNull; + +@RunWith(SpringJUnit4ClassRunner.class) +@ContextConfiguration(classes = MovieDatabaseNeo4jTestConfiguration.class) +@ActiveProfiles(profiles = "test") +public class MovieRepositoryTest { + + @Autowired + private MovieRepository instance; + + @Autowired + private PersonRepository personRepository; + + public MovieRepositoryTest() { + } + + @Before + public void initializeDatabase() { + System.out.println("seeding embedded database"); + Movie matrix = new Movie(); + matrix.setTitle("The Italian Job"); + matrix.setReleased(1999); + instance.save(matrix); + + Person mark = new Person(); + mark.setName("Mark Wahlberg"); + personRepository.save(mark); + + Role neo = new Role(); + neo.setMovie(matrix); + neo.setPerson(mark); + Collection roleNames = new HashSet(); + roleNames.add("Charlie Croker"); + neo.setRoles(roleNames); + List roles = new ArrayList(); + roles.add(neo); + matrix.setRoles(roles); + instance.save(matrix); + } + + @Test + @DirtiesContext + public void testFindByTitle() { + System.out.println("findByTitle"); + String title = "The Italian Job"; + Movie result = instance.findByTitle(title); + assertNotNull(result); + assertEquals(1999, result.getReleased()); + } + + @Test + @DirtiesContext + public void testCount() { + System.out.println("count"); + long result = instance.count(); + assertNotNull(result); + assertEquals(1, result); + } + + @Test + @DirtiesContext + public void testFindAll() { + System.out.println("findAll"); + Collection result = (Collection) instance.findAll(); + assertNotNull(result); + assertEquals(1, result.size()); + } + + @Test + @DirtiesContext + public void testFindByTitleContaining() { + System.out.println("findByTitleContaining"); + String title = "Italian"; + Collection result = instance.findByTitleContaining(title); + assertNotNull(result); + assertEquals(1,result.size()); + } + + @Test + @DirtiesContext + public void testGraph() { + System.out.println("graph"); + List> graph = instance.graph(5); + assertEquals(1,graph.size()); + Map map = graph.get(0); + assertEquals(2,map.size()); + String[] cast = (String[])map.get("cast"); + String movie = (String)map.get("movie"); + assertEquals("The Italian Job",movie); + assertEquals("Mark Wahlberg", cast[0]); + } + + @Test + @DirtiesContext + public void testDeleteMovie() { + System.out.println("deleteMovie"); + instance.delete( + instance.findByTitle("The Italian Job")); + assertNull(instance.findByTitle("The Italian Job")); + } + + @Test + @DirtiesContext + public void testDeleteAll() { + System.out.println("deleteAll"); + instance.deleteAll(); + Collection result = (Collection) instance.findAll(); + assertEquals(0,result.size()); + } +} From 6d897e664b78f0771224f78b38238eb11b3c1704 Mon Sep 17 00:00:00 2001 From: m0cacin0 Date: Tue, 28 Jun 2016 12:14:10 +0300 Subject: [PATCH 068/108] Update README.md --- httpclient/README.md | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/httpclient/README.md b/httpclient/README.md index e06c57da71..a848edfea6 100644 --- a/httpclient/README.md +++ b/httpclient/README.md @@ -1,7 +1,9 @@ ========= - ## HttpClient 4.x Cookbooks and Examples +###The Course +The "REST With Spring" Classes: http://bit.ly/restwithspring + ### Relevant Articles: From d232553cbf0a34ea30277600106f3f9d91992a80 Mon Sep 17 00:00:00 2001 From: m0cacin0 Date: Tue, 28 Jun 2016 12:16:18 +0300 Subject: [PATCH 069/108] Update README.md --- jackson/README.md | 3 +++ 1 file changed, 3 insertions(+) diff --git a/jackson/README.md b/jackson/README.md index 53b9c7c31d..68765de686 100644 --- a/jackson/README.md +++ b/jackson/README.md @@ -2,6 +2,9 @@ ## Jackson Cookbooks and Examples +###The Course +The "REST With Spring" Classes: http://bit.ly/restwithspring + ### Relevant Articles: - [Jackson Ignore Properties on Marshalling](http://www.baeldung.com/jackson-ignore-properties-on-serialization) - [Jackson – Unmarshall to Collection/Array](http://www.baeldung.com/jackson-collection-array) From 594ab38b16d5a4bd66c2b4405c05c59af65f6e23 Mon Sep 17 00:00:00 2001 From: m0cacin0 Date: Tue, 28 Jun 2016 12:20:19 +0300 Subject: [PATCH 070/108] Update README.md --- rest-testing/README.md | 2 ++ 1 file changed, 2 insertions(+) diff --git a/rest-testing/README.md b/rest-testing/README.md index db7f0c8a86..54a2e98dda 100644 --- a/rest-testing/README.md +++ b/rest-testing/README.md @@ -2,6 +2,8 @@ ## REST Testing and Examples +###The Course +The "REST With Spring" Classes: http://bit.ly/restwithspring ### Relevant Articles: - [Test a REST API with Java](http://www.baeldung.com/2011/10/13/integration-testing-a-rest-api/) From 49e996888f586ecf25d29917c93a3f32d73e70de Mon Sep 17 00:00:00 2001 From: m0cacin0 Date: Tue, 28 Jun 2016 12:21:06 +0300 Subject: [PATCH 071/108] Update README.md --- spring-all/README.md | 3 +++ 1 file changed, 3 insertions(+) diff --git a/spring-all/README.md b/spring-all/README.md index 977b8b7357..3188d0a42c 100644 --- a/spring-all/README.md +++ b/spring-all/README.md @@ -2,6 +2,9 @@ ## Spring General Example Project +###The Course +The "REST With Spring" Classes: http://bit.ly/restwithspring + This project is used to replicate Spring Exceptions only. From 92d44e3dcdbe415532864ac12434d26f5c04a219 Mon Sep 17 00:00:00 2001 From: m0cacin0 Date: Tue, 28 Jun 2016 12:21:31 +0300 Subject: [PATCH 072/108] Update README.md --- spring-all/README.md | 5 ++--- 1 file changed, 2 insertions(+), 3 deletions(-) diff --git a/spring-all/README.md b/spring-all/README.md index 3188d0a42c..47c947a414 100644 --- a/spring-all/README.md +++ b/spring-all/README.md @@ -2,11 +2,10 @@ ## Spring General Example Project -###The Course -The "REST With Spring" Classes: http://bit.ly/restwithspring - This project is used to replicate Spring Exceptions only. +###The Course +The "REST With Spring" Classes: http://bit.ly/restwithspring ### Relevant articles: - [Properties with Spring](http://www.baeldung.com/2012/02/06/properties-with-spring) - checkout the `org.baeldung.properties` package for all scenarios of properties injection and usage From 862c13eb9244f0f57bc927adceb8038fb390c9ea Mon Sep 17 00:00:00 2001 From: m0cacin0 Date: Tue, 28 Jun 2016 12:22:26 +0300 Subject: [PATCH 073/108] Update README.md --- spring-data-rest/README.md | 3 +++ 1 file changed, 3 insertions(+) diff --git a/spring-data-rest/README.md b/spring-data-rest/README.md index d9be83113b..7dc439206b 100644 --- a/spring-data-rest/README.md +++ b/spring-data-rest/README.md @@ -1,3 +1,6 @@ +###The Course +The "REST With Spring" Classes: http://bit.ly/restwithspring + # About this project This project contains examples from the [Introduction to Spring Data REST](http://www.baeldung.com/spring-data-rest-intro) article from Baeldung. From 413ccc79c268aef96df59eba9b3024555a13f40f Mon Sep 17 00:00:00 2001 From: m0cacin0 Date: Tue, 28 Jun 2016 12:24:40 +0300 Subject: [PATCH 074/108] Update README.md --- spring-katharsis/README.md | 3 +++ 1 file changed, 3 insertions(+) diff --git a/spring-katharsis/README.md b/spring-katharsis/README.md index ec0141f41a..cf2a001760 100644 --- a/spring-katharsis/README.md +++ b/spring-katharsis/README.md @@ -2,5 +2,8 @@ ## Java Web Application +###The Course +The "REST With Spring" Classes: http://bit.ly/restwithspring + ### Relevant Articles: - [JSON API in a Java Web Application](http://www.baeldung.com/json-api-java-spring-web-app) From 7d1d6327174b6be40435eaa2748cc0dcdc923799 Mon Sep 17 00:00:00 2001 From: m0cacin0 Date: Tue, 28 Jun 2016 12:26:30 +0300 Subject: [PATCH 075/108] Create README.MD --- raml/README.MD | 2 ++ 1 file changed, 2 insertions(+) create mode 100644 raml/README.MD diff --git a/raml/README.MD b/raml/README.MD new file mode 100644 index 0000000000..2a87b46021 --- /dev/null +++ b/raml/README.MD @@ -0,0 +1,2 @@ +###The Course +The "REST With Spring" Classes: http://bit.ly/restwithspring From 779b8ecfd64ca93367ea0fbc86c964c39e5f7a4b Mon Sep 17 00:00:00 2001 From: m0cacin0 Date: Tue, 28 Jun 2016 12:27:04 +0300 Subject: [PATCH 076/108] Create README.MD --- spring-boot/README.MD | 2 ++ 1 file changed, 2 insertions(+) create mode 100644 spring-boot/README.MD diff --git a/spring-boot/README.MD b/spring-boot/README.MD new file mode 100644 index 0000000000..2a87b46021 --- /dev/null +++ b/spring-boot/README.MD @@ -0,0 +1,2 @@ +###The Course +The "REST With Spring" Classes: http://bit.ly/restwithspring From 46d5938ab63335c214e0903020a176b38cf2784d Mon Sep 17 00:00:00 2001 From: m0cacin0 Date: Tue, 28 Jun 2016 12:27:43 +0300 Subject: [PATCH 077/108] Update README.md --- spring-mvc-java/README.md | 2 ++ 1 file changed, 2 insertions(+) diff --git a/spring-mvc-java/README.md b/spring-mvc-java/README.md index e5264b0370..951d80033e 100644 --- a/spring-mvc-java/README.md +++ b/spring-mvc-java/README.md @@ -2,6 +2,8 @@ ## Spring MVC with Java Configuration Example Project +###The Course +The "REST With Spring" Classes: http://bit.ly/restwithspring ### Relevant Articles: - [Spring Bean Annotations](http://www.baeldung.com/spring-bean-annotations) From 2d65d5227434b6b8ba63dedd60edfaedd20dd72c Mon Sep 17 00:00:00 2001 From: m0cacin0 Date: Tue, 28 Jun 2016 12:28:30 +0300 Subject: [PATCH 078/108] Update README.md --- spring-mvc-no-xml/README.md | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/spring-mvc-no-xml/README.md b/spring-mvc-no-xml/README.md index 5ffe2385b5..208cb35f78 100644 --- a/spring-mvc-no-xml/README.md +++ b/spring-mvc-no-xml/README.md @@ -2,6 +2,8 @@ ## Spring MVC with NO XML Configuration Example Project +###The Course +The "REST With Spring" Classes: http://bit.ly/restwithspring ### Relevant Articles: -- \ No newline at end of file +- From 1f2666090c39959d0782d90c302979bcbe7d4f54 Mon Sep 17 00:00:00 2001 From: m0cacin0 Date: Tue, 28 Jun 2016 12:29:00 +0300 Subject: [PATCH 079/108] Update README.md --- spring-mvc-xml/README.md | 3 +++ 1 file changed, 3 insertions(+) diff --git a/spring-mvc-xml/README.md b/spring-mvc-xml/README.md index 2409ec8174..ce823a9682 100644 --- a/spring-mvc-xml/README.md +++ b/spring-mvc-xml/README.md @@ -1,5 +1,8 @@ ========= +###The Course +The "REST With Spring" Classes: http://bit.ly/restwithspring + ## Spring MVC with XML Configuration Example Project - access a sample jsp page at: `http://localhost:8080/spring-mvc-xml/sample.html` From 96e903feebb8e4441530558ec4775e9061bd819e Mon Sep 17 00:00:00 2001 From: m0cacin0 Date: Tue, 28 Jun 2016 12:29:36 +0300 Subject: [PATCH 080/108] Create README.MD --- spring-rest-docs/README.MD | 2 ++ 1 file changed, 2 insertions(+) create mode 100644 spring-rest-docs/README.MD diff --git a/spring-rest-docs/README.MD b/spring-rest-docs/README.MD new file mode 100644 index 0000000000..2a87b46021 --- /dev/null +++ b/spring-rest-docs/README.MD @@ -0,0 +1,2 @@ +###The Course +The "REST With Spring" Classes: http://bit.ly/restwithspring From 7d7c5f3d8a86249177f0dce8ee0806a0d7c22cc4 Mon Sep 17 00:00:00 2001 From: m0cacin0 Date: Tue, 28 Jun 2016 12:30:06 +0300 Subject: [PATCH 081/108] Update README.md --- spring-rest/README.md | 2 ++ 1 file changed, 2 insertions(+) diff --git a/spring-rest/README.md b/spring-rest/README.md index 9d373962c4..7d993b38b8 100644 --- a/spring-rest/README.md +++ b/spring-rest/README.md @@ -2,6 +2,8 @@ ## Spring REST Example Project +###The Course +The "REST With Spring" Classes: http://bit.ly/restwithspring ### Relevant Articles: - [Spring @RequestMapping](http://www.baeldung.com/spring-requestmapping) From 89cae684875290955a524217bedc6f224d2785e7 Mon Sep 17 00:00:00 2001 From: m0cacin0 Date: Tue, 28 Jun 2016 12:30:45 +0300 Subject: [PATCH 082/108] Update README.md --- spring-security-basic-auth/README.md | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/spring-security-basic-auth/README.md b/spring-security-basic-auth/README.md index 95e45ae519..f3c29e1777 100644 --- a/spring-security-basic-auth/README.md +++ b/spring-security-basic-auth/README.md @@ -2,6 +2,8 @@ ## Spring Security with Basic Authentication Example Project +###The Course +The "Learn Spring Security" Classes: http://bit.ly/learnspringsecurity ### Relevant Article: - [Spring Security - security none, filters none, access permitAll](http://www.baeldung.com/security-none-filters-none-access-permitAll) @@ -9,4 +11,4 @@ ### Notes -- the project includes both views as well as a REST layer \ No newline at end of file +- the project includes both views as well as a REST layer From 134a4a0e1ae2415491596fbdb3172fde3b2e8c16 Mon Sep 17 00:00:00 2001 From: m0cacin0 Date: Tue, 28 Jun 2016 12:31:19 +0300 Subject: [PATCH 083/108] Create README.MD --- spring-security-client/README.MD | 2 ++ 1 file changed, 2 insertions(+) create mode 100644 spring-security-client/README.MD diff --git a/spring-security-client/README.MD b/spring-security-client/README.MD new file mode 100644 index 0000000000..2a87b46021 --- /dev/null +++ b/spring-security-client/README.MD @@ -0,0 +1,2 @@ +###The Course +The "REST With Spring" Classes: http://bit.ly/restwithspring From 4e183efda376f63d89dc25e8565e6927eee2f401 Mon Sep 17 00:00:00 2001 From: m0cacin0 Date: Tue, 28 Jun 2016 12:32:12 +0300 Subject: [PATCH 084/108] Create README.MD --- spring-scurity-custom-permission/README.MD | 2 ++ 1 file changed, 2 insertions(+) create mode 100644 spring-scurity-custom-permission/README.MD diff --git a/spring-scurity-custom-permission/README.MD b/spring-scurity-custom-permission/README.MD new file mode 100644 index 0000000000..8fb14fa522 --- /dev/null +++ b/spring-scurity-custom-permission/README.MD @@ -0,0 +1,2 @@ +###The Course +The "Learn Spring Security" Classes: http://bit.ly/learnspringsecurity From f0e103b1911e8eb808f6d4d955a055a2cf350646 Mon Sep 17 00:00:00 2001 From: m0cacin0 Date: Tue, 28 Jun 2016 12:32:45 +0300 Subject: [PATCH 085/108] Update README.md --- spring-security-mvc-custom/README.md | 2 ++ 1 file changed, 2 insertions(+) diff --git a/spring-security-mvc-custom/README.md b/spring-security-mvc-custom/README.md index 17f32e4a2f..cbf5fc6a97 100644 --- a/spring-security-mvc-custom/README.md +++ b/spring-security-mvc-custom/README.md @@ -2,6 +2,8 @@ ## Spring Security Login Example Project +###The Course +The "REST With Spring" Classes: http://bit.ly/restwithspring ### Relevant Articles: - [Spring Security Remember Me](http://www.baeldung.com/spring-security-remember-me) From 915fa89f8949c6ca5966ad93df3cee64d6dbaa50 Mon Sep 17 00:00:00 2001 From: m0cacin0 Date: Tue, 28 Jun 2016 12:33:11 +0300 Subject: [PATCH 086/108] Update README.md --- spring-security-rest-custom/README.md | 3 +++ 1 file changed, 3 insertions(+) diff --git a/spring-security-rest-custom/README.md b/spring-security-rest-custom/README.md index f19af32d41..38dc638e8d 100644 --- a/spring-security-rest-custom/README.md +++ b/spring-security-rest-custom/README.md @@ -2,6 +2,9 @@ ## Spring Security for REST Example Project +###The Course +The "REST With Spring" Classes: http://bit.ly/restwithspring + ### Relevant Articles: - [Spring Security Authentication Provider](http://www.baeldung.com/spring-security-authentication-provider) - [Retrieve User Information in Spring Security](http://www.baeldung.com/get-user-in-spring-security) From 5b80cbd556d8bd95afa08e09daada41310ce9559 Mon Sep 17 00:00:00 2001 From: m0cacin0 Date: Tue, 28 Jun 2016 12:33:40 +0300 Subject: [PATCH 087/108] Update README.md --- spring-security-mvc-digest-auth/README.md | 2 ++ 1 file changed, 2 insertions(+) diff --git a/spring-security-mvc-digest-auth/README.md b/spring-security-mvc-digest-auth/README.md index 3b93a84505..21835266bf 100644 --- a/spring-security-mvc-digest-auth/README.md +++ b/spring-security-mvc-digest-auth/README.md @@ -2,6 +2,8 @@ ## Spring Security with Digest Authentication Example Project +###The Course +The "Learn Spring Security" Classes: http://bit.ly/learnspringsecurity ### Relevant Article: - [Spring Security Digest Authentication](http://www.baeldung.com/spring-security-digest-authentication) From 71e18a28a09e8d447ad21c0650b6398ca4535177 Mon Sep 17 00:00:00 2001 From: m0cacin0 Date: Tue, 28 Jun 2016 12:34:22 +0300 Subject: [PATCH 088/108] Update README.md --- spring-security-mvc-ldap/README.md | 2 ++ 1 file changed, 2 insertions(+) diff --git a/spring-security-mvc-ldap/README.md b/spring-security-mvc-ldap/README.md index 686f611f99..1eb3b75405 100644 --- a/spring-security-mvc-ldap/README.md +++ b/spring-security-mvc-ldap/README.md @@ -1,6 +1,8 @@ ## Spring Security with LDAP Example Project +###The Course +The "Learn Spring Security" Classes: http://bit.ly/learnspringsecurity ### Relevant Article: - [Spring Security - security none, filters none, access permitAll](http://www.baeldung.com/security-none-filters-none-access-permitAll) From 2018411b14a8e10f7b64aed233403a1c74f7e378 Mon Sep 17 00:00:00 2001 From: m0cacin0 Date: Tue, 28 Jun 2016 12:35:04 +0300 Subject: [PATCH 089/108] Update README.md --- spring-security-mvc-login/README.md | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/spring-security-mvc-login/README.md b/spring-security-mvc-login/README.md index 256078f4b6..448c25d27b 100644 --- a/spring-security-mvc-login/README.md +++ b/spring-security-mvc-login/README.md @@ -2,11 +2,13 @@ ## Spring Security Login Example Project +###The Course +The "Learn Spring Security" Classes: http://bit.ly/learnspringsecurity ### Relevant Articles: - [Spring Security Form Login](http://www.baeldung.com/spring-security-login) - [Spring Security Logout](http://www.baeldung.com/spring-security-logout) -- [Spring Security Expressions – hasRole Example](http://www.baeldung.com/spring-security-expressions-basic) +- [Spring Security Expressions – hasRole Example](http://www.baeldung.com/spring-security-expressions-basic) ### Build the Project From 4c912d8a5107e8c11837efa3ae5fb698547779c8 Mon Sep 17 00:00:00 2001 From: m0cacin0 Date: Tue, 28 Jun 2016 12:35:35 +0300 Subject: [PATCH 090/108] Update README.md --- spring-security-mvc-persisted-remember-me/README.md | 2 ++ 1 file changed, 2 insertions(+) diff --git a/spring-security-mvc-persisted-remember-me/README.md b/spring-security-mvc-persisted-remember-me/README.md index df83fd3d77..0d5f4f5f0e 100644 --- a/spring-security-mvc-persisted-remember-me/README.md +++ b/spring-security-mvc-persisted-remember-me/README.md @@ -2,6 +2,8 @@ ## Spring Security Persisted Remember Me Example Project +###The Course +The "Learn Spring Security" Classes: http://bit.ly/learnspringsecurity ### Relevant Articles: - [Spring Security Persisted Remember Me](http://www.baeldung.com/spring-security-persistent-remember-me) From ed9a36bd31738271a47b89cfc7f575edb1280fdb Mon Sep 17 00:00:00 2001 From: m0cacin0 Date: Tue, 28 Jun 2016 12:36:02 +0300 Subject: [PATCH 091/108] Update README.md --- spring-security-mvc-session/README.md | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/spring-security-mvc-session/README.md b/spring-security-mvc-session/README.md index 0df728688a..28f216c130 100644 --- a/spring-security-mvc-session/README.md +++ b/spring-security-mvc-session/README.md @@ -2,9 +2,11 @@ ## Spring Security Login Example Project +###The Course +The "Learn Spring Security" Classes: http://bit.ly/learnspringsecurity ### Relevant Articles: -- [HttpSessionListener Example – Monitoring](http://www.baeldung.com/httpsessionlistener_with_metrics) +- [HttpSessionListener Example – Monitoring](http://www.baeldung.com/httpsessionlistener_with_metrics) - [Spring Security Session Management](http://www.baeldung.com/spring-security-session) From 4162c4671e9bff40e950cd19e3850617ab6bb234 Mon Sep 17 00:00:00 2001 From: m0cacin0 Date: Tue, 28 Jun 2016 12:36:31 +0300 Subject: [PATCH 092/108] Update README.md --- spring-security-rest-basic-auth/README.md | 2 ++ 1 file changed, 2 insertions(+) diff --git a/spring-security-rest-basic-auth/README.md b/spring-security-rest-basic-auth/README.md index 723bcebbdd..9621773d91 100644 --- a/spring-security-rest-basic-auth/README.md +++ b/spring-security-rest-basic-auth/README.md @@ -2,6 +2,8 @@ ## REST API with Basic Authentication - Example Project +###The Course +The "Learn Spring Security" Classes: http://bit.ly/learnspringsecurity ### Relevant Articles: - [RestTemplate with Basic Authentication in Spring](http://www.baeldung.com/2012/04/16/how-to-use-resttemplate-with-basic-authentication-in-spring-3-1) From e3fc9bca7de968c634819edfbed483fdcf6b0d5e Mon Sep 17 00:00:00 2001 From: m0cacin0 Date: Tue, 28 Jun 2016 12:36:58 +0300 Subject: [PATCH 093/108] Update README.md --- spring-security-rest-digest-auth/README.md | 2 ++ 1 file changed, 2 insertions(+) diff --git a/spring-security-rest-digest-auth/README.md b/spring-security-rest-digest-auth/README.md index 06e847edad..4fdc934fe5 100644 --- a/spring-security-rest-digest-auth/README.md +++ b/spring-security-rest-digest-auth/README.md @@ -2,6 +2,8 @@ ## REST API with Digest Authentication - Example Project +###The Course +The "Learn Spring Security" Classes: http://bit.ly/learnspringsecurity ### Relevant Articles: - [RestTemplate with Digest Authentication](http://www.baeldung.com/resttemplate-digest-authentication) From 9b7cf1152d2709df58b0e8bab9503ded68343d55 Mon Sep 17 00:00:00 2001 From: m0cacin0 Date: Tue, 28 Jun 2016 12:37:34 +0300 Subject: [PATCH 094/108] Update README.md --- spring-security-rest-full/README.md | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/spring-security-rest-full/README.md b/spring-security-rest-full/README.md index 72e8636df1..ca18ebe79a 100644 --- a/spring-security-rest-full/README.md +++ b/spring-security-rest-full/README.md @@ -2,8 +2,9 @@ ## REST Example Project with Spring Security -### The Course - The "REST With Spring" Classes: http://bit.ly/restwithspring +### Courses +The "REST With Spring" Classes: http://bit.ly/restwithspring +The "Learn Spring Security" Classes: http://bit.ly/learnspringsecurity ### Relevant Articles: - [Spring Security Expressions - hasRole Example](http://www.baeldung.com/spring-security-expressions-basic) From ea0907bd383cd5fbcfcf111fbba084932f34852c Mon Sep 17 00:00:00 2001 From: m0cacin0 Date: Tue, 28 Jun 2016 12:38:19 +0300 Subject: [PATCH 095/108] Update README.md --- spring-security-rest-full/README.md | 1 + 1 file changed, 1 insertion(+) diff --git a/spring-security-rest-full/README.md b/spring-security-rest-full/README.md index ca18ebe79a..947d32e87c 100644 --- a/spring-security-rest-full/README.md +++ b/spring-security-rest-full/README.md @@ -4,6 +4,7 @@ ### Courses The "REST With Spring" Classes: http://bit.ly/restwithspring + The "Learn Spring Security" Classes: http://bit.ly/learnspringsecurity ### Relevant Articles: From a79e7b7ea24ba8285a858d1ef06d52165b86969b Mon Sep 17 00:00:00 2001 From: m0cacin0 Date: Tue, 28 Jun 2016 12:38:51 +0300 Subject: [PATCH 096/108] Update README.md --- spring-security-rest/README.md | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/spring-security-rest/README.md b/spring-security-rest/README.md index 290cd491e0..87f14a9047 100644 --- a/spring-security-rest/README.md +++ b/spring-security-rest/README.md @@ -2,6 +2,10 @@ ## Spring Security for REST Example Project +### Courses +The "REST With Spring" Classes: http://bit.ly/restwithspring + +The "Learn Spring Security" Classes: http://bit.ly/learnspringsecurity ### Relevant Articles: - [Spring REST Service Security](http://www.baeldung.com/2011/10/31/securing-a-restful-web-service-with-spring-security-3-1-part-3/) From 1a3e005442fc76b9b1428eb21fd94a8bc4af81fe Mon Sep 17 00:00:00 2001 From: Sameera Date: Tue, 28 Jun 2016 23:17:24 +0530 Subject: [PATCH 097/108] updating test cases --- spring-data-neo4j/pom.xml | 42 ------------------- .../MovieDatabaseNeo4jConfiguration.java | 2 - .../data/neo4j/repostory/MovieRepository.java | 2 - .../data/neo4j/MovieRepositoryTest.java | 12 +++--- 4 files changed, 7 insertions(+), 51 deletions(-) diff --git a/spring-data-neo4j/pom.xml b/spring-data-neo4j/pom.xml index 320b6ce019..a5a2e9220a 100644 --- a/spring-data-neo4j/pom.xml +++ b/spring-data-neo4j/pom.xml @@ -13,15 +13,8 @@ UTF-8 3.0.1 4.1.1.RELEASE - Hopper-SR1
- - org.springframework.boot - spring-boot-starter-parent - 1.3.0.RELEASE - - org.springframework.data @@ -29,11 +22,6 @@ ${spring-data-neo4j.version} - - org.springframework.boot - spring-boot-starter-data-rest - - com.voodoodyne.jackson.jsog jackson-jsog @@ -41,9 +29,6 @@ compile - - - org.springframework.boot spring-boot-starter-test @@ -89,11 +74,6 @@ junit 4.12 - - junit - junit - 4.12 - org.springframework spring-test @@ -107,29 +87,7 @@ maven-compiler-plugin - - org.springframework.boot - spring-boot-maven-plugin - - - - spring-milestones - http://repo.spring.io/libs-snapshot - - true - - - - - - spring-milestones - http://repo.spring.io/libs-snapshot - - true - - - diff --git a/spring-data-neo4j/src/main/java/com/baeldung/spring/data/neo4j/config/MovieDatabaseNeo4jConfiguration.java b/spring-data-neo4j/src/main/java/com/baeldung/spring/data/neo4j/config/MovieDatabaseNeo4jConfiguration.java index 6e57eb1f36..003e72971a 100644 --- a/spring-data-neo4j/src/main/java/com/baeldung/spring/data/neo4j/config/MovieDatabaseNeo4jConfiguration.java +++ b/spring-data-neo4j/src/main/java/com/baeldung/spring/data/neo4j/config/MovieDatabaseNeo4jConfiguration.java @@ -1,7 +1,6 @@ package com.baeldung.spring.data.neo4j.config; import org.neo4j.ogm.session.SessionFactory; -import org.springframework.boot.autoconfigure.EnableAutoConfiguration; import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.ComponentScan; import org.springframework.context.annotation.Configuration; @@ -13,7 +12,6 @@ import org.springframework.transaction.annotation.EnableTransactionManagement; @EnableTransactionManagement @EnableScheduling -@EnableAutoConfiguration @ComponentScan(basePackages = {"com.baeldung.spring.data.neo4j.services"}) @Configuration @EnableNeo4jRepositories(basePackages = "com.baeldung.spring.data.neo4j.repostory") diff --git a/spring-data-neo4j/src/main/java/com/baeldung/spring/data/neo4j/repostory/MovieRepository.java b/spring-data-neo4j/src/main/java/com/baeldung/spring/data/neo4j/repostory/MovieRepository.java index 3c5953eff3..90833d7c70 100644 --- a/spring-data-neo4j/src/main/java/com/baeldung/spring/data/neo4j/repostory/MovieRepository.java +++ b/spring-data-neo4j/src/main/java/com/baeldung/spring/data/neo4j/repostory/MovieRepository.java @@ -4,14 +4,12 @@ import com.baeldung.spring.data.neo4j.domain.Movie; import org.springframework.data.neo4j.annotation.Query; import org.springframework.data.neo4j.repository.GraphRepository; import org.springframework.data.repository.query.Param; -import org.springframework.data.rest.core.annotation.RepositoryRestResource; import java.util.Collection; import java.util.List; import java.util.Map; -@RepositoryRestResource(collectionResourceRel = "movies", path = "movies") public interface MovieRepository extends GraphRepository { Movie findByTitle(@Param("title") String title); diff --git a/spring-data-neo4j/src/test/java/com/baeldung/spring/data/neo4j/MovieRepositoryTest.java b/spring-data-neo4j/src/test/java/com/baeldung/spring/data/neo4j/MovieRepositoryTest.java index 4f09284b6a..53ef380dbd 100644 --- a/spring-data-neo4j/src/test/java/com/baeldung/spring/data/neo4j/MovieRepositoryTest.java +++ b/spring-data-neo4j/src/test/java/com/baeldung/spring/data/neo4j/MovieRepositoryTest.java @@ -82,7 +82,8 @@ public class MovieRepositoryTest { @DirtiesContext public void testFindAll() { System.out.println("findAll"); - Collection result = (Collection) instance.findAll(); + Collection result = + (Collection) instance.findAll(); assertNotNull(result); assertEquals(1, result.size()); } @@ -92,7 +93,8 @@ public class MovieRepositoryTest { public void testFindByTitleContaining() { System.out.println("findByTitleContaining"); String title = "Italian"; - Collection result = instance.findByTitleContaining(title); + Collection result = + instance.findByTitleContaining(title); assertNotNull(result); assertEquals(1,result.size()); } @@ -115,8 +117,7 @@ public class MovieRepositoryTest { @DirtiesContext public void testDeleteMovie() { System.out.println("deleteMovie"); - instance.delete( - instance.findByTitle("The Italian Job")); + instance.delete(instance.findByTitle("The Italian Job")); assertNull(instance.findByTitle("The Italian Job")); } @@ -125,7 +126,8 @@ public class MovieRepositoryTest { public void testDeleteAll() { System.out.println("deleteAll"); instance.deleteAll(); - Collection result = (Collection) instance.findAll(); + Collection result = + (Collection) instance.findAll(); assertEquals(0,result.size()); } } From 548365130aa9d1230eb2c21e2915857c40a2cd9f Mon Sep 17 00:00:00 2001 From: Sameera Date: Tue, 28 Jun 2016 23:38:40 +0530 Subject: [PATCH 098/108] updating test cases --- .../data/neo4j/config/MovieDatabaseNeo4jConfiguration.java | 2 -- .../baeldung/spring/data/neo4j/repostory/MovieRepository.java | 3 ++- 2 files changed, 2 insertions(+), 3 deletions(-) diff --git a/spring-data-neo4j/src/main/java/com/baeldung/spring/data/neo4j/config/MovieDatabaseNeo4jConfiguration.java b/spring-data-neo4j/src/main/java/com/baeldung/spring/data/neo4j/config/MovieDatabaseNeo4jConfiguration.java index 003e72971a..ac9a7260be 100644 --- a/spring-data-neo4j/src/main/java/com/baeldung/spring/data/neo4j/config/MovieDatabaseNeo4jConfiguration.java +++ b/spring-data-neo4j/src/main/java/com/baeldung/spring/data/neo4j/config/MovieDatabaseNeo4jConfiguration.java @@ -10,8 +10,6 @@ import org.springframework.scheduling.annotation.EnableScheduling; import org.springframework.transaction.annotation.EnableTransactionManagement; -@EnableTransactionManagement -@EnableScheduling @ComponentScan(basePackages = {"com.baeldung.spring.data.neo4j.services"}) @Configuration @EnableNeo4jRepositories(basePackages = "com.baeldung.spring.data.neo4j.repostory") diff --git a/spring-data-neo4j/src/main/java/com/baeldung/spring/data/neo4j/repostory/MovieRepository.java b/spring-data-neo4j/src/main/java/com/baeldung/spring/data/neo4j/repostory/MovieRepository.java index 90833d7c70..850d2336ba 100644 --- a/spring-data-neo4j/src/main/java/com/baeldung/spring/data/neo4j/repostory/MovieRepository.java +++ b/spring-data-neo4j/src/main/java/com/baeldung/spring/data/neo4j/repostory/MovieRepository.java @@ -4,12 +4,13 @@ import com.baeldung.spring.data.neo4j.domain.Movie; import org.springframework.data.neo4j.annotation.Query; import org.springframework.data.neo4j.repository.GraphRepository; import org.springframework.data.repository.query.Param; +import org.springframework.stereotype.Repository; import java.util.Collection; import java.util.List; import java.util.Map; - +@Repository public interface MovieRepository extends GraphRepository { Movie findByTitle(@Param("title") String title); From 31b3e0fa167dc56af6b6144361db3d03382ee5d5 Mon Sep 17 00:00:00 2001 From: Sameera Date: Tue, 28 Jun 2016 23:48:45 +0530 Subject: [PATCH 099/108] updating test cases --- .../spring/data/neo4j/domain/Movie.java | 2 - .../data/neo4j/MovieRepositoryTest.java | 66 +++++++++---------- 2 files changed, 33 insertions(+), 35 deletions(-) diff --git a/spring-data-neo4j/src/main/java/com/baeldung/spring/data/neo4j/domain/Movie.java b/spring-data-neo4j/src/main/java/com/baeldung/spring/data/neo4j/domain/Movie.java index 8d68b69c05..e48dfaf276 100644 --- a/spring-data-neo4j/src/main/java/com/baeldung/spring/data/neo4j/domain/Movie.java +++ b/spring-data-neo4j/src/main/java/com/baeldung/spring/data/neo4j/domain/Movie.java @@ -23,8 +23,6 @@ public class Movie { @Relationship(type="ACTED_IN", direction = Relationship.INCOMING) private List roles; -// end::movie[] - public Movie() { } public String getTitle() { diff --git a/spring-data-neo4j/src/test/java/com/baeldung/spring/data/neo4j/MovieRepositoryTest.java b/spring-data-neo4j/src/test/java/com/baeldung/spring/data/neo4j/MovieRepositoryTest.java index 53ef380dbd..92d27d2a1e 100644 --- a/spring-data-neo4j/src/test/java/com/baeldung/spring/data/neo4j/MovieRepositoryTest.java +++ b/spring-data-neo4j/src/test/java/com/baeldung/spring/data/neo4j/MovieRepositoryTest.java @@ -25,38 +25,38 @@ import static org.junit.Assert.assertNotNull; @ContextConfiguration(classes = MovieDatabaseNeo4jTestConfiguration.class) @ActiveProfiles(profiles = "test") public class MovieRepositoryTest { - + @Autowired private MovieRepository instance; @Autowired private PersonRepository personRepository; - + public MovieRepositoryTest() { } - - @Before + + @Before public void initializeDatabase() { - System.out.println("seeding embedded database"); - Movie matrix = new Movie(); - matrix.setTitle("The Italian Job"); - matrix.setReleased(1999); - instance.save(matrix); - - Person mark = new Person(); - mark.setName("Mark Wahlberg"); - personRepository.save(mark); - - Role neo = new Role(); - neo.setMovie(matrix); - neo.setPerson(mark); - Collection roleNames = new HashSet(); - roleNames.add("Charlie Croker"); - neo.setRoles(roleNames); - List roles = new ArrayList(); - roles.add(neo); - matrix.setRoles(roles); - instance.save(matrix); + System.out.println("seeding embedded database"); + Movie italianJob = new Movie(); + italianJob.setTitle("The Italian Job"); + italianJob.setReleased(1999); + instance.save(italianJob); + + Person mark = new Person(); + mark.setName("Mark Wahlberg"); + personRepository.save(mark); + + Role charlie = new Role(); + charlie.setMovie(italianJob); + charlie.setPerson(mark); + Collection roleNames = new HashSet(); + roleNames.add("Charlie Croker"); + charlie.setRoles(roleNames); + List roles = new ArrayList(); + roles.add(charlie); + italianJob.setRoles(roles); + instance.save(italianJob); } @Test @@ -96,20 +96,20 @@ public class MovieRepositoryTest { Collection result = instance.findByTitleContaining(title); assertNotNull(result); - assertEquals(1,result.size()); + assertEquals(1, result.size()); } @Test @DirtiesContext public void testGraph() { System.out.println("graph"); - List> graph = instance.graph(5); - assertEquals(1,graph.size()); - Map map = graph.get(0); - assertEquals(2,map.size()); - String[] cast = (String[])map.get("cast"); - String movie = (String)map.get("movie"); - assertEquals("The Italian Job",movie); + List> graph = instance.graph(5); + assertEquals(1, graph.size()); + Map map = graph.get(0); + assertEquals(2, map.size()); + String[] cast = (String[]) map.get("cast"); + String movie = (String) map.get("movie"); + assertEquals("The Italian Job", movie); assertEquals("Mark Wahlberg", cast[0]); } @@ -128,6 +128,6 @@ public class MovieRepositoryTest { instance.deleteAll(); Collection result = (Collection) instance.findAll(); - assertEquals(0,result.size()); + assertEquals(0, result.size()); } } From d4c2d508a407e4011e1fa87937fa71287c2acff9 Mon Sep 17 00:00:00 2001 From: Sameera Date: Wed, 29 Jun 2016 00:31:38 +0530 Subject: [PATCH 100/108] updating test cases --- .../data/neo4j/MovieRepositoryTest.java | 28 +++++++++---------- 1 file changed, 14 insertions(+), 14 deletions(-) diff --git a/spring-data-neo4j/src/test/java/com/baeldung/spring/data/neo4j/MovieRepositoryTest.java b/spring-data-neo4j/src/test/java/com/baeldung/spring/data/neo4j/MovieRepositoryTest.java index 92d27d2a1e..8061b3c2a7 100644 --- a/spring-data-neo4j/src/test/java/com/baeldung/spring/data/neo4j/MovieRepositoryTest.java +++ b/spring-data-neo4j/src/test/java/com/baeldung/spring/data/neo4j/MovieRepositoryTest.java @@ -27,7 +27,7 @@ import static org.junit.Assert.assertNotNull; public class MovieRepositoryTest { @Autowired - private MovieRepository instance; + private MovieRepository movieRepository; @Autowired private PersonRepository personRepository; @@ -41,7 +41,7 @@ public class MovieRepositoryTest { Movie italianJob = new Movie(); italianJob.setTitle("The Italian Job"); italianJob.setReleased(1999); - instance.save(italianJob); + movieRepository.save(italianJob); Person mark = new Person(); mark.setName("Mark Wahlberg"); @@ -56,7 +56,7 @@ public class MovieRepositoryTest { List roles = new ArrayList(); roles.add(charlie); italianJob.setRoles(roles); - instance.save(italianJob); + movieRepository.save(italianJob); } @Test @@ -64,7 +64,7 @@ public class MovieRepositoryTest { public void testFindByTitle() { System.out.println("findByTitle"); String title = "The Italian Job"; - Movie result = instance.findByTitle(title); + Movie result = movieRepository.findByTitle(title); assertNotNull(result); assertEquals(1999, result.getReleased()); } @@ -73,9 +73,9 @@ public class MovieRepositoryTest { @DirtiesContext public void testCount() { System.out.println("count"); - long result = instance.count(); - assertNotNull(result); - assertEquals(1, result); + long movieCount = movieRepository.count(); + assertNotNull(movieCount); + assertEquals(1, movieCount); } @Test @@ -83,7 +83,7 @@ public class MovieRepositoryTest { public void testFindAll() { System.out.println("findAll"); Collection result = - (Collection) instance.findAll(); + (Collection) movieRepository.findAll(); assertNotNull(result); assertEquals(1, result.size()); } @@ -94,7 +94,7 @@ public class MovieRepositoryTest { System.out.println("findByTitleContaining"); String title = "Italian"; Collection result = - instance.findByTitleContaining(title); + movieRepository.findByTitleContaining(title); assertNotNull(result); assertEquals(1, result.size()); } @@ -103,7 +103,7 @@ public class MovieRepositoryTest { @DirtiesContext public void testGraph() { System.out.println("graph"); - List> graph = instance.graph(5); + List> graph = movieRepository.graph(5); assertEquals(1, graph.size()); Map map = graph.get(0); assertEquals(2, map.size()); @@ -117,17 +117,17 @@ public class MovieRepositoryTest { @DirtiesContext public void testDeleteMovie() { System.out.println("deleteMovie"); - instance.delete(instance.findByTitle("The Italian Job")); - assertNull(instance.findByTitle("The Italian Job")); + movieRepository.delete(movieRepository.findByTitle("The Italian Job")); + assertNull(movieRepository.findByTitle("The Italian Job")); } @Test @DirtiesContext public void testDeleteAll() { System.out.println("deleteAll"); - instance.deleteAll(); + movieRepository.deleteAll(); Collection result = - (Collection) instance.findAll(); + (Collection) movieRepository.findAll(); assertEquals(0, result.size()); } } From 0ab62700ca6edb512da1db470589cad995afa7c6 Mon Sep 17 00:00:00 2001 From: Raquel Garrido Date: Tue, 28 Jun 2016 21:11:04 +0200 Subject: [PATCH 101/108] Last changes (#468) * dom4j * added more parsers * StaxParser * Jaxb binding * Jaxb binding * Finish article * apply some changes * Organize imports --- .../java/com/baeldung/xml/JaxbParser.java | 3 +- .../java/com/baeldung/xml/StaxParser.java | 2 +- .../com/baeldung/xml/binding/Tutorial.java | 8 ++- .../java/com/baeldung/xml/model/Tutorial.java | 49 ------------------- .../com/baeldung/xml/DefaultParserTest.java | 20 ++++---- .../com/baeldung/xml/Dom4JParserTest.java | 30 ++++++------ .../java/com/baeldung/xml/JDomParserTest.java | 16 +++--- .../java/com/baeldung/xml/JaxbParserTest.java | 15 +++--- .../java/com/baeldung/xml/JaxenDemoTest.java | 14 +++--- .../java/com/baeldung/xml/StaxParserTest.java | 17 ++++--- 10 files changed, 61 insertions(+), 113 deletions(-) delete mode 100644 xml/src/main/java/com/baeldung/xml/model/Tutorial.java diff --git a/xml/src/main/java/com/baeldung/xml/JaxbParser.java b/xml/src/main/java/com/baeldung/xml/JaxbParser.java index 9c06ec5fba..758ebb969c 100644 --- a/xml/src/main/java/com/baeldung/xml/JaxbParser.java +++ b/xml/src/main/java/com/baeldung/xml/JaxbParser.java @@ -2,7 +2,6 @@ package com.baeldung.xml; import java.io.File; import java.util.ArrayList; -import java.util.Date; import javax.xml.bind.JAXBContext; import javax.xml.bind.JAXBException; @@ -40,7 +39,7 @@ public class JaxbParser { tut.setType("XML"); tut.setTitle("XML with Jaxb"); tut.setDescription("XML Binding with Jaxb"); - tut.setDate(new Date()); + tut.setDate("04/02/2015"); tut.setAuthor("Jaxb author"); tutorials.getTutorial().add(tut); diff --git a/xml/src/main/java/com/baeldung/xml/StaxParser.java b/xml/src/main/java/com/baeldung/xml/StaxParser.java index 6f83e022f8..e14d872831 100644 --- a/xml/src/main/java/com/baeldung/xml/StaxParser.java +++ b/xml/src/main/java/com/baeldung/xml/StaxParser.java @@ -17,7 +17,7 @@ import javax.xml.stream.events.EndElement; import javax.xml.stream.events.StartElement; import javax.xml.stream.events.XMLEvent; -import com.baeldung.xml.model.Tutorial; +import com.baeldung.xml.binding.Tutorial; public class StaxParser { diff --git a/xml/src/main/java/com/baeldung/xml/binding/Tutorial.java b/xml/src/main/java/com/baeldung/xml/binding/Tutorial.java index c4668a9f77..7201d499d0 100644 --- a/xml/src/main/java/com/baeldung/xml/binding/Tutorial.java +++ b/xml/src/main/java/com/baeldung/xml/binding/Tutorial.java @@ -1,7 +1,5 @@ package com.baeldung.xml.binding; -import java.util.Date; - import javax.xml.bind.annotation.XmlAttribute; import javax.xml.bind.annotation.XmlElement; @@ -11,7 +9,7 @@ public class Tutorial { private String type; private String title; private String description; - private Date date; + private String date; private String author; @@ -44,11 +42,11 @@ public class Tutorial { public void setDescription(String description) { this.description = description; } - public Date getDate() { + public String getDate() { return date; } @XmlElement - public void setDate(Date date) { + public void setDate(String date) { this.date = date; } public String getAuthor() { diff --git a/xml/src/main/java/com/baeldung/xml/model/Tutorial.java b/xml/src/main/java/com/baeldung/xml/model/Tutorial.java deleted file mode 100644 index 40a3f858cf..0000000000 --- a/xml/src/main/java/com/baeldung/xml/model/Tutorial.java +++ /dev/null @@ -1,49 +0,0 @@ -package com.baeldung.xml.model; - -public class Tutorial { - - private String tutId; - private String type; - private String title; - private String description; - private String date; - private String author; - - - public String getTutId() { - return tutId; - } - public void setTutId(String tutId) { - this.tutId = tutId; - } - public String getType() { - return type; - } - public void setType(String type) { - this.type = type; - } - public String getTitle() { - return title; - } - public void setTitle(String title) { - this.title = title; - } - public String getDescription() { - return description; - } - public void setDescription(String description) { - this.description = description; - } - public String getDate() { - return date; - } - public void setDate(String date) { - this.date = date; - } - public String getAuthor() { - return author; - } - public void setAuthor(String author) { - this.author = author; - } -} diff --git a/xml/src/test/java/com/baeldung/xml/DefaultParserTest.java b/xml/src/test/java/com/baeldung/xml/DefaultParserTest.java index 7408e41b92..734e7a93cb 100644 --- a/xml/src/test/java/com/baeldung/xml/DefaultParserTest.java +++ b/xml/src/test/java/com/baeldung/xml/DefaultParserTest.java @@ -1,22 +1,20 @@ package com.baeldung.xml; +import static org.junit.Assert.*; + +import java.io.File; + import org.junit.Test; import org.w3c.dom.Node; import org.w3c.dom.NodeList; -import java.io.File; - -import static org.junit.Assert.assertEquals; -import static org.junit.Assert.assertNotNull; -import static org.junit.Assert.assertTrue; - public class DefaultParserTest { - private final String fileName = "src/test/resources/example.xml"; + final String fileName = "src/test/resources/example.xml"; - private final String fileNameSpace = "src/test/resources/example_namespace.xml"; + final String fileNameSpace = "src/test/resources/example_namespace.xml"; - private DefaultParser parser; + DefaultParser parser; @Test public void getFirstLevelNodeListTest() { @@ -32,7 +30,7 @@ public class DefaultParserTest { parser = new DefaultParser(new File(fileName)); NodeList list = parser.getNodeListByTitle("XML"); - for (int i = 0; i < list.getLength(); i++) { + for (int i = 0; null != list && i < list.getLength(); i++) { Node nod = list.item(i); assertEquals("java", nod.getAttributes().getNamedItem("type").getTextContent()); assertEquals("02", nod.getAttributes().getNamedItem("tutId").getTextContent()); @@ -58,7 +56,7 @@ public class DefaultParserTest { public void getNodeListByDateTest(){ parser = new DefaultParser(new File(fileName)); NodeList list = parser.getNodeListByTitle("04022016"); - for (int i = 0; i < list.getLength(); i++) { + for (int i = 0; null != list && i < list.getLength(); i++) { Node nod = list.item(i); assertEquals("java", nod.getAttributes().getNamedItem("type").getTextContent()); assertEquals("04", nod.getAttributes().getNamedItem("tutId").getTextContent()); diff --git a/xml/src/test/java/com/baeldung/xml/Dom4JParserTest.java b/xml/src/test/java/com/baeldung/xml/Dom4JParserTest.java index 77e5fcdcda..277eca8355 100644 --- a/xml/src/test/java/com/baeldung/xml/Dom4JParserTest.java +++ b/xml/src/test/java/com/baeldung/xml/Dom4JParserTest.java @@ -1,25 +1,25 @@ package com.baeldung.xml; -import org.dom4j.Element; -import org.dom4j.Node; -import org.junit.Test; - -import java.io.File; -import java.util.List; - import static org.junit.Assert.assertEquals; import static org.junit.Assert.assertNotNull; import static org.junit.Assert.assertTrue; +import java.io.File; +import java.util.List; + +import org.dom4j.Element; +import org.dom4j.Node; +import org.junit.Test; + public class Dom4JParserTest { - private static final String FILE_NAME = "src/test/resources/example.xml"; + final String fileName = "src/test/resources/example.xml"; - private Dom4JParser parser; + Dom4JParser parser; @Test public void getRootElementTest() { - parser = new Dom4JParser(new File(FILE_NAME)); + parser = new Dom4JParser(new File(fileName)); Element root = parser.getRootElement(); assertNotNull(root); @@ -28,7 +28,7 @@ public class Dom4JParserTest { @Test public void getFirstElementListTest() { - parser = new Dom4JParser(new File(FILE_NAME)); + parser = new Dom4JParser(new File(fileName)); List firstList = parser.getFirstElementList(); assertNotNull(firstList); @@ -38,7 +38,7 @@ public class Dom4JParserTest { @Test public void getElementByIdTest() { - parser = new Dom4JParser(new File(FILE_NAME)); + parser = new Dom4JParser(new File(fileName)); Node element = parser.getNodeById("03"); String type = element.valueOf("@type"); @@ -47,7 +47,7 @@ public class Dom4JParserTest { @Test public void getElementsListByTitleTest() { - parser = new Dom4JParser(new File(FILE_NAME)); + parser = new Dom4JParser(new File(fileName)); Node element = parser.getElementsListByTitle("XML"); assertEquals("java", element.valueOf("@type")); @@ -58,7 +58,7 @@ public class Dom4JParserTest { @Test public void generateModifiedDocumentTest() { - parser = new Dom4JParser(new File(FILE_NAME)); + parser = new Dom4JParser(new File(fileName)); parser.generateModifiedDocument(); File generatedFile = new File("src/test/resources/example_updated.xml"); @@ -73,7 +73,7 @@ public class Dom4JParserTest { @Test public void generateNewDocumentTest() { - parser = new Dom4JParser(new File(FILE_NAME)); + parser = new Dom4JParser(new File(fileName)); parser.generateNewDocument(); File newFile = new File("src/test/resources/example_new.xml"); diff --git a/xml/src/test/java/com/baeldung/xml/JDomParserTest.java b/xml/src/test/java/com/baeldung/xml/JDomParserTest.java index e4034c48f0..981458469f 100644 --- a/xml/src/test/java/com/baeldung/xml/JDomParserTest.java +++ b/xml/src/test/java/com/baeldung/xml/JDomParserTest.java @@ -1,20 +1,20 @@ package com.baeldung.xml; -import org.jdom2.Element; -import org.junit.Test; - -import java.io.File; -import java.util.List; - import static org.junit.Assert.assertEquals; import static org.junit.Assert.assertNotNull; import static org.junit.Assert.assertTrue; +import java.io.File; +import java.util.List; + +import org.jdom2.Element; +import org.junit.Test; + public class JDomParserTest { - private final String fileName = "src/test/resources/example.xml"; + final String fileName = "src/test/resources/example.xml"; - private JDomParser parser; + JDomParser parser; @Test public void getFirstElementListTest() { diff --git a/xml/src/test/java/com/baeldung/xml/JaxbParserTest.java b/xml/src/test/java/com/baeldung/xml/JaxbParserTest.java index 6e1a201b59..6c31a7bfdd 100644 --- a/xml/src/test/java/com/baeldung/xml/JaxbParserTest.java +++ b/xml/src/test/java/com/baeldung/xml/JaxbParserTest.java @@ -1,19 +1,20 @@ package com.baeldung.xml; -import com.baeldung.xml.binding.Tutorials; -import org.junit.Test; - -import java.io.File; - import static org.junit.Assert.assertNotNull; import static org.junit.Assert.assertTrue; +import java.io.File; + +import org.junit.Test; + +import com.baeldung.xml.binding.Tutorials; + public class JaxbParserTest { - private final String fileName = "src/test/resources/example.xml"; + final String fileName = "src/test/resources/example.xml"; - private JaxbParser parser; + JaxbParser parser; @Test public void getFullDocumentTest(){ diff --git a/xml/src/test/java/com/baeldung/xml/JaxenDemoTest.java b/xml/src/test/java/com/baeldung/xml/JaxenDemoTest.java index 8a88484f11..2521fcaf8a 100644 --- a/xml/src/test/java/com/baeldung/xml/JaxenDemoTest.java +++ b/xml/src/test/java/com/baeldung/xml/JaxenDemoTest.java @@ -1,18 +1,18 @@ package com.baeldung.xml; -import org.junit.Test; - -import java.io.File; -import java.util.List; - import static org.junit.Assert.assertNotNull; import static org.junit.Assert.assertTrue; +import java.io.File; +import java.util.List; + +import org.junit.Test; + public class JaxenDemoTest { - private final String fileName = "src/test/resources/example.xml"; + final String fileName = "src/test/resources/example.xml"; - private JaxenDemo jaxenDemo; + JaxenDemo jaxenDemo; @Test public void getFirstLevelNodeListTest() { diff --git a/xml/src/test/java/com/baeldung/xml/StaxParserTest.java b/xml/src/test/java/com/baeldung/xml/StaxParserTest.java index d1080c88ac..cf7ee1ee75 100644 --- a/xml/src/test/java/com/baeldung/xml/StaxParserTest.java +++ b/xml/src/test/java/com/baeldung/xml/StaxParserTest.java @@ -1,19 +1,20 @@ package com.baeldung.xml; -import com.baeldung.xml.model.Tutorial; -import org.junit.Test; - -import java.io.File; -import java.util.List; - import static org.junit.Assert.assertNotNull; import static org.junit.Assert.assertTrue; +import java.io.File; +import java.util.List; + +import org.junit.Test; + +import com.baeldung.xml.binding.Tutorial; + public class StaxParserTest { - private final String fileName = "src/test/resources/example.xml"; + final String fileName = "src/test/resources/example.xml"; - private StaxParser parser; + StaxParser parser; @Test public void getAllTutorialsTest(){ From 51372775ca7e5aef953f8ca667da6b06c0c9e667 Mon Sep 17 00:00:00 2001 From: reymalahay Date: Wed, 1 Jun 2016 06:47:26 -0600 Subject: [PATCH 102/108] Code and related files for the dependency injection demos. --- .gitignore | 1 - .../docs/autowired-name-demo-classdiagram.png | Bin 48700 -> 0 bytes .../docs/autowired-type-demo-classdiagram.png | Bin 23197 -> 0 bytes .../docs/autowired-type-demo-classdiagram.xml | 1 - .../docs/inject-demo-classdiagram.png | Bin 38729 -> 0 bytes .../docs/inject-field-demo-classdiagram.png | Bin 19402 -> 0 bytes .../docs/inject-field-demo-classdiagram.xml | 1 - .../docs/inject-name-demo-classdiagram.png | Bin 23358 -> 0 bytes .../docs/inject-name-demo-classdiagram.xml | 1 - .../inject-qualifier-demo-classdiagram.png | Bin 37170 -> 43724 bytes .../inject-qualifier-demo-classdiagram.xml | 2 +- .../docs/resource-demo-classdiagram.png | Bin 46095 -> 0 bytes .../docs/resource-field-demo-classdiagram.png | Bin 17692 -> 0 bytes .../docs/resource-field-demo-classdiagram.xml | 1 - ...source-method-byname-demo-classdiagram.png | Bin 29579 -> 0 bytes .../resource-method-demo-classdiagram.png | Bin 19905 -> 0 bytes .../resource-method-demo-classdiagram.xml | 1 - dependency-injection/pom.xml | 2 +- ...eDemo.java => FieldAutowiredNameTest.java} | 14 ++++-- ...wiredDemo.java => FieldAutowiredTest.java} | 11 +++-- ....java => FieldQualifierAutowiredTest.java} | 16 ++++--- .../ApplicationContextTestAutowiredName.java | 9 ++++ ...licationContextTestAutowiredQualifier.java | 25 ++++++++++ .../ApplicationContextTestAutowiredType.java | 16 +++++++ .../ApplicationContextTestInjectName.java | 17 +++++++ ...ApplicationContextTestInjectQualifier.java | 23 ++++++++++ .../ApplicationContextTestInjectType.java | 16 +++++++ ...pplicationContextTestResourceNameType.java | 16 +++++++ ...plicationContextTestResourceQualifier.java | 22 +++++++++ .../AnotherArbitraryDependency.java | 3 ++ .../dependency/ArbitraryDependency.java | 3 ++ .../YetAnotherArbitraryDependency.java | 3 ++ ...ctDemo.java => FieldByNameInjectTest.java} | 14 ++++-- .../com/baeldung/inject/FieldInjectDemo.java | 27 ----------- .../com/baeldung/inject/FieldInjectTest.java | 31 +++++++++++++ ...emo.java => FieldQualifierInjectTest.java} | 18 +++++--- .../resource/FieldResourceInjectionDemo.java | 25 ---------- .../resource/FieldResourceInjectionTest.java | 31 +++++++++++++ ...ava => MethodByQualifierResourceTest.java} | 12 +++-- ...emo.java => MethodByTypeResourceTest.java} | 14 ++++-- ....java => MethodResourceInjectionTest.java} | 15 ++++-- .../baeldung/resource/NamedResourceTest.java | 13 ++++-- .../QualifierResourceInjectionDemo.java | 35 -------------- .../QualifierResourceInjectionTest.java | 43 ++++++++++++++++++ ....java => SetterResourceInjectionTest.java} | 14 ++++-- 45 files changed, 353 insertions(+), 143 deletions(-) delete mode 100644 dependency-injection/docs/autowired-name-demo-classdiagram.png delete mode 100644 dependency-injection/docs/autowired-type-demo-classdiagram.png delete mode 100644 dependency-injection/docs/autowired-type-demo-classdiagram.xml delete mode 100644 dependency-injection/docs/inject-demo-classdiagram.png delete mode 100644 dependency-injection/docs/inject-field-demo-classdiagram.png delete mode 100644 dependency-injection/docs/inject-field-demo-classdiagram.xml delete mode 100644 dependency-injection/docs/inject-name-demo-classdiagram.png delete mode 100644 dependency-injection/docs/inject-name-demo-classdiagram.xml delete mode 100644 dependency-injection/docs/resource-demo-classdiagram.png delete mode 100644 dependency-injection/docs/resource-field-demo-classdiagram.png delete mode 100644 dependency-injection/docs/resource-field-demo-classdiagram.xml delete mode 100644 dependency-injection/docs/resource-method-byname-demo-classdiagram.png delete mode 100644 dependency-injection/docs/resource-method-demo-classdiagram.png delete mode 100644 dependency-injection/docs/resource-method-demo-classdiagram.xml rename dependency-injection/src/test/java/com/baeldung/autowired/{FieldAutowiredNameDemo.java => FieldAutowiredNameTest.java} (55%) rename dependency-injection/src/test/java/com/baeldung/autowired/{FieldAutowiredDemo.java => FieldAutowiredTest.java} (63%) rename dependency-injection/src/test/java/com/baeldung/autowired/{FieldQualifierAutowiredDemo.java => FieldQualifierAutowiredTest.java} (62%) create mode 100644 dependency-injection/src/test/java/com/baeldung/configuration/ApplicationContextTestAutowiredName.java create mode 100644 dependency-injection/src/test/java/com/baeldung/configuration/ApplicationContextTestAutowiredQualifier.java create mode 100644 dependency-injection/src/test/java/com/baeldung/configuration/ApplicationContextTestAutowiredType.java create mode 100644 dependency-injection/src/test/java/com/baeldung/configuration/ApplicationContextTestInjectName.java create mode 100644 dependency-injection/src/test/java/com/baeldung/configuration/ApplicationContextTestInjectQualifier.java create mode 100644 dependency-injection/src/test/java/com/baeldung/configuration/ApplicationContextTestInjectType.java create mode 100644 dependency-injection/src/test/java/com/baeldung/configuration/ApplicationContextTestResourceNameType.java create mode 100644 dependency-injection/src/test/java/com/baeldung/configuration/ApplicationContextTestResourceQualifier.java rename dependency-injection/src/test/java/com/baeldung/inject/{FieldByNameInjectDemo.java => FieldByNameInjectTest.java} (56%) delete mode 100644 dependency-injection/src/test/java/com/baeldung/inject/FieldInjectDemo.java create mode 100644 dependency-injection/src/test/java/com/baeldung/inject/FieldInjectTest.java rename dependency-injection/src/test/java/com/baeldung/inject/{FieldQualifierInjectDemo.java => FieldQualifierInjectTest.java} (54%) delete mode 100644 dependency-injection/src/test/java/com/baeldung/resource/FieldResourceInjectionDemo.java create mode 100644 dependency-injection/src/test/java/com/baeldung/resource/FieldResourceInjectionTest.java rename dependency-injection/src/test/java/com/baeldung/resource/{MethodByQualifierResourceDemo.java => MethodByQualifierResourceTest.java} (72%) rename dependency-injection/src/test/java/com/baeldung/resource/{MethodByTypeResourceDemo.java => MethodByTypeResourceTest.java} (52%) rename dependency-injection/src/test/java/com/baeldung/resource/{MethodResourceInjectionDemo.java => MethodResourceInjectionTest.java} (53%) delete mode 100644 dependency-injection/src/test/java/com/baeldung/resource/QualifierResourceInjectionDemo.java create mode 100644 dependency-injection/src/test/java/com/baeldung/resource/QualifierResourceInjectionTest.java rename dependency-injection/src/test/java/com/baeldung/resource/{SetterResourceInjectionDemo.java => SetterResourceInjectionTest.java} (51%) diff --git a/.gitignore b/.gitignore index 319eb5ca2d..e841cc4bf5 100644 --- a/.gitignore +++ b/.gitignore @@ -27,4 +27,3 @@ target/ spring-openid/src/main/resources/application.properties .recommenders/ - diff --git a/dependency-injection/docs/autowired-name-demo-classdiagram.png b/dependency-injection/docs/autowired-name-demo-classdiagram.png deleted file mode 100644 index f367fdbf415f93423568c1df91bc5e1e693b0f8d..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 48700 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 Y=MFcICm*DEk>$xlrR+D#GC1P*e`SQA6#xJL diff --git a/dependency-injection/docs/autowired-type-demo-classdiagram.png b/dependency-injection/docs/autowired-type-demo-classdiagram.png deleted file mode 100644 index 5f3f3415566893568d451f5ba4f7028e9b256a14..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 23197 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 \ No newline at end of file diff --git a/dependency-injection/docs/inject-demo-classdiagram.png b/dependency-injection/docs/inject-demo-classdiagram.png deleted file mode 100644 index 9996fdc733f23d2ced4d5587a2d0cbe4b7d552bc..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 38729 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 \ No newline at end of file diff --git a/dependency-injection/docs/inject-name-demo-classdiagram.png b/dependency-injection/docs/inject-name-demo-classdiagram.png deleted file mode 100644 index 96a6a3425e0e6fe8ec6982cbf0470a692163abfa..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 23358 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
    eZ{>Oqf&*F697h`wmT+%?vO9Ye&oHg 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 OmzYtk$ajt1BL4^N?liCf diff --git a/dependency-injection/docs/inject-name-demo-classdiagram.xml b/dependency-injection/docs/inject-name-demo-classdiagram.xml deleted file mode 100644 index 5a8bb9f8c4..0000000000 --- a/dependency-injection/docs/inject-name-demo-classdiagram.xml +++ /dev/null @@ -1 +0,0 @@ -7VhZbxs3EP41AtqHFDqydvOoy20KJwgiF2meDHp3pGXC5ahcyrLy6zPkDrWnYQVe5yGQIAjit8Njvm8OiYPJPHv4y4ht+g4TUIPxMHkYTBaD8fjP8YQ+HXAogCh6UwAbI5MCGpXASn4DBoeM7mQCec3QIiort3UwRq0htjVMGIP7utkaVX3XrdiEHUtgFQvVRj/JxKbBrYsS/xvkJg07jy7YvzsRf90Y3GnebzCerP2reJyJsBY7mqciwX0FmiyJVoNIK7tv2cMclKM20FbMu3rk6fHcBjSf7YkJ4Rz2EHyHhKjgIRqb4ga1UMsSnXn/wK0wpFFqM0VfR/SVNjWH/xj3g89u8Efkh8nUKeNW3YK+SaUu0CtJJyqmfAFrDxwNYmeRoPIE14hb3qc4szvoo24zlOPOxGxFYx9IwmyArS6PlFMkA2ZARyYTA0pYeV9fXXBMbY52Ja/0hantppm3vhdqx4teSVDJ7PBeZPBWf6EYXkCGLS3yvcyU0I70Cs1r1DYo5MZCyQ2RuYjJezAE3IOxkqJ5yg+sY24Wp1Il1+KAO+d9bilUw2iWopHfaFkR9qDHxrIUFPZVi5WbyYoZyMnmQyDezSyga5E7wNnEqJTY5vLueOCMJJB6htZixkbBUxcNc1RIbhABIXmC5M4x4CLzmOhtOUNVKiZwSQqRvy/ze3LJOqWV3H7Dds+Rn6thRf5XNNSkfbIASoYEdEzHmhI4NXfSGmEOlQfNqCAKvGZlROTW4FcIvGn0EbOuUMlQiBQFa7dCd5zkWxFLvbn2NovXJfKRWXHQPpUWVoS7M+2pCbhcpfXWyqd4KhM6u68VVlhRSO903qLU1lMZzehN5M5dfYjIrzmNScEwprczN3aOmvwTNI+mAcXVHlxsnRYSXtF2SHAQhIL+VBAEu+cEwetWELSEVbKZ6oWwoQf55P9hVTPSwtdtlvHG19FXfvma1JO21A5qSqjEHagPmEsr0a1vCtuGtD9BvYgZfEo9TvzniBd1iEcuNHP49t2/q5vb2fL27ft/lvOb5eJ2jsZQdVec3itriN1zRr9YTFycWNb7yGheohIUn8FONdoUzCl1/Nzde+zuUWjUob+P2rX9+LO71uC5Oz8nEvzvyFaD94XynPc95b2X80c6eafafeQ995NzJ+9NvY5O3qleD52c/6i3OrnFIkd/+/2csT9F845O/WIZO+LTVVT/CP/vJHWzExT2Pe9RHh1V7rLC9cVGyz5Fas5hp2sPXXDU7IIRp0yF5UB8jeQe/uWO2rcc4RbmF2E3umywe9FRt16K3fYlwi/G7njYYHfY0dP7YZeG5R2rf1a5x54svwM= \ No newline at end of file diff --git a/dependency-injection/docs/inject-qualifier-demo-classdiagram.png b/dependency-injection/docs/inject-qualifier-demo-classdiagram.png index 1ffe6453cbec44b8961f222bd034c65e5c06ba35..7366999ec163aaf6f0d2e817c62daea57f6ac5c0 100644 GIT binary patch literal 43724 zcmcG#cRZE<|34myBjg<8AbZOmk?g%!ML0HD*+j?QE31^fHOQ77!m;;Ab~p-UkA$r6 z^XT<{zdqmJ@Avuh*UinXy3V<-=YHJR6|JMCOmzL`^($Ad5UHvt+`n?=D$kWGSp5)O z@IRf2Pb;om!A($^>j|;`!Bh+{SQD92Zap5A=D0Iw{h2}<^2D*TPq(xFBKMRy#O`z5&y(+XupKi< z;f1#P2b;Nq(sNnEisbI*A8n*jZFZvOkT&{=^I&w~&PC8Ip<#a*+54G|1d3OuiqYLK zI2&e8@X)PIE+5&e4IX{{<%nMMycwj>iZ=T}!N|Bl5uuaonkZ3O!|;C?3ZImi8CpfiV)Z;0(G`Z@itYxiH=QLSOSYViEL zseqo!KaFyOGHSe4^NMM5jnRth4HwghY`a6j^lF?qdzy%^2RGOE6b|IL?i}ooEmZUM zWKtX3HTz>Z)5b(nUojUVy=s+DOokjUgzgDcib=#Pw{lWRG8qr=e{}zn6M2J8J5A3F z>sze9aQ0y;T{shi`&*mlEXr(N&hQa*z*G0CbRw9%|1X76m!0)RSP;4+A!2BpmqNt^hoL4#{vdf40YU*CyNL@D+2t#WU zWJ377z9Dtp1l_OQE_Ml^slH~-q7dQMwcB%xKIxFioM~7NkBGYX9>KkvdG&os+0XdO z1(qq7Igv_ltr=-7l#+eec$i^Ba#mnvE;%tsDyFb7 zg(`9!>om_GSe)Dm+d7Uwc*yhU;8RKcY$a7!wFC5{XM36&`I=huaD%?9)TL4N`bJ6* zpkY*o_&u@5<{LFH%T6|@lkbHhZ12?MLo9z-W-p&v*|fj^EF==ttGGE`-IRGkea|my zT*EyrXT|xR!YEZw_?unv=#ro5BHNo@ox^2II6q?xbKD+PYdVV;(9IO$^@jMx>-)J_ zZ55Bz;fc3VEn-*A%ho+yk3~Hacp5g0C;NOc=vO(bp@*k=NuI8{9+NO(Y=+S*az*>c zi>+%3$pgXzwcapvn?Dvj_DmXZd`^fqi>H2H$`O#u!lULIA4F5&wRQc zCFZ#8sx&BXy39^dHr!1E$eh3F?zy7KM|@?TcZzI`HR{$e8U?RRbLdMV!P zmg$DHxR;Xe#w`!UN$o8Wcc$*&UwOYq`d*=At`61a=o_uF&cl0D@7oyBVI@mf_u^v- zb7V5z?e;%^G`M5Gm({14S0(E{4dXvl|JGY5?CoV|mpl+Nvt{8x`LO6Om6x*HF-!P2ZgnOu(&vSy;`#agcn zClZSsQ3-SX>H6whRGS%<%@&QhM_c!j-9Yr=qa-d(L+enUCLHOfYUE!ddBq@V%nN#n z&oiO-UfJoH*_qH^8NB|c{I=Ncy!|bk$WKwO=$hl`Oq~&wpfirU({(3c~+a6g>SDTt~E~N zu%nf3jV8*iD&;L%Oov??^q>5$TM{e%Ys1ZMtP7F-Q*O21R=$fYFj`wcg7^MTQtL!+ zks)zRj~3@7we3AW6I%CS5y^bb&;kUS=Z|II&U808F5!MFOeHLD)QADSCY1EeVUZ3Bxu`G z>XhlkX*@urnm@I8nio<^x#}CReb~H84R0Ktw=J(Z49v!R;W3deyq{rMHGk2xJ@CZN z-rgQxjfnyK|N41;ADfm1aeqdTGZ_*U^v}oiuYjY&t(do5&{I|kgGTWS0Vh1aevC46x18>w$JF_VUTTU=D@@Km`K)OX z!&3_xmO61Xut~E<{TO}S4*ruO*~qye-_xQ0+IG{vmH`qS&faHvb}&hNc5+DUP~Pli z^r38~Ig-xD?&!zs1k}N#nKXV~k>r~$D%I+7%8CyZ|Bkm3gAT#yUMGcFSm5b5`iKJc z6kas=Jh9M_sFjv+RPxr>#>ltH2u|atUp<5OI)08S(-Wl_yQ_-+`SH3vgn*Y4Zt`T5 z|8UL&FCe?AHhmMFZ~c4PmN>)tqy5otH+}mKx_uLNIPdFX;L?0hbX@;zZ*8*N>}aQ* zxZSDlE8FOOnCw@Ue`kd0IX-5Xq7pW1XUl5Ni6wvO7-EG{9zCAvvwlkL62|9HI6_27#>9^sQFUZk@Mg|Vyb z6!KeK`wL|{s)wfD%R4I>E)j22OvN^;KWm})`uT{j;u1pkhs0eB97=0YSa>v0n{@kk zLAI7<4J+3lXiIt`!R_ShoWEi(eLwn^Kn&(C(%WN5^c!KnRbDt;P@7;r=j+pjui3}n zUus9_>6?7Xj?pLUve(OA zx3Jo{-9f5d?e0c22f9dGtlk|@8#j7SnU>tt=O^p_Bgx$kQuJz0pffp7RFTK9sY3n%+`J^UdlthGBn*=~_9H*H3B(+AS(wNO^hjalMTCHyA_LZrZ0) zEdp~eI?9a)T6f=49e$6VVmJef3EqXdo@Oo+)qHV&!o~pQeIsDiWgsb8O~{<{@x_qD zz6PmGKX0Ss=t<8>&7`Riyka)sWV3y(xZD}VIpopLQ&+viAGUNue8b$rV}C#>AzFGZ zLX`0|-shXJTx{D|_~f?)X*!?Z8}=Kpz$orMDaWabiZL~=aQPc|Su(w5>{m?W?DjI9 zYNy{l&U%>t_Ay7&i+{KHZQkI=G09IC{3i*mB$!t-J>sc;Qw~rrRt<_672C-&@W&*G zwicfMEXYCa4@Oja+d%HC$s-QnEfCUk6~Nip$C^H$%{GN1Zp z&+vvoo8Z`L>SEpO;`)N$ejL>zMOq}S7R&0V)hVOU=d!T!yA5IYfzciUou*~3P-VqFex z>I<$}-GnVUAoxFir4D8EKR;fb&G!up=j&j1yzX)(Kb$JCiKZ9Ii~6)vy{NfEM*SNc zh6d|1X;WMZQ?F96T%yYDqa}GvC+Gu?+SU}0^aWviwWCVZh7CZThwnA4##Dn_7@JYG9bNy!Wo<}}3u5KkncO5`DF78-3Mp4W_T+}n6 zHjw^qI$v%Yw+`4!8``jUkYr}hOQpIxJbR1$-`&E-sG~V5cSN>+Z|4ci%SeH*?)^Na zOgQDyzI+COA-ft#3ba8<0dlvKVlyEI-gJXz4v@o34L zPv^Z0ydgb8zpEMIm%i3YoooorqGP|W+d;K>DWQVY&h>fW>0kX1zk1OwTh3Z{5amM{ zLnx`mo)mh!K~+D!yY^yt&SQA`_wcK0e7cnUfk*Di{lTp zYdnRgb&#DpRf|5njilW6uBY zzM?`l+i!?FCh`PJ4nUZ_pWS-L4`1|bgKKdQ?7*A+6}!kq ztoq}XjLn-8M0Dyk0i12%aD2y zYWbcH!iI(B2jkS*1P&2LcMs9DR+_}aJ0}Jd@^@9Dcus^uL@+IhC<`E#zpW0VPI6JD7hJ3M5D^yyQ5Wqo?I`w(8M$JVfDfyXOB zu_4m+d(f@V)9lu;wYXJZ=D_fFIDHGdMro!~^z>M&uoU;w)8Ey2s0fo@NS&2_{bTm% zCYM$0sG0S^o8NeZuRPMoMOTMv0=NIMh5cVRw4v5YF^m&+BCi&{~rx314wa(ypArJ zfnhYCm+@azqA3^jwR*z9ipWU$o^ztzt(4TVay9@0ACKvp{`>vsa@ZS3w*mARX?*G; zKJsGIrC*bTXPM;l!50<)Pc_r~)NvGK{`tAD67+e%zq?pXQT@O0IsD6m7wJL&h0l5N z1Q`Zg{~dwxxGS?oY{bK_`7>qw=iIu(8&DXZ-iRV8})x4oGS@2*Y(<-|B7=REuJZJ1`7RbFPa9YyLSO#PD8yI zl#tGe+4o<< zaI*sb{ABZia-O^FEtN!JFe~Qpwb-ngtUXPQGjpu$L;(yyuXT6%RmIlF^$4M1iO)7` z_(Sy@ANo<*zFYRzO@G#k+r4I;^e5iWEW3`@d|?E`P8;9%Rtik)TDyt%KMNsP6;fZY zj3VG8%wC!6tW#YY|87$R z5w%FPo$RAuo3oP&8r+B_#Ti~iB6$JftaGE2`JJLX`N)~_-7#o{(%n~M>aB_bo9}oM zKF?}#8aiV*8`VGC?>Pzfu?@=bb%;(|@drQ$GIAMl2)Dbz5ZF5CvT3B6hjhueE;a2` zyGnIqa4Xs(ESC1kh%9_8NxK>0{3MKY`bf1UV1Rw3@3dYe4txJDy$`-K43HcN57E4O6))n)XGf-Bi1HII>liQ%wKM8( z|E_L3b8I&ieVR`I-VRSO`NCV7H6Yzg8ZjMW6etwftZ-6BNU~_9Yam$P1OR}zimsPb zZRl^{L`*IEc;QrmG4?x3B@CY6!z2*WnAyk>eu;&+|^#5jAyZ~W&M zeY2WRvke}rs(T}Mm45yl2J79PAW7k$RiwryV?b#SAaVAOY_ovl&LJ-g0V#rY!_Q0D zQE4_EeSrSz?|DGPsigy&2DPfD=1CbX0e>z%BjqE&4ZmND4?U-FsmUtQe4GFF)m5Hd zwlV4H#k_HVhjdB%Qq^6NQY9_+wwIMe0RG3q&^JSs1e?q>Ym6-rVn$gc6~wa)x& z+61Vp+xU$u-tOAO4yc_zq-9D|AlT%!vvjlJRna(1E9>PgwK=^hc!_WK`OY{@I-J0+nY?X^3P1wuwXe3$_!Ok ze$Kpzuz0szPPym`Wr?sbMkYb%eHvu?dJ}`!gom~|?{Iz!DWlig`-1eT)~b*~i#t*z z*x|M?sjf2Qc$#}fBOSF-#qv|X_)$RkL4lk6baSz?|aLX~#4z6(+q3N7V@ zR1JwaEG85fRJ(2w)8ThO@CrUCtrZoQeK6UDVrxqtyox3xS=WG|mogbqweDFI9ZImb zVUaN2Xq}JXfZU{FX-X*hxirAM7GY~UZJi>VKx`RivJbTnEA3pRL|;QV)qE*AmB@+X zn-Zfbk9ASpvQDvk?|cY;@oF!#VV4SF$^8d37&6NkFq*;@I;;{TZA|gbE4<~Uvk_H| zlGY|9*I}}(R-AU$+QSsuI8`~+d5st^m&C>sKNDzar!=%YmB5mojYA1%^$q#f6u;vORPOb0WvJYgK)N!F6YYla&w}HDClJ+s6ez(P7K!$kRY_X2mz6m9 z`MFzxa^1_|Vjl=t_L}NR3)s=goLBX{m~?t`c_06$ig;ls`7JDYAVk%pp7Tm@veYuH z5aXo|2~Qfcu}Cl)8(g3ykB12Mpn^@eAe8VnQ1AT`OJj~D^E-ygm#7>|{rYYdOl>_v zrcTMmmOht0`}IIvl$M=oH-m1$E6; zmzQZoEjLlt>&>U!x@iaHtH2>}$I^5CApr6p^Cm;7lY(#$l$;E| zT!Ps2jG#|0$FuY<{TR%Rp>;;Z?P53It^xfMvl}K_ai%h|4Cb7_ek3n>i+g~(g;SJ{ zK{B@mu>2R&>vtdMct$6a-41#7+!>oDUHC6*-rfPAWaj5scp~n>lez*m_Dcw^Lj}IV z`R!d}kv!01#b}b$uaf=%BI5e3I#3MfM*iM7Du``)9PhrmOg?Lk=IfBR(K3Fb$r3#F zkExOrFH1{qGoMg%8ar8oqZxraQD27I|oTG?Nt3q-v`+P z8ju+AP>1U8e5|R0>)F2!9HZd}STK%YP<8R2KZ(ACXJ8R%<~JcK z)o=31b#ebf1Ru<}u=`6I6=v)N7pv?y-!ong@n z1@&Zvy7eFq7SURo9UJ-mzg^J4_FH(RkeiKzKp^BI;pfFbIvueAUvg3^B>daV`zkUE zbz~xHq~xmE$!w1u^=kYfb~-NfLq5;`HuZ#LX9E``zJN-@vMR2{ehtupo;{YE1-$5)C1l`laE!y~}>9U~dy0_&&!{zed+Gm)O zmy?6*HB7~RikGwr%)mmO&)8%YD`Ff^A-50bcA-91;fKHOfyy7A30 zUeiNxeezk!-d|i)$PTWrshSOEt5iSPnrpxiT-va|OG5@{O*QvHffmoVuDH*Kh1qer zwlOl73ci9Qz6Mw*oIMu_*j`p@2Nyex0jCr-JV6&jA5a3`5J_0rj5W=hu&lf8Y`SueC2+WPPjc#L|Qq za`x#jG)Ydg`MFkm={JYRTRTnfh!8~)Ae&+k6Yk?V_Iy`xtBDEEb~0%q#% zM6kc`$EU}ot#M)3u<2|x18rRT>O8cG1QPd13}~3`!FY6(HUKV>(u2-Cs$Whvl3V!X zzc~gJMRp8V3HJN=benDnV6cjnbcb3Sk5NU6a126Xqg(RBD9|TVf#BkPUf{(!8Zb{{ zfR_TM02xDxt(REI{RE^F0`yjgA72~mmX85C4m0tZX4McHylpWoc}Te3d}u1VRsT(c zo2O>{{=-_}4$PE&1#DHb-tp7%%0sEW_Vua}If9zx?Yf14VuyzJ%FN(sRB|@?qKO$^ zLABgew^yT&-%l|;x5w_B@6QQ5zsvpcM?N}9-?W$NJiKBGj1JF+10X&`mkb${s`j22 z%HVLGp6;}_gM$2c>B{i+C38TZZwK`H(fRzytLTIqr5?!|`r60d?4fydcDTT^V9_2CzMNtfkS|hd+Yl2zXZ>+M+}t9#L||=XY;5d)iI7e6 z2hNtiM~4XHhwrO6ulu($Vq_{0Kcw0PPXI{M?WLXKWk-fjJ*P5)jwd!a3F{CL(iS7}%6d1CFhYO0-obK}+mS zsXICWNFGq%1O7v5Au4naNPg-1xGwS189PD>1ZZ=lJ5(N{SFCTti~;?YOZD69-4~Gv zd1tzuY-e9~c(3N~rdPoVw(Poh{aGPXl+0&X&!H(33IC6m_TS>}h`c~YNVi~CEvgNV zo(2H-N>#avdBBk?0Ax&eHCOTn9Hf>TCXaOS0z{gCLf#HghqyKZcXT*K?Xy^eYUq6U zkG5QPKZ5eUC>S#eFcy37P2fxYjy;+NhL|=+m|!E}+1)0H4h1B-%o)?RkNWq?{~Dr& zcR<H!+uEun)bm8o*jo_Jg6f6KLWW0**8+5yyn)Yc1k(>IN=HYwqL+xoc@zO z^?47FcmxOa(yg3=a0kfUV*LhI#IK2GGS~6>`Qz!O=jU2?gC6$h{|VTXco|&Qd>B)1 z{qG{4|1@Fk>t($ZI z&29O>(0DZ(%lXGhUM+#@+gpY=Y&1d^UQ=zj{XpiH|Ds%AYWO$H@RIh5)$#nuq8LR>J* zk9BnEm~>3Qsi1x_#6Y)4HS#Hxa)Dj0!(ejBwz9$|{6hIny)APs-=+VB!H`dRhE_3N z;r8tX=MBgPK746EPAej^vTGS=CsjG5*ehrYiHwo56jSb#efIxk0epIg>?{uX*93+o z_9+#@NETEjgy?KU{El{1Yn{u$_IBzv{yIN$-eAuda3bWA%Km2}fRKao=m{H1WkD1K z_m!bd8Y>NuMP5e1A{V_GoD<#3joSzMfMYkwNr&O98EI{e?m)|%-9El!KaeWG#>T1I z>t691U;J4`XfIO?w5e~Tg@z%j68C5;OF4r$dGuIx% zvDXPwj~lZX1Yta&VrA6yg5&nFVQZ4ut!NnpgiI)Y?7mi#JWhJFOwGLdC*`nsZ_8rK zCJOEfZMJ~!L&tY%HrK)MoGG+utvt{&+R?mN3?=5yjPrrHcMVx{kF1{b1Sf9rM;M@= z_)bjv0so~`JeAz{VRN5JiLv2%GeB2HNh=m!Dz!K-Ud-<@Q1WLbzk{Mz zA;$2ko;VL>-w2`FvWsoT z#QRP6BtlIdL>0U>9>CtsUs>wTy#Vz&l`G5rgEb2Q`E=a1h$z_DH40<%Pyr#;3O2sI zM_1n6s7JX)e>QE%mZziH>6D}u_qx4JJYY|seFjD|?T~;`+43F!7GUR9ZtYx(%}ENm zy4YU?od6x4ZsiXi8C5&W3~#xNWfR67*s;?HCYqP?9G0x4(Gz(=>KR@HlJi*Hsxluvhv za`0?VaY#F6U_?;L01Ni6ssUX3(DsG$sc|3W1@$n>)OXXmON5T5=@y|5GU6e^{_VqE zvdBnGiDpCEq*~y{JdE?f{OG93g9;^L)S89Zb0V;2*Z2XPxM%VlH4s6m75tH2d z;^;4OtyMV2 z4$Xf{;&yKhOMRT-QARv7<-BqKwm>0O$>}G9>P1GzK$}PW zzwZj9e3j+E!;bajjS^Xl4IWA-4~R^ad9~=z=nQWQiDbHkfD$3~pg7#--%U|$0 z`jl$!J+mnse)mH$Ast%;7RTlggg3i^WNVTSQ|Au&($Fl+?`r6uuJhkfaJk)QHKf?XR7W2E zp;$Bc7AgibPLYfI2Xbx@L}!-P9T6fdDrL>j<3)B6kRQzhI#$Bw_gE1(EAGt}tL?@c zeNsZ@&|VD1IZv4KlMc&?!AGogzZsebdUaq&+@8mRw>8?KZIO!n5w=;L4+(xUoyJxO z%vDF>$t9?CytU-EN+r!!g4~=ZQy`|p+e4kmQokkZ! z(YiIhR*L%&TKlZ#0XL#)!>xIaxoe0&N{@oakvHhM{jaZ@GwWv#zgBxhAOC_sJo}&` zvuzDGDs}7Q9vu^Pn%)w=Rc%s9T|{|G*`Q44{f38--4TB@SQPDoO5;yI6N9f+9W}cw ze5y_LE6DQt;B!3D9>xHB7G@xmTLHfclU?HHP=L%*E%CJGcKHV7${9etBJRbDE-rGG z+1|_YMbuCB!y+Shh4y|ebmoUs8ibJ@-WSS!wiv71gYgo-{pJ4mR zt#FWL+!!GSB%2Hy9DI3i929c>@qaWsn$7#nbYO%7W==L8jp~kh{3gz@Cl(_w`RxoP z;@jxWlp&;fx}Sn*WP{rVoh=}EHtU8Lu9pT46a4gS3 z68`BZoRyTQZ| z(i_U`q&ZGcth?trnnNp9F1)E6KYWSD9sEGb9ToxgMkhS`GSQ$>$$Fk4XL!7>kr#Zigk z@`ybX53H>PcKoYo_z(~{y6{@2fvA!5?s zKP#+AV{N_p^#%|4^GD@TEs>tro^KbfsGiK`F~GwWTWMKN5@mU=T0o zb(n|qt5v_r6?zZ(t2 z+A%(tHll8V%!c)@an+jB3%mEGEjn6%Ti^uj=`p3CkC!sRIejp2h4@|1jevf!$&Rr+ z*3q*xT9>{d2vvy-HL)NBKkIT9UXGv?fVW*PR$p{*6mriXen5mQCC;$T_I7lNDd08v zSZyX-w8H|VRvBIR--rFjl)Y455^+9AeNw9~)czZxd=nuvAzkzy>wO3qj3}89nTc-w zXt<~SU+rid+Ve+QSeQW%iuw1yYBDr<1`57f%-|T(o6T<6r}10Jr8<7-MFCYN zZ~i|)Rwt(C2MLceILk9IW0M#E^&BvbEr3T$fT5`v5#}&3_ZuV46cA^rJJ|qn%L!qUw@X2aj~0#z{}>o6m|~@h;BN%3E1B0 z!GqCRZ@>eE94p#zf4g)Lj;tpwx!0!H9RtjxIgkb5=iTXLt6d-%L|noiNg&)}5^~E; zuYOMfriKC-R07{&h~H(3a@81cj0QHnz%baX{uF>yAMSvGAty7b z;ZPSG_Nn&u9akTQ23Nx{v+N|HM~9hZSIl&B!Fh-!c4Q1dO&qWasqBr;z!-kfF@P+y z(gdFFq5Ta z9YLM0od4>y=LCdgA+s(m z{zt=s=T-x75JmM}38yf%n-3qnvmgOtzwK)sLIAO1GPpqN>RwCfKM6_sjtSagQl_*V zIK(8&%omst?nVocw!r$Sb!UcZiTz}8sA80l2m|zb<_sv81i%lwjfk_I? zH~Sh%We%mOSDym)D$n8?@{U+Ln_kA%JkQ#PI*-llpNczNR? z%LtHr-ux&ViW?3D!;TIt)U~$6^31SKw=P1!s(#OC)sVy0RqKj2R)-T&=AxwBfh|KB^d${?UM_u_`6+U*E7-T;yN}88{pix z#|B4B9T6TK(tHZ+_Yy4$JhvJk5gRpR`~RM<0EwB5=Wk7Z(gQ)T-lV(AiVq&*3=*0A zZu-uR%wD`eKKw9yi)S-C&O+xcS@0TWZ`Am(yn6Y!T407gB;R^ts&Yk=(c);2T??sd z;L)ma1kPz{i1N&%mzo0%Y;U4p-Vw+a7{EViTYRET(6#HcUTUkv6Md2v-EGdpf`Hs( zdKB$>V_=F@DU1>1MLi-h>`4NI2iYJ{vfD#3e4p%w+cJPP&h?##B4Qsb6bg`KsEx*v z`{eEu08%BUKfV;Fe8ED?a(t%q-LQy23QD8qAngbsIt~`gegtwYx9$zCiZ@z7=q_@L zojfNa;b{1H+na%|!KLW^yAOMd$1^~gGz!O-gP>8u{Bq+OAmy`?lm_-)9MwGW40$;` z;uK>Vo5GqLqB?;{I6V_2!kFm*LJUH<$QCFo1iq#gK=*K>+)R3Zu9YC+hTJwrDUtAq zhHn)lpanSVzV42+$RlQ&Kei{ilLr4H#T+$fVR~{HQJ(er!EQ~iU0ZP*q4>`* zQZ4>a0WBk^nk4Us(5tGWi5pO)6ea>j%HynJSqL&MV_q0ZdFpY+3JDM8SeTH7Xds9( zz2u%^BevNV_y9&cUDbJ`v8P9$S3(3rV{>$tEw{`fJrM=1C1-C^r2KZ8H9)+LL%3s# zY(6vXxDtZzLT(I=MdC{&aUq}_VYaOO5$ps4zHf-7m(#THnN!KsXtXqwTe`2XueLN98;;^Y`qhm(LDtEC~0cL2^sL0+f!(EEJ4G*~4@0Num0okf^8( zmrv6Yyu1}VY!&d(@Nvqn)-Qdy@ z1$!90gafvC!_WnS<9(gW*rE>4W$`injNNLSZw(yj8h(D1+mYn_ zHJe_1U#4F@an?B3g$@TkR%P)qN({U?k@F)wK0iCjV2l-rTMhYI1rd3cr1Nmcm8RmK$@h#9_c=Z7;PEe>^HNi9)OX0eFU9nn9NX}s&?da9 z?-uYL{r*8v74NRSCQGR%WRSKa~$}T(_ zSDAG!{nL2bzNz462Yi%OEU})49Xr0Uwi6FnhX0rk;x0wdc3)58k}Bxv?_GG~w|oln z`vVL%oA~&zGfmoe9)Aa+5khQ2H${}4Z8vYgmbi7L4Ne=J9fxYZ0C`y9$7ltCv9YbeJ8z1*2DLD&#l}VY ziy7ER&Hs!9*<-j|KLn3iflyodQ%7+jBb#CSh3FT}V% zc`Wm%9Id$)rNJjJ>$A}bBNvm=V=hpomy6$IrRRN}ZOr-U&7>2BLDG*+Fc?aOE4U<~ zT$q&S;Bmzf&Y@3IUgGKpsYsK~oskNASxMrNk~gQzbL|to$RAU#S6obl6K9%lk|jk# z#&a+?Ibbg&xrF1+nC(EVRSlIo0QQ>p2XXxwasG8-NZL{fMbm@0%&nG-fc@t%FN&P* zv1GC0ud{O6htFhuFu*jOE|K%nDc8`z0Mm8=>UI8t`VA7y8Ql0?&mEk>O6-_3crgF% z$jwM47r!qc`-6e$A8|gM-z()M0vQ{C@4ql(KBSo+z8O8ul;UK4_e&OS*%T3%nPm#+ z5PP(?&!NM#TuP}|?>>0RsBT|ssbhP}q6C3fNb(A<&)n2Y2JbJl-8fWW_zfb5UMrTc zz{-vrP8$jsL`rVFlPzH^ICRI93x$>Fm?Z(;wjlR?qS!KA<4cLB?VhaOEWffgxv8rm^wLFQhDXSBKnLc10- z_60RgUaBAq_O3K=aUm+rhxdL$|1@2GxQC;tet74xqtNNX#rYkK?dm$OUfFS%Ju^!V z(D;RcBm?3Plcv7Yh8(K3)m-8sp6e4lgw!J3u2WX-T+5cr90!L1TK%AiTQ$C{3>TSY zx%l;2n|xF7;hKkfLs|1|^DDuhH(_=Pn3juJW)xx=V4N&wPJp8Fa_+A23n58!0UE*Z4(K~#AyoAzj z@as$w@^p9UtruH^Es_mw@G;^9aydzV5+N?!BQc z3-L!ch?iT{CFHESVk_M{mwJcG(2i7pR9QFUyWjI{zS_vy9Nqeb&kD0sx*S`pjQ2xe zY^ND8i`8;81RawX^P+BwyUw%*H8T>}}1^~#d(C&)WC%%NvTG`z)T~~uDV}49q#_$XXwN>$p-dY8I zF`~ja6Ef@>ic2KOhdYlKMu6+{$(;n=eE?qE(_g$I?{$vq>27?%C#~hn{>J%x&x@5W zKc=e+B=PQz6=>6wJ~q`?!1ZQC^dxiy$M1CPbO#NuHpmf{H0|}Rq{*2>lUMN`{IN)c z@F-v}5#EbNE)Ij0?68#Za`Uc4Vms?oke6!(2iJu_H;t9twV|E2v>ZZA$yX&{6(Go4 z>f|sGoI4)9%1}087U<7Kv09CJ)sgL!o&KM0U>rJ6?ru!Qgy$MrMzd=tx(!}r=Ipvwzm>9P$8o?5Vm#5*o zQ5i|K)O)&<4vpya<_-{(UPoY9BSOW8QW3E3$w)9=f0zE4 zlZ!aJ9H7T~Jq{i1FoMYu_;^ZUdhEZ1cBu|-ed{@|Sz^0vkZ13wU*EhVxe zMKu6=b=NBBkl2NH8 z3>^pKck^wFb^m6FUd_fOrkmqLSPoOII{-ZaZ~r?~D+=0v_2s}zKgcG^A@qu+rgp=o z7By23z;)HtzLg>q+lslcOU4@IlrIL}rnrrZDTmh-2^#e(>$5v%aBRlEy;84+T83K; z5lT1+^4keuQ-B0Gf50hHDEXLnoedI*03k;nbwcm+&Fo}4NuShi6e-#^OdF=uA&k6# zM77M^L>L?tg?SNZ@Y@nLfeW^SfPqS!MP|8igMxaVJIP87h({RI!%Yce9XhViVrw<* zwW~xDhoIU64XANuzdSS=jP*d}I@hCd_r(}--&4#Jbl^6rPlvT$qsy}h^S>t|*9(Op zTcNA~-XZDcsb*ppJQhIefDOjO3wenh3gvB5l<>eL7N8gyIrykv&IPWr56Z+F;5NvB5u9sz&5nqIMM$82M6+k}Zxh6P+&zNkhv9_@N&vkKo*1@c5iIS105~tDr!{p*UkjdH z6>$}f@s=aOE$2~-Q+sJ6AN-ChO(U+Yzaqv8O107?IB4T%C+>@DwJ?F^=|=JQ$ws9X zD8dapCAXniv-Ppu1wD*oj2kkP`TwKe`{P5>eIP~jIQ>N)+$LVll;@8cP7Avc3 z3Jliy8xYzs{B@TdK{xtMlqb^ch&G$`FyJ2DUI7n!nT~Zql2En>fWby^ei{Ctmx~C{ z0hHYNr_pll15ii(Blsj0K?n>30e`{tqA@^a@dALEqZzhQR60ENz63TBn;(^?dFaZv z%@TDTe$RJ`e4g0mBJFq;K_c!d(4Ju72mIjbttXw^Q+ctpg$5TP0_rG(r`m)q-N-KH z7ZU5C&pA7Y#N)|1DY`1D7frR!*_OFh_09aPaRnT-RVbG?s}XQ1d7*5+!kU zD*>7RWC6szc0Cqu#RxM)L?{_sA)jMNJ>_&@_mdqMr9!S@rOu_NUi;}76r|F6R6uLK zO0a)MC7?Z%BrG2m)=+2}dTp=UH#m}T6kB}3BzA9fz5*i>BAS&x#Ye6lIlI1APPl;y z@<@tJ-sLF?M=`fAovY1eX_E9g75LOP;_AcfY%a^7$L#wpPzHap{l#o=bv{E8N}`mE zmPoNZ*4lwib*S%kH79p3=5Kc?tLZ*Q{6IHEvG3VrsnFcld)$y{&7rFm5NX>(w0^&D zSOkU4UMhWdOqHh>mWFn+-&RParDL86`SV?ENB#|q{I!PU(z3gs!^K)N`78W3`~EPC zkVZAjzMZH`^kUyun|V())2zGoQ441VXjalin{6t?03Abv)gX`j{Yum9-s9K^Z$)dn zmMaBpCgH7nOz9C46J@|(eeinQ-1l&EwZc=7PE3TR)kr_?jaNCY;xZ%l0RXHCkI(Rn za6l)So@ZbLnFvyzFwM%}%nkoP;bXo0x1+v=YnRzrs!KgPLZ`S8JYQ1@;J9K1^_QLo zdY4(vF#xvdzud0Un+B^h9n(1d=;W2HmZD~ieDvnorPvoHGjZZx+lDCE49e`5RqQA;J{o2UqW3yUeX#24XQoi3KYp0)D`Zt6tgVcpU8N zWy23F{v!SVhkRdv3BqD_jSS9XOs-eNIO)=p!8{0DGq}9QAdIP6nnWt(m#>F>xBoxv zy>(Po?bkL+hahZvBhrm**oXp3r*um*Ob1!^+ zzV|!td&c?ioHNGxjlpoJi?!Ch?ws?Q*SzLm2Kj%-{1?Hs|FLzR5Lxukt8xTD0PkVT z{pu*_6Tw*Ns71f{L#>s-8kEQ>EM&df_J{AAlZ$r?Wjk;$FZZO7iy87e(paFeX3Kp8 z*Z~+Skj?yNq~eyW;C)somcT#*wX_%K!87nY2qK00%dXwz4Fr-#NGL)l&VAAgqnKA{WbxSq>JG(A-;XUT z1rpHk0YVc{A_Z5BMVjt8;FHdoUYzJcauF@SKGRKfy#T;L7zjdz^koV^Kdy-6g-ogz zz?Gzf0xd`Y1L=FD6uZIS74IchE^{2 zIyH!D=+tZg|KJMv_H1LwuhSn7Bci>Q0-`6ipCC*2{Z=!9+TJPPtqB?dZ_7LooAP}& zmG^JpoZL}31_t}N%Sz$%Feu&h=XqOKLo2D0p0Nk9$bgOWr@65A?bqzb;&v+eM+b2B z7=Il%T%7ZQ_{iPTV<=j2;C7T?0{B<&r@dCOsSsytZ)-NLfJ`HEA<+9Rfd5Gen4gPC zU=mF3!+(d1X-ayH#E4no9KjG z%=FAdDWZ%GwhqP5wxm5kHf8UTv(gC&?vNqR0DsSvj0c_uw}5N+dN!Y;!P4PX zVan^D8hBBFwkvKXlLYvAJ!Bw)OAgdiH26(Od?6Am(Co0+$R(jd!x{DmQ{eVM%M4ga zt`Kb)GmKVFm(lg7-0`KibPinF6w&ExsAkQh4G>dA$0TT?DAtrA@ZsEqs0=|w8+eW= zW52LvTM(1VlsVe!0bM&zzsmTo8e!^F(&jCpX<=lo~T} zfz|ON#8L)~XNm_}`%;UYNU%#Dm=)Muo_MSffRn;vu!Us=rX)n9Cm2!@G`>*`qS-{3HMk4t!JB}qT&0d@O}ULkM*9G( z=>_@@$jo^W7{vGiV$30%er}Iz5MB}c>4Ag%jl6z(ux@`m1NI5@;1_8pM^LQMQwZdI zB6tr?keI87nII;p!$XMM6@eSr@QOE#u79Z>LazPV9d6=~TA(o}Qkz+urkz`lkT3iK z^Md$CG+*ewB@n_96u?V>q+YUQ(~w80m7%n9iR`~1`JstAJQUEh`Buvc^fXe9F$6CJ z7aPAWq`|-7;iLRf+}199J4OX&Yd0sOJZQvxJS5QO=k&nN&;sdI7zhw@$xL&X_gEZu z>|3?}M)CKhwt57Mt_#?HW#F&fsbp^F&YK1F&JXou>=W7Up}g$^a_&4?W#&ra-$B@@ zqy+w^=P}hzMQeXPJ;T~d=6+_+<5`mMuWjvY4kRKKo^P>iLU3?+g7B;tBPfs5V?q3I z;KQMx8ogX?ynpVp_as<%Eu~rVG8h=}jlJcnWcq>T(|EsU!ZpF;`6JswSZd++1G2Exujj+F6fr&u76jvhA^>kRQm z8h*K#GHymlOK3Ur1i2vp6StlB*fN00=*ZSPqW#i6SO6JomhP)wHP6t z3v>-QYC@BUAW;oM4>}A&ez;792Z{OCB4!*G@!~+2$oeq@i&+5Q+o*jY#pD0o%Y7Roblj(w9*?!z5NY;l2B?q7fHb{2aEwmw;}LY-8^`y~i#hi1>a7ep zGT&>y^OoInuu6d!_dz(>ddDs_oeIOTtBXUaBA0iSm!n}lZDf|iR}CjRZRR=2`dOa= zG{BrHnzHL2oNATbEQ~5b-<_~_Y$#|eS`@DWJB;5q?l4T9dm?M+>qw!O!6Q$v`QH*V z`NWIf^`@sFvl>oJXpALPzOv^$QSlX=Zku_mE4M9-%(x?38jz?=<_D5^gVqr@r|&m! z&#s&6f(i8$2m>|Or13IxZ0Rt)NJE>gQ}mKnq(J>9WHbJ58TPW+bmwhT>`r5*YwXjj z?|A!}ANNl_|3Z7h_ax7udfN9_L;V;9cr?)oSe*5ZVJQ8P3fl1mZb3_dKG<^=nf*Y42nr2$G0 z9bpvFl-AnE45x%__Hsw^79~d=8R{e`qPJ~$mQ~bq0o!p2QV~S-283KP;8#7uzQg98Mi8NJ zLb3>=$2jJ$QF;C#{%DkkjTv&5Ciy__5LjtMy2ekQiKg#(P7i0Fz7oe_FMo}vKqcN& z&&adYF!a!p>wjI zXwGA*o|Xm0zY4Q8rxZ2u4pyfX@o)hWOr5M`IQ%{w#Ld@0P$hUS8m~i-mojW2E6a-3 zB2adc(yKnan6-O(_1?~T{qW8*8NzjZw~~KVz{B6O!xJ(bSji?!?&La>gw{Ia{nC`7 zd(z6Un6~9LpBC^mql*IZeU*&FgX_$=z^9hD#B=UEC&rU<9$`Iyo{E2Ey4q+{3?r2< zVgEsWJ3e}Q|IZttA=i9^`LM&3Q@*NEH*D>Fri!`C@Z*R!i5R7XLf^Az<4I+al4pK9 zXUy$TR@V~%e6Gppq^wJCWD$ZI019g6F_$aPh9a_7!nbS`Vr^@Wil%JEq*s)|$3Y8X zI4JsY^9U(qOm5cNalBI|`+dtiR?EQ_q?i$x|mP)+JCK*tbQ#goUv#HnXzyLFVbYW!NJ0`@}IROThj{maD=?$Mnr zHLN=J=_I4PP<73&tktQfYMPqdKMdbdjM8t?9p9|KsSr>McP3`6jIi>j_vs}hyXR3! zf>2gRmd#DmG!&(#@*FPct?YwcUdOe5lKyaYgUY|RfyNgA6USTDht;XyrX<}hYC zpYZo%dXcix-h9XrJR61#dyrOPJvJ-Z7%!E9oK*B^JKA2@y;jrON#-ThNx+{L5>f_x z0lP^^K*&dk&r4>`{)0A}lF+z0LQi_3yzF~)LQI)V9gM!G;AXxeocaM%$O1U1ZZ9xr z+e*S=d2NJT4r4^{1nExLJjOc`IYE5M)_xy=tld*KGuyfD(SnL6BD}i8X4=(r8_w2) zW*Oi@Ykw0@LHaA>XQXvE2_ixPi?qDL!vV^3++_nkw`0dV%7sFP^t(?l_LCjs=X#cC z4OLN;BIeZ|%{|yyi(#)m-oc2b{#E5=5QS*%ue4_26tYBDF&t1WurL?m$+MImtxNF0 zB8hIx%2qZte6JMN%1z{6E>X3>t6!&TzB1td;S40*Nzo+#@5Mb}!VLc-$ zgS{h|H!hwI6+sMBF=FsbQBhNEw=-G5sm^^Hqnoj$*X+!ViqAIgf0H^hNXPF2v0Z=- zNap0qMl&zvQ-+goyP*t6-k7nFu>}sqq0<6Fa_&>h=v8D1UzMmy#{RXQJ!Ya*&n4zA zT%qi;?w*^?*a`EI{$v(m1O3X(lgBs7y27d7T?rE+c*utZV-Shk=jWbaAIVyt!)^)= zG+!#8FB#48@!-?zo_(MemEuvAzC{^A3Sus@9@n49iZBf7Ne5|!KMff3mWqKfc?dyK zS28n~S(^|~a}@K*QTmQ0g9bezqqW~$*i$@dZ1heqhF{H0W+Dnk%ZoRb>=;>4H%a?~ zQs<8&SY@bc?A!JWRFjh)F-k@57q5?Fq+&O~<>4ic6o?8po~+^MG%FdpEM}>5TerjC z>O}_8lrweF4SYqu#st^-miWF~4$MzJW=2ILJPwRM+7h@=Squi$33@-an`F}X z!$p7Xx5eV&R102pt66(vM}B9`{G7fCahHlHoIs>(8`EcAEC|lHMjW_i?g2>Jo43P6 zFnMT1V49(@Ekuqzh)5-2UwGUi;lN`Tk*cM45bsT0rtwm@X@?Qp>~0~aHELVH$TrV< z@UAqRsaUiSiKvz+Fp9Gg!Kx$nepIW}_u*_(&u1Rekpve%I}E%kV3F%EA4mQqxB$hSyHn*8JiTkX% zKH3B8tSR@S%&u8-??rr z%O`{+`hFy#&R~s{g7L6)^<9v?UVPG)B#~7@)r2RZZtl^xxR4(gxE5{BCj=AjA@!~Y zO!}SeaR&HlGP)W@JDwaTfi-77`>&=GOm~_VH>q>qRm#?-7AX8w^BjP`a&fTM7c#Cvd@Y0lPWg_VD%@q`HnU(p$_!byf;_M~G>K>^d z#Vzj8tBKr)KQU7B^`#|gr<#*g;8m}u5+0SZ*>r=q9rxLN`N-DVG74+m7H-^~N>Yz1 zX7yAhXimBNVJTXB?Komh2#e#n?H39ny@$tqeM!p|Uv+K$N2(GYWeP4VZtW{=*Ys_| zZboRd6HH$vwZ9D$^iw5x@M9{Xj;xQxG*d~Gnf=R`8N+s5nJf5=v#U$6UnK)n*+==-@8It;LCHf;mEsLOSEc|JxV-CqtgpFT&YLkal z)KlfXc+KhbqYQes#MF!kY3uHDn9lAAI6vQfk@AETwIpss2pvM9;s-{UWV6Fvb7cvJ z_KZ&tt#OhFx^~gCk>)|6CL|Wg-%qLr<(NuV0O8@INK&yiGZ&uYZU{;1y{xv~Z^{vZ znmZvL@0{z&>bA`o%*N)Qr5S{v^Y7M|ayBp%x8Bcq$=_elHyk%^CL;eV<67*;Fq^G2 z&5dxzd5ji>{>($Z-VXl0Y+^-z zYzKz5?L17G8R{4p%WSoh;c;JlZ)<-sYy2Q%_jedOVwy-yKgDNL?09RM;RgwPZA(tn zIOMrj@sR<&5`1!}uH*Mx{#S`b$zX=R(0k1d;fydqemgQKvt{JQcSbj-3GsT5mK>jG za6PJshaF>))QrUAE%x{iY5&r_#=b}039DW*1grJ)E}RWSl3hI?H68H_UirTl2;ENp zdRKsfVfaI`3d=*KmwweYfQBso$m;_H8M;gK(y* z`-?ureWK>Hq=xMuXm1Folu1)fmZT)wuKU)AVD3(E*t*kr z%4fLgQJEnH?p|A@alBrqiEa0S2m42>%yG_G$CPpGC>7YwIvwR^J^8XEt)5a#RnMA1 z2V>Ut*NR+EaNii!IF+SeHyk~oY-r2s$6s4>pkODmu(A=Z;^1}nFWV_!bbWM)JmC)K z{E$w|X)1h5^k9!sDsK$GM=*U>tV&>Md5gKM8dvyfHONI;>$)fZ3&ac^YNi2$i$*UV zd3J{^+}-*fcUH?2m%^UCLn+_keww`Xc@+|X9uWw;MP6caes2kC!prh?>s^`r4!;Cv zlCK;(w5eX)7&+|rRNFN+w7ssB^6pyy4fZ%Nq}{LHyuDOLH~<*?b|qULc1r?niBEd} zL%|4V+UV_;J47C=QLIGaRy3C48uerQ$9_<<h^6-t?qFO_e# zi$}`AIEqil4&_~I%ysONb(NrQT!3nUVxZ%#^IFk;W!u&#q3HWI1IWDahC3c{h&Oy| z$j?_Ir3JgjyHZxqP-L~Y;h}|Fy-y!{aOPpxCqJiMg*|q;XKT5(!!L5Ljp+HFo2rmu zM>jF^FErDc#MIr#V>v;YMT(-cUysdhfjojm^Eb{|cPE#bjubt`l5qBJWc8lPX9wNc zB*YD~7}GWI6E6-eeWKqjM?G$xRvroKa-iDSH(Pc1MdB7j;utDqev@&7-_M03udUzC zJl!0N%OYUeWohuGM*f-+IT316biPrBRD5|2ej+mIr=>H2&WGBvq;cDM&{1O)=@)>u z{GEO#Ds|N(TaP zrt9(Y99aC(9`IDzr4TPd7-gPCj#V==G$|&>;2ZJyREYyKu|CD|AkRdYfTOaKG*A!gxkYqlNw-jEnylJfR1T|FmoE zc6kw8HzQrD9guR@I{D58B3HDVnxOu|6wo zsd08bk8s#ha`<7gpQ@B6fY(J9xr>NTe>O$&$kMPv)l|2tlFVxB~o*Hn!IM_u>&X*g*Svi%*%EVoYd zUG$c4w_n9Ab46nfLy9km5z?dlTdBg8E##5XT@DCy9$h2XQ0iWI$@NCSFtBZw4%{-6 zqa2WtCy+w9kP^absY1eC8n1^-Tlknun0LAi-mxHHM8}lL80Fn~ywxmGn30@5R5GO% zf{a%CXe~g$i7R(?4gufzt~Q2`bLSGC>K(sp6!$*IC)qbama>4H;mlyttsZpkHf zRUxYa(QbINDe_>!^LT<}VX!6W`%rUq>#k?ft}Nctd?eqmFoYwBO=Cpf+&0pDmB&iy zUS^x?0}uAdF$=>D1^ATRNrd-Zm|qz#dRfGr^2|aVBYAXHu}DQ_cB-mr*YoeGY9ovr z#CxJA>h;T~m3~L;WW;z|0Jhe@C{iJqGA%g+@_+rV#&9Y)0Y^=^zw6f`w}L)A$qAI# z&Rf!0Txa5%ovO{Me&4@bfWlPo%~)ug&uGq3RM|c|3ie0&-cDN; z1FFZQNjw{T(!-}KyYKTwTx>EHj2BwHcUb>t_^Nu#TzL=w3a@3oUz3c&Th|nuAxe~f z#ckhn;B8jArkp&}tk)C^`c}^dFslC(qnZ-Y^KwUHk6L{M^_~dLvQ2y`B+Bfu3xZzN zI-P_Feh1F!BxI((J-6HvmHV~M`*4IT*OD0zlZqs;DQqCrCQx7NxAhcSJCr5+art|n5G;7nIlh8VNi6FeLZA2W4<( z%l9)gp~HY#{6>Cq8m5R?AWAp|;Zr|yGkA77>79VjXc2sdzi-jL2jHoyq_3U=i@UY2 z#1FOn2~~+qWaK{|nG0N(jMR`bhWW$4zc0*O@M<@S{Sl4DU(4>&JsRuO!?wAvHJG^x z($=3Pu|H@H4%H2J5j>%BT(`hx)Vey*%l zeL~t>gM#go%(){HK_=a#$UPC1~C>udSDA}BY1oW|bX+4LM*1WblINTm^da7LB0zv&$^I%+b=_q2Z^3o7p zkoY0?t}J?6@)IT_Z;useexHS|1X`y*a@R}|~7 z&?7UpXVmwbJ2}W0uZQTE`TQV5;9*Ktq)LWfokVATghwr9G<#dBH6BTKl=jXp_jd$7 zp>h_cbE>)793!LiPGOHx%bF;Eqlf$_BFxbETUfMt1eO)o2ZB;%7)aWKI+lPA`Auii zee(f#?!JiVdn`@8vhe=~J;~Dl56}}`Wul4rM3g&InZOlG5z|K`v^1YLVyu>~m+7q? zSGVe&)mj`<-4LgP{bm7*{ETKF0_r6Ve~|i{#2y*Xi|$u)o=vkerLHx4OL>0ZI`{{C zGJ3*BcqOp20F&`0%D9ltl;sZ$r7Xnh82%3oMS2NCG2w$L`ZU`I-@kR2@(&CJViGUa zz#8KV^zjkAnXN7HlP`A1kCH1}M(LHP?C7PhDu8#Z!giajF(O7f>gY~8!gUz_B}Bn& z&r+ge&fMqc)Y$x8u{`)B9dDo4RqGQHTsS5CZV7Ft&Dza!l#676$NWrdk>wtlZl8O7 zPYBbet=DD|YYo*qlb1L$e|JhI9r+L*FsL8H;k@r`Y6rrUObiH8o%(<2t|IJbA|R66Y; z!T`XO{+7z8pDBebdMrP6n2665(U|v?`0%L_%q3M|*EsRnNz8=YIKM6l22+98?2!-x z@^?-*%tMSU&@5*cG=3OwZ*k9vq8@1xw_~U|oS|iZiZjzD`y489fD|zeZuX8r?+fTY zVU>Cf!>Gr8EH)q|%2!YQZp;&9qfWHZ{n1;mC+feVQEO7|{}US3)#j~mvFJ=nu)Hl) z7UTA)SXxB)ETfEb8Wwu`D5hL2vhh>U;j>7>uBMtUH#5@`pZz03$Z!7N({~l@4bFV< z#k^cQuhOd%cbn_L`Z44v=J4oJuw|^5#vQ|FJUsy0USCfQOou%4pGeFV^BZETsO>&n zL29n~niGZ`ym2%3n<%NQmJ$ve-1a~kdb}&GgmQSzp)%vg{!*2-Z#_smllGZ>wn(($ zCa%XwJ!HJ^GCd(W;T7vhQBy)c!s8=)J)*(q%VHd{YcJ+<5|q_cnP zBe5)x*T`R=Qch0p=0Va+&B2K#IX=AnzR!MBhky0RZsF*As;X3fo3Wl6J4nb67hr{? zirWb~^tn@1;wN5;!f z;S+x`s9xmz^9)M(t`pF5ut_Z8ckJd*e3k05w|ZXpz(=AW9;Q<7M3ftQBuUO!ukm!G zWt+%jY76INBmB!#ddAj};LVJ7D}tb?eX%d4-**wMhaZ-%*--n#8$|eYG?tFexwY$k zHh~yv7C0sm;~dVAii$$G?4LnG)w#MMaMq9Y zr4<@@_9svxSpSbNgAq|eB3R6L11oK+Z5xXrzU9#Ec5TJvL};=&3AvwzT4f)3{1dB zt8Z4JFeOmo1i)J{P?Fz?u8RK|X&)`02_}ovThfXnaW#)GM}Jmx=hd zFfUUVa$~gbL8%M>+}!I|d|5O~Li+M%MjF{?py&orG`@tiuI16ZzN|&{6%KI<9Z@>! z2ylvDOZY?Jlv{iD`ZE95Dj6bhQn$Ue02ISp=zrd<@>Su!EHu?RuRw1uZ`NM~?Y0&B z^XM1v`d_zS!e<5$J-3Lm} zkPEPcqNm>x{CO|*XU;UZE61;p!-F21sE(kO4)>f^`p|?zsH9&kPC^ z+)nP2#~M^%I8M9(Y47Ghql_4UB=NJp}A(T9@3#sSH$reGD=%3Gy2kEpQZ9tcPo6(-Q3(^aeOmMBd z3jX=d2#GG}5ec>m`r(?c5U-xs^CaT6%)f142f4Y>za|F>b_)1h`j?Bf4IbcO}ufX*D8y;|}s68inhod5mzFDcCbg|7_OpbHp`tJ96I zv!JfgC4e}{e|{uJ)~WxHcmE4h_y5HgNUUH10k-j-pZRg_9OtnPMhbO+N}4wA^<^kA z#;-_oBmqnX+PT$%e+K7kAJ*QKv&}547*NcYQU6@xiEq30aJovj_s_C?5f@N@y5is# znewmecR>0-kI7T2gj-Ut{a_p6s2-e-LsC;-S=K|hwvQb=4 z4CIu{jkRBslYE_hme;PX@pm1xgLl8d+P#Je z3KTd{J>!zay5&*$l24obpH=e`NLe4+6Mkx5V>RHyDxQ214xYYbXa7z6pJlN(rDj7P zZ>wNa^HQ6WDW~a%Y)o$6-!YHD|5;;d*+^l{JD|xZG&Lduo_<@+@J-P_oeCOu_Z0N= z-AUO(MH2L@CY%omDgMe8KU9{OIlqSa7PxdNSDIF;mKbxI-gr(J-2Nkb3Ih!r8pmZZ z7#!!}x*vsSyQQdM`I6(GC#ze69vy|dgpMm!Xyd7VyiE+A-a9n%`qe)Z@@GwUpBUIF z`rI{MY07}Xh`J^%`_C2}c#Z7q(}wnd8$Bj@g;Fk`OFhBUA7)kQsQlf6XU-oVfF1ll zL;atj{{QW&z9_D9L;qOTb#bI9tKp==@tkCZ1iy`iG|s}vQl95F&($Rjcnfit-`yJQx^)>hG~q zZLXw53${O6S+Ch>M3z6Pm?RhRoaeCh%1^$EqJA?7+7c zkPHU!f=}|R&;hV3@iq;Kti_o*Pd*`!js=Y z(yaATPnz}7)|~b5OAXH4st4VayCDBJo&IbV7bFZC;vvLv}d*{SY>yqm)ZAeZ45E(-Ql(G)k7eYl%I3kuy#}B;Es&a2dr0{ zR|BBkAHZu z1S*Chp;XIikebyC_z;fP{aKDy-XB;=YFG_a4}XLFmoLiMVpAd@IdKVOcME=dqbs=B z{aoxNJ@3t1dVpT8eFc#1^865^*OMtcYFk$0f8pl_x;c%6S#C_=aDCF| zLd0?6mK!7~2-Q7|!lXcqu&ZX+f~0iob?RHT@#o&>MHe6ooKH52oDb-7S*sSXh}W=6 z8GLkdr1Ra=*ai8->Gi&+6NiUDW}aLBLo2BB+ljhJKw)(Wl$^N*6uu67fds6B-*LC;3sP3a z46990Sg98%&f2l4LOQHnDG2-gJHI|oywoXu5mUi&!je$@!D;Glx7_A4^|6|#?-q*> zIj`i)>j4#@UO*RE7Y5p?j=zBd?4;L2t@9-L;r`v%hm$kEM=FBb^XUpQfpcI*#jFO2TX*Z~8(r*NGRhK}@YSsD4)TW;em+o7K(|wTD zYB2p!>AdE2qo!1X^67ca$>Z5Z^xZe6=Uq{T=ls-7@&#>yl2^zEgTb&S?fpdPK>I*I zV;Wn0l;;v8Cnh-cIEjLplvGjSmhCt&PC`grBsPudyv`({~#i>GXl&J=MrS(XOzI(zcNCh8@$_JCfK!eY$ z5v}IueS=Yu^!s3PP|9y0Pj;lrV_ioSQR}}QZ8~;nuK`ty4OsS!NICq|3`)f}UmPrB)( zG+bc%yti`*C#J7*S6bsVU`1z~%i94ZdGv53AEr?r|4Q#-juWxKR-gL(WVf`qiWRF( zN~{6o|2kaD4!Q4;{&C7Zeg92}g`Z#4zB5BDRQ_nF!cME(WL}L)sY)Cq$1j1hNrFI( zHSYL))89E?iS&h+8jt`;JW;y>Bx=RDPGuMlGx@z;lpzMwkQ z7@nGlyAneuQDpG!IUr_yj={5a{S6`-hTZ}WWAWw1vI*poIQSH@6ni{~_Y{jDyOzB~ zPwTN1AvuYr;&TV>(_hgi6!!1(s7VE)kTF1KlxJ|?kM9J?A2cu<1f2`c=PvKZg3R(x zIXV_X|Gj*A{e=9V5o?L53A6EA$yev|Y!;J-z7hEF_?tfYcAvfS)z1{H{E6iCopaOQ zJ5=`GCVq+is*9%hQg!xS$(+_;|8zGU0zwR^5LBz3x|&7_!_9)_E}%m+<`1jRlB-|| zjq4I4k#Dn_C*wW2atWG5f`5wSzYJo6Md5Jd<&d)>EP`K3!0Zw{zFLU6x14~xdqGmB zO=zeeXEkg<@X5uz&%$INTyNlm zWd{)r_SZbq=y9{M(zf!}c91Y{&y0v-vqirak^DV+LZZSpq2BM@%dH8UYK$ZHK#T+9 z>nB&s8w^21Z<@zwWq2ztWTI^fpK{VFopK5|PFP(~MNro9!}LfIk_D_VN`uZDAM)^G zLeeQuCgK>yByTZ|n3Tm#`RB{lFyTj;VFfX|t91{*(kf+0{HcBm>>WHhww%VlzUE5n zm~mbyVj5tYE8HvB`yGYk+~0V-AN0F5iZb$c;ZJOFf(h~@nKSYm2E&JD@6=&U1WYcZ z{6K@DjG|ByUq)gJrbba%-SimsZk)!w65rok?Az%0if?W3ay5IRIQOTdy4pNDYAVoH!+SzJw@&C}y`J*iK>mgbr@$a- zfyWoW%o56)O%{Q?+@S$-M)mZvgcLpRwkQ2rqE+HtO=8#ZizSfqofURN?L{vjb?1XS z<~`O6S8EhV>d)65j56D5k5DUC&N(R93m> zbCZQ=#d72m@{p3(jN<3Xy^EFC*mkw1hVl+qjVI*a?Zo+?wG?e)%f2!tWs{sRSbLi9 zEBLShSj?UyNetiWpEG>Uf0-hL>u*x$^`vjbbz-3)TZw^no?X_U!bX1mbyl9`#8CcI zthGvi1^1U&-h~##f%1C|;otj#`SahpCq6)+bTxH~i1zN-9yj6&8RBgZ|J^)25)4Q8 z(e0)(*=SwF*b^gH5m`=)s3?we&a?$5wL>1`$FC0Ml@-4KxW7|w?5i_esQpUw*j>dp zkt1m=A%H;DxclS$1zkKsUtd2ZKlZ*3K31IStmY4?;+V`R{|&G0S}n0>z15QhzryyD z>b=*u2h0i3y^p1v<%$zIr&NoZ3-cHZG$j)RY8hs`tmd&D?&5>pkf9e3E4}f7`{(GC zThjjRz2D|dS1j)8=p}HhODf1}JbcC^@p)IaIJD4SL-EDnRx(e~Fp_p6J}Sso0b6!r zD+n#GjX-cn0Z$L33}htBCtu?Sl_oQ~cQqrGR>-@OMp<2w_gHc^&`S@km0G0B}fd+YaLI5YKYIKcyn%DSzKcG_OWrA?&2S{9z}XHZe`M7!4OVI z=r?XAfpyM*uK11#)M<@G<5H1o)WB$(*P?M>9e$N$S$M$Bp=Q{T{tK>aTvSwptO(Sh zI_A7D!;WW%xtSvwyym!Ymr|iSu`f|>S*&Vd3)2dks~6E7D`o>)0*d*fbz@|@qA(ICSWJIsm! zcv3ibpYg~_qYaQ=)inqWh{g(%kB)W!*5(>j@pJPr%|4JzSzj{DR4f>Zer#p8*!8Rz zlw^FU#xz*==ER#8_YGMziwJqzfEX@5?V`8y_fG>+G>h+X{YO-$9vZUm{3K^Lo+z@k ze?m~T;ihi#>Cw~^mN!_ajbV?A^Fx)bsiA6c6>M_dBX@DtV0Mt#nVPPSwv}V1b zHFe66{6SLCYIXSaEDxcqU2+(kFo#W+1cUox9Fk^R=^59v%xBM@jHG?c5R_{4#b8xR z=@EPMqf_7J!419?5N`RQfHu(FfsXEv_hX;NZCxWl9c)}w0}5X`u$2dhr(WfVa((uf z3}TZt~@|%U;cJwOS^KGTDL2U2)Z*(dx6i=-l zdnGstKYywDS^qBm^I!eC2UA%$`;XRqPqOIInGnY$^UJU!df+jOVdEW1Gl1vRaZeo8 zKm5kU?|bsNCf8)ef|ObObi98}&TBoG)3m-;g>0yI{-nHB=6$hjaqx=3qe!Ac|CM@N z*#|qMh==7~`@fbzUCZ(ynJ4>(K9S^85~B7a-1*FM1XMf@f?KPk;=slCd(*?evLaX_ z#t#O-CXC`-07?b)K&3yS@__yYNsTN5d$p?gLvm+kYTaw&*^peKUN#DnBqEWh5c)x=?3xa+hsobfckw*ly-% z0we|jCINvWmwvI!HGrh}(7_}swysJr*nvJ(U@rI*%Ih=(Lu>F^Qu_4mV{$=kj8`lY zUV2=1gF13#5*1bz-YeH3*aCwcW}Stv`Z-$EaYLJSAYtNeCQrh``zK{~<<`AxD~}=h zu`C~=>q2IL^kJ96Ynrv&gQDhF24XmCO)$fcPL=Ev&$#aY5_as#xHAL>q2oIc%Ej)Z z$NbI)B88LUddsjtWKyK`lI4|4dx#u~ZhXa{ST$3m6pz3E$CG09jpsjO8D*t#2;ne6 z>_|%5%2EPVHCCaZFu?w@<-JRL=TU(uiCTvfP}}ac2D{dQ{04w1UI6z!^<;n5e|hS2 z{645cf&APMfe|g!Ag#ZD^k5ks5W|9NdZW(Kj zNRnYiiAmkW9;g5hYLeg{h%R)*2?8wRmHvCPz&iLoaQXN_>F3*Em~TVs)=bhJZgJH7 z?U20iH0>Txuu26$#0$NFJo)I5@I3Z!ukUyB2}kTHzqs{9?m^HFgbaW|PXo0SQ=xo> zWKOO2s8k?jHQ6vE{zT&!z-)Q}tYU3Y`S8J}=)-}$P~W&b;b=<4P1?JU->dwJEdZPL z2GzCpEI=`fX0KN5f(kGQBa5ik-a|oaq@tCaX?h&p&KZzqN5Cox_3t9 zoH0p6y8O^T1VG>SLlVlnQaN@*MdQ4neujQ*YB2R5jEWIUF@@Xi^OIF;@=T#;wgXuS zvls)LzMI~17X*qWw$<}dHymW7EPj9?UIJQnH~r67O=I$SNikMO-+g3~l|5BXZr%qP z&f^t`$Z!A$T%#SB0`9aMz=&S_`u3*d8C{W*HfwT`O1kw-Zk})?C9jDCgsz+xb*cgn z-Ldtag%xlNbqY8gRhnP>U;Ngo;J7jjoD%zn=?0fMsdBp^HkxM|x7bJAK^^ZiT$qg@ z4B;9y|7Y%9B8%MU#saT7qGeiv`{Xz*d7)*XW0FAWsH6KZxy#vaH$6$9v?D47%z{N3 z5e(tUN_(5OV3{^hrpQr7npOV%ij2~RA1BjLfkM(JndphD8w{EkRSx48TEi?^EVn*C zUa>UI z=;+kv$*yxeSp@|yDme`$HA1WaIBE?l6A2)=sR#0Yb6}8<@su%1hT19&UBIMX#9T5E zE@uG5T3{f-Q2e5Ki{%}u^`=#cEdW`ct}Q*rhppcOGbU!rkO@84wi{ARHvt8$wF(s} zXev20@k#Slq4gMj0DA~3=(d6 z?pWn(3r4czmjnI($pbJm{B=(iiM94*rMRZ$qg%B=*|So-p?cc&i}7kV_B_^vI9|*w z*$S%wvK0shzTA3O)EG)^2TWj&RSiG$q8+fLNGK?1B}*<8;z6w~RvmdP*=E^OQ|)^e z68C6uWxdTSJjLW0wQk8`$feIN_oVG+=11?lMUrM7QIOM?mJD@1zMICRd{Y8 z-6ZJq?kk*;DYL)f>vmr<=_vP<{NE+@2kjx(p97ok0 zOh1%L-+!Q%%Cx-)6!j*w`mD+|`zku_(d@DMaQK09=V;Ex3$pwnI4@uUOOw&y`lbcP z?&CApm}|G!>TZH+Jk=`$`Qb5NAFof`*7nv`R0AjP-X4vPG;|9DyPE@>z*AUzAcf+F zPO7N)!C2khiF?x9(ZCtt^&c|)^K3M%>#X2F8Rkn}!~!2j=G2Jy_ks^QFfq>waxRLQ z!4Y{1J@d~%5P|kV;J!-=c$EIA8T{`BF>p#8{ct>a!2zu1yjBmoKP>@w$w&b68D0BD z4;-`-<;qGM_|MZAGQl1-IPN`0cN^R@9AZcR?>(&`m_UllLbnaQ#&C4V^>4$Bm_Uoa z(2UJr11+|vYohymp_T=-cyRskT~+WFA<6B38wQI=44`~K4yL;^#`yU7Qi;R4IQG9U zlE{(3gV}My)@pC5fWIh^-7{zV`$=g~ykq=#;nOeR+gLi{CjJh+1OqGRU(P0ZW@<(7 zE4i_ShJP;=P(k6BV*>krZpd0+?4A6l;{YUWhsP_vH$5<8-v}`AYf(y*Ts-t~9Y5cw5N)M1!r2kwF6`ZRE zIvYyrEv3s zgNYy1x~|ahj-e405O!Zf0-4(SA@}eNBt;T1!4$4BUj5rgXn{ZQf3O?W0}<1F+lV|; z(reY-KtHM%)ZB9f=%;1dy;6h9p5{;j6=0vO<&&`~BY~+R_;4A7pl$>B@n$dBd+e5g zM6V#Q`991uR%QNU%0R{B_&v7Fc7euh8VJv%0a5tw3fqC^D}|s0M>n@YMJFhU*i=<* z-hwk!^VHc5NSLPiou8xuCCV8To#;eV;hT5$6B9Z$?vAHxz)dc3sRk7YOaG6i&OIK= zER5q~l(NYTiCtt}GKj2F%Z6OWnAl+uAxZIZ=QGB&!pD@tAhS&_4U1ufrV)k}Le}i2 zT$-_k$|V)LP}EZB(>^aIJO9idXWsXm_slux`JUf%-sedOb|e)AKdgE=xByuN6)J{b zZ(@(ZKffi*EMmPoO;B@k`uIz##)#9&t0C0He=+wwA3~Y>_O~KfvLc{^>k0NM!4x=3 z&-4nv#ZOO#yld@{9;G`2M74AYoSUW$NVNfBUBkUqN3J_e_7>jwL~k6d56K+@Z_4)F z7>iBYRC%P!D=0IPxD-a2dhp|ua$#HWBTmrw#=(AkM&djY%yXiLStRd~Z;{mM(Gpja zZyb{I8D0|(ZFV&OT!#4e2tIa}j|+Y7sT4)>U>FMK*sH=RvT(`nNcO|gjtg&i9oQQ+ z@bj`PEh8ReUlpxlV`v81Bh=5DTD0*oI#`VZSh$yKIuQ(SK5tWr8N<%x+ zwy*m5SxuJKmMWge5Q(8Mn$R{unn!x5@-H#nm9N%00KLtv^Hbj+cnE@FT?d=UviMn()?t3?GxF?K0R58?6Fq+OUhcU?V};v#~a)b z6Oe(gZlS863Tx&-OG?Xy*J=kfGJWEnNm3vM&{a^ikD})uSa0*Nbh#DjzZamyrPhzY ztYs(YRbB6ytC@!D1i2u;4ptBk(sMYR-TgJE@O9w)b7?&rua^@u^E3!Yn{S`$L%fx} zLB61J8zX78K?cWW%SbxudI6JBnsm^v*)bZP9cLd_UOyK|P_g&CMQ?mBCMMB9u(5Qd zep{|ekX3_`7(E<4;4zy$Aa43Iz=)zA&SA-u+I*B3fct7d$Jp%WwP|4`HhyOa@50n; zU*C@@(@$=xL?j{HWL`r{p)|68>^#XqOz#Eo)$ULRJGPS4VH z`)KvUTgr|v4(I}Kn&wFxG>(<+oDA0I)741kw@9Ml{deAy{;`QMvmd6QI@T%s`|Cy`T)YyaPi`~p*c827qi%+5375h_ zqV(0+m%dyP_#p|_#n2ZxlJXTKII9(HJjB$Z`FTjnH5MWkQgy>twrNPmCZjg{{T4_X z*dFFlb20@YNnaXvEd7G5!Brl|(G-jkzk(UdWWOmxt%+g&d(p5?f>I_QY&_W3x}%bm6772!3MIQKCW)(#TGaf}XF!8U7@ zQt|MuYQp4-9&pS6>TPblQ%eOp(}~-8V#Bw3ZXWpi&BSSt1KxX!rz*5=5w%QhObo7( zAhx3dpqhf{trslU5OGWn3LHnutJ5$5H-|GO*Xu_?z34;it_;u_yA<7pXwlt-`S3J_ zw=YhUK<}{mHE(|X8fCbKd}tgU0oAlbo2gt}>(6#AXisiSvOX6Ws&NASRs?_T_E4|~ zRPW~iZfSDzmqZN{OUA-ISY`H4UJ-$1W>h;9MfDqjn60Jp)J|I+C@@WGcaNxN#FA}b zTwzN1b*%`7PLLO+Mf`jj8b)lAELDbwA$OwlHi!yFQ9NuZ{DJXucYAyH2l&7Fx_0n- d?FR@QzfU?@#C^H({7{w{d%(h4|qcQ;6P2}lYIlF~y+mr}wobhmW8*WBOn z9N!OqFf&)|SZl9!MzofO5*{`cHWCsNo{F-(4ieHcG$bVCdQ5cS6Tu=XK_nz}Tpv9{ zH%Bie7YneR`e!R^2P7nQeWmX|LBvn5G#5L>k)5WKDYA3>tmPeCu<^#q>96jU7A4G0 zx?*@MhwqV`S}M!<0{J)Qhts^%)*qi;)8o#Rx9{FvV33@ep*B2~lzR&v&FDWNkxvh| zWJvhQQPh^)d>g=?mN+(>a#pu#rWUe8>!o7_KtQV4w7OjUqr?$Zx= z=XdpI=XZ@=M79QQoe@-Vz|`?OETp7^vN*CYew00988TlH^yx$04}NLnaC+3bbvL-E z`Yaiz)Ktszu4jG(5{}+(1N%`X=l@g1gv})PggDjF)Z5`_?I>|LQDe8yV2y-VkSsSn85Iqs@v+Dx@A8jNT?)!-shW*?)4 zoJGr<1e2<08JG>w%F4?b=8gT#8qvhpIJp>ms6QESjxP} zT&QekfQ#{jh3~`s_Utl9nkBa8RB}4zO@~;ie=b*cC0hFrEkoL|uh>`9{dD_ZqGyHo z$oyf|+8?fO)IRxum5;4Zq97i7nUD#zwm&tHvNU}!rW%%OIjOUmU%$M~dsF08Z0~J0 zeFy&jG)Vmd|duhAK-Nd3yb)l;(t&k3Qsvpdw$>J&ej)OI^}TnSvsyu6gJ+ zPdfAFfihk`e@RMHlODZ#dQj81?>|a928_3RzmU9fFFRLges7R4rc=k88;5se{!+gP zCtAByxU^+XqU)3wZd3!>GR_xeww1G&%N8LB`rgIvZKaDIOquQ0c~igK zBG@v`22Ht03(|jx`vt)_xR0|^Tu8IZ`A|RG?%2HS#VA_#gJPiG!iv1wz#)fM^p1az zgeRIoe_F3A?RI%Smu}WXI0e=CW*I$6+#;ucIl@S1!b}&I8 zU`+i*jzNkij`)EoAN0$`Ad)T0zK-9!O(gffms4l{F^%;G?VtimM*W$AH@20pXT?75 zAEak3#%A=gNOs5@TS6Vr;Kg+ZRuZ3IWz#0ci+72#r3rDLU4Ah9^v{8lXly}4A7clv zfcgEFWM3$oyV$>2$>7%B3G!0R@*&!19~sDE4pf#2Qo&(l9egEr`bV;uO&Lua;6r`}z-UmUqrt%s?3i zhvjb*vVKGwCcZXUUlDX1UYWC%FPQh&PPYoKYGagE*zx}4nMU|5_%Bz``4x3bOWarb zk==QCmvZ?Yn)3*gGe0E(aB_JN6p$t+R+{h_0Ha~;Xdh>MyMJY60i&IO9Va7d9AU-q|VNTd)%Kh7Dfi)5c5 zqN{a#&N#z~kzh=ZzG|;3&+k}4+w9xTs#9wKk?^NiVY1GncRm@oSeH}I?B43mmPgAllAzU;|?ieHU*qNJ9_Xg#)C=xCY(ECmJ-@> zB^+7wnx$gphSpG$sioZ*mc==Eui%tOXK14E+Qo;G)ab!KQ>hM0qu#FTE|uyI_h9li zvfnCidDrp40Wnq#HDudq3ZO4zkEE)L7ghn%E>@|WpW~<7k%!~8<*cmfTt?;sR5o@r z8K0$n(qcVSBFUqBOD@GZeE7~nMSxmb|DR&XaX1%uvinPzFF`jO$&=^YL($U%4pJ}d zfH5r_35fwoMP5eF%k-cFYu;V=VXy;O_46b~O2JgZaJ@2ih*kuLVDh61OY*3kjck^} z)~IZh@{r*$sRF4&l=!d~^xU-IU*~?nm20l+k^iOtrHF08gVEfk&)=(#D=NvZALBRv zbGJ1=$}(TsPk%N45`@aafQ+RqjY6Chg!=J~IktSy_31jhdM?O0W>KdOj`)~M!~AcH zbBd|YF00fax06y8A8{=7$*05FGS}m%*E=z%3}mkfjC($0unJ_ngfNDlQ!V z(|kyr)ICY4MT#5G=@l*Q?()r=e?e` zIShC(3qL9I|F)pmoMF_074eL?_#ln``Rkh|)LWJA(o%2m{3H?X89FTRdY~qxEfL-25ZS&s4E~8(D@=bfEav#nbK*^ zjeYP8G1iDE;EsfpGi9?0LF>&PZ1msIxv|lQY5KIY=1hHGsO5qL)I>H@EiM;qk5x)m zeD-U+2GOk_j{~1#pR!rBlz^wYH?}#_kpoY)sJD8(RK)SEY+149U*O|;LET@M5e1AJ zcqBcYcfe8WHvZLLS4~65AHRD;aCj+dTh?Mujy${C?E^Ry3H*2D;Db_+&R%ovE3X$^ z18-*vdV6vBXpTCrR!-^@{dv;ehdIl`z6U<+Gf%u|KWKo*365jF;i-pyb9eeDZ7IRq zb$?cOIzSz1_H;XEk!78ZwVmf_I`1;_qHkOBsuet|trV_6Zp4xc?!|(CGP`@HWc|3o zE`>$yP}igEt5`MRcRn_kZr0vw;SO9Fv0Gjs+3?2EZ#5W$&GM?0&!5xpX2i_Nz9fNa zr|$*_VFPM`i)qnMBwiprUfYgW7+7t`8=tJ0Qs(^cO)sq!u?6D5R3 zMfa;MnwLF%BOwLDs@@EA;7n?T9<#@@jJj?VoH)?--C?sC=z2ADeXrXhl9v2hOe*E^ zdQeKywnO=2^&oJLkZXt?Hr7o@-h~kaoP=7Grs-oRN?aO(&PN5GF>Q1|Bf#CShG<-m z+Dgu7J7)lU*Xl#b?-9_&-EmhSg|L%}alj#V;Q5&Fvk&_Z$AN(@o9V{AflqfZjx|EG zCCBFXR{poU<%2w{syS-JLvqsPOa!b2$=&9_cEK-uzo)~k(3A8|bWA+(x{p2qa=#Gv z%m+%O6n45kIJn?OGl|3Zlb9U`!Y$e$X(&D?o#x^txRKeA@qf(31!omNS*`}gu(8&gatlNvu2nO3oTfsob>Yr2;A=|NnyhtFPlr4f8HIn zM+&caF(0&U=Ub#3*Gb=-M}ZUZ+OyB-kkB(ll2FZ;FUJonx++;u`i z*zY_ChAZ`SGhsiHuU7dp`p6 zpXlfX4}acE|9BEP)MzBK;oOak0rf1)acXPvL3TZmTloI-Ox2`Ah9lV!9(-q=@t(Z3 zzA^;-3J(K0F9u#$QuB=+dGNEup(IC*J}GVtYnw?T3pQBI8P~Z*C5!+L4!mEdr^lj~ zeMJ}`M}d>@kY->?>9J^E4&F#sN&r=gpF;{B9H8|Z3y4`3(3D5!CM01~^HQ3}@6xnR zR%$ZY%Y4YnI{hB-uWBmG8ZG2E5)_r2y5N3;T?wipEZA z!?RDi|FCxS^k5N9g`KFw6kTd3r?f+13wGQSzdRXUWgNE;UU28@3SM}^{5^AJY|$SJL-AvZSErQd z+i#Uoxpn?UJKrj`jy`sat_tX|Mgmr7vMYVsoykuOz0bq3-ICN#?FMZ2kOg% z%jkh%Yncf4VF1tD25}URfw~VUS3iUH{kl(z&id#d`LR)K=4VX9fn70dMAi*A^*ilf zZx6fLfP0R;o`b%{l8n0nv%bP~29F91hVl8qaq3s>tr@}zULV1fi;pZv*uTSdnG?C-pu;T^@TR8e5cEY~_t_-*y zE;4xzL$E3#hvj|4p7@-JYyYL7zz`}C_wtwy_T0mek|c4LuI`SrPda#xw6lFu7Dt^N zed*dkIGA0#drt_qe~nq4n^N0;)V5P~A$IDoKJNwr?+47i_%qCR}Tt;2tLLa2N7`TV|($j_L}P~jL9Rfv2aruk|`H6jNJ=oCx{~6K$~>6nq*pT zcsz(jJLxfBGKoq-Ml3*u)M`Z8-2#pEcMgFmRJTFJqcmvpTZ)D#C$^C64@C$G3YUQL zW*Oe>JQiGGp0r6$tCTOuAxfvet?joXgI0ttqZLq72qSi)UpfCmIx)PiIw<8!issG> zSUh`yp9^lRb#c-$JrhQ{S-=gbUjExLt><4Nb`0mBoAJ?zp4#RWAB*oDm)Sf#p8GY; zPE_Qho;-s4)g~lUC##_Z1HTkIKP|)#T?xaCl<5847zjG&sJkGiWcr2{;nJ;s6B59= z@uDvrOM&f65Si}^v*u#t@igyf%UcS8PO`Wtz16$aUs9drH%^+xh3{LAU(KkI7@SN< zJ>Adq>fZz5`)EhPwzH~k+L)+ie_ui>G-kz2;-lulv~t~S9HOQ@nd7{2uG7GN`IX|I zUi1O%i|(5PF~MJgqx^DuZElJ-0|q9}{UDO=NNmWG!V75i}J8d4S^+|i5R zK}kHxs2f81F%4kX?BzQeyqkh=Fhk9W(H!!(LLGsWdFXBSqx*=MqpxDe32#gth1gD^ zaA`eb68_fU{cG`mv%2tEUCsC+p=yuw4rQa=JI3GaHL8$?F;5B@mS5t!7bH7hfA%I| z?T&{U{f#o$qpYeQ2HZ^;2gl|IqZp&gWA#^(HoxC*4f@Z(aYnluMc?CL3!KF8f~R|1 zx1pN^ninRS#~W_L^i`K?*jreFPPoiA4JjS5*HR1Ory|#M1Lc%2{ywKilfp_@nP0Ue ziox?`!zU7G%t^9jd%KXRVkcb1j43kA__ftoMSJqamuKmk?d$R>%u#ac+X@Si(=_A| z-Nf^WE?k=2xeFTVWbJBd$42eHJh9Vkr6n>mNM$9=NKxUoL0_CY{{7k6C?`q2t}`cO zHl&c}Fh{2yzxr)pMq5yRUY>@sqW*6vg5Xr_Of7IE21V!(lb%;b+bLZY8!i)6QCJ=b znlPhNi}Tz4?}G~gHnvf_8_yD(h}ZgXC32dHFn2E)dwruG%JaXH9w*k>S+h&Z6OxW< zSyA$nd?7;{)c}h-ESjq+levEo3JWl=lnizfBm2$%0f$A47G;^PYj@{_6nn&zfO}l6 zTR6(huW zKA5c{)(OFSyA>v%Yd&ndbw2?Vu)rrN1$|-E6A-FtUK3FG8B>xSGrkDqAZ)tH_q!2= zGq#M)kI-nTv#&=BI}sih3n$_1#V^{Gk{eE*A9X!FUcY~+`RvcFG4L{3HH!4u8Kf#I z9li~sDE;43OxP7Oh_#PbA~8yVMpg2of&M(pK4TcbiGfr)|z zIy#f19)d`OD7b9IkPSZ&t9AT&>@6FSU{s$PkJY*^uwR zmkQw$uva0k68za+f^c0*0ZueYLx`X2PhS=8j=K~-T@ z3rR-3A&cQ?<-c7P^WOhnZRh!o+{N7fuHcA4l_a;iaE7-xluB2~1oVT_Ed1E|49c!7 zDSf$YV==HGN;noo|3$WJVHEFqZ*hfhew~9~{s8~S-dw|Y6^ux${jd|676JQVDEA#E zXO*+ywV_XYu{qC0#KC)X^3b@2P>)l4zK#nW@${6~=Im0p5&=f}12gl>pnK3jDilU3 zJ+?A`pswvL#8Np>({Rf-5Ab9nb zYZTfOt9DYaXNqNkKDN#d7tE1{;tM+uNTg}ufj})zfMgui+GPk55~}hV6+=TJC0<^n z5$8FZPq0dz!#oc+3s7zv)$*@bbC?q+`lnXZEMUg{v{(SnwWjh8Dtp%L;#l4oM&-@;J_0pr zuUjR(%$AqA)CfOdTeP_%)snQX_e^~Ct_4i~YA`uPiv4Ai4*`6ZD=sssEa!8l_Xa8Z z3T*m{`3!PkezMg_7Ndv7fX>MlE1s z(%jX)QLz-CFsdsfGvX;4>wR4p3WT}^+P zKxja!_rufhGvZCvF=rPl>g1FQ_fYr50~SKN?Unh>rI4S8xidS1FxinCFc`w&Zp<*# zZJC`jpc{MM7rzCR?>aFCq^Tjl)mQ;2<04WzFE8eiuvrhwEfIhoe0jzyTv1Y@Lx7f2 zGaKZ*Mw(~4PK|&lSokqf2jZ!PcS|!&&s_Zo<1A=dCK&-7C9>P^XBDam=MI;KU<&ZN zNizVAc-VwhUL0sAF4%&6PJkL4+azN45URpTbJ}vX;_E54|88rr^_u(pPnS4NK5mhK z5vEU_-k2QNXIf|fK_z62092A0p_)O>hy-d%D!~AHil+f)W|5*W{yW^UX@O1r6iNaI3h&tRINLo?^{XnH)+hT1;1j|({q14B6`^B&f7f!DJPZ9+>1~G zNf1rIHQWNI^>GJjT-B=Sx1p|=clcrlg!@D4O^AKEWPF5?;&t`0{{>{1CAUE#*y8Up zBuB(ugCV>?LjVBFR06Wx@F#^4L%<~lfG&(*R8N8Lr&W7Y*z-tRex;?M1bFTgMMl`> zd$Z+_jE8HP(74}hW<=g>7fAU5=uct>sdEWWmzhO4*_yRB=(3t;wUCJgRC&_e_25WK zK+}~O(0S5}W4U4y(ReZaCNh#f0JP%J4v(OY0NU+W;IE8>uUwXRP~bq1gqJAw==HNE z59hmKk72;grlnEX*sKVvc4VPTY2mnpMa$BWY7cm6?vIKz%4_CA4hpr<=0#m;$K#*p z<0sLYeoTIw+-6v=qXJ5QEv456^qe#lSgL{Ie#(9@dC+LvuK!bQE88dlN@$DU1CUfK zH=4<8YQR=;38IP^|~2yu6pP=`Se>9Aixj+ zYohB5rQ&nQ_P<U5uR6LR?x(ay=VE!m7zffhj9?k~{3TJ)ejkNXhrk8MKp4~PxP81mlaN z_o^%aNQvG}eCX(QGQ4djoF_{G1N9*?CFLrwC5&-=_W3} z(toh9xd6vWY))~$-`Owzfcxu&cd0KTt+j1LIF2Qby)}W3Ut$g8lTbbBa5Vn1p_pe9#}RdVzSn&p^l?SOHkl5VJr;S{9c) z9rbU?+o{BK?cd3U^A20Nxz20R>;rtz05+S8d0gd!qeiJK$V$3|34r~E+D|wPX?m3G zNnHIUkrKZC3q55wiR7mvzQe_&&UXJ}wC;%>!jLncd5?fZ{q~Jv*odxat>9W5nzijs zV<<#bE`hdiyt(wbOTx)SBU(4Yu)>_6x3a31N|-feE8q8sL+84AobwP1ezz1q;C_VF zw|rR}i=v^o+Vc7X?Ghf%8r=>5dT9Ajq`Jo+G=c8O)e*ifnhe>6%zm5d#=p@sw^#n)rnH2$VppwJ$*u`EsiQeb5GB zGlznQ1KVe^CAj09AuD&$S29XktfJ+aCE$4cinR7pxGrHB&!&RcvH-Yt@ zWZN8v29;b9TS`*fd`Q;KGH`5CZ)Ja~O}3l@E352gHct2-xt^+7r<-Q6+O(z^kv)!A zV+sBqP525`Md^BzU5rQop#Dr#Ah+YcP7T8ZGTx_EbmcR4x^zmn6-OJ}7TwG92`T!c&buSStK)#H z_G3Fu(R2dmZb6pu-(`9H@-#{BoJ-Y52kO^);ub5)^QkfxRcgjD2AePqZpnqin2J4M z{#O)TBRup?rN>}5dO>IV(n95c1;|hZ{lABG`X`Fk!)91O{RDr?AgH7(j#`)(rhHYg zNH|$R5ukhC`VdUu$51PN-eF5chw_%bD@wOBEBgt^^8G$&zY1~U7)eo$XU(-UyK(Zi7kl}sgOf-q2 zEb3R+j2V0Ezw<-USfIjB)%A+k05*4vubq_cJz7E41t-7tc;Nxh%-!uF zvB$mymVm?-X;QdbUxxViuE$$12U?WX={J1wgMUsv(=!)dDZMAeft%>32DzYkAX{!{^`>{wQV zz}OqJ=-c|Pip2krzg@1N_;j~_BAJtP)43-2!})a){vrLA5IJR+cVE*DeqZ38)eHz` z4KUcMxd)ayb#K@HY}Yieh-&1QLZM_NUmBy24cX?h!~d*hz^TtVZ1(tqO^T5$%S+{D zg|7KnX~>*Z)VA5nvutx^dpR4%aq^Ol-swM61`Uk{t?3D_s}3^LpcZwj@!`{HyhdSk z{~#|T>M0V9(i;i>2A;P|kbKDd4$L=2CNv(a{9>Jd-hEOilH>6QR*{H;XOmd8 zPlvlmdz7j#g7W=}Z5@kt->B~}fl~UlI`Q}gPz(}x-f!{=k0tVRpc4Gda%8WU?PXYh z6VgEniounnnVmv+&bBD`bNUWl*vS33H@1R1EIkh&`jSbs-L-N52+$QV9uv-@Lr$2NKFf~#JMMAm~=YH}iB$K_P9M`=_Xe9TN0Gf$6TET(@?W~a%Svo|81ep z5i2^90zcc+Oz=n zJV;r?qb)At9>f^Z5Ow$YFZ2Q6|Kw$4cZfC_HxhvJw5cQFHnnk<7`-@F`vLksH2h^|g&frS4*PgALu@Qjivj8eQQrZ}=`j-$ZmQ&_pVyn$zGc&b zR(x~ut!YQClwZAGPfScv^c!4{T;=gJCjI*6n5wV-X52={B^Zr73bv&7^E5An1jZ#U zdY3n1^%er&aBxE*G32a=B`OoL#oyptyAUQzXM(Yx55O2^GbM`Dyx_h>r!pdH4lgZ+ zI>~&^G&`l}fJp8&bGP)dc9wh?!LJ3rP zL9i00EcF4(0Rhc%W({7!Ssp<;4eG#Dp7UX6y^0<97DCFgl);WulLkx zF_ns#bu_Ac;JG#&C|2ZA$b7wYwqE@O2tuQ-$K1do>C|2-@g{V9t28 z1T9S{zwQc;luZkkw&?vy-}po7GyL`i!q58NG70@9L_TbcKL&z;6Tm-7w227 zXp2DE5)SjUAmrE?bybvdZBhq-37ztYFJ`Ebe+6+Z;V6`(Vte!Le_DXC#T3cH24C!H z$K0@ggp~ty5&9-KU<+2(_ef!NQ1Yl{AYx|zC<>&uOlDjsz41@+=YU?ZF;3YB&;#_4 zl5A@o8aMZR#2F!SH6f8AhLYsP!i+f(CCCcF{<0{c>PYO_$M&6aH={L48NP0EJ_697mT zvTvfaeI6N0x%8s>@5_j@)kc2ESnD9@V;CCTts$g4&f}8HW0p?iRgpZX(~a#+p0vEEzMD#MKz55+YhWufiGck!M z42>&wd}YtXR@O0FIxyVSoCV2GM2 z38=OM zJ6k8piSFkRD58>AgZfJrZdPY;Bp1ktZ-L5OGfbznQx+y0XYP6HSboFUW_T#`wL1yS zco4tJW?_sf7--8n#u97;)XII!d~9l&{JZJKPP;H7pT79!&o!2%na4<--*civJS_ei zX?J^?RPn#3ab)5mL}u}0?&MR#NgOAUlxLA%V##E}W-m=YbwLq2ZMKuPi5~Ni^t- zI6tL!_ zTDI_8|6ei0MlM#X7*xnHtG_L3yYvO`3Vy{x$dwvNGptKCIO=CT*)^Q0vZJ!j6Pb@AZvx181~gngr{>riG@u`z=2>U%AEV*f;vj_Evt zC>i}pLV>tvDZt|V+kY0*xwn)Hw$aA|PoElJ_;y9rm_Bii3VtdcfxudP~lu zP|nnIR_y8FKm5w!Bx}M}27h%^Ww1BLVnQ4^yqezAY-*T}^}2UF|K@91%v~I`$KR)! zNu(qwRCXbJNz^F%B7Blbl#Dvu`P;l(FRu8+d9xdaO#6&J_`pl}^GAI?QFgd=7(0Ab zD1Ykjp2_yqFbm(>Wp*Cp80?#{-x*u3=Qa4}C)N7|8I^hbDl}`>mip<*j|?C99#=-m z4-ftt!s?sKleq=49cH&eqe_*bA1rx30Q0d_zd;MN5xgV&mH3-L5*MB$L7%%o>yVT1 z{>4b=ma!v>X#DRcnB9-L&JrT3gDwclXmmgn65BQAoAEOJOULH}dG7gHsbka$dH4zz z|FYg5>%*r?qEXH))>5N2*dRI|z9gog2Hq{f2I`6$*G%O}Pdehwl6&26BsDR7Ik4O2 zw%ggT+YCw{xAcCO)XxjbfCwOSVf}g!4OuT2Q#!m`RZp*@-pg|-r8H=kJO3!@Vjh^r z0K`MUzud0aneiDpve9lUJKI9zLaJQ<~<%mYX@nt`;fx z%J84fnLsoO+w@{MGlcyjj6@^qYWr)b4M-#B-pG0T=~qEioI?vZKMjTL)53GrS+qO0 z`9K+~D7f76VNXm5dcGTfZr#9)e_L$FUF)fgoSH-^@B6*q4>~>>mXwDUo5+gLEd!NT z0%EWrJzIR`iSBHUIT_xSyw7wJ63>o8xuieQ zXg{%&N3KG~MD6`S-IrXC894Z)44=GDAhf(ZBx3Br#wvmx2(zSusCjcG-ZlvMafC;o z-#N?+-;o(cZ;R#OO_m)2$}G3YlGgtORG26VxiP`tTGECTr0=$R^%f%AEMQZ;ZpPu? z$ng@#d)XW^@OrDIt@?7j%Vr3V9Xb!#t-4r=i1?XUqSsXxf^shz_5bWV({onnL89!d z{O_LJ!A>AD%bL*R3?=Ei^g$0omp`3jHPY97<(e*3o3c1BNHq(s!Wn&i))?l$@3~V@ zX(zpxT>t5L#5rVY-oN$S;}%l==NQT<2_>~T*50wr13kuBOKP;KC}jy%X|8j=S+H&J z6)>c-DhtBV8CH&Gm)AyD%Bx4NfEDTfwUs#tgy0Mfn_J`)+pz$s=3jr=yN@t9+hm*j zHAC*?)y0hFpk@0^o{IaXwqkpvBB>Rh`Z@~V+9V+MDwwywrWTuP9ZR=-xllbl0ZmSy z707#nO|)rU0w^Rkh&UArAV6)uc}iz|TSy88*ra^bMQk4h?L?Zp;!=5K*4M-}N|akFfr^QF8Y!m$qP8`@r`3>f zw@tx6v~cAS_bM0@HxcjW^$Qq0@;xF^K5l?VkXXlTWsEc0poQUy0d%>hTW>2vg1SWG zGq$=l!?!KYxbH0E=nq42o`*a4U~c1-w_|3WO6`74S=+P%Z#kjPiU<|I$gLPE5i}#v z&}`_-ETTb?ek^%R!s7vJYfuMh;^zpF`9|N1W|Oc1%3d1k7?K7108FCZL_6*$XIBO( z*DwmDw@fj1u9q$^kI3xY$H8q2nMkF9HI|ni=mn8t!}3(RMPfn z=t|zNYEL4ugt||a)WEY;8OaY9DJi6cV%5dn>D$+09|#mNpM_0q<$R{A1;BQ% z0`!a>=S#P?h5DI$5T8#do={Xqp#VsPGunkPts30J5icT-cllC9T3f3?5&(alj6cEP zO~-}Jycrx6hdzh;b2=otD|>B@HgV3CSwF1*Nab0Klo82lgXf)pX8y897h9&v(We8; z0;0BM5YCvh-YA%v7yNTZ75S-v3=P!!OT;OSPlM;sq7+3bX~EKIu%EGn4q77^sy>gM zz_-20MB&A^M3<0cl}?@9_YqBlImb#lcP2KI@=d_*fZd)_>!`Ww0Dmub1GRJ5!PX}t2{U0`Gp=ObL2PZJ>xRd7#HDl z2*ZkDYw@v#AaAzJD_5sR6%+tkzd+6#fH(aBHu4?5&%R4^$W-l|llu$z_WdU3dFQg3 zL$@dto4Abk9t%5uY}>Sv!r>5>OwhNmiB*bnygd8MRIf|@Vg}!5rd573BA26Dbkpq`HC9lhXFcsHQvG z;pdC`dO0Q}OxUloS2OV>x$iCP{@UeQ=Q{?rMWF^ydbu(df#$PdwnR$Rq73}Nmg;Qs_~~@JU9mVPq+?i~@@uTv+tReLdyucJmbS*!!U`hv+qS<=67DF6H9pgAnqULM5H+fpZbHrMs| zgVo?N%c`HlL&l28L$L*z46-1!;wa>hWvu6)NYPBNCOWa@xqB1C&g4dk zio>+tSjglyb_c|g8JGyf(4q2`+tpJA2MMVZW^p79pAcvATl9WKP-8K0M~e>QvYo2t zhr8ulMB~QljB5<^6myOcog^jF6B>M$=2fE5aV%K}J66B2N!na~nzuCCG!Kna6oUy_ zE<)V8N;Xbdlx+YSUJ}}m8vyYm!UJ?1pAw=9O=v6^LsEv-c<)faomd32Lkv3KlmxYd zbd^j%3G6olu5l;k9yIKYb^)OHYL7{}N2%zrK728r2-pFD(lQJF8hyDgzvczO5@Chn zY4}`H=s@vD2`%oIIIuA*dh6MaXa!`w?KNfeNeRpPIK^`ZQaZ+I1`EiZ+rYdD62u4h zkONEjtTnAa{>gW{B}@=5vP~V4B)NSii##H;`U#RF3hT`Niwq83rU6(SYMHXxo|a@ zsO3~l9LE&3&e+^Aw^PF`b92uD+I=;O#3gJ-QMH`y^;YbR+5^PEeZ8@P3%UB>^-|dJ zYF)BtTbbAojKSCM*T*^|-E{DZG!I^wyK-rOlkXAy&OE-&PZj71WLlQ#Yd9ed6t`M= zA?^9vjIJ!Vwsr%3<2V`kI8ayO~qalt7j0 z>N@9a=r4sRt*~Bz4WDxks8%Jc4D(`SR0Zuu!^%n0=c{A_U#S#QBIjY>g`-x!={_}n zzl0|@Hpqjm7|OrszEsjt01ytG(Mc%|YgV+qIfPgWI+mTB8g%8^Z6s_dG-IiOTq&^i z>P?m1Tksz2S|j=X8#QDhilX<8&WF;lu|?}~mS!%ok>JbTT1xs_1YbQ@@?tlry4%Wt zzu_jXRAQ`Ut(wF~F^YJup2X#M3sDZNuW{<=@L*J|vB*d)W@GRpMNTV3Y3NKWljslh zV=$0@QSJZ(K`g*8wj3D!_>;g3@mABiF%tMDp>!ssvNy_~I4r{1Q&zOUlFPk0zk_vk z+v~HpaW-lj!YKhrUVd{T8(@pFZk;1E1?ZUoCyzuuSgB%8ijrW~t}F#mPPZzs281-h zEvwrw7hA)69USb&FPl+i;{jY!+%3u94K%jT9B8W85PlF{6a{(Y47hVO@1Pi@Rmzvd zuYB|FCn}3pu5|LL@y}PV)b0)7_m`Lm!GxTAVU%wD`M6l(Uz+b66vgA_x?DGVnUh79%J0{n5e9qKJyFHWERi5D4bgLyLk^bXLuMj+0dIC`m0$0Cz=EkL%7+^=nS z+Gqv%c|m|37Yg=i9NDghjALs`J-E#Sw8r`C>R-B_yB<6Y?Mu^o?aTAX6Qmxm>u$Dk z1`CwlJk(y<{i`~Ik)ge9%6HE|XiB6DsWrm20C4@0aA)8esKea*9`BCn(}9YjDSmZY z)@F|Yv>L?!a4{1pcKlPYx@qwv9H88At7_Xm+GR{2EFLF-4HkS*YBKmcjQ zV9qE)dY|l|A$haG4-jRF+u}JB2;whrunR%2&%4jP??dpse@uN3PyT%ml&G#Bpwf;K z2OwT}40kQ&{`anc(Q|-3#zI&bG6AneFG5Q~2dL1&lQI|z0%ysIek^|+f3ar7O&kI4 z4{eJ7Bq0BorSxBrn|i^MZ|kor3jUSR_T`#zQrPS-3IQSHfvV`r^$`P#{-#hCRgt>u zd*|)P>&Zw-QaZ2I;4-)j=m-#ME8yZR0!!J8@W22*o{4bagccbEr2TM&hrw<73TRgA zw)1@>m=i!uqOfY*RlfG zZzN~J5FU(^wOGCZaV&y&4)y)Lz?nzij~(a>7?yhXs=iAu40j{kDFJ6G1z|u0^W6i& zgZP_#VA_vC*M$ZD=w7f?$-b|#e+%rI=E8r7U6aJfpRLQt1H=g!D^4gti3F|DVMbjT z4_GrLLqGu33s8>z9H@py4E36;f(18fxl;u|&E1P&fWW|uMgT-D_u~Ue!L_{G=ys-M zLb4x1LJ;wWuj7^I-4!e_@Nb;j&;+6pH=qTtAe3yNktd*tRGjL??ndyqEtTCL<+*ZB zSmcr6veohoLM#7jJ>&0bWzLsik3v81mXDq6Sy1J=_G&mN{?=QLA+m;YVQ{ydMtC={ z?|N7#Ki;o}t@8_)AqaiZ(_i&l$7a{P&wHCY|J9tp2?DQa8ATBWBtTD2R&1$}3Fm=~ z5<}!2>TVJCmq9QS%}pwSFG*%Uq9az!y#@}-dkpR1zTA%E4PZdg-u{4{D#6-nr1Ns| zQy*}@zF&aI?)WhG7~vfAuWBwf2M;E^M(Da25Xe1{L*)w7I98#wHd|)Chd(GhLUrRq zMFIVFWH|XdyM{}4fH!{xNLF3s?OY?jX@nW14xj8st{#jbI2$QklY?xa~#sv`44?N&4q=iU5>}m?kVmVKLEDf^7RM|7=AVZTA zoOSrm&j)8;RqZ)hnkUES3!WO_gNwxSb$VR`K|^~?W|xjh-`lE4L*sYSb2>DI5In#U zQW8VkJon<1Kmf2+?BRd9KaV8Q05KxS@Q91L&q1CGxVdAICye?80l=gTyp0y;Mk8U@ zz@>I-v1kEivk#EjJaQ-^$`}sp`OxkO0*Q;sA$vIl*$lefDOrES&=;7$Q2RCm`07B@ zYVwLw`@p)c)Z30A))kjFcq%uh=u;iumu^BL3dj4hoI&StW07yWs7whItYK09XuG^9 zm$)ZSQ9-W+Cmusm|Fa5R!y^Y%;u~)65!wanAR`rNQo@-DMaxUlR}lpDgR8)^qPp1S zIl>9Fg^HvQCYRL&6aen0MPMa7bd0^&$lN%bxVr$0=QlW2`A~gjH(09Q!QD31vPa(d zh&UKtA`(CtEAWcE!A|jJLhHouQi+wKU*3(QuMI$9hQXQMTUmX$fNfx*fcktljK&xB z@qSxs5X`=)piB((7RZzqJ>k~5T45Bc9v?1+?*VHSy$G^>W5ey+xuLZt3P+>>faf)xplMww|%BVpK5?oCIr~ku^<=T($glE;1in&oKa3T8m3J7pgrl zqGO4R2x6rwPZ+o12Q*SN*522j5T|(u8^4-{!uJKEeAHWY^Z5b3Dl~-CtZznBiuOvd zj-DY06D`}RZMPR;Mf3{$=;2;c&_q$Q@=$G@1voEwGNIPHVt~k%Fv=OfD zh_r70p3H7`%UAGbR2k2Ax`M(3XQ|VI4R9se?BfS40g|T{c}oN^A-qv9n9p3h*dJ9d z-?vGA5K!PeK*`SRv6*HNAvg|VHXZHx@kfc)eby>)`|}czaIG>tE}nTeG~;guHz_=w9e_D?bT&eEX4!Z9aA2n{X}9M0L=t-#j|ZvVKxn&)r%1Q=-U~^59H5{ ztdcY72aB9>ELBtc>@njrI;`#(x9MH+T`X1SAT!@ZG~%y^+=`z~1RVRqVhuVWG;KS@ zu|hR$&&R+Uix^VZJ?S?o!v7}9UeB2b=6bC~r_hf5iIEd)|5u{9#hJpqXRdf}-!53` zx#GS3pRaV_tBq!h-CJ~alj_E4Re0l!Mr_Vv%kPwe_Pib63(CC}FDB*hQuJ2eEK>@yli(gh$3ipeHTpcqEKSU#hPYN>Kqh^8_+;2;l@jU#pTz1iw^bhO$@K1S` zmOYkUbPg*Lj(^{@g`(i?8Vvt|z>1N|qak4gA{$9|p{di3Q3&~wI2W#VQb%6Wc7rgH z3;s)u=W|Kt_~T?uA?w4Sh&Wr3w4gv|LlI31qL2=e#1`#U>qGU<=D#j)G7-YCbHHY$ zUd@+L$-h1hYb~ZN&+kg%2n0sy=#6Szb;~Ri2sk34;wtgYFNO9ae{q(>I<7j7JF_m*K*Het9ZAP6iG77fy!5~8q37f5$WN~bh}DBTj$jii7yN(%}|qckW= zOGqdn-F4<&e(rs)bI$&A{_TDF{qXYo#&^xUGxN?ob>DZ>9@a{N7IA_efH~eVZ~kyH z_U0Mnst-QxI4`<;{tyCCE;!uzkgtL`uh_Af-g@E`Uf`1*wh7hYZLQ|V*3+mdP}EgV zfqJwSzw3$hOXlP!H>-*^%oPdq_XJ`Zz+K+e4$Po0ngN>h7Q_tCY36#dB>2`3svc!# z`S#E}ksg6+_f)=qHTIWS)yA_Vf2&FKQKoe}<60s?vUDz!Ml1Pus5;7K>P4vHR%nbx z$i0s;GmF$8=3yki6d%;QoZuo=adaXx@4&wNiM+2EW;M5ZzPQ#Lt(Q} z*y(@(r4mn`$*uNmy;Jr-b!S_~sj zwGJ>GBhFpPbW?rMHb?Wcs*%;%uQr;}?6tsUuWk!b`l~6J>q29B!NmQQ2n8an^;Nah zpt&!v-~B4BxzC{36FuPjv8CfSFbJp~w*j8IuZX`#KgT z#y~yths7>YW*v(o?l~K2bc;ve>F4KHs=69%1y%K`n0X!IbOykSrn2Mdp)c-64dMLC z$!aitb*;O+*vvnBahDmFaD4l?ZH3w*Vmlfs0ZJr0K=|oKsAJhsn6dJWRc-g3lKD#S z=39Sj0cwaSxB;@fty*rz?sGi*+!4FAV#dw*EBHOByz1pJM)s&oL9?NYu3zn6DS%#8b*71^OD)S2DGKb*D<09QjPtOr4{O zzrHlQiskj}m2y!Z0#;<6V{=-?QsWhT1pPBQbvbJLmMyUOD`6|?G|Np!PFFkiJAXPR z)8X^s(&J(JpIX)Adg}Q~(d^FTI^CwWXQELN_TzTkga!n6_mq=9(u9qq92{E@UsB z(kFUqwa1O9&yvDERg1UZ zmXhOlEXLlYwRw|%+{xb^VRwHhi7tjpl@Pb*0sx{TYN7^qEb7x;h%?ElX^HT!;R|G% zDrC?C(+#c1+MBo9C`fEBqWAKDa+bVS6Sna1pL8eH$PvotQ_G z&l@#J;1VH6&Vs5GH6a>Sx(_Mj%4=CPzVthlKj1U|nHVyc^{AI4kd#p3uI-f#%grl4 z|_rq)b)69GhVC_1rN9^j@QrYFVS1U5p*2!sV;(+Vr zAQTzYeVE>8^O+MLUh}A&wVmcMHap|rR5RsivtjlpN#@EbuJuATLO zi=wdRt>?4*Al91r%p$9O&@|yd6C${{h?X2?hrJM9D!~u2oyTL6s=*zRY`|+r;AZQ9 z*f02$U=(VI!VMi5PME!oP`6UO$s)KmpqlfM636whhf#OdayYba_R&WOo!pU1?c9VH z?%ku_v;I)z-$B3tej8^*^2hF5>%4&bk=BdMq9t(>`I8%Fz4gJ#B2q;-;`z?i2G0g4 z%O+Yfbe#2QOj({EPWr}hz;>c6bK;S{P&Kr(cT4cLaQIhxhekz?RQ6WNrE64S!MuC+ zZ<+-~v>b4htCmVeK$MmN;gi0Dr4)7BBnna1|872Qo_<@1TEE?5^e6qqQwM2ufscq7 z4#I5dakRb@1QkO03?Ec<#axL=9OP!^y80=igYX38y=a6OAmIGXwJ~Lq+A=nQB7{!= z-r@s+#gFB@ajrxeOLFC+KI8WB?Lni~O6ED~%~qdzGg$QRNIFEb!t`F5?W4OQkFE-2 z)uzW4Lat6VV`lKt3W>d1Hew|NN$+Ip1$Z@L%9{#qxhAFkRI6#2fn)v1+OeX4mA)wE zO;XK08G&)a%Y|M3lzz}u!Q{tEEs=DNDa$h(s!*kR>UHJ2{UTv!SuVE^5-rt+98uBUM;wJ}o27+?Exq`VL zn%M1HIJm7ZnP_jYy*6qFbzca+ieI0u+L#x*T2Jsnq5Pf+FY|odBHLuTn&J>T^}Ezu zokRjLwb*RIV%1b(pcW_7z7uW1G{^TK!W&VI&)MTdLt3vd<(3^{}bYt<@;V8#av8|uN@q5#1fUJH<@c9=Nx$O}ld zz3cnz(q(y^4td$eQ~skh^U~!6E>Rxkazb!^lSP{EaW{IWWGDYJB_=slU`-i&Nq@Ii z_GosH&ha9(mV|G56X9Yxd|S-?-3+c&`PI4_Du%}nDK>bcL-4tWQS&}RYhmT};6{7t z+|;2_Ma{Y8e|hNdDic9)PjDUzF1l(t!_11GDs(NZ>p z@@}RQ^%n@6A#%wvUrRidVJ+iIU5sNgET*)e4e#w#FkR#@sppt?=ezdtBDnTv0`E#~ zLhJVuHl-7U-NZ0sJEcoQ8mY4`FZKPMx#wb{-byqEW5hO8{2l#_99?t7S~Hw?bqHOw z33-{NJ70#;-q0ma)9*rO`Fcanv$j*#o?0=jDACqMThA)+-hmTFCr!;ej9v|A#QG-%C128& zZ2d>7gL%&FOj$1XXy7b+Q$K2j?C-q`4)iFXT-l?}i#w~qm3)3LtC`%a_RO`CYLg@P zlJNn&D*u&-heZ@q3N90qnTe`;p5K=JR{}!o0ly(T>hlafBoUWZI8!IBz{<6~vH3UXI30s4y|0 zGnZyNw|hk+UbS7Sl|Je-EtT}0OMbJ26RP94CqApm>=YHTM~Ab7f3tp#{x;T!uS-&x z11E_=v8s5c&q~$10qF;0I@kEjc{KQR>=z%vc{(}oy*E@kZtrsCdUTJwh*AST=6>Xw zthPFjstk<$Q|WfozMX^rd#@cK9l>I`*${!wUfc{vt%WC<0Uhgi%CKs$*pzJ7+fo~w zmrc#!j+E2(OKDw=Nc-9CW7aWym6}E{t6ub;#8NC;`?h1$DVx zfpCc|){|?OBWyL(yUU4Ax4Q>tS|Z-wr`g$}8E_h><{x$dS5erPS7V!INV{6D2R}_* zKE(vE=HZ);Pe^7!N?;I)WQ@N_k!>|tcOIx65`>-2Wv_KS@YDvO|tnb*9rOKuLe zBDJTdwuzz^pQfIOvgL}4*ep{K6?3AutiiE-o@^V1v73&T+Lf^7<(jA?s*@@syQ5#8 zm#WP^!u`y^9Y}iB+T!?88|A~gk)&ZVsiKoC9Ip8f-5~;9++18lGDLX+c&qx~w2 zVMX}yHBrH>(su@YU-AN2{0EuU$SIP?7~W;^p0c`F<7hps3(KFf0ua|yS<_lqDGC}c zh5p&f?`%VMx?>cUYh}bDdS5@&23rx>GX+-TSnA?xQrLSEE(&{!jUn>VH(<6C{W;nb#aEs4WaX+woh1SH6(fT<_50p|@Dq`(B-F#ZX9pDA-g;EHdqK#tp60w< z^5)K4P`EBhIro=|EX(3g&x6VQm5(>oF?`w7_g&wxuX>YLqj<}@RiS@j!N#X2Y#ZBF z9aa~Q8GZubHHVQwEl(J@P#K(c z=wICSzz9wb{@-*UcNt+Ps-rL{T@}}whNJxA_Cw{((?^Fm+B3qdw76~wNMC4Hx3zlo@v~9XXa2EU{Sg6jwXp&!QyE z3@R$2I-n;me&@#b(V-#(^J+4x(Nx_#WglXc5><^vf^VDTsU9d39%m*{5Ahl9183s1EF=JssbH z(KKO#2>NA67nvdV1NRY`*Ccyw{a`RB0sV|D>YjhLLGKeuDrg(bWdU3Me1jBfR~i~+ zQCIoXZg(JRe-nzD-UL8ve^GfbFBhXV?zq~Cf9B=I`Je$bFCcU2LI+Jut8K*#%&RGX zCdTxA3MuqesAmRnVRcPBUK}VD#hx)Wr6nq+LcN#dj2CbM0Rx{Tng+xY7Yag<9nsys zl~17sps$g~)z1FY(T>sZ)junoO9=I2D^?MUS&Gd4wP>uN9%^h&17&RGb2Xu5)rQq4 zC$|Q`i%%MKN$}+5s&7Cu&detUHR8pxI7DE2$)TPce&1rQfNE4Hh8D`soHc_Z@HG+Y zN%uO@v~<*lkf#p;1D{j}#C@56hU1oT`s`0r?#)2Z_CojntL?u;D=R=E1C%_peV}1z z4+buSw4MlL5@x15|M&l&y?{2|OTn1vM5F?=Bd^nOmRO`!pnCa|3N@Y>45ldMBL2*r z>(puCePjR0gv|Bde7+(DngzkLUef`4DdzY_(RQ~&d%{`Xb<`znCp^?$-waTwGZ z0`d(rfYnxOFR$DkX*ACu-9sEjs9n~)`A1_=|K*FV02)b$lX zZ^2`SRDIMoXUX)@Zp~&q3Mp6k{B_uL34_JDjMpy zOlzQO82Z2yLeQ8q;OOcH8qdnTjtlZ~Q)_Q3p$sECNn}wGnRR_U7A`^p7Q}UYM@I5f zz<@ET@s}KE^b>sBbqpGJYJM#xMg{@aWKdcItg2!x@Gk#e^xum9+q(b0(SL{0|AD7& z%TI~4zqJ7Wu9|;$>ObS*pOy5_9QNLAmIiV8U@PT6*`#0@`e*`~Hq(i&NmSIh6%HT9rQv3>LuG#`xq-ij zN&}&sEe6J1kmc(Bg359U=%IcGq`RQ-AiyC(si&wCRC3F@5~5^8<<+1*At{(uQ%Wsw zycF^B0aHQ{+6RA$M#Y-(2+^~K+in%2GDR6}i~!7x%3VRDfuv_%{@;cQfIp}V7%Jv1 zjp;6h-Iq3LQMqpBcoo8mL4QFxn*c+!8iJp~U)N(g(J_ff2GB>)U;cYRLg)o8Jo;!8 zSyf;rC!?wDfD@1O0OZbHKI4*x3Agj%KO7d|`&+9(epP)G+PB~$rDQz;a}?I_iFp0gFTc8;8?$)W(m%96g ziR=&v2qkmFp2yR))qZpY06pXY{ZLV5eq;9(yrA1rpUDLZ!@>^hR{o5KS^=;hkhzAc ztMFWka8~y|TEtIK^m!}~5LiD8D|fI){J)W6$an2_VH|HX=iQ9dU_G z=i>qZE5ZwQm>aCIq2$Jh*Cdr*LE(%uUeU8eWC)ADj< z0gkIFl$^=o$HW7M_9O4ILwr!}t;d_)HVe@ZI`p}JRw1X{0QyGrpj_}dmpoK*-44N3 z7-0qzxG4~iY#J!i?*N3lbW@Lkcupupty_=cEBpbZ7d9dI7fG(m%H_k)P)@NDV6$Yl zKYp+vw0up1*V&Vl41I$1fo9BLL%LH;?B%P>RQ7-`h(^cg@!0D6Vli=bH5jD~Tk@Hf z-t~=+i4Q*#l+3kUDO_D#zbb@>K*eQ|Xzj{rT|FaAz6-=TI1u8*JrkEhN^A~qvC|1u zDnqQR&sBdwNcgTENYy9nAj@NtLnJxm972!r^HMKyy>4Lqdegbtlc2`~q&=gS7Hc6f zqpH^&fH~jy3og23mOKvaWOuKmA`V@qQzu~)nVxB2LoZ4T=t9Z6X5R>WLKcRmNKZsJ z;sDXP={e+`x2v3u*ewwH?j!I__#EUrqxNN$LETPp3?KbDsMCzX(_AG~z3s?E16Y4G zOnvt9>1g)FcVunbFfyF0y2$wZugxb6xFxCxMtI1CM_U(_`zBU4Zq!e;g8&<&cPA<1 zvv;5nYGNMn@LG=h9?o>c%h6Km%E2Ec)c_Wbn1^~Cu zFWhbqVM!Q+CVYQ|>b1U<8`r>Y*y0v^cxYTLd;n?8u=OR5QDRbhYCdte%%?kN|Jt0K zRjDs<%GkiZR*+d)cq6m6K?E)f37Gkfj|3YwJLw^R=N_HX5|X3eBL`VnVyNRkPPhc#U0zSP{< z3gz`-fKj$TgmweFsa_WY0}L)0!e(_`BPC_4^ZroNyE+ezUmEbo8uk*iW{q=j!EC)J z%i?u%M`1+f^WavtC-LQAi5K|#^8azI^69W?SI)5T>3H)^sUYw%0@9z1g35kci+8R+ zB0N8Uv)nKeL&_8fOMxm1*O8$qT&3Kh--`7NfIDN%m@>;dmNhdU2@YxEn+YN^5T|1P zK*6l@=~Go?JK?g)!jJTG)lCK-Fdu-2i^(sm8Q!l7=CqioJHd!Uo&otKCo#R+^>TvJ zQ&rdeS%z2*7uLi{`##|Aj@e*%<%@@t_#=*q1Y+)`h;)ZEmR5?%d-51*;WUVo@LC9B z6^SP;KdBW!dW;Pf4SuCfzCi=r7E&TP~`1zXJ(ArXsbfo{$erNRcXHF0AzldXrg;$6?~6N%7+~ z{vlp*qsGbWtcO+jQZj9NxF;=tDj@*DPJ{%Xj>d3>?4uBNfoX^3rKdv#Khppn!Nq%`Q`U3 zU#u27BjTBQvJ(<==P>E4XN4<@DKEPZcakDhO57~`e$M21mO*5mfsCTO^xk7Gp3P1Mn$`$AUrInwgCu2WnY;>2rxEu~!`<%ioCurN&pSxH|#^x3$v1A&PzNbzO-V z=y*xR_R1eONgY>v2A4+rwanW6PTCOen~<9Tu(vos7Q(VG4^sLIgCrQ%>!+L=%MJl) zedv81eHO_0G6PiL4#%`_g`FXL7rLc9mm#Ycz&lm&j-PI|VRt}YNp~#WWsKM$FfX@V%HYj24JFmVfn*|Ii0pANIl1`(6TBTAn;Kr2<9Ff$NoxWQ^qY{lof%+&x(@L* zKyE?@u$)h0sxNm^KZJZU@fYU?u+GM{rQm%q^TkCoj&*voIu8sdTnLU2 zL4fm!F9GRt=>JPKqbXgO3#P}>T4i(K59AtYOFRrpj@k(P;JT!mBESXg0Jbj`EnrLA z8gTX#=m!WW4Q4Um`)ofs15^`-&mh0C>1?OZY@_ZQK7WFih%0l%^sV)>+me1nYW|SspShyb#WmCot5DmS+Zv`lANu>3SKPYyri_bH_qj zNStCEs8qH?PGZLkIOdN_h`U(=Qq=5^y&nk)vn_i9F*TX0YA_#i@%)o8SvG24k1c?0 zx%yr9E2yvo9~P&gDX_j1Av$#qPJ{E8B?k?zi|v3B9v)dwhCJ_npmaSD-`w0eZWa~)e%N@1 zum9F*24ZZgnVz0j3?-mJxU`0T-23_27q2dcMs%{ta~Bju_kCj>l78>8F>S$M;eURz z&l5!Qm3jV_*Pbmo){eRR@9Bw^H`^KyPRblv+$Jc_c za&_kYTdI{?lZU@&)|`Kg1r6sSNs?^XVx_*lHsWG|eQ~z7E`0KG-*LRM?OqzQs^v$5 z8@E61?Cd=7vEBGwsNxnY2_S2|;TSB6O4{rU!X8F28%+}?xfpJNC(@FfV%uXva?+Cf zRRwH+Mu&ze#hiO|5k~9vQ6^yFoK%i(Y9Z8(M(pYE_sp`fGTk@IjYE2i`U>y8I(UQM zd+sjlsH>ZT08hY8la}e_{`5u9tCGn%Dj9;F6oWxn*UHs$BrcYXUrAdPb1{gpvGqhg zf6hgM^-J!h`1>cD2XWcCKd)Z`S!c(M$vRp=ZBmWg{g1(f{YK`?Ju$y%Giv)=Zsh>N2B%_dm3HJY z_B*-mdd1kQDvdab`1n#$Kd#3i)e|`&uW%1JJ<4 z1%4!!mnKOHE8NAf?+1$ouirM|O1Wv+q?oW=9>=_-$Bquf;K;6Hga_HK3zUUGJ)q-AXCog2 zs<4paodU4mcHBq}YHiIro?Uk%=$LB@{_NUV&Vi3EjUIdT??T4Y2e5~K7}z1>*01i2 zjEof1mGZ=^wIxK7NZWtVzX=Uno>*N^E)1WhsldWPE2x-AFxgUnMrDb|$`&ixsPw)6 zNtqbBwB(Zh_P{FinDdZ6Kk99X;@H(6y}}IOY-N`)tQzMOI0n+nsX7iNs>o83{Dxid zGCDSI_ma`T(-^}IEVnS>Sn(5fWH8hYll1%q7zcVL>m3bYKt)!f3OFvaN-CUzZcDw% zf<8wsZ*B>A?pSKQN}a5;pBl^(bzC2>@;PHAI9wz=r z38$HNp6s9JJHm|Ixs98~n{i9E-rPz#p}pw}_F(6PtIY{9lBD30wnhqdhJ_Pi-RdVT zWKs*X8(gzApj;P8KY#?uw&+7II_p_gUK|;o0V<^-wb%E<)#o0k3A-)dl@5$LLcemg zK|Y)m3wB*|JZ^^)Lqpxq?RFT$y=UWT{1)o~hP>UkbBkSBVK<-!@7o4-lk?TZn(;P=EaLj{VmLjW=7lfMn@&Gi+Nr@T7lWpbi|64Q+3{mn7qGj=(i^ z^X}d6Yu(=}48IX4Q3*Lku@^5Sf2?7-FXI6m*g|7t2Q zFi8XpQqt4)mw%t19-dBIRTR|m3wi{@2z>eWlIY6*+P61*;V>mm9-ad@BMULM3WK!w z!TNUW4$-Rrcx@?RfZ5oQ>yr~=b>Sc2GSzS}(cyV_8TP1hQ2jeNs z?t+%TV+&`F11DCT=^kn+V8rS~J0Q&S!#HSXHiX1j$3TrnBkt=|-$JQ8nufYez%)K; z(tsUc2R`kBZVCQA7aV$6`}|<>pVJy0hdCXr?x$8to>!nj)9!s5H~9EbPel-c^;e8J z%|n6%KGeuM`tKu8vDkizT?uvp5FR<3x#8XBaXQ~U4|8O9!HOG3jT9iBkAj) zpSJ&y=J*IakkFSg^7j#(2+%q67G4Gs_|iG5RFsK;&4Ri`Nt8Cx5(cg0$i$m(rwV;w=e>9=q!8a{CzZq0Yk=jiG#La?3+wXi+7^| zO~d79>ElOr-~iXAQWOdLZ+y9|#Krg;TOjMA4~&=%-~tH$(gait~CLJ2|-`OWxBlHKy!T^n8RYfdb^`2ExfcY0a=OxF!nY8Ur-%Lee_G5 zZQWa&ZGKNvkppzSM?hYLz<#3Is(o*HD90IOCkmS{PSy%9M4tS10N+e4aBHe$heYSG z+$@s8 zcKPear$ooS)saF!o`yLL?~CJ=4In*qb7L6o5OS^u>9qc? zkKpMQH~Y_p(f&`s-Nu7=6`y)_SId9LAQRBnyxKhle02A+-hP$577O-@*g+KD-z`mq ztIZ5kR8-^^68a|SFuwI>Uh>xT8$er2aP7t|%kYW^jibP(vhPc|Sp#$;4Ra)Xr{(E{ zoHA#CTX_I3+jrYHhXSHDfp0RVYuJ+WN-1>`kOM6)NOhlr`@o?mhK2`+naA&ZU)O)_ z5~x*q`2$U>tc{79o>T3o!%$=z_%Bt@NsXqOz26!E^+7AKE5M^p8ORVC+S%RR0C(f; zW`DXsh41Nsl?Q#lr!GlCa;F?i!aW8UW8((*jX!%GE{*{x;ut-EGdKx+Ye~~UVI(}vY9XDn zz<^SGqcmJ@^!}^ex7RdJc3CLeUkK&VPk#poYQq^N&EGGQnJ}CUW*O3F%Jbdp@b`wS zkE!0;Nv>otH!tsyL7m-xEIf`!w8vVpCaP%j&tdj zSXXae)IR*I7=5Itk-J3~0i*1PZN}@G4rU4;fEa@}OcWl5NSk~0kQg$KDD3yAzZrW6?AY9z%AF|+-f-#>isaI)0yLssa%$*!{< z$?IRourPK$5`FyZM|b1wLK!I;NNMOAKfFfHbK6LlB38;Ps8Hw(M4JxZ?!)dTG{|d{ ze7u%B9gr&(A0iKY9;3K&y{h(IDsyqH3_-^ob+(Aar`Z_3atsP)15_Gu1tyqaj&lF! z9J%0XlSmY7WkPJOI&X|OR$ym_T1RnF_7TCLJp1XVk*??DhFKzy%Wa0ToqnigB1W+8 z?Jf^E{`ykl0n(V>^07Nt-QOexTAXSe#Wi8~rSd*`BW)#y)z#JY^@G1Z7dv|;I2>lW zK7Oq*G$LWgmdpX-U~8jx_pXs~S1Kg3dR_!KQ7C%p6lML!|CSORr+_0cQaZ5RO~ie5uG>@W%AI0l0Z~4TLDN{$g)H#V)jj8kfVqLDoohiJ zfY)~loGkOn(dMTUExzyB(E1YTHFDGZSZ;6?<@y}OJ;Jjdc(HU>H(VVqQBXyCvJ2Mj z#UQ)-K0`%5u&E@PLc+x`cepXl+CDRywYJlB@y-5I(Z)mFV8y9A=}K2j?nd z(=qpd9|fER<0mr=!?`ViMX9{F_~R~R5&?XQ1eOHsC{Q?%n5rJV?-bIwx$}tHan@|` zX0HVkEU)Rb{O{uo7(ZEIjJ1!s@8E*_Pa&Wm{`ZOvQ3H4G1ub9j3ng%oyB$7DmxOM7 zaEYi#gMT`PllXcx2Aqc*^+{NNTeh4*ix@dP96a0l8U61u$qa5F#;O7CTav(#!fbP; z`a1z7GT@pvIPG#s1bxIkn2oyn_YryULkxj7<4M46l8hukSxm7iOG~t1rR2Y~xZ3KkAGT&AS}^yT$)=l8KJ!D&U8=t2tG( Q(7=BRGOE(ArA&kVFOC`r#{d8T diff --git a/dependency-injection/docs/inject-qualifier-demo-classdiagram.xml b/dependency-injection/docs/inject-qualifier-demo-classdiagram.xml index ec122afe71..704801bdf2 100644 --- a/dependency-injection/docs/inject-qualifier-demo-classdiagram.xml +++ b/dependency-injection/docs/inject-qualifier-demo-classdiagram.xml @@ -1 +1 @@ -7Vptb+I4EP41le4+bEUIUPZjeenenrqn3tLT3X6qTGIS7zox5zil7K/fcTLTvHbhFOAkBEKAx87EM88zL7G4cqfRywfN1uEn5XN51e/5L1fu7KrfH/dd+LSCbS4Y9VAQaOHnIqcQLMR3jsIeSlPh86Sy0CgljVhXhZ6KY+6ZioxprTbVZSslq3dds4DuWAgWHpNN6d/CNyGZNSrkv3ERhHRnZ/Q+n1ky71ugVRrj/a767ip75dMRI11oaBIyX21KIncObtVKgWb7K3qZcmldS27Lr7t7Y/Z135rHuLcdF9A+zJZs5z64AodKm1AFKmZyXkgnmX3caujBKDSRhJ8O/ISb6u0/KM8GX+zgepgN/VuLjNW65vFjKOJceidgR/klX7kxW2QDS40CUbGDe6XWeJ+mlWh4olLtoR0wznjDdMBx1U0ushaWLkPPfOAq4rBlWKC5ZEY8V8nAkFPB67rCr/ADXdvuZtzLM5MpKr0TXPp/pkyKleD6Y/wVaDzjkWrAkWxEJFls/V7y9ErFhkCyY9ATgD9nHniEaxA8c20EEPoWJ4x13sQLhfTv2Val1iOJAbbSaBIqLb6DWkb3gGltEA1gfnnFwl6JoGmewJoHAsNemYvuWWIFdo2npGTrRCxfNxwBLCKeKGNUhIvIUkuIqZIKzAAHUPz8BHVrK8fU8waiNIt0x7REw00R4+4NysJKfKOwCwcwA5Y48M5mSL5iqQToISZ8Hnuws1sQ3+qlMJrpbWmiP5IWJ188w8/A/gQFIxZZYONlkn2xiPs1XdUVP1EMBpR0N4gILs5oUpAwMVp94wRVrDKSrkrooYjIKfnKaminZrJmnoiD+2zNbFBIPiMOVrQJheELkNs9baD02AwB+lYySyyh8MGiLEMZZljONkuttRKxybAbTuANaE5tVhqCXVMYA2loDG+7XJupisE+BtfBZRyovOGWzi0spODezUKkHZWRXbQbDLqzDlWUWNcAVop6dsmBpcqX5Zv/jGoEWGTVAmF8zLL3u0x9BWq3CbUV1SGUbMnlg0qEEcrq1/naGrQnQI+Q2oXeuDt4DhLlDKvzsFmdHYTi9OUZN1MJEjCjB6VZltLp06e/Fo9Pk/nTxz9+n08f57OnRep5PElWqZTbX37NU/ezArWX5Lln+HUt4WPs6XZFo4vltwtNMBpLNGmtppcG7ngN3IgenKiDQ1hL8DujFvjfH6CBQ6bVGrisLuWRvzAaQu4S+/vGPsVTl8apFW1a1wVtLN+Xxulg6A3Rg7vQO0DjhKcxjYJuVB6jVKsvEXtkzAnfU0Ssg23cobvl6xuoMqWO2bnuuWMSPHAtYKe2ZGNf/dpIL6WyNfaYXbRDh6OlNhq5f/oumjZT7o9iZUKuL23Siduk4bjaJrmDZhz2e20nXSTsRITmceelU+r2lLQ/A95ulVoBP0jibR5tXnqljvi1NEut+B3ilKntjPDSLf0fUdvSLh0vapvPs5/5v6mAorYHxFnpe9OR1le2ubHlsVa598Eaw9gCe4BiOKgXw2Zotbakh6iEzafIM/XxsObj8Qmd3Hzao1b5TLzr0vEVpYnmoSc58tDOJR3n69xhzbkt6eFozm0+MZ0bc2u516FgPYV3m48h50ZdSqlE3eHRvAvD4l9J2Vzpn1/u/Ac= \ No newline at end of file +7VptbyI3EP41SO2Hi1iWl+RjAuSuUpqml6jX+xQZ1uz6zrumXhPC/fqb8Y7ZV0IaXqpGICTWw3hsz/N4Zmxo+cP4+aNm8+h3FXDZ6rSD55Y/anU6XrvvwwdKVpmk3yZBqEVASrngXvzgridJFyLgaUnRKCWNmJeFU5UkfGpKMqa1WpbVZkqWR52z0I2YC+6nTNalX0Rgokx63unn8k9chJEb2etfZN9M2PR7qNUiofFaHX9mX9nXMXO2aKFpxAK1LIj8MfhVKwWW8Sl+HnKJvnVuy/pdb/h2PW/NE5rblg5uHmbl1s4DcAU1lTaRClXC5DiXXtn1cbTQhlZkYgmPHjzCoHr1N8lt4ys2znq2GVwiMmh1zpOHSCSZ9FrAjLIu37gxK2IDWxgFonwGN0rNaZz6KmnhqVroKa0D2pY3TIectAaZCFdY6Eae+chVzGHKoKC5ZEY8lcnAiFPhWi/3KzyQa5vdTHN5YnJBRq8Fl8GfCybFTHD9W/INaDzisarBkS5FLFmCfi94eqYS40DCNtgJwZ+jKXiEaxA8cW0EEPqSvjDovKtpJGRww1ZqgR5JDbDVta4ipcUPMMvcGPC1NoQGML+ocY89CTTNU9C5c2Bgz0x0w1IUoM5UScnmqZisJxwDLCK5UsaomJTcSpEQQyUVLAMc4PbPC6jjWrmLPc2IUhwaEAOW+abuuq0YFTd0h+LVLqCTiQLoH1qdPosRiGSS4ge0Jfo+nbMEnkN8Bj7IYMRhjwQ8ma5gQZkODFdUa/mXYPxST4TRTK/yDk4/EE9O9y3jwtQ3j1u29sIkoHNhHjVyA2yWejmxU6PVd+7gT5Ql/qzACBI5wks+QwvNdId5T0US3lidUTeXfCaoUbSMhOH3IMc5LSGfYdQBezNpg1UkAliRjXqGGZYxGOk6VyIxlh69K3gDi4YY6XqwriG0ATfXhjeqazNUCayPQT/oxmF7LDlukQZmu4Dxama71LSN2d3u7sQmEwVi14CVohqxMmBdNrUx7F+jGgMWNgMRjA82I3yw5ktQ+3WoUVSFULIJl3cqFUYotK8z3Qq0R0BvQEhtQ+98d/B6DeA1xoMQEmByCVl4KTTPU9UfiU1djw+fxrePo/Hd+HY0vh1+9R7/AoVgU9BosP/Lry9GtieVWyuFkD1MtvOmyQJjqhPb0PMU9Y4U9Qa0IbZGvT2kc48i7P+rVObPwthhzroX1MSBvLP2gJp3XAtwBlaN1vKrimuKIsXi2iP09lddU9c7pByoOEacE8Au8/nUdiayeVKvHF9wKcPhnRoxeeM4nXZlnHY21fVRaot+t505KadXNoOcbGufvIp/RL9C4G6su07HhwMcH+jbfq8MsTs9F8KP128IPxcVhr4l/NDJpXyaaNsKJstL90ZDjD8lm9cmG7efdimxG9F2erugTXntVGLvDb0eeXAbensosekusFpiwxVmtkehmDzt2GNg7vA9xo71qCTad3l4NvBwX61LRKjc/HMnqNZuhcpxIhXm2EPesHruar5QBRL3j3/F6iZTrI8SZSKuT2XSscskVxfRNvT79cy5rpZL165OuBMR6pftp0ppp7i73lq7lEqNgO8l8Nbv2U+10o74NRRLjfjtoVjymm6TT9XSf7FrG8qlw+3a+nn2M/9nAbe39kpmC8Q29W10JPoKixtMj5XM/RqsaRsjsHtIht3KdZVf31qNJek+MmH9FPlOfVy5l/HPj+jk+mnPlcrvxLveBR1tXkoOh3Gus/F+ndt3t9euciI6HcO59RPTO3Nu/Qq/KcMdyLv1Y8g7827PXWu7qDs4GHehmf8nLvvtJP/joT/+CQ== \ No newline at end of file diff --git a/dependency-injection/docs/resource-demo-classdiagram.png b/dependency-injection/docs/resource-demo-classdiagram.png deleted file mode 100644 index 1f0a41a19e921af046deb26274c06872d89339a6..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 46095 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 diff --git a/dependency-injection/docs/resource-field-demo-classdiagram.png b/dependency-injection/docs/resource-field-demo-classdiagram.png deleted file mode 100644 index 0d6207d09a6e6623281e605d26431d1a869f6e28..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 17692 zcmeIabySpH_%@1&I)F5YbPS;=Ac%A`q#!voBHba~NDmDHQc?p742^Uu(xG$;C?Sn> z$Jyi0_gm|H=ll1p^Urb3V$HnI^XzBGz3=%eUvsXDC6Ph_S7dbKejqigSHg^boPjd?NT61fZ z{2zpiP=}w2)$+*FY|jr6;Dr~v)!Ftaj0Wq{G7z19-X*~BpS&j4ydPR~w@*>_BvNw! zPTD!^ozX$O<>|TDg@A@vL{H5B>*9~FNil2_cDi`qrI~K^}VYZCH>l_tWec}k! z;q0H+Q#ZXa!u;9I0vyFIDaTz!NYxu?RjzH?vvMw;ku3*0RZ<;F8TKfVJ}AjQkj4_V zbUc!hNUEQ{yOY?|R?TKi)!vL<$<=0+zVmc`x+L^1UYzqoW$7m~5sp=6J@4GB!<6UY zh1IiEYffx*Ld}2JTJCR-it=JcyM8Utnvi8kNEw~Sa9+| zR;;yEJrG(!=ARZ@;B2sLru$A}PuG+;WkHUA`-??OgZF^#8T-<$6{0)8QXXaa2pN4H z`p9zw8KiCQ+xui}JO@`aG=6(M>hN|}|JB&@8+fqCY|o>UylI_|=2}F!#AUWKeJ{^& z5@M|i4?4QK6|;bYU9UIPFG0#71He3hV9sji&Itqy!XYa66W{# zS0~2_xW~@);ho~-mn0pwZdOmIYbGLT&B(e#KVpXdK)Hs!7_FaLlC9OR5$b+`NrH8P zs=>d}@HAc!%fr?!{~=tj;7hT=L>>IwCEj+D_nnF*?PsNL<)W~TNBvW@<1=WFoL5sF zt7)6on|w_^%csWi?br%p#2PQ0BVLEjwmX>F{hWMk;sV2_WQJI%hgefohVwOuz)lc}WNT~7&a?Ba_$U7$T|C?f9@ zYE&>?)ugWIx;pbP9APdvW11edT|)l3+3WELUc0yIm|S9~db*X~cOR2D`H1q_J$&Sf zkwC=P0+dqVyLNomg_}kF)1CW4toNy$*Hu_u?f&>Ey}h<^cOG`;(&ka^*2@k1#Wuxolp~_LlZh-gY;Yk+1aW$5Wtxee8t>xwsc+dd%k@ z4ez>qLE(~;B%b;yCRS)g;%+wG-Q8-(-uWpEL;bHha5$FXCCB{XqX}G}z$V0TpGk#U^PlclCL{mMQIX+eRDx!#RU^ zb%~k`F3t`zxJcE0ZRz+!1fvYYVk+c1eXw<}^_t`CjDVAi{SgKRJ%&6?Lc`
    qwa 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 diff --git a/dependency-injection/docs/resource-field-demo-classdiagram.xml b/dependency-injection/docs/resource-field-demo-classdiagram.xml deleted file mode 100644 index 44c742f2bc..0000000000 --- a/dependency-injection/docs/resource-field-demo-classdiagram.xml +++ /dev/null @@ -1 +0,0 @@ -7Vhtb+I4EP41SHcftgICtP1YoN1bqXtalZ7u7lPlJiZx1/HkHANlf/3OOGOSEPpyonfaOxUhFD8ejz3zzItDL5rljx+tKLLPkEjdG/aTx1407w2HZ8MIfwnYVsB4fF4BqVVJBQ1qYKG+SQb7jK5UIsuWoAPQThVtMAZjZOxamLAWNm2xJej2roVIw441sIiF7qK/q8RlwaxJjf8iVZqFnQcTtu9exF9TCyvD+/WG0dJ/qulcBF1saJmJBDYNKLpEt1oA1ExP+eNManJtcFu17uqJ2d25rTR8tucX4BQtWAu9YtN7w4nGpdMCH1J6uFJSJzeyhJWN5SfzgP5WYOYyhyCK6nfSbJbbBleWG5VrYXA0zVyuERzg4xKMW7AQjYVWqcHnGM8tLQJraZ1CQi54wkGBaJwpnVyLLazIutKht8NomoFV31CtCHvgtHUcW6PzlsSCViLcR9TKEmW+BJfRygq6FiUBJBOD1qIo1f3uwLmwqTJTcA5yFgqWXimtZ6ABzUAHBP6Da5rcMF1kq+TU8RBz9VFCLp3dokiY5bDhtBpxmm3qGI1GLJI14/OUBQXnRbrTXMcGPnB4HA4VVtEIlQ+U4XIpVtqhzQheIPAg1uJEwYlH9oMBzfRU1YFQOgtfZXCXAR8oy4YHGQoBouWSNBwOj7IQsTLptZeZj2rkhn1B0CZTTi4QpzNtsHwhBqhvqX0iZipJJKqcWnDCiYpxorcAZZz333iKX3TzrH8y7o3RrhmOkbgwxi+JWzcDg/YJXIfLJIbTRlJIHYiEkIcvR0KgngvOS9RHXLKOYX50oEjsEavVfoZXxIbq6XP+b7OaIxe0Q6Dxllief/DqW1RHXaoJ2qdQi3upv0CpqIIhZivZPWr/BfbOxq9j7+x48ninFnloQr/QaFko6xfGkKvQK3eff1vc3l19+nV+N69T+6efq+ReA6p9T+p/KizOX1nPx4wdExennbh4tnL/GG0cL2A/SBvvkHqgsz/Zxk/77T4+CNfBBvGDyaF6wCF1DPHcON6reTNtX6DTJ8uTaRteC15ib8SN9KhbGJ+uwZZM8N2Fh2hoBikYoS9rFD2HLySSNJDfGrSigXb7B+N+8CcNsOLRMLmgVynSWkhzmykqoIhSYvCSB+nclnNTrBxQ1d2d4Bo8wbRPdWY66PMZg3b5ftS6cWL+p/J5IqzU2L3Wbe1Hubn7YnQj/1opLCmv6H++8DzZZSgiyVlUnPbq5msaIacNdb03KEXjvVeKwaQbzIdiOVSso5zcfaXoRvd/2rtR6NTh3te9tQdHvrlzu7f2/5lzJ6fszRC6I1bx9t7FYf2fjJ9r/O8VXX4H \ No newline at end of file diff --git a/dependency-injection/docs/resource-method-byname-demo-classdiagram.png b/dependency-injection/docs/resource-method-byname-demo-classdiagram.png deleted file mode 100644 index c5cd0c0fcb8a0d1d3275da9875be05663b4db51a..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 29579 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�{vW65F0TH+<3m9n|HDlsaDg-wA85FD=#cIrU65>iWRL@;ivPjmI{Z-} z!iiJ(dkISN5~BShT>V~3;Nab1fUx(y4B(r6B2I(@`8zYAb%VTk9=!`O4PS_9NRpzKys0b29sme_3hbi=ppXtn{aiBuT{q-#y`|??6$=S32pG!WoijXn|A>l7P1Csf=#VrUy)3kBg25BA_ z1u@SxhktooS^{@p7Uac*j9E=i$Oyj2xI@>3u?TY|F^nkD@J0?_L$i6_u6DeM4DTL-2x{nh)Pj$8Az@k&?3 zc#bSS{xWcBZG$f2mjh2~&QN~a;gHi?s=WZ>!jR8~gyi3!WVoXD^2=Wpx~qpu`qCmE z6bOdYM9zPKRw;AHhzO$HfZ)Y%YA$0T`%U<=yC>u*1#rC^EZ%C%e7%h!ieYf2cjTyWAmsh$B!_|8IL43J!(0 zhPlYbAsB7dgC|596Qw#kUiZ+gRZpvV?AA2a2U1d^Q|-q!6=0y+TMpWHUIN$TjN`m} zN-?uW`BycOI2OIsqZ2<=>}?>lSMSa>@u7+fCvli9)$%L_P;Ubrv(6)y|RYj>cNG-6QYOa_e zaNeeYZ*T*-!tMO<6!hXWZaCx)`&t4}>ZsOpd$lg~SJX|s(Ez<;eV~-Wk?MJKt{~$J z^g6zg{bI=z7!hg|0VL3G0reX6pZ8qHGcu0cv}fP}q+sfnT&?yEJk)rP)k)Q$D(rBq zmmc<}_z;F4XKDbw+93F;1MXMGJt>&UpZr%0?4|%7kcD{HFDHtTxT^m>nmPNy^5U!I{B-eFN%ye1S%d|7(ANhe(u$UXBntWeA)SOaqMqHl5rT;xX|YaNqlJ&^9vQ z6vi%Khw_f?g^+bImYx|*>GM=f7$a_(+y^$fKFhA;(*Vu2zw}kGXzly(^BZt7Vpn@# zg#yRLlwY$m3#EW#if#JQ+ty6>VllZR?=c9=kd)VwfYl_Yy?H*hn<_q;$kzekSB*IKF;F5T5xGfg8p|L;I4y;%-4T_vkhnC=UL4HPhC4S8~`m_2aXw< z0Vg2Cbwjzufib`1)5P41z#2~XvDA8yvLzE3_;t_Dv%MYasJwcqCXaLMQD8xPb!FfT zUnp$%wybS)RVQ%6>MCR4Y&mG=n`IMd&Azv={G>#0C+A5Vt>6s+z*txb9KZ23 zE&M7DTCe{Tya)m)8VTC=u(Xr^ZpKn8=%4gogmmd)DnD;Tmn6ynH+e@TJQv?5HMF9Y7Vdy0^F}L>&FD1Xd$UdE*d;wmjJV^DKK1Db*|p80IDq6 zp`s^(fKjaDTjSBD%gO7hB+>>mdlu09SC3qs4_y}k36wAMfK^$Pk2=^IPgH>2ine(9W39~xLQc6%S3|%<_ue)GhWSHef&RgqwK33 zSU~B362+w>?I|}VU6`Qaln9DUP<*Ze=73<|n7^z*y3`IPI!(xd>59t&1I`@a%zWAH nbN^QX8+A}gkS;FHKlWbYbAsL~JG=rO&BoyA>gTe~DWM4f06-Nq diff --git a/dependency-injection/docs/resource-method-demo-classdiagram.xml b/dependency-injection/docs/resource-method-demo-classdiagram.xml deleted file mode 100644 index 94b39279fc..0000000000 --- a/dependency-injection/docs/resource-method-demo-classdiagram.xml +++ /dev/null @@ -1 +0,0 @@ -3Vhbb+I6EP41SN0HECGQbh8boNuutkerltXZ84QMcRL3OHFqHAr99R0749y4qCpdqV0eQvx5PJ755mJDxx0nm2+SZPGtCCjvDPrBpuNOOoPB14ELTw1sC2A0uiiASLKggJwKuGfPFME+ojkL6KohqITgimVNcCnSlC5VAyNSiqemWCh4c9eMRHbHCrhfEr6L/ssCFVu3vAq/piyK7c6Oh/4tyPL/SIo8xf06Azc0n2I6IVYXOrqKSSCeapA7BVqlEKBZvyWbMeWaWktbse7qwGxpt6Qp2nZ8ATq0UlvrOg2ACRwKqWIRiZTwaYX6xj2qFfRhFKuEw6sDr7Cn3P5G3Az+04PeyAyDSx0YrTWj6SxmaYFeMTCoWPJAldpiMpBcCYAqC34IkeE+hc3a0INeI7QSuVyiFKakIjKiKDUqGYdEpiKhYDKISMqJYuumdoIpFZVyFa3wgsweCAtGe014jlrv6GPOJOR4m39FN2BdnVaQYs9kYQQ0TZlgqTLWjPzOaAII4SwCOidL8J9KANZUKgbpfIkTCQsCEztOFpT7ZZKOBRcgD/vaNLXsag0Uy7lZbGhJlcN13k0+7TKKivo9DAK2he6wGL6acNT8UzNQqe2CeE2r01IgwnAFEW/HqzTvVSFEw2sR7Aw8riOVNeLnPea6dv0E0kyn+CXM9rMNPA210AE03lU6mfXcsDanQ9/FWOo5DGepE94i/DY7LyxwS6FKgjtapPtN+gBhYiKd0ERYWfCvFC/Xa90NBKTAnSYWg1QfMrDpH3B8yKw3EcJpCFIlI23dXX2Y0JDkXEHDAM1a8oGsSY+JnkHe2QMLaIwkECw/Xaz0l5VZZSTd6yhnKe3GeDpoM52ezpXWVjVn5re/7mdzfzq/+ef7dDybTuZjISWEkEPOl14V+zXtPNGGsy/F5FpAlh/faR+tO8CJ5hwh+6j/BQYlPqk4PavnxlvdbHXmdlM1NVz23iKBfQFSITfnXGhONj8UqcJDzYEOZsZXJGEQXXdyTfmaaq3Nln+wB++ccQd7rWPbM3ZFF4dP1X3G7SNmQ2PWnSN4yoFnDtaP2i0PtI2d9vhhm+En7N+vNflTl5xna8xeRIa7Ned4e2ru4h1K7nyn5Owd+MS7JVzEMXv0ghb3+wMErXXJ0mhmbuxwyXsXdodavsbuBTaZGrm25dW5tdgp3OKPu7+XW8/emW3men+MXBhWP2+Li3j1F4I7fQE= \ No newline at end of file diff --git a/dependency-injection/pom.xml b/dependency-injection/pom.xml index 46f57e512e..f87d061a53 100644 --- a/dependency-injection/pom.xml +++ b/dependency-injection/pom.xml @@ -65,7 +65,7 @@ xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xs maven-surefire-plugin - **/*Demo.java + **/*Test.java diff --git a/dependency-injection/src/test/java/com/baeldung/autowired/FieldAutowiredNameDemo.java b/dependency-injection/src/test/java/com/baeldung/autowired/FieldAutowiredNameTest.java similarity index 55% rename from dependency-injection/src/test/java/com/baeldung/autowired/FieldAutowiredNameDemo.java rename to dependency-injection/src/test/java/com/baeldung/autowired/FieldAutowiredNameTest.java index c11ed5286a..0455ca500c 100644 --- a/dependency-injection/src/test/java/com/baeldung/autowired/FieldAutowiredNameDemo.java +++ b/dependency-injection/src/test/java/com/baeldung/autowired/FieldAutowiredNameTest.java @@ -8,20 +8,24 @@ import org.junit.runner.RunWith; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.test.context.ContextConfiguration; import org.springframework.test.context.junit4.SpringJUnit4ClassRunner; +import org.springframework.test.context.support.AnnotationConfigContextLoader; +import com.baeldung.configuration.ApplicationContextTestAutowiredName; import com.baeldung.dependency.ArbitraryDependency; @RunWith(SpringJUnit4ClassRunner.class) -@ContextConfiguration(locations={ - "/applicationContextTest-@Autowired-Name.xml"}) -public class FieldAutowiredNameDemo { +@ContextConfiguration( + loader=AnnotationConfigContextLoader.class, + classes=ApplicationContextTestAutowiredName.class) +public class FieldAutowiredNameTest { @Autowired private ArbitraryDependency autowiredFieldDependency; @Test - public void autowiredFieldDependency_MUST_BE_AUTOWIRED_Correctly() { + public void givenAutowiredAnnotation_WhenOnField_ThenDependencyValid(){ assertNotNull(autowiredFieldDependency); - assertEquals("Arbitrary Dependency", autowiredFieldDependency.toString()); + assertEquals("Arbitrary Dependency", + autowiredFieldDependency.toString()); } } diff --git a/dependency-injection/src/test/java/com/baeldung/autowired/FieldAutowiredDemo.java b/dependency-injection/src/test/java/com/baeldung/autowired/FieldAutowiredTest.java similarity index 63% rename from dependency-injection/src/test/java/com/baeldung/autowired/FieldAutowiredDemo.java rename to dependency-injection/src/test/java/com/baeldung/autowired/FieldAutowiredTest.java index c71365097f..811daebaf6 100644 --- a/dependency-injection/src/test/java/com/baeldung/autowired/FieldAutowiredDemo.java +++ b/dependency-injection/src/test/java/com/baeldung/autowired/FieldAutowiredTest.java @@ -8,19 +8,22 @@ import org.junit.runner.RunWith; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.test.context.ContextConfiguration; import org.springframework.test.context.junit4.SpringJUnit4ClassRunner; +import org.springframework.test.context.support.AnnotationConfigContextLoader; +import com.baeldung.configuration.ApplicationContextTestAutowiredType; import com.baeldung.dependency.ArbitraryDependency; @RunWith(SpringJUnit4ClassRunner.class) -@ContextConfiguration(locations={ - "/applicationContextTest-@Autowired-Type.xml"}) -public class FieldAutowiredDemo { +@ContextConfiguration( + loader=AnnotationConfigContextLoader.class, + classes=ApplicationContextTestAutowiredType.class) +public class FieldAutowiredTest { @Autowired private ArbitraryDependency fieldDependency; @Test - public void fieldDependency_MUST_BE_AUTOWIRED_Correctly() { + public void givenAutowired_WhenSetOnField_ThenDependencyResolved() { assertNotNull(fieldDependency); assertEquals("Arbitrary Dependency", fieldDependency.toString()); } diff --git a/dependency-injection/src/test/java/com/baeldung/autowired/FieldQualifierAutowiredDemo.java b/dependency-injection/src/test/java/com/baeldung/autowired/FieldQualifierAutowiredTest.java similarity index 62% rename from dependency-injection/src/test/java/com/baeldung/autowired/FieldQualifierAutowiredDemo.java rename to dependency-injection/src/test/java/com/baeldung/autowired/FieldQualifierAutowiredTest.java index 5afce6ab6a..d72d38e9a8 100644 --- a/dependency-injection/src/test/java/com/baeldung/autowired/FieldQualifierAutowiredDemo.java +++ b/dependency-injection/src/test/java/com/baeldung/autowired/FieldQualifierAutowiredTest.java @@ -9,13 +9,16 @@ import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Qualifier; import org.springframework.test.context.ContextConfiguration; import org.springframework.test.context.junit4.SpringJUnit4ClassRunner; +import org.springframework.test.context.support.AnnotationConfigContextLoader; +import com.baeldung.configuration.ApplicationContextTestAutowiredQualifier; import com.baeldung.dependency.ArbitraryDependency; @RunWith(SpringJUnit4ClassRunner.class) -@ContextConfiguration(locations={ - "/applicationContextTest-@Autowired-Qualifier.xml"}) -public class FieldQualifierAutowiredDemo { +@ContextConfiguration( + loader=AnnotationConfigContextLoader.class, + classes=ApplicationContextTestAutowiredQualifier.class) +public class FieldQualifierAutowiredTest { @Autowired @Qualifier("autowiredFieldDependency") @@ -26,14 +29,15 @@ public class FieldQualifierAutowiredDemo { private ArbitraryDependency fieldDependency2; @Test - public void fieldDependency1_MUST_BE_AUTOWIRED_Correctly() { + public void givenAutowiredQualifier_WhenOnField_ThenDep1Valid(){ assertNotNull(fieldDependency1); assertEquals("Arbitrary Dependency", fieldDependency1.toString()); } @Test - public void fieldDependency2_MUST_BE_AUTOWIRED_Correctly() { + public void givenAutowiredQualifier_WhenOnField_ThenDep2Valid(){ assertNotNull(fieldDependency2); - assertEquals("Another Arbitrary Dependency", fieldDependency2.toString()); + assertEquals("Another Arbitrary Dependency", + fieldDependency2.toString()); } } diff --git a/dependency-injection/src/test/java/com/baeldung/configuration/ApplicationContextTestAutowiredName.java b/dependency-injection/src/test/java/com/baeldung/configuration/ApplicationContextTestAutowiredName.java new file mode 100644 index 0000000000..41dfdb09e2 --- /dev/null +++ b/dependency-injection/src/test/java/com/baeldung/configuration/ApplicationContextTestAutowiredName.java @@ -0,0 +1,9 @@ +package com.baeldung.configuration; + +import org.springframework.context.annotation.ComponentScan; +import org.springframework.context.annotation.Configuration; + +@Configuration +@ComponentScan(basePackages={"com.baeldung.dependency"}) +public class ApplicationContextTestAutowiredName { +} diff --git a/dependency-injection/src/test/java/com/baeldung/configuration/ApplicationContextTestAutowiredQualifier.java b/dependency-injection/src/test/java/com/baeldung/configuration/ApplicationContextTestAutowiredQualifier.java new file mode 100644 index 0000000000..138fbc46c5 --- /dev/null +++ b/dependency-injection/src/test/java/com/baeldung/configuration/ApplicationContextTestAutowiredQualifier.java @@ -0,0 +1,25 @@ +package com.baeldung.configuration; + +import org.springframework.context.annotation.Bean; +import org.springframework.context.annotation.Configuration; + +import com.baeldung.dependency.AnotherArbitraryDependency; +import com.baeldung.dependency.ArbitraryDependency; + +@Configuration +public class ApplicationContextTestAutowiredQualifier { + + @Bean + public ArbitraryDependency autowiredFieldDependency() { + ArbitraryDependency autowiredFieldDependency = new ArbitraryDependency(); + + return autowiredFieldDependency; + } + + @Bean + public ArbitraryDependency anotherAutowiredFieldDependency() { + ArbitraryDependency anotherAutowiredFieldDependency = new AnotherArbitraryDependency(); + + return anotherAutowiredFieldDependency; + } +} diff --git a/dependency-injection/src/test/java/com/baeldung/configuration/ApplicationContextTestAutowiredType.java b/dependency-injection/src/test/java/com/baeldung/configuration/ApplicationContextTestAutowiredType.java new file mode 100644 index 0000000000..703a8214b9 --- /dev/null +++ b/dependency-injection/src/test/java/com/baeldung/configuration/ApplicationContextTestAutowiredType.java @@ -0,0 +1,16 @@ +package com.baeldung.configuration; + +import org.springframework.context.annotation.Bean; +import org.springframework.context.annotation.Configuration; + +import com.baeldung.dependency.ArbitraryDependency; + +@Configuration +public class ApplicationContextTestAutowiredType { + + @Bean + public ArbitraryDependency autowiredFieldDependency() { + ArbitraryDependency autowiredFieldDependency = new ArbitraryDependency(); + return autowiredFieldDependency; + } +} diff --git a/dependency-injection/src/test/java/com/baeldung/configuration/ApplicationContextTestInjectName.java b/dependency-injection/src/test/java/com/baeldung/configuration/ApplicationContextTestInjectName.java new file mode 100644 index 0000000000..7fe8306a39 --- /dev/null +++ b/dependency-injection/src/test/java/com/baeldung/configuration/ApplicationContextTestInjectName.java @@ -0,0 +1,17 @@ +package com.baeldung.configuration; + +import org.springframework.context.annotation.Bean; +import org.springframework.context.annotation.Configuration; + +import com.baeldung.dependency.ArbitraryDependency; +import com.baeldung.dependency.YetAnotherArbitraryDependency; + +@Configuration +public class ApplicationContextTestInjectName { + + @Bean + public ArbitraryDependency yetAnotherFieldInjectDependency() { + ArbitraryDependency yetAnotherFieldInjectDependency = new YetAnotherArbitraryDependency(); + return yetAnotherFieldInjectDependency; + } +} diff --git a/dependency-injection/src/test/java/com/baeldung/configuration/ApplicationContextTestInjectQualifier.java b/dependency-injection/src/test/java/com/baeldung/configuration/ApplicationContextTestInjectQualifier.java new file mode 100644 index 0000000000..557ba78aca --- /dev/null +++ b/dependency-injection/src/test/java/com/baeldung/configuration/ApplicationContextTestInjectQualifier.java @@ -0,0 +1,23 @@ +package com.baeldung.configuration; + +import org.springframework.context.annotation.Bean; +import org.springframework.context.annotation.Configuration; + +import com.baeldung.dependency.AnotherArbitraryDependency; +import com.baeldung.dependency.ArbitraryDependency; + +@Configuration +public class ApplicationContextTestInjectQualifier { + + @Bean + public ArbitraryDependency defaultFile() { + ArbitraryDependency defaultFile = new ArbitraryDependency(); + return defaultFile; + } + + @Bean + public ArbitraryDependency namedFile() { + ArbitraryDependency namedFile = new AnotherArbitraryDependency(); + return namedFile; + } +} diff --git a/dependency-injection/src/test/java/com/baeldung/configuration/ApplicationContextTestInjectType.java b/dependency-injection/src/test/java/com/baeldung/configuration/ApplicationContextTestInjectType.java new file mode 100644 index 0000000000..f84fa8f3a2 --- /dev/null +++ b/dependency-injection/src/test/java/com/baeldung/configuration/ApplicationContextTestInjectType.java @@ -0,0 +1,16 @@ +package com.baeldung.configuration; + +import org.springframework.context.annotation.Bean; +import org.springframework.context.annotation.Configuration; + +import com.baeldung.dependency.ArbitraryDependency; + +@Configuration +public class ApplicationContextTestInjectType { + + @Bean + public ArbitraryDependency injectDependency() { + ArbitraryDependency injectDependency = new ArbitraryDependency(); + return injectDependency; + } +} diff --git a/dependency-injection/src/test/java/com/baeldung/configuration/ApplicationContextTestResourceNameType.java b/dependency-injection/src/test/java/com/baeldung/configuration/ApplicationContextTestResourceNameType.java new file mode 100644 index 0000000000..f53002feca --- /dev/null +++ b/dependency-injection/src/test/java/com/baeldung/configuration/ApplicationContextTestResourceNameType.java @@ -0,0 +1,16 @@ +package com.baeldung.configuration; + +import java.io.File; + +import org.springframework.context.annotation.Bean; +import org.springframework.context.annotation.Configuration; + +@Configuration +public class ApplicationContextTestResourceNameType { + + @Bean(name="namedFile") + public File namedFile() { + File namedFile = new File("namedFile.txt"); + return namedFile; + } +} diff --git a/dependency-injection/src/test/java/com/baeldung/configuration/ApplicationContextTestResourceQualifier.java b/dependency-injection/src/test/java/com/baeldung/configuration/ApplicationContextTestResourceQualifier.java new file mode 100644 index 0000000000..18f5af4282 --- /dev/null +++ b/dependency-injection/src/test/java/com/baeldung/configuration/ApplicationContextTestResourceQualifier.java @@ -0,0 +1,22 @@ +package com.baeldung.configuration; + +import java.io.File; + +import org.springframework.context.annotation.Bean; +import org.springframework.context.annotation.Configuration; + +@Configuration +public class ApplicationContextTestResourceQualifier { + + @Bean(name="defaultFile") + public File defaultFile() { + File defaultFile = new File("defaultFile.txt"); + return defaultFile; + } + + @Bean(name="namedFile") + public File namedFile() { + File namedFile = new File("namedFile.txt"); + return namedFile; + } +} diff --git a/dependency-injection/src/test/java/com/baeldung/dependency/AnotherArbitraryDependency.java b/dependency-injection/src/test/java/com/baeldung/dependency/AnotherArbitraryDependency.java index 27ba03f6e8..0e19523b7e 100644 --- a/dependency-injection/src/test/java/com/baeldung/dependency/AnotherArbitraryDependency.java +++ b/dependency-injection/src/test/java/com/baeldung/dependency/AnotherArbitraryDependency.java @@ -1,5 +1,8 @@ package com.baeldung.dependency; +import org.springframework.stereotype.Component; + +@Component public class AnotherArbitraryDependency extends ArbitraryDependency { private final String label = "Another Arbitrary Dependency"; diff --git a/dependency-injection/src/test/java/com/baeldung/dependency/ArbitraryDependency.java b/dependency-injection/src/test/java/com/baeldung/dependency/ArbitraryDependency.java index bab289777c..d120e8daf7 100644 --- a/dependency-injection/src/test/java/com/baeldung/dependency/ArbitraryDependency.java +++ b/dependency-injection/src/test/java/com/baeldung/dependency/ArbitraryDependency.java @@ -1,5 +1,8 @@ package com.baeldung.dependency; +import org.springframework.stereotype.Component; + +@Component(value="autowiredFieldDependency") public class ArbitraryDependency { private final String label = "Arbitrary Dependency"; diff --git a/dependency-injection/src/test/java/com/baeldung/dependency/YetAnotherArbitraryDependency.java b/dependency-injection/src/test/java/com/baeldung/dependency/YetAnotherArbitraryDependency.java index 1f59500ec5..a88abd0924 100644 --- a/dependency-injection/src/test/java/com/baeldung/dependency/YetAnotherArbitraryDependency.java +++ b/dependency-injection/src/test/java/com/baeldung/dependency/YetAnotherArbitraryDependency.java @@ -1,5 +1,8 @@ package com.baeldung.dependency; +import org.springframework.stereotype.Component; + +@Component public class YetAnotherArbitraryDependency extends ArbitraryDependency { private final String label = "Yet Another Arbitrary Dependency"; diff --git a/dependency-injection/src/test/java/com/baeldung/inject/FieldByNameInjectDemo.java b/dependency-injection/src/test/java/com/baeldung/inject/FieldByNameInjectTest.java similarity index 56% rename from dependency-injection/src/test/java/com/baeldung/inject/FieldByNameInjectDemo.java rename to dependency-injection/src/test/java/com/baeldung/inject/FieldByNameInjectTest.java index a670ee8313..0f0429ea94 100644 --- a/dependency-injection/src/test/java/com/baeldung/inject/FieldByNameInjectDemo.java +++ b/dependency-injection/src/test/java/com/baeldung/inject/FieldByNameInjectTest.java @@ -10,21 +10,25 @@ import org.junit.Test; import org.junit.runner.RunWith; import org.springframework.test.context.ContextConfiguration; import org.springframework.test.context.junit4.SpringJUnit4ClassRunner; +import org.springframework.test.context.support.AnnotationConfigContextLoader; +import com.baeldung.configuration.ApplicationContextTestInjectName; import com.baeldung.dependency.ArbitraryDependency; @RunWith(SpringJUnit4ClassRunner.class) -@ContextConfiguration(locations={ - "/applicationContextTest-@Inject-Name.xml"}) -public class FieldByNameInjectDemo { +@ContextConfiguration( + loader=AnnotationConfigContextLoader.class, + classes=ApplicationContextTestInjectName.class) +public class FieldByNameInjectTest { @Inject @Named("yetAnotherFieldInjectDependency") private ArbitraryDependency yetAnotherFieldInjectDependency; @Test - public void yetAnotherFieldInjectDependency_MUST_BE_INJECTED_Correctly() { + public void givenInjectQualifier_WhenSetOnField_ThenDependencyValid() { assertNotNull(yetAnotherFieldInjectDependency); - assertEquals("Yet Another Arbitrary Dependency", yetAnotherFieldInjectDependency.toString()); + assertEquals("Yet Another Arbitrary Dependency", + yetAnotherFieldInjectDependency.toString()); } } diff --git a/dependency-injection/src/test/java/com/baeldung/inject/FieldInjectDemo.java b/dependency-injection/src/test/java/com/baeldung/inject/FieldInjectDemo.java deleted file mode 100644 index df40e516ba..0000000000 --- a/dependency-injection/src/test/java/com/baeldung/inject/FieldInjectDemo.java +++ /dev/null @@ -1,27 +0,0 @@ -package com.baeldung.inject; -import static org.junit.Assert.assertEquals; -import static org.junit.Assert.assertNotNull; - -import javax.inject.Inject; - -import org.junit.Test; -import org.junit.runner.RunWith; -import org.springframework.test.context.ContextConfiguration; -import org.springframework.test.context.junit4.SpringJUnit4ClassRunner; - -import com.baeldung.dependency.ArbitraryDependency; - -@RunWith(SpringJUnit4ClassRunner.class) -@ContextConfiguration(locations={ - "/applicationContextTest-@Inject-Type.xml"}) -public class FieldInjectDemo { - - @Inject - private ArbitraryDependency inject1Dependency; - - @Test - public void fieldDependency_MUST_BE_INJECTED_Successfully() { - assertNotNull(inject1Dependency); - assertEquals("Arbitrary Dependency", inject1Dependency.toString()); - } -} diff --git a/dependency-injection/src/test/java/com/baeldung/inject/FieldInjectTest.java b/dependency-injection/src/test/java/com/baeldung/inject/FieldInjectTest.java new file mode 100644 index 0000000000..7cbba63113 --- /dev/null +++ b/dependency-injection/src/test/java/com/baeldung/inject/FieldInjectTest.java @@ -0,0 +1,31 @@ +package com.baeldung.inject; +import static org.junit.Assert.assertEquals; +import static org.junit.Assert.assertNotNull; + +import javax.inject.Inject; + +import org.junit.Test; +import org.junit.runner.RunWith; +import org.springframework.test.context.ContextConfiguration; +import org.springframework.test.context.junit4.SpringJUnit4ClassRunner; +import org.springframework.test.context.support.AnnotationConfigContextLoader; + +import com.baeldung.configuration.ApplicationContextTestInjectType; +import com.baeldung.dependency.ArbitraryDependency; + +@RunWith(SpringJUnit4ClassRunner.class) +@ContextConfiguration( + loader=AnnotationConfigContextLoader.class, + classes=ApplicationContextTestInjectType.class) +public class FieldInjectTest { + + @Inject + private ArbitraryDependency fieldInjectDependency; + + @Test + public void givenInjectAnnotation_WhenOnField_ThenValidDependency(){ + assertNotNull(fieldInjectDependency); + assertEquals("Arbitrary Dependency", + fieldInjectDependency.toString()); + } +} diff --git a/dependency-injection/src/test/java/com/baeldung/inject/FieldQualifierInjectDemo.java b/dependency-injection/src/test/java/com/baeldung/inject/FieldQualifierInjectTest.java similarity index 54% rename from dependency-injection/src/test/java/com/baeldung/inject/FieldQualifierInjectDemo.java rename to dependency-injection/src/test/java/com/baeldung/inject/FieldQualifierInjectTest.java index 3cc9b643c7..f0fc5866a3 100644 --- a/dependency-injection/src/test/java/com/baeldung/inject/FieldQualifierInjectDemo.java +++ b/dependency-injection/src/test/java/com/baeldung/inject/FieldQualifierInjectTest.java @@ -10,13 +10,15 @@ import org.junit.runner.RunWith; import org.springframework.beans.factory.annotation.Qualifier; import org.springframework.test.context.ContextConfiguration; import org.springframework.test.context.junit4.SpringJUnit4ClassRunner; +import org.springframework.test.context.support.AnnotationConfigContextLoader; +import com.baeldung.configuration.ApplicationContextTestInjectQualifier; import com.baeldung.dependency.ArbitraryDependency; @RunWith(SpringJUnit4ClassRunner.class) -@ContextConfiguration(locations={ - "/applicationContextTest-@Inject-Qualifier.xml"}) -public class FieldQualifierInjectDemo { +@ContextConfiguration(loader=AnnotationConfigContextLoader.class, + classes=ApplicationContextTestInjectQualifier.class) +public class FieldQualifierInjectTest { @Inject @Qualifier("defaultFile") @@ -27,14 +29,16 @@ public class FieldQualifierInjectDemo { private ArbitraryDependency namedDependency; @Test - public void defaultDependency_MUST_BE_INJECTED_Successfully() { + public void givenInjectQualifier_WhenOnField_ThenDefaultFileValid(){ assertNotNull(defaultDependency); - assertEquals("Arbitrary Dependency", defaultDependency.toString()); + assertEquals("Arbitrary Dependency", + defaultDependency.toString()); } @Test - public void namedDependency_MUST_BE_INJECTED_Correctly() { + public void givenInjectQualifier_WhenOnField_ThenNamedFileValid(){ assertNotNull(defaultDependency); - assertEquals("Another Arbitrary Dependency", namedDependency.toString()); + assertEquals("Another Arbitrary Dependency", + namedDependency.toString()); } } diff --git a/dependency-injection/src/test/java/com/baeldung/resource/FieldResourceInjectionDemo.java b/dependency-injection/src/test/java/com/baeldung/resource/FieldResourceInjectionDemo.java deleted file mode 100644 index fbb378d672..0000000000 --- a/dependency-injection/src/test/java/com/baeldung/resource/FieldResourceInjectionDemo.java +++ /dev/null @@ -1,25 +0,0 @@ -package com.baeldung.resource; -import static org.junit.Assert.assertNotNull; - -import java.io.File; - -import javax.annotation.Resource; - -import org.junit.Test; -import org.junit.runner.RunWith; -import org.springframework.test.context.ContextConfiguration; -import org.springframework.test.context.junit4.SpringJUnit4ClassRunner; - -@RunWith(SpringJUnit4ClassRunner.class) -@ContextConfiguration(locations={ - "/applicationContextTest-@Resource-NameType.xml"}) -public class FieldResourceInjectionDemo { - - @Resource(name="namedFile") - private File defaultFile; - - @Test - public void plainResourceAnnotation_MUST_FIND_DefaultFile() { - assertNotNull(defaultFile); - } -} diff --git a/dependency-injection/src/test/java/com/baeldung/resource/FieldResourceInjectionTest.java b/dependency-injection/src/test/java/com/baeldung/resource/FieldResourceInjectionTest.java new file mode 100644 index 0000000000..ed73ae8d59 --- /dev/null +++ b/dependency-injection/src/test/java/com/baeldung/resource/FieldResourceInjectionTest.java @@ -0,0 +1,31 @@ +package com.baeldung.resource; +import static org.junit.Assert.assertEquals; +import static org.junit.Assert.assertNotNull; + +import java.io.File; + +import javax.annotation.Resource; + +import org.junit.Test; +import org.junit.runner.RunWith; +import org.springframework.test.context.ContextConfiguration; +import org.springframework.test.context.junit4.SpringJUnit4ClassRunner; +import org.springframework.test.context.support.AnnotationConfigContextLoader; + +import com.baeldung.configuration.ApplicationContextTestResourceNameType; + +@RunWith(SpringJUnit4ClassRunner.class) +@ContextConfiguration( + loader=AnnotationConfigContextLoader.class, + classes=ApplicationContextTestResourceNameType.class) +public class FieldResourceInjectionTest { + + @Resource(name="namedFile") + private File defaultFile; + + @Test + public void givenResourceAnnotation_WhenOnField_ThenDependencyValid(){ + assertNotNull(defaultFile); + assertEquals("namedFile.txt", defaultFile.getName()); + } +} diff --git a/dependency-injection/src/test/java/com/baeldung/resource/MethodByQualifierResourceDemo.java b/dependency-injection/src/test/java/com/baeldung/resource/MethodByQualifierResourceTest.java similarity index 72% rename from dependency-injection/src/test/java/com/baeldung/resource/MethodByQualifierResourceDemo.java rename to dependency-injection/src/test/java/com/baeldung/resource/MethodByQualifierResourceTest.java index fcca34dc2f..e512b6fe0a 100644 --- a/dependency-injection/src/test/java/com/baeldung/resource/MethodByQualifierResourceDemo.java +++ b/dependency-injection/src/test/java/com/baeldung/resource/MethodByQualifierResourceTest.java @@ -12,17 +12,21 @@ import org.junit.runner.RunWith; import org.springframework.beans.factory.annotation.Qualifier; import org.springframework.test.context.ContextConfiguration; import org.springframework.test.context.junit4.SpringJUnit4ClassRunner; +import org.springframework.test.context.support.AnnotationConfigContextLoader; + +import com.baeldung.configuration.ApplicationContextTestResourceQualifier; @RunWith(SpringJUnit4ClassRunner.class) -@ContextConfiguration(locations={ - "/applicationContextTest-@Resource-Qualifier.xml"}) -public class MethodByQualifierResourceDemo { +@ContextConfiguration( + loader=AnnotationConfigContextLoader.class, + classes=ApplicationContextTestResourceQualifier.class) +public class MethodByQualifierResourceTest { private File arbDependency; private File anotherArbDependency; @Test - public void dependencies_MUST_BE_INJECTED_Correctly() { + public void givenResourceQualifier_WhenSetter_ThenValidDependencies(){ assertNotNull(arbDependency); assertEquals("namedFile.txt", arbDependency.getName()); assertNotNull(anotherArbDependency); diff --git a/dependency-injection/src/test/java/com/baeldung/resource/MethodByTypeResourceDemo.java b/dependency-injection/src/test/java/com/baeldung/resource/MethodByTypeResourceTest.java similarity index 52% rename from dependency-injection/src/test/java/com/baeldung/resource/MethodByTypeResourceDemo.java rename to dependency-injection/src/test/java/com/baeldung/resource/MethodByTypeResourceTest.java index af6a805bd9..edcf9b12ea 100644 --- a/dependency-injection/src/test/java/com/baeldung/resource/MethodByTypeResourceDemo.java +++ b/dependency-injection/src/test/java/com/baeldung/resource/MethodByTypeResourceTest.java @@ -1,5 +1,6 @@ package com.baeldung.resource; +import static org.junit.Assert.assertEquals; import static org.junit.Assert.assertNotNull; import java.io.File; @@ -10,11 +11,15 @@ import org.junit.Test; import org.junit.runner.RunWith; import org.springframework.test.context.ContextConfiguration; import org.springframework.test.context.junit4.SpringJUnit4ClassRunner; +import org.springframework.test.context.support.AnnotationConfigContextLoader; + +import com.baeldung.configuration.ApplicationContextTestResourceNameType; @RunWith(SpringJUnit4ClassRunner.class) -@ContextConfiguration(locations={ - "/applicationContextTest-@Resource-NameType.xml"}) -public class MethodByTypeResourceDemo { +@ContextConfiguration( + loader=AnnotationConfigContextLoader.class, + classes=ApplicationContextTestResourceNameType.class) +public class MethodByTypeResourceTest { private File defaultFile; @@ -24,7 +29,8 @@ public class MethodByTypeResourceDemo { } @Test - public void defaultFile_MUST_BE_INJECTED_Correctly() { + public void givenResourceAnnotation_WhenSetter_ThenValidDependency(){ assertNotNull(defaultFile); + assertEquals("namedFile.txt", defaultFile.getName()); } } diff --git a/dependency-injection/src/test/java/com/baeldung/resource/MethodResourceInjectionDemo.java b/dependency-injection/src/test/java/com/baeldung/resource/MethodResourceInjectionTest.java similarity index 53% rename from dependency-injection/src/test/java/com/baeldung/resource/MethodResourceInjectionDemo.java rename to dependency-injection/src/test/java/com/baeldung/resource/MethodResourceInjectionTest.java index d746fd4d85..38e9db8737 100644 --- a/dependency-injection/src/test/java/com/baeldung/resource/MethodResourceInjectionDemo.java +++ b/dependency-injection/src/test/java/com/baeldung/resource/MethodResourceInjectionTest.java @@ -1,4 +1,6 @@ package com.baeldung.resource; + +import static org.junit.Assert.assertEquals; import static org.junit.Assert.assertNotNull; import java.io.File; @@ -9,11 +11,15 @@ import org.junit.Test; import org.junit.runner.RunWith; import org.springframework.test.context.ContextConfiguration; import org.springframework.test.context.junit4.SpringJUnit4ClassRunner; +import org.springframework.test.context.support.AnnotationConfigContextLoader; + +import com.baeldung.configuration.ApplicationContextTestResourceNameType; @RunWith(SpringJUnit4ClassRunner.class) -@ContextConfiguration(locations={ - "/applicationContextTest-@Resource-NameType.xml"}) -public class MethodResourceInjectionDemo { +@ContextConfiguration( + loader=AnnotationConfigContextLoader.class, + classes=ApplicationContextTestResourceNameType.class) +public class MethodResourceInjectionTest { private File defaultFile; @@ -23,7 +29,8 @@ public class MethodResourceInjectionDemo { } @Test - public void defaultFile_MUST_BE_INJECTED_Correctly() { + public void givenResourceAnnotation_WhenSetter_ThenDependencyValid(){ assertNotNull(defaultFile); + assertEquals("namedFile.txt", defaultFile.getName()); } } diff --git a/dependency-injection/src/test/java/com/baeldung/resource/NamedResourceTest.java b/dependency-injection/src/test/java/com/baeldung/resource/NamedResourceTest.java index 8b218dfe98..6dbe77da39 100644 --- a/dependency-injection/src/test/java/com/baeldung/resource/NamedResourceTest.java +++ b/dependency-injection/src/test/java/com/baeldung/resource/NamedResourceTest.java @@ -1,6 +1,6 @@ package com.baeldung.resource; +import static org.junit.Assert.assertEquals; import static org.junit.Assert.assertNotNull; -import static org.junit.Assert.assertTrue; import java.io.File; @@ -10,18 +10,21 @@ import org.junit.Test; import org.junit.runner.RunWith; import org.springframework.test.context.ContextConfiguration; import org.springframework.test.context.junit4.SpringJUnit4ClassRunner; +import org.springframework.test.context.support.AnnotationConfigContextLoader; + +import com.baeldung.configuration.ApplicationContextTestResourceNameType; @RunWith(SpringJUnit4ClassRunner.class) -@ContextConfiguration(locations={ - "/applicationContextTest-@Resource-NameType.xml"}) +@ContextConfiguration(loader=AnnotationConfigContextLoader.class, + classes=ApplicationContextTestResourceNameType.class) public class NamedResourceTest { @Resource(name="namedFile") private File testFile; @Test - public void namedResource_MUST_FIND_SPECIFIED_File() { + public void givenResourceAnnotation_WhenOnField_THEN_DEPENDENCY_Found() { assertNotNull(testFile); - assertTrue(testFile.getName().equals("namedFile.txt")); + assertEquals("namedFile.txt", testFile.getName()); } } diff --git a/dependency-injection/src/test/java/com/baeldung/resource/QualifierResourceInjectionDemo.java b/dependency-injection/src/test/java/com/baeldung/resource/QualifierResourceInjectionDemo.java deleted file mode 100644 index 0aaa2085d5..0000000000 --- a/dependency-injection/src/test/java/com/baeldung/resource/QualifierResourceInjectionDemo.java +++ /dev/null @@ -1,35 +0,0 @@ -package com.baeldung.resource; -import static org.junit.Assert.assertNotNull; - -import java.io.File; - -import javax.annotation.Resource; - -import org.junit.Test; -import org.junit.runner.RunWith; -import org.springframework.beans.factory.annotation.Qualifier; -import org.springframework.test.context.ContextConfiguration; -import org.springframework.test.context.junit4.SpringJUnit4ClassRunner; - -@RunWith(SpringJUnit4ClassRunner.class) -@ContextConfiguration(locations={ - "/applicationContextTest-@Resource-Qualifier.xml"}) -public class QualifierResourceInjectionDemo { - - @Resource - private File defaultFile; - - @Resource - @Qualifier("namedFile") - private File namedFile; - - @Test - public void defaultFile_MUST_BE_Valid() { - assertNotNull(defaultFile); - } - - @Test - public void namedFile_MUST_BE_Valid() { - assertNotNull(namedFile); - } -} diff --git a/dependency-injection/src/test/java/com/baeldung/resource/QualifierResourceInjectionTest.java b/dependency-injection/src/test/java/com/baeldung/resource/QualifierResourceInjectionTest.java new file mode 100644 index 0000000000..9afa0cf4f9 --- /dev/null +++ b/dependency-injection/src/test/java/com/baeldung/resource/QualifierResourceInjectionTest.java @@ -0,0 +1,43 @@ +package com.baeldung.resource; +import static org.junit.Assert.assertEquals; +import static org.junit.Assert.assertNotNull; + +import java.io.File; + +import javax.annotation.Resource; + +import org.junit.Test; +import org.junit.runner.RunWith; +import org.springframework.beans.factory.annotation.Qualifier; +import org.springframework.test.context.ContextConfiguration; +import org.springframework.test.context.junit4.SpringJUnit4ClassRunner; +import org.springframework.test.context.support.AnnotationConfigContextLoader; + +import com.baeldung.configuration.ApplicationContextTestResourceQualifier; + +@RunWith(SpringJUnit4ClassRunner.class) +@ContextConfiguration( + loader=AnnotationConfigContextLoader.class, + classes=ApplicationContextTestResourceQualifier.class) +public class QualifierResourceInjectionTest { + + @Resource + @Qualifier("defaultFile") + private File dependency1; + + @Resource + @Qualifier("namedFile") + private File dependency2; + + @Test + public void givenResourceAnnotation_WhenField_ThenDependency1Valid(){ + assertNotNull(dependency1); + assertEquals("defaultFile.txt", dependency1.getName()); + } + + @Test + public void givenResourceQualifier_WhenField_ThenDependency2Valid(){ + assertNotNull(dependency2); + assertEquals("namedFile.txt", dependency2.getName()); + } +} diff --git a/dependency-injection/src/test/java/com/baeldung/resource/SetterResourceInjectionDemo.java b/dependency-injection/src/test/java/com/baeldung/resource/SetterResourceInjectionTest.java similarity index 51% rename from dependency-injection/src/test/java/com/baeldung/resource/SetterResourceInjectionDemo.java rename to dependency-injection/src/test/java/com/baeldung/resource/SetterResourceInjectionTest.java index 25dd5bb9ff..8a249fea4e 100644 --- a/dependency-injection/src/test/java/com/baeldung/resource/SetterResourceInjectionDemo.java +++ b/dependency-injection/src/test/java/com/baeldung/resource/SetterResourceInjectionTest.java @@ -1,4 +1,6 @@ package com.baeldung.resource; + +import static org.junit.Assert.assertEquals; import static org.junit.Assert.assertNotNull; import java.io.File; @@ -9,11 +11,14 @@ import org.junit.Test; import org.junit.runner.RunWith; import org.springframework.test.context.ContextConfiguration; import org.springframework.test.context.junit4.SpringJUnit4ClassRunner; +import org.springframework.test.context.support.AnnotationConfigContextLoader; + +import com.baeldung.configuration.ApplicationContextTestResourceNameType; @RunWith(SpringJUnit4ClassRunner.class) -@ContextConfiguration(locations={ - "/applicationContextTest-@Resource-NameType.xml"}) -public class SetterResourceInjectionDemo { +@ContextConfiguration(loader=AnnotationConfigContextLoader.class, + classes=ApplicationContextTestResourceNameType.class) +public class SetterResourceInjectionTest { private File defaultFile; @@ -23,7 +28,8 @@ public class SetterResourceInjectionDemo { } @Test - public void setter_MUST_INJECT_Resource() { + public void givenResourceAnnotation_WhenOnSetter_THEN_MUST_INJECT_Dependency() { assertNotNull(defaultFile); + assertEquals("namedFile.txt", defaultFile.getName()); } } From a2d20dabf96c2b5cf4e3237b1035451a9ab3b978 Mon Sep 17 00:00:00 2001 From: m0cacin0 Date: Thu, 30 Jun 2016 11:24:16 +0300 Subject: [PATCH 103/108] Create README.MD --- spring-security-custom-permission/README.MD | 1 + 1 file changed, 1 insertion(+) create mode 100644 spring-security-custom-permission/README.MD diff --git a/spring-security-custom-permission/README.MD b/spring-security-custom-permission/README.MD new file mode 100644 index 0000000000..8b13789179 --- /dev/null +++ b/spring-security-custom-permission/README.MD @@ -0,0 +1 @@ + From 0b674fbe01bc34da73ffd41178725124712b1084 Mon Sep 17 00:00:00 2001 From: m0cacin0 Date: Thu, 30 Jun 2016 11:24:49 +0300 Subject: [PATCH 104/108] Update README.MD --- spring-security-custom-permission/README.MD | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/spring-security-custom-permission/README.MD b/spring-security-custom-permission/README.MD index 8b13789179..2a87b46021 100644 --- a/spring-security-custom-permission/README.MD +++ b/spring-security-custom-permission/README.MD @@ -1 +1,2 @@ - +###The Course +The "REST With Spring" Classes: http://bit.ly/restwithspring From c786e113b0966141e3b34a0abc4f7d48a5bfc5b8 Mon Sep 17 00:00:00 2001 From: Zeger Hendrikse Date: Fri, 1 Jul 2016 02:07:08 +0200 Subject: [PATCH 105/108] Modified indentation --- spring-rest/pom.xml | 24 +++++++++++++----------- 1 file changed, 13 insertions(+), 11 deletions(-) diff --git a/spring-rest/pom.xml b/spring-rest/pom.xml index 00631d816c..09a50b9579 100644 --- a/spring-rest/pom.xml +++ b/spring-rest/pom.xml @@ -145,16 +145,18 @@ org.springframework spring-test - - com.google.protobuf - protobuf-java - 2.6.1 - - - com.esotericsoftware.kryo - kryo - 2.24.0 - + + + com.google.protobuf + protobuf-java + 2.6.1 + + + + com.esotericsoftware.kryo + kryo + 2.24.0 + @@ -263,4 +265,4 @@ - \ No newline at end of file + From 25cb16d4738e77c5ae36278bee19dd832a9bc686 Mon Sep 17 00:00:00 2001 From: Alex Theedom Date: Fri, 1 Jul 2016 18:24:17 +0100 Subject: [PATCH 106/108] Remove XML configuration. Remove gradle build file. Update Java Version in POM. Remove diagrams. --- dependency-injection/build.gradle | 43 ------------------ .../inject-qualifier-demo-classdiagram.png | Bin 43724 -> 0 bytes .../inject-qualifier-demo-classdiagram.xml | 1 - dependency-injection/pom.xml | 8 ++-- ...applicationContextTest-@Autowired-Name.xml | 12 ----- ...cationContextTest-@Autowired-Qualifier.xml | 12 ----- ...applicationContextTest-@Autowired-Type.xml | 10 ---- .../applicationContextTest-@Inject-Name.xml | 11 ----- ...plicationContextTest-@Inject-Qualifier.xml | 12 ----- .../applicationContextTest-@Inject-Type.xml | 10 ---- ...licationContextTest-@Resource-NameType.xml | 12 ----- ...icationContextTest-@Resource-Qualifier.xml | 16 ------- 12 files changed, 4 insertions(+), 143 deletions(-) delete mode 100644 dependency-injection/build.gradle delete mode 100644 dependency-injection/docs/inject-qualifier-demo-classdiagram.png delete mode 100644 dependency-injection/docs/inject-qualifier-demo-classdiagram.xml delete mode 100644 dependency-injection/src/test/resources/applicationContextTest-@Autowired-Name.xml delete mode 100644 dependency-injection/src/test/resources/applicationContextTest-@Autowired-Qualifier.xml delete mode 100644 dependency-injection/src/test/resources/applicationContextTest-@Autowired-Type.xml delete mode 100644 dependency-injection/src/test/resources/applicationContextTest-@Inject-Name.xml delete mode 100644 dependency-injection/src/test/resources/applicationContextTest-@Inject-Qualifier.xml delete mode 100644 dependency-injection/src/test/resources/applicationContextTest-@Inject-Type.xml delete mode 100644 dependency-injection/src/test/resources/applicationContextTest-@Resource-NameType.xml delete mode 100644 dependency-injection/src/test/resources/applicationContextTest-@Resource-Qualifier.xml diff --git a/dependency-injection/build.gradle b/dependency-injection/build.gradle deleted file mode 100644 index 968636154d..0000000000 --- a/dependency-injection/build.gradle +++ /dev/null @@ -1,43 +0,0 @@ -apply plugin: 'java' -apply plugin: 'eclipse' - -allprojects { - apply plugin: 'java' - sourceCompatibility = 1.6 - targetCompatibility = 1.6 -} - -repositories { - mavenCentral() -} - -sourceSets { - main { - resources.srcDirs = ["src/main/java","src/main/resources"] - } - test { - resources.srcDirs = ["src/main/java", "src/main/resources", "src/test/resources"] - } -} - -configurations { - compile -} - -test { - testLogging { - events 'started', 'passed' - } -} - -dependencies { - testCompile('junit:junit:4.11') - testCompile('org.mockito:mockito-all:1.10.19') - testCompile group: 'org.springframework', name: 'spring-test', version: '4.2.6.RELEASE' - testCompile group: 'org.springframework', name: 'spring-core', version: '4.2.6.RELEASE' - testCompile group: 'org.springframework', name: 'spring-beans', version: '4.2.6.RELEASE' - testCompile group: 'org.springframework', name: 'spring-context', version: '4.2.6.RELEASE' - testCompile group: 'javax.inject', name: 'javax.inject', version: '1' - - testRuntime('junit:junit:4.11') -} diff --git a/dependency-injection/docs/inject-qualifier-demo-classdiagram.png b/dependency-injection/docs/inject-qualifier-demo-classdiagram.png deleted file mode 100644 index 7366999ec163aaf6f0d2e817c62daea57f6ac5c0..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 43724 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 \ No newline at end of file diff --git a/dependency-injection/pom.xml b/dependency-injection/pom.xml index f87d061a53..8fdc22999f 100644 --- a/dependency-injection/pom.xml +++ b/dependency-injection/pom.xml @@ -9,8 +9,8 @@ xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xs 0.0.1-SNAPSHOT war - @Resource vs @Inject vs @Autowired - Accompanying the demonstration of the use of the annotations related to injection mechanisms, namely @Resource, @Inject, and @Autowired + Resource vs Inject vs Autowired + Accompanying the demonstration of the use of the annotations related to injection mechanisms, namely Resource, Inject, and Autowired @@ -56,8 +56,8 @@ xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xs maven-compiler-plugin - 1.6 - 1.6 + 1.8 + 1.8 diff --git a/dependency-injection/src/test/resources/applicationContextTest-@Autowired-Name.xml b/dependency-injection/src/test/resources/applicationContextTest-@Autowired-Name.xml deleted file mode 100644 index d7fe3abcb3..0000000000 --- a/dependency-injection/src/test/resources/applicationContextTest-@Autowired-Name.xml +++ /dev/null @@ -1,12 +0,0 @@ - - - - - - diff --git a/dependency-injection/src/test/resources/applicationContextTest-@Autowired-Qualifier.xml b/dependency-injection/src/test/resources/applicationContextTest-@Autowired-Qualifier.xml deleted file mode 100644 index d7fe3abcb3..0000000000 --- a/dependency-injection/src/test/resources/applicationContextTest-@Autowired-Qualifier.xml +++ /dev/null @@ -1,12 +0,0 @@ - - - - - - diff --git a/dependency-injection/src/test/resources/applicationContextTest-@Autowired-Type.xml b/dependency-injection/src/test/resources/applicationContextTest-@Autowired-Type.xml deleted file mode 100644 index c65b85ccf4..0000000000 --- a/dependency-injection/src/test/resources/applicationContextTest-@Autowired-Type.xml +++ /dev/null @@ -1,10 +0,0 @@ - - - - diff --git a/dependency-injection/src/test/resources/applicationContextTest-@Inject-Name.xml b/dependency-injection/src/test/resources/applicationContextTest-@Inject-Name.xml deleted file mode 100644 index 610e8687a7..0000000000 --- a/dependency-injection/src/test/resources/applicationContextTest-@Inject-Name.xml +++ /dev/null @@ -1,11 +0,0 @@ - - - - - diff --git a/dependency-injection/src/test/resources/applicationContextTest-@Inject-Qualifier.xml b/dependency-injection/src/test/resources/applicationContextTest-@Inject-Qualifier.xml deleted file mode 100644 index 627ec37914..0000000000 --- a/dependency-injection/src/test/resources/applicationContextTest-@Inject-Qualifier.xml +++ /dev/null @@ -1,12 +0,0 @@ - - - - - - diff --git a/dependency-injection/src/test/resources/applicationContextTest-@Inject-Type.xml b/dependency-injection/src/test/resources/applicationContextTest-@Inject-Type.xml deleted file mode 100644 index 405164e603..0000000000 --- a/dependency-injection/src/test/resources/applicationContextTest-@Inject-Type.xml +++ /dev/null @@ -1,10 +0,0 @@ - - - - diff --git a/dependency-injection/src/test/resources/applicationContextTest-@Resource-NameType.xml b/dependency-injection/src/test/resources/applicationContextTest-@Resource-NameType.xml deleted file mode 100644 index 82cbe97157..0000000000 --- a/dependency-injection/src/test/resources/applicationContextTest-@Resource-NameType.xml +++ /dev/null @@ -1,12 +0,0 @@ - - - - - - diff --git a/dependency-injection/src/test/resources/applicationContextTest-@Resource-Qualifier.xml b/dependency-injection/src/test/resources/applicationContextTest-@Resource-Qualifier.xml deleted file mode 100644 index 1680a6f66a..0000000000 --- a/dependency-injection/src/test/resources/applicationContextTest-@Resource-Qualifier.xml +++ /dev/null @@ -1,16 +0,0 @@ - - - - - - - - - - From da0cd158e789deb2ac1c15a798f6dc5f0d323839 Mon Sep 17 00:00:00 2001 From: Alex Theedom Date: Fri, 1 Jul 2016 18:48:43 +0100 Subject: [PATCH 107/108] Reformat code style --- dependency-injection/pom.xml | 150 +++++++++--------- .../autowired/FieldAutowiredNameTest.java | 20 ++- .../autowired/FieldAutowiredTest.java | 13 +- .../FieldQualifierAutowiredTest.java | 20 ++- .../ApplicationContextTestAutowiredName.java | 2 +- ...licationContextTestAutowiredQualifier.java | 25 ++- .../ApplicationContextTestAutowiredType.java | 3 +- .../ApplicationContextTestInjectName.java | 5 +- ...ApplicationContextTestInjectQualifier.java | 25 ++- .../ApplicationContextTestInjectType.java | 13 +- ...pplicationContextTestResourceNameType.java | 6 +- ...plicationContextTestResourceQualifier.java | 8 +- .../dependency/ArbitraryDependency.java | 2 +- .../inject/FieldByNameInjectTest.java | 22 ++- .../com/baeldung/inject/FieldInjectTest.java | 21 ++- .../inject/FieldQualifierInjectTest.java | 27 ++-- .../resource/FieldResourceInjectionTest.java | 21 ++- .../MethodByQualifierResourceTest.java | 56 ++++--- .../resource/MethodByTypeResourceTest.java | 20 ++- .../resource/MethodResourceInjectionTest.java | 22 ++- .../baeldung/resource/NamedResourceTest.java | 19 ++- .../QualifierResourceInjectionTest.java | 23 ++- .../resource/SetterResourceInjectionTest.java | 18 +-- 23 files changed, 258 insertions(+), 283 deletions(-) diff --git a/dependency-injection/pom.xml b/dependency-injection/pom.xml index 8fdc22999f..667ea87402 100644 --- a/dependency-injection/pom.xml +++ b/dependency-injection/pom.xml @@ -1,81 +1,83 @@ - + - 4.0.0 + 4.0.0 - com.baeldung - dependency-injection - 0.0.1-SNAPSHOT - war + com.baeldung + dependency-injection + 0.0.1-SNAPSHOT + war - Resource vs Inject vs Autowired - Accompanying the demonstration of the use of the annotations related to injection mechanisms, namely Resource, Inject, and Autowired + Resource vs Inject vs Autowired + Accompanying the demonstration of the use of the annotations related to injection mechanisms, namely + Resource, Inject, and Autowired + - - - junit - junit - 4.11 - test - - - org.mockito - mockito-all - 1.10.19 - - - org.springframework - spring-test - 4.2.6.RELEASE - - - org.springframework - spring-core - 4.2.6.RELEASE - - - org.springframework - spring-beans - 4.2.6.RELEASE - - - org.springframework - spring-context - 4.2.6.RELEASE - - - javax.inject - javax.inject - 1 - - + + + junit + junit + 4.11 + test + + + org.mockito + mockito-all + 1.10.19 + + + org.springframework + spring-test + 4.2.6.RELEASE + + + org.springframework + spring-core + 4.2.6.RELEASE + + + org.springframework + spring-beans + 4.2.6.RELEASE + + + org.springframework + spring-context + 4.2.6.RELEASE + + + javax.inject + javax.inject + 1 + + - - - - maven-compiler-plugin - - 1.8 - 1.8 - - - - org.apache.maven.plugins - maven-surefire-plugin - - - **/*Test.java - - - - - + + + + maven-compiler-plugin + + 1.8 + 1.8 + + + + org.apache.maven.plugins + maven-surefire-plugin + + + **/*Test.java + + + + + - - - java.net - https://maven.java.net/content/repositories/releases/ - - + + + java.net + https://maven.java.net/content/repositories/releases/ + + diff --git a/dependency-injection/src/test/java/com/baeldung/autowired/FieldAutowiredNameTest.java b/dependency-injection/src/test/java/com/baeldung/autowired/FieldAutowiredNameTest.java index 0455ca500c..cbdac68543 100644 --- a/dependency-injection/src/test/java/com/baeldung/autowired/FieldAutowiredNameTest.java +++ b/dependency-injection/src/test/java/com/baeldung/autowired/FieldAutowiredNameTest.java @@ -1,8 +1,7 @@ package com.baeldung.autowired; -import static org.junit.Assert.assertEquals; -import static org.junit.Assert.assertNotNull; - +import com.baeldung.configuration.ApplicationContextTestAutowiredName; +import com.baeldung.dependency.ArbitraryDependency; import org.junit.Test; import org.junit.runner.RunWith; import org.springframework.beans.factory.annotation.Autowired; @@ -10,22 +9,21 @@ import org.springframework.test.context.ContextConfiguration; import org.springframework.test.context.junit4.SpringJUnit4ClassRunner; import org.springframework.test.context.support.AnnotationConfigContextLoader; -import com.baeldung.configuration.ApplicationContextTestAutowiredName; -import com.baeldung.dependency.ArbitraryDependency; +import static org.junit.Assert.assertEquals; +import static org.junit.Assert.assertNotNull; @RunWith(SpringJUnit4ClassRunner.class) @ContextConfiguration( - loader=AnnotationConfigContextLoader.class, - classes=ApplicationContextTestAutowiredName.class) + loader = AnnotationConfigContextLoader.class, + classes = ApplicationContextTestAutowiredName.class) public class FieldAutowiredNameTest { @Autowired private ArbitraryDependency autowiredFieldDependency; @Test - public void givenAutowiredAnnotation_WhenOnField_ThenDependencyValid(){ + public void givenAutowiredAnnotation_WhenOnField_ThenDependencyValid() { assertNotNull(autowiredFieldDependency); - assertEquals("Arbitrary Dependency", - autowiredFieldDependency.toString()); - } + assertEquals("Arbitrary Dependency", autowiredFieldDependency.toString()); + } } diff --git a/dependency-injection/src/test/java/com/baeldung/autowired/FieldAutowiredTest.java b/dependency-injection/src/test/java/com/baeldung/autowired/FieldAutowiredTest.java index 811daebaf6..b736871f85 100644 --- a/dependency-injection/src/test/java/com/baeldung/autowired/FieldAutowiredTest.java +++ b/dependency-injection/src/test/java/com/baeldung/autowired/FieldAutowiredTest.java @@ -1,8 +1,7 @@ package com.baeldung.autowired; -import static org.junit.Assert.assertEquals; -import static org.junit.Assert.assertNotNull; - +import com.baeldung.configuration.ApplicationContextTestAutowiredType; +import com.baeldung.dependency.ArbitraryDependency; import org.junit.Test; import org.junit.runner.RunWith; import org.springframework.beans.factory.annotation.Autowired; @@ -10,13 +9,13 @@ import org.springframework.test.context.ContextConfiguration; import org.springframework.test.context.junit4.SpringJUnit4ClassRunner; import org.springframework.test.context.support.AnnotationConfigContextLoader; -import com.baeldung.configuration.ApplicationContextTestAutowiredType; -import com.baeldung.dependency.ArbitraryDependency; +import static org.junit.Assert.assertEquals; +import static org.junit.Assert.assertNotNull; @RunWith(SpringJUnit4ClassRunner.class) @ContextConfiguration( - loader=AnnotationConfigContextLoader.class, - classes=ApplicationContextTestAutowiredType.class) + loader = AnnotationConfigContextLoader.class, + classes = ApplicationContextTestAutowiredType.class) public class FieldAutowiredTest { @Autowired diff --git a/dependency-injection/src/test/java/com/baeldung/autowired/FieldQualifierAutowiredTest.java b/dependency-injection/src/test/java/com/baeldung/autowired/FieldQualifierAutowiredTest.java index d72d38e9a8..cbc3d56f67 100644 --- a/dependency-injection/src/test/java/com/baeldung/autowired/FieldQualifierAutowiredTest.java +++ b/dependency-injection/src/test/java/com/baeldung/autowired/FieldQualifierAutowiredTest.java @@ -1,8 +1,7 @@ package com.baeldung.autowired; -import static org.junit.Assert.assertEquals; -import static org.junit.Assert.assertNotNull; - +import com.baeldung.configuration.ApplicationContextTestAutowiredQualifier; +import com.baeldung.dependency.ArbitraryDependency; import org.junit.Test; import org.junit.runner.RunWith; import org.springframework.beans.factory.annotation.Autowired; @@ -11,13 +10,13 @@ import org.springframework.test.context.ContextConfiguration; import org.springframework.test.context.junit4.SpringJUnit4ClassRunner; import org.springframework.test.context.support.AnnotationConfigContextLoader; -import com.baeldung.configuration.ApplicationContextTestAutowiredQualifier; -import com.baeldung.dependency.ArbitraryDependency; +import static org.junit.Assert.assertEquals; +import static org.junit.Assert.assertNotNull; @RunWith(SpringJUnit4ClassRunner.class) @ContextConfiguration( - loader=AnnotationConfigContextLoader.class, - classes=ApplicationContextTestAutowiredQualifier.class) + loader = AnnotationConfigContextLoader.class, + classes = ApplicationContextTestAutowiredQualifier.class) public class FieldQualifierAutowiredTest { @Autowired @@ -29,15 +28,14 @@ public class FieldQualifierAutowiredTest { private ArbitraryDependency fieldDependency2; @Test - public void givenAutowiredQualifier_WhenOnField_ThenDep1Valid(){ + public void givenAutowiredQualifier_WhenOnField_ThenDep1Valid() { assertNotNull(fieldDependency1); assertEquals("Arbitrary Dependency", fieldDependency1.toString()); } @Test - public void givenAutowiredQualifier_WhenOnField_ThenDep2Valid(){ + public void givenAutowiredQualifier_WhenOnField_ThenDep2Valid() { assertNotNull(fieldDependency2); - assertEquals("Another Arbitrary Dependency", - fieldDependency2.toString()); + assertEquals("Another Arbitrary Dependency", fieldDependency2.toString()); } } diff --git a/dependency-injection/src/test/java/com/baeldung/configuration/ApplicationContextTestAutowiredName.java b/dependency-injection/src/test/java/com/baeldung/configuration/ApplicationContextTestAutowiredName.java index 41dfdb09e2..48c4495465 100644 --- a/dependency-injection/src/test/java/com/baeldung/configuration/ApplicationContextTestAutowiredName.java +++ b/dependency-injection/src/test/java/com/baeldung/configuration/ApplicationContextTestAutowiredName.java @@ -4,6 +4,6 @@ import org.springframework.context.annotation.ComponentScan; import org.springframework.context.annotation.Configuration; @Configuration -@ComponentScan(basePackages={"com.baeldung.dependency"}) +@ComponentScan(basePackages = {"com.baeldung.dependency"}) public class ApplicationContextTestAutowiredName { } diff --git a/dependency-injection/src/test/java/com/baeldung/configuration/ApplicationContextTestAutowiredQualifier.java b/dependency-injection/src/test/java/com/baeldung/configuration/ApplicationContextTestAutowiredQualifier.java index 138fbc46c5..ef6690ab4b 100644 --- a/dependency-injection/src/test/java/com/baeldung/configuration/ApplicationContextTestAutowiredQualifier.java +++ b/dependency-injection/src/test/java/com/baeldung/configuration/ApplicationContextTestAutowiredQualifier.java @@ -1,25 +1,24 @@ package com.baeldung.configuration; -import org.springframework.context.annotation.Bean; -import org.springframework.context.annotation.Configuration; - import com.baeldung.dependency.AnotherArbitraryDependency; import com.baeldung.dependency.ArbitraryDependency; +import org.springframework.context.annotation.Bean; +import org.springframework.context.annotation.Configuration; @Configuration public class ApplicationContextTestAutowiredQualifier { - @Bean - public ArbitraryDependency autowiredFieldDependency() { - ArbitraryDependency autowiredFieldDependency = new ArbitraryDependency(); + @Bean + public ArbitraryDependency autowiredFieldDependency() { + ArbitraryDependency autowiredFieldDependency = new ArbitraryDependency(); - return autowiredFieldDependency; - } + return autowiredFieldDependency; + } - @Bean - public ArbitraryDependency anotherAutowiredFieldDependency() { - ArbitraryDependency anotherAutowiredFieldDependency = new AnotherArbitraryDependency(); + @Bean + public ArbitraryDependency anotherAutowiredFieldDependency() { + ArbitraryDependency anotherAutowiredFieldDependency = new AnotherArbitraryDependency(); - return anotherAutowiredFieldDependency; - } + return anotherAutowiredFieldDependency; + } } diff --git a/dependency-injection/src/test/java/com/baeldung/configuration/ApplicationContextTestAutowiredType.java b/dependency-injection/src/test/java/com/baeldung/configuration/ApplicationContextTestAutowiredType.java index 703a8214b9..240bc466b7 100644 --- a/dependency-injection/src/test/java/com/baeldung/configuration/ApplicationContextTestAutowiredType.java +++ b/dependency-injection/src/test/java/com/baeldung/configuration/ApplicationContextTestAutowiredType.java @@ -1,10 +1,9 @@ package com.baeldung.configuration; +import com.baeldung.dependency.ArbitraryDependency; import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.Configuration; -import com.baeldung.dependency.ArbitraryDependency; - @Configuration public class ApplicationContextTestAutowiredType { diff --git a/dependency-injection/src/test/java/com/baeldung/configuration/ApplicationContextTestInjectName.java b/dependency-injection/src/test/java/com/baeldung/configuration/ApplicationContextTestInjectName.java index 7fe8306a39..851aa0b8ee 100644 --- a/dependency-injection/src/test/java/com/baeldung/configuration/ApplicationContextTestInjectName.java +++ b/dependency-injection/src/test/java/com/baeldung/configuration/ApplicationContextTestInjectName.java @@ -1,10 +1,9 @@ package com.baeldung.configuration; -import org.springframework.context.annotation.Bean; -import org.springframework.context.annotation.Configuration; - import com.baeldung.dependency.ArbitraryDependency; import com.baeldung.dependency.YetAnotherArbitraryDependency; +import org.springframework.context.annotation.Bean; +import org.springframework.context.annotation.Configuration; @Configuration public class ApplicationContextTestInjectName { diff --git a/dependency-injection/src/test/java/com/baeldung/configuration/ApplicationContextTestInjectQualifier.java b/dependency-injection/src/test/java/com/baeldung/configuration/ApplicationContextTestInjectQualifier.java index 557ba78aca..59af5a91bb 100644 --- a/dependency-injection/src/test/java/com/baeldung/configuration/ApplicationContextTestInjectQualifier.java +++ b/dependency-injection/src/test/java/com/baeldung/configuration/ApplicationContextTestInjectQualifier.java @@ -1,23 +1,22 @@ package com.baeldung.configuration; -import org.springframework.context.annotation.Bean; -import org.springframework.context.annotation.Configuration; - import com.baeldung.dependency.AnotherArbitraryDependency; import com.baeldung.dependency.ArbitraryDependency; +import org.springframework.context.annotation.Bean; +import org.springframework.context.annotation.Configuration; @Configuration public class ApplicationContextTestInjectQualifier { - @Bean - public ArbitraryDependency defaultFile() { - ArbitraryDependency defaultFile = new ArbitraryDependency(); - return defaultFile; - } + @Bean + public ArbitraryDependency defaultFile() { + ArbitraryDependency defaultFile = new ArbitraryDependency(); + return defaultFile; + } - @Bean - public ArbitraryDependency namedFile() { - ArbitraryDependency namedFile = new AnotherArbitraryDependency(); - return namedFile; - } + @Bean + public ArbitraryDependency namedFile() { + ArbitraryDependency namedFile = new AnotherArbitraryDependency(); + return namedFile; + } } diff --git a/dependency-injection/src/test/java/com/baeldung/configuration/ApplicationContextTestInjectType.java b/dependency-injection/src/test/java/com/baeldung/configuration/ApplicationContextTestInjectType.java index f84fa8f3a2..1e1f01f269 100644 --- a/dependency-injection/src/test/java/com/baeldung/configuration/ApplicationContextTestInjectType.java +++ b/dependency-injection/src/test/java/com/baeldung/configuration/ApplicationContextTestInjectType.java @@ -1,16 +1,15 @@ package com.baeldung.configuration; +import com.baeldung.dependency.ArbitraryDependency; import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.Configuration; -import com.baeldung.dependency.ArbitraryDependency; - @Configuration public class ApplicationContextTestInjectType { - @Bean - public ArbitraryDependency injectDependency() { - ArbitraryDependency injectDependency = new ArbitraryDependency(); - return injectDependency; - } + @Bean + public ArbitraryDependency injectDependency() { + ArbitraryDependency injectDependency = new ArbitraryDependency(); + return injectDependency; + } } diff --git a/dependency-injection/src/test/java/com/baeldung/configuration/ApplicationContextTestResourceNameType.java b/dependency-injection/src/test/java/com/baeldung/configuration/ApplicationContextTestResourceNameType.java index f53002feca..cb1b5981e8 100644 --- a/dependency-injection/src/test/java/com/baeldung/configuration/ApplicationContextTestResourceNameType.java +++ b/dependency-injection/src/test/java/com/baeldung/configuration/ApplicationContextTestResourceNameType.java @@ -1,14 +1,14 @@ package com.baeldung.configuration; -import java.io.File; - import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.Configuration; +import java.io.File; + @Configuration public class ApplicationContextTestResourceNameType { - @Bean(name="namedFile") + @Bean(name = "namedFile") public File namedFile() { File namedFile = new File("namedFile.txt"); return namedFile; diff --git a/dependency-injection/src/test/java/com/baeldung/configuration/ApplicationContextTestResourceQualifier.java b/dependency-injection/src/test/java/com/baeldung/configuration/ApplicationContextTestResourceQualifier.java index 18f5af4282..c9aa2f4a7d 100644 --- a/dependency-injection/src/test/java/com/baeldung/configuration/ApplicationContextTestResourceQualifier.java +++ b/dependency-injection/src/test/java/com/baeldung/configuration/ApplicationContextTestResourceQualifier.java @@ -1,20 +1,20 @@ package com.baeldung.configuration; -import java.io.File; - import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.Configuration; +import java.io.File; + @Configuration public class ApplicationContextTestResourceQualifier { - @Bean(name="defaultFile") + @Bean(name = "defaultFile") public File defaultFile() { File defaultFile = new File("defaultFile.txt"); return defaultFile; } - @Bean(name="namedFile") + @Bean(name = "namedFile") public File namedFile() { File namedFile = new File("namedFile.txt"); return namedFile; diff --git a/dependency-injection/src/test/java/com/baeldung/dependency/ArbitraryDependency.java b/dependency-injection/src/test/java/com/baeldung/dependency/ArbitraryDependency.java index d120e8daf7..3c90492d2c 100644 --- a/dependency-injection/src/test/java/com/baeldung/dependency/ArbitraryDependency.java +++ b/dependency-injection/src/test/java/com/baeldung/dependency/ArbitraryDependency.java @@ -2,7 +2,7 @@ package com.baeldung.dependency; import org.springframework.stereotype.Component; -@Component(value="autowiredFieldDependency") +@Component(value = "autowiredFieldDependency") public class ArbitraryDependency { private final String label = "Arbitrary Dependency"; diff --git a/dependency-injection/src/test/java/com/baeldung/inject/FieldByNameInjectTest.java b/dependency-injection/src/test/java/com/baeldung/inject/FieldByNameInjectTest.java index 0f0429ea94..665c9f1ddc 100644 --- a/dependency-injection/src/test/java/com/baeldung/inject/FieldByNameInjectTest.java +++ b/dependency-injection/src/test/java/com/baeldung/inject/FieldByNameInjectTest.java @@ -1,24 +1,23 @@ package com.baeldung.inject; -import static org.junit.Assert.assertEquals; -import static org.junit.Assert.assertNotNull; - -import javax.inject.Inject; -import javax.inject.Named; - +import com.baeldung.configuration.ApplicationContextTestInjectName; +import com.baeldung.dependency.ArbitraryDependency; import org.junit.Test; import org.junit.runner.RunWith; import org.springframework.test.context.ContextConfiguration; import org.springframework.test.context.junit4.SpringJUnit4ClassRunner; import org.springframework.test.context.support.AnnotationConfigContextLoader; -import com.baeldung.configuration.ApplicationContextTestInjectName; -import com.baeldung.dependency.ArbitraryDependency; +import javax.inject.Inject; +import javax.inject.Named; + +import static org.junit.Assert.assertEquals; +import static org.junit.Assert.assertNotNull; @RunWith(SpringJUnit4ClassRunner.class) @ContextConfiguration( - loader=AnnotationConfigContextLoader.class, - classes=ApplicationContextTestInjectName.class) + loader = AnnotationConfigContextLoader.class, + classes = ApplicationContextTestInjectName.class) public class FieldByNameInjectTest { @Inject @@ -28,7 +27,6 @@ public class FieldByNameInjectTest { @Test public void givenInjectQualifier_WhenSetOnField_ThenDependencyValid() { assertNotNull(yetAnotherFieldInjectDependency); - assertEquals("Yet Another Arbitrary Dependency", - yetAnotherFieldInjectDependency.toString()); + assertEquals("Yet Another Arbitrary Dependency", yetAnotherFieldInjectDependency.toString()); } } diff --git a/dependency-injection/src/test/java/com/baeldung/inject/FieldInjectTest.java b/dependency-injection/src/test/java/com/baeldung/inject/FieldInjectTest.java index 7cbba63113..7561c39e76 100644 --- a/dependency-injection/src/test/java/com/baeldung/inject/FieldInjectTest.java +++ b/dependency-injection/src/test/java/com/baeldung/inject/FieldInjectTest.java @@ -1,31 +1,30 @@ package com.baeldung.inject; -import static org.junit.Assert.assertEquals; -import static org.junit.Assert.assertNotNull; - -import javax.inject.Inject; +import com.baeldung.configuration.ApplicationContextTestInjectType; +import com.baeldung.dependency.ArbitraryDependency; import org.junit.Test; import org.junit.runner.RunWith; import org.springframework.test.context.ContextConfiguration; import org.springframework.test.context.junit4.SpringJUnit4ClassRunner; import org.springframework.test.context.support.AnnotationConfigContextLoader; -import com.baeldung.configuration.ApplicationContextTestInjectType; -import com.baeldung.dependency.ArbitraryDependency; +import javax.inject.Inject; + +import static org.junit.Assert.assertEquals; +import static org.junit.Assert.assertNotNull; @RunWith(SpringJUnit4ClassRunner.class) @ContextConfiguration( - loader=AnnotationConfigContextLoader.class, - classes=ApplicationContextTestInjectType.class) + loader = AnnotationConfigContextLoader.class, + classes = ApplicationContextTestInjectType.class) public class FieldInjectTest { @Inject private ArbitraryDependency fieldInjectDependency; @Test - public void givenInjectAnnotation_WhenOnField_ThenValidDependency(){ + public void givenInjectAnnotation_WhenOnField_ThenValidDependency() { assertNotNull(fieldInjectDependency); - assertEquals("Arbitrary Dependency", - fieldInjectDependency.toString()); + assertEquals("Arbitrary Dependency", fieldInjectDependency.toString()); } } diff --git a/dependency-injection/src/test/java/com/baeldung/inject/FieldQualifierInjectTest.java b/dependency-injection/src/test/java/com/baeldung/inject/FieldQualifierInjectTest.java index f0fc5866a3..7e5f7e7453 100644 --- a/dependency-injection/src/test/java/com/baeldung/inject/FieldQualifierInjectTest.java +++ b/dependency-injection/src/test/java/com/baeldung/inject/FieldQualifierInjectTest.java @@ -1,10 +1,7 @@ package com.baeldung.inject; -import static org.junit.Assert.assertEquals; -import static org.junit.Assert.assertNotNull; - -import javax.inject.Inject; - +import com.baeldung.configuration.ApplicationContextTestInjectQualifier; +import com.baeldung.dependency.ArbitraryDependency; import org.junit.Test; import org.junit.runner.RunWith; import org.springframework.beans.factory.annotation.Qualifier; @@ -12,12 +9,14 @@ import org.springframework.test.context.ContextConfiguration; import org.springframework.test.context.junit4.SpringJUnit4ClassRunner; import org.springframework.test.context.support.AnnotationConfigContextLoader; -import com.baeldung.configuration.ApplicationContextTestInjectQualifier; -import com.baeldung.dependency.ArbitraryDependency; +import javax.inject.Inject; + +import static org.junit.Assert.assertEquals; +import static org.junit.Assert.assertNotNull; @RunWith(SpringJUnit4ClassRunner.class) -@ContextConfiguration(loader=AnnotationConfigContextLoader.class, - classes=ApplicationContextTestInjectQualifier.class) +@ContextConfiguration(loader = AnnotationConfigContextLoader.class, + classes = ApplicationContextTestInjectQualifier.class) public class FieldQualifierInjectTest { @Inject @@ -29,16 +28,14 @@ public class FieldQualifierInjectTest { private ArbitraryDependency namedDependency; @Test - public void givenInjectQualifier_WhenOnField_ThenDefaultFileValid(){ + public void givenInjectQualifier_WhenOnField_ThenDefaultFileValid() { assertNotNull(defaultDependency); - assertEquals("Arbitrary Dependency", - defaultDependency.toString()); + assertEquals("Arbitrary Dependency", defaultDependency.toString()); } @Test - public void givenInjectQualifier_WhenOnField_ThenNamedFileValid(){ + public void givenInjectQualifier_WhenOnField_ThenNamedFileValid() { assertNotNull(defaultDependency); - assertEquals("Another Arbitrary Dependency", - namedDependency.toString()); + assertEquals("Another Arbitrary Dependency", namedDependency.toString()); } } diff --git a/dependency-injection/src/test/java/com/baeldung/resource/FieldResourceInjectionTest.java b/dependency-injection/src/test/java/com/baeldung/resource/FieldResourceInjectionTest.java index ed73ae8d59..ef7e7b0aeb 100644 --- a/dependency-injection/src/test/java/com/baeldung/resource/FieldResourceInjectionTest.java +++ b/dependency-injection/src/test/java/com/baeldung/resource/FieldResourceInjectionTest.java @@ -1,30 +1,29 @@ package com.baeldung.resource; -import static org.junit.Assert.assertEquals; -import static org.junit.Assert.assertNotNull; - -import java.io.File; - -import javax.annotation.Resource; +import com.baeldung.configuration.ApplicationContextTestResourceNameType; import org.junit.Test; import org.junit.runner.RunWith; import org.springframework.test.context.ContextConfiguration; import org.springframework.test.context.junit4.SpringJUnit4ClassRunner; import org.springframework.test.context.support.AnnotationConfigContextLoader; -import com.baeldung.configuration.ApplicationContextTestResourceNameType; +import javax.annotation.Resource; +import java.io.File; + +import static org.junit.Assert.assertEquals; +import static org.junit.Assert.assertNotNull; @RunWith(SpringJUnit4ClassRunner.class) @ContextConfiguration( - loader=AnnotationConfigContextLoader.class, - classes=ApplicationContextTestResourceNameType.class) + loader = AnnotationConfigContextLoader.class, + classes = ApplicationContextTestResourceNameType.class) public class FieldResourceInjectionTest { - @Resource(name="namedFile") + @Resource(name = "namedFile") private File defaultFile; @Test - public void givenResourceAnnotation_WhenOnField_ThenDependencyValid(){ + public void givenResourceAnnotation_WhenOnField_ThenDependencyValid() { assertNotNull(defaultFile); assertEquals("namedFile.txt", defaultFile.getName()); } diff --git a/dependency-injection/src/test/java/com/baeldung/resource/MethodByQualifierResourceTest.java b/dependency-injection/src/test/java/com/baeldung/resource/MethodByQualifierResourceTest.java index e512b6fe0a..95e9fc0bd5 100644 --- a/dependency-injection/src/test/java/com/baeldung/resource/MethodByQualifierResourceTest.java +++ b/dependency-injection/src/test/java/com/baeldung/resource/MethodByQualifierResourceTest.java @@ -1,12 +1,6 @@ package com.baeldung.resource; -import static org.junit.Assert.assertEquals; -import static org.junit.Assert.assertNotNull; - -import java.io.File; - -import javax.annotation.Resource; - +import com.baeldung.configuration.ApplicationContextTestResourceQualifier; import org.junit.Test; import org.junit.runner.RunWith; import org.springframework.beans.factory.annotation.Qualifier; @@ -14,34 +8,38 @@ import org.springframework.test.context.ContextConfiguration; import org.springframework.test.context.junit4.SpringJUnit4ClassRunner; import org.springframework.test.context.support.AnnotationConfigContextLoader; -import com.baeldung.configuration.ApplicationContextTestResourceQualifier; +import javax.annotation.Resource; +import java.io.File; + +import static org.junit.Assert.assertEquals; +import static org.junit.Assert.assertNotNull; @RunWith(SpringJUnit4ClassRunner.class) @ContextConfiguration( - loader=AnnotationConfigContextLoader.class, - classes=ApplicationContextTestResourceQualifier.class) + loader = AnnotationConfigContextLoader.class, + classes = ApplicationContextTestResourceQualifier.class) public class MethodByQualifierResourceTest { - private File arbDependency; - private File anotherArbDependency; + private File arbDependency; + private File anotherArbDependency; - @Test - public void givenResourceQualifier_WhenSetter_ThenValidDependencies(){ - assertNotNull(arbDependency); - assertEquals("namedFile.txt", arbDependency.getName()); - assertNotNull(anotherArbDependency); - assertEquals("defaultFile.txt", anotherArbDependency.getName()); - } + @Test + public void givenResourceQualifier_WhenSetter_ThenValidDependencies() { + assertNotNull(arbDependency); + assertEquals("namedFile.txt", arbDependency.getName()); + assertNotNull(anotherArbDependency); + assertEquals("defaultFile.txt", anotherArbDependency.getName()); + } - @Resource - @Qualifier("namedFile") - public void setArbDependency(File arbDependency) { - this.arbDependency = arbDependency; - } + @Resource + @Qualifier("namedFile") + public void setArbDependency(File arbDependency) { + this.arbDependency = arbDependency; + } - @Resource - @Qualifier("defaultFile") - public void setAnotherArbDependency(File anotherArbDependency) { - this.anotherArbDependency = anotherArbDependency; - } + @Resource + @Qualifier("defaultFile") + public void setAnotherArbDependency(File anotherArbDependency) { + this.anotherArbDependency = anotherArbDependency; + } } diff --git a/dependency-injection/src/test/java/com/baeldung/resource/MethodByTypeResourceTest.java b/dependency-injection/src/test/java/com/baeldung/resource/MethodByTypeResourceTest.java index edcf9b12ea..ad9a9a4fb6 100644 --- a/dependency-injection/src/test/java/com/baeldung/resource/MethodByTypeResourceTest.java +++ b/dependency-injection/src/test/java/com/baeldung/resource/MethodByTypeResourceTest.java @@ -1,24 +1,22 @@ package com.baeldung.resource; -import static org.junit.Assert.assertEquals; -import static org.junit.Assert.assertNotNull; - -import java.io.File; - -import javax.annotation.Resource; - +import com.baeldung.configuration.ApplicationContextTestResourceNameType; import org.junit.Test; import org.junit.runner.RunWith; import org.springframework.test.context.ContextConfiguration; import org.springframework.test.context.junit4.SpringJUnit4ClassRunner; import org.springframework.test.context.support.AnnotationConfigContextLoader; -import com.baeldung.configuration.ApplicationContextTestResourceNameType; +import javax.annotation.Resource; +import java.io.File; + +import static org.junit.Assert.assertEquals; +import static org.junit.Assert.assertNotNull; @RunWith(SpringJUnit4ClassRunner.class) @ContextConfiguration( - loader=AnnotationConfigContextLoader.class, - classes=ApplicationContextTestResourceNameType.class) + loader = AnnotationConfigContextLoader.class, + classes = ApplicationContextTestResourceNameType.class) public class MethodByTypeResourceTest { private File defaultFile; @@ -29,7 +27,7 @@ public class MethodByTypeResourceTest { } @Test - public void givenResourceAnnotation_WhenSetter_ThenValidDependency(){ + public void givenResourceAnnotation_WhenSetter_ThenValidDependency() { assertNotNull(defaultFile); assertEquals("namedFile.txt", defaultFile.getName()); } diff --git a/dependency-injection/src/test/java/com/baeldung/resource/MethodResourceInjectionTest.java b/dependency-injection/src/test/java/com/baeldung/resource/MethodResourceInjectionTest.java index 38e9db8737..1622d8896c 100644 --- a/dependency-injection/src/test/java/com/baeldung/resource/MethodResourceInjectionTest.java +++ b/dependency-injection/src/test/java/com/baeldung/resource/MethodResourceInjectionTest.java @@ -1,35 +1,33 @@ package com.baeldung.resource; -import static org.junit.Assert.assertEquals; -import static org.junit.Assert.assertNotNull; - -import java.io.File; - -import javax.annotation.Resource; - +import com.baeldung.configuration.ApplicationContextTestResourceNameType; import org.junit.Test; import org.junit.runner.RunWith; import org.springframework.test.context.ContextConfiguration; import org.springframework.test.context.junit4.SpringJUnit4ClassRunner; import org.springframework.test.context.support.AnnotationConfigContextLoader; -import com.baeldung.configuration.ApplicationContextTestResourceNameType; +import javax.annotation.Resource; +import java.io.File; + +import static org.junit.Assert.assertEquals; +import static org.junit.Assert.assertNotNull; @RunWith(SpringJUnit4ClassRunner.class) @ContextConfiguration( - loader=AnnotationConfigContextLoader.class, - classes=ApplicationContextTestResourceNameType.class) + loader = AnnotationConfigContextLoader.class, + classes = ApplicationContextTestResourceNameType.class) public class MethodResourceInjectionTest { private File defaultFile; - @Resource(name="namedFile") + @Resource(name = "namedFile") protected void setDefaultFile(File defaultFile) { this.defaultFile = defaultFile; } @Test - public void givenResourceAnnotation_WhenSetter_ThenDependencyValid(){ + public void givenResourceAnnotation_WhenSetter_ThenDependencyValid() { assertNotNull(defaultFile); assertEquals("namedFile.txt", defaultFile.getName()); } diff --git a/dependency-injection/src/test/java/com/baeldung/resource/NamedResourceTest.java b/dependency-injection/src/test/java/com/baeldung/resource/NamedResourceTest.java index 6dbe77da39..da104ecaae 100644 --- a/dependency-injection/src/test/java/com/baeldung/resource/NamedResourceTest.java +++ b/dependency-injection/src/test/java/com/baeldung/resource/NamedResourceTest.java @@ -1,25 +1,24 @@ package com.baeldung.resource; -import static org.junit.Assert.assertEquals; -import static org.junit.Assert.assertNotNull; - -import java.io.File; - -import javax.annotation.Resource; +import com.baeldung.configuration.ApplicationContextTestResourceNameType; import org.junit.Test; import org.junit.runner.RunWith; import org.springframework.test.context.ContextConfiguration; import org.springframework.test.context.junit4.SpringJUnit4ClassRunner; import org.springframework.test.context.support.AnnotationConfigContextLoader; -import com.baeldung.configuration.ApplicationContextTestResourceNameType; +import javax.annotation.Resource; +import java.io.File; + +import static org.junit.Assert.assertEquals; +import static org.junit.Assert.assertNotNull; @RunWith(SpringJUnit4ClassRunner.class) -@ContextConfiguration(loader=AnnotationConfigContextLoader.class, - classes=ApplicationContextTestResourceNameType.class) +@ContextConfiguration(loader = AnnotationConfigContextLoader.class, + classes = ApplicationContextTestResourceNameType.class) public class NamedResourceTest { - @Resource(name="namedFile") + @Resource(name = "namedFile") private File testFile; @Test diff --git a/dependency-injection/src/test/java/com/baeldung/resource/QualifierResourceInjectionTest.java b/dependency-injection/src/test/java/com/baeldung/resource/QualifierResourceInjectionTest.java index 9afa0cf4f9..024c8e2bbe 100644 --- a/dependency-injection/src/test/java/com/baeldung/resource/QualifierResourceInjectionTest.java +++ b/dependency-injection/src/test/java/com/baeldung/resource/QualifierResourceInjectionTest.java @@ -1,11 +1,6 @@ package com.baeldung.resource; -import static org.junit.Assert.assertEquals; -import static org.junit.Assert.assertNotNull; - -import java.io.File; - -import javax.annotation.Resource; +import com.baeldung.configuration.ApplicationContextTestResourceQualifier; import org.junit.Test; import org.junit.runner.RunWith; import org.springframework.beans.factory.annotation.Qualifier; @@ -13,30 +8,34 @@ import org.springframework.test.context.ContextConfiguration; import org.springframework.test.context.junit4.SpringJUnit4ClassRunner; import org.springframework.test.context.support.AnnotationConfigContextLoader; -import com.baeldung.configuration.ApplicationContextTestResourceQualifier; +import javax.annotation.Resource; +import java.io.File; + +import static org.junit.Assert.assertEquals; +import static org.junit.Assert.assertNotNull; @RunWith(SpringJUnit4ClassRunner.class) @ContextConfiguration( - loader=AnnotationConfigContextLoader.class, - classes=ApplicationContextTestResourceQualifier.class) + loader = AnnotationConfigContextLoader.class, + classes = ApplicationContextTestResourceQualifier.class) public class QualifierResourceInjectionTest { @Resource @Qualifier("defaultFile") private File dependency1; - + @Resource @Qualifier("namedFile") private File dependency2; @Test - public void givenResourceAnnotation_WhenField_ThenDependency1Valid(){ + public void givenResourceAnnotation_WhenField_ThenDependency1Valid() { assertNotNull(dependency1); assertEquals("defaultFile.txt", dependency1.getName()); } @Test - public void givenResourceQualifier_WhenField_ThenDependency2Valid(){ + public void givenResourceQualifier_WhenField_ThenDependency2Valid() { assertNotNull(dependency2); assertEquals("namedFile.txt", dependency2.getName()); } diff --git a/dependency-injection/src/test/java/com/baeldung/resource/SetterResourceInjectionTest.java b/dependency-injection/src/test/java/com/baeldung/resource/SetterResourceInjectionTest.java index 8a249fea4e..aa7cfda975 100644 --- a/dependency-injection/src/test/java/com/baeldung/resource/SetterResourceInjectionTest.java +++ b/dependency-injection/src/test/java/com/baeldung/resource/SetterResourceInjectionTest.java @@ -1,23 +1,21 @@ package com.baeldung.resource; -import static org.junit.Assert.assertEquals; -import static org.junit.Assert.assertNotNull; - -import java.io.File; - -import javax.annotation.Resource; - +import com.baeldung.configuration.ApplicationContextTestResourceNameType; import org.junit.Test; import org.junit.runner.RunWith; import org.springframework.test.context.ContextConfiguration; import org.springframework.test.context.junit4.SpringJUnit4ClassRunner; import org.springframework.test.context.support.AnnotationConfigContextLoader; -import com.baeldung.configuration.ApplicationContextTestResourceNameType; +import javax.annotation.Resource; +import java.io.File; + +import static org.junit.Assert.assertEquals; +import static org.junit.Assert.assertNotNull; @RunWith(SpringJUnit4ClassRunner.class) -@ContextConfiguration(loader=AnnotationConfigContextLoader.class, - classes=ApplicationContextTestResourceNameType.class) +@ContextConfiguration(loader = AnnotationConfigContextLoader.class, + classes = ApplicationContextTestResourceNameType.class) public class SetterResourceInjectionTest { private File defaultFile; From f78ba6566473b1c09449e0260228b50d2497e212 Mon Sep 17 00:00:00 2001 From: Alex Theedom Date: Fri, 1 Jul 2016 18:57:58 +0100 Subject: [PATCH 108/108] Put code under test in own package --- .../configuration/ApplicationContextTestAutowiredName.java | 0 .../configuration/ApplicationContextTestAutowiredQualifier.java | 0 .../configuration/ApplicationContextTestAutowiredType.java | 0 .../baeldung/configuration/ApplicationContextTestInjectName.java | 0 .../configuration/ApplicationContextTestInjectQualifier.java | 0 .../baeldung/configuration/ApplicationContextTestInjectType.java | 0 .../configuration/ApplicationContextTestResourceNameType.java | 0 .../configuration/ApplicationContextTestResourceQualifier.java | 0 .../java/com/baeldung/dependency/AnotherArbitraryDependency.java | 0 .../java/com/baeldung/dependency/ArbitraryDependency.java | 0 .../com/baeldung/dependency/YetAnotherArbitraryDependency.java | 0 11 files changed, 0 insertions(+), 0 deletions(-) rename dependency-injection/src/{test => main}/java/com/baeldung/configuration/ApplicationContextTestAutowiredName.java (100%) rename dependency-injection/src/{test => main}/java/com/baeldung/configuration/ApplicationContextTestAutowiredQualifier.java (100%) rename dependency-injection/src/{test => main}/java/com/baeldung/configuration/ApplicationContextTestAutowiredType.java (100%) rename dependency-injection/src/{test => main}/java/com/baeldung/configuration/ApplicationContextTestInjectName.java (100%) rename dependency-injection/src/{test => main}/java/com/baeldung/configuration/ApplicationContextTestInjectQualifier.java (100%) rename dependency-injection/src/{test => main}/java/com/baeldung/configuration/ApplicationContextTestInjectType.java (100%) rename dependency-injection/src/{test => main}/java/com/baeldung/configuration/ApplicationContextTestResourceNameType.java (100%) rename dependency-injection/src/{test => main}/java/com/baeldung/configuration/ApplicationContextTestResourceQualifier.java (100%) rename dependency-injection/src/{test => main}/java/com/baeldung/dependency/AnotherArbitraryDependency.java (100%) rename dependency-injection/src/{test => main}/java/com/baeldung/dependency/ArbitraryDependency.java (100%) rename dependency-injection/src/{test => main}/java/com/baeldung/dependency/YetAnotherArbitraryDependency.java (100%) diff --git a/dependency-injection/src/test/java/com/baeldung/configuration/ApplicationContextTestAutowiredName.java b/dependency-injection/src/main/java/com/baeldung/configuration/ApplicationContextTestAutowiredName.java similarity index 100% rename from dependency-injection/src/test/java/com/baeldung/configuration/ApplicationContextTestAutowiredName.java rename to dependency-injection/src/main/java/com/baeldung/configuration/ApplicationContextTestAutowiredName.java diff --git a/dependency-injection/src/test/java/com/baeldung/configuration/ApplicationContextTestAutowiredQualifier.java b/dependency-injection/src/main/java/com/baeldung/configuration/ApplicationContextTestAutowiredQualifier.java similarity index 100% rename from dependency-injection/src/test/java/com/baeldung/configuration/ApplicationContextTestAutowiredQualifier.java rename to dependency-injection/src/main/java/com/baeldung/configuration/ApplicationContextTestAutowiredQualifier.java diff --git a/dependency-injection/src/test/java/com/baeldung/configuration/ApplicationContextTestAutowiredType.java b/dependency-injection/src/main/java/com/baeldung/configuration/ApplicationContextTestAutowiredType.java similarity index 100% rename from dependency-injection/src/test/java/com/baeldung/configuration/ApplicationContextTestAutowiredType.java rename to dependency-injection/src/main/java/com/baeldung/configuration/ApplicationContextTestAutowiredType.java diff --git a/dependency-injection/src/test/java/com/baeldung/configuration/ApplicationContextTestInjectName.java b/dependency-injection/src/main/java/com/baeldung/configuration/ApplicationContextTestInjectName.java similarity index 100% rename from dependency-injection/src/test/java/com/baeldung/configuration/ApplicationContextTestInjectName.java rename to dependency-injection/src/main/java/com/baeldung/configuration/ApplicationContextTestInjectName.java diff --git a/dependency-injection/src/test/java/com/baeldung/configuration/ApplicationContextTestInjectQualifier.java b/dependency-injection/src/main/java/com/baeldung/configuration/ApplicationContextTestInjectQualifier.java similarity index 100% rename from dependency-injection/src/test/java/com/baeldung/configuration/ApplicationContextTestInjectQualifier.java rename to dependency-injection/src/main/java/com/baeldung/configuration/ApplicationContextTestInjectQualifier.java diff --git a/dependency-injection/src/test/java/com/baeldung/configuration/ApplicationContextTestInjectType.java b/dependency-injection/src/main/java/com/baeldung/configuration/ApplicationContextTestInjectType.java similarity index 100% rename from dependency-injection/src/test/java/com/baeldung/configuration/ApplicationContextTestInjectType.java rename to dependency-injection/src/main/java/com/baeldung/configuration/ApplicationContextTestInjectType.java diff --git a/dependency-injection/src/test/java/com/baeldung/configuration/ApplicationContextTestResourceNameType.java b/dependency-injection/src/main/java/com/baeldung/configuration/ApplicationContextTestResourceNameType.java similarity index 100% rename from dependency-injection/src/test/java/com/baeldung/configuration/ApplicationContextTestResourceNameType.java rename to dependency-injection/src/main/java/com/baeldung/configuration/ApplicationContextTestResourceNameType.java diff --git a/dependency-injection/src/test/java/com/baeldung/configuration/ApplicationContextTestResourceQualifier.java b/dependency-injection/src/main/java/com/baeldung/configuration/ApplicationContextTestResourceQualifier.java similarity index 100% rename from dependency-injection/src/test/java/com/baeldung/configuration/ApplicationContextTestResourceQualifier.java rename to dependency-injection/src/main/java/com/baeldung/configuration/ApplicationContextTestResourceQualifier.java diff --git a/dependency-injection/src/test/java/com/baeldung/dependency/AnotherArbitraryDependency.java b/dependency-injection/src/main/java/com/baeldung/dependency/AnotherArbitraryDependency.java similarity index 100% rename from dependency-injection/src/test/java/com/baeldung/dependency/AnotherArbitraryDependency.java rename to dependency-injection/src/main/java/com/baeldung/dependency/AnotherArbitraryDependency.java diff --git a/dependency-injection/src/test/java/com/baeldung/dependency/ArbitraryDependency.java b/dependency-injection/src/main/java/com/baeldung/dependency/ArbitraryDependency.java similarity index 100% rename from dependency-injection/src/test/java/com/baeldung/dependency/ArbitraryDependency.java rename to dependency-injection/src/main/java/com/baeldung/dependency/ArbitraryDependency.java diff --git a/dependency-injection/src/test/java/com/baeldung/dependency/YetAnotherArbitraryDependency.java b/dependency-injection/src/main/java/com/baeldung/dependency/YetAnotherArbitraryDependency.java similarity index 100% rename from dependency-injection/src/test/java/com/baeldung/dependency/YetAnotherArbitraryDependency.java rename to dependency-injection/src/main/java/com/baeldung/dependency/YetAnotherArbitraryDependency.java