From 447df655df903ca3adbe393820c4cd23cbd0bf71 Mon Sep 17 00:00:00 2001 From: "Pfeil, Scott Robert" Date: Tue, 14 Jan 2020 09:12:09 -0500 Subject: [PATCH] make the error throwable --- .../BaseControllers/MFViewController+Model.swift | 2 +- MVMCoreUI/BaseControllers/MFViewController.m | 13 +++++++++++-- .../Models/ModelProtocols/TemplateProtocol.swift | 14 +++++--------- MVMCoreUI/Templates/MoleculeListTemplate.swift | 4 ++-- MVMCoreUI/Templates/MoleculeStackTemplate.swift | 4 ++-- MVMCoreUI/Templates/ThreeLayerTemplate.swift | 4 ++-- 6 files changed, 23 insertions(+), 18 deletions(-) diff --git a/MVMCoreUI/BaseControllers/MFViewController+Model.swift b/MVMCoreUI/BaseControllers/MFViewController+Model.swift index 88f05360..3468748b 100644 --- a/MVMCoreUI/BaseControllers/MFViewController+Model.swift +++ b/MVMCoreUI/BaseControllers/MFViewController+Model.swift @@ -32,6 +32,6 @@ extension MFViewController: MoleculeDelegateProtocol { } public extension MFViewController { - @objc func parsePageJSON() { + @objc func parsePageJSON() throws { } } diff --git a/MVMCoreUI/BaseControllers/MFViewController.m b/MVMCoreUI/BaseControllers/MFViewController.m index 1d97efd9..d2ff7cda 100644 --- a/MVMCoreUI/BaseControllers/MFViewController.m +++ b/MVMCoreUI/BaseControllers/MFViewController.m @@ -96,7 +96,15 @@ - (BOOL)shouldFinishProcessingLoad:(nonnull MVMCoreLoadObject *)loadObject error:(MVMCoreErrorObject *_Nonnull *_Nonnull)error { self.pageType = loadObject.pageType; self.loadObject = loadObject; - [self parsePageJSON]; + + NSError *parseError = nil; + [self parsePageJSONAndReturnError:&parseError]; + if (parseError) { + if (error) { + *error = [MVMCoreErrorObject createErrorObjectForNSError:parseError location:[[MVMCoreLoadHandler sharedGlobal] errorLocationForRequest:loadObject]]; + } + return false; + } // Verifies all modules needed are loaded. return [MFViewController verifyRequiredModulesLoadedForLoadObject:loadObject error:error]; @@ -250,7 +258,8 @@ - (BOOL)newPageLoaded:(nonnull NSDictionary *)page { self.loadObject.pageJSON = page; - [self parsePageJSON]; + NSError *parseError = nil; + [self parsePageJSONAndReturnError:&parseError]; return YES; } diff --git a/MVMCoreUI/Models/ModelProtocols/TemplateProtocol.swift b/MVMCoreUI/Models/ModelProtocols/TemplateProtocol.swift index eb4463d5..0498ec5d 100644 --- a/MVMCoreUI/Models/ModelProtocols/TemplateProtocol.swift +++ b/MVMCoreUI/Models/ModelProtocols/TemplateProtocol.swift @@ -14,15 +14,11 @@ public protocol TemplateProtocol: class { } public extension TemplateProtocol where Self: MFViewController { - func parseTemplateJSON() { + func parseTemplateJSON() throws { guard let pageJSON = self.loadObject?.pageJSON else { return } - do { - let data = try JSONSerialization.data(withJSONObject: pageJSON) - let decoder = JSONDecoder() - let templateModel = try decoder.decode(TemplateModel.self, from: data) - self.templateModel = templateModel - } catch { - MVMCoreUILoggingHandler.logDebugMessage(withDelegate: "error: \(error)") - } + let data = try JSONSerialization.data(withJSONObject: pageJSON) + let decoder = JSONDecoder() + let templateModel = try decoder.decode(TemplateModel.self, from: data) + self.templateModel = templateModel } } diff --git a/MVMCoreUI/Templates/MoleculeListTemplate.swift b/MVMCoreUI/Templates/MoleculeListTemplate.swift index 03f4e0fc..3a551a79 100644 --- a/MVMCoreUI/Templates/MoleculeListTemplate.swift +++ b/MVMCoreUI/Templates/MoleculeListTemplate.swift @@ -14,8 +14,8 @@ open class MoleculeListTemplate: ThreeLayerTableViewController, TemplateProtocol var observer: NSKeyValueObservation? public var templateModel: ListPageTemplateModel? - public override func parsePageJSON() { - parseTemplateJSON() + @objc public override func parsePageJSON() throws { + try parseTemplateJSON() } open override var loadObject: MVMCoreLoadObject? { diff --git a/MVMCoreUI/Templates/MoleculeStackTemplate.swift b/MVMCoreUI/Templates/MoleculeStackTemplate.swift index 39c814fa..74eae770 100644 --- a/MVMCoreUI/Templates/MoleculeStackTemplate.swift +++ b/MVMCoreUI/Templates/MoleculeStackTemplate.swift @@ -12,8 +12,8 @@ open class MoleculeStackTemplate: ThreeLayerViewController, TemplateProtocol { var observer: NSKeyValueObservation? public var templateModel: StackPageTemplateModel? - public override func parsePageJSON() { - parseTemplateJSON() + public override func parsePageJSON() throws { + try parseTemplateJSON() } open override var loadObject: MVMCoreLoadObject? { diff --git a/MVMCoreUI/Templates/ThreeLayerTemplate.swift b/MVMCoreUI/Templates/ThreeLayerTemplate.swift index 67326d09..472985e3 100644 --- a/MVMCoreUI/Templates/ThreeLayerTemplate.swift +++ b/MVMCoreUI/Templates/ThreeLayerTemplate.swift @@ -11,8 +11,8 @@ import UIKit @objcMembers open class ThreeLayerTemplate: ThreeLayerViewController, TemplateProtocol { public var templateModel: ThreeLayerPageTemplateModel? - public override func parsePageJSON() { - parseTemplateJSON() + @objc public override func parsePageJSON() throws { + try parseTemplateJSON() } override open func viewDidLoad() {