Diese Seite fasst Systemanforderungen fĂĽr die Nutzung des MyCoRe LTS 2025.06 und die Migration von Version 2024.06 zu 2025.06 zusammen.
FĂĽr den Betrieb einer MyCoRe-Anwendung unter LTS 2025.06 sind folgende Voraussetzungen zu erfĂĽllen:
MyCoRe LTS 2025 ist auf diesen Betriebsystemen im Einsatz. Höhere Versionen sollten kein Problem darstellen.
Zur Arbeit mit MyCoRe LTS 2025 sind folgende Softwarekomponenten erforderlich bzw. empfohlen. Diese sind alle von Drittanbietern und im Normalfall in den Distributionen enthalten.
@Deprecated markiert wurden.
Zudem mĂĽssen die angepassten Regeln eingehalten werden, wenn man sein Projekt so konfiguriert hat, dass die fĂĽr MyCoRe geltenden
Regeln ebenfalls eingehalten werden sollen. Insbesondere in diesem Zusammenhang wurden einige Methoden und Klassen umbenannt
(siehe unten).
MCRSystemUserInformation wurde in ein Enum umgewandelt (siehe unten).
MCRResourceException wurde in ein entfernt (siehe unten).
MCRUser wurde verändert (siehe unten).
MCR.Persistence.Rule.Store_Class wurde in MCR.Persistence.Rule.Store.Class umbenannt.
Die wohl wesentlichste Änderung im Zusammenhang mit den neuen PMD-Regeln ist das Benennungsschema für Methoden, die im weitesten Sinne als "statische Factory-Methoden" aufgefasst werden können (also nicht zwingend nach der GoF-Definition). Dies sind statische Methoden, die ein Objekt vom Typ ihrer umschließenden Klasse zurückliefern.
Insbesondere die zahlreichen Zugriffsmethoden fĂĽr Singleton-Instanzen fallen in diese
Kategorie. Diese hieĂźen bisher zumeist instance() oder getInstance(). Zugleich gab es bisher viele
Methode mit Namen getInstance(), die keine Zugriffsmethoden fĂĽr Singleton-Instanzen waren. PMD verschreibt jedoch,
dass der Name getInstance() ausschlieĂźlich fĂĽr Zugriffsmethoden fĂĽr Singleton-Instanzen zu verwenden ist.
FĂĽr MyCoRe wurde das folgende Benennungsschema definiert:
getInstance(): Zugriffsmethode fĂĽr Singleton-Instanz
createInstance(), createInstance(...): Methode die garantiert eine neue Instanz zurĂĽckliefert
obtainInstance(), obtainInstance(...): Methode die nicht unbedingt eine neue Instanz zurĂĽckliefert
of(), ofXXX(), of(...), ofXXX(...): Fabrikmethode fĂĽr
"Value-artige" Klassen (neuerdings jedoch eher als record implementiert).
fromXXX(...): Fabrikmethode fĂĽr Enums und "Enum-artige" Klassen.
Der Name createInstance wird nur verwendet, wenn die Eigenschaft, dass bei jedem Aufruf garantiert eine neue Instanz erzeugt wird,
fĂĽr den aufrufenden Code von Bedeutung ist. Andernfalls wird der Name obtainInstance verwendet. Letzterer sollte daher bevorzugt werden,
auch wenn die aktuelle Implementierung jedes Mal eine neue Instanz erzeugt. Dies lässt zukünftige Änderungen (z.B. Caching der erzeugten Instanzen) zu.
Alle Methoden, die diesem Benennungsschema nicht gerecht wurden, wurden umbenannt.
Zudem wurde jeweils eine weitere Methode mit dem alten Namen hinzugefĂĽgt und als @Deprecated markiert.
Im Kommentar zur Methode wird jeweils auf die nun zu verwendende Methode hingewiesen. Eigener Code bleibt daher noch funktionsfähig,
muss aber vor der Verwendung der nächsten MyCoRe-Version umgestellt werden.
In wenigen Fällen wurden für Fabrikmethoden auch semantische Bezeichnungen wie now() oder parseXml() beibehalten
oder die Fabrikmethode durch einen entsprechenden Konstruktor ersetzt.
Mit der Umstellung der PMD Regeln werden nun alle serialisierbaren Klassen wie folgendermaĂźen gekennzeichnet:
|
|
Mit der Umstellung der PMD Regeln werden nun alle Logger folgendermaĂźen erstellt:
|
|
Einzig in abstrakten Klassen ist auch folgende Variante erlaubt und bei neuem Code bevorzugt zu verwenden:
|
|
Unabhängig von den PMD-Regeln wurden die folgenden Methoden umbenannt oder minimal modifiziert:
MCRMetaHistoryItem#getInternalid() ⮕ MCRMetaHistoryItem#getInternalId()MCRMetaHistoryItem#setInternalid(long) ⮕ MCRMetaHistoryItem#setInternalId(long)MCRMetaHistoryItem#createdNow(MCRObjectId) ⮕ MCRMetaHistoryItem#now(MCRObjectId, MCRMetadataHistoryEventType)MCRMetaHistoryItem#deletedNow(MCRObjectId) ⮕ MCRMetaHistoryItem#now(MCRObjectId, MCRMetadataHistoryEventType)MCRConfiguration2#getInstances(String) ⮕ MCRConfiguration2#getInstance(Class, String)MCRConfiguration2#instantiateClass(String) ⮕ MCRConfiguration2#instantiateClass(Class, String)MCRConfigurableInstanceHelper#getInstance(String) ⮕ MCRConfigurableInstanceHelper#getInstance(Class, String)MCRConfigurableInstanceHelper#getInstance(MCRInstanceConfiguration) ⮕ MCRConfigurableInstanceHelper#getInstance(MCRInstanceConfiguration, String)MCRAccessException#missingPrivilege(...) ⮕ MCRMissingPrivilegeException#new(...)MCRAccessException#missingPermission(...) ⮕ MCRMissingPermissionException#new(...)MCRUser#getPassword() ⮕ MCRUser#getHash()MCRUser#setPassword(String) ⮕ MCRUser#setHash(String)MCRUser#getEMailAddress() ⮕ MCRUser#getEMail()MCRPersistenceHelper#getWebPage(ServletContext, String, String) ⮕ MCRPersistenceHelper#getWebPage(String, String)
Es wurde jeweils eine weitere Methode mit dem alten Namen hinzugefĂĽgt und als @Deprecated markiert.
Im Kommentar zur Methode wird jeweils auf die nun zu verwendende Methode hingewiesen. Eigener Code bleibt daher noch funktionsfähig,
muss aber vor der Verwendung der nächsten MyCoRe-Version umgestellt werden.
Die Klasse MCRSystemUserInformation wurde in ein Enum umgewandelt. Folgende Methoden wurden dabei durch Enum-Konstanten ersetzt:
MCRSystemUserInformation#getGuestInstance() ⮕ MCRSystemUserInformation#GUESTMCRSystemUserInformation#getJanitorInstance() ⮕ MCRSystemUserInformation#JANITORMCRSystemUserInformation#getSystemInstance() ⮕ MCRSystemUserInformation#SYSTEM_USERMCRSystemUserInformation#getSuperUserInstance() ⮕ MCRSystemUserInformation#SUPER_USER
Die bestehenden Methoden wurden jeweils beibehalten und als @Deprecated markiert.
Im Kommentar zur Methode wird jeweils auf die nun zu verwendende Konstante hingewiesen. Eigener Code bleibt daher noch funktionsfähig,
muss aber vor der Verwendung der nächsten MyCoRe-Version umgestellt werden.
Unabhängig von den PMD-Regeln wurden die folgenden Klassen umbenannt:
MCRDefaultXMLMetadataManager ⮕ MCRDefaultXMLMetadataManagerAdapterMCRGZIPOCFLXMLMetadataManager ⮕ MCRGZIPOCFLXMLMetadataManagerAdapterMCROCFLXMLMetadataManager ⮕ MCROCFLXMLMetadataManagerAdapterMCRSolrBasicPropertyAuthentication ⮕ MCRSolrPropertyBasicAuthenticator
Es wurde jeweils eine weitere Klasse mit dem alten Namen hinzugefĂĽgt und als @Deprecated markiert.
Im Kommentar zur Klasse wird jeweils auf die nun zu verwendende Klasse hingewiesen. Eigener Code bleibt daher noch funktionsfähig,
muss aber vor der Verwendung der nächsten MyCoRe-Version umgestellt werden.
Beim Instanziieren von konfigurierbaren Klasseninstanzen kann in einer betroffenen Klasse eine Factory-Methode definiert werden.
Wenn eine solche Methode gefunden wird, wird diese Methode verwendet, um die Instanz zu erstellen, die anschlieĂźend mit aus der
Konfiguration entnommenen Werten befĂĽllt wird. Bisher wurde als Factory-Methode diejenige Methode innerhalb der betroffenen
Klasse verwendet, die public ist, static ist, parameterlos ist, einen passenden RĂĽckgabewert hat und
deren Namen, unabhängig von der Groß- und Kleinschreibung das Wort instance beinhaltet. Es darf in diesem Fall keinen
parameterlosen öffentlichen Konstruktor geben.
Dieser Mechanismus wird in der nächsten MyCoRe-Version entfernt. Eine angedachte Factory-Methode muss stattdessen mit
@MCRFactory gekennzeichnet werden. In diesem Fall ist der Name egal und die Methode wird einem etwaigem parameterlosen
öffentlichen Konstruktor bevorzugt. In 2025.06 wird bei Verwendung des alten Mechanismus eine Warnung geloggt. Eigener Code bleibt
daher noch funktionsfähig, muss aber vor der Verwendung der nächsten MyCoRe-Version umgestellt werden.
Beim Instanziieren von konfigurierbaren Klasseninstanzen kann ein Feld bisher mit einer Map<String, String>
befĂĽllt werden (oder einer entsprechenden Methode ĂĽbergeben werden), wenn diese mit @MCRInstance("*") oder
@MCRInstance("Foo.Bar.*") gekennzeichnet ist.
Dieser Mechanismus wird in der nächsten MyCoRe-Version entfernt. Ein solches Feld (oder eine solche Methode) dann stattdessen mit
@MCRRawProperties("*") oder @MCRRawProperties("Foo.Bar.*") gekennzeichnet werden. In 2025.06 wird bei
Verwendung des alten Mechanismus eine Warnung geloggt. Eigener Code bleibt daher noch funktionsfähig, muss aber vor der Verwendung
der nächsten MyCoRe-Version umgestellt werden.
Die Klasse MCRResourceException wurde entfernt. Methoden, die bisher derartige Ausnahmen geworfen haben,
werfen nun MCRResourcePath.IllegalPathException; eine Subklasse von IllegalArgumentException.
Einer Instanz einer solchen Ausnahme kann mit MCRResourcePath.IllegalPathException#code der
Grund fĂĽr die Ausnahme entnommen werden.
Mit MCR-3273 wurde u.A. die verschiedenen Methoden von MCRUser
zum Erstellen von Kopien (clone, getBasicCopy, getSafeCopy, getFullCopy) ĂĽberarbeitet.
Enthaltenen owner werden nun nach demselben Kriterium kopiert. Eine "sichere Kopie" (u.A. ohne Zugangsinformationen) beinhaltet
nicht mehr die Zugangsinformationen des besitzenden Nutzers. Die jetzt umgesetzten Regeln lassen sich am besten
MCRUserCopyTest entnehmen. Eigener Code muss gegebenenfalls angepasst werden.
Instanzen von MCRTransientUser können nun nicht mehr geklont werden. Stattdessen kann die Methode getPersistableCopy
verwendet werden. Eigener Code muss gegebenenfalls angepasst werden.