我一直在探索使用java 8将对象从一种类转换为另一种类.我所拥有的是一堆xjc生成的jaxb类.这些类没有足够友好的结构,因为它们映射xml更多的结构而不是业务对象结构.我不愿意编辑生成的类,因为我喜欢在架构更改时重新生成它们,而不必担心保留自定义.
我有一个类似的架构:
<xs:element name="farm">
<xs:sequence>
<xs:element ref="animal" minOccurs="0" maxOccurs="unbounded"/>
</xs:sequence>
</xs:element>
<xs:element name="animal">
<xs:complexType>
<xs:sequence>
<xs:element ref="goat"/>
<xs:element ref="sheep"/>
</xs:sequence>
<xs:complexType>
</xs:element>
<xs:element name="goat">
<xs:complexType>
<xs:sequence>
goat fields
</xs:sequence>
<xs:complexType>
</xs:element>
<xs:element name="sheep">
<xs:complexType>
<xs:sequence>
sheep fields
</xs:sequence>
<xs:complexType>
</xs:element>
Run Code Online (Sandbox Code Playgroud)
这会生成类似Java的东西:
class Farm
public List<Animal> getAnimals()
class Animal
public Goat getGoat()
public String getGoatField()
public Sheep getSheep()
public String getSheepField()
Run Code Online (Sandbox Code Playgroud)
getGoat并且getSheep可以返回null,但它们不能都为null.同样,它们中至少有一个必须为空.这是通过业务规则和数据库约束来强制执行的,但不是在xml中强制执行的(尽管如果有人建议将xml结构化为更像所需的VO,我会全力以赴)
我想把这个班变成
class FarmWrapper
public ArrayList<AnimalVO> getAnimals()
//optional features tbd
//possibly public ArrayList<GoatVO> getGoats()
//possibly public …Run Code Online (Sandbox Code Playgroud) 我正在使用Dropwizard 0.9.2,我想创建一个不需要GET身份验证的资源,并且需要对POST进行基本身份验证.
我试过了
@Path("/protectedPing")
@Produces(MediaType.TEXT_PLAIN)
public class ProtectedPing {
@GET
public String everybody() {
return "pingpong";
}
@PermitAll
@POST
public String authenticated(){
return "secret pingpong";
}
Run Code Online (Sandbox Code Playgroud)
同
CachingAuthenticator<BasicCredentials, User> ca = new CachingAuthenticator<>(environment.metrics(), ldapAuthenticator, cbSpec);
AdminAuthorizer authorizer = new AdminAuthorizer();
BasicCredentialAuthFilter<User> bcaf = new BasicCredentialAuthFilter.Builder<User>().setAuthenticator(ca).setRealm("test-oauth").setAuthorizer(authorizer).buildAuthFilter();
environment.jersey().register(bcaf);
environment.jersey().register(RolesAllowedDynamicFeature.class);
environment.jersey().register(new AuthValueFactoryProvider.Binder<>(User.class));
environment.jersey().register(new ProtectedPing());
Run Code Online (Sandbox Code Playgroud)
这似乎导致所有要求"/ protectedPing"的请求需要基本身份验证.
在Dropwizard 0.9.2中,文档说如果我有一个可选的受保护资源,则创建一个自定义过滤器.我假设我需要这样做,但我不知道从哪里开始,或者我是否真的需要做什么.
我有一个包含任意数量元素的jlist.我想限制用户只从列表中选择3个元素.到目前为止,除了从那里制作列表选择监听器和编码之外,我还没有找到任何非常方便的方法.
在Swing中有任何内置方式或最佳实践吗?