TypeElement在注释处理器中获取a 时,您可以TypeMirror使用方法请求其超类(或更具体地说,它)getSuperClass().据的JavaDoc,一个类型不明确地延伸任何东西(换句话说,Object是超类),或者是一个接口将返回一个NoType带有NONE作为TypeKind.
无视整个模型/镜像API事物似乎不顾一切地让您在每个机会中迷惑一下这一事实,我将如何可靠地检查这一点?这是一些代码提取:
//Cast is safe since TypeKind is checked before this
final TypeElement el = (TypeElement)annotatedElement;
...
final TypeMirror parent = el.getSuperclass();
//Checking whether "nothing" is extended
if(parent.getKind().equals(TypeKind.NONE) && parent instanceof NoType) {
...
}
Run Code Online (Sandbox Code Playgroud)
这是正确的方式吗?看起来相当笨重.由于equalsTypeMirror的方法不应该用于语义相等性检查,我想知道它是否安全使用它TypeKind.我的直觉是肯定的,因为它是一个枚举,但后来我对此表示怀疑instanceof.
有没有更好的方法呢?整个javax.lang.model包及其子代在整个商店都有交叉引用,我从来都不清楚什么是最好的方法.对于某些东西有一些有用的实用方法,然后看似简单的任务需要如上所述的可疑杂技.
我从注释处理器中的Java注释中获取了一些值来生成元数据.其中一些值应该表示XML元素或属性名称.我想根据XML规范验证输入以确定提供的值是否实际上是合法的NCNames.在这种情况下,只有本地名称很重要,名称空间URI在此处不起作用.
是否有一些简单的方法可以找出字符串是否是合法的XML元素或属性名称?我最好使用一些在Java SE中可用的XML API.我首先要做的就是削减依赖关系的原因之一.我正在使用JDK 7,因此我可以访问最新的类/方法.
到目前为止,浏览内容处理程序类和SAX/DOM的东西并没有产生任何结果.
我有一个数字签名的 XML 文件和签名者的公共证书,我想验证签名。响应 xml 的原始内容返回 false,但是当我修改 xml 时它返回 true。我的java代码如下:-
import java.io.FileInputStream;
import java.io.IOException;
import java.security.GeneralSecurityException;
import java.security.Security;
import java.security.cert.CertificateFactory;
import java.security.cert.X509Certificate;
import javax.xml.crypto.dsig.XMLSignature;
import javax.xml.crypto.dsig.XMLSignatureFactory;
import javax.xml.crypto.dsig.dom.DOMValidateContext;
import javax.xml.parsers.DocumentBuilder;
import javax.xml.parsers.DocumentBuilderFactory;
import org.bouncycastle.jce.provider.BouncyCastleProvider;
import org.w3c.dom.Document;
import org.w3c.dom.NodeList;
public class SignatureVerifierOneFile {
public static void main(String[] args){
Security.addProvider(new BouncyCastleProvider());
//Signed xml path
String signedXmlPath = "C:/signedXML.xml";
SignatureVerifierOneFile signatureVerifier = new SignatureVerifierOneFile();
boolean signatureStatus =
signatureVerifier.verify(signedXmlPath,"C:/Cert.cer");
System.out.println("xml signature validateionis " + signatureStatus);
}
public boolean verify(String signedXml,String publicKeyFile) {
boolean verificationResult = …Run Code Online (Sandbox Code Playgroud) 我试图找到一个更好的解决方案,将纯文本(但每个字段的预定义长度)转换为xml.例如,输入文本可以是"Testuser new york 10018",前11个字符表示用户名,接下来的12个字符表示城市,接下来的5个字符表示邮政编码.所以我需要使用预定义的字段长度从上面的字符串形成一个xml.
我在想两种方法
通过在输入文本上使用子字符串函数定义业务实体并填充实体属性,然后将实体序列化为xml
预定义xml结构,使用xslt导航到每个节点并使用输入文本上的子字符串函数填充值.
我有一些Java代码使用Java Domino API(使用NCSO.jar)通过IIOP连接Domino数据库.现在的一个新要求是,如果要连接的服务器是群集的,则应该可以利用此功能,并在当前连接的服务器发生故障时切换到群集中的故障转移服务器.
不幸的是,Domino Java API是彻头彻尾的晦涩,在本地和远程使用API而不是IIOP之间存在细微差别,很少有非常明确的解释和奇怪的差异取决于您提供方法的参数.
我设法从这里收集了一些信息...... openWithFailoverMethod是否有效?
我还检查了IBM信息中心的文档.
我试过的第一件事就是:
Session session = NotesFactory.createSession(host + ":" + port, user, password);
Database db = session.getDatabase(null, databaseName, false);
db.openWithFailover(host, databaseName);
Run Code Online (Sandbox Code Playgroud)
getDatabase对于IIOP操作,服务器名称的第一个参数显然必须为null.openWithFailover当它已经在会话中时,如何在方法中再次指定服务器名称时我感到很神秘,但我想你可以通过会话连接到集群,然后在open方法中指定主服务器.但是,为什么需要两次提供数据库名称并不十分清楚.如果无法访问数据库,那么最后一个参数表明不应该创建数据库(省略它并且它默认为true;多么美妙).
不幸的是,这NotesException: This database object is already open as E:\Lotus\Domino\data\mail-in\EDITEST.nsf在我脸上吐了一个例外.它出现在该openWithFailover方法的行上.
显然,第一次调用getDatabase已打开它,并且没有关闭方法或选项只能在不实际打开它的情况下获取对象.所述Database类是一个接口,所以没有静态方法来获取这样的对象或以其他方式将其实例化的一种方式.我查了一下,我找到的唯一选择是openDatabase在课堂上使用DbDirectory.猜猜那是做什么的.现在该方法确实有一个带有布尔值的替代方法,表明您是否希望使用故障转移,但根据文档,对于IIOP操作,它总是错误的.
根据此页面,您可以Database通过getDatabase使用两个空参数调用来获取空对象.所以我尝试了这个:
Session session = NotesFactory.createSession(host + ":" + port, user, password);
Database db = session.getDatabase(null, null, false);
db.openWithFailOver(host, …Run Code Online (Sandbox Code Playgroud) 我正在尝试使用一个简单的 JAX RS 示例,但我没有这样做。
网页.xml
<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://java.sun.com/xml/ns/javaee" xmlns:jsp="http://java.sun.com/xml/ns/javaee/jsp" xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd" id="WebApp_ID" version="3.0">
<display-name>PLAYGROUND</display-name>
<servlet-mapping>
<servlet-name>playground.Rest</servlet-name>
<url-pattern>/api/*</url-pattern>
</servlet-mapping>
</web-app>
Run Code Online (Sandbox Code Playgroud)
REST.java
package playground;
import javax.ws.rs.GET;
import javax.ws.rs.Path;
import javax.ws.rs.core.Application;
public class Rest extends Application {
@GET
@Path("hello")
public String helloworld() {
return "Hello World!";
}
}
Run Code Online (Sandbox Code Playgroud)
http://localhost/{warcontext}/api/hello使用浏览器 (GET)访问给我 404 错误状态
这可能是非常愚蠢的事情,但我无法弄清楚。
使用:JBoss EAP 6.1.0 (Java EE 6)
我有两个JPA实体类,Group和User
Group.java:
@Entity
@Table(name = "groups")
public class Group {
@Id
@GeneratedValue
private int id;
@ManyToMany
@JoinTable(name = "groups_members", joinColumns = {
@JoinColumn(name = "group_id", referencedColumnName = "id")
}, inverseJoinColumns = {
@JoinColumn(name = "user_id", referencedColumnName = "id")
})
private Collection<User> members;
//getters/setters here
}
Run Code Online (Sandbox Code Playgroud)
User.java:
@Entity
@Table(name = "users")
public class User {
private int id;
private String email;
private Collection<Group> groups;
public User() {}
@Id
@GeneratedValue
public int getId() {
return id;
}
public void setId(int id) { …Run Code Online (Sandbox Code Playgroud) 总的来说,Kotlin中的每个设计决策本身都很棒,并且可以很好地过渡到Java。作为一名Java开发人员,您可以开始将其中的Kotlin视为具有更少样板的更简洁的Java进行编码,然后平稳地进入函数式编程等更高级的方面。
然而,我想知道的一件事是为什么其设计者决定做出==与“行为相同”的行为equals,然后引入===参照相等性检查。我可以想像试图吸引其他Java开发人员参与其中,让他们看到您的Kotlin代码,然后思考:“哦,不,应该在等号调用的整个地方进行引用检查!”
离开Java约定的思路是什么?为了明确起见,我完全了解Kotlin 和==或之间的区别,我只是想知道为什么。equals===
假设我有以下Kotlin代码:
fun main(args: Array<String>) {
val a = "test"
println(args.first())
}
Run Code Online (Sandbox Code Playgroud)
如果我传入一个参数$a,输出将是$a.据我了解,Kotlin通过在编译时生成输出代码来处理String模板,可能是使用StringBuilder.有没有办法在当前上下文中评估关于模板的源代码中没有的字符串?字符串模板非常有用,能够评估来自动态上下文的表达式(例如配置文件)会很棒,但据我所知,这是不可能的.
缺乏这一点,对此有什么好处?调用脚本引擎?
java ×7
kotlin ×2
xml ×2
.net ×1
c# ×1
collections ×1
contains ×1
dynamic ×1
equality ×1
hibernate ×1
iiop ×1
inheritance ×1
jakarta-ee ×1
jax-rs ×1
jboss ×1
jpa ×1
lotus-domino ×1
lotus-notes ×1
mirror ×1
reference ×1
rest ×1
templates ×1
validation ×1
xslt ×1