Search in sources :

Example 1 with AppliesToType

use of org.talend.esb.policy.samenabling.SamEnablingPolicy.AppliesToType in project tesb-rt-se by Talend.

the class SamEnablingInterceptorProvider method process.

static void process(Message message) {
    AssertionInfoMap aim = message.get(AssertionInfoMap.class);
    if (aim != null) {
        Collection<AssertionInfo> ais = aim.get(SamEnablingPolicyBuilder.SAM_ENABLE);
        if (ais != null) {
            for (AssertionInfo ai : ais) {
                if (ai.getAssertion() instanceof SamEnablingPolicy) {
                    SamEnablingPolicy vPolicy = (SamEnablingPolicy) ai.getAssertion();
                    AppliesToType appliesToType = vPolicy.getAppliesToType();
                    // Service service = ServiceModelUtil.getService(message
                    // .getExchange());
                    Exchange ex = message.getExchange();
                    Bus b = ex.getBus();
                    if (b.getFeatures().contains(EventFeature.class)) {
                        ai.setAsserted(true);
                        return;
                    }
                    Endpoint ep = ex.getEndpoint();
                    Bundle bundle = FrameworkUtil.getBundle(SamEnablingInterceptorProvider.class);
                    EventFeature eventFeature = null;
                    if (bundle != null) {
                        // OSGi
                        BundleContext context = FrameworkUtil.getBundle(SamEnablingInterceptorProvider.class).getBundleContext();
                        ServiceReference sref = context.getServiceReference(EventFeature.class.getName());
                        eventFeature = (EventFeature) context.getService(sref);
                    } else {
                        // non-OSGi
                        if (springContext == null) {
                            throw springContextException;
                        }
                        eventFeature = (EventFeature) springContext.getBean("eventFeature");
                    }
                    if (MessageUtils.isRequestor(message)) {
                        if (MessageUtils.isOutbound(message)) {
                            // REQ_OUT
                            if ((appliesToType == AppliesToType.consumer || appliesToType == AppliesToType.always)) {
                                Client cli = ex.get(Client.class);
                                if (!cli.getOutInterceptors().contains(WireTapOut.class)) {
                                    eventFeature.initialize(cli, b);
                                    List<Interceptor<? extends Message>> outInterceptors = cli.getOutInterceptors();
                                    message.getInterceptorChain().add(outInterceptors);
                                    outInterceptors.getClass();
                                }
                            }
                        } else {
                            // RESP_IN
                            if ((appliesToType == AppliesToType.consumer || appliesToType == AppliesToType.always)) {
                                Client cli = ex.get(Client.class);
                                eventFeature.initialize(cli, b);
                            }
                        }
                    } else {
                        ServerRegistry registry = b.getExtension(ServerRegistry.class);
                        List<Server> servers = registry.getServers();
                        if (MessageUtils.isOutbound(message)) {
                            // RESP_OUT
                            if ((appliesToType == AppliesToType.provider || appliesToType == AppliesToType.always)) {
                                for (Server sr : servers) {
                                    EndpointInfo ei = sr.getEndpoint().getEndpointInfo();
                                    if (null != ei && ei.getAddress().equals(ep.getEndpointInfo().getAddress())) {
                                        eventFeature.initialize(sr, b);
                                    }
                                }
                            }
                        } else {
                            // REQ_IN
                            if ((appliesToType == AppliesToType.provider || appliesToType == AppliesToType.always)) {
                                for (Server sr : servers) {
                                    EndpointInfo ei = sr.getEndpoint().getEndpointInfo();
                                    if (null != ei && ei.getAddress().equals(ep.getEndpointInfo().getAddress()) && (!sr.getEndpoint().getInInterceptors().contains(WireTapIn.class))) {
                                        eventFeature.initialize(sr, b);
                                        List<Interceptor<? extends Message>> inInterceptors = sr.getEndpoint().getInInterceptors();
                                        message.getInterceptorChain().add(inInterceptors);
                                    }
                                }
                            }
                        }
                    }
                }
            }
        }
        for (AssertionInfo ai : ais) {
            ai.setAsserted(true);
        }
    }
}
Also used : Bus(org.apache.cxf.Bus) AssertionInfo(org.apache.cxf.ws.policy.AssertionInfo) Message(org.apache.cxf.message.Message) Server(org.apache.cxf.endpoint.Server) Bundle(org.osgi.framework.Bundle) ServerRegistry(org.apache.cxf.endpoint.ServerRegistry) WireTapIn(org.talend.esb.sam.agent.wiretap.WireTapIn) EventFeature(org.talend.esb.sam.agent.feature.EventFeature) AssertionInfoMap(org.apache.cxf.ws.policy.AssertionInfoMap) ServiceReference(org.osgi.framework.ServiceReference) Exchange(org.apache.cxf.message.Exchange) EndpointInfo(org.apache.cxf.service.model.EndpointInfo) Endpoint(org.apache.cxf.endpoint.Endpoint) WireTapOut(org.talend.esb.sam.agent.wiretap.WireTapOut) AppliesToType(org.talend.esb.policy.samenabling.SamEnablingPolicy.AppliesToType) Client(org.apache.cxf.endpoint.Client) AbstractPhaseInterceptor(org.apache.cxf.phase.AbstractPhaseInterceptor) Interceptor(org.apache.cxf.interceptor.Interceptor) BundleContext(org.osgi.framework.BundleContext)

Aggregations

Bus (org.apache.cxf.Bus)1 Client (org.apache.cxf.endpoint.Client)1 Endpoint (org.apache.cxf.endpoint.Endpoint)1 Server (org.apache.cxf.endpoint.Server)1 ServerRegistry (org.apache.cxf.endpoint.ServerRegistry)1 Interceptor (org.apache.cxf.interceptor.Interceptor)1 Exchange (org.apache.cxf.message.Exchange)1 Message (org.apache.cxf.message.Message)1 AbstractPhaseInterceptor (org.apache.cxf.phase.AbstractPhaseInterceptor)1 EndpointInfo (org.apache.cxf.service.model.EndpointInfo)1 AssertionInfo (org.apache.cxf.ws.policy.AssertionInfo)1 AssertionInfoMap (org.apache.cxf.ws.policy.AssertionInfoMap)1 Bundle (org.osgi.framework.Bundle)1 BundleContext (org.osgi.framework.BundleContext)1 ServiceReference (org.osgi.framework.ServiceReference)1 AppliesToType (org.talend.esb.policy.samenabling.SamEnablingPolicy.AppliesToType)1 EventFeature (org.talend.esb.sam.agent.feature.EventFeature)1 WireTapIn (org.talend.esb.sam.agent.wiretap.WireTapIn)1 WireTapOut (org.talend.esb.sam.agent.wiretap.WireTapOut)1