Skip to content

ZoaraMas/BaseFrame

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

48 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

BaseFrame

Un framework inspire de spring base sur les servlets

SPRINT1

  • Creer un front servlet qui va intercepter chaque url, et qui ne redirigera que les fichiers non statiques de ressources comme les html ou les css

SPRINT2 : 17-10-25

  • Creer une annotationo permettant de reconnaitre tout les urls utilises par le projet du developpeur

17-10-25

  • Add the verifications for the static ressources before the frontservlet handling the url
  • Create an annotation for the developer to specify an url for a method function
  • Recognize the url if it belongs to one of the specified url by the developer and render 404 if not found

SPRINT3

  • Associate every url of any controller method annotated with the get controller annotation with the controller class, and the action method

SPRINT3BIS

  • Recognize an url even if the urls string don't match exactly but the controller url uses parameters with {} or ?
  • Only recognize it if the parameters match directly with the names ex: /api/students/{id} public ModelView getStudentDetails(Integer id) and https//api/students/3 -> here 3 matches the int type so the framework recognize it

SPRINT4

  • Invoke the method associated to the url to print a text or to redirect into a jsp using a ModelView object

SPRINT5

  • Added a hashMap in the ModelView class in order to pass variables to the front layer directly from controller layer

SPRINT6

  • Send data from a form into a controller action method through a form
  • Request Vairables: ?name=
    • Check if the variable names directly correspond to the variables put as requests, and then map them
  • Path Variables: {}
    • Check the object types if it matches and then map the object to the action method parameter
  • We are allowed to use request.getParameter

SPRINT6BIS

  • Create RequestParam annotation to map a request parameter with different name than the actual parameter's name

SPRINT6TIER

  • Faire marcher les mappings

Sprint7

  • A l'ajout d'une fonctionalite, on se demande 2 choses:

    • Quels sont les modifications a apporter dans le code => Rajout des deux nouvelles annotations de classes => Recevoir le type GET ou POST dans le front servlet => Rajouter fonction GetRequestType dans UrlDetails => Utiliser le critere type de requete lors de l'url matching
    • Quels sont les instructions a communiquer aux developeurs afind qu'ils puissent implementer cette nouvelle fonctionalite => Donner les indications sur les types de requetes et les annotations qui vont avec
  • Rajout des 2 types d'annotation de methode d'action, post et requestparameter

Sprint 8

  • COTE DEVELOPEUR
    • Le developeur peut rajouter un Map<String, Object> dans les parametres d'une methode de controller pour ainsi obtenir toutes les donnes que le frontend lui envoi
    • Il n'a qu'a mettre un Map<String, Object> dans les paramatres pour obtenir toutes les donnees passes depuis le frontend
  • COTE CODE
    • Quand on recherche l'url correspondant a la requete client et qu'on le trouve et qu'on y map les donnes, si on trouve un Map<String, Object> dans les parametres on lui attribue les valeurs de toutes les variables passes depuis le frontend, le reste de code reste inchangee

Sprint 8Bis

  • Le developeur peut maintenant rajouter des objets dans les parametres des methodes d'action

  • On peut passer les fields de cet objet en faisant u.name par exemple, ou u represente le nom de l'argument de la fonction et name le nom du field de cet objet

  • On part dans la logique d'objet dans les parametres quand une conversion de type normale ne fonctionne pas

  • Si d'autres objets custom se trouvent dans l'argument de type objet, ca part en recursion

  • on peut passer des tableau aussi en precisant les noms et l'indice: es[1], es[2] etc

Sprint 9

  • En ajoutant l'annotation JSON sur un methode de controller, la redirection va retourner un String de l'objet retourne, si l'objet retourne est un ModelView, retourner le data a l'interieur.
  • Rajouter les proprietes de JSON 'ROBUSTE'

Sprint 10

  • On va maintenant implementer l'import de fichier, le developeur rajoute dans l'argument d'une meethode d'action: un HashMap<String, bytes[]> et obtiendra directement chaque fichier uploade avec le nom des fichiers dans la cle du hashMap

