Questions & Answers

SOLVED
repositarian
Returning Observer

Probleme bei Nutzung der setUp()-Methode der AdvancedUrlFactory

Jump to solution

Hallo,

 

innerhalb unseres Projekts nutzen wir die AdvancedUrlFactory mit Konfiguration. Innerhalb eines Moduls wollen wir die URL eines FirstSpirit-Elements abgreifen und stoรŸen dabei auf Probleme. Dazu mรถchten wir die hier dokumentierte setUp(UrlFactoryContext context) Methode nutzen. Allerdings ist uns unklar, wie der UrlFactoryContext รผbergeben bzw. erzeugt werden kann.

Gibt es einen Weg, um die setUp-Methode von der AdvancedUrlFactory korrekt mit dem Kontext aufzurufen?

 

Vielen Dank
Eduard

0 Kudos
1 Solution

Accepted Solutions
mbergmann
Crownpeak employee

Hallo Eduard,

vielleicht noch ein Hinweis: die AdvancedUrlFactory (als Java-Klasse/Instanz) ist nicht dazu gedacht, selbst instanziiert und von eigenem Code aufgerufen zu werden. Insbesondere ist sie nicht Teil der API.

Entsprechend sind auch die Interface-Methoden dazu da, in eigenen UrlFactories implementiert (und nicht durch eigenen Code aufgerufen) zu werden. Aufgerufen werden sie dann โ€žpassendโ€œ durch FirstSpirit selbst. Das ist auch sinnvoll, da z.B. Dinge wie Speicherung der URL oder Prรผfung auf Konflikte (und in diesem Fall Ergรคnzung durch Postfixe) gar nicht durch die UrlFactory gemacht werden sondern vom Mechanismus โ€ždrumherumโ€œ, der bei einer direkten Nutzung der Klasse fehlen wรผrde.

Auch wenn es sich seltsam anhรถrt: Eine UrlFactory ist darum streng genommen gar nicht dazu geeignet die โ€žtatsรคchlicheโ€œ URL eines Elements zu ermitteln, da sie erstmal nur ein โ€žZwischenergebnisโ€œ bzw. einen โ€žWunschโ€œ fรผr die URL liefert, was dann aber ggf. weiterverarbeitet wird. Die โ€žfinale URLโ€œ entsteht letztlich immer erst im Rahmen einer Generierung.

Darum der Ansatz, hier den RenderingAgent zu nutzen, der genau diese Generierung โ€žsimuliertโ€œ - mit einem minimalen Stรผck Template-Code wie $CMS_REF(โ€ฆ)$ - also genau der Code, der in einem Template die URL zu einem Element erzeugen wรผrde.

Ansatz wรคre hier quasi das .createRenderer(String) - also NICHT createRenderer(IDProvider)

Hier sollte sich dann auch รผber die entsprechenden Methoden auf dem Renderer die Konfiguration setzen lassen.

Die UrlFactory das Renderers lรคsst sich hier รผber den Public name setzen - also ohne Nutzung der eigentlichen Klasse.

Viele GrรผรŸe 

Michael

 

View solution in original post

4 Replies
Peter_Jodeleit
Crownpeak employee

Hallo Peter,

danke fรผr die Antwort. Allerdings wird die Funktionalitรคt der URL-Generierung innerhalb eines FirstSpirit-Moduls benรถtigt. Gibt es da einen anderen Weg?

Viele GrรผรŸe

0 Kudos
Peter_Jodeleit
Crownpeak employee

Dafรผr ist der RenderingAgent ideal ๐Ÿ˜‰

Peter
0 Kudos
mbergmann
Crownpeak employee

Hallo Eduard,

vielleicht noch ein Hinweis: die AdvancedUrlFactory (als Java-Klasse/Instanz) ist nicht dazu gedacht, selbst instanziiert und von eigenem Code aufgerufen zu werden. Insbesondere ist sie nicht Teil der API.

Entsprechend sind auch die Interface-Methoden dazu da, in eigenen UrlFactories implementiert (und nicht durch eigenen Code aufgerufen) zu werden. Aufgerufen werden sie dann โ€žpassendโ€œ durch FirstSpirit selbst. Das ist auch sinnvoll, da z.B. Dinge wie Speicherung der URL oder Prรผfung auf Konflikte (und in diesem Fall Ergรคnzung durch Postfixe) gar nicht durch die UrlFactory gemacht werden sondern vom Mechanismus โ€ždrumherumโ€œ, der bei einer direkten Nutzung der Klasse fehlen wรผrde.

Auch wenn es sich seltsam anhรถrt: Eine UrlFactory ist darum streng genommen gar nicht dazu geeignet die โ€žtatsรคchlicheโ€œ URL eines Elements zu ermitteln, da sie erstmal nur ein โ€žZwischenergebnisโ€œ bzw. einen โ€žWunschโ€œ fรผr die URL liefert, was dann aber ggf. weiterverarbeitet wird. Die โ€žfinale URLโ€œ entsteht letztlich immer erst im Rahmen einer Generierung.

Darum der Ansatz, hier den RenderingAgent zu nutzen, der genau diese Generierung โ€žsimuliertโ€œ - mit einem minimalen Stรผck Template-Code wie $CMS_REF(โ€ฆ)$ - also genau der Code, der in einem Template die URL zu einem Element erzeugen wรผrde.

Ansatz wรคre hier quasi das .createRenderer(String) - also NICHT createRenderer(IDProvider)

Hier sollte sich dann auch รผber die entsprechenden Methoden auf dem Renderer die Konfiguration setzen lassen.

Die UrlFactory das Renderers lรคsst sich hier รผber den Public name setzen - also ohne Nutzung der eigentlichen Klasse.

Viele GrรผรŸe 

Michael

 

Type a product name