IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

XMLRAD Discussion :

Modifications framework


Sujet :

XMLRAD

  1. #1
    Membre habitué
    Inscrit en
    Janvier 2003
    Messages
    214
    Détails du profil
    Informations forums :
    Inscription : Janvier 2003
    Messages : 214
    Points : 132
    Points
    132
    Par défaut Modifications framework
    J'ai été obligé de modifier le framework pour mon appli, et évidemment, cela pose pas mal de pbs lors de release XMLRAD. Je voudrais vous les soumettre afin de me dire si une solution e-delos existe (et je modifierai mon code) ou si mon code pourrait être implémenté dans la version de base :

    - HTTP/HTTPS (concerne le XSLC.XSL) : ce code a été ajouté au xslc:page, ce qui pose évidemment des pb en https ... je l'ai supprimé et cela fonctionne bien :
    <base href="http://{/document/XMLC_Params/XMLC_Host}{/document/XMLC_Params/XMLC_ScriptName}/"/>

    - Header HTTP : dans un environnement https, j'ai besoin de récupérer la balise CERT_SUBJECT pour m'identifier sur un annuaire LDAP, j'ai du effectuer une modif dans xmlapp.pas fonction (InternalDispatchRequest/Initxmlrequest) :
    Context.SetValue('Request.User',Request.GetFieldByName('CERT_SUBJECT'));

    - Gestion du séparateur de décimales : afin de gérer le . ou la , à tous les coups (cette fonctionnalité n'est pas opérationnelle à 100% dans la base), j'ai dû ajouter dans xmlgram.pas (fillparams) :
    if (ParamType = 'FLOAT') or (ParamType = 'INTEGER') then
    begin
    {$IFDEF NATIVE}
    if SysUtils.DecimalSeparator = '.' then
    ParamValue := StringReplace(ParamValue,',','.',[rfReplaceAll])
    else
    ParamValue := StringReplace(ParamValue,'.',',',[rfReplaceAll]);
    if ParamValue = '' then ParamValue := '0';
    ParamValue := FloatToStr(StrToFloat(ParamValue));
    {$ENDIF}
    {$IFDEF CLR}
    {$ENDIF}
    end;
    La même chose a été ajoutée dans dac.pas (Batch) car dans le cas d'éxécution d'une requête stockée dans les Queries, aucun test de type de paramètre n'est fait.

    - Et la dernière qui est certainement + spécifique. Lors d'une exception (date invalide, erreur BDD, ..) je dois remonter à l'utilisateur un message 'humain', et pas le message brut de la base. J'ai donc modifié le xmlapp.pas afin de rajouter dans le contexte un type d'erreur perso en fonction du message reçu. Un peu comme E-delos, mais j'ai besoin de conserver le message d'origine afin de l'afficher en dessous et surtout de le conserver dans les logs.

    Si quelqu'un pouvait m'enlever quelques codes à conserver au coffre, cela me simplifierait bien la vie.
    Renaud
    W2003 / XP /VISTA
    SQL SERVER / ORACLE
    ADO

  2. #2
    RDM
    RDM est déconnecté
    Membre émérite

    Profil pro
    Inscrit en
    Mars 2002
    Messages
    1 424
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2002
    Messages : 1 424
    Points : 2 927
    Points
    2 927
    Par défaut Re: Modifications framework
    Citation Envoyé par rgarnier
    - HTTP/HTTPS (concerne le XSLC.XSL) : ce code a été ajouté au xslc:page, ce qui pose évidemment des pb en https ... je l'ai supprimé et cela fonctionne bien :
    <base href="http://{/document/XMLC_Params/XMLC_Host}{/document/XMLC_Params/XMLC_ScriptName}/"/>
    Le base href est utilisé pour les contenus d'EMail (EMail this page) pour que les images s'affichent. On remonte l'info, mais je sais pas comment ca va etre corrigé pour prendre en compte ca.

    - Header HTTP : dans un environnement https, j'ai besoin de récupérer la balise CERT_SUBJECT
    Info remonté, je pense que ce sera intégré directement. (prochain build)


    - Gestion du séparateur de décimales :
    Ce n'est pas correct ce que tu as rajouté. Tu ne prend pas en compte la culture. Dans les dernières version (RC3) le séparateur décimal est pris en compte. Il doit exister peut etre encore des comportements liés à la concurrence (changement du SysUtils.DecimalSeparator à la volée).

    - Et la dernière qui est certainement + spécifique. Lors d'une exception (date invalide, erreur BDD, ..).
    autant gérer ca dans le HandleException, puisque a priori on ne connait pas le texte exact.
    RDM
    Tout Est Relatif
    Rubrique XMLRAD: http://xmlrad.developpez.com
    FAQ XMLRAD: http://xmlrad.developpez.com/faq/

  3. #3
    Membre habitué
    Inscrit en
    Janvier 2003
    Messages
    214
    Détails du profil
    Informations forums :
    Inscription : Janvier 2003
    Messages : 214
    Points : 132
    Points
    132
    Par défaut
    Ok, merci.
    Renaud
    W2003 / XP /VISTA
    SQL SERVER / ORACLE
    ADO

  4. #4
    Membre régulier
    Profil pro
    Inscrit en
    Janvier 2003
    Messages
    85
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2003
    Messages : 85
    Points : 99
    Points
    99
    Par défaut
    RDM a déjà répondu a toutes tes questions. Cependant pour ta dernière question, j'ai peut-être quelques éléments de réponse à te donner.

    Citation Envoyé par rgarnier
    Et la dernière qui est certainement + spécifique. Lors d'une exception (date invalide, erreur BDD, ..) je dois remonter à l'utilisateur un message 'humain', et pas le message brut de la base. J'ai donc modifié le xmlapp.pas afin de rajouter dans le contexte un type d'erreur perso en fonction du message reçu. Un peu comme E-delos, mais j'ai besoin de conserver le message d'origine afin de l'afficher en dessous et surtout de le conserver dans les logs.
    Pour cela, tu peux utiliser les ApplicationMessages (c'est la petite icône représentée par un drapeau US/FR dans XMLRAD). Il y a trois types d'ApplicationMessage : INFO, WARNING, ERROR. Ils permettent de localiser les messages de ton application.

    Rajoutes y par exemple l'ApplicationMessage DATE_INVALIDE, qui contient le message quand une date est invalide.

    Ensuite, en fonction de tes exceptions, il te suffit de mettre dans le Context, le nom de ton ApplicationMessage adéquat :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    Context.SetValue('XMLC_Info', 'DATE_INVALIDE'); // Message d'info
    Context.SetValue('XMLC_Warning', 'DATE_INVALIDE'); // Message d'avertissement
    Context.SetValue('XMLC_Exception', 'DATE_INVALIDE'); // Message d'erreur
    Il faut alors que tu gères toi même l'Exception (OnException, variable Handled à True) pour que l'utilisateur se retrouve sur une page d'un XMLService et non pas celle d'une exception. Normalement le message s'affichera tout seul, grâce au composant XSL inclue de base dans les Wizards : <xsl:call-template name="xslc:ApplicationMessages/>.

    J'espère t'avoir donné qques éléments de réponse intéressants..

    A+
    Julien C.

  5. #5
    Membre habitué
    Inscrit en
    Janvier 2003
    Messages
    214
    Détails du profil
    Informations forums :
    Inscription : Janvier 2003
    Messages : 214
    Points : 132
    Points
    132
    Par défaut
    C'est interressant, mais cela m'oblige à ajouter dans chacun de mes xmlservices le lancement d'ne fonction d'analyse des erreurs.

    Vu que je suis partisan du moindre effort, ne pourrais-je pas ajouter cette fonction sur un onexception global à l'appli (car j'ai une bonne 100aine de xmlservices à modifier et je pourrais oublier de rajouter ce code lors des prochaines créations).
    Renaud
    W2003 / XP /VISTA
    SQL SERVER / ORACLE
    ADO

  6. #6
    Membre régulier
    Profil pro
    Inscrit en
    Janvier 2003
    Messages
    85
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2003
    Messages : 85
    Points : 99
    Points
    99
    Par défaut
    A ma connaissance il n'y a pas d'évènement OnException global à l'application. D'ailleurs, il ne semble pas y en avoir pour les XMLModules également. Ca pourrait être utile en effet...

    Anyway, là, il faut que tu modifies le Framework je pense pour faire ce que tu veux, au niveau du HandleException comme te l'as dit RDM.
    Julien C.

Discussions similaires

  1. IIS + FrameWork 4.0 --> Modifications non prises en compte
    Par absi_richard dans le forum ASP.NET
    Réponses: 3
    Dernier message: 05/08/2010, 13h02
  2. [Entity Framework]Modification Stucture Table
    Par Idredeguerre dans le forum Framework .NET
    Réponses: 0
    Dernier message: 28/05/2009, 11h56
  3. Réponses: 2
    Dernier message: 25/04/2008, 17h48
  4. Réponses: 1
    Dernier message: 24/04/2007, 14h40
  5. Réponses: 2
    Dernier message: 19/01/2007, 22h54

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo