You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@tomcat.apache.org by ma...@apache.org on 2006/10/24 05:18:02 UTC
svn commit: r467222 [27/31] - in /tomcat/tc6.0.x/trunk/java:
javax/annotation/ javax/annotation/security/ javax/ejb/ javax/el/
javax/mail/ javax/mail/internet/ javax/persistence/ javax/servlet/
javax/servlet/http/ javax/servlet/jsp/ javax/servlet/jsp/e...
Modified: tomcat/tc6.0.x/trunk/java/org/apache/catalina/tribes/transport/nio/ParallelNioSender.java
URL: http://svn.apache.org/viewvc/tomcat/tc6.0.x/trunk/java/org/apache/catalina/tribes/transport/nio/ParallelNioSender.java?view=diff&rev=467222&r1=467221&r2=467222
==============================================================================
--- tomcat/tc6.0.x/trunk/java/org/apache/catalina/tribes/transport/nio/ParallelNioSender.java (original)
+++ tomcat/tc6.0.x/trunk/java/org/apache/catalina/tribes/transport/nio/ParallelNioSender.java Mon Oct 23 20:17:11 2006
@@ -1,289 +1,289 @@
-/*
- * 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.catalina.tribes.transport.nio;
-
-
-import java.io.IOException;
-import java.nio.channels.SelectionKey;
-import java.nio.channels.Selector;
-import java.util.HashMap;
-import java.util.Iterator;
-import java.util.Map;
-
-import org.apache.catalina.tribes.ChannelException;
-import org.apache.catalina.tribes.ChannelMessage;
-import org.apache.catalina.tribes.Member;
-import org.apache.catalina.tribes.io.ChannelData;
-import org.apache.catalina.tribes.io.XByteBuffer;
-import org.apache.catalina.tribes.transport.MultiPointSender;
-import org.apache.catalina.tribes.transport.SenderState;
-import org.apache.catalina.tribes.transport.AbstractSender;
-import java.net.UnknownHostException;
-import org.apache.catalina.tribes.Channel;
-import org.apache.catalina.tribes.group.RpcChannel;
-import org.apache.catalina.tribes.util.Logs;
-import org.apache.catalina.tribes.UniqueId;
-
-/**
- * <p>Title: </p>
- *
- * <p>Description: </p>
- *
- * <p>Copyright: Copyright (c) 2005</p>
- *
- * <p>Company: </p>
- *
- * @author not attributable
- * @version 1.0
- */
-public class ParallelNioSender extends AbstractSender implements MultiPointSender {
-
- protected static org.apache.juli.logging.Log log = org.apache.juli.logging.LogFactory.getLog(ParallelNioSender.class);
- protected long selectTimeout = 5000; //default 5 seconds, same as send timeout
- protected Selector selector;
- protected HashMap nioSenders = new HashMap();
-
- public ParallelNioSender() throws IOException {
- selector = Selector.open();
- setConnected(true);
- }
-
-
- public synchronized void sendMessage(Member[] destination, ChannelMessage msg) throws ChannelException {
- long start = System.currentTimeMillis();
- byte[] data = XByteBuffer.createDataPackage((ChannelData)msg);
- NioSender[] senders = setupForSend(destination);
- connect(senders);
- setData(senders,data);
-
- int remaining = senders.length;
- ChannelException cx = null;
- try {
- //loop until complete, an error happens, or we timeout
- long delta = System.currentTimeMillis() - start;
- boolean waitForAck = (Channel.SEND_OPTIONS_USE_ACK & msg.getOptions()) == Channel.SEND_OPTIONS_USE_ACK;
- while ( (remaining>0) && (delta<getTimeout()) ) {
- try {
- remaining -= doLoop(selectTimeout, getMaxRetryAttempts(),waitForAck,msg);
- } catch (Exception x ) {
- if ( cx == null ) {
- if ( x instanceof ChannelException ) cx = (ChannelException)x;
- else cx = new ChannelException("Parallel NIO send failed.", x);
- } else {
- if (x instanceof ChannelException) cx.addFaultyMember( ( (ChannelException) x).getFaultyMembers());
- }
- }
- //bail out if all remaining senders are failing
- if ( cx != null && cx.getFaultyMembers().length == remaining ) throw cx;
- delta = System.currentTimeMillis() - start;
- }
- if ( remaining > 0 ) {
- //timeout has occured
- cx = new ChannelException("Operation has timed out("+getTimeout()+" ms.).");
- for (int i=0; i<senders.length; i++ ) {
- if (!senders[i].isComplete() ) cx.addFaultyMember(senders[i].getDestination(),null);
- }
- throw cx;
- }
- } catch (Exception x ) {
- try { this.disconnect(); } catch (Exception ignore) {}
- if ( x instanceof ChannelException ) throw (ChannelException)x;
- else throw new ChannelException(x);
- }
-
- }
-
- private int doLoop(long selectTimeOut, int maxAttempts, boolean waitForAck, ChannelMessage msg) throws IOException, ChannelException {
- int completed = 0;
- int selectedKeys = selector.select(selectTimeOut);
-
- if (selectedKeys == 0) {
- return 0;
- }
-
- Iterator it = selector.selectedKeys().iterator();
- while (it.hasNext()) {
- SelectionKey sk = (SelectionKey) it.next();
- it.remove();
- int readyOps = sk.readyOps();
- sk.interestOps(sk.interestOps() & ~readyOps);
- NioSender sender = (NioSender) sk.attachment();
- try {
- if (sender.process(sk,waitForAck)) {
- completed++;
- sender.setComplete(true);
- if ( Logs.MESSAGES.isTraceEnabled() ) {
- Logs.MESSAGES.trace("ParallelNioSender - Sent msg:" + new UniqueId(msg.getUniqueId()) + " at " +new java.sql.Timestamp(System.currentTimeMillis())+ " to "+sender.getDestination().getName());
- }
- SenderState.getSenderState(sender.getDestination()).setReady();
- }//end if
- } catch (Exception x) {
- SenderState state = SenderState.getSenderState(sender.getDestination());
- int attempt = sender.getAttempt()+1;
- boolean retry = (sender.getAttempt() <= maxAttempts && maxAttempts>0);
- synchronized (state) {
-
- //sk.cancel();
- if (state.isSuspect()) state.setFailing();
- if (state.isReady()) {
- state.setSuspect();
- if ( retry )
- log.warn("Member send is failing for:" + sender.getDestination().getName() +" ; Setting to suspect and retrying.");
- else
- log.warn("Member send is failing for:" + sender.getDestination().getName() +" ; Setting to suspect.", x);
- }
- }
- if ( !isConnected() ) {
- log.warn("Not retrying send for:" + sender.getDestination().getName() + "; Sender is disconnected.");
- ChannelException cx = new ChannelException("Send failed, and sender is disconnected. Not retrying.",x);
- cx.addFaultyMember(sender.getDestination(),x);
- throw cx;
- }
-
- byte[] data = sender.getMessage();
- if ( retry ) {
- try {
- sender.disconnect();
- sender.connect();
- sender.setAttempt(attempt);
- sender.setMessage(data);
- }catch ( Exception ignore){
- state.setFailing();
- }
- } else {
- ChannelException cx = new ChannelException("Send failed, attempt:"+sender.getAttempt()+" max:"+maxAttempts,x);
- cx.addFaultyMember(sender.getDestination(),x);
- throw cx;
- }//end if
- }
- }
- return completed;
-
- }
-
- private void connect(NioSender[] senders) throws ChannelException {
- ChannelException x = null;
- for (int i=0; i<senders.length; i++ ) {
- try {
- if (!senders[i].isConnected()) senders[i].connect();
- }catch ( IOException io ) {
- if ( x==null ) x = new ChannelException(io);
- x.addFaultyMember(senders[i].getDestination(),io);
- }
- }
- if ( x != null ) throw x;
- }
-
- private void setData(NioSender[] senders, byte[] data) throws ChannelException {
- ChannelException x = null;
- for (int i=0; i<senders.length; i++ ) {
- try {
- senders[i].setMessage(data);
- }catch ( IOException io ) {
- if ( x==null ) x = new ChannelException(io);
- x.addFaultyMember(senders[i].getDestination(),io);
- }
- }
- if ( x != null ) throw x;
- }
-
-
- private NioSender[] setupForSend(Member[] destination) throws ChannelException {
- ChannelException cx = null;
- NioSender[] result = new NioSender[destination.length];
- for ( int i=0; i<destination.length; i++ ) {
- NioSender sender = (NioSender)nioSenders.get(destination[i]);
- try {
-
- if (sender == null) {
- sender = new NioSender();
- sender.transferProperties(this, sender);
- nioSenders.put(destination[i], sender);
- }
- if (sender != null) {
- sender.reset();
- sender.setDestination(destination[i]);
- sender.setSelector(selector);
- result[i] = sender;
- }
- }catch ( UnknownHostException x ) {
- if (cx == null) cx = new ChannelException("Unable to setup NioSender.", x);
- cx.addFaultyMember(destination[i], x);
- }
- }
- if ( cx != null ) throw cx;
- else return result;
- }
-
- public void connect() {
- //do nothing, we connect on demand
- setConnected(true);
- }
-
-
- private synchronized void close() throws ChannelException {
- ChannelException x = null;
- Object[] members = nioSenders.keySet().toArray();
- for (int i=0; i<members.length; i++ ) {
- Member mbr = (Member)members[i];
- try {
- NioSender sender = (NioSender)nioSenders.get(mbr);
- sender.disconnect();
- }catch ( Exception e ) {
- if ( x == null ) x = new ChannelException(e);
- x.addFaultyMember(mbr,e);
- }
- nioSenders.remove(mbr);
- }
- if ( x != null ) throw x;
- }
-
- public void memberAdded(Member member) {
-
- }
-
- public void memberDisappeared(Member member) {
- //disconnect senders
- NioSender sender = (NioSender)nioSenders.remove(member);
- if ( sender != null ) sender.disconnect();
- }
-
-
- public synchronized void disconnect() {
- setConnected(false);
- try {close(); }catch (Exception x){}
-
- }
-
- public void finalize() {
- try {disconnect(); }catch ( Exception ignore){}
- }
-
- public boolean keepalive() {
- //throw new UnsupportedOperationException("Method ParallelNioSender.checkKeepAlive() not implemented");
- boolean result = false;
- for ( Iterator i = nioSenders.entrySet().iterator(); i.hasNext(); ) {
- Map.Entry entry = (Map.Entry)i.next();
- NioSender sender = (NioSender)entry.getValue();
- if ( sender.keepalive() ) {
- nioSenders.remove(entry.getKey());
- }
- }
- return result;
- }
-
+/*
+ * 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.catalina.tribes.transport.nio;
+
+
+import java.io.IOException;
+import java.nio.channels.SelectionKey;
+import java.nio.channels.Selector;
+import java.util.HashMap;
+import java.util.Iterator;
+import java.util.Map;
+
+import org.apache.catalina.tribes.ChannelException;
+import org.apache.catalina.tribes.ChannelMessage;
+import org.apache.catalina.tribes.Member;
+import org.apache.catalina.tribes.io.ChannelData;
+import org.apache.catalina.tribes.io.XByteBuffer;
+import org.apache.catalina.tribes.transport.MultiPointSender;
+import org.apache.catalina.tribes.transport.SenderState;
+import org.apache.catalina.tribes.transport.AbstractSender;
+import java.net.UnknownHostException;
+import org.apache.catalina.tribes.Channel;
+import org.apache.catalina.tribes.group.RpcChannel;
+import org.apache.catalina.tribes.util.Logs;
+import org.apache.catalina.tribes.UniqueId;
+
+/**
+ * <p>Title: </p>
+ *
+ * <p>Description: </p>
+ *
+ * <p>Copyright: Copyright (c) 2005</p>
+ *
+ * <p>Company: </p>
+ *
+ * @author not attributable
+ * @version 1.0
+ */
+public class ParallelNioSender extends AbstractSender implements MultiPointSender {
+
+ protected static org.apache.juli.logging.Log log = org.apache.juli.logging.LogFactory.getLog(ParallelNioSender.class);
+ protected long selectTimeout = 5000; //default 5 seconds, same as send timeout
+ protected Selector selector;
+ protected HashMap nioSenders = new HashMap();
+
+ public ParallelNioSender() throws IOException {
+ selector = Selector.open();
+ setConnected(true);
+ }
+
+
+ public synchronized void sendMessage(Member[] destination, ChannelMessage msg) throws ChannelException {
+ long start = System.currentTimeMillis();
+ byte[] data = XByteBuffer.createDataPackage((ChannelData)msg);
+ NioSender[] senders = setupForSend(destination);
+ connect(senders);
+ setData(senders,data);
+
+ int remaining = senders.length;
+ ChannelException cx = null;
+ try {
+ //loop until complete, an error happens, or we timeout
+ long delta = System.currentTimeMillis() - start;
+ boolean waitForAck = (Channel.SEND_OPTIONS_USE_ACK & msg.getOptions()) == Channel.SEND_OPTIONS_USE_ACK;
+ while ( (remaining>0) && (delta<getTimeout()) ) {
+ try {
+ remaining -= doLoop(selectTimeout, getMaxRetryAttempts(),waitForAck,msg);
+ } catch (Exception x ) {
+ if ( cx == null ) {
+ if ( x instanceof ChannelException ) cx = (ChannelException)x;
+ else cx = new ChannelException("Parallel NIO send failed.", x);
+ } else {
+ if (x instanceof ChannelException) cx.addFaultyMember( ( (ChannelException) x).getFaultyMembers());
+ }
+ }
+ //bail out if all remaining senders are failing
+ if ( cx != null && cx.getFaultyMembers().length == remaining ) throw cx;
+ delta = System.currentTimeMillis() - start;
+ }
+ if ( remaining > 0 ) {
+ //timeout has occured
+ cx = new ChannelException("Operation has timed out("+getTimeout()+" ms.).");
+ for (int i=0; i<senders.length; i++ ) {
+ if (!senders[i].isComplete() ) cx.addFaultyMember(senders[i].getDestination(),null);
+ }
+ throw cx;
+ }
+ } catch (Exception x ) {
+ try { this.disconnect(); } catch (Exception ignore) {}
+ if ( x instanceof ChannelException ) throw (ChannelException)x;
+ else throw new ChannelException(x);
+ }
+
+ }
+
+ private int doLoop(long selectTimeOut, int maxAttempts, boolean waitForAck, ChannelMessage msg) throws IOException, ChannelException {
+ int completed = 0;
+ int selectedKeys = selector.select(selectTimeOut);
+
+ if (selectedKeys == 0) {
+ return 0;
+ }
+
+ Iterator it = selector.selectedKeys().iterator();
+ while (it.hasNext()) {
+ SelectionKey sk = (SelectionKey) it.next();
+ it.remove();
+ int readyOps = sk.readyOps();
+ sk.interestOps(sk.interestOps() & ~readyOps);
+ NioSender sender = (NioSender) sk.attachment();
+ try {
+ if (sender.process(sk,waitForAck)) {
+ completed++;
+ sender.setComplete(true);
+ if ( Logs.MESSAGES.isTraceEnabled() ) {
+ Logs.MESSAGES.trace("ParallelNioSender - Sent msg:" + new UniqueId(msg.getUniqueId()) + " at " +new java.sql.Timestamp(System.currentTimeMillis())+ " to "+sender.getDestination().getName());
+ }
+ SenderState.getSenderState(sender.getDestination()).setReady();
+ }//end if
+ } catch (Exception x) {
+ SenderState state = SenderState.getSenderState(sender.getDestination());
+ int attempt = sender.getAttempt()+1;
+ boolean retry = (sender.getAttempt() <= maxAttempts && maxAttempts>0);
+ synchronized (state) {
+
+ //sk.cancel();
+ if (state.isSuspect()) state.setFailing();
+ if (state.isReady()) {
+ state.setSuspect();
+ if ( retry )
+ log.warn("Member send is failing for:" + sender.getDestination().getName() +" ; Setting to suspect and retrying.");
+ else
+ log.warn("Member send is failing for:" + sender.getDestination().getName() +" ; Setting to suspect.", x);
+ }
+ }
+ if ( !isConnected() ) {
+ log.warn("Not retrying send for:" + sender.getDestination().getName() + "; Sender is disconnected.");
+ ChannelException cx = new ChannelException("Send failed, and sender is disconnected. Not retrying.",x);
+ cx.addFaultyMember(sender.getDestination(),x);
+ throw cx;
+ }
+
+ byte[] data = sender.getMessage();
+ if ( retry ) {
+ try {
+ sender.disconnect();
+ sender.connect();
+ sender.setAttempt(attempt);
+ sender.setMessage(data);
+ }catch ( Exception ignore){
+ state.setFailing();
+ }
+ } else {
+ ChannelException cx = new ChannelException("Send failed, attempt:"+sender.getAttempt()+" max:"+maxAttempts,x);
+ cx.addFaultyMember(sender.getDestination(),x);
+ throw cx;
+ }//end if
+ }
+ }
+ return completed;
+
+ }
+
+ private void connect(NioSender[] senders) throws ChannelException {
+ ChannelException x = null;
+ for (int i=0; i<senders.length; i++ ) {
+ try {
+ if (!senders[i].isConnected()) senders[i].connect();
+ }catch ( IOException io ) {
+ if ( x==null ) x = new ChannelException(io);
+ x.addFaultyMember(senders[i].getDestination(),io);
+ }
+ }
+ if ( x != null ) throw x;
+ }
+
+ private void setData(NioSender[] senders, byte[] data) throws ChannelException {
+ ChannelException x = null;
+ for (int i=0; i<senders.length; i++ ) {
+ try {
+ senders[i].setMessage(data);
+ }catch ( IOException io ) {
+ if ( x==null ) x = new ChannelException(io);
+ x.addFaultyMember(senders[i].getDestination(),io);
+ }
+ }
+ if ( x != null ) throw x;
+ }
+
+
+ private NioSender[] setupForSend(Member[] destination) throws ChannelException {
+ ChannelException cx = null;
+ NioSender[] result = new NioSender[destination.length];
+ for ( int i=0; i<destination.length; i++ ) {
+ NioSender sender = (NioSender)nioSenders.get(destination[i]);
+ try {
+
+ if (sender == null) {
+ sender = new NioSender();
+ sender.transferProperties(this, sender);
+ nioSenders.put(destination[i], sender);
+ }
+ if (sender != null) {
+ sender.reset();
+ sender.setDestination(destination[i]);
+ sender.setSelector(selector);
+ result[i] = sender;
+ }
+ }catch ( UnknownHostException x ) {
+ if (cx == null) cx = new ChannelException("Unable to setup NioSender.", x);
+ cx.addFaultyMember(destination[i], x);
+ }
+ }
+ if ( cx != null ) throw cx;
+ else return result;
+ }
+
+ public void connect() {
+ //do nothing, we connect on demand
+ setConnected(true);
+ }
+
+
+ private synchronized void close() throws ChannelException {
+ ChannelException x = null;
+ Object[] members = nioSenders.keySet().toArray();
+ for (int i=0; i<members.length; i++ ) {
+ Member mbr = (Member)members[i];
+ try {
+ NioSender sender = (NioSender)nioSenders.get(mbr);
+ sender.disconnect();
+ }catch ( Exception e ) {
+ if ( x == null ) x = new ChannelException(e);
+ x.addFaultyMember(mbr,e);
+ }
+ nioSenders.remove(mbr);
+ }
+ if ( x != null ) throw x;
+ }
+
+ public void memberAdded(Member member) {
+
+ }
+
+ public void memberDisappeared(Member member) {
+ //disconnect senders
+ NioSender sender = (NioSender)nioSenders.remove(member);
+ if ( sender != null ) sender.disconnect();
+ }
+
+
+ public synchronized void disconnect() {
+ setConnected(false);
+ try {close(); }catch (Exception x){}
+
+ }
+
+ public void finalize() {
+ try {disconnect(); }catch ( Exception ignore){}
+ }
+
+ public boolean keepalive() {
+ //throw new UnsupportedOperationException("Method ParallelNioSender.checkKeepAlive() not implemented");
+ boolean result = false;
+ for ( Iterator i = nioSenders.entrySet().iterator(); i.hasNext(); ) {
+ Map.Entry entry = (Map.Entry)i.next();
+ NioSender sender = (NioSender)entry.getValue();
+ if ( sender.keepalive() ) {
+ nioSenders.remove(entry.getKey());
+ }
+ }
+ return result;
+ }
+
}
Propchange: tomcat/tc6.0.x/trunk/java/org/apache/catalina/tribes/transport/nio/ParallelNioSender.java
------------------------------------------------------------------------------
svn:eol-style = native
Propchange: tomcat/tc6.0.x/trunk/java/org/apache/catalina/tribes/transport/nio/ParallelNioSender.java
------------------------------------------------------------------------------
svn:keywords = Author Date Id Revision
Modified: tomcat/tc6.0.x/trunk/java/org/apache/catalina/tribes/transport/nio/PooledParallelSender.java
URL: http://svn.apache.org/viewvc/tomcat/tc6.0.x/trunk/java/org/apache/catalina/tribes/transport/nio/PooledParallelSender.java?view=diff&rev=467222&r1=467221&r2=467222
==============================================================================
--- tomcat/tc6.0.x/trunk/java/org/apache/catalina/tribes/transport/nio/PooledParallelSender.java (original)
+++ tomcat/tc6.0.x/trunk/java/org/apache/catalina/tribes/transport/nio/PooledParallelSender.java Mon Oct 23 20:17:11 2006
@@ -1,85 +1,85 @@
-/*
- * 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.catalina.tribes.transport.nio;
-
-import java.io.IOException;
-
-import org.apache.catalina.tribes.ChannelException;
-import org.apache.catalina.tribes.ChannelMessage;
-import org.apache.catalina.tribes.Member;
-import org.apache.catalina.tribes.transport.DataSender;
-import org.apache.catalina.tribes.transport.MultiPointSender;
-import org.apache.catalina.tribes.transport.PooledSender;
-
-/**
- * <p>Title: </p>
- *
- * <p>Description: </p>
- *
- * <p>Copyright: Copyright (c) 2005</p>
- *
- * <p>Company: </p>
- *
- * @author not attributable
- * @version 1.0
- */
-public class PooledParallelSender extends PooledSender implements MultiPointSender {
- protected boolean connected = true;
- public PooledParallelSender() {
- super();
- }
-
- public void sendMessage(Member[] destination, ChannelMessage message) throws ChannelException {
- if ( !connected ) throw new ChannelException("Sender not connected.");
- ParallelNioSender sender = (ParallelNioSender)getSender();
- try {
- sender.sendMessage(destination, message);
- sender.keepalive();
- }finally {
- if ( !connected ) disconnect();
- returnSender(sender);
- }
- }
-
- public DataSender getNewDataSender() {
- try {
- ParallelNioSender sender = new ParallelNioSender();
- sender.transferProperties(this,sender);
- return sender;
- } catch ( IOException x ) {
- throw new RuntimeException("Unable to open NIO selector.",x);
- }
- }
-
- public synchronized void disconnect() {
- this.connected = false;
- super.disconnect();
- }
-
- public synchronized void connect() throws IOException {
- this.connected = true;
- super.connect();
- }
-
- public void memberAdded(Member member) {
-
- }
-
- public void memberDisappeared(Member member) {
- //disconnect senders
- }
+/*
+ * 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.catalina.tribes.transport.nio;
+
+import java.io.IOException;
+
+import org.apache.catalina.tribes.ChannelException;
+import org.apache.catalina.tribes.ChannelMessage;
+import org.apache.catalina.tribes.Member;
+import org.apache.catalina.tribes.transport.DataSender;
+import org.apache.catalina.tribes.transport.MultiPointSender;
+import org.apache.catalina.tribes.transport.PooledSender;
+
+/**
+ * <p>Title: </p>
+ *
+ * <p>Description: </p>
+ *
+ * <p>Copyright: Copyright (c) 2005</p>
+ *
+ * <p>Company: </p>
+ *
+ * @author not attributable
+ * @version 1.0
+ */
+public class PooledParallelSender extends PooledSender implements MultiPointSender {
+ protected boolean connected = true;
+ public PooledParallelSender() {
+ super();
+ }
+
+ public void sendMessage(Member[] destination, ChannelMessage message) throws ChannelException {
+ if ( !connected ) throw new ChannelException("Sender not connected.");
+ ParallelNioSender sender = (ParallelNioSender)getSender();
+ try {
+ sender.sendMessage(destination, message);
+ sender.keepalive();
+ }finally {
+ if ( !connected ) disconnect();
+ returnSender(sender);
+ }
+ }
+
+ public DataSender getNewDataSender() {
+ try {
+ ParallelNioSender sender = new ParallelNioSender();
+ sender.transferProperties(this,sender);
+ return sender;
+ } catch ( IOException x ) {
+ throw new RuntimeException("Unable to open NIO selector.",x);
+ }
+ }
+
+ public synchronized void disconnect() {
+ this.connected = false;
+ super.disconnect();
+ }
+
+ public synchronized void connect() throws IOException {
+ this.connected = true;
+ super.connect();
+ }
+
+ public void memberAdded(Member member) {
+
+ }
+
+ public void memberDisappeared(Member member) {
+ //disconnect senders
+ }
}
Propchange: tomcat/tc6.0.x/trunk/java/org/apache/catalina/tribes/transport/nio/PooledParallelSender.java
------------------------------------------------------------------------------
svn:eol-style = native
Propchange: tomcat/tc6.0.x/trunk/java/org/apache/catalina/tribes/transport/nio/PooledParallelSender.java
------------------------------------------------------------------------------
svn:keywords = Author Date Id Revision
Modified: tomcat/tc6.0.x/trunk/java/org/apache/catalina/tribes/util/Arrays.java
URL: http://svn.apache.org/viewvc/tomcat/tc6.0.x/trunk/java/org/apache/catalina/tribes/util/Arrays.java?view=diff&rev=467222&r1=467221&r2=467222
==============================================================================
--- tomcat/tc6.0.x/trunk/java/org/apache/catalina/tribes/util/Arrays.java (original)
+++ tomcat/tc6.0.x/trunk/java/org/apache/catalina/tribes/util/Arrays.java Mon Oct 23 20:17:11 2006
@@ -1,221 +1,221 @@
-/*
- * 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.catalina.tribes.util;
-
-import java.util.ArrayList;
-import java.util.List;
-
-import org.apache.catalina.tribes.ChannelMessage;
-import org.apache.catalina.tribes.Member;
-import org.apache.catalina.tribes.UniqueId;
-import org.apache.catalina.tribes.group.AbsoluteOrder;
-import org.apache.catalina.tribes.membership.MemberImpl;
-import org.apache.catalina.tribes.membership.Membership;
-import java.io.UnsupportedEncodingException;
-import org.apache.juli.logging.Log;
-import org.apache.juli.logging.LogFactory;
-import java.util.StringTokenizer;
-
-/**
- * @author Filip Hanik
- * @version 1.0
- */
-public class Arrays {
- protected static Log log = LogFactory.getLog(Arrays.class);
-
- public static boolean contains(byte[] source, int srcoffset, byte[] key, int keyoffset, int length) {
- if ( srcoffset < 0 || srcoffset >= source.length) throw new ArrayIndexOutOfBoundsException("srcoffset is out of bounds.");
- if ( keyoffset < 0 || keyoffset >= key.length) throw new ArrayIndexOutOfBoundsException("keyoffset is out of bounds.");
- if ( length > (key.length-keyoffset) ) throw new ArrayIndexOutOfBoundsException("not enough data elements in the key, length is out of bounds.");
- //we don't have enough data to validate it
- if ( length > (source.length-srcoffset) ) return false;
- boolean match = true;
- int pos = keyoffset;
- for ( int i=srcoffset; match && i<length; i++ ) {
- match = (source[i] == key[pos++]);
- }
- return match;
- }
-
- public static String toString(byte[] data) {
- return toString(data,0,data!=null?data.length:0);
- }
-
- public static String toString(byte[] data, int offset, int length) {
- StringBuffer buf = new StringBuffer("{");
- if ( data != null && length > 0 ) {
- buf.append(data[offset++]);
- for (int i = offset; i < length; i++) {
- buf.append(", ").append(data[i]);
- }
- }
- buf.append("}");
- return buf.toString();
- }
-
- public static String toString(Object[] data) {
- return toString(data,0,data!=null?data.length:0);
- }
-
- public static String toString(Object[] data, int offset, int length) {
- StringBuffer buf = new StringBuffer("{");
- if ( data != null && length > 0 ) {
- buf.append(data[offset++]);
- for (int i = offset; i < length; i++) {
- buf.append(", ").append(data[i]);
- }
- }
- buf.append("}");
- return buf.toString();
- }
-
- public static String toNameString(Member[] data) {
- return toNameString(data,0,data!=null?data.length:0);
- }
-
- public static String toNameString(Member[] data, int offset, int length) {
- StringBuffer buf = new StringBuffer("{");
- if ( data != null && length > 0 ) {
- buf.append(data[offset++].getName());
- for (int i = offset; i < length; i++) {
- buf.append(", ").append(data[i].getName());
- }
- }
- buf.append("}");
- return buf.toString();
- }
-
- public static int add(int[] data) {
- int result = 0;
- for (int i=0;i<data.length; i++ ) result += data[i];
- return result;
- }
-
- public static UniqueId getUniqudId(ChannelMessage msg) {
- return new UniqueId(msg.getUniqueId());
- }
-
- public static UniqueId getUniqudId(byte[] data) {
- return new UniqueId(data);
- }
-
- public static boolean equals(byte[] o1, byte[] o2) {
- return java.util.Arrays.equals(o1,o2);
- }
-
- public static boolean equals(Object[] o1, Object[] o2) {
- boolean result = o1.length == o2.length;
- if ( result ) for (int i=0; i<o1.length && result; i++ ) result = o1[i].equals(o2[i]);
- return result;
- }
-
- public static boolean sameMembers(Member[] m1, Member[] m2) {
- AbsoluteOrder.absoluteOrder(m1);
- AbsoluteOrder.absoluteOrder(m2);
- return equals(m1,m2);
- }
-
- public static Member[] merge(Member[] m1, Member[] m2) {
- AbsoluteOrder.absoluteOrder(m1);
- AbsoluteOrder.absoluteOrder(m2);
- ArrayList list = new ArrayList(java.util.Arrays.asList(m1));
- for (int i=0; i<m2.length; i++) if ( !list.contains(m2[i]) ) list.add(m2[i]);
- Member[] result = new Member[list.size()];
- list.toArray(result);
- AbsoluteOrder.absoluteOrder(result);
- return result;
- }
-
- public static void fill(Membership mbrship, Member[] m) {
- for (int i=0; i<m.length; i++ ) mbrship.addMember((MemberImpl)m[i]);
- }
-
- public static Member[] diff(Membership complete, Membership local, MemberImpl ignore) {
- ArrayList result = new ArrayList();
- MemberImpl[] comp = complete.getMembers();
- for ( int i=0; i<comp.length; i++ ) {
- if ( ignore!=null && ignore.equals(comp[i]) ) continue;
- if ( local.getMember(comp[i]) == null ) result.add(comp[i]);
- }
- return (MemberImpl[])result.toArray(new MemberImpl[result.size()]);
- }
-
- public static Member[] remove(Member[] all, Member remove) {
- return extract(all,new Member[] {remove});
- }
-
- public static Member[] extract(Member[] all, Member[] remove) {
- List alist = java.util.Arrays.asList(all);
- ArrayList list = new ArrayList(alist);
- for (int i=0; i<remove.length; i++ ) list.remove(remove[i]);
- return (Member[])list.toArray(new Member[list.size()]);
- }
-
- public static int indexOf(Member member, Member[] members) {
- int result = -1;
- for (int i=0; (result==-1) && (i<members.length); i++ )
- if ( member.equals(members[i]) ) result = i;
- return result;
- }
-
- public static int nextIndex(Member member, Member[] members) {
- int idx = indexOf(member,members)+1;
- if (idx >= members.length ) idx = ((members.length>0)?0:-1);
-
-//System.out.println("Next index:"+idx);
-//System.out.println("Member:"+member.getName());
-//System.out.println("Members:"+toNameString(members));
- return idx;
- }
-
- public static int hashCode(byte a[]) {
- if (a == null)
- return 0;
-
- int result = 1;
- for (int i=0; i<a.length; i++) {
- byte element = a[i];
- result = 31 * result + element;
- }
- return result;
- }
-
- public static byte[] fromString(String value) {
- if ( value == null ) return null;
- if ( !value.startsWith("{") ) throw new RuntimeException("byte arrays must be represented as {1,3,4,5,6}");
- StringTokenizer t = new StringTokenizer(value,"{,}",false);
- byte[] result = new byte[t.countTokens()];
- for (int i=0; i<result.length; i++ ) result[i] = Byte.parseByte(t.nextToken());
- return result;
- }
-
-
-
- public static byte[] convert(String s) {
- try {
- return s.getBytes("ISO-8859-1");
- }catch (UnsupportedEncodingException ux ) {
- log.error("Unable to convert ["+s+"] into a byte[] using ISO-8859-1 encoding, falling back to default encoding.");
- return s.getBytes();
- }
- }
-
-
-
-
-
+/*
+ * 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.catalina.tribes.util;
+
+import java.util.ArrayList;
+import java.util.List;
+
+import org.apache.catalina.tribes.ChannelMessage;
+import org.apache.catalina.tribes.Member;
+import org.apache.catalina.tribes.UniqueId;
+import org.apache.catalina.tribes.group.AbsoluteOrder;
+import org.apache.catalina.tribes.membership.MemberImpl;
+import org.apache.catalina.tribes.membership.Membership;
+import java.io.UnsupportedEncodingException;
+import org.apache.juli.logging.Log;
+import org.apache.juli.logging.LogFactory;
+import java.util.StringTokenizer;
+
+/**
+ * @author Filip Hanik
+ * @version 1.0
+ */
+public class Arrays {
+ protected static Log log = LogFactory.getLog(Arrays.class);
+
+ public static boolean contains(byte[] source, int srcoffset, byte[] key, int keyoffset, int length) {
+ if ( srcoffset < 0 || srcoffset >= source.length) throw new ArrayIndexOutOfBoundsException("srcoffset is out of bounds.");
+ if ( keyoffset < 0 || keyoffset >= key.length) throw new ArrayIndexOutOfBoundsException("keyoffset is out of bounds.");
+ if ( length > (key.length-keyoffset) ) throw new ArrayIndexOutOfBoundsException("not enough data elements in the key, length is out of bounds.");
+ //we don't have enough data to validate it
+ if ( length > (source.length-srcoffset) ) return false;
+ boolean match = true;
+ int pos = keyoffset;
+ for ( int i=srcoffset; match && i<length; i++ ) {
+ match = (source[i] == key[pos++]);
+ }
+ return match;
+ }
+
+ public static String toString(byte[] data) {
+ return toString(data,0,data!=null?data.length:0);
+ }
+
+ public static String toString(byte[] data, int offset, int length) {
+ StringBuffer buf = new StringBuffer("{");
+ if ( data != null && length > 0 ) {
+ buf.append(data[offset++]);
+ for (int i = offset; i < length; i++) {
+ buf.append(", ").append(data[i]);
+ }
+ }
+ buf.append("}");
+ return buf.toString();
+ }
+
+ public static String toString(Object[] data) {
+ return toString(data,0,data!=null?data.length:0);
+ }
+
+ public static String toString(Object[] data, int offset, int length) {
+ StringBuffer buf = new StringBuffer("{");
+ if ( data != null && length > 0 ) {
+ buf.append(data[offset++]);
+ for (int i = offset; i < length; i++) {
+ buf.append(", ").append(data[i]);
+ }
+ }
+ buf.append("}");
+ return buf.toString();
+ }
+
+ public static String toNameString(Member[] data) {
+ return toNameString(data,0,data!=null?data.length:0);
+ }
+
+ public static String toNameString(Member[] data, int offset, int length) {
+ StringBuffer buf = new StringBuffer("{");
+ if ( data != null && length > 0 ) {
+ buf.append(data[offset++].getName());
+ for (int i = offset; i < length; i++) {
+ buf.append(", ").append(data[i].getName());
+ }
+ }
+ buf.append("}");
+ return buf.toString();
+ }
+
+ public static int add(int[] data) {
+ int result = 0;
+ for (int i=0;i<data.length; i++ ) result += data[i];
+ return result;
+ }
+
+ public static UniqueId getUniqudId(ChannelMessage msg) {
+ return new UniqueId(msg.getUniqueId());
+ }
+
+ public static UniqueId getUniqudId(byte[] data) {
+ return new UniqueId(data);
+ }
+
+ public static boolean equals(byte[] o1, byte[] o2) {
+ return java.util.Arrays.equals(o1,o2);
+ }
+
+ public static boolean equals(Object[] o1, Object[] o2) {
+ boolean result = o1.length == o2.length;
+ if ( result ) for (int i=0; i<o1.length && result; i++ ) result = o1[i].equals(o2[i]);
+ return result;
+ }
+
+ public static boolean sameMembers(Member[] m1, Member[] m2) {
+ AbsoluteOrder.absoluteOrder(m1);
+ AbsoluteOrder.absoluteOrder(m2);
+ return equals(m1,m2);
+ }
+
+ public static Member[] merge(Member[] m1, Member[] m2) {
+ AbsoluteOrder.absoluteOrder(m1);
+ AbsoluteOrder.absoluteOrder(m2);
+ ArrayList list = new ArrayList(java.util.Arrays.asList(m1));
+ for (int i=0; i<m2.length; i++) if ( !list.contains(m2[i]) ) list.add(m2[i]);
+ Member[] result = new Member[list.size()];
+ list.toArray(result);
+ AbsoluteOrder.absoluteOrder(result);
+ return result;
+ }
+
+ public static void fill(Membership mbrship, Member[] m) {
+ for (int i=0; i<m.length; i++ ) mbrship.addMember((MemberImpl)m[i]);
+ }
+
+ public static Member[] diff(Membership complete, Membership local, MemberImpl ignore) {
+ ArrayList result = new ArrayList();
+ MemberImpl[] comp = complete.getMembers();
+ for ( int i=0; i<comp.length; i++ ) {
+ if ( ignore!=null && ignore.equals(comp[i]) ) continue;
+ if ( local.getMember(comp[i]) == null ) result.add(comp[i]);
+ }
+ return (MemberImpl[])result.toArray(new MemberImpl[result.size()]);
+ }
+
+ public static Member[] remove(Member[] all, Member remove) {
+ return extract(all,new Member[] {remove});
+ }
+
+ public static Member[] extract(Member[] all, Member[] remove) {
+ List alist = java.util.Arrays.asList(all);
+ ArrayList list = new ArrayList(alist);
+ for (int i=0; i<remove.length; i++ ) list.remove(remove[i]);
+ return (Member[])list.toArray(new Member[list.size()]);
+ }
+
+ public static int indexOf(Member member, Member[] members) {
+ int result = -1;
+ for (int i=0; (result==-1) && (i<members.length); i++ )
+ if ( member.equals(members[i]) ) result = i;
+ return result;
+ }
+
+ public static int nextIndex(Member member, Member[] members) {
+ int idx = indexOf(member,members)+1;
+ if (idx >= members.length ) idx = ((members.length>0)?0:-1);
+
+//System.out.println("Next index:"+idx);
+//System.out.println("Member:"+member.getName());
+//System.out.println("Members:"+toNameString(members));
+ return idx;
+ }
+
+ public static int hashCode(byte a[]) {
+ if (a == null)
+ return 0;
+
+ int result = 1;
+ for (int i=0; i<a.length; i++) {
+ byte element = a[i];
+ result = 31 * result + element;
+ }
+ return result;
+ }
+
+ public static byte[] fromString(String value) {
+ if ( value == null ) return null;
+ if ( !value.startsWith("{") ) throw new RuntimeException("byte arrays must be represented as {1,3,4,5,6}");
+ StringTokenizer t = new StringTokenizer(value,"{,}",false);
+ byte[] result = new byte[t.countTokens()];
+ for (int i=0; i<result.length; i++ ) result[i] = Byte.parseByte(t.nextToken());
+ return result;
+ }
+
+
+
+ public static byte[] convert(String s) {
+ try {
+ return s.getBytes("ISO-8859-1");
+ }catch (UnsupportedEncodingException ux ) {
+ log.error("Unable to convert ["+s+"] into a byte[] using ISO-8859-1 encoding, falling back to default encoding.");
+ return s.getBytes();
+ }
+ }
+
+
+
+
+
}
Propchange: tomcat/tc6.0.x/trunk/java/org/apache/catalina/tribes/util/Arrays.java
------------------------------------------------------------------------------
svn:eol-style = native
Propchange: tomcat/tc6.0.x/trunk/java/org/apache/catalina/tribes/util/Arrays.java
------------------------------------------------------------------------------
svn:keywords = Author Date Id Revision
Modified: tomcat/tc6.0.x/trunk/java/org/apache/catalina/tribes/util/Logs.java
URL: http://svn.apache.org/viewvc/tomcat/tc6.0.x/trunk/java/org/apache/catalina/tribes/util/Logs.java?view=diff&rev=467222&r1=467221&r2=467222
==============================================================================
--- tomcat/tc6.0.x/trunk/java/org/apache/catalina/tribes/util/Logs.java (original)
+++ tomcat/tc6.0.x/trunk/java/org/apache/catalina/tribes/util/Logs.java Mon Oct 23 20:17:11 2006
@@ -1,29 +1,29 @@
-/*
- * 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.catalina.tribes.util;
-
-import org.apache.juli.logging.Log;
-import org.apache.juli.logging.LogFactory;
-/**
- *
- * Simple class that holds references to global loggers
- * @author Filip Hanik
- * @version 1.0
- */
-public class Logs {
- public static Log MESSAGES = LogFactory.getLog( "org.apache.catalina.tribes.MESSAGES" );
-}
+/*
+ * 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.catalina.tribes.util;
+
+import org.apache.juli.logging.Log;
+import org.apache.juli.logging.LogFactory;
+/**
+ *
+ * Simple class that holds references to global loggers
+ * @author Filip Hanik
+ * @version 1.0
+ */
+public class Logs {
+ public static Log MESSAGES = LogFactory.getLog( "org.apache.catalina.tribes.MESSAGES" );
+}
Propchange: tomcat/tc6.0.x/trunk/java/org/apache/catalina/tribes/util/Logs.java
------------------------------------------------------------------------------
svn:eol-style = native
Propchange: tomcat/tc6.0.x/trunk/java/org/apache/catalina/tribes/util/Logs.java
------------------------------------------------------------------------------
svn:keywords = Author Date Id Revision
Modified: tomcat/tc6.0.x/trunk/java/org/apache/catalina/tribes/util/StringManager.java
URL: http://svn.apache.org/viewvc/tomcat/tc6.0.x/trunk/java/org/apache/catalina/tribes/util/StringManager.java?view=diff&rev=467222&r1=467221&r2=467222
==============================================================================
--- tomcat/tc6.0.x/trunk/java/org/apache/catalina/tribes/util/StringManager.java (original)
+++ tomcat/tc6.0.x/trunk/java/org/apache/catalina/tribes/util/StringManager.java Mon Oct 23 20:17:11 2006
@@ -1,253 +1,253 @@
-/*
- * 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.catalina.tribes.util;
-
-import java.text.MessageFormat;
-import java.util.Hashtable;
-import java.util.Locale;
-import java.util.MissingResourceException;
-import java.util.ResourceBundle;
-import java.net.URLClassLoader;
-
-/**
- * An internationalization / localization helper class which reduces
- * the bother of handling ResourceBundles and takes care of the
- * common cases of message formating which otherwise require the
- * creation of Object arrays and such.
- *
- * <p>The StringManager operates on a package basis. One StringManager
- * per package can be created and accessed via the getManager method
- * call.
- *
- * <p>The StringManager will look for a ResourceBundle named by
- * the package name given plus the suffix of "LocalStrings". In
- * practice, this means that the localized information will be contained
- * in a LocalStrings.properties file located in the package
- * directory of the classpath.
- *
- * <p>Please see the documentation for java.util.ResourceBundle for
- * more information.
- *
- * @author James Duncan Davidson [duncan@eng.sun.com]
- * @author James Todd [gonzo@eng.sun.com]
- */
-
-public class StringManager {
-
- /**
- * The ResourceBundle for this StringManager.
- */
-
- private ResourceBundle bundle;
-
- private static org.apache.juli.logging.Log log=
- org.apache.juli.logging.LogFactory.getLog( StringManager.class );
-
- /**
- * Creates a new StringManager for a given package. This is a
- * private method and all access to it is arbitrated by the
- * static getManager method call so that only one StringManager
- * per package will be created.
- *
- * @param packageName Name of package to create StringManager for.
- */
-
- private StringManager(String packageName) {
- String bundleName = packageName + ".LocalStrings";
- try {
- bundle = ResourceBundle.getBundle(bundleName);
- return;
- } catch( MissingResourceException ex ) {
- // Try from the current loader ( that's the case for trusted apps )
- ClassLoader cl=Thread.currentThread().getContextClassLoader();
- if( cl != null ) {
- try {
- bundle=ResourceBundle.getBundle(bundleName, Locale.getDefault(), cl);
- return;
- } catch(MissingResourceException ex2) {
- }
- }
- if( cl==null )
- cl=this.getClass().getClassLoader();
-
- if (log.isDebugEnabled())
- log.debug("Can't find resource " + bundleName +
- " " + cl);
- if( cl instanceof URLClassLoader ) {
- if (log.isDebugEnabled())
- log.debug( ((URLClassLoader)cl).getURLs());
- }
- }
- }
-
- /**
- * Get a string from the underlying resource bundle.
- *
- * @param key The resource name
- */
- public String getString(String key) {
- return MessageFormat.format(getStringInternal(key), (Object [])null);
- }
-
-
- protected String getStringInternal(String key) {
- if (key == null) {
- String msg = "key is null";
-
- throw new NullPointerException(msg);
- }
-
- String str = null;
-
- if( bundle==null )
- return key;
- try {
- str = bundle.getString(key);
- } catch (MissingResourceException mre) {
- str = "Cannot find message associated with key '" + key + "'";
- }
-
- return str;
- }
-
- /**
- * Get a string from the underlying resource bundle and format
- * it with the given set of arguments.
- *
- * @param key The resource name
- * @param args Formatting directives
- */
-
- public String getString(String key, Object[] args) {
- String iString = null;
- String value = getStringInternal(key);
-
- // this check for the runtime exception is some pre 1.1.6
- // VM's don't do an automatic toString() on the passed in
- // objects and barf out
-
- try {
- // ensure the arguments are not null so pre 1.2 VM's don't barf
- Object nonNullArgs[] = args;
- for (int i=0; i<args.length; i++) {
- if (args[i] == null) {
- if (nonNullArgs==args) nonNullArgs=(Object[])args.clone();
- nonNullArgs[i] = "null";
- }
- }
-
- iString = MessageFormat.format(value, nonNullArgs);
- } catch (IllegalArgumentException iae) {
- StringBuffer buf = new StringBuffer();
- buf.append(value);
- for (int i = 0; i < args.length; i++) {
- buf.append(" arg[" + i + "]=" + args[i]);
- }
- iString = buf.toString();
- }
- return iString;
- }
-
- /**
- * Get a string from the underlying resource bundle and format it
- * with the given object argument. This argument can of course be
- * a String object.
- *
- * @param key The resource name
- * @param arg Formatting directive
- */
-
- public String getString(String key, Object arg) {
- Object[] args = new Object[] {arg};
- return getString(key, args);
- }
-
- /**
- * Get a string from the underlying resource bundle and format it
- * with the given object arguments. These arguments can of course
- * be String objects.
- *
- * @param key The resource name
- * @param arg1 Formatting directive
- * @param arg2 Formatting directive
- */
-
- public String getString(String key, Object arg1, Object arg2) {
- Object[] args = new Object[] {arg1, arg2};
- return getString(key, args);
- }
-
- /**
- * Get a string from the underlying resource bundle and format it
- * with the given object arguments. These arguments can of course
- * be String objects.
- *
- * @param key The resource name
- * @param arg1 Formatting directive
- * @param arg2 Formatting directive
- * @param arg3 Formatting directive
- */
-
- public String getString(String key, Object arg1, Object arg2,
- Object arg3) {
- Object[] args = new Object[] {arg1, arg2, arg3};
- return getString(key, args);
- }
-
- /**
- * Get a string from the underlying resource bundle and format it
- * with the given object arguments. These arguments can of course
- * be String objects.
- *
- * @param key The resource name
- * @param arg1 Formatting directive
- * @param arg2 Formatting directive
- * @param arg3 Formatting directive
- * @param arg4 Formatting directive
- */
-
- public String getString(String key, Object arg1, Object arg2,
- Object arg3, Object arg4) {
- Object[] args = new Object[] {arg1, arg2, arg3, arg4};
- return getString(key, args);
- }
- // --------------------------------------------------------------
- // STATIC SUPPORT METHODS
- // --------------------------------------------------------------
-
- private static Hashtable managers = new Hashtable();
-
- /**
- * Get the StringManager for a particular package. If a manager for
- * a package already exists, it will be reused, else a new
- * StringManager will be created and returned.
- *
- * @param packageName The package name
- */
-
- public synchronized static StringManager getManager(String packageName) {
- StringManager mgr = (StringManager)managers.get(packageName);
-
- if (mgr == null) {
- mgr = new StringManager(packageName);
- managers.put(packageName, mgr);
- }
- return mgr;
- }
-}
+/*
+ * 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.catalina.tribes.util;
+
+import java.text.MessageFormat;
+import java.util.Hashtable;
+import java.util.Locale;
+import java.util.MissingResourceException;
+import java.util.ResourceBundle;
+import java.net.URLClassLoader;
+
+/**
+ * An internationalization / localization helper class which reduces
+ * the bother of handling ResourceBundles and takes care of the
+ * common cases of message formating which otherwise require the
+ * creation of Object arrays and such.
+ *
+ * <p>The StringManager operates on a package basis. One StringManager
+ * per package can be created and accessed via the getManager method
+ * call.
+ *
+ * <p>The StringManager will look for a ResourceBundle named by
+ * the package name given plus the suffix of "LocalStrings". In
+ * practice, this means that the localized information will be contained
+ * in a LocalStrings.properties file located in the package
+ * directory of the classpath.
+ *
+ * <p>Please see the documentation for java.util.ResourceBundle for
+ * more information.
+ *
+ * @author James Duncan Davidson [duncan@eng.sun.com]
+ * @author James Todd [gonzo@eng.sun.com]
+ */
+
+public class StringManager {
+
+ /**
+ * The ResourceBundle for this StringManager.
+ */
+
+ private ResourceBundle bundle;
+
+ private static org.apache.juli.logging.Log log=
+ org.apache.juli.logging.LogFactory.getLog( StringManager.class );
+
+ /**
+ * Creates a new StringManager for a given package. This is a
+ * private method and all access to it is arbitrated by the
+ * static getManager method call so that only one StringManager
+ * per package will be created.
+ *
+ * @param packageName Name of package to create StringManager for.
+ */
+
+ private StringManager(String packageName) {
+ String bundleName = packageName + ".LocalStrings";
+ try {
+ bundle = ResourceBundle.getBundle(bundleName);
+ return;
+ } catch( MissingResourceException ex ) {
+ // Try from the current loader ( that's the case for trusted apps )
+ ClassLoader cl=Thread.currentThread().getContextClassLoader();
+ if( cl != null ) {
+ try {
+ bundle=ResourceBundle.getBundle(bundleName, Locale.getDefault(), cl);
+ return;
+ } catch(MissingResourceException ex2) {
+ }
+ }
+ if( cl==null )
+ cl=this.getClass().getClassLoader();
+
+ if (log.isDebugEnabled())
+ log.debug("Can't find resource " + bundleName +
+ " " + cl);
+ if( cl instanceof URLClassLoader ) {
+ if (log.isDebugEnabled())
+ log.debug( ((URLClassLoader)cl).getURLs());
+ }
+ }
+ }
+
+ /**
+ * Get a string from the underlying resource bundle.
+ *
+ * @param key The resource name
+ */
+ public String getString(String key) {
+ return MessageFormat.format(getStringInternal(key), (Object [])null);
+ }
+
+
+ protected String getStringInternal(String key) {
+ if (key == null) {
+ String msg = "key is null";
+
+ throw new NullPointerException(msg);
+ }
+
+ String str = null;
+
+ if( bundle==null )
+ return key;
+ try {
+ str = bundle.getString(key);
+ } catch (MissingResourceException mre) {
+ str = "Cannot find message associated with key '" + key + "'";
+ }
+
+ return str;
+ }
+
+ /**
+ * Get a string from the underlying resource bundle and format
+ * it with the given set of arguments.
+ *
+ * @param key The resource name
+ * @param args Formatting directives
+ */
+
+ public String getString(String key, Object[] args) {
+ String iString = null;
+ String value = getStringInternal(key);
+
+ // this check for the runtime exception is some pre 1.1.6
+ // VM's don't do an automatic toString() on the passed in
+ // objects and barf out
+
+ try {
+ // ensure the arguments are not null so pre 1.2 VM's don't barf
+ Object nonNullArgs[] = args;
+ for (int i=0; i<args.length; i++) {
+ if (args[i] == null) {
+ if (nonNullArgs==args) nonNullArgs=(Object[])args.clone();
+ nonNullArgs[i] = "null";
+ }
+ }
+
+ iString = MessageFormat.format(value, nonNullArgs);
+ } catch (IllegalArgumentException iae) {
+ StringBuffer buf = new StringBuffer();
+ buf.append(value);
+ for (int i = 0; i < args.length; i++) {
+ buf.append(" arg[" + i + "]=" + args[i]);
+ }
+ iString = buf.toString();
+ }
+ return iString;
+ }
+
+ /**
+ * Get a string from the underlying resource bundle and format it
+ * with the given object argument. This argument can of course be
+ * a String object.
+ *
+ * @param key The resource name
+ * @param arg Formatting directive
+ */
+
+ public String getString(String key, Object arg) {
+ Object[] args = new Object[] {arg};
+ return getString(key, args);
+ }
+
+ /**
+ * Get a string from the underlying resource bundle and format it
+ * with the given object arguments. These arguments can of course
+ * be String objects.
+ *
+ * @param key The resource name
+ * @param arg1 Formatting directive
+ * @param arg2 Formatting directive
+ */
+
+ public String getString(String key, Object arg1, Object arg2) {
+ Object[] args = new Object[] {arg1, arg2};
+ return getString(key, args);
+ }
+
+ /**
+ * Get a string from the underlying resource bundle and format it
+ * with the given object arguments. These arguments can of course
+ * be String objects.
+ *
+ * @param key The resource name
+ * @param arg1 Formatting directive
+ * @param arg2 Formatting directive
+ * @param arg3 Formatting directive
+ */
+
+ public String getString(String key, Object arg1, Object arg2,
+ Object arg3) {
+ Object[] args = new Object[] {arg1, arg2, arg3};
+ return getString(key, args);
+ }
+
+ /**
+ * Get a string from the underlying resource bundle and format it
+ * with the given object arguments. These arguments can of course
+ * be String objects.
+ *
+ * @param key The resource name
+ * @param arg1 Formatting directive
+ * @param arg2 Formatting directive
+ * @param arg3 Formatting directive
+ * @param arg4 Formatting directive
+ */
+
+ public String getString(String key, Object arg1, Object arg2,
+ Object arg3, Object arg4) {
+ Object[] args = new Object[] {arg1, arg2, arg3, arg4};
+ return getString(key, args);
+ }
+ // --------------------------------------------------------------
+ // STATIC SUPPORT METHODS
+ // --------------------------------------------------------------
+
+ private static Hashtable managers = new Hashtable();
+
+ /**
+ * Get the StringManager for a particular package. If a manager for
+ * a package already exists, it will be reused, else a new
+ * StringManager will be created and returned.
+ *
+ * @param packageName The package name
+ */
+
+ public synchronized static StringManager getManager(String packageName) {
+ StringManager mgr = (StringManager)managers.get(packageName);
+
+ if (mgr == null) {
+ mgr = new StringManager(packageName);
+ managers.put(packageName, mgr);
+ }
+ return mgr;
+ }
+}
Propchange: tomcat/tc6.0.x/trunk/java/org/apache/catalina/tribes/util/StringManager.java
------------------------------------------------------------------------------
svn:eol-style = native
Propchange: tomcat/tc6.0.x/trunk/java/org/apache/catalina/tribes/util/StringManager.java
------------------------------------------------------------------------------
svn:keywords = Author Date Id Revision
Modified: tomcat/tc6.0.x/trunk/java/org/apache/catalina/tribes/util/UUIDGenerator.java
URL: http://svn.apache.org/viewvc/tomcat/tc6.0.x/trunk/java/org/apache/catalina/tribes/util/UUIDGenerator.java?view=diff&rev=467222&r1=467221&r2=467222
==============================================================================
--- tomcat/tc6.0.x/trunk/java/org/apache/catalina/tribes/util/UUIDGenerator.java (original)
+++ tomcat/tc6.0.x/trunk/java/org/apache/catalina/tribes/util/UUIDGenerator.java Mon Oct 23 20:17:11 2006
@@ -1,77 +1,77 @@
-/*
- * 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.catalina.tribes.util;
-
-import java.security.SecureRandom;
-import java.util.Random;
-
-/**
- * simple generation of a UUID
- * @author Filip Hanik
- * @version 1.0
- */
-public class UUIDGenerator {
- public static final int UUID_LENGTH = 16;
- public static final int UUID_VERSION = 4;
- public static final int BYTES_PER_INT = 4;
- public static final int BITS_PER_BYTE = 8;
-
- protected static SecureRandom secrand = null;
- protected static Random rand = new Random(System.currentTimeMillis());
- static {
- secrand = new SecureRandom();
- secrand.setSeed(rand.nextLong());
- }
-
- public static byte[] randomUUID(boolean secure) {
- byte[] result = new byte[UUID_LENGTH];
- return randomUUID(secure,result,0);
- }
-
- public static byte[] randomUUID(boolean secure, byte[] into, int offset) {
- if ( (offset+UUID_LENGTH)>into.length )
- throw new ArrayIndexOutOfBoundsException("Unable to fit "+UUID_LENGTH+" bytes into the array. length:"+into.length+" required length:"+(offset+UUID_LENGTH));
- Random r = (secure&&(secrand!=null))?secrand:rand;
- nextBytes(into,offset,UUID_LENGTH,r);
- into[6+offset] &= 0x0F;
- into[6+offset] |= (UUID_VERSION << 4);
- into[8+offset] &= 0x3F; //0011 1111
- into[8+offset] |= 0x80; //1000 0000
- return into;
- }
-
- /**
- * Same as java.util.Random.nextBytes except this one we dont have to allocate a new byte array
- * @param into byte[]
- * @param offset int
- * @param length int
- * @param r Random
- */
- public static void nextBytes(byte[] into, int offset, int length, Random r) {
- int numRequested = length;
- int numGot = 0, rnd = 0;
- while (true) {
- for (int i = 0; i < BYTES_PER_INT; i++) {
- if (numGot == numRequested) return;
- rnd = (i == 0 ? r.nextInt() : rnd >> BITS_PER_BYTE);
- into[offset+numGot] = (byte) rnd;
- numGot++;
- }
- }
- }
-
+/*
+ * 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.catalina.tribes.util;
+
+import java.security.SecureRandom;
+import java.util.Random;
+
+/**
+ * simple generation of a UUID
+ * @author Filip Hanik
+ * @version 1.0
+ */
+public class UUIDGenerator {
+ public static final int UUID_LENGTH = 16;
+ public static final int UUID_VERSION = 4;
+ public static final int BYTES_PER_INT = 4;
+ public static final int BITS_PER_BYTE = 8;
+
+ protected static SecureRandom secrand = null;
+ protected static Random rand = new Random(System.currentTimeMillis());
+ static {
+ secrand = new SecureRandom();
+ secrand.setSeed(rand.nextLong());
+ }
+
+ public static byte[] randomUUID(boolean secure) {
+ byte[] result = new byte[UUID_LENGTH];
+ return randomUUID(secure,result,0);
+ }
+
+ public static byte[] randomUUID(boolean secure, byte[] into, int offset) {
+ if ( (offset+UUID_LENGTH)>into.length )
+ throw new ArrayIndexOutOfBoundsException("Unable to fit "+UUID_LENGTH+" bytes into the array. length:"+into.length+" required length:"+(offset+UUID_LENGTH));
+ Random r = (secure&&(secrand!=null))?secrand:rand;
+ nextBytes(into,offset,UUID_LENGTH,r);
+ into[6+offset] &= 0x0F;
+ into[6+offset] |= (UUID_VERSION << 4);
+ into[8+offset] &= 0x3F; //0011 1111
+ into[8+offset] |= 0x80; //1000 0000
+ return into;
+ }
+
+ /**
+ * Same as java.util.Random.nextBytes except this one we dont have to allocate a new byte array
+ * @param into byte[]
+ * @param offset int
+ * @param length int
+ * @param r Random
+ */
+ public static void nextBytes(byte[] into, int offset, int length, Random r) {
+ int numRequested = length;
+ int numGot = 0, rnd = 0;
+ while (true) {
+ for (int i = 0; i < BYTES_PER_INT; i++) {
+ if (numGot == numRequested) return;
+ rnd = (i == 0 ? r.nextInt() : rnd >> BITS_PER_BYTE);
+ into[offset+numGot] = (byte) rnd;
+ numGot++;
+ }
+ }
+ }
+
}
Propchange: tomcat/tc6.0.x/trunk/java/org/apache/catalina/tribes/util/UUIDGenerator.java
------------------------------------------------------------------------------
svn:eol-style = native
Propchange: tomcat/tc6.0.x/trunk/java/org/apache/catalina/tribes/util/UUIDGenerator.java
------------------------------------------------------------------------------
svn:keywords = Author Date Id Revision
Modified: tomcat/tc6.0.x/trunk/java/org/apache/catalina/users/AbstractGroup.java
URL: http://svn.apache.org/viewvc/tomcat/tc6.0.x/trunk/java/org/apache/catalina/users/AbstractGroup.java?view=diff&rev=467222&r1=467221&r2=467222
==============================================================================
--- tomcat/tc6.0.x/trunk/java/org/apache/catalina/users/AbstractGroup.java (original)
+++ tomcat/tc6.0.x/trunk/java/org/apache/catalina/users/AbstractGroup.java Mon Oct 23 20:17:11 2006
@@ -30,7 +30,7 @@
* <p>Convenience base class for {@link Group} implementations.</p>
*
* @author Craig R. McClanahan
- * @version $Revision: 303133 $ $Date: 2004-08-29 18:46:15 +0200 (dim., 29 août 2004) $
+ * @version $Revision$ $Date$
* @since 4.1
*/
Propchange: tomcat/tc6.0.x/trunk/java/org/apache/catalina/users/AbstractGroup.java
------------------------------------------------------------------------------
svn:keywords = Author Date Id Revision
Modified: tomcat/tc6.0.x/trunk/java/org/apache/catalina/users/AbstractRole.java
URL: http://svn.apache.org/viewvc/tomcat/tc6.0.x/trunk/java/org/apache/catalina/users/AbstractRole.java?view=diff&rev=467222&r1=467221&r2=467222
==============================================================================
--- tomcat/tc6.0.x/trunk/java/org/apache/catalina/users/AbstractRole.java (original)
+++ tomcat/tc6.0.x/trunk/java/org/apache/catalina/users/AbstractRole.java Mon Oct 23 20:17:11 2006
@@ -27,7 +27,7 @@
* <p>Convenience base class for {@link Role} implementations.</p>
*
* @author Craig R. McClanahan
- * @version $Revision: 302726 $ $Date: 2004-02-27 15:59:07 +0100 (ven., 27 févr. 2004) $
+ * @version $Revision$ $Date$
* @since 4.1
*/
Propchange: tomcat/tc6.0.x/trunk/java/org/apache/catalina/users/AbstractRole.java
------------------------------------------------------------------------------
svn:keywords = Author Date Id Revision
Modified: tomcat/tc6.0.x/trunk/java/org/apache/catalina/users/AbstractUser.java
URL: http://svn.apache.org/viewvc/tomcat/tc6.0.x/trunk/java/org/apache/catalina/users/AbstractUser.java?view=diff&rev=467222&r1=467221&r2=467222
==============================================================================
--- tomcat/tc6.0.x/trunk/java/org/apache/catalina/users/AbstractUser.java (original)
+++ tomcat/tc6.0.x/trunk/java/org/apache/catalina/users/AbstractUser.java Mon Oct 23 20:17:11 2006
@@ -29,7 +29,7 @@
* <p>Convenience base class for {@link User} implementations.</p>
*
* @author Craig R. McClanahan
- * @version $Revision: 303133 $ $Date: 2004-08-29 18:46:15 +0200 (dim., 29 août 2004) $
+ * @version $Revision$ $Date$
* @since 4.1
*/
Propchange: tomcat/tc6.0.x/trunk/java/org/apache/catalina/users/AbstractUser.java
------------------------------------------------------------------------------
svn:keywords = Author Date Id Revision
Modified: tomcat/tc6.0.x/trunk/java/org/apache/catalina/users/Constants.java
URL: http://svn.apache.org/viewvc/tomcat/tc6.0.x/trunk/java/org/apache/catalina/users/Constants.java?view=diff&rev=467222&r1=467221&r2=467222
==============================================================================
--- tomcat/tc6.0.x/trunk/java/org/apache/catalina/users/Constants.java (original)
+++ tomcat/tc6.0.x/trunk/java/org/apache/catalina/users/Constants.java Mon Oct 23 20:17:11 2006
@@ -24,7 +24,7 @@
*
*
* @author Craig R. McClanahan
- * @version $Revision: 302726 $ $Date: 2004-02-27 15:59:07 +0100 (ven., 27 févr. 2004) $
+ * @version $Revision$ $Date$
* @since 4.1
*/
Propchange: tomcat/tc6.0.x/trunk/java/org/apache/catalina/users/Constants.java
------------------------------------------------------------------------------
svn:keywords = Author Date Id Revision
Propchange: tomcat/tc6.0.x/trunk/java/org/apache/catalina/users/LocalStrings.properties
------------------------------------------------------------------------------
svn:keywords = Author Date Id Revision
Propchange: tomcat/tc6.0.x/trunk/java/org/apache/catalina/users/LocalStrings_es.properties
------------------------------------------------------------------------------
svn:keywords = Author Date Id Revision
Propchange: tomcat/tc6.0.x/trunk/java/org/apache/catalina/users/LocalStrings_fr.properties
------------------------------------------------------------------------------
svn:keywords = Author Date Id Revision
Propchange: tomcat/tc6.0.x/trunk/java/org/apache/catalina/users/LocalStrings_ja.properties
------------------------------------------------------------------------------
svn:keywords = Author Date Id Revision
Modified: tomcat/tc6.0.x/trunk/java/org/apache/catalina/users/MemoryGroup.java
URL: http://svn.apache.org/viewvc/tomcat/tc6.0.x/trunk/java/org/apache/catalina/users/MemoryGroup.java?view=diff&rev=467222&r1=467221&r2=467222
==============================================================================
--- tomcat/tc6.0.x/trunk/java/org/apache/catalina/users/MemoryGroup.java (original)
+++ tomcat/tc6.0.x/trunk/java/org/apache/catalina/users/MemoryGroup.java Mon Oct 23 20:17:11 2006
@@ -31,7 +31,7 @@
* {@link MemoryUserDatabase} implementation of {@link UserDatabase}.</p>
*
* @author Craig R. McClanahan
- * @version $Revision: 303133 $ $Date: 2004-08-29 18:46:15 +0200 (dim., 29 août 2004) $
+ * @version $Revision$ $Date$
* @since 4.1
*/
Propchange: tomcat/tc6.0.x/trunk/java/org/apache/catalina/users/MemoryGroup.java
------------------------------------------------------------------------------
svn:keywords = Author Date Id Revision
Modified: tomcat/tc6.0.x/trunk/java/org/apache/catalina/users/MemoryRole.java
URL: http://svn.apache.org/viewvc/tomcat/tc6.0.x/trunk/java/org/apache/catalina/users/MemoryRole.java?view=diff&rev=467222&r1=467221&r2=467222
==============================================================================
--- tomcat/tc6.0.x/trunk/java/org/apache/catalina/users/MemoryRole.java (original)
+++ tomcat/tc6.0.x/trunk/java/org/apache/catalina/users/MemoryRole.java Mon Oct 23 20:17:11 2006
@@ -27,7 +27,7 @@
* {@link MemoryUserDatabase} implementation of {@link UserDatabase}.</p>
*
* @author Craig R. McClanahan
- * @version $Revision: 303133 $ $Date: 2004-08-29 18:46:15 +0200 (dim., 29 août 2004) $
+ * @version $Revision$ $Date$
* @since 4.1
*/
Propchange: tomcat/tc6.0.x/trunk/java/org/apache/catalina/users/MemoryRole.java
------------------------------------------------------------------------------
svn:keywords = Author Date Id Revision
Modified: tomcat/tc6.0.x/trunk/java/org/apache/catalina/users/MemoryUser.java
URL: http://svn.apache.org/viewvc/tomcat/tc6.0.x/trunk/java/org/apache/catalina/users/MemoryUser.java?view=diff&rev=467222&r1=467221&r2=467222
==============================================================================
--- tomcat/tc6.0.x/trunk/java/org/apache/catalina/users/MemoryUser.java (original)
+++ tomcat/tc6.0.x/trunk/java/org/apache/catalina/users/MemoryUser.java Mon Oct 23 20:17:11 2006
@@ -32,7 +32,7 @@
* {@link MemoryUserDatabase} implementation of {@link UserDatabase}.</p>
*
* @author Craig R. McClanahan
- * @version $Revision: 303133 $ $Date: 2004-08-29 18:46:15 +0200 (dim., 29 août 2004) $
+ * @version $Revision$ $Date$
* @since 4.1
*/
Propchange: tomcat/tc6.0.x/trunk/java/org/apache/catalina/users/MemoryUser.java
------------------------------------------------------------------------------
svn:keywords = Author Date Id Revision
Modified: tomcat/tc6.0.x/trunk/java/org/apache/catalina/users/MemoryUserDatabase.java
URL: http://svn.apache.org/viewvc/tomcat/tc6.0.x/trunk/java/org/apache/catalina/users/MemoryUserDatabase.java?view=diff&rev=467222&r1=467221&r2=467222
==============================================================================
--- tomcat/tc6.0.x/trunk/java/org/apache/catalina/users/MemoryUserDatabase.java (original)
+++ tomcat/tc6.0.x/trunk/java/org/apache/catalina/users/MemoryUserDatabase.java Mon Oct 23 20:17:11 2006
@@ -45,7 +45,7 @@
* and uses a specified XML file for its persistent storage.</p>
*
* @author Craig R. McClanahan
- * @version $Revision: 304047 $ $Date: 2005-08-04 15:12:16 +0200 (jeu., 04 août 2005) $
+ * @version $Revision$ $Date$
* @since 4.1
*/
Propchange: tomcat/tc6.0.x/trunk/java/org/apache/catalina/users/MemoryUserDatabase.java
------------------------------------------------------------------------------
svn:keywords = Author Date Id Revision
Modified: tomcat/tc6.0.x/trunk/java/org/apache/catalina/users/MemoryUserDatabaseFactory.java
URL: http://svn.apache.org/viewvc/tomcat/tc6.0.x/trunk/java/org/apache/catalina/users/MemoryUserDatabaseFactory.java?view=diff&rev=467222&r1=467221&r2=467222
==============================================================================
--- tomcat/tc6.0.x/trunk/java/org/apache/catalina/users/MemoryUserDatabaseFactory.java (original)
+++ tomcat/tc6.0.x/trunk/java/org/apache/catalina/users/MemoryUserDatabaseFactory.java Mon Oct 23 20:17:11 2006
@@ -45,7 +45,7 @@
* </ul>
*
* @author Craig R. McClanahan
- * @version $Revision: 304046 $ $Date: 2005-08-04 15:06:56 +0200 (jeu., 04 août 2005) $
+ * @version $Revision$ $Date$
* @since 4.1
*/
Propchange: tomcat/tc6.0.x/trunk/java/org/apache/catalina/users/MemoryUserDatabaseFactory.java
------------------------------------------------------------------------------
svn:keywords = Author Date Id Revision
Propchange: tomcat/tc6.0.x/trunk/java/org/apache/catalina/users/mbeans-descriptors.xml
------------------------------------------------------------------------------
svn:keywords = Author Date Id Revision
Modified: tomcat/tc6.0.x/trunk/java/org/apache/catalina/util/Base64.java
URL: http://svn.apache.org/viewvc/tomcat/tc6.0.x/trunk/java/org/apache/catalina/util/Base64.java?view=diff&rev=467222&r1=467221&r2=467222
==============================================================================
--- tomcat/tc6.0.x/trunk/java/org/apache/catalina/util/Base64.java (original)
+++ tomcat/tc6.0.x/trunk/java/org/apache/catalina/util/Base64.java Mon Oct 23 20:17:11 2006
@@ -28,7 +28,7 @@
* Internet Message Bodies. Reference 1996
*
* @author Jeffrey Rodriguez
- * @version $Id: Base64.java 303133 2004-08-29 16:46:15Z yoavs $
+ * @version $Id$
*/
public final class Base64
{
Propchange: tomcat/tc6.0.x/trunk/java/org/apache/catalina/util/Base64.java
------------------------------------------------------------------------------
svn:keywords = Author Date Id Revision
Modified: tomcat/tc6.0.x/trunk/java/org/apache/catalina/util/CharsetMapper.java
URL: http://svn.apache.org/viewvc/tomcat/tc6.0.x/trunk/java/org/apache/catalina/util/CharsetMapper.java?view=diff&rev=467222&r1=467221&r2=467222
==============================================================================
--- tomcat/tc6.0.x/trunk/java/org/apache/catalina/util/CharsetMapper.java (original)
+++ tomcat/tc6.0.x/trunk/java/org/apache/catalina/util/CharsetMapper.java Mon Oct 23 20:17:11 2006
@@ -33,7 +33,7 @@
* your own version for a particular web application.
*
* @author Craig R. McClanahan
- * @version $Date: 2005-01-05 11:00:45 +0100 (mer., 05 janv. 2005) $ $Version$
+ * @version $Date$ $Version$
*/
public class CharsetMapper {
Propchange: tomcat/tc6.0.x/trunk/java/org/apache/catalina/util/CharsetMapper.java
------------------------------------------------------------------------------
svn:keywords = Author Date Id Revision
Propchange: tomcat/tc6.0.x/trunk/java/org/apache/catalina/util/CharsetMapperDefault.properties
------------------------------------------------------------------------------
svn:keywords = Author Date Id Revision
---------------------------------------------------------------------
To unsubscribe, e-mail: dev-unsubscribe@tomcat.apache.org
For additional commands, e-mail: dev-help@tomcat.apache.org