You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@camel.apache.org by js...@apache.org on 2007/06/25 20:44:50 UTC
svn commit: r550572 - in /activemq/camel/trunk/components/camel-irc/src:
main/java/org/apache/camel/component/irc/ test/ test/java/ test/java/org/
test/java/org/apache/ test/java/org/apache/camel/
test/java/org/apache/camel/component/ test/java/org/apa...
Author: jstrachan
Date: Mon Jun 25 11:44:49 2007
New Revision: 550572
URL: http://svn.apache.org/viewvc?view=rev&rev=550572
Log:
added an integration test case along with removing some System.out statements and adding some debug logging
Added:
activemq/camel/trunk/components/camel-irc/src/main/java/org/apache/camel/component/irc/IrcErrorLogger.java (with props)
activemq/camel/trunk/components/camel-irc/src/test/
activemq/camel/trunk/components/camel-irc/src/test/java/
activemq/camel/trunk/components/camel-irc/src/test/java/org/
activemq/camel/trunk/components/camel-irc/src/test/java/org/apache/
activemq/camel/trunk/components/camel-irc/src/test/java/org/apache/camel/
activemq/camel/trunk/components/camel-irc/src/test/java/org/apache/camel/component/
activemq/camel/trunk/components/camel-irc/src/test/java/org/apache/camel/component/irc/
activemq/camel/trunk/components/camel-irc/src/test/java/org/apache/camel/component/irc/CodehausIrcChat.java (with props)
activemq/camel/trunk/components/camel-irc/src/test/java/org/apache/camel/component/irc/IrcRouteIntegration.java (with props)
activemq/camel/trunk/components/camel-irc/src/test/resources/
activemq/camel/trunk/components/camel-irc/src/test/resources/log4j.properties
- copied, changed from r550438, activemq/camel/trunk/components/camel-jms/src/test/resources/log4j.properties
Modified:
activemq/camel/trunk/components/camel-irc/src/main/java/org/apache/camel/component/irc/IrcBinding.java
activemq/camel/trunk/components/camel-irc/src/main/java/org/apache/camel/component/irc/IrcComponent.java
activemq/camel/trunk/components/camel-irc/src/main/java/org/apache/camel/component/irc/IrcConfiguration.java
activemq/camel/trunk/components/camel-irc/src/main/java/org/apache/camel/component/irc/IrcConsumer.java
activemq/camel/trunk/components/camel-irc/src/main/java/org/apache/camel/component/irc/IrcEndpoint.java
activemq/camel/trunk/components/camel-irc/src/main/java/org/apache/camel/component/irc/IrcExchange.java
activemq/camel/trunk/components/camel-irc/src/main/java/org/apache/camel/component/irc/IrcMessage.java
activemq/camel/trunk/components/camel-irc/src/main/java/org/apache/camel/component/irc/IrcProducer.java
Modified: activemq/camel/trunk/components/camel-irc/src/main/java/org/apache/camel/component/irc/IrcBinding.java
URL: http://svn.apache.org/viewvc/activemq/camel/trunk/components/camel-irc/src/main/java/org/apache/camel/component/irc/IrcBinding.java?view=diff&rev=550572&r1=550571&r2=550572
==============================================================================
--- activemq/camel/trunk/components/camel-irc/src/main/java/org/apache/camel/component/irc/IrcBinding.java (original)
+++ activemq/camel/trunk/components/camel-irc/src/main/java/org/apache/camel/component/irc/IrcBinding.java Mon Jun 25 11:44:49 2007
@@ -18,7 +18,14 @@
package org.apache.camel.component.irc;
public class IrcBinding {
- public Object extractBodyFromIrc(IrcExchange exchange, String message) {
- return message;
+ public Object extractBodyFromIrc(IrcExchange exchange, IrcMessage message) {
+ String type = message.getMessageType();
+ String text = message.getMessage();
+ if (text != null) {
+ return text;
+ }
+ else {
+ return type;
+ }
}
}
Modified: activemq/camel/trunk/components/camel-irc/src/main/java/org/apache/camel/component/irc/IrcComponent.java
URL: http://svn.apache.org/viewvc/activemq/camel/trunk/components/camel-irc/src/main/java/org/apache/camel/component/irc/IrcComponent.java?view=diff&rev=550572&r1=550571&r2=550572
==============================================================================
--- activemq/camel/trunk/components/camel-irc/src/main/java/org/apache/camel/component/irc/IrcComponent.java (original)
+++ activemq/camel/trunk/components/camel-irc/src/main/java/org/apache/camel/component/irc/IrcComponent.java Mon Jun 25 11:44:49 2007
@@ -18,18 +18,25 @@
package org.apache.camel.component.irc;
import org.apache.camel.CamelContext;
+import org.apache.camel.RuntimeCamelException;
import org.apache.camel.impl.DefaultComponent;
import org.apache.camel.util.IntrospectionSupport;
+import org.apache.commons.logging.Log;
+import org.apache.commons.logging.LogFactory;
import org.schwering.irc.lib.IRCConnection;
-import java.io.IOException;
import java.net.URI;
import java.util.HashMap;
import java.util.Map;
public class IrcComponent extends DefaultComponent<IrcExchange> {
-
+ private static final transient Log log = LogFactory.getLog(IrcComponent.class);
private IrcConfiguration configuration;
+ private final Map<String, IRCConnection> connectionCache = new HashMap<String, IRCConnection>();
+
+ public static IrcComponent ircComponent() {
+ return new IrcComponent();
+ }
public IrcComponent() {
configuration = new IrcConfiguration();
@@ -44,10 +51,6 @@
configuration = new IrcConfiguration();
}
- public static IrcComponent ircComponent() {
- return new IrcComponent();
- }
-
protected IrcEndpoint createEndpoint(String uri, String remaining, Map parameters) throws Exception {
IrcConfiguration config = getConfiguration().copy();
config.configure(new URI(uri));
@@ -67,14 +70,15 @@
this.configuration = configuration;
}
- final Map<String, IRCConnection> connectionCache = new HashMap<String, IRCConnection>();
-
public synchronized IRCConnection getIRCConnection(IrcConfiguration configuration) {
final IRCConnection connection;
if (connectionCache.containsKey(configuration.getCacheKey())) {
- System.out.println("Returning Cached Connection to " + configuration.getHostname() + " " + configuration.getTarget());
+ if (log.isDebugEnabled()) {
+ log.debug("Returning Cached Connection to " + configuration.getHostname() + " " + configuration.getTarget());
+ }
connection = connectionCache.get(configuration.getCacheKey());
- } else {
+ }
+ else {
connection = createConnection(configuration);
connectionCache.put(configuration.getCacheKey(), connection);
}
@@ -82,7 +86,8 @@
}
protected IRCConnection createConnection(IrcConfiguration configuration) {
- System.out.println("Creating Connection to " + configuration.getHostname() + " " + configuration.getTarget());
+ log.debug("Creating Connection to " + configuration.getHostname() + " destination: " + configuration.getTarget()
+ + " nick: " + configuration.getNickname() + " user: " + configuration.getUsername());
final IRCConnection conn = new IRCConnection(configuration.getHostname(), configuration.getPorts(), configuration.getPassword(), configuration.getNickname(), configuration.getUsername(), configuration.getRealname());
conn.setEncoding("UTF-8");
@@ -92,8 +97,12 @@
try {
conn.connect();
- } catch (IOException e) {
- e.printStackTrace();
+ }
+ catch (Exception e) {
+ log.error("Failed to connect: " + e, e);
+
+ // TODO use checked exceptions?
+ throw new RuntimeCamelException(e);
}
return conn;
}
@@ -102,16 +111,18 @@
try {
connection.doQuit();
connection.close();
- } catch (Exception e) {
+ }
+ catch (Exception e) {
e.printStackTrace();
- } finally {
- connectionCache.remove(key); // TODO this is probably bad in the for each
}
}
@Override
- protected void doStop() throws Exception {
- for (Map.Entry<String, IRCConnection> entry : connectionCache.entrySet()) {
+ protected synchronized void doStop() throws Exception {
+ // lets use a copy so we can clear the connections eagerly in case of exceptions
+ Map<String, IRCConnection> map = new HashMap<String, IRCConnection>(connectionCache);
+ connectionCache.clear();
+ for (Map.Entry<String, IRCConnection> entry : map.entrySet()) {
closeConnection(entry.getKey(), entry.getValue());
}
super.doStop();
Modified: activemq/camel/trunk/components/camel-irc/src/main/java/org/apache/camel/component/irc/IrcConfiguration.java
URL: http://svn.apache.org/viewvc/activemq/camel/trunk/components/camel-irc/src/main/java/org/apache/camel/component/irc/IrcConfiguration.java?view=diff&rev=550572&r1=550571&r2=550572
==============================================================================
--- activemq/camel/trunk/components/camel-irc/src/main/java/org/apache/camel/component/irc/IrcConfiguration.java (original)
+++ activemq/camel/trunk/components/camel-irc/src/main/java/org/apache/camel/component/irc/IrcConfiguration.java Mon Jun 25 11:44:49 2007
@@ -20,10 +20,8 @@
import org.apache.camel.RuntimeCamelException;
import java.net.URI;
-import java.net.URISyntaxException;
public class IrcConfiguration implements Cloneable {
-
String target;
String hostname;
String password;
@@ -41,7 +39,7 @@
boolean onTopic = true;
boolean onPrivmsg = true;
int[] ports = {6667, 6668, 6669};
-
+
public IrcConfiguration() {
}
@@ -74,14 +72,13 @@
public String getCacheKey() {
return hostname + ":" + nickname;
}
-
+
public void configure(URI uri) {
setNickname(uri.getUserInfo());
setUsername(uri.getUserInfo());
setRealname(uri.getUserInfo());
setHostname(uri.getHost());
setTarget(uri.getPath().substring(1));
-
}
public String getHostname() {
Modified: activemq/camel/trunk/components/camel-irc/src/main/java/org/apache/camel/component/irc/IrcConsumer.java
URL: http://svn.apache.org/viewvc/activemq/camel/trunk/components/camel-irc/src/main/java/org/apache/camel/component/irc/IrcConsumer.java?view=diff&rev=550572&r1=550571&r2=550572
==============================================================================
--- activemq/camel/trunk/components/camel-irc/src/main/java/org/apache/camel/component/irc/IrcConsumer.java (original)
+++ activemq/camel/trunk/components/camel-irc/src/main/java/org/apache/camel/component/irc/IrcConsumer.java Mon Jun 25 11:44:49 2007
@@ -19,12 +19,15 @@
import org.apache.camel.Processor;
import org.apache.camel.impl.DefaultConsumer;
+import org.apache.commons.logging.Log;
+import org.apache.commons.logging.LogFactory;
import org.schwering.irc.lib.IRCConnection;
import org.schwering.irc.lib.IRCEventAdapter;
import org.schwering.irc.lib.IRCModeParser;
import org.schwering.irc.lib.IRCUser;
public class IrcConsumer extends DefaultConsumer<IrcExchange> {
+ private static final transient Log log = LogFactory.getLog(IrcConsumer.class);
final private IrcEndpoint endpoint;
final private IRCConnection connection;
final IrcConfiguration configuration;
@@ -37,18 +40,24 @@
configuration = endpoint.getConfiguration();
}
-
@Override
protected void doStop() throws Exception {
- connection.doPart(endpoint.getConfiguration().getTarget());
+ String target = endpoint.getConfiguration().getTarget();
+ connection.doPart(target);
connection.removeIRCEventListener(listener);
+
+ super.doStop();
}
@Override
protected void doStart() throws Exception {
- connection.addIRCEventListener(new FilteredIRCEventAdapter(endpoint.getConfiguration().getTarget()));
- connection.doJoin(endpoint.getConfiguration().getTarget());
super.doStart();
+
+ String target = endpoint.getConfiguration().getTarget();
+ connection.addIRCEventListener(new FilteredIRCEventAdapter(target));
+
+ log.debug("joining: " + target);
+ connection.doJoin(target);
}
public IRCConnection getConnection() {
@@ -62,14 +71,14 @@
this.target = target;
}
-
@Override
public void onNick(IRCUser user, String newNick) {
if (configuration.isOnNick()) {
IrcExchange exchange = endpoint.createOnNickExchange(user, newNick);
try {
getProcessor().process(exchange);
- } catch (Exception e) {
+ }
+ catch (Exception e) {
// TODO: what should we do when a processing failure occurs??
e.printStackTrace();
}
@@ -82,7 +91,8 @@
IrcExchange exchange = endpoint.createOnQuitExchange(user, msg);
try {
getProcessor().process(exchange);
- } catch (Exception e) {
+ }
+ catch (Exception e) {
// TODO: what should we do when a processing failure occurs??
e.printStackTrace();
}
@@ -96,7 +106,8 @@
IrcExchange exchange = endpoint.createOnJoinExchange(channel, user);
try {
getProcessor().process(exchange);
- } catch (Exception e) {
+ }
+ catch (Exception e) {
// TODO: what should we do when a processing failure occurs??
e.printStackTrace();
}
@@ -111,7 +122,8 @@
IrcExchange exchange = endpoint.createOnKickExchange(channel, user, passiveNick, msg);
try {
getProcessor().process(exchange);
- } catch (Exception e) {
+ }
+ catch (Exception e) {
// TODO: what should we do when a processing failure occurs??
e.printStackTrace();
}
@@ -126,7 +138,8 @@
IrcExchange exchange = endpoint.createOnModeExchange(channel, user, modeParser);
try {
getProcessor().process(exchange);
- } catch (Exception e) {
+ }
+ catch (Exception e) {
// TODO: what should we do when a processing failure occurs??
e.printStackTrace();
}
@@ -141,7 +154,8 @@
IrcExchange exchange = endpoint.createOnPartExchange(channel, user, msg);
try {
getProcessor().process(exchange);
- } catch (Exception e) {
+ }
+ catch (Exception e) {
// TODO: what should we do when a processing failure occurs??
e.printStackTrace();
}
@@ -156,7 +170,8 @@
IrcExchange exchange = endpoint.createOnTopicExchange(channel, user, topic);
try {
getProcessor().process(exchange);
- } catch (Exception e) {
+ }
+ catch (Exception e) {
// TODO: what should we do when a processing failure occurs??
e.printStackTrace();
}
@@ -171,13 +186,13 @@
IrcExchange exchange = endpoint.createOnPrivmsgExchange(target, user, msg);
try {
getProcessor().process(exchange);
- } catch (Exception e) {
+ }
+ catch (Exception e) {
// TODO: what should we do when a processing failure occurs??
e.printStackTrace();
}
}
}
}
-
}
}
Modified: activemq/camel/trunk/components/camel-irc/src/main/java/org/apache/camel/component/irc/IrcEndpoint.java
URL: http://svn.apache.org/viewvc/activemq/camel/trunk/components/camel-irc/src/main/java/org/apache/camel/component/irc/IrcEndpoint.java?view=diff&rev=550572&r1=550571&r2=550572
==============================================================================
--- activemq/camel/trunk/components/camel-irc/src/main/java/org/apache/camel/component/irc/IrcEndpoint.java (original)
+++ activemq/camel/trunk/components/camel-irc/src/main/java/org/apache/camel/component/irc/IrcEndpoint.java Mon Jun 25 11:44:49 2007
@@ -19,14 +19,10 @@
import org.apache.camel.Processor;
import org.apache.camel.impl.DefaultEndpoint;
-import org.schwering.irc.lib.IRCConnection;
import org.schwering.irc.lib.IRCModeParser;
import org.schwering.irc.lib.IRCUser;
-import java.io.IOException;
-
public class IrcEndpoint extends DefaultEndpoint<IrcExchange> {
-
private IrcBinding binding;
private IrcConfiguration configuration;
private IrcComponent component;
@@ -38,7 +34,7 @@
}
public boolean isSingleton() {
- return false;
+ return true;
}
public IrcExchange createExchange() {
@@ -111,88 +107,5 @@
public void setConfiguration(IrcConfiguration configuration) {
this.configuration = configuration;
}
-
- public static void main(String[] args) throws InterruptedException {
- final IrcConfiguration config = new IrcConfiguration("irc.codehaus.org", "camel-irc", "Camel IRC Component", "#camel-irc");
- final IRCConnection conn = new IRCConnection(config.getHostname(), config.getPorts(), config.getPassword(), config.getNickname(), config.getUsername(), config.getRealname());
-// conn.addIRCEventListener(new IRCEventAdapter() {
-//
-// @Override
-// public void onRegistered() {
-// super.onRegistered();
-// System.out.println("onRegistered");
-// }
-//
-// @Override
-// public void onDisconnected() {
-// super.onDisconnected();
-// System.out.println("onDisconnected");
-// }
-//
-// @Override
-// public void onMode(String string, IRCUser ircUser, IRCModeParser ircModeParser) {
-// super.onMode(string, ircUser, ircModeParser);
-// System.out.println("onMode.string = " + string);
-// System.out.println("onMode.ircUser = " + ircUser);
-// System.out.println("onMode.ircModeParser = " + ircModeParser);
-// }
-//
-// @Override
-// public void onMode(IRCUser ircUser, String string, String string1) {
-// super.onMode(ircUser, string, string1);
-// System.out.println("onMode.ircUser = " + ircUser);
-// System.out.println("onMode.string = " + string);
-// System.out.println("onMode.string1 = " + string1);
-// }
-//
-// @Override
-// public void onPing(String string) {
-// super.onPing(string);
-// System.out.println("onPing.string = " + string);
-// }
-//
-// @Override
-// public void onError(String string) {
-// System.out.println("onError.string = " + string);
-// }
-//
-// @Override
-// public void onError(int i, String string) {
-// super.onError(i, string);
-// System.out.println("onError.i = " + i);
-// System.out.println("onError.string = " + string);
-// }
-//
-// @Override
-// public void unknown(String string, String string1, String string2, String string3) {
-// super.unknown(string, string1, string2, string3);
-// System.out.println("unknown.string = " + string);
-// System.out.println("unknown.string1 = " + string1);
-// System.out.println("unknown.string2 = " + string2);
-// System.out.println("unknown.string3 = " + string3);
-// }
-// });
- conn.setEncoding("UTF-8");
- conn.setDaemon(true);
- conn.setColors(false);
- conn.setPong(true);
-
- try {
- conn.connect();
- } catch (IOException e) {
- e.printStackTrace();
- }
-// while (!conn.isConnected()) {
-// Thread.sleep(1000);
-// System.out.println("Sleeping");
-// }
- System.out.println("Connected");
-// conn.send("/JOIN #CAMEL");
-// conn.doPrivmsg("nnordrum", "hi!");
-// System.out.println("Joining Channel");
- conn.doJoin(config.getTarget());
- Thread.sleep(Integer.MAX_VALUE);
- }
-
}
Added: activemq/camel/trunk/components/camel-irc/src/main/java/org/apache/camel/component/irc/IrcErrorLogger.java
URL: http://svn.apache.org/viewvc/activemq/camel/trunk/components/camel-irc/src/main/java/org/apache/camel/component/irc/IrcErrorLogger.java?view=auto&rev=550572
==============================================================================
--- activemq/camel/trunk/components/camel-irc/src/main/java/org/apache/camel/component/irc/IrcErrorLogger.java (added)
+++ activemq/camel/trunk/components/camel-irc/src/main/java/org/apache/camel/component/irc/IrcErrorLogger.java Mon Jun 25 11:44:49 2007
@@ -0,0 +1,91 @@
+/**
+ *
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements. See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You 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.
+ */
+package org.apache.camel.component.irc;
+
+import org.apache.commons.logging.Log;
+import org.schwering.irc.lib.IRCEventAdapter;
+import org.schwering.irc.lib.IRCModeParser;
+import org.schwering.irc.lib.IRCUser;
+
+/**
+ * A helper class which logs errors
+ *
+ * @version $Revision: 1.1 $
+ */
+public class IrcErrorLogger extends IRCEventAdapter {
+ private Log log;
+
+ public IrcErrorLogger(Log log) {
+ this.log = log;
+ }
+
+ @Override
+ public void onRegistered() {
+ super.onRegistered();
+ log.info("onRegistered");
+ }
+
+ @Override
+ public void onDisconnected() {
+ super.onDisconnected();
+ log.info("onDisconnected");
+ }
+
+ @Override
+ public void onMode(String string, IRCUser ircUser, IRCModeParser ircModeParser) {
+ super.onMode(string, ircUser, ircModeParser);
+ log.info("onMode.string = " + string);
+ log.info("onMode.ircUser = " + ircUser);
+ log.info("onMode.ircModeParser = " + ircModeParser);
+ }
+
+ @Override
+ public void onMode(IRCUser ircUser, String string, String string1) {
+ super.onMode(ircUser, string, string1);
+ log.info("onMode.ircUser = " + ircUser);
+ log.info("onMode.string = " + string);
+ log.info("onMode.string1 = " + string1);
+ }
+
+ @Override
+ public void onPing(String string) {
+ super.onPing(string);
+ log.info("onPing.string = " + string);
+ }
+
+ @Override
+ public void onError(String string) {
+ log.info("onError.string = " + string);
+ }
+
+ @Override
+ public void onError(int i, String string) {
+ super.onError(i, string);
+ log.error("onError.i = " + i);
+ log.error("onError.string = " + string);
+ }
+
+ @Override
+ public void unknown(String string, String string1, String string2, String string3) {
+ super.unknown(string, string1, string2, string3);
+ log.error("unknown.string = " + string);
+ log.error("unknown.string1 = " + string1);
+ log.error("unknown.string2 = " + string2);
+ log.error("unknown.string3 = " + string3);
+ }
+}
Propchange: activemq/camel/trunk/components/camel-irc/src/main/java/org/apache/camel/component/irc/IrcErrorLogger.java
------------------------------------------------------------------------------
svn:eol-style = native
Modified: activemq/camel/trunk/components/camel-irc/src/main/java/org/apache/camel/component/irc/IrcExchange.java
URL: http://svn.apache.org/viewvc/activemq/camel/trunk/components/camel-irc/src/main/java/org/apache/camel/component/irc/IrcExchange.java?view=diff&rev=550572&r1=550571&r2=550572
==============================================================================
--- activemq/camel/trunk/components/camel-irc/src/main/java/org/apache/camel/component/irc/IrcExchange.java (original)
+++ activemq/camel/trunk/components/camel-irc/src/main/java/org/apache/camel/component/irc/IrcExchange.java Mon Jun 25 11:44:49 2007
@@ -17,11 +17,8 @@
*/
package org.apache.camel.component.irc;
-import org.apache.camel.impl.DefaultExchange;
import org.apache.camel.CamelContext;
-import org.apache.camel.Message;
-import org.apache.camel.Exchange;
-import org.schwering.irc.lib.IRCUser;
+import org.apache.camel.impl.DefaultExchange;
public class IrcExchange extends DefaultExchange {
private IrcBinding binding;
@@ -32,7 +29,7 @@
}
public IrcExchange(CamelContext context, IrcBinding binding, IrcMessage inMessage) {
- this(context, binding);
+ this(context, binding);
setIn(inMessage);
}
Modified: activemq/camel/trunk/components/camel-irc/src/main/java/org/apache/camel/component/irc/IrcMessage.java
URL: http://svn.apache.org/viewvc/activemq/camel/trunk/components/camel-irc/src/main/java/org/apache/camel/component/irc/IrcMessage.java?view=diff&rev=550572&r1=550571&r2=550572
==============================================================================
--- activemq/camel/trunk/components/camel-irc/src/main/java/org/apache/camel/component/irc/IrcMessage.java (original)
+++ activemq/camel/trunk/components/camel-irc/src/main/java/org/apache/camel/component/irc/IrcMessage.java Mon Jun 25 11:44:49 2007
@@ -21,7 +21,6 @@
import org.schwering.irc.lib.IRCUser;
import java.util.Map;
-import java.util.HashMap;
public class IrcMessage extends DefaultMessage {
private String messageType;
@@ -109,7 +108,7 @@
protected Object createBody() {
IrcExchange ircExchange = getExchange();
IrcBinding binding = ircExchange.getBinding();
- return binding.extractBodyFromIrc(ircExchange, message);
+ return binding.extractBodyFromIrc(ircExchange, this);
}
@Override
@@ -138,7 +137,8 @@
public String toString() {
if (message != null) {
return "IrcMessage: " + message;
- } else {
+ }
+ else {
return "IrcMessage: " + getBody();
}
}
Modified: activemq/camel/trunk/components/camel-irc/src/main/java/org/apache/camel/component/irc/IrcProducer.java
URL: http://svn.apache.org/viewvc/activemq/camel/trunk/components/camel-irc/src/main/java/org/apache/camel/component/irc/IrcProducer.java?view=diff&rev=550572&r1=550571&r2=550572
==============================================================================
--- activemq/camel/trunk/components/camel-irc/src/main/java/org/apache/camel/component/irc/IrcProducer.java (original)
+++ activemq/camel/trunk/components/camel-irc/src/main/java/org/apache/camel/component/irc/IrcProducer.java Mon Jun 25 11:44:49 2007
@@ -20,11 +20,16 @@
import org.apache.camel.Exchange;
import org.apache.camel.RuntimeCamelException;
import org.apache.camel.impl.DefaultProducer;
+import org.apache.commons.logging.Log;
+import org.apache.commons.logging.LogFactory;
import org.schwering.irc.lib.IRCConnection;
+import org.schwering.irc.lib.IRCEventListener;
public class IrcProducer extends DefaultProducer<IrcExchange> {
+ private static final transient Log log = LogFactory.getLog(IrcProducer.class);
private IRCConnection connection;
private IrcEndpoint endpoint;
+ private IRCEventListener ircErrorLogger;
public IrcProducer(IrcEndpoint endpoint, IRCConnection connection) {
super(endpoint);
@@ -37,15 +42,43 @@
final String msg = exchange.getIn().getBody(String.class);
if (isMessageACommand(msg)) {
connection.send(msg);
- } else {
+ }
+ else {
final String target = endpoint.getConfiguration().getTarget();
+
+ if (log.isDebugEnabled()) {
+ log.debug("sending to: " + target + " message: " + msg);
+ }
+
connection.doPrivmsg(target, msg);
}
- } catch (Exception e) {
+ }
+ catch (Exception e) {
throw new RuntimeCamelException(e);
}
}
+ @Override
+ protected void doStart() throws Exception {
+ super.doStart();
+
+ ircErrorLogger = createIrcErrorLogger();
+ connection.addIRCEventListener(ircErrorLogger);
+
+ final String target = endpoint.getConfiguration().getTarget();
+
+ log.debug("joining: " + target);
+ connection.doJoin(target);
+ }
+
+ @Override
+ protected void doStop() throws Exception {
+ super.doStop();
+ if (connection != null) {
+ connection.removeIRCEventListener(ircErrorLogger);
+ }
+ }
+
protected boolean isMessageACommand(String msg) {
for (String command : commands) {
if (msg.startsWith(command)) {
@@ -55,6 +88,10 @@
return false;
}
+ protected IRCEventListener createIrcErrorLogger() {
+ return new IrcErrorLogger(log);
+ }
+
public final String[] commands = new String[]{
"AWAY", "INVITE", "ISON", "JOIN",
"KICK", "LIST", "NAMES", "PRIVMSG",
@@ -62,5 +99,4 @@
"PONG", "QUIT", "TOPIC", "WHO",
"WHOIS", "WHOWAS", "USERHOST"
};
-
}
Added: activemq/camel/trunk/components/camel-irc/src/test/java/org/apache/camel/component/irc/CodehausIrcChat.java
URL: http://svn.apache.org/viewvc/activemq/camel/trunk/components/camel-irc/src/test/java/org/apache/camel/component/irc/CodehausIrcChat.java?view=auto&rev=550572
==============================================================================
--- activemq/camel/trunk/components/camel-irc/src/test/java/org/apache/camel/component/irc/CodehausIrcChat.java (added)
+++ activemq/camel/trunk/components/camel-irc/src/test/java/org/apache/camel/component/irc/CodehausIrcChat.java Mon Jun 25 11:44:49 2007
@@ -0,0 +1,116 @@
+/**
+ *
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements. See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You 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.
+ */
+package org.apache.camel.component.irc;
+
+import org.schwering.irc.lib.IRCConnection;
+import org.schwering.irc.lib.IRCEventAdapter;
+import org.schwering.irc.lib.IRCUser;
+import org.schwering.irc.lib.IRCModeParser;
+
+import java.io.IOException;
+
+/**
+ * @version $Revision: 1.1 $
+ */
+public class CodehausIrcChat {
+ public static void main(String[] args) throws InterruptedException {
+ final IrcConfiguration config = new IrcConfiguration("irc.codehaus.org", "camel-irc", "Camel IRC Component", "#camel-test");
+
+ final IRCConnection conn = new IRCConnection(config.getHostname(), config.getPorts(), config.getPassword(), config.getNickname(), config.getUsername(), config.getRealname());
+
+ conn.addIRCEventListener(new IRCEventAdapter() {
+
+ @Override
+ public void onRegistered() {
+ super.onRegistered();
+ System.out.println("onRegistered");
+ }
+
+ @Override
+ public void onDisconnected() {
+ super.onDisconnected();
+ System.out.println("onDisconnected");
+ }
+
+ @Override
+ public void onMode(String string, IRCUser ircUser, IRCModeParser ircModeParser) {
+ super.onMode(string, ircUser, ircModeParser);
+ System.out.println("onMode.string = " + string);
+ System.out.println("onMode.ircUser = " + ircUser);
+ System.out.println("onMode.ircModeParser = " + ircModeParser);
+ }
+
+ @Override
+ public void onMode(IRCUser ircUser, String string, String string1) {
+ super.onMode(ircUser, string, string1);
+ System.out.println("onMode.ircUser = " + ircUser);
+ System.out.println("onMode.string = " + string);
+ System.out.println("onMode.string1 = " + string1);
+ }
+
+ @Override
+ public void onPing(String string) {
+ super.onPing(string);
+ System.out.println("onPing.string = " + string);
+ }
+
+ @Override
+ public void onError(String string) {
+ System.out.println("onError.string = " + string);
+ }
+
+ @Override
+ public void onError(int i, String string) {
+ super.onError(i, string);
+ System.out.println("onError.i = " + i);
+ System.out.println("onError.string = " + string);
+ }
+
+ @Override
+ public void unknown(String string, String string1, String string2, String string3) {
+ super.unknown(string, string1, string2, string3);
+ System.out.println("unknown.string = " + string);
+ System.out.println("unknown.string1 = " + string1);
+ System.out.println("unknown.string2 = " + string2);
+ System.out.println("unknown.string3 = " + string3);
+ }
+ });
+ conn.setEncoding("UTF-8");
+ //conn.setDaemon(true);
+ conn.setColors(false);
+ conn.setPong(true);
+
+ try {
+ conn.connect();
+ } catch (IOException e) {
+ e.printStackTrace();
+ }
+// while (!conn.isConnected()) {
+// Thread.sleep(1000);
+// System.out.println("Sleeping");
+// }
+ System.out.println("Connected");
+ //conn.send("/JOIN #camel-test");
+
+ //System.out.println("Joining Channel: " + config.getTarget());
+ conn.doJoin(config.getTarget());
+
+ conn.doPrivmsg("#camel-test", "hi!");
+ Thread.sleep(Integer.MAX_VALUE);
+ }
+}
Propchange: activemq/camel/trunk/components/camel-irc/src/test/java/org/apache/camel/component/irc/CodehausIrcChat.java
------------------------------------------------------------------------------
svn:eol-style = native
Added: activemq/camel/trunk/components/camel-irc/src/test/java/org/apache/camel/component/irc/IrcRouteIntegration.java
URL: http://svn.apache.org/viewvc/activemq/camel/trunk/components/camel-irc/src/test/java/org/apache/camel/component/irc/IrcRouteIntegration.java?view=auto&rev=550572
==============================================================================
--- activemq/camel/trunk/components/camel-irc/src/test/java/org/apache/camel/component/irc/IrcRouteIntegration.java (added)
+++ activemq/camel/trunk/components/camel-irc/src/test/java/org/apache/camel/component/irc/IrcRouteIntegration.java Mon Jun 25 11:44:49 2007
@@ -0,0 +1,84 @@
+/**
+ *
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements. See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You 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.
+ */
+package org.apache.camel.component.irc;
+
+import org.apache.camel.ContextTestSupport;
+import org.apache.camel.Exchange;
+import org.apache.camel.Processor;
+import org.apache.camel.builder.RouteBuilder;
+import org.apache.camel.component.mock.MockEndpoint;
+
+import java.util.List;
+
+/**
+ * @version $Revision: 1.1 $
+ */
+public class IrcRouteIntegration extends ContextTestSupport {
+ protected MockEndpoint resultEndpoint;
+ protected String body1 = "Message One";
+ protected String body2 = "Message Two";
+ private boolean sentMessages;
+
+ public void testIrcMessages() throws Exception {
+ resultEndpoint = (MockEndpoint) context.getEndpoint("mock:result");
+ resultEndpoint.expectedBodiesReceived(body1, body2);
+
+ resultEndpoint.assertIsSatisfied();
+ //Thread.sleep(10000);
+
+ List<Exchange> list = resultEndpoint.getReceivedExchanges();
+ for (Exchange exchange : list) {
+ log.info("Received exchange: " + exchange + " headers: " + exchange.getIn().getHeaders());
+ }
+ }
+
+ protected RouteBuilder createRouteBuilder() throws Exception {
+ return new RouteBuilder() {
+ public void configure() throws Exception {
+ from("irc://camel-con@irc.codehaus.org:6667/%23camel-test").
+ choice().
+ when(header("irc.messageType").isEqualTo("PRIVMSG")).to("mock:result").
+ when(header("irc.messageType").isEqualTo("JOIN")).to("queue:consumerJoined");
+
+ // TODO this causes errors on shutdown...
+ //otherwise().to("mock:otherIrcCommands");
+
+ from("queue:consumerJoined").process(new Processor() {
+ public void process(Exchange exchange) throws Exception {
+ sendMessages();
+ }
+ });
+ }
+ };
+ }
+
+ /**
+ * Lets send messages once the consumer has joined
+ */
+ protected void sendMessages() {
+ if (!sentMessages) {
+ sentMessages = true;
+
+ // now the consumer has joined, lets send some messages
+ String sendUri = "irc://camel-prd@irc.codehaus.org:6667/%23camel-test";
+
+ template.sendBody(sendUri, body1);
+ template.sendBody(sendUri, body2);
+ }
+ }
+}
\ No newline at end of file
Propchange: activemq/camel/trunk/components/camel-irc/src/test/java/org/apache/camel/component/irc/IrcRouteIntegration.java
------------------------------------------------------------------------------
svn:eol-style = native
Copied: activemq/camel/trunk/components/camel-irc/src/test/resources/log4j.properties (from r550438, activemq/camel/trunk/components/camel-jms/src/test/resources/log4j.properties)
URL: http://svn.apache.org/viewvc/activemq/camel/trunk/components/camel-irc/src/test/resources/log4j.properties?view=diff&rev=550572&p1=activemq/camel/trunk/components/camel-jms/src/test/resources/log4j.properties&r1=550438&p2=activemq/camel/trunk/components/camel-irc/src/test/resources/log4j.properties&r2=550572
==============================================================================
--- activemq/camel/trunk/components/camel-jms/src/test/resources/log4j.properties (original)
+++ activemq/camel/trunk/components/camel-irc/src/test/resources/log4j.properties Mon Jun 25 11:44:49 2007
@@ -20,7 +20,6 @@
#
log4j.rootLogger=INFO, out
-log4j.logger.org.apache.activemq=WARN
#log4j.logger.org.apache.camel=DEBUG
# CONSOLE appender not used by default