Hello guys,

I have just upload the code to
https://github.com/lnthai2002/com.castortech.iris.ba.web.home
eclipse launch config is also there.

Let me know if you need anything else for debug.

Thank you

Thai

On Wed, Aug 29, 2018 at 9:49 AM, Raymond Auge <raymond.a...@liferay.com>
wrote:

> Nhut, could you provide a link to a sample repo that we could use to debug?
>
> - Ray
>
> On Wed, Aug 29, 2018 at 9:44 AM, Nhut Thai Le <n...@castortech.com> wrote:
>
>> Hi Carlos,
>>
>> As you can see from previous email, when listing the service provided by
>> the bundle, I can see my filter listed with component.id=0, I also add a
>> reference to the filter from my api and I see it not null when the rest
>> call is made:
>> @Component(
>> //immediate=true,
>> service = Api.class,
>> property = {
>> "osgi.jaxrs.name=RestApi",
>> "osgi.jaxrs.resource=true",
>> "osgi.jaxrs.application.select=(osgi.jaxrs.name=RestApp)"
>> }
>> )
>> @Path("/common")
>> public final class Api {
>> public static final Response EMPTY_RESPONSE =
>> Response.noContent().type(MediaType.TEXT_HTML_TYPE).build();
>>
>> @Reference
>> JaxrsServiceRuntime runtimeRef;
>> @Reference
>> ContainerRequestFilter filter;     //THIS IS NOT NULL SO I THINK THE
>> COMPONENT IS REGISTERED AND INSTANTIATED BY THE WHITEBOARD CORRECTLY
>>
>> @GET
>> @Path("/getObject")
>> @Produces(MediaType.APPLICATION_JSON)
>> public String getObject() {
>> RuntimeDTO runtimeDto = runtimeRef.getRuntimeDTO();
>> try {
>> filter.filter(null);     //I GOT AN INSTANCE OF THE FILTER HERE
>> }
>> catch(Exception e) {
>> int x =2;
>> }
>> return "Rest call 2"; //$NON-NLS-1$
>> }
>> }
>>
>> so I think the whiteboard does created the component and registered it,
>> but jaxrs does not use this component in the rest call processing nor
>> recognize it as a jaxrs extension. Do i need to include anything else but
>> the aries.component-dsl.component-dsl, aries.javax.jax.rs-api,
>> aries.jax.rs.whiteboard, aries.util and their dependenies in my run env?
>>
>>
>> Thai
>>
>>
>> On Tue, Aug 28, 2018 at 5:07 PM, Carlos Sierra Andrés <csie...@gmail.com>
>> wrote:
>>
>>> hi Thai,
>>>
>>> this is weird indeed. In your fisrt message, when you had the component
>>> with "immediate=true", you said the breakpoint was never hit. If I remember
>>> correctly, but maybe I am wrong, having "immediate=true" should make the
>>> SCR to immediately instantiate and activate your component. If that did not
>>> happen that would indicate a problem before the whiteboard gets to know
>>> about the extension.
>>>
>>> Carlos.
>>>
>>> El 28/8/18 a las 22:33, Nhut Thai Le escribió:
>>>
>>> Hi Carlos,
>>>
>>> Here is the result of getRuntimeDto:
>>> {
>>>   "serviceDTO": null,
>>>   "defaultApplication": {
>>>     "resourceMethods": [
>>>       {
>>>         "method": "GET",
>>>         "consumingMimeType": null,
>>>         "producingMimeType": [
>>>           "text/css"
>>>         ],
>>>         "nameBindings": null,
>>>         "path": "/"
>>>       },
>>>       {
>>>         "method": "GET",
>>>         "consumingMimeType": null,
>>>         "producingMimeType": [
>>>           "text/html"
>>>         ],
>>>         "nameBindings": null,
>>>         "path": "/"
>>>       },
>>>       {
>>>         "method": "GET",
>>>         "consumingMimeType": null,
>>>         "producingMimeType": [
>>>           "image/gif"
>>>         ],
>>>         "nameBindings": null,
>>>         "path": "/"
>>>       },
>>>       {
>>>         "method": "GET",
>>>         "consumingMimeType": null,
>>>         "producingMimeType": [
>>>           "text/javascript"
>>>         ],
>>>         "nameBindings": null,
>>>         "path": "/"
>>>       },
>>>       {
>>>         "method": "GET",
>>>         "consumingMimeType": null,
>>>         "producingMimeType": [
>>>           "text/css"
>>>         ],
>>>         "nameBindings": null,
>>>         "path": "/"
>>>       }
>>>     ],
>>>     "base": "/",
>>>     "resourceDTOs": [],
>>>     "extensionDTOs": [],
>>>     "name": ".default",
>>>     "serviceId": 92
>>>   },
>>>   "applicationDTOs": [
>>>     {
>>>       "resourceMethods": [],
>>>       "base": "/rest",
>>>       "resourceDTOs": [
>>>         {
>>>           "resourceMethods": [
>>>             {
>>>               "method": "GET",
>>>               "consumingMimeType": null,
>>>               "producingMimeType": [
>>>                 "application/json"
>>>               ],
>>>               "nameBindings": null,
>>>               "path": "\\\\common\\getObject\\"
>>>             }
>>>           ],
>>>           "name": ".generated.for.91",
>>>           "serviceId": 91
>>>         }
>>>       ],
>>>       "extensionDTOs": [],
>>>       "name": "RestApp",
>>>       "serviceId": 44
>>>     }
>>>   ],
>>>   "failedResourceDTOs": [],
>>>   "failedExtensionDTOs": [],
>>>   "failedApplicationDTOs": []
>>> }
>>>
>>> As it shown, my extension is not even loaded. Although it show up as an
>>> osgi service when I inspect the bundle:
>>>
>>> osgi>bundle 27
>>> com.castortech.iris.ba.web.home_1.0.0.qualifier [27]
>>>   Id=27, Status=ACTIVE      Data Root=C:\Users\ntle\eclipseWSos
>>> gi30\.metadata\.plugins\org.eclipse.pde.core\Pax\org.eclipse
>>> .osgi\27\data
>>>   "Registered Services"
>>>     {javax.ws.rs.container.ContainerRequestFilter}={service.id=43,
>>> osgi.jaxrs.extension=true, service.bundleid=27, service.scope=prototype,
>>> osgi.jaxrs.application.select=(osgi.jaxrs.name=RestApp), component.name
>>> =com.castortech.iris.ba.web.home.JaxrsAuthenticationFilter, component.id
>>> =0}
>>>     {javax.ws.rs.core.Application}={osgi.jaxrs.application.base=/rest,
>>> service.id=44, service.bundleid=27, service.scope=bundle,
>>> authentication.with=keycloak, osgi.jaxrs.name=RestApp, component.name
>>> =com.castortech.iris.ba.web.home.RestApiApp, component.id=1}
>>>     {com.castortech.iris.ba.web.home.Api}={osgi.jaxrs.resource=true,
>>> service.id=91, service.bundleid=27, service.scope=bundle,
>>> osgi.jaxrs.application.select=(osgi.jaxrs.name=RestApp), component.name
>>> =com.castortech.iris.ba.web.home.Api, component.id=2}
>>>   Services in use:
>>>     {com.castortech.iris.ba.web.home.Api}={osgi.jaxrs.resource=true,
>>> service.id=91, service.bundleid=27, service.scope=bundle,
>>> osgi.jaxrs.application.select=(osgi.jaxrs.name=RestApp), component.name
>>> =com.castortech.iris.ba.web.home.Api, component.id=2}
>>>     {org.osgi.service.jaxrs.runtime.JaxrsServiceRuntime}={service.id=90,
>>> osgi.jaxrs.endpoint=[0.0.0.0:8080], service.bundleid=96,
>>> service.scope=singleton, service.ranking=-2147483648,
>>> service.changecount=3, service.pid=org.apache.aries.j
>>> ax.rs.whiteboard.default}
>>>     {org.osgi.service.log.LogService, org.eclipse.equinox.log.Extend
>>> edLogService}={service.id=2, service.bundleid=0, service.scope=bundle}
>>>   Exported packages
>>>     com.castortech.iris.ba.web.home; version="0.0.0"[exported]
>>>     org.keycloak.jaxrs; version="0.0.0"[exported]
>>>   Imported packages
>>> ...
>>>
>>> I can even get a reference to that filter from the API but for some
>>> reason, jaxrs whiteboard does not register this filter
>>>
>>> Thai
>>>
>>> On Tue, Aug 28, 2018 at 3:05 PM, Carlos Sierra Andrés <csie...@gmail.com
>>> > wrote:
>>>
>>>> Hi again Thai,
>>>>
>>>> you can try to get a reference to JaxrsServiceRuntime and call
>>>> getRuntimeDTO on it. It should give you a snapshot of the state of the
>>>> runtime as well as the reason why the extension is not being activated by
>>>> the runtime.
>>>>
>>>> Also enabling debug might help you diagnose what's going on.
>>>>
>>>> Carlos.
>>>>
>>>> El 28/8/18 a las 20:47, Nhut Thai Le escribió:
>>>>
>>>> Hi Carlos,
>>>>
>>>> Thank you for pointing out the order. I tried what you suggested but i
>>>> still not be able to hit the filter, not even its static field
>>>>
>>>> @Component(
>>>> scope=ServiceScope.PROTOTYPE,
>>>> property= {
>>>> "osgi.jaxrs.extension=true",
>>>> "osgi.jaxrs.application.select=(authentication.with=keycloak)"
>>>> }
>>>> )
>>>> @PreMatching
>>>> @Priority(Priorities.AUTHENTICATION)
>>>> public final class JaxrsAuthenticationFilter implements
>>>> ContainerRequestFilter
>>>> {
>>>> public static final int count = 1;     //BREAKPOINT NEVER HIT
>>>> @Override
>>>> public void filter(ContainerRequestContext arg0) throws IOException {
>>>> int n = 10;   //BREAKPOINT NEVER HIT
>>>> }
>>>> }
>>>>
>>>> Thai
>>>>
>>>> On Tue, Aug 28, 2018 at 1:16 PM, Carlos Sierra Andrés <
>>>> csie...@gmail.com> wrote:
>>>>
>>>>> Hi,
>>>>>
>>>>> I would say that this:
>>>>>
>>>>> -----
>>>>> @Component(
>>>>> immediate=true,
>>>>> property= {
>>>>> "osgi.jaxrs.extension=true",
>>>>> "osgi.jaxrs.extension.select=(authentication.with=keycloak)"
>>>>> }
>>>>> )
>>>>> -----
>>>>>
>>>>> should be:
>>>>>
>>>>> -----
>>>>> @Component(
>>>>> immediate=true,
>>>>> property= {
>>>>> "osgi.jaxrs.extension=true",
>>>>> "osgi.jaxrs.application.select=(authentication.with=keycloak)"
>>>>> }
>>>>> )
>>>>> -----
>>>>>
>>>>> note the "extension -> application", otherwise your filter is waiting
>>>>> for another extension that never arrives.
>>>>>
>>>>> I would also suggest that you make your component
>>>>> ServiceScope.PROTOTYPE so every application gets its own instance of the
>>>>> filter.
>>>>>
>>>>> Let me know if this helps.
>>>>>
>>>>> Carlos.
>>>>>
>>>>> El 28/8/18 a las 19:10, Nhut Thai Le escribió:
>>>>>
>>>>> Hello,
>>>>>
>>>>> I'm using aries-jax-rs-whiteboard to host by REST service and I want
>>>>> to use a ContainerRequestFilter to check for authentication token. 
>>>>> However,
>>>>> although the filter is registered as an OSGI service, it is not triggered
>>>>> or even instantiated. Here is my REST api and filter code:
>>>>>
>>>>> =====the application====
>>>>> @Component(
>>>>> immediate = true,
>>>>> service = Application.class,
>>>>> property= {
>>>>> "osgi.jaxrs.name=RestApp",
>>>>> JAX_RS_APPLICATION_BASE + "=/rest",
>>>>> "authentication.with=keycloak"
>>>>> }
>>>>> )
>>>>> public class RestApiApp extends Application{
>>>>>
>>>>> @Override
>>>>>   public Set<Object> getSingletons() {
>>>>>       return Collections.singleton(this);
>>>>>   }
>>>>> }
>>>>>
>>>>> =====the API==========
>>>>> @Component(
>>>>> immediate=true,
>>>>> service = Api.class,
>>>>> property = {
>>>>> "osgi.jaxrs.application.select=(osgi.jaxrs.name=RestApp)",
>>>>> "osgi.jaxrs.resource=true"
>>>>> }
>>>>> )
>>>>> @Path("/common")
>>>>> public final class Api {
>>>>> public static final Response EMPTY_RESPONSE =
>>>>> Response.noContent().type(MediaType.TEXT_HTML_TYPE).build();
>>>>>
>>>>> @GET
>>>>> @Path("/getObject")
>>>>> @Produces(MediaType.APPLICATION_JSON)
>>>>> public String getObject() {
>>>>> return "Rest call 2"; //$NON-NLS-1$
>>>>> }
>>>>> }
>>>>>
>>>>> ======the filter==========
>>>>> @Component(
>>>>> immediate=true,
>>>>> property= {
>>>>> "osgi.jaxrs.extension=true",
>>>>> "osgi.jaxrs.extension.select=(authentication.with=keycloak)"
>>>>> }
>>>>> )
>>>>> @PreMatching
>>>>> @Priority(Priorities.AUTHENTICATION)
>>>>> public final class JaxrsAuthenticationFilter extends
>>>>> OsgiJaxrsBearerTokenFilterImpl implements ContainerRequestFilter
>>>>> {
>>>>> public static final int count = 1; //BREAKPOINT NEVER HIT
>>>>> @Override
>>>>> public void filter(ContainerRequestContext arg0) throws IOException {
>>>>> super.filter(arg0);    //BREAKPOINT NEVER HIT
>>>>> }
>>>>> }
>>>>>
>>>>> Could anyone give a hint what I may miss?
>>>>>
>>>>>
>>>>>
>>>>
>>>>
>>>> --
>>>> Castor Technologies Inc
>>>> 460 rue St-Catherine St
>>>> <https://maps.google.com/?q=460+rue+St-Catherine+St&entry=gmail&source=g>
>>>> Ouest, Suite 613
>>>> Montréal, Québec H3B-1A7
>>>> (514) 360-7208 o
>>>> (514) 798-2044 f
>>>> n...@castortech.com
>>>> www.castortech.com
>>>>
>>>> CONFIDENTIALITY NOTICE: The information contained in this e-mail is
>>>> confidential and may be proprietary information intended only for the use
>>>> of the individual or entity to whom it is addressed. If the reader of this
>>>> message is not the intended recipient, you are hereby notified that any
>>>> viewing, dissemination, distribution, disclosure, copy or use of the
>>>> information contained in this e-mail message is strictly prohibited. If you
>>>> have received and/or are viewing this e-mail in error, please immediately
>>>> notify the sender by reply e-mail, and delete it from your system without
>>>> reading, forwarding, copying or saving in any manner. Thank you.
>>>> AVIS DE CONFIDENTIALITE: L’information contenue dans ce message est
>>>> confidentiel, peut être protégé par le secret professionnel et est réservé
>>>> à l'usage exclusif du destinataire. Toute autre personne est par les
>>>> présentes avisée qu'il lui est strictement interdit de diffuser, distribuer
>>>> ou reproduire ce message. Si vous avez reçu cette communication par erreur,
>>>> veuillez la détruire immédiatement et en aviser l'expéditeur. Merci.
>>>>
>>>>
>>>>
>>>
>>>
>>> --
>>> Castor Technologies Inc
>>> 460 rue St-Catherine St
>>> <https://maps.google.com/?q=460+rue+St-Catherine+St&entry=gmail&source=g>
>>> Ouest, Suite 613
>>> Montréal, Québec H3B-1A7
>>> (514) 360-7208 o
>>> (514) 798-2044 f
>>> n...@castortech.com
>>> www.castortech.com
>>>
>>> CONFIDENTIALITY NOTICE: The information contained in this e-mail is
>>> confidential and may be proprietary information intended only for the use
>>> of the individual or entity to whom it is addressed. If the reader of this
>>> message is not the intended recipient, you are hereby notified that any
>>> viewing, dissemination, distribution, disclosure, copy or use of the
>>> information contained in this e-mail message is strictly prohibited. If you
>>> have received and/or are viewing this e-mail in error, please immediately
>>> notify the sender by reply e-mail, and delete it from your system without
>>> reading, forwarding, copying or saving in any manner. Thank you.
>>> AVIS DE CONFIDENTIALITE: L’information contenue dans ce message est
>>> confidentiel, peut être protégé par le secret professionnel et est réservé
>>> à l'usage exclusif du destinataire. Toute autre personne est par les
>>> présentes avisée qu'il lui est strictement interdit de diffuser, distribuer
>>> ou reproduire ce message. Si vous avez reçu cette communication par erreur,
>>> veuillez la détruire immédiatement et en aviser l'expéditeur. Merci.
>>>
>>>
>>>
>>
>>
>> --
>> Castor Technologies Inc
>> 460 rue St-Catherine St
>> <https://maps.google.com/?q=460+rue+St-Catherine+St&entry=gmail&source=g>
>> Ouest, Suite 613
>> Montréal, Québec H3B-1A7
>> (514) 360-7208 o
>> (514) 798-2044 f
>> n...@castortech.com
>> www.castortech.com
>>
>> CONFIDENTIALITY NOTICE: The information contained in this e-mail is
>> confidential and may be proprietary information intended only for the use
>> of the individual or entity to whom it is addressed. If the reader of this
>> message is not the intended recipient, you are hereby notified that any
>> viewing, dissemination, distribution, disclosure, copy or use of the
>> information contained in this e-mail message is strictly prohibited. If you
>> have received and/or are viewing this e-mail in error, please immediately
>> notify the sender by reply e-mail, and delete it from your system without
>> reading, forwarding, copying or saving in any manner. Thank you.
>> AVIS DE CONFIDENTIALITE: L’information contenue dans ce message est
>> confidentiel, peut être protégé par le secret professionnel et est réservé
>> à l'usage exclusif du destinataire. Toute autre personne est par les
>> présentes avisée qu'il lui est strictement interdit de diffuser, distribuer
>> ou reproduire ce message. Si vous avez reçu cette communication par erreur,
>> veuillez la détruire immédiatement et en aviser l'expéditeur. Merci.
>>
>
>
>
> --
> *Raymond Augé* <http://www.liferay.com/web/raymond.auge/profile>
>  (@rotty3000)
> Senior Software Architect *Liferay, Inc.* <http://www.liferay.com>
>  (@Liferay)
> Board Member & EEG Co-Chair, OSGi Alliance <http://osgi.org>
> (@OSGiAlliance)
>



-- 
Castor Technologies Inc
460 rue St-Catherine St Ouest, Suite 613
Montréal, Québec H3B-1A7
(514) 360-7208 o
(514) 798-2044 f
n...@castortech.com
www.castortech.com

CONFIDENTIALITY NOTICE: The information contained in this e-mail is
confidential and may be proprietary information intended only for the use
of the individual or entity to whom it is addressed. If the reader of this
message is not the intended recipient, you are hereby notified that any
viewing, dissemination, distribution, disclosure, copy or use of the
information contained in this e-mail message is strictly prohibited. If you
have received and/or are viewing this e-mail in error, please immediately
notify the sender by reply e-mail, and delete it from your system without
reading, forwarding, copying or saving in any manner. Thank you.
AVIS DE CONFIDENTIALITE: L’information contenue dans ce message est
confidentiel, peut être protégé par le secret professionnel et est réservé
à l'usage exclusif du destinataire. Toute autre personne est par les
présentes avisée qu'il lui est strictement interdit de diffuser, distribuer
ou reproduire ce message. Si vous avez reçu cette communication par erreur,
veuillez la détruire immédiatement et en aviser l'expéditeur. Merci.

Reply via email to