You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@tomcat.apache.org by kf...@apache.org on 2015/05/21 12:14:51 UTC

svn commit: r1680802 [1/3] - in /tomcat/tc8.0.x/trunk: java/org/apache/catalina/tribes/group/ java/org/apache/catalina/tribes/group/interceptors/ java/org/apache/catalina/tribes/io/ java/org/apache/catalina/tribes/membership/ java/org/apache/catalina/t...

Author: kfujino
Date: Thu May 21 10:14:50 2015
New Revision: 1680802

URL: http://svn.apache.org/r1680802
Log:
Use StringManager to provide i18n support in the org.apache.catalina.tribes packages.

Added:
    tomcat/tc8.0.x/trunk/java/org/apache/catalina/tribes/group/LocalStrings.properties   (with props)
    tomcat/tc8.0.x/trunk/java/org/apache/catalina/tribes/group/interceptors/LocalStrings.properties   (with props)
    tomcat/tc8.0.x/trunk/java/org/apache/catalina/tribes/io/LocalStrings.properties   (with props)
    tomcat/tc8.0.x/trunk/java/org/apache/catalina/tribes/tipis/LocalStrings.properties   (with props)
    tomcat/tc8.0.x/trunk/java/org/apache/catalina/tribes/transport/bio/LocalStrings.properties   (with props)
    tomcat/tc8.0.x/trunk/java/org/apache/catalina/tribes/transport/bio/util/LocalStrings.properties   (with props)
    tomcat/tc8.0.x/trunk/java/org/apache/catalina/tribes/transport/nio/LocalStrings.properties   (with props)
Modified:
    tomcat/tc8.0.x/trunk/java/org/apache/catalina/tribes/group/ChannelCoordinator.java
    tomcat/tc8.0.x/trunk/java/org/apache/catalina/tribes/group/GroupChannel.java
    tomcat/tc8.0.x/trunk/java/org/apache/catalina/tribes/group/RpcChannel.java
    tomcat/tc8.0.x/trunk/java/org/apache/catalina/tribes/group/interceptors/DomainFilterInterceptor.java
    tomcat/tc8.0.x/trunk/java/org/apache/catalina/tribes/group/interceptors/FragmentationInterceptor.java
    tomcat/tc8.0.x/trunk/java/org/apache/catalina/tribes/group/interceptors/GzipInterceptor.java
    tomcat/tc8.0.x/trunk/java/org/apache/catalina/tribes/group/interceptors/MessageDispatchInterceptor.java
    tomcat/tc8.0.x/trunk/java/org/apache/catalina/tribes/group/interceptors/NonBlockingCoordinator.java
    tomcat/tc8.0.x/trunk/java/org/apache/catalina/tribes/group/interceptors/OrderInterceptor.java
    tomcat/tc8.0.x/trunk/java/org/apache/catalina/tribes/group/interceptors/TcpFailureDetector.java
    tomcat/tc8.0.x/trunk/java/org/apache/catalina/tribes/group/interceptors/TcpPingInterceptor.java
    tomcat/tc8.0.x/trunk/java/org/apache/catalina/tribes/group/interceptors/ThroughputInterceptor.java
    tomcat/tc8.0.x/trunk/java/org/apache/catalina/tribes/group/interceptors/TwoPhaseCommitInterceptor.java
    tomcat/tc8.0.x/trunk/java/org/apache/catalina/tribes/io/BufferPool.java
    tomcat/tc8.0.x/trunk/java/org/apache/catalina/tribes/io/ObjectReader.java
    tomcat/tc8.0.x/trunk/java/org/apache/catalina/tribes/io/ReplicationStream.java
    tomcat/tc8.0.x/trunk/java/org/apache/catalina/tribes/io/XByteBuffer.java
    tomcat/tc8.0.x/trunk/java/org/apache/catalina/tribes/membership/LocalStrings.properties
    tomcat/tc8.0.x/trunk/java/org/apache/catalina/tribes/membership/McastService.java
    tomcat/tc8.0.x/trunk/java/org/apache/catalina/tribes/membership/McastServiceImpl.java
    tomcat/tc8.0.x/trunk/java/org/apache/catalina/tribes/membership/MemberImpl.java
    tomcat/tc8.0.x/trunk/java/org/apache/catalina/tribes/membership/StaticMember.java
    tomcat/tc8.0.x/trunk/java/org/apache/catalina/tribes/tipis/AbstractReplicatedMap.java
    tomcat/tc8.0.x/trunk/java/org/apache/catalina/tribes/tipis/LazyReplicatedMap.java
    tomcat/tc8.0.x/trunk/java/org/apache/catalina/tribes/tipis/ReplicatedMap.java
    tomcat/tc8.0.x/trunk/java/org/apache/catalina/tribes/transport/LocalStrings.properties
    tomcat/tc8.0.x/trunk/java/org/apache/catalina/tribes/transport/LocalStrings_es.properties
    tomcat/tc8.0.x/trunk/java/org/apache/catalina/tribes/transport/PooledSender.java
    tomcat/tc8.0.x/trunk/java/org/apache/catalina/tribes/transport/ReceiverBase.java
    tomcat/tc8.0.x/trunk/java/org/apache/catalina/tribes/transport/bio/BioReceiver.java
    tomcat/tc8.0.x/trunk/java/org/apache/catalina/tribes/transport/bio/BioReplicationTask.java
    tomcat/tc8.0.x/trunk/java/org/apache/catalina/tribes/transport/bio/BioSender.java
    tomcat/tc8.0.x/trunk/java/org/apache/catalina/tribes/transport/bio/PooledMultiSender.java
    tomcat/tc8.0.x/trunk/java/org/apache/catalina/tribes/transport/bio/util/FastQueue.java
    tomcat/tc8.0.x/trunk/java/org/apache/catalina/tribes/transport/nio/NioReceiver.java
    tomcat/tc8.0.x/trunk/java/org/apache/catalina/tribes/transport/nio/NioReplicationTask.java
    tomcat/tc8.0.x/trunk/java/org/apache/catalina/tribes/transport/nio/NioSender.java
    tomcat/tc8.0.x/trunk/java/org/apache/catalina/tribes/transport/nio/ParallelNioSender.java
    tomcat/tc8.0.x/trunk/java/org/apache/catalina/tribes/transport/nio/PooledParallelSender.java
    tomcat/tc8.0.x/trunk/java/org/apache/catalina/tribes/util/Arrays.java
    tomcat/tc8.0.x/trunk/java/org/apache/catalina/tribes/util/ExecutorFactory.java
    tomcat/tc8.0.x/trunk/java/org/apache/catalina/tribes/util/LocalStrings.properties
    tomcat/tc8.0.x/trunk/java/org/apache/catalina/tribes/util/UUIDGenerator.java
    tomcat/tc8.0.x/trunk/webapps/docs/changelog.xml

Modified: tomcat/tc8.0.x/trunk/java/org/apache/catalina/tribes/group/ChannelCoordinator.java
URL: http://svn.apache.org/viewvc/tomcat/tc8.0.x/trunk/java/org/apache/catalina/tribes/group/ChannelCoordinator.java?rev=1680802&r1=1680801&r2=1680802&view=diff
==============================================================================
--- tomcat/tc8.0.x/trunk/java/org/apache/catalina/tribes/group/ChannelCoordinator.java (original)
+++ tomcat/tc8.0.x/trunk/java/org/apache/catalina/tribes/group/ChannelCoordinator.java Thu May 21 10:14:50 2015
@@ -31,6 +31,7 @@ import org.apache.catalina.tribes.transp
 import org.apache.catalina.tribes.transport.nio.NioReceiver;
 import org.apache.catalina.tribes.util.Arrays;
 import org.apache.catalina.tribes.util.Logs;
+import org.apache.catalina.tribes.util.StringManager;
 
 
 /**
@@ -39,6 +40,8 @@ import org.apache.catalina.tribes.util.L
  * This is the last interceptor in the chain.
  */
 public class ChannelCoordinator extends ChannelInterceptorBase implements MessageListener {
+    protected static final StringManager sm =
+            StringManager.getManager(ChannelCoordinator.class.getPackage().getName());
     private ChannelReceiver clusterReceiver;
     private ChannelSender clusterSender;
     private MembershipService membershipService;
@@ -140,7 +143,7 @@ public class ChannelCoordinator extends
             if (svc == 0 ) return;//nothing to start
 
             if (svc == (svc & startLevel)) {
-                throw new ChannelException("Channel already started for level:"+svc);
+                throw new ChannelException(sm.getString("channelCoordinator.alreadyStarted", svc));
             }
 
             //must start the receiver first so that we can coordinate the port it
@@ -174,8 +177,7 @@ public class ChannelCoordinator extends
             }
 
             if (!valid) {
-                throw new IllegalArgumentException("Invalid start level, valid levels are:" +
-                        "SND_RX_SEQ,SND_TX_SEQ,MBR_TX_SEQ,MBR_RX_SEQ");
+                throw new IllegalArgumentException(sm.getString("channelCoordinator.invalid.startLevel"));
             }
             startLevel = (startLevel | svc);
         }catch ( ChannelException cx ) {
@@ -226,8 +228,7 @@ public class ChannelCoordinator extends
                 membershipService.stop(MembershipService.MBR_TX);
             }
             if ( !valid) {
-                throw new IllegalArgumentException("Invalid start level, valid levels are:" +
-                        "SND_RX_SEQ,SND_TX_SEQ,MBR_TX_SEQ,MBR_RX_SEQ");
+                throw new IllegalArgumentException(sm.getString("channelCoordinator.invalid.startLevel"));
             }
 
             startLevel = (startLevel & (~svc));

Modified: tomcat/tc8.0.x/trunk/java/org/apache/catalina/tribes/group/GroupChannel.java
URL: http://svn.apache.org/viewvc/tomcat/tc8.0.x/trunk/java/org/apache/catalina/tribes/group/GroupChannel.java?rev=1680802&r1=1680801&r2=1680802&view=diff
==============================================================================
--- tomcat/tc8.0.x/trunk/java/org/apache/catalina/tribes/group/GroupChannel.java (original)
+++ tomcat/tc8.0.x/trunk/java/org/apache/catalina/tribes/group/GroupChannel.java Thu May 21 10:14:50 2015
@@ -44,6 +44,7 @@ import org.apache.catalina.tribes.io.Cha
 import org.apache.catalina.tribes.io.XByteBuffer;
 import org.apache.catalina.tribes.util.Arrays;
 import org.apache.catalina.tribes.util.Logs;
+import org.apache.catalina.tribes.util.StringManager;
 import org.apache.juli.logging.Log;
 import org.apache.juli.logging.LogFactory;
 
