Search the FirstSpirit Knowledge Base
Hallo liebe Community,
beim Kunden wird FirstSpirit in Verbindung mit SAP Portal benutzt. Wenn von FirstSpirit aus beim Deployment doppelte Dateinamen an das SAP Portal gesendet werden, dann wird eine dieser Dateien mit einer Tilde am Ende umbenannt. Dieses Verhalten ist jedoch unerwünscht, da es von der Web Application Firewall als Sicherheitsproblem erkannt wird.
Nun soll im Arbeitsablauf für die rekursive Freigabe geprüft werden, ob innerhalb eines Ordners doppelte Dateinamen vorhanden sind und im positiven Fall eine Meldung ausgegeben werden. Ich habe schon etwas mit den Methoden der FirstSpirit API experimentiert, hänge aber im Moment an der rekursiven Verarbeitung fest. Hat jemand schon ein ähnliches Problem lösen müssen und könnte mir evtl. etwas unter die Arme greifen? Ich würde mich sehr über jegliche Hinweise und Tipps freuen, die mich der Lösung dieses Problems näher bringen! 🙂
Michael
Hallo Michael,
eigentlich ist es ungünstig, wenn mehrere Dateien mit dem gleichen Namen vorkommen. Das Ziel sollte es sein, alle diese Konflikte aufzulösen.
An die freigegebenen Elemente mit doppelten Dateinamen kann man zum Beispiel so kommen:
Im Arbeitsablauf für die rekursive Freigabe wird wahrscheinlich die API Funktion AccessUtil.release(...) verwendet, oder?! Diese Methode liefert ein Objekt vom Typ ReleaseProgress zurück, auf welchem man die Methode getReleasedElements() aufrufen kann. Diese wiederum liefert ein Set aller IDs von Elementen, die freigegeben wurden, zurück. Diese Elemente kann man sich nun holen, prüfen ob sie vom Typ PageRef sind und, falls ja, den Ordner in welchem sie liegen über getParentFolder() holen.
Zuletzt einfach durch alle PageRefs in diesem Ordner iterieren und auf doppelte Dateinamen prüfen. (PageRef.getFilename())
Viele Grüße
Rouven
Hallo Michael,
eigentlich ist es ungünstig, wenn mehrere Dateien mit dem gleichen Namen vorkommen. Das Ziel sollte es sein, alle diese Konflikte aufzulösen.
An die freigegebenen Elemente mit doppelten Dateinamen kann man zum Beispiel so kommen:
Im Arbeitsablauf für die rekursive Freigabe wird wahrscheinlich die API Funktion AccessUtil.release(...) verwendet, oder?! Diese Methode liefert ein Objekt vom Typ ReleaseProgress zurück, auf welchem man die Methode getReleasedElements() aufrufen kann. Diese wiederum liefert ein Set aller IDs von Elementen, die freigegeben wurden, zurück. Diese Elemente kann man sich nun holen, prüfen ob sie vom Typ PageRef sind und, falls ja, den Ordner in welchem sie liegen über getParentFolder() holen.
Zuletzt einfach durch alle PageRefs in diesem Ordner iterieren und auf doppelte Dateinamen prüfen. (PageRef.getFilename())
Viele Grüße
Rouven
Hallo Rouven,
vielen Dank für deine Antwort! Das hat mir schon sehr weiter geholfen! Leider bin ich noch nicht so vertraut mit der FirstSpirit API und hänge gerade an dem Punkt, wo ich die einzelnen freigegeben Elemente hole. Du hast ja geschrieben, dass ich durch die Methode getReleasedElements() ein Set aller IDs der freigegebenen Elementen bekomme.
Nun habe ich leider noch keine Methode gefunden, die mir anhand der einzelnen IDs dann die kompletten Elemente zurück gibt, damit ich den Typ mit getElementType() prüfen kann.
Hast du da evtl. noch einen kleinen Tipp für mich? 😉
Viele Grüße,
Michael
Hallo Michael,
auf dem Store (in diesem Falle dem Sitestore) gibt es die Methode getStoreElement(Long id), welche dann die jeweiligen Elemente liefert.
Viele Grüße
Rouven