Android: Difference between revisions
Jump to navigation
Jump to search
Line 57: | Line 57: | ||
import org.springframework.web.client.RestTemplate; | import org.springframework.web.client.RestTemplate; | ||
import org.springframework.web.util.DefaultUriBuilderFactory; | import org.springframework.web.util.DefaultUriBuilderFactory; | ||
import java.util.Map; | |||
public interface ProductEndpoint { | public interface ProductEndpoint { | ||
String ROOT_ENDPOINT = "https://dev.chorke.org/academia/api/rest/v1.0"; | |||
//@Get("/product/{id}") | |||
Map<String, Object> getOne(int id); | |||
enum Actions { | |||
GET_PRODUCTS("/product"), | |||
GET_PRODUCT("/product/{id}"), | |||
POST_PRODUCT("/product"), | |||
PUT_PRODUCT("/product/{id}"), | |||
DELETE_PRODUCT("/product/{id}"); | |||
private String uri; | |||
Actions(String uri){ | |||
this.uri = uri; | |||
} | |||
public String getUri() { | |||
return uri; | |||
} | |||
} | |||
default RestTemplate getEndpoint() { | default RestTemplate getEndpoint() { | ||
RestTemplate endpoint = new RestTemplate(new RestClientFactory()); | RestTemplate endpoint = new RestTemplate(new RestClientFactory()); | ||
Line 67: | Line 91: | ||
RestTemplateBuilder getBuilder(); | RestTemplateBuilder getBuilder(); | ||
String getRootUri(); | String getRootUri(); | ||
} | |||
</source> | |||
<source lang="java"> | |||
package org.chorke.academia.beans.endpoint; | |||
import com.fasterxml.jackson.databind.ObjectMapper; | |||
import org.springframework.beans.factory.annotation.Autowired; | |||
import org.springframework.beans.factory.annotation.Value; | |||
import org.springframework.boot.web.client.RestTemplateBuilder; | |||
import org.springframework.stereotype.Component; | |||
import org.springframework.util.StringUtils; | |||
import java.util.HashMap; | |||
import java.util.Map; | |||
@Component | |||
public class ProductEndpointImpl implements ProductEndpoint { | |||
@Value("${chorke.academia.endpoint.root.uri:}") | |||
String rootUri; | |||
@Autowired | |||
RestTemplateBuilder builder; | |||
//@Get("/product/{id}") | |||
@SuppressWarnings("unchecked") | |||
public Map<String, Object> getOne(int id){ | |||
Map<String, Object> params = new HashMap<>(); | |||
params.put("id", id); | |||
return this.getEndpoint() | |||
.getForObject(Actions.GET_PRODUCT.getUri(), Map.class, params); | |||
} | |||
@Override | |||
public RestTemplateBuilder getBuilder() { | |||
return builder; | |||
} | |||
@Override | |||
public String getRootUri() { | |||
rootUri = !StringUtils.isEmpty(rootUri) ? rootUri : ROOT_ENDPOINT; | |||
return rootUri; | |||
} | |||
} | } | ||
</source> | </source> |
Revision as of 19:04, 23 August 2021
@Rest(rootUrl = "https://api.chorke.org/rest/api", converters = { MappingJackson2HttpMessageConverter.class })
public interface EventsApi {
@Get("/events/{year}/{location}")
EventList getEventsByYearAndLocation(@Path int year, @Path String location);
@Get("/events/{year}/{location}")
EventList getEventsByLocationAndYear(@Path String location, @Path int year);
}
Dependencies
<dependency>
<groupId>com.fasterxml.jackson.core</groupId>
<artifactId>jackson-databind</artifactId>
<version>2.11.2</version>
</dependency>
<dependency>
<groupId>org.androidannotations</groupId>
<artifactId>rest-spring</artifactId>
<version>4.8.0</version>
</dependency>
<dependency>
<groupId>org.projectlombok</groupId>
<artifactId>lombok</artifactId>
<version>1.18.10</version>
<scope>provided</scope>
</dependency>
Delete with Body
package org.chorke.academia.utility;
import org.springframework.http.client.SimpleClientHttpRequestFactory;
import java.io.IOException;
import java.net.HttpURLConnection;
public class RestClientFactory extends SimpleClientHttpRequestFactory {
@Override
protected void prepareConnection(HttpURLConnection connection, String httpMethod) throws IOException {
super.prepareConnection(connection, httpMethod);
if("DELETE".equals(httpMethod)) {
connection.setDoOutput(true);
}
}
}
package org.chorke.academia.beans.endpoint;
import org.chorke.academia.utility.RestClientFactory;
import org.springframework.boot.web.client.RestTemplateBuilder;
import org.springframework.web.client.RestTemplate;
import org.springframework.web.util.DefaultUriBuilderFactory;
import java.util.Map;
public interface ProductEndpoint {
String ROOT_ENDPOINT = "https://dev.chorke.org/academia/api/rest/v1.0";
//@Get("/product/{id}")
Map<String, Object> getOne(int id);
enum Actions {
GET_PRODUCTS("/product"),
GET_PRODUCT("/product/{id}"),
POST_PRODUCT("/product"),
PUT_PRODUCT("/product/{id}"),
DELETE_PRODUCT("/product/{id}");
private String uri;
Actions(String uri){
this.uri = uri;
}
public String getUri() {
return uri;
}
}
default RestTemplate getEndpoint() {
RestTemplate endpoint = new RestTemplate(new RestClientFactory());
endpoint.setUriTemplateHandler(new DefaultUriBuilderFactory(this.getRootUri()));
return endpoint;
}
RestTemplateBuilder getBuilder();
String getRootUri();
}
package org.chorke.academia.beans.endpoint;
import com.fasterxml.jackson.databind.ObjectMapper;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.boot.web.client.RestTemplateBuilder;
import org.springframework.stereotype.Component;
import org.springframework.util.StringUtils;
import java.util.HashMap;
import java.util.Map;
@Component
public class ProductEndpointImpl implements ProductEndpoint {
@Value("${chorke.academia.endpoint.root.uri:}")
String rootUri;
@Autowired
RestTemplateBuilder builder;
//@Get("/product/{id}")
@SuppressWarnings("unchecked")
public Map<String, Object> getOne(int id){
Map<String, Object> params = new HashMap<>();
params.put("id", id);
return this.getEndpoint()
.getForObject(Actions.GET_PRODUCT.getUri(), Map.class, params);
}
@Override
public RestTemplateBuilder getBuilder() {
return builder;
}
@Override
public String getRootUri() {
rootUri = !StringUtils.isEmpty(rootUri) ? rootUri : ROOT_ENDPOINT;
return rootUri;
}
}
Redmi Note 5
Settings » About Phone » MIUI Version (TAP 7 more Times) Settings » Additional Settings » Scroll Down » Developer Options
Anko Layout
compile 'org.jetbrains.anko:anko-design:0.8.3' compile 'org.jetbrains.anko:anko-appcompat-v7:0.8.3'
Knowledge
%APPDATA%\..\Local\Android\sdk
Get-WindowsOptionalFeature -Online -FeatureName Microsoft-Hyper-V
Disable-WindowsOptionalFeature -Online -FeatureName Microsoft-Hyper-V
#Enable-WindowsOptionalFeature -Online -FeatureName Microsoft-Hyper-V -All