@@ -56,6 +57,8 @@ import org.apache.juli.logging.LogFactor
  */
 public class GroupChannel extends ChannelInterceptorBase implements ManagedChannel {
     private static final Log log = LogFactory.getLog(GroupChannel.class);
+    protected static final StringManager sm =
+            StringManager.getManager(GroupChannel.class.getPackage().getName());
 
     /**
      * Flag to determine if the channel manages its own heartbeat
@@ -200,11 +203,11 @@ public class GroupChannel extends Channe
     @Override
     public UniqueId send(Member[] destination, Serializable msg, int options, ErrorHandler handler)
             throws ChannelException {
-        if ( msg == null ) throw new ChannelException("Cant send a NULL message");
+        if ( msg == null ) throw new ChannelException(sm.getString("groupChannel.nullMessage"));
         XByteBuffer buffer = null;
         try {
             if (destination == null || destination.length == 0) {
-                throw new ChannelException("No destination given");
+                throw new ChannelException(sm.getString("groupChannel.noDestination"));
             }
             ChannelData data = new ChannelData(true);//generates a unique Id
             data.setAddress(getLocalMember(false));
@@ -274,7 +277,7 @@ public class GroupChannel extends Channe
                     fwd = XByteBuffer.deserialize(msg.getMessage().getBytesDirect(), 0,
                             msg.getMessage().getLength());
                 }catch (Exception sx) {
-                    log.error("Unable to deserialize message:"+msg,sx);
+                    log.error(sm.getString("groupChannel.unable.deserialize", msg),sx);
                     return;
                 }
             }
@@ -310,7 +313,7 @@ public class GroupChannel extends Channe
         } catch ( Exception x ) {
             //this could be the channel listener throwing an exception, we should log it
             //as a warning.
-            if ( log.isWarnEnabled() ) log.warn("Error receiving message:",x);
+            if ( log.isWarnEnabled() ) log.warn(sm.getString("groupChannel.receiving.error"),x);
             throw new RemoteProcessException("Exception:"+x.getMessage(),x);
         }
     }
@@ -330,7 +333,7 @@ public class GroupChannel extends Channe
                     new RpcMessage.NoRpcChannelReply(msg.rpcId, msg.uuid);
             send(new Member[]{destination},reply,Channel.SEND_OPTIONS_ASYNCHRONOUS);
         } catch ( Exception x ) {
-            log.error("Unable to find rpc channel, failed to send NoRpcChannelReply.",x);
+            log.error(sm.getString("groupChannel.sendFail.noRpcChannelReply"),x);
         }
     }
 
@@ -404,7 +407,8 @@ public class GroupChannel extends Channe
             }//end if
             first = first.getNext();
         }//while
-        if ( conflicts.length() > 0 ) throw new ChannelException("Interceptor option flag conflict: "+conflicts.toString());
+        if ( conflicts.length() > 0 ) throw new ChannelException(sm.getString("groupChannel.optionFlag.conflict",
+                conflicts.toString()));
 
     }
 
@@ -535,7 +539,8 @@ public class GroupChannel extends Channe
         if (!this.channelListeners.contains(channelListener) ) {
             this.channelListeners.add(channelListener);
         } else {
-            throw new IllegalArgumentException("Listener already exists:"+channelListener+"["+channelListener.getClass().getName()+"]");
+            throw new IllegalArgumentException(sm.getString("groupChannel.listener.alreadyExist",
+                    channelListener,channelListener.getClass().getName()));
         }
     }
 
@@ -695,7 +700,7 @@ public class GroupChannel extends Channe
                     // In the highly unlikely event it was a different trigger,
                     // simply ignore it and continue.
                 } catch ( Exception x ) {
-                    log.error("Unable to send heartbeat through Tribes interceptor stack. Will try to sleep again.",x);
+                    log.error(sm.getString("groupChannel.unable.sendHeartbeat"),x);
                 }//catch
             }//while
         }//run

Added: tomcat/tc8.0.x/trunk/java/org/apache/catalina/tribes/group/LocalStrings.properties
URL: http://svn.apache.org/viewvc/tomcat/tc8.0.x/trunk/java/org/apache/catalina/tribes/group/LocalStrings.properties?rev=1680802&view=auto
==============================================================================
--- tomcat/tc8.0.x/trunk/java/org/apache/catalina/tribes/group/LocalStrings.properties (added)
+++ tomcat/tc8.0.x/trunk/java/org/apache/catalina/tribes/group/LocalStrings.properties Thu May 21 10:14:50 2015
@@ -0,0 +1,26 @@
+# 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.
+
+channelCoordinator.alreadyStarted=Channel already started for level:{0}
+channelCoordinator.invalid.startLevel=Invalid start level, valid levels are:SND_RX_SEQ,SND_TX_SEQ,MBR_TX_SEQ,MBR_RX_SEQ
+groupChannel.nullMessage=Can't send a NULL message
+groupChannel.noDestination=No destination given
+groupChannel.unable.deserialize=Unable to deserialize message:{0}
+groupChannel.receiving.error=Error receiving message:
+groupChannel.sendFail.noRpcChannelReply=Unable to find rpc channel, failed to send NoRpcChannelReply.
+groupChannel.optionFlag.conflict=Interceptor option flag conflict: {0}
+groupChannel.listener.alreadyExist=Listener already exists:{0}[{1}]
+groupChannel.unable.sendHeartbeat=Unable to send heartbeat through Tribes interceptor stack. Will try to sleep again.
+rpcChannel.replyFailed=Unable to send back reply in RpcChannel.

Propchange: tomcat/tc8.0.x/trunk/java/org/apache/catalina/tribes/group/LocalStrings.properties
------------------------------------------------------------------------------
    svn:eol-style = native

Modified: tomcat/tc8.0.x/trunk/java/org/apache/catalina/tribes/group/RpcChannel.java
URL: http://svn.apache.org/viewvc/tomcat/tc8.0.x/trunk/java/org/apache/catalina/tribes/group/RpcChannel.java?rev=1680802&r1=1680801&r2=1680802&view=diff
==============================================================================
--- tomcat/tc8.0.x/trunk/java/org/apache/catalina/tribes/group/RpcChannel.java (original)
+++ tomcat/tc8.0.x/trunk/java/org/apache/catalina/tribes/group/RpcChannel.java Thu May 21 10:14:50 2015
@@ -27,6 +27,7 @@ import org.apache.catalina.tribes.Channe
 import org.apache.catalina.tribes.ErrorHandler;
 import org.apache.catalina.tribes.Member;
 import org.apache.catalina.tribes.UniqueId;
+import org.apache.catalina.tribes.util.StringManager;
 import org.apache.catalina.tribes.util.UUIDGenerator;
 import org.apache.juli.logging.Log;
 import org.apache.juli.logging.LogFactory;
@@ -36,6 +37,8 @@ import org.apache.juli.logging.LogFactor
  */
 public class RpcChannel implements ChannelListener{
     private static final Log log = LogFactory.getLog(RpcChannel.class);
+    protected static final StringManager sm =
+            StringManager.getManager(RpcChannel.class.getPackage().getName());
 
     public static final int FIRST_REPLY = 1;
     public static final int MAJORITY_REPLY = 2;
@@ -161,7 +164,7 @@ public class RpcChannel implements Chann
                 if (excallback != null && !asyncReply) {
                     excallback.replyFailed(rmsg.message, reply, sender, x);
                 } else {
-                    log.error("Unable to send back reply in RpcChannel.",x);
+                    log.error(sm.getString("rpcChannel.replyFailed"),x);
                 }
             }
             if (finished && excallback != null && !asyncReply) {

Modified: tomcat/tc8.0.x/trunk/java/org/apache/catalina/tribes/group/interceptors/DomainFilterInterceptor.java
URL: http://svn.apache.org/viewvc/tomcat/tc8.0.x/trunk/java/org/apache/catalina/tribes/group/interceptors/DomainFilterInterceptor.java?rev=1680802&r1=1680801&r2=1680802&view=diff
==============================================================================
--- tomcat/tc8.0.x/trunk/java/org/apache/catalina/tribes/group/interceptors/DomainFilterInterceptor.java (original)
+++ tomcat/tc8.0.x/trunk/java/org/apache/catalina/tribes/group/interceptors/DomainFilterInterceptor.java Thu May 21 10:14:50 2015
@@ -22,6 +22,7 @@ import org.apache.catalina.tribes.Channe
 import org.apache.catalina.tribes.Member;
 import org.apache.catalina.tribes.group.ChannelInterceptorBase;
 import org.apache.catalina.tribes.membership.Membership;
+import org.apache.catalina.tribes.util.StringManager;
 import org.apache.juli.logging.Log;
 import org.apache.juli.logging.LogFactory;
 
@@ -35,6 +36,8 @@ import org.apache.juli.logging.LogFactor
  */
 public class DomainFilterInterceptor extends ChannelInterceptorBase {
     private static final Log log = LogFactory.getLog(DomainFilterInterceptor.class);
+    protected static final StringManager sm =
+            StringManager.getManager(DomainFilterInterceptor.class.getPackage().getName());
     protected Membership membership = null;
 
     protected byte[] domain = new byte[0];
@@ -45,7 +48,7 @@ public class DomainFilterInterceptor ext
             super.messageReceived(msg);
         } else {
             if (log.isWarnEnabled())
-                log.warn("Received message from cluster["+msg.getAddress()+"] was refused.");
+                log.warn(sm.getString("domainFilterInterceptor.message.refused", msg.getAddress()));
         }
     }//messageReceived
 
@@ -61,7 +64,7 @@ public class DomainFilterInterceptor ext
         if ( notify ) {
             super.memberAdded(member);
         } else {
-            if(log.isInfoEnabled()) log.info("Member was refused to join cluster["+member+"]");
+            if(log.isInfoEnabled()) log.info(sm.getString("domainFilterInterceptor.member.refused", member));
         }
     }
 

Modified: tomcat/tc8.0.x/trunk/java/org/apache/catalina/tribes/group/interceptors/FragmentationInterceptor.java
URL: http://svn.apache.org/viewvc/tomcat/tc8.0.x/trunk/java/org/apache/catalina/tribes/group/interceptors/FragmentationInterceptor.java?rev=1680802&r1=1680801&r2=1680802&view=diff
==============================================================================
--- tomcat/tc8.0.x/trunk/java/org/apache/catalina/tribes/group/interceptors/FragmentationInterceptor.java (original)
+++ tomcat/tc8.0.x/trunk/java/org/apache/catalina/tribes/group/interceptors/FragmentationInterceptor.java Thu May 21 10:14:50 2015
@@ -27,6 +27,9 @@ import org.apache.catalina.tribes.Member
 import org.apache.catalina.tribes.group.ChannelInterceptorBase;
 import org.apache.catalina.tribes.group.InterceptorPayload;
 import org.apache.catalina.tribes.io.XByteBuffer;
+import org.apache.catalina.tribes.util.StringManager;
+import org.apache.juli.logging.Log;
+import org.apache.juli.logging.LogFactory;
 
 /**
  *
@@ -41,7 +44,8 @@ import org.apache.catalina.tribes.io.XBy
  * @version 1.0
  */
 public class FragmentationInterceptor extends ChannelInterceptorBase {
-    private static final org.apache.juli.logging.Log log = org.apache.juli.logging.LogFactory.getLog( FragmentationInterceptor.class );
+    private static final Log log = LogFactory.getLog(FragmentationInterceptor.class );
+    protected static final StringManager sm = StringManager.getManager(FragmentationInterceptor.class.getPackage().getName());
 
     protected final HashMap<FragKey, FragCollection> fragpieces = new HashMap<>();
     private int maxSize = 1024*100;
@@ -147,7 +151,7 @@ public class FragmentationInterceptor ex
             }
         }catch ( Exception x ) {
             if ( log.isErrorEnabled() ) {
-                log.error("Unable to perform heartbeat clean up in the frag interceptor",x);
+                log.error(sm.getString("fragmentationInterceptor.heartbeat.failed"),x);
             }
         }
         super.heartbeat();
