You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@activemq.apache.org by ta...@apache.org on 2011/07/08 21:40:54 UTC
svn commit: r1144452 - in
/activemq/activemq-dotnet/Apache.NMS.ActiveMQ/branches/1.5.x: ./
src/main/csharp/ src/main/csharp/Commands/ src/main/csharp/Util/
src/test/csharp/
Author: tabish
Date: Fri Jul 8 19:40:53 2011
New Revision: 1144452
URL: http://svn.apache.org/viewvc?rev=1144452&view=rev
Log:
fix for: https://issues.apache.org/jira/browse/AMQNET-334
Added:
activemq/activemq-dotnet/Apache.NMS.ActiveMQ/branches/1.5.x/src/main/csharp/AdvisoryConsumer.cs
- copied unchanged from r1144406, activemq/activemq-dotnet/Apache.NMS.ActiveMQ/trunk/src/main/csharp/AdvisoryConsumer.cs
activemq/activemq-dotnet/Apache.NMS.ActiveMQ/branches/1.5.x/src/main/csharp/ConnectionFailedException.cs
- copied unchanged from r1144406, activemq/activemq-dotnet/Apache.NMS.ActiveMQ/trunk/src/main/csharp/ConnectionFailedException.cs
activemq/activemq-dotnet/Apache.NMS.ActiveMQ/branches/1.5.x/src/main/csharp/Util/AdvisorySupport.cs
- copied unchanged from r1144406, activemq/activemq-dotnet/Apache.NMS.ActiveMQ/trunk/src/main/csharp/Util/AdvisorySupport.cs
activemq/activemq-dotnet/Apache.NMS.ActiveMQ/branches/1.5.x/src/test/csharp/TempDestinationTest.cs
- copied unchanged from r1144406, activemq/activemq-dotnet/Apache.NMS.ActiveMQ/trunk/src/test/csharp/TempDestinationTest.cs
Modified:
activemq/activemq-dotnet/Apache.NMS.ActiveMQ/branches/1.5.x/ (props changed)
activemq/activemq-dotnet/Apache.NMS.ActiveMQ/branches/1.5.x/src/main/csharp/Commands/ActiveMQDestination.cs
activemq/activemq-dotnet/Apache.NMS.ActiveMQ/branches/1.5.x/src/main/csharp/Connection.cs
activemq/activemq-dotnet/Apache.NMS.ActiveMQ/branches/1.5.x/src/main/csharp/ConnectionFactory.cs
activemq/activemq-dotnet/Apache.NMS.ActiveMQ/branches/1.5.x/src/main/csharp/MessageConsumer.cs
activemq/activemq-dotnet/Apache.NMS.ActiveMQ/branches/1.5.x/src/main/csharp/MessageProducer.cs
activemq/activemq-dotnet/Apache.NMS.ActiveMQ/branches/1.5.x/src/main/csharp/Session.cs
activemq/activemq-dotnet/Apache.NMS.ActiveMQ/branches/1.5.x/vs2008-activemq-test.csproj (contents, props changed)
activemq/activemq-dotnet/Apache.NMS.ActiveMQ/branches/1.5.x/vs2008-activemq.csproj (contents, props changed)
Propchange: activemq/activemq-dotnet/Apache.NMS.ActiveMQ/branches/1.5.x/
------------------------------------------------------------------------------
--- svn:mergeinfo (original)
+++ svn:mergeinfo Fri Jul 8 19:40:53 2011
@@ -1,2 +1,3 @@
/activemq/activemq-dotnet/Apache.NMS.ActiveMQ/tags/1.0.0:692591,693525
/activemq/activemq-dotnet/Apache.NMS.ActiveMQ/tags/1.1.0:788230,788233,790183
+/activemq/activemq-dotnet/Apache.NMS.ActiveMQ/trunk:1144402-1144406
Modified: activemq/activemq-dotnet/Apache.NMS.ActiveMQ/branches/1.5.x/src/main/csharp/Commands/ActiveMQDestination.cs
URL: http://svn.apache.org/viewvc/activemq/activemq-dotnet/Apache.NMS.ActiveMQ/branches/1.5.x/src/main/csharp/Commands/ActiveMQDestination.cs?rev=1144452&r1=1144451&r2=1144452&view=diff
==============================================================================
--- activemq/activemq-dotnet/Apache.NMS.ActiveMQ/branches/1.5.x/src/main/csharp/Commands/ActiveMQDestination.cs (original)
+++ activemq/activemq-dotnet/Apache.NMS.ActiveMQ/branches/1.5.x/src/main/csharp/Commands/ActiveMQDestination.cs Fri Jul 8 19:40:53 2011
@@ -17,6 +17,7 @@
using System;
using System.Collections.Specialized;
+using System.Collections.Generic;
using Apache.NMS.Util;
namespace Apache.NMS.ActiveMQ.Commands
@@ -423,6 +424,30 @@ namespace Apache.NMS.ActiveMQ.Commands
}
}
+ /// <summary>
+ /// Gets the Destination Type of this Destination as a String value which is one
+ /// of {Queue,Topic,TempQueue,TempTopic}.
+ /// </summary>
+ /// <returns>
+ /// The Destination Type as a String.
+ /// </returns>
+ public String GetDestinationTypeAsString()
+ {
+ switch(GetDestinationType())
+ {
+ case ACTIVEMQ_QUEUE:
+ return "Queue";
+ case ACTIVEMQ_TOPIC:
+ return "Topic";
+ case ACTIVEMQ_TEMPORARY_QUEUE:
+ return "TempQueue";
+ case ACTIVEMQ_TEMPORARY_TOPIC:
+ return "TempTopic";
+ default:
+ throw new NMSException("Invalid destination type: " + GetDestinationType());
+ }
+ }
+
/// <summary>
/// Returns true if this destination represents a collection of
/// destinations; allowing a set of destinations to be published to or subscribed
@@ -439,30 +464,32 @@ namespace Apache.NMS.ActiveMQ.Commands
}
}
- /*public List GetChildDestinations() {
- List answer = new ArrayList();
- StringTokenizer iter = new StringTokenizer(physicalName, COMPOSITE_SEPARATOR);
- while (iter.hasMoreTokens()) {
- String name = iter.nextToken();
- Destination child = null;
- if (name.StartsWith(QUEUE_PREFIX)) {
- child = new ActiveMQQueue(name.Substring(QUEUE_PREFIX.Length));
- }
- else if (name.StartsWith(TOPIC_PREFIX)) {
- child = new ActiveMQTopic(name.Substring(TOPIC_PREFIX.Length));
- }
- else {
- child = createDestination(name);
- }
- answer.add(child);
- }
- if (answer.size() == 1) {
- // lets put ourselves inside the collection
- // as we are not really a composite destination
- answer.set(0, this);
- }
- return answer;
- }*/
+ public ActiveMQDestination[] GetCompositeDestinations()
+ {
+ if (IsComposite)
+ {
+ LinkedList<String> list = new LinkedList<String>();
+ String[] composites = physicalName.Split(COMPOSITE_SEPARATOR.ToCharArray());
+ foreach(String composite in composites)
+ {
+ if (String.IsNullOrEmpty(composite.Trim()))
+ {
+ continue;
+ }
+ list.AddLast(composite.Trim());
+ }
+ ActiveMQDestination[] compositeDestinations = new ActiveMQDestination[list.Count];
+ int counter = 0;
+ foreach(String destination in list)
+ {
+ compositeDestinations[counter++] = CreateDestination(destination);
+ }
+
+ return compositeDestinations;
+ }
+
+ return new ActiveMQDestination[0];
+ }
/// <summary>
/// </summary>
Modified: activemq/activemq-dotnet/Apache.NMS.ActiveMQ/branches/1.5.x/src/main/csharp/Connection.cs
URL: http://svn.apache.org/viewvc/activemq/activemq-dotnet/Apache.NMS.ActiveMQ/branches/1.5.x/src/main/csharp/Connection.cs?rev=1144452&r1=1144451&r2=1144452&view=diff
==============================================================================
--- activemq/activemq-dotnet/Apache.NMS.ActiveMQ/branches/1.5.x/src/main/csharp/Connection.cs (original)
+++ activemq/activemq-dotnet/Apache.NMS.ActiveMQ/branches/1.5.x/src/main/csharp/Connection.cs Fri Jul 8 19:40:53 2011
@@ -18,6 +18,7 @@
using System;
using System.Diagnostics;
using System.Collections;
+using System.Collections.Generic;
using System.Threading;
using Apache.NMS.ActiveMQ.Commands;
using Apache.NMS.ActiveMQ.Threads;
@@ -46,6 +47,7 @@ namespace Apache.NMS.ActiveMQ
private bool dispatchAsync = true;
private int producerWindowSize = 0;
private bool messagePrioritySupported=true;
+ private bool watchTopicAdviosires = true;
private bool userSpecifiedClientID;
private readonly Uri brokerUri;
@@ -58,6 +60,7 @@ namespace Apache.NMS.ActiveMQ
private readonly IList sessions = ArrayList.Synchronized(new ArrayList());
private readonly IDictionary producers = Hashtable.Synchronized(new Hashtable());
private readonly IDictionary dispatchers = Hashtable.Synchronized(new Hashtable());
+ private readonly IDictionary tempDests = Hashtable.Synchronized(new Hashtable());
private readonly object myLock = new object();
private readonly Atomic<bool> connected = new Atomic<bool>(false);
private readonly Atomic<bool> closed = new Atomic<bool>(false);
@@ -74,9 +77,11 @@ namespace Apache.NMS.ActiveMQ
private PrefetchPolicy prefetchPolicy = new PrefetchPolicy();
private ICompressionPolicy compressionPolicy = new CompressionPolicy();
private readonly IdGenerator clientIdGenerator;
+ private int consumerIdCounter = 0;
private volatile CountDownLatch transportInterruptionProcessingComplete;
private readonly MessageTransformation messageTransformation;
private readonly ThreadPoolExecutor executor = new ThreadPoolExecutor();
+ private AdvisoryConsumer advisoryConsumer = null;
public Connection(Uri connectionUri, ITransport transport, IdGenerator clientIdGenerator)
{
@@ -319,6 +324,12 @@ namespace Apache.NMS.ActiveMQ
set { this.dispatchAsync = value; }
}
+ public bool WatchTopicAdvisories
+ {
+ get { return this.watchTopicAdviosires; }
+ set { this.watchTopicAdviosires = value; }
+ }
+
public string ClientId
{
get { return info.ClientId; }
@@ -535,6 +546,12 @@ namespace Apache.NMS.ActiveMQ
Tracer.Info("Connection.Close(): Closing Connection Now.");
this.closing.Value = true;
+ if(this.advisoryConsumer != null)
+ {
+ this.advisoryConsumer.Dispose();
+ this.advisoryConsumer = null;
+ }
+
lock(sessions.SyncRoot)
{
foreach(Session session in sessions)
@@ -544,6 +561,11 @@ namespace Apache.NMS.ActiveMQ
}
sessions.Clear();
+ foreach(ActiveMQTempDestination dest in this.tempDests.Values)
+ {
+ dest.Delete();
+ }
+
// Connected is true only when we've successfully sent our ConnectionInfo
// to the broker, so if we haven't announced ourselves there's no need to
// inform the broker of a remove, and if the transport is failed, why bother.
@@ -731,6 +753,13 @@ namespace Apache.NMS.ActiveMQ
if(!(response is ExceptionResponse))
{
connected.Value = true;
+ if(this.watchTopicAdviosires)
+ {
+ ConsumerId id = new ConsumerId(
+ new SessionId(info.ConnectionId, -1),
+ Interlocked.Increment(ref this.consumerIdCounter));
+ this.advisoryConsumer = new AdvisoryConsumer(this, id);
+ }
}
}
}
@@ -1088,6 +1117,7 @@ namespace Apache.NMS.ActiveMQ
this.SyncRequest(command);
destination.Connection = this;
+ this.AddTempDestination(destination);
return destination;
}
@@ -1098,6 +1128,19 @@ namespace Apache.NMS.ActiveMQ
public void DeleteTemporaryDestination(IDestination destination)
{
+ CheckClosedOrFailed();
+
+ ActiveMQTempDestination temp = destination as ActiveMQTempDestination;
+
+ foreach(Session session in this.sessions)
+ {
+ if(session.IsInUse(temp))
+ {
+ throw new NMSException("A consumer is consuming from the temporary destination");
+ }
+ }
+
+ this.tempDests.Remove(destination as ActiveMQTempDestination);
this.DeleteDestination(destination);
}
@@ -1182,5 +1225,49 @@ namespace Apache.NMS.ActiveMQ
}
}
}
+
+ internal void AddTempDestination(ActiveMQTempDestination dest)
+ {
+ // .NET lacks a putIfAbsent operation for Maps.
+ lock(tempDests.SyncRoot)
+ {
+ if(!this.tempDests.Contains(dest))
+ {
+ this.tempDests.Add(dest, dest);
+ }
+ }
+ }
+
+ internal void RemoveTempDestination(ActiveMQTempDestination dest)
+ {
+ this.tempDests.Remove(dest);
+ }
+
+ internal bool IsTempDestinationActive(ActiveMQTempDestination dest)
+ {
+ if(this.advisoryConsumer == null)
+ {
+ return true;
+ }
+
+ return this.tempDests.Contains(dest);
+ }
+
+ protected void CheckClosedOrFailed()
+ {
+ CheckClosed();
+ if (transportFailed.Value)
+ {
+ throw new ConnectionFailedException(firstFailureError.Message);
+ }
+ }
+
+ protected void CheckClosed()
+ {
+ if(closed.Value)
+ {
+ throw new ConnectionClosedException();
+ }
+ }
}
}
Modified: activemq/activemq-dotnet/Apache.NMS.ActiveMQ/branches/1.5.x/src/main/csharp/ConnectionFactory.cs
URL: http://svn.apache.org/viewvc/activemq/activemq-dotnet/Apache.NMS.ActiveMQ/branches/1.5.x/src/main/csharp/ConnectionFactory.cs?rev=1144452&r1=1144451&r2=1144452&view=diff
==============================================================================
--- activemq/activemq-dotnet/Apache.NMS.ActiveMQ/branches/1.5.x/src/main/csharp/ConnectionFactory.cs (original)
+++ activemq/activemq-dotnet/Apache.NMS.ActiveMQ/branches/1.5.x/src/main/csharp/ConnectionFactory.cs Fri Jul 8 19:40:53 2011
@@ -51,6 +51,7 @@ namespace Apache.NMS.ActiveMQ
private AcknowledgementMode acknowledgementMode = AcknowledgementMode.AutoAcknowledge;
private TimeSpan requestTimeout = NMSConstants.defaultRequestTimeout;
private bool messagePrioritySupported=true;
+ private bool watchTopicAdvisories=true;
private IRedeliveryPolicy redeliveryPolicy = new RedeliveryPolicy();
private PrefetchPolicy prefetchPolicy = new PrefetchPolicy();
@@ -267,6 +268,12 @@ namespace Apache.NMS.ActiveMQ
set { this.dispatchAsync = value; }
}
+ public bool WatchTopicAdvisories
+ {
+ get { return this.watchTopicAdvisories; }
+ set { this.watchTopicAdvisories = value; }
+ }
+
public bool MessagePrioritySupported
{
get { return this.messagePrioritySupported; }
@@ -410,6 +417,7 @@ namespace Apache.NMS.ActiveMQ
connection.CompressionPolicy = this.compressionPolicy.Clone() as ICompressionPolicy;
connection.ConsumerTransformer = this.consumerTransformer;
connection.ProducerTransformer = this.producerTransformer;
+ connection.WatchTopicAdvisories = this.watchTopicAdvisories;
}
protected static void ExceptionHandler(Exception ex)
Modified: activemq/activemq-dotnet/Apache.NMS.ActiveMQ/branches/1.5.x/src/main/csharp/MessageConsumer.cs
URL: http://svn.apache.org/viewvc/activemq/activemq-dotnet/Apache.NMS.ActiveMQ/branches/1.5.x/src/main/csharp/MessageConsumer.cs?rev=1144452&r1=1144451&r2=1144452&view=diff
==============================================================================
--- activemq/activemq-dotnet/Apache.NMS.ActiveMQ/branches/1.5.x/src/main/csharp/MessageConsumer.cs (original)
+++ activemq/activemq-dotnet/Apache.NMS.ActiveMQ/branches/1.5.x/src/main/csharp/MessageConsumer.cs Fri Jul 8 19:40:53 2011
@@ -74,7 +74,32 @@ namespace Apache.NMS.ActiveMQ
if(destination == null)
{
throw new InvalidDestinationException("Consumer cannot receive on Null Destinations.");
- }
+ }
+ else if(destination.PhysicalName == null)
+ {
+ throw new InvalidDestinationException("The destination object was not given a physical name.");
+ }
+ else if (destination.IsTemporary)
+ {
+ String physicalName = destination.PhysicalName;
+
+ if(String.IsNullOrEmpty(physicalName))
+ {
+ throw new InvalidDestinationException("Physical name of Destination should be valid: " + destination);
+ }
+
+ String connectionID = session.Connection.ConnectionId.Value;
+
+ if(physicalName.IndexOf(connectionID) < 0)
+ {
+ throw new InvalidDestinationException("Cannot use a Temporary destination from another Connection");
+ }
+
+ if(!session.Connection.IsTempDestinationActive(destination as ActiveMQTempDestination))
+ {
+ throw new InvalidDestinationException("Cannot use a Temporary destination that has been deleted");
+ }
+ }
this.session = session;
this.redeliveryPolicy = this.session.Connection.RedeliveryPolicy;
@@ -1201,6 +1226,11 @@ namespace Apache.NMS.ActiveMQ
get { return this.session.IsClientAcknowledge; }
}
+ internal bool IsInUse(ActiveMQTempDestination dest)
+ {
+ return this.info.Destination.Equals(dest);
+ }
+
#region Nested ISyncronization Types
class MessageConsumerSynchronization : ISynchronization
Modified: activemq/activemq-dotnet/Apache.NMS.ActiveMQ/branches/1.5.x/src/main/csharp/MessageProducer.cs
URL: http://svn.apache.org/viewvc/activemq/activemq-dotnet/Apache.NMS.ActiveMQ/branches/1.5.x/src/main/csharp/MessageProducer.cs?rev=1144452&r1=1144451&r2=1144452&view=diff
==============================================================================
--- activemq/activemq-dotnet/Apache.NMS.ActiveMQ/branches/1.5.x/src/main/csharp/MessageProducer.cs (original)
+++ activemq/activemq-dotnet/Apache.NMS.ActiveMQ/branches/1.5.x/src/main/csharp/MessageProducer.cs Fri Jul 8 19:40:53 2011
@@ -255,7 +255,7 @@ namespace Apache.NMS.ActiveMQ
throw new ConnectionClosedException();
}
- session.DoSend(activeMessage, this, this.usage, this.RequestTimeout);
+ session.DoSend(dest, activeMessage, this, this.usage, this.RequestTimeout);
}
}
Modified: activemq/activemq-dotnet/Apache.NMS.ActiveMQ/branches/1.5.x/src/main/csharp/Session.cs
URL: http://svn.apache.org/viewvc/activemq/activemq-dotnet/Apache.NMS.ActiveMQ/branches/1.5.x/src/main/csharp/Session.cs?rev=1144452&r1=1144451&r2=1144452&view=diff
==============================================================================
--- activemq/activemq-dotnet/Apache.NMS.ActiveMQ/branches/1.5.x/src/main/csharp/Session.cs (original)
+++ activemq/activemq-dotnet/Apache.NMS.ActiveMQ/branches/1.5.x/src/main/csharp/Session.cs Fri Jul 8 19:40:53 2011
@@ -664,10 +664,16 @@ namespace Apache.NMS.ActiveMQ
#endregion
- internal void DoSend( ActiveMQMessage message, MessageProducer producer, MemoryUsage producerWindow, TimeSpan sendTimeout )
+ internal void DoSend(ActiveMQDestination destination, ActiveMQMessage message,
+ MessageProducer producer, MemoryUsage producerWindow, TimeSpan sendTimeout)
{
ActiveMQMessage msg = message;
+ if(destination.IsTemporary && !connection.IsTempDestinationActive(destination as ActiveMQTempDestination))
+ {
+ throw new InvalidDestinationException("Cannot publish to a deleted Destination: " + destination);
+ }
+
if(IsTransacted)
{
DoStartTransaction();
@@ -969,5 +975,17 @@ namespace Apache.NMS.ActiveMQ
}
}
+ internal bool IsInUse(ActiveMQTempDestination dest)
+ {
+ foreach(MessageConsumer consumer in this.consumers.Values)
+ {
+ if(consumer.IsInUse(dest))
+ {
+ return true;
+ }
+ }
+
+ return false;
+ }
}
}
Modified: activemq/activemq-dotnet/Apache.NMS.ActiveMQ/branches/1.5.x/vs2008-activemq-test.csproj
URL: http://svn.apache.org/viewvc/activemq/activemq-dotnet/Apache.NMS.ActiveMQ/branches/1.5.x/vs2008-activemq-test.csproj?rev=1144452&r1=1144451&r2=1144452&view=diff
==============================================================================
--- activemq/activemq-dotnet/Apache.NMS.ActiveMQ/branches/1.5.x/vs2008-activemq-test.csproj (original)
+++ activemq/activemq-dotnet/Apache.NMS.ActiveMQ/branches/1.5.x/vs2008-activemq-test.csproj Fri Jul 8 19:40:53 2011
@@ -2,7 +2,7 @@
<PropertyGroup>
<Configuration Condition=" '$(Configuration)' == '' ">Debug</Configuration>
<Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>
- <ProductVersion>9.0.30729</ProductVersion>
+ <ProductVersion>9.0.21022</ProductVersion>
<SchemaVersion>2.0</SchemaVersion>
<ProjectGuid>{EB943C69-2C9B-45E7-B95B-FB916E7057ED}</ProjectGuid>
<OutputType>Library</OutputType>
@@ -97,6 +97,7 @@
<Compile Include="src\test\csharp\QueueBrowserTests.cs" />
<Compile Include="src\test\csharp\QueueConsumerPriorityTest.cs" />
<Compile Include="src\test\csharp\RollbackRedeliveryTest.cs" />
+ <Compile Include="src\test\csharp\TempDestinationTest.cs" />
<Compile Include="src\test\csharp\Threads\CompositeTaskRunnerTest.cs" />
<Compile Include="src\test\csharp\Threads\DedicatedTaskRunnerTest.cs" />
<Compile Include="src\test\csharp\Threads\ThreadPoolExecutorTest.cs" />
Propchange: activemq/activemq-dotnet/Apache.NMS.ActiveMQ/branches/1.5.x/vs2008-activemq-test.csproj
------------------------------------------------------------------------------
--- svn:mergeinfo (original)
+++ svn:mergeinfo Fri Jul 8 19:40:53 2011
@@ -1 +1,2 @@
/activemq/activemq-dotnet/Apache.NMS.ActiveMQ/tags/1.1.0/vs2008-activemq-test.csproj:788230,788233,790183
+/activemq/activemq-dotnet/Apache.NMS.ActiveMQ/trunk/vs2008-activemq-test.csproj:1144402-1144406
Modified: activemq/activemq-dotnet/Apache.NMS.ActiveMQ/branches/1.5.x/vs2008-activemq.csproj
URL: http://svn.apache.org/viewvc/activemq/activemq-dotnet/Apache.NMS.ActiveMQ/branches/1.5.x/vs2008-activemq.csproj?rev=1144452&r1=1144451&r2=1144452&view=diff
==============================================================================
--- activemq/activemq-dotnet/Apache.NMS.ActiveMQ/branches/1.5.x/vs2008-activemq.csproj (original)
+++ activemq/activemq-dotnet/Apache.NMS.ActiveMQ/branches/1.5.x/vs2008-activemq.csproj Fri Jul 8 19:40:53 2011
@@ -68,6 +68,7 @@
<Reference Include="System.Transactions" />
</ItemGroup>
<ItemGroup>
+ <Compile Include="src\main\csharp\AdvisoryConsumer.cs" />
<Compile Include="src\main\csharp\BrokerException.cs">
<SubType>Code</SubType>
</Compile>
@@ -288,6 +289,7 @@
<Compile Include="src\main\csharp\ConnectionFactory.cs">
<SubType>Code</SubType>
</Compile>
+ <Compile Include="src\main\csharp\ConnectionFailedException.cs" />
<Compile Include="src\main\csharp\ConnectionMetaData.cs" />
<Compile Include="src\main\csharp\ConsumerClosedException.cs">
<SubType>Code</SubType>
@@ -1017,6 +1019,7 @@
<SubType>Code</SubType>
</Compile>
<Compile Include="src\main\csharp\Util\ActiveMQMessageTransformation.cs" />
+ <Compile Include="src\main\csharp\Util\AdvisorySupport.cs" />
<Compile Include="src\main\csharp\Util\FactoryAttribute.cs" />
<Compile Include="src\main\csharp\Util\FactoryFinder.cs" />
<Compile Include="src\main\csharp\Util\FifoMessageDispatchChannel.cs" />
Propchange: activemq/activemq-dotnet/Apache.NMS.ActiveMQ/branches/1.5.x/vs2008-activemq.csproj
------------------------------------------------------------------------------
--- svn:mergeinfo (original)
+++ svn:mergeinfo Fri Jul 8 19:40:53 2011
@@ -1 +1,2 @@
/activemq/activemq-dotnet/Apache.NMS.ActiveMQ/tags/1.1.0/vs2008-activemq.csproj:788230,788233,790183
+/activemq/activemq-dotnet/Apache.NMS.ActiveMQ/trunk/vs2008-activemq.csproj:1144402-1144406