use of io.gravitee.gateway.handlers.api.definition.Api in project gravitee-gateway by gravitee-io.
the class ApiDeployerStatement method loadApi.
private Api loadApi(String apiDescriptorPath) throws Exception {
URL jsonFile = ApiDeployerStatement.class.getResource(apiDescriptorPath);
Api api = new GraviteeMapper().readValue(jsonFile, Api.class);
if (ApiLoaderInterceptor.class.isAssignableFrom(target.getClass())) {
ApiLoaderInterceptor loader = (ApiLoaderInterceptor) target;
loader.before(api);
}
boolean enhanceHttpPort = target.getClass().getAnnotation(ApiDescriptor.class).enhanceHttpPort();
if (enhanceHttpPort) {
List<Endpoint> endpoints = new ArrayList<>(api.getProxy().getEndpoints());
List<Integer> bindPorts = SocketUtils.getBindPorts();
for (int i = 0; i < bindPorts.size(); i++) {
int port = SocketUtils.getBindPorts().get(i);
if (i < endpoints.size()) {
Endpoint edpt = endpoints.get(i);
URL target = new URL(edpt.getTarget());
URL newTarget = new URL(target.getProtocol(), target.getHost(), port, target.getFile());
edpt.setTarget(newTarget.toString());
edpt.setName(UUID.random().toString());
} else {
// Use the first defined endpoint as reference
HttpEndpoint first = (HttpEndpoint) endpoints.get(0);
URL target = new URL(first.getTarget());
URL newTarget = new URL(target.getProtocol(), target.getHost(), port, target.getFile());
HttpEndpoint edpt = new HttpEndpoint(UUID.random().toString(), newTarget.toString());
edpt.setHttpClientOptions(first.getHttpClientOptions());
api.getProxy().getEndpoints().add(edpt);
}
}
}
if (ApiLoaderInterceptor.class.isAssignableFrom(target.getClass())) {
ApiLoaderInterceptor loader = (ApiLoaderInterceptor) target;
loader.after(api);
}
return api;
}
use of io.gravitee.gateway.handlers.api.definition.Api in project gravitee-gateway by gravitee-io.
the class ApiDeployerStatement method evaluate.
@Override
public void evaluate() throws Throwable {
URL home = ApiDeployerStatement.class.getResource("/gravitee-01/");
System.setProperty("gravitee.home", URLDecoder.decode(home.getPath(), "UTF-8"));
container = new Container();
if (target instanceof PolicyRegister) {
((PolicyRegister) target).register(container.getApplicationContext().getBean(PolicyPluginManager.class));
}
container.start();
Thread.sleep(1000);
ApiManager apiManager = container.getApplicationContext().getBean(ApiManager.class);
Api api = loadApi(target.getClass().getAnnotation(ApiDescriptor.class).value());
try {
apiManager.deploy(api);
base.evaluate();
} finally {
apiManager.undeploy(api.getId());
container.stop();
}
}
use of io.gravitee.gateway.handlers.api.definition.Api in project gravitee-gateway by gravitee-io.
the class ApiManagerTest method add_simpleApi_validationError.
@Test
public void add_simpleApi_validationError() {
Api api = new ApiDefinitionBuilder().name("api-test").proxy(new ProxyDefinitionBuilder().contextPath("/team").target("default", "http://localhost/target").build()).build();
doThrow(new ValidationException()).when(validator).validate(api);
apiManager.deploy(api);
verify(eventManager, never()).publishEvent(ReactorEvent.DEPLOY, api);
}
use of io.gravitee.gateway.handlers.api.definition.Api in project gravitee-gateway by gravitee-io.
the class ApiManagerTest method add_simpleApi.
@Test
public void add_simpleApi() {
Api api = new ApiDefinitionBuilder().name("api-test").proxy(new ProxyDefinitionBuilder().contextPath("/team").target("default", "http://localhost/target").build()).build();
api.setPlans(Collections.singletonList(new Plan()));
apiManager.deploy(api);
verify(eventManager, only()).publishEvent(ReactorEvent.DEPLOY, api);
}
use of io.gravitee.gateway.handlers.api.definition.Api in project gravitee-gateway by gravitee-io.
the class ApiValidatorTest method validate_emptyPathDefinition.
@Test(expected = ValidationException.class)
public void validate_emptyPathDefinition() {
Api definition = new Api();
definition.setName("api-test");
definition.setPaths(new HashMap<>());
new ApiValidator().validate(definition);
}
Aggregations