本文整理汇总了Java中io.apiman.gateway.engine.policy.IPolicyContext.setAttribute方法的典型用法代码示例。如果您正苦于以下问题:Java IPolicyContext.setAttribute方法的具体用法?Java IPolicyContext.setAttribute怎么用?Java IPolicyContext.setAttribute使用的例子?那么, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类io.apiman.gateway.engine.policy.IPolicyContext
的用法示例。
在下文中一共展示了IPolicyContext.setAttribute方法的13个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的Java代码示例。
示例1: forwardAuthRoles
import io.apiman.gateway.engine.policy.IPolicyContext; //导入方法依赖的package包/类
private void forwardAuthRoles(IPolicyContext context, KeycloakOauthConfigBean config,
AccessToken parsedToken) {
if (config.getForwardRoles().getActive()) {
Access access = null;
if (config.getForwardRoles().getApplicationName() != null) {
access = parsedToken.getResourceAccess(config.getForwardRoles().getApplicationName());
} else {
access = parsedToken.getRealmAccess();
}
if (access == null || access.getRoles() == null) {
context.setAttribute(AuthorizationPolicy.AUTHENTICATED_USER_ROLES, Collections.<String>emptySet());
} else {
context.setAttribute(AuthorizationPolicy.AUTHENTICATED_USER_ROLES, access.getRoles());
}
}
}
示例2: doApply
import io.apiman.gateway.engine.policy.IPolicyContext; //导入方法依赖的package包/类
@Override
protected void doApply(ApiRequest request, IPolicyContext context, TransformationConfigBean config,
IPolicyChain<ApiRequest> chain) {
DataFormat clientFormat = config.getClientFormat();
DataFormat serverFormat = config.getServerFormat();
if (isValidTransformation(clientFormat, serverFormat)) {
context.setAttribute(CLIENT_FORMAT, clientFormat);
context.setAttribute(SERVER_FORMAT, serverFormat);
request.getHeaders().put(CONTENT_TYPE, serverFormat.getContentType());
request.getHeaders().remove(CONTENT_LENGTH);
request.getHeaders().put(ACCEPT, serverFormat.getContentType());
}
super.doApply(request, context, config, chain);
}
示例3: doApply
import io.apiman.gateway.engine.policy.IPolicyContext; //导入方法依赖的package包/类
/**
* See {@link AbstractMappedPolicy#doApply(ApiRequest, IPolicyContext, Object, IPolicyChain)}
*/
@Override
protected void doApply(ApiRequest request, IPolicyContext context, CookieIssueConfigBean config,
IPolicyChain<ApiRequest> chain) {
// skip if path matcher is not use, or request URL doesn't match
if (null == pathMatcher || !pathMatcher.matcher(request.getDestination()).matches()) {
context.setAttribute(ATTRIBUTE_SKIP, true);
}
chain.doApply(request);
}
示例4: doApply
import io.apiman.gateway.engine.policy.IPolicyContext; //导入方法依赖的package包/类
/**
* @see io.apiman.gateway.engine.policies.AbstractMappedPolicy#doApply(io.apiman.gateway.engine.beans.ApiRequest, io.apiman.gateway.engine.policy.IPolicyContext, java.lang.Object, io.apiman.gateway.engine.policy.IPolicyChain)
*/
@Override
protected void doApply(ApiRequest request, IPolicyContext context, CircuitBreakerConfigBean config,
IPolicyChain<ApiRequest> chain) {
CircuitKey ckey = new CircuitKey(request.getApiOrgId(), request.getApiId(), request.getApiVersion());
Circuit circuit = circuits.get(ckey);
if (circuit == null) {
circuit = new Circuit(config.getLimit(), config.getWindow(), config.getReset());
circuits.put(ckey, circuit);
}
context.setAttribute(CircuitBreakerPolicy.class.getName() + ".circuit", circuit); //$NON-NLS-1$
// Is the circuit broken? If so, either immediately send a failure, or else
// if the circuit is ready to be reset (the reset time has elapsed) then try
// to reset the circuit by letting through the request and seeing what happens.
if (circuit.isBroken()) {
// Can the circuit possibly be reset? If so, try...otherwise fail.
if (circuit.isResettable()) {
circuit.startReset();
super.doApply(request, context, config, chain);
} else {
IPolicyFailureFactoryComponent failureFactory = context.getComponent(IPolicyFailureFactoryComponent.class);
PolicyFailure failure = failureFactory.createFailure(PolicyFailureType.Other, BROKEN_CIRCUIT_FAILURE_CODE, "Circuit broken."); //$NON-NLS-1$
failure.setResponseCode(config.getFailureCode());
chain.doFailure(failure);
}
} else {
super.doApply(request, context, config, chain);
}
}
示例5: doApply
import io.apiman.gateway.engine.policy.IPolicyContext; //导入方法依赖的package包/类
/**
* @see io.apiman.gateway.engine.policies.AbstractMappedPolicy#doApply(io.apiman.gateway.engine.beans.ApiRequest, io.apiman.gateway.engine.policy.IPolicyContext, java.lang.Object, io.apiman.gateway.engine.policy.IPolicyChain)
*/
@Override
protected void doApply(ApiRequest request, IPolicyContext context, LogHeadersConfigBean config,
IPolicyChain<ApiRequest> chain) {
IApimanLogger logger = context.getLogger(getClass());
String endpoint = request.getApi().getEndpoint();
context.setAttribute(ENDPOINT_ATTRIBUTE, endpoint);
if (config.isLogHeaders() && config.getDirection() != LogHeadersDirectionType.response) {
logHeaders(logger, request.getHeaders(), HttpDirection.REQUEST, endpoint);
}
chain.doApply(request);
}
示例6: doApply
import io.apiman.gateway.engine.policy.IPolicyContext; //导入方法依赖的package包/类
@Override
protected void doApply(ApiRequest request, IPolicyContext context, JsonpConfigBean config,
IPolicyChain<ApiRequest> chain) {
String callbackParamName = config.getCallbackParamName();
String callbackFunctionName = request.getQueryParams().get(callbackParamName);
request.getQueryParams().remove(callbackParamName);
if (callbackFunctionName != null) {
context.setAttribute(CALLBACK_FUNCTION_NAME, callbackFunctionName);
}
super.doApply(request, context, config, chain);
}
示例7: extractRoles
import io.apiman.gateway.engine.policy.IPolicyContext; //导入方法依赖的package包/类
/**
* @param connection
* @param username
* @param context
* @param config
* @param handler
*/
protected void extractRoles(final IJdbcConnection connection, final String username,
final IPolicyContext context, final JDBCIdentitySource config,
final IAsyncResultHandler<Boolean> handler) {
String roleQuery = config.getRoleQuery();
IAsyncResultHandler<IJdbcResultSet> roleHandler = new IAsyncResultHandler<IJdbcResultSet>() {
@Override
public void handle(IAsyncResult<IJdbcResultSet> result) {
if (result.isError()) {
closeQuietly(connection);
handler.handle(AsyncResultImpl.create(result.getError(), Boolean.class));
} else {
Set<String> extractedRoles = new HashSet<>();
IJdbcResultSet resultSet = result.getResult();
while (resultSet.next()) {
String roleName = resultSet.getString(1);
extractedRoles.add(roleName);
}
context.setAttribute(AuthorizationPolicy.AUTHENTICATED_USER_ROLES, extractedRoles);
closeQuietly(connection);
handler.handle(AsyncResultImpl.create(true));
}
}
};
connection.query(roleHandler, roleQuery, username);
}
示例8: requestDataHandler
import io.apiman.gateway.engine.policy.IPolicyContext; //导入方法依赖的package包/类
/**
* @see io.apiman.gateway.engine.policies.AbstractMappedDataPolicy#requestDataHandler(io.apiman.gateway.engine.beans.ApiRequest, io.apiman.gateway.engine.policy.IPolicyContext, java.lang.Object)
*/
@Override
protected IReadWriteStream<ApiRequest> requestDataHandler(final ApiRequest request,
final IPolicyContext context, final TransferQuotaConfig config) {
// *************************************************************
// Step 2: if upload quotas are enabled, then count all bytes
// uploaded to the back-end API
// *************************************************************
if (config.getDirection() == TransferDirectionType.upload || config.getDirection() == TransferDirectionType.both) {
return new AbstractStream<ApiRequest>() {
private long total = 0;
@Override
public ApiRequest getHead() {
return request;
}
@Override
protected void handleHead(ApiRequest head) {
}
@Override
public void write(IApimanBuffer chunk) {
total += chunk.length();
super.write(chunk);
}
@Override
public void end() {
context.setAttribute(BYTES_UPLOADED_ATTR, total);
super.end();
}
};
} else {
return null;
}
}
示例9: doApply
import io.apiman.gateway.engine.policy.IPolicyContext; //导入方法依赖的package包/类
/**
* If the request is cached an {@link IConnectorInterceptor} is set in order to prevent the back-end connection to be established.
* Otherwise an empty {@link CachedResponse} will be added to the context, this will be used to cache the response once it has been
* received from the back-end API
*
* @see io.apiman.gateway.engine.policies.AbstractMappedPolicy#doApply(io.apiman.gateway.engine.beans.ApiRequest, io.apiman.gateway.engine.policy.IPolicyContext, java.lang.Object, io.apiman.gateway.engine.policy.IPolicyChain)
*/
@Override
protected void doApply(final ApiRequest request, final IPolicyContext context, final CachingConfig config,
final IPolicyChain<ApiRequest> chain) {
if (config.getTtl() > 0) {
// Check to see if there is a cache entry for this request. If so, we need to
// short-circuit the connector factory by providing a connector interceptor
String cacheId = buildCacheID(request);
context.setAttribute(CACHE_ID_ATTR, cacheId);
ICacheStoreComponent cache = context.getComponent(ICacheStoreComponent.class);
cache.getBinary(cacheId, ApiResponse.class,
new IAsyncResultHandler<ISignalReadStream<ApiResponse>>() {
@Override
public void handle(IAsyncResult<ISignalReadStream<ApiResponse>> result) {
if (result.isError()) {
chain.throwError(result.getError());
} else {
ISignalReadStream<ApiResponse> cacheEntry = result.getResult();
if (cacheEntry != null) {
context.setConnectorInterceptor(new CacheConnectorInterceptor(cacheEntry));
context.setAttribute(SHOULD_CACHE_ATTR, Boolean.FALSE);
context.setAttribute(CACHED_RESPONSE, cacheEntry.getHead());
}
chain.doApply(request);
}
}
});
} else {
context.setAttribute(SHOULD_CACHE_ATTR, Boolean.FALSE);
chain.doApply(request);
}
}
示例10: apply
import io.apiman.gateway.engine.policy.IPolicyContext; //导入方法依赖的package包/类
/**
* @see io.apiman.gateway.engine.policy.IPolicy#apply(io.apiman.gateway.engine.beans.ApiRequest, io.apiman.gateway.engine.policy.IPolicyContext, java.lang.Object, io.apiman.gateway.engine.policy.IPolicyChain)
*/
@Override
public void apply(final ApiRequest request, final IPolicyContext context, final Object config,
final IPolicyChain<ApiRequest> chain) {
context.setAttribute("X-Conversation-Success", "true");
chain.doApply(request);
}
示例11: doApply
import io.apiman.gateway.engine.policy.IPolicyContext; //导入方法依赖的package包/类
/**
* See {@link AbstractMappedPolicy#doApply(ApiResponse, IPolicyContext, Object, IPolicyChain)}
*/
@Override
protected void doApply(ApiRequest request, IPolicyContext context, CookieValidateConfigBean config,
IPolicyChain<ApiRequest> chain) {
// skip if path matcher is not use, or request URL doesn't match
if (null == pathMatcher || !pathMatcher.matcher(request.getDestination()).matches()) {
LOGGER.debug(MESSAGES.format("PathMatchFalse"));
context.setAttribute(ATTRIBUTE_SKIP, true);
chain.doApply(request);
return;
}
// check validation
final ValidationType validationType = config.getValidationType();
if (ValidationType.NoValidation.equals(validationType)) {
// no validation - continue request to back-end
LOGGER.debug(MESSAGES.format("NoValidation"));
chain.doApply(request);
} else if (ValidationType.ValidationRequired.equals(validationType) || ValidationType.ValidationOptional.equals(validationType)) {
// validate the session
LOGGER.debug(MESSAGES.format("AttemptingValidation"));
final Cookie cookie = CookieUtil.getCookie(request, config.getCookieName());
if (null != cookie && !StringUtils.isEmpty(cookie.getValue())) {
// the cookie value is the session ID
validateSession(request, context, config, chain, cookie.getValue(), validationType);
} else {
if (ValidationType.ValidationOptional.equals(validationType)) {
// permit absent cookie - continue request to back-end
LOGGER.info(MESSAGES.format("ValidationOptional.CookieAbsent", config.getCookieName()));
chain.doApply(request);
} else {
// policy failure - cookie is absent or empty
LOGGER.warn(MESSAGES.format("ValidationRequired.CookieAbsent", config.getCookieName()));
chain.doFailure(new PolicyFailure(PolicyFailureType.Authentication,
HttpURLConnection.HTTP_UNAUTHORIZED, Constants.GENERIC_AUTH_FAILURE));
}
}
} else {
chain.throwError(new UnsupportedOperationException(
MESSAGES.format("UnsupportedValidationType", validationType)));
}
}
示例12: doApply
import io.apiman.gateway.engine.policy.IPolicyContext; //导入方法依赖的package包/类
/**
* See {@link AbstractMappedPolicy#doApply(ApiResponse, IPolicyContext, Object, IPolicyChain)}
*/
@Override
protected void doApply(ApiRequest request, IPolicyContext context, final CookieRemoveConfigBean config,
IPolicyChain<ApiRequest> chain) {
// skip if path matcher is not use, or request URL doesn't match
if (null == pathMatcher || !pathMatcher.matcher(request.getDestination()).matches()) {
LOGGER.debug(MESSAGES.format("PathMatchFalse"));
context.setAttribute(ATTRIBUTE_SKIP, true);
chain.doApply(request);
return;
}
Cookie cookie = CookieUtil.getCookie(request, config.getCookieName());
// cookie is absent - force removal anyway?
if (null == cookie && config.getForceCookieRemoval()) {
LOGGER.warn(MESSAGES.format("CookieAbsentForceRemoval", config.getCookieName()));
cookie = new Cookie(config.getCookieName(), "");
}
if (null == cookie) {
// cookie is absent - continue
LOGGER.warn(MESSAGES.format("CookieAbsentSkipRemoval", config.getCookieName()));
doContinue(request, context, config, chain);
} else {
// mark cookie for removal
context.setAttribute(ATTRIBUTE_REMOVE_COOKIE, cookie);
final String sessionId = cookie.getValue();
if (StringUtils.isEmpty(sessionId)) {
// cookie is empty - continue
LOGGER.warn(MESSAGES.format("CookieEmpty", config.getCookieName()));
doContinue(request, context, config, chain);
} else {
if (config.getInvalidateSession()) {
LOGGER.debug(MESSAGES.format("AttemptingInvalidation", sessionId));
invalidateSession(sessionId, request, context, chain, config);
} else {
LOGGER.debug(MESSAGES.format("InvalidationDisabled", sessionId));
// continue
doContinue(request, context, config, chain);
}
}
}
}
示例13: setResponseHeaders
import io.apiman.gateway.engine.policy.IPolicyContext; //导入方法依赖的package包/类
private void setResponseHeaders(IPolicyContext context, CaseInsensitiveStringMultiMap response) {
context.setAttribute(CORS_SIMPLE_RESPONSE_HEADERS, response);
}