我正在使用的代码是使用jaxb2-maven-pluginfrom org.codehaus.mojo从XSD架构生成Java类.我正在寻找一种方法来自动实现equals()和hashCode()这些类的方法,但似乎没有一种方式.我知道还有其他JAXB2 Maven插件可以做到这一点(例如http://confluence.highsource.org/display/J2B/Home),但是我想知道你们之前是否遇到过这个问题,如果有办法的话修理它.我正在使用xjc目标生成类.
我需要编写一个测试函数,如果给定的字符串是"空白",在某种意义上它只包含空白字符.空白字符如下:
'\u0009',
'\u000A',
'\u000B',
'\u000C',
'\u000D',
' ',
'\u0085',
'\u00A0',
'\u1680',
'\u180E',
'\u2000',
'\u2001',
'\u2002',
'\u2003',
'\u2004',
'\u2005',
'\u2006',
'\u2007',
'\u2008',
'\u2009',
'\u200A',
'\u2028',
'\u2029',
'\u202F',
'\u205F',
'\u3000'
Run Code Online (Sandbox Code Playgroud)
该函数将被调用很多次,因此它必须真正,真正高效.但是不应该占用太多内存(比如将每个字符映射到数组中的true/false).到目前为止我尝试过的事情:
if (!whitespaceCharactersMap[str[index]]) ...)的哈希集的每个字符串字符- 运行良好我目前的解决方案使用硬编码比较:
function(str) {
var length = str.length;
if (!length) {
return true;
}
for (var index = 0; index < length; index++)
{
var c = str[index];
if (c === ' ')
{
// skip
}
else if (c …Run Code Online (Sandbox Code Playgroud)我正在寻找一些关于文本文档中使用Unicode字符的统计数据(带有任何标记).谷歌搜索没有结果.
背景:我目前正在开发一种基于有限状态机的文本处理工具.字符的统计数据可能有助于搜索正确的过渡.例如拉丁字符可能是最常用的,因此首先检查它们是否有意义.
有没有人偶然收集或看到这样的统计数据?
(我不专注于特定的语言或语言环境.想像XML解析器那样的通用解析器.)
我正在开发一个用于JSON/XML处理的JavaScript库.我的库在浏览器以及Node.js(带xmldom和xmlhttprequest模块)中工作.
其中一位用户最近要求提供RequireJS支持.我已经看了一下RequireJS/AMD的东西,认为这是一个很好的方法,所以我想提供这个.
但是我想保留可移植性:我的库必须在浏览器(有和没有RequireJS)以及Node.js中工作.在浏览器环境中,我不依赖xmldom或xmlhttprequest因为这些东西是由浏览器本身提供的.
我的问题是:我如何实现我的库,以便它在浏览器以及没有RequireJS的Node.js中工作?
一点历史和我目前的解决方案
我最初为浏览器编写了我的库.所以它只是创建了一个全局范围的对象并将所有内容放入其中:
var Jsonix = { ... };
Run Code Online (Sandbox Code Playgroud)
后来用户要求Node.js支持.所以我补充说:
if(typeof require === 'function'){
module.exports.Jsonix = Jsonix;
}
Run Code Online (Sandbox Code Playgroud)
我还必须导入上面提到的几个模块.我有条件地做了,取决于require功能是否可用:
if (typeof require === 'function')
{
var XMLHttpRequest = require('xmlhttprequest').XMLHttpRequest;
return new XMLHttpRequest();
}
Run Code Online (Sandbox Code Playgroud)
现在有了RequireJS这个故事.如果存在RequireJS,则该require函数也存在.但模块加载的工作方式不同,我必须使用define函数等.我也不能只是require因为require在RequireJS中有一个异步API.此外,如果我的库是通过RequireJS加载的,它似乎处理源代码并检测require('something')即使我有条件地执行它
if (typeof require === 'function' && typeof require.specified !== 'function) ...
Run Code Online (Sandbox Code Playgroud)
RequireJS仍然检测到require('xmlhttprequest')尝试加载相应的JS文件.
目前我正在寻求以下解决方案.
// Module factory function, AMD style …Run Code Online (Sandbox Code Playgroud) 我的问题涉及编写JAXB插件,特别是JAXB代码模型.
ClassOutline(及其同伴)和JClass(和同伴)和CClass(和同伴)的角色是什么?在查看相应包中的类列表时,不清楚什么是鸡,什么是鸡蛋.
我的解释是CClass(CPropertyInfo,CEnumConstant...)是由XJC在XSD的初稿解析时创建的.然后,一些神奇的发生,这种模型转化为JClass(JFieldVar,JEnumConstant,...),这转变过程中的自定义应用.然后调用插件.ClassOutline用作这两个模型之间的桥梁.总之看起来非常复杂.
通过这些并行模型,我相信可以通过多种方式获得相同的信息.例如,类字段类型:
JClass#fields()→交通JFieldVar#type→交通JTypeCClassInfo#getProperties()→交通CPropertyInfo#baseType→交通JType我正在寻找上述模型生命周期的详细解释.谢谢.
是否可以验证仅在层次结构中具有祖先或根证书的签名?
免责声明:我是证书处理的新手,所以请原谅天真的术语.
考虑以下情况.
我的问题是:SP是否可以验证CertIdP签名的邮件的签名只有其父证书CertCA?
背景故事,为什么要这样.
我们正在使用PicketLink实现基于SAML的SSO.我们使用PicketLink的SAML2SignatureValidationHandler来验证签名.为此,服务提供商(SP)需要在其密钥库中具有IdP证书.当签名的SAML断言传递给SP时,此处理程序使用IdP的证书来验证签名.
上述过程运作良好,但我们有一些组织问题.此过程假定SP具有IdP的验证证书.如果出现问题,必须在SP端更换IdP的证书.我们可能会有大量的SP(当数不是数千时),所以这是一个很大的努力.
由于CertIdP和CertSP均由IdP和SP明确信任的相同授权机构(CA)颁发,因此我们认为可以使用CA的证书进行签名验证.如果这样做,这可能消除了在IdP和SP之间交换证书的需要.CA的证书也非常"长寿",所以如果只需要在永恒中交换一次(永恒,在我们的情况下大约10 - 20年).
但是,我不确定在技术上是否可以验证使用CertIdP签名的签名只有父级CertCA.可能吗?或者我们在这里完全错误的轨道?
如果它是相关的,我们在SP方面的Java/JBoss平台上,IdP是第三方软件.
更新:
这是我从IdP获得的签名:
<ds:Signature xmlns:ds="http://www.w3.org/2000/09/xmldsig#">
<ds:SignedInfo>
<ds:CanonicalizationMethod Algorithm="http://www.w3.org/2001/10/xml-exc-c14n#" />
<ds:SignatureMethod Algorithm="http://www.w3.org/2000/09/xmldsig#rsa-sha1" />
<ds:Reference URI="#_...">
<ds:Transforms>
<ds:Transform
Algorithm="http://www.w3.org/2000/09/xmldsig#enveloped-signature" />
<ds:Transform Algorithm="http://www.w3.org/2001/10/xml-exc-c14n#">
<ec:InclusiveNamespaces xmlns:ec="http://www.w3.org/2001/10/xml-exc-c14n#"
PrefixList="ds saml samlp" />
</ds:Transform>
</ds:Transforms>
<ds:DigestMethod Algorithm="http://www.w3.org/2000/09/xmldsig#sha1" />
<ds:DigestValue>r...=</ds:DigestValue>
</ds:Reference>
</ds:SignedInfo>
<ds:SignatureValue>X...==</ds:SignatureValue>
</ds:Signature>
Run Code Online (Sandbox Code Playgroud) 我们的情况如下:
APP_ACCESS与表(APP_OWNER)的"所有者"不同.这是数据库管理的一项硬性要求.APP_OWNER)被硬编码到本机查询中,a-la:"SELECT * FROM " + DatabaseSchemaConstants.SCHEMA_NAME + ".LOCATION"
毋庸置疑,我们对此硬编码并不特别满意,因为"所有者"用户名的更改意味着代码中的更改 - 这对于维护来说绝对不利.
所以这是我的问题:
我们如何在纯JPA中为本机查询配置默认数据库模式?
这是我到目前为止发现的:
具体来说,这个答案提出了持久性单元和orm.xml文件的组合:
<?xml version="1.0" encoding="UTF-8"?>
<entity-mappings xmlns="http://java.sun.com/xml/ns/persistence/orm"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://java.sun.com/xml/ns/persistence/orm http://java.sun.com/xml/ns/persistence/orm_1_0.xsd"
version="1.0">
<persistence-unit-metadata>
<persistence-unit-defaults>
<schema>myschema</schema>
</persistence-unit-defaults>
</persistence-unit-metadata>
</entity-mappings>
Run Code Online (Sandbox Code Playgroud)
但我认为这不适用于本机查询(我们目前正在测试它).这里的另一个问题orm.xml是不是真的用于配置.(但它仍然比Java代码中的硬编码更好).
另一篇帖子有类似答案:
还有一个问题:
看到这个建议使用的答案{h-schema}.看起来很合适,但它是特定于Hibernate的.我们想继续使用"纯JPA".另一个问题是我在Hibernate文档中找不到{h-schema}的任何提及,因此我们依赖此功能是不安全的.
是否有标准的JPA方式为所有内容设置默认数据库架构 - JPA entites和查询以及本机查询?
或者,如果我们能够在我们的本机查询中使用配置中的某些"参数"或"设置",则可以解决此问题.
我们通过Spring Data使用MongoDB,并依靠findAndModify操作来更新现有实体或创建新实体.
在findAndModify我们可以配置为使用返回实体的旧状态或新实体returnNew(...).
有没有办法从旧的和新的实体返回findAndModify?
我们需要在更新之前和之后比较实体状态,这就是我们需要两个实例的原因.
目前我们正在诉诸requireNew(false)并手动更新旧实例的副本,如下所示:
public Pair<Data> saveItems(String id, List<Item> items) {
final Query findById = ...;
final Update update = new Update();
// This is what we actually update
update.set(ENTITY_FIELD_ITEMS, newItems);
update.inc(ENTITY_FIELD_VERSION, 1);
// Try updating and return the old data
final Data oldData = operations.findAndModify(findById, update,
FindAndModifyOptions.options().upsert(true).returnNew(false), Data.class);
// Copy or create new instance
final Data newData;
if (oldData == null) {
newData = new Data(id);
} …Run Code Online (Sandbox Code Playgroud) 我有一个Stream<SomeClass> stream,而SomeClass具有布尔方法isFoo()和isBar().
我想,以检查数据流中的所有元素同时拥有isFoo()和isBar()等于true.我可以通过SomeClass:isFoo和SomeClass::isBarlambdas 单独检查这个条件.
但是我如何将这两个lambdas与像and/ 这样的逻辑运算符结合起来&&?
一个明显的方法是写一个额外的lambda:
stream.allMatch(item -> item.isFoo() && item.isBar());
Run Code Online (Sandbox Code Playgroud)
但是我想避免写一个额外的lambda.
另一种方式是投射到Predicate<? super SomeClass>:
stream.allMatch(((Predicate<? super SomeClass>) SomeClass::isFoo).and(SomeClass::isBar));
Run Code Online (Sandbox Code Playgroud)
有没有更好的方法 - 没有演员表和明确的lambdas?
如果可以从另一个方法中直接或间接地调用或访问某些方法,如何在Eclipse中查找?
假设我想重构A.one()可能会受到副作用的负面影响D.four().因此,我想知道是否D.four()可以从中调用A.one().我可以看到A.one()使用Call Hierarchy 调用哪些方法.我可以导航调用树,最终找到A.one()调用B.two()哪个调用的C.three()调用D.four().
在Eclipse中是否有办法以某种方式自动进行此搜索?
PS."调用层次结构对话框"中有一个"过滤器..."选项,但它只隐藏匹配的名称.
java ×4
javascript ×2
amd ×1
certificate ×1
eclipse ×1
hibernate ×1
java-8 ×1
jaxb ×1
jaxb2 ×1
jaxb2-basics ×1
jcodemodel ×1
jpa ×1
js-amd ×1
lambda ×1
maven ×1
mongodb ×1
mongodb-java ×1
native-sql ×1
node.js ×1
oracle ×1
performance ×1
picketlink ×1
requirejs ×1
saml ×1
saml-2.0 ×1
spring ×1
spring-data ×1
unicode ×1
xjc ×1