[ 
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)

Reply via email to