@@ -199,7 +203,7 @@ public class FragmentationInterceptor ex
         }
 
         public ChannelMessage assemble() {
-            if ( !complete() ) throw new IllegalStateException("Fragments are missing.");
+            if ( !complete() ) throw new IllegalStateException(sm.getString("fragmentationInterceptor.fragments.missing"));
             int buffersize = 0;
             for (int i=0; i<frags.length; i++ ) buffersize += frags[i].getLength();
             XByteBuffer buf = new XByteBuffer(buffersize,false);

Modified: tomcat/tc8.0.x/trunk/java/org/apache/catalina/tribes/group/interceptors/GzipInterceptor.java
URL: http://svn.apache.org/viewvc/tomcat/tc8.0.x/trunk/java/org/apache/catalina/tribes/group/interceptors/GzipInterceptor.java?rev=1680802&r1=1680801&r2=1680802&view=diff
==============================================================================
--- tomcat/tc8.0.x/trunk/java/org/apache/catalina/tribes/group/interceptors/GzipInterceptor.java (original)
+++ tomcat/tc8.0.x/trunk/java/org/apache/catalina/tribes/group/interceptors/GzipInterceptor.java Thu May 21 10:14:50 2015
@@ -28,6 +28,7 @@ import org.apache.catalina.tribes.Channe
 import org.apache.catalina.tribes.Member;
 import org.apache.catalina.tribes.group.ChannelInterceptorBase;
 import org.apache.catalina.tribes.group.InterceptorPayload;
+import org.apache.catalina.tribes.util.StringManager;
 import org.apache.juli.logging.Log;
 import org.apache.juli.logging.LogFactory;
 
@@ -38,6 +39,8 @@ import org.apache.juli.logging.LogFactor
 public class GzipInterceptor extends ChannelInterceptorBase {
 
     private static final Log log = LogFactory.getLog(GzipInterceptor.class);
+    protected static final StringManager sm =
+            StringManager.getManager(GzipInterceptor.class.getPackage().getName());
 
     public static final int DEFAULT_BUFFER_SIZE = 2048;
 
@@ -49,7 +52,7 @@ public class GzipInterceptor extends Cha
             msg.getMessage().append(data,0,data.length);
             super.sendMessage(destination, msg, payload);
         } catch ( IOException x ) {
-            log.error("Unable to compress byte contents");
+            log.error(sm.getString("gzipInterceptor.compress.failed"));
             throw new ChannelException(x);
         }
     }
@@ -62,7 +65,7 @@ public class GzipInterceptor extends Cha
             msg.getMessage().append(data,0,data.length);
             super.messageReceived(msg);
         } catch ( IOException x ) {
-            log.error("Unable to decompress byte contents",x);
+            log.error(sm.getString("gzipInterceptor.decompress.failed"),x);
         }
     }
 

Added: tomcat/tc8.0.x/trunk/java/org/apache/catalina/tribes/group/interceptors/LocalStrings.properties
URL: http://svn.apache.org/viewvc/tomcat/tc8.0.x/trunk/java/org/apache/catalina/tribes/group/interceptors/LocalStrings.properties?rev=1680802&view=auto
==============================================================================
--- tomcat/tc8.0.x/trunk/java/org/apache/catalina/tribes/group/interceptors/LocalStrings.properties (added)
+++ tomcat/tc8.0.x/trunk/java/org/apache/catalina/tribes/group/interceptors/LocalStrings.properties Thu May 21 10:14:50 2015
@@ -0,0 +1,58 @@
+# 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.
+
+domainFilterInterceptor.message.refused=Received message from cluster[{0}] was refused.
+domainFilterInterceptor.member.refused=Member was refused to join cluster[{0}]
+fragmentationInterceptor.heartbeat.failed=Unable to perform heartbeat clean up in the frag interceptor
+fragmentationInterceptor.fragments.missing=Fragments are missing.
+gzipInterceptor.compress.failed=Unable to compress byte contents
+gzipInterceptor.decompress.failed=Unable to decompress byte contents
+messageDispatchInterceptor.queue.full=Asynchronous queue is full, reached its limit of {0} bytes, current:{1} bytes.
+messageDispatchInterceptor.unableAdd.queue=Unable to add the message to the async queue, queue bug?
+messageDispatchInterceptor.warning.optionflag=Warning, you are overriding the asynchronous option flag, this will disable the Channel.SEND_OPTIONS_ASYNCHRONOUS that other apps might use.
+messageDispatchInterceptor.completeMessage.failed=Unable to report back completed message.
+messageDispatchInterceptor.AsyncMessage.failed=Error while processing async message.
+messageDispatchInterceptor.errorMessage.failed=Unable to report back error message.
+nonBlockingCoordinator.electionMessage.sendfailed=Unable to send election message to:{0}
+nonBlockingCoordinator.processCoordinationMessage.failed=Error processing coordination message. Could be fatal.
+nonBlockingCoordinator.memberAdded.failed=Unable to start election when member was added.
+nonBlockingCoordinator.memberDisappeared.failed=Unable to start election when member was removed.
+nonBlockingCoordinator.heartbeat.inconsistency=Heartbeat found inconsistency, restart election
+nonBlockingCoordinator.heartbeat.failed=Unable to perform heartbeat.
+orderInterceptor.messageAdded.sameCounter=Message added has the same counter, synchronization bug. Disable the order interceptor
+tcpFailureDetector.memberDisappeared.verify=Received memberDisappeared[{0}] message. Will verify.
+tcpFailureDetector.already.disappeared=Verification complete. Member already disappeared[{0}]
+tcpFailureDetector.member.disappeared=Verification complete. Member disappeared[{0}]
+tcpFailureDetector.still.alive=Verification complete. Member still alive[{0}]
+tcpFailureDetector.heartbeat.failed=Unable to perform heartbeat on the TcpFailureDetector.
+tcpFailureDetector.performBasicCheck.memberAdded=Member added, even though we werent notified:{0}
+tcpFailureDetector.suspectMember.dead=Suspect member, confirmed dead.[{0}]
+tcpFailureDetector.suspectMember.alive=Suspect member, confirmed alive.[{0}]
+tcpFailureDetector.failureDetection.failed=Unable to perform failure detection check, assuming member down.
+tcpPingInterceptor.ping.failed=Unable to send TCP ping.
+tcpPingInterceptor.pingFailed.pingThread=Unable to send ping from TCP ping thread.
+throughputInterceptor.report=ThroughputInterceptor Report[\
+  \n\tTx Msg:{0} messages\
+  \n\tSent:{1} MB (total)\
+  \n\tSent:{2} MB (application)\
+  \n\tTime:{3} seconds\
+  \n\tTx Speed:{4} MB/sec (total)\
+  \n\tTxSpeed:{5} MB/sec (application)\
+  \n\tError Msg:{6}\
+  \n\tRx Msg:{7} messages\
+  \n\tRx Speed:{8} MB/sec (since 1st msg)\
+  \n\tReceived:{9} MB]\n
+twoPhaseCommitInterceptor.originalMessage.missing=Received a confirmation, but original message is missing. Id:{0} 
+twoPhaseCommitInterceptor.heartbeat.failed=Unable to perform heartbeat on the TwoPhaseCommit interceptor.
\ No newline at end of file

Propchange: tomcat/tc8.0.x/trunk/java/org/apache/catalina/tribes/group/interceptors/LocalStrings.properties
------------------------------------------------------------------------------
    svn:eol-style = native

Modified: tomcat/tc8.0.x/trunk/java/org/apache/catalina/tribes/group/interceptors/MessageDispatchInterceptor.java
URL: http://svn.apache.org/viewvc/tomcat/tc8.0.x/trunk/java/org/apache/catalina/tribes/group/interceptors/MessageDispatchInterceptor.java?rev=1680802&r1=1680801&r2=1680802&view=diff
==============================================================================
--- tomcat/tc8.0.x/trunk/java/org/apache/catalina/tribes/group/interceptors/MessageDispatchInterceptor.java (original)
+++ tomcat/tc8.0.x/trunk/java/org/apache/catalina/tribes/group/interceptors/MessageDispatchInterceptor.java Thu May 21 10:14:50 2015
@@ -25,6 +25,7 @@ import org.apache.catalina.tribes.group.
 import org.apache.catalina.tribes.group.InterceptorPayload;
 import org.apache.catalina.tribes.transport.bio.util.FastQueue;
 import org.apache.catalina.tribes.transport.bio.util.LinkObject;
+import org.apache.catalina.tribes.util.StringManager;
 import org.apache.juli.logging.Log;
 import org.apache.juli.logging.LogFactory;
 
