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.Processor;
021 import org.apache.camel.impl.DefaultEndpoint;
022 import org.schwering.irc.lib.IRCModeParser;
023 import org.schwering.irc.lib.IRCUser;
024
025 /**
026 * Defines the <a href="http://activemq.apache.org/camel/irc.html">IRC Endpoint</a>
027 *
028 * @version $Revision:$
029 */
030 public class IrcEndpoint extends DefaultEndpoint<IrcExchange> {
031 private IrcBinding binding;
032 private IrcConfiguration configuration;
033 private IrcComponent component;
034
035 public IrcEndpoint(String endpointUri, IrcComponent component, IrcConfiguration configuration) {
036 super(endpointUri, component);
037 this.component = component;
038 this.configuration = configuration;
039 }
040
041 public boolean isSingleton() {
042 return true;
043 }
044
045 public IrcExchange createExchange() {
046 return new IrcExchange(getContext(), getBinding());
047 }
048
049 public IrcExchange createOnPrivmsgExchange(String target, IRCUser user, String msg) {
050 return new IrcExchange(getContext(), getBinding(), new IrcMessage("PRIVMSG", target, user, msg));
051 }
052
053 public IrcExchange createOnNickExchange(IRCUser user, String newNick) {
054 return new IrcExchange(getContext(), getBinding(), new IrcMessage("NICK", user, newNick));
055 }
056
057 public IrcExchange createOnQuitExchange(IRCUser user, String msg) {
058 return new IrcExchange(getContext(), getBinding(), new IrcMessage("QUIT", user, msg));
059 }
060
061 public IrcExchange createOnJoinExchange(String channel, IRCUser user) {
062 return new IrcExchange(getContext(), getBinding(), new IrcMessage("JOIN", channel, user));
063 }
064
065 public IrcExchange createOnKickExchange(String channel, IRCUser user, String whoWasKickedNick, String msg) {
066 return new IrcExchange(getContext(), getBinding(), new IrcMessage("KICK", channel, user, whoWasKickedNick, msg));
067 }
068
069 public IrcExchange createOnModeExchange(String channel, IRCUser user, IRCModeParser modeParser) {
070 return new IrcExchange(getContext(), getBinding(), new IrcMessage("MODE", channel, user, modeParser.getLine()));
071 }
072
073 public IrcExchange createOnPartExchange(String channel, IRCUser user, String msg) {
074 return new IrcExchange(getContext(), getBinding(), new IrcMessage("PART", channel, user, msg));
075 }
076
077 public IrcExchange createOnTopicExchange(String channel, IRCUser user, String topic) {
078 return new IrcExchange(getContext(), getBinding(), new IrcMessage("TOPIC", channel, user, topic));
079 }
080
081 public IrcProducer createProducer() throws Exception {
082 return new IrcProducer(this, component.getIRCConnection(configuration));
083 }
084
085 public IrcConsumer createConsumer(Processor processor) throws Exception {
086 return new IrcConsumer(this, processor, component.getIRCConnection(configuration));
087 }
088
089 public IrcComponent getComponent() {
090 return component;
091 }
092
093 public void setComponent(IrcComponent component) {
094 this.component = component;
095 }
096
097 public IrcBinding getBinding() {
098 if (binding == null) {
099 binding = new IrcBinding();
100 }
101 return binding;
102 }
103
104 public void setBinding(IrcBinding binding) {
105 this.binding = binding;
106 }
107
108 public IrcConfiguration getConfiguration() {
109 return configuration;
110 }
111
112 public void setConfiguration(IrcConfiguration configuration) {
113 this.configuration = configuration;
114 }
115 }
116