View Issue Details

IDProjectCategoryView StatusLast Update
0000033APFelSMSBugpublic2013-05-28 21:42
ReporterMeggerAssigned Tojwlighting 
PriorityhighSeveritycrashReproducibilityalways
Status resolvedResolutionfixed 
Product Version0.4 
Target Version1.0Fixed in Version1.0 
Summary0000033: VENDOR Namespace wird bei XML Datei nicht berücksichtigt
DescriptionWenn man unter /config/extensions/apfelsms/ in der serviceobjects.ini für [Mapper] eine andere XML Datei unter conf.file.value angeben will und dabei nicht APF als VENDOR haben will, dann schlägt das laden der Datei fehl, da im SMSXMLMapper.php als Path direkt APF als VENDOR genommen wird
TagsNo tags attached.
Codereferenz: ([Datei]:[Zeile])
KomponenteSMSMapper

Relationships

related to 0000034 closedjwlighting Adventure PHP Framework VENDOR aus NAMESPACE mit RootClassLoader filtern 

Activities

jwlighting

2013-05-27 16:02

administrator   ~0000002

Last edited: 2013-05-27 16:04

View 2 revisions

Der Dateipfad soll normal nicht mit Namespaces arbeiten, sondern direkt den Pfad im Dateisystem angeben.
Ich schaue mir das an.

Kannst du mir deine Config zur Verfügung stellen? Dann kann ich den Fehler besser reproduzieren und nachvollziehen.

Megger

2013-05-27 16:28

reporter   ~0000003

[Mapper]
class = "APF\extensions\apfelsms\data\SMSXMLMapper"
servicetype = "SINGLETON"

conf.file.method = "setXMLFilename"
conf.file.value = "MEGGER\sites\data\apfelsms.xml"

setupmethod = "setup"


APF Root Path ist /apf
MEGGER Root Path ist /megger

Der entsprechende Loader ist in der index.php mit
$meggerLoader = new StandardLoader('MEGGER', $meggerPath);
RootClassLoader::addLoader($meggerLoader);
hinterlegt!

jwlighting

2013-05-28 08:57

administrator   ~0000004

Der Code im Mapper ist bei der Migration tatsächlich umgestellt worden, und arbeitet nicht mehr mit reinen Dateipfaden, sondernmit dem neuen ClassLoader- Mechanismus.
Da der Vendor "APF" hardgecodet ist, hast du dieses Problem.
Versuche mal mit das hardgecodete "APF" durch ein RootClassLoader::getVendor() zu ersetzen.

Das könnte ein Fix sein. Ich kann dir nicht versprechen, dass ich vor nächster Woche dazu komme, mir das genauer anzusehen.

Megger

2013-05-28 10:15

reporter   ~0000005

Habe inzwischen einen kleinen Workaround:
$filename = $this->getXMLFilename();
$libPath = RootClassLoader::getLoaderByNamespace($filename)->getRootPath();
$filename = str_replace(RootClassLoader::getLoaderByNamespace($filename)->getVendorName(), '', $filename);

Finde es eigentlich ganz gut, dass er nicht mit den Dateipfaden arbeitet, sondern mit dem Loader bzw. Namespace, so kann ich z.B. meinen Ordner an eine andere Stelle schieben und muss dies nur dem RootClassLoader mitteilen und nicht noch in Konfigurationsdateien ändern

jwlighting

2013-05-28 15:29

administrator   ~0000014

Super!
Wenn du damit derzeit klar kommst spare ich mir jetzt den Stress, und packe das nächste Woche an.

jwlighting

2013-05-28 20:17

administrator   ~0000015

Ich habe das schonmal genauer analysiert. Es ist nach wie vor so, das dort kein Namespace vorgesehen ist. Der Pfad des Vendors 'APF' wird nur als Basispfad für XMLFilename verwendet, um einen absoluten Pfad daraus zu machen.

Ich werde jetzt die Möglichkeit einbauen, den Basispfad über einen Vendor (und Namespace) zu definieren. Der Pfad ansich bleibt aber ein Dateipfad, und wird damit auch besser nicht mit Backslashes geschrieben.

jwlighting

2013-05-28 21:22

administrator   ~0000016

Ab sofort lässt sich separat zum Pfad auch der Vendor/Namespace angeben.

Es geht wie bisher, dann wird der Vendor "APF" für den Basispfad herangezogen:
<code>
[Mapper]
class = "APF\extensions\apfelsms\data\SMSXMLMapper"
servicetype = "SINGLETON"

conf.file.method = "setXMLFilename"
conf.file.value = "extensions/apfelsms/data/apfelsms.xml"
</code>

Es kann auch nur ein Vendor angeben werden:
<code>
[Mapper]
class = "APF\extensions\apfelsms\data\SMSXMLMapper"
servicetype = "SINGLETON"

conf.file.method = "setXMLFilename"
conf.file.value = "extensions/apfelsms/data/apfelsms.xml"
conf.namespace.method = "setXMLFileNamespace"
conf.namespace.value = "APF\"
</code>

Oder der Dateiname und der Namespace mit Vendor:
<code>
[Mapper]
class = "APF\extensions\apfelsms\data\SMSXMLMapper"
servicetype = "SINGLETON"

conf.file.method = "setXMLFilename"
conf.file.value = "apfelsms.xml"
conf.namespace.method = "setXMLFileNamespace"
conf.namespace.value = "APF\extensions\apfelsms\data\"
</code>

Kommt alles beim gleichen raus. Wichtig: eine alte Konfiguration wird weiterhin funktionieren, solange der Pfad relativ zum APF-Vendor angegeben war.

Erledigt mit SVN-Commit #2361

Issue History

Date Modified Username Field Change
2013-05-27 15:53 Megger New Issue
2013-05-27 16:02 jwlighting Assigned To => jwlighting
2013-05-27 16:02 jwlighting Status new => assigned
2013-05-27 16:02 jwlighting Note Added: 0000002
2013-05-27 16:04 jwlighting Target Version => 1.0
2013-05-27 16:04 jwlighting Note Edited: 0000002 View Revisions
2013-05-27 16:28 Megger Note Added: 0000003
2013-05-28 08:57 jwlighting Note Added: 0000004
2013-05-28 10:15 Megger Note Added: 0000005
2013-05-28 15:22 jwlighting Relationship added related to 0000034
2013-05-28 15:29 jwlighting Note Added: 0000014
2013-05-28 15:29 jwlighting Status assigned => acknowledged
2013-05-28 20:17 jwlighting Note Added: 0000015
2013-05-28 21:22 jwlighting Note Added: 0000016
2013-05-28 21:22 jwlighting Status acknowledged => resolved
2013-05-28 21:22 jwlighting Fixed in Version => 1.0
2013-05-28 21:22 jwlighting Resolution open => fixed
2013-05-28 21:42 jwlighting Komponente => SMSMapper