@@ -39,7 +40,9 @@ import org.apache.juli.logging.LogFactor
  */
 public class MessageDispatchInterceptor extends ChannelInterceptorBase implements Runnable {
     private static final Log log = LogFactory.getLog(MessageDispatchInterceptor.class);
-
+    protected static final StringManager sm =
+            StringManager.getManager(MessageDispatchInterceptor.class.getPackage().getName());
+    
     protected long maxQueueSize = 1024*1024*64; //64MB
     protected final FastQueue queue = new FastQueue();
     protected volatile boolean run = false;
@@ -63,15 +66,15 @@ public class MessageDispatchInterceptor
                     super.sendMessage(destination,msg,payload);
                     return;
                 } else {
-                    throw new ChannelException("Asynchronous queue is full, reached its limit of " +
-                            maxQueueSize +" bytes, current:" + getCurrentSize() + " bytes.");
+                    throw new ChannelException(sm.getString("messageDispatchInterceptor.queue.full",
+                            maxQueueSize, getCurrentSize()));
                 }//end if
             }//end if
             //add to queue
             if ( useDeepClone ) msg = (ChannelMessage)msg.deepclone();
             if (!addToQueue(msg, destination, payload) ) {
                 throw new ChannelException(
-                        "Unable to add the message to the async queue, queue bug?");
+                        sm.getString("messageDispatchInterceptor.unableAdd.queue"));
             }
             addAndGetCurrentSize(msg.getMessage().getLength());
         } else {
@@ -109,9 +112,7 @@ public class MessageDispatchInterceptor
     @Override
     public void setOptionFlag(int flag) {
         if ( flag != Channel.SEND_OPTIONS_ASYNCHRONOUS ) {
-            log.warn("Warning, you are overriding the asynchronous option " +
-                    "flag, this will disable the Channel.SEND_OPTIONS_ASYNCHRONOUS " +
-                    "that other apps might use.");
+            log.warn(sm.getString("messageDispatchInterceptor.warning.optionflag"));
         }
         super.setOptionFlag(flag);
     }
@@ -200,19 +201,19 @@ public class MessageDispatchInterceptor
                     link.getHandler().handleCompletion(new UniqueId(msg.getUniqueId()));
                 }
             } catch ( Exception ex ) {
-                log.error("Unable to report back completed message.",ex);
+                log.error(sm.getString("messageDispatchInterceptor.completeMessage.failed"),ex);
             }
         } catch ( Exception x ) {
             ChannelException cx = null;
             if ( x instanceof ChannelException ) cx = (ChannelException)x;
             else cx = new ChannelException(x);
-            if ( log.isDebugEnabled() ) log.debug("Error while processing async message.",x);
+            if ( log.isDebugEnabled() ) log.debug(sm.getString("messageDispatchInterceptor.AsyncMessage.failed"),x);
             try {
                 if (link.getHandler() != null) {
                     link.getHandler().handleError(cx, new UniqueId(msg.getUniqueId()));
                 }
             } catch ( Exception ex ) {
-                log.error("Unable to report back error message.",ex);
+                log.error(sm.getString("messageDispatchInterceptor.errorMessage.failed"),ex);
             }
         } finally {
             addAndGetCurrentSize(-msg.getMessage().getLength());

Modified: tomcat/tc8.0.x/trunk/java/org/apache/catalina/tribes/group/interceptors/NonBlockingCoordinator.java
URL: http://svn.apache.org/viewvc/tomcat/tc8.0.x/trunk/java/org/apache/catalina/tribes/group/interceptors/NonBlockingCoordinator.java?rev=1680802&r1=1680801&r2=1680802&view=diff
==============================================================================
--- tomcat/tc8.0.x/trunk/java/org/apache/catalina/tribes/group/interceptors/NonBlockingCoordinator.java (original)
+++ tomcat/tc8.0.x/trunk/java/org/apache/catalina/tribes/group/interceptors/NonBlockingCoordinator.java Thu May 21 10:14:50 2015
@@ -32,6 +32,7 @@ import org.apache.catalina.tribes.io.XBy
 import org.apache.catalina.tribes.membership.MemberImpl;
 import org.apache.catalina.tribes.membership.Membership;
 import org.apache.catalina.tribes.util.Arrays;
+import org.apache.catalina.tribes.util.StringManager;
 import org.apache.catalina.tribes.util.UUIDGenerator;
 import org.apache.juli.logging.Log;
 import org.apache.juli.logging.LogFactory;
@@ -123,6 +124,8 @@ import org.apache.juli.logging.LogFactor
 public class NonBlockingCoordinator extends ChannelInterceptorBase {
 
     private static final Log log = LogFactory.getLog(NonBlockingCoordinator.class);
+    protected static final StringManager sm =
+            StringManager.getManager(NonBlockingCoordinator.class.getPackage().getName());
 
     /**
      * header for a coordination message
@@ -267,7 +270,7 @@ public class NonBlockingCoordinator exte
                 sendElectionMsg(local, msg.getMembers()[current], msg);
                 sent = true;
             }catch ( ChannelException x  ) {
-                log.warn("Unable to send election message to:"+msg.getMembers()[current]);
+                log.warn(sm.getString("nonBlockingCoordinator.electionMessage.sendfailed", msg.getMembers()[current]));
                 current = Arrays.nextIndex(msg.getMembers()[current],msg.getMembers());
                 if ( current == next ) throw x;
             }
@@ -494,7 +497,7 @@ public class NonBlockingCoordinator exte
                 fireInterceptorEvent(new CoordinationEvent(CoordinationEvent.EVT_MSG_ARRIVE,this,"Coord Msg Arrived("+Arrays.toNameString(cmbr)+")"));
                 processCoordMessage(cmsg);
             }catch ( ChannelException x ) {
-                log.error("Error processing coordination message. Could be fatal.",x);
+                log.error(sm.getString("nonBlockingCoordinator.processCoordinationMessage.failed"),x);
             }
         } else {
             super.messageReceived(msg);
@@ -513,7 +516,7 @@ public class NonBlockingCoordinator exte
             fireInterceptorEvent(new CoordinationEvent(CoordinationEvent.EVT_MBR_ADD,this,"Member add("+member.getName()+")"));
             if (started && elect) startElection(false);
         } catch (ChannelException x) {
-            log.error("Unable to start election when member was added.",x);
+            log.error(sm.getString("nonBlockingCoordinator.memberAdded.failed"),x);
         }
     }
 
@@ -526,7 +529,7 @@ public class NonBlockingCoordinator exte
             if (started && (isCoordinator() || isHighest()))
                 startElection(true); //to do, if a member disappears, only the coordinator can start
         } catch (ChannelException x) {
-            log.error("Unable to start election when member was removed.",x);
+            log.error(sm.getString("nonBlockingCoordinator.memberDisappeared.failed"),x);
         }
     }
 
@@ -548,12 +551,12 @@ public class NonBlockingCoordinator exte
             if ( view != null && (Arrays.diff(view,membership,local).length != 0 ||  Arrays.diff(membership,view,local).length != 0) ) {
                 if ( isHighest() ) {
                     fireInterceptorEvent(new CoordinationEvent(CoordinationEvent.EVT_START_ELECT, this,
-                                                               "Heartbeat found inconsistency, restart election"));
+                            sm.getString("nonBlockingCoordinator.heartbeat.inconsistency")));
                     startElection(true);
                 }
             }
         } catch ( Exception x  ){
-            log.error("Unable to perform heartbeat.",x);
+            log.error(sm.getString("nonBlockingCoordinator.heartbeat.failed"),x);
         } finally {
             super.heartbeat();
         }

Modified: tomcat/tc8.0.x/trunk/java/org/apache/catalina/tribes/group/interceptors/OrderInterceptor.java
URL: http://svn.apache.org/viewvc/tomcat/tc8.0.x/trunk/java/org/apache/catalina/tribes/group/interceptors/OrderInterceptor.java?rev=1680802&r1=1680801&r2=1680802&view=diff
==============================================================================
--- tomcat/tc8.0.x/trunk/java/org/apache/catalina/tribes/group/interceptors/OrderInterceptor.java (original)
+++ tomcat/tc8.0.x/trunk/java/org/apache/catalina/tribes/group/interceptors/OrderInterceptor.java Thu May 21 10:14:50 2015
@@ -27,6 +27,7 @@ import org.apache.catalina.tribes.Member
 import org.apache.catalina.tribes.group.ChannelInterceptorBase;
 import org.apache.catalina.tribes.group.InterceptorPayload;
 import org.apache.catalina.tribes.io.XByteBuffer;
+import org.apache.catalina.tribes.util.StringManager;
 
 
 /**
@@ -53,6 +54,8 @@ import org.apache.catalina.tribes.io.XBy
  * @version 1.1
  */
 public class OrderInterceptor extends ChannelInterceptorBase {
+    protected static final StringManager sm =
+            StringManager.getManager(OrderInterceptor.class.getPackage().getName());
     private final HashMap<Member, Counter> outcounter = new HashMap<>();
     private final HashMap<Member, Counter> incounter = new HashMap<>();
     private final HashMap<Member, MessageOrder> incoming = new HashMap<>();
@@ -292,7 +295,7 @@ public class OrderInterceptor extends Ch
                 add.next = iter;
 
             } else {
-                throw new ArithmeticException("Message added has the same counter, synchronization bug. Disable the order interceptor");
+                throw new ArithmeticException(sm.getString("orderInterceptor.messageAdded.sameCounter"));
             }
 
             return head;

Modified: tomcat/tc8.0.x/trunk/java/org/apache/catalina/tribes/group/interceptors/TcpFailureDetector.java
URL: http://svn.apache.org/viewvc/tomcat/tc8.0.x/trunk/java/org/apache/catalina/tribes/group/interceptors/TcpFailureDetector.java?rev=1680802&r1=1680801&r2=1680802&view=diff
==============================================================================
--- tomcat/tc8.0.x/trunk/java/org/apache/catalina/tribes/group/interceptors/TcpFailureDetector.java (original)
+++ tomcat/tc8.0.x/trunk/java/org/apache/catalina/tribes/group/interceptors/TcpFailureDetector.java Thu May 21 10:14:50 2015
@@ -36,6 +36,9 @@ import org.apache.catalina.tribes.io.Cha
 import org.apache.catalina.tribes.io.XByteBuffer;
 import org.apache.catalina.tribes.membership.Membership;
 import org.apache.catalina.tribes.membership.StaticMember;
+import org.apache.catalina.tribes.util.StringManager;
+import org.apache.juli.logging.Log;
+import org.apache.juli.logging.LogFactory;
 
 /**
  * <p>Title: A perfect failure detector </p>
@@ -58,7 +61,9 @@ import org.apache.catalina.tribes.member
  */
 public class TcpFailureDetector extends ChannelInterceptorBase {
 
-    private static final org.apache.juli.logging.Log log = org.apache.juli.logging.LogFactory.getLog( TcpFailureDetector.class );
+    private static final Log log = LogFactory.getLog( TcpFailureDetector.class );
+    protected static final StringManager sm =
+            StringManager.getManager(TcpFailureDetector.class.getPackage().getName());
 
     protected static final byte[] TCP_FAIL_DETECT = new byte[] {
         79, -89, 115, 72, 121, -126, 67, -55, -97, 111, -119, -128, -95, 91, 7, 20,
@@ -143,11 +148,11 @@ public class TcpFailureDetector extends
         boolean shutdown = Arrays.equals(member.getCommand(),Member.SHUTDOWN_PAYLOAD);
         if ( !shutdown )
             if(log.isInfoEnabled())
-                log.info("Received memberDisappeared["+member+"] message. Will verify.");
+                log.info(sm.getString("tcpFailureDetector.memberDisappeared.verify", member));
         synchronized (membership) {
             if (!membership.contains(member)) {
                 if(log.isInfoEnabled())
-                    log.info("Verification complete. Member already disappeared["+member+"]");
+                    log.info(sm.getString("tcpFailureDetector.already.disappeared", member));
                 return;
             }
             //check to see if the member really is gone
@@ -167,11 +172,11 @@ public class TcpFailureDetector extends
         }
         if ( notify ) {
             if(log.isInfoEnabled())
-                log.info("Verification complete. Member disappeared["+member+"]");
+                log.info(sm.getString("tcpFailureDetector.member.disappeared", member));
             super.memberDisappeared(member);
         } else {
             if(log.isInfoEnabled())
-                log.info("Verification complete. Member still alive["+member+"]");
+                log.info(sm.getString("tcpFailureDetector.still.alive", member));
 
         }
     }
@@ -213,7 +218,7 @@ public class TcpFailureDetector extends
                 else performForcedCheck();
             }
         } catch (Exception x) {
-            log.warn("Unable to perform heartbeat on the TcpFailureDetector.",x);
+            log.warn(sm.getString("tcpFailureDetector.heartbeat.failed"),x);
         }
     }
 
@@ -249,7 +254,7 @@ public class TcpFailureDetector extends
             if (membership.memberAlive(members[i])) {
                 //we don't have this one in our membership, check to see if he/she is alive
                 if (memberAlive(members[i])) {
-                    log.warn("Member added, even though we werent notified:" + members[i]);
+                    log.warn(sm.getString("tcpFailureDetector.performBasicCheck.memberAdded", members[i]));
                     super.memberAdded(members[i]);
                 } else {
                     membership.removeMember(members[i]);
@@ -267,7 +272,7 @@ public class TcpFailureDetector extends
                 super.memberDisappeared(m);
                 removeSuspects.remove(m);
                 if(log.isInfoEnabled())
-                    log.info("Suspect member, confirmed dead.["+m+"]");
+                    log.info(sm.getString("tcpFailureDetector.suspectMember.dead", m));
             } else {
                 if (removeSuspectsTimeout > 0) {
                     long timeNow = System.currentTimeMillis();
@@ -289,7 +294,7 @@ public class TcpFailureDetector extends
                 super.memberAdded(m);
                 addSuspects.remove(m);
                 if(log.isInfoEnabled())
-                    log.info("Suspect member, confirmed alive.["+m+"]");
+                    log.info(sm.getString("tcpFailureDetector.suspectMember.alive", m));
             } //end if
         }
     }
@@ -339,7 +344,7 @@ public class TcpFailureDetector extends
         } catch (ConnectException cx) {
             //do nothing, we couldn't connect
         } catch (Exception x) {
-            log.error("Unable to perform failure detection check, assuming member down.",x);
+            log.error(sm.getString("tcpFailureDetector.failureDetection.failed"),x);
         }
         return false;
     }

Modified: tomcat/tc8.0.x/trunk/java/org/apache/catalina/tribes/group/interceptors/TcpPingInterceptor.java
URL: http://svn.apache.org/viewvc/tomcat/tc8.0.x/trunk/java/org/apache/catalina/tribes/group/interceptors/TcpPingInterceptor.java?rev=1680802&r1=1680801&r2=1680802&view=diff
==============================================================================
--- tomcat/tc8.0.x/trunk/java/org/apache/catalina/tribes/group/interceptors/TcpPingInterceptor.java (original)
+++ tomcat/tc8.0.x/trunk/java/org/apache/catalina/tribes/group/interceptors/TcpPingInterceptor.java Thu May 21 10:14:50 2015
@@ -28,6 +28,7 @@ import org.apache.catalina.tribes.Member
 import org.apache.catalina.tribes.group.ChannelInterceptorBase;
 import org.apache.catalina.tribes.io.ChannelData;
 import org.apache.catalina.tribes.io.XByteBuffer;
+import org.apache.catalina.tribes.util.StringManager;
 import org.apache.juli.logging.Log;
 import org.apache.juli.logging.LogFactory;
 
@@ -42,6 +43,8 @@ import org.apache.juli.logging.LogFactor
 public class TcpPingInterceptor extends ChannelInterceptorBase {
 
     private static final Log log = LogFactory.getLog(TcpPingInterceptor.class);
+    protected static final StringManager sm =
+            StringManager.getManager(TcpPingInterceptor.class.getPackage().getName());
 
     protected static final byte[] TCP_PING_DATA = new byte[] {
         79, -89, 115, 72, 121, -33, 67, -55, -97, 111, -119, -128, -95, 91, 7, 20,
@@ -151,7 +154,7 @@ public class TcpPingInterceptor extends
         try {
             super.sendMessage(members, data, null);
         }catch (ChannelException x) {
-            log.warn("Unable to send TCP ping.",x);
+            log.warn(sm.getString("tcpPingInterceptor.ping.failed"),x);
         }
     }
 
@@ -182,7 +185,7 @@ public class TcpPingInterceptor extends
                     // In the highly unlikely event it was a different trigger,
                     // simply ignore it and continue.
                 }catch ( Exception x )  {
-                    log.warn("Unable to send ping from TCP ping thread.",x);
+                    log.warn(sm.getString("tcpPingInterceptor.pingFailed.pingThread"),x);
                 }
             }
         }

Modified: tomcat/tc8.0.x/trunk/java/org/apache/catalina/tribes/group/interceptors/ThroughputInterceptor.java
URL: http://svn.apache.org/viewvc/tomcat/tc8.0.x/trunk/java/org/apache/catalina/tribes/group/interceptors/ThroughputInterceptor.java?rev=1680802&r1=1680801&r2=1680802&view=diff
==============================================================================
--- tomcat/tc8.0.x/trunk/java/org/apache/catalina/tribes/group/interceptors/ThroughputInterceptor.java (original)
+++ tomcat/tc8.0.x/trunk/java/org/apache/catalina/tribes/group/interceptors/ThroughputInterceptor.java Thu May 21 10:14:50 2015
@@ -27,6 +27,7 @@ import org.apache.catalina.tribes.group.
 import org.apache.catalina.tribes.group.InterceptorPayload;
 import org.apache.catalina.tribes.io.ChannelData;
 import org.apache.catalina.tribes.io.XByteBuffer;
+import org.apache.catalina.tribes.util.StringManager;
 import org.apache.juli.logging.Log;
 import org.apache.juli.logging.LogFactory;
 
@@ -39,6 +40,8 @@ import org.apache.juli.logging.LogFactor
  */
 public class ThroughputInterceptor extends ChannelInterceptorBase {
     private static final Log log = LogFactory.getLog(ThroughputInterceptor.class);
+    protected static final StringManager sm =
+            StringManager.getManager(ThroughputInterceptor.class.getPackage().getName());
 
     double mbTx = 0;
     double mbAppTx = 0;
@@ -91,25 +94,12 @@ public class ThroughputInterceptor exten
     }
 
     public void report(double timeTx) {
-        StringBuilder buf = new StringBuilder("ThroughputInterceptor Report[\n\tTx Msg:");
-        buf.append(msgTxCnt).append(" messages\n\tSent:");
-        buf.append(df.format(mbTx));
-        buf.append(" MB (total)\n\tSent:");
-        buf.append(df.format(mbAppTx));
-        buf.append(" MB (application)\n\tTime:");
-        buf.append(df.format(timeTx));
-        buf.append(" seconds\n\tTx Speed:");
-        buf.append(df.format(mbTx/timeTx));
-        buf.append(" MB/sec (total)\n\tTxSpeed:");
-        buf.append(df.format(mbAppTx/timeTx));
-        buf.append(" MB/sec (application)\n\tError Msg:");
-        buf.append(msgTxErr).append("\n\tRx Msg:");
-        buf.append(msgRxCnt);
-        buf.append(" messages\n\tRx Speed:");
-        buf.append(df.format(mbRx/((System.currentTimeMillis()-rxStart)/1000)));
-        buf.append(" MB/sec (since 1st msg)\n\tReceived:");
-        buf.append(df.format(mbRx)).append(" MB]\n");
-        if ( log.isInfoEnabled() ) log.info(buf);
+        
+        if ( log.isInfoEnabled() )
+            log.info(sm.getString("throughputInterceptor.report", 
+                    msgTxCnt, df.format(mbTx), df.format(mbAppTx), df.format(timeTx), df.format(mbTx/timeTx),
+                    df.format(mbAppTx/timeTx), msgTxErr, msgRxCnt, df.format(mbRx/((System.currentTimeMillis()-rxStart)/1000)),
+                    df.format(mbRx)));
     }
 
     public void setInterval(int interval) {

Modified: tomcat/tc8.0.x/trunk/java/org/apache/catalina/tribes/group/interceptors/TwoPhaseCommitInterceptor.java
URL: http://svn.apache.org/viewvc/tomcat/tc8.0.x/trunk/java/org/apache/catalina/tribes/group/interceptors/TwoPhaseCommitInterceptor.java?rev=1680802&r1=1680801&r2=1680802&view=diff
==============================================================================
--- tomcat/tc8.0.x/trunk/java/org/apache/catalina/tribes/group/interceptors/TwoPhaseCommitInterceptor.java (original)
+++ tomcat/tc8.0.x/trunk/java/org/apache/catalina/tribes/group/interceptors/TwoPhaseCommitInterceptor.java Thu May 21 10:14:50 2015
@@ -26,13 +26,18 @@ import org.apache.catalina.tribes.Unique
 import org.apache.catalina.tribes.group.ChannelInterceptorBase;
 import org.apache.catalina.tribes.group.InterceptorPayload;
 import org.apache.catalina.tribes.util.Arrays;
+import org.apache.catalina.tribes.util.StringManager;
 import org.apache.catalina.tribes.util.UUIDGenerator;
+import org.apache.juli.logging.Log;
+import org.apache.juli.logging.LogFactory;
 
 public class TwoPhaseCommitInterceptor extends ChannelInterceptorBase {
 
     private static final byte[] START_DATA = new byte[] {113, 1, -58, 2, -34, -60, 75, -78, -101, -12, 32, -29, 32, 111, -40, 4};
     private static final byte[] END_DATA = new byte[] {54, -13, 90, 110, 47, -31, 75, -24, -81, -29, 36, 52, -58, 77, -110, 56};
-    private static final org.apache.juli.logging.Log log = org.apache.juli.logging.LogFactory.getLog(TwoPhaseCommitInterceptor.class);
+    private static final Log log = LogFactory.getLog(TwoPhaseCommitInterceptor.class);
+    protected static final StringManager sm =
+            StringManager.getManager(TwoPhaseCommitInterceptor.class.getPackage().getName());
 
     protected final HashMap<UniqueId, MapEntry> messages = new HashMap<>();
     protected long expire = 1000 * 60; //one minute expiration
@@ -75,7 +80,7 @@ public class TwoPhaseCommitInterceptor e
                 if ( original != null ) {
                     super.messageReceived(original.msg);
                     messages.remove(id);
-                } else log.warn("Received a confirmation, but original message is missing. Id:"+Arrays.toString(id.getBytes()));
+                } else log.warn(sm.getString("twoPhaseCommitInterceptor.originalMessage.missing", Arrays.toString(id.getBytes())));
             } else {
                 UniqueId id = new UniqueId(msg.getUniqueId());
                 MapEntry entry = new MapEntry((ChannelMessage)msg.deepclone(),id,System.currentTimeMillis());
@@ -117,7 +122,7 @@ public class TwoPhaseCommitInterceptor e
                 }//end if
             }
         } catch ( Exception x ) {
-            log.warn("Unable to perform heartbeat on the TwoPhaseCommit interceptor.",x);
+            log.warn(sm.getString("twoPhaseCommitInterceptor.heartbeat.failed"),x);
         } finally {
             super.heartbeat();
         }

Modified: tomcat/tc8.0.x/trunk/java/org/apache/catalina/tribes/io/BufferPool.java
URL: http://svn.apache.org/viewvc/tomcat/tc8.0.x/trunk/java/org/apache/catalina/tribes/io/BufferPool.java?rev=1680802&r1=1680801&r2=1680802&view=diff
==============================================================================
--- tomcat/tc8.0.x/trunk/java/org/apache/catalina/tribes/io/BufferPool.java (original)
+++ tomcat/tc8.0.x/trunk/java/org/apache/catalina/tribes/io/BufferPool.java Thu May 21 10:14:50 2015
@@ -17,6 +17,7 @@
 package org.apache.catalina.tribes.io;
 
 
