context
In het project waar ik momenteel aan werk, kan een gebruiker een geometrie intekenen op een kaart. Deze kaart kan verschoven en gezoomd worden en de 'state' van de client wordt met directe ajax calls (dwz zonder framework) geupdate. Deze ajax calls worden serverside opgevangen in een phase listener, waar updates worden gemaakt en het antwoord wordt teruggestuurd.
Dit treed allemaal al op in het 3rd party (GIS - zoals 'google maps') framework dat we gebruiken en het werkt onder de meeste omstandigheden goed.
aanleiding
In een bepaalde situatie, wil ik echter meer doen. Bij het verschuiven van een kaart wil ik ook zelfgetekende geometrieen verschuiven. Omdat ik mijn code los wil houden van het framework heb ik een eigen phaseListener (en serialisatiecode) geschreven die dat voor zijn rekening neemt.
Deze phaselistener zet de de coordinaten van mijn geometrie bij de 'beforePhase' om van schermcoordinaten (bv 800, 600) naar kaartcoordinaten (bv 4389832.39203, 230393.23490). Bij de afterphase moeten deze kaartcoordinaten weer terug worden gezet op schermcoordinaten, gebaseerd op de nieuwe 'extent', of 'venster' op de kaart.
probleem
Dat betekend dat de beforePhase moet worden uitgevoerd VOOR dat de kaart wordt verschoven of gezoomd en dat de afterPhase moet worden uitgevoerd NA het pannen/zoomen.
Als het definieeren van PhaseListeners iets lijkt op dat van filters, betekend dat, dat ik mijn phaseListener moet definieeren voor die van het framework. De laatste wordt echter geleverd in de vorm van een aantal jarretjes, waarbij een daarvan een faces-config.xml in de META-INF directory bevat, waarin de voor verschuiven verantwoordelijke phaselistener is gedefinieerd (en nog een andere voor zoomen).
Daarmee wordt mijn probleem uiteindelijk dat ik geen idee heb hoe ik mijn 'phase-listener'-declaratie voor die van het framework (faces-config.xml in jar) zet.
De enige oplossing die ik zo kan bedenken is om een deze specifieke listener ook in een jarretje te stoppen en eerder in het classpath zetten oid. Dat is echter zo foutgevoelig met deployen en tegen-intuitief, dat ik hoopte dat iemand hier met een andere / betere oplossing zou komen.
In het project waar ik momenteel aan werk, kan een gebruiker een geometrie intekenen op een kaart. Deze kaart kan verschoven en gezoomd worden en de 'state' van de client wordt met directe ajax calls (dwz zonder framework) geupdate. Deze ajax calls worden serverside opgevangen in een phase listener, waar updates worden gemaakt en het antwoord wordt teruggestuurd.
Dit treed allemaal al op in het 3rd party (GIS - zoals 'google maps') framework dat we gebruiken en het werkt onder de meeste omstandigheden goed.
aanleiding
In een bepaalde situatie, wil ik echter meer doen. Bij het verschuiven van een kaart wil ik ook zelfgetekende geometrieen verschuiven. Omdat ik mijn code los wil houden van het framework heb ik een eigen phaseListener (en serialisatiecode) geschreven die dat voor zijn rekening neemt.
Deze phaselistener zet de de coordinaten van mijn geometrie bij de 'beforePhase' om van schermcoordinaten (bv 800, 600) naar kaartcoordinaten (bv 4389832.39203, 230393.23490). Bij de afterphase moeten deze kaartcoordinaten weer terug worden gezet op schermcoordinaten, gebaseerd op de nieuwe 'extent', of 'venster' op de kaart.
probleem
Dat betekend dat de beforePhase moet worden uitgevoerd VOOR dat de kaart wordt verschoven of gezoomd en dat de afterPhase moet worden uitgevoerd NA het pannen/zoomen.
Als het definieeren van PhaseListeners iets lijkt op dat van filters, betekend dat, dat ik mijn phaseListener moet definieeren voor die van het framework. De laatste wordt echter geleverd in de vorm van een aantal jarretjes, waarbij een daarvan een faces-config.xml in de META-INF directory bevat, waarin de voor verschuiven verantwoordelijke phaselistener is gedefinieerd (en nog een andere voor zoomen).
Daarmee wordt mijn probleem uiteindelijk dat ik geen idee heb hoe ik mijn 'phase-listener'-declaratie voor die van het framework (faces-config.xml in jar) zet.
De enige oplossing die ik zo kan bedenken is om een deze specifieke listener ook in een jarretje te stoppen en eerder in het classpath zetten oid. Dat is echter zo foutgevoelig met deployen en tegen-intuitief, dat ik hoopte dat iemand hier met een andere / betere oplossing zou komen.
Localhost is where the heart is