use of com.predic8.membrane.core.http.Header in project service-proxy by membrane.
the class HTTPSchemaResolver method resolve.
public InputStream resolve(String url) throws ResourceRetrievalException {
try {
Exchange exc = new Request.Builder().method(Request.METHOD_GET).url(uriFactory, url).header(Header.USER_AGENT, Constants.PRODUCT_NAME + " " + Constants.VERSION).buildExchange();
Response response = getHttpClient().call(exc).getResponse();
response.readBody();
if (response.getStatusCode() != 200) {
ResourceRetrievalException rde = new ResourceRetrievalException(url, response.getStatusCode());
throw rde;
}
return new ByteArrayInputStream(ByteUtil.getByteArrayData(response.getBodyAsStreamDecoded()));
} catch (ResourceRetrievalException e) {
throw e;
} catch (Exception e) {
ResourceRetrievalException rre = new ResourceRetrievalException(url, e);
throw rre;
}
}
use of com.predic8.membrane.core.http.Header in project service-proxy by membrane.
the class SoapOperationExtractorTest method getExchange.
private Exchange getExchange(String path) throws IOException {
Exchange exc = new Exchange(null);
Request req = new Request();
req.create("POST", "http://test", "HTTP/", new Header(), getClass().getClassLoader().getResourceAsStream(path));
exc.setRequest(req);
return exc;
}
use of com.predic8.membrane.core.http.Header in project service-proxy by membrane.
the class OAuth2ResourceTest method testUseRefreshTokenOnTokenExpiration.
// this test also implicitly tests concurrency on oauth2resource
@Test
public void testUseRefreshTokenOnTokenExpiration() throws Exception {
HttpRouter mockAuthServer = new HttpRouter();
mockAuthServer.getRuleManager().addProxyAndOpenPortIfNew(getMockAuthServiceProxy());
mockAuthServer.init();
HttpRouter oauth2Resource = new HttpRouter();
oauth2Resource.getRuleManager().addProxyAndOpenPortIfNew(getConfiguredOAuth2Resource());
oauth2Resource.init();
HttpClient httpClient = new HttpClient();
Exchange excCallResource = new Request.Builder().get(getClientAddress()).buildExchange();
excCallResource = httpClient.call(excCallResource);
String cookie = excCallResource.getResponse().getHeader().getFirstValue("Set-Cookie");
Exchange excFollowRedirectToAuth = new Request.Builder().header("Cookie", cookie).get(excCallResource.getResponse().getHeader().getFirstValue("Location")).buildExchange();
excFollowRedirectToAuth = httpClient.call(excFollowRedirectToAuth);
Exchange excFollowRedirectToClient = new Request.Builder().header("Cookie", cookie).get(excFollowRedirectToAuth.getResponse().getHeader().getFirstValue("Location")).buildExchange();
excFollowRedirectToClient = httpClient.call(excFollowRedirectToClient);
Set<String> accessTokens = new HashSet<>();
int limit = 1000;
List<Thread> threadList = new ArrayList<>();
CountDownLatch cdl = new CountDownLatch(limit);
for (int i = 0; i < limit; i++) {
threadList.add(new Thread(() -> {
try {
cdl.countDown();
cdl.await();
Exchange excCallResource2 = new Request.Builder().get(getClientAddress()).header("Cookie", cookie).buildExchange();
excCallResource2 = httpClient.call(excCallResource2);
synchronized (accessTokens) {
accessTokens.add(excCallResource2.getResponse().getBodyAsStringDecoded());
}
} catch (Exception e) {
e.printStackTrace();
}
}));
}
threadList.forEach(thread -> thread.start());
threadList.forEach(thread -> {
try {
thread.join();
} catch (InterruptedException e) {
e.printStackTrace();
}
});
assertTrue(accessTokens.size() == limit);
}
use of com.predic8.membrane.core.http.Header in project service-proxy by membrane.
the class ResolverTestTriggerTest method handleRequest.
@Override
public Outcome handleRequest(Exchange exc) {
try {
Class<?> clazz = Class.forName("com.predic8.membrane.core.resolver.ResolverTest");
clazz.getField("deployment").set(null, "J2EE");
Object value = router.getResolverMap().getFileSchemaResolver();
Object resolverMap = clazz.getField("resolverMap").get(null);
resolverMap.getClass().getMethod("addSchemaResolver", SchemaResolver.class).invoke(resolverMap, value);
Parameterized p = new Parameterized(clazz);
JUnitCore c = new JUnitCore();
Result run = c.run(Request.runner(p));
StringBuilder sb = new StringBuilder();
sb.append(MAGIC);
for (Failure f : run.getFailures()) {
sb.append(f.toString());
StringWriter stringWriter = new StringWriter();
f.getException().printStackTrace(new PrintWriter(stringWriter));
sb.append(stringWriter.toString());
sb.append("\n");
sb.append("\n");
}
exc.setResponse(Response.ok().header(Header.CONTENT_TYPE, MimeType.TEXT_PLAIN_UTF8).body(sb.toString()).build());
} catch (Throwable t) {
LOG.error(t.getMessage(), t);
}
return Outcome.RETURN;
}
use of com.predic8.membrane.core.http.Header in project service-proxy by membrane.
the class AttributeInfo method analyze.
private void analyze(Types typeUtils) {
if (// already analyzed?
xsdType != null)
return;
if (getE().getParameters().size() != 1)
throw new ProcessingException("Setter is supposed to have 1 parameter.", getE());
VariableElement ve = getE().getParameters().get(0);
switch(ve.asType().getKind()) {
case INT:
xsdType = "spel_number";
return;
case LONG:
xsdType = "spel_number";
return;
case BOOLEAN:
xsdType = "spel_boolean";
return;
case DECLARED:
TypeElement e = (TypeElement) typeUtils.asElement(ve.asType());
if (e.getQualifiedName().toString().equals("java.lang.String")) {
xsdType = "xsd:string";
return;
}
if (e.getSuperclass().getKind() == TypeKind.DECLARED) {
TypeElement superClass = ((TypeElement) typeUtils.asElement(e.getSuperclass()));
if (superClass.getQualifiedName().toString().equals("java.lang.Enum")) {
isEnum = true;
// TODO: restriction, but be carefull about Spring EL usage, for example "#{config.XXX}"
xsdType = "xsd:string";
/*
* <xsd:attribute name=\"target\" use=\"optional\" default=\"body\">\r\n" +
* <xsd:simpleType>\r\n" +
* <xsd:restriction base=\"xsd:string\">\r\n" +
* <xsd:enumeration value=\"body\" />\r\n" +
* <xsd:enumeration value=\"header\" />\r\n" +
* </xsd:restriction>\r\n" +
* </xsd:simpleType>\r\n" +
* </xsd:attribute>\r\n"
*/
return;
}
}
isBeanReference = true;
xsdType = "xsd:string";
return;
default:
throw new ProcessingException("Not implemented: XSD type for " + ve.asType().getKind().toString(), this.getE());
}
}
Aggregations