小编loe*_*sak的帖子

WebDriver:更改事件未触发

我有一个使用KnockoutJS的应用程序,我正在尝试编写一些测试表单的测试.如果您不了解KnockoutJS,那么它的简短故事就是它提供了从我的视图到我的数据模型的绑定.这意味着当我在输入字段中键入值时,我的基础对象会自动使用该输入字段值进行更新.默认情况下,这是通过更改事件完成的.

我遇到的问题是,当我的WebDriver测试在字段中键入时,更改事件未触发,因此我的基础数据模型没有适当的值.这会导致我的表单验证失败.

我做了我能在互联网上找到的所有工作.我有:

  1. 发送了tab键
  2. 单击远离表单域
  3. 发送JavaScript代码以激活焦点并模糊事件(在模糊时进行验证)
  4. 在键入之前单击表单域
  5. 设置等待只是因为这是一个时间问题
  6. 更改KnockoutJS以更新afterkeydown上的输入字段

这些都不适合我.我需要一些帮助.

此外,我已经验证这不是一个事件冒泡问题,因为我明确删除了所有其他事件,只留下了KnockoutJS更改事件.

对于我正在寻找的解决方案是适用于所有浏览器驱动程序的解决方案(...至少主要是IE,FF,Chrome,Safari)并且不需要使用jQuery.

任何帮助将不胜感激.

这是我用于在字段中键入值的相关代码:

// find element
WebElement input = this.element.findElement(By.className("controls"))
                               .findElement(By.tagName("input"));

// to set focus?
input.click();

// erase any existing value (because clear does not send any events
for (int i = 0; i < input.getAttribute("value").length(); i++) {
    input.sendKeys(Keys.BACK_SPACE);
}

// type in value
input.sendKeys(text);

// to fire change & blur? (doesnt fire change)
//input.sendKeys(Keys.TAB);

// to fire change & blur? (doesnt fire change)
driver.findElement(By.tagName("body")).click();
Run Code Online (Sandbox Code Playgroud)

javascript testing webdriver knockout.js

11
推荐指数
2
解决办法
8055
查看次数

寻找一个带Spring的OSGi(特别是Spring MVC)教程

我是OSGi的新手,但对Spring非常熟悉.我是一家使用OSGi的新公司,但对Spring一无所知.我想了解Spring如何与OSGi集成,特别是用于提供网页.我已经用Google搜索了几天,很难找到一个完整的教程让我入门.我只找到有关使用OSGi和Spring-DM的文章.由于Spring-DM现已作为蓝图集成到OSGi中,因此这些文章毫无用处.

任何人都可以指向我使用Spring(IoC,MVC等)创建OSGi项目的教程,最好是Maven用于依赖管理.

谢谢.

java spring osgi maven

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

Spring:如何替换在Application Context中创建的Environment bean

我希望用我自己的实现替换Spring使用的Environment bean.这是不好的做法,如果没有,我怎么能干净利落地做到这一点?目前我已经创建了一个实现Environment接口并使用现有Environment bean的bean,但这意味着需要Environment bean的所有配置代码现在必须使用我的自定义Environment bean.我认为用我自己的方法替换Springs Environment bean会更干净,然后没有需要改变的配置.目前我能想到的唯一方法是创建我自己的ApplicationContext,从而将环境设置为我自己的环境,或者创建一些ApplicationContextAware并在那里设置环境.这两件事对我来说似乎都有些笨拙.

约束:

  • 我使用的是最新版本的Spring3.
  • 我正在使用基于Java的配置; 不是XML

谢谢.

编辑:背景

我想我应该解释为什么我想这样做,以防我的想法有缺陷.我避免这种情况是为了避免非建设性的"你为什么要那样做?" 响应.

Spring Environment bean在查找属性值时使用一组属性源.典型的堆栈看起来像这样(但不限于):

  • JNDI
  • 系统属性(通过-Dmyprop = foo设置)
  • 环境变量
  • ...

出于安全原因,有必要加密其中一些属性(例如数据库密码).解决方案是使用Jasypt进行属性加密.但是,Spring/Jasypt只提供了一种将新属性源插入环境的方法.所以:

  • 具有潜在加密值的属性文件
  • JNDI
  • 系统属性(通过-Dmyprop = foo设置)
  • 环境变量
  • ...

