easysoa / EasySOA

A light, collaborative platform to make Service Oriented Architecture simple.
http://www.easysoa.org
35 stars 8 forks source link

Code discovery & new model proto #119

Open mdutoo opened 12 years ago

mdutoo commented 12 years ago

Principles / overall tasks

as well as JAXRS, in example code (SmartTravel ?) and the buildup of the corresponding Implementation model in Nuxeo, targeting "mysoa" (hardcoded)

alternatives :

get inspiration (or even write analysis) from code : javadoc, enunciate source, swagger TODO ask mdutoo for info

DONE using QDox :

     {
  "id" : "org.easysoa.discovery:easysoa-discovery-code-sample,JAX-RS:org.easysoa.samples.paf.PureAirFlowersRest",
  "name" : "PureAirFlowersRest",
  "version" : "0.9-SNAPSHOT",
  "requirements" : [ ],
  "relations" : {
    "org.easysoa.discovery:easysoa-discovery-code-sample" : "Deliverable"
  },
  "operationsInfo" : "GET Operation getOrdersNumber ('/orders/{clientName}'), POST Operation addOrder ('/orders')",
  "soaNodeType" : "ServiceImpl"
}

LATER extract more info for documentation purpose (which ones ?) : signature (operations), (link to CI-generated) javadoc / enunciate / swagger... LATER2 make it pluggable for custom annotation handlers (allowing Restlet, Swagger, custom ex. CXXXXX...) IDEA make it generic for new annotations, ex. @org.easysoa.code.xxx goes in the xxx Nuxeo metadata

2. enrich it by getting (mocked ?) info about the maven project

that calls the previous discovery (maven plugin) and creating the corresponding Deployable model in Nuxeo and link both

DONE as plugin easysoa-discovery-code-mavenplugin

LATER Use maven (plugin) conf-provided info to know the target "mysoa"

LATER2 also classpath info from maven ?

3. OPT explicit creation of Design out of Implementation

(for now only implicit & automatic)

create ("promote") the corresponding Design-level model (with a JAXWS interface) and link both

LATER allow this explicit creation to be declared in code by @org.easysoa.Design (if not already done by ex. maven plugin conf)

4. handling code changes

redo a code discovery where one serviceimpl has disappeared, another has appeared, others have changed

alternatives : correlate on class & @WebService name, on (trimmed) source hash, diff, LATER class signature

5. simulate a validation

by writing the checkups that should occur between Design and changed Implementation and also writing their output alert messages

and what the alert messages would become

first create Services with WSDL interfaces (on SmartTravel sample ? LATER by importing its FraSCAti), then simulate how after a code discovery Design-Implementation links can be explicitly created and how JAXWS interfaces are then set as secondary interfaces on the Service

LATER

LATER simulate how also doing java2wsdl allows tosuggests Design-Implementation links through correlation

LATER handle other source files in a pluggable manner : wsdls (upload & correlate on hash & name(space)), any conf file (.properties, .xml) containing known endpoints, integrated confs (FraSCAti)...

LATER do the same for a web discovery : simulate by loading a wsdl from filesystem, build the corresponding model (environment & endpoints), link it to impl & design, redo it and simulate changes (correlate on url, name, (trimmed) hash, diff, LATER signature) & validation messages

mkalam-alami commented 12 years ago

Additional research on what could be used to explore the code is reported here.

mkalam-alami commented 12 years ago

Development of a prototype is started in EasySOA-Incubation.