The following has evaluated to null or missing: ==> FrontendService.media.getDMTJsonObject( coverBild.groupId?number, coverBild.uuid, locale ) [in template "252001#252047#252845" at line 128, column 37] ---- Tip: If the failing expression is known to legally refer to something that's sometimes null or missing, either specify a default value like myOptionalVar!myDefault, or use <#if myOptionalVar??>when-present<#else>when-missing</#if>. (These only cover the last step of the expression; to cover the whole expression, use parenthesis: (myOptionalVar.foo)!myDefault, (myOptionalVar.foo)?? ---- ---- FTL stack trace ("~" means nesting-related): - Failed at: dMTJsonObject = FrontendService.media... [in template "252001#252047#252845" at line 128, column 21] ----
1<#-- used @ Veranstaltung-Detailseite Intro
2 used @ Publikation-Detailseite Intro
3-->
4
5<#--
6Web content templates to display teaser on thema detail page
7
8Generic template for detail pages Intro / Teaser element
9-->
10<#--
11Display the current page title
12-->
13<#include "${fullTemplatesPath}/functions/relatedContentUtil.ftl" />
14<#include "${fullTemplatesPath}/macros/debugging.ftl" />
15
16<#include "${fullTemplatesPath}/macros/page-modules/PMIntro.ftl" />
17<#include "${fullTemplatesPath}/macros/atomic-modules/AMPublicationCarousel.ftl" />
18<#include "${fullTemplatesPath}/macros/atomic-modules/AMMetadata.ftl" />
19<#include "${fullTemplatesPath}/macros/atomic-modules/AMDatetime.ftl" />
20
21
22<#--
23 renders the Intro for nearly all Pages
24 TODO: remove Share? (was in the designs, but not anymore?)
25 TODO: check if languageSelect/filter are working (js)
26
27 - portletId
28 - data = {
29 "media": string (src from image),
30 "category": string,
31 "title": string,
32 "author": string,
33 "subheadline": string,
34 "copy": string,
35 "filter": {
36 "id": string,
37 "name": string,
38 "entries": Array<Object> ({key:value}),
39 },
40 "languageSelect": {
41 "id": string,
42 "name": string,
43 "entries": Array<Object> ({key:value}),
44 },
45 "meta": {
46 "pos"; string (top/bottom)
47 "date": string,
48 "hash": string,
49 "info": string, (url)
50 },
51 "share" : {
52 "login": string,
53 "print": string,
54 "mail": string,
55 "multishare": string?? (tbd)
56 }
57 - AMMetadata: macro
58 - position: String ("top") -> defines wether the meta-data should be rendered above or below the intro-content
59 }
60-->
61
62<#assign
63 JournalArticleLocalService = serviceLocator.findService("com.liferay.journal.service.JournalArticleLocalService")
64
65 ServiceContext = staticUtil["com.liferay.portal.kernel.service.ServiceContextThreadLocal"].getServiceContext()
66 DLAPP = serviceLocator.findService("com.liferay.document.library.kernel.service.DLAppLocalService")
67
68 themeDisplay = ServiceContext.getThemeDisplay()
69 editmode = FrontendService.user.isPrivilegedUser(themeDisplay)
70
71 languageId = themeDisplay.getLocale()
72 groupId = themeDisplay.getScopeGroupId()
73 currentUrl = themeDisplay.getURLCurrent()
74
75 layout = themeDisplay.getLayout()
76 layouttpl = layout.getTypeSettingsProperties().getProperty("layout-template-id")
77/>
78
79<#setting locale="${languageId}">
80
81<#-- get article from url -->
82
83<#assign entry = FrontendService.article.getArticleToUrl(currentUrl, groupId?number)! >
84
85
86<#if entry?has_content>
87
88 <#if entry.resourcePrimKey??>
89 <#assign primaryKey = entry.resourcePrimKey?number >
90 <#elseif entry.classPK??>
91 <#assign primaryKey = entry.classPK?number >
92 </#if>
93
94 <#assign
95 jsonString = FrontendService.article.getWebcontent(primaryKey)
96 json = FrontendService.json.parseAsJson(jsonString)
97 availablelanguages = FrontendService.article.getAssetEntryToUrl(primaryKey).getAvailableLanguageIds()
98
99 title = entry.getTitle(languageId)
100 data = {
101 "title": title
102 }
103 />
104 <@debugJsonString jsonString "ADT_KASDE_DYNAMIC_INTRO" />
105
106 <#if hasContent('untertitel', languageId, json)>
107 <#assign data = data + { "subheadline": getValueForLanguage('untertitel', languageId, json, "first") } >
108 </#if>
109
110 <#if hasContent('beschreibung', languageId, json)>
111 <#assign data = data + { "copy": getValueForLanguage('beschreibung', languageId, json, "first") } >
112 </#if>
113
114 <#-- fill meta data -->
115 <#assign meta = {} />
116
117 <#-- PUBLIKATIONEN DETAIL -->
118 <#if layouttpl?contains("LAYOUT_KASDE_PUBLIKATIONEN_DETAIL")>
119
120 <#if hasContent('coverDMTKASDEMEDIUM', languageId, json)>
121 <#assign
122 coverBildString = getValueForLanguage('coverDMTKASDEMEDIUM', languageId, json, "first")
123 />
124
125 <#if coverBildString?has_content>
126 <#assign
127 coverBild = FrontendService.json.parseAsJson(coverBildString)
128 dMTJsonObject = FrontendService.media.getDMTJsonObject( coverBild.groupId?number, coverBild.uuid, locale )
129 linkToDMT = FrontendService.media.getImageURLForAMConfiguration('hd-resolution',coverBild.groupId?number, coverBild.uuid )
130 data = data + { "media": linkToDMT, "meta" : dMTJsonObject }
131 />
132 <#if dMTJsonObject.altText?? >
133 <#assign data = data + {"alt" : dMTJsonObject.altText} />
134 </#if>
135 <#if dMTJsonObject.quelle??>
136 <#assign meta = meta + { "quelle": dMTJsonObject.quelle } />
137 </#if>
138 </#if>
139 <#-- uncomment to display pdf cover as Intro Image
140 <#elseif hasContent('document_pdfDMTBASICDOCUMENT', languageId, json)>
141 <#assign
142 pdfDocument = getValueForLanguage('document_pdfDMTBASICDOCUMENT', languageId, json, "first")
143 fileEntry = FrontendService.media.getFileEntry(pdfDocument.uuid, groupId?number)!/>
144 <#if fileEntry?has_content>
145 <#assign
146 linkToThumbnail = FrontendService.link.getThumbnailSrc(fileEntry , themeDisplay)
147 data = data + { "media": linkToThumbnail }
148 />
149 </#if>
150 -->
151 </#if>
152
153 <#assign
154 meta = meta + { "orderInfo": "true" }
155 verbundJournalArticle = FrontendService.publication.getVerbundToPublikation( entry )!""
156 />
157
158
159
160 <#if hasContent('erscheinungsdatum', languageId, json)>
161 <#assign
162 erscheinungsdatum = getValueForLanguage('erscheinungsdatum', languageId, json, "first")
163 />
164 <#if erscheinungsdatum?has_content >
165 <#assign
166 erscheinungsdatumFormatted = FrontendService.date.getDateFormatLong( erscheinungsdatum, languageId )
167 meta = meta + { "date": erscheinungsdatumFormatted }
168 />
169 </#if>
170 </#if>
171
172 <#if verbundJournalArticle?has_content>
173 <#assign
174 verbundJsonString = FrontendService.article.getWebcontent(verbundJournalArticle.resourcePrimKey)
175 verbundJson = FrontendService.json.parseAsJson(verbundJsonString)
176 laufendenummer = getValueForLanguage('laufendenummer', languageId, verbundJson, "first")
177 coverImg = getValueForLanguage('mediumDMTKASDEMEDIUM', languageId, verbundJson, "first")
178 />
179 <@debugJsonString verbundJsonString "ADT_KASDE_DYNAMIC_INTRO-verbundJournalArticle" />
180 <#assign meta = meta + { "laufendenummer": laufendenummer } >
181
182 <#if coverImg?has_content && coverImg.url?has_content >
183 <#assign meta = meta + { "coverImg": coverImg.url } >
184 </#if>
185 </#if>
186
187
188 <#if meta?has_content>
189 <#assign data = data + {"meta": meta } >
190 </#if>
191
192 </#if>
193 <#-- PUBLIKATIONEN DETAIL END -->
194
195
196 <#-- VERANSTALTUNGEN DETAIL -->
197 <#if layouttpl?contains("LAYOUT_KASDE_VERANSTALTUNGEN_DETAIL")>
198 <#assign
199 friendlyUrl = FrontendService.article.getFriendlyUrl(primaryKey, languageId, groupId)!""
200 links = []
201 />
202 <#if availablelanguages?has_content && friendlyUrl?has_content>
203 <#if (availablelanguages?size > 1) >
204 <#list availablelanguages as language>
205 <#assign
206 defaultLanguage = "de_DE"
207 defaultLocale = FrontendService.language.getLocaleByKey(defaultLanguage)
208 linkLocale = (FrontendService.language.getLocaleByKey(language))!defaultLocale
209 langFriendlyUrl = FrontendService.article.getFriendlyUrl(primaryKey, linkLocale, groupId)
210
211 link = {
212 "key": language!defaultLanguage,
213 "value": linkLocale.getDisplayLanguage(languageId),
214 "url": "/c/portal/update_language?p_l_id=" +
215 layout.plid + "&redirect=" + langFriendlyUrl +
216 "&languageId=" + language
217 }
218 />
219 <#if language == languageId>
220 <#assign link = link + { "selected": "true" } >
221 </#if>
222 <#assign links = links + [link]>
223 </#list>
224 <#assign
225 data = data + {
226 "languageSelect": {
227 "id": "languageSelectRedirect",
228 "name": "languageselectRedirect",
229 "entries": links,
230 "label": languageUtil.get(languageId, "diese.veranstaltung.ist.in.weiteren.sprachen.verfuegbar")
231 }
232 }
233 />
234 </#if>
235 </#if>
236 </#if>
237
238 <#if hasContent('erscheinungsdatum', languageId, json)>
239 <#assign
240 startdate = getValueForLanguage('erscheinungsdatum', languageId, json, "first")
241 meta = meta + { "start": startdate?date.iso, "end": "" }
242 />
243 </#if>
244
245 <#if hasContent('startdatum', languageId, json)>
246 <#assign
247 startdate = getValueForLanguage('startdatum', languageId, json, "first")
248 meta = meta + { "start": startdate?date.iso, "end": "" }
249 />
250 </#if>
251
252 <#if hasValue('einfuehrungText', locale, json)>
253 <#assign data = data + { "einfuehrungText" : getValueForLanguage('einfuehrungText', locale, json, "first") } >
254 <#elseif hasValue(FrontendService.article.getFieldNameByReferenceName(primaryKey, 'einfuehrungText'), locale, json, "first")>
255 <#assign data = data + { "einfuehrungText" : getValueForLanguage(FrontendService.article.getFieldNameByReferenceName(primaryKey, 'einfuehrungText'), locale, json, "first") } >
256 </#if>
257
258 <#if hasContent('endedatum', languageId, json)>
259 <#assign
260 enddate = getValueForLanguage('endedatum', languageId, json, "first")
261 meta = meta + { "end": enddate?date.iso }
262 />
263 </#if>
264
265 <#if hasContent('startzeit', languageId, json)>
266 <#assign
267 startzeit = getValueForLanguage('startzeit', languageId, json, "first")
268 />
269 <#if startzeit?has_content >
270 <#assign meta = meta + { "startzeit": startzeit } />
271 </#if>
272 </#if>
273
274 <#if hasContent('endezeit', languageId, json)>
275 <#assign
276 endezeit = getValueForLanguage('endezeit', languageId, json, "first")
277 meta = meta + { "endezeit": endezeit }
278 />
279 </#if>
280
281 <#if hasContent('ortWCSKASDEORT', languageId, json)>
282 <#assign
283 ortWCSKASDEORT = FrontendService.json.parseAsJson(getValueForLanguage('ortWCSKASDEORT', languageId, json, "first"))
284 ortWCSKASDEORTPrimaryKey = ortWCSKASDEORT.classPK?number
285 ortWCSKASDEORTWebContent = FrontendService.article.getWebcontentByPk(ortWCSKASDEORTPrimaryKey)!""
286 />
287 <#if ortWCSKASDEORTWebContent?has_content >
288 <#assign
289 ortWCSKASDEORTTitle = ortWCSKASDEORTWebContent.getTitle(languageId)!""
290 />
291 <#if ortWCSKASDEORTTitle?has_content >
292 <#assign
293 meta = meta + { "ortWCSKASDEORT": ortWCSKASDEORTTitle }
294 />
295 </#if>
296 </#if>
297 </#if>
298
299
300 <#if hasContent('veranstaltungsnummer', languageId, json)>
301 <#assign
302 verauuid = getValueForLanguage('veranstaltungsnummer', languageId, json, "first")
303 meta = meta + { "verauuid": verauuid }
304 />
305 </#if>
306
307
308 <#if (data.meta)?has_content >
309 <#assign meta = data.meta />
310 </#if>
311
312 <#if !(data.media)?has_content && hasContent('mediumDMTKASDEMEDIUM', languageId, json)>
313 <#assign
314 medium = getValueForLanguage('mediumDMTKASDEMEDIUM', languageId, json, "first")
315 mediaData = getRelatedMediaObject(medium, themeDisplay, languageId, FrontendService, "hd-resolution")
316 />
317 <#assign data = data + { "media": mediaData.url , "meta" : mediaData.meta} >
318
319
320 <#if mediaData.meta?? && mediaData.meta.quelle??>
321 <#assign meta = meta + data.meta + { "quelle": mediaData.meta.quelle } />
322 </#if>
323 </#if>
324
325
326 <#if meta?has_content>
327 <#assign data = data + {"meta": meta } >
328 </#if>
329
330 <#-- END fill meta data -->
331
332 <#if hasContentForSequence('autorenWCSKASDEPERSON', languageId, json)>
333 <#assign
334 journalArticles = getValueForLanguageAnsprechpartner('autorenWCSKASDEPERSON', languageId, json)
335 authors = []
336 />
337 <#list journalArticles as articleString>
338 <#assign article = FrontendService.json.parseAsJson(articleString) />
339 <#if article?has_content && article?is_hash && article.classPK??>
340 <#assign articleDereferenced = FrontendService.person.resolveContactInstanceToPerson(article, languageId)!"" />
341 <#if articleDereferenced?has_content >
342 <#assign
343 author = ""
344 articlePrimaryKey = articleDereferenced.classPK?number
345 articleJsonString = FrontendService.article.getWebcontent(articlePrimaryKey)
346 articleJson = FrontendService.json.parseAsJson(articleJsonString)
347 />
348 <@debugJsonString articleJsonString "ADT_KASDE_DYNAMIC_INTRO-autorenWCSKASDEPERSON" />
349 <#if hasValue('anredetitel', languageId, articleJson)>
350 <#assign author = author + getValueForLanguage('anredetitel', languageId, articleJson, " ") + " ">
351 </#if>
352 <#if hasValue('vorname', languageId, articleJson)>
353 <#assign author = author + getValueForLanguage('vorname', languageId, articleJson, " ") + " ">
354 </#if>
355 <#if hasValue('nachname', languageId, articleJson)>
356 <#assign author = author + getValueForLanguage('nachname', languageId, articleJson, " ") + " ">
357 </#if>
358
359 <#attempt>
360 <#assign href = FrontendService.article.getFriendlyUrl(articlePrimaryKey, languageId, groupId)!"#" >
361 <#recover>
362 <#assign href = "#" >
363 </#attempt>
364 <#if href?has_content && href != "#" && href != "/_404">
365 <#assign author = '<a href="' + href + '">' + author?trim + '</a>'>
366 </#if>
367
368 <#assign authors = authors + [author?trim]>
369 </#if>
370 </#if>
371 </#list>
372 <#if authors?has_content>
373 <#assign data = data + { "author": authors?join(", ") } >
374 </#if>
375 </#if>
376
377 <#if layouttpl?contains("LAYOUT_KASDE_VERANSTALTUNGEN_DETAIL") >
378 <#assign categories = FrontendService.category.getCategoriesToArticle(primaryKey, "VERANSTALTUNGSTYP")! >
379 <#if categories?has_content && categories[0]?has_content >
380 <#assign data = data + { "category": categories[0].getTitle(languageId,true)! } >
381 </#if>
382
383 <#if hasContent('ausgebucht', languageId, json)>
384 <#assign data = data + { "ausgebucht" : getValueForLanguage('ausgebucht', languageId, json, "first") }>
385 </#if>
386
387 <#if hasContent('storniert', languageId, json)>
388 <#assign data = data + { "storniert" : getValueForLanguage('storniert', languageId, json, "first") }>
389 </#if>
390
391 <#elseif layouttpl?contains("LAYOUT_KASDE_PUBLIKATIONEN_DETAIL") >
392 <#assign categories = FrontendService.category.getCategoriesToArticle(primaryKey, "PUBLIKATIONSREIHE")! >
393 <#if categories?has_content && categories[0]?has_content >
394 <#assign data = data + { "category": categories[0].getTitle(languageId,true)! } >
395 </#if>
396 <#else>
397 <#assign categories = FrontendService.category.getCategoriesToArticle(primaryKey, "THEMA")! >
398 <#if categories?has_content && categories[0]?has_content >
399 <#assign data = data + { "category": categories[0].getTitle(languageId,true)! } >
400 </#if>
401 </#if>
402
403
404 <#assign
405 languages = []
406 />
407
408 <#attempt>
409 <#if json["document_pdfDMTBASICDOCUMENT"]?? >
410 <#if availablelanguages?has_content>
411 <#list availablelanguages as pdf_language>
412 <#assign
413 docRefJson = getValueForLanguage('document_pdfDMTBASICDOCUMENT', pdf_language, json, "first")
414 docRef = FrontendService.json.parseAsJson(docRefJson)
415 />
416 <#if docRef?is_hash && pdf_language != languageId >
417 <#assign
418 lang = FrontendService.language.getLocaleByKey(pdf_language)!""
419 docGroupId = docRef["groupId"]?number
420 docUuid = docRef["uuid"]
421 dMTJsonObject = FrontendService.media.getDMTJsonObject( docGroupId, docUuid, locale )
422 dMTLink = FrontendService.media.getLinkToDMT( dMTJsonObject )
423 />
424 <#if lang?has_content>
425 <#assign
426 languages = languages + [
427 {
428 "key": pdf_language,
429 "value": FrontendService.language.getLocaleByKey(pdf_language).getDisplayLanguage(),
430 "url": dMTLink
431 }]
432 />
433 </#if>
434 </#if>
435 </#list>
436 </#if>
437 </#if>
438 <#recover>
439 </#attempt>
440
441 <#if (languages?size > 0)>
442 <#attempt>
443 <#assign
444 data = data + { "languageSelect": {
445 "id": "languageSelect",
446 "name": "languageselect",
447 "entries": languages,
448 "documents": "",
449 "button": "true"
450 }}
451 />
452 <#recover>
453 </#attempt>
454 </#if>
455
456 <@PMIntro "ADT_KASDE_DYNAMIC_INTRO" data AMMetadata AMDatetime "bottom" />
457 ${FrontendService.article.getEditArticleHtml(primaryKey, themeDisplay)}
458
459 <#if data.meta?has_content>
460 <#if data.meta.laufendenummer?has_content !isACColorScheme() && !isVLCColorScheme() && !isDPMColorScheme()>
461 <div>
462 <div id="publicationVerbundPagination">
463 <@AMPublicationCarousel data.meta.laufendenummer data.meta.date data.meta.coverImg />
464 </div>
465 </div>
466 </#if>
467 </#if>
468
469<#elseif (editmode?? && editmode)>
470 <@errorMessage languageUtil.get(locale, "kein.journalArticle.gefunden") "ADT_KASDE_DYNAMIC_INTRO" layouttpl currentUrl />
471</#if>
On the brink of nuclear conflict
Nuclear weapons pose the greatest existential threat to humanity. The consequences of a nuclear war—even one limited in scale—would be catastrophic, decimating not only the human population and environment, but also triggering food insecurity and global economic collapse. Without question, a peaceful and secure world is one without nuclear weapons. Yet, getting to global zero remains easier said than done.
In spite of the existing disarmament and non-proliferation measures, trends to the contrary have emerged. While the number of nuclear weapons has decreased considerably in past decades, nearly 13,000 still exist.[i] Nuclear-armed states spent more than $180 billion in 2021 to maintain and modernize their arsenals.[ii] Further, many remain reliant on nuclear weapons as a mainstay of their strategic deterrence policies. Meanwhile, advanced technologies, like AI and cyber, have exposed vulnerabilities in nuclear-weapons systems, increasing the risk of miscalculation and nuclear catastrophe.
Further exacerbating insecurity and instability is the ongoing war in Ukraine. The Zaporizhzhia nuclear power plant has been frequently caught in the crossfire, raising concerns about a potential nuclear disaster. Meanwhile, Russia’s nuclear saber-rattling towards the West have put many on edge.
In view of this troubling trajectory, the international community has been questioning the effectiveness and credibility of the existing disarmament and non-proliferation regime. As nuclear weapons states remain reliant on their arsenals for security and insist on more gradual approaches to disarmament, the nuclear have-nots have been pushing back and calling for a more urgent approach. This summer, two important events—the First Meeting of the Treaty on the Prohibition of Nuclear Weapons (TPNW) and the Tenth Review Conference of the Treaty on the Non-Proliferation of Nuclear Weapons (NPT)—underscored the reality that a nuclear weapons-free world remains a distant goal.
TPNW: Normalizing nuclear zero
Born of frustration with the nuclear status quo and a lack of meaningful progress on disarmament, the TPNW seeks to prohibit all nuclear weapons-related activities, including threats to use them. At its core, it emphasizes the dire humanitarian consequences wrought by nuclear weapons, making their abolition a moral, legal, and ethical imperative.
With its entry into force in 2021, the TPNW was recognized as a significant milestone in freeing the world of nuclear weapons, yet it was not without pushback. Nuclear-armed states and those under their nuclear umbrellas objected to the TPNW, arguing it would undermine the existing disarmament and non-proliferation regime. Far from conflicting with the NPT, the TPNW builds upon, contributes to, and complements the NPT’s vision for a nuclear-free world. All nuclear-armed states have yet to sign the Treaty—an unlikely prospect for the foreseeable future, though, as doing so would legally oblige them to abolish their nuclear arsenals.
Convened from June 21-23 in Vienna, Austria, the First Meeting of the TPNW resulted in a declaration and ambitious 50-point action plan to advance its implementation, including:
Prioritizing the stigmatization and de-legitimization of nuclear weapons and building global norms against them;
Universalizing adherence to the TPNW through increased diplomatic outreach and highlighting its importance at the UN in statements and resolutions;
Setting a 10-year deadline for nuclear weapons states to eliminate their arsenals, effective upon joining;
Setting a 90-day period for host states to remove nuclear weapons, effective upon joining; and
Appointing an informal coordinator to identify areas of cooperation between the TPNW and NPT.
Although the newest addition to the disarmament and non-proliferation architecture, the TPNW has 68 state parties to date, signaling a growing appetite for accelerated change.
NPT: The uncertain nuclear future
In contrast to the First Meeting of the TPNW, the Tenth Review Conference of the NPT concluded in disappointment and dismay, unable to deliver a final outcome document by consensus. In light of the deteriorating security environment, many looked forward to the Review Conference as a critical opportunity to reset the course of the non-proliferation and disarmament regime.
As expected, the war in Ukraine loomed large over the NPT Review Conference, ultimately impacting its outcome. Hours before the Conference’s closing, Russia objected to references in the final draft, thereby blocking its adoption. As Russia’s delegate explained, consensus would have been impossible given the political dimension of the references to Zaporizhzhia and that expressed “grave concern” for military activities near the nuclear power plant. Russia further alleged that comments made by member states throughout the NPT conference were “anti-Russian, politicized, unjustified, and misleading on the situation in Ukraine.”[iii] During closing statements, member states also used the opportunity to speak out against Russia’s war of aggression. Fifty-five countries, as well as the European Union, issued a joint statement to condemn and rebuke Russia’s dangerous nuclear rhetoric and actions in Ukraine that have raised nuclear alert levels.[iv]
While Russia was the lone state party to block consensus, it is worth noting that several others found the draft outcome document also less than satisfactory. In particular, state parties criticized the text’s lack of meaningful and ambitious commitments towards nuclear disarmament and reducing reliance on nuclear deterrence, as well as benchmarks, targets, and timeframes to carry out implementation of the Treaty. However, as Ambassador Gustavo Zlauvinen, President of the Tenth NPT Review Conference, noted, an outcome document was unlikely to please everyone—yet many state parties were willing to adopt it as a sign of good will.[v]
As dispiriting as the conclusion of the 2022 NPT Review Conference may be, the absence of an outcome document does not necessarily mean the Review Conference ended in failure. Although far from perfect, the draft outcome document reflected a shared responsibility on the part of all state parties to uphold the NPT, as the cornerstone of the global nuclear non-proliferation regime. During the four-week-long conference, delegations also discussed in depth critical issues relating to all three pillars of the Treaty, laying the foundation for future work during this new review cycle.[vi] Given the current polarized context, the fact that the Review Conference was even able to convene and state parties engaged in dialogue could be considered another success in its own right.[vii]
Nuke-free: A utopian dream?
It was against this backdrop that the global community gathered on September 26 to commemorate the International Day for the Total Elimination of Nuclear Weapons. The more than 70 leaders, foreign affairs ministers, and representatives in attendance offered bleak assessments of the state of disarmament and non-proliferation today, warning of the existential threat that nuclear weapons pose to humanity and underscoring the need for greater multilateral efforts to eliminate this threat.[viii] The war in Ukraine also featured prominently in the remarks of many member states, who decried Russia’s dangerous declarations and actions that have heightened the risk of nuclear disaster. As Ambassador Ishikare Kimihiro, the Permanent Representative of Japan to the United Nations, cautioned, the possibility of the use of nuclear weapons today is higher than at any point since the Cold War.[ix]
Given this grim outlook, a world free of nuclear weapons might seem like a utopian dream. Yet, Secretary-General António Guterres urged the global community not to succumb to disillusionment and, instead, embrace new commitment towards a more peaceful, secure, and sustainable future.[x]
Non-nuclear weapons states made a strong showing to voice their collective concerns about the crumbling nuclear order. Many called out the actions of nuclear weapons states that have run contrary to their obligations and commitments under the existing disarmament and non-proliferation regime, notably the qualitative improvement and quantitative increase of nuclear arsenals. Minister of Foreign Affairs of Malaysia Saifuddin Abdullah criticized the nuclear-armed states for effectively holding the world hostage with their prolonged possession of nuclear weapons.
Member states emphasized the critical role that nuclear weapons-free-zones can play in ensuring a peaceful, secure world. Countries from Africa, Latin America, and the Caribbean highlighted their experiences in negotiating and developing such zones, which have successfully prevented the proliferation of nuclear weapons and helped to restore regional confidence. The Arab countries currently involved in negotiating a zone free of WMDs and nuclear weapons in the Middle East also expressed their support and called for the implementation of a zone. In this spirit, the Permanent Representative of Lebanon, Ambassador Amal Mudallali, urged all countries to participate in the November 2022 Conference on the Establishment of a Middle East Zone Free of Nuclear Weapons and Other Weapons of Mass Destruction in New York.
Member states also called to attention the various multilateral treaties at the international community’s disposal, which can serve as vital tools to achieve progress on disarmament and non-proliferation. General Assembly President Csaba Kőrösi, along with several member states, underscored the importance and relevance of the Comprehensive Nuclear-Test-Ban Treaty (CTBT) to this shared goal, urging the eight states who have yet to ratify to do so without delay and allow its entry into force. While member states lamented the lack of consensus at the Tenth NPT Review Conference, they acknowledged that the Treaty remains the cornerstone of the non-proliferation regime and encouraged others to redouble efforts to advance its implementation. In this regard, several member states voiced support for the TPNW as a complement to the NPT. Austria’s Permanent Representative, Ambassador Alexander Marschik, praised the TPNW’s entry into force, remarking that many are not satisfied with the “nuclear status quo.”
Notably, China, India, and Pakistan were the only nuclear-armed states to deliver remarks at the plenary meeting. Ambassador Zhang Jun, the Permanent Representative of China to the UN, emphasized that Beijing will not participate in a nuclear arms race with any country, adding that China maintains a no first use nuclear policy. Suggesting that global nuclear disarmament might be better achieved incrementally, India’s Vice-Minister for Foreign Affairs Sanjay Verma recommended that a revitalized conference on disarmament would be the appropriate forum to achieve a legally binding TPNW.
Civil society actors, from youth leaders to representatives of the medical community, also took to the floor to voice their support for a nuclear weapons-free future.
A new vision for the global nuclear order
The outlook for the global nuclear order might appear bleak, but, worldwide, there remains an overwhelming political will to work towards a nuclear weapons-free world. Setbacks in progress towards disarmament and non-proliferation should not derail or call into question the credibility of the existing framework. In this ever-worsening security environment, abandoning all commitments under the current regime would be too costly.
In this spirit, Secretary-General Guterres urged all member states on the International Day for the Total Elimination of Nuclear Weapons to “use every avenue of dialogue, diplomacy, and negotiation to ease tensions, reduce risks, and eliminate nuclear threats.” Citing his New Agenda for Peace, he called for a new vision for nuclear disarmament and non-proliferation based on a common understanding of the varied threats facing the global community, including new types of nuclear weapons and their delivery systems, the blurred lines between conventional and nuclear weapons, and risks arising from the nuclear-cyber and nuclear-outer space nexus.[xi]
Similarly, President Kőrösi stressed that the current multilateral framework is the only way to protect humanity and future generations from nuclear annihilation. He further urged all member states to find rational compromises and workable solutions to make the dream of nuclear zero a reality.
As the International Day for the Elimination of Nuclear Weapons reminds us, ensuring a world free of nuclear weapons is a shared goal and responsibility. However, the real challenge lies in how and when that becomes a reality. Ahead of the Second Meeting of the TPNW in 2023 and the Eleventh NPT Review Conference in 2026, the nuclear-haves and nuclear have-nots have much to reflect on and strive for, particularly as they try to bridge the divide on their approaches to disarmament and non-proliferation.
[i] “Global nuclear arsenals are expected to grow as states continue to modernize–New SIPRI Yearbook out now” Stockholm International Peace Research Institute, 13 June 2022, https://www.sipri.org/media/press-release/2022/global-nuclear-arsenals-are-expected grow-states-continue-modernize-new-sipri-yearbook-out-now.
[ii] “2021 Global Nuclear Weapons Spending Report,” The International Campaign to Abolish Nuclear Weapons, 14 June 2022, https://www.icanw.org/spending_report.
[iii] “Non-Proliferation Treaty Review Conference Ends without Adopting Substantive Outcome Document Due to Opposition by One Member State,” United Nations Meetings Coverage and Press Releases, 26 August 2022, https://press.un.org/en/2022/dc3850.doc.htm.
[iv] Joint Statement at the Tenth Review Conference of the Parties to the
Treaty on the Non-Proliferation of Nuclear Weapons, available at https://reachingcriticalwill.org/images/documents/Disarmament-fora/npt/revcon2022/statements/26Aug_France-joint.pdf.
[v] Hybrid Press Briefing by Ambassador Gustavo Zlauvinen, President of the Tenth Review Conference of the Parties to the Treaty on the Non-Proliferation of Nuclear Weapons (NPT), 26 August 2022, available at https://media.un.org/en/asset/k1q/k1qs3ynkw8.
[vi] Ibid.
[vii] “The Tenth NPT Review Conference: Reflections of President Gustavo Zlauvinen,“ online webinar organized by the Multilateral Dialogue of the Konrad-Adenauer-Foundation in Vienna together with Atomic Reporters, 08 September 2022, available at https://www.youtube.com/watch?v=iz-YmZ-MlX0.
[viii] “With Risk of ‘Armageddon, Apocalypse’ from Just One Single Nuclear Detonation, General Assembly Members Reaffirm Determination to Eliminate Such Weapons,” United Nations Meetings Coverage and Press Releases, 26 August 2022, https://press.un.org/en/2022/ga12453.doc.htm.
9 Statement by H.E. Ambassador ISHIKANE Kimihiro, Permanent Representative of Japan to the United Nations, at the High-level Plenary Meeting to Commemorate and Promote the International Day for the Total Elimination of Nuclear Weapons, Permanent Mission of Japan to the United Nations, 26 September 2022, https://www.un.emb-japan.go.jp/itpr_en/ishikane092622.html.
[x] Secretary-General's remarks for the International Day for the Total Elimination of Nuclear Weapons, 26 September 2022, https://www.un.org/sg/en/content/sg/statement/2022-09-26/secretary-generals-remarks-for-the-international-day-for-the-total-elimination-of-nuclear-weapons.
[xi] Ibid.