{"format":1,"manifest":{"name":"springboot-snippets","publisher":"vyloxi","version":"1.0.0","displayName":"Spring Boot Snippets","description":"Controllers, services, repositories, entities, configuration and tests for Spring Boot in Java and Kotlin.","engines":{"ferrum":"^0.1.0"},"categories":["Snippets"],"icon":"icon.png","repository":"https://github.com/voukengdongmofrankysteve/ferrum-market","license":"MIT","contributes":{"snippets":[{"language":"Java / C#","path":"snippets/java-c.json"},{"language":"Kotlin","path":"snippets/kotlin.json"}]}},"files":{"icon.png":{"encoding":"base64","content":"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"},"snippets/java-c.json":{"encoding":"utf8","content":"{\n  \"Application\": {\n    \"prefix\": \"sbapp\",\n    \"body\": [\n      \"@SpringBootApplication\",\n      \"public class ${1:Application} {\",\n      \"    public static void main(String[] args) {\",\n      \"        SpringApplication.run(${1:Application}.class, args);\",\n      \"    }\",\n      \"}\"\n    ],\n    \"description\": \"The application class\"\n  },\n  \"REST controller\": {\n    \"prefix\": \"sbctrl\",\n    \"body\": [\n      \"@RestController\",\n      \"@RequestMapping(\\\"/api/${1:items}\\\")\",\n      \"public class ${2:Item}Controller {\",\n      \"\",\n      \"    private final ${2:Item}Service service;\",\n      \"\",\n      \"    public ${2:Item}Controller(${2:Item}Service service) {\",\n      \"        this.service = service;\",\n      \"    }\",\n      \"\",\n      \"    @GetMapping\",\n      \"    public List<${2:Item}> all() {\",\n      \"        return service.findAll();\",\n      \"    }\",\n      \"}\"\n    ],\n    \"description\": \"A REST controller\"\n  },\n  \"GET mapping\": {\n    \"prefix\": \"sbget\",\n    \"body\": [\n      \"@GetMapping(\\\"/${1:{id}}\\\")\",\n      \"public ${2:Item} get(@PathVariable ${3:Long} id) {\",\n      \"    $0\",\n      \"}\"\n    ],\n    \"description\": \"A GET endpoint\"\n  },\n  \"POST mapping\": {\n    \"prefix\": \"sbpost\",\n    \"body\": [\n      \"@PostMapping\",\n      \"@ResponseStatus(HttpStatus.CREATED)\",\n      \"public ${1:Item} create(@Valid @RequestBody ${1:Item} body) {\",\n      \"    $0\",\n      \"}\"\n    ],\n    \"description\": \"A POST endpoint\"\n  },\n  \"Service\": {\n    \"prefix\": \"sbsvc\",\n    \"body\": [\n      \"@Service\",\n      \"public class ${1:Item}Service {\",\n      \"\",\n      \"    private final ${1:Item}Repository repository;\",\n      \"\",\n      \"    public ${1:Item}Service(${1:Item}Repository repository) {\",\n      \"        this.repository = repository;\",\n      \"    }\",\n      \"\",\n      \"    $0\",\n      \"}\"\n    ],\n    \"description\": \"A service\"\n  },\n  \"JPA repository\": {\n    \"prefix\": \"sbrepo\",\n    \"body\": [\n      \"public interface ${1:Item}Repository extends JpaRepository<${1:Item}, ${2:Long}> {\",\n      \"    $0\",\n      \"}\"\n    ],\n    \"description\": \"A repository\"\n  },\n  \"Entity\": {\n    \"prefix\": \"sbent\",\n    \"body\": [\n      \"@Entity\",\n      \"public class ${1:Item} {\",\n      \"\",\n      \"    @Id\",\n      \"    @GeneratedValue(strategy = GenerationType.IDENTITY)\",\n      \"    private Long id;\",\n      \"\",\n      \"    @Column(nullable = false)\",\n      \"    private String ${2:name};\",\n      \"\",\n      \"    $0\",\n      \"}\"\n    ],\n    \"description\": \"A JPA entity\"\n  },\n  \"Configuration bean\": {\n    \"prefix\": \"sbbean\",\n    \"body\": [\n      \"@Bean\",\n      \"public ${1:Type} ${2:name}() {\",\n      \"    return new ${1:Type}($0);\",\n      \"}\"\n    ],\n    \"description\": \"A bean\"\n  },\n  \"Exception handler\": {\n    \"prefix\": \"sbadvice\",\n    \"body\": [\n      \"@RestControllerAdvice\",\n      \"public class ${1:Api}ExceptionHandler {\",\n      \"\",\n      \"    @ExceptionHandler(${2:NotFoundException}.class)\",\n      \"    @ResponseStatus(HttpStatus.NOT_FOUND)\",\n      \"    public Map<String, String> handle(${2:NotFoundException} e) {\",\n      \"        return Map.of(\\\"error\\\", e.getMessage());\",\n      \"    }\",\n      \"}\"\n    ],\n    \"description\": \"A controller advice\"\n  },\n  \"Value property\": {\n    \"prefix\": \"sbvalue\",\n    \"body\": [\n      \"@Value(\\\"\\\\${${1:app.name}}\\\")\",\n      \"private String ${2:name};\"\n    ],\n    \"description\": \"@Value\"\n  },\n  \"Web MVC test\": {\n    \"prefix\": \"sbmvc\",\n    \"body\": [\n      \"@WebMvcTest(${1:Item}Controller.class)\",\n      \"class ${1:Item}ControllerTest {\",\n      \"\",\n      \"    @Autowired MockMvc mvc;\",\n      \"\",\n      \"    @Test\",\n      \"    void returnsOk() throws Exception {\",\n      \"        mvc.perform(get(\\\"/api/${2:items}\\\")).andExpect(status().isOk());\",\n      \"    }\",\n      \"}\"\n    ],\n    \"description\": \"A @WebMvcTest\"\n  }\n}\n"},"snippets/kotlin.json":{"encoding":"utf8","content":"{\n  \"Application\": {\n    \"prefix\": \"sbkapp\",\n    \"body\": [\n      \"@SpringBootApplication\",\n      \"class ${1:Application}\",\n      \"\",\n      \"fun main(args: Array<String>) {\",\n      \"    runApplication<${1:Application}>(*args)\",\n      \"}\"\n    ],\n    \"description\": \"The application\"\n  },\n  \"REST controller\": {\n    \"prefix\": \"sbkctrl\",\n    \"body\": [\n      \"@RestController\",\n      \"@RequestMapping(\\\"/api/${1:items}\\\")\",\n      \"class ${2:Item}Controller(private val service: ${2:Item}Service) {\",\n      \"\",\n      \"    @GetMapping\",\n      \"    fun all(): List<${2:Item}> = service.findAll()\",\n      \"}\"\n    ],\n    \"description\": \"A REST controller\"\n  },\n  \"Data class entity\": {\n    \"prefix\": \"sbkent\",\n    \"body\": [\n      \"@Entity\",\n      \"data class ${1:Item}(\",\n      \"    @Id @GeneratedValue(strategy = GenerationType.IDENTITY)\",\n      \"    val id: Long? = null,\",\n      \"    val ${2:name}: String,\",\n      \")\"\n    ],\n    \"description\": \"An entity\"\n  },\n  \"Repository\": {\n    \"prefix\": \"sbkrepo\",\n    \"body\": [\n      \"interface ${1:Item}Repository : JpaRepository<${1:Item}, Long>\"\n    ],\n    \"description\": \"A repository\"\n  }\n}\n"},"README.md":{"encoding":"utf8","content":"# Spring Boot Snippets\n\nControllers, services, repositories, entities, configuration and tests for Spring Boot in Java and Kotlin.\n\nType a prefix and press Tab. 15 snippets.\n\n| Language | Prefix | What it inserts |\n| --- | --- | --- |\n| Java / C# | `sbapp` | The application class |\n| Java / C# | `sbctrl` | A REST controller |\n| Java / C# | `sbget` | A GET endpoint |\n| Java / C# | `sbpost` | A POST endpoint |\n| Java / C# | `sbsvc` | A service |\n| Java / C# | `sbrepo` | A repository |\n| Java / C# | `sbent` | A JPA entity |\n| Java / C# | `sbbean` | A bean |\n| Java / C# | `sbadvice` | A controller advice |\n| Java / C# | `sbvalue` | @Value |\n| Java / C# | `sbmvc` | A @WebMvcTest |\n| Kotlin | `sbkapp` | The application |\n| Kotlin | `sbkctrl` | A REST controller |\n| Kotlin | `sbkent` | An entity |\n| Kotlin | `sbkrepo` | A repository |\n\nThis extension runs no code and asks for no permissions.\n"}}}