小编use*_*009的帖子

改造线程安全

我将我的 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)

java rest multithreading android retrofit

6
推荐指数
0
解决办法
2816
查看次数

属性和env始终为null

我很难从属性文件中加载属性.我正在尝试将属性加载到我的配置类中,如下所示.

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)

java spring

4
推荐指数
1
解决办法
5094
查看次数

改造错误处理

我将我的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)

java error-handling android retrofit

4
推荐指数
1
解决办法
1万
查看次数

将imageview放在textview旁边

我正在尝试在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)

将图像作为复合可绘制放置不是一个选项,因为它用于另一个图像.

有关如何将图像与文本放在同一行的任何线索?

android android-layout

3
推荐指数
2
解决办法
7811
查看次数

将 yaml(作为数据)放入配置映射中

有没有办法将 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,因此不能被读取它的应用程序解析。

kubernetes kubernetes-helm configmap

3
推荐指数
1
解决办法
2364
查看次数

映射处理器中的内部错误:java.lang.StackOverflowError

在尝试映射我的域对象时,我收到以下 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) …

java mapstruct

2
推荐指数
1
解决办法
5747
查看次数

Maven和父项目

我正在尝试创建一个基于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)

java maven

1
推荐指数
1
解决办法
265
查看次数

循环未引用的配置值

我正在尝试通过执行以下操作从值列表创建配置映射

{{- 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)

yaml go-templates kubernetes kubernetes-helm

1
推荐指数
1
解决办法
387
查看次数