first commit

This commit is contained in:
jackdaw 2016-11-15 11:13:55 +09:00
commit a70dd7aadf
28 changed files with 708 additions and 0 deletions

72
.gitignore vendored Normal file
View File

@ -0,0 +1,72 @@
# Created by .ignore support plugin (hsz.mobi)
### Maven template
target/
pom.xml.tag
pom.xml.releaseBackup
pom.xml.versionsBackup
pom.xml.next
release.properties
dependency-reduced-pom.xml
buildNumber.properties
.mvn/timing.properties
### Java template
*.class
# Mobile Tools for Java (J2ME)
.mtj.tmp/
# Package Files #
*.jar
*.war
*.ear
# virtual machine crash logs, see http://www.java.com/en/download/help/error_hotspot.xml
hs_err_pid*
### JetBrains template
# Covers JetBrains IDEs: IntelliJ, RubyMine, PhpStorm, AppCode, PyCharm, CLion, Android Studio and Webstorm
# Reference: https://intellij-support.jetbrains.com/hc/en-us/articles/206544839
# User-specific stuff:
.idea/workspace.xml
.idea/tasks.xml
.idea/dictionaries
.idea/vcs.xml
.idea/jsLibraryMappings.xml
# Sensitive or high-churn files:
.idea/dataSources.ids
.idea/dataSources.xml
.idea/dataSources.local.xml
.idea/sqlDataSources.xml
.idea/dynamic.xml
.idea/uiDesigner.xml
# Gradle:
.idea/gradle.xml
.idea/libraries
# Mongo Explorer plugin:
.idea/mongoSettings.xml
## File-based project format:
*.iws
## Plugin-specific files:
# IntelliJ
/out/
# mpeltonen/sbt-idea plugin
.idea_modules/
# JIRA plugin
atlassian-ide-plugin.xml
# Crashlytics plugin (for Android Studio and IntelliJ)
com_crashlytics_export_strings.xml
crashlytics.properties
crashlytics-build.properties
fabric.properties
.gitignore 제거할 예정
.idea/ 제거할 예정

77
pom.xml Normal file
View File

@ -0,0 +1,77 @@
<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<groupId>com.loafle</groupId>
<artifactId>bridge</artifactId>
<version>1.0-SNAPSHOT</version>
<parent>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-parent</artifactId>
<version>1.4.2.RELEASE</version>
</parent>
<properties>
<java.version>1.8</java.version>
</properties>
<dependencies>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-data-rest</artifactId>
<exclusions>
<exclusion>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-tomcat</artifactId>
</exclusion>
</exclusions>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-data-jpa</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-actuator</artifactId>
</dependency>
<dependency>
<groupId>com.h2database</groupId>
<artifactId>h2</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-jetty</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-test</artifactId>
<scope>test</scope>
</dependency>
</dependencies>
<build>
<plugins>
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
</plugin>
</plugins>
</build>
<repositories>
<repository>
<id>spring-releases</id>
<url>https://repo.spring.io/libs-release</url>
</repository>
</repositories>
<pluginRepositories>
<pluginRepository>
<id>spring-releases</id>
<url>https://repo.spring.io/libs-release</url>
</pluginRepository>
</pluginRepositories>
</project>

View File

@ -0,0 +1,34 @@
package hello;
//import org.h2.server.web.WebServlet;
import org.h2.server.web.WebServlet;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.boot.web.servlet.ServletRegistrationBean;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.PropertySource;
/**
* Created by jackdaw on 16. 11. 9.
*/
//@EntityScan(basePackages="hello")
//@EnableJpaRepositories(basePackages = "hello")
@PropertySource({"classpath:database.properties"})
@SpringBootApplication
public class Application {
static public void main(String[] args) {
SpringApplication.run(Application.class,args);
System.out.println("Spring Boot Started..");
}
@Bean
public ServletRegistrationBean h2servletRegistration() {
ServletRegistrationBean registration = new ServletRegistrationBean(new WebServlet());
registration.addUrlMappings("/console/*");
return registration;
}
}

View File

@ -0,0 +1,7 @@
package com.loafle.bridge.collector.controller;
/**
* Created by root on 16. 11. 15.
*/
public class CollectorController {
}

View File

@ -0,0 +1,7 @@
package com.loafle.bridge.collector.entity;
/**
* Created by root on 16. 11. 15.
*/
public class Collector {
}

View File

@ -0,0 +1,7 @@
package com.loafle.bridge.collector.repository;
/**
* Created by root on 16. 11. 15.
*/
public class CollectorRepository {
}

