unify the many registries and mappers

This commit is contained in:
Pfeil, Scott Robert 2021-03-31 10:40:24 -04:00
parent 220eec6382
commit e5e2d334d8
8 changed files with 5 additions and 57 deletions

View File

@ -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 = "<group>"; };
016FF6ED259A4E6300F5E4AA /* ClientParameterModelProtocol.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ClientParameterModelProtocol.swift; sourceTree = "<group>"; };
016FF6F1259A4FCC00F5E4AA /* ClientParameterModel.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ClientParameterModel.swift; sourceTree = "<group>"; };
016FF6F5259B9AED00F5E4AA /* ClientParameterRegistry.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ClientParameterRegistry.swift; sourceTree = "<group>"; };
016FF6FB259BA27E00F5E4AA /* ClientParameterProtocol.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ClientParameterProtocol.swift; sourceTree = "<group>"; };
01934FE625A4FFC2003DCD67 /* ClientParameterActionProtocol.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ClientParameterActionProtocol.swift; sourceTree = "<group>"; };
01C851CE23CF7B260021F976 /* JSONMap.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = JSONMap.swift; sourceTree = "<group>"; };
@ -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 */,

View File

@ -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)
}

View File

@ -8,7 +8,7 @@
import Foundation
public protocol ClientParameterProtocol {
public protocol ClientParameterProtocol: ModelHandlerProtocol {
static var name: String { get }
init(_ clientParameterModel: ClientParameterModelProtocol)

View File

@ -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<T:ClientParameterProtocol>(_ handler: T.Type) {
mapping[T.name] = handler
}
/// Add all registry here.
open func registerParameters() { }
/// Register Default Core Client Paramter Objects
public func register<T:ClientParameterProtocol, M: ModelProtocol>(handler: T.Type, for model: M.Type) throws {
try ModelRegistry.register(model)
register(handler)
}
/// Register Default Core Client Paramter Objects
public static func register<T:ClientParameterProtocol, M: ModelProtocol>(handler: T.Type, for model: M.Type) throws {
try ModelRegistry.register(model)
MVMCoreObject.sharedInstance()?.clientParameterRegistry?.register(handler)
}
}

View File

@ -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)

View File

@ -16,7 +16,6 @@
- (instancetype)init {
if (self = [super init]) {
self.session = [self createNSURLSession];
[ModelMapping registerObjects];
}
return self;
}

View File

@ -18,8 +18,6 @@
#import <MVMCore/MVMCoreLoggingHandler.h>
#import <MVMCore/MVMCoreLoadHandler.h>
@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 <MVMCoreGlobalLoadProtocol> globalLoadDelegate;

View File

@ -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