Este projeto é resultado da separação do projeto processor, o outro projeto resultante desta separação encontra-se em b2w-processor.
Este projeto mantém um conjunto de anotações usadas para criar de forma automática a classe de Controller
dos seus respectivos modelos.
Para criar a classe de controle é necessário adicionar a anotação @GenerateController
na classe de modelo. É possível também criar consultas básicas nas classes de controle para os campos das classe de modelo adicionando a anotação @MappedProperty
. Para cada campo anotado com @MappedProperty
, um método getBy<Nome do Campo>
será criado na classe Controller
.
package br.com.jadler.models;
import br.com.jadler.annotation.MappedProperty
752A
;
import br.com.jadler.annotation.GenerateController;
import org.springframework.data.annotation.Id;
@GenerateController
public class Persons {
@Id
@MappedProperty
private String id;
@MappedProperty
private String name;
@MappedProperty
private Integer age;
// getters and setters
}
As anotações acima irão gerar uma nova classe PersonsController
com os métodos PersonsController.getById(String value)
, PersonsController.getByName(String value)
e PersonsController.getByAge(Integer value)
. O pacote aonde a nova classe Controller
reside estará no mesmo nível do pacote da classe Models
.
Resultado do processamento das anotações.
package br.com.jadler.controller;
import ...
@RestController
@RequestMapping("/persons")
@ApiOperation("...")
public class PersonsController {
@Autowired
protected MongoRepository<Persons, String> repository;
@ApiOperation("...")
@GetMapping({"", "/"})
public Collection<Persons> list() {
//...
}
@ApiOperation("...")
@PostMapping({"/"})
public Persons create(@Valid @RequestBody Persons c) {
//...
}
@ApiOperation("...")
@PutMapping({"/id/{id}"})
public Persons modify(@PathVariable("id") String id, @Valid @RequestBody Persons c) {
//...
}
@ApiOperation("...")
@DeleteMapping({"/id/{id}"})
public void delete(@PathVariable String id) {
//...
}
@ApiOperation("...")
@GetMapping(value = {"/id/{id}"})
public Persons getById(@PathVariable("id") java.lang.String value) {
//...
}
@ApiOperation("...")
@GetMapping(value = {"/name/{name}"})
public Persons getByName(@PathVariable("name") java.lang.String value) {
//...
}
@ApiOperation("...")
@GetMapping(value = {"/age/{age}"})
public Persons getByAge(@PathVariable("age") java.lang.Integer value) {
//...
}
}