但是,这并不理想,因为这意味着属性只能存储在单个文件中以供操作组维护,或者属性将分布在属性文件,环境变量等中.此外,我觉得属性有无论其财产来源如何,都有可能被加密.

所以这让我想到,无论我在哪里尝试从环境中访问它们,我都需要解密代码中的属性,或者我需要创建自己的环境bean来为我做这件事.

我很乐意听取建设性意见和备选方案.

编辑:根据M. Deinum的回答添加解决方案

public class EnvironmentBeanFactoryPostProcessor implements BeanFactoryPostProcessor {

    private static final String CONFIGURATION_PROPERTY_PBE_ALGORITHM = "PBE_ALGORITHM";
    private static final String CONFIGURATION_PROPERTY_PBE_PASSWORD = "PBE_PASSWORD";

    @Override
    public void postProcessBeanFactory(ConfigurableListableBeanFactory beanFactory) throws BeansException {
        StandardEnvironment environment = (StandardEnvironment) beanFactory.getBean("environment");

        if (environment != null) {
            StringEncryptor encryptor = …
Run Code Online (Sandbox Code Playgroud)

java spring

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

Spring AOP Bean注入漏洞?

我在这里检查了测试项目:https://github.com/loesak/spring-aop-injection-bug

给出以下pom.xml:

<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>com.loesoft</groupId>
    <artifactId>spring-aop-injection-bug</artifactId>
    <version>0.0.1-SNAPSHOT</version>

    <properties>
        <spring.framework.bom.version>4.2.0.RELEASE</spring.framework.bom.version>
        <spring.retry.version>1.1.2.RELEASE</spring.retry.version>
        <aspectj.aspectjweaver>1.8.7</aspectj.aspectjweaver>
        <java.version>1.7</java.version>
        <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
        <project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding>
    </properties>

    <dependencies>
        <dependency>
            <groupId>org.springframework</groupId>
            <artifactId>spring-context</artifactId>
        </dependency>
        <dependency>
            <groupId>org.springframework.retry</groupId>
            <artifactId>spring-retry</artifactId>
        </dependency>
        <dependency>
            <groupId>org.aspectj</groupId>
            <artifactId>aspectjweaver</artifactId>
        </dependency>
    </dependencies>

    <dependencyManagement>
        <dependencies>
            <dependency>
                <groupId>org.springframework</groupId>
                <artifactId>spring-framework-bom</artifactId>
                <version>${spring.framework.bom.version}</version>
                <type>pom</type>
                <scope>import</scope>
            </dependency>
            <dependency>
                <groupId>org.springframework.retry</groupId>
                <artifactId>spring-retry</artifactId>
                <version>${spring.retry.version}</version>
            </dependency>
            <dependency>
                <groupId>org.aspectj</groupId>
                <artifactId>aspectjweaver</artifactId>
                <version>${aspectj.aspectjweaver}</version>
            </dependency>
        </dependencies>
    </dependencyManagement>

    <build>
        <plugins>
            <plugin>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-compiler-plugin</artifactId>
                <version>2.3.2</version>
                <configuration>
                    <source>${java.version}</source>
                    <target>${java.version}</target>
                    <compilerArgument>-Xlint:all</compilerArgument>
                    <showWarnings>true</showWarnings>
                    <showDeprecation>true</showDeprecation>
                </configuration>
            </plugin>
        </plugins>
    </build>
</project>
Run Code Online (Sandbox Code Playgroud)

和Spring配置:

package com.loesoft.spring.aop.injection.bug;

import org.springframework.beans.factory.annotation.Autowired;
import …
Run Code Online (Sandbox Code Playgroud)

spring spring-aop

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

Spring OAuth授权服务器需要范围

我们目前使用的是Spring OAuth授权服务器,但目前不使用OAuth规范中的“ scope”参数。这有点令人痛苦,因为Spring OAuth Authorization Server要求在请求授权代码时明确要求范围。

DefaultOAuth2RequestValidator

if (requestScopes.isEmpty()) {
    throw new InvalidScopeException("Empty scope (either the client or the user is not allowed the requested scopes)");
}
Run Code Online (Sandbox Code Playgroud)

但是,这直接违反了OAuth 2.0规范:

4.1.1。授权请求

    客户端通过添加以下内容来构造请求URI   
 授权端点URI的查询组件的参数   
 根据附录B,使用“ application / x-www-form-urlencoded”格式:

    response_type
          需要。值必须设置为“代码”。

    client_id
          需要。客户标识符,如第2.2节所述。

    redirect_uri
          可选的。如3.1.2节所述。

    范围
          可选的。访问请求的范围,如
          第3.3节。

    州
          推荐的。客户端用来维护的不透明值
          请求和回调之间的状态。授权
          服务器将用户代理重定向回时包括此值
          给客户。该参数应用于防止
          第10.12节中所述的跨站点伪造请求。

Spring Authorization Server这样做有明确的原因吗?我知道我可以用自己的验证器替换它,但是我很好奇为什么这是默认设置,以防万一我遗漏了任何其他理解,但出于遗留原因却不是这样。

谢谢。

编辑

对于那些寻求遵循规范的替代实现的人,这里是我的。它只是检查是否将客户端限制在某些范围内,才需要请求的范围,并且所请求的范围必须在已分配的客户端范围列表中。如果客户端没有分配的范围,则此实现假定允许它们使用任何范围(对资源所做的相同假设)。尚不确定此含义或它是否确实正确。如果不是,请告诉我。

import java.util.Set;

import org.apache.commons.collections.CollectionUtils;
import org.springframework.security.oauth2.common.exceptions.InvalidScopeException;
import org.springframework.security.oauth2.provider.AuthorizationRequest;
import org.springframework.security.oauth2.provider.ClientDetails;
import org.springframework.security.oauth2.provider.TokenRequest;

public class OAuth2RequestValidator
    implements org.springframework.security.oauth2.provider.OAuth2RequestValidator {

  @Override
  public void …
Run Code Online (Sandbox Code Playgroud)

spring spring-boot spring-security-oauth2

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

使用 Spring Data Couchbase 连接到不同的 Couchbase 集群

我正在寻找一种使用 Spring Data Couchbase 连接到两个单独的 Couchbase 集群的方法。查看文档和实现,尚不清楚如何执行此操作,我担心如果有两个扩展的配置,将会出现 bean 名称冲突AbstractCouchbaseConfiguration。唯一看起来很接近的是使用RepositoryOperationsMapping为不同的存储库指定不同的模板。然而,这并不符合我的需求,因为每个 Couchbase 配置都不会意识到另一个配置。我现在看到这样做的唯一方法是要么不使用AbstractCouchbaseConfiguration和设置我自己的bean,要么覆盖所有beanAbstractCouchbaseConfiguration并提供新的bean名称。在每种情况下,我都会覆盖注释中的 couchbase 模板 bean 名称@EnableCouchbaseRepositories。但是,我不确定这是否有效或者是否有更好的选择。

这可能吗?如果可以,我应该采取什么最佳路线?

谢谢

spring-data-couchbase

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

Spring Boot Actuator端点配置似乎没有按预期工作

我有一个非常简单的弹簧启动应用程序.它只是一个zuul反向代理.除了基本设置之外,没有安全性或任何其他设置可以通过eureka和每个服务的路径映射来发现我们的服务.我试图阻止我们的执行器端点被公开暴露,但仍然希望健康检查端点用于我们的ELB但是希望它不要报告它所知道的所有服务的健康状况(我希望它灵敏).在试图找出我需要设置哪些属性以获得预期的行为时,我遇到了非常意外的行为.

例如,当我设置属性时endpoints.sensitive=true,这不会将运行状况检查端点的默认值更改为敏感.这似乎违背了文档所说的内容.

http://docs.spring.io/spring-boot/docs/1.4.2.RELEASE/reference/htmlsingle/#production-ready-customizing-endpoints

同样,您也可以选择全局设置所有端点的"敏感"标志.默认情况下,敏感标志取决于端点的类型(请参见上表).例如,要将所有端点标记为敏感信息除外:

endpoints.sensitive =真

endpoints.info.sensitive = FALSE

事实上,在调试中运行时,我从未看到过org.springframework.boot.actuate.endpoint.EndpointProperties#isSensitive调用.

要使健康端点变得敏感,我需要显式设置属性endpoints.health.sensitive=true.奇怪的是,当提供此设置时,现在org.springframework.boot.actuate.endpoint.EndpointProperties#isSensitive将被调用.

所以这很好,我的健康检查端点现在只是报告UP或DOWN而不是其他任何内容.但现在我希望运行状况检查端点是唯一启用的端点.所以我设置endpoints.enabled=falseendpoints.health.enabled=true应禁用除了健康的所有端点.但是,情况似乎并非如此.在我的情况下,我能够打/routes,/resume,/pause,/hystrix.stream,和其他人.当我用所有端点禁用endpoints.enabled=false然后启用执行器端点时,我才能确定这一点,endpoints.actuator.enabled=true并允许我点击执行器端点,然后报告这些端点已启用.

{
  "links": [
    {
      "rel": "self",
      "href": "http://localhost:9200/actuator"
    },
    {
      "rel": "resume",
      "href": "http://localhost:9200/resume"
    },
    {
      "rel": "pause",
      "href": "http://localhost:9200/pause"
    },
    {
      "rel": "hystrix.stream",
      "href": "http://localhost:9200/hystrix.stream"
    },
    {
      "rel": "env",
      "href": "http://localhost:9200/env"
    },
    {
      "rel": "routes",
      "href": "http://localhost:9200/routes"
    },
    {
      "rel": "health",
      "href": "http://localhost:9200/health" …
Run Code Online (Sandbox Code Playgroud)

spring spring-boot spring-boot-actuator

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

带有 EKS 的 Terraform Kubernetes 提供程序在 configmap 上失败

我已按照说明使用 Terraform 在 AWS 中创建 EKS 集群。

https://www.terraform.io/docs/providers/aws/guides/eks-getting-started.html

我还将连接到集群的输出复制到 ~/.kube/config-eks。我已经验证这成功地工作,因为我已经能够连接到集群并手动部署容器。但是,现在我正在尝试使用 Terraform Kubernetes 提供程序连接到集群,但似乎无法正确配置提供程序。

我已经将提供程序配置为使用我的 kubectl 配置,但是在尝试推送一个简单的 configmap 时,我收到一条错误消息,指出以下内容:

禁止配置映射:用户“system:anonymous”无法在命名空间“kube-system”中创建配置映射

我知道提供商正在获取部分配置,但我似乎无法对其进行身份验证。我怀疑这是因为 EKS 使用 heptio 进行身份验证,我不确定 Terraform 使用的 K8s Go 客户端是否支持 heptio。然而,考虑到在 EKS 进入 GA 时 Terraform 发布了他们的 AWS EKS 支持,我怀疑他们不会更新他们的 Terraform 提供商以使用它。

现在甚至可以这样做吗?有替代品吗?

kubernetes terraform amazon-eks

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

Android:自定义可选ListView项

我几天来一直在寻找这个问题的解决方案.

我正在尝试创建一个自定义ListView列表项,可以选择进行批量编辑.这与列出收件箱中的电子邮件的Gmail应用程序类似,并允许您为操作选择一组电子邮件(删除,移动等).

我的要求是:

  • 必须有自定义的外观.android.R.layout.simple_list_item_ [checked | multiple_choice]布局不适合我正在寻找的东西
  • 我希望它能够使用给定的ListView#setChoiceMode和ListView#getCheckedItemPositions.CheckedTextView也不是.(另一种方法是没问题)
  • 我想在用户选择"编辑模式"时显示复选框
  • 我想修改类似于Android的选择模式的菜单选项

我试图在我的视图中添加自己的复选框,并为它设置一个OnClickListener,将列表项标记为选中/未选中,但这对我来说并不适用.

任何帮助表示赞赏; 即使它只让我90%的方式.

请记住,我正试图在Android 2.1及更高版本上使用它.

谢谢

checkbox android listview

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