001 /**
002 *
003 * Licensed to the Apache Software Foundation (ASF) under one or more
004 * contributor license agreements. See the NOTICE file distributed with
005 * this work for additional information regarding copyright ownership.
006 * The ASF licenses this file to You under the Apache License, Version 2.0
007 * (the "License"); you may not use this file except in compliance with
008 * the License. You may obtain a copy of the License at
009 *
010 * http://www.apache.org/licenses/LICENSE-2.0
011 *
012 * Unless required by applicable law or agreed to in writing, software
013 * distributed under the License is distributed on an "AS IS" BASIS,
014 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
015 * See the License for the specific language governing permissions and
016 * limitations under the License.
017 */
018 package org.apache.camel.component.irc;
019
020 import org.apache.camel.impl.DefaultMessage;
021 import org.schwering.irc.lib.IRCUser;
022
023 import java.util.Map;
024
025 public class IrcMessage extends DefaultMessage {
026 private String messageType;
027 private String target;
028 private IRCUser user;
029 private String whoWasKickedNick;
030 private String message;
031
032 public IrcMessage() {
033 }
034
035 public IrcMessage(String messageType, IRCUser user, String message) {
036 this.messageType = messageType;
037 this.user = user;
038 this.message = message;
039 }
040
041 public IrcMessage(String messageType, String target, IRCUser user, String message) {
042 this.messageType = messageType;
043 this.target = target;
044 this.user = user;
045 this.message = message;
046 }
047
048 public IrcMessage(String messageType, String target, IRCUser user, String whoWasKickedNick, String message) {
049 this.messageType = messageType;
050 this.target = target;
051 this.user = user;
052 this.whoWasKickedNick = whoWasKickedNick;
053 this.message = message;
054 }
055
056 public IrcMessage(String messageType, String target, IRCUser user) {
057 this.messageType = messageType;
058 this.target = target;
059 this.user = user;
060 }
061
062 public String getMessageType() {
063 return messageType;
064 }
065
066 public void setMessageType(String messageType) {
067 this.messageType = messageType;
068 }
069
070 public String getTarget() {
071 return target;
072 }
073
074 public void setTarget(String target) {
075 this.target = target;
076 }
077
078 public IRCUser getUser() {
079 return user;
080 }
081
082 public void setUser(IRCUser user) {
083 this.user = user;
084 }
085
086 public String getWhoWasKickedNick() {
087 return whoWasKickedNick;
088 }
089
090 public void setWhoWasKickedNick(String whoWasKickedNick) {
091 this.whoWasKickedNick = whoWasKickedNick;
092 }
093
094 public String getMessage() {
095 return message;
096 }
097
098 public void setMessage(String message) {
099 this.message = message;
100 }
101
102 @Override
103 public IrcExchange getExchange() {
104 return (IrcExchange) super.getExchange();
105 }
106
107 @Override
108 protected Object createBody() {
109 IrcExchange ircExchange = getExchange();
110 IrcBinding binding = ircExchange.getBinding();
111 return binding.extractBodyFromIrc(ircExchange, this);
112 }
113
114 @Override
115 public IrcMessage newInstance() {
116 return new IrcMessage();
117 }
118
119 @Override
120 protected void populateInitialHeaders(Map<String, Object> map) {
121 map.put("irc.messageType", messageType);
122 if (target != null) {
123 map.put("irc.target", target);
124 }
125 if (whoWasKickedNick != null) {
126 map.put("irc.user.kicked", whoWasKickedNick);
127 }
128 if (user != null) {
129 map.put("irc.user.host", user.getHost());
130 map.put("irc.user.nick", user.getNick());
131 map.put("irc.user.servername", user.getServername());
132 map.put("irc.user.username", user.getUsername());
133 }
134 }
135
136 @Override
137 public String toString() {
138 if (message != null) {
139 return "IrcMessage: " + message;
140 }
141 else {
142 return "IrcMessage: " + getBody();
143 }
144 }
145 }