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