public interface InitCallback {
void init();
class Http implements InitCallback {
void sendData(String url, SuccessCallback success, FailureCallback fail) {
try {
//Делаем реквест
String httpResult = "200";
//Вызываекм коллбек
success.success(httpResult);
} catch (Exception ex) {
//Вызываекм коллбек в случае ошибки
fail.fail("400");
}
}
public void init() {
System.out.println("Вызван init коллбек");
}
interface SuccessCallback {
void success(String result);
}
interface FailureCallback {
void fail(String error);
}
public static void main(String[] args) {
Http http = new Http();
if (http instanceof InitCallback) {
//Если это наш интерфес, то вызываем колбек
http.init();
}
http.sendData("/my/api", new SuccessCallback() {
@Override
public void success(String result) {
System.out.println("Успешный колбек: " + result);
}
}, new FailureCallback() {
@Override
public void fail(String error) {
System.out.println("Колбек вернул ошибку: " + error);
}
});
}
}
}
@RequestMapping(path = {"film/*", "serial/*"}, method = RequestMethod.GET)
public String index() {
return "forward:/index.html";
}
@RestController
@RequestMapping("/rest/content")
public class ContentController {
@RequestMapping(method = RequestMethod.GET)
public HttpStatus searchContent(@Param("name") String name) {
System.out.println("search for content with param: " + name);
return HttpStatus.ACCEPTED;
}
@RequestMapping(method = RequestMethod.POST)
public HttpStatus uploadContent(@RequestBody Content content) {
System.out.println("upload content");
return upload != null ? HttpStatus.CREATED : HttpStatus.BAD_REQUEST;
}
}
<mvc:annotation-driven/>
<dependency>
<groupId>com.fasterxml.jackson.core</groupId>
<artifactId>jackson-core</artifactId>
<version>2.4.3</version>
</dependency>
<dependency>
<groupId>com.fasterxml.jackson.core</groupId>
<artifactId>jackson-databind</artifactId>
<version>2.4.3</version>
</dependency>