Welcome to mirror list, hosted at ThFree Co, Russian Federation.

github.com/mono/monodevelop.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
path: root/main/src
diff options
context:
space:
mode:
authorLluis Sanchez Gual <lluis@novell.com>2011-08-16 17:35:06 +0400
committerLluis Sanchez Gual <lluis@novell.com>2011-08-16 17:35:06 +0400
commit613ed4c715bb501602b45f43bc863b51957c95c2 (patch)
treeebb06994f31bb1c8b56965120664585957456c2d /main/src
parentf66a02eb44db4eeee4a7d99a99959a1808460e44 (diff)
The Invariant policy set should not inherit from user settings
We now use a special class for storing the invariant policies which does not inherit policies from the user defined settings.
Diffstat (limited to 'main/src')
-rw-r--r--main/src/core/MonoDevelop.Core/MonoDevelop.Projects.Policies/PolicyBag.cs4
-rw-r--r--main/src/core/MonoDevelop.Core/MonoDevelop.Projects.Policies/PolicyContainer.cs32
-rw-r--r--main/src/core/MonoDevelop.Core/MonoDevelop.Projects.Policies/PolicyService.cs27
-rw-r--r--main/src/core/MonoDevelop.Core/MonoDevelop.Projects.Policies/PolicySet.cs10
4 files changed, 48 insertions, 25 deletions
diff --git a/main/src/core/MonoDevelop.Core/MonoDevelop.Projects.Policies/PolicyBag.cs b/main/src/core/MonoDevelop.Core/MonoDevelop.Projects.Policies/PolicyBag.cs
index 9f9bb53d62..074bcc8d0d 100644
--- a/main/src/core/MonoDevelop.Core/MonoDevelop.Projects.Policies/PolicyBag.cs
+++ b/main/src/core/MonoDevelop.Core/MonoDevelop.Projects.Policies/PolicyBag.cs
@@ -53,10 +53,6 @@ namespace MonoDevelop.Projects.Policies
public SolutionItem Owner { get; internal set; }
- protected override bool InheritDefaultPolicies {
- get { return true; }
- }
-
public override bool IsRoot {
get { return Owner == null || Owner.ParentFolder == null; }
}
diff --git a/main/src/core/MonoDevelop.Core/MonoDevelop.Projects.Policies/PolicyContainer.cs b/main/src/core/MonoDevelop.Core/MonoDevelop.Projects.Policies/PolicyContainer.cs
index 27c328a2f3..315aee9c65 100644
--- a/main/src/core/MonoDevelop.Core/MonoDevelop.Projects.Policies/PolicyContainer.cs
+++ b/main/src/core/MonoDevelop.Core/MonoDevelop.Projects.Policies/PolicyContainer.cs
@@ -58,16 +58,11 @@ namespace MonoDevelop.Projects.Policies
if (policies.TryGetValue (typeof(T), null, out policy)) {
if (!PolicyService.IsUndefinedPolicy (policy))
return (T)policy;
- else if (InheritDefaultPolicies)
- return PolicyService.GetDefaultPolicy<T> ();
- else
- return null;
+ return GetDefaultPolicy<T> ();
}
}
- if (!InheritDefaultPolicies)
- return null;
- else if (IsRoot)
- return PolicyService.GetDefaultPolicy<T> ();
+ if (IsRoot)
+ return GetDefaultPolicy<T> ();
else
return ParentPolicies.Get<T> ();
}
@@ -95,10 +90,7 @@ namespace MonoDevelop.Projects.Policies
currentBag = currentBag.ParentPolicies;
}
}
- if (InheritDefaultPolicies)
- return PolicyService.GetDefaultPolicy<T>(scopes);
- else
- return null;
+ return GetDefaultPolicy<T>(scopes);
}
public void Set<T> (T value) where T : class, IEquatable<T>, new ()
@@ -364,18 +356,22 @@ namespace MonoDevelop.Projects.Policies
#endregion
- /// <summary>
- /// When set to true, the container will return a default policy when requesting a
- /// policy object that is not defined in the container.
- /// </summary>
- protected abstract bool InheritDefaultPolicies { get; }
-
protected virtual void OnPolicyChanged (Type policyType, string scope)
{
if (PolicyChanged != null)
PolicyChanged (this, new PolicyChangedEventArgs (policyType, scope));
}
+ protected virtual T GetDefaultPolicy<T> () where T : class, IEquatable<T>, new ()
+ {
+ return PolicyService.GetDefaultPolicy<T> ();
+ }
+
+ protected virtual T GetDefaultPolicy<T> (IEnumerable<string> scopes) where T : class, IEquatable<T>, new ()
+ {
+ return PolicyService.GetDefaultPolicy<T> (scopes);
+ }
+
public virtual bool ReadOnly {
get;
internal set;
diff --git a/main/src/core/MonoDevelop.Core/MonoDevelop.Projects.Policies/PolicyService.cs b/main/src/core/MonoDevelop.Core/MonoDevelop.Projects.Policies/PolicyService.cs
index b5caf79e79..ff4a2e8f4e 100644
--- a/main/src/core/MonoDevelop.Core/MonoDevelop.Projects.Policies/PolicyService.cs
+++ b/main/src/core/MonoDevelop.Core/MonoDevelop.Projects.Policies/PolicyService.cs
@@ -56,7 +56,7 @@ namespace MonoDevelop.Projects.Policies
static PolicySet defaultPolicies;
static PolicyBag defaultPolicyBag = new PolicyBag ();
- static PolicyBag invariantPolicies = new PolicyBag ();
+ static InvariantPolicyBag invariantPolicies = new InvariantPolicyBag ();
static PolicyService ()
{
@@ -1355,4 +1355,29 @@ namespace MonoDevelop.Projects.Policies
get { return scope; }
}
}
+
+ class InvariantPolicyBag: PolicyContainer
+ {
+ public override bool IsRoot {
+ get {
+ return true;
+ }
+ }
+
+ public override PolicyContainer ParentPolicies {
+ get {
+ return null;
+ }
+ }
+
+ protected override T GetDefaultPolicy<T> ()
+ {
+ return new T ();
+ }
+
+ protected override T GetDefaultPolicy<T> (IEnumerable<string> scopes)
+ {
+ return new T ();
+ }
+ }
} \ No newline at end of file
diff --git a/main/src/core/MonoDevelop.Core/MonoDevelop.Projects.Policies/PolicySet.cs b/main/src/core/MonoDevelop.Core/MonoDevelop.Projects.Policies/PolicySet.cs
index 9b6dc1a337..f7ad6ca61b 100644
--- a/main/src/core/MonoDevelop.Core/MonoDevelop.Projects.Policies/PolicySet.cs
+++ b/main/src/core/MonoDevelop.Core/MonoDevelop.Projects.Policies/PolicySet.cs
@@ -76,8 +76,14 @@ namespace MonoDevelop.Projects.Policies
get { return null; }
}
- protected override bool InheritDefaultPolicies {
- get { return false; }
+ protected override T GetDefaultPolicy<T> ()
+ {
+ return null;
+ }
+
+ protected override T GetDefaultPolicy<T> (IEnumerable<string> scopes)
+ {
+ return null;
}
public string Name { get; set; }