Start line:  
End line:  

Snippet Preview

Snippet HTML Code

Stack Overflow Questions
  /*
   * #%L
   * Service Activity Monitoring :: Agent
   * %%
   * Copyright (C) 2011 Talend Inc.
   * %%
   * Licensed under the Apache License, Version 2.0 (the "License");
   * you may not use this file except in compliance with the License.
   * You may obtain a copy of the License at
  * 
  *      http://www.apache.org/licenses/LICENSE-2.0
  * 
  * Unless required by applicable law or agreed to in writing, software
  * distributed under the License is distributed on an "AS IS" BASIS,
  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
  * See the License for the specific language governing permissions and
  * limitations under the License.
  * #L%
  */
 package org.talend.esb.sam.agent.eventproducer;
 
 import java.util.Date;
 
 
 public final class MessageToEventMapperImpl implements MessageToEventMapper {
     private Logger log = Logger.getLogger(MessageToEventMapperImpl.class.getName());
     private int maxContentLength = -1;
 
     /*
      * (non-Javadoc)
      * @see org.talend.esb.sam.agent.producer.MessageToEventMapper#mapToEvent(org.apache.cxf.message.Message,
      * org.talend.esb.sam.agent.interceptor.InterceptorType, java.lang.String)
      */
     @Override
     public Event mapToEvent(Message message) {
         Event event = new Event();
         MessageInfo messageInfo = new MessageInfo();
         Originator originator = new Originator();
 
         event.setMessageInfo(messageInfo);
         event.setOriginator(originator);
         String content = getPayload(message);
         
         if ( != -1 && content.length() > ) {
             content = content.substring(0, );
             event.setContentCut(true);
         }
         
         event.setContent(content);
         event.setEventType(null);
         Date date = new Date();
         event.setTimestamp(date);
 
         messageInfo.setFlowId(FlowIdHelper.getFlowId(message));
         messageInfo.setMessageId(ContextUtils.generateUUID());
         String opName = message.getExchange().getBindingOperationInfo().getName().toString();
         messageInfo.setOperationName(opName);
         String portTypeName = message.getExchange().getBinding().getBindingInfo().getService().getInterface()
             .getName().toString();
         messageInfo.setPortType(portTypeName);
 
         if (message.getExchange().getBinding() instanceof SoapBinding) {
             SoapBinding soapBinding = (SoapBinding)message.getExchange().getBinding();
             if (soapBinding.getBindingInfo() instanceof SoapBindingInfo) {
                 SoapBindingInfo soapBindingInfo = (SoapBindingInfo)soapBinding.getBindingInfo();
                 messageInfo.setTransportType(soapBindingInfo.getTransportURI());
             }
         }
         if (messageInfo.getTransportType() == null) {
             messageInfo.setTransportType("Unknown transport type");
         }
         
         String addr = message.getExchange().getEndpoint().getEndpointInfo().getAddress();
         event.getCustomInfo().put("address"addr);
         
         try {
             InetAddress inetAddress = InetAddress.getLocalHost();
             originator.setIp(inetAddress.getHostAddress());
             originator.setHostname(inetAddress.getHostName());
         } catch (UnknownHostException e) {
            originator.setHostname("Unknown hostname");
            originator.setIp("Unknown ip address");
        }
        String mxName = ManagementFactory.getRuntimeMXBean().getName();
        String pId = mxName.split("@")[0];
        originator.setProcessId(pId);
        
        SecurityContext sc = message.get(SecurityContext.class);
        if (sc != null && sc.getUserPrincipal() != null){
        	originator.setPrincipal(sc.getUserPrincipal().getName());
        }
        if (originator.getPrincipal() == null) {
        	AuthorizationPolicy authPolicy = message.get(AuthorizationPolicy.class);
        	if (authPolicy != null) {
        		originator.setPrincipal(authPolicy.getUserName());
        	}
        }
        
        EventTypeEnum eventType = getEventType(message);
        event.setEventType(eventType);
        
        CustomInfo customInfo = CustomInfo.getOrCreateCustomInfo(message);
        event.getCustomInfo().putAll(customInfo);
        
        return event;
    }
    private EventTypeEnum getEventType(Message message) {
        boolean isRequestor = MessageUtils.isRequestor(message);
        boolean isFault = MessageUtils.isFault(message);
        boolean isOutbound = MessageUtils.isOutbound(message);
        if (isOutbound) {
            if (isFault) {
                return .;
            } else {
                return isRequestor ? . : .;
            }
        } else {
            if (isFault) {
                return .;
            } else {
                return isRequestor ? . : .;
            }
        }
    }
    protected String getPayload(Message message) {
        try {
            String encoding = (String)message.get(.);
            if (encoding == null) {
                encoding = "UTF-8";
            }
            CachedOutputStream cos = message.getContent(CachedOutputStream.class);
            if (cos == null) {
                .warning("Could not find CachedOutputStream in message. Continuing without message content");
                return "";
            }
            return new String(cos.getBytes(), encoding);
        } catch (IOException e) {
            throw new RuntimeException(e);
        }
    }
    public int getMaxContentLength() {
        return ;
    }
    public void setMaxContentLength(int maxContentLength) {
        this. = maxContentLength;
    }
New to GrepCode? Check out our FAQ X