Sprint 11 Gestion de session

  • Le developeur rajoute un HashMap de<String, Object> dans les arguments, on cree alors une nouvelle annotation de session
  • Ce HashMap contiendra alors toutes les valeurs de sessions
  • Le developpeur a la possibilite d'inserer de nouveaux objets, de supprimer des objets en mettant a null l'id d'un objet, mais peut aussi modifier le contenu d'un objet dans le hash map
  • Normalement le principe de reference devrait s'applique et toutes les valeurs d'une sessions devraient fonctionner en meme temps, cad si on modifie une valeur dans le controller, la session dans d'autres controllers devraient aussi se voir changer
  • On extrait les valeurs de session depuis HttpServletRequest alors mais on n'utilise pas directement cet objet dans les controllers qwpeoiru

Sprint 11Bis Gestino d'Authorization et de role

  • [cote developeur]
    • @role, @Authorized, sans annotation = anonyme donc tout peut passer

Guide:

LOGS

20-11-25

Sprint 6

-[ok] Avoir a disposition de tout les parametres des methodes d'actions [ok]- Avant Passer Request en argument [ok]- Check if all parameters exit in getParameter

  • Check if the variable types match

  • Make the mapping

  • Verify if all controller action method have only Object parameters

TO ADD:

  • Verification
  • Show clear errors on path Variables
    • TYPE MISMATCH
  • /{}? at the end

28-11-25

  • SPRINT 8
    • Add test of Map<String, Object> existence in the controller's parameters
    • Map all the request params values there
    • The Object value could be a String or a String[]

02-12-25

  • Sprint8 Bis

  • The developer can add a custom object in controller action method parameter

  • when every conversion fail, we try to bind to a real custom object

    • getCustomObjectParameterValues(Request, Parameter)

    -- need to make getDeclaredConstructor and then setAccessible

04-12-25

  • Ca ne semble pas marcher avec un classe perso neste, essayer de l'enlever et tester, et ensuite faire la fonction de recursion en precisant bien sur l'arret de la recursion

08-12-25

  • Gerer Array d'objet

12-12-25

  • Baseframe can handle array fields in the custom object classes

  • BaseFrame can handle simple arrays in arguments of action method

  • Export JSON

13-12-25

  • JSON [ok]- Create annotation JSON
    • transformer un objet en json
    • transformer un ModelView en json
    • Ajouter les proprietes robustes

15-12-25

Verifier si un ou des fichiers sont attaches dans le request, obtenir un tableau de parts Prendre le nom du fichier -> On pourrait donner un map de String et de part -> convertiir en bytes

18-12-25

  • L'argument de la methode d'action est un HashMap<String, byte>

-> La fonction de save de file etant cree, creer dans le formulaire front l'upload de fichier et le code du developeur va save dans le pc

FRAMEWORK FLOW

ApplicationInitializer

  • Executes right after deployment
  • Takes all the available urls from all controllers in the defined package in web.xml by the user, map each url into a single action method, a controller class from the user

UrlDetails

  • When instanciated, sets in its attribute the list of parameters with their details(is path variable, RequestParameter, the parameter object itself)

FrontServlet

  • Here goes all http requests
  • Checks for static ressource first
  • Retrieves the url list
  • Then look for the url that matches
    • If it find the url, try to map already the parameters values in UrlMatch() method from UrlService
  • if the url is found, it handles it by invoking the method
  • The method can return a simple string or a modelView which redirects into a jsp file

-> Le probleme est que j'utilise la meme fonction pour les attributs et pour autres, par exemple au debut avec le code modifie j'obtien uu[] si j'ajoute le prefixe, alors que ca devrait se passer plus tard

LA REGLE POUR SPRINT 8 BIS

les tableaux primitifs et string doivent etre ecrit comme [] uniquement, seul les objets persos auront des indices Si tu veux retracer le code, le prefix dans les fonction tel que getCustomObjectParameterValuesWithIndex sont tres importants

  • Ne pas oublier de mettre a jour les toStrings et getter et setters dans test

Reprise 15/01/25

-> Je viens de rajouter la variable session dans UrlDetails, rajouter la fonction isSession ensuite continuer dans le urlService pour implementer la session

About

Un framework inspire de spring base sur les servlets

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors