diff --git a/MVMCore/MVMCore.xcodeproj/project.pbxproj b/MVMCore/MVMCore.xcodeproj/project.pbxproj index 8c2b4cb..ed82363 100644 --- a/MVMCore/MVMCore.xcodeproj/project.pbxproj +++ b/MVMCore/MVMCore.xcodeproj/project.pbxproj @@ -24,7 +24,6 @@ 016CF36925FA6DD400B82A1F /* ClientParameterHandler.swift in Sources */ = {isa = PBXBuildFile; fileRef = 016CF36825FA6DD400B82A1F /* ClientParameterHandler.swift */; }; 016FF6EE259A4E6300F5E4AA /* ClientParameterModelProtocol.swift in Sources */ = {isa = PBXBuildFile; fileRef = 016FF6ED259A4E6300F5E4AA /* ClientParameterModelProtocol.swift */; }; 016FF6F2259A4FCC00F5E4AA /* ClientParameterModel.swift in Sources */ = {isa = PBXBuildFile; fileRef = 016FF6F1259A4FCC00F5E4AA /* ClientParameterModel.swift */; }; - 016FF6F6259B9AED00F5E4AA /* ClientParameterRegistry.swift in Sources */ = {isa = PBXBuildFile; fileRef = 016FF6F5259B9AED00F5E4AA /* ClientParameterRegistry.swift */; }; 016FF6FC259BA27E00F5E4AA /* ClientParameterProtocol.swift in Sources */ = {isa = PBXBuildFile; fileRef = 016FF6FB259BA27E00F5E4AA /* ClientParameterProtocol.swift */; }; 01934FE725A4FFC2003DCD67 /* ClientParameterActionProtocol.swift in Sources */ = {isa = PBXBuildFile; fileRef = 01934FE625A4FFC2003DCD67 /* ClientParameterActionProtocol.swift */; }; 01C851CF23CF7B260021F976 /* JSONMap.swift in Sources */ = {isa = PBXBuildFile; fileRef = 01C851CE23CF7B260021F976 /* JSONMap.swift */; }; @@ -157,7 +156,6 @@ 016CF36825FA6DD400B82A1F /* ClientParameterHandler.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ClientParameterHandler.swift; sourceTree = ""; }; 016FF6ED259A4E6300F5E4AA /* ClientParameterModelProtocol.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ClientParameterModelProtocol.swift; sourceTree = ""; }; 016FF6F1259A4FCC00F5E4AA /* ClientParameterModel.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ClientParameterModel.swift; sourceTree = ""; }; - 016FF6F5259B9AED00F5E4AA /* ClientParameterRegistry.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ClientParameterRegistry.swift; sourceTree = ""; }; 016FF6FB259BA27E00F5E4AA /* ClientParameterProtocol.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ClientParameterProtocol.swift; sourceTree = ""; }; 01934FE625A4FFC2003DCD67 /* ClientParameterActionProtocol.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ClientParameterActionProtocol.swift; sourceTree = ""; }; 01C851CE23CF7B260021F976 /* JSONMap.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = JSONMap.swift; sourceTree = ""; }; @@ -312,7 +310,6 @@ 016FF6FB259BA27E00F5E4AA /* ClientParameterProtocol.swift */, 016FF6ED259A4E6300F5E4AA /* ClientParameterModelProtocol.swift */, 016FF6F1259A4FCC00F5E4AA /* ClientParameterModel.swift */, - 016FF6F5259B9AED00F5E4AA /* ClientParameterRegistry.swift */, 016CF36825FA6DD400B82A1F /* ClientParameterHandler.swift */, 01934FE625A4FFC2003DCD67 /* ClientParameterActionProtocol.swift */, ); @@ -872,7 +869,6 @@ 8876D5F51FB50AB000EB2E3D /* UILabel+MFCustom.m in Sources */, AFBB96B31FBA3B590008D868 /* MVMCoreGetterUtility.m in Sources */, AF43A7071FC4D7A2008E9347 /* MVMCoreObject.m in Sources */, - 016FF6F6259B9AED00F5E4AA /* ClientParameterRegistry.swift in Sources */, 94C014D924212360005811A9 /* ActionSettingModel.swift in Sources */, D2DEDCB723C63F3B00C44CC4 /* Clamping.swift in Sources */, 01DF561421F90ADC00CC099B /* Dictionary+MFConvenience.swift in Sources */, diff --git a/MVMCore/MVMCore/Models/ActionType/Client Parameters/ClientParameterHandler.swift b/MVMCore/MVMCore/Models/ActionType/Client Parameters/ClientParameterHandler.swift index 1fb9cf3..dc34e8e 100644 --- a/MVMCore/MVMCore/Models/ActionType/Client Parameters/ClientParameterHandler.swift +++ b/MVMCore/MVMCore/Models/ActionType/Client Parameters/ClientParameterHandler.swift @@ -6,9 +6,6 @@ // Copyright © 2021 myverizon. All rights reserved. // -import Foundation - - @objcMembers open class ClientParameterHandler: NSObject { var parameterHandlerList: [ClientParameterProtocol] = [] @@ -16,7 +13,7 @@ import Foundation let group = DispatchGroup() open func createParametersHandler(_ clientParameterModel: ClientParameterModelProtocol) -> ClientParameterProtocol? { - guard let parameterType = MVMCoreObject.sharedInstance()?.clientParameterRegistry?.mapping[clientParameterModel.type] else { return nil } + guard let parameterType = ModelRegistry.getHandler(clientParameterModel) as? ClientParameterProtocol.Type else { return nil } return parameterType.init(clientParameterModel) } diff --git a/MVMCore/MVMCore/Models/ActionType/Client Parameters/ClientParameterProtocol.swift b/MVMCore/MVMCore/Models/ActionType/Client Parameters/ClientParameterProtocol.swift index 2cf156b..7f52778 100644 --- a/MVMCore/MVMCore/Models/ActionType/Client Parameters/ClientParameterProtocol.swift +++ b/MVMCore/MVMCore/Models/ActionType/Client Parameters/ClientParameterProtocol.swift @@ -8,7 +8,7 @@ import Foundation -public protocol ClientParameterProtocol { +public protocol ClientParameterProtocol: ModelHandlerProtocol { static var name: String { get } init(_ clientParameterModel: ClientParameterModelProtocol) diff --git a/MVMCore/MVMCore/Models/ActionType/Client Parameters/ClientParameterRegistry.swift b/MVMCore/MVMCore/Models/ActionType/Client Parameters/ClientParameterRegistry.swift deleted file mode 100644 index ab3a488..0000000 --- a/MVMCore/MVMCore/Models/ActionType/Client Parameters/ClientParameterRegistry.swift +++ /dev/null @@ -1,39 +0,0 @@ -// -// ClientParameterRegistry.swift -// MVMCore -// -// Created by Suresh, Kamlesh on 12/29/20. -// Copyright © 2020 myverizon. All rights reserved. -// - -import Foundation - - -@objcMembers open class ClientParameterRegistry: NSObject { - - var mapping: [String: ClientParameterProtocol.Type] = [:] - - public override init() { - super.init() - registerParameters() - } - - open func register(_ handler: T.Type) { - mapping[T.name] = handler - } - - /// Add all registry here. - open func registerParameters() { } - - /// Register Default Core Client Paramter Objects - public func register(handler: T.Type, for model: M.Type) throws { - try ModelRegistry.register(model) - register(handler) - } - - /// Register Default Core Client Paramter Objects - public static func register(handler: T.Type, for model: M.Type) throws { - try ModelRegistry.register(model) - MVMCoreObject.sharedInstance()?.clientParameterRegistry?.register(handler) - } -} diff --git a/MVMCore/MVMCore/Models/ModelMapping.swift b/MVMCore/MVMCore/Models/ModelMapping.swift index 6c3df04..a50ee54 100644 --- a/MVMCore/MVMCore/Models/ModelMapping.swift +++ b/MVMCore/MVMCore/Models/ModelMapping.swift @@ -6,11 +6,9 @@ // Copyright © 2019 myverizon. All rights reserved. // -import Foundation - -@objcMembers public class ModelMapping: NSObject { +@objcMembers open class ModelMapping: NSObject { - public static func registerObjects() { + open class func registerObjects() { try? ModelRegistry.register(ActionOpenPageModel.self) try? ModelRegistry.register(ActionOpenUrlModel.self) try? ModelRegistry.register(ActionCallModel.self) diff --git a/MVMCore/MVMCore/Session/MVMCoreSessionObject.m b/MVMCore/MVMCore/Session/MVMCoreSessionObject.m index 7134c59..bcdf390 100644 --- a/MVMCore/MVMCore/Session/MVMCoreSessionObject.m +++ b/MVMCore/MVMCore/Session/MVMCoreSessionObject.m @@ -16,7 +16,6 @@ - (instancetype)init { if (self = [super init]) { self.session = [self createNSURLSession]; - [ModelMapping registerObjects]; } return self; } diff --git a/MVMCore/MVMCore/Singletons/MVMCoreObject.h b/MVMCore/MVMCore/Singletons/MVMCoreObject.h index 023ad63..03a8411 100644 --- a/MVMCore/MVMCore/Singletons/MVMCoreObject.h +++ b/MVMCore/MVMCore/Singletons/MVMCoreObject.h @@ -18,8 +18,6 @@ #import #import -@class ClientParameterRegistry; - @interface MVMCoreObject : NSObject @property (nullable, strong, nonatomic) MVMCoreSessionObject *session; @@ -28,7 +26,6 @@ @property (nullable, strong, nonatomic) MVMCoreActionHandler *actionHandler; @property (nullable, strong, nonatomic) MVMCoreSessionTimeHandler *sessionHandler; @property (nullable, strong, nonatomic) MVMCoreLoadHandler *loadHandler; -@property (nullable, strong, nonatomic) ClientParameterRegistry *clientParameterRegistry; // The delegates @property (nullable, strong, nonatomic) id globalLoadDelegate; diff --git a/MVMCore/MVMCore/Singletons/MVMCoreObject.m b/MVMCore/MVMCore/Singletons/MVMCoreObject.m index 6b60d65..21eb44e 100644 --- a/MVMCore/MVMCore/Singletons/MVMCoreObject.m +++ b/MVMCore/MVMCore/Singletons/MVMCoreObject.m @@ -21,6 +21,7 @@ } - (void)defaultInitialSetup { + [ModelMapping registerObjects]; self.session = [[MVMCoreSessionObject alloc] init]; self.cache = [[MVMCoreCache alloc] init]; self.viewControllerMapping = [[MVMCoreViewControllerMappingObject alloc] init]; @@ -28,7 +29,6 @@ self.actionHandler = [[MVMCoreActionHandler alloc] init]; self.loggingDelegate = [[MVMCoreLoggingHandler alloc] init]; self.loadHandler = [[MVMCoreLoadHandler alloc] init]; - self.clientParameterRegistry = [[ClientParameterRegistry alloc] init]; } @end