WadlGeneratorConfigTest.java
/*
* Copyright (c) 2010, 2022 Oracle and/or its affiliates. All rights reserved.
*
* This program and the accompanying materials are made available under the
* terms of the Eclipse Public License v. 2.0, which is available at
* http://www.eclipse.org/legal/epl-2.0.
*
* This Source Code may also be made available under the following Secondary
* Licenses when the conditions for such availability set forth in the
* Eclipse Public License v. 2.0 are satisfied: GNU General Public License,
* version 2 with the GNU Classpath Exception, which is available at
* https://www.gnu.org/software/classpath/license.html.
*
* SPDX-License-Identifier: EPL-2.0 OR GPL-2.0 WITH Classpath-exception-2.0
*/
/*
* To change this template, choose Tools | Templates
* and open the template in the editor.
*/
package org.glassfish.jersey.server.wadl.config;
import java.util.List;
import javax.ws.rs.core.MediaType;
import org.glassfish.jersey.server.TestInjectionManagerFactory;
import org.glassfish.jersey.server.model.Parameter;
import org.glassfish.jersey.server.model.ResourceMethod;
import org.glassfish.jersey.server.wadl.WadlGenerator;
import org.glassfish.jersey.server.wadl.internal.ApplicationDescription;
import org.junit.jupiter.api.Assertions;
import org.junit.jupiter.api.Test;
import com.sun.research.ws.wadl.Application;
import com.sun.research.ws.wadl.Method;
import com.sun.research.ws.wadl.Param;
import com.sun.research.ws.wadl.Representation;
import com.sun.research.ws.wadl.Request;
import com.sun.research.ws.wadl.Resource;
import com.sun.research.ws.wadl.Resources;
import com.sun.research.ws.wadl.Response;
/**
* TODO: DESCRIBE ME<br>
* Created on: Aug 2, 2008<br>
*
* @author <a href="mailto:martin.grotzke@freiheit.com">Martin Grotzke</a>
* @author Miroslav Fuksa
*/
public class WadlGeneratorConfigTest {
@Test
public void testBuildWadlGeneratorFromGenerators() {
final Class<MyWadlGenerator> generator = MyWadlGenerator.class;
final Class<MyWadlGenerator2> generator2 = MyWadlGenerator2.class;
WadlGeneratorConfig config = WadlGeneratorConfig
.generator(generator)
.generator(generator2)
.build();
TestInjectionManagerFactory.BootstrapResult result = TestInjectionManagerFactory.createInjectionManager();
WadlGenerator wadlGenerator = config.createWadlGenerator(result.injectionManager);
Assertions.assertEquals(MyWadlGenerator2.class, wadlGenerator.getClass());
Assertions.assertEquals(MyWadlGenerator.class, ((MyWadlGenerator2) wadlGenerator).getDelegate().getClass());
}
@Test
public void testBuildWadlGeneratorFromDescriptions() {
TestInjectionManagerFactory.BootstrapResult result = TestInjectionManagerFactory.createInjectionManager();
final String propValue = "bar";
WadlGeneratorConfig config = WadlGeneratorConfig.generator(MyWadlGenerator.class)
.prop("foo", propValue)
.build();
WadlGenerator wadlGenerator = config.createWadlGenerator(result.injectionManager);
Assertions.assertEquals(MyWadlGenerator.class, wadlGenerator.getClass());
Assertions.assertEquals(((MyWadlGenerator) wadlGenerator).getFoo(), propValue);
final String propValue2 = "baz";
config = WadlGeneratorConfig.generator(MyWadlGenerator.class)
.prop("foo", propValue).generator(MyWadlGenerator2.class)
.prop("bar", propValue2)
.build();
wadlGenerator = config.createWadlGenerator(result.injectionManager);
Assertions.assertEquals(MyWadlGenerator2.class, wadlGenerator.getClass());
final MyWadlGenerator2 wadlGenerator2 = (MyWadlGenerator2) wadlGenerator;
Assertions.assertEquals(wadlGenerator2.getBar(), propValue2);
Assertions.assertEquals(MyWadlGenerator.class, wadlGenerator2.getDelegate().getClass());
Assertions.assertEquals(((MyWadlGenerator) wadlGenerator2.getDelegate()).getFoo(), propValue);
}
@Test
public void testCustomWadlGeneratorConfig() {
final String propValue = "someValue";
final String propValue2 = "baz";
class MyWadlGeneratorConfig extends WadlGeneratorConfig {
@Override
public List<WadlGeneratorDescription> configure() {
return generator(MyWadlGenerator.class)
.prop("foo", propValue)
.generator(MyWadlGenerator2.class)
.prop("bar", propValue2).descriptions();
}
}
TestInjectionManagerFactory.BootstrapResult result = TestInjectionManagerFactory.createInjectionManager();
WadlGeneratorConfig config = new MyWadlGeneratorConfig();
WadlGenerator wadlGenerator = config.createWadlGenerator(result.injectionManager);
Assertions.assertEquals(MyWadlGenerator2.class, wadlGenerator.getClass());
final MyWadlGenerator2 wadlGenerator2 = (MyWadlGenerator2) wadlGenerator;
Assertions.assertEquals(wadlGenerator2.getBar(), propValue2);
Assertions.assertEquals(MyWadlGenerator.class, wadlGenerator2.getDelegate().getClass());
Assertions.assertEquals(((MyWadlGenerator) wadlGenerator2.getDelegate()).getFoo(), propValue);
}
public abstract static class BaseWadlGenerator implements WadlGenerator {
public Application createApplication() {
return null;
}
public Method createMethod(org.glassfish.jersey.server.model.Resource r, ResourceMethod m) {
return null;
}
public Request createRequest(org.glassfish.jersey.server.model.Resource r,
ResourceMethod m) {
return null;
}
public Param createParam(org.glassfish.jersey.server.model.Resource r,
ResourceMethod m, Parameter p) {
return null;
}
public Representation createRequestRepresentation(
org.glassfish.jersey.server.model.Resource r, ResourceMethod m,
MediaType mediaType) {
return null;
}
public Resource createResource(org.glassfish.jersey.server.model.Resource r, String path) {
return null;
}
public Resources createResources() {
return null;
}
public List<Response> createResponses(org.glassfish.jersey.server.model.Resource r,
ResourceMethod m) {
return null;
}
public String getRequiredJaxbContextPath() {
return null;
}
public void init() {
}
public void setWadlGeneratorDelegate(WadlGenerator delegate) {
}
@Override
public ExternalGrammarDefinition createExternalGrammar() {
return new ExternalGrammarDefinition();
}
@Override
public void attachTypes(ApplicationDescription egd) {
}
}
public static class MyWadlGenerator extends BaseWadlGenerator {
private String _foo;
/**
* @return the foo
*/
public String getFoo() {
return _foo;
}
/**
* @param foo the foo to set
*/
public void setFoo(String foo) {
_foo = foo;
}
}
public static class MyWadlGenerator2 extends BaseWadlGenerator {
private String _bar;
private WadlGenerator _delegate;
/**
* @return the delegate
*/
public WadlGenerator getDelegate() {
return _delegate;
}
/**
* @return the foo
*/
public String getBar() {
return _bar;
}
/**
* @param foo the foo to set
*/
public void setBar(String foo) {
_bar = foo;
}
public void setWadlGeneratorDelegate(WadlGenerator delegate) {
_delegate = delegate;
}
}
public static class Foo {
String s;
public Foo(String s) {
this.s = s;
}
}
public static class Bar {
}
public static class MyWadlGenerator3 extends BaseWadlGenerator {
Foo foo;
Bar bar;
/**
* @param foo the foo to set
*/
public void setFoo(Foo foo) {
this.foo = foo;
}
public void setBar(Bar bar) {
this.bar = bar;
}
}
@Test
public void testBuildWadlGeneratorFromDescriptionsWithTypes() {
WadlGeneratorConfig config = WadlGeneratorConfig
.generator(MyWadlGenerator3.class)
.prop("foo", "string")
.prop("bar", new Bar()).build();
TestInjectionManagerFactory.BootstrapResult result = TestInjectionManagerFactory.createInjectionManager();
WadlGenerator wadlGenerator = config.createWadlGenerator(result.injectionManager);
Assertions.assertEquals(MyWadlGenerator3.class, wadlGenerator.getClass());
MyWadlGenerator3 g = (MyWadlGenerator3) wadlGenerator;
Assertions.assertNotNull(g.foo);
Assertions.assertEquals(g.foo.s, "string");
Assertions.assertNotNull(g.bar);
}
}