[
https://issues.apache.org/jira/browse/IGNITE-15794?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
]
Pavel Pereslegin updated IGNITE-15794:
--------------------------------------
Description:
Implement support for passing implicit "request" attributes from the proxy to
the Java service.
Implementation notes.
# If no caller attributes is passed - there should be no performance overhead
when executing the method.
# Attributes allow only {{string}} and {{byte[]}} values and does not permit
nulls in key/values.
# Currently, the context should be immutable, but in the future, it should be
possible to change it through the interceptor.
# {{ServiceResource}} annotation allows to inject service/proxy, we must
provide the ability to transparently pass the context to the injected service.
Public API changes:
New method in {{IgniteServices}} to pass caller context to service proxy.
{code:java}
public <T> T serviceProxy(String name, Class<? super T> svcItf, boolean sticky,
ServiceCallContext callCtx, long timeout)
{code}
New method in {{ServiceContext}} for getting caller context inside the service
method.
{code:java}
/**
* Gets context of the current service call.
*
* @return Context of the current service call, possibly {@code null}.
* @see ServiceCallContext
*/
@Nullable public ServiceCallContext currentCallContext();
{code}
New interface {{ServiceCallContext}}
{code:java}
public interface ServiceCallContext {
public String attribute(String name);
public byte[] binary(String name);
public ServiceCallContext put(String name, String value);
public ServiceCallContext put(String name, byte[] value);
}
{code}
New property in {{ServiceResource annotation}}.
{code:java}
/**
* Flag indicating that the service call context should be passed to the
injected service.
*
* @return {@code True} if the service call context should be passed to the
injected service.
*/
public boolean forwardCallerContext() default false;
{code}
was:
Implement support for passing implicit "request" attributes from the proxy to
the Java service.
Implementation notes.
# If no caller attributes is passed - there should be no performance overhead
when executing the method.
# Attributes allow only {{string}} and {{byte[]}} values and does not permit
nulls in key/values.
# Currently, the context should be immutable, but in the future, it should be
possible to change it through the interceptor.
# {{ServiceResource}} annotation allows to inject service/proxy, we must
provide the ability to transparently pass the context to the injected service.
Public API changes:
New method in {{IgniteServices}} to pass caller context to service proxy.
{code:java}
public <T> T serviceProxy(String name, Class<? super T> svcItf, boolean sticky,
ServiceCallContext callCtx, long timeout)
{code}
New method in {{ServiceContext for getting caller context inside the service
method.}}
{code:java}
/**
* Gets context of the current service call.
*
* @return Context of the current service call, possibly {@code null}.
* @see ServiceCallContext
*/
@Nullable public ServiceCallContext currentCallContext();
{code}
New interface {{ServiceCallContext}}
{code:java}
public interface ServiceCallContext {
public String attribute(String name);
public byte[] binary(String name);
public ServiceCallContext put(String name, String value);
public ServiceCallContext put(String name, byte[] value);
}
{code}
New property in {{ServiceResource annotation}}.
{code:java}
/**
* Flag indicating that the service call context should be passed to the
injected service.
*
* @return {@code True} if the service call context should be passed to the
injected service.
*/
public boolean forwardCallerContext() default false;
{code}
> Request attributes for a java service.
> ---------------------------------------
>
> Key: IGNITE-15794
> URL: https://issues.apache.org/jira/browse/IGNITE-15794
> Project: Ignite
> Issue Type: Sub-task
> Components: managed services
> Reporter: Pavel Pereslegin
> Assignee: Pavel Pereslegin
> Priority: Major
> Labels: iep-79, ise
> Time Spent: 10m
> Remaining Estimate: 0h
>
> Implement support for passing implicit "request" attributes from the proxy to
> the Java service.
> Implementation notes.
> # If no caller attributes is passed - there should be no performance
> overhead when executing the method.
> # Attributes allow only {{string}} and {{byte[]}} values and does not permit
> nulls in key/values.
> # Currently, the context should be immutable, but in the future, it should
> be possible to change it through the interceptor.
> # {{ServiceResource}} annotation allows to inject service/proxy, we must
> provide the ability to transparently pass the context to the injected service.
> Public API changes:
> New method in {{IgniteServices}} to pass caller context to service proxy.
> {code:java}
> public <T> T serviceProxy(String name, Class<? super T> svcItf, boolean
> sticky, ServiceCallContext callCtx, long timeout)
> {code}
> New method in {{ServiceContext}} for getting caller context inside the
> service method.
> {code:java}
> /**
> * Gets context of the current service call.
> *
> * @return Context of the current service call, possibly {@code null}.
> * @see ServiceCallContext
> */
> @Nullable public ServiceCallContext currentCallContext();
> {code}
> New interface {{ServiceCallContext}}
> {code:java}
> public interface ServiceCallContext {
> public String attribute(String name);
> public byte[] binary(String name);
>
> public ServiceCallContext put(String name, String value);
> public ServiceCallContext put(String name, byte[] value);
> }
> {code}
> New property in {{ServiceResource annotation}}.
> {code:java}
> /**
> * Flag indicating that the service call context should be passed to the
> injected service.
> *
> * @return {@code True} if the service call context should be passed to the
> injected service.
> */
> public boolean forwardCallerContext() default false;
> {code}
>
--
This message was sent by Atlassian Jira
(v8.3.4#803005)