[NUI] Add exception and null check for Button/Slider/Switch (#1853)
authorzhouleonlei <56956725+zhouleonlei@users.noreply.github.com>
Thu, 23 Jul 2020 01:19:51 +0000 (09:19 +0800)
committerGitHub <noreply@github.com>
Thu, 23 Jul 2020 01:19:51 +0000 (10:19 +0900)
* [NUI] Add exception and null check for Button/Slider/Switch

* [NUI] Add exception

src/Tizen.NUI.Components/Controls/Button.cs
src/Tizen.NUI.Components/Controls/Slider.cs
src/Tizen.NUI.Components/Controls/Switch.cs

index 64a8cb2..9225147 100755 (executable)
@@ -466,56 +466,111 @@ namespace Tizen.NUI.Components
         /// <summary>
         /// Text string selector in Button.
         /// Getter returns copied selector value if exist, null otherwise.
+        /// <exception cref="NullReferenceException">Thrown when setting null value.</exception>
         /// </summary>
         /// <since_tizen> 6 </since_tizen>
         public StringSelector TextSelector
         {
             get => buttonText == null ? null : new StringSelector((Selector<string>)buttonText.GetValue(TextLabel.TextSelectorProperty));
-            set => buttonText?.SetValue(TextLabel.TextSelectorProperty, value);
+            set
+            {
+                if (value == null || buttonText == null)
+                {
+                    throw new NullReferenceException("Button.TextSelector is null");
+                }
+                else
+                {
+                    buttonText.SetValue(TextLabel.TextSelectorProperty, value);
+                }
+            }
         }
 
         /// <summary>
         /// Translateable text string selector in Button.
         /// Getter returns copied selector value if exist, null otherwise.
         /// </summary>
+        /// <exception cref="NullReferenceException">Thrown when setting null value.</exception>
         /// <since_tizen> 6 </since_tizen>
         public StringSelector TranslatableTextSelector
         {
             get => buttonText == null ? null : new StringSelector((Selector<string>)buttonText.GetValue(TextLabel.TranslatableTextSelectorProperty));
-            set => buttonText?.SetValue(TextLabel.TranslatableTextSelectorProperty, value);
+            set
+            {
+                if (value == null || buttonText == null)
+                {
+                    throw new NullReferenceException("Button.TranslatableTextSelector is null");
+                }
+                else
+                {
+                    buttonText.SetValue(TextLabel.TranslatableTextSelectorProperty, value);
+                }
+            }
         }
 
         /// <summary>
         /// Text color selector in Button.
         /// Getter returns copied selector value if exist, null otherwise.
         /// </summary>
+        /// <exception cref="NullReferenceException">Thrown when setting null value.</exception>
         /// <since_tizen> 6 </since_tizen>
         public ColorSelector TextColorSelector
         {
             get => buttonText == null ? null : new ColorSelector((Selector<Color>)buttonText.GetValue(TextLabel.TextColorSelectorProperty));
-            set => buttonText?.SetValue(TextLabel.TextColorSelectorProperty, value);
+            set
+            {
+                if (value == null || buttonText == null)
+                {
+                    throw new NullReferenceException("Button.TextColorSelectorProperty is null");
+                }
+                else
+                {
+                    buttonText.SetValue(TextLabel.TextColorSelectorProperty, value);
+                }
+            }
         }
 
         /// <summary>
         /// Text font size selector in Button.
         /// Getter returns copied selector value if exist, null otherwise.
         /// </summary>
+        /// <exception cref="NullReferenceException">Thrown when setting null value.</exception>
         /// <since_tizen> 6 </since_tizen>
         public FloatSelector PointSizeSelector
         {
             get => buttonText == null ? null : new FloatSelector((Selector<float?>)buttonText.GetValue(TextLabel.PointSizeSelectorProperty));
-            set => buttonText?.SetValue(TextLabel.PointSizeSelectorProperty, value);
+            set
+            {
+                if (value == null || buttonText == null)
+                {
+                    throw new NullReferenceException("Button.PointSizeSelector is null");
+                }
+                else
+                {
+                    buttonText.SetValue(TextLabel.PointSizeSelectorProperty, value);
+                }
+            }
         }
 
         /// <summary>
         /// Icon image's resource url selector in Button.
         /// Getter returns copied selector value if exist, null otherwise.
         /// </summary>
+        /// <exception cref="NullReferenceException">Thrown when setting null value.</exception>
         /// <since_tizen> 6 </since_tizen>
         public StringSelector IconURLSelector
         {
-            get => buttonIcon == null ? null : new StringSelector((Selector<string>)buttonText.GetValue(ImageView.ResourceUrlSelectorProperty));
-            set => buttonIcon?.SetValue(ImageView.ResourceUrlSelectorProperty, value);
+            get => buttonIcon == null ? null : new StringSelector((Selector<string>)buttonIcon.GetValue(ImageView.ResourceUrlSelectorProperty));
+            set
+            {
+                if (value == null || buttonIcon == null)
+                {
+                    throw new NullReferenceException("Button.IconURLSelector is null");
+                }
+                else
+                {
+                    buttonIcon.SetValue(ImageView.ResourceUrlSelectorProperty, value);
+                }
+            }
         }
 
         /// <summary>
index 592d52a..1973c10 100755 (executable)
@@ -416,11 +416,22 @@ namespace Tizen.NUI.Components
         /// Gets or sets the resource url selector of the thumb image object.
         /// Getter returns copied selector value if exist, null otherwise.
         /// </summary>
+        /// <exception cref="NullReferenceException">Thrown when setting null value.</exception>
         /// <since_tizen> 6 </since_tizen>
         public StringSelector ThumbImageURLSelector
         {
             get => thumbImage == null ? null : new StringSelector((Selector<string>)thumbImage.GetValue(ImageView.ResourceUrlSelectorProperty));
-            set => thumbImage?.SetValue(ImageView.ResourceUrlSelectorProperty, value);
+            set
+            {
+                if (value == null || thumbImage == null)
+                {
+                    throw new NullReferenceException("Slider.ThumbImageURLSelector is null");
+                }
+                else
+                {
+                    thumbImage.SetValue(ImageView.ResourceUrlSelectorProperty, value);
+                }
+            }
         }
 
         /// <summary>
@@ -491,11 +502,9 @@ namespace Tizen.NUI.Components
             }
             set
             {
-                if (null != lowIndicatorImage)
-                {
-                    lowIndicatorImage.ResourceUrl = value;
-                    sliderStyle.LowIndicatorImage.ResourceUrl = value;
-                }
+                if (null == lowIndicatorImage) lowIndicatorImage = new ImageView();
+                lowIndicatorImage.ResourceUrl = value;
+                sliderStyle.LowIndicatorImage.ResourceUrl = value;
             }
         }
 
@@ -511,11 +520,9 @@ namespace Tizen.NUI.Components
             }
             set
             {
-                if (null != highIndicatorImage)
-                {
-                    highIndicatorImage.ResourceUrl = value;
-                    sliderStyle.HighIndicatorImage.ResourceUrl = value;
-                }
+                if (null == highIndicatorImage) highIndicatorImage = new ImageView();
+                highIndicatorImage.ResourceUrl = value;
+                sliderStyle.HighIndicatorImage.ResourceUrl = value;
             }
         }
 
index 0d668dd..179c1eb 100755 (executable)
@@ -194,7 +194,7 @@ namespace Tizen.NUI.Components
         /// <since_tizen> 6 </since_tizen>
         public StringSelector SwitchBackgroundImageURLSelector
         {
-            get => track == null ? null : new StringSelector((Selector<string>)thumb.GetValue(ImageView.ResourceUrlSelectorProperty));
+            get => track == null ? null : new StringSelector((Selector<string>)track.GetValue(ImageView.ResourceUrlSelectorProperty));
             set => track?.SetValue(ImageView.ResourceUrlSelectorProperty, value);
         }