// Path: micro-core/src/main/java/sample/api/ApiUtils.java
// public abstract class ApiUtils {
// 
//     /** 戻り値を生成して返します。(戻り値がプリミティブまたはnullを許容する時はこちらを利用してください) */
//     public static <T> ResponseEntity<T> result(Supplier<T> command) {
//         return ResponseEntity.status(HttpStatus.OK).body(command.get());
//     }
// 
//     /** 空の戻り値を生成して返します。 */
//     public static ResponseEntity<Void> resultEmpty(Runnable command) {
//         command.run();
//         return ResponseEntity.status(HttpStatus.OK).build();
//     }
//     
// }


import static sample.api.admin.MasterAdminFacade.Path;
import java.util.List;
import javax.validation.Valid;
import org.springframework.http.ResponseEntity;
import org.springframework.web.bind.annotation.*;
import sample.api.ApiUtils;
import sample.model.master.*;
import sample.model.master.Holiday.RegHoliday;
import sample.usecase.MasterAdminService;
package sample.api.admin;






/**
 * マスタ系社内ユースケースの外部公開処理を表現します。
 */
@RestController
@RequestMapping(Path)
public class MasterAdminFacadeExporter implements MasterAdminFacade {

    private final MasterAdminService service;
    
    public MasterAdminFacadeExporter(MasterAdminService service) {
        this.service = service;
    }
    
    /** {@inheritDoc} */
    @Override
    @GetMapping(PathGetStaff)
    public Staff getStaff(@PathVariable String staffId) {
        return service.getStaff(staffId).orElse(null);
    }
    
    /** {@inheritDoc} */
    @Override
    @GetMapping(PathFindStaffAuthority)
    public List<StaffAuthority> findStaffAuthority(@PathVariable String staffId) {
        return service.findStaffAuthority(staffId);
    }
    
    /** {@inheritDoc} */
    @Override
    @PostMapping(PathRegisterHoliday)
    public ResponseEntity<Void> registerHoliday(@RequestBody @Valid RegHoliday p) {
// Path: micro-core/src/main/java/sample/api/ApiUtils.java
// public abstract class ApiUtils {
// 
//     /** 戻り値を生成して返します。(戻り値がプリミティブまたはnullを許容する時はこちらを利用してください) */
//     public static <T> ResponseEntity<T> result(Supplier<T> command) {
//         return ResponseEntity.status(HttpStatus.OK).body(command.get());
//     }
// 
//     /** 空の戻り値を生成して返します。 */
//     public static ResponseEntity<Void> resultEmpty(Runnable command) {
//         command.run();
//         return ResponseEntity.status(HttpStatus.OK).build();
//     }
//     
// }


// Path: micro-app/src/main/java/sample/api/admin/MasterAdminFacadeExporter.java
import static sample.api.admin.MasterAdminFacade.Path;
import java.util.List;
import javax.validation.Valid;
import org.springframework.http.ResponseEntity;
import org.springframework.web.bind.annotation.*;
import sample.api.ApiUtils;
import sample.model.master.*;
import sample.model.master.Holiday.RegHoliday;
import sample.usecase.MasterAdminService;

package sample.api.admin;






/**
 * マスタ系社内ユースケースの外部公開処理を表現します。
 */
@RestController
@RequestMapping(Path)
public class MasterAdminFacadeExporter implements MasterAdminFacade {

    private final MasterAdminService service;
    
    public MasterAdminFacadeExporter(MasterAdminService service) {
        this.service = service;
    }
    
    /** {@inheritDoc} */
    @Override
    @GetMapping(PathGetStaff)
    public Staff getStaff(@PathVariable String staffId) {
        return service.getStaff(staffId).orElse(null);
    }
    
    /** {@inheritDoc} */
    @Override
    @GetMapping(PathFindStaffAuthority)
    public List<StaffAuthority> findStaffAuthority(@PathVariable String staffId) {
        return service.findStaffAuthority(staffId);
    }
    
    /** {@inheritDoc} */
    @Override
    @PostMapping(PathRegisterHoliday)
    public ResponseEntity<Void> registerHoliday(@RequestBody @Valid RegHoliday p) {
        return ApiUtils.resultEmpty(() -> service.registerHoliday(p));