我将我的 Retrofit 代码包装在如下所示的类中。如果从我发布的代码中不清楚,它正在与带有 OAuth 的宁静服务进行交互。
这对于线程安全是否可行?我的意思是说用户一次点击两个地方并触发两个 API 调用。这段代码好用吗?我需要保持内部队列吗?如果是这样,我应该怎么做?
从这个答案来看,我会说,不。但我不确定。
public class RestClient implements IRestClient {
private IRestAPI api;
/**
*
* @param accessToken
*/
public RestClient(final String accessToken)
{
RequestInterceptor requestInterceptor = new RequestInterceptor()
{
@Override
public void intercept(RequestFacade request) {
request.addHeader("Authorization", "Bearer " + accessToken);
}
};
RestAdapter restAdapter = new RestAdapter.Builder()
.setEndpoint(Config.ENDPOINT)
.setRequestInterceptor(requestInterceptor)
.build();
api = restAdapter.create(IRestAPI.class);
}
@Override
public void getUserProfile(Callback callback) {
api.getUserProfile(callback);
}
@Override
public void getFriendList(Callback callback) {
api.getFriendList(callback);
}
@Override
public …Run Code Online (Sandbox Code Playgroud) 我很难从属性文件中加载属性.我正在尝试将属性加载到我的配置类中,如下所示.
package dk.fitfit.budget.config;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.context.annotation.PropertySource;
import org.springframework.context.support.PropertySourcesPlaceholderConfigurer;
import org.springframework.core.env.Environment;
@Configuration
@PropertySource("classpath:application.properties")
public class ApplicationConfig {
private static final Logger logger = LoggerFactory.getLogger(ApplicationConfig.class);
@Autowired
private Environment env;
@Value("${snot:test}")
private String snot;
public ApplicationConfig() {
logger.info("Application config loaded!"); // Displays as expected
logger.info("snot: {}", snot); // snot: null
logger.info("env: {}", env); // env: null
}
@Bean
public static PropertySourcesPlaceholderConfigurer propertySourcesPlaceholderConfigurer() {
return new PropertySourcesPlaceholderConfigurer();
}
}
Run Code Online (Sandbox Code Playgroud)
如果我更改文件(application.properties)的名称或"@PropertySource("类路径:application.properties")"我得到一个错误约不存在的文件.很明显它正在加载(无论如何).
我至少期望看到注入变量snot的默认字符串"test".但即便如此.我无法自动装配环境......不确定是否存在关系.
我的application.properties的内容如下.
snot=snog …Run Code Online (Sandbox Code Playgroud) 我将我的Retrofit代码包装在如下所示的类中.如果从我发布的代码中不清楚它与OAuth的一个宁静服务进行交互.
什么是做错误处理的好方法?REST服务器以json格式返回错误消息.我想通过从我的班级中抛出一些例外来对该信息采取行动.我正在尝试做类似下面的事情.但这是一个好的设计吗?混合回调和异常是一个好主意吗?有没有更好的办法?
通过下面的方法,我可以从我的自定义异常中获取i18l消息,并将它们提供给用户.
public class RestClient implements IRestClient {
private IRestAPI api;
/**
*
* @param accessToken
*/
public RestClient(final String accessToken)
{
RequestInterceptor requestInterceptor = new RequestInterceptor()
{
@Override
public void intercept(RequestFacade request) {
request.addHeader("Authorization", "Bearer " + accessToken);
}
};
RestAdapter restAdapter = new RestAdapter.Builder()
.setEndpoint(Config.ENDPOINT)
.setRequestInterceptor(requestInterceptor)
.build();
api = restAdapter.create(IRestAPI.class);
}
@Override
public void requestSomething(final Callback callback) {
api.getSomething(new Callback<Something>() {
@Override
public void success(Something something, Response response) {
callback.success(something, response);
}
@Override
public void failure(RetrofitError error) …Run Code Online (Sandbox Code Playgroud) 我正在尝试在textview旁边放置一个imageview.然而,他们一直在不同的"线"结束.
<ImageView
android:layout_width="10dp"
android:layout_height="wrap_content"
android:id="@+id/medication_administration_time_row_fmk_icon" />
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_toLeftOf="@id/medication_administration_time_row_fmk_icon"
android:id="@+id/medication_administration_time_row_drug" />
Run Code Online (Sandbox Code Playgroud)
将图像作为复合可绘制放置不是一个选项,因为它用于另一个图像.
有关如何将图像与文本放在同一行的任何线索?
有没有办法将 yaml 数据存储在配置映射中?
在我的values.yaml我有类似下面的东西
config:
filters:
- kind: Pod
apiVersion: v1
...
Run Code Online (Sandbox Code Playgroud)
在我的配置图中,我目前正在做
...
data:
config.yaml: |-
{{ .Values.config }}
Run Code Online (Sandbox Code Playgroud)
但在结果中,configmap数据被“内联”并格式化为这样
...
data:
config.yaml: >-
map[filters:[map[apiVersion:v1...
Run Code Online (Sandbox Code Playgroud)
这不是yaml,因此不能被读取它的应用程序解析。
在尝试映射我的域对象时,我收到以下 StackOverflowError 异常。我试图忽略导致循环依赖无效的属性。
我的域模型的中心是 WorkoutSet,它有一个 User 和一个练习。
如果我从 WorkoutSetMapper 中删除映射注释,则 UserMapperImpl 和 ExerciseMapperImpl 将按预期生成。
错误:(15, 1) java:映射处理器中的内部错误:com.sun.tools.javac.code.Type$ClassType.accept(Type.java:786) 处的 java.lang.StackOverflowError 在 com.sun.tools .javac.code.Types$UnaryVisitor.visit(Types.java:4652) at com.sun.tools.javac.code.Types.supertype(Types.java:2315) at com.sun.tools.javac.code.Types $13.visitClassType(Types.java:1966) at com.sun.tools.javac.code.Types$13.visitClassType(Types.java:1955) at com.sun.tools.javac.code.Type$ClassType.accept(Type .java:786) 在 com.sun.tools.javac.code.Types$DefaultTypeVisitor.visit(Types.java:4571) 在 com.sun.tools.javac.code.Types.asSuper(Types.java:1952) 在com.sun.tools.javac.code.Types$13.visitClassType(Types.java:1968) 在 com.sun.tools.javac.code.Types$13.visitClassType(Types.java:1955) 在 com.sun.tools。代码。Type$ClassType.accept(Type.java:786) at com.sun.tools.javac.code.Types$DefaultTypeVisitor.visit(Types.java:4571) at com.sun.tools.javac.code.Types.asSuper( Types.java:1952) 在 com.sun.tools.javac.code.Types$13.visitClassType(Types.java:1975) 在 com.sun.tools.javac.code.Types$13.visitClassType(Types.java:1955)在 com.sun.tools.javac.code.Type$ClassType.accept(Type.java:786) 在 com.sun.tools.javac.code.Types$DefaultTypeVisitor.visit(Types.java:4571) 在 com.sun .tools.javac.code.Types.asSuper(Types.java:1952) 在 com.sun.tools.javac.code.Types$13.visitClassType(Types.java:1975) 在 com.sun.tools.javac.code。 Types$13.visitClassType(Types.java:1955) at com.sun.tools.javac.code.Type$ClassType.accept(Type.java:786) at com.sun.tools.javac.code.Types$DefaultTypeVisitor.visit (类型.java:4571) 在 com.sun.tools.javac.code.Types.asSuper(Types.java:1952) 在 com.sun.tools.javac.code.Types$13.visitClassType(Types.java:1975) 在 com.sun。 tools.javac.code.Types$13.visitClassType(Types.java:1955) at com.sun.tools.javac.code.Type$ClassType.accept(Type.java:786) at com.sun.tools.javac.code .Types$DefaultTypeVisitor.visit(Types.java:4571) at com.sun.tools.javac.code.Types.asSuper(Types.java:1952) …
我正在尝试创建一个基于maven的项目,它有一个父pom,然后是两个模块.一个用于业务,一个用于依赖于业务的命令行应用程序.
父pom.xml
<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<groupId>dk.fitfit.triangle.parent</groupId>
<artifactId>triangle-parent</artifactId>
<packaging>pom</packaging>
<version>1.0-SNAPSHOT</version>
<modules>
<module>Business</module>
<module>Cmd</module>
</modules>
<build>
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-jar-plugin</artifactId>
<version>2.3.2</version>
<configuration>
<archive>
<manifest>
<addClasspath>true</addClasspath>
<classpathPrefix>lib/</classpathPrefix>
<mainClass>dk.fitfit.triangle.cmd.Main</mainClass>
</manifest>
</archive>
</configuration>
</plugin>
</plugins>
</build>
</project>
Run Code Online (Sandbox Code Playgroud)
然后,我有业务pom
<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<parent>
<artifactId>triangle-parent</artifactId>
<groupId>dk.fitfit.triangle.parent</groupId>
<version>1.0-SNAPSHOT</version>
</parent>
<modelVersion>4.0.0</modelVersion>
<groupId>dk.fitfit.triangle.business</groupId>
<artifactId>triangle-business</artifactId>
<dependencies>
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<version>4.7</version>
<scope>test</scope>
</dependency>
</dependencies>
<build>
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-compiler-plugin</artifactId>
<version>2.3.2</version>
<configuration>
<source>1.8</source>
<target>1.8</target>
</configuration>
</plugin>
</plugins>
</build>
</project>
Run Code Online (Sandbox Code Playgroud)
最后是命令行应用程序的pom文件
<?xml version="1.0" …Run Code Online (Sandbox Code Playgroud) 我正在尝试通过执行以下操作从值列表创建配置映射
{{- if index .Values "environmentVariables" }}
apiVersion: v1
kind: ConfigMap
metadata:
name: {{ include "some-env.fullname" . }}
data:
{{- range $key, $value := .Values.environmentVariables }}
{{ $key }}: {{ $value }}
{{- end }}
{{- end }}
Run Code Online (Sandbox Code Playgroud)
具有以下值
environmentVariables:
SERVER_CONTEXT_PATH: /some/where/v2
SERVER_PORT: 8080
Run Code Online (Sandbox Code Playgroud)
但这导致以下错误消息
Error: release my-chart-env-v2-some-env-test failed: ConfigMap in version "v1" cannot be handled as a ConfigMap: v1.ConfigMap: Data: ReadString: expects " or n, parsing 106 ...ER_PORT":8... at {"apiVersion":"v1","data":{"SERVER_CONTEXT_PATH":"/dokument-redskaber/my-chart-app/v2","SERVER_PORT":8080},"kind":"ConfigMap","metadata":{"labels":{"app.kubernetes.io/instance":"my-chart-env-v2-some-env-test","app.kubernetes.io/managed-by":"Tiller","app.kubernetes.io/name":"some-env","helm.sh/chart":"some-env-0.1.0"},"name":"my-chart-env-v2","namespace":"some-env-test"}}
Run Code Online (Sandbox Code Playgroud)
如果我做
{{ $key }}: {{ $value | quote }} …Run Code Online (Sandbox Code Playgroud)