Android: Difference between revisions

From Chorke Wiki
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

References