Android: Difference between revisions
Jump to navigation
Jump to search
Line 65: | Line 65: | ||
//@Get("/product/{id}") | //@Get("/product/{id}") | ||
Map<String, Object> getOne(int id); | Map<String, Object> getOne(int id); | ||
//@Delete("/delete/{id}") | |||
Map<String, Object> delete(int id, Map<String, Object> product); | |||
enum Actions { | enum Actions { | ||
Line 121: | Line 124: | ||
params.put("id", id); | params.put("id", id); | ||
return this.getEndpoint() | return this.getEndpoint() | ||
.getForObject(Actions.GET_PRODUCT.getUri(), Map.class, params); | .getForObject( | ||
Actions.GET_PRODUCT.getUri(), | |||
Map.class, params | |||
); | |||
} | |||
//@Delete("/product/{id}") | |||
@SuppressWarnings("unchecked") | |||
public Map<String, Object> delete(int id, Map<String, Object> product){ | |||
HttpEntity<Map<String, Object>> payload = new HttpEntity<>(product); | |||
Map<String, Object> params = new HashMap<>(); | |||
params.put("id" , id); | |||
return this.getEndpoint() | |||
.exchange( | |||
Actions.DELETE_PRODUCT.getUri(), HttpMethod.DELETE, | |||
payload, Map.class, params | |||
).getBody(); | |||
} | } | ||
Revision as of 19:10, 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);
//@Delete("/delete/{id}")
Map<String, Object> delete(int id, Map<String, Object> product);
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
);
}
//@Delete("/product/{id}")
@SuppressWarnings("unchecked")
public Map<String, Object> delete(int id, Map<String, Object> product){
HttpEntity<Map<String, Object>> payload = new HttpEntity<>(product);
Map<String, Object> params = new HashMap<>();
params.put("id" , id);
return this.getEndpoint()
.exchange(
Actions.DELETE_PRODUCT.getUri(), HttpMethod.DELETE,
payload, Map.class, params
).getBody();
}
@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