+import org.apache.catalina.tribes.util.StringManager;
 import org.apache.juli.logging.Log;
 import org.apache.juli.logging.LogFactory;
 
@@ -30,6 +31,9 @@ public class BufferPool {
 
     public static final int DEFAULT_POOL_SIZE = 100*1024*1024; //100MB
 
+    protected static final StringManager sm =
+            StringManager.getManager(BufferPool.class.getPackage().getName());
+
 
 
     protected static volatile BufferPool instance = null;
@@ -59,9 +63,7 @@ public class BufferPool {
                 if (instance == null) {
                    BufferPoolAPI pool = new BufferPool15Impl();
                    pool.setMaxSize(DEFAULT_POOL_SIZE);
-                   log.info("Created a buffer pool with max size:" +
-                           DEFAULT_POOL_SIZE + " bytes of type: " +
-                           pool.getClass().getName());
+                   log.info(sm.getString("bufferPool.created", DEFAULT_POOL_SIZE, pool.getClass().getName()));
                    instance = new BufferPool(pool);
                 }
             }

Added: tomcat/tc8.0.x/trunk/java/org/apache/catalina/tribes/io/LocalStrings.properties
URL: http://svn.apache.org/viewvc/tomcat/tc8.0.x/trunk/java/org/apache/catalina/tribes/io/LocalStrings.properties?rev=1680802&view=auto
==============================================================================
--- tomcat/tc8.0.x/trunk/java/org/apache/catalina/tribes/io/LocalStrings.properties (added)
+++ tomcat/tc8.0.x/trunk/java/org/apache/catalina/tribes/io/LocalStrings.properties Thu May 21 10:14:50 2015
@@ -0,0 +1,24 @@
+# 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.
+
+bufferPool.created=Created a buffer pool with max size:{0} bytes of type: {1}
+objectReader.retrieveFailed.socketReceiverBufferSize=Unable to retrieve the socket receiver buffer size, setting to default 43800 bytes.
+replicationStream.conflict=conflicting non-public interface class loaders
+xByteBuffer.size.larger.buffer=Size is larger than existing buffer.
+xByteBuffer.unableTrim=Can''t trim more bytes than are available. length:{0} trim:{1}
+xByteBuffer.discarded.invalidHeader=Discarded the package, invalid header
+xByteBuffer.no.package=No package exists in XByteBuffer
+xByteBuffer.unableCreate=Unable to create data package, buffer is too small.
+xByteBuffer.wrong.class=Message has the wrong class. It should implement Serializable, instead it is:{0}
\ No newline at end of file

Propchange: tomcat/tc8.0.x/trunk/java/org/apache/catalina/tribes/io/LocalStrings.properties
------------------------------------------------------------------------------
    svn:eol-style = native

Modified: tomcat/tc8.0.x/trunk/java/org/apache/catalina/tribes/io/ObjectReader.java
URL: http://svn.apache.org/viewvc/tomcat/tc8.0.x/trunk/java/org/apache/catalina/tribes/io/ObjectReader.java?rev=1680802&r1=1680801&r2=1680802&view=diff
==============================================================================
--- tomcat/tc8.0.x/trunk/java/org/apache/catalina/tribes/io/ObjectReader.java (original)
+++ tomcat/tc8.0.x/trunk/java/org/apache/catalina/tribes/io/ObjectReader.java Thu May 21 10:14:50 2015
@@ -22,6 +22,7 @@ import java.nio.ByteBuffer;
 import java.nio.channels.SocketChannel;
 
 import org.apache.catalina.tribes.ChannelMessage;
+import org.apache.catalina.tribes.util.StringManager;
 import org.apache.juli.logging.Log;
 import org.apache.juli.logging.LogFactory;
 
@@ -37,6 +38,8 @@ import org.apache.juli.logging.LogFactor
 public class ObjectReader {
 
     private static final Log log = LogFactory.getLog(ObjectReader.class);
+    protected static final StringManager sm =
+            StringManager.getManager(ObjectReader.class.getPackage().getName());
 
     private XByteBuffer buffer;
 
@@ -65,7 +68,7 @@ public class ObjectReader {
             this.buffer = new XByteBuffer(socket.getReceiveBufferSize(), true);
         }catch ( IOException x ) {
             //unable to get buffer size
-            log.warn("Unable to retrieve the socket receiver buffer size, setting to default 43800 bytes.");
+            log.warn(sm.getString("objectReader.retrieveFailed.socketReceiverBufferSize"));
             this.buffer = new XByteBuffer(43800,true);
         }
     }

Modified: tomcat/tc8.0.x/trunk/java/org/apache/catalina/tribes/io/ReplicationStream.java
URL: http://svn.apache.org/viewvc/tomcat/tc8.0.x/trunk/java/org/apache/catalina/tribes/io/ReplicationStream.java?rev=1680802&r1=1680801&r2=1680802&view=diff
==============================================================================
--- tomcat/tc8.0.x/trunk/java/org/apache/catalina/tribes/io/ReplicationStream.java (original)
+++ tomcat/tc8.0.x/trunk/java/org/apache/catalina/tribes/io/ReplicationStream.java Thu May 21 10:14:50 2015
@@ -25,6 +25,8 @@ import java.io.ObjectStreamClass;
 import java.lang.reflect.Modifier;
 import java.lang.reflect.Proxy;
 
+import org.apache.catalina.tribes.util.StringManager;
+
 /**
  * Custom subclass of <code>ObjectInputStream</code> that loads from the
  * class loader for this web application.  This allows classes defined only
@@ -35,6 +37,8 @@ import java.lang.reflect.Proxy;
  */
 public final class ReplicationStream extends ObjectInputStream {
 
+    protected static final StringManager sm =
+            StringManager.getManager(ReplicationStream.class.getPackage().getName());
 
     /**
      * The class loader we will use to resolve classes.
@@ -119,7 +123,7 @@ public final class ReplicationStream ext
                 if (hasNonPublicInterface) {
                     if (nonPublicLoader != cl.getClassLoader()) {
                         throw new IllegalAccessError(
-                                "conflicting non-public interface class loaders");
+                                sm.getString("replicationStream.conflict"));
                     }
                 } else {
                     nonPublicLoader = cl.getClassLoader();

Modified: tomcat/tc8.0.x/trunk/java/org/apache/catalina/tribes/io/XByteBuffer.java
URL: http://svn.apache.org/viewvc/tomcat/tc8.0.x/trunk/java/org/apache/catalina/tribes/io/XByteBuffer.java?rev=1680802&r1=1680801&r2=1680802&view=diff
==============================================================================
--- tomcat/tc8.0.x/trunk/java/org/apache/catalina/tribes/io/XByteBuffer.java (original)
+++ tomcat/tc8.0.x/trunk/java/org/apache/catalina/tribes/io/XByteBuffer.java Thu May 21 10:14:50 2015
@@ -27,6 +27,10 @@ import java.io.Serializable;
 import java.nio.ByteBuffer;
 import java.util.concurrent.atomic.AtomicInteger;
 
+import org.apache.catalina.tribes.util.StringManager;
+import org.apache.juli.logging.Log;
+import org.apache.juli.logging.LogFactory;
+
 /**
  * The XByteBuffer provides a dual functionality.
  * One, it stores message bytes and automatically extends the byte buffer if needed.<BR>
@@ -46,9 +50,10 @@ import java.util.concurrent.atomic.Atomi
 public class XByteBuffer
 {
 
-    private static final org.apache.juli.logging.Log log =
-        org.apache.juli.logging.LogFactory.getLog( XByteBuffer.class );
-
+    private static final Log log = LogFactory.getLog( XByteBuffer.class );
+    protected static final StringManager sm =
+            StringManager.getManager(XByteBuffer.class.getPackage().getName());
+    
     /**
      * This is a package header, 7 bytes (FLT2002)
      */
@@ -105,13 +110,13 @@ public class XByteBuffer
     }
 
     public void setLength(int size) {
-        if ( size > buf.length ) throw new ArrayIndexOutOfBoundsException("Size is larger than existing buffer.");
+        if ( size > buf.length ) throw new ArrayIndexOutOfBoundsException(sm.getString("xByteBuffer.size.larger.buffer"));
         bufSize = size;
     }
 
     public void trim(int length) {
         if ( (bufSize - length) < 0 )
-            throw new ArrayIndexOutOfBoundsException("Can't trim more bytes than are available. length:"+bufSize+" trim:"+length);
+            throw new ArrayIndexOutOfBoundsException(sm.getString("xByteBuffer.unableTrim", bufSize, length));
         bufSize -= length;
     }
 
@@ -158,7 +163,7 @@ public class XByteBuffer
         if ( discard ) {
             if (bufSize > START_DATA.length && (firstIndexOf(buf, 0, START_DATA) == -1)) {
                 bufSize = 0;
-                log.error("Discarded the package, invalid header");
+                log.error(sm.getString("xByteBuffer.discarded.invalidHeader"));
                 return false;
             }
         }
@@ -225,7 +230,7 @@ public class XByteBuffer
         if ( discard ) {
             if (bufSize > START_DATA.length && (firstIndexOf(buf, 0, START_DATA) == -1)) {
                 bufSize = 0;
-                log.error("Discarded the package, invalid header");
+                log.error(sm.getString("xByteBuffer.discarded.invalidHeader"));
                 return false;
             }
         }
@@ -304,7 +309,7 @@ public class XByteBuffer
     public XByteBuffer extractDataPackage(boolean clearFromBuffer) {
         int psize = countPackages(true);
         if (psize == 0) {
-            throw new java.lang.IllegalStateException("No package exists in XByteBuffer");
+            throw new java.lang.IllegalStateException(sm.getString("xByteBuffer.no.package"));
         }
         int size = toInt(buf, START_DATA.length);
         XByteBuffer xbuf = BufferPool.getBufferPool().getBuffer(size,false);
@@ -350,7 +355,7 @@ public class XByteBuffer
 
     public static byte[] createDataPackage(byte[] data, int doff, int dlength, byte[] buffer, int bufoff) {
         if ( (buffer.length-bufoff) > getDataPackageLength(dlength) ) {
-            throw new ArrayIndexOutOfBoundsException("Unable to create data package, buffer is too small.");
+            throw new ArrayIndexOutOfBoundsException(sm.getString("xByteBuffer.unableCreate"));
         }
         System.arraycopy(START_DATA, 0, buffer, bufoff, START_DATA.length);
         toBytes(data.length,buffer, bufoff+START_DATA.length);
@@ -553,7 +558,7 @@ public class XByteBuffer
         } else if (message instanceof Serializable)
             return (Serializable) message;
         else {
-            throw new ClassCastException("Message has the wrong class. It should implement Serializable, instead it is:"+message.getClass().getName());
+            throw new ClassCastException(sm.getString("xByteBuffer.wrong.class", message.getClass().getName()));
         }
     }
 

Modified: tomcat/tc8.0.x/trunk/java/org/apache/catalina/tribes/membership/LocalStrings.properties
URL: http://svn.apache.org/viewvc/tomcat/tc8.0.x/trunk/java/org/apache/catalina/tribes/membership/LocalStrings.properties?rev=1680802&r1=1680801&r2=1680802&view=diff
==============================================================================
--- tomcat/tc8.0.x/trunk/java/org/apache/catalina/tribes/membership/LocalStrings.properties (original)
+++ tomcat/tc8.0.x/trunk/java/org/apache/catalina/tribes/membership/LocalStrings.properties Thu May 21 10:14:50 2015
@@ -18,3 +18,35 @@ McastService.parseSoTimeout=Unable to pa
 McastService.stopFail=Unable to stop the mcast service, level: [{0}]
 McastService.payload=Unable to send payload update
 McastService.domain=Unable to send domain update
+mcastService.missing.property=McastService:Required property "{0}" is missing.
+mcastService.noStart=Multicast send is not started or enabled.
+mcastService.exceed.maxPacketSize=Packet length[{0}] exceeds max packet size of {1} bytes.
+mcastServiceImpl.bind=Attempting to bind the multicast socket to {0}:{1}
+mcastServiceImpl.bind.failed=Binding to multicast address, failed. Binding to port only.
+mcastServiceImpl.setInterface=Setting multihome multicast interface to:{0}
+mcastServiceImpl.setSoTimeout=Setting cluster mcast soTimeout to {0}
+mcastServiceImpl.setTTL=Setting cluster mcast TTL to {0}
+mcastServiceImpl.receive.running=McastService.receive already running.
+mcastServiceImpl.unable.join=Unable to join multicast group, make sure your system has multicasting enabled.
+mcastServiceImpl.send.running=McastService.send already running.
+mcastServiceImpl.invalid.startLevel=Invalid start level. Only acceptable levels are Channel.MBR_RX_SEQ and Channel.MBR_TX_SEQ
+mcastServiceImpl.waitForMembers.start=Sleeping for {0} milliseconds to establish cluster membership, start level:{1}
+mcastServiceImpl.waitForMembers.done=Done sleeping, membership established, start level:{0}
+mcastServiceImpl.invalid.stopLevel=Invalid stop level. Only acceptable levels are Channel.MBR_RX_SEQ and Channel.MBR_TX_SEQ
+mcastServiceImpl.packet.tooLong=Multicast packet received was too long, dropping package:{0}
+mcastServiceImpl.unableReceive.broadcastMessage=Unable to receive broadcast message.
+mcastServiceImpl.memberDisappeared.failed=Unable to process member disappeared message.
+mcastServiceImpl.error.receiving=Error receiving mcast package. Sleeping 500ms
+mcastServiceImpl.send.failed=Unable to send mcast message.
+mcastServiceImpl.recovery.stopFailed=Recovery thread failed to stop membership service.
+mcastServiceImpl.recovery.startFailed=Recovery thread failed to start membership service.
+mcastServiceImpl.recovery=Tribes membership, running recovery thread, multicasting is not functional.
+mcastServiceImpl.recovery.successful=Membership recovery was successful.
+mcastServiceImpl.recovery.failed=Recovery attempt {0} failed, trying again in {1} seconds
+memberImpl.invalid.package.begin=Invalid package, should start with:{0}
+memberImpl.package.small=Member package to small to validate.
+memberImpl.notEnough.bytes=Not enough bytes in member package.
+memberImpl.invalid.package.end=Invalid package, should end with:{0}
+memberImpl.unableParse.hostname=Unable to parse hostname.
+memberImpl.large.payload=Payload is to large for tribes to handle.
+staticMember.invalid.uuidLength=UUID must be exactly 16 bytes, not:{0}
\ No newline at end of file

Modified: tomcat/tc8.0.x/trunk/java/org/apache/catalina/tribes/membership/McastService.java
URL: http://svn.apache.org/viewvc/tomcat/tc8.0.x/trunk/java/org/apache/catalina/tribes/membership/McastService.java?rev=1680802&r1=1680801&r2=1680802&view=diff
==============================================================================
--- tomcat/tc8.0.x/trunk/java/org/apache/catalina/tribes/membership/McastService.java (original)
+++ tomcat/tc8.0.x/trunk/java/org/apache/catalina/tribes/membership/McastService.java Thu May 21 10:14:50 2015
@@ -268,7 +268,7 @@ public class McastService implements Mem
      * @param name The property to check for
      */
     protected void hasProperty(Properties properties, String name){
-        if ( properties.getProperty(name)==null) throw new IllegalArgumentException("McastService:Required property \""+name+"\" is missing.");
+        if ( properties.getProperty(name)==null) throw new IllegalArgumentException(sm.getString("mcastService.missing.property", name));
     }
 
     /**
@@ -333,7 +333,7 @@ public class McastService implements Mem
             try {
                 soTimeout = Integer.parseInt(properties.getProperty("mcastSoTimeout"));
             } catch ( Exception x ) {
-                log.error(sm.getString("McastService.parseTTL",
+                log.error(sm.getString("McastService.parseSoTimeout",
                         properties.getProperty("mcastSoTimeout")), x);
             }
         }
@@ -483,11 +483,11 @@ public class McastService implements Mem
     @Override
     public void broadcast(ChannelMessage message) throws ChannelException {
         if (impl==null || (impl.startLevel & Channel.MBR_TX_SEQ)!=Channel.MBR_TX_SEQ )
-            throw new ChannelException("Multicast send is not started or enabled.");
+            throw new ChannelException(sm.getString("mcastService.noStart"));
 
         byte[] data = XByteBuffer.createDataPackage((ChannelData)message);
         if (data.length>McastServiceImpl.MAX_PACKET_SIZE) {
-            throw new ChannelException("Packet length["+data.length+"] exceeds max packet size of "+McastServiceImpl.MAX_PACKET_SIZE+" bytes.");
+            throw new ChannelException(sm.getString("mcastService.exceed.maxPacketSize", data.length,McastServiceImpl.MAX_PACKET_SIZE));
         }
         DatagramPacket packet = new DatagramPacket(data,0,data.length);
         try {

Modified: tomcat/tc8.0.x/trunk/java/org/apache/catalina/tribes/membership/McastServiceImpl.java
URL: http://svn.apache.org/viewvc/tomcat/tc8.0.x/trunk/java/org/apache/catalina/tribes/membership/McastServiceImpl.java?rev=1680802&r1=1680801&r2=1680802&view=diff
==============================================================================
--- tomcat/tc8.0.x/trunk/java/org/apache/catalina/tribes/membership/McastServiceImpl.java (original)
+++ tomcat/tc8.0.x/trunk/java/org/apache/catalina/tribes/membership/McastServiceImpl.java Thu May 21 10:14:50 2015
@@ -37,6 +37,9 @@ import org.apache.catalina.tribes.Messag
 import org.apache.catalina.tribes.io.ChannelData;
 import org.apache.catalina.tribes.io.XByteBuffer;
 import org.apache.catalina.tribes.util.ExecutorFactory;
+import org.apache.catalina.tribes.util.StringManager;
+import org.apache.juli.logging.Log;
+import org.apache.juli.logging.LogFactory;
 
 /**
  * A <b>membership</b> implementation using simple multicast.
@@ -49,10 +52,12 @@ import org.apache.catalina.tribes.util.E
  */
 public class McastServiceImpl
 {
-    private static final org.apache.juli.logging.Log log =
-        org.apache.juli.logging.LogFactory.getLog( McastService.class );
+    private static final Log log = LogFactory.getLog( McastService.class );
 
     protected static final int MAX_PACKET_SIZE = 65535;
+
+    protected static final StringManager sm = StringManager.getManager(Constants.Package);
+
     /**
      * Internal flag used for the listen thread that listens to the multicasting socket.
      */
@@ -206,7 +211,7 @@ public class McastServiceImpl
     protected void setupSocket() throws IOException {
         if (mcastBindAddress != null) {
             try {
-                log.info("Attempting to bind the multicast socket to "+address+":"+port);
+                log.info(sm.getString("mcastServiceImpl.bind", address, port));
                 socket = new MulticastSocket(new InetSocketAddress(address,port));
             } catch (BindException e) {
                 /*
@@ -214,7 +219,7 @@ public class McastServiceImpl
                  * to the multicast address. In this case only bind to the
                  * port.
                  */
-                log.info("Binding to multicast address, failed. Binding to port only.");
+                log.info(sm.getString("mcastServiceImpl.bind.failed"));
                 socket = new MulticastSocket(port);
             }
         } else {
@@ -223,18 +228,18 @@ public class McastServiceImpl
         socket.setLoopbackMode(localLoopbackDisabled); //hint if we want disable loop back(local machine) messages
         if (mcastBindAddress != null) {
             if(log.isInfoEnabled())
-                log.info("Setting multihome multicast interface to:" +mcastBindAddress);
+                log.info(sm.getString("mcastServiceImpl.setInterface", mcastBindAddress));
             socket.setInterface(mcastBindAddress);
         } //end if
         //force a so timeout so that we don't block forever
         if ( mcastSoTimeout <= 0 ) mcastSoTimeout = (int)sendFrequency;
         if(log.isInfoEnabled())
-            log.info("Setting cluster mcast soTimeout to "+mcastSoTimeout);
+            log.info(sm.getString("mcastServiceImpl.setSoTimeout", mcastSoTimeout));
         socket.setSoTimeout(mcastSoTimeout);
 
         if ( mcastTTL >= 0 ) {
             if(log.isInfoEnabled())
-                log.info("Setting cluster mcast TTL to " + mcastTTL);
+                log.info(sm.getString("mcastServiceImpl.setTTL", mcastTTL));
             socket.setTimeToLive(mcastTTL);
         }
     }
@@ -249,11 +254,11 @@ public class McastServiceImpl
     public synchronized void start(int level) throws IOException {
         boolean valid = false;
         if ( (level & Channel.MBR_RX_SEQ)==Channel.MBR_RX_SEQ ) {
-            if ( receiver != null ) throw new IllegalStateException("McastService.receive already running.");
+            if ( receiver != null ) throw new IllegalStateException(sm.getString("mcastServiceImpl.receive.running"));
             try {
                 if ( sender == null ) socket.joinGroup(address);
             }catch (IOException iox) {
-                log.error("Unable to join multicast group, make sure your system has multicasting enabled.");
+                log.error(sm.getString("mcastServiceImpl.unable.join"));
                 throw iox;
             }
             doRunReceiver = true;
@@ -263,7 +268,7 @@ public class McastServiceImpl
             valid = true;
         }
         if ( (level & Channel.MBR_TX_SEQ)==Channel.MBR_TX_SEQ ) {
-            if ( sender != null ) throw new IllegalStateException("McastService.send already running.");
+            if ( sender != null ) throw new IllegalStateException(sm.getString("mcastServiceImpl.send.running"));
             if ( receiver == null ) socket.joinGroup(address);
             //make sure at least one packet gets out there
             send(false);
@@ -275,7 +280,7 @@ public class McastServiceImpl
             valid = true;
         }
         if (!valid) {
-            throw new IllegalArgumentException("Invalid start level. Only acceptable levels are Channel.MBR_RX_SEQ and Channel.MBR_TX_SEQ");
+            throw new IllegalArgumentException(sm.getString("mcastServiceImpl.invalid.startLevel"));
         }
         //pause, once or twice
         waitForMembers(level);
@@ -285,10 +290,10 @@ public class McastServiceImpl
     private void waitForMembers(int level) {
         long memberwait = sendFrequency*2;
         if(log.isInfoEnabled())
-            log.info("Sleeping for "+memberwait+" milliseconds to establish cluster membership, start level:"+level);
+            log.info(sm.getString("mcastServiceImpl.waitForMembers.start", memberwait, level));
         try {Thread.sleep(memberwait);}catch (InterruptedException ignore){}
         if(log.isInfoEnabled())
-            log.info("Done sleeping, membership established, start level:"+level);
+            log.info(sm.getString("mcastServiceImpl.waitForMembers.done", level));
     }
 
     /**
@@ -312,7 +317,7 @@ public class McastServiceImpl
         }
 
         if (!valid) {
-            throw new IllegalArgumentException("Invalid stop level. Only acceptable levels are Channel.MBR_RX_SEQ and Channel.MBR_TX_SEQ");
+            throw new IllegalArgumentException(sm.getString("mcastServiceImpl.invalid.stopLevel"));
         }
         startLevel = (startLevel & (~level));
         //we're shutting down, send a shutdown message and close the socket
@@ -339,7 +344,7 @@ public class McastServiceImpl
 
             socket.receive(receivePacket);
             if(receivePacket.getLength() > MAX_PACKET_SIZE) {
-                log.error("Multicast packet received was too long, dropping package:"+receivePacket.getLength());
+                log.error(sm.getString("mcastServiceImpl.packet.tooLong", receivePacket.getLength()));
             } else {
                 byte[] data = new byte[receivePacket.getLength()];
                 System.arraycopy(receivePacket.getData(), receivePacket.getOffset(), data, 0, data.length);
@@ -428,7 +433,7 @@ public class McastServiceImpl
                                 if (t instanceof VirtualMachineError) {
                                     throw (VirtualMachineError) t;
                                 }
-                                log.error("Unable to receive broadcast message.",t);
+                                log.error(sm.getString("mcastServiceImpl.unableReceive.broadcastMessage"),t);
                             }
                         }
                     }finally {
@@ -464,7 +469,7 @@ public class McastServiceImpl
                     };
                     executor.execute(t);
                 } catch (Exception x) {
-                    log.error("Unable to process member disappeared message.", x);
+                    log.error(sm.getString("mcastServiceImpl.memberDisappeared.failed"), x);
                 }
             }
         }
@@ -537,7 +542,7 @@ public class McastServiceImpl
                     if ( log.isDebugEnabled() )
                         log.debug("Invalid member mcast package.",ax);
                 } catch ( Exception x ) {
-                    if (errorCounter==0 && doRunReceiver) log.warn("Error receiving mcast package. Sleeping 500ms",x);
+                    if (errorCounter==0 && doRunReceiver) log.warn(sm.getString("mcastServiceImpl.error.receiving"),x);
                     else if (log.isDebugEnabled()) log.debug("Error receiving mcast package"+(doRunReceiver?". Sleeping 500ms":"."),x);
                     if (doRunReceiver) {
                         try { Thread.sleep(500); } catch ( Exception ignore ){}
@@ -566,7 +571,7 @@ public class McastServiceImpl
                     send(true);
                     errorCounter = 0;
                 } catch ( Exception x ) {
-                    if (errorCounter==0) log.warn("Unable to send mcast message.",x);
+                    if (errorCounter==0) log.warn(sm.getString("mcastServiceImpl.send.failed"),x);
                     else log.debug("Unable to send mcast message.",x);
                     if ( (++errorCounter)>=recoveryCounter ) {
                         errorCounter=0;
@@ -610,7 +615,7 @@ public class McastServiceImpl
                 parent.stop(Channel.MBR_RX_SEQ | Channel.MBR_TX_SEQ);
                 return true;
             } catch (Exception x) {
-                log.warn("Recovery thread failed to stop membership service.", x);
+                log.warn(sm.getString("mcastServiceImpl.recovery.stopFailed"), x);
                 return false;
             }
         }
@@ -620,7 +625,7 @@ public class McastServiceImpl
                 parent.start(Channel.MBR_RX_SEQ | Channel.MBR_TX_SEQ);
                 return true;
             } catch (Exception x) {
-                log.warn("Recovery thread failed to start membership service.", x);
+                log.warn(sm.getString("mcastServiceImpl.recovery.startFailed"), x);
                 return false;
             }
         }
@@ -631,16 +636,16 @@ public class McastServiceImpl
             try {
                 while (!success) {
                     if(log.isInfoEnabled())
-                        log.info("Tribes membership, running recovery thread, multicasting is not functional.");
+                        log.info(sm.getString("mcastServiceImpl.recovery"));
                     if (stopService() & startService()) {
                         success = true;
                         if(log.isInfoEnabled())
-                            log.info("Membership recovery was successful.");
+                            log.info(sm.getString("mcastServiceImpl.recovery.successful"));
                     }
                     try {
                         if (!success) {
                             if(log.isInfoEnabled())
-                                log.info("Recovery attempt "+(++attempt)+" failed, trying again in " +parent.recoverySleepTime+ " seconds");
+                                log.info(sm.getString("mcastServiceImpl.recovery.failed", ++attempt, parent.recoverySleepTime));
                             Thread.sleep(parent.recoverySleepTime);
                         }
                     }catch (InterruptedException ignore) {

Modified: tomcat/tc8.0.x/trunk/java/org/apache/catalina/tribes/membership/MemberImpl.java
URL: http://svn.apache.org/viewvc/tomcat/tc8.0.x/trunk/java/org/apache/catalina/tribes/membership/MemberImpl.java?rev=1680802&r1=1680801&r2=1680802&view=diff
==============================================================================
--- tomcat/tc8.0.x/trunk/java/org/apache/catalina/tribes/membership/MemberImpl.java (original)
+++ tomcat/tc8.0.x/trunk/java/org/apache/catalina/tribes/membership/MemberImpl.java Thu May 21 10:14:50 2015
@@ -25,6 +25,7 @@ import java.util.Arrays;
 import org.apache.catalina.tribes.Member;
 import org.apache.catalina.tribes.io.XByteBuffer;
 import org.apache.catalina.tribes.transport.SenderState;
+import org.apache.catalina.tribes.util.StringManager;
 
 /**
  * A <b>membership</b> implementation using simple multicast.
@@ -41,6 +42,7 @@ public class MemberImpl implements Membe
 
     public static final transient byte[] TRIBES_MBR_BEGIN = new byte[] {84, 82, 73, 66, 69, 83, 45, 66, 1, 0};
     public static final transient byte[] TRIBES_MBR_END   = new byte[] {84, 82, 73, 66, 69, 83, 45, 69, 1, 0};
+    protected static final StringManager sm = StringManager.getManager(Constants.Package);
 
     /**
      * The listen host for this member
@@ -315,11 +317,11 @@ public class MemberImpl implements Membe
         int pos = offset;
 
         if (XByteBuffer.firstIndexOf(data,offset,TRIBES_MBR_BEGIN)!=pos) {
-            throw new IllegalArgumentException("Invalid package, should start with:"+org.apache.catalina.tribes.util.Arrays.toString(TRIBES_MBR_BEGIN));
+            throw new IllegalArgumentException(sm.getString("memberImpl.invalid.package.begin", org.apache.catalina.tribes.util.Arrays.toString(TRIBES_MBR_BEGIN)));
         }
 
         if ( length < (TRIBES_MBR_BEGIN.length+4) ) {
-            throw new ArrayIndexOutOfBoundsException("Member package to small to validate.");
+            throw new ArrayIndexOutOfBoundsException(sm.getString("memberImpl.package.small"));
         }
 
         pos += TRIBES_MBR_BEGIN.length;
@@ -328,12 +330,12 @@ public class MemberImpl implements Membe
         pos += 4;
 
         if ( length < (bodylength+4+TRIBES_MBR_BEGIN.length+TRIBES_MBR_END.length) ) {
-            throw new ArrayIndexOutOfBoundsException("Not enough bytes in member package.");
+            throw new ArrayIndexOutOfBoundsException(sm.getString("memberImpl.notEnough.bytes"));
         }
 
         int endpos = pos+bodylength;
         if (XByteBuffer.firstIndexOf(data,endpos,TRIBES_MBR_END)!=endpos) {
-            throw new IllegalArgumentException("Invalid package, should end with:"+org.apache.catalina.tribes.util.Arrays.toString(TRIBES_MBR_END));
+            throw new IllegalArgumentException(sm.getString("memberImpl.invalid.package.end", org.apache.catalina.tribes.util.Arrays.toString(TRIBES_MBR_END)));
         }
 
 
@@ -444,7 +446,7 @@ public class MemberImpl implements Membe
                     this.hostname = org.apache.catalina.tribes.util.Arrays.toString(host,0,host.length,true);
                 return this.hostname;
             }catch ( IOException x ) {
-                throw new RuntimeException("Unable to parse hostname.",x);
+                throw new RuntimeException(sm.getString("memberImpl.unableParse.hostname"),x);
             }
         }
     }
@@ -599,7 +601,7 @@ public class MemberImpl implements Membe
         this.payload = payload!=null?payload:new byte[0];
         if ( this.getData(true,true).length > McastServiceImpl.MAX_PACKET_SIZE ) {
             this.payload = oldpayload;
-            throw new IllegalArgumentException("Payload is to large for tribes to handle.");
+            throw new IllegalArgumentException(sm.getString("memberImpl.large.payload"));
         }
 
     }

Modified: tomcat/tc8.0.x/trunk/java/org/apache/catalina/tribes/membership/StaticMember.java
URL: http://svn.apache.org/viewvc/tomcat/tc8.0.x/trunk/java/org/apache/catalina/tribes/membership/StaticMember.java?rev=1680802&r1=1680801&r2=1680802&view=diff
==============================================================================
--- tomcat/tc8.0.x/trunk/java/org/apache/catalina/tribes/membership/StaticMember.java (original)
+++ tomcat/tc8.0.x/trunk/java/org/apache/catalina/tribes/membership/StaticMember.java Thu May 21 10:14:50 2015
@@ -59,7 +59,7 @@ public class StaticMember extends Member
      */
     public void setUniqueId(String id) {
         byte[] uuid = Arrays.fromString(id);
-        if ( uuid==null || uuid.length != 16 ) throw new RuntimeException("UUID must be exactly 16 bytes, not:"+id);
+        if ( uuid==null || uuid.length != 16 ) throw new RuntimeException(sm.getString("staticMember.invalid.uuidLength", id));
         setUniqueId(uuid);
     }
 



---------------------------------------------------------------------
To unsubscribe, e-mail: dev-unsubscribe@tomcat.apache.org
For additional commands, e-mail: dev-help@tomcat.apache.org