View File

@ -0,0 +1,7 @@
package com.loafle.bridge.discovering.controller;
/**
* Created by root on 16. 11. 15.
*/
public class DiscoveringController {
}

View File

@ -0,0 +1,7 @@
package com.loafle.bridge.discovering.entity;
/**
* Created by root on 16. 11. 15.
*/
public class Discovering {
}

View File

@ -0,0 +1,7 @@
package com.loafle.bridge.discovering.repository;
/**
* Created by root on 16. 11. 15.
*/
public class DiscoveringRepository {
}

View File

@ -0,0 +1,7 @@
package com.loafle.bridge.discoveryhost.controller;
/**
* Created by root on 16. 11. 15.
*/
public class DiscoveryHostController {
}

View File

@ -0,0 +1,7 @@
package com.loafle.bridge.discoveryhost.entity;
/**
* Created by root on 16. 11. 15.
*/
public class DiscoveryHost {
}

View File

@ -0,0 +1,7 @@
package com.loafle.bridge.discoveryhost.repository;
/**
* Created by root on 16. 11. 15.
*/
public class DiscoveryHostRepository {
}

View File

@ -0,0 +1,7 @@
package com.loafle.bridge.discoveryport.controller;
/**
* Created by root on 16. 11. 15.
*/
public class DiscoveryPortController {
}

View File

@ -0,0 +1,7 @@
package com.loafle.bridge.discoveryport.entity;
/**
* Created by root on 16. 11. 15.
*/
public class DiscoveryPort {
}

View File

@ -0,0 +1,7 @@
package com.loafle.bridge.discoveryport.repository;
/**
* Created by root on 16. 11. 15.
*/
public class DiscoveryPortRepository {
}

View File

@ -0,0 +1,7 @@
package com.loafle.bridge.discoveryservice.controller;
/**
* Created by root on 16. 11. 15.
*/
public class DiscoveryServiceController {
}

View File

@ -0,0 +1,7 @@
package com.loafle.bridge.discoveryservice.entity;
/**
* Created by root on 16. 11. 15.
*/
public class DiscoveryService {
}

View File

@ -0,0 +1,7 @@
package com.loafle.bridge.discoveryservice.repository;
/**
* Created by root on 16. 11. 15.
*/
public class DiscoveryServiceRepository {
}

View File

@ -0,0 +1,7 @@
package com.loafle.bridge.discoveryzone.controller;
/**
* Created by root on 16. 11. 15.
*/
public class DiscoveryZoneController {
}

View File

@ -0,0 +1,7 @@
package com.loafle.bridge.discoveryzone.entity;
/**
* Created by root on 16. 11. 15.
*/
public class DiscoveryZone {
}

View File

@ -0,0 +1,7 @@
package com.loafle.bridge.discoveryzone.repository;
/**
* Created by root on 16. 11. 15.
*/
public class DiscoveryZoneRepository {
}

View File

@ -0,0 +1,55 @@
package hello;
import hello.entity.Member;
import hello.repository.MemberRepository;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.*;
import java.util.List;
/**
* Created by jackdaw on 16. 11. 9.
*/
@RestController
public class HelloController {
@Autowired
MemberRepository memberRepository;
// @RequestMapping("/member")
// public List<Member> index() {
// return memberRepository.findAll();
// }
@RequestMapping(value = "/member/{id}", method = RequestMethod.GET)
public Member get(@PathVariable(value = "id") long id) {
return memberRepository.findOne(id);
}
@RequestMapping(value = "/member", method = RequestMethod.GET)
@ResponseBody
public List<Member> getList() {
return memberRepository.findAll();
}
// @RequestMapping(value = "/member/{id}", method = RequestMethod.PATCH)
// @ResponseBody
// public Member patch(@PathVariable(value = "id") long id, @RequestBody Member member) {
// memberRepository.save(member);
// return member;
// }
//
// @RequestMapping(value = "/member/{id}", method = RequestMethod.PUT)
// @ResponseBody
// public Member update(@PathVariable(value = "id") long id, @RequestBody Member member) {
// memberRepository.save(member);
// return member;
// }
//
// @RequestMapping(value = "/member/{id}", method = RequestMethod.DELETE)
// @ResponseBody
// public List<Member> delete(@PathVariable(value = "id") long id) {
// memberRepository.delete(id);
// return memberRepository.findAll();
// }
}

View File

@ -0,0 +1,23 @@
package hello;
import hello.entity.Member;
import org.springframework.context.annotation.Configuration;
import org.springframework.data.rest.core.config.RepositoryRestConfiguration;
import org.springframework.data.rest.webmvc.config.RepositoryRestMvcConfiguration;
/**
* Created by jackdaw on 16. 11. 11.
*/
@Configuration
public class JPAConfiguration extends RepositoryRestMvcConfiguration {
@Override
protected void configureRepositoryRestConfiguration(RepositoryRestConfiguration config) {
config.exposeIdsFor(Member.class);
//config.setDefaultMediaType(MediaType.APPLICATION_JSON);
//config.useHalAsDefaultJsonMediaType(false);
}
}

View File

@ -0,0 +1,60 @@
package hello.entity;
import com.fasterxml.jackson.annotation.JsonIgnoreProperties;
import javax.persistence.*;
/**
* Created by jackdaw on 16. 11. 10.
*/
@Entity
@JsonIgnoreProperties(ignoreUnknown = true)
public class Member {
@Id
@GeneratedValue(strategy = GenerationType.AUTO)
private long id;
@Column
private String name;
@Column
private int age;
public Member() {}
public Member(String name, int age) {
this.name = name;
this.age = age;
}
public long getId() {
return id;
}
public void setId(long id) {
this.id = id;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public int getAge() {
return age;
}
public void setAge(int age) {
this.age = age;
}
@Override
public String toString() {
return "[" + id + "] name = " + name + ", age = " + age;
}
}

View File

@ -0,0 +1,19 @@
package hello.repository;
import hello.entity.Member;
import org.springframework.data.jpa.repository.JpaRepository;
import org.springframework.data.rest.core.annotation.RepositoryRestResource;
/**
* Created by jackdaw on 16. 11. 10.
*/
@RepositoryRestResource(collectionResourceRel = "member", path = "member")
public interface MemberRepository extends JpaRepository<Member,Long> {
// List<Member> findByNameAndAgeLessThan(String name, int age);
//
// @Query("select t from Member t where name=:name and age < :age")
// List<Member> findByNameAndAgeLessThanSQL(@Param("name") String name, @Param("age") int age);
//
// List<Member> findByNameAndAgeLessThanOrderByAgeDesc(String name, int age);
}

View File

@ -0,0 +1,15 @@
## DataSource configuration
spring.datasource.url=jdbc:h2:file:~/data/test
spring.datasource.username=sa
spring.datasource.password=qwe123
spring.datasource.driver-class-name=org.h2.Driver
#spring.datasource.url=jdbc:mysql://192.168.1.215:3306/test_db?charset=utf8&parseTime=True&loc=Local
#spring.datasource.username=root
#spring.datasource.password=qwe123
## Hibernate configuration
spring.jpa.database=h2
spring.jpa.hibernate.ddl-auto=update
spring.jpa.hibernate.naming-strategy=org.hibernate.cfg.ImprovedNamingStrategy
spring.jpa.show-sql=true

View File

@ -0,0 +1,154 @@
package hello;
import com.fasterxml.jackson.core.JsonProcessingException;
import com.fasterxml.jackson.databind.ObjectMapper;
import hello.entity.Member;
import hello.repository.MemberRepository;
import org.apache.log4j.Logger;
import org.junit.After;
import org.junit.Before;
import org.junit.Test;
import org.junit.runner.RunWith;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.test.WebIntegrationTest;
import org.springframework.http.MediaType;
import org.springframework.test.context.ContextConfiguration;
import org.springframework.test.context.junit4.SpringJUnit4ClassRunner;
import org.springframework.test.web.servlet.MockMvc;
import org.springframework.test.web.servlet.MvcResult;
import java.util.List;
import static org.hamcrest.CoreMatchers.equalTo;
import static org.springframework.test.web.servlet.request.MockMvcRequestBuilders.*;
import static org.springframework.test.web.servlet.result.MockMvcResultMatchers.content;
import static org.springframework.test.web.servlet.result.MockMvcResultMatchers.status;
import static org.springframework.test.web.servlet.setup.MockMvcBuilders.standaloneSetup;
/**
* Created by jackdaw on 16. 11. 10.
*/
@RunWith(SpringJUnit4ClassRunner.class)
@ContextConfiguration(classes = Application.class)
@WebIntegrationTest
public class HelloControllerTest {
private MockMvc mockMvc;
// @Autowired
// MemberRe controller;
@Autowired
MemberRepository repo;
Logger logger = Logger.getLogger(this.getClass());
@Before
public void setUp() throws Exception {
mockMvc = standaloneSetup(repo).build();
repo.save(new Member("1",1));
repo.save(new Member("2",2));
repo.save(new Member("2",2));
}
private String jsonStringFromObject(Object object) throws JsonProcessingException {
ObjectMapper mapper = new ObjectMapper();
return mapper.writeValueAsString(object);
}
@After
public void tearDown() throws Exception {
repo.deleteAll();
}
@Test
public void index() throws Exception {
String jsonString = jsonStringFromObject(repo.findAll());
logger.info(jsonString);
mockMvc.perform(get("/member")).andExpect(status().isOk()).andExpect(content().contentTypeCompatibleWith(MediaType.APPLICATION_JSON))
.andExpect(content().string(equalTo(jsonString)));
}
@Test
public void getMember() throws Exception {
List<Member> list = repo.findAll();
String jsonString = this.jsonStringFromObject(list.get(0));
logger.info(jsonString);
mockMvc.perform(get("/member/{id}", list.get(0).getId()))
.andExpect(status().isOk())
.andExpect(content().contentTypeCompatibleWith(MediaType.APPLICATION_JSON))
.andExpect(content().string(equalTo(jsonString)));
}
@Test
public void createMember() throws Exception {
Member b = new Member("111",1111);
String jsonString = this.jsonStringFromObject(b);
MvcResult result = mockMvc.perform(post("/member")
.contentType(MediaType.APPLICATION_JSON)
.content(jsonString))
.andExpect(status().isOk())
.andReturn();
logger.info(result.getResponse().getContentAsString());
}
@Test
public void patchMember() throws Exception {
List<Member> list = repo.findAll();
String jsonString = this.jsonStringFromObject(list.get(0));
logger.info(jsonString);
list.get(0).setName("test");
list.get(0).setAge(9999);
jsonString = this.jsonStringFromObject(list.get(0));
MvcResult result = mockMvc.perform(
patch("/member/{id}",list.get(0).getId()).
contentType(MediaType.APPLICATION_JSON).
content(jsonString)).
andExpect(status().isOk()).
andReturn();
logger.info(result.getResponse().getContentAsString());
}
@Test
public void updateMember() throws Exception {
List<Member> list = repo.findAll();
String jsonString = this.jsonStringFromObject(list.get(0));
logger.info(jsonString);
list.get(0).setName("test");
list.get(0).setAge(9999);
jsonString = this.jsonStringFromObject(list.get(0));
MvcResult result = mockMvc.perform(
put("/member/{id}",list.get(0).getId()).
contentType(MediaType.APPLICATION_JSON).
content(jsonString)).
andExpect(status().isOk()).
andReturn();
logger.info(result.getResponse().getContentAsString());
}
@Test
public void deleteMember() throws Exception {
List<Member> list = repo.findAll();
long id = list.get(0).getId();
String jsonString = this.jsonStringFromObject(list);
list.remove(0);
String compareString = this.jsonStringFromObject(list);
mockMvc.perform(delete("/member/{id}", id)
.content(jsonString))
.andExpect(status().isOk())
.andExpect(content().string(equalTo(compareString)));
}
}

View File

@ -0,0 +1,73 @@
package hello.repository;
import hello.Application;
import hello.entity.Member;
import org.junit.After;
import org.junit.Before;
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 java.util.List;
import static org.junit.Assert.assertEquals;
/**
* Created by jackdaw on 16. 11. 10.
*/
@RunWith(SpringJUnit4ClassRunner.class)
@ContextConfiguration(classes = Application.class)
public class MemberRepositoryTest {
@Autowired
MemberRepository repo;
@Before
public void setup() {
repo.deleteAll();
repo.save(new Member("1",1));
repo.save(new Member("2",2));
repo.save(new Member("3",3));
repo.save(new Member("4",4));
repo.save(new Member("5",5));
}
@After
public void down() {
repo.deleteAll();
}
@Test
public void create() {
Member m = new Member("test",1);
Member n = repo.save(m);
assertEquals(m.getId(),n.getId());
}
@Test
public void getAll() {
assertEquals(repo.findAll().size(),5);
}
@Test
public void delete() {
List<Member> l = repo.findAll();
Member m = l.get(0);
repo.delete(m.getId());
assertEquals(repo.findAll().size(),4);
}
@Test
public void update() {
List<Member> l = repo.findAll();
Member m = l.get(0);
m.setName("TTTTT");
Member n = repo.save(m);
assertEquals(m.getName(),n.getName());
}
}