http://git-wip-us.apache.org/repos/asf/ignite/blob/5cec202c/modules/platform/src/main/dotnet/Apache.Ignite.Core/Services/ServiceConfiguration.cs ---------------------------------------------------------------------- diff --git a/modules/platform/src/main/dotnet/Apache.Ignite.Core/Services/ServiceConfiguration.cs b/modules/platform/src/main/dotnet/Apache.Ignite.Core/Services/ServiceConfiguration.cs new file mode 100644 index 0000000..e91656f --- /dev/null +++ b/modules/platform/src/main/dotnet/Apache.Ignite.Core/Services/ServiceConfiguration.cs @@ -0,0 +1,62 @@ +/* + * 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. + */ + +namespace Apache.Ignite.Core.Services +{ + using Apache.Ignite.Core.Cluster; + + /// <summary> + /// Service configuration. + /// </summary> + public class ServiceConfiguration + { + /// <summary> + /// Gets or sets the service name. + /// </summary> + public string Name { get; set; } + + /// <summary> + /// Gets or sets the service instance. + /// </summary> + public IService Service { get; set; } + + /// <summary> + /// Gets or sets the total number of deployed service instances in the cluster, 0 for unlimited. + /// </summary> + public int TotalCount { get; set; } + + /// <summary> + /// Gets or sets maximum number of deployed service instances on each node, 0 for unlimited. + /// </summary> + public int MaxPerNodeCount { get; set; } + + /// <summary> + /// Gets or sets cache name used for key-to-node affinity calculation. + /// </summary> + public string CacheName { get; set; } + + /// <summary> + /// Gets or sets affinity key used for key-to-node affinity calculation. + /// </summary> + public object AffinityKey { get; set; } + + /// <summary> + /// Gets or sets node filter used to filter nodes on which the service will be deployed. + /// </summary> + public IClusterNodeFilter NodeFilter { get; set; } + } +} \ No newline at end of file
http://git-wip-us.apache.org/repos/asf/ignite/blob/5cec202c/modules/platform/src/main/dotnet/Apache.Ignite.Core/Services/ServiceInvocationException.cs ---------------------------------------------------------------------- diff --git a/modules/platform/src/main/dotnet/Apache.Ignite.Core/Services/ServiceInvocationException.cs b/modules/platform/src/main/dotnet/Apache.Ignite.Core/Services/ServiceInvocationException.cs new file mode 100644 index 0000000..fe83cbc --- /dev/null +++ b/modules/platform/src/main/dotnet/Apache.Ignite.Core/Services/ServiceInvocationException.cs @@ -0,0 +1,101 @@ +/* + * 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. + */ + +namespace Apache.Ignite.Core.Services +{ + using System; + using System.Runtime.Serialization; + using Apache.Ignite.Core.Common; + using Apache.Ignite.Core.Portable; + + /// <summary> + /// Indicates an error during Grid Services invocation. + /// </summary> + [Serializable] + public class ServiceInvocationException : IgniteException + { + /** Serializer key. */ + private const string KeyPortableCause = "PortableCause"; + + /** Cause. */ + private readonly IPortableObject _portableCause; + + /// <summary> + /// Initializes a new instance of the <see cref="ServiceInvocationException"/> class. + /// </summary> + public ServiceInvocationException() + { + // No-op. + } + + /// <summary> + /// Initializes a new instance of the <see cref="ServiceInvocationException"/> class. + /// </summary> + /// <param name="message">The message that describes the error.</param> + public ServiceInvocationException(string message) : base(message) + { + // No-op. + } + + /// <summary> + /// Initializes a new instance of the <see cref="ServiceInvocationException"/> class. + /// </summary> + /// <param name="message">The message.</param> + /// <param name="cause">The cause.</param> + public ServiceInvocationException(string message, Exception cause) : base(message, cause) + { + } + + /// <summary> + /// Initializes a new instance of the <see cref="ServiceInvocationException"/> class. + /// </summary> + /// <param name="message">The message.</param> + /// <param name="portableCause">The portable cause.</param> + public ServiceInvocationException(string message, IPortableObject portableCause) + :base(message) + { + _portableCause = portableCause; + } + + /// <summary> + /// Initializes a new instance of the <see cref="IgniteException"/> class. + /// </summary> + /// <param name="info">Serialization information.</param> + /// <param name="ctx">Streaming context.</param> + protected ServiceInvocationException(SerializationInfo info, StreamingContext ctx) + : base(info, ctx) + { + _portableCause = (IPortableObject) info.GetValue(KeyPortableCause, typeof (IPortableObject)); + } + + /// <summary> + /// Gets the portable cause. + /// </summary> + public IPortableObject PortableCause + { + get { return _portableCause; } + } + + /** <inheritdoc /> */ + public override void GetObjectData(SerializationInfo info, StreamingContext context) + { + info.AddValue(KeyPortableCause, _portableCause); + + base.GetObjectData(info, context); + } + } +} \ No newline at end of file http://git-wip-us.apache.org/repos/asf/ignite/blob/5cec202c/modules/platform/src/main/dotnet/Apache.Ignite.Core/Transactions/ITransaction.cs ---------------------------------------------------------------------- diff --git a/modules/platform/src/main/dotnet/Apache.Ignite.Core/Transactions/ITransaction.cs b/modules/platform/src/main/dotnet/Apache.Ignite.Core/Transactions/ITransaction.cs new file mode 100644 index 0000000..e85d577 --- /dev/null +++ b/modules/platform/src/main/dotnet/Apache.Ignite.Core/Transactions/ITransaction.cs @@ -0,0 +1,230 @@ +/* + * 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. + */ + +namespace Apache.Ignite.Core.Transactions +{ + using System; + using System.Collections.Generic; + using Apache.Ignite.Core.Common; + + /// <summary> + /// Grid cache transaction. + /// <para /> + /// Cache transactions support the following isolation levels: + /// <list type="bullet"> + /// <item> + /// <description><see cref="TransactionIsolation.ReadCommitted"/> isolation level + /// means that always a committed value will be provided for read operations. With this isolation + /// level values are always read from cache global memory or persistent store every time a value + /// is accessed. In other words, if the same key is accessed more than once within the same transaction, + /// it may have different value every time since global cache memory may be updated concurrently by + /// other threads.</description> + /// </item> + /// <item> + /// <description><see cref="TransactionIsolation.RepeatableRead"/> isolation level + /// means that if a value was read once within transaction, then all consecutive reads will provide + /// the same in-transaction value. With this isolation level accessed values are stored within + /// in-transaction memory, so consecutive access to the same key within the same transaction will always + /// return the value that was previously read or updated within this transaction. If concurrency is + /// <see cref="TransactionConcurrency.Pessimistic"/>, then a lock on the key will be + /// acquired prior to accessing the value.</description> + /// </item> + /// <item> + /// <description><see cref="TransactionIsolation.Serializable"/> isolation level means + /// that all transactions occur in a completely isolated fashion, as if all transactions in the system + /// had executed serially, one after the other. Read access with this level happens the same way as with + /// <see cref="TransactionIsolation.RepeatableRead"/> level. However, in + /// <see cref="TransactionConcurrency.Optimistic"/> mode, if some transactions cannot be + /// serially isolated from each other, then one winner will be picked and the other transactions in + /// conflict will result in <c>TransactionOptimisticException</c> being thrown on Java side.</description> + /// </item> + /// </list> + /// Cache transactions support the following concurrency models: + /// <list type="bullet"> + /// <item> + /// <description><see cref="TransactionConcurrency.Optimistic"/> - in this mode all cache + /// operations + /// are not distributed to other nodes until <see cref="ITransaction.Commit()"/>. + /// In this mode one <c>PREPARE</c> message will + /// be sent to participating cache nodes to start acquiring per-transaction locks, and once all nodes + /// reply <c>OK</c> (i.e. <c>Phase 1</c> completes successfully), a one-way <c>COMMIT</c> message is sent + /// without waiting for reply. If it is necessary to know whenever remote nodes have committed as well, + /// synchronous commit or synchronous rollback should be enabled via + /// <c>CacheConfiguration.setWriteSynchronizationMode</c>. + /// <para /> + /// Note that in this mode, optimistic failures are only possible in conjunction with + /// <see cref="TransactionIsolation.Serializable"/> isolation level. In all other cases, + /// optimistic transactions will never fail optimistically and will always be identically ordered on all + /// participating Ignite nodes.</description> + /// </item> + /// <item> + /// <description><see cref="TransactionConcurrency.Pessimistic"/> - in this mode a lock is + /// acquired on all cache operations with exception of read operations in + /// <see cref="TransactionIsolation.ReadCommitted"/> mode. All optional filters passed + /// into cache operations will be evaluated after successful lock acquisition. Whenever + /// <see cref="ITransaction.Commit()"/> is called, a single one-way <c>COMMIT</c> + /// message is sent to participating cache nodes without waiting for reply. Note that there is no reason + /// for distributed <c>PREPARE</c> step, as all locks have been already acquired. Just like with + /// optimistic mode, it is possible to configure synchronous commit or rollback and wait till + /// transaction commits on all participating remote nodes.</description> + /// </item> + /// </list> + /// <para /> + /// In addition to standard <c>CacheAtomicityMode.TRANSACTIONAL</c> behavior, Ignite also supports + /// a lighter <c>CacheAtomicityMode.ATOMIC</c> mode as well. In this mode distributed transactions + /// and distributed locking are not supported. Disabling transactions and locking allows to achieve much higher + /// performance and throughput ratios. It is recommended that <c>CacheAtomicityMode.TRANSACTIONAL</c> mode + /// is used whenever full <c>ACID</c>-compliant transactions are not needed. + /// <example> + /// You can use cache transactions as follows: + /// <code> + /// ICacheTx tx = cache.TxStart(); + /// + /// try + /// { + /// int v1 = cache<string, int>.Get("k1"); + /// + /// // Check if v1 satisfies some condition before doing a put. + /// if (v1 > 0) + /// cache.Put<string, int>("k1", 2); + /// + /// cache.Removex("k2); + /// + /// // Commit the transaction. + /// tx.Commit(); + /// } + /// finally + /// { + /// tx.Dispose(); + /// } + /// + /// </code> + /// </example> + /// </summary> + public interface ITransaction : IDisposable, IAsyncSupport<ITransaction> + { + /// <summary> + /// ID of the node on which this transaction started. + /// </summary> + /// <value> + /// Originating node ID. + /// </value> + Guid NodeId { get; } + + /// <summary> + /// ID of the thread in which this transaction started. + /// </summary> + long ThreadId + { + get; + } + + /// <summary> + /// Start time of this transaction on this node. + /// </summary> + DateTime StartTime + { + get; + } + + /// <summary> + /// Transaction isolation level. + /// </summary> + TransactionIsolation Isolation + { + get; + } + + /// <summary> + /// Transaction concurrency mode. + /// </summary> + TransactionConcurrency Concurrency + { + get; + } + + /// <summary> + /// Current transaction state. + /// </summary> + TransactionState State + { + get; + } + + /// <summary> + /// Timeout value in milliseconds for this transaction. If transaction times + /// out prior to it's completion, an exception will be thrown. + /// </summary> + TimeSpan Timeout + { + get; + } + + /// <summary> + /// Gets a value indicating whether this transaction was marked as rollback-only. + /// </summary> + bool IsRollbackOnly + { + get; + } + + /// <summary> + /// Modify the transaction associated with the current thread such that the + /// only possible outcome of the transaction is to roll back the transaction. + /// </summary> + /// <returns> + /// True if rollback-only flag was set as a result of this operation, + /// false if it was already set prior to this call or could not be set + /// because transaction is already finishing up committing or rolling back. + /// </returns> + bool SetRollbackonly(); + + /// <summary> + /// Commits this transaction. + /// </summary> + [AsyncSupported] + void Commit(); + + /// <summary> + /// Rolls back this transaction. + /// </summary> + [AsyncSupported] + void Rollback(); + + /// <summary> + /// Adds a new metadata. + /// </summary> + /// <param name="name">Metadata name.</param> + /// <param name="val">Metadata value.</param> + void AddMeta<TV>(string name, TV val); + + /// <summary> + /// Gets metadata by name. + /// </summary> + /// <param name="name">Metadata name.</param> + /// <returns>Metadata value.</returns> + /// <exception cref="KeyNotFoundException">If metadata key was not found.</exception> + TV Meta<TV>(string name); + + /// <summary> + /// Removes metadata by name. + /// </summary> + /// <param name="name">Metadata name.</param> + /// <returns>Value of removed metadata or default value for <code>V</code> type.</returns> + TV RemoveMeta<TV>(string name); + } +} http://git-wip-us.apache.org/repos/asf/ignite/blob/5cec202c/modules/platform/src/main/dotnet/Apache.Ignite.Core/Transactions/ITransactionMetrics.cs ---------------------------------------------------------------------- diff --git a/modules/platform/src/main/dotnet/Apache.Ignite.Core/Transactions/ITransactionMetrics.cs b/modules/platform/src/main/dotnet/Apache.Ignite.Core/Transactions/ITransactionMetrics.cs new file mode 100644 index 0000000..565dd34 --- /dev/null +++ b/modules/platform/src/main/dotnet/Apache.Ignite.Core/Transactions/ITransactionMetrics.cs @@ -0,0 +1,47 @@ +/* + * 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. + */ + +namespace Apache.Ignite.Core.Transactions +{ + using System; + + /// <summary> + /// Transaction metrics, shared across all caches. + /// </summary> + public interface ITransactionMetrics + { + /// <summary> + /// Gets the last time transaction was committed. + /// </summary> + DateTime CommitTime { get; } + + /// <summary> + /// Gets the last time transaction was rolled back. + /// </summary> + DateTime RollbackTime { get; } + + /// <summary> + /// Gets the total number of transaction commits. + /// </summary> + int TxCommits { get; } + + /// <summary> + /// Gets the total number of transaction rollbacks. + /// </summary> + int TxRollbacks { get; } + } +} \ No newline at end of file http://git-wip-us.apache.org/repos/asf/ignite/blob/5cec202c/modules/platform/src/main/dotnet/Apache.Ignite.Core/Transactions/ITransactions.cs ---------------------------------------------------------------------- diff --git a/modules/platform/src/main/dotnet/Apache.Ignite.Core/Transactions/ITransactions.cs b/modules/platform/src/main/dotnet/Apache.Ignite.Core/Transactions/ITransactions.cs new file mode 100644 index 0000000..83f12a5 --- /dev/null +++ b/modules/platform/src/main/dotnet/Apache.Ignite.Core/Transactions/ITransactions.cs @@ -0,0 +1,73 @@ +/* + * 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. + */ + +namespace Apache.Ignite.Core.Transactions +{ + using System; + + /// <summary> + /// Transactions facade. + /// <para/> + /// All members are thread-safe and may be used concurrently from multiple threads. + /// </summary> + public interface ITransactions + { + /// <summary> + /// Starts a transaction with default isolation, concurrency, timeout, and invalidation policy. + /// All defaults are set in CacheConfiguration at startup. + /// </summary> + /// <returns>New transaction.</returns> + ITransaction TxStart(); + + /// <summary> + /// Starts new transaction with the specified concurrency and isolation. + /// </summary> + /// <param name="concurrency">Concurrency.</param> + /// <param name="isolation">Isolation.</param> + /// <returns>New transaction.</returns> + ITransaction TxStart(TransactionConcurrency concurrency, TransactionIsolation isolation); + + /// <summary> + /// Starts new transaction with the specified concurrency and isolation. + /// </summary> + /// <param name="concurrency">Concurrency.</param> + /// <param name="isolation">Isolation.</param> + /// <param name="timeout">Timeout.</param> + /// <param name="txSize">Number of entries participating in transaction (may be approximate).</param> + /// <returns>New transaction.</returns> + ITransaction TxStart(TransactionConcurrency concurrency, TransactionIsolation isolation, + TimeSpan timeout, int txSize); + + /// <summary> + /// Gets transaction started by this thread or null if this thread does not have a transaction. + /// </summary> + /// <value> + /// Transaction started by this thread or null if this thread does not have a transaction. + /// </value> + ITransaction Tx { get; } + + /// <summary> + /// Gets the metrics. + /// </summary> + ITransactionMetrics GetMetrics(); + + /// <summary> + /// Resets the metrics. + /// </summary> + void ResetMetrics(); + } +} \ No newline at end of file http://git-wip-us.apache.org/repos/asf/ignite/blob/5cec202c/modules/platform/src/main/dotnet/Apache.Ignite.Core/Transactions/TransactionConcurrency.cs ---------------------------------------------------------------------- diff --git a/modules/platform/src/main/dotnet/Apache.Ignite.Core/Transactions/TransactionConcurrency.cs b/modules/platform/src/main/dotnet/Apache.Ignite.Core/Transactions/TransactionConcurrency.cs new file mode 100644 index 0000000..4025607 --- /dev/null +++ b/modules/platform/src/main/dotnet/Apache.Ignite.Core/Transactions/TransactionConcurrency.cs @@ -0,0 +1,36 @@ +/* + * 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. + */ + +namespace Apache.Ignite.Core.Transactions +{ + /// <summary> + /// Transaction concurrency control. See <see cref="ITransaction"/> for more + /// information on transaction concurrency controls. + /// </summary> + public enum TransactionConcurrency + { + /// <summary> + /// Optimistic concurrency control. + /// </summary> + Optimistic = 0, + + /// <summary> + /// Pessimistic concurrency control. + /// </summary> + Pessimistic = 1 + } +} http://git-wip-us.apache.org/repos/asf/ignite/blob/5cec202c/modules/platform/src/main/dotnet/Apache.Ignite.Core/Transactions/TransactionHeuristicException.cs ---------------------------------------------------------------------- diff --git a/modules/platform/src/main/dotnet/Apache.Ignite.Core/Transactions/TransactionHeuristicException.cs b/modules/platform/src/main/dotnet/Apache.Ignite.Core/Transactions/TransactionHeuristicException.cs new file mode 100644 index 0000000..cb46902 --- /dev/null +++ b/modules/platform/src/main/dotnet/Apache.Ignite.Core/Transactions/TransactionHeuristicException.cs @@ -0,0 +1,72 @@ +/* + * 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. + */ + +namespace Apache.Ignite.Core.Transactions +{ + using System; + using System.Runtime.Serialization; + using Apache.Ignite.Core.Common; + + /// <summary> + /// Exception thrown whenever Ignite transaction enters an unknown state. + /// This exception is usually thrown whenever commit partially succeeds. + /// Cache will still resolve this situation automatically to ensure data + /// integrity, by invalidating all values participating in this transaction + /// on remote nodes. + /// </summary> + [Serializable] + public class TransactionHeuristicException : IgniteException + { + /// <summary> + /// Initializes a new instance of the <see cref="TransactionHeuristicException"/> class. + /// </summary> + public TransactionHeuristicException() + { + // No-op. + } + + /// <summary> + /// Initializes a new instance of the <see cref="TransactionHeuristicException"/> class. + /// </summary> + /// <param name="message">The message that describes the error.</param> + public TransactionHeuristicException(string message) : base(message) + { + // No-op. + } + + /// <summary> + /// Initializes a new instance of the <see cref="TransactionHeuristicException"/> class. + /// </summary> + /// <param name="info">Serialization information.</param> + /// <param name="ctx">Streaming context.</param> + protected TransactionHeuristicException(SerializationInfo info, StreamingContext ctx) + : base(info, ctx) + { + // No-op. + } + + /// <summary> + /// Initializes a new instance of the <see cref="TransactionHeuristicException"/> class. + /// </summary> + /// <param name="message">The message.</param> + /// <param name="cause">The cause.</param> + public TransactionHeuristicException(string message, Exception cause) : base(message, cause) + { + // No-op. + } + } +} http://git-wip-us.apache.org/repos/asf/ignite/blob/5cec202c/modules/platform/src/main/dotnet/Apache.Ignite.Core/Transactions/TransactionIsolation.cs ---------------------------------------------------------------------- diff --git a/modules/platform/src/main/dotnet/Apache.Ignite.Core/Transactions/TransactionIsolation.cs b/modules/platform/src/main/dotnet/Apache.Ignite.Core/Transactions/TransactionIsolation.cs new file mode 100644 index 0000000..2a7723f --- /dev/null +++ b/modules/platform/src/main/dotnet/Apache.Ignite.Core/Transactions/TransactionIsolation.cs @@ -0,0 +1,41 @@ +/* + * 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. + */ + +namespace Apache.Ignite.Core.Transactions +{ + /// <summary> + /// Defines different cache transaction isolation levels. See <see cref="ITransaction"/> + /// documentation for more information about cache transaction isolation levels. + /// </summary> + public enum TransactionIsolation + { + /// <summary> + /// Read committed isolation level. + /// </summary> + ReadCommitted = 0, + + /// <summary> + /// Repeatable read isolation level. + /// </summary> + RepeatableRead = 1, + + /// <summary> + /// Serializable isolation level. + /// </summary> + Serializable = 2 + } +} http://git-wip-us.apache.org/repos/asf/ignite/blob/5cec202c/modules/platform/src/main/dotnet/Apache.Ignite.Core/Transactions/TransactionOptimisticException.cs ---------------------------------------------------------------------- diff --git a/modules/platform/src/main/dotnet/Apache.Ignite.Core/Transactions/TransactionOptimisticException.cs b/modules/platform/src/main/dotnet/Apache.Ignite.Core/Transactions/TransactionOptimisticException.cs new file mode 100644 index 0000000..2b64370 --- /dev/null +++ b/modules/platform/src/main/dotnet/Apache.Ignite.Core/Transactions/TransactionOptimisticException.cs @@ -0,0 +1,69 @@ +/* + * 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. + */ + +namespace Apache.Ignite.Core.Transactions +{ + using System; + using System.Runtime.Serialization; + using Apache.Ignite.Core.Common; + + /// <summary> + /// Exception thrown whenever Ignite transactions fail optimistically. + /// </summary> + [Serializable] + public class TransactionOptimisticException : IgniteException + { + /// <summary> + /// Initializes a new instance of the <see cref="TransactionOptimisticException"/> class. + /// </summary> + public TransactionOptimisticException() + { + // No-op. + } + + /// <summary> + /// Initializes a new instance of the <see cref="TransactionOptimisticException"/> class. + /// </summary> + /// <param name="message">The message that describes the error.</param> + public TransactionOptimisticException(string message) : base(message) + { + // No-op. + } + + /// <summary> + /// Initializes a new instance of the <see cref="TransactionOptimisticException"/> class. + /// </summary> + /// <param name="message">The message.</param> + /// <param name="cause">The cause.</param> + public TransactionOptimisticException(string message, Exception cause) + : base(message, cause) + { + // No-op. + } + + /// <summary> + /// Initializes a new instance of the <see cref="TransactionOptimisticException"/> class. + /// </summary> + /// <param name="info">Serialization information.</param> + /// <param name="ctx">Streaming context.</param> + protected TransactionOptimisticException(SerializationInfo info, StreamingContext ctx) + : base(info, ctx) + { + // No-op. + } + } +} http://git-wip-us.apache.org/repos/asf/ignite/blob/5cec202c/modules/platform/src/main/dotnet/Apache.Ignite.Core/Transactions/TransactionRollbackException.cs ---------------------------------------------------------------------- diff --git a/modules/platform/src/main/dotnet/Apache.Ignite.Core/Transactions/TransactionRollbackException.cs b/modules/platform/src/main/dotnet/Apache.Ignite.Core/Transactions/TransactionRollbackException.cs new file mode 100644 index 0000000..c1f25c8 --- /dev/null +++ b/modules/platform/src/main/dotnet/Apache.Ignite.Core/Transactions/TransactionRollbackException.cs @@ -0,0 +1,68 @@ +/* + * 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. + */ + +namespace Apache.Ignite.Core.Transactions +{ + using System; + using System.Runtime.Serialization; + using Apache.Ignite.Core.Common; + + /// <summary> + /// Exception thrown whenever Ignite transactions has been automatically rolled back. + /// </summary> + [Serializable] + public class TransactionRollbackException : IgniteException + { + /// <summary> + /// Initializes a new instance of the <see cref="TransactionRollbackException"/> class. + /// </summary> + public TransactionRollbackException() + { + // No-op. + } + + /// <summary> + /// Initializes a new instance of the <see cref="TransactionRollbackException"/> class. + /// </summary> + /// <param name="message">The message that describes the error.</param> + public TransactionRollbackException(string message) : base(message) + { + // No-op. + } + + /// <summary> + /// Initializes a new instance of the <see cref="TransactionRollbackException"/> class. + /// </summary> + /// <param name="info">Serialization information.</param> + /// <param name="ctx">Streaming context.</param> + protected TransactionRollbackException(SerializationInfo info, StreamingContext ctx) + : base(info, ctx) + { + // No-op. + } + + /// <summary> + /// Initializes a new instance of the <see cref="TransactionRollbackException"/> class. + /// </summary> + /// <param name="message">The message.</param> + /// <param name="cause">The cause.</param> + public TransactionRollbackException(string message, Exception cause) : base(message, cause) + { + // No-op. + } + } +} http://git-wip-us.apache.org/repos/asf/ignite/blob/5cec202c/modules/platform/src/main/dotnet/Apache.Ignite.Core/Transactions/TransactionState.cs ---------------------------------------------------------------------- diff --git a/modules/platform/src/main/dotnet/Apache.Ignite.Core/Transactions/TransactionState.cs b/modules/platform/src/main/dotnet/Apache.Ignite.Core/Transactions/TransactionState.cs new file mode 100644 index 0000000..eecf72b --- /dev/null +++ b/modules/platform/src/main/dotnet/Apache.Ignite.Core/Transactions/TransactionState.cs @@ -0,0 +1,70 @@ +/* + * 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. + */ + +namespace Apache.Ignite.Core.Transactions +{ + /// <summary> + /// Cache transaction state. + /// </summary> + public enum TransactionState + { + /// <summary> + /// Transaction started. + /// </summary> + Active, + + /// <summary> + /// Transaction validating. + /// </summary> + Preparing, + + /// <summary> + /// Transaction validation succeeded. + /// </summary> + Prepared, + + /// <summary> + /// Transaction is marked for rollback. + /// </summary> + MarkedRollback, + + /// <summary> + /// Transaction commit started (validating finished). + /// </summary> + Committing, + + /// <summary> + /// Transaction commit succeeded. + /// </summary> + Committed, + + /// <summary> + /// Transaction rollback started (validation failed). + /// </summary> + RollingBack, + + /// <summary> + /// Transaction rollback succeeded. + /// </summary> + RolledBack, + + /// <summary> + /// Transaction rollback failed or is otherwise unknown state. + /// </summary> + Unknown + } +} http://git-wip-us.apache.org/repos/asf/ignite/blob/5cec202c/modules/platform/src/main/dotnet/Apache.Ignite.Core/Transactions/TransactionTimeoutException.cs ---------------------------------------------------------------------- diff --git a/modules/platform/src/main/dotnet/Apache.Ignite.Core/Transactions/TransactionTimeoutException.cs b/modules/platform/src/main/dotnet/Apache.Ignite.Core/Transactions/TransactionTimeoutException.cs new file mode 100644 index 0000000..f1e492a --- /dev/null +++ b/modules/platform/src/main/dotnet/Apache.Ignite.Core/Transactions/TransactionTimeoutException.cs @@ -0,0 +1,69 @@ +/* + * 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. + */ + +namespace Apache.Ignite.Core.Transactions +{ + using System; + using System.Runtime.Serialization; + using Apache.Ignite.Core.Common; + + /// <summary> + /// Exception thrown whenever Ignite transactions time out. + /// </summary> + [Serializable] + public class TransactionTimeoutException : IgniteException + { + /// <summary> + /// Initializes a new instance of the <see cref="TransactionTimeoutException"/> class. + /// </summary> + public TransactionTimeoutException() + { + // No-op. + } + + /// <summary> + /// Initializes a new instance of the <see cref="TransactionTimeoutException"/> class. + /// </summary> + /// <param name="message">The message that describes the error.</param> + public TransactionTimeoutException(string message) + : base(message) + { + // No-op. + } + + /// <summary> + /// Initializes a new instance of the <see cref="TransactionTimeoutException"/> class. + /// </summary> + /// <param name="info">Serialization information.</param> + /// <param name="ctx">Streaming context.</param> + protected TransactionTimeoutException(SerializationInfo info, StreamingContext ctx) + : base(info, ctx) + { + // No-op. + } + + /// <summary> + /// Initializes a new instance of the <see cref="TransactionTimeoutException"/> class. + /// </summary> + /// <param name="message">The message.</param> + /// <param name="cause">The cause.</param> + public TransactionTimeoutException(string message, Exception cause) : base(message, cause) + { + // No-op. + } + } +} http://git-wip-us.apache.org/repos/asf/ignite/blob/5cec202c/modules/platform/src/main/dotnet/Apache.Ignite.sln ---------------------------------------------------------------------- diff --git a/modules/platform/src/main/dotnet/Apache.Ignite.sln b/modules/platform/src/main/dotnet/Apache.Ignite.sln index 91bd2b6..11fc4ce 100644 --- a/modules/platform/src/main/dotnet/Apache.Ignite.sln +++ b/modules/platform/src/main/dotnet/Apache.Ignite.sln @@ -1,9 +1,16 @@ -Microsoft Visual Studio Solution File, Format Version 11.00 -# Visual Studio 2010 + +Microsoft Visual Studio Solution File, Format Version 12.00 +# Visual Studio 2013 +VisualStudioVersion = 12.0.31101.0 +MinimumVisualStudioVersion = 10.0.40219.1 Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Apache.Ignite.Core", "Apache.Ignite.Core\Apache.Ignite.Core.csproj", "{4CD2F726-7E2B-46C4-A5BA-057BB82EECB6}" EndProject Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Apache.Ignite.Core.Tests", "..\..\test\dotnet\Apache.Ignite.Core.Tests\Apache.Ignite.Core.Tests.csproj", "{6A62F66C-DA5B-4FBB-8CE7-A95F740FDC7A}" EndProject +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "common", "..\cpp\common\project\vs\common.vcxproj", "{4F7E4917-4612-4B96-9838-025711ADE391}" +EndProject +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Apache.Ignite.Core.Tests.TestDll", "..\..\test\dotnet\Apache.Ignite.Core.Tests.TestDll\Apache.Ignite.Core.Tests.TestDll.csproj", "{F4A69E2D-908E-4F0F-A794-84D508D60E5F}" +EndProject Global GlobalSection(SolutionConfigurationPlatforms) = preSolution Debug|x64 = Debug|x64 @@ -28,6 +35,22 @@ Global {6A62F66C-DA5B-4FBB-8CE7-A95F740FDC7A}.Release|x64.Build.0 = Release|x64 {6A62F66C-DA5B-4FBB-8CE7-A95F740FDC7A}.Release|x86.ActiveCfg = Release|x86 {6A62F66C-DA5B-4FBB-8CE7-A95F740FDC7A}.Release|x86.Build.0 = Release|x86 + {4F7E4917-4612-4B96-9838-025711ADE391}.Debug|x64.ActiveCfg = Debug|x64 + {4F7E4917-4612-4B96-9838-025711ADE391}.Debug|x64.Build.0 = Debug|x64 + {4F7E4917-4612-4B96-9838-025711ADE391}.Debug|x86.ActiveCfg = Debug|Win32 + {4F7E4917-4612-4B96-9838-025711ADE391}.Debug|x86.Build.0 = Debug|Win32 + {4F7E4917-4612-4B96-9838-025711ADE391}.Release|x64.ActiveCfg = Release|x64 + {4F7E4917-4612-4B96-9838-025711ADE391}.Release|x64.Build.0 = Release|x64 + {4F7E4917-4612-4B96-9838-025711ADE391}.Release|x86.ActiveCfg = Release|Win32 + {4F7E4917-4612-4B96-9838-025711ADE391}.Release|x86.Build.0 = Release|Win32 + {F4A69E2D-908E-4F0F-A794-84D508D60E5F}.Debug|x64.ActiveCfg = Debug|x64 + {F4A69E2D-908E-4F0F-A794-84D508D60E5F}.Debug|x64.Build.0 = Debug|x64 + {F4A69E2D-908E-4F0F-A794-84D508D60E5F}.Debug|x86.ActiveCfg = Debug|x86 + {F4A69E2D-908E-4F0F-A794-84D508D60E5F}.Debug|x86.Build.0 = Debug|x86 + {F4A69E2D-908E-4F0F-A794-84D508D60E5F}.Release|x64.ActiveCfg = Release|x64 + {F4A69E2D-908E-4F0F-A794-84D508D60E5F}.Release|x64.Build.0 = Release|x64 + {F4A69E2D-908E-4F0F-A794-84D508D60E5F}.Release|x86.ActiveCfg = Release|x86 + {F4A69E2D-908E-4F0F-A794-84D508D60E5F}.Release|x86.Build.0 = Release|x86 EndGlobalSection GlobalSection(SolutionProperties) = preSolution HideSolutionNode = FALSE http://git-wip-us.apache.org/repos/asf/ignite/blob/5cec202c/modules/platform/src/main/java/org/apache/ignite/platform/dotnet/PlatformDotNetConfiguration.java ---------------------------------------------------------------------- diff --git a/modules/platform/src/main/java/org/apache/ignite/platform/dotnet/PlatformDotNetConfiguration.java b/modules/platform/src/main/java/org/apache/ignite/platform/dotnet/PlatformDotNetConfiguration.java deleted file mode 100644 index 80f4b26..0000000 --- a/modules/platform/src/main/java/org/apache/ignite/platform/dotnet/PlatformDotNetConfiguration.java +++ /dev/null @@ -1,119 +0,0 @@ -/* - * 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.ignite.platform.dotnet; - -import org.apache.ignite.configuration.PlatformConfiguration; -import org.apache.ignite.internal.util.typedef.internal.S; -import org.apache.ignite.portable.PortableException; -import org.apache.ignite.portable.PortableMarshalAware; -import org.apache.ignite.portable.PortableRawReader; -import org.apache.ignite.portable.PortableRawWriter; -import org.apache.ignite.portable.PortableReader; -import org.apache.ignite.portable.PortableWriter; - -import java.util.ArrayList; -import java.util.List; - -/** - * Mirror of .Net class Configuration.cs - */ -public class PlatformDotNetConfiguration implements PlatformConfiguration, PortableMarshalAware { - /** */ - private PlatformDotNetPortableConfiguration portableCfg; - - /** */ - private List<String> assemblies; - - /** - * Default constructor. - */ - public PlatformDotNetConfiguration() { - // No-op. - } - - /** - * Copy constructor. - * - * @param cfg Configuration to copy. - */ - public PlatformDotNetConfiguration(PlatformDotNetConfiguration cfg) { - if (cfg.getPortableConfiguration() != null) - portableCfg = new PlatformDotNetPortableConfiguration(cfg.getPortableConfiguration()); - - if (cfg.getAssemblies() != null) - assemblies = new ArrayList<>(cfg.getAssemblies()); - } - - /** - * @return Configuration. - */ - public PlatformDotNetPortableConfiguration getPortableConfiguration() { - return portableCfg; - } - - /** - * @param portableCfg Configuration. - */ - public void setPortableConfiguration(PlatformDotNetPortableConfiguration portableCfg) { - this.portableCfg = portableCfg; - } - - /** - * @return Assemblies. - */ - public List<String> getAssemblies() { - return assemblies; - } - - /** - * - * @param assemblies Assemblies. - */ - public void setAssemblies(List<String> assemblies) { - this.assemblies = assemblies; - } - - /** - * @return Configuration copy. - */ - @SuppressWarnings("UnusedDeclaration") - private PlatformDotNetConfiguration copy() { - return new PlatformDotNetConfiguration(this); - } - - /** {@inheritDoc} */ - @Override public void writePortable(PortableWriter writer) throws PortableException { - PortableRawWriter rawWriter = writer.rawWriter(); - - rawWriter.writeObject(portableCfg); - rawWriter.writeCollection(assemblies); - } - - /** {@inheritDoc} */ - @Override public void readPortable(PortableReader reader) throws PortableException { - PortableRawReader rawReader = reader.rawReader(); - - portableCfg = rawReader.readObject(); - assemblies = (List<String>)rawReader.<String>readCollection(); - } - - /** {@inheritDoc} */ - @Override public String toString() { - return S.toString(PlatformDotNetConfiguration.class, this); - } -} \ No newline at end of file http://git-wip-us.apache.org/repos/asf/ignite/blob/5cec202c/modules/platform/src/main/java/org/apache/ignite/platform/dotnet/PlatformDotNetPortableConfiguration.java ---------------------------------------------------------------------- diff --git a/modules/platform/src/main/java/org/apache/ignite/platform/dotnet/PlatformDotNetPortableConfiguration.java b/modules/platform/src/main/java/org/apache/ignite/platform/dotnet/PlatformDotNetPortableConfiguration.java deleted file mode 100644 index 644a8e6..0000000 --- a/modules/platform/src/main/java/org/apache/ignite/platform/dotnet/PlatformDotNetPortableConfiguration.java +++ /dev/null @@ -1,228 +0,0 @@ -/* - * 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.ignite.platform.dotnet; - -import org.apache.ignite.internal.util.typedef.internal.S; -import org.apache.ignite.portable.PortableException; -import org.apache.ignite.portable.PortableMarshalAware; -import org.apache.ignite.portable.PortableRawReader; -import org.apache.ignite.portable.PortableRawWriter; -import org.apache.ignite.portable.PortableReader; -import org.apache.ignite.portable.PortableWriter; - -import java.util.ArrayList; -import java.util.Collection; - -/** - * Mirror of .Net class PortableConfiguration.cs - */ -public class PlatformDotNetPortableConfiguration implements PortableMarshalAware { - /** Type cfgs. */ - private Collection<PlatformDotNetPortableTypeConfiguration> typesCfg; - - /** Types. */ - private Collection<String> types; - - /** Default name mapper. */ - private String dfltNameMapper; - - /** Default id mapper. */ - private String dfltIdMapper; - - /** Default serializer. */ - private String dfltSerializer; - - /** Default metadata enabled. */ - private boolean dfltMetadataEnabled = true; - - /** Whether to cache deserialized value in IGridPortableObject */ - private boolean dfltKeepDeserialized = true; - - /** - * Default constructor. - */ - public PlatformDotNetPortableConfiguration() { - // No-op. - } - - /** - * Copy constructor. - * @param cfg configuration to copy. - */ - public PlatformDotNetPortableConfiguration(PlatformDotNetPortableConfiguration cfg) { - if (cfg.getTypesConfiguration() != null) { - typesCfg = new ArrayList<>(); - - for (PlatformDotNetPortableTypeConfiguration typeCfg : cfg.getTypesConfiguration()) - typesCfg.add(new PlatformDotNetPortableTypeConfiguration(typeCfg)); - } - - if (cfg.getTypes() != null) - types = new ArrayList<>(cfg.getTypes()); - - dfltNameMapper = cfg.getDefaultNameMapper(); - dfltIdMapper = cfg.getDefaultIdMapper(); - dfltSerializer = cfg.getDefaultSerializer(); - dfltMetadataEnabled = cfg.isDefaultMetadataEnabled(); - dfltKeepDeserialized = cfg.isDefaultKeepDeserialized(); - } - - /** - * @return Type cfgs. - */ - public Collection<PlatformDotNetPortableTypeConfiguration> getTypesConfiguration() { - return typesCfg; - } - - /** - * @param typesCfg New type cfgs. - */ - public void setTypesConfiguration(Collection<PlatformDotNetPortableTypeConfiguration> typesCfg) { - this.typesCfg = typesCfg; - } - - /** - * @return Types. - */ - public Collection<String> getTypes() { - return types; - } - - /** - * @param types New types. - */ - public void setTypes(Collection<String> types) { - this.types = types; - } - - /** - * @return Default name mapper. - */ - public String getDefaultNameMapper() { - return dfltNameMapper; - } - - /** - * @param dfltNameMapper New default name mapper. - */ - public void setDefaultNameMapper(String dfltNameMapper) { - this.dfltNameMapper = dfltNameMapper; - } - - /** - * @return Default id mapper. - */ - public String getDefaultIdMapper() { - return dfltIdMapper; - } - - /** - * @param dfltIdMapper New default id mapper. - */ - public void setDefaultIdMapper(String dfltIdMapper) { - this.dfltIdMapper = dfltIdMapper; - } - - /** - * @return Default serializer. - */ - public String getDefaultSerializer() { - return dfltSerializer; - } - - /** - * @param dfltSerializer New default serializer. - */ - public void setDefaultSerializer(String dfltSerializer) { - this.dfltSerializer = dfltSerializer; - } - - /** - * Gets default metadata enabled flag. See {@link #setDefaultMetadataEnabled(boolean)} for more information. - * - * @return Default metadata enabled flag. - */ - public boolean isDefaultMetadataEnabled() { - return dfltMetadataEnabled; - } - - /** - * Sets default metadata enabled flag. When set to {@code true} all portable types will save it's metadata to - * cluster. - * <p /> - * Can be overridden for particular type using - * {@link PlatformDotNetPortableTypeConfiguration#setMetadataEnabled(Boolean)}. - * - * @param dfltMetadataEnabled Default metadata enabled flag. - */ - public void setDefaultMetadataEnabled(boolean dfltMetadataEnabled) { - this.dfltMetadataEnabled = dfltMetadataEnabled; - } - - /** - * Gets default keep deserialized flag. See {@link #setDefaultKeepDeserialized(boolean)} for more information. - * - * @return Flag indicates whether to cache deserialized value in IGridPortableObject. - */ - public boolean isDefaultKeepDeserialized() { - return dfltKeepDeserialized; - } - - /** - * Sets default keep deserialized flag. - * <p /> - * Can be overridden for particular type using - * {@link PlatformDotNetPortableTypeConfiguration#setKeepDeserialized(Boolean)}. - * - * @param keepDeserialized Keep deserialized flag. - */ - public void setDefaultKeepDeserialized(boolean keepDeserialized) { - this.dfltKeepDeserialized = keepDeserialized; - } - - /** {@inheritDoc} */ - @Override public void writePortable(PortableWriter writer) throws PortableException { - PortableRawWriter rawWriter = writer.rawWriter(); - - rawWriter.writeCollection(typesCfg); - rawWriter.writeCollection(types); - rawWriter.writeString(dfltNameMapper); - rawWriter.writeString(dfltIdMapper); - rawWriter.writeString(dfltSerializer); - rawWriter.writeBoolean(dfltMetadataEnabled); - rawWriter.writeBoolean(dfltKeepDeserialized); - } - - /** {@inheritDoc} */ - @Override public void readPortable(PortableReader reader) throws PortableException { - PortableRawReader rawReader = reader.rawReader(); - - typesCfg = rawReader.readCollection(); - types = rawReader.readCollection(); - dfltNameMapper = rawReader.readString(); - dfltIdMapper = rawReader.readString(); - dfltSerializer = rawReader.readString(); - dfltMetadataEnabled = rawReader.readBoolean(); - dfltKeepDeserialized = rawReader.readBoolean(); - } - - /** {@inheritDoc} */ - @Override public String toString() { - return S.toString(PlatformDotNetPortableConfiguration.class, this); - } -} \ No newline at end of file http://git-wip-us.apache.org/repos/asf/ignite/blob/5cec202c/modules/platform/src/main/java/org/apache/ignite/platform/dotnet/PlatformDotNetPortableTypeConfiguration.java ---------------------------------------------------------------------- diff --git a/modules/platform/src/main/java/org/apache/ignite/platform/dotnet/PlatformDotNetPortableTypeConfiguration.java b/modules/platform/src/main/java/org/apache/ignite/platform/dotnet/PlatformDotNetPortableTypeConfiguration.java deleted file mode 100644 index b6fdbde..0000000 --- a/modules/platform/src/main/java/org/apache/ignite/platform/dotnet/PlatformDotNetPortableTypeConfiguration.java +++ /dev/null @@ -1,248 +0,0 @@ -/* - * 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.ignite.platform.dotnet; - -import org.apache.ignite.internal.util.typedef.internal.S; -import org.apache.ignite.portable.PortableException; -import org.apache.ignite.portable.PortableMarshalAware; -import org.apache.ignite.portable.PortableRawReader; -import org.apache.ignite.portable.PortableRawWriter; -import org.apache.ignite.portable.PortableReader; -import org.apache.ignite.portable.PortableWriter; -import org.jetbrains.annotations.Nullable; - -/** - * Mirror of .Net class GridDotNetPortableTypeConfiguration.cs - */ -public class PlatformDotNetPortableTypeConfiguration implements PortableMarshalAware { - /** Assembly name. */ - private String assemblyName; - - /** Type name. */ - private String typeName; - - /** Name mapper. */ - private String nameMapper; - - /** Id mapper. */ - private String idMapper; - - /** Serializer. */ - private String serializer; - - /** Affinity key field name. */ - private String affinityKeyFieldName; - - /** Metadata enabled. */ - private Boolean metadataEnabled; - - /** Whether to cache deserialized value in IGridPortableObject. */ - private Boolean keepDeserialized; - - /** - * Default constructor. - */ - public PlatformDotNetPortableTypeConfiguration() { - // No-op. - } - - /** - * Copy constructor. - * @param cfg configuration to copy. - */ - public PlatformDotNetPortableTypeConfiguration(PlatformDotNetPortableTypeConfiguration cfg) { - assemblyName = cfg.getAssemblyName(); - typeName = cfg.getTypeName(); - nameMapper = cfg.getNameMapper(); - idMapper = cfg.getIdMapper(); - serializer = cfg.getSerializer(); - affinityKeyFieldName = cfg.getAffinityKeyFieldName(); - metadataEnabled = cfg.getMetadataEnabled(); - keepDeserialized = cfg.isKeepDeserialized(); - } - - /** - * @return Assembly name. - */ - public String getAssemblyName() { - return assemblyName; - } - - /** - * @param assemblyName New assembly name. - */ - public void setAssemblyName(String assemblyName) { - this.assemblyName = assemblyName; - } - - /** - * @return Type name. - */ - public String getTypeName() { - return typeName; - } - - /** - * @param typeName New type name. - */ - public void setTypeName(String typeName) { - this.typeName = typeName; - } - - /** - * @return Name mapper. - */ - public String getNameMapper() { - return nameMapper; - } - - /** - * @param nameMapper New name mapper. - */ - public void setNameMapper(String nameMapper) { - this.nameMapper = nameMapper; - } - - /** - * @return Id mapper. - */ - public String getIdMapper() { - return idMapper; - } - - /** - * @param idMapper New id mapper. - */ - public void setIdMapper(String idMapper) { - this.idMapper = idMapper; - } - - /** - * @return Serializer. - */ - public String getSerializer() { - return serializer; - } - - /** - * @param serializer New serializer. - */ - public void setSerializer(String serializer) { - this.serializer = serializer; - } - - /** - * Gets metadata enabled flag. See {@link #setMetadataEnabled(Boolean)} for more information. - * - * @return Metadata enabled flag. - */ - public Boolean getMetadataEnabled() { - return metadataEnabled; - } - - /** - * Sets metadata enabled flag. - * <p /> - * When set to {@code null} default value taken from - * {@link PlatformDotNetPortableConfiguration#isDefaultMetadataEnabled()} will be used. - * - * @param metadataEnabled New metadata enabled. - */ - public void setMetadataEnabled(Boolean metadataEnabled) { - this.metadataEnabled = metadataEnabled; - } - - /** - * @return Affinity key field name. - */ - public String getAffinityKeyFieldName() { - return affinityKeyFieldName; - } - - /** - * @param affinityKeyFieldName Affinity key field name. - */ - public void setAffinityKeyFieldName(String affinityKeyFieldName) { - this.affinityKeyFieldName = affinityKeyFieldName; - } - - /** - * Gets keep deserialized flag. - * - * @return Flag indicates whether to cache deserialized value in IGridPortableObject. - * @deprecated Use {@link #getKeepDeserialized()} instead. - */ - @Deprecated - @Nullable public Boolean isKeepDeserialized() { - return keepDeserialized; - } - - /** - * Gets keep deserialized flag. See {@link #setKeepDeserialized(Boolean)} for more information. - * - * @return Flag indicates whether to cache deserialized value in IGridPortableObject. - */ - @Nullable public Boolean getKeepDeserialized() { - return keepDeserialized; - } - - /** - * Sets keep deserialized flag. - * <p /> - * When set to {@code null} default value taken from - * {@link PlatformDotNetPortableConfiguration#isDefaultKeepDeserialized()} will be used. - * - * @param keepDeserialized Keep deserialized flag. - */ - public void setKeepDeserialized(@Nullable Boolean keepDeserialized) { - this.keepDeserialized = keepDeserialized; - } - - /** {@inheritDoc} */ - @Override public void writePortable(PortableWriter writer) throws PortableException { - PortableRawWriter rawWriter = writer.rawWriter(); - - rawWriter.writeString(assemblyName); - rawWriter.writeString(typeName); - rawWriter.writeString(nameMapper); - rawWriter.writeString(idMapper); - rawWriter.writeString(serializer); - rawWriter.writeString(affinityKeyFieldName); - rawWriter.writeObject(metadataEnabled); - rawWriter.writeObject(keepDeserialized); - } - - /** {@inheritDoc} */ - @Override public void readPortable(PortableReader reader) throws PortableException { - PortableRawReader rawReader = reader.rawReader(); - - assemblyName = rawReader.readString(); - typeName = rawReader.readString(); - nameMapper = rawReader.readString(); - idMapper = rawReader.readString(); - serializer = rawReader.readString(); - affinityKeyFieldName = rawReader.readString(); - metadataEnabled = rawReader.readObject(); - keepDeserialized = rawReader.readObject(); - } - - /** {@inheritDoc} */ - @Override public String toString() { - return S.toString(PlatformDotNetPortableTypeConfiguration.class, this); - } -} http://git-wip-us.apache.org/repos/asf/ignite/blob/5cec202c/modules/platform/src/test/dotnet/Apache.Ignite.Core.Tests.TestDll/Apache.Ignite.Core.Tests.TestDll.csproj ---------------------------------------------------------------------- diff --git a/modules/platform/src/test/dotnet/Apache.Ignite.Core.Tests.TestDll/Apache.Ignite.Core.Tests.TestDll.csproj b/modules/platform/src/test/dotnet/Apache.Ignite.Core.Tests.TestDll/Apache.Ignite.Core.Tests.TestDll.csproj new file mode 100644 index 0000000..f213b34 --- /dev/null +++ b/modules/platform/src/test/dotnet/Apache.Ignite.Core.Tests.TestDll/Apache.Ignite.Core.Tests.TestDll.csproj @@ -0,0 +1,52 @@ +<?xml version="1.0" encoding="utf-8"?> +<Project ToolsVersion="12.0" DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003"> + <Import Project="$(MSBuildExtensionsPath)\$(MSBuildToolsVersion)\Microsoft.Common.props" Condition="Exists('$(MSBuildExtensionsPath)\$(MSBuildToolsVersion)\Microsoft.Common.props')" /> + <PropertyGroup> + <Configuration Condition=" '$(Configuration)' == '' ">Debug</Configuration> + <Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform> + <ProjectGuid>{F4A69E2D-908E-4F0F-A794-84D508D60E5F}</ProjectGuid> + <OutputType>Library</OutputType> + <AppDesignerFolder>Properties</AppDesignerFolder> + <RootNamespace>Apache.Ignite.Core.Tests.TestDll</RootNamespace> + <AssemblyName>Apache.Ignite.Core.Tests.TestDll</AssemblyName> + <TargetFrameworkVersion>v4.0</TargetFrameworkVersion> + <FileAlignment>512</FileAlignment> + </PropertyGroup> + <PropertyGroup Condition="'$(Configuration)|$(Platform)' == 'Debug|x86'"> + <PlatformTarget>x86</PlatformTarget> + <OutputPath>bin\x86\Debug\</OutputPath> + </PropertyGroup> + <PropertyGroup Condition="'$(Configuration)|$(Platform)' == 'Release|x86'"> + <PlatformTarget>x86</PlatformTarget> + <OutputPath>bin\x86\Release\</OutputPath> + </PropertyGroup> + <PropertyGroup Condition="'$(Configuration)|$(Platform)' == 'Debug|x64'"> + <PlatformTarget>x64</PlatformTarget> + <OutputPath>bin\x64\Debug\</OutputPath> + </PropertyGroup> + <PropertyGroup Condition="'$(Configuration)|$(Platform)' == 'Release|x64'"> + <PlatformTarget>x64</PlatformTarget> + <OutputPath>bin\x64\Release\</OutputPath> + </PropertyGroup> + <ItemGroup> + <Reference Include="System" /> + <Reference Include="System.Core" /> + <Reference Include="System.Xml.Linq" /> + <Reference Include="System.Data.DataSetExtensions" /> + <Reference Include="Microsoft.CSharp" /> + <Reference Include="System.Data" /> + <Reference Include="System.Xml" /> + </ItemGroup> + <ItemGroup> + <Compile Include="Properties\AssemblyInfo.cs" /> + <Compile Include="TestClass.cs" /> + </ItemGroup> + <Import Project="$(MSBuildToolsPath)\Microsoft.CSharp.targets" /> + <!-- To modify your build process, add your task inside one of the targets below and uncomment it. + Other similar extension points exist, see Microsoft.Common.targets. + <Target Name="BeforeBuild"> + </Target> + <Target Name="AfterBuild"> + </Target> + --> +</Project> \ No newline at end of file http://git-wip-us.apache.org/repos/asf/ignite/blob/5cec202c/modules/platform/src/test/dotnet/Apache.Ignite.Core.Tests.TestDll/Properties/AssemblyInfo.cs ---------------------------------------------------------------------- diff --git a/modules/platform/src/test/dotnet/Apache.Ignite.Core.Tests.TestDll/Properties/AssemblyInfo.cs b/modules/platform/src/test/dotnet/Apache.Ignite.Core.Tests.TestDll/Properties/AssemblyInfo.cs new file mode 100644 index 0000000..2401c25 --- /dev/null +++ b/modules/platform/src/test/dotnet/Apache.Ignite.Core.Tests.TestDll/Properties/AssemblyInfo.cs @@ -0,0 +1,49 @@ +/* + * 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. + */ + +using System.Reflection; +using System.Runtime.InteropServices; + +[assembly: AssemblyTitle("Apache.Ignite.Core.Tests.TestDll")] +[assembly: AssemblyDescription("Apache Ignite .NET Core Tests Testing Library")] +[assembly: AssemblyConfiguration("")] +[assembly: AssemblyCompany("Apache Software Foundation")] +[assembly: AssemblyProduct("Apache.Ignite.Core.Tests.TestDll")] +[assembly: AssemblyCopyright("Copyright © 2015")] +[assembly: AssemblyTrademark("")] +[assembly: AssemblyCulture("")] + +// Setting ComVisible to false makes the types in this assembly not visible +// to COM components. If you need to access a type in this assembly from +// COM, set the ComVisible attribute to true on that type. +[assembly: ComVisible(false)] + +// The following GUID is for the ID of the typelib if this project is exposed to COM +[assembly: Guid("086e5873-013b-4ffb-93d2-d67881f75bc2")] + +// Version information for an assembly consists of the following four values: +// +// Major Version +// Minor Version +// Build Number +// Revision +// +// You can specify all the values or you can default the Build and Revision Numbers +// by using the '*' as shown below: +// [assembly: AssemblyVersion("1.0.*")] +[assembly: AssemblyVersion("1.0.0.0")] +[assembly: AssemblyFileVersion("1.0.0.0")] http://git-wip-us.apache.org/repos/asf/ignite/blob/5cec202c/modules/platform/src/test/dotnet/Apache.Ignite.Core.Tests.TestDll/TestClass.cs ---------------------------------------------------------------------- diff --git a/modules/platform/src/test/dotnet/Apache.Ignite.Core.Tests.TestDll/TestClass.cs b/modules/platform/src/test/dotnet/Apache.Ignite.Core.Tests.TestDll/TestClass.cs new file mode 100644 index 0000000..1199f2c --- /dev/null +++ b/modules/platform/src/test/dotnet/Apache.Ignite.Core.Tests.TestDll/TestClass.cs @@ -0,0 +1,35 @@ +/* + * 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. + */ + +namespace Apache.Ignite.Core.Tests.TestDll +{ + /// <summary> + /// Test class. + /// </summary> + public class TestClass + { + /// <summary> + /// Gets or sets the Id. + /// </summary> + public int Id { get; set; } + + /// <summary> + /// Gets or sets the Name. + /// </summary> + public string Name { get; set; } + } +} http://git-wip-us.apache.org/repos/asf/ignite/blob/5cec202c/modules/platform/src/test/dotnet/Apache.Ignite.Core.Tests/Apache.Ignite.Core.Tests.csproj ---------------------------------------------------------------------- diff --git a/modules/platform/src/test/dotnet/Apache.Ignite.Core.Tests/Apache.Ignite.Core.Tests.csproj b/modules/platform/src/test/dotnet/Apache.Ignite.Core.Tests/Apache.Ignite.Core.Tests.csproj index 418f467..62440a1 100644 --- a/modules/platform/src/test/dotnet/Apache.Ignite.Core.Tests/Apache.Ignite.Core.Tests.csproj +++ b/modules/platform/src/test/dotnet/Apache.Ignite.Core.Tests/Apache.Ignite.Core.Tests.csproj @@ -18,20 +18,27 @@ <PropertyGroup Condition="'$(Configuration)|$(Platform)' == 'Debug|x64'"> <PlatformTarget>x64</PlatformTarget> <OutputPath>bin\x64\Debug\</OutputPath> + <AllowUnsafeBlocks>true</AllowUnsafeBlocks> + <DefineConstants>DEBUG</DefineConstants> </PropertyGroup> <PropertyGroup Condition="'$(Configuration)|$(Platform)' == 'Release|x64'"> <PlatformTarget>x64</PlatformTarget> <OutputPath>bin\x64\Release\</OutputPath> + <AllowUnsafeBlocks>true</AllowUnsafeBlocks> </PropertyGroup> <PropertyGroup Condition="'$(Configuration)|$(Platform)' == 'Debug|x86'"> <PlatformTarget>x86</PlatformTarget> <OutputPath>bin\x86\Debug\</OutputPath> + <AllowUnsafeBlocks>true</AllowUnsafeBlocks> + <DefineConstants>DEBUG</DefineConstants> </PropertyGroup> <PropertyGroup Condition="'$(Configuration)|$(Platform)' == 'Release|x86'"> <PlatformTarget>x86</PlatformTarget> <OutputPath>bin\x86\Release\</OutputPath> + <AllowUnsafeBlocks>true</AllowUnsafeBlocks> </PropertyGroup> <ItemGroup> + <Reference Include="Microsoft.CSharp" /> <Reference Include="nunit-console-runner"> <HintPath>..\libs\nunit-console-runner.dll</HintPath> </Reference> @@ -41,18 +48,174 @@ </Reference> <Reference Include="System" /> <Reference Include="System.Core" /> + <Reference Include="System.Runtime.Serialization" /> + <Reference Include="System.XML" /> </ItemGroup> <ItemGroup> - <Compile Include="IgnitionTest.cs" /> + <Compile Include="Cache\CacheDynamicStartTest.cs" /> + <Compile Include="Cache\CacheTestAsyncWrapper.cs" /> + <Compile Include="Cache\CacheAbstractTest.cs" /> + <Compile Include="Cache\CacheAffinityTest.cs" /> + <Compile Include="Cache\CacheEntryTest.cs" /> + <Compile Include="Cache\CacheForkedTest.cs" /> + <Compile Include="Cache\CacheLocalAtomicTest.cs" /> + <Compile Include="Cache\CacheLocalTest.cs" /> + <Compile Include="Cache\CachePartitionedAtomicNearEnabledTest.cs" /> + <Compile Include="Cache\CachePartitionedAtomicTest.cs" /> + <Compile Include="Cache\CachePartitionedNearEnabledTest.cs" /> + <Compile Include="Cache\CachePartitionedTest.cs" /> + <Compile Include="Cache\CacheReplicatedAtomicTest.cs" /> + <Compile Include="Cache\CacheReplicatedTest.cs" /> + <Compile Include="Cache\Query\Continuous\ContinuousQueryAbstractTest.cs" /> + <Compile Include="Cache\Query\Continuous\ContinuousQueryAtomicBackupTest.cs" /> + <Compile Include="Cache\Query\Continuous\ContinuousQueryAtomicNoBackupTest.cs" /> + <Compile Include="Cache\Query\Continuous\ContinuousQueryNoBackupAbstractTest.cs" /> + <Compile Include="Cache\Query\Continuous\ContinuousQueryTransactionalBackupTest.cs" /> + <Compile Include="Cache\Query\Continuous\ContinuousQueryTransactionalNoBackupTest.cs" /> + <Compile Include="Cache\Query\CacheQueriesTest.cs" /> + <Compile Include="Cache\Store\CacheParallelLoadStoreTest.cs" /> + <Compile Include="Cache\Store\CacheStoreSessionTest.cs" /> + <Compile Include="Cache\Store\CacheStoreTest.cs" /> + <Compile Include="Cache\Store\CacheTestParallelLoadStore.cs" /> + <Compile Include="Cache\Store\CacheTestStore.cs" /> + <Compile Include="Compute\Forked\ForkedPortableClosureTaskTest.cs" /> + <Compile Include="Compute\Forked\ForkedResourceTaskTest.cs" /> + <Compile Include="Compute\Forked\ForkedSerializableClosureTaskTest.cs" /> + <Compile Include="Compute\Forked\ForkedTaskAdapterTest.cs" /> + <Compile Include="Compute\AbstractTaskTest.cs" /> + <Compile Include="Compute\ClosureTaskTest.cs" /> + <Compile Include="Compute\ComputeApiTest.cs" /> + <Compile Include="Compute\ComputeMultithreadedTest.cs" /> + <Compile Include="Compute\IgniteExceptionTaskSelfTest.cs" /> + <Compile Include="Compute\FailoverTaskSelfTest.cs" /> + <Compile Include="Compute\PortableClosureTaskTest.cs" /> + <Compile Include="Compute\PortableTaskTest.cs" /> + <Compile Include="Compute\ResourceTaskTest.cs" /> + <Compile Include="Compute\SerializableClosureTaskTest.cs" /> + <Compile Include="Compute\TaskAdapterTest.cs" /> + <Compile Include="Compute\TaskResultTest.cs" /> + <Compile Include="Dataload\DataStreamerTest.cs" /> + <Compile Include="EventsTest.cs" /> + <Compile Include="ExceptionsTest.cs" /> + <Compile Include="ExecutableTest.cs" /> + <Compile Include="FutureTest.cs" /> + <Compile Include="LifecycleTest.cs" /> + <Compile Include="LoadDllTest.cs" /> + <Compile Include="IgniteManagerTest.cs" /> + <Compile Include="MarshallerTest.cs" /> + <Compile Include="MessagingTest.cs" /> + <Compile Include="PortableConfigurationTest.cs" /> + <Compile Include="SerializationTest.cs" /> + <Compile Include="IgniteStartStopTest.cs" /> + <Compile Include="TestUtils.cs" /> <Compile Include="Memory\InteropMemoryTest.cs" /> + <Compile Include="Portable\PortableApiSelfTest.cs" /> + <Compile Include="Portable\PortableSelfTest.cs" /> + <Compile Include="Process\IgniteProcess.cs" /> + <Compile Include="Process\IgniteProcessConsoleOutputReader.cs" /> + <Compile Include="Process\IIgniteProcessOutputReader.cs" /> <Compile Include="Properties\AssemblyInfo.cs" /> + <Compile Include="Query\ImplicitPortablePerson.cs" /> + <Compile Include="Query\NoDefPortablePerson.cs" /> + <Compile Include="Query\PortablePerson.cs" /> + <Compile Include="Services\ServicesTest.cs" /> + <Compile Include="Services\ServicesTestAsync.cs" /> + <Compile Include="Services\ServiceProxyTest.cs" /> + <Compile Include="Services\ServicesAsyncWrapper.cs" /> <Compile Include="TestRunner.cs" /> + <Compile Include="TypeResolverTest.cs" /> </ItemGroup> <ItemGroup> <ProjectReference Include="..\..\..\main\dotnet\Apache.Ignite.Core\Apache.Ignite.Core.csproj"> <Project>{4CD2F726-7E2B-46C4-A5BA-057BB82EECB6}</Project> <Name>Apache.Ignite.Core</Name> </ProjectReference> + <ProjectReference Include="..\Apache.Ignite.Core.Tests.TestDll\Apache.Ignite.Core.Tests.TestDll.csproj"> + <Project>{F4A69E2D-908E-4F0F-A794-84D508D60E5F}</Project> + <Name>Apache.Ignite.Core.Tests.TestDll</Name> + </ProjectReference> + </ItemGroup> + <ItemGroup> + <Content Include="Config\cache-portables.xml"> + <CopyToOutputDirectory>Always</CopyToOutputDirectory> + </Content> + <Content Include="Config\cache-query-continuous.xml"> + <CopyToOutputDirectory>Always</CopyToOutputDirectory> + </Content> + <Content Include="Config\cache-query.xml"> + <CopyToOutputDirectory>Always</CopyToOutputDirectory> + </Content> + <Content Include="Config\Cache\Store\cache-store-session.xml"> + <CopyToOutputDirectory>Always</CopyToOutputDirectory> + </Content> + <Content Include="Config\Compute\compute-grid1.xml"> + <CopyToOutputDirectory>Always</CopyToOutputDirectory> + </Content> + <Content Include="Config\Compute\compute-grid2.xml"> + <CopyToOutputDirectory>Always</CopyToOutputDirectory> + </Content> + <Content Include="Config\Compute\compute-grid3.xml"> + <CopyToOutputDirectory>Always</CopyToOutputDirectory> + </Content> + <Content Include="Config\Compute\compute-standalone.xml"> + <CopyToOutputDirectory>Always</CopyToOutputDirectory> + </Content> + <Content Include="Config\Dynamic\dynamic-client.xml"> + <CopyToOutputDirectory>Always</CopyToOutputDirectory> + </Content> + <Content Include="Config\Dynamic\dynamic-data-no-cfg.xml"> + <CopyToOutputDirectory>Always</CopyToOutputDirectory> + </Content> + <Content Include="Config\Dynamic\dynamic-data.xml"> + <CopyToOutputDirectory>Always</CopyToOutputDirectory> + </Content> + <Content Include="Config\Lifecycle\lifecycle-beans.xml"> + <CopyToOutputDirectory>Always</CopyToOutputDirectory> + </Content> + <Content Include="Config\Lifecycle\lifecycle-no-beans.xml"> + <CopyToOutputDirectory>Always</CopyToOutputDirectory> + </Content> + <Content Include="Config\marshaller-default.xml"> + <CopyToOutputDirectory>Always</CopyToOutputDirectory> + </Content> + <Content Include="Config\marshaller-invalid.xml"> + <CopyToOutputDirectory>Always</CopyToOutputDirectory> + </Content> + <Content Include="Config\marshaller-portable.xml"> + <CopyToOutputDirectory>Always</CopyToOutputDirectory> + </Content> + <Content Include="Config\native-client-test-cache-affinity.xml"> + <CopyToOutputDirectory>Always</CopyToOutputDirectory> + </Content> + <Content Include="Config\native-client-test-cache-parallel-store.xml"> + <CopyToOutputDirectory>Always</CopyToOutputDirectory> + </Content> + <Content Include="Config\native-client-test-cache-portables.xml"> + <CopyToOutputDirectory>Always</CopyToOutputDirectory> + </Content> + <Content Include="Config\native-client-test-cache-store.xml"> + <CopyToOutputDirectory>Always</CopyToOutputDirectory> + </Content> + <Content Include="Config\native-client-test-cache.xml"> + <CopyToOutputDirectory>Always</CopyToOutputDirectory> + </Content> + <Content Include="Config\portable.xml"> + <CopyToOutputDirectory>Always</CopyToOutputDirectory> + </Content> + <Content Include="Config\start-test-grid1.xml"> + <CopyToOutputDirectory>Always</CopyToOutputDirectory> + </Content> + <Content Include="Config\start-test-grid2.xml"> + <CopyToOutputDirectory>Always</CopyToOutputDirectory> + </Content> + <Content Include="Config\start-test-grid3.xml"> + <CopyToOutputDirectory>Always</CopyToOutputDirectory> + </Content> + </ItemGroup> + <ItemGroup> + <Content Include="Config\Ignite.exe.config.test"> + <CopyToOutputDirectory>Always</CopyToOutputDirectory> + </Content> </ItemGroup> <Import Project="$(MSBuildToolsPath)\Microsoft.CSharp.targets" /> <!-- To modify your build process, add your task inside one of the targets below and uncomment it.
