ontomde-demos 2.0.0
Sign up to get free protection for your applications and to get access to all the features.
- data/History.txt +2 -0
- data/Manifest.txt +312 -0
- data/README.txt +48 -0
- data/Rakefile +22 -0
- data/bin/ontomde-demos-install +10 -0
- data/demo/adobe-flex/1-unpack.bat +6 -0
- data/demo/adobe-flex/1-unpack.sh +5 -0
- data/demo/adobe-flex/2-generate.bat +4 -0
- data/demo/adobe-flex/2-generate.sh +5 -0
- data/demo/adobe-flex/3-flex.bat +4 -0
- data/demo/adobe-flex/3-flex.sh +4 -0
- data/demo/adobe-flex/4-start-webapp.bat +7 -0
- data/demo/adobe-flex/4-start-webapp.sh +4 -0
- data/demo/adobe-flex/9-eclipse.bat +5 -0
- data/demo/adobe-flex/9-eclipse.sh +6 -0
- data/demo/adobe-flex/README.txt +79 -0
- data/demo/adobe-flex/domain/pom.xml +61 -0
- data/demo/adobe-flex/ear/pom.xml +160 -0
- data/demo/adobe-flex/flex2_sdk/README.txt +7 -0
- data/demo/adobe-flex/flex2_sdk/flex2_sdk_hf1_download.URL +2 -0
- data/demo/adobe-flex/mda/.ontomde-java +75 -0
- data/demo/adobe-flex/mda/clean-generated.sh +24 -0
- data/demo/adobe-flex/mda/pom.xml +110 -0
- data/demo/adobe-flex/mda/src/main/mda/customDataTypes.rb +5 -0
- data/demo/adobe-flex/mda/src/main/mda/dbDiscriminatorCache.rb +74 -0
- data/demo/adobe-flex/mda/src/main/mda/javaMapping.rb-notused +302 -0
- data/demo/adobe-flex/mda/src/main/mda/mda.rb +0 -0
- data/demo/adobe-flex/mda/src/main/model/.project +11 -0
- data/demo/adobe-flex/mda/src/main/model/model.emx +1779 -0
- data/demo/adobe-flex/mda/src/main/model/model.emx.nt +3575 -0
- data/demo/adobe-flex/mda/src/main/model/model.emx.nt_kb.pprj +1496 -0
- data/demo/adobe-flex/mda/src/main/model/model.emx.nt_kb.rdf +25 -0
- data/demo/adobe-flex/mda/src/main/model/model.emx.nt_kb.rdfs +2242 -0
- data/demo/adobe-flex/mda/src/main/resources/formatter.properties +260 -0
- data/demo/adobe-flex/pom.xml +97 -0
- data/demo/adobe-flex/projectbase/pom.xml +132 -0
- data/demo/adobe-flex/webapp/pom.xml +126 -0
- data/demo/apache-struts-mesContacts/1-base.bat +6 -0
- data/demo/apache-struts-mesContacts/1-base.sh +6 -0
- data/demo/apache-struts-mesContacts/2-unpack.bat +6 -0
- data/demo/apache-struts-mesContacts/2-unpack.sh +6 -0
- data/demo/apache-struts-mesContacts/3-generate.bat +4 -0
- data/demo/apache-struts-mesContacts/3-generate.sh +7 -0
- data/demo/apache-struts-mesContacts/4-start-webapp-nosecurity.bat +4 -0
- data/demo/apache-struts-mesContacts/4-start-webapp-nosecurity.sh +6 -0
- data/demo/apache-struts-mesContacts/5-start-webapp.bat +7 -0
- data/demo/apache-struts-mesContacts/5-start-webapp.sh +6 -0
- data/demo/apache-struts-mesContacts/9-eclipse.bat +5 -0
- data/demo/apache-struts-mesContacts/9-eclipse.sh +8 -0
- data/demo/apache-struts-mesContacts/domain/pom.xml +77 -0
- data/demo/apache-struts-mesContacts/domain/src/main/java/gUI/ContactList.java +400 -0
- data/demo/apache-struts-mesContacts/domain/src/main/java/service/ContactManager.java +162 -0
- data/demo/apache-struts-mesContacts/domain/src/main/java/service/ContactManagerImpl.java +68 -0
- data/demo/apache-struts-mesContacts/domain/src/main/java/xmda/security/GlobalComputedAccessControlCriteria.java +29 -0
- data/demo/apache-struts-mesContacts/domain/src/main/java/xmda/security/GlobalComputedAccessControlCriteria.java.mda +37 -0
- data/demo/apache-struts-mesContacts/domain/src/main/java/xmda/security/ProviderImpl.java +303 -0
- data/demo/apache-struts-mesContacts/mda/.ontomde-java +71 -0
- data/demo/apache-struts-mesContacts/mda/clean-generated.sh +24 -0
- data/demo/apache-struts-mesContacts/mda/pom.xml +75 -0
- data/demo/apache-struts-mesContacts/mda/src/main/mda/customDataTypes.rb +6 -0
- data/demo/apache-struts-mesContacts/mda/src/main/mda/dbDiscriminatorCache.rb +88 -0
- data/demo/apache-struts-mesContacts/mda/src/main/mda/mda.rb +0 -0
- data/demo/apache-struts-mesContacts/mda/src/main/model/.project +12 -0
- data/demo/apache-struts-mesContacts/mda/src/main/model/model.emx +2106 -0
- data/demo/apache-struts-mesContacts/mda/src/main/model/model.emx.nt +4449 -0
- data/demo/apache-struts-mesContacts/mda/src/main/model/model.emx.nt.pprj +1509 -0
- data/demo/apache-struts-mesContacts/mda/src/main/model/model.emx.nt.rdf +173 -0
- data/demo/apache-struts-mesContacts/mda/src/main/model/model.emx.nt.rdfs +2501 -0
- data/demo/apache-struts-mesContacts/mda/src/main/resources/formatter.properties +260 -0
- data/demo/apache-struts-mesContacts/pom.xml +20 -0
- data/demo/apache-struts-mesContacts/projectbase/pom.xml +123 -0
- data/demo/apache-struts-mesContacts/webapp/pom.xml +304 -0
- data/demo/apache-struts-mesContacts/webapp/src/main/java/gUI/methods/struts/ContactListnewContactMPCStrutsAction.java +392 -0
- data/demo/apache-struts-mesContacts/webapp/src/main/webapp/all.jsp +1 -0
- data/demo/apache-struts-mesContacts/webapp/src/main/webapp/index.jsp +15 -0
- data/demo/apache-struts-mesContacts/webapp/src/main/webapp/index.jsp.mda +930 -0
- data/demo/apache-struts-mesContacts/webapp/src/main/webapp/pages/domain/form/Contactall.jsp +211 -0
- data/demo/apache-struts-mesContacts/webapp/src/main/webapp/pages/domain/form/Contactall.jsp.mda +1247 -0
- data/demo/apache-struts-mesContacts/webapp/src/main/webapp/pages/gUI/form/ContactListall.jsp +235 -0
- data/demo/apache-struts-mesContacts/webapp/src/main/webapp/pages/gUI/form/ContactListall.jsp.mda +1086 -0
- data/demo/apache-struts-mesContacts/webapp/src/main/webapp/pages/gUI/methods/form/ContactListnewContactMPCall.jsp +143 -0
- data/demo/apache-struts-mesContacts/webapp/src/main/webapp/pages/gUI/methods/form/ContactListnewContactMPCall.jsp.mda +1041 -0
- data/demo/apache-struts-mesContacts/webapp/src/main/webapp/pages/menu.inc +229 -0
- data/demo/apache-struts-mesContacts/webapp/src/main/webapp/res/add_photo.gif +0 -0
- data/demo/apache-struts-mesContacts/webapp/src/main/webapp/res/attention.gif +0 -0
- data/demo/apache-struts-mesContacts/webapp/src/main/webapp/res/back.gif +0 -0
- data/demo/apache-struts-mesContacts/webapp/src/main/webapp/res/bck_table.gif +0 -0
- data/demo/apache-struts-mesContacts/webapp/src/main/webapp/res/bkg_maligne_gauche_new.gif +0 -0
- data/demo/apache-struts-mesContacts/webapp/src/main/webapp/res/bkg_maligne_new.gif +0 -0
- data/demo/apache-struts-mesContacts/webapp/src/main/webapp/res/bottom.gif +0 -0
- data/demo/apache-struts-mesContacts/webapp/src/main/webapp/res/bt_center.gif +0 -0
- data/demo/apache-struts-mesContacts/webapp/src/main/webapp/res/bt_center_off.gif +0 -0
- data/demo/apache-struts-mesContacts/webapp/src/main/webapp/res/bt_left.gif +0 -0
- data/demo/apache-struts-mesContacts/webapp/src/main/webapp/res/bt_left_off.gif +0 -0
- data/demo/apache-struts-mesContacts/webapp/src/main/webapp/res/bt_right.gif +0 -0
- data/demo/apache-struts-mesContacts/webapp/src/main/webapp/res/bt_right_off.gif +0 -0
- data/demo/apache-struts-mesContacts/webapp/src/main/webapp/res/contact.css +609 -0
- data/demo/apache-struts-mesContacts/webapp/src/main/webapp/res/corner_bottom_left.gif +0 -0
- data/demo/apache-struts-mesContacts/webapp/src/main/webapp/res/corner_bottom_right.gif +0 -0
- data/demo/apache-struts-mesContacts/webapp/src/main/webapp/res/corner_left.gif +0 -0
- data/demo/apache-struts-mesContacts/webapp/src/main/webapp/res/dispo_off.gif +0 -0
- data/demo/apache-struts-mesContacts/webapp/src/main/webapp/res/dispo_on.gif +0 -0
- data/demo/apache-struts-mesContacts/webapp/src/main/webapp/res/export1.gif +0 -0
- data/demo/apache-struts-mesContacts/webapp/src/main/webapp/res/export2.gif +0 -0
- data/demo/apache-struts-mesContacts/webapp/src/main/webapp/res/extraire.gif +0 -0
- data/demo/apache-struts-mesContacts/webapp/src/main/webapp/res/favicon.ico +0 -0
- data/demo/apache-struts-mesContacts/webapp/src/main/webapp/res/fleche.gif +0 -0
- data/demo/apache-struts-mesContacts/webapp/src/main/webapp/res/flecheon.gif +0 -0
- data/demo/apache-struts-mesContacts/webapp/src/main/webapp/res/import1.gif +0 -0
- data/demo/apache-struts-mesContacts/webapp/src/main/webapp/res/import2.gif +0 -0
- data/demo/apache-struts-mesContacts/webapp/src/main/webapp/res/import3.gif +0 -0
- data/demo/apache-struts-mesContacts/webapp/src/main/webapp/res/imprimer.gif +0 -0
- data/demo/apache-struts-mesContacts/webapp/src/main/webapp/res/index.css +611 -0
- data/demo/apache-struts-mesContacts/webapp/src/main/webapp/res/index.dat +7 -0
- data/demo/apache-struts-mesContacts/webapp/src/main/webapp/res/index.html +587 -0
- data/demo/apache-struts-mesContacts/webapp/src/main/webapp/res/left_table.gif +0 -0
- data/demo/apache-struts-mesContacts/webapp/src/main/webapp/res/line.gif +0 -0
- data/demo/apache-struts-mesContacts/webapp/src/main/webapp/res/lineverti.gif +0 -0
- data/demo/apache-struts-mesContacts/webapp/src/main/webapp/res/menu.css +88 -0
- data/demo/apache-struts-mesContacts/webapp/src/main/webapp/res/modifier.gif +0 -0
- data/demo/apache-struts-mesContacts/webapp/src/main/webapp/res/nav.gif +0 -0
- data/demo/apache-struts-mesContacts/webapp/src/main/webapp/res/new.css +470 -0
- data/demo/apache-struts-mesContacts/webapp/src/main/webapp/res/on_mobile.gif +0 -0
- data/demo/apache-struts-mesContacts/webapp/src/main/webapp/res/on_sim_card.gif +0 -0
- data/demo/apache-struts-mesContacts/webapp/src/main/webapp/res/onglet_1_2_on.gif +0 -0
- data/demo/apache-struts-mesContacts/webapp/src/main/webapp/res/onglet_1_3_off.gif +0 -0
- data/demo/apache-struts-mesContacts/webapp/src/main/webapp/res/onglet_2_1_on.gif +0 -0
- data/demo/apache-struts-mesContacts/webapp/src/main/webapp/res/order_up.gif +0 -0
- data/demo/apache-struts-mesContacts/webapp/src/main/webapp/res/picto_ecarte.gif +0 -0
- data/demo/apache-struts-mesContacts/webapp/src/main/webapp/res/picto_email.gif +0 -0
- data/demo/apache-struts-mesContacts/webapp/src/main/webapp/res/picto_fax.gif +0 -0
- data/demo/apache-struts-mesContacts/webapp/src/main/webapp/res/picto_fax2.gif +0 -0
- data/demo/apache-struts-mesContacts/webapp/src/main/webapp/res/picto_home.gif +0 -0
- data/demo/apache-struts-mesContacts/webapp/src/main/webapp/res/picto_home2.gif +0 -0
- data/demo/apache-struts-mesContacts/webapp/src/main/webapp/res/picto_messagerie.gif +0 -0
- data/demo/apache-struts-mesContacts/webapp/src/main/webapp/res/picto_mobile.gif +0 -0
- data/demo/apache-struts-mesContacts/webapp/src/main/webapp/res/picto_mobile2.gif +0 -0
- data/demo/apache-struts-mesContacts/webapp/src/main/webapp/res/picto_secondaire.gif +0 -0
- data/demo/apache-struts-mesContacts/webapp/src/main/webapp/res/picto_sms.gif +0 -0
- data/demo/apache-struts-mesContacts/webapp/src/main/webapp/res/picto_supprimer.gif +0 -0
- data/demo/apache-struts-mesContacts/webapp/src/main/webapp/res/picto_visio.gif +0 -0
- data/demo/apache-struts-mesContacts/webapp/src/main/webapp/res/picto_work.gif +0 -0
- data/demo/apache-struts-mesContacts/webapp/src/main/webapp/res/picto_work2.gif +0 -0
- data/demo/apache-struts-mesContacts/webapp/src/main/webapp/res/point.gif +0 -0
- data/demo/apache-struts-mesContacts/webapp/src/main/webapp/res/print.gif +0 -0
- data/demo/apache-struts-mesContacts/webapp/src/main/webapp/res/profile_homme.gif +0 -0
- data/demo/apache-struts-mesContacts/webapp/src/main/webapp/res/right_table.gif +0 -0
- data/demo/apache-struts-mesContacts/webapp/src/main/webapp/res/right_table_fiche.gif +0 -0
- data/demo/apache-struts-mesContacts/webapp/src/main/webapp/res/tt_encart_infos1.gif +0 -0
- data/demo/apache-struts-mesContacts/webapp/src/main/webapp/res/tt_encart_infos2.gif +0 -0
- data/demo/apache-struts-mesContacts/webapp/src/main/webapp/res/unlimited.gif +0 -0
- data/demo/apache-struts-mesContacts/webapp/src/main/webapp/res/verifier.gif +0 -0
- data/demo/apache-struts-mesContacts/webapp/src/main/webapp/res/vide.gif +0 -0
- data/demo/apache-struts-mesContacts/webapp/src/main/webapp/res/voir.gif +0 -0
- data/demo/core/README.txt +43 -0
- data/demo/core/demo-dsl/bpm.pprj +1745 -0
- data/demo/core/demo-dsl/bpm.rdf +140 -0
- data/demo/core/demo-dsl/bpm.rdfs +231 -0
- data/demo/core/demo-dsl/main_demo_dsl_structured.rb +60 -0
- data/demo/core/demo-dumpUMLMetaModel/demo_dump_uml2.rb +144 -0
- data/demo/core/demo-generateXML/README.txt +30 -0
- data/demo/core/demo-generateXML/main_demo_flatcode.rb +51 -0
- data/demo/core/demo-generateXML/main_demo_structured.rb +65 -0
- data/demo/core/demo-generateXML/main_demo_template.rb +62 -0
- data/demo/core/demo-uml-browsing/main_demo_uml_browsing.rb +49 -0
- data/demo/core/demo-umlStateMachine/demo_umlStateMachine.rb +169 -0
- data/demo/core/demo-umlStateMachine/model/.project +11 -0
- data/demo/core/demo-umlStateMachine/model/StateMachine.PNG +0 -0
- data/demo/core/demo-umlStateMachine/model/stateMachine.emx +594 -0
- data/demo/core/demo-umlStateMachine/model/stateMachine.emx.nt +2527 -0
- data/demo/core/model/README.txt +1 -0
- data/demo/core/model/model.emx +1779 -0
- data/demo/core/model/model.emx.nt +3575 -0
- data/demo/core/model/model.emx.nt_kb.pprj +1438 -0
- data/demo/core/model/model.emx.nt_kb.rdf +25 -0
- data/demo/java5/EnterpriseArchitect7.1/.classpath +6 -0
- data/demo/java5/EnterpriseArchitect7.1/.ontomde-java +17 -0
- data/demo/java5/EnterpriseArchitect7.1/.project +17 -0
- data/demo/java5/EnterpriseArchitect7.1/.xmda +2 -0
- data/demo/java5/EnterpriseArchitect7.1/1-generate.bat +3 -0
- data/demo/java5/EnterpriseArchitect7.1/1-generate.sh +3 -0
- data/demo/java5/EnterpriseArchitect7.1/2-generateJavadoc.bat +3 -0
- data/demo/java5/EnterpriseArchitect7.1/2-generateJavadoc.sh +3 -0
- data/demo/java5/EnterpriseArchitect7.1/pom.xml +160 -0
- data/demo/java5/EnterpriseArchitect7.1/src/main/mda/customDatatypes.rb +9 -0
- data/demo/java5/EnterpriseArchitect7.1/src/main/model/java5_demo.ea71.ea.xmi +4115 -0
- data/demo/java5/EnterpriseArchitect7.1/src/main/model/java5_demo.eap +0 -0
- data/demo/java5/README.txt +74 -0
- data/demo/java5/copyShared.sh +35 -0
- data/demo/java5/objecteering6/.classpath +6 -0
- data/demo/java5/objecteering6/.ontomde-java +17 -0
- data/demo/java5/objecteering6/.project +17 -0
- data/demo/java5/objecteering6/.xmda +2 -0
- data/demo/java5/objecteering6/1-generate.bat +3 -0
- data/demo/java5/objecteering6/1-generate.sh +3 -0
- data/demo/java5/objecteering6/2-generateJavadoc.bat +3 -0
- data/demo/java5/objecteering6/2-generateJavadoc.sh +3 -0
- data/demo/java5/objecteering6/pom.xml +160 -0
- data/demo/java5/objecteering6/src/main/mda/customDatatypes.rb +9 -0
- data/demo/java5/objecteering6/src/main/model/README.txt +4 -0
- data/demo/java5/objecteering6/src/main/model/README_OE.txt +5 -0
- data/demo/java5/objecteering6/src/main/model/java5_demo.oe600.nt +18 -0
- data/demo/java5/objecteering6/src/main/model/java5_demo.oe600.ofp +0 -0
- data/demo/java5/rationalSoftwareModeler6/.classpath +6 -0
- data/demo/java5/rationalSoftwareModeler6/.ontomde-java +17 -0
- data/demo/java5/rationalSoftwareModeler6/.project +17 -0
- data/demo/java5/rationalSoftwareModeler6/.xmda +2 -0
- data/demo/java5/rationalSoftwareModeler6/1-generate.bat +3 -0
- data/demo/java5/rationalSoftwareModeler6/1-generate.sh +3 -0
- data/demo/java5/rationalSoftwareModeler6/2-generateJavadoc.bat +3 -0
- data/demo/java5/rationalSoftwareModeler6/2-generateJavadoc.sh +3 -0
- data/demo/java5/rationalSoftwareModeler6/model.pdf +0 -0
- data/demo/java5/rationalSoftwareModeler6/pom.xml +167 -0
- data/demo/java5/rationalSoftwareModeler6/src/main/mda/customDatatypes.rb +9 -0
- data/demo/java5/rationalSoftwareModeler6/src/main/model/.project +11 -0
- data/demo/java5/rationalSoftwareModeler6/src/main/model/java5_demo.emx +3412 -0
- data/demo/java5/rationalSoftwareModeler6/src/main/model/java5_demo.emx.nt +4489 -0
- data/demo/java5/rationalSoftwareModeler6/src/main/model/rsm-shortcuts.emx +57 -0
- data/demo/jboss-jbpm/1-unpack.sh +5 -0
- data/demo/jboss-jbpm/2-generate.sh +5 -0
- data/demo/jboss-jbpm/3-start-app.sh +10 -0
- data/demo/jboss-jbpm/4-stop-app.sh +7 -0
- data/demo/jboss-jbpm/5-debug.sh +18 -0
- data/demo/jboss-jbpm/6-nodebug.sh +2 -0
- data/demo/jboss-jbpm/9-eclipse.bat +5 -0
- data/demo/jboss-jbpm/9-eclipse.sh +6 -0
- data/demo/jboss-jbpm/debug.sh +18 -0
- data/demo/jboss-jbpm/domain/pom.xml +110 -0
- data/demo/jboss-jbpm/domain/src/main/java/cas1/Magasinier.java +233 -0
- data/demo/jboss-jbpm/domain/src/main/java/cas2/Banquier.java +172 -0
- data/demo/jboss-jbpm/domain/src/main/java/cas2/Client.java +140 -0
- data/demo/jboss-jbpm/domain/src/main/java/cas2/Personne.java +225 -0
- data/demo/jboss-jbpm/domain/src/main/java/cas3/Commande.java +221 -0
- data/demo/jboss-jbpm/domain/src/main/java/cas3/ProcessusPreparation.java +382 -0
- data/demo/jboss-jbpm/domain/src/main/java/cas4/CommandeLivraison.java +325 -0
- data/demo/jboss-jbpm/domain/src/main/java/cas4/ProcessusLivraison.java +366 -0
- data/demo/jboss-jbpm/domain/src/main/java/cas4/TacheHumaine.java +225 -0
- data/demo/jboss-jbpm/domain/src/main/java/cas4/TacheSuiteErreurLivraison.java +201 -0
- data/demo/jboss-jbpm/domain/src/main/resources/META-INF/persistence.xml +25 -0
- data/demo/jboss-jbpm/ear/pom.xml +175 -0
- data/demo/jboss-jbpm/mda/clean-generated.sh +24 -0
- data/demo/jboss-jbpm/mda/pom.xml +227 -0
- data/demo/jboss-jbpm/mda/src/main/mda/customDataTypes.rb +1 -0
- data/demo/jboss-jbpm/mda/src/main/mda/dbDiscriminatorCache.rb +72 -0
- data/demo/jboss-jbpm/mda/src/main/model/.project +12 -0
- data/demo/jboss-jbpm/mda/src/main/model/model.emx +606 -0
- data/demo/jboss-jbpm/mda/src/main/model/model.emx.nt +2904 -0
- data/demo/jboss-jbpm/mda/src/main/model/model.emx.nt_kb.pprj +1432 -0
- data/demo/jboss-jbpm/mda/src/main/model/model.emx.nt_kb.rdf +73 -0
- data/demo/jboss-jbpm/mda/src/main/model/model.emx.nt_kb.rdfs +709 -0
- data/demo/jboss-jbpm/mda/src/main/process/.classpath +10 -0
- data/demo/jboss-jbpm/mda/src/main/process/.project +17 -0
- data/demo/jboss-jbpm/mda/src/main/process/processList.txt +2 -0
- data/demo/jboss-jbpm/mda/src/main/process/src/cas3.ProcessusPreparation/gpd.xml +43 -0
- data/demo/jboss-jbpm/mda/src/main/process/src/cas3.ProcessusPreparation/processdefinition.xml +40 -0
- data/demo/jboss-jbpm/mda/src/main/process/src/cas3.ProcessusPreparation/processimage.jpg +0 -0
- data/demo/jboss-jbpm/mda/src/main/process/src/cas4.ProcessusLivraison/gpd.xml +30 -0
- data/demo/jboss-jbpm/mda/src/main/process/src/cas4.ProcessusLivraison/processdefinition.xml +28 -0
- data/demo/jboss-jbpm/mda/src/main/process/src/cas4.ProcessusLivraison/processimage.jpg +0 -0
- data/demo/jboss-jbpm/mda/src/main/resources/formatter.properties +260 -0
- data/demo/jboss-jbpm/ontomde-bpm-ear-copy/pom.xml +128 -0
- data/demo/jboss-jbpm/pom.xml +127 -0
- data/demo/jboss-jbpm/projectbase/pom.xml +116 -0
- data/demo/jboss-jbpm/readme.txt +15 -0
- data/demo/jboss-jbpm/runMyApp.sh +22 -0
- data/demo/jboss-jbpm/setenv.sh-sample +7 -0
- data/demo/jboss-jbpm/stopMyApp.sh +15 -0
- data/demo/jboss-jbpm/stopdebug.sh +2 -0
- data/demo/jboss-jbpm/webapp/pom.xml +102 -0
- data/demo/spring-acegi/1-base.bat +6 -0
- data/demo/spring-acegi/1-base.sh +6 -0
- data/demo/spring-acegi/2-unpack.bat +6 -0
- data/demo/spring-acegi/2-unpack.sh +6 -0
- data/demo/spring-acegi/3-generate.bat +4 -0
- data/demo/spring-acegi/3-generate.sh +7 -0
- data/demo/spring-acegi/4-start-webapp-nosecurity.bat +4 -0
- data/demo/spring-acegi/4-start-webapp-nosecurity.sh +6 -0
- data/demo/spring-acegi/5-start-webapp.bat +7 -0
- data/demo/spring-acegi/5-start-webapp.sh +6 -0
- data/demo/spring-acegi/9-eclipse.bat +5 -0
- data/demo/spring-acegi/9-eclipse.sh +8 -0
- data/demo/spring-acegi/README.txt +79 -0
- data/demo/spring-acegi/doc/images/_Ea8UYu6FEdyp6cGW4pi6rw.GIF +0 -0
- data/demo/spring-acegi/doc/images/_XH8XYjuOEdyltIorAFYEcg.GIF +0 -0
- data/demo/spring-acegi/doc/images/_o7gEAsg1Edy3YZbvY96G9w.GIF +0 -0
- data/demo/spring-acegi/doc/images/_s1Mq8O6sEdyp6cGW4pi6rw.GIF +0 -0
- data/demo/spring-acegi/doc/ontomde-demo-acegi-run.wnk +0 -0
- data/demo/spring-acegi/domain/pom.xml +68 -0
- data/demo/spring-acegi/domain/src/main/java/administration/ApplicationUser.java +503 -0
- data/demo/spring-acegi/domain/src/main/java/administration/SecurityPanel.java +1177 -0
- data/demo/spring-acegi/domain/src/main/java/demo1GSMNetwork/BaseTransceiverStation.java +434 -0
- data/demo/spring-acegi/domain/src/main/java/demo2testModel/Client.java +839 -0
- data/demo/spring-acegi/domain/src/main/java/xmda/security/ProviderImpl.java +320 -0
- data/demo/spring-acegi/mda/.ontomde-java +71 -0
- data/demo/spring-acegi/mda/clean-generated.sh +24 -0
- data/demo/spring-acegi/mda/pom.xml +75 -0
- data/demo/spring-acegi/mda/src/main/mda/customDataTypes.rb +5 -0
- data/demo/spring-acegi/mda/src/main/mda/dbDiscriminatorCache.rb +94 -0
- data/demo/spring-acegi/mda/src/main/mda/mda.rb +0 -0
- data/demo/spring-acegi/mda/src/main/model/.project +12 -0
- data/demo/spring-acegi/mda/src/main/model/model.emx +3137 -0
- data/demo/spring-acegi/mda/src/main/model/model.emx.nt +5301 -0
- data/demo/spring-acegi/mda/src/main/model/model.emx.nt.pprj +1848 -0
- data/demo/spring-acegi/mda/src/main/model/model.emx.nt.rdf +271 -0
- data/demo/spring-acegi/mda/src/main/resources/formatter.properties +260 -0
- data/demo/spring-acegi/pom.xml +20 -0
- data/demo/spring-acegi/projectbase/pom.xml +117 -0
- data/demo/spring-acegi/webapp/pom.xml +167 -0
- data/demo/uml-profil-for-ibm-rsm6/.project +12 -0
- data/demo/uml-profil-for-ibm-rsm6/OntoMDE-profil.epx +1748 -0
- data/demo/uml-profil-for-ibm-rsm6/README.txt +4 -0
- data/lib/ontomde-demos.rb +3 -0
- metadata +379 -0
@@ -0,0 +1,162 @@
|
|
1
|
+
package service;
|
2
|
+
|
3
|
+
import static xmda.annotationOntoMDE.OntoMDE.ZoneCode.code;
|
4
|
+
import static xmda.annotationOntoMDE.OntoMDE.ZoneCode.imports;
|
5
|
+
|
6
|
+
import java.util.ArrayList;
|
7
|
+
import java.util.Collection;
|
8
|
+
import java.util.Collections;
|
9
|
+
import java.util.Comparator;
|
10
|
+
import java.util.List;
|
11
|
+
import java.util.Set;
|
12
|
+
|
13
|
+
import xmda.annotationOntoMDE.OntoMDE;
|
14
|
+
import baseTypes.LetterFilter;
|
15
|
+
import domain.Category;
|
16
|
+
import domain.Contact;
|
17
|
+
import domain.ContactGroup;
|
18
|
+
import domain.ContactRepository;
|
19
|
+
import domain.dto.ContactDTO;
|
20
|
+
|
21
|
+
/**
|
22
|
+
* @see <a href="../umldoc/_JcIB8DhVEd2Dg_DuOx74iA-content.html">UML documentation.</a>
|
23
|
+
*/
|
24
|
+
@javax.jws.WebService
|
25
|
+
@OntoMDE(reverse = { imports }, uri = "ukb__JcIB8DhVEd2Dg_DuOx74iA")
|
26
|
+
public class ContactManager implements service.ContactService {
|
27
|
+
|
28
|
+
/**
|
29
|
+
* @param contactRepositoryId self-explanatory
|
30
|
+
* @param phone self-explanatory
|
31
|
+
* @return self-explanatory
|
32
|
+
*/
|
33
|
+
@javax.jws.WebMethod
|
34
|
+
@OntoMDE(reverse = { code }, uri = "ukb__iVaB8DhQEd2Dg_DuOx74iA_implem")
|
35
|
+
public domain.dto.ContactDTO findContactByHomePhone(
|
36
|
+
@javax.jws.WebParam(name = "contactRepositoryId")
|
37
|
+
final java.lang.String contactRepositoryId,
|
38
|
+
@javax.jws.WebParam(name = "phone")
|
39
|
+
final java.lang.String phone) {
|
40
|
+
ContactDTO res = null;
|
41
|
+
ContactRepository repo = ContactRepository.find(Long
|
42
|
+
.parseLong(contactRepositoryId));
|
43
|
+
Set<Contact> contacts = repo.getContact();
|
44
|
+
|
45
|
+
for (Contact contact : contacts) {
|
46
|
+
if (contact.getHome().equalsIgnoreCase(phone)) {
|
47
|
+
res = contact.toContactDTO();
|
48
|
+
break;
|
49
|
+
}
|
50
|
+
}
|
51
|
+
return res;
|
52
|
+
|
53
|
+
}
|
54
|
+
|
55
|
+
/**
|
56
|
+
* @param contactRepositoryId self-explanatory
|
57
|
+
* @return self-explanatory
|
58
|
+
*/
|
59
|
+
@javax.jws.WebMethod
|
60
|
+
@OntoMDE(reverse = { code }, uri = "ukb__-_h5gDhPEd2Dg_DuOx74iA_implem")
|
61
|
+
public java.util.List<domain.dto.ContactDTO> listAllContacts(
|
62
|
+
@javax.jws.WebParam(name = "contactRepositoryId")
|
63
|
+
final java.lang.String contactRepositoryId) {
|
64
|
+
ContactRepository repo = ContactRepository.find(Long
|
65
|
+
.parseLong(contactRepositoryId));
|
66
|
+
Set<Contact> contacts = repo.getContact();
|
67
|
+
List<ContactDTO> res = new ArrayList<ContactDTO>();
|
68
|
+
for (Contact contact : contacts) {
|
69
|
+
res.add(contact.toContactDTO());
|
70
|
+
}
|
71
|
+
Collections.sort(res, ContactDTOComparator);
|
72
|
+
return res;
|
73
|
+
|
74
|
+
}
|
75
|
+
|
76
|
+
/**
|
77
|
+
* @param category self-explanatory
|
78
|
+
* @param contactRepositoryId self-explanatory
|
79
|
+
* @return self-explanatory
|
80
|
+
*/
|
81
|
+
@javax.jws.WebMethod
|
82
|
+
@OntoMDE(reverse = { code }, uri = "ukb__iADs8DhkEd2zjtJrcVcbMw_implem")
|
83
|
+
public java.util.List<domain.dto.ContactDTO> listContactsByCategory(
|
84
|
+
@javax.jws.WebParam(name = "category")
|
85
|
+
final java.lang.String category,
|
86
|
+
@javax.jws.WebParam(name = "contactRepositoryId")
|
87
|
+
final java.lang.String contactRepositoryId) {
|
88
|
+
List<ContactDTO> res = new ArrayList<ContactDTO>();
|
89
|
+
ContactRepository repo = ContactRepository.find(Long
|
90
|
+
.parseLong(contactRepositoryId));
|
91
|
+
return toListContactDTO(serv.listContactsByCategory(repo, category,
|
92
|
+
null));
|
93
|
+
|
94
|
+
}
|
95
|
+
|
96
|
+
/**
|
97
|
+
* @param group self-explanatory
|
98
|
+
* @param contactRepositoryId self-explanatory
|
99
|
+
* @return self-explanatory
|
100
|
+
*/
|
101
|
+
@javax.jws.WebMethod
|
102
|
+
@OntoMDE(reverse = { code }, uri = "ukb___I9VwDhkEd2zjtJrcVcbMw_implem")
|
103
|
+
public java.util.List<domain.dto.ContactDTO> listContactsByGroup(
|
104
|
+
@javax.jws.WebParam(name = "group")
|
105
|
+
final java.lang.String group,
|
106
|
+
@javax.jws.WebParam(name = "contactRepositoryId")
|
107
|
+
final java.lang.String contactRepositoryId) {
|
108
|
+
List<ContactDTO> res = new ArrayList<ContactDTO>();
|
109
|
+
ContactRepository repo = ContactRepository.find(Long
|
110
|
+
.parseLong(contactRepositoryId));
|
111
|
+
|
112
|
+
return toListContactDTO(serv.listContactsByGroup(repo, group, null));
|
113
|
+
}
|
114
|
+
|
115
|
+
/**
|
116
|
+
* @param letterFilter self-explanatory
|
117
|
+
* @param contactRepositoryId self-explanatory
|
118
|
+
* @return self-explanatory
|
119
|
+
*/
|
120
|
+
@javax.jws.WebMethod
|
121
|
+
@OntoMDE(reverse = { code }, uri = "ukb__Y2IUADhkEd2zjtJrcVcbMw_implem")
|
122
|
+
public java.util.List<domain.dto.ContactDTO> listContactsByLetter(
|
123
|
+
@javax.jws.WebParam(name = "letterFilter")
|
124
|
+
final baseTypes.LetterFilter letterFilter,
|
125
|
+
@javax.jws.WebParam(name = "contactRepositoryId")
|
126
|
+
final java.lang.String contactRepositoryId) {
|
127
|
+
ContactRepository repo = ContactRepository.find(Long
|
128
|
+
.parseLong(contactRepositoryId));
|
129
|
+
|
130
|
+
return toListContactDTO(serv.listContactsByLetter(repo.getContact(),
|
131
|
+
letterFilter));
|
132
|
+
|
133
|
+
}
|
134
|
+
|
135
|
+
/*XMDA_BEGIN_reverse="yes"_uri="ukb__JcIB8DhVEd2Dg_DuOx74iA__custom_code"_*/
|
136
|
+
static final Comparator<ContactDTO> ContactDTOComparator = new Comparator<ContactDTO>() {
|
137
|
+
public int compare(ContactDTO arg0, ContactDTO arg1) {
|
138
|
+
int nameComp = String.CASE_INSENSITIVE_ORDER.compare(
|
139
|
+
arg0.getName(), arg1.getName());
|
140
|
+
if (nameComp == 0) {
|
141
|
+
nameComp = String.CASE_INSENSITIVE_ORDER.compare(arg0
|
142
|
+
.getLastname(), arg1.getLastname());
|
143
|
+
}
|
144
|
+
return nameComp;
|
145
|
+
}
|
146
|
+
};
|
147
|
+
|
148
|
+
private List<ContactDTO> toListContactDTO(Collection<Contact> contacts) {
|
149
|
+
List<ContactDTO> res = new ArrayList<ContactDTO>();
|
150
|
+
if (contacts != null) {
|
151
|
+
for (Contact contact : contacts) {
|
152
|
+
res.add(contact.toContactDTO());
|
153
|
+
}
|
154
|
+
}
|
155
|
+
Collections.sort(res, ContactDTOComparator);
|
156
|
+
return res;
|
157
|
+
}
|
158
|
+
|
159
|
+
private static ContactManagerImpl serv = new ContactManagerImpl();
|
160
|
+
/*XMDA_END_uri="ukb__JcIB8DhVEd2Dg_DuOx74iA__custom_code"_*/
|
161
|
+
|
162
|
+
}
|
@@ -0,0 +1,68 @@
|
|
1
|
+
package service;
|
2
|
+
|
3
|
+
import java.util.ArrayList;
|
4
|
+
import java.util.Collection;
|
5
|
+
import java.util.List;
|
6
|
+
import java.util.Set;
|
7
|
+
|
8
|
+
import baseTypes.LetterFilter;
|
9
|
+
import domain.Category;
|
10
|
+
import domain.Contact;
|
11
|
+
import domain.ContactGroup;
|
12
|
+
import domain.ContactRepository;
|
13
|
+
|
14
|
+
public class ContactManagerImpl {
|
15
|
+
public Collection<Contact> listContactsByLetter(
|
16
|
+
Collection<Contact> contacts,
|
17
|
+
final baseTypes.LetterFilter letterFilter) {
|
18
|
+
List<Contact> res = new ArrayList<Contact>();
|
19
|
+
if (contacts != null) {
|
20
|
+
for (Contact contact : contacts) {
|
21
|
+
String firstLetter = contact.getName().substring(0, 1)
|
22
|
+
.toLowerCase();
|
23
|
+
if (letterFilter == null
|
24
|
+
|| firstLetter.equals(letterFilter.toString())
|
25
|
+
|| letterFilter.equals(LetterFilter._All)) {
|
26
|
+
res.add(contact);
|
27
|
+
}
|
28
|
+
}
|
29
|
+
}
|
30
|
+
return res;
|
31
|
+
}
|
32
|
+
|
33
|
+
public Collection<Contact> listContactsByGroup(ContactRepository repo,
|
34
|
+
final String group, final Collection contactsToSort) {
|
35
|
+
List<Contact> res = new ArrayList<Contact>();
|
36
|
+
Set<ContactGroup> groups = repo.getGroups();
|
37
|
+
for (ContactGroup groupRepo : groups) {
|
38
|
+
if (groupRepo.getName().equalsIgnoreCase(group)) {
|
39
|
+
Set<Contact> contacts = groupRepo.getContacts();
|
40
|
+
for (Contact contact : contacts) {
|
41
|
+
res.add(contact);
|
42
|
+
}
|
43
|
+
}
|
44
|
+
}
|
45
|
+
if (contactsToSort != null) {
|
46
|
+
res.retainAll(contactsToSort);
|
47
|
+
}
|
48
|
+
return res;
|
49
|
+
}
|
50
|
+
|
51
|
+
public Collection<Contact> listContactsByCategory(ContactRepository repo,
|
52
|
+
final String category, final Collection contactsToSort) {
|
53
|
+
List<Contact> res = new ArrayList<Contact>();
|
54
|
+
Set<Category> categories = repo.getCategories();
|
55
|
+
for (Category cat : categories) {
|
56
|
+
if (cat.getName().equalsIgnoreCase(category)) {
|
57
|
+
Set<Contact> contacts = cat.getContacts();
|
58
|
+
for (Contact contact : contacts) {
|
59
|
+
res.add(contact);
|
60
|
+
}
|
61
|
+
}
|
62
|
+
}
|
63
|
+
if (contactsToSort != null) {
|
64
|
+
res.retainAll(contactsToSort);
|
65
|
+
}
|
66
|
+
return res;
|
67
|
+
}
|
68
|
+
}
|
@@ -0,0 +1,29 @@
|
|
1
|
+
package xmda.security;
|
2
|
+
|
3
|
+
import xmda.annotationOntoMDE.OntoMDE;
|
4
|
+
|
5
|
+
/**
|
6
|
+
* This enum contains a list of all computed access control criteria.
|
7
|
+
*
|
8
|
+
* Generic examples of access control:
|
9
|
+
* * userIsManagerForThisObject
|
10
|
+
* * userOwnsThisObject
|
11
|
+
* * userIsOnDuty
|
12
|
+
*
|
13
|
+
* AccessControl criteria are computed in the context of one class instance of the model and one user. (ex: User Martin accessing contract number 3003).
|
14
|
+
*
|
15
|
+
* Some criteria migth not need to know what object is beeing accessed (example: userIsOnDuty). Some other will need to know what object is access (Is martin a manager for contract 42000 ?, Does Martin owns product number 13239 ?)
|
16
|
+
*
|
17
|
+
* This list is defined at design time because these rules criteria are implemented usign an algorithm (model query, date computation, ...) that require some coding and optimisation at developpement time. It is however possible to add RESERVED elements for future extension (RESERVED1, RESERVED2, ...).
|
18
|
+
* @see <a href="../umldoc/_N9poNz0-Ed2SuOkT56DHAg-content.html">UML documentation.</a>
|
19
|
+
*/
|
20
|
+
@OntoMDE(reverse = {}, uri = "ukb__N9poNz0-Ed2SuOkT56DHAg")
|
21
|
+
public enum GlobalComputedAccessControlCriteria implements
|
22
|
+
xmda.java.JavaEnumSig {
|
23
|
+
TEST;
|
24
|
+
|
25
|
+
/*XMDA_BEGIN_reverse="no"_uri="ukb__N9poNz0-Ed2SuOkT56DHAg__custom_code"_*/
|
26
|
+
// Please use this area for out-of-model code.
|
27
|
+
/*XMDA_END_uri="ukb__N9poNz0-Ed2SuOkT56DHAg__custom_code"_*/
|
28
|
+
|
29
|
+
}
|
@@ -0,0 +1,37 @@
|
|
1
|
+
package xmda.security;
|
2
|
+
import xmda.annotationOntoMDE.OntoMDE;
|
3
|
+
import static xmda.annotationOntoMDE.OntoMDE.ZoneCode.*;
|
4
|
+
/**
|
5
|
+
* This enum contains a list of all computed access control criteria.
|
6
|
+
*
|
7
|
+
* Generic examples of access control:
|
8
|
+
* * userIsManagerForThisObject
|
9
|
+
* * userOwnsThisObject
|
10
|
+
* * userIsOnDuty
|
11
|
+
*
|
12
|
+
* AccessControl criteria are computed in the context of one class instance of the model and one user. (ex: User Martin accessing contract number 3003).
|
13
|
+
*
|
14
|
+
* Some criteria migth not need to know what object is beeing accessed (example: userIsOnDuty). Some other will need to know what object is access (Is martin a manager for contract 42000 ?, Does Martin owns product number 13239 ?)
|
15
|
+
*
|
16
|
+
* This list is defined at design time because these rules criteria are implemented usign an algorithm (model query, date computation, ...) that require some coding and optimisation at developpement time. It is however possible to add RESERVED elements for future extension (RESERVED1, RESERVED2, ...).
|
17
|
+
* @see <a href="../umldoc/_N9poNz0-Ed2SuOkT56DHAg-content.html">UML documentation.</a>
|
18
|
+
*/
|
19
|
+
@OntoMDE(reverse={nothing},uri="ukb__N9poNz0-Ed2SuOkT56DHAg")
|
20
|
+
public enum GlobalComputedAccessControlCriteria
|
21
|
+
implements xmda.java.JavaEnumSig{
|
22
|
+
/* TODO: null_literal literal added by generator to work around a bug in hibernate which crash when an enum has no literal.*/
|
23
|
+
null_literal
|
24
|
+
;
|
25
|
+
|
26
|
+
|
27
|
+
|
28
|
+
|
29
|
+
|
30
|
+
/*XMDA_BEGIN_reverse="no"_uri="ukb__N9poNz0-Ed2SuOkT56DHAg__custom_code"_*/
|
31
|
+
// Please use this area for out-of-model code.
|
32
|
+
|
33
|
+
/*XMDA_END_uri="ukb__N9poNz0-Ed2SuOkT56DHAg__custom_code"_*/
|
34
|
+
|
35
|
+
|
36
|
+
|
37
|
+
}
|
@@ -0,0 +1,303 @@
|
|
1
|
+
package xmda.security;
|
2
|
+
|
3
|
+
import java.lang.reflect.Method;
|
4
|
+
import java.util.ArrayList;
|
5
|
+
import java.util.List;
|
6
|
+
import java.util.Set;
|
7
|
+
|
8
|
+
import org.springframework.security.GrantedAuthority;
|
9
|
+
import org.springframework.security.GrantedAuthorityImpl;
|
10
|
+
import org.springframework.security.context.SecurityContextHolder;
|
11
|
+
import org.springframework.security.userdetails.User;
|
12
|
+
import org.springframework.security.userdetails.UserDetails;
|
13
|
+
|
14
|
+
import administration.BusinessGroup;
|
15
|
+
import administration.SecureField;
|
16
|
+
import administration.SecureMethod;
|
17
|
+
import administration.SecurityRole;
|
18
|
+
import domain.Customer;
|
19
|
+
|
20
|
+
public class ProviderImpl implements Provider {
|
21
|
+
|
22
|
+
public static final boolean GRANT_ACCESS = true;
|
23
|
+
public static final boolean DENY_ACCESS = false;
|
24
|
+
|
25
|
+
private static final boolean securityIsDisabled = System
|
26
|
+
.getProperty("webapp.security.mode") != null
|
27
|
+
&& System.getProperty("webapp.security.mode").equalsIgnoreCase(
|
28
|
+
"disable");
|
29
|
+
|
30
|
+
public static boolean getSecurityIsDisabled() {
|
31
|
+
return securityIsDisabled;
|
32
|
+
}
|
33
|
+
|
34
|
+
private Object principalObject;
|
35
|
+
|
36
|
+
public UserDetails loadUser(String userName) {
|
37
|
+
|
38
|
+
List<Customer> users = Customer.findAll((Customer) null);
|
39
|
+
UserDetails userToIdentify = null;
|
40
|
+
|
41
|
+
for (Customer user : users) {
|
42
|
+
if (userName != null && userName.equalsIgnoreCase(user.getName())) {
|
43
|
+
userToIdentify = new User(user.getName(), "", true, true, true,
|
44
|
+
true, retrieveAuthorities(user));
|
45
|
+
break;
|
46
|
+
}
|
47
|
+
}
|
48
|
+
|
49
|
+
principalObject = userToIdentify;
|
50
|
+
return userToIdentify;
|
51
|
+
}
|
52
|
+
|
53
|
+
private static GrantedAuthority[] retrieveAuthorities(Customer user) {
|
54
|
+
|
55
|
+
GrantedAuthority[] authorities = null;
|
56
|
+
List<SecurityRole> userRoles = new ArrayList<SecurityRole>();
|
57
|
+
|
58
|
+
if (user != null && user.getUserGroup() != null) {
|
59
|
+
Set<BusinessGroup> groups = user.getUserGroup();
|
60
|
+
for (BusinessGroup group : groups) {
|
61
|
+
userRoles.addAll(group.getGroupRole());
|
62
|
+
}
|
63
|
+
authorities = new GrantedAuthority[userRoles.size()];
|
64
|
+
for (int i = 0; i < userRoles.size(); i++) {
|
65
|
+
authorities[i] = new GrantedAuthorityImpl(userRoles.get(i)
|
66
|
+
.getRoleName());
|
67
|
+
}
|
68
|
+
}
|
69
|
+
|
70
|
+
for (GrantedAuthority auth : authorities) {
|
71
|
+
}
|
72
|
+
|
73
|
+
return authorities;
|
74
|
+
// return new GrantedAuthority[] {new GrantedAuthorityImpl("USER_TEST")};
|
75
|
+
|
76
|
+
}
|
77
|
+
|
78
|
+
public boolean hasViewRights(String fieldName) {
|
79
|
+
|
80
|
+
boolean isViewable = true;
|
81
|
+
if (!securityIsDisabled) {
|
82
|
+
|
83
|
+
principalObject = SecurityContextHolder.getContext()
|
84
|
+
.getAuthentication().getPrincipal();
|
85
|
+
|
86
|
+
if (principalObject instanceof UserDetails) {
|
87
|
+
|
88
|
+
UserDetails principal = (UserDetails) principalObject;
|
89
|
+
|
90
|
+
SecureField toSecure = null;
|
91
|
+
|
92
|
+
GrantedAuthority[] grantedRoles = principal.getAuthorities();
|
93
|
+
|
94
|
+
List<SecureField> fieldList = SecureField
|
95
|
+
.findAll((SecureField) null);
|
96
|
+
|
97
|
+
for (SecureField field : fieldList) {
|
98
|
+
if (field.getDefinition() == null) {
|
99
|
+
System.out
|
100
|
+
.println("Secured field skipped. missing getDefinition()");
|
101
|
+
continue;
|
102
|
+
}
|
103
|
+
|
104
|
+
String enumField = field.getDefinition().ownerClass
|
105
|
+
.getCanonicalName()
|
106
|
+
+ "." + field.getDefinition().propertyName;
|
107
|
+
|
108
|
+
if (fieldName.equalsIgnoreCase(enumField)) {
|
109
|
+
toSecure = field;
|
110
|
+
break;
|
111
|
+
}
|
112
|
+
}
|
113
|
+
|
114
|
+
if (toSecure != null) {
|
115
|
+
|
116
|
+
if (toSecure.getDefinition().isSecured) {
|
117
|
+
isViewable = false;
|
118
|
+
Set<SecurityRole> securityRoles = toSecure
|
119
|
+
.getSecureFieldRoles();
|
120
|
+
for (SecurityRole sRole : securityRoles) {
|
121
|
+
for (GrantedAuthority authority : grantedRoles) {
|
122
|
+
if (authority.getAuthority().equalsIgnoreCase(
|
123
|
+
sRole.getRoleName())) {
|
124
|
+
isViewable = true;
|
125
|
+
}
|
126
|
+
}
|
127
|
+
|
128
|
+
}
|
129
|
+
}
|
130
|
+
} else {
|
131
|
+
|
132
|
+
// Erreur, le nom du champ a �t� modifi� sur la JSP
|
133
|
+
|
134
|
+
}
|
135
|
+
}
|
136
|
+
}
|
137
|
+
|
138
|
+
return isViewable;
|
139
|
+
|
140
|
+
}
|
141
|
+
|
142
|
+
/*
|
143
|
+
* Method called by pointcut @Before on method annotated @Secure Must return
|
144
|
+
* true for access to be granted.
|
145
|
+
*
|
146
|
+
* @see xmda.security.Provider#hasMethodAccess(java.lang.String,
|
147
|
+
* java.lang.Object)
|
148
|
+
*
|
149
|
+
* @param signature name of the method called @param target object being
|
150
|
+
* accessed @return true if access granted, false if access denied.
|
151
|
+
*/
|
152
|
+
public boolean hasMethodAccess(final String signature, final Object target) {
|
153
|
+
System.out.println("hasMethodAccess ??");
|
154
|
+
if (securityIsDisabled) {
|
155
|
+
// Server is in securityIsDisabled debug mode.
|
156
|
+
// Allow access
|
157
|
+
System.out.println("granted: WARNING SERVER IN NO SECURITY MODE");
|
158
|
+
return GRANT_ACCESS;
|
159
|
+
}
|
160
|
+
|
161
|
+
// user principal
|
162
|
+
principalObject = SecurityContextHolder.getContext()
|
163
|
+
.getAuthentication().getPrincipal();
|
164
|
+
if (!(principalObject instanceof UserDetails)) {
|
165
|
+
System.out
|
166
|
+
.println("denied: Access denied because of Internal error. Bad principalObject returned by principalObject");
|
167
|
+
return DENY_ACCESS;
|
168
|
+
}
|
169
|
+
UserDetails principal = (UserDetails) principalObject;
|
170
|
+
|
171
|
+
boolean hasAcces = false;
|
172
|
+
|
173
|
+
// Example: com.xyz.Aclass.doThat
|
174
|
+
|
175
|
+
// STEP 1: look for role granting this method.
|
176
|
+
boolean foundSecureMethod = false;
|
177
|
+
Set<SecurityRole> okRole = getGrantingRoles(target, signature);
|
178
|
+
if (okRole.isEmpty()) {
|
179
|
+
System.out
|
180
|
+
.println("denied: access denied because no possible role/SecureMethod grant found (foundSecureMethod="
|
181
|
+
+ foundSecureMethod + ")");
|
182
|
+
return DENY_ACCESS;
|
183
|
+
}
|
184
|
+
// STEP 2: check if SecureMethods found match user authorization.
|
185
|
+
filterOutNotGrantedRole(principal, okRole);
|
186
|
+
if (okRole.isEmpty()) {
|
187
|
+
System.out
|
188
|
+
.println("denied: access denied because user has no eligible role");
|
189
|
+
return DENY_ACCESS;
|
190
|
+
}
|
191
|
+
if (containsRoleNotRequiringComputedAccessControlCriteria(okRole)) {
|
192
|
+
System.out
|
193
|
+
.println("Access granted trough role with computed criteria");
|
194
|
+
return GRANT_ACCESS;
|
195
|
+
}
|
196
|
+
|
197
|
+
Set<GlobalComputedAccessControlCriteria> requiredGrants = getRequiredGrants(okRole);
|
198
|
+
|
199
|
+
Set<xmda.security.GlobalComputedAccessControlCriteria> grants = getGrantedCriteria(
|
200
|
+
target, principal);
|
201
|
+
if (grants.isEmpty()) {
|
202
|
+
System.out
|
203
|
+
.println("denied: access denied because computed grants is empty");
|
204
|
+
return DENY_ACCESS;
|
205
|
+
}
|
206
|
+
grants.retainAll(requiredGrants);
|
207
|
+
if (grants.isEmpty()) {
|
208
|
+
System.out
|
209
|
+
.println("denied: access denied because computed grants is empty do not match required grants");
|
210
|
+
return DENY_ACCESS;
|
211
|
+
}
|
212
|
+
System.out.println("granted: access granted");
|
213
|
+
return GRANT_ACCESS;
|
214
|
+
}
|
215
|
+
|
216
|
+
private Set<SecurityRole> getGrantingRoles(final Object target,
|
217
|
+
final String signature) {
|
218
|
+
String completeSignature = target.getClass().getCanonicalName() + "."
|
219
|
+
+ signature;
|
220
|
+
Set<SecurityRole> okRole = new java.util.HashSet<SecurityRole>();
|
221
|
+
List<SecureMethod> methods = SecureMethod.findAll((SecureMethod) null);
|
222
|
+
// for (SecureMethod method : methods) {
|
223
|
+
// String enumMethod = method.getSignature().ownerClass
|
224
|
+
// .getCanonicalName()
|
225
|
+
// + "." + method.getSignature().operationName;
|
226
|
+
// if (completeSignature.equals(enumMethod)) {
|
227
|
+
// okRole.addAll(method.getSecureMethodRoles());
|
228
|
+
// break;
|
229
|
+
// }
|
230
|
+
// }
|
231
|
+
return okRole;
|
232
|
+
}
|
233
|
+
|
234
|
+
private void filterOutNotGrantedRole(UserDetails principal,
|
235
|
+
Set<SecurityRole> okRole) {
|
236
|
+
GrantedAuthority[] authorities = principal.getAuthorities();
|
237
|
+
role_loop: for (SecurityRole role : okRole) {
|
238
|
+
for (GrantedAuthority authority : authorities) {
|
239
|
+
if (authority.getAuthority().equals(role.getRoleName())) {
|
240
|
+
// we keep this role
|
241
|
+
continue role_loop;
|
242
|
+
}
|
243
|
+
}
|
244
|
+
// We have reach the end of the authority loop and role was not
|
245
|
+
// granted.
|
246
|
+
// Let's remove it from our ok list
|
247
|
+
okRole.remove(role);
|
248
|
+
}
|
249
|
+
}
|
250
|
+
|
251
|
+
private boolean containsRoleNotRequiringComputedAccessControlCriteria(
|
252
|
+
Set<SecurityRole> okRole) {
|
253
|
+
for (SecurityRole role : okRole) {
|
254
|
+
if (role.getRequiredComputedAccessRight() == null) {
|
255
|
+
// we found one role does not require computation.
|
256
|
+
return true;
|
257
|
+
}
|
258
|
+
}
|
259
|
+
return false;
|
260
|
+
}
|
261
|
+
|
262
|
+
public static final String COMPUTE_ACCESS_CONTROL_GRANT_METHOD_NAME = "getComputedAccessControlGrant";
|
263
|
+
|
264
|
+
private boolean containsGrantedComputedAccessControlCriteria(
|
265
|
+
Set<SecurityRole> okRole, Object target, UserDetails principal) {
|
266
|
+
return true;
|
267
|
+
|
268
|
+
}
|
269
|
+
|
270
|
+
private Set<xmda.security.GlobalComputedAccessControlCriteria> getRequiredGrants(
|
271
|
+
Set<SecurityRole> okRole) {
|
272
|
+
Set<xmda.security.GlobalComputedAccessControlCriteria> grants = new java.util.HashSet<xmda.security.GlobalComputedAccessControlCriteria>();
|
273
|
+
for (SecurityRole role : okRole) {
|
274
|
+
grants.add(role.getRequiredComputedAccessRight());
|
275
|
+
}
|
276
|
+
return grants;
|
277
|
+
}
|
278
|
+
|
279
|
+
private Set<xmda.security.GlobalComputedAccessControlCriteria> getGrantedCriteria(
|
280
|
+
Object target, UserDetails principal) {
|
281
|
+
String longClassName = target.getClass().getName();
|
282
|
+
|
283
|
+
try {
|
284
|
+
Class<?> targetClass = Class.forName(longClassName);
|
285
|
+
Method method = targetClass
|
286
|
+
.getMethod(COMPUTE_ACCESS_CONTROL_GRANT_METHOD_NAME,
|
287
|
+
UserDetails.class);
|
288
|
+
if (method == null) {
|
289
|
+
System.out.println("Missing method "
|
290
|
+
+ COMPUTE_ACCESS_CONTROL_GRANT_METHOD_NAME
|
291
|
+
+ " in class " + longClassName);
|
292
|
+
}
|
293
|
+
return (Set<xmda.security.GlobalComputedAccessControlCriteria>) method
|
294
|
+
.invoke(target, principal);
|
295
|
+
} catch (Exception e) {
|
296
|
+
System.out.println("ERROR" + e);
|
297
|
+
e.printStackTrace();
|
298
|
+
}
|
299
|
+
// deny access
|
300
|
+
return new java.util.HashSet<xmda.security.GlobalComputedAccessControlCriteria>();
|
301
|
+
}
|
302
|
+
|
303
|
+
}
|