{-# LANGUAGE DeriveGeneric #-}
{-# LANGUAGE DuplicateRecordFields #-}
{-# LANGUAGE NamedFieldPuns #-}
{-# LANGUAGE OverloadedStrings #-}
{-# LANGUAGE RecordWildCards #-}
{-# LANGUAGE StrictData #-}
{-# LANGUAGE NoImplicitPrelude #-}
{-# OPTIONS_GHC -fno-warn-unused-imports #-}
{-# OPTIONS_GHC -fno-warn-unused-matches #-}

-- Derived from AWS service descriptions, licensed under Apache 2.0.

-- |
-- Module      : Amazonka.KinesisAnalyticsV2.Types.ApplicationConfigurationUpdate
-- Copyright   : (c) 2013-2023 Brendan Hay
-- License     : Mozilla Public License, v. 2.0.
-- Maintainer  : Brendan Hay
-- Stability   : auto-generated
-- Portability : non-portable (GHC extensions)
module Amazonka.KinesisAnalyticsV2.Types.ApplicationConfigurationUpdate where

import qualified Amazonka.Core as Core
import qualified Amazonka.Core.Lens.Internal as Lens
import qualified Amazonka.Data as Data
import Amazonka.KinesisAnalyticsV2.Types.ApplicationCodeConfigurationUpdate
import Amazonka.KinesisAnalyticsV2.Types.ApplicationSnapshotConfigurationUpdate
import Amazonka.KinesisAnalyticsV2.Types.EnvironmentPropertyUpdates
import Amazonka.KinesisAnalyticsV2.Types.FlinkApplicationConfigurationUpdate
import Amazonka.KinesisAnalyticsV2.Types.SqlApplicationConfigurationUpdate
import Amazonka.KinesisAnalyticsV2.Types.VpcConfigurationUpdate
import Amazonka.KinesisAnalyticsV2.Types.ZeppelinApplicationConfigurationUpdate
import qualified Amazonka.Prelude as Prelude

-- | Describes updates to an application\'s configuration.
--
-- /See:/ 'newApplicationConfigurationUpdate' smart constructor.
data ApplicationConfigurationUpdate = ApplicationConfigurationUpdate'
  { -- | Describes updates to an application\'s code configuration.
    ApplicationConfigurationUpdate
-> Maybe ApplicationCodeConfigurationUpdate
applicationCodeConfigurationUpdate :: Prelude.Maybe ApplicationCodeConfigurationUpdate,
    -- | Describes whether snapshots are enabled for a Flink-based Kinesis Data
    -- Analytics application.
    ApplicationConfigurationUpdate
-> Maybe ApplicationSnapshotConfigurationUpdate
applicationSnapshotConfigurationUpdate :: Prelude.Maybe ApplicationSnapshotConfigurationUpdate,
    -- | Describes updates to the environment properties for a Flink-based
    -- Kinesis Data Analytics application.
    ApplicationConfigurationUpdate -> Maybe EnvironmentPropertyUpdates
environmentPropertyUpdates :: Prelude.Maybe EnvironmentPropertyUpdates,
    -- | Describes updates to a Flink-based Kinesis Data Analytics application\'s
    -- configuration.
    ApplicationConfigurationUpdate
-> Maybe FlinkApplicationConfigurationUpdate
flinkApplicationConfigurationUpdate :: Prelude.Maybe FlinkApplicationConfigurationUpdate,
    -- | Describes updates to a SQL-based Kinesis Data Analytics application\'s
    -- configuration.
    ApplicationConfigurationUpdate
-> Maybe SqlApplicationConfigurationUpdate
sqlApplicationConfigurationUpdate :: Prelude.Maybe SqlApplicationConfigurationUpdate,
    -- | Updates to the array of descriptions of VPC configurations available to
    -- the application.
    ApplicationConfigurationUpdate -> Maybe [VpcConfigurationUpdate]
vpcConfigurationUpdates :: Prelude.Maybe [VpcConfigurationUpdate],
    -- | Updates to the configuration of a Kinesis Data Analytics Studio
    -- notebook.
    ApplicationConfigurationUpdate
-> Maybe ZeppelinApplicationConfigurationUpdate
zeppelinApplicationConfigurationUpdate :: Prelude.Maybe ZeppelinApplicationConfigurationUpdate
  }
  deriving (ApplicationConfigurationUpdate
-> ApplicationConfigurationUpdate -> Bool
forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
/= :: ApplicationConfigurationUpdate
-> ApplicationConfigurationUpdate -> Bool
$c/= :: ApplicationConfigurationUpdate
-> ApplicationConfigurationUpdate -> Bool
== :: ApplicationConfigurationUpdate
-> ApplicationConfigurationUpdate -> Bool
$c== :: ApplicationConfigurationUpdate
-> ApplicationConfigurationUpdate -> Bool
Prelude.Eq, ReadPrec [ApplicationConfigurationUpdate]
ReadPrec ApplicationConfigurationUpdate
Int -> ReadS ApplicationConfigurationUpdate
ReadS [ApplicationConfigurationUpdate]
forall a.
(Int -> ReadS a)
-> ReadS [a] -> ReadPrec a -> ReadPrec [a] -> Read a
readListPrec :: ReadPrec [ApplicationConfigurationUpdate]
$creadListPrec :: ReadPrec [ApplicationConfigurationUpdate]
readPrec :: ReadPrec ApplicationConfigurationUpdate
$creadPrec :: ReadPrec ApplicationConfigurationUpdate
readList :: ReadS [ApplicationConfigurationUpdate]
$creadList :: ReadS [ApplicationConfigurationUpdate]
readsPrec :: Int -> ReadS ApplicationConfigurationUpdate
$creadsPrec :: Int -> ReadS ApplicationConfigurationUpdate
Prelude.Read, Int -> ApplicationConfigurationUpdate -> ShowS
[ApplicationConfigurationUpdate] -> ShowS
ApplicationConfigurationUpdate -> String
forall a.
(Int -> a -> ShowS) -> (a -> String) -> ([a] -> ShowS) -> Show a
showList :: [ApplicationConfigurationUpdate] -> ShowS
$cshowList :: [ApplicationConfigurationUpdate] -> ShowS
show :: ApplicationConfigurationUpdate -> String
$cshow :: ApplicationConfigurationUpdate -> String
showsPrec :: Int -> ApplicationConfigurationUpdate -> ShowS
$cshowsPrec :: Int -> ApplicationConfigurationUpdate -> ShowS
Prelude.Show, forall x.
Rep ApplicationConfigurationUpdate x
-> ApplicationConfigurationUpdate
forall x.
ApplicationConfigurationUpdate
-> Rep ApplicationConfigurationUpdate x
forall a.
(forall x. a -> Rep a x) -> (forall x. Rep a x -> a) -> Generic a
$cto :: forall x.
Rep ApplicationConfigurationUpdate x
-> ApplicationConfigurationUpdate
$cfrom :: forall x.
ApplicationConfigurationUpdate
-> Rep ApplicationConfigurationUpdate x
Prelude.Generic)

-- |
-- Create a value of 'ApplicationConfigurationUpdate' with all optional fields omitted.
--
-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
--
-- The following record fields are available, with the corresponding lenses provided
-- for backwards compatibility:
--
-- 'applicationCodeConfigurationUpdate', 'applicationConfigurationUpdate_applicationCodeConfigurationUpdate' - Describes updates to an application\'s code configuration.
--
-- 'applicationSnapshotConfigurationUpdate', 'applicationConfigurationUpdate_applicationSnapshotConfigurationUpdate' - Describes whether snapshots are enabled for a Flink-based Kinesis Data
-- Analytics application.
--
-- 'environmentPropertyUpdates', 'applicationConfigurationUpdate_environmentPropertyUpdates' - Describes updates to the environment properties for a Flink-based
-- Kinesis Data Analytics application.
--
-- 'flinkApplicationConfigurationUpdate', 'applicationConfigurationUpdate_flinkApplicationConfigurationUpdate' - Describes updates to a Flink-based Kinesis Data Analytics application\'s
-- configuration.
--
-- 'sqlApplicationConfigurationUpdate', 'applicationConfigurationUpdate_sqlApplicationConfigurationUpdate' - Describes updates to a SQL-based Kinesis Data Analytics application\'s
-- configuration.
--
-- 'vpcConfigurationUpdates', 'applicationConfigurationUpdate_vpcConfigurationUpdates' - Updates to the array of descriptions of VPC configurations available to
-- the application.
--
-- 'zeppelinApplicationConfigurationUpdate', 'applicationConfigurationUpdate_zeppelinApplicationConfigurationUpdate' - Updates to the configuration of a Kinesis Data Analytics Studio
-- notebook.
newApplicationConfigurationUpdate ::
  ApplicationConfigurationUpdate
newApplicationConfigurationUpdate :: ApplicationConfigurationUpdate
newApplicationConfigurationUpdate =
  ApplicationConfigurationUpdate'
    { $sel:applicationCodeConfigurationUpdate:ApplicationConfigurationUpdate' :: Maybe ApplicationCodeConfigurationUpdate
applicationCodeConfigurationUpdate =
        forall a. Maybe a
Prelude.Nothing,
      $sel:applicationSnapshotConfigurationUpdate:ApplicationConfigurationUpdate' :: Maybe ApplicationSnapshotConfigurationUpdate
applicationSnapshotConfigurationUpdate =
        forall a. Maybe a
Prelude.Nothing,
      $sel:environmentPropertyUpdates:ApplicationConfigurationUpdate' :: Maybe EnvironmentPropertyUpdates
environmentPropertyUpdates =
        forall a. Maybe a
Prelude.Nothing,
      $sel:flinkApplicationConfigurationUpdate:ApplicationConfigurationUpdate' :: Maybe FlinkApplicationConfigurationUpdate
flinkApplicationConfigurationUpdate =
        forall a. Maybe a
Prelude.Nothing,
      $sel:sqlApplicationConfigurationUpdate:ApplicationConfigurationUpdate' :: Maybe SqlApplicationConfigurationUpdate
sqlApplicationConfigurationUpdate =
        forall a. Maybe a
Prelude.Nothing,
      $sel:vpcConfigurationUpdates:ApplicationConfigurationUpdate' :: Maybe [VpcConfigurationUpdate]
vpcConfigurationUpdates = forall a. Maybe a
Prelude.Nothing,
      $sel:zeppelinApplicationConfigurationUpdate:ApplicationConfigurationUpdate' :: Maybe ZeppelinApplicationConfigurationUpdate
zeppelinApplicationConfigurationUpdate =
        forall a. Maybe a
Prelude.Nothing
    }

-- | Describes updates to an application\'s code configuration.
applicationConfigurationUpdate_applicationCodeConfigurationUpdate :: Lens.Lens' ApplicationConfigurationUpdate (Prelude.Maybe ApplicationCodeConfigurationUpdate)
applicationConfigurationUpdate_applicationCodeConfigurationUpdate :: Lens'
  ApplicationConfigurationUpdate
  (Maybe ApplicationCodeConfigurationUpdate)
applicationConfigurationUpdate_applicationCodeConfigurationUpdate = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\ApplicationConfigurationUpdate' {Maybe ApplicationCodeConfigurationUpdate
applicationCodeConfigurationUpdate :: Maybe ApplicationCodeConfigurationUpdate
$sel:applicationCodeConfigurationUpdate:ApplicationConfigurationUpdate' :: ApplicationConfigurationUpdate
-> Maybe ApplicationCodeConfigurationUpdate
applicationCodeConfigurationUpdate} -> Maybe ApplicationCodeConfigurationUpdate
applicationCodeConfigurationUpdate) (\s :: ApplicationConfigurationUpdate
s@ApplicationConfigurationUpdate' {} Maybe ApplicationCodeConfigurationUpdate
a -> ApplicationConfigurationUpdate
s {$sel:applicationCodeConfigurationUpdate:ApplicationConfigurationUpdate' :: Maybe ApplicationCodeConfigurationUpdate
applicationCodeConfigurationUpdate = Maybe ApplicationCodeConfigurationUpdate
a} :: ApplicationConfigurationUpdate)

-- | Describes whether snapshots are enabled for a Flink-based Kinesis Data
-- Analytics application.
applicationConfigurationUpdate_applicationSnapshotConfigurationUpdate :: Lens.Lens' ApplicationConfigurationUpdate (Prelude.Maybe ApplicationSnapshotConfigurationUpdate)
applicationConfigurationUpdate_applicationSnapshotConfigurationUpdate :: Lens'
  ApplicationConfigurationUpdate
  (Maybe ApplicationSnapshotConfigurationUpdate)
applicationConfigurationUpdate_applicationSnapshotConfigurationUpdate = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\ApplicationConfigurationUpdate' {Maybe ApplicationSnapshotConfigurationUpdate
applicationSnapshotConfigurationUpdate :: Maybe ApplicationSnapshotConfigurationUpdate
$sel:applicationSnapshotConfigurationUpdate:ApplicationConfigurationUpdate' :: ApplicationConfigurationUpdate
-> Maybe ApplicationSnapshotConfigurationUpdate
applicationSnapshotConfigurationUpdate} -> Maybe ApplicationSnapshotConfigurationUpdate
applicationSnapshotConfigurationUpdate) (\s :: ApplicationConfigurationUpdate
s@ApplicationConfigurationUpdate' {} Maybe ApplicationSnapshotConfigurationUpdate
a -> ApplicationConfigurationUpdate
s {$sel:applicationSnapshotConfigurationUpdate:ApplicationConfigurationUpdate' :: Maybe ApplicationSnapshotConfigurationUpdate
applicationSnapshotConfigurationUpdate = Maybe ApplicationSnapshotConfigurationUpdate
a} :: ApplicationConfigurationUpdate)

-- | Describes updates to the environment properties for a Flink-based
-- Kinesis Data Analytics application.
applicationConfigurationUpdate_environmentPropertyUpdates :: Lens.Lens' ApplicationConfigurationUpdate (Prelude.Maybe EnvironmentPropertyUpdates)
applicationConfigurationUpdate_environmentPropertyUpdates :: Lens'
  ApplicationConfigurationUpdate (Maybe EnvironmentPropertyUpdates)
applicationConfigurationUpdate_environmentPropertyUpdates = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\ApplicationConfigurationUpdate' {Maybe EnvironmentPropertyUpdates
environmentPropertyUpdates :: Maybe EnvironmentPropertyUpdates
$sel:environmentPropertyUpdates:ApplicationConfigurationUpdate' :: ApplicationConfigurationUpdate -> Maybe EnvironmentPropertyUpdates
environmentPropertyUpdates} -> Maybe EnvironmentPropertyUpdates
environmentPropertyUpdates) (\s :: ApplicationConfigurationUpdate
s@ApplicationConfigurationUpdate' {} Maybe EnvironmentPropertyUpdates
a -> ApplicationConfigurationUpdate
s {$sel:environmentPropertyUpdates:ApplicationConfigurationUpdate' :: Maybe EnvironmentPropertyUpdates
environmentPropertyUpdates = Maybe EnvironmentPropertyUpdates
a} :: ApplicationConfigurationUpdate)

-- | Describes updates to a Flink-based Kinesis Data Analytics application\'s
-- configuration.
applicationConfigurationUpdate_flinkApplicationConfigurationUpdate :: Lens.Lens' ApplicationConfigurationUpdate (Prelude.Maybe FlinkApplicationConfigurationUpdate)
applicationConfigurationUpdate_flinkApplicationConfigurationUpdate :: Lens'
  ApplicationConfigurationUpdate
  (Maybe FlinkApplicationConfigurationUpdate)
applicationConfigurationUpdate_flinkApplicationConfigurationUpdate = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\ApplicationConfigurationUpdate' {Maybe FlinkApplicationConfigurationUpdate
flinkApplicationConfigurationUpdate :: Maybe FlinkApplicationConfigurationUpdate
$sel:flinkApplicationConfigurationUpdate:ApplicationConfigurationUpdate' :: ApplicationConfigurationUpdate
-> Maybe FlinkApplicationConfigurationUpdate
flinkApplicationConfigurationUpdate} -> Maybe FlinkApplicationConfigurationUpdate
flinkApplicationConfigurationUpdate) (\s :: ApplicationConfigurationUpdate
s@ApplicationConfigurationUpdate' {} Maybe FlinkApplicationConfigurationUpdate
a -> ApplicationConfigurationUpdate
s {$sel:flinkApplicationConfigurationUpdate:ApplicationConfigurationUpdate' :: Maybe FlinkApplicationConfigurationUpdate
flinkApplicationConfigurationUpdate = Maybe FlinkApplicationConfigurationUpdate
a} :: ApplicationConfigurationUpdate)

-- | Describes updates to a SQL-based Kinesis Data Analytics application\'s
-- configuration.
applicationConfigurationUpdate_sqlApplicationConfigurationUpdate :: Lens.Lens' ApplicationConfigurationUpdate (Prelude.Maybe SqlApplicationConfigurationUpdate)
applicationConfigurationUpdate_sqlApplicationConfigurationUpdate :: Lens'
  ApplicationConfigurationUpdate
  (Maybe SqlApplicationConfigurationUpdate)
applicationConfigurationUpdate_sqlApplicationConfigurationUpdate = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\ApplicationConfigurationUpdate' {Maybe SqlApplicationConfigurationUpdate
sqlApplicationConfigurationUpdate :: Maybe SqlApplicationConfigurationUpdate
$sel:sqlApplicationConfigurationUpdate:ApplicationConfigurationUpdate' :: ApplicationConfigurationUpdate
-> Maybe SqlApplicationConfigurationUpdate
sqlApplicationConfigurationUpdate} -> Maybe SqlApplicationConfigurationUpdate
sqlApplicationConfigurationUpdate) (\s :: ApplicationConfigurationUpdate
s@ApplicationConfigurationUpdate' {} Maybe SqlApplicationConfigurationUpdate
a -> ApplicationConfigurationUpdate
s {$sel:sqlApplicationConfigurationUpdate:ApplicationConfigurationUpdate' :: Maybe SqlApplicationConfigurationUpdate
sqlApplicationConfigurationUpdate = Maybe SqlApplicationConfigurationUpdate
a} :: ApplicationConfigurationUpdate)

-- | Updates to the array of descriptions of VPC configurations available to
-- the application.
applicationConfigurationUpdate_vpcConfigurationUpdates :: Lens.Lens' ApplicationConfigurationUpdate (Prelude.Maybe [VpcConfigurationUpdate])
applicationConfigurationUpdate_vpcConfigurationUpdates :: Lens'
  ApplicationConfigurationUpdate (Maybe [VpcConfigurationUpdate])
applicationConfigurationUpdate_vpcConfigurationUpdates = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\ApplicationConfigurationUpdate' {Maybe [VpcConfigurationUpdate]
vpcConfigurationUpdates :: Maybe [VpcConfigurationUpdate]
$sel:vpcConfigurationUpdates:ApplicationConfigurationUpdate' :: ApplicationConfigurationUpdate -> Maybe [VpcConfigurationUpdate]
vpcConfigurationUpdates} -> Maybe [VpcConfigurationUpdate]
vpcConfigurationUpdates) (\s :: ApplicationConfigurationUpdate
s@ApplicationConfigurationUpdate' {} Maybe [VpcConfigurationUpdate]
a -> ApplicationConfigurationUpdate
s {$sel:vpcConfigurationUpdates:ApplicationConfigurationUpdate' :: Maybe [VpcConfigurationUpdate]
vpcConfigurationUpdates = Maybe [VpcConfigurationUpdate]
a} :: ApplicationConfigurationUpdate) forall b c a. (b -> c) -> (a -> b) -> a -> c
Prelude.. forall (f :: * -> *) (g :: * -> *) s t a b.
(Functor f, Functor g) =>
AnIso s t a b -> Iso (f s) (g t) (f a) (g b)
Lens.mapping forall s t a b. (Coercible s a, Coercible t b) => Iso s t a b
Lens.coerced

-- | Updates to the configuration of a Kinesis Data Analytics Studio
-- notebook.
applicationConfigurationUpdate_zeppelinApplicationConfigurationUpdate :: Lens.Lens' ApplicationConfigurationUpdate (Prelude.Maybe ZeppelinApplicationConfigurationUpdate)
applicationConfigurationUpdate_zeppelinApplicationConfigurationUpdate :: Lens'
  ApplicationConfigurationUpdate
  (Maybe ZeppelinApplicationConfigurationUpdate)
applicationConfigurationUpdate_zeppelinApplicationConfigurationUpdate = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\ApplicationConfigurationUpdate' {Maybe ZeppelinApplicationConfigurationUpdate
zeppelinApplicationConfigurationUpdate :: Maybe ZeppelinApplicationConfigurationUpdate
$sel:zeppelinApplicationConfigurationUpdate:ApplicationConfigurationUpdate' :: ApplicationConfigurationUpdate
-> Maybe ZeppelinApplicationConfigurationUpdate
zeppelinApplicationConfigurationUpdate} -> Maybe ZeppelinApplicationConfigurationUpdate
zeppelinApplicationConfigurationUpdate) (\s :: ApplicationConfigurationUpdate
s@ApplicationConfigurationUpdate' {} Maybe ZeppelinApplicationConfigurationUpdate
a -> ApplicationConfigurationUpdate
s {$sel:zeppelinApplicationConfigurationUpdate:ApplicationConfigurationUpdate' :: Maybe ZeppelinApplicationConfigurationUpdate
zeppelinApplicationConfigurationUpdate = Maybe ZeppelinApplicationConfigurationUpdate
a} :: ApplicationConfigurationUpdate)

instance
  Prelude.Hashable
    ApplicationConfigurationUpdate
  where
  hashWithSalt :: Int -> ApplicationConfigurationUpdate -> Int
hashWithSalt
    Int
_salt
    ApplicationConfigurationUpdate' {Maybe [VpcConfigurationUpdate]
Maybe ApplicationSnapshotConfigurationUpdate
Maybe FlinkApplicationConfigurationUpdate
Maybe EnvironmentPropertyUpdates
Maybe ApplicationCodeConfigurationUpdate
Maybe SqlApplicationConfigurationUpdate
Maybe ZeppelinApplicationConfigurationUpdate
zeppelinApplicationConfigurationUpdate :: Maybe ZeppelinApplicationConfigurationUpdate
vpcConfigurationUpdates :: Maybe [VpcConfigurationUpdate]
sqlApplicationConfigurationUpdate :: Maybe SqlApplicationConfigurationUpdate
flinkApplicationConfigurationUpdate :: Maybe FlinkApplicationConfigurationUpdate
environmentPropertyUpdates :: Maybe EnvironmentPropertyUpdates
applicationSnapshotConfigurationUpdate :: Maybe ApplicationSnapshotConfigurationUpdate
applicationCodeConfigurationUpdate :: Maybe ApplicationCodeConfigurationUpdate
$sel:zeppelinApplicationConfigurationUpdate:ApplicationConfigurationUpdate' :: ApplicationConfigurationUpdate
-> Maybe ZeppelinApplicationConfigurationUpdate
$sel:vpcConfigurationUpdates:ApplicationConfigurationUpdate' :: ApplicationConfigurationUpdate -> Maybe [VpcConfigurationUpdate]
$sel:sqlApplicationConfigurationUpdate:ApplicationConfigurationUpdate' :: ApplicationConfigurationUpdate
-> Maybe SqlApplicationConfigurationUpdate
$sel:flinkApplicationConfigurationUpdate:ApplicationConfigurationUpdate' :: ApplicationConfigurationUpdate
-> Maybe FlinkApplicationConfigurationUpdate
$sel:environmentPropertyUpdates:ApplicationConfigurationUpdate' :: ApplicationConfigurationUpdate -> Maybe EnvironmentPropertyUpdates
$sel:applicationSnapshotConfigurationUpdate:ApplicationConfigurationUpdate' :: ApplicationConfigurationUpdate
-> Maybe ApplicationSnapshotConfigurationUpdate
$sel:applicationCodeConfigurationUpdate:ApplicationConfigurationUpdate' :: ApplicationConfigurationUpdate
-> Maybe ApplicationCodeConfigurationUpdate
..} =
      Int
_salt
        forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe ApplicationCodeConfigurationUpdate
applicationCodeConfigurationUpdate
        forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe ApplicationSnapshotConfigurationUpdate
applicationSnapshotConfigurationUpdate
        forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe EnvironmentPropertyUpdates
environmentPropertyUpdates
        forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe FlinkApplicationConfigurationUpdate
flinkApplicationConfigurationUpdate
        forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe SqlApplicationConfigurationUpdate
sqlApplicationConfigurationUpdate
        forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe [VpcConfigurationUpdate]
vpcConfigurationUpdates
        forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe ZeppelinApplicationConfigurationUpdate
zeppelinApplicationConfigurationUpdate

instance
  Prelude.NFData
    ApplicationConfigurationUpdate
  where
  rnf :: ApplicationConfigurationUpdate -> ()
rnf ApplicationConfigurationUpdate' {Maybe [VpcConfigurationUpdate]
Maybe ApplicationSnapshotConfigurationUpdate
Maybe FlinkApplicationConfigurationUpdate
Maybe EnvironmentPropertyUpdates
Maybe ApplicationCodeConfigurationUpdate
Maybe SqlApplicationConfigurationUpdate
Maybe ZeppelinApplicationConfigurationUpdate
zeppelinApplicationConfigurationUpdate :: Maybe ZeppelinApplicationConfigurationUpdate
vpcConfigurationUpdates :: Maybe [VpcConfigurationUpdate]
sqlApplicationConfigurationUpdate :: Maybe SqlApplicationConfigurationUpdate
flinkApplicationConfigurationUpdate :: Maybe FlinkApplicationConfigurationUpdate
environmentPropertyUpdates :: Maybe EnvironmentPropertyUpdates
applicationSnapshotConfigurationUpdate :: Maybe ApplicationSnapshotConfigurationUpdate
applicationCodeConfigurationUpdate :: Maybe ApplicationCodeConfigurationUpdate
$sel:zeppelinApplicationConfigurationUpdate:ApplicationConfigurationUpdate' :: ApplicationConfigurationUpdate
-> Maybe ZeppelinApplicationConfigurationUpdate
$sel:vpcConfigurationUpdates:ApplicationConfigurationUpdate' :: ApplicationConfigurationUpdate -> Maybe [VpcConfigurationUpdate]
$sel:sqlApplicationConfigurationUpdate:ApplicationConfigurationUpdate' :: ApplicationConfigurationUpdate
-> Maybe SqlApplicationConfigurationUpdate
$sel:flinkApplicationConfigurationUpdate:ApplicationConfigurationUpdate' :: ApplicationConfigurationUpdate
-> Maybe FlinkApplicationConfigurationUpdate
$sel:environmentPropertyUpdates:ApplicationConfigurationUpdate' :: ApplicationConfigurationUpdate -> Maybe EnvironmentPropertyUpdates
$sel:applicationSnapshotConfigurationUpdate:ApplicationConfigurationUpdate' :: ApplicationConfigurationUpdate
-> Maybe ApplicationSnapshotConfigurationUpdate
$sel:applicationCodeConfigurationUpdate:ApplicationConfigurationUpdate' :: ApplicationConfigurationUpdate
-> Maybe ApplicationCodeConfigurationUpdate
..} =
    forall a. NFData a => a -> ()
Prelude.rnf Maybe ApplicationCodeConfigurationUpdate
applicationCodeConfigurationUpdate
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Maybe ApplicationSnapshotConfigurationUpdate
applicationSnapshotConfigurationUpdate
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Maybe EnvironmentPropertyUpdates
environmentPropertyUpdates
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Maybe FlinkApplicationConfigurationUpdate
flinkApplicationConfigurationUpdate
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Maybe SqlApplicationConfigurationUpdate
sqlApplicationConfigurationUpdate
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Maybe [VpcConfigurationUpdate]
vpcConfigurationUpdates
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Maybe ZeppelinApplicationConfigurationUpdate
zeppelinApplicationConfigurationUpdate

instance Data.ToJSON ApplicationConfigurationUpdate where
  toJSON :: ApplicationConfigurationUpdate -> Value
toJSON ApplicationConfigurationUpdate' {Maybe [VpcConfigurationUpdate]
Maybe ApplicationSnapshotConfigurationUpdate
Maybe FlinkApplicationConfigurationUpdate
Maybe EnvironmentPropertyUpdates
Maybe ApplicationCodeConfigurationUpdate
Maybe SqlApplicationConfigurationUpdate
Maybe ZeppelinApplicationConfigurationUpdate
zeppelinApplicationConfigurationUpdate :: Maybe ZeppelinApplicationConfigurationUpdate
vpcConfigurationUpdates :: Maybe [VpcConfigurationUpdate]
sqlApplicationConfigurationUpdate :: Maybe SqlApplicationConfigurationUpdate
flinkApplicationConfigurationUpdate :: Maybe FlinkApplicationConfigurationUpdate
environmentPropertyUpdates :: Maybe EnvironmentPropertyUpdates
applicationSnapshotConfigurationUpdate :: Maybe ApplicationSnapshotConfigurationUpdate
applicationCodeConfigurationUpdate :: Maybe ApplicationCodeConfigurationUpdate
$sel:zeppelinApplicationConfigurationUpdate:ApplicationConfigurationUpdate' :: ApplicationConfigurationUpdate
-> Maybe ZeppelinApplicationConfigurationUpdate
$sel:vpcConfigurationUpdates:ApplicationConfigurationUpdate' :: ApplicationConfigurationUpdate -> Maybe [VpcConfigurationUpdate]
$sel:sqlApplicationConfigurationUpdate:ApplicationConfigurationUpdate' :: ApplicationConfigurationUpdate
-> Maybe SqlApplicationConfigurationUpdate
$sel:flinkApplicationConfigurationUpdate:ApplicationConfigurationUpdate' :: ApplicationConfigurationUpdate
-> Maybe FlinkApplicationConfigurationUpdate
$sel:environmentPropertyUpdates:ApplicationConfigurationUpdate' :: ApplicationConfigurationUpdate -> Maybe EnvironmentPropertyUpdates
$sel:applicationSnapshotConfigurationUpdate:ApplicationConfigurationUpdate' :: ApplicationConfigurationUpdate
-> Maybe ApplicationSnapshotConfigurationUpdate
$sel:applicationCodeConfigurationUpdate:ApplicationConfigurationUpdate' :: ApplicationConfigurationUpdate
-> Maybe ApplicationCodeConfigurationUpdate
..} =
    [Pair] -> Value
Data.object
      ( forall a. [Maybe a] -> [a]
Prelude.catMaybes
          [ (Key
"ApplicationCodeConfigurationUpdate" forall kv v. (KeyValue kv, ToJSON v) => Key -> v -> kv
Data..=)
              forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
Prelude.<$> Maybe ApplicationCodeConfigurationUpdate
applicationCodeConfigurationUpdate,
            (Key
"ApplicationSnapshotConfigurationUpdate" forall kv v. (KeyValue kv, ToJSON v) => Key -> v -> kv
Data..=)
              forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
Prelude.<$> Maybe ApplicationSnapshotConfigurationUpdate
applicationSnapshotConfigurationUpdate,
            (Key
"EnvironmentPropertyUpdates" forall kv v. (KeyValue kv, ToJSON v) => Key -> v -> kv
Data..=)
              forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
Prelude.<$> Maybe EnvironmentPropertyUpdates
environmentPropertyUpdates,
            (Key
"FlinkApplicationConfigurationUpdate" forall kv v. (KeyValue kv, ToJSON v) => Key -> v -> kv
Data..=)
              forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
Prelude.<$> Maybe FlinkApplicationConfigurationUpdate
flinkApplicationConfigurationUpdate,
            (Key
"SqlApplicationConfigurationUpdate" forall kv v. (KeyValue kv, ToJSON v) => Key -> v -> kv
Data..=)
              forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
Prelude.<$> Maybe SqlApplicationConfigurationUpdate
sqlApplicationConfigurationUpdate,
            (Key
"VpcConfigurationUpdates" forall kv v. (KeyValue kv, ToJSON v) => Key -> v -> kv
Data..=)
              forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
Prelude.<$> Maybe [VpcConfigurationUpdate]
vpcConfigurationUpdates,
            (Key
"ZeppelinApplicationConfigurationUpdate" forall kv v. (KeyValue kv, ToJSON v) => Key -> v -> kv
Data..=)
              forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
Prelude.<$> Maybe ZeppelinApplicationConfigurationUpdate
zeppelinApplicationConfigurationUpdate